1   /****************************************************************************
2    **
3    ** This file is part of yFiles-2.6. 
4    ** 
5    ** yWorks proprietary/confidential. Use is subject to license terms.
6    **
7    ** Redistribution of this file or of an unauthorized byte-code version
8    ** of this file is strictly forbidden.
9    **
10   ** Copyright (c) 2000-2008 by yWorks GmbH, Vor dem Kreuzberg 28, 
11   ** 72070 Tuebingen, Germany. All rights reserved.
12   **
13   ***************************************************************************/
14  package demo.view.rendering;
15  
16  import demo.view.DemoBase;
17  import y.option.EnumOptionItem;
18  import y.option.MappedListCellRenderer;
19  import y.option.OptionHandler;
20  import y.view.DefaultBackgroundRenderer;
21  import y.view.EdgeRealizer;
22  import y.view.LineType;
23  
24  import javax.swing.AbstractAction;
25  import javax.swing.DefaultListCellRenderer;
26  import javax.swing.JToolBar;
27  import java.awt.Color;
28  import java.awt.Dimension;
29  import java.awt.event.ActionEvent;
30  import java.util.Hashtable;
31  
32  /**
33   *  Demonstrates different modes for drawing images in the
34   *  background of Graph2DView.
35   */
36  
37  public class BackgroundDemo extends DemoBase
38  {
39    DefaultBackgroundRenderer renderer;
40  
41    final static String bgImages[] = {
42      "resource/yWorksBig.png",
43      "resource/yWorksSmall.gif",
44      "resource/usamap.gif",
45      "resource/ySplash.jpg",
46      "resource/tile.jpg",
47      "<NONE>"
48    };
49  
50  
51    public BackgroundDemo()
52    {
53      renderer = new DefaultBackgroundRenderer(view);
54      renderer.setImageResource(getClass().getResource(bgImages[0]));
55      renderer.setMode(DefaultBackgroundRenderer.CENTERED);
56      renderer.setColor(Color.white);
57      view.setBackgroundRenderer(renderer);
58      view.setPreferredSize(new Dimension(600,400));
59  
60      view.setWorldRect(0,0,1000,1000);
61  
62      //use thicker edges 
63      EdgeRealizer er = view.getGraph2D().getDefaultEdgeRealizer();
64      er.setLineType(LineType.LINE_2);
65    }
66  
67    /**
68     * Returns ViewActionDemo toolbar plus a button to change the 
69     * background of the view.
70     */
71    protected JToolBar createToolBar()
72    {
73      JToolBar bar = super.createToolBar();
74      bar.addSeparator();
75      bar.add(new ChangeBackground());
76      return bar;
77    }
78  
79    /**
80     * An action that displays a dialog that allows to change the background
81     * properties of the view.
82     */
83    class ChangeBackground extends AbstractAction
84    {
85      /** The powerful yFiles dialog generator */
86      OptionHandler op;
87      Hashtable  xlate;
88  
89      ChangeBackground()
90      {
91        super("Background");
92        xlate = new Hashtable(11);
93        xlate.put(new Byte(DefaultBackgroundRenderer.FULLSCREEN),"Fullscreen");
94        xlate.put(new Byte(DefaultBackgroundRenderer.TILED),     "Tiled");
95        xlate.put(new Byte(DefaultBackgroundRenderer.BRICKED),   "Bricked");
96        xlate.put(new Byte(DefaultBackgroundRenderer.CENTERED),  "Centered");
97        xlate.put(new Byte(DefaultBackgroundRenderer.PLAIN),     "Plain");
98        xlate.put(new Byte(DefaultBackgroundRenderer.DYNAMIC),   "Dynamic");
99      }
100 
101     public void actionPerformed(ActionEvent e)
102     {
103       if(op == null)
104       {
105         op = new OptionHandler("Background");
106         op.addEnum("Mode",
107                    xlate.keySet().toArray(),
108                    new Byte(renderer.getMode()),
109                    new MappedListCellRenderer(xlate));
110         op.addColor("Color",renderer.getColor());
111         op.addEnum("Image",bgImages,0)
112           // disable unwanted I18N
113           .setAttribute(EnumOptionItem.ATTRIBUTE_RENDERER,
114                         new DefaultListCellRenderer());
115       }
116 
117       String oldImage = op.getString("Image");
118 
119       if(op.showEditor())
120       {
121         renderer.setMode(((Byte)op.get("Mode")).byteValue());
122         renderer.setColor((Color)op.get("Color"));
123         String imageSrc = op.getString("Image");
124         if(imageSrc.equals("<NONE>"))
125           renderer.setImage(null);
126         else
127           renderer.setImageResource(this.getClass().getResource(imageSrc));
128         view.updateView();
129       }
130      }
131   }
132 
133   public static void main(String args[])
134   {
135     BackgroundDemo demo = new BackgroundDemo();
136     demo.start("Background Demo");
137   }
138 }
139 
140 
141       
142