List of usage examples for org.eclipse.jdt.core.dom.rewrite ITrackedNodePosition ITrackedNodePosition
ITrackedNodePosition
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; }