1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
/*
* Copyright (c) 2005, David Benson
*
* See LICENSE file in distribution for licensing details of this source file
*/
package com.jgraph.example.fastgraph;
import java.io.Serializable;
import org.jgraph.graph.CellView;
import org.jgraph.graph.CellViewFactory;
import org.jgraph.graph.EdgeView;
import org.jgraph.graph.GraphModel;
import org.jgraph.graph.PortView;
import org.jgraph.graph.VertexView;
/**
* The implementation of a cell view factory that allows for ports also being
* vertices
*/
public class FastCellViewFactory implements CellViewFactory, Serializable {
/**
* Constructs a view for the specified cell and associates it with the
* specified object using the specified CellMapper. This calls refresh on
* the created CellView to create all dependent views.
* <p>
* Note: The mapping needs to be available before the views of child cells
* and ports are created.
* <b>Note: This method must return new instances!</b>
*
* @param cell
* reference to the object in the model
*/
public CellView createView(GraphModel model, Object cell) {
CellView view = null;
if (model.isPort(cell))
view = createPortView(cell);
else if (model.isEdge(cell))
view = createEdgeView(cell);
else
view = createVertexView(cell);
return view;
}
/**
* Constructs an EdgeView view for the specified object.
*/
protected EdgeView createEdgeView(Object cell) {
return new FastEdgeView(cell);
}
/**
* Constructs a PortView view for the specified object.
*/
protected PortView createPortView(Object cell) {
return new FastPortView(cell);
}
/**
* Constructs a VertexView view for the specified object.
*/
protected VertexView createVertexView(Object cell) {
if (cell instanceof FastCircleCell) {
return new FastCircleView(cell);
} else {
return new FastVertexView(cell);
}
}
}
|