494308 Add content assist for properties section
Change-Id: I6f6265e2ef719f6deb248effb8fa2224321e4376
Signed-off-by: Anton Tanasenko <atg.sleepless@gmail.com>
diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomContentAssistProcessor.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomContentAssistProcessor.java
index 9c33d4c..fa653f2 100644
--- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomContentAssistProcessor.java
+++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomContentAssistProcessor.java
@@ -366,10 +366,6 @@
image = ((PomTemplate) template).getImage();
}
- if(image == null && context == PomTemplateContext.CONFIGURATION) {
- image = MvnImages.IMG_PARAMETER;
- }
-
TemplateProposal proposal = createProposalForTemplate(prefix, region, templateContext, image, template, false);
if(proposal != null) {
matches.add(proposal);
diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomTemplateContext.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomTemplateContext.java
index 2f45c17..ddcf78a 100644
--- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomTemplateContext.java
+++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomTemplateContext.java
@@ -29,6 +29,7 @@
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Map;
import java.util.Properties;
import java.util.Set;
@@ -98,8 +99,6 @@
RELATIVE_PATH("relativePath"), // //$NON-NLS-1$
- PROPERTIES("properties"), // //$NON-NLS-1$
-
DEPENDENCIES("dependencies"), // //$NON-NLS-1$
DEPENDENCY_MANAGEMENT("dependencyManagement"), // //$NON-NLS-1$
@@ -120,6 +119,43 @@
REPOSITORIES("repositories"), // //$NON-NLS-1$
+ PROPERTIES("properties") { // //$NON-NLS-1$
+
+ protected void addTemplates(MavenProject project, IProject eclipsePrj, Collection<Template> templates,
+ Node currentNode, String prefix) {
+
+ // propose overridable properties
+
+ Set<String> currentNodeProps = new HashSet<>();
+ NodeList nodes = currentNode.getChildNodes();
+ for(int i = 0; i < nodes.getLength(); i++ ) {
+ currentNodeProps.add(nodes.item(i).getNodeName());
+ }
+
+ if(project != null) {
+ Properties props = project.getProperties();
+ if(props != null) {
+ for(Map.Entry<Object, Object> e : props.entrySet()) {
+ String name = e.getKey().toString();
+ String value = e.getValue().toString();
+
+ if(currentNodeProps.contains(name))
+ continue;
+
+ if(!name.startsWith(prefix))
+ continue;
+
+ String template = "<" + name + ">${cursor}" + value + "</" + name + ">"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ String desc = NLS.bind(Messages.PomTemplateContext_property_override, value);
+ templates.add(new PomTemplate(name, desc, getContextTypeId(), template, false).image(MvnImages.IMG_PROPERTY)
+ .relevance(2000));
+ }
+ }
+ }
+
+ }
+ },
+
CONFIGURATION("configuration") { //$NON-NLS-1$
public boolean handlesSubtree() {
@@ -230,16 +266,18 @@
text += desc.startsWith("<p>") ? desc : "<br>" + desc; //$NON-NLS-1$ //$NON-NLS-2$
}
- proposals.add(new Template(name, text, getContextTypeId(), //
- "<" + name + ">${cursor}</" + name + ">", false)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ proposals.add(new PomTemplate(name, text, getContextTypeId(), //
+ "<" + name + ">${cursor}</" + name + ">", false) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ .image(MvnImages.IMG_PARAMETER).relevance(1900));
}
}
if(param.isMap()) {
if(prefix != null && !prefix.trim().isEmpty()) {
- proposals.add(new Template(NLS.bind(Messages.PomTemplateContext_insertParameter, prefix), "", //$NON-NLS-1$
- getContextTypeId(), "<" + prefix + ">${cursor}</" + prefix + ">", true)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ proposals.add(new PomTemplate(NLS.bind(Messages.PomTemplateContext_insertParameter, prefix), "", //$NON-NLS-1$
+ getContextTypeId(), "<" + prefix + ">${cursor}</" + prefix + ">", true) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ .image(MvnImages.IMG_PARAMETER).relevance(1500));
}
diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/Messages.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/Messages.java
index 1ab9167..b3fa555 100644
--- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/Messages.java
+++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/Messages.java
@@ -158,6 +158,8 @@
public static String PomTemplateContext_project_version_hint;
+ public static String PomTemplateContext_property_override;
+
public static String PomTemplateContext_site;
public static String PomTemplateContext_sitedeploy;
diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/messages.properties b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/messages.properties
index 7e60e90..989081e 100644
--- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/messages.properties
+++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/messages.properties
@@ -67,6 +67,7 @@
PomTemplateContext_processtestresources=Copy and process the resources into the test destination directory
PomTemplateContext_processtestsources=Process the test source code, for example to filter any values
PomTemplateContext_project_version_hint=For projects developed in sync only.
+PomTemplateContext_property_override=Override property value <b>{0}</b>
PomTemplateContext_resolvingPlugin=Resolving plugin
PomTemplateContext_site=Generates the project's site documentation
PomTemplateContext_sitedeploy=Deploys the generated site documentation to the specified web server
diff --git a/pom.xml b/pom.xml
index e2828cd..0e36a67 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,8 +40,7 @@
<tycho-extras-version>${tycho-version}</tycho-extras-version>
<!-- eclipse version m2e is built against -->
- <eclipse.stream>staging</eclipse.stream>
- <!-- eclipse.stream>neon</eclipse.stream-->
+ <eclipse.stream>neon</eclipse.stream>
<eclipse-repo.url>http://download.eclipse.org/releases/${eclipse.stream}</eclipse-repo.url>
</properties>