/** * $Id: mxGraphActions.java,v 1.1 2012/11/15 13:26:46 gaudenz Exp $ * Copyright (c) 2008, Gaudenz Alder */ package com.mxgraph.swing.util; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import com.mxgraph.swing.mxGraphComponent; import com.mxgraph.view.mxGraph; /** * */ public class mxGraphActions { /** * */ static final Action deleteAction = new DeleteAction("delete"); /** * */ static final Action editAction = new EditAction("edit"); /** * */ static final Action groupAction = new GroupAction("group"); /** * */ static final Action ungroupAction = new UngroupAction("ungroup"); /** * */ static final Action removeFromParentAction = new RemoveFromParentAction( "removeFromParent"); /** * */ static final Action updateGroupBoundsAction = new UpdateGroupBoundsAction( "updateGroupBounds"); /** * */ static final Action selectAllAction = new SelectAction("selectAll"); /** * */ static final Action selectVerticesAction = new SelectAction("vertices"); /** * */ static final Action selectEdgesAction = new SelectAction("edges"); /** * */ static final Action selectNoneAction = new SelectAction("selectNone"); /** * */ static final Action selectNextAction = new SelectAction("selectNext"); /** * */ static final Action selectPreviousAction = new SelectAction( "selectPrevious"); /** * */ static final Action selectParentAction = new SelectAction("selectParent"); /** * */ static final Action selectChildAction = new SelectAction("selectChild"); /** * */ static final Action collapseAction = new FoldAction("collapse"); /** * */ static final Action expandAction = new FoldAction("expand"); /** * */ static final Action enterGroupAction = new DrillAction("enterGroup"); /** * */ static final Action exitGroupAction = new DrillAction("exitGroup"); /** * */ static final Action homeAction = new DrillAction("home"); /** * */ static final Action zoomActualAction = new ZoomAction("actual"); /** * */ static final Action zoomInAction = new ZoomAction("zoomIn"); /** * */ static final Action zoomOutAction = new ZoomAction("zoomOut"); /** * */ static final Action toBackAction = new LayerAction("toBack"); /** * */ static final Action toFrontAction = new LayerAction("toFront"); /** * * @return the delete action */ public static Action getDeleteAction() { return deleteAction; } /** * * @return the edit action */ public static Action getEditAction() { return editAction; } /** * * @return the edit action */ public static Action getGroupAction() { return groupAction; } /** * * @return the edit action */ public static Action getUngroupAction() { return ungroupAction; } /** * * @return the edit action */ public static Action getRemoveFromParentAction() { return removeFromParentAction; } /** * * @return the edit action */ public static Action getUpdateGroupBoundsAction() { return updateGroupBoundsAction; } /** * * @return the select all action */ public static Action getSelectAllAction() { return selectAllAction; } /** * * @return the select vertices action */ public static Action getSelectVerticesAction() { return selectVerticesAction; } /** * * @return the select edges action */ public static Action getSelectEdgesAction() { return selectEdgesAction; } /** * * @return the select none action */ public static Action getSelectNoneAction() { return selectNoneAction; } /** * * @return the select next action */ public static Action getSelectNextAction() { return selectNextAction; } /** * * @return the select previous action */ public static Action getSelectPreviousAction() { return selectPreviousAction; } /** * * @return the select parent action */ public static Action getSelectParentAction() { return selectParentAction; } /** * * @return the select child action */ public static Action getSelectChildAction() { return selectChildAction; } /** * * @return the go into action */ public static Action getEnterGroupAction() { return enterGroupAction; } /** * * @return the go up action */ public static Action getExitGroupAction() { return exitGroupAction; } /** * * @return the home action */ public static Action getHomeAction() { return homeAction; } /** * * @return the collapse action */ public static Action getCollapseAction() { return collapseAction; } /** * * @return the expand action */ public static Action getExpandAction() { return expandAction; } /** * * @return the zoom actual action */ public static Action getZoomActualAction() { return zoomActualAction; } /** * * @return the zoom in action */ public static Action getZoomInAction() { return zoomInAction; } /** * * @return the zoom out action */ public static Action getZoomOutAction() { return zoomOutAction; } /** * * @return the action that moves cell(s) to the backmost layer */ public static Action getToBackAction() { return toBackAction; } /** * * @return the action that moves cell(s) to the frontmost layer */ public static Action getToFrontAction() { return toFrontAction; } /** * * @param e * @return Returns the graph for the given action event. */ public static final mxGraph getGraph(ActionEvent e) { Object source = e.getSource(); if (source instanceof mxGraphComponent) { return ((mxGraphComponent) source).getGraph(); } return null; } /** * */ public static class EditAction extends AbstractAction { /** * */ private static final long serialVersionUID = 4610112721356742702L; /** * * @param name */ public EditAction(String name) { super(name); } /** * */ public void actionPerformed(ActionEvent e) { if (e.getSource() instanceof mxGraphComponent) { ((mxGraphComponent) e.getSource()).startEditing(); } } } /** * */ public static class DeleteAction extends AbstractAction { /** * */ private static final long serialVersionUID = -8212339796803275529L; /** * * @param name */ public DeleteAction(String name) { super(name); } /** * */ public void actionPerformed(ActionEvent e) { mxGraph graph = getGraph(e); if (graph != null) { graph.removeCells(); } } } /** * */ public static class GroupAction extends AbstractAction { /** * */ private static final long serialVersionUID = -4718086600089409092L; /** * * @param name */ public GroupAction(String name) { super(name); } /** * */ protected int getGroupBorder(mxGraph graph) { return 2 * graph.getGridSize(); } /** * */ public void actionPerformed(ActionEvent e) { mxGraph graph = getGraph(e); if (graph != null) { graph.setSelectionCell(graph.groupCells(null, getGroupBorder(graph))); } } } /** * */ public static class UngroupAction extends AbstractAction { /** * */ private static final long serialVersionUID = 2247770767961318251L; /** * * @param name */ public UngroupAction(String name) { super(name); } /** * */ public void actionPerformed(ActionEvent e) { mxGraph graph = getGraph(e); if (graph != null) { graph.setSelectionCells(graph.ungroupCells()); } } } /** * */ public static class RemoveFromParentAction extends AbstractAction { /** * */ private static final long serialVersionUID = 7169443038859140811L; /** * * @param name */ public RemoveFromParentAction(String name) { super(name); } /** * */ public void actionPerformed(ActionEvent e) { mxGraph graph = getGraph(e); if (graph != null) { graph.removeCellsFromParent(); } } } /** * */ public static class UpdateGroupBoundsAction extends AbstractAction { /** * */ private static final long serialVersionUID = -4718086600089409092L; /** * * @param name */ public UpdateGroupBoundsAction(String name) { super(name); } /** * */ protected int getGroupBorder(mxGraph graph) { return 2 * graph.getGridSize(); } /** * */ public void actionPerformed(ActionEvent e) { mxGraph graph = getGraph(e); if (graph != null) { graph.updateGroupBounds(null, getGroupBorder(graph)); } } } /** * */ public static class LayerAction extends AbstractAction { /** * */ private static final long serialVersionUID = 562519299806253741L; /** * * @param name */ public LayerAction(String name) { super(name); } /** * */ public void actionPerformed(ActionEvent e) { mxGraph graph = getGraph(e); if (graph != null) { boolean toBack = getValue(Action.NAME).toString() .equalsIgnoreCase("toBack"); graph.orderCells(toBack); } } } /** * */ public static class FoldAction extends AbstractAction { /** * */ private static final long serialVersionUID = 4078517503905239901L; /** * * @param name */ public FoldAction(String name) { super(name); } /** * */ public void actionPerformed(ActionEvent e) { mxGraph graph = getGraph(e); if (graph != null) { boolean collapse = getValue(Action.NAME).toString() .equalsIgnoreCase("collapse"); graph.foldCells(collapse); } } } /** * */ public static class DrillAction extends AbstractAction { /** * */ private static final long serialVersionUID = 5464382323663870291L; /** * * @param name */ public DrillAction(String name) { super(name); } /** * */ public void actionPerformed(ActionEvent e) { mxGraph graph = getGraph(e); if (graph != null) { String name = getValue(Action.NAME).toString(); if (name.equalsIgnoreCase("enterGroup")) { graph.enterGroup(); } else if (name.equalsIgnoreCase("exitGroup")) { graph.exitGroup(); } else { graph.home(); } } } } /** * */ public static class ZoomAction extends AbstractAction { /** * */ private static final long serialVersionUID = -7500195051313272384L; /** * * @param name */ public ZoomAction(String name) { super(name); } /** * */ public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if (source instanceof mxGraphComponent) { String name = getValue(Action.NAME).toString(); mxGraphComponent graphComponent = (mxGraphComponent) source; if (name.equalsIgnoreCase("zoomIn")) { graphComponent.zoomIn(); } else if (name.equalsIgnoreCase("zoomOut")) { graphComponent.zoomOut(); } else { graphComponent.zoomActual(); } } } } /** * */ public static class SelectAction extends AbstractAction { /** * */ private static final long serialVersionUID = 6501585024845668187L; /** * * @param name */ public SelectAction(String name) { super(name); } /** * */ public void actionPerformed(ActionEvent e) { mxGraph graph = getGraph(e); if (graph != null) { String name = getValue(Action.NAME).toString(); if (name.equalsIgnoreCase("selectAll")) { graph.selectAll(); } else if (name.equalsIgnoreCase("selectNone")) { graph.clearSelection(); } else if (name.equalsIgnoreCase("selectNext")) { graph.selectNextCell(); } else if (name.equalsIgnoreCase("selectPrevious")) { graph.selectPreviousCell(); } else if (name.equalsIgnoreCase("selectParent")) { graph.selectParentCell(); } else if (name.equalsIgnoreCase("vertices")) { graph.selectVertices(); } else if (name.equalsIgnoreCase("edges")) { graph.selectEdges(); } else { graph.selectChildCell(); } } } } }