Package com.mxgraph.examples.swing.editor

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

package com.mxgraph.examples.swing.editor;

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

import javax.swing.BorderFactory;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JToolBar;
import javax.swing.TransferHandler;

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.PrintAction;
import com.mxgraph.examples.swing.editor.EditorActions.SaveAction;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.swing.util.mxGraphActions;
import com.mxgraph.util.mxEvent;
import com.mxgraph.util.mxEventObject;
import com.mxgraph.util.mxResources;
import com.mxgraph.util.mxEventSource.mxIEventListener;
import com.mxgraph.view.mxGraphView;

public class SchemaEditorToolBar extends JToolBar
{

  /**
   *
   */
  private static final long serialVersionUID = -3979320704834605323L;

  /**
   *
   * @param frame
   * @param orientation
   */
  private boolean ignoreZoomChange = false;

  /**
   *
   */
  public SchemaEditorToolBar(final BasicGraphEditor editor, int orientation)
  {
    super(orientation);
    setBorder(BorderFactory.createCompoundBorder(BorderFactory
        .createEmptyBorder(3, 3, 3, 3), getBorder()));
    setFloatable(false);

    add(editor.bind("New", new NewAction(),
        "/com/mxgraph/examples/swing/images/new.gif"));
    add(editor.bind("Open", new OpenAction(),
        "/com/mxgraph/examples/swing/images/open.gif"));
    add(editor.bind("Save", new SaveAction(false),
        "/com/mxgraph/examples/swing/images/save.gif"));

    addSeparator();

    add(editor.bind("Print", new PrintAction(),
        "/com/mxgraph/examples/swing/images/print.gif"));

    addSeparator();

    add(editor.bind("Cut", TransferHandler.getCutAction(),
        "/com/mxgraph/examples/swing/images/cut.gif"));
    add(editor.bind("Copy", TransferHandler.getCopyAction(),
        "/com/mxgraph/examples/swing/images/copy.gif"));
    add(editor.bind("Paste", TransferHandler.getPasteAction(),
        "/com/mxgraph/examples/swing/images/paste.gif"));

    addSeparator();

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

    addSeparator();

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

    addSeparator();

    final mxGraphView view = editor.getGraphComponent().getGraph()
        .getView();
    final JComboBox zoomCombo = new JComboBox(new Object[] { "400%",
        "200%", "150%", "100%", "75%", "50%", mxResources.get("page"),
        mxResources.get("width"), mxResources.get("actualSize") });
    zoomCombo.setEditable(true);
    zoomCombo.setMinimumSize(new Dimension(75, 0));
    zoomCombo.setPreferredSize(new Dimension(75, 0));
    zoomCombo.setMaximumSize(new Dimension(75, 100));
    zoomCombo.setMaximumRowCount(9);
    add(zoomCombo);

    // Sets the zoom in the zoom combo the current value
    mxIEventListener scaleTracker = new mxIEventListener()
    {
      /**
       *
       */
      public void invoke(Object sender, mxEventObject evt)
      {
        ignoreZoomChange = true;

        try
        {
          zoomCombo.setSelectedItem((int) Math.round(100 * view
              .getScale())
              + "%");
        }
        finally
        {
          ignoreZoomChange = false;
        }
      }
    };

    // Installs the scale tracker to update the value in the combo box
    // if the zoom is changed from outside the combo box
    view.getGraph().getView().addListener(mxEvent.SCALE, scaleTracker);
    view.getGraph().getView().addListener(mxEvent.SCALE_AND_TRANSLATE,
        scaleTracker);

    // Invokes once to sync with the actual zoom value
    scaleTracker.invoke(null, null);

    zoomCombo.addActionListener(new ActionListener()
    {
      /**
       *
       */
      public void actionPerformed(ActionEvent e)
      {
        mxGraphComponent graphComponent = editor.getGraphComponent();

        // Zoomcombo is changed when the scale is changed in the diagram
        // but the change is ignored here
        if (!ignoreZoomChange)
        {
          String zoom = zoomCombo.getSelectedItem().toString();

          if (zoom.equals(mxResources.get("page")))
          {
            graphComponent.setPageVisible(true);
            graphComponent
                .setZoomPolicy(mxGraphComponent.ZOOM_POLICY_PAGE);
          }
          else if (zoom.equals(mxResources.get("width")))
          {
            graphComponent.setPageVisible(true);
            graphComponent
                .setZoomPolicy(mxGraphComponent.ZOOM_POLICY_WIDTH);
          }
          else if (zoom.equals(mxResources.get("actualSize")))
          {
            graphComponent.zoomActual();
          }
          else
          {
            try
            {
              zoom = zoom.replace("%", "");
              double scale = Math.min(16, Math.max(0.01,
                  Double.parseDouble(zoom) / 100));
              graphComponent.zoomTo(scale, graphComponent
                  .isCenterZoom());
            }
            catch (Exception ex)
            {
              JOptionPane.showMessageDialog(editor, ex
                  .getMessage());
            }
          }
        }
      }
    });
  }
}
TOP

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

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.