Sfoglia il codice sorgente

Extracted runnable to determine active project.

Alexander Nyßen 14 anni fa
parent
commit
0a976ff0ff

+ 1 - 1
de.itemis.xtext.utils/plugins/de.itemis.xtext.utils.jface/.settings/org.eclipse.jdt.core.prefs

@@ -1,4 +1,4 @@
-#Mon Apr 11 10:19:08 CEST 2011
+#Wed Jun 22 16:27:32 CEST 2011
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5

+ 2 - 1
de.itemis.xtext.utils/plugins/de.itemis.xtext.utils.jface/META-INF/MANIFEST.MF

@@ -11,4 +11,5 @@ Require-Bundle: org.eclipse.jface;bundle-version="[3.6.0,4.0.0)",
  org.eclipse.emf.common;bundle-version="[2.6.0,3.0.0)",
  org.eclipse.xtext.ui;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.ui.ide;bundle-version="[3.6.0,4.0.0)"
-Export-Package: de.itemis.xtext.utils.jface.viewers
+Export-Package: de.itemis.xtext.utils.jface.viewers,
+ de.itemis.xtext.utils.jface.viewers.util

+ 5 - 21
de.itemis.xtext.utils/plugins/de.itemis.xtext.utils.jface/src/de/itemis/xtext/utils/jface/viewers/XtextCellEditor.java

@@ -36,11 +36,6 @@ import org.eclipse.swt.events.KeyListener;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.internal.editors.text.EditorsPlugin;
 import org.eclipse.ui.texteditor.AbstractDecoratedTextEditor;
 import org.eclipse.ui.texteditor.AnnotationPreference;
@@ -70,6 +65,8 @@ import com.google.inject.Inject;
 import com.google.inject.Provider;
 import com.google.inject.name.Named;
 
+import de.itemis.xtext.utils.jface.viewers.util.ActiveProjectResolver;
+
 /**
  * This class integrates xText Features into a {@link CellEditor} and can be
  * used i.E. in jface {@link StructuredViewer}s or in GMF EditParts via
@@ -201,22 +198,9 @@ public class XtextCellEditor extends StyledTextCellEditor {
 
 	protected IProject getActiveProject() {
 		if (activeProject == null) {
-			Display.getDefault().syncExec(new Runnable() {
-				public void run() {
-					IWorkbenchWindow activeWorkbenchWindow = PlatformUI
-							.getWorkbench().getActiveWorkbenchWindow();
-					IWorkbenchPage activePage = activeWorkbenchWindow
-							.getActivePage();
-					if (activePage != null) {
-						IEditorInput editorInput = activePage.getActiveEditor()
-								.getEditorInput();
-						if (editorInput instanceof IFileEditorInput) {
-							IFileEditorInput input = (IFileEditorInput) editorInput;
-							activeProject = input.getFile().getProject();
-						}
-					}
-				}
-			});
+			ActiveProjectResolver activeProjectResolver = new ActiveProjectResolver();
+			Display.getDefault().syncExec(activeProjectResolver);
+			activeProject = activeProjectResolver.getResult();
 		}
 		return activeProject;
 	}

+ 32 - 0
de.itemis.xtext.utils/plugins/de.itemis.xtext.utils.jface/src/de/itemis/xtext/utils/jface/viewers/util/ActiveProjectResolver.java

@@ -0,0 +1,32 @@
+package de.itemis.xtext.utils.jface.viewers.util;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+
+public final class ActiveProjectResolver implements
+		RunnableWithResult<IProject> {
+
+	IProject activeProject = null;
+
+	public void run() {
+		IWorkbenchWindow activeWorkbenchWindow = PlatformUI.getWorkbench()
+				.getActiveWorkbenchWindow();
+		IWorkbenchPage activePage = activeWorkbenchWindow.getActivePage();
+		if (activePage != null) {
+			IEditorInput editorInput = activePage.getActiveEditor()
+					.getEditorInput();
+			if (editorInput instanceof IFileEditorInput) {
+				IFileEditorInput input = (IFileEditorInput) editorInput;
+				activeProject = input.getFile().getProject();
+			}
+		}
+	}
+
+	public IProject getResult() {
+		return activeProject;
+	}
+}

+ 12 - 0
de.itemis.xtext.utils/plugins/de.itemis.xtext.utils.jface/src/de/itemis/xtext/utils/jface/viewers/util/RunnableWithResult.java

@@ -0,0 +1,12 @@
+package de.itemis.xtext.utils.jface.viewers.util;
+
+/**
+ * A runnable that may return a result.
+ * 
+ * @author nyssen
+ *
+ * @param <T>
+ */
+public interface RunnableWithResult<T> extends Runnable {
+	T getResult();
+}