package com.mxgraph.examples.swing;
import java.awt.BorderLayout;
import javax.swing.ImageIcon;
import javax.swing.JToolBar;
import javax.swing.UIManager;
import com.mxgraph.examples.swing.editor.BasicGraphEditor;
import com.mxgraph.examples.swing.editor.EditorPalette;
import com.mxgraph.examples.swing.editor.SchemaEditorMenuBar;
import com.mxgraph.examples.swing.editor.SchemaEditorToolBar;
import com.mxgraph.examples.swing.editor.SchemaGraphComponent;
import com.mxgraph.model.mxCell;
import com.mxgraph.model.mxGeometry;
import com.mxgraph.util.mxRectangle;
import com.mxgraph.view.mxCellState;
import com.mxgraph.view.mxGraph;
public class SchemaEditor extends BasicGraphEditor
{
/**
*
*/
private static final long serialVersionUID = -7007225006753337933L;
/**
*
*/
public SchemaEditor()
{
super("mxGraph for JFC/Swing", new SchemaGraphComponent(new mxGraph()
{
/**
* Allows expanding tables
*/
public boolean isCellFoldable(Object cell, boolean collapse)
{
return model.isVertex(cell);
}
})
{
/**
*
*/
private static final long serialVersionUID = -1194463455177427496L;
/**
* Disables folding icons.
*/
public ImageIcon getFoldingIcon(mxCellState state)
{
return null;
}
});
// Creates a single shapes palette
EditorPalette shapesPalette = insertPalette("Schema");
graphOutline.setVisible(false);
mxCell tableTemplate = new mxCell("New Table", new mxGeometry(0, 0,
200, 280), null);
tableTemplate.getGeometry().setAlternateBounds(
new mxRectangle(0, 0, 140, 25));
tableTemplate.setVertex(true);
shapesPalette
.addTemplate(
"Table",
new ImageIcon(
GraphEditor.class
.getResource("/com/mxgraph/examples/swing/images/rectangle.png")),
tableTemplate);
getGraphComponent().getGraph().setCellsResizable(false);
getGraphComponent().setConnectable(false);
getGraphComponent().getGraphHandler().setCloneEnabled(false);
getGraphComponent().getGraphHandler().setImagePreview(false);
// Prefers default JComponent event-handling before mxCellHandler handling
//getGraphComponent().getGraphHandler().setKeepOnTop(false);
mxGraph graph = getGraphComponent().getGraph();
Object parent = graph.getDefaultParent();
graph.getModel().beginUpdate();
try
{
mxCell v1 = (mxCell) graph.insertVertex(parent, null, "Customers",
20, 20, 200, 280);
v1.getGeometry().setAlternateBounds(new mxRectangle(0, 0, 140, 25));
mxCell v2 = (mxCell) graph.insertVertex(parent, null, "Orders",
280, 20, 200, 280);
v2.getGeometry().setAlternateBounds(new mxRectangle(0, 0, 140, 25));
}
finally
{
graph.getModel().endUpdate();
}
}
/**
*
*/
protected void installToolBar()
{
add(new SchemaEditorToolBar(this, JToolBar.HORIZONTAL),
BorderLayout.NORTH);
}
/**
*
* @param args
*/
public static void main(String[] args)
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e1)
{
e1.printStackTrace();
}
SchemaEditor editor = new SchemaEditor();
editor.createFrame(new SchemaEditorMenuBar(editor)).setVisible(true);
}
}