RCP Perspektive und hideView

Rainbow

Bekanntes Mitglied
Hallo zusammen,
ich versuche mich gerade wieder ein wenig an Eclipse RCP.
Dabei habe ich folgendes Problem.
Ich habe eine Klasse PerspektiveFactory in der ich mehrere Views hinzufüge. Die werden dann ja auch alle in dem Programm angezeigt, wenn ich es starte. Einen von diesen Views möchte ich zwar in meiner Perspektive haben, aber ihn im initialen Zustand der Perspektive nicht sehen.

Zuerst habe ich ihn gar nciht erst der Perspektive hinzugefügt, aber dann ist es ja nicht möglich ihn spter im Programm in die Perspektive zu intregrieren und zum Beispiel neben einen anderen View der Perspektive zu legen.
Also habe ich es per Code versucht. Bekomme dann allerdings eine NullPointerException und weiß nicht weiter.
Über Hilfe wäre ich sehr dankbar.

Java:
public class PerspectiveFactory implements IPerspectiveFactory {
	
	public void createInitialLayout(IPageLayout layout) {
		
		String editorArea = layout.getEditorArea();
		layout.setEditorAreaVisible(false);
		layout.addView(BeispielView1.VIEW_ID, IPageLayout.TOP, 0.5f, editorArea);
		layout.addView(BeispielView2.VIEW_ID, IPageLayout.BOTTOM, 0.6f, editorArea);
		layout.addView(BeispielView3.VIEW_ID, IPageLayout.BOTTOM, 0.6f, editorArea);
		layout.addView(BeispielView4.VIEW_ID, IPageLayout.BOTTOM, 0.6f, editorArea);
		layout.addView(BeispielView5.VIEW_ID, IPageLayout.BOTTOM, 0.6f, editorArea);
		
		// Fast Views
		layout.addFastView(IPageLayout.ID_OUTLINE, 0.2f);
		layout.addFastView(IPageLayout.ID_PROP_SHEET, 0.2f);

		closeView(BeispielView3.VIEW_ID);
	}
	
	void closeView(String viewId) {
		
		IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
		IViewReference[] viewRefs = window.getActivePage().getViewReferences();
		
		for(int i = 0; i < viewRefs.length; i++) {
		        IViewReference ref = viewRefs[i];
			if(viewId.equals(ref.getId())) {
				ref.getPage().hideView(ref);
			}
		}
	}
}
Code:
java.lang.NullPointerException
at org.eclipse.ui.internal.PerspectiveHelper.removePart(PerspectiveHelper.java:1277)
at org.eclipse.ui.internal.Perspective.hideView(Perspective.java:602)
at org.eclipse.ui.internal.WorkbenchPage.hideView(WorkbenchPage.java:2387)

Grüße,
Rainbow
 

Wildcard

Top Contributor
Die werden dann ja auch alle in dem Programm angezeigt, wenn ich es starte. Einen von diesen Views möchte ich zwar in meiner Perspektive haben, aber ihn im initialen Zustand der Perspektive nicht sehen.
Dafür fügt man im Layout einen Placeholder ein. Damit wird festgelegt wo die View erscheinen soll, wenn sie geöffnet wird.
 

Rainbow

Bekanntes Mitglied
Hi,
erstmal vielen Dank für die Antwort. Jetzt wird der View zwar nicht initial angezeigt, aber verhält sich so, als wenn ich ihn gar nicht erst der Perspektive hinzugefügt hätte und genau das will ich ja nicht.
Ich möchte den View initial nicht angezeigt haben und wenn ich ihn dann anzeigen lassen per ShowView möchte ich ihn in die Perspektive hineinziehen können, aber das geht nicht und das ist mein Problem.

Code:
java.lang.NullPointerException
	at org.eclipse.ui.internal.FastViewPane.hideView(FastViewPane.java:582)
	at org.eclipse.ui.internal.Perspective.hideFastView(Perspective.java:571)
	at org.eclipse.ui.internal.Perspective.setActiveFastView(Perspective.java:1933)
	at org.eclipse.ui.internal.Perspective.setActiveFastView(Perspective.java:1952)
	at org.eclipse.ui.internal.Perspective.toggleFastView(Perspective.java:2365)
	at org.eclipse.ui.internal.WorkbenchPage.toggleFastView(WorkbenchPage.java:3873)
	at org.eclipse.ui.internal.WorkbenchPage.hideFastView(WorkbenchPage.java:3861)
	at org.eclipse.ui.internal.FastViewPane$2.dragStart(FastViewPane.java:156)
	at org.eclipse.ui.internal.FastViewPane$2.dragStart(FastViewPane.java:136)
	at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation$1.handleEvent(TabbedStackPresentation.java:118)
	at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.fireEvent(AbstractTabFolder.java:269)
	at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.fireEvent(AbstractTabFolder.java:282)
	at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.handleDragStarted(AbstractTabFolder.java:366)
	at org.eclipse.ui.internal.presentations.util.AbstractTabFolder$2.handleEvent(AbstractTabFolder.java:67)
	at org.eclipse.ui.presentations.PresentationUtil.handleMouseMove(PresentationUtil.java:110)
	at org.eclipse.ui.presentations.PresentationUtil.access$4(PresentationUtil.java:95)
	at org.eclipse.ui.presentations.PresentationUtil$2.handleEvent(PresentationUtil.java:63)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
 

Ähnliche Java Themen

Neue Themen


Oben