| UndoRedoDemo.java |
1 /****************************************************************************
2 * This demo file is part of yFiles for Java 2.14.
3 * Copyright (c) 2000-2017 by yWorks GmbH, Vor dem Kreuzberg 28,
4 * 72070 Tuebingen, Germany. All rights reserved.
5 *
6 * yFiles demo files exhibit yFiles for Java functionalities. Any redistribution
7 * of demo files in source code or binary form, with or without
8 * modification, is not permitted.
9 *
10 * Owners of a valid software license for a yFiles for Java version that this
11 * demo is shipped with are allowed to use the demo source code as basis
12 * for their own yFiles for Java powered applications. Use of such programs is
13 * governed by the rights and conditions as set out in the yFiles for Java
14 * license agreement.
15 *
16 * THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESS OR IMPLIED
17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
19 * NO EVENT SHALL yWorks BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
21 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 *
27 ***************************************************************************/
28 package demo.view.application;
29
30 import demo.view.DemoBase;
31 import y.view.Graph2DUndoManager;
32
33 import javax.swing.JToolBar;
34 import javax.swing.Action;
35 import java.awt.EventQueue;
36 import java.util.Locale;
37
38 /**
39 * This Demo shows how to use Undo/Redo functionality built into yFiles.
40 *
41 * @see <a href="http://docs.yworks.com/yfiles/doc/api/index.html#/dguide/advanced_stuff#undo_redo" target="_blank">Section Undo/Redo</a> in the yFiles for Java Developer's Guide
42 */
43 public class UndoRedoDemo extends DemoBase
44 {
45 private Graph2DUndoManager undoManager;
46
47 /**
48 * Returns the undo manager for this application. Also, if not already done - it creates
49 * and configures it.
50 */
51 protected Graph2DUndoManager getUndoManager()
52 {
53 if(undoManager == null)
54 {
55 //create one and make it listen to graph structure changes
56 undoManager = new Graph2DUndoManager(view.getGraph2D());
57
58 //assign the graph view as view container so we get view updates
59 //after undo/redo actions have been performed.
60 undoManager.setViewContainer(view);
61 }
62 return undoManager;
63 }
64
65
66 public JToolBar createToolBar()
67 {
68 JToolBar bar = super.createToolBar();
69
70 bar.addSeparator();
71
72 //add undo action to toolbar
73 Action action = getUndoManager().getUndoAction();
74 action.putValue(Action.SMALL_ICON, getIconResource("resource/undo.png"));
75 action.putValue(Action.SHORT_DESCRIPTION, "Undo");
76 bar.add(action);
77
78 //add redo action to toolbar
79 action = getUndoManager().getRedoAction();
80 action.putValue(Action.SMALL_ICON, getIconResource("resource/redo.png"));
81 action.putValue(Action.SHORT_DESCRIPTION, "Redo");
82 bar.add(action);
83 return bar;
84 }
85
86 /**
87 * Overwritten to disable the default undo/redo support.
88 */
89 protected boolean isUndoRedoEnabled() {
90 return false;
91 }
92
93 public static void main(String[] args) {
94 EventQueue.invokeLater(new Runnable() {
95 public void run() {
96 Locale.setDefault(Locale.ENGLISH);
97 initLnF();
98 (new UndoRedoDemo()).start("Undo/Redo Demo");
99 }
100 });
101 }
102
103 }
104
105
106
107
108