View Javadoc

1   // Copyright 2004, FreeHEP.
2   package hep.wired.plot;
3   
4   import java.awt.*;
5   import java.awt.datatransfer.*;
6   import java.awt.event.*;
7   import java.util.*;
8   
9   import javax.swing.*;
10  import javax.swing.event.*;
11  import javax.swing.undo.*;
12  
13  import org.freehep.application.Application;
14  import org.freehep.application.studio.Studio;
15  import org.freehep.application.PrintHelper;
16  import org.freehep.util.commanddispatcher.CommandProcessor;
17  import org.freehep.util.commanddispatcher.CommandState;
18  import org.freehep.util.commanddispatcher.BooleanCommandState;
19  import org.freehep.util.export.ExportDialog;
20  import org.freehep.util.export.VectorGraphicsTransferable;
21  
22  import hep.wired.edit.FitToWindow;
23  import hep.wired.edit.Reset;
24  import hep.wired.interaction.DragAngledRectangleToScale;
25  import hep.wired.interaction.DragBallToRotate;
26  import hep.wired.interaction.DragRectangleToScale;
27  import hep.wired.interaction.DragToRotate;
28  import hep.wired.interaction.DragToScale;
29  import hep.wired.interaction.DragToTranslate;
30  import hep.wired.services.RecordPlot;
31  import hep.wired.util.WiredUndoManager;
32  
33  /***
34   * Defines a command handler for plot commands.
35   *
36   * @author Mark Donszelmann
37   * @version $Id: WiredPlotCommandHandler.java 674 2005-03-11 04:53:14Z duns $
38   */
39  public class WiredPlotCommandHandler extends CommandProcessor
40                        implements UndoableEditListener {
41  
42      private RecordPlot plot;
43  
44      private WiredUndoManager undoManager = new WiredUndoManager();
45  
46      /***
47       * Creates a command handler attached to the plot.
48       */
49      public WiredPlotCommandHandler(RecordPlot plot) {
50          super();
51          this.plot = plot;
52      }
53  
54      public void enableRedo(CommandState state) {
55          state.setEnabled(undoManager.canRedo());
56          state.setText("Redo "+undoManager.getRedoString());
57          state.setToolTipText(undoManager.getRedoPresentationName());
58          setChanged();
59      }
60  
61      public void onRedo() {
62          undoManager.redo();
63          setChanged();
64      }
65  
66      public void enableUndo(CommandState state) {
67          state.setEnabled(undoManager.canUndo());
68          state.setText("Undo "+undoManager.getUndoString());
69          state.setToolTipText(undoManager.getUndoPresentationName());
70          setChanged();
71      }
72  
73      public void onUndo() {
74          undoManager.undo();
75          setChanged();
76      }
77  
78      public void onPrintSetup() {
79          Studio studio = (Studio)Application.getApplication();
80  
81          PrintHelper printHelper = new PrintHelper((Component)plot, studio);
82          printHelper.showOptionsDialog(studio);
83      }
84  
85      public void enablePrint(CommandState state) {
86          state.setEnabled(plot.getRecord() != null);
87          setChanged();
88      }
89      
90      public void onPrint() throws Exception {
91          Studio studio = (Studio)Application.getApplication();
92  
93          PrintHelper printHelper = new PrintHelper((Component)plot, studio);
94          printHelper.print();
95      }
96  
97      public void enablePrintPreview(CommandState state) {
98          state.setEnabled(plot.getRecord() != null);
99          setChanged();
100     }
101     
102     public void onPrintPreview() throws Exception {
103         Studio studio = (Studio)Application.getApplication();
104 
105         PrintHelper printHelper = new PrintHelper((Component)plot, studio);
106         printHelper.printPreview(studio);
107     }
108 
109     public void enableCopy(CommandState state) {
110         state.setEnabled(plot.getRecord() != null);
111         setChanged();
112     }
113     
114     public void onCopy() {
115         Clipboard clipBoard = Toolkit.getDefaultToolkit().getSystemClipboard();
116         VectorGraphicsTransferable transferable = new VectorGraphicsTransferable((Component)plot);
117         clipBoard.setContents(transferable, transferable);
118     }
119     
120     public void undoableEditHappened(UndoableEditEvent edit) {
121         undoManager.addEdit(edit.getEdit());
122         setChanged();
123     }
124 
125     public void enableDragToScale(BooleanCommandState state) {
126         state.setEnabled(plot.supports(new DragToScale()));
127         state.setSelected(plot.getInteractionHandler() instanceof DragToScale);
128         setChanged();
129     }
130 
131     public void onDragToScale(boolean on) {
132         if (on) plot.setInteractionHandler(new DragToScale());
133         setChanged();
134     }
135 
136 
137     public void enableDragRectangleToScale(BooleanCommandState state) {
138         state.setEnabled(plot.supports(new DragRectangleToScale()));
139         state.setSelected(plot.getInteractionHandler() instanceof DragRectangleToScale);
140         setChanged();
141     }
142 
143     public void onDragRectangleToScale(boolean on) {
144         if (on) plot.setInteractionHandler(new DragRectangleToScale());
145         setChanged();
146     }
147 
148 
149     public void enableDragAngledRectangleToScale(BooleanCommandState state) {
150         state.setEnabled(plot.supports(new DragAngledRectangleToScale()));
151         state.setSelected(plot.getInteractionHandler() instanceof DragAngledRectangleToScale);
152         setChanged();
153     }
154 
155     public void onDragAngledRectangleToScale(boolean on) {
156         if (on) plot.setInteractionHandler(new DragAngledRectangleToScale());
157         setChanged();
158     }
159 
160 
161     public void enableDragToTranslate(BooleanCommandState state) {
162         state.setEnabled(plot.supports(new DragToTranslate()));
163         state.setSelected(plot.getInteractionHandler() instanceof DragToTranslate);
164         setChanged();
165     }
166 
167     public void onDragToTranslate(boolean on) {
168         if (on) plot.setInteractionHandler(new DragToTranslate());
169         setChanged();
170     }
171     
172 
173     public void enableDragToRotate(BooleanCommandState state) {
174         state.setEnabled(plot.supports(new DragToRotate()));
175         state.setSelected(plot.getInteractionHandler() instanceof DragToRotate);
176         setChanged();
177     }
178 
179     public void onDragToRotate(boolean on) {
180         if (on) plot.setInteractionHandler(new DragToRotate());
181         setChanged();
182     }
183 
184 
185     public void enableDragBallToRotate(BooleanCommandState state) {
186         state.setEnabled(plot.supports(new DragBallToRotate()));
187         state.setSelected(plot.getInteractionHandler() instanceof DragBallToRotate);
188         setChanged();
189     }
190 
191     public void onDragBallToRotate(boolean on) {
192         if (on) plot.setInteractionHandler(new DragBallToRotate());
193         setChanged();
194     }
195 
196 
197     public void enableReset(CommandState state) {
198         state.setEnabled(plot.supports(new Reset()));
199         setChanged();
200     }    
201 
202     public void onReset() {
203         plot.postEdit(new Reset());
204     }  
205 
206 
207     public void enableFitToWindow(CommandState state) {
208         state.setEnabled(plot.supports(new FitToWindow()));
209         setChanged();
210     }    
211 
212     public void onFitToWindow() {
213         plot.postEdit(new FitToWindow());
214     }  
215     
216 }