SWT: nur eine Instanz einer View erlauben

Status
Nicht offen für weitere Antworten.

rapthor

Bekanntes Mitglied
Hallo,

ich habe mir meine eigene View geschrieben und möchte, dass sie nur 1 Mal in meiner Anwendung zu starten geht. Wenn sie also schon geöffnet ist, soll sie am besten gleich fokusiert werden.

Bisher habe ich in der ApplicationActionBarAdvisor-Klasse folgendes:

Code:
        OpenViewAction dbOptionsAction = new OpenViewAction(window, "Einstellungen", View.ID);
        register(dbOptionsAction);

Der View heißt eben "View" und hat den Titel "Einstellungen"...

Wie mache ich das?
 

rapthor

Bekanntes Mitglied
Hmm, naja das kenne ich ja. Aber bei SWT ist das so eine Sache. Das Framework ist ziemlich anders aufgebaut. Aber ich versuche mal ein Singleton einzubauen.

Wenn nicht, melde ich mich.
 

rapthor

Bekanntes Mitglied
Nee, das geht so einfach nicht. Ich habe ja keinen Konstruktor, der explizit aufgerufen wird. Und ich kann auch keine statische Methode getInstance() bauen, die ich dann irgendwo aufrufe. Denn diese Aufrufe geschehen ja automatisch.

Ich hab hier mal den Code zur View:

Code:
package Views;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.part.ViewPart;

import xMLBrowser.DBVerbindung;

public class View extends ViewPart {

	private Text dbPfadText;
	public static final String ID = "Views.view";
	
	public void createPartControl(Composite parent) {		
		Composite top = new Composite(parent, SWT.NONE);
		GridLayout layout = new GridLayout();
		layout.marginHeight = 0;
		layout.marginWidth = 0;
		top.setLayout(layout);
		// top banner
		Composite banner = new Composite(top, SWT.NONE);
		banner.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL, GridData.VERTICAL_ALIGN_BEGINNING, true, false));
		layout = new GridLayout();
		layout.marginHeight = 5;
		layout.marginWidth = 10;
		layout.numColumns = 2;
		banner.setLayout(layout);
		
		Listener verbListener = new Listener ()
		{
			public void handleEvent(Event event) {
				verbindeZuDB();
			}
		};
		
		KeyListener verbKeyListener = new KeyListener ()
		{
			public void keyPressed(KeyEvent e) {
				if (e.keyCode == SWT.CR && dbPfadText.getText().length()>0)
					verbindeZuDB();
			}

			public void keyReleased(KeyEvent e) {
			}
		};
		
		GridData gdDBFenster = new GridData(SWT.FILL, SWT.FILL, true, true);
		gdDBFenster.horizontalSpan = 3;
		
		Label l = new Label(banner, SWT.SIMPLE);
		l.setText("eXist Datenbank:");
		
		dbPfadText = new Text(banner, SWT.SINGLE | SWT.BORDER);
		dbPfadText.setText("xmldb:exist://localhost:8080/exist/xmlrpc/db/");
		//dbPfadText.setText("xmldb:exist://win87.tfh-berlin.de/exist/xmlrpc/db/");
		dbPfadText.setLayoutData(gdDBFenster);
		dbPfadText.addKeyListener(verbKeyListener);
		
		Button b = new Button(banner, SWT.FLAT);
		b.setText("Verbinden");
		b.addListener(SWT.Selection, verbListener);
	}
	
	private void verbindeZuDB()
	{
		getViewSite().getActionBars().getStatusLineManager().setMessage("Verbindung wird hergestellt ...");
		DBVerbindung.getInstance().verbinde(dbPfadText.getText());
		dbPfadText.setText("");
	}

	public void setFocus() {
	}
}
 

rapthor

Bekanntes Mitglied
Also in der plugin.xml gibt es für jeden View Einstellungen. Unter anderem auch "allowMultiple=true". Wenn das auf FALSE steht, kann man zwar nur noch einen View öffnen, aber wenn man den mal schließt, bekommt man nie wieder einen View angezeigt, weil der anscheinend noch im Hintergrund "schläft" aber nicht sichtbar ist.

