01: /*
02: * Copyright 2001-2006 C:1 Financial Services GmbH
03: *
04: * This software is free software; you can redistribute it and/or
05: * modify it under the terms of the GNU Lesser General Public
06: * License Version 2.1, as published by the Free Software Foundation.
07: *
08: * This software is distributed in the hope that it will be useful,
09: * but WITHOUT ANY WARRANTY; without even the implied warranty of
10: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11: * Lesser General Public License for more details.
12: *
13: * You should have received a copy of the GNU Lesser General Public
14: * License along with this library; if not, write to the Free Software
15: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
16: */
17:
18: package de.finix.contelligent.client.util.dnd;
19:
20: import java.awt.datatransfer.DataFlavor;
21: import java.awt.datatransfer.Transferable;
22: import java.awt.datatransfer.UnsupportedFlavorException;
23: import java.io.IOException;
24: import java.util.logging.Level;
25: import java.util.logging.Logger;
26:
27: import com.hexidec.ekit.component.MainPane;
28:
29: import de.finix.contelligent.client.base.ContelligentComponent;
30: import de.finix.contelligent.client.gui.View;
31:
32: public class SingleComponentTransferable implements Transferable {
33:
34: private static Logger logger = Logger
35: .getLogger(SingleComponentTransferable.class.getName());
36:
37: public static DataFlavor componentFlavor = new DataFlavor(
38: ContelligentComponent.class, "ContelligentComponent");
39: public static DataFlavor sourceEnvironmentFlavor = new DataFlavor(
40: "text/environment", "SourceEnvironment");
41:
42: //public static DataFlavor htmlFlavor = new DataFlavor(SingleComponentTransferable.class, "text/html");
43:
44: private ContelligentComponent component;
45: private String sourceEnvironment;
46:
47: public SingleComponentTransferable(ContelligentComponent component,
48: String sourceEnvironment) {
49: this .component = component;
50: this .sourceEnvironment = sourceEnvironment;
51: }
52:
53: // implementation of transferable interface to support dnd
54: public Object getTransferData(DataFlavor flavor)
55: throws UnsupportedFlavorException, IOException {
56: logger.log(Level.FINE, "Transfer data for flavor "
57: + flavor.getHumanPresentableName() + " requested.");
58: if (flavor.equals(componentFlavor)) {
59: logger.log(Level.FINE, "Return component");
60: return component;
61: } else if (flavor.equals(MainPane.markupFlavor)) {
62: logger.log(Level.FINE, "Return commented-out render tag");
63: return "<!--finix:render path=\"" + component.getPath()
64: + "\"/-->";
65: } else if (flavor.equals(sourceEnvironmentFlavor)) {
66: logger.log(Level.FINE, "Return source environment");
67: return sourceEnvironment;
68: }
69: logger.log(Level.FINE, "Throw flavor not supported exception!");
70: throw new UnsupportedFlavorException(flavor);
71: }
72:
73: public DataFlavor[] getTransferDataFlavors() {
74: logger.log(Level.FINE, "Supported flavors requested");
75: DataFlavor[] dataFlavors = { componentFlavor,
76: MainPane.markupFlavor, sourceEnvironmentFlavor };
77: return dataFlavors;
78: }
79:
80: public boolean isDataFlavorSupported(DataFlavor flavor) {
81: logger.log(Level.FINE, "flavor "
82: + flavor.getHumanPresentableName() + " requested");
83: if (flavor == componentFlavor) {
84: logger.log(Level.FINE, "flavor supported");
85: return true;
86: } else if (flavor == MainPane.markupFlavor) {
87: logger.log(Level.FINE, "flavor supported");
88: return true;
89: } else if (flavor == sourceEnvironmentFlavor) {
90: logger.log(Level.FINE, "flavor supported");
91: return true;
92: }
93: logger.log(Level.FINE, "flavor not supported");
94: return false;
95: }
96:
97: }
|