01: // TransferableResourceCell.java
02: // $Id: TransferableResourceCell.java,v 1.3 2000/08/16 21:37:31 ylafon Exp $
03: // (c) COPYRIGHT MIT, INRIA and Keio, 1999.
04: // Please first read the full copyright statement in file COPYRIGHT.html
05:
06: package org.w3c.jigadmin.editors;
07:
08: import java.awt.datatransfer.Transferable;
09: import java.awt.datatransfer.DataFlavor;
10: import java.awt.datatransfer.UnsupportedFlavorException;
11:
12: import java.io.ByteArrayInputStream;
13: import java.io.IOException;
14:
15: /**
16: * The transferable ResourceCell
17: * @see org.w3c.jigadmin.editors.ResourceCell
18: * @version $Revision: 1.3 $
19: * @author Benoît Mahé (bmahe@w3.org)
20: */
21: public class TransferableResourceCell implements Transferable {
22:
23: final static int CELL = 0;
24: final static int STRING = 1;
25: final static int PLAIN_TEXT = 2;
26:
27: final public static DataFlavor RESOURCE_CELL_FLAVOR = new DataFlavor(
28: ResourceCell.class, "Resource Cell");
29:
30: static DataFlavor flavors[] = { RESOURCE_CELL_FLAVOR,
31: DataFlavor.stringFlavor, DataFlavor.plainTextFlavor };
32:
33: private ResourceCell data = null;
34:
35: /**
36: * Constructor
37: * @param data The ResourceCell
38: */
39: public TransferableResourceCell(ResourceCell data) {
40: this .data = data;
41: }
42:
43: /**
44: * Returns an array of DataFlavor objects indicating the flavors the
45: * data can be provided in. The array should be ordered according to
46: * preference for providing the data (from most richly descriptive to
47: * least descriptive).
48: * @return an array of data flavors in which this data can be transferred
49: */
50: public DataFlavor[] getTransferDataFlavors() {
51: return flavors;
52: }
53:
54: /**
55: * Returns whether or not the specified data flavor is supported for
56: * this object.
57: * @param flavor the requested flavor for the data
58: * @return boolean indicating wether or not the data flavor is supported
59: */
60: public boolean isDataFlavorSupported(DataFlavor flavor) {
61: boolean returnValue = false;
62: for (int i = 0, n = flavors.length; i < n; i++) {
63: if (flavor.equals(flavors[i])) {
64: returnValue = true;
65: break;
66: }
67: }
68: return returnValue;
69: }
70:
71: /**
72: * Returns an object which represents the data to be transferred.
73: * The class of the object returned is defined by the representation
74: * class of the flavor.
75: * @param flavor the requested flavor for the data
76: * @return an object which represents the data to be transferred
77: * @exception IOException if the data is no longer available in the
78: * requested flavor.
79: * @exception UnsupportedFlavorException if the requested data flavor
80: * is not supported.
81: */
82: public Object getTransferData(DataFlavor flavor)
83: throws UnsupportedFlavorException, IOException {
84: Object returnObject;
85: if (flavor.equals(flavors[CELL])) {
86: returnObject = data;
87: } else if (flavor.equals(flavors[STRING])) {
88: returnObject = data.toString();
89: } else if (flavor.equals(flavors[PLAIN_TEXT])) {
90: String string = data.toString();
91: returnObject = new ByteArrayInputStream(string.getBytes());
92: } else {
93: throw new UnsupportedFlavorException(flavor);
94: }
95: return returnObject;
96: }
97:
98: }
|