View Javadoc

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