Package com.mxgraph.examples.swing.editor

Source Code of com.mxgraph.examples.swing.editor.SchemaEditorMenuBar

package com.mxgraph.examples.swing.editor;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.AbstractAction;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.SwingUtilities;
import javax.swing.TransferHandler;
import javax.swing.UIManager;

import com.mxgraph.examples.swing.editor.EditorActions.BackgroundAction;
import com.mxgraph.examples.swing.editor.EditorActions.BackgroundImageAction;
import com.mxgraph.examples.swing.editor.EditorActions.ExitAction;
import com.mxgraph.examples.swing.editor.EditorActions.GridColorAction;
import com.mxgraph.examples.swing.editor.EditorActions.GridStyleAction;
import com.mxgraph.examples.swing.editor.EditorActions.HistoryAction;
import com.mxgraph.examples.swing.editor.EditorActions.NewAction;
import com.mxgraph.examples.swing.editor.EditorActions.OpenAction;
import com.mxgraph.examples.swing.editor.EditorActions.PageBackgroundAction;
import com.mxgraph.examples.swing.editor.EditorActions.PageSetupAction;
import com.mxgraph.examples.swing.editor.EditorActions.PrintAction;
import com.mxgraph.examples.swing.editor.EditorActions.PromptPropertyAction;
import com.mxgraph.examples.swing.editor.EditorActions.SaveAction;
import com.mxgraph.examples.swing.editor.EditorActions.ScaleAction;
import com.mxgraph.examples.swing.editor.EditorActions.SelectShortestPathAction;
import com.mxgraph.examples.swing.editor.EditorActions.SelectSpanningTreeAction;
import com.mxgraph.examples.swing.editor.EditorActions.StylesheetAction;
import com.mxgraph.examples.swing.editor.EditorActions.ToggleDirtyAction;
import com.mxgraph.examples.swing.editor.EditorActions.ToggleGridItem;
import com.mxgraph.examples.swing.editor.EditorActions.ToggleOutlineItem;
import com.mxgraph.examples.swing.editor.EditorActions.TogglePropertyItem;
import com.mxgraph.examples.swing.editor.EditorActions.ToggleRulersItem;
import com.mxgraph.examples.swing.editor.EditorActions.WarningAction;
import com.mxgraph.examples.swing.editor.EditorActions.ZoomPolicyAction;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.swing.util.mxGraphActions;
import com.mxgraph.util.mxPoint;
import com.mxgraph.util.mxResources;
import com.mxgraph.view.mxGraph;

public class SchemaEditorMenuBar extends JMenuBar
{

  /**
   *
   */
  private static final long serialVersionUID = 6776304509649205465L;

