1 32 33 package it.businesslogic.ireport.undo; 34 import it.businesslogic.ireport.gui.event.*; 35 import it.businesslogic.ireport.*; 36 import it.businesslogic.ireport.gui.*; 37 import it.businesslogic.ireport.util.*; 38 39 import java.util.*; 40 41 48 public class ReplacedElementsOperation implements it.businesslogic.ireport.UndoOperation { 49 50 53 private Vector elements = null; 54 55 private JReportFrame jrf = null; 56 private CrosstabReportElement crosstabReportElement = null; 57 58 59 public ReplacedElementsOperation(JReportFrame jrf, CrosstabReportElement crosstabReportElement) { 60 this.setCrosstabReportElement(crosstabReportElement); 61 this.elements = new Vector(); 62 this.jrf = jrf; 63 } 64 65 public ReplacedElementsOperation(JReportFrame jrf) { 66 this(jrf,null); 67 } 68 69 public void redo() 70 { 71 if (jrf == null) return; 73 Enumeration e = this.getElements().elements(); 74 Vector added_elements = new Vector(); 75 Vector removed_elements = new Vector(); 76 77 while ( e.hasMoreElements() ) 78 { 79 ReplacedElementItem ei = (ReplacedElementItem)e.nextElement(); 80 ReportElement newElement = ei.getNewElement(); 81 ReportElement oldElement = ei.getOldElement(); 82 83 if (getCrosstabReportElement() != null) 84 { 85 int index = getCrosstabReportElement().getElements().indexOf( oldElement ); 86 getCrosstabReportElement().getElements().remove( oldElement ); 87 getCrosstabReportElement().getElements().add(index, newElement); 88 added_elements.add(newElement); 89 removed_elements.add(oldElement); 90 } 91 else 92 { 93 int index = jrf.getReport().getElements().indexOf( oldElement ); 94 jrf.getReport().getElements().remove( oldElement ); 95 jrf.getReport().getElements().add(index, newElement); 96 added_elements.add(newElement); 97 removed_elements.add(oldElement); 98 } 99 } 100 jrf.fireReportListenerReportElementsChanged(new ReportElementChangedEvent(jrf, getCrosstabReportElement(),removed_elements , ReportElementChangedEvent.REMOVED)); 101 jrf.fireReportListenerReportElementsChanged(new ReportElementChangedEvent(jrf, getCrosstabReportElement(), added_elements , ReportElementChangedEvent.ADDED)); 102 if (getCrosstabReportElement() != null) jrf.getCrosstabEditor(getCrosstabReportElement()).getPanelEditor().repaint(); 103 else jrf.getReportPanel().repaint(); 104 } 105 106 public void undo() 107 { 108 if (jrf == null) return; 110 111 Vector added_elements = new Vector(); 112 Vector removed_elements = new Vector(); 113 114 for (int i= this.getElements().size()-1; i>=0; --i) 115 { 116 ReplacedElementItem ei = (ReplacedElementItem)getElements().get(i); 117 ReportElement newElement = ei.getNewElement(); 118 ReportElement oldElement = ei.getOldElement(); 119 120 if (getCrosstabReportElement() != null) 121 { 122 int index = getCrosstabReportElement().getElements().indexOf( newElement ); 123 getCrosstabReportElement().getElements().remove( newElement ); 124 getCrosstabReportElement().getElements().add(index, oldElement); 125 added_elements.add( oldElement ); 126 removed_elements.add(newElement); 127 } 128 else 129 { 130 int index = jrf.getReport().getElements().indexOf( newElement ); 131 jrf.getReport().getElements().remove( newElement ); 132 jrf.getReport().getElements().add(index, oldElement); 133 added_elements.add( oldElement ); 134 removed_elements.add(newElement); 135 } 136 137 } 138 jrf.fireReportListenerReportElementsChanged(new ReportElementChangedEvent(jrf, getCrosstabReportElement(), removed_elements , ReportElementChangedEvent.REMOVED)); 139 jrf.fireReportListenerReportElementsChanged(new ReportElementChangedEvent(jrf, getCrosstabReportElement(), added_elements , ReportElementChangedEvent.ADDED)); 140 141 if (getCrosstabReportElement() != null) jrf.getCrosstabEditor(getCrosstabReportElement()).getPanelEditor().repaint(); 142 else jrf.getReportPanel().repaint(); 143 } 144 145 public String toString() 146 { 147 return "Transformed element(s)"; 148 } 149 150 157 public java.util.Vector getElements() { 158 return elements; 159 } 160 161 165 public void setElements(java.util.Vector elements) { 166 this.elements = elements; 167 } 168 169 178 public void addElement(ReportElement oldEelement,ReportElement newElement ) { 179 ReplacedElementItem ei = new ReplacedElementItem(oldEelement, newElement ); 180 getElements().add(ei); 181 } 182 183 public CrosstabReportElement getCrosstabReportElement() { 184 return crosstabReportElement; 185 } 186 187 public void setCrosstabReportElement(CrosstabReportElement crosstabReportElement) { 188 this.crosstabReportElement = crosstabReportElement; 189 } 190 191 } 192 193 194 195 196 | Popular Tags |