All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jgraph.graph.GraphTransferable Maven / Gradle / Ivy

The newest version!
/*
 * @(#)GraphTransferable.java	1.0 03-JUL-04
 * 
 * Copyright (c) 2001-2004 Gaudenz Alder
 *  
 */
package org.jgraph.graph;

import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.ClipboardOwner;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.geom.Rectangle2D;
import java.io.Serializable;
import java.util.Map;

import org.jgraph.plaf.basic.BasicGraphTransferable;

/**
 * An object that represents the clipboard contents for a graph selection.
 * The object has three representations:
 * 

* 1. Richer: The cells, view attributes and connections for this selection are * stored as separate datastructures, which can be inserted using * the GraphModel.insert() method. * 2. HTML: If one cell is selected, the userObject is returned as HTML. * 3. Plain: The userObject of the selected cell is returned as plain text. * * @author Gaudenz Alder * @version 1.0 1/1/02 * */ public class GraphTransferable extends BasicGraphTransferable implements Serializable, ClipboardOwner { /** Local Machine Reference Data Flavor. */ public static DataFlavor dataFlavor; /** Selected cells. */ protected Object[] cells; /** Object that describes the connection between cells. */ protected ConnectionSet cs; /** Object that describes the group structure between cells. */ protected ParentMap pm; /** (Cell, Map) entries that hold the view attributes for the cells. */ protected Map attributeMap; /** Rectangle that defines the former bounds of the views. */ protected Rectangle2D bounds; /** * Constructs a new transferable selection for cells, * csand attrMap. */ public GraphTransferable( Object[] cells, Map attrMap, Rectangle2D bounds, ConnectionSet cs, ParentMap pm) { attributeMap = attrMap; this.bounds = bounds; this.cells = cells; this.cs = cs; this.pm = pm; } /** * Returns the cells that represent the selection. */ public Object[] getCells() { return cells; } /** * Returns the connections between cells (and possibly * other, unselected cells). */ public ConnectionSet getConnectionSet() { return cs; } public ParentMap getParentMap() { return pm; } /** * Returns a map of (GraphCell, Map)-pairs that represent the * view attributes for the respecive cells. */ public Map getAttributeMap() { return attributeMap; } public Rectangle2D getBounds() { return bounds; } // from ClipboardOwner public void lostOwnership(Clipboard clip, Transferable contents) { // do nothing } // --- Richer ---------------------------------------------------------- /** * Returns the jvm-localreference flavors of the transferable. */ public DataFlavor[] getRicherFlavors() { return new DataFlavor[] { dataFlavor }; } /** * Fetch the data in a jvm-localreference format. */ public Object getRicherData(DataFlavor flavor) throws UnsupportedFlavorException { if (flavor.equals(dataFlavor)) return this; else throw new UnsupportedFlavorException(flavor); } // --- Plain ---------------------------------------------------------- /** * Returns true if the transferable support a text/plain format. */ public boolean isPlainSupported() { return (cells != null && cells.length == 1); } /** * Fetch the data in a text/plain format. */ public String getPlainData() { if (cells[0] instanceof DefaultGraphCell) { Object obj = ((DefaultGraphCell) cells[0]).getUserObject(); if (obj != null) return obj.toString(); } return cells[0].toString(); } // --- HTML --------------------------------------------------------- /** * Returns true if the transferable support a text/html format. */ public boolean isHTMLSupported() { return isPlainSupported(); } /** * Fetch the data in a text/html format. */ public String getHTMLData() { StringBuffer buf = new StringBuffer(); buf.append("

"); buf.append(getPlainData()); buf.append("

"); return buf.toString(); } /* Local Machine Reference Data Flavor. */ static { DataFlavor localDataFlavor; try { localDataFlavor = new DataFlavor( DataFlavor.javaJVMLocalObjectMimeType + "; class=org.jgraph.graph.GraphTransferable"); } catch (ClassNotFoundException cnfe) { localDataFlavor = null; } dataFlavor = localDataFlavor; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy