Example usage for org.eclipse.jdt.core.dom.rewrite ITrackedNodePosition ITrackedNodePosition

List of usage examples for org.eclipse.jdt.core.dom.rewrite ITrackedNodePosition ITrackedNodePosition

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.dom.rewrite ITrackedNodePosition ITrackedNodePosition.

Prototype

ITrackedNodePosition

Source Link

Usage

From source file:org.eclipse.objectteams.otdt.internal.ui.text.correction.PrecedenceProposalSubProcessor.java

License:Open Source License

/**
 * Create the edits for a new precedence declaration.
 * Also add the option to swap the order.
 * If 'useFullStringAlternatives' is true, the two alternatives
 * are provided as two strings comprising a full precedence declaration each.
 * Otherwise the keyword 'precedence' is used as an anchor for a "menu"
 * showing one option: "> Swap Order". 
 * //w  w  w .  ja  v a2s.c o  m
 * @param targetType
 * @param label   display label for this proposal.
 * @param callin1 name of one callin binding
 * @param callin2 name of the other callin binding
 * @param useFullStringAlternatives who to support setting the precedence order.
 * @return the proposal
 */
@SuppressWarnings("unchecked")
private LinkedCorrectionProposal getPrecedenceProposal(TypeDeclaration targetType, String label, String callin1,
        String callin2, boolean isAfter, boolean linkLabel1, boolean linkLabel2) {
    ChildListPropertyDescriptor precedenceProperty;
    if (targetType instanceof RoleTypeDeclaration)
        precedenceProperty = RoleTypeDeclaration.PRECEDENCE_PROPERTY;
    else
        precedenceProperty = TypeDeclaration.PRECEDENCE_PROPERTY;
    ListRewrite listRewrite = this.rewrite.getListRewrite(targetType, precedenceProperty);
    PrecedenceDeclaration newPrecedence = ast.newPrecedenceDeclaration();
    Name element1 = ast.newName(callin1);
    Name element2 = ast.newName(callin2);
    newPrecedence.elements().add(element1);
    newPrecedence.elements().add(element2);
    if (isAfter)
        newPrecedence.setAfter(true);
    listRewrite.insertLast(newPrecedence, null);
    MyLinkedCorrectionProposal proposal = new MyLinkedCorrectionProposal(label, this.cu, this.rewrite, 10,
            ImageManager.getSharedInstance().get(ImageConstants.CALLINBINDING_REPLACE_IMG));

    if (callin1 != null && callin2 != null) {
        if (!linkLabel1 && !linkLabel2) {
            String prefix = isAfter ? "precedence after " : "precedence "; //$NON-NLS-1$ //$NON-NLS-2$
            // setup two alternatives (different order):
            proposal.addLinkedPosition(this.rewrite.track(newPrecedence), false, KEY_PRECEDENCE);
            proposal.addLinkedPositionProposal(KEY_PRECEDENCE, prefix + callin1 + ", " + callin2 + ";", //$NON-NLS-1$ //$NON-NLS-2$ 
                    null);
            proposal.addLinkedPositionProposal(KEY_PRECEDENCE, prefix + callin2 + ", " + callin1 + ";", //$NON-NLS-1$ //$NON-NLS-2$
                    null);
        } else {
            // setup a "menu":
            final ITrackedNodePosition precedencePosition = this.rewrite.track(newPrecedence);
            ITrackedNodePosition swapPosition = new ITrackedNodePosition() {
                public int getLength() {
                    return "precedence".length(); //$NON-NLS-1$
                }

                public int getStartPosition() {
                    return precedencePosition.getStartPosition();
                }
            };
            proposal.addLinkedPosition(swapPosition, false, KEY_PRECEDENCE);
            LinkedProposalPositionGroup positionGroup = proposal.getLinkedProposalModel()
                    .getPositionGroup(KEY_PRECEDENCE, true);
            positionGroup
                    .addProposal(new StringLinkedModeProposal(CorrectionMessages.OTQuickfix_swapordermenu_label,
                            CorrectionMessages.OTQuickfix_swapordermenu_description));
            positionGroup.addProposal(new SwapPrecedencesProposal());

            // prepare elements of this precedence to be linked with the (editable) callin labels.
            if (linkLabel1)
                proposal.addLinkedPosition(this.rewrite.track(element1), false, KEY_LABEL1);
            if (linkLabel2)
                proposal.addLinkedPosition(this.rewrite.track(element2), false, KEY_LABEL2);
        }
    }
    return proposal;
}

From source file:org.springframework.ide.eclipse.quickfix.jdt.proposals.AddPathVariableCompletionProposal.java

License:Open Source License

