Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Myra WebTools - ClipboardPopupMenu.java

ClipboardPopupMenu.java

Caricato da: Ht-never
Scarica il programma completo

  1. import java.awt.*;
  2. import java.awt.datatransfer.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5. import javax.swing.border.*;
  6. import javax.swing.text.*;
  7.  
  8. @SuppressWarnings("unused")
  9. public class ClipboardPopupMenu extends MouseAdapter {
  10.  
  11.   private Clipboard clipBoard;
  12.   private JPopupMenu popup;
  13.   private JTextComponent textComponent;
  14.   private JMenuItem copy;
  15.   private JMenuItem paste;
  16.   private JMenuItem clear;
  17.   private JMenuItem cut;
  18.   private TransferHandler handler;
  19.  
  20.   public ClipboardPopupMenu(JTextComponent textComponent) {
  21.     popup = new JPopupMenu();
  22.     Toolkit toolkit = Toolkit.getDefaultToolkit();
  23.     clipBoard = Toolkit.getDefaultToolkit().getSystemClipboard();
  24.     this.textComponent = textComponent;
  25.     handler = textComponent.getTransferHandler();
  26.     createMenu();
  27.   }
  28.  
  29.   protected void createMenu() {
  30.     copy = new JMenuItem("Copy");
  31.     paste = new JMenuItem("Paste");
  32.     cut = new JMenuItem("Cut");
  33.     clear = new JMenuItem("Clear");
  34.   }
  35.  
  36.   public void addPasteFunction() {
  37.     paste.addActionListener(new ActionListener() {
  38.       public void actionPerformed(ActionEvent e) {
  39.         Transferable clipboardContent = clipBoard.getContents(this);
  40.         if(clipboardContent!=null &&
  41.           (clipboardContent.isDataFlavorSupported (DataFlavor.stringFlavor))) {
  42.             try {
  43.               textComponent.setText(textComponent.getText()+clipboardContent.getTransferData(DataFlavor.stringFlavor));
  44.             }catch(Exception ex) {}
  45.           }
  46.         }
  47.     });
  48.     popup.add(paste);
  49.   }
  50.  
  51.   public void addCopyFunction() {
  52.     copy.addActionListener(new ActionListener() {
  53.       public void actionPerformed(ActionEvent e) {
  54.         handler.exportToClipboard(textComponent, clipBoard, TransferHandler.COPY);
  55.       }
  56.     });
  57.     popup.add(copy);
  58.   }
  59.   public void addClearFunction() {
  60.     popup.addSeparator();
  61.     popup.add(clear);
  62.   }
  63.  
  64.   public void addCutFunction() {
  65.     cut.addActionListener(new ActionListener() {
  66.       public void actionPerformed(ActionEvent e) {
  67.         handler.exportToClipboard(textComponent, clipBoard, TransferHandler.MOVE);
  68.       }
  69.     });
  70.     popup.add(cut);
  71.   }
  72.  
  73.   public void addPasteFunction(String nameItem) {
  74.    paste.setText(nameItem);
  75.    addPasteFunction();
  76.   }
  77.  
  78.   public void addCopyFunction(String nameItem) {
  79.     copy.setText(nameItem);
  80.     addCopyFunction();
  81.   }
  82.  
  83.   public void addClearFunction(String nameItem) {
  84.     clear.setText(nameItem);
  85.     addClearFunction();
  86.   }
  87.  
  88.   public void addCutFunction(String menuItem) {
  89.     cut.setText(menuItem);
  90.     addCutFunction();
  91.   }
  92.  
  93.   public void mousePressed(MouseEvent e) {
  94.     showPopup(e);
  95.   }
  96.  
  97.   public void mouseReleased(MouseEvent e) {
  98.     showPopup(e);
  99.   }
  100.  
  101.   private void showPopup(MouseEvent e) {
  102.      if (e.isPopupTrigger()) {
  103.         if(textComponent.getText().length()==0) {
  104.           copy.setEnabled(false);
  105.           cut.setEnabled(false);
  106.         } else {
  107.           copy.setEnabled(true);
  108.           copy.setEnabled(true);
  109.         }
  110.         popup.show(e.getComponent(), e.getX(), e.getY());
  111.      }
  112.   }
  113.  
  114.   public JPopupMenu getPopup() {
  115.     return popup;
  116.   }
  117.  
  118.   public static ClipboardPopupMenu installForComponent(JTextComponent c) {
  119.      ClipboardPopupMenu cpb = new ClipboardPopupMenu(c);
  120.      c.addMouseListener(cpb);
  121.      return cpb;
  122.   }
  123.   public static ClipboardPopupMenu install(JTextComponent c) {
  124.              ClipboardPopupMenu cpb = new ClipboardPopupMenu(c);
  125.              c.addMouseListener(cpb);
  126.              return cpb;
  127.   }
  128.   public static ClipboardPopupMenu parsePopupMenu(ClipboardPopupMenu pop) {
  129.             pop.addCopyFunction("Copia");
  130.             pop.addCutFunction("Taglia");
  131.             pop.addPasteFunction("Incolla");
  132.             pop.addClearFunction("Clear");
  133.             return pop;
  134.   }
  135. }