Author: scabanovich
Date: 2008-11-13 10:03:24 -0500 (Thu, 13 Nov 2008)
New Revision: 11761
Added:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/AttributeContentProposalProviderFactory.java
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/IAttributeContentProposalProvider.java
Modified:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/ComboBoxFieldEditor.java
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/StringButtonFieldEditorEx.java
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/StringFieldEditor.java
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/StringFieldEditorEx.java
Log:
JBIDE-2575
Added:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/AttributeContentProposalProviderFactory.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/AttributeContentProposalProviderFactory.java
(rev 0)
+++
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/AttributeContentProposalProviderFactory.java 2008-11-13
15:03:24 UTC (rev 11761)
@@ -0,0 +1,144 @@
+package org.jboss.tools.common.model.ui.attribute;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.bindings.keys.KeyStroke;
+import org.eclipse.jface.bindings.keys.ParseException;
+import org.eclipse.jface.fieldassist.ComboContentAdapter;
+import org.eclipse.jface.fieldassist.ContentProposalAdapter;
+import org.eclipse.jface.fieldassist.IContentProposal;
+import org.eclipse.jface.fieldassist.IContentProposalProvider;
+import org.eclipse.jface.fieldassist.IControlContentAdapter;
+import org.eclipse.jface.fieldassist.TextContentAdapter;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Text;
+import org.jboss.tools.common.meta.XAttribute;
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.common.model.ui.ModelUIPlugin;
+import org.jboss.tools.common.model.ui.attribute.adapter.DefaultValueAdapter;
+
+public class AttributeContentProposalProviderFactory {
+ private static List<IAttributeContentProposalProvider> EMPTY = new
ArrayList<IAttributeContentProposalProvider>();
+
+ public static KeyStroke getCtrlSpaceKeyStroke() {
+ KeyStroke ks = null;
+
+ try {
+ ks = KeyStroke.getInstance("Ctrl+Space");
+ } catch (ParseException e) {
+ //Cannot happen, this code is safe.
+ ModelUIPlugin.getPluginLog().logError(e);
+ }
+
+ return ks;
+ }
+
+ public static void registerContentAssist(DefaultValueAdapter valueAdapter, Control
control) {
+ IControlContentAdapter controlAdapter = control instanceof Text
+ ? new TextContentAdapter()
+ : control instanceof Combo
+ ? new ComboContentAdapter()
+ : null;
+ if(controlAdapter == null) {
+ return;
+ }
+ XModelObject object = valueAdapter.getModelObject();
+ XAttribute attr = valueAdapter.getAttribute();
+ if (attr == null && valueAdapter.getAttributeData() != null) {
+ attr = valueAdapter.getAttributeData().getAttribute();
+ }
+ AttributeContentProposalProviderFactory factory = new
AttributeContentProposalProviderFactory();
+ final List<IAttributeContentProposalProvider> ps = factory
+ .getContentProposalProviders(object, attr);
+ for (IAttributeContentProposalProvider p : ps) {
+ p.init(object, attr);
+ IContentProposalProvider cpp = p.getContentProposalProvider();
+ if (cpp == null)
+ continue;
+ ContentProposalAdapter adapter = new ContentProposalAdapter(
+ control,
+ controlAdapter,
+ cpp,
+ AttributeContentProposalProviderFactory.getCtrlSpaceKeyStroke(),
+ null);
+ adapter.setPropagateKeys(true);
+ adapter.setProposalAcceptanceStyle(p.getProposalAcceptanceStyle());
+ }
+ if (!ps.isEmpty()) {
+ control.addDisposeListener(new DisposeListener() {
+ public void widgetDisposed(DisposeEvent e) {
+ System.out.println("dispose");
+ for (IAttributeContentProposalProvider p : ps) {
+ p.dispose();
+ }
+ }
+ });
+ }
+ }
+
+ public List<IAttributeContentProposalProvider>
getContentProposalProviders(XModelObject object, XAttribute attribute) {
+ if(true) {
+ List<IAttributeContentProposalProvider> list = new
ArrayList<IAttributeContentProposalProvider>();
+ list.add(new TestAttributeContentProposalProvider());
+ return list;
+ }
+
+ return EMPTY;
+ }
+}
+
+class TestAttributeContentProposalProvider implements IAttributeContentProposalProvider
{
+
+ public void dispose() {
+ }
+
+ public IContentProposalProvider getContentProposalProvider() {
+ IContentProposalProvider cpp = new IContentProposalProvider() {
+
+ public IContentProposal[] getProposals(String contents,
+ int position) {
+ ArrayList<IContentProposal> ps = new ArrayList<IContentProposal>();
+
+ if(position <= contents.length() && position > 0 && 'b'
== contents.charAt(position - 1))
+ ps.add(makeContentProposal("aaa", ".aaa"));
+
+ return ps.toArray(new IContentProposal[0]);
+ }
+
+ };
+ return cpp;
+ }
+
+ public int getProposalAcceptanceStyle() {
+ return ContentProposalAdapter.PROPOSAL_INSERT;
+ }
+
+ public void init(XModelObject object, XAttribute attribute) {
+ }
+
+ private IContentProposal makeContentProposal(final String proposal, final String label)
{
+ return new IContentProposal() {
+ public String getContent() {
+ return proposal;
+ }
+
+ public String getDescription() {
+ return null;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public int getCursorPosition() {
+ return proposal.length();
+ }
+ };
+ }
+
+
+}
\ No newline at end of file
Added:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/IAttributeContentProposalProvider.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/IAttributeContentProposalProvider.java
(rev 0)
+++
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/IAttributeContentProposalProvider.java 2008-11-13
15:03:24 UTC (rev 11761)
@@ -0,0 +1,22 @@
+package org.jboss.tools.common.model.ui.attribute;
+
+import org.eclipse.jface.fieldassist.IContentProposalProvider;
+import org.jboss.tools.common.meta.XAttribute;
+import org.jboss.tools.common.model.XModelObject;
+
+public interface IAttributeContentProposalProvider {
+
+ public void init(XModelObject object, XAttribute attribute);
+
+ public IContentProposalProvider getContentProposalProvider();
+
+ /**
+ * ContentProposalAdapter.PROPOSAL_INSERT
+ * ContentProposalAdapter.PROPOSAL_REPLACE
+ * @return
+ */
+ public int getProposalAcceptanceStyle();
+
+ public void dispose();
+
+}
Modified:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/ComboBoxFieldEditor.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/ComboBoxFieldEditor.java 2008-11-13
15:03:19 UTC (rev 11760)
+++
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/ComboBoxFieldEditor.java 2008-11-13
15:03:24 UTC (rev 11761)
@@ -49,6 +49,7 @@
import org.jboss.tools.common.model.ui.IAttributeErrorProvider;
import org.jboss.tools.common.model.ui.IValueChangeListener;
import org.jboss.tools.common.model.ui.IValueProvider;
+import
org.jboss.tools.common.model.ui.attribute.AttributeContentProposalProviderFactory;
import org.jboss.tools.common.model.ui.attribute.IListContentProvider;
import org.jboss.tools.common.model.ui.attribute.adapter.DefaultValueAdapter;
import org.jboss.tools.common.model.ui.widgets.BorderedControl;
@@ -255,14 +256,8 @@
SimpleContentProposalProvider cpp = new SimpleContentProposalProvider(set.toArray(new
String[0]));
- KeyStroke ks = null;
+ KeyStroke ks = AttributeContentProposalProviderFactory.getCtrlSpaceKeyStroke();
- try {
- ks = KeyStroke.getInstance("Ctrl+Space");
- } catch (ParseException e) {
- e.printStackTrace();
- }
-
ContentProposalAdapter adapter = new ContentProposalAdapter(
comboField,
new ComboContentAdapter(),
Modified:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/StringButtonFieldEditorEx.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/StringButtonFieldEditorEx.java 2008-11-13
15:03:19 UTC (rev 11760)
+++
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/StringButtonFieldEditorEx.java 2008-11-13
15:03:24 UTC (rev 11761)
@@ -16,6 +16,7 @@
import org.jboss.tools.common.model.ui.IAttributeErrorProvider;
import org.jboss.tools.common.model.ui.IValueChangeListener;
import org.jboss.tools.common.model.ui.IValueProvider;
+import
org.jboss.tools.common.model.ui.attribute.AttributeContentProposalProviderFactory;
import org.jboss.tools.common.model.ui.attribute.adapter.DefaultValueAdapter;
import org.eclipse.jdt.internal.ui.refactoring.contentassist.ControlContentAssistHelper;
import org.eclipse.jface.action.IAction;
@@ -396,4 +397,12 @@
}
return oldTextValue != null && oldTextValue.equals(newValue);
}
+
+ protected void addContentAssist(Text text) {
+ if(propertyEditor != null && propertyEditor.getInput() instanceof
DefaultValueAdapter) {
+ DefaultValueAdapter valueAdapter = (DefaultValueAdapter)propertyEditor.getInput();
+ AttributeContentProposalProviderFactory.registerContentAssist(valueAdapter, text);
+ }
+ }
+
}
Modified:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/StringFieldEditor.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/StringFieldEditor.java 2008-11-13
15:03:19 UTC (rev 11760)
+++
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/StringFieldEditor.java 2008-11-13
15:03:24 UTC (rev 11761)
@@ -10,6 +10,12 @@
******************************************************************************/
package org.jboss.tools.common.model.ui.attribute.editor;
+import java.util.ArrayList;
+
+import org.eclipse.jface.fieldassist.ContentProposalAdapter;
+import org.eclipse.jface.fieldassist.IContentProposal;
+import org.eclipse.jface.fieldassist.IContentProposalProvider;
+import org.eclipse.jface.fieldassist.TextContentAdapter;
import org.eclipse.jface.util.Assert;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
@@ -214,6 +220,9 @@
if(textLimit > 0){//Only set limits above 0 - see SWT spec
textField.setTextLimit(textLimit);
}
+
+ addContentAssist(textField);
+
} else {
checkParent(textControl, parent);
}
@@ -229,6 +238,9 @@
});
return textControl;
}
+
+ protected void addContentAssist(Text text) {}
+
/**
* We cannot controls to provide READ-ONLY property on the fly.
Modified:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/StringFieldEditorEx.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/StringFieldEditorEx.java 2008-11-13
15:03:19 UTC (rev 11760)
+++
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/StringFieldEditorEx.java 2008-11-13
15:03:24 UTC (rev 11761)
@@ -12,12 +12,21 @@
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
+import java.util.List;
+import org.jboss.tools.common.meta.XAttribute;
import org.jboss.tools.common.model.ui.IAttributeErrorProvider;
import org.jboss.tools.common.model.ui.IValueChangeListener;
import org.jboss.tools.common.model.ui.IValueProvider;
+import
org.jboss.tools.common.model.ui.attribute.AttributeContentProposalProviderFactory;
+import org.jboss.tools.common.model.ui.attribute.IAttributeContentProposalProvider;
import org.jboss.tools.common.model.ui.attribute.adapter.DefaultValueAdapter;
+import org.eclipse.jface.fieldassist.ContentProposalAdapter;
+import org.eclipse.jface.fieldassist.IContentProposalProvider;
+import org.eclipse.jface.fieldassist.TextContentAdapter;
import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Text;
@@ -134,4 +143,11 @@
return oldTextValue != null && oldTextValue.equals(newValue);
}
+ protected void addContentAssist(Text text) {
+ if(propertyEditor != null && propertyEditor.getInput() instanceof
DefaultValueAdapter) {
+ DefaultValueAdapter valueAdapter = (DefaultValueAdapter)propertyEditor.getInput();
+ AttributeContentProposalProviderFactory.registerContentAssist(valueAdapter, text);
+ }
+ }
+
}
Show replies by date