RCP Viewparts werden sporadisch in unterschiedliche Perspektiven abgelegt

M

mo_84

Gast
Hi,

in unserer RCP-Applikation sind mehrere PlugIns im Einsatz. Sobald einer der Menüpunkte ausgewählt wird, wird die zugehörige View geöffnet. Hierbei sollen die Viewparts immer in der gleichen Perspektive abgelegt werden. In 95% der Fälle funktioniert das auch wunderbar! Aber ab und an werden die einzelnen Views in verschiedenen Perspektiven abgelegt. Ich habe dann bspw. zwei Views in einer Perspektive geöffnet, möchte eine neue öffnen - diese wird dann aber in einer weiteren (leeren) Perspektive abgelegt und die Workbench-Page wird dementsprechend geteilt.

Wie kann das denn passieren bzw wie kann ich den Effekt unterbinden? Ist das ein Bug? Verwenden tue ich Eclipse 3.5.2.



Meine ApplicationWorkbenchAdvisor sieht folgendermaßen aus:

Java:
public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {

	private static final String PERSPECTIVE_ID = "com.test.MeineRCPApp.perspective";

	public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(
			IWorkbenchWindowConfigurer configurer) {
		return new ApplicationWorkbenchWindowAdvisor(configurer);
	}

	public String getInitialWindowPerspectiveId() {
		return PERSPECTIVE_ID;
	}

}

Die Perspective.java folgendermaßen:

Java:
public class Perspective implements IPerspectiveFactory {

	public void createInitialLayout(IPageLayout layout) {
		layout.setEditorAreaVisible(false);
		layout.setFixed(false);
	}
}
 

Wildcard

Top Contributor
Ich verstehe nicht was du meinst. Eine View kann nicht in einer Perspektive 'abgelegt' werden, das ist kein Container. Eine Perspektive merkt sich lediglich die aktuelle Anordnung der Workbench. Welche Views sind offen und wo liegen sie.
 
M

mo_84

Gast



...das ist zwar nicht meine RCP-Anwendung, aber daran kann ich es ganz gut erklären. Hier gibt es zwei Container, einen der "Outline/Ant" beherbergt, einen der "Tasks"/"ErrorLog" beinhaltet. So sieht das Ganze bei mir im Fehlerfall aus!...

Ich möchte nun jedoch, dass (in dem Fall) IMMER "Outline", "Ant", "Tasks" und "ErrorLog" in einem Container sind (Was wie gesagt, auch zu 99% der Fall ist..)

Kann man das irgendwie erzwingen? Wie kann es zu so einem Verhalten kommen? (Es passiert eigentlich fast nie, aber halt nur fast..)

Gruß,
mo
 
M

mo_84

Gast
hm und da ich keinen speziellen Folder ausgewählt habe, kommt es hin und wieder zu den (oben erwähnten) Vorkommnissen oder wie?

Müsste ich dann für jede view einen Platzhalter erstellen á la:
Java:
public void createInitialLayout(IPageLayout layout) {
		String editorArea = layout.getEditorArea();
...

IFolderLayout folder = layout.createFolder("TESTFOLDER", IPageLayout.TOP, 1.0f, editorArea);
folder.addPlaceholder("com.plugin.transporteanzeigen.views.TestView");
folder.addPlaceholder("..
folder.addPlaceholder("..

oder kann ich auch irgendwie einen "default-folder" festlegen, wo alle views automatisch abgelegt werden? (Es sind einige; anfangs,beim start der anwendung soll aber keine view zu sehen sein)
 

Wildcard

Top Contributor
Richtig, wenn du den Platz für eine View festlegen möchtest ohne das die View initial da ist, dann brauchst du einen Placeholder.
...jede view kann nur 1x geöffnet werden (nicht multiple)
Das ist so nicht richtig. Jede View kann entscheiden ob sie mehrfach angezeigt werden kann, oder nicht.
 
M

mo_84

Gast
Richtig, wenn du den Platz für eine View festlegen möchtest ohne das die View initial da ist, dann brauchst du einen Placeholder.

Das ist so nicht richtig. Jede View kann entscheiden ob sie mehrfach angezeigt werden kann, oder nicht.

...ich meinte damit, dass es bei uns so definiert ist, dass jede view nur 1x angezeigt werden kann. Aber danke für die Antwort! Dann bleibt mir wohl nix anderes übrig, als da x Placeholder einzubauen :/
 

Ähnliche Java Themen

Neue Themen


Oben