Code:
      <view
            name="DB Pfad"
            allowMultiple="true"
            icon="icons/sample2.gif"
            class="Views.View"
            id="Views.view">
      </view>

Das muss auch irgendwie anders gehen ....
 

ronny

Bekanntes Mitglied
verstehe irgendwie das problem nicht... ???:L
das mit dem allowMultiple funktioniert doch super.

du kannst jederzeit die view wieder über "Window" -> "Show View"
herholen...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
minzel Auf eine Instanz zugreifen Plattformprogrammierung 2
Z Aus einem PDF-Formular heraus eine Android App Outlook starten Plattformprogrammierung 3
Bregedur Suche eine Möglichkeit alle Dateien eines Verzeichnisses in eine Java-Applet zu übernehmen Plattformprogrammierung 1
G Eine Library in Eclipse zur Verfügung stellen Plattformprogrammierung 14
maestr0 Prüfen ob eine Datei im Projektordner existiert Plattformprogrammierung 9
B Footer bei den Birt-Reports für nur eine Seite anzeigen Plattformprogrammierung 4
L RCP RCP als eine Exe-Datei exportieren? Plattformprogrammierung 2
N Was brauche ich für eine Web- und was für eine Fat-Client-Anwendung? Plattformprogrammierung 14
M Unter welchem Benutzer läuft eine RCP-Anwendung? (Windows-Berechtigungsproblem) Plattformprogrammierung 7
G Eclipse Plug-in: wie refreshe ich eine combobox? Plattformprogrammierung 4
M Eclipse Plug-in: Wie eine Grafik einfügen? Plattformprogrammierung 20
L RCP Help in eine View einbinden? Plattformprogrammierung 3
B mit eclipse eine PDF erstellen Plattformprogrammierung 1
lumo ECLIPSE RCP - mehrere plugins - eine resource? Plattformprogrammierung 3
N Ant Skript um eine UPdateseite zu bauen Plattformprogrammierung 3
T Wie erzeuge ich eine PropertyPage Plattformprogrammierung 2
N Noch eine Frage zu GEF Plattformprogrammierung 5
Paule Eclipse Instanz + eigene Plugins Plattformprogrammierung 4
K Problem bei Einbinden einer DLL in Java-Projekt Plattformprogrammierung 4
D IPerspectiveFactory in einer e4 application Plattformprogrammierung 2
B Entwicklung einer Webplattform Plattformprogrammierung 1
maestr0 WorkingSets mit Komma getrennt in einer ComboBox anzeigen lassen Plattformprogrammierung 2
dzim Migration einer bestehenden Applikation nach e4 Plattformprogrammierung 11
Mike90 Error beim Öffnen einer RCP-App Plattformprogrammierung 2
W SWTException beim Schließen einer ViewPart Plattformprogrammierung 13
dzim RCP Überführen einer RCP-Anwendung nach RAP Plattformprogrammierung 11
X Teile einer p2 UpdateSite mit b3 aggregator spiegeln Plattformprogrammierung 4
S RCP name einer view ändern Plattformprogrammierung 2
Mike90 RCP 2Views und einer davon als Placeholder Plattformprogrammierung 4
T Expression Definitions in einer RCP Plattformprogrammierung 3
L RCP Canvas in einer View? Plattformprogrammierung 4
M Eclipse RCP: überflüssige Icons in einer Toolbar Plattformprogrammierung 6
F Eclipse Plugin - Rückgabewert einer Methode Plattformprogrammierung 4
dzim Kontrolliertes Beenden einer Application Plattformprogrammierung 7
S In einem Plugin main einer anderen Klasse aufrufen Plattformprogrammierung 18
C RCP: Veraenderungen innerhalb einer View per Extension?! Plattformprogrammierung 7
K TextFeld in einer ToolBar Plattformprogrammierung 2
K Position einer Multiple View speichern Plattformprogrammierung 6
dzim Implementieren einer Help-Seite Plattformprogrammierung 18
S Literatur: Kennt einer ein gutes RCP Buch Plattformprogrammierung 13

Ähnliche Java Themen


Oben