Просмотр исходного кода

ContentAssistHandler implemented.

au@andreasunger.net 14 лет назад
Родитель
Сommit
94d68899e2

+ 7 - 5
de.itemis.xtext.utils/plugins/de.itemis.xtext.utils.jface/META-INF/MANIFEST.MF

@@ -1,15 +1,17 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: de.itemis.xtext.utils.jface
-Bundle-SymbolicName: de.itemis.xtext.utils.jface
+Bundle-SymbolicName: de.itemis.xtext.utils.jface;singleton:=true
 Bundle-Version: 1.0.0.qualifier
 Bundle-Vendor: itemis AG
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Require-Bundle: org.eclipse.jface;bundle-version="[3.6.0,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
+ org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.ui.ide;bundle-version="[3.6.0,4.0.0)",
+ org.eclipse.jface;bundle-version="[3.6.0,4.0.0)",
  org.eclipse.jface.text;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)"
+ org.eclipse.xtext.ui;bundle-version="[2.0.0,3.0.0)"
 Export-Package: de.itemis.xtext.utils.jface.viewers,
  de.itemis.xtext.utils.jface.viewers.util
+Bundle-ActivationPolicy: lazy

+ 2 - 1
de.itemis.xtext.utils/plugins/de.itemis.xtext.utils.jface/build.properties

@@ -1,4 +1,5 @@
 source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
-               .
+               .,\
+               plugin.xml

+ 29 - 0
de.itemis.xtext.utils/plugins/de.itemis.xtext.utils.jface/plugin.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.handlers">
+      <handler
+            class="de.itemis.xtext.utils.jface.internal.handlers.ContentAssistHandler"
+            commandId="org.eclipse.ui.edit.text.contentAssist.proposals">
+         <activeWhen>
+            <iterate>
+               <test
+                     property="de.itemis.xtext.utils.jface.xtextStyledText.isFocused">
+               </test>
+            </iterate>
+         </activeWhen>
+      </handler>
+   </extension>
+   <extension
+         point="org.eclipse.core.expressions.propertyTesters">
+      <propertyTester
+            class="de.itemis.xtext.utils.jface.internal.propertytester.XtextStyledTextPropertyTester"
+            id="de.itemis.xtext.utils.jface.xtextStyledTextPropertyTester"
+            namespace="de.itemis.xtext.utils.jface.xtextStyledText"
+            properties="isFocused"
+            type="java.lang.Object">
+      </propertyTester>
+   </extension>
+
+</plugin>

+ 25 - 0
de.itemis.xtext.utils/plugins/de.itemis.xtext.utils.jface/src/de/itemis/xtext/utils/jface/internal/handlers/ContentAssistHandler.java

@@ -0,0 +1,25 @@
+package de.itemis.xtext.utils.jface.internal.handlers;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.text.source.ISourceViewer;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+
+import de.itemis.xtext.utils.jface.viewers.XtextStyledText;
+
+public class ContentAssistHandler extends AbstractHandler {
+	
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		Control control = Display.getCurrent().getFocusControl();
+		if (control != null) {
+			final XtextStyledText xtextStyledText = (XtextStyledText) control.getData(XtextStyledText.class.getCanonicalName());
+			if (xtextStyledText != null) {
+				xtextStyledText.getSourceviewer().doOperation(ISourceViewer.CONTENTASSIST_PROPOSALS);
+			}
+		}
+		return null;
+	}
+
+}

+ 16 - 0
de.itemis.xtext.utils/plugins/de.itemis.xtext.utils.jface/src/de/itemis/xtext/utils/jface/internal/propertytester/XtextStyledTextPropertyTester.java

@@ -0,0 +1,16 @@
+package de.itemis.xtext.utils.jface.internal.propertytester;
+
+import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+
+import de.itemis.xtext.utils.jface.viewers.XtextStyledText;
+
+public class XtextStyledTextPropertyTester extends PropertyTester {
+
+	public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+		Control control = Display.getCurrent().getFocusControl();
+		return control != null && control.getData(XtextStyledText.class.getCanonicalName()) != null;
+	}
+
+}

+ 2 - 29
de.itemis.xtext.utils/plugins/de.itemis.xtext.utils.jface/src/de/itemis/xtext/utils/jface/viewers/XtextStyledText.java

@@ -12,15 +12,11 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.jface.text.IDocumentPartitioner;
 import org.eclipse.jface.text.source.AnnotationModel;
 import org.eclipse.jface.text.source.ICharacterPairMatcher;
-import org.eclipse.jface.text.source.ISourceViewer;
 import org.eclipse.jface.text.source.SourceViewer;
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jface.viewers.StructuredViewer;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
 import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Event;
@@ -76,28 +72,6 @@ import de.itemis.xtext.utils.jface.viewers.util.ActiveProjectResolver;
 @SuppressWarnings("restriction")
 public class XtextStyledText {
 
-	/**
-	 * Key listener executed content assist operation on CTRL+Space
-	 */
-	private final KeyListener keyListener = new KeyListener() {
-
-		public void keyPressed(KeyEvent e) {
-			// CONTENTASSIST_PROPOSALS
-			if ((e.keyCode == 32) && ((e.stateMask & SWT.CTRL) != 0)) {
-				BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
-					public void run() {
-						sourceviewer
-								.doOperation(ISourceViewer.CONTENTASSIST_PROPOSALS);
-					}
-				});
-			}
-		}
-
-		public void keyReleased(KeyEvent e) {
-		}
-
-	};
-
 	/**
 	 * The sourceViewer, that provides additional functions to the styled text
 	 * widget
@@ -262,8 +236,8 @@ public class XtextStyledText {
 		document.setValidationJob(validationJob);
 
 		styledText = sourceviewer.getTextWidget();
-		styledText.addKeyListener(keyListener);
 
+		styledText.setData(XtextStyledText.class.getCanonicalName(), this);
 		styledText.setFont(parent.getFont());
 		styledText.setBackground(parent.getBackground());
 		styledText.setText("");
@@ -325,7 +299,6 @@ public class XtextStyledText {
 
 	public void dispose() {
 		uninstallHighlightingHelper();
-		styledText.removeKeyListener(keyListener);
 		document.disposeInput();
 	}
 
@@ -373,7 +346,7 @@ public class XtextStyledText {
 		return resourceSet;
 	}
 
-	protected XtextSourceViewer getSourceviewer() {
+	public XtextSourceViewer getSourceviewer() {
 		return sourceviewer;
 	}