Author: scabanovich
Date: 2008-11-18 09:41:59 -0500 (Tue, 18 Nov 2008)
New Revision: 11865
Added:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/adapter/JavaClassContentAssistProvider.java
Modified:
trunk/common/plugins/org.jboss.tools.common.model.ui/META-INF/MANIFEST.MF
trunk/common/plugins/org.jboss.tools.common.model.ui/plugin.xml
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
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/adapter/DefaultTreeSelectionContentAssistProvider.java
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/JavaHyperlinkCellEditor.java
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/JavaHyperlinkCueLabelProvider.java
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/JavaHyperlinkLineFieldEditor.java
Log:
JBIDE-2575
Modified: trunk/common/plugins/org.jboss.tools.common.model.ui/META-INF/MANIFEST.MF
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.model.ui/META-INF/MANIFEST.MF 2008-11-18
14:35:26 UTC (rev 11864)
+++ trunk/common/plugins/org.jboss.tools.common.model.ui/META-INF/MANIFEST.MF 2008-11-18
14:41:59 UTC (rev 11865)
@@ -113,5 +113,6 @@
org.eclipse.ant.ui,
org.eclipse.core.expressions,
org.eclipse.core.filesystem,
- org.eclipse.wst.html.core
+ org.eclipse.wst.html.core,
+ org.eclipse.pde.ui
Bundle-Version: 2.0.0
Modified: trunk/common/plugins/org.jboss.tools.common.model.ui/plugin.xml
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.model.ui/plugin.xml 2008-11-18 14:35:26
UTC (rev 11864)
+++ trunk/common/plugins/org.jboss.tools.common.model.ui/plugin.xml 2008-11-18 14:41:59
UTC (rev 11865)
@@ -497,6 +497,7 @@
<extension
point="org.jboss.tools.common.model.ui.attributeContentProposalProviders">
<provider
class="org.jboss.tools.common.model.ui.attribute.adapter.DefaultTreeSelectionContentAssistProvider"/>
+ <provider
class="org.jboss.tools.common.model.ui.attribute.adapter.JavaClassContentAssistProvider"/>
</extension>
</plugin>
Modified:
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 2008-11-18
14:35:26 UTC (rev 11864)
+++
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/AttributeContentProposalProviderFactory.java 2008-11-18
14:41:59 UTC (rev 11865)
@@ -29,9 +29,11 @@
import org.eclipse.jface.fieldassist.IContentProposalProvider;
import org.eclipse.jface.fieldassist.IControlContentAdapter;
import org.eclipse.jface.fieldassist.TextContentAdapter;
+import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Text;
@@ -107,7 +109,18 @@
}
if(added) {
int bits = SWT.TOP | SWT.LEFT;
- ControlDecoration controlDecoration = new ControlDecoration(control, bits);
+ ControlDecoration controlDecoration = new ControlDecoration(control, bits) {
+ public Image getImage() {
+ for (IAttributeContentProposalProvider p : ps) {
+ LabelProvider lp = p.getCustomLabelProbider();
+ if(lp != null) {
+ Image image = lp.getImage(getControl());
+ if(image != null) return image;
+ }
+ }
+ return super.getImage();
+ }
+ };
// Configure text widget decoration
// No margin
controlDecoration.setMarginWidth(0);
@@ -147,11 +160,6 @@
}
}
- if(false) {
- //Test
- result.add(new TestAttributeContentProposalProvider());
- }
-
return result;
}
@@ -176,44 +184,3 @@
}
}
-
-/**
- * Example
- * @author glory
- *
- */
-class TestAttributeContentProposalProvider implements IAttributeContentProposalProvider
{
-
- public boolean isRelevant(XModelObject object, XAttribute attribute) {
- return true;
- }
-
- public void init(XModelObject object, XAttribute attribute) {
- }
-
- 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 > 3 &&
"test".equals(contents.substring(position - 4, position))) {
- ps.add(AttributeContentProposalProviderFactory.makeContentProposal("aaa",
".aaa"));
- }
-
- return ps.toArray(new IContentProposal[0]);
- }
-
- };
- return cpp;
- }
-
- public int getProposalAcceptanceStyle() {
- return ContentProposalAdapter.PROPOSAL_INSERT;
- }
-
- public void dispose() {
- }
-
-}
\ No newline at end of file
Modified:
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 2008-11-18
14:35:26 UTC (rev 11864)
+++
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/IAttributeContentProposalProvider.java 2008-11-18
14:41:59 UTC (rev 11865)
@@ -11,6 +11,7 @@
package org.jboss.tools.common.model.ui.attribute;
import org.eclipse.jface.fieldassist.IContentProposalProvider;
+import org.eclipse.jface.viewers.LabelProvider;
import org.jboss.tools.common.meta.XAttribute;
import org.jboss.tools.common.model.XModelObject;
@@ -24,6 +25,8 @@
public void init(XModelObject object, XAttribute attribute);
public IContentProposalProvider getContentProposalProvider();
+
+ public LabelProvider getCustomLabelProbider();
/**
* ContentProposalAdapter.PROPOSAL_INSERT
Modified:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/adapter/DefaultTreeSelectionContentAssistProvider.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/adapter/DefaultTreeSelectionContentAssistProvider.java 2008-11-18
14:35:26 UTC (rev 11864)
+++
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/adapter/DefaultTreeSelectionContentAssistProvider.java 2008-11-18
14:41:59 UTC (rev 11865)
@@ -14,6 +14,7 @@
import org.eclipse.jface.fieldassist.ContentProposalAdapter;
import org.eclipse.jface.fieldassist.IContentProposal;
import org.eclipse.jface.fieldassist.IContentProposalProvider;
+import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.jboss.tools.common.meta.XAttribute;
import org.jboss.tools.common.model.*;
@@ -102,6 +103,10 @@
treeProvider = new DefaultXAttributeTreeContentProvider(attribute, object.getModel(),
object);
}
+ public LabelProvider getCustomLabelProbider() {
+ return null;
+ }
+
public void dispose() {
object = null;
attribute = null;
Added:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/adapter/JavaClassContentAssistProvider.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/adapter/JavaClassContentAssistProvider.java
(rev 0)
+++
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/adapter/JavaClassContentAssistProvider.java 2008-11-18
14:41:59 UTC (rev 11865)
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.common.model.ui.attribute.adapter;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jdt.core.search.IJavaSearchConstants;
+import org.eclipse.jface.fieldassist.ContentProposalAdapter;
+import org.eclipse.jface.fieldassist.IContentProposalProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.pde.internal.ui.editor.contentassist.TypeContentProposalProvider;
+import org.jboss.tools.common.meta.XAttribute;
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.common.model.ui.attribute.IAttributeContentProposalProvider;
+import org.jboss.tools.common.model.ui.attribute.editor.JavaHyperlinkCueLabelProvider;
+
+public class JavaClassContentAssistProvider implements
+ IAttributeContentProposalProvider {
+ XModelObject object;
+ XAttribute attribute;
+
+ public IContentProposalProvider getContentProposalProvider() {
+ IProject project =
(IProject)object.getModel().getProperties().get("project");
+ return (project == null) ? null : new TypeContentProposalProvider(project,
IJavaSearchConstants.TYPE);
+ }
+
+ public int getProposalAcceptanceStyle() {
+ return ContentProposalAdapter.PROPOSAL_REPLACE;
+ }
+
+ public void init(XModelObject object, XAttribute attribute) {
+ this.object = object;
+ this.attribute = attribute;
+ }
+
+ public boolean isRelevant(XModelObject object, XAttribute attribute) {
+ if(object == null || attribute == null) return false;
+ String editorName = attribute.getEditor().getName();
+ return editorName != null && editorName.indexOf("AccessibleJava")
>= 0;
+ }
+
+ public LabelProvider getCustomLabelProbider() {
+ return JavaHyperlinkCueLabelProvider.INSTANCE;
+ }
+
+ public void dispose() {
+ this.object = null;
+ this.attribute = null;
+ }
+
+}
Modified:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/JavaHyperlinkCellEditor.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/JavaHyperlinkCellEditor.java 2008-11-18
14:35:26 UTC (rev 11864)
+++
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/JavaHyperlinkCellEditor.java 2008-11-18
14:41:59 UTC (rev 11865)
@@ -93,6 +93,18 @@
String textCache = null;
long timeStamp = -1;
+ public boolean canCreateClass() {
+ String text = (getTextField() != null) ? getTextField().getText()
+ : (valueProvider != null) ? valueProvider.getStringValue(true) : null;
+ if(text == null) return false;
+ if(text.length() == 0) return true;
+ for (int i = 0; i < text.length(); i++) {
+ char ch = text.charAt(i);
+ if(ch != '.' && !Character.isJavaIdentifierPart(ch)) return false;
+ }
+ return true;
+ }
+
public boolean classExists() {
String text = (getTextField() != null) ? getTextField().getText()
: (valueProvider != null) ? valueProvider.getStringValue(true) : null;
Modified:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/JavaHyperlinkCueLabelProvider.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/JavaHyperlinkCueLabelProvider.java 2008-11-18
14:35:26 UTC (rev 11864)
+++
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/JavaHyperlinkCueLabelProvider.java 2008-11-18
14:41:59 UTC (rev 11865)
@@ -20,6 +20,7 @@
public interface JavaClassHolder {
public boolean classExists();
+ public boolean canCreateClass();
}
static Image createClassImage() {
@@ -38,7 +39,7 @@
Text text = (Text)element;
if(text.isDisposed()) return null;
JavaClassHolder editor =
(JavaClassHolder)text.getData("JavaHyperlinkLineFieldEditor");
- return (editor == null || editor.classExists()) ? null : CLASS_IMAGE;
+ return (editor == null || editor.classExists() || !editor.canCreateClass()) ? null :
CLASS_IMAGE;
}
}
Modified:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/JavaHyperlinkLineFieldEditor.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/JavaHyperlinkLineFieldEditor.java 2008-11-18
14:35:26 UTC (rev 11864)
+++
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/attribute/editor/JavaHyperlinkLineFieldEditor.java 2008-11-18
14:41:59 UTC (rev 11865)
@@ -203,30 +203,30 @@
return control;
}
-
public Control createTextControl(Composite parent) {
Control control = super.createTextControl(parent);
- IPackageFragmentRoot root = (project == null) ? null :
JavaAdapter.getInstance().getPackageFragmentRoot(project);
- if (root != null) {
- String pkg = null;
- if(cpp != null) {
- pkg = cpp.getContextPackage();
- }
- if(pkg == null) pkg = "";
- JavaTypeCompletionProcessor contentAssistentProcessor = new
JavaTypeCompletionProcessor(false, false, pkg.length() == 0);
- IPackageFragment currentPackage = root.getPackageFragment(pkg);
- contentAssistentProcessor.setPackageFragment(currentPackage);
- Text text = getTextField();
- text.setData("JavaHyperlinkLineFieldEditor", this);
- ControlContentAssistHelper.createTextContentAssistant(getTextField(),
contentAssistentProcessor, JavaHyperlinkCueLabelProvider.INSTANCE);
- }
- return control;
+ Text text = getTextField();
+ text.setData("JavaHyperlinkLineFieldEditor", this);
+
+ return control;
}
boolean classExists;
String textCache = null;
long timeStamp = -1;
-
+
+ public boolean canCreateClass() {
+ String text = (getTextField() != null) ? getTextField().getText()
+ : (valueProvider != null) ? valueProvider.getStringValue(true) : null;
+ if(text == null) return false;
+ if(text.length() == 0) return true;
+ for (int i = 0; i < text.length(); i++) {
+ char ch = text.charAt(i);
+ if(ch != '.' && !Character.isJavaIdentifierPart(ch)) return false;
+ }
+ return true;
+ }
+
public boolean classExists() {
String text = (getTextField() != null) ? getTextField().getText()
: (valueProvider != null) ? valueProvider.getStringValue(true) : null;