package fenetres.create_act; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.event.ActionEvent; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.io.IOException; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ImageIcon; import javax.swing.JOptionPane; import javax.swing.KeyStroke; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; import MEPTL.commandes; import cXML.node; public class actPaste extends AbstractAction{ /** * */ private static final long serialVersionUID = 1L; { putValue( Action.NAME, "Coller" ); putValue( Action.SMALL_ICON, new ImageIcon( getClass().getResource("/paste.png") ) ); putValue( Action.MNEMONIC_KEY, KeyEvent.VK_V ); putValue( Action.SHORT_DESCRIPTION, "Coller (CTRL+V)" ); putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_DOWN_MASK) ); } @Override public void actionPerformed(ActionEvent e) { String initial = ""; Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard(); String paste; try { paste = "" + c.getContents(null).getTransferData(DataFlavor.stringFlavor).toString().replace("\t","").replace("\r", "").replace("\n", ""); if (!paste.equals(initial)) { node nodCopy = new node(paste); if(!nodCopy.getNomElt().isEmpty()) { TreePath path = fenetres.create.getTree().getSelectionPath(); node nod = (node) fenetres.create.getSelectNode().getUserObject(); DefaultMutableTreeNode nodeMu = fenetres.create.getSelectNode(); nodCopy = MiseInformationDansLeNodeCopierColler(nodCopy,nod); nod.getNodes().add(nodCopy); DefaultMutableTreeNode node1 = new DefaultMutableTreeNode(nodCopy); nodeMu.add(node1); nodeMu = addNodeMutable(nodCopy,node1); DefaultTreeModel model = (DefaultTreeModel) fenetres.create.getTree().getModel(); DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot(); model.reload(root); fenetres.create.getTree().setSelectionPath(path); fenetres.create.getTree().expandPath(path); }else { JOptionPane.showMessageDialog(null, "Le collage n'est pas réalisé."); } } } catch (UnsupportedFlavorException | IOException e1) { JOptionPane.showConfirmDialog(null, e1.toString()); e1.printStackTrace(); } try { Thread.sleep(40); } catch (InterruptedException ex) { } } /** * * @param nodePaste * @param nodeParent * @return */ private static node MiseInformationDansLeNodeCopierColler(node nodePaste, node nodeParent) { nodePaste.setParent(nodeParent); nodePaste.setLevel(nodeParent.getLevel()+1); for(int i=0;i1) { node nodChild = nodePaste.getNodes().get(i); nodChild = MiseAJoutInfoChild(nodChild); } String nameNode = nodePaste.getNomElt(); if(nameNode.equals("text:p")||nameNode.equals("text:h")||nameNode.equals("text:list-item")||nameNode.equals("text:list") ||nameNode.equals("text:span")||nameNode.equals("text:line-break")) { actNewFichierAnalyse.placeIsDoublonInStructure(commandes.sujet.retourneFirstEnfantsByName("structurepage")); } } return nodePaste; } /** * * @param nodChild * @return */ private static node MiseAJoutInfoChild(node nodChild) { for(int i = 0 ; i