1
2 package hep.wired.heprep.edit;
3
4 import java.util.logging.*;
5 import javax.swing.undo.*;
6
7 import hep.wired.edit.WiredEdit;
8 import hep.wired.edit.GraphicsPanelEdit;
9 import hep.wired.services.RecordPlot;
10 import hep.wired.services.GraphicsPanel;
11 import hep.wired.heprep.services.Projection;
12 import hep.wired.heprep.graphicspanel.HepRepPanel;
13 import hep.wired.feature.Resetable;
14
15 /***
16 * Set a projection for the plot.
17 *
18 * @author Mark Donszelmann
19 * @version $Id: SetProjection.java 690 2005-03-16 09:07:07Z duns $
20 */
21 public class SetProjection extends WiredEdit implements GraphicsPanelEdit {
22
23 private static Logger logger = Logger.getLogger(SetProjection.class.getPackage().getName());
24
25 private Projection oldProjection;
26 private Projection projection;
27
28 /***
29 * Creates a projection edit with given projection.
30 */
31 public SetProjection(Projection projection) {
32 super();
33
34 this.projection = projection;
35 }
36
37 public WiredEdit copy(RecordPlot plot) {
38 WiredEdit copy = new SetProjection(projection.copy());
39 copy.setRecordPlot(plot);
40
41 return copy;
42 }
43
44 public String getPresentationName() {
45 return "SetProjection: "+projection.getName();
46 }
47
48 public boolean isSupportedBy(GraphicsPanel p) {
49 return p instanceof HepRepPanel;
50 }
51
52 public boolean addEdit(UndoableEdit edit) {
53 if (edit instanceof SetProjection) {
54 return edit.equals(this);
55 }
56 return super.addEdit(edit);
57 }
58
59 protected void redoEdit() {
60 RecordPlot plot = getRecordPlot();
61 HepRepPanel panel = (HepRepPanel)plot.getGraphicsPanel();
62 oldProjection = panel.getProjection();
63 panel.setProjection(projection);
64 plot.repaint();
65 logger.finer(toString());
66 }
67
68 protected void undoEdit() {
69 RecordPlot plot = getRecordPlot();
70 HepRepPanel panel = (HepRepPanel)plot.getGraphicsPanel();
71 projection = panel.getProjection();
72 panel.setProjection(oldProjection);
73 plot.repaint();
74 logger.finer(toString());
75 }
76 }