Bug 511568 - IU id autocomplete improvements for .target generic editor
Now autocomplete propses to replace if there is already an IU id. Change
also contains some refactoring with regard to names and safety.
Change-Id: I096f623984d7d0df726add85c8991fc384271e11
Signed-off-by: Sopot Cela <scela@redhat.com>
diff --git a/ui/org.eclipse.pde.genericeditor.extension/src/org/eclipse/pde/internal/genericeditor/target/extension/autocomplete/VersionProposal.java b/ui/org.eclipse.pde.genericeditor.extension/src/org/eclipse/pde/internal/genericeditor/target/extension/autocomplete/InstallableUnitProposal.java
similarity index 92%
rename from ui/org.eclipse.pde.genericeditor.extension/src/org/eclipse/pde/internal/genericeditor/target/extension/autocomplete/VersionProposal.java
rename to ui/org.eclipse.pde.genericeditor.extension/src/org/eclipse/pde/internal/genericeditor/target/extension/autocomplete/InstallableUnitProposal.java
index a661053..dde7242 100644
--- a/ui/org.eclipse.pde.genericeditor.extension/src/org/eclipse/pde/internal/genericeditor/target/extension/autocomplete/VersionProposal.java
+++ b/ui/org.eclipse.pde.genericeditor.extension/src/org/eclipse/pde/internal/genericeditor/target/extension/autocomplete/InstallableUnitProposal.java
@@ -17,7 +17,7 @@
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
-public class VersionProposal implements ICompletionProposal {
+public class InstallableUnitProposal implements ICompletionProposal {
private static final String REPLACE_STRING = " (replace)";//$NON-NLS-1$
private String completionString;
@@ -25,7 +25,7 @@
private int length;
private boolean replace;
- public VersionProposal(String completionString, int offset, int length, boolean replace) {
+ public InstallableUnitProposal(String completionString, int offset, int length, boolean replace) {
this.completionString = completionString;
this.offset = offset;
this.length = length;
diff --git a/ui/org.eclipse.pde.genericeditor.extension/src/org/eclipse/pde/internal/genericeditor/target/extension/autocomplete/processors/AttributeValueCompletionProcessor.java b/ui/org.eclipse.pde.genericeditor.extension/src/org/eclipse/pde/internal/genericeditor/target/extension/autocomplete/processors/AttributeValueCompletionProcessor.java
index bc4bae1..57e6838 100644
--- a/ui/org.eclipse.pde.genericeditor.extension/src/org/eclipse/pde/internal/genericeditor/target/extension/autocomplete/processors/AttributeValueCompletionProcessor.java
+++ b/ui/org.eclipse.pde.genericeditor.extension/src/org/eclipse/pde/internal/genericeditor/target/extension/autocomplete/processors/AttributeValueCompletionProcessor.java
@@ -15,7 +15,7 @@
import org.eclipse.jface.text.contentassist.CompletionProposal;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
-import org.eclipse.pde.internal.genericeditor.target.extension.autocomplete.VersionProposal;
+import org.eclipse.pde.internal.genericeditor.target.extension.autocomplete.InstallableUnitProposal;
import org.eclipse.pde.internal.genericeditor.target.extension.model.ITargetConstants;
import org.eclipse.pde.internal.genericeditor.target.extension.model.LocationNode;
import org.eclipse.pde.internal.genericeditor.target.extension.model.RepositoryCache;
@@ -50,7 +50,8 @@
UnitNode node = rootNode.getEnclosingUnit(offset);
- if (acKey.equalsIgnoreCase(ITargetConstants.UNIT_ID_ATTR)) {
+ boolean replaceId = false;
+ if (ITargetConstants.UNIT_ID_ATTR.equalsIgnoreCase(acKey)) {
if (node != null) {
LocationNode location = node.getParent();
String repoLocation = location.getRepositoryLocation();
@@ -63,13 +64,14 @@
return getInformativeProposal();
}
List<UnitNode> units = cache.getUnitsByPrefix(repoLocation, prefix);
- return convertToProposals(units);
+ replaceId = !("".equals(node.getId()));//$NON-NLS-1$
+ return convertToProposals(units, replaceId);
}
}
- boolean replace = false;
- if (acKey.equalsIgnoreCase(ITargetConstants.UNIT_VERSION_ATTR)) {
+ boolean replaceVersion = false;
+ if (ITargetConstants.UNIT_VERSION_ATTR.equalsIgnoreCase(acKey)) {
if (node != null) {
LocationNode location = node.getParent();
String repoLocation = location.getRepositoryLocation();
@@ -83,8 +85,8 @@
}
List<UnitNode> byPrefix = cache.getUnitsByPrefix(repoLocation, node.getId());
List<String> versions = byPrefix.get(0).getAvailableVersions();
- replace = !("".equals(node.getVersion()));//$NON-NLS-1$
- return convertToVersionProposals(versions, replace);
+ replaceVersion = !("".equals(node.getVersion()));//$NON-NLS-1$
+ return convertToVersionProposals(versions, replaceVersion);
}
}
@@ -114,18 +116,17 @@
continue;
}
- ICompletionProposal proposal = new VersionProposal(version, offset, prefix.length(),
+ ICompletionProposal proposal = new InstallableUnitProposal(version, offset, prefix.length(),
replace);
result.add(proposal);
}
return result.toArray(new ICompletionProposal[result.size()]);
}
- private ICompletionProposal[] convertToProposals(List<UnitNode> units) {
+ private ICompletionProposal[] convertToProposals(List<UnitNode> units, boolean replace) {
List<ICompletionProposal> result = new ArrayList<>();
for (UnitNode unit : units) {
- CompletionProposal proposal = new CompletionProposal(unit.getId(), offset - prefix.length(),
- prefix.length(), unit.getId().length() + 1);
+ ICompletionProposal proposal = new InstallableUnitProposal(unit.getId(), offset, prefix.length(), replace);
result.add(proposal);
}
return result.toArray(new ICompletionProposal[result.size()]);