  @SuppressWarnings("serial")
  public SchemaEditorMenuBar(final BasicGraphEditor editor)
  {
    final mxGraphComponent graphComponent = editor.getGraphComponent();
    final mxGraph graph = graphComponent.getGraph();
    JMenu menu = null;
    JMenu submenu = null;

    // Creates the file menu
    menu = add(new JMenu(mxResources.get("file")));

    menu.add(editor.bind(mxResources.get("new"), new NewAction(),
        "/com/mxgraph/examples/swing/images/new.gif"));
    menu.add(editor.bind(mxResources.get("openFile"), new OpenAction(),
        "/com/mxgraph/examples/swing/images/open.gif"));

    menu.addSeparator();

    menu.add(editor.bind(mxResources.get("save"), new SaveAction(false),
        "/com/mxgraph/examples/swing/images/save.gif"));
    menu.add(editor.bind(mxResources.get("saveAs"), new SaveAction(true),
        "/com/mxgraph/examples/swing/images/saveas.gif"));

    menu.addSeparator();

    menu.add(editor.bind(mxResources.get("pageSetup"),
        new PageSetupAction(),
        "/com/mxgraph/examples/swing/images/pagesetup.gif"));
    menu.add(editor.bind(mxResources.get("print"), new PrintAction(),
        "/com/mxgraph/examples/swing/images/print.gif"));

    menu.addSeparator();

    menu.add(editor.bind(mxResources.get("exit"), new ExitAction()));

    // Creates the edit menu
    menu = add(new JMenu(mxResources.get("edit")));

    menu.add(editor.bind(mxResources.get("undo"), new HistoryAction(true),
        "/com/mxgraph/examples/swing/images/undo.gif"));
    menu.add(editor.bind(mxResources.get("redo"), new HistoryAction(false),
        "/com/mxgraph/examples/swing/images/redo.gif"));

    menu.addSeparator();

    menu.add(editor.bind(mxResources.get("cut"), TransferHandler
        .getCutAction(), "/com/mxgraph/examples/swing/images/cut.gif"));
    menu.add(editor
        .bind(mxResources.get("copy"), TransferHandler.getCopyAction(),
            "/com/mxgraph/examples/swing/images/copy.gif"));
    menu.add(editor.bind(mxResources.get("paste"), TransferHandler
        .getPasteAction(),
        "/com/mxgraph/examples/swing/images/paste.gif"));

    menu.addSeparator();

    menu.add(editor.bind(mxResources.get("delete"), mxGraphActions
        .getDeleteAction(),
        "/com/mxgraph/examples/swing/images/delete.gif"));

    menu.addSeparator();

    menu.add(editor.bind(mxResources.get("selectAll"), mxGraphActions
        .getSelectAllAction()));
    menu.add(editor.bind(mxResources.get("selectNone"), mxGraphActions
        .getSelectNoneAction()));

    menu.addSeparator();

    menu.add(editor.bind(mxResources.get("warning"), new WarningAction()));
    menu.add(editor.bind(mxResources.get("edit"), mxGraphActions
        .getEditAction()));

    // Creates the view menu
    menu = add(new JMenu(mxResources.get("view")));

    JMenuItem item = menu.add(new TogglePropertyItem(graphComponent,
        mxResources.get("pageLayout"), "PageVisible", true,
        new ActionListener()
        {
          /**
           *
           */
          public void actionPerformed(ActionEvent e)
          {
            if (graphComponent.isPageVisible()
                && graphComponent.isCenterPage())
            {
              graphComponent.zoomAndCenter();
            }
          }
        }));

    item.addActionListener(new ActionListener()
    {
      /*
       * (non-Javadoc)
       * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
       */
      public void actionPerformed(ActionEvent e)
      {
        if (e.getSource() instanceof TogglePropertyItem)
        {
          final mxGraphComponent graphComponent = editor
              .getGraphComponent();
          TogglePropertyItem toggleItem = (TogglePropertyItem) e
              .getSource();

          if (toggleItem.isSelected())
          {
            // Scrolls the view to the center
            SwingUtilities.invokeLater(new Runnable()
            {
              /*
               * (non-Javadoc)
               * @see java.lang.Runnable#run()
               */
              public void run()
              {
                graphComponent.scrollToCenter(true);
                graphComponent.scrollToCenter(false);
              }
            });
          }
          else
          {
            // Resets the translation of the view
            mxPoint tr = graphComponent.getGraph().getView()
                .getTranslate();

            if (tr.getX() != 0 || tr.getY() != 0)
            {
              graphComponent.getGraph().getView().setTranslate(
                  new mxPoint());
            }
          }
        }
      }
    });

    menu.add(new TogglePropertyItem(graphComponent, mxResources
        .get("antialias"), "AntiAlias", true));

    menu.addSeparator();

    menu.add(new ToggleGridItem(editor, mxResources.get("grid")));
    menu.add(new ToggleRulersItem(editor, mxResources.get("rulers")));

    menu.addSeparator();

    submenu = (JMenu) menu.add(new JMenu(mxResources.get("zoom")));

    submenu.add(editor.bind("400%", new ScaleAction(4)));
    submenu.add(editor.bind("200%", new ScaleAction(2)));
    submenu.add(editor.bind("150%", new ScaleAction(1.5)));
    submenu.add(editor.bind("100%", new ScaleAction(1)));
    submenu.add(editor.bind("75%", new ScaleAction(0.75)));
    submenu.add(editor.bind("50%", new ScaleAction(0.5)));

    submenu.addSeparator();

    submenu.add(editor.bind(mxResources.get("custom"), new ScaleAction(0)));

    menu.addSeparator();

    menu.add(editor.bind(mxResources.get("zoomIn"), mxGraphActions
        .getZoomInAction()));
    menu.add(editor.bind(mxResources.get("zoomOut"), mxGraphActions
        .getZoomOutAction()));

    menu.addSeparator();

    menu.add(editor.bind(mxResources.get("page"), new ZoomPolicyAction(
        mxGraphComponent.ZOOM_POLICY_PAGE)));
    menu.add(editor.bind(mxResources.get("width"), new ZoomPolicyAction(
        mxGraphComponent.ZOOM_POLICY_WIDTH)));

    menu.addSeparator();

    menu.add(editor.bind(mxResources.get("actualSize"), mxGraphActions
        .getZoomActualAction()));

    // Creates the diagram menu
    menu = add(new JMenu(mxResources.get("diagram")));

    menu.add(new ToggleOutlineItem(editor, mxResources.get("outline")));

    menu.addSeparator();

    submenu = (JMenu) menu.add(new JMenu(mxResources.get("background")));

    submenu.add(editor.bind(mxResources.get("backgroundColor"),
        new BackgroundAction()));
    submenu.add(editor.bind(mxResources.get("backgroundImage"),
        new BackgroundImageAction()));

    submenu.addSeparator();

    submenu.add(editor.bind(mxResources.get("pageBackground"),
        new PageBackgroundAction()));

    submenu = (JMenu) menu.add(new JMenu(mxResources.get("grid")));

    submenu.add(editor.bind(mxResources.get("gridSize"),
        new PromptPropertyAction(graph, "Grid Size", "GridSize")));
    submenu.add(editor.bind(mxResources.get("gridColor"),
        new GridColorAction()));

    submenu.addSeparator();

    submenu.add(editor.bind(mxResources.get("dashed"), new GridStyleAction(
        mxGraphComponent.GRID_STYLE_DASHED)));
    submenu.add(editor.bind(mxResources.get("dot"), new GridStyleAction(
        mxGraphComponent.GRID_STYLE_DOT)));
    submenu.add(editor.bind(mxResources.get("line"), new GridStyleAction(
        mxGraphComponent.GRID_STYLE_LINE)));
    submenu.add(editor.bind(mxResources.get("cross"), new GridStyleAction(
        mxGraphComponent.GRID_STYLE_CROSS)));

    menu.addSeparator();

    submenu = (JMenu) menu.add(new JMenu(mxResources.get("layout")));

    submenu.add(editor.graphLayout("verticalHierarchical", true));
    submenu.add(editor.graphLayout("horizontalHierarchical", true));

    submenu.addSeparator();

    submenu.add(editor.graphLayout("verticalPartition", false));
    submenu.add(editor.graphLayout("horizontalPartition", false));

    submenu.addSeparator();

    submenu.add(editor.graphLayout("verticalStack", false));
    submenu.add(editor.graphLayout("horizontalStack", false));

    submenu.addSeparator();

    submenu.add(editor.graphLayout("verticalTree", true));
    submenu.add(editor.graphLayout("horizontalTree", true));

    submenu.addSeparator();

    submenu.add(editor.graphLayout("parallelEdges", false));

    submenu.addSeparator();

    submenu.add(editor.graphLayout("organicLayout", true));

    submenu = (JMenu) menu.add(new JMenu(mxResources.get("selection")));

    submenu.add(editor.bind(mxResources.get("selectPath"),
        new SelectShortestPathAction(false)));
    submenu.add(editor.bind(mxResources.get("selectDirectedPath"),
        new SelectShortestPathAction(true)));

    submenu.addSeparator();

    submenu.add(editor.bind(mxResources.get("selectTree"),
        new SelectSpanningTreeAction(false)));
    submenu.add(editor.bind(mxResources.get("selectDirectedTree"),
        new SelectSpanningTreeAction(true)));

    menu.addSeparator();

    submenu = (JMenu) menu.add(new JMenu(mxResources.get("stylesheet")));

    submenu
        .add(editor
            .bind(
                mxResources.get("basicStyle"),
                new StylesheetAction(
                    "/com/mxgraph/examples/swing/resources/basic-style.xml")));
    submenu
        .add(editor
            .bind(
                mxResources.get("defaultStyle"),
                new StylesheetAction(
                    "/com/mxgraph/examples/swing/resources/default-style.xml")));

    // Creates the options menu
    menu = add(new JMenu(mxResources.get("options")));

    submenu = (JMenu) menu.add(new JMenu(mxResources.get("display")));
    submenu.add(new TogglePropertyItem(graphComponent, mxResources
        .get("buffering"), "TripleBuffered", true));
    submenu.add(editor.bind(mxResources.get("dirty"),
        new ToggleDirtyAction()));

    submenu.addSeparator();

    item = submenu.add(new TogglePropertyItem(graphComponent, mxResources
        .get("centerPage"), "CenterPage", true, new ActionListener()
    {
      /**
       *
       */
      public void actionPerformed(ActionEvent e)
      {
        if (graphComponent.isPageVisible()
            && graphComponent.isCenterPage())
        {
          graphComponent.zoomAndCenter();
        }
      }
    }));

    submenu.add(new TogglePropertyItem(graphComponent, mxResources
        .get("centerZoom"), "CenterZoom", true));
    submenu.add(new TogglePropertyItem(graphComponent, mxResources
        .get("zoomToSelection"), "KeepSelectionVisibleOnZoom", true));

    submenu.addSeparator();

    submenu.add(new TogglePropertyItem(graphComponent, mxResources
        .get("preferPagesize"), "PreferPageSize", true));

    // This feature is not yet implemented
    //submenu.add(new TogglePropertyItem(graphComponent, mxResources
    //    .get("pageBreaks"), "PageBreaksVisible", true));

    submenu.addSeparator();

    submenu.add(editor.bind(mxResources.get("tolerance"),
        new PromptPropertyAction(graph, "Tolerance")));

    // Creates the window menu
    menu = add(new JMenu(mxResources.get("window")));

    UIManager.LookAndFeelInfo[] lafs = UIManager.getInstalledLookAndFeels();

    for (int i = 0; i < lafs.length; i++)
    {
      final String clazz = lafs[i].getClassName();
      menu.add(new AbstractAction(lafs[i].getName())
      {
        public void actionPerformed(ActionEvent e)
        {
          editor.setLookAndFeel(clazz);
        }
      });
    }

    // Creates the help menu
    menu = add(new JMenu(mxResources.get("help")));

    item = menu.add(new JMenuItem(mxResources.get("aboutGraphEditor")));
    item.addActionListener(new ActionListener()
    {
      /*
       * (non-Javadoc)
       * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
       */
      public void actionPerformed(ActionEvent e)
      {
        editor.about();
      }
    });
  }

}
TOP

Related Classes of com.mxgraph.examples.swing.editor.SchemaEditorMenuBar

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.