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 DeleteElementsOperation 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 DeleteElementsOperation(JReportFrame jrf) { 60 this.elements = new Vector(); 61 this.jrf = jrf; 62 } 63 64 public DeleteElementsOperation(JReportFrame jrf, CrosstabReportElement crosstabReportElement) { 65 this.crosstabReportElement = crosstabReportElement; 66 this.elements = new Vector(); 67 this.jrf = jrf; 68 } 69 70 public void redo() 71 { 72 if (jrf == null && crosstabReportElement == null) return; 74 Enumeration e = this.getElements().elements(); 75 Vector changed_elements = new Vector(); 76 while ( e.hasMoreElements() ) 77 { 78 PositionedElement pe = (PositionedElement)e.nextElement(); 79 ReportElement element = pe.getElement(); 80 81 if (crosstabReportElement != null) 82 { 83 jrf.getCrosstabEditor(crosstabReportElement).getPanelEditor().getSelectedElements().remove( element ); 84 crosstabReportElement.getElements().remove( element ); 85 jrf.getCrosstabEditor(crosstabReportElement).getPanelEditor().repaint(); 86 } 87 else 88 { 89 jrf.getSelectedElements().remove( element ); 90 jrf.getReport().getElements().remove( element ); 91 if (element instanceof CrosstabReportElement) 92 { 93 jrf.removeCrosstabEditor((CrosstabReportElement)element); 94 } 95 jrf.getReportPanel().repaint(); 96 } 97 changed_elements.add(element); 98 } 99 jrf.fireReportListenerReportElementsChanged(new ReportElementChangedEvent(jrf, crosstabReportElement, changed_elements , ReportElementChangedEvent.REMOVED)); 100 101 } 102 103 public void undo() 104 { 105 if (jrf == null && crosstabReportElement == null) return; 107 Vector changed_elements = new Vector(); 108 for (int i= this.getElements().size()-1; i>=0; --i) 109 { 110 PositionedElement pe = (PositionedElement)getElements().get(i); 111 ReportElement element = pe.getElement(); 112 114 if (crosstabReportElement != null) 115 { 116 117 crosstabReportElement.getElements().insertElementAt(element, pe.getOldPosition()); 118 } 119 else 120 { 121 jrf.getReport().getElements().insertElementAt(element, pe.getOldPosition()); 122 if (element instanceof CrosstabReportElement) 124 { 125 jrf.addCrosstabEditor((CrosstabReportElement)element); 126 } 127 } 128 changed_elements.add( element ); 129 } 132 jrf.fireReportListenerReportElementsChanged(new ReportElementChangedEvent(jrf, crosstabReportElement, changed_elements , ReportElementChangedEvent.ADDED)); 133 134 if (crosstabReportElement != null) 135 { 136 jrf.getCrosstabEditor(crosstabReportElement).getPanelEditor().setSelectedElements( changed_elements ); 137 jrf.getCrosstabEditor(crosstabReportElement).getPanelEditor().repaint(); 138 } 139 else 140 { 141 jrf.setSelectedElements( changed_elements ); 142 jrf.getReportPanel().repaint(); 143 } 144 } 145 146 public String toString() 147 { 148 return "delete element(s)"; 149 } 150 151 158 public java.util.Vector getElements() { 159 return elements; 160 } 161 162 166 public void setElements(java.util.Vector elements) { 167 this.elements = elements; 168 } 169 170 179 public void addElement(ReportElement element, int position) { 180 181 PositionedElement pe = new PositionedElement(element, position, position); 182 getElements().add(pe); 183 } 184 185 } 186 187 188 189 190 | Popular Tags |