1
2 package hep.wired.edit;
3
4 import java.awt.*;
5 import java.awt.geom.*;
6 import java.util.logging.*;
7 import javax.swing.*;
8 import javax.swing.undo.*;
9
10 import hep.wired.services.RecordPlot;
11 import hep.wired.services.GraphicsPanel;
12 import hep.wired.services.ViewPort;
13 import hep.wired.feature.Translateable;
14 import hep.wired.feature.Translateable2D;
15 import hep.wired.feature.Translateable3D;
16 import hep.wired.util.XYZindices;
17
18 /***
19 * Set Translate a plot in 2D or 3D.
20 *
21 * @author Mark Donszelmann
22 * @version $Id: SetTranslate.java 2083 2005-07-20 17:16:52Z duns $
23 */
24
25 public class SetTranslate extends WiredEdit implements GraphicsPanelEdit, XYZindices {
26
27 private static Logger logger = Logger.getLogger(SetTranslate.class.getPackage().getName());
28 private double tx, ty, tz;
29 private double[] oldT;
30
31 /***
32 * Creates a translate edit with given translation in model units.
33 */
34 public SetTranslate(double tx, double ty, double tz) {
35 super(0);
36 this.tx = tx;
37 this.ty = ty;
38 this.tz = tz;
39 oldT = null;
40 }
41
42 public WiredEdit copy(RecordPlot plot) {
43 WiredEdit copy = new SetTranslate(tx, ty, tz);
44 copy.setRecordPlot(plot);
45 return copy;
46 }
47
48 public String getPresentationName() {
49 StringBuffer s = new StringBuffer();
50 s.append(toString());
51 s.append(" (");
52 s.append(format.format(tx));
53 s.append(", ");
54 s.append(format.format(ty));
55 if (tz != 0) {
56 s.append(", ");
57 s.append(format.format(tz));
58 }
59 s.append(")");
60 return s.toString();
61 }
62
63 public String toString() {
64 return "SetTranslate";
65 }
66
67 public boolean addEdit(UndoableEdit edit) {
68 return false;
69 }
70
71 public boolean isSupportedBy(GraphicsPanel p) {
72 return p.supports(Translateable2D.class) || p.supports(Translateable3D.class);
73 }
74
75 protected void redoEdit() {
76 GraphicsPanel panel = getRecordPlot().getGraphicsPanel();
77 Translateable3D translateable3D = (Translateable3D)panel.getFeature(Translateable3D.class);
78 if (translateable3D != null) {
79 oldT = translateable3D.getTranslate();
80 translateable3D.setTranslate(tx, ty, tz);
81 } else {
82 Translateable2D translateable2D = (Translateable2D)panel.getFeature(Translateable2D.class);
83 if (translateable2D == null) {
84 System.err.println("Could not redo: "+this);
85 return;
86 }
87 oldT = translateable2D.getTranslate();
88 translateable2D.setTranslate(tx, ty);
89 }
90 getRecordPlot().repaint();
91 logger.finer(toString());
92 }
93
94 protected void undoEdit() {
95 if (oldT == null) {
96 System.err.println("Could not undo: "+this);
97 return;
98 }
99
100 GraphicsPanel panel = getRecordPlot().getGraphicsPanel();
101 Translateable3D translateable3D = (Translateable3D)panel.getFeature(Translateable3D.class);
102 if (translateable3D != null) {
103 translateable3D.setTranslate(oldT[X], oldT[Y], oldT[Z]);
104 } else {
105 Translateable2D translateable2D = (Translateable2D)panel.getFeature(Translateable2D.class);
106 if (translateable2D == null) {
107 System.err.println("Could not undo: "+this);
108 return;
109 }
110 translateable2D.setTranslate(oldT[X], oldT[Y]);
111 }
112 getRecordPlot().repaint();
113 logger.finer(toString());
114 }
115 }