// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea
// Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com
// Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology
// Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/
package graphtea.graph;
import graphtea.graph.graph.AbstractGraphRenderer;
import graphtea.graph.graph.FastRenderer;
import graphtea.graph.graph.GraphModel;
import graphtea.platform.core.BlackBoard;
import javax.swing.*;
import java.awt.*;
/**
* A Swing Graph component which can be used easily to show graphs,
* note that the resulting component will not have any editing capabilities,
* The Events (GraphEvent, VertexEvent, EdgeEvent) will be sent to blackboard and
* can be used from there.
* <p/>
* you should attach the relating actions (e.g. AddVertex, AddEdge, ...) to blackboard
* to have the editing.
*
* @author azin azadi
* @see graphtea.graph.event.GraphEvent
*/
public class JGraph extends JScrollPane {
private static final long serialVersionUID = -500431952321243220L;
private AbstractGraphRenderer view;
public JGraph(GraphModel g, AbstractGraphRenderer view) {
super(view);
this.g = g;
this.view = view;
view.setGraph(g);
}
public void scrollRectToVisible(Rectangle aRect) {
super.scrollRectToVisible(aRect);
}
public GraphModel getGraph() {
return g;
}
public AbstractGraphRenderer getGraphView() {
return view;
}
GraphModel g;
static int i = 0;
public static JGraph getNewComponent(BlackBoard b) {
GraphModel model = new GraphModel();
AbstractGraphRenderer view = new FastRenderer(model, b);
model.setLabel("G" + (i++));
return new JGraph(model, view);
}
public AbstractGraphRenderer getView() {
return view;
}
/*
* http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6333318 jscrollpane bug
*/
}