[Eclipse RCP] PlatformUI und Preferences

Vatar

Erfahrenes Mitglied
Tja und wieder einmal komme ich nicht so recht weiter mit meiner RCP

Das Framwork stellt ja glücklicherweise einen ganzen Haufen an Aktionen zur Verfügung (EXIT, SHOW_VIEW, OPEN_PERSPECTIVE,.....) ohne dass man recht viel tippen muss. Mit der Aktion zum öffnen einer neuen Perspektive gibts aber ein kleines Problem. Wenn ich in dem Auswahlfenster eine Perspektive öffnen will, macht er mir ein zweites Fenster auf anstatt die alte Perspektive zu ersetzen.

Hab mich dann auch gleich mal durch die API gewurschtelt und man muss das Verhalten der Workbench im ApplicationWindowWorkbenchAdvisor erst einstellen. Also hab ich wieder API gelesen und folgendes gefunden
Java:
PlatformUI.getPreferenceStore().setValue(IWorkbenchPreferenceConstants.OPEN_NEW_PERSPECTIVE, IWorkbenchPreferenceConstants.OPEN_PERSPECTIVE_REPLACE);

Die Doku sagt zum key OPEN_NEW_PERSPECTIVE dies
Code:
*A named preference for how a new perspective is opened.
     * <p>
     * Value is of type <code>String</code>.  The possible values are defined 
     * by <code>OPEN_PERSPECTIVE_WINDOW, OPEN_PERSPECTIVE_PAGE and 
     * OPEN_PERSPECTIVE_REPLACE</code>.
     * </p>
     * 
     * @see #OPEN_PERSPECTIVE_WINDOW
     * @see #OPEN_PERSPECTIVE_PAGE
     * @see #OPEN_PERSPECTIVE_REPLACE
     * @see #NO_NEW_PERSPECTIVE
Eigentlich müsste mein Code also richtig sein, leider tut sich da gar nix. Er macht trotzdem immer ein neues Fenster auf.

Kann mir diesbezüglich jemand helfen? Wo liegt mein Fehler?
 
Danke für deine Hilfe
Ich habe aber keinen Zugriff auf diese Aktion. Es handelt sich um den Standarddialog der aufgerufen wird wenn ich Window -> Show Perspective auswähle.

Die Aktion wird im ApplicationActionBarAdvisor erstellt
Java:
	protected void makeActions(final IWorkbenchWindow window) {
		openPerspectiveAction = ActionFactory.OPEN_PERSPECTIVE_DIALOG.create(window);
		register(openPerspectiveAction);
...}

	protected void fillMenuBar(IMenuManager menuBar) {
		MenuManager windowMenu = new MenuManager ("&Window", IWorkbenchActionConstants.M_WINDOW);
		windowMenu.add(openPerspectiveAction);
...}
Dieser Dialog bietet alle Perspektiven die in den plugin.xmls deklariert wurden und soll diese automatisch öffnen...das macht er auch, allerdings nicht im selben Fenster. Auf die Aktion selbst habe ich keinen Zugriff da sie ja von der ActionFactory zur Verfügung gestellt wird.

Thx
 
Hallo!

Ah jetzt sehe ich was du meinst... ;-)
Wie wärs denn wenn du einfach innerhalb deines ApplicationWorkbenchWindowAdvisors
am IWorkbenchWindowConfigurer configurer -> configurer.setShowPerspectiveBar(true); aufrufst?
Dann hast du die "Switch-Perspective-bar" von Anfang an... es gibt aber auch eine Möglichkeit das Anzeigen von bestimmten Views / Editoren an bestimmte Perspektiven zu koppeln .. ich schau mal danach...

Gruß Tom
 
Hallo!

Ein anderer Ansatz wäre folgendes:

Innerhalb deiner Perspective(n):
Java:
  public void createInitialLayout(IPageLayout layout){
    ...
    layout.addPerspectiveShortcut("yourPerspectiveId");
    layout.addPerspectiveShortcut("yourPerspectiveId1");
   ...

Anschließend kannst du beispielsweise im ApplicationActionBarAdvisor entsprechende Menüs befüllen:
Java:
     protected void fillMenuBar(IMenuManager menuBar) {
    ...
 windowMenu.add(ContributionItemFactory.PERSPECTIVES_SHORTLIST.create(getActionBarConfigurer()
      .getWindowConfigurer().getWindow()));
...

Dann erscheinen bei dir im WindowMenu die zwei Perspektiven und mit einem einfachen klick kann man dann in die jeweilige Perspektive umschalten.

Gruß Tom
 
Zurück