Package de.FBEditor

Source Code of de.FBEditor.CutAndPastePopup

package de.FBEditor;

import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.ClipboardOwner;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;

import javax.swing.JComponent;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.text.JTextComponent;

/**
* Rightclick menu
*
*/
public class CutAndPastePopup extends JComponent implements ClipboardOwner {

  public CutAndPastePopup(ActionListen action) {
   
    popupMenu = new JPopupMenu();
    popupMenu.setLabel(FBEdit.getMessage("menu.edit"));
   
    // hier noch nicht implementiert
    // revert = new JMenuItem("Rückgängig");
    cut = new JMenuItem(FBEdit.getMessage("menu.cut"));
    copy = new JMenuItem(FBEdit.getMessage("menu.copy"));
    insert = new JMenuItem(FBEdit.getMessage("menu.insert"));
    delete = new JMenuItem(FBEdit.getMessage("menu.delete"));
    markall = new JMenuItem(FBEdit.getMessage("menu.markall"));
   
    clipbd  = getToolkit().getSystemClipboard();
    // undoManager = fbedit.getUndoManager();

    cut.setActionCommand("cut");
    copy.setActionCommand("copy");
    insert.setActionCommand("insert");
    delete.setActionCommand("delete");
    markall.setActionCommand("markall");
   
    cut.addActionListener(action);
    copy.addActionListener(action);
    insert.addActionListener(action);
    delete.addActionListener(action);
    markall.addActionListener(action);
   
    // revert.addActionListener(this);
    // revert.setEnabled(false);
    // popupMenu.add(revert);
    // popupMenu.addSeparator();
   
    popupMenu.add(cut);
    popupMenu.add(copy);
    popupMenu.add(insert);
    popupMenu.add(delete);
    popupMenu.addSeparator();
    popupMenu.add(markall);
  }

  public void updateMenu() {
    if (source.getSelectedText() != null) {
      copy.setEnabled(true);
      cut.setEnabled(true);
      delete.setEnabled(true);
    } else {
      copy.setEnabled(false);
      cut.setEnabled(false);
      delete.setEnabled(false);
    }
    if (clipbd.getContents(this) != null)
      insert.setEnabled(true);
    else
      insert.setEnabled(false);
    // revert.setEnabled(undoManager.canUndo());
  }

  public void lostOwnership(Clipboard c, Transferable t) {
    selection = null;
  }
 
  public void updateSource(JTextComponent source) {
    this.source = source;
  }

  public void cut() {
    selection = source.getSelectedText();
    StringSelection clipString = new StringSelection(selection);
    clipbd.setContents(clipString, clipString);
    source.replaceSelection("");
    /* updateMenu(); */
  }

  public void copy() {
    selection = source.getSelectedText();
    StringSelection clipString = new StringSelection(selection);
    clipbd.setContents(clipString, clipString);
    /* updateMenu(); */
  }

  public void markall() {
    source.setSelectionStart(0);
    source.setSelectionEnd(source.getDocument().getLength());
    /* updateMenu(); */
  }

  public void paste() {
    Transferable clipData = clipbd.getContents(this);
    try {
      String clipString = (String) clipData.getTransferData(DataFlavor.stringFlavor);
      source.replaceSelection(clipString);
      /* updateMenu(); */
    } catch (Exception ex) {
      System.out.println("not String flavor");
    }
  }

  public void delete() {
    selection = source.getSelectedText();
    source.replaceSelection("");
    /* updateMenu(); */
  }

  public JPopupMenu getPopupMenu() {
    return popupMenu;
  }

  private static final long serialVersionUID = 1L;
  private static JPopupMenu popupMenu;
  private Clipboard clipbd;
  private String selection;
  JMenuItem revert;
  JMenuItem cut;
  JMenuItem copy;
  JMenuItem insert;
  JMenuItem delete;
  JMenuItem markall;
  JTextComponent source;
  // CompoundUndoManager undoManager;
}
TOP

Related Classes of de.FBEditor.CutAndPastePopup

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.