IDEA-165329 Can't copy class reference by hitting Ctrl+C in Navigate/Class list

This commit is contained in:
peter
2017-01-19 14:04:22 +01:00
parent 9b6faa61a1
commit a28d278a54
@@ -95,7 +95,6 @@ import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultEditorKit;
import javax.swing.text.PlainDocument;
import java.awt.*;
import java.awt.event.*;
@@ -464,22 +463,8 @@ public abstract class ChooseByNameBase {
myTextFieldPanel.add(caption2Tools);
final ActionMap actionMap = new ActionMap();
actionMap.setParent(myTextField.getActionMap());
actionMap.put(DefaultEditorKit.copyAction, new AbstractAction() {
@Override
public void actionPerformed(@NotNull ActionEvent e) {
if (myTextField.getSelectedText() != null) {
actionMap.getParent().get(DefaultEditorKit.copyAction).actionPerformed(e);
return;
}
final Object chosenElement = getChosenElement();
if (chosenElement instanceof PsiElement) {
CopyReferenceAction.doCopy((PsiElement)chosenElement, myProject);
}
}
});
myTextField.setActionMap(actionMap);
new MyCopyReferenceAction()
.registerCustomShortcutSet(ActionManager.getInstance().getAction(IdeActions.ACTION_COPY).getShortcutSet(), myTextField);
myTextFieldPanel.add(myTextField);
Font editorFont = EditorUtil.getEditorFont();
@@ -1766,4 +1751,16 @@ public abstract class ChooseByNameBase {
public JTextField getTextField() {
return myTextField;
}
private class MyCopyReferenceAction extends DumbAwareAction {
@Override
public void update(AnActionEvent e) {
e.getPresentation().setEnabled(myTextField.getSelectedText() == null && getChosenElement() instanceof PsiElement);
}
@Override
public void actionPerformed(AnActionEvent e) {
CopyReferenceAction.doCopy((PsiElement)getChosenElement(), myProject);
}
}
}