/* * (c) 2005-2009 Carlos G�mez Rodr�guez, todos los derechos reservados / all rights reserved. * Licencia en license/bsd.txt / License in license/bsd.txt * */ package org.f2o.absurdum.puck.gui.clipboard; import java.awt.Component; import java.awt.KeyboardFocusManager; import java.awt.Window; import java.awt.event.ActionEvent; import javax.swing.text.DefaultEditorKit; import javax.swing.text.JTextComponent; import org.f2o.absurdum.puck.gui.CopyNodeAction; import org.f2o.absurdum.puck.gui.CutNodeAction; import org.f2o.absurdum.puck.gui.PuckFrame; import org.f2o.absurdum.puck.gui.graph.GraphEditingPanel; import org.jedit.syntax.JEditTextArea; public class CopyAction extends DefaultEditorKit.CopyAction { public CopyAction() { super(); } public void actionPerformed ( ActionEvent e ) { KeyboardFocusManager kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager(); Component focusOwner = kfm.getPermanentFocusOwner(); if ( focusOwner instanceof JTextComponent ) { super.actionPerformed(e); } else //not cut from a standard text comp. { if ( focusOwner != null ) { if ( focusOwner instanceof JEditTextArea ) { JEditTextArea jta = (JEditTextArea) focusOwner; jta.copy(); } else { //no text component, and no jedit text area? well, let's try to cut from the graph editing panel then Window w = kfm.getFocusedWindow(); if ( w instanceof PuckFrame ) { PuckFrame pf = (PuckFrame) w; GraphEditingPanel gep = pf.getGraphEditingPanel(); new CopyNodeAction(gep.getSelectedNode(), gep).actionPerformed(e); } } } } } }