Bug 295007 [services] selection service implementation discussion
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/SelectionServiceImpl.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/SelectionServiceImpl.java
index f39cdfd..cd6e3d4 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/SelectionServiceImpl.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/SelectionServiceImpl.java
@@ -208,7 +208,12 @@
* @see org.eclipse.e4.ui.selection.ESelectionService#getSelection()
*/
public Object getSelection() {
- return activePart.getContext().get(ESelectionService.SELECTION);
+ if (activePart == null) {
+ return null;
+ }
+
+ IEclipseContext partContext = activePart.getContext();
+ return partContext == null ? null : partContext.get(ESelectionService.SELECTION);
}
/*
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/SelectionService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/SelectionService.java
index 0dbc3ab..cc18645 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/SelectionService.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/SelectionService.java
@@ -141,8 +141,8 @@
* .ui.ISelectionListener)
*/
public void addPostSelectionListener(ISelectionListener listener) {
- // TODO Auto-generated method stub
-
+ // TODO compat addPostSelectionListener
+ E4Util.unsupported("addPostSelectionListener"); //$NON-NLS-1$
}
/*
@@ -153,8 +153,8 @@
* , org.eclipse.ui.ISelectionListener)
*/
public void addPostSelectionListener(String partId, ISelectionListener listener) {
- // TODO Auto-generated method stub
-
+ // TODO compat addPostSelectionListener
+ E4Util.unsupported("addPostSelectionListener"); //$NON-NLS-1$
}
/*
@@ -216,8 +216,8 @@
* .ui.ISelectionListener)
*/
public void removePostSelectionListener(ISelectionListener listener) {
- // TODO Auto-generated method stub
-
+ // TODO compat removePostSelectionListener
+ E4Util.unsupported("removePostSelectionListener"); //$NON-NLS-1$
}
/*
@@ -228,8 +228,8 @@
* .String, org.eclipse.ui.ISelectionListener)
*/
public void removePostSelectionListener(String partId, ISelectionListener listener) {
- // TODO Auto-generated method stub
-
+ // TODO compat removePostSelectionListener
+ E4Util.unsupported("removePostSelectionListener"); //$NON-NLS-1$
}
/*
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/WorkbenchPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/WorkbenchPage.java
index a17f5cd..fedc947 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/WorkbenchPage.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/WorkbenchPage.java
@@ -11,6 +11,7 @@
package org.eclipse.ui.internal.e4.compatibility;
+import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -24,6 +25,7 @@
import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
import org.eclipse.e4.core.services.annotations.PostConstruct;
import org.eclipse.e4.core.services.context.IEclipseContext;
+import org.eclipse.e4.core.services.context.spi.ContextInjectionFactory;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.MApplicationFactory;
import org.eclipse.e4.ui.model.application.MElementContainer;
@@ -58,6 +60,7 @@
import org.eclipse.ui.IReusableEditor;
import org.eclipse.ui.ISaveablePart;
import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.ISelectionService;
import org.eclipse.ui.IShowEditorInput;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IViewReference;
@@ -102,6 +105,8 @@
@Inject
private EModelService modelService;
+ private ISelectionService selectionService;
+
private List<IViewReference> viewReferences = new ArrayList<IViewReference>();
private List<IEditorReference> editorReferences = new ArrayList<IEditorReference>();
@@ -121,9 +126,11 @@
}
@PostConstruct
- void postConstruct() {
+ void postConstruct() throws InvocationTargetException, InstantiationException {
partService.addPartListener(e4PartListener);
window.getContext().set(IPartService.class.getName(), this);
+ selectionService = (ISelectionService) ContextInjectionFactory
+ .make(SelectionService.class, window.getContext());
Collection<MPart> parts = partService.getParts();
for (MPart part : parts) {
@@ -1357,90 +1364,70 @@
* @see org.eclipse.ui.ISelectionService#addSelectionListener(org.eclipse.ui.ISelectionListener)
*/
public void addSelectionListener(ISelectionListener listener) {
- // FIXME compat addSelectionListener
- E4Util.unsupported("addSelectionListener"); //$NON-NLS-1$
-
+ selectionService.addSelectionListener(listener);
}
/* (non-Javadoc)
* @see org.eclipse.ui.ISelectionService#addSelectionListener(java.lang.String, org.eclipse.ui.ISelectionListener)
*/
public void addSelectionListener(String partId, ISelectionListener listener) {
- // FIXME compat addSelectionListener
- E4Util.unsupported("addSelectionListener(partId)"); //$NON-NLS-1$
-
+ selectionService.addSelectionListener(partId, listener);
}
/* (non-Javadoc)
* @see org.eclipse.ui.ISelectionService#addPostSelectionListener(org.eclipse.ui.ISelectionListener)
*/
public void addPostSelectionListener(ISelectionListener listener) {
- // FIXME compat addPostSelectionListener
- E4Util.unsupported("addPostSelectionListener"); //$NON-NLS-1$
-
+ selectionService.addPostSelectionListener(listener);
}
/* (non-Javadoc)
* @see org.eclipse.ui.ISelectionService#addPostSelectionListener(java.lang.String, org.eclipse.ui.ISelectionListener)
*/
public void addPostSelectionListener(String partId, ISelectionListener listener) {
- // FIXME compat addPostSelectionListener
- E4Util.unsupported("addPostSelectionListener(partId)"); //$NON-NLS-1$
-
+ selectionService.addPostSelectionListener(partId, listener);
}
/* (non-Javadoc)
* @see org.eclipse.ui.ISelectionService#getSelection()
*/
public ISelection getSelection() {
- // FIXME compat addPostSelectionListener
- E4Util.unsupported("getSelection"); //$NON-NLS-1$
- return null;
+ return selectionService.getSelection();
}
/* (non-Javadoc)
* @see org.eclipse.ui.ISelectionService#getSelection(java.lang.String)
*/
public ISelection getSelection(String partId) {
- // FIXME compat getSelection
- E4Util.unsupported("getSelection(partId)"); //$NON-NLS-1$
- return null;
+ return selectionService.getSelection(partId);
}
/* (non-Javadoc)
* @see org.eclipse.ui.ISelectionService#removeSelectionListener(org.eclipse.ui.ISelectionListener)
*/
public void removeSelectionListener(ISelectionListener listener) {
- // FIXME compat getSelection
- E4Util.unsupported("removeSelectionListener"); //$NON-NLS-1$
-
+ selectionService.removeSelectionListener(listener);
}
/* (non-Javadoc)
* @see org.eclipse.ui.ISelectionService#removeSelectionListener(java.lang.String, org.eclipse.ui.ISelectionListener)
*/
public void removeSelectionListener(String partId, ISelectionListener listener) {
- // FIXME compat getSelection
- E4Util.unsupported("removeSelectionListener(partId)"); //$NON-NLS-1$
-
+ selectionService.removeSelectionListener(partId, listener);
}
/* (non-Javadoc)
* @see org.eclipse.ui.ISelectionService#removePostSelectionListener(org.eclipse.ui.ISelectionListener)
*/
public void removePostSelectionListener(ISelectionListener listener) {
- // FIXME compat getSelection
- E4Util.unsupported("removePostSelectionListener"); //$NON-NLS-1$
-
+ selectionService.removePostSelectionListener(listener);
}
/* (non-Javadoc)
* @see org.eclipse.ui.ISelectionService#removePostSelectionListener(java.lang.String, org.eclipse.ui.ISelectionListener)
*/
public void removePostSelectionListener(String partId, ISelectionListener listener) {
- // FIXME compat getSelection
- E4Util.unsupported("removePostSelectionListener(partId)"); //$NON-NLS-1$
-
+ selectionService.removePostSelectionListener(partId, listener);
}
ArrayList<MPart> activationList = new ArrayList<MPart>();