1
2 package hep.wired.edit;
3
4 import java.util.logging.*;
5 import javax.swing.undo.*;
6
7 import hep.wired.services.RecordPlot;
8 import hep.wired.services.GraphicsPanel;
9 import hep.wired.feature.Resetable;
10
11 /***
12 * Resets the plot to its initial state.
13 *
14 * @author Mark Donszelmann
15 * @version $Id: Reset.java 256 2004-06-07 23:31:10Z duns $
16 */
17 public class Reset extends WiredEdit implements GraphicsPanelEdit {
18
19 private static Logger logger = Logger.getLogger(Reset.class.getPackage().getName());
20
21 private Object oldState;
22
23 /***
24 * Creates a Reset edit.
25 */
26 public Reset() {
27 super();
28 oldState = null;
29 }
30
31 public WiredEdit copy(RecordPlot plot) {
32 WiredEdit copy = new Reset();
33 copy.setRecordPlot(plot);
34
35 return copy;
36 }
37
38 public String getPresentationName() {
39 return "Reset";
40 }
41
42 public boolean addEdit(UndoableEdit edit) {
43 if (edit instanceof Reset) {
44
45 return true;
46 }
47 return super.addEdit(edit);
48 }
49
50 public boolean isSupportedBy(GraphicsPanel p) {
51 return (p.getFeature(Resetable.class) != null);
52 }
53
54 protected void redoEdit() {
55 Resetable resetable = (Resetable)getRecordPlot().getGraphicsPanel().getFeature(Resetable.class);
56 if (resetable != null) {
57 oldState = resetable.reset(oldState);
58 getRecordPlot().repaint();
59 }
60 logger.finer(toString());
61 }
62
63 protected void undoEdit() {
64 Resetable resetable = (Resetable)getRecordPlot().getGraphicsPanel().getFeature(Resetable.class);
65 if (resetable != null) {
66 oldState = resetable.reset(oldState);
67 getRecordPlot().repaint();
68 }
69 logger.finer(toString());
70 }
71
72 }