1 32 33 package it.businesslogic.ireport.undo; 34 import it.businesslogic.ireport.CrosstabReportElement; 35 import it.businesslogic.ireport.gui.event.*; 36 import it.businesslogic.ireport.*; 37 import it.businesslogic.ireport.gui.*; 38 import it.businesslogic.ireport.util.*; 39 import java.awt.*; 40 41 import java.util.*; 42 43 50 public class ChangeEmentsOrderOperation implements it.businesslogic.ireport.UndoOperation { 51 52 55 private Vector elements = null; 56 57 private JReportFrame jrf = null; 58 private CrosstabReportElement crosstabReportElement = null; 59 60 public ChangeEmentsOrderOperation(JReportFrame jrf, CrosstabReportElement crosstabReportElement) { 61 this.crosstabReportElement = crosstabReportElement; 62 this.elements = new Vector(); 63 this.jrf = jrf; 64 } 65 66 public ChangeEmentsOrderOperation(JReportFrame jrf) { 67 this(jrf,null); 68 } 69 70 public void redo() 71 { 72 if (jrf == null) return; 74 Enumeration e = this.getElements().elements(); 75 76 Vector changed_elements = new Vector(); 77 while ( e.hasMoreElements() ) 78 { 79 PositionedElement pe = (PositionedElement)e.nextElement(); 80 ReportElement element = pe.getElement(); 81 changed_elements.add(element); 83 if (getCrosstabReportElement() != null) 84 { 85 getCrosstabReportElement().getElements().remove( pe.getOldPosition() ); 86 getCrosstabReportElement().getElements().insertElementAt(element, pe.getNewPosition()); 87 jrf.getCrosstabEditor(getCrosstabReportElement()).getPanelEditor().addSelectedElement( element , false); 88 jrf.getCrosstabEditor(getCrosstabReportElement()).getPanelEditor().repaint(); 89 } 90 else 91 { 92 jrf.getReport().getElements().remove( pe.getOldPosition() ); 93 jrf.getReport().getElements().insertElementAt(element, pe.getNewPosition()); 94 jrf.addSelectedElement( element , false); 95 jrf.getReportPanel().repaint(); 96 } 97 } 98 jrf.fireReportListenerReportElementsChanged(new ReportElementChangedEvent(jrf, getCrosstabReportElement(), changed_elements , ReportElementChangedEvent.CHANGED)); 99 100 } 101 102 public void undo() 103 { 104 if (jrf == null) return; 106 107 jrf.setSelectedElement(null); 108 Vector changed_elements = new Vector(); 109 110 for (int i= this.getElements().size()-1; i>=0; --i) 111 { 112 PositionedElement pe = (PositionedElement)getElements().get(i); 113 ReportElement element = pe.getElement(); 114 changed_elements.add(element); 115 if (getCrosstabReportElement() != null) 117 { 118 getCrosstabReportElement().getElements().remove( pe.getNewPosition() ); 119 getCrosstabReportElement().getElements().insertElementAt(element, pe.getOldPosition()); 120 jrf.getCrosstabEditor(getCrosstabReportElement()).getPanelEditor().addSelectedElement( element , false); 121 jrf.getCrosstabEditor(getCrosstabReportElement()).getPanelEditor().repaint(); 122 } 123 else 124 { 125 jrf.getReport().getElements().remove( pe.getNewPosition() ); 126 jrf.getReport().getElements().insertElementAt(element, pe.getOldPosition()); 127 jrf.addSelectedElement( element , false); 128 jrf.getReportPanel().repaint(); 129 } 130 } 131 jrf.fireReportListenerReportElementsChanged(new ReportElementChangedEvent(jrf, getCrosstabReportElement(), changed_elements , ReportElementChangedEvent.CHANGED)); 132 133 } 134 135 public String toString() 136 { 137 return "change element(s) order"; 138 } 139 140 147 public java.util.Vector getElements() { 148 return elements; 149 } 150 151 155 public void setElements(java.util.Vector elements) { 156 this.elements = elements; 157 } 158 159 168 public void addElement(ReportElement element, int oldPosition, int newPostion) { 169 170 PositionedElement pe = new PositionedElement(element, oldPosition, newPostion); 171 getElements().add(pe); 172 } 173 174 public CrosstabReportElement getCrosstabReportElement() { 175 return crosstabReportElement; 176 } 177 178 public void setCrosstabReportElement(CrosstabReportElement crosstabReportElement) { 179 this.crosstabReportElement = crosstabReportElement; 180 } 181 182 } 183 184 | Popular Tags |