Author: tchemit Date: 2013-11-26 15:56:35 +0100 (Tue, 26 Nov 2013) New Revision: 1392 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1392 Log: move some classes Added: branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/AbstractTuttiBatchTableUIHandler.java branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/AbstractTuttiBatchUIModel.java Removed: branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchUIModel.java Modified: branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIModel.java branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIModel.java branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIModel.java branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java Deleted: branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java =================================================================== --- branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java 2013-11-26 14:56:06 UTC (rev 1391) +++ branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java 2013-11-26 14:56:35 UTC (rev 1392) @@ -1,154 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.operation; - -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; -import fr.ifremer.tutti.ui.swing.util.TuttiUI; -import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; -import fr.ifremer.shared.application.swing.table.AbstractApplicationTableModel; -import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; -import fr.ifremer.shared.application.swing.table.ColumnIdentifier; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.jdesktop.swingx.JXTable; -import org.jdesktop.swingx.decorator.ComponentAdapter; -import org.jdesktop.swingx.decorator.HighlightPredicate; -import org.jdesktop.swingx.decorator.Highlighter; -import org.jdesktop.swingx.sort.TableSortController; -import org.jdesktop.swingx.table.TableColumnModelExt; - -import javax.swing.table.TableModel; -import java.awt.Color; -import java.awt.Component; -import java.util.Collection; - -/** - * Abstract ui handler forbatch ui. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.2 - */ -public abstract class AbstractTuttiBatchTableUIHandler<R extends AbstractTuttiBeanUIModel, M extends AbstractTuttiBatchUIModel<R, M>, T extends AbstractApplicationTableModel<R>, UI extends TuttiUI<M, ?>> extends AbstractTuttiTableUIHandler<R, M, UI> { - - protected abstract ColumnIdentifier<R> getCommentIdentifier(); - - protected abstract ColumnIdentifier<R> getAttachementIdentifier(); - - public abstract void selectFishingOperation(FishingOperation bean); - - protected AbstractTuttiBatchTableUIHandler(TuttiUI<?, ?> parentUi, - UI ui, - String... properties) { - super(parentUi.getHandler().getContext(), ui, properties); - } - - /** - * To clear the table selection. - * <p/> - * This method is invoked before changing the fishing operation. - * - * @since 0.3 - */ - public final void clearTableSelection() { - - JXTable table = getTable(); - - if (table.isEditing()) { - - // make sure to stop editor - table.editingCanceled(null); - } - - // make sure selection is empty (will remove bean from monitor) - table.clearSelection(); - } - - @Override - protected void onRowModified(int rowIndex, - R row, - String propertyName, - Object oldValue, - Object newValue) { - recomputeRowValidState(row); - - saveSelectedRowIfNeeded(); - } - - protected void initBatchTable(JXTable table, - TableColumnModelExt columnModel, - T tableModel) { - - installTableKeyListener(columnModel, table); - - TableSortController<TableModel> sorter = new TableSortController<TableModel>(tableModel); - sorter.setSortable(false); - table.setRowSorter(sorter); - - initTable(table); - } - - @Override - protected void addHighlighters(final JXTable table) { - super.addHighlighters(table); - addCommentHighlighter(table, getCommentIdentifier()); - addAttachementHighlighter(table, getAttachementIdentifier()); - } - - protected void addCommentHighlighter(JXTable table, ColumnIdentifier identifier) { - Color cellWithValueColor = getConfig().getColorCellWithValue(); - - Highlighter commentHighlighter = TuttiUIUtil.newBackgroundColorHighlighter( - new HighlightPredicate.AndHighlightPredicate( - new HighlightPredicate.IdentifierHighlightPredicate(identifier), - // for not null value - new HighlightPredicate() { - @Override - public boolean isHighlighted(Component renderer, ComponentAdapter adapter) { - String value = (String) adapter.getValue(); - return StringUtils.isNotBlank(value); - } - }), cellWithValueColor); - table.addHighlighter(commentHighlighter); - } - - protected void addAttachementHighlighter(JXTable table, ColumnIdentifier identifier) { - Color cellWithValueColor = getConfig().getColorCellWithValue(); - - Highlighter attachmentHighlighter = TuttiUIUtil.newBackgroundColorHighlighter( - new HighlightPredicate.AndHighlightPredicate( - new HighlightPredicate.IdentifierHighlightPredicate(identifier), - // for not null value - new HighlightPredicate() { - @Override - public boolean isHighlighted(Component renderer, ComponentAdapter adapter) { - Collection attachments = (Collection) adapter.getValue(); - return CollectionUtils.isNotEmpty(attachments); - } - } - ), cellWithValueColor); - table.addHighlighter(attachmentHighlighter); - } -} Deleted: branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchUIModel.java =================================================================== --- branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchUIModel.java 2013-11-26 14:56:06 UTC (rev 1391) +++ branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchUIModel.java 2013-11-26 14:56:35 UTC (rev 1392) @@ -1,90 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.operation; - -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.google.common.collect.Sets; -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; -import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; -import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; - -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.Set; - -/** - * Abstract model for ui in batch tabs. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.3 - */ -public abstract class AbstractTuttiBatchUIModel<R extends AbstractTuttiBeanUIModel, B extends AbstractTuttiBatchUIModel<R, B>> extends AbstractTuttiTableUIModel<FishingOperation, R, B> { - - private static final long serialVersionUID = 1L; - - /** - * Fishing Operation to prapagate to operations model. - * - * @since 0.3 - */ - protected final Set<String> propagateProperties; - - /** - * Editing fishing operations model. - * - * @since 0.3 - */ - protected final EditCatchesUIModel catchesUIModel; - - protected AbstractTuttiBatchUIModel(EditCatchesUIModel catchesUIModel, - String... properties) { - super(FishingOperation.class, null, null); - this.catchesUIModel = catchesUIModel; - propagateProperties = Sets.newHashSet(properties); - catchesUIModel.addPropertyChangeListener(new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - if (propagateProperties.contains(evt.getPropertyName())) { - firePropertyChange(evt.getPropertyName(), evt.getOldValue(), evt.getNewValue()); - } - } - }); - } - - public final FishingOperation getFishingOperation() { - return catchesUIModel == null ? null : catchesUIModel.getFishingOperation(); - } - - @Override - protected FishingOperation newEntity() { - return null; - } - - public void fireBatchUpdated(R row) { - if (catchesUIModel != null) { - catchesUIModel.firePropertyChanged(EditCatchesUIModel.PROPERTY_BATCH_UPDATED, null, row); - } - } -} Modified: branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css =================================================================== --- branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-11-26 14:56:06 UTC (rev 1391) +++ branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-11-26 14:56:35 UTC (rev 1392) @@ -410,7 +410,7 @@ propertyDegree: gearShootingStartLongitudeDmsDegree; propertyMinute: gearShootingStartLongitudeDmsMinute; propertySecond: gearShootingStartLongitudeDmsSecond; - longitudeEditor: true; + _longitudeEditor: {true}; value: {model.getGearShootingStartLongitudeDms()}; showResetTip: "tutti.coordinate.action.reset.longitude.tip"; _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingStartLongitude")}; @@ -421,7 +421,7 @@ propertyDegree: gearShootingStartLongitudeDmdDegree; propertyMinute: gearShootingStartLongitudeDmdMinute; propertyDecimal: gearShootingStartLongitudeDmdDecimal; - longitudeEditor: true; + _longitudeEditor: {true}; value: {model.getGearShootingStartLongitudeDmd()}; showResetTip: "tutti.coordinate.action.reset.longitude.tip"; _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingStartLongitude")}; @@ -490,7 +490,7 @@ propertyDegree: gearShootingEndLongitudeDmsDegree; propertyMinute: gearShootingEndLongitudeDmsMinute; propertySecond: gearShootingEndLongitudeDmsSecond; - longitudeEditor: true; + _longitudeEditor: {true}; value: {model.getGearShootingEndLongitudeDms()}; showResetTip: "tutti.coordinate.action.reset.longitude.tip"; _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingEndLongitude")}; @@ -501,7 +501,7 @@ propertyDegree: gearShootingEndLongitudeDmdDegree; propertyMinute: gearShootingEndLongitudeDmdMinute; propertyDecimal: gearShootingEndLongitudeDmdDecimal; - longitudeEditor: true; + _longitudeEditor: {true}; value: {model.getGearShootingEndLongitudeDmd()}; showResetTip: "tutti.coordinate.action.reset.longitude.tip"; _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingEndLongitude")}; Modified: branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java =================================================================== --- branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-11-26 14:56:06 UTC (rev 1391) +++ branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-11-26 14:56:35 UTC (rev 1392) @@ -595,7 +595,7 @@ DmsCoordinate position = DmsCoordinate.valueOf(decimal); setGearShootingEndLatitudeDmsSign(position.isSign()); - setGearShootingEndLatitudeDmdDegree(position.getDegree()); + setGearShootingEndLatitudeDmsDegree(position.getDegree()); setGearShootingEndLatitudeDmsMinute(position.getMinute()); setGearShootingEndLatitudeDmsSecond(position.getSecond()); firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LATITUDE_DMS, null, getGearShootingEndLatitudeDms()); @@ -892,10 +892,6 @@ setGearShootingEndLongitudeDmd(getGearShootingEndLongitude()); break; } - -// quadrant = GeoPositionHelper.getQuadrant( -// getGearShootingStartLongitude(), -// getGearShootingStartLatitude()); } public void convertGearShootingCoordinatesToDD() { Copied: branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/AbstractTuttiBatchTableUIHandler.java (from rev 1385, branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java) =================================================================== --- branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/AbstractTuttiBatchTableUIHandler.java (rev 0) +++ branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/AbstractTuttiBatchTableUIHandler.java 2013-11-26 14:56:35 UTC (rev 1392) @@ -0,0 +1,154 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; +import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.shared.application.swing.table.AbstractApplicationTableModel; +import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; +import fr.ifremer.shared.application.swing.table.ColumnIdentifier; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.jdesktop.swingx.JXTable; +import org.jdesktop.swingx.decorator.ComponentAdapter; +import org.jdesktop.swingx.decorator.HighlightPredicate; +import org.jdesktop.swingx.decorator.Highlighter; +import org.jdesktop.swingx.sort.TableSortController; +import org.jdesktop.swingx.table.TableColumnModelExt; + +import javax.swing.table.TableModel; +import java.awt.Color; +import java.awt.Component; +import java.util.Collection; + +/** + * Abstract ui handler forbatch ui. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.2 + */ +public abstract class AbstractTuttiBatchTableUIHandler<R extends AbstractTuttiBeanUIModel, M extends AbstractTuttiBatchUIModel<R, M>, T extends AbstractApplicationTableModel<R>, UI extends TuttiUI<M, ?>> extends AbstractTuttiTableUIHandler<R, M, UI> { + + protected abstract ColumnIdentifier<R> getCommentIdentifier(); + + protected abstract ColumnIdentifier<R> getAttachementIdentifier(); + + public abstract void selectFishingOperation(FishingOperation bean); + + protected AbstractTuttiBatchTableUIHandler(TuttiUI<?, ?> parentUi, + UI ui, + String... properties) { + super(parentUi.getHandler().getContext(), ui, properties); + } + + /** + * To clear the table selection. + * <p/> + * This method is invoked before changing the fishing operation. + * + * @since 0.3 + */ + public final void clearTableSelection() { + + JXTable table = getTable(); + + if (table.isEditing()) { + + // make sure to stop editor + table.editingCanceled(null); + } + + // make sure selection is empty (will remove bean from monitor) + table.clearSelection(); + } + + @Override + protected void onRowModified(int rowIndex, + R row, + String propertyName, + Object oldValue, + Object newValue) { + recomputeRowValidState(row); + + saveSelectedRowIfNeeded(); + } + + protected void initBatchTable(JXTable table, + TableColumnModelExt columnModel, + T tableModel) { + + installTableKeyListener(columnModel, table); + + TableSortController<TableModel> sorter = new TableSortController<TableModel>(tableModel); + sorter.setSortable(false); + table.setRowSorter(sorter); + + initTable(table); + } + + @Override + protected void addHighlighters(final JXTable table) { + super.addHighlighters(table); + addCommentHighlighter(table, getCommentIdentifier()); + addAttachementHighlighter(table, getAttachementIdentifier()); + } + + protected void addCommentHighlighter(JXTable table, ColumnIdentifier identifier) { + Color cellWithValueColor = getConfig().getColorCellWithValue(); + + Highlighter commentHighlighter = TuttiUIUtil.newBackgroundColorHighlighter( + new HighlightPredicate.AndHighlightPredicate( + new HighlightPredicate.IdentifierHighlightPredicate(identifier), + // for not null value + new HighlightPredicate() { + @Override + public boolean isHighlighted(Component renderer, ComponentAdapter adapter) { + String value = (String) adapter.getValue(); + return StringUtils.isNotBlank(value); + } + }), cellWithValueColor); + table.addHighlighter(commentHighlighter); + } + + protected void addAttachementHighlighter(JXTable table, ColumnIdentifier identifier) { + Color cellWithValueColor = getConfig().getColorCellWithValue(); + + Highlighter attachmentHighlighter = TuttiUIUtil.newBackgroundColorHighlighter( + new HighlightPredicate.AndHighlightPredicate( + new HighlightPredicate.IdentifierHighlightPredicate(identifier), + // for not null value + new HighlightPredicate() { + @Override + public boolean isHighlighted(Component renderer, ComponentAdapter adapter) { + Collection attachments = (Collection) adapter.getValue(); + return CollectionUtils.isNotEmpty(attachments); + } + } + ), cellWithValueColor); + table.addHighlighter(attachmentHighlighter); + } +} Copied: branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/AbstractTuttiBatchUIModel.java (from rev 1385, branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchUIModel.java) =================================================================== --- branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/AbstractTuttiBatchUIModel.java (rev 0) +++ branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/AbstractTuttiBatchUIModel.java 2013-11-26 14:56:35 UTC (rev 1392) @@ -0,0 +1,89 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import com.google.common.collect.Sets; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.Set; + +/** + * Abstract model for ui in batch tabs. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public abstract class AbstractTuttiBatchUIModel<R extends AbstractTuttiBeanUIModel, B extends AbstractTuttiBatchUIModel<R, B>> extends AbstractTuttiTableUIModel<FishingOperation, R, B> { + + private static final long serialVersionUID = 1L; + + /** + * Fishing Operation to prapagate to operations model. + * + * @since 0.3 + */ + protected final Set<String> propagateProperties; + + /** + * Editing fishing operations model. + * + * @since 0.3 + */ + protected final EditCatchesUIModel catchesUIModel; + + protected AbstractTuttiBatchUIModel(EditCatchesUIModel catchesUIModel, + String... properties) { + super(FishingOperation.class, null, null); + this.catchesUIModel = catchesUIModel; + propagateProperties = Sets.newHashSet(properties); + catchesUIModel.addPropertyChangeListener(new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (propagateProperties.contains(evt.getPropertyName())) { + firePropertyChange(evt.getPropertyName(), evt.getOldValue(), evt.getNewValue()); + } + } + }); + } + + public final FishingOperation getFishingOperation() { + return catchesUIModel == null ? null : catchesUIModel.getFishingOperation(); + } + + @Override + protected FishingOperation newEntity() { + return null; + } + + public void fireBatchUpdated(R row) { + if (catchesUIModel != null) { + catchesUIModel.firePropertyChanged(EditCatchesUIModel.PROPERTY_BATCH_UPDATED, null, row); + } + } +} Modified: branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java =================================================================== --- branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-11-26 14:56:06 UTC (rev 1391) +++ branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-11-26 14:56:35 UTC (rev 1392) @@ -36,7 +36,7 @@ import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.ValidationService; import fr.ifremer.shared.application.type.WeightUnit; -import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler; +import fr.ifremer.tutti.ui.swing.content.operation.catches.AbstractTuttiBatchTableUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; Modified: branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIModel.java =================================================================== --- branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIModel.java 2013-11-26 14:56:06 UTC (rev 1391) +++ branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIModel.java 2013-11-26 14:56:35 UTC (rev 1392) @@ -24,7 +24,7 @@ * #L% */ -import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchUIModel; +import fr.ifremer.tutti.ui.swing.content.operation.catches.AbstractTuttiBatchUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; import fr.ifremer.shared.application.swing.tab.TabContentModel; import org.apache.commons.collections.CollectionUtils; Modified: branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java =================================================================== --- branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-11-26 14:56:06 UTC (rev 1391) +++ branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-11-26 14:56:35 UTC (rev 1392) @@ -46,7 +46,7 @@ import fr.ifremer.tutti.service.TuttiDecorator; import fr.ifremer.tutti.service.ValidationService; import fr.ifremer.tutti.service.catches.ValidateCruiseOperationsService; -import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler; +import fr.ifremer.tutti.ui.swing.content.operation.catches.AbstractTuttiBatchTableUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; Modified: branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIModel.java =================================================================== --- branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIModel.java 2013-11-26 14:56:06 UTC (rev 1391) +++ branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIModel.java 2013-11-26 14:56:35 UTC (rev 1392) @@ -27,7 +27,7 @@ import com.google.common.collect.Multimap; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchUIModel; +import fr.ifremer.tutti.ui.swing.content.operation.catches.AbstractTuttiBatchUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.TableViewMode; import fr.ifremer.shared.application.swing.tab.TabContentModel; Modified: branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java =================================================================== --- branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java 2013-11-26 14:56:06 UTC (rev 1391) +++ branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java 2013-11-26 14:56:35 UTC (rev 1392) @@ -36,7 +36,7 @@ import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.ValidationService; import fr.ifremer.shared.application.type.WeightUnit; -import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler; +import fr.ifremer.tutti.ui.swing.content.operation.catches.AbstractTuttiBatchTableUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; Modified: branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java =================================================================== --- branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java 2013-11-26 14:56:06 UTC (rev 1391) +++ branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java 2013-11-26 14:56:35 UTC (rev 1392) @@ -26,7 +26,7 @@ import com.google.common.collect.Sets; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchUIModel; +import fr.ifremer.tutti.ui.swing.content.operation.catches.AbstractTuttiBatchUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; import fr.ifremer.shared.application.swing.tab.TabContentModel; import org.apache.commons.collections.CollectionUtils; Modified: branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java =================================================================== --- branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java 2013-11-26 14:56:06 UTC (rev 1391) +++ branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java 2013-11-26 14:56:35 UTC (rev 1392) @@ -35,7 +35,7 @@ import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.service.ValidationService; import fr.ifremer.shared.application.type.WeightUnit; -import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler; +import fr.ifremer.tutti.ui.swing.content.operation.catches.AbstractTuttiBatchTableUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; Modified: branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIModel.java =================================================================== --- branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIModel.java 2013-11-26 14:56:06 UTC (rev 1391) +++ branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIModel.java 2013-11-26 14:56:35 UTC (rev 1392) @@ -26,7 +26,7 @@ import com.google.common.collect.Multimap; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; -import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchUIModel; +import fr.ifremer.tutti.ui.swing.content.operation.catches.AbstractTuttiBatchUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; import fr.ifremer.shared.application.swing.tab.TabContentModel; import fr.ifremer.shared.application.swing.computable.ComputableData; Modified: branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java =================================================================== --- branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-11-26 14:56:06 UTC (rev 1391) +++ branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-11-26 14:56:35 UTC (rev 1392) @@ -45,7 +45,7 @@ import fr.ifremer.tutti.service.ValidationService; import fr.ifremer.shared.application.type.WeightUnit; import fr.ifremer.tutti.service.catches.ValidateCruiseOperationsService; -import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler; +import fr.ifremer.tutti.ui.swing.content.operation.catches.AbstractTuttiBatchTableUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; Modified: branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java =================================================================== --- branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java 2013-11-26 14:56:06 UTC (rev 1391) +++ branches/tutti-with-ifremer-shared/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java 2013-11-26 14:56:35 UTC (rev 1392) @@ -30,7 +30,7 @@ import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchUIModel; +import fr.ifremer.tutti.ui.swing.content.operation.catches.AbstractTuttiBatchUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.TableViewMode; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyRowModel;