Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornsandonato2010-08-25 17:30:08 +0000
committernsandonato2010-08-25 17:30:08 +0000
commit7627d701de085f3054f9062fa41561d208c094dc (patch)
tree21ee6d66993ff66a27bcc09dbbceaf86cd1a74ff /bundles/org.eclipse.wst.xml.ui
parentaf37efbcb28c6959035153da01220e841df51ab0 (diff)
downloadwebtools.sourceediting-7627d701de085f3054f9062fa41561d208c094dc.tar.gz
webtools.sourceediting-7627d701de085f3054f9062fa41561d208c094dc.tar.xz
webtools.sourceediting-7627d701de085f3054f9062fa41561d208c094dc.zip
[323264] Content assist next to attribute name replaces that name
Diffstat (limited to 'bundles/org.eclipse.wst.xml.ui')
-rw-r--r--bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/AbstractXMLCompletionProposalComputer.java5
-rw-r--r--bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/AbstractXMLModelQueryCompletionProposalComputer.java17
2 files changed, 15 insertions, 7 deletions
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/AbstractXMLCompletionProposalComputer.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/AbstractXMLCompletionProposalComputer.java
index eba5b95b03..dd21a18a85 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/AbstractXMLCompletionProposalComputer.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/AbstractXMLCompletionProposalComputer.java
@@ -478,10 +478,11 @@ public abstract class AbstractXMLCompletionProposalComputer implements ICompleti
IDOMNode nodeAtOffset, IDOMNode node, CompletionProposalInvocationContext context) {
int documentPosition = context.getInvocationOffset();
-
+ ITextViewer viewer = context.getViewer();
ContentAssistRequest contentAssistRequest = null;
IStructuredDocumentRegion sdRegion = getStructuredDocumentRegion(documentPosition);
- if (documentPosition < sdRegion.getStartOffset(completionRegion)) {
+ // if the attribute name is selected, replace it instead of creating a new attribute
+ if (documentPosition <= sdRegion.getStartOffset(completionRegion) && (viewer != null && viewer.getSelectedRange().y != (sdRegion.getEndOffset(completionRegion) - sdRegion.getStartOffset(completionRegion)))) {
// setup to insert new attributes
contentAssistRequest = new ContentAssistRequest(nodeAtOffset, node, sdRegion, completionRegion, documentPosition, 0, matchString);
}
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/AbstractXMLModelQueryCompletionProposalComputer.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/AbstractXMLModelQueryCompletionProposalComputer.java
index dfc47dd4e8..e5eced0f16 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/AbstractXMLModelQueryCompletionProposalComputer.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/contentassist/AbstractXMLModelQueryCompletionProposalComputer.java
@@ -133,20 +133,25 @@ public abstract class AbstractXMLModelQueryCompletionProposalComputer extends Ab
addModelQueryAttributeDeclarations(node, elementDecl,attributes);
String matchString = contentAssistRequest.getMatchString();
-
+ int cursorOffset = context.getInvocationOffset();
// check whether an attribute really exists for the replacement
// offsets AND if it possesses a value
boolean attrAtLocationHasValue = false;
+ boolean proposalNeedsSpace = false;
NamedNodeMap attrs = node.getAttributes();
for (int i = 0; i < attrs.getLength(); i++) {
AttrImpl existingAttr = (AttrImpl) attrs.item(i);
ITextRegion name = existingAttr.getNameRegion();
-
+
if ((sdRegion.getStartOffset(name) <= contentAssistRequest.getReplacementBeginPosition()) &&
(sdRegion.getStartOffset(name) + name.getLength() >= contentAssistRequest.getReplacementBeginPosition() + contentAssistRequest.getReplacementLength()) &&
(existingAttr.getValueRegion() != null)) {
-
- attrAtLocationHasValue = true;
+ // selected region is attribute name
+ if (cursorOffset >= sdRegion.getStartOffset(name) && contentAssistRequest.getReplacementLength() != 0)
+ attrAtLocationHasValue = true;
+ // propose new attribute, cursor is at the start of another attribute name
+ else if (cursorOffset == sdRegion.getStartOffset(name))
+ proposalNeedsSpace = true;
break;
}
}
@@ -170,7 +175,7 @@ public abstract class AbstractXMLModelQueryCompletionProposalComputer extends Ab
// matches against the full name of an existing Attr
showAttribute = showAttribute && ((attr == null) ||
((nameRegion != null) &&
- (sdRegion.getStartOffset(nameRegion) <=
+ (sdRegion.getStartOffset(nameRegion) <
contentAssistRequest.getReplacementBeginPosition()) &&
(sdRegion.getStartOffset(nameRegion) + nameRegion.getLength() >=
(contentAssistRequest.getReplacementBeginPosition() +
@@ -213,6 +218,8 @@ public abstract class AbstractXMLModelQueryCompletionProposalComputer extends Ab
else {
proposedText = getRequiredText(node, attrDecl);
}
+ if (proposalNeedsSpace)
+ proposedText += " "; //$NON-NLS-1$
proposal = new CustomCompletionProposal(proposedText,
contentAssistRequest.getReplacementBeginPosition(),
contentAssistRequest.getReplacementLength(),

Back to the top