Package org.eclipse.wst.sse.core.internal.provisional.text

Examples of org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion


    int documentPosition = context.getInvocationOffset();

    ContentAssistRequest contentAssistRequest = null;
    String regionType = completionRegion.getType();
    IStructuredDocumentRegion sdRegion = getStructuredDocumentRegion(documentPosition);

    // Handle the most common and best supported cases
    if ((xmlnode.getNodeType() == Node.ELEMENT_NODE)
        || (xmlnode.getNodeType() == Node.DOCUMENT_NODE)) {
      if (regionType == DOMRegionContext.XML_TAG_OPEN) {
        contentAssistRequest = computeTagOpenProposals(matchString,
            completionRegion, treeNode, xmlnode, context);
      } else if (regionType == DOMRegionContext.XML_TAG_NAME) {
        contentAssistRequest = computeTagNameProposals(matchString,
            completionRegion, treeNode, xmlnode, context);
      } else if (regionType == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) {
        contentAssistRequest = computeAttributeProposals(matchString,
            completionRegion, treeNode, xmlnode, context);
      } else if (regionType == DOMRegionContext.XML_TAG_ATTRIBUTE_EQUALS) {
        contentAssistRequest = computeEqualsProposals(matchString,
            completionRegion, treeNode, xmlnode, context);
      } else if ((regionType == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE)
          && (documentPosition == sdRegion.getTextEndOffset())
          && (sdRegion.getText(completionRegion).endsWith("\"") || sdRegion.getText(completionRegion).endsWith("\'"))) { //$NON-NLS-1$ //$NON-NLS-2$
        // this is for when the cursor is at the end of the closing
        // quote for an attribute..
        IDOMNode actualNode = (IDOMNode) xmlnode.getModel()
            .getIndexedRegion(
                sdRegion.getStartOffset(completionRegion));
        contentAssistRequest = new ContentAssistRequest(actualNode,
            actualNode, sdRegion, completionRegion,
            documentPosition, 0, matchString);
        addTagCloseProposals(contentAssistRequest, context);
      } else if (regionType == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
        contentAssistRequest = computeAttributeValueProposals(
            matchString, completionRegion, treeNode, xmlnode,
            context);
      } else if ((regionType == DOMRegionContext.XML_TAG_CLOSE)
          || (regionType == DOMRegionContext.XML_EMPTY_TAG_CLOSE)
          || (regionType
              .equals(DOMJSPRegionContextsPrivateCopy.JSP_DIRECTIVE_CLOSE))) {

        contentAssistRequest = computeTagCloseProposals(matchString,
            completionRegion, treeNode, xmlnode, context);
      } else if (regionType == DOMRegionContext.XML_END_TAG_OPEN) {
        contentAssistRequest = computeEndTagOpenProposals(matchString,
            completionRegion, treeNode, xmlnode, context);
      } else if ((regionType == DOMRegionContext.XML_CONTENT)
          || (regionType == DOMRegionContext.XML_CHAR_REFERENCE)
          || (regionType == DOMRegionContext.XML_ENTITY_REFERENCE)
          || (regionType == DOMRegionContext.XML_PE_REFERENCE)) {
        contentAssistRequest = computeContentProposals(matchString,
            completionRegion, treeNode, xmlnode, context);
      }

      // These ITextRegion types begin DOM Elements as well and although
      // internally harder to assist,
      // text insertions directly before them can be made
      else if ((documentPosition == sdRegion
          .getStartOffset(completionRegion))
          && (regionType
              .equals(DOMJSPRegionContextsPrivateCopy.JSP_COMMENT_OPEN)
              || regionType
                  .equals(DOMJSPRegionContextsPrivateCopy.JSP_DECLARATION_OPEN)
              || regionType
                  .equals(DOMJSPRegionContextsPrivateCopy.JSP_DIRECTIVE_OPEN)
              || regionType
                  .equals(DOMJSPRegionContextsPrivateCopy.JSP_EXPRESSION_OPEN)
              || regionType
                  .equals(DOMJSPRegionContextsPrivateCopy.JSP_SCRIPTLET_OPEN)
              || (regionType == DOMRegionContext.XML_DECLARATION_OPEN)
              || (regionType == DOMRegionContext.XML_PI_OPEN)
              || (regionType == DOMRegionContext.XML_COMMENT_OPEN) || (regionType == DOMRegionContext.XML_CDATA_OPEN))) {

        contentAssistRequest = new ContentAssistRequest(treeNode,
            xmlnode.getParentNode(), sdRegion, completionRegion,
            documentPosition, 0, matchString);
        addTagInsertionProposals(contentAssistRequest,
            getElementPosition(treeNode), context);
        addStartDocumentProposals(contentAssistRequest, context);
      }
    }
    // Not a Document or Element? (odd cases go here for now)
    else if (isCloseRegion(completionRegion)) {
      contentAssistRequest = new ContentAssistRequest(treeNode,
          xmlnode.getParentNode(), sdRegion, completionRegion,
          sdRegion.getStartOffset(completionRegion)
              + completionRegion.getLength(), 0, matchString);
      addStartDocumentProposals(contentAssistRequest, context);
      if (documentPosition >= sdRegion.getTextEndOffset(completionRegion)) {
        addTagInsertionProposals(contentAssistRequest,
            getElementPosition(treeNode) + 1, context);
      }
    } else if ((documentPosition == sdRegion
        .getStartOffset(completionRegion))
        && (regionType
            .equals(DOMJSPRegionContextsPrivateCopy.JSP_COMMENT_OPEN)
            || regionType
                .equals(DOMJSPRegionContextsPrivateCopy.JSP_DECLARATION_OPEN)
View Full Code Here


      CompletionProposalInvocationContext context) {

    int documentPosition = context.getInvocationOffset();
    ITextViewer viewer = context.getViewer();
    ContentAssistRequest contentAssistRequest = null;
    IStructuredDocumentRegion sdRegion = getStructuredDocumentRegion(documentPosition);
    // 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);
    } else {
      // Setup to replace an existing attribute name
      contentAssistRequest = new ContentAssistRequest(nodeAtOffset, node,
          sdRegion, completionRegion,
          sdRegion.getStartOffset(completionRegion),
          completionRegion.getTextLength(), matchString);
    }
    addAttributeNameProposals(contentAssistRequest, context);
    contentAssistRequest.setReplacementBeginPosition(documentPosition);
    contentAssistRequest.setReplacementLength(0);
View Full Code Here

      CompletionProposalInvocationContext context) {

    int documentPosition = context.getInvocationOffset();

    ContentAssistRequest contentAssistRequest = null;
    IStructuredDocumentRegion sdRegion = getStructuredDocumentRegion(documentPosition);
    if ((documentPosition > sdRegion.getStartOffset(completionRegion)
        + completionRegion.getTextLength())
        && (sdRegion.getStartOffset(completionRegion)
            + completionRegion.getTextLength() != sdRegion
            .getStartOffset(completionRegion)
            + completionRegion.getLength())) {
      // setup to add a new attribute at the documentPosition
      IDOMNode actualNode = (IDOMNode) node.getModel().getIndexedRegion(
          sdRegion.getStartOffset(completionRegion));
      contentAssistRequest = new ContentAssistRequest(actualNode,
          actualNode, sdRegion, completionRegion, documentPosition,
          0, matchString);
      addAttributeNameProposals(contentAssistRequest, context);
      if ((actualNode.getFirstStructuredDocumentRegion() != null)
          && !actualNode.getFirstStructuredDocumentRegion().isEnded()) {
        addTagCloseProposals(contentAssistRequest, context);
      }
    } else {
      // setup to replace the existing value
      if (!nodeAtOffset.getFirstStructuredDocumentRegion().isEnded()
          && (documentPosition < sdRegion
              .getStartOffset(completionRegion))) {
        // if the IStructuredDocumentRegion isn't closed and the
        // cursor is in front of the value, add
        contentAssistRequest = new ContentAssistRequest(nodeAtOffset,
            node, sdRegion, completionRegion, documentPosition, 0,
            matchString);
        addAttributeNameProposals(contentAssistRequest, context);
      } else {
        int replaceLength = completionRegion.getTextLength();

        // if container region, be sure replace length is only the
        // attribute value region not the entire container
        if (completionRegion instanceof ITextRegionContainer) {
          ITextRegion openRegion = ((ITextRegionContainer) completionRegion)
              .getFirstRegion();
          ITextRegion closeRegion = ((ITextRegionContainer) completionRegion)
              .getLastRegion();

          /*
           * check to see if the container is opened the same way its
           * closed. Such as: <img src=' ' But not: <img src='
           *
           * </body> </html> In the latter case we only want to
           * replace the opening text of the container Admittedly
           * crude test, but effective.
           */
          if (openRegion.getType() != closeRegion.getType()) {
            replaceLength = openRegion.getTextLength();
          }
        }

        contentAssistRequest = new ContentAssistRequest(nodeAtOffset,
            node, sdRegion, completionRegion,
            sdRegion.getStartOffset(completionRegion),
            replaceLength, matchString);

        addAttributeValueProposals(contentAssistRequest, context);
      }
    }
View Full Code Here

      ITextRegion completionRegion, IDOMNode nodeAtOffset, IDOMNode node,
      CompletionProposalInvocationContext context) {

    int documentPosition = context.getInvocationOffset();
    ContentAssistRequest contentAssistRequest = null;
    IStructuredDocumentRegion sdRegion = getStructuredDocumentRegion(documentPosition);
    int completionRegionStart = sdRegion.getStartOffset(completionRegion);
    int completionRegionLength = completionRegion.getLength();
    IStructuredDocumentRegion sdRegionAtCompletionOffset = node
        .getStructuredDocument().getRegionAtCharacterOffset(
            completionRegionStart + completionRegionLength);
    ITextRegion regionAtEndOfCompletion = sdRegionAtCompletionOffset
        .getRegionAtCharacterOffset(completionRegionStart
            + completionRegionLength);

    if ((documentPosition != completionRegionStart)
        && (regionAtEndOfCompletion != null)
View Full Code Here

      ITextRegion completionRegion, IDOMNode nodeAtOffset, IDOMNode node,
      CompletionProposalInvocationContext context) {

    int documentPosition = context.getInvocationOffset();
    ContentAssistRequest contentAssistRequest = null;
    IStructuredDocumentRegion sdRegion = getStructuredDocumentRegion(documentPosition);
    System.out.println(sdRegion.toString());
    ITextRegion valueRegion = node.getStartStructuredDocumentRegion()
        .getRegionAtCharacterOffset(
            sdRegion.getStartOffset(completionRegion)
                + completionRegion.getLength());
    if ((valueRegion != null)
        && (valueRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE)
        && (sdRegion.getStartOffset(valueRegion) <= documentPosition)) {
      // replace the adjacent attribute value
      contentAssistRequest = new ContentAssistRequest(nodeAtOffset, node,
          sdRegion, valueRegion,
          sdRegion.getStartOffset(valueRegion),
          valueRegion.getTextLength(), matchString);
    } else {
      // append an attribute value after the '='
      contentAssistRequest = new ContentAssistRequest(nodeAtOffset, node,
          sdRegion, completionRegion, documentPosition, 0,
View Full Code Here

   */
  public String getData() {
    if (this.data != null)
      return this.data;

    IStructuredDocumentRegion flatNode = getFirstStructuredDocumentRegion();
    if (flatNode == null)
      return NodeImpl.EMPTY_STRING;
    ITextRegionList regions = flatNode.getRegions();
    if (regions == null)
      return NodeImpl.EMPTY_STRING;

    ITextRegion targetRegion = null;
    ITextRegion dataRegion = null;
    ITextRegion closeRegion = null;
    Iterator e = regions.iterator();
    while (e.hasNext()) {
      ITextRegion region = (ITextRegion) e.next();
      String regionType = region.getType();
      if (regionType == DOMRegionContext.XML_PI_OPEN)
        continue;
      if (regionType == DOMRegionContext.XML_PI_CLOSE) {
        closeRegion = region;
      }
      else {
        if (targetRegion == null)
          targetRegion = region;
        else if (dataRegion == null)
          dataRegion = region;
      }
    }
    if (dataRegion == null)
      return NodeImpl.EMPTY_STRING;
    int offset = dataRegion.getStart();
    int end = flatNode.getLength();
    if (closeRegion != null)
      end = closeRegion.getStart();
    String source = flatNode.getText();
    return source.substring(offset, end);
  }
View Full Code Here

      ITextRegion completionRegion, IDOMNode nodeAtOffset, IDOMNode node,
      CompletionProposalInvocationContext context) {

    int documentPosition = context.getInvocationOffset();
    ContentAssistRequest contentAssistRequest = null;
    IStructuredDocumentRegion sdRegion = getStructuredDocumentRegion(documentPosition);

    if ((node.getNodeType() == Node.DOCUMENT_NODE)
        || (documentPosition >= sdRegion.getEndOffset())) {
      // this is a content request as the documentPosition is AFTER the
      // end of the closing region
      if ((node == nodeAtOffset) && (node.getParentNode() != null)) {
        node = (IDOMNode) node.getParentNode();
      }
      contentAssistRequest = new ContentAssistRequest(nodeAtOffset, node,
          sdRegion, completionRegion, documentPosition, 0,
          matchString);
      addTagInsertionProposals(contentAssistRequest,
          getElementPosition(nodeAtOffset), context);
      if ((node.getNodeType() != Node.DOCUMENT_NODE)
          && (node.getEndStructuredDocumentRegion() == null)) {
        addEndTagProposals(contentAssistRequest, context);
      }
    } else {
      // at the start of the tag's close or within it
      ITextRegion closeRegion = sdRegion.getLastRegion();
      boolean insideTag = !sdRegion.isEnded()
          || (documentPosition <= sdRegion
              .getStartOffset(closeRegion));
      if (insideTag) {
        // this is a request for completions within a tag
        contentAssistRequest = new ContentAssistRequest(nodeAtOffset,
            node, sdRegion, completionRegion, documentPosition, 0,
View Full Code Here

  }

  /**
   */
  public boolean isClosed() {
    IStructuredDocumentRegion flatNode = getStructuredDocumentRegion();
    if (flatNode == null)
      return true; // will be generated
    String regionType = StructuredDocumentRegionUtil.getLastRegionType(flatNode);
    return (regionType == DOMRegionContext.XML_PI_CLOSE);
  }
View Full Code Here

      ITextRegion completionRegion, IDOMNode nodeAtOffset, IDOMNode node,
      CompletionProposalInvocationContext context) {

    int documentPosition = context.getInvocationOffset();
    ContentAssistRequest contentAssistRequest = null;
    IStructuredDocumentRegion sdRegion = getStructuredDocumentRegion(documentPosition);

    if (sdRegion != nodeAtOffset.getFirstStructuredDocumentRegion()) {
      // completing the *first* tag in "<tagname1 |<tagname2"
      IDOMNode actualNode = (IDOMNode) node.getModel().getIndexedRegion(
          sdRegion.getStartOffset(completionRegion));
      if (actualNode != null) {
        if (actualNode.getFirstStructuredDocumentRegion() == sdRegion) {
          // start tag
          if (documentPosition > sdRegion
              .getStartOffset(completionRegion)
              + completionRegion.getLength()) {
            // it's attributes
            contentAssistRequest = new ContentAssistRequest(
                actualNode, actualNode, sdRegion,
                completionRegion, documentPosition
                    - matchString.length(),
                matchString.length(), matchString);
            if (node.getStructuredDocument()
                .getRegionAtCharacterOffset(
                    sdRegion.getStartOffset(completionRegion) - 1)
                .getRegionAtCharacterOffset(
                    sdRegion.getStartOffset(completionRegion) - 1)
                .getType() == DOMRegionContext.XML_TAG_OPEN) {
              addAttributeNameProposals(contentAssistRequest,
                  context);
            }
            addTagCloseProposals(contentAssistRequest, context);
          } else {
            // it's name
            contentAssistRequest = new ContentAssistRequest(
                actualNode, actualNode.getParentNode(),
                sdRegion, completionRegion, documentPosition
                    - matchString.length(),
                matchString.length(), matchString);
            addTagNameProposals(contentAssistRequest,
                getElementPosition(actualNode), context);
          }
        } else {
          if (documentPosition >= sdRegion
              .getStartOffset(completionRegion)
              + completionRegion.getLength()) {
            // insert name
            contentAssistRequest = new ContentAssistRequest(
                actualNode, actualNode.getParentNode(),
                sdRegion, completionRegion, documentPosition,
                0, matchString);
          } else {
            // replace name
            contentAssistRequest = new ContentAssistRequest(
                actualNode, actualNode.getParentNode(),
                sdRegion, completionRegion,
                sdRegion.getStartOffset(completionRegion),
                completionRegion.getTextLength(), matchString);
          }
          addEndTagNameProposals(contentAssistRequest, context);
        }
      }
    } else {
      if (documentPosition > sdRegion.getStartOffset(completionRegion)
          + completionRegion.getTextLength()) {
        // unclosed tag with only a name; should prompt for attributes
        // and a close instead
        contentAssistRequest = new ContentAssistRequest(nodeAtOffset,
            node, sdRegion, completionRegion, documentPosition
                - matchString.length(), matchString.length(),
            matchString);
        addAttributeNameProposals(contentAssistRequest, context);
        addTagCloseProposals(contentAssistRequest, context);
      } else {
        if (sdRegion.getRegions().get(0).getType() != DOMRegionContext.XML_END_TAG_OPEN) {
          int replaceLength = documentPosition
              - sdRegion.getStartOffset(completionRegion);
          contentAssistRequest = new ContentAssistRequest(node,
              node.getParentNode(), sdRegion, completionRegion,
              sdRegion.getStartOffset(completionRegion),
              replaceLength, matchString);
          addTagNameProposals(contentAssistRequest,
              getElementPosition(nodeAtOffset), context);
        } else {
          IDOMNode actualNode = (IDOMNode) node.getModel()
              .getIndexedRegion(documentPosition);
          if (actualNode != null) {
            if (documentPosition >= sdRegion
                .getStartOffset(completionRegion)
                + completionRegion.getTextLength()) {
              contentAssistRequest = new ContentAssistRequest(
                  actualNode, actualNode.getParentNode(),
                  sdRegion, completionRegion,
                  documentPosition, 0, matchString);
            } else {
              contentAssistRequest = new ContentAssistRequest(
                  actualNode, actualNode.getParentNode(),
                  sdRegion, completionRegion,
                  sdRegion.getStartOffset(completionRegion),
                  completionRegion.getTextLength(),
                  matchString);
            }
            addEndTagNameProposals(contentAssistRequest, context);
          }
View Full Code Here

      ITextRegion completionRegion, IDOMNode nodeAtOffset, IDOMNode node,
      CompletionProposalInvocationContext context) {

    int documentPosition = context.getInvocationOffset();
    ContentAssistRequest contentAssistRequest = null;
    IStructuredDocumentRegion sdRegion = getStructuredDocumentRegion(documentPosition);
    if (sdRegion != nodeAtOffset.getFirstStructuredDocumentRegion()
        || sdRegion.getPrevious() != null
        && sdRegion.getPrevious().getLastRegion().getType() == DOMRegionContext.XML_TAG_OPEN) {
      // completing the *first* XML_TAG_OPEN in "<<tagname"
      IDOMNode actualNode = (IDOMNode) node.getModel().getIndexedRegion(
          sdRegion.getStartOffset(completionRegion));
      if (actualNode != null) {
        if (sdRegion.getFirstRegion().getType() == DOMRegionContext.XML_END_TAG_OPEN) {
          contentAssistRequest = new ContentAssistRequest(actualNode,
              actualNode, sdRegion, completionRegion,
              documentPosition, 0, matchString);
          if (actualNode.hasChildNodes())
            addTagNameProposals(contentAssistRequest,
                getElementPosition(actualNode.getLastChild()),
                context);
          else
            addTagNameProposals(contentAssistRequest, 0, context);
        } else {
          contentAssistRequest = new ContentAssistRequest(actualNode,
              actualNode.getParentNode(), sdRegion,
              completionRegion, documentPosition, 0, matchString);
          addTagNameProposals(contentAssistRequest,
              getElementPosition(actualNode), context);
        }
        addEndTagProposals(contentAssistRequest, context); // (pa)
                                  // 220850
      }
    } else {
      if (documentPosition == sdRegion.getStartOffset(completionRegion)) {
        if (node.getNodeType() == Node.ELEMENT_NODE) {
          // at the start of an existing tag, right before the '<'
          contentAssistRequest = new ContentAssistRequest(
              nodeAtOffset, node.getParentNode(), sdRegion,
              completionRegion, documentPosition, 0, matchString);
          addTagInsertionProposals(contentAssistRequest,
              getElementPosition(nodeAtOffset), context);
          addEndTagProposals(contentAssistRequest, context);
        } else if (node.getNodeType() == Node.DOCUMENT_NODE) {
          // at the opening of the VERY first tag with a '<'
          contentAssistRequest = new ContentAssistRequest(
              nodeAtOffset, node.getParentNode(), sdRegion,
              completionRegion,
              sdRegion.getStartOffset(completionRegion),
              completionRegion.getTextLength(), matchString);
          addStartDocumentProposals(contentAssistRequest, context);
        }
      } else {
        // within the white space
        ITextRegion name = getNameRegion(node
            .getStartStructuredDocumentRegion());
        // (pa) ITextRegion refactor
        // if (name != null && name.containsOffset(documentPosition))
        // {
        if ((name != null)
            && ((sdRegion.getStartOffset(name) <= documentPosition) && (sdRegion
                .getEndOffset(name) >= documentPosition))
            && (sdRegion.getLastRegion().getType() == DOMRegionContext.XML_TAG_CLOSE || sdRegion
                .getLastRegion().getType() == DOMRegionContext.XML_EMPTY_TAG_CLOSE)) {

          // replace the existing name
          contentAssistRequest = new ContentAssistRequest(node,
              node.getParentNode(), sdRegion, completionRegion,
              sdRegion.getStartOffset(name),
              name.getTextLength(), matchString);
        } else {
          // insert a valid new name, or possibly an end tag
          contentAssistRequest = new ContentAssistRequest(
              nodeAtOffset,
View Full Code Here

TOP

Related Classes of org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.