package com.redhat.ceylon.eclipse.code.correct; import static com.redhat.ceylon.compiler.typechecker.tree.TreeUtil.formatPath; import static com.redhat.ceylon.eclipse.ui.CeylonResources.RENAME; import java.util.Collection; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.contentassist.ICompletionProposal; import org.eclipse.jface.text.contentassist.ICompletionProposalExtension6; import org.eclipse.jface.text.contentassist.IContextInformation; import org.eclipse.jface.viewers.StyledString; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; import com.redhat.ceylon.compiler.typechecker.tree.Node; import com.redhat.ceylon.compiler.typechecker.tree.Tree; import com.redhat.ceylon.eclipse.code.editor.CeylonEditor; import com.redhat.ceylon.eclipse.code.refactor.ChangeVersionLinkedMode; import com.redhat.ceylon.eclipse.util.Highlights; class RenameVersionProposal implements ICompletionProposal, ICompletionProposalExtension6 { private final Tree.ModuleDescriptor node; private final CeylonEditor editor; RenameVersionProposal(Tree.ModuleDescriptor node, CeylonEditor editor) { this.node = node; this.editor = editor; } @Override public void apply(IDocument document) { new ChangeVersionLinkedMode(node.getVersion(), node.getImportPath(), editor).start(); } static void addRenameVersionProposals(Node node, Collection<ICompletionProposal> proposals, Tree.CompilationUnit cu, CeylonEditor editor) { for (Tree.ModuleDescriptor md: cu.getModuleDescriptors()) { if (md.getVersion()==node || md==node || md.getImportPath()==node) { proposals.add(new RenameVersionProposal(md, editor)); } } } @Override public StyledString getStyledDisplayString() { return Highlights.styleProposal(getDisplayString(), true); } @Override public Point getSelection(IDocument document) { return null; } @Override public String getAdditionalProposalInfo() { return null; } @Override public String getDisplayString() { return "Change version '" + node.getVersion().getText() + "' of module '" + formatPath(node.getImportPath().getIdentifiers()) + "'"; } @Override public Image getImage() { return RENAME; } @Override public IContextInformation getContextInformation() { return null; } }