package com.redhat.ceylon.eclipse.code.correct; import static com.redhat.ceylon.eclipse.code.refactor.RenameLinkedMode.useLinkedMode; 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.Tree; import com.redhat.ceylon.eclipse.code.editor.CeylonEditor; import com.redhat.ceylon.eclipse.code.refactor.EnterAliasLinkedMode; import com.redhat.ceylon.eclipse.code.refactor.EnterAliasRefactoringAction; import com.redhat.ceylon.eclipse.util.Highlights; import com.redhat.ceylon.model.typechecker.model.Declaration; class RenameAliasProposal implements ICompletionProposal, ICompletionProposalExtension6 { private final Tree.Alias alias; private final Declaration dec; private final CeylonEditor editor; private RenameAliasProposal(Tree.Alias alias, Declaration dec, CeylonEditor editor) { this.alias = alias; this.dec = dec; this.editor = editor; } @Override public void apply(IDocument document) { if (useLinkedMode()) { new EnterAliasLinkedMode(editor).start(); } else { new EnterAliasRefactoringAction(editor).run(); } } static void addRenameAliasProposal(Tree.ImportMemberOrType imt, Collection<ICompletionProposal> proposals, CeylonEditor editor) { if (imt!=null) { Declaration dec = imt.getDeclarationModel(); Tree.Alias a = imt.getAlias(); if (dec!=null && a!=null) { proposals.add(new RenameAliasProposal(a, dec, editor)); } } } @Override public StyledString getStyledDisplayString() { String hint = CorrectionUtil.shortcut( "com.redhat.ceylon.eclipse.ui.action.enterAlias"); return Highlights.styleProposal(getDisplayString(), false) .append(hint, StyledString.QUALIFIER_STYLER); } @Override public Point getSelection(IDocument document) { return null; } @Override public String getAdditionalProposalInfo() { return null; } @Override public String getDisplayString() { return "Rename alias '" + alias.getIdentifier().getText() + "' of '" + dec.getName() + "'"; } @Override public Image getImage() { return RENAME; } @Override public IContextInformation getContextInformation() { return null; } }