]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.browsing.ui.swt/src/org/simantics/browsing/ui/swt/contentassist/ContentAssistTextField.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.browsing.ui.swt / src / org / simantics / browsing / ui / swt / contentassist / ContentAssistTextField.java
index 4d2f215eddff235ed59428137d6051cb2abdc5d7..7c184750a46578aba3b58d09ff62f76a95d2ab21 100644 (file)
-/*******************************************************************************\r
- * Copyright (c) 2007, 2012 Association for Decentralized Information Management\r
- * in Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- *     VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.browsing.ui.swt.contentassist;\r
-\r
-import java.util.Arrays;\r
-import java.util.Collection;\r
-import java.util.Map;\r
-import java.util.TreeMap;\r
-\r
-import org.eclipse.jface.fieldassist.IContentProposal;\r
-import org.eclipse.jface.fieldassist.IContentProposalListener;\r
-import org.eclipse.jface.fieldassist.TextContentAdapter;\r
-import org.eclipse.jface.layout.GridDataFactory;\r
-import org.eclipse.jface.layout.GridLayoutFactory;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.events.FocusEvent;\r
-import org.eclipse.swt.events.FocusListener;\r
-import org.eclipse.swt.events.KeyAdapter;\r
-import org.eclipse.swt.events.KeyEvent;\r
-import org.eclipse.swt.events.ModifyEvent;\r
-import org.eclipse.swt.events.ModifyListener;\r
-import org.eclipse.swt.events.TraverseEvent;\r
-import org.eclipse.swt.events.TraverseListener;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Text;\r
-\r
-\r
-/**\r
- * @author Tuukka Lehtonen\r
- *\r
- * @param <T>\r
- */\r
-public class ContentAssistTextField extends Composite {\r
-\r
-    private static final boolean DEBUG = false;\r
-    \r
-    Text text;\r
-    INamedObject acceptedProposal;\r
-    INamedObject result;\r
-    OpenableContentAssistCommandAdapter contentAssist;\r
-\r
-    public <T extends INamedObject> ContentAssistTextField(final Composite parent, T initialValue, final T[] allowedValues, int style) {\r
-        this(parent, initialValue, Arrays.asList(allowedValues), style);\r
-    }\r
-\r
-    public <T extends INamedObject> ContentAssistTextField(final Composite parent, T initialValue, final Collection<T> allowedValues, int style) {\r
-        super(parent, style);\r
-        this.result = initialValue;\r
-\r
-        GridLayoutFactory.fillDefaults().applyTo(this);\r
-\r
-        text = new Text(this, style);\r
-        text.setText(initialValue == null ? "" : initialValue.getName());\r
-        GridDataFactory.fillDefaults().grab(true, true).applyTo(text);\r
-\r
-        final Map<String, INamedObject> valueMap = new TreeMap<String, INamedObject>(String.CASE_INSENSITIVE_ORDER);\r
-        for (T t : allowedValues) {\r
-            valueMap.put(t.getName(), t);\r
-        }\r
-\r
-        contentAssist = new OpenableContentAssistCommandAdapter(text,\r
-                new TextContentAdapter(),\r
-                new NamedObjectContentProposalProvider<T>(allowedValues),\r
-                (String) null,\r
-                (char[]) null,\r
-                true\r
-        );\r
-        contentAssist.addContentProposalListener(new IContentProposalListener() {\r
-            @Override\r
-            public void proposalAccepted(IContentProposal proposal) {\r
-                if (DEBUG)\r
-                    System.out.println("accepted: " + proposal);\r
-                acceptedProposal = ((INamedObjectContentProposal) proposal).getNamedObject();\r
-                ContentAssistTextField.this.result = acceptedProposal;\r
-                text.setText(acceptedProposal.getName());\r
-                text.setSelection(acceptedProposal.getName().length());\r
-                //text.selectAll();\r
-            }\r
-        });\r
-\r
-        text.addModifyListener(new ModifyListener() {\r
-            @Override\r
-            public void modifyText(ModifyEvent e) {\r
-                String t = text.getText();\r
-                if (DEBUG) {\r
-                    System.out.println("text: " + t);\r
-                    System.out.println("value set: " + valueMap);\r
-                }\r
-                INamedObject obj = valueMap.get(t);\r
-                if (obj == null) {\r
-                    result = null;\r
-                    if (DEBUG)\r
-                        System.out.println("no result");\r
-                    contentAssist.open();\r
-                } else {\r
-                    result = obj;\r
-                    if (DEBUG)\r
-                        System.out.println("result: " + result);\r
-                }\r
-            }\r
-        });\r
-        text.addKeyListener(new KeyAdapter() {\r
-\r
-            @Override\r
-            public void keyPressed(KeyEvent e) {\r
-                if(e.keyCode == SWT.CR) {\r
-                    String name = text.getText();\r
-                    if (DEBUG)\r
-                        System.out.println("CR: " + name);\r
-                    if(name.isEmpty()) {\r
-                        return;\r
-                    }\r
-                    if(acceptedProposal == null)\r
-                        acceptedProposal = FindExactMatch.exec(name, allowedValues);\r
-                    if(acceptedProposal == null)\r
-                        contentAssist.open();\r
-                    else {\r
-                        ContentAssistTextField.this.result = acceptedProposal;\r
-                        //text.setText(acceptedProposal.getName());\r
-                        //text.traverse(SWT.TRAVERSE_TAB_NEXT);\r
-                        //text.traverse(SWT.TRAVERSE_RETURN);\r
-                    }\r
-                }\r
-            }\r
-\r
-        });\r
-        text.addFocusListener(new FocusListener() {\r
-\r
-            TraverseListener listener = new TraverseListener() {\r
-                @Override\r
-                public void keyTraversed(TraverseEvent e) {\r
-//                    System.out.println("CA TraverseListener PARENT TRAVERSE: " + e.detail);\r
-                    if (e.detail == SWT.TRAVERSE_RETURN) {\r
-                        e.doit = false;\r
-                    }\r
-                }\r
-            };\r
-\r
-            @Override\r
-            public void focusLost(FocusEvent e) {\r
-                parent.removeTraverseListener(listener);\r
-            }\r
-\r
-            @Override\r
-            public void focusGained(FocusEvent e) {\r
-                parent.addTraverseListener(listener);\r
-            }\r
-        });\r
-\r
-        contentAssist.setPropagateKeys(true);\r
-    }\r
-\r
-    public INamedObject getResult() {\r
-        return result;\r
-    }\r
-\r
-    public Text getControl() {\r
-        return text;\r
-    }\r
-\r
-    public void openAssist() {\r
-        contentAssist.open();\r
-    }\r
-\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2007, 2012 Association for Decentralized Information Management
+ * in Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.browsing.ui.swt.contentassist;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.eclipse.jface.fieldassist.IContentProposal;
+import org.eclipse.jface.fieldassist.IContentProposalListener;
+import org.eclipse.jface.fieldassist.TextContentAdapter;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.TraverseEvent;
+import org.eclipse.swt.events.TraverseListener;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+
+
+/**
+ * @author Tuukka Lehtonen
+ *
+ * @param <T>
+ */
+public class ContentAssistTextField extends Composite {
+
+    private static final boolean DEBUG = false;
+    
+    Text text;
+    INamedObject acceptedProposal;
+    INamedObject result;
+    OpenableContentAssistCommandAdapter contentAssist;
+
+    public <T extends INamedObject> ContentAssistTextField(final Composite parent, T initialValue, final T[] allowedValues, int style) {
+        this(parent, initialValue, Arrays.asList(allowedValues), style);
+    }
+
+    public <T extends INamedObject> ContentAssistTextField(final Composite parent, T initialValue, final Collection<T> allowedValues, int style) {
+        super(parent, style);
+        this.result = initialValue;
+
+        GridLayoutFactory.fillDefaults().applyTo(this);
+
+        text = new Text(this, style);
+        text.setText(initialValue == null ? "" : initialValue.getName());
+        GridDataFactory.fillDefaults().grab(true, true).applyTo(text);
+
+        final Map<String, INamedObject> valueMap = new TreeMap<String, INamedObject>(String.CASE_INSENSITIVE_ORDER);
+        for (T t : allowedValues) {
+            valueMap.put(t.getName(), t);
+        }
+
+        contentAssist = new OpenableContentAssistCommandAdapter(text,
+                new TextContentAdapter(),
+                new NamedObjectContentProposalProvider<T>(allowedValues),
+                (String) null,
+                (char[]) null,
+                true
+        );
+        contentAssist.addContentProposalListener(new IContentProposalListener() {
+            @Override
+            public void proposalAccepted(IContentProposal proposal) {
+                if (DEBUG)
+                    System.out.println("accepted: " + proposal);
+                acceptedProposal = ((INamedObjectContentProposal) proposal).getNamedObject();
+                ContentAssistTextField.this.result = acceptedProposal;
+                text.setText(acceptedProposal.getName());
+                text.setSelection(acceptedProposal.getName().length());
+                //text.selectAll();
+            }
+        });
+
+        text.addModifyListener(new ModifyListener() {
+            @Override
+            public void modifyText(ModifyEvent e) {
+                String t = text.getText();
+                if (DEBUG) {
+                    System.out.println("text: " + t);
+                    System.out.println("value set: " + valueMap);
+                }
+                INamedObject obj = valueMap.get(t);
+                if (obj == null) {
+                    result = null;
+                    if (DEBUG)
+                        System.out.println("no result");
+                    contentAssist.open();
+                } else {
+                    result = obj;
+                    if (DEBUG)
+                        System.out.println("result: " + result);
+                }
+            }
+        });
+        text.addKeyListener(new KeyAdapter() {
+
+            @Override
+            public void keyPressed(KeyEvent e) {
+                if(e.keyCode == SWT.CR) {
+                    String name = text.getText();
+                    if (DEBUG)
+                        System.out.println("CR: " + name);
+                    if(name.isEmpty()) {
+                        return;
+                    }
+                    if(acceptedProposal == null)
+                        acceptedProposal = FindExactMatch.exec(name, allowedValues);
+                    if(acceptedProposal == null)
+                        contentAssist.open();
+                    else {
+                        ContentAssistTextField.this.result = acceptedProposal;
+                        //text.setText(acceptedProposal.getName());
+                        //text.traverse(SWT.TRAVERSE_TAB_NEXT);
+                        //text.traverse(SWT.TRAVERSE_RETURN);
+                    }
+                }
+            }
+
+        });
+        text.addFocusListener(new FocusListener() {
+
+            TraverseListener listener = new TraverseListener() {
+                @Override
+                public void keyTraversed(TraverseEvent e) {
+//                    System.out.println("CA TraverseListener PARENT TRAVERSE: " + e.detail);
+                    if (e.detail == SWT.TRAVERSE_RETURN) {
+                        e.doit = false;
+                    }
+                }
+            };
+
+            @Override
+            public void focusLost(FocusEvent e) {
+                parent.removeTraverseListener(listener);
+            }
+
+            @Override
+            public void focusGained(FocusEvent e) {
+                parent.addTraverseListener(listener);
+            }
+        });
+
+        contentAssist.setPropagateKeys(true);
+    }
+
+    public INamedObject getResult() {
+        return result;
+    }
+
+    public Text getControl() {
+        return text;
+    }
+
+    public void openAssist() {
+        contentAssist.open();
+    }
+
+}