Package com.mxgraph.examples.swing

Source Code of com.mxgraph.examples.swing.Stencils

package com.mxgraph.examples.swing;

import java.awt.Image;

import javax.swing.JFrame;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import com.mxgraph.canvas.mxGraphics2DCanvas;
import com.mxgraph.canvas.mxGraphicsCanvas2D;
import com.mxgraph.shape.mxStencil;
import com.mxgraph.shape.mxStencilRegistry;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.swing.view.mxInteractiveCanvas;
import com.mxgraph.util.mxUtils;
import com.mxgraph.util.mxXmlUtils;
import com.mxgraph.view.mxGraph;

public class Stencils extends JFrame
{

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

  public Stencils()
  {
    super("Stencils");

    try
    {
      String filename = Stencils.class.getResource(
          "/com/mxgraph/examples/swing/shapes.xml").getPath();
      Document doc = mxXmlUtils.parseXml(mxUtils.readFile(filename));

      Element shapes = (Element) doc.getDocumentElement();
      NodeList list = shapes.getElementsByTagName("shape");

      for (int i = 0; i < list.getLength(); i++)
      {
        Element shape = (Element) list.item(i);
        mxStencilRegistry.addStencil(shape.getAttribute("name"),
            new mxStencil(shape)
            {
              protected mxGraphicsCanvas2D createCanvas(
                  final mxGraphics2DCanvas gc)
              {
                // Redirects image loading to graphics canvas
                return new mxGraphicsCanvas2D(gc.getGraphics())
                {
                  protected Image loadImage(String src)
                  {
                    // Adds image base path to relative image URLs
                    if (!src.startsWith("/")
                        && !src.startsWith("http://")
                        && !src.startsWith("https://")
                        && !src.startsWith("file:"))
                    {
                      src = gc.getImageBasePath() + src;
                    }

                    // Call is cached
                    return gc.loadImage(src);
                  }
                };
              }
            });
      }

      mxGraph graph = new mxGraph();
      Object parent = graph.getDefaultParent();

      graph.getModel().beginUpdate();
      try
      {
        Object v1 = graph
            .insertVertex(parent, null, "Hello", 20, 20, 80, 30,
                "shape=and;fillColor=#ff0000;gradientColor=#ffffff;shadow=1");
        Object v2 = graph.insertVertex(parent, null, "World!", 240,
            150, 80, 30, "shape=xor;shadow=1");
        graph.insertEdge(parent, null, "Edge", v1, v2);
      }
      finally
      {
        graph.getModel().endUpdate();
      }

      mxGraphComponent graphComponent = new mxGraphComponent(graph)
      {
        // Sets global image base path
        public mxInteractiveCanvas createCanvas()
        {
          mxInteractiveCanvas canvas = super.createCanvas();
          canvas.setImageBasePath("/com/mxgraph/examples/swing/");

          return canvas;
        }
      };
      getContentPane().add(graphComponent);
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
  }

  public static void main(String[] args)
  {
    Stencils frame = new Stencils();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 320);
    frame.setVisible(true);
  }

}
TOP

Related Classes of com.mxgraph.examples.swing.Stencils

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.