Author: tchemit Date: 2012-12-12 23:50:16 +0100 (Wed, 12 Dec 2012) New Revision: 53 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/53 Log: improve row modification cinematic Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2012-12-12 22:43:46 UTC (rev 52) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2012-12-12 22:50:16 UTC (rev 53) @@ -25,6 +25,7 @@ */ import com.google.common.base.Preconditions; +import com.google.common.collect.Sets; import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.TuttiUIContext; @@ -35,6 +36,7 @@ import jaxx.runtime.swing.editor.bean.BeanUIUtil; import jaxx.runtime.swing.editor.cell.NumberCellEditor; import jaxx.runtime.swing.renderer.DecoratorTableCellRenderer; +import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.autocomplete.ComboBoxCellEditor; @@ -57,6 +59,7 @@ import java.beans.PropertyChangeListener; import java.util.Enumeration; import java.util.List; +import java.util.Set; import static org.nuiton.i18n.I18n._; @@ -90,21 +93,55 @@ Object oldValue, Object newValue); + protected abstract void onRowValidStateChanged(R row, + Boolean oldValue, + Boolean newValue); + + protected abstract void onRowModifyStateChanged(R row, + Boolean oldValue, + Boolean newValue); + + protected String[] getRowPropertiesToIgnore() { + return ArrayUtils.EMPTY_STRING_ARRAY; + } + protected AbstractTuttiTableUIHandler(TuttiUIContext context, String... properties) { super(context); + rowMonitor = new TuttiBeanMonitor<R>(properties); // listen when bean is changed rowMonitor.addPropertyChangeListener(TuttiBeanMonitor.PROPERTY_BEAN, new PropertyChangeListener() { + + final Set<String> propertiesToSkip = + Sets.newHashSet(getRowPropertiesToIgnore()); + final PropertyChangeListener l = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { + String propertyName = evt.getPropertyName(); + R row = (R) evt.getSource(); - onRowModified(row, - evt.getPropertyName(), - evt.getOldValue(), - evt.getNewValue()); + + Object oldValue = evt.getOldValue(); + Object newValue = evt.getNewValue(); + + if (AbstractTuttiBeanUIModel.PROPERTY_VALID.equals(propertyName)) { + onRowValidStateChanged(row, + (Boolean) oldValue, + (Boolean) newValue); + } else if (AbstractTuttiBeanUIModel.PROPERTY_MODIFY.equals(propertyName)) { + onRowModifyStateChanged(row, + (Boolean) oldValue, + (Boolean) newValue); + } else if (!propertiesToSkip.contains(propertyName)) { + + onRowModified(row, + propertyName, + oldValue, + newValue); + } } };
participants (1)
-
tchemit@users.forge.codelutin.com