@Override
protected ASTRewrite getRewrite() throws CoreException {
    CompilationUnit astRoot = ASTResolving.findParentCompilationUnit(methodDecl);
    final ASTRewrite astRewrite = ASTRewrite.create(astRoot.getAST());

    AST ast = astRewrite.getAST();/*  w w  w  .j  av  a  2 s.c  o  m*/

    String importName = PathVariable.class.getCanonicalName();
    if (!ProposalCalculatorUtil.containsImport(getCompilationUnit(), importName)) {
        ImportRewrite importRewrite = createImportRewrite(astRoot);
        importRewrite.addImport(importName);
    }

    SingleMemberAnnotation annotation = ast.newSingleMemberAnnotation();
    annotation.setTypeName(ast.newSimpleName("PathVariable"));
    StringLiteral pathVariableName = ast.newStringLiteral();
    pathVariableName.setLiteralValue(variable.getVariableName());
    annotation.setValue(pathVariableName);

    astRewrite.getListRewrite(param, SingleVariableDeclaration.MODIFIERS2_PROPERTY).insertFirst(annotation,
            null);

    final ITrackedNodePosition literalPosition = astRewrite.track(variable.getNode());
    addLinkedPosition(new ITrackedNodePosition() {

        public int getStartPosition() {
            return literalPosition.getStartPosition() + variable.getOffsetFromNode();
        }

        public int getLength() {
            return variable.getVariableName().length();
        }
    }, true, "PathVariable");

    addLinkedPosition(new StringLiteralTrackedPosition(astRewrite.track(pathVariableName)), false,
            "PathVariable");

    return astRewrite;
}

From source file:org.springframework.ide.eclipse.quickfix.jdt.proposals.AddPathVariableParameterCompletionProposal.java

License:Open Source License

@Override
protected ASTRewrite getRewrite() throws CoreException {
    CompilationUnit astRoot = ASTResolving.findParentCompilationUnit(methodDecl);
    ASTRewrite astRewrite = ASTRewrite.create(astRoot.getAST());

    AST ast = astRewrite.getAST();//from  w  ww.jav a  2s.c  o m

    String importName = PathVariable.class.getCanonicalName();
    if (!ProposalCalculatorUtil.containsImport(getCompilationUnit(), importName)) {
        ImportRewrite importRewrite = createImportRewrite(astRoot);
        importRewrite.addImport(importName);
    }

    addLinkedPosition(new ITrackedNodePosition() {

        public int getStartPosition() {
            return variable.getOffset();
        }

        public int getLength() {
            return variable.getVariableName().length();
        }
    }, true, "variableName");

    SingleVariableDeclaration paramDecl = ast.newSingleVariableDeclaration();

    SimpleType variableType = ast.newSimpleType(ast.newSimpleName("String"));
    paramDecl.setType(variableType);
    addLinkedPosition(astRewrite.track(variableType), false, "variableType");

    SimpleName variableName = ast.newSimpleName(variable.getVariableName());
    paramDecl.setName(variableName);
    addLinkedPosition(astRewrite.track(variableName), false, "variableName");

    SingleMemberAnnotation annotation = ast.newSingleMemberAnnotation();
    annotation.setTypeName(ast.newSimpleName("PathVariable"));

    StringLiteral pathVariableName = ast.newStringLiteral();
    pathVariableName.setLiteralValue(variable.getVariableName());
    annotation.setValue(pathVariableName);
    addLinkedPosition(new StringLiteralTrackedPosition(astRewrite.track(pathVariableName)), false,
            "variableName");

    ListRewrite listRewrite = astRewrite.getListRewrite(paramDecl,
            SingleVariableDeclaration.MODIFIERS2_PROPERTY);
    listRewrite.insertFirst(annotation, null);

    listRewrite = astRewrite.getListRewrite(methodDecl, MethodDeclaration.PARAMETERS_PROPERTY);
    listRewrite.insertLast(paramDecl, null);

    return astRewrite;
}

From source file:org.springframework.ide.eclipse.quickfix.jdt.proposals.ClassCompletionProposal.java

License:Open Source License

@Override
protected ASTRewrite getRewrite() throws CoreException {
    setupASTNodes();//from  w w w. j  a  v  a 2s  .c om

    AST ast = annotation.getAST();
    ASTRewrite rewrite = ASTRewrite.create(ast);

    if (oldLiteral == null) {
        return rewrite;
    }

    SimpleName typeName = ast.newSimpleName(className);
    SimpleType type = ast.newSimpleType(typeName);
    TypeLiteral typeLiteral = ast.newTypeLiteral();
    typeLiteral.setType(type);
    final ITrackedNodePosition newValuePosition = rewrite.track(typeLiteral);

    rewrite.replace(oldLiteral, typeLiteral, null);

    if (packageFragment != null) {
        ImportRewrite importRewrite = createImportRewrite(ASTResolving.findParentCompilationUnit(oldLiteral));
        importRewrite.addImport(packageFragment.getElementName() + "." + className);
    }

    setTrackPosition(new ITrackedNodePosition() {

        public int getStartPosition() {
            return newValuePosition.getStartPosition() + newValuePosition.getLength();
        }

        public int getLength() {
            return 0;
        }
    });

    return rewrite;
}