/** This methos is called when a property changes... */ public void sheetPropertyValueChanged(SheetPropertyValueChangedEvent evt) { if (isInit()) return; try { setInit(true); // System.out.println("Changed: " + evt.getPropertyName()); // if (isNullItem((SheetProperty)evt.getSource())) return; // removeNullItem( (SheetProperty)evt.getSource() ); Vector selectedElements = getSelection(); Vector modified_parameters = new Vector(); Vector original_parameters = new Vector(); Vector modified_fields = new Vector(); Vector original_fields = new Vector(); Vector modified_variables = new Vector(); Vector original_variables = new Vector(); for (int i = 0; i < selectedElements.size(); ++i) { Object object = selectedElements.elementAt(i); if (object instanceof JRParameter) { JRParameter param = (JRParameter) object; if (param.isBuiltin()) continue; JRParameter originalParam = param.cloneMe(); if (applyNewParameterProperty( param, evt.getPropertyName(), evt.getOldValue(), evt.getNewValue())) { modified_parameters.add(object); original_parameters.add(originalParam); } } else if (object instanceof JRField) { JRField field = (JRField) object; JRField originalField = field.cloneMe(); if (applyNewFieldProperty( field, evt.getPropertyName(), evt.getOldValue(), evt.getNewValue())) { modified_fields.add(object); original_fields.add(originalField); } } else if (object instanceof JRVariable) { JRVariable variable = (JRVariable) object; JRVariable originalVariable = variable.cloneMe(); if (applyNewVariableProperty( variable, evt.getPropertyName(), evt.getOldValue(), evt.getNewValue())) { modified_variables.add(object); original_variables.add(originalVariable); } } // don't listen to these events... for (int k = 0; k < modified_parameters.size(); ++k) { JRParameter param = (JRParameter) modified_parameters.get(k); JRParameter oldParam = (JRParameter) original_parameters.get(k); SubDataset sd = Misc.getObjectSubDataset(getJrf().getReport(), param); sd.fireSubDatasetObjectChangedListenerSubDatasetObjectChanged( new it.businesslogic.ireport.gui.event.SubDatasetObjectChangedEvent( sd, it.businesslogic.ireport.gui.event.SubDatasetObjectChangedEvent.PARAMETER, it.businesslogic.ireport.gui.event.SubDatasetObjectChangedEvent.MODIFIED, oldParam, param)); } for (int k = 0; k < modified_fields.size(); ++k) { JRField field = (JRField) modified_fields.get(k); JRField oldField = (JRField) original_fields.get(k); SubDataset sd = Misc.getObjectSubDataset(getJrf().getReport(), field); sd.fireSubDatasetObjectChangedListenerSubDatasetObjectChanged( new it.businesslogic.ireport.gui.event.SubDatasetObjectChangedEvent( sd, it.businesslogic.ireport.gui.event.SubDatasetObjectChangedEvent.FIELD, it.businesslogic.ireport.gui.event.SubDatasetObjectChangedEvent.MODIFIED, oldField, field)); } for (int k = 0; k < modified_variables.size(); ++k) { JRVariable variable = (JRVariable) modified_variables.get(k); JRVariable oldVariable = (JRVariable) original_variables.get(k); SubDataset sd = Misc.getObjectSubDataset(getJrf().getReport(), variable); sd.fireSubDatasetObjectChangedListenerSubDatasetObjectChanged( new it.businesslogic.ireport.gui.event.SubDatasetObjectChangedEvent( sd, it.businesslogic.ireport.gui.event.SubDatasetObjectChangedEvent.VARIABLE, it.businesslogic.ireport.gui.event.SubDatasetObjectChangedEvent.MODIFIED, oldVariable, variable)); } } getJrf().getReport().incrementReportChanges(); } finally { setInit(false); } }