View Javadoc

1   // Copyright 2004-2005, FreeHEP.
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 }