在RCP Password Gate中,用户可以复制节点的密码,此功能将密码复制到操作系统的剪贴板中,方便用户粘贴到别的需要添入密码的控件中。
实现这个功能是用了一个Action,在Action中复制信息到系统剪切板中。
ClipboardCopyAction.java
|
01 public abstract class ClipboardCopyAction extends SelectionProviderAction { 02 03 public ClipboardCopyAction(ISelectionProvider provider) { 04 super(provider, null); 05 setImageDescriptor(ImageShop.getDescriptor("copy")); 06 } 07 08 public void selectionChanged(IStructuredSelection selection) { 09 boolean enable = false; 10 if (selection.size() == 1) { 11 Object o = selection.getFirstElement(); 12 if (o instanceof Record) { 13 enable = true; 14 } 15 } 16 setEnabled(enable); 17 } 18 19 public void run() { 20 Clipboard cb = new Clipboard(Display.getCurrent()); 21 try { 22 String textData = getTextData(); 23 TextTransfer textTransfer = TextTransfer.getInstance(); 24 cb.setContents(new Object[] { textData }, 25 new Transfer[] { textTransfer }); 26 } catch (IOException ex) { 27 PwdgatePlugin.log("copy to clipboard", ex); 28 } 29 } 30 31 public abstract String getTextData() throws IOException; 32 33 } |
Row 22,取到要复制的文字信息,R23-25,将文字复制到系统剪切板中。复制的内容有此类的子类提供。