2008-10-05 10 views
28

Ich habe ein Plug-in für eine Eclipse RCP-Anwendung mit einer Ansicht. Nachdem ein Ereignis in der RCP-Anwendung aufgetreten ist, wird das Plug-in instanziiert, seine Methoden werden aufgerufen, um das Modell des Plug-Ins zu füllen, aber ich kann nicht finden, wie die Ansicht angezeigt wird, ohne in das Menü "Ansicht anzeigen ..." zu wechseln .Programmgesteuertes Anzeigen einer Ansicht von einem Eclipse-Plug-in

Ich würde denken, dass es etwas in der Workbench Singleton geben würde, die damit umgehen könnte, aber ich habe nirgends herausgefunden, wie.

Antwort

45

Sie suchen wahrscheinlich dafür:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("viewId"); 
+2

Es ist wichtig zu beachten, dass das arg0 das VIEW_ID-Feld eines Ansichtsteils sein kann. – JeffV

+0

Wo soll ich das hinstellen? Ich lege es in alle meine Klassen, aber funktioniert immer noch nicht. (Ich habe versehentlich die Ansicht innerhalb der RCP-Anwendung geschlossen) – Sterls

18

Wenn von Handler eines Befehls namens

HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().showView(viewId); 

wäre besser, wie ich weiß.

4

Ich fand die Notwendigkeit, den Blick nach vorne zu bringen, nachdem es geöffnet und in den Hintergrund geschoben wurde. Die Methode activate macht den Trick.

PlatformUI.getWorkbench() 
    .getActiveWorkbenchWindow() 
    .getActivePage() 
    .activate(workbenchPartToActivate); 

HINWEIS: Die workbenchPartToActivate ist eine Instanz IWorkbenchPart.

0

In e4 ist der EPartService für das Öffnen von Parts zuständig. Dies kann auch zum Öffnen von e3 ViewParts verwendet werden. Instanziieren Sie die folgende Klasse über Ihren IEclipseContext, rufen Sie die openPart-Methode auf, und Sie sollten die interne Eclipse-Browseransicht sehen.

public class Opener { 
    @Inject 
    EPartService partService; 

    public void openPart() { 
     MPart part = partService.createPart("org.eclipse.ui.browser.view"); 
     part.setLabel("Browser"); 

     partService.showPart(part, PartState.ACTIVATE); 
    } 
} 

Here können Sie ein Beispiel, wie das funktioniert zusammen mit Ihrem Application.e4xmi finden.