Mittwoch, 12. Oktober 2011

Eclipse RCP - IFolder nach dem Beenden der letzten View erhalten

Problem: nachdem die letzte View geschlossen wird, verschwindet auch der IFolder. Werden neue Views wieder geöffnet, dann erscheinen diese nicht immer in einem Teil des Fensters. Die Anwendung sieht dann recht unkonsistent aus, wie in Abbildung 1 dargestellt.


Abbildung 1

Lösung: Im WorkbenchWindowAdvisor (bzw. in der Klasse die von diesem erbt) muss die Methode isDurableFolder überschriben werden:


@Override
public boolean isDurableFolder(String perspectiveId, String folderId) { 

  if (folderId.equals("folderName")) {
    if ("perspective.id".equals(perspectiveId)) {
      return true;
    }
  }
  return super.isDurableFolder(perspectiveId, folderId); 
}

Der folderName ist der Name des IFolder der in der Persepctive Klasse angelegt wurde. perspective.id ist die im plugin.xml eingetragene ID der Perspective.

Das Ergebnis ist in Abbildung 2 dargestellt:

Abbildung 2


Hier ein Auszug aus der Perspective Klasse:


public class Perspective implements IPerspectiveFactory {
    public static final String ID = "perspective.id";

    public void createInitialLayout(IPageLayout layout) {
      String editorArea = layout.getEditorArea();
      layout.setEditorAreaVisible(false);
      layout.addStandaloneView(NavigationView.ID, false, 
                     IPageLayout.LEFT, 0.25f, editorArea);
      IFolderLayout folder = layout.createFolder("inputFolder", 
                     IPageLayout.TOP, 0.5f, editorArea);
      layout.getViewLayout(NavigationView.ID).setCloseable(false);
    }

}

Anzumerken sei, dass derartige Verweneung der isDurableFolder Methode auf den Spezialfall einer Applikation mit einen Navigationsbaum links und dem Inhalt rechts passt. Sollten komplexere GUIs gefordert sein, muss die Methode entsprechned modifiziert werden.

Dieser Artikel basiert auf folgendem Posting bei stackoverflow.com.

Sonntag, 9. Oktober 2011

Eclipse RCP - Extensions Editor zeigt im "Generic" im im "New" Menü

Problem: im Extensions Editor der plugin.xml Datei wird beim Versuch ein neues Command oder eine neue View anzulegen im Menü New nur das Untermenü Generic angezeigt. Das Problem tritt auch manchmal auf, nachdem eine Target Platform erstellt (eingestellt/geändert) worden ist. Abbildung1 zeigt den Extension Editor mit dem oben beschriebenen Problem. Das erstellte Plugin ist das RCP Mail Template.

Auch beim Klicken auf "Show Description"  oder "Open Schema" erhält man die Meldung "Description for extension point …… cannot be found" bzw. “Extension point schema for extension point ….. cannot be found.”


Abbildung1: nur Generic sichtbar


Ursache: die Scoucen (Quellcode) der Plugins im Bundle sind in der Target Platform nicht vorhanden.

Nachdem das Plugin erstellt worden ist, ist eine Targetplatform aus dem Template "Base RCP (Binary Only)" erstellt worden. Anschließend wurde diese Target Platform aktiviert.

Anstatt des "Base RCP (Binary Only)" Templates kann das Template "Base RCP (with Source)"verwendet werden. Wird die Targetplatform mit den Sourcen verwendet taucht das oben genannte Problem nicht mehr auf.

Diesen Artikel habe ich erstellt, nachdem ich selbst über das Problem gestolpert bin und eine sehr gute Beschreibung in englischer Sprache gefunden habe. Ein Blick in den orginalen Artikel lohnt sich.