001: /*
002: * Copyright (C) 2005 - 2008 JasperSoft Corporation. All rights reserved.
003: * http://www.jaspersoft.com.
004: *
005: * Unless you have purchased a commercial license agreement from JasperSoft,
006: * the following license terms apply:
007: *
008: * This program is free software; you can redistribute it and/or modify
009: * it under the terms of the GNU General Public License version 2 as published by
010: * the Free Software Foundation.
011: *
012: * This program is distributed WITHOUT ANY WARRANTY; and without the
013: * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
014: * See the GNU General Public License for more details.
015: *
016: * You should have received a copy of the GNU General Public License
017: * along with this program; if not, see http://www.gnu.org/licenses/gpl.txt
018: * or write to:
019: *
020: * Free Software Foundation, Inc.,
021: * 59 Temple Place - Suite 330,
022: * Boston, MA USA 02111-1307
023: *
024: *
025: *
026: *
027: * TreeTransfertHandler.java
028: *
029: * Created on 15 settembre 2004, 2.19
030: *
031: */
032:
033: package it.businesslogic.ireport.data.xml;
034:
035: import it.businesslogic.ireport.JRField;
036: import it.businesslogic.ireport.gui.library.*;
037: import it.businesslogic.ireport.gui.MainFrame;
038: import java.awt.Component;
039: import java.awt.Point;
040: import java.awt.datatransfer.Transferable;
041: import java.awt.dnd.DragSource;
042: import java.awt.dnd.DragSourceDragEvent;
043: import java.awt.dnd.DragSourceMotionListener;
044: import javax.swing.*;
045: import javax.swing.tree.*;
046: import org.w3c.dom.Node;
047:
048: /**
049: *
050: * @author Administrator
051: */
052: public class XMLTreeTransfertHandler extends
053: javax.swing.TransferHandler
054: //iR20 implements DragSourceMotionListener, TimingTarget
055: {
056: XMLFieldMappingEditor xmlEditor = null;
057:
058: public XMLFieldMappingEditor getXmlEditor() {
059: return xmlEditor;
060: }
061:
062: public void setXmlEditor(XMLFieldMappingEditor xmlEditor) {
063: this .xmlEditor = xmlEditor;
064: }
065:
066: /** Creates a new instance of TreeTransfertHandler
067: * @param xmlEditor
068: */
069: public XMLTreeTransfertHandler(XMLFieldMappingEditor xmlEditor) {
070: super ();
071: this .xmlEditor = xmlEditor;
072: }
073:
074: public int getSourceActions(JComponent c) {
075: return COPY_OR_MOVE;
076:
077: }
078:
079: protected Transferable createTransferable(JComponent c) {
080: //iR20 DragSource.getDefaultDragSource().addDragSourceMotionListener(this);
081: //iR20 glassPane = (GhostGlassPane) MainFrame.getMainInstance().getGlassPane();
082: //iR20 glassPane.setImage(imgRect.getImage(), false);
083:
084: if (c instanceof JTree) {
085: JTree tree = (JTree) c;
086: TreePath path = tree.getLeadSelectionPath();
087: DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode) path
088: .getLastPathComponent();
089:
090: JRField field = getXmlEditor().createField(path, true);
091:
092: return new it.businesslogic.ireport.gui.dnd.TransferableObject(
093: field);
094: }
095:
096: return new it.businesslogic.ireport.gui.dnd.TransferableObject(
097: c);
098: }
099:
100: //iR20 GhostGlassPane glassPane = null;
101: //iR20 final public ImageIcon imgRect = new ImageIcon(DockPanel.class.getResource("/it/businesslogic/ireport/icons/palette/rectangle.png"));
102:
103: //iR20 public void dragMouseMoved(DragSourceDragEvent e) {
104: //iR20
105: //iR20 Component c = e.getDragSourceContext().getComponent();
106: //iR20
107: //iR20 if (to == null) {
108: //iR20 to = e.getDragSourceContext().getTrigger().getDragOrigin();
109: //iR20
110: //iR20 //java.awt.event.MouseEvent me = (java.awt.event.MouseEvent)ie;
111: //iR20 //Point p = me.getLocationOnScreen();
112: //iR20 to = SwingUtilities.convertPoint(e.getDragSourceContext().getTrigger().getComponent(), to, glassPane);
113: //iR20 //to.x += 12;
114: //iR20 //to.y -= 2;
115: //iR20 //to = p;
116: //iR20 }
117: //iR20
118: //iR20 Point p = (Point) e.getLocation().clone();
119: //iR20 //SwingUtilities.convertPointToScreen(p, c);
120: //iR20 glassPane.moveImageTo(p);
121: //iR20 if (!glassPane.isVisible())
122: //iR20 {
123: //iR20 glassPane.setVisible(true);
124: //iR20 }
125: //iR20 }
126:
127: //iR20 public void exportDone(JComponent source, Transferable data, int action) {
128: //iR20
129: //iR20 DragSource.getDefaultDragSource().removeDragSourceMotionListener(this);
130: //iR20 boolean accepted = (action != NONE);
131: //iR20 from = glassPane.getPoint();
132: //iR20 glassPane.setAccepted( accepted );
133: //iR20 new TimingController(300, this).start();
134: //iR20
135: //iR20 }
136:
137: //iR20 Point from;
138: //iR20 Point to;
139: //iR20
140: //iR20 public void begin() {
141: //iR20
142: //iR20 }
143:
144: //iR20 public void end() {
145: //iR20 from = null;
146: //iR20 to = null;
147: //iR20 glassPane.setImage(null, false);
148: //iR20 }
149:
150: //iR20 public void timingEvent(long l, long l0, float f) {
151: //iR20
152: //iR20 if (glassPane.isAccepted()) {
153: //iR20
154: //iR20 glassPane.moveImageTo( glassPane.getPoint(), f);
155: //iR20 } else {
156: //iR20 Point newP = new Point();
157: //iR20 newP.x = from.x + (int)((to.x - from.x) * f);
158: //iR20 newP.y = from.y + (int)((to.y - from.y) * f);
159: //iR20 glassPane.moveImageTo(newP, f);
160: //iR20 }
161: //iR20 }
162:
163: }
|