/* * Licensed Materials - Property of Perforce Software, Inc. * © Copyright Perforce Software, Inc. 2014, 2021 * © Copyright IBM Corp. 2009, 2014 * © Copyright ILOG 1996, 2009 * All Rights Reserved. * * Note to U.S. Government Users Restricted Rights: * The Software and Documentation were developed at private expense and * are "Commercial Items" as that term is defined at 48 CFR 2.101, * consisting of "Commercial Computer Software" and * "Commercial Computer Software Documentation", as such terms are * used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4, * as applicable. */ package dnd; //import ilog.views.util.IlvProductUtil; import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.dnd.DnDConstants; import java.awt.dnd.DragSource; import java.awt.dnd.DropTarget; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.ArrayList; import java.util.List; import javax.swing.JButton; import javax.swing.JDesktopPane; import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; import ilog.views.IlvManager; import ilog.views.IlvManagerView; import ilog.views.IlvPoint; import ilog.views.IlvTransformer; import ilog.views.swing.IlvJManagerViewPanel; /* * This example launches a <code>JFrame</code> containing two <code>JInternalFrame</code>. * You can drag and drop <code>IlvGraphic</code> from one frame to another. */ public class DnDExample extends JFrame { private IlvManager mg1; private IlvManager mg2; private boolean main = false; private static List<DnDExample> desktops = new ArrayList<DnDExample>(); public static void main(String[] arg) { // This sample uses JViews Diagrammer features. When deploying an // application that includes this code, you need to be in possession // of a Perforce JViews Diagrammer Deployment license. // IlvProductUtil.DeploymentLicenseRequired( // IlvProductUtil.JViews_Diagrammer_Deployment); // Sun recommends that to put the entire GUI initialization into the // AWT thread SwingUtilities.invokeLater( new Runnable() { Override public void run() { new DnDExample(); } }); } public DnDExample() { super("Drag'n'Drop Sample"); setSize(800,685); addWindowListener(new WindowAdapter() { Override public void windowClosing(WindowEvent e) { DnDExample.this.dispose(); desktops.remove(DnDExample.this); if (desktops.size() == 0 || main) System.exit(0); } }); // Border layout. getContentPane().setLayout(new BorderLayout()); // Toolbar. if (desktops.size() == 0) { main = true; JPanel panel = new JPanel(); panel.setLayout(new FlowLayout(FlowLayout.LEFT)); JButton b1 = new JButton("Open another Drag'n'Drop Desktop"); b1.addActionListener(new ActionListener() { Override public void actionPerformed(ActionEvent e) { desktops.add(new DnDExample()); } }); panel.add(b1); JButton b2 = new JButton("Reset all Drag'n'Drop Desktops"); panel.add(b2); b2.addActionListener(new ActionListener() { Override public void actionPerformed(ActionEvent e) { int size = desktops.size(); for (int i = 0; i < size; i++) desktops.get(i).reset(); } }); getContentPane().add(panel, BorderLayout.NORTH); } desktops.add(this); // Creates the MDI manager. JDesktopPane desktop = new JDesktopPane(); getContentPane().add(desktop, BorderLayout.CENTER); // Creates the <code>JInternalFrame</code> in which we will put // the drag source <code>IlvManagerView</code>. JInternalFrame f1 = new JInternalFrame("Drag an IlvGraphic from this IlvManagerView", true); f1.setBackground(Color.white); // Creates the <code>JInternalFrame</code> in which we will put // the drop target <code>IlvMAnagerView</code>. JInternalFrame f2 = new JInternalFrame("Drop an IlvGraphic on this IlvManagerView", true); f2.setBackground(Color.white); mg1 = new IlvManager(); mg2 = new IlvManager(); // We create here the drag view. IlvManagerView view1 = new IlvManagerView(mg1); view1.setAntialiasing(true); // We create the drop view. IlvManagerView view2 = new IlvManagerView(mg2); view2.setAntialiasing(true); IlvJManagerViewPanel p1 = new IlvJManagerViewPanel(view1); IlvJManagerViewPanel p2 = new IlvJManagerViewPanel(view2); view1.setTransformer(new IlvTransformer(0.75, 0.75, new IlvPoint(0, 0))); view2.setTransformer(new IlvTransformer(0.75, 0.75, new IlvPoint(0, 0))); f1.setBounds(0,0, 488, 360); f2.setBounds(305,260,488, 360); f1.getContentPane().add(p1); f2.getContentPane().add(p2); f1.setVisible(true); f2.setVisible(true); // Loads data to transfer. try { mg1.read("data/data.ivl"); mg2.read("data/data2.ivl"); } catch (Exception ex) { System.err.println("Cannot read data file"); } // We use <code>java.awt.dnd</code> API to create a // <code>GestureRecognizer</code> on the first view. try { // The <code>IlvManagerView</code> is a <code>java.awt.Component</code> // on which we can place a <code>DragGestureRecognizer</code> to // initiate the Drag mechanism. // The <code>DragGestureListener</code> will be of // <code>DragAdapter</code> type. // DragGestureRecognizer dgr = DragSource.getDefaultDragSource(). createDefaultDragGestureRecognizer(view1,DnDConstants.ACTION_COPY_OR_MOVE, new DragAdapter()); } catch (Exception ex) { System.err.println("Cannot initialize DnD on IlvManagerView "); } // We use <code>java.awt.dnd</code> API to place a <code>DropTarget</code> // on the second view. // The <code>DropTargetListener</code> will be of type <code>DropAdapter</code>. DropTarget dt = new DropTarget(view2, DnDConstants.ACTION_COPY_OR_MOVE, new DropAdapter()); dt.setActive(true); desktop.add(f1); desktop.add(f2); setVisible(true); } private void reset() { mg1.deleteAll(true); mg2.deleteAll(true); // Loads data to transfer. try { mg1.read("data/data.ivl"); mg2.read("data/data2.ivl"); } catch (Exception ex) { System.err.println("Cannot read data file"); } } }