Author: mallon Date: 2012-06-20 14:38:11 +0200 (Wed, 20 Jun 2012) New Revision: 3460 Url: http://chorem.org/repositories/revision/lima/3460 Log: Un mod?\195?\168le d'UI pour la gestion des boutons des exercices (Cloture, suppression) a ?\195?\169t?\195?\169 rajout?\195?\169. Added: trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodModelUI.java Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodTableModel.java trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodView.jaxx trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodViewHandler.java Added: trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodModelUI.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodModelUI.java (rev 0) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodModelUI.java 2012-06-20 12:38:11 UTC (rev 3460) @@ -0,0 +1,94 @@ +package org.chorem.lima.ui.fiscalperiod; + +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; + +import javax.swing.DefaultListSelectionModel; + +import org.chorem.lima.entity.FiscalPeriod; + +public class FiscalPeriodModelUI extends DefaultListSelectionModel { + + public static final String SELECTED_FISCAL_PERIOD_PROPERTY = "selectedFiscalPeriod"; + + public static final String BLOCK_ENABLED_PROPERTY = "blockEnabled"; + + public static final String DELETE_ENABLED_PROPERTY = "deleteEnabled"; + + protected final PropertyChangeSupport pcs = new PropertyChangeSupport(this); + + protected FiscalPeriodTableModel model; + + protected FiscalPeriod selectedFiscalPeriod; + protected boolean blockEnabled; + protected boolean deleteEnabled; + + public FiscalPeriodModelUI(FiscalPeriodTableModel model) { + this.model = model; + } + + public boolean isDeleteEnabled() { + return deleteEnabled; + } + + public boolean isBlockEnabled() { + return blockEnabled; + } + + public FiscalPeriod getSelectedFiscalPeriod() { + return selectedFiscalPeriod; + } + + public void setBlockEnabled(boolean blockEnabled) { + Boolean oldValue = isBlockEnabled(); + this.blockEnabled = blockEnabled; + firePropertyChange(BLOCK_ENABLED_PROPERTY, oldValue, blockEnabled); + } + + public void setDeleteEnabled(boolean deleteEnabled) { + Boolean oldValue = isDeleteEnabled(); + this.deleteEnabled = deleteEnabled; + firePropertyChange(DELETE_ENABLED_PROPERTY, oldValue, deleteEnabled); + } + + public void setSelectedFiscalPeriod(FiscalPeriod selectedFiscalPeriod) { + FiscalPeriod oldValue = getSelectedFiscalPeriod(); + this.selectedFiscalPeriod = selectedFiscalPeriod; + firePropertyChange(SELECTED_FISCAL_PERIOD_PROPERTY, oldValue, selectedFiscalPeriod); + + int rowToSelect = model.getRow(selectedFiscalPeriod); + super.setSelectionInterval(rowToSelect, rowToSelect); + } + + public void addPropertyChangeListener(PropertyChangeListener listener) { + pcs.addPropertyChangeListener(listener); + } + + public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { + pcs.addPropertyChangeListener(propertyName, listener); + } + + public void removePropertyChangeListener(PropertyChangeListener listener) { + pcs.removePropertyChangeListener(listener); + } + + public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { + pcs.removePropertyChangeListener(propertyName, listener); + } + + protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) { + pcs.firePropertyChange(propertyName, oldValue, newValue); + } + + @Override + public void setSelectionInterval(int index0, int index1) { + super.setSelectionInterval(index0, index1); + setSelectedFiscalPeriod(model.getFiscalPeriodAt(index0)); + } + + @Override + public int getSelectionMode() { + return SINGLE_SELECTION; + } + +} Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodTableModel.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodTableModel.java 2012-06-19 15:49:11 UTC (rev 3459) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodTableModel.java 2012-06-20 12:38:11 UTC (rev 3460) @@ -71,10 +71,20 @@ } public FiscalPeriod getFiscalPeriodAt(int row) { + if (row == -1) { + return null; + } FiscalPeriod result = fiscalPeriods.get(row); return result; } + public int getRow(FiscalPeriod period) { + if (period == null) { + return -1; + } + return fiscalPeriods.indexOf(period); + } + @Override public String getColumnName(int columnIndex) { Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodView.jaxx =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodView.jaxx 2012-06-19 15:49:11 UTC (rev 3459) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodView.jaxx 2012-06-20 12:38:11 UTC (rev 3460) @@ -32,7 +32,8 @@ </import> <FiscalPeriodViewHandler id="handler" constructorParams="this"/> - <Boolean id="selectedPeriod" javaBean="false"/> + <FiscalPeriodTableModel id="fiscalPeriodTableModel" /> + <FiscalPeriodModelUI id='model' constructorParams='fiscalPeriodTableModel'/> <script><![CDATA[ void $afterCompleteSetup() { @@ -43,16 +44,12 @@ <row> <cell fill="both" weightx="1" weighty="1" rows="5"> <JScrollPane> - <FiscalPeriodTableModel id="fiscalPeriodTableModel" /> <FiscalPeriodTable id="fiscalPeriodTable" sortable="false" rowHeight="24" - constructorParams="getFiscalPeriodTableModel()" - selectionMode="{ListSelectionModel.SINGLE_INTERVAL_SELECTION}" + constructorParams="getFiscalPeriodTableModel()" columnControlVisible="true" + selectionModel='{model}' /> - <ListSelectionModel - javaBean="getFiscalPeriodTable().getSelectionModel()" - onValueChanged="getHandler().reloadEnablingButton()"/> </JScrollPane> </cell> </row> @@ -65,12 +62,14 @@ <row> <cell fill="horizontal"> <JButton id="blockButton" text="lima.charts.fiscalperiod.block" + enabled="{getModel().isBlockEnabled()}" onActionPerformed="getHandler().blockFiscalPeriod()"/> </cell> </row> <row> <cell fill="horizontal"> <JButton id="deleteButton" text="lima.charts.fiscalperiod.delete" + enabled="{getModel().isDeleteEnabled()}" onActionPerformed="getHandler().deleteFiscalPeriod()"/> </cell> </row> Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodViewHandler.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodViewHandler.java 2012-06-19 15:49:11 UTC (rev 3459) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodViewHandler.java 2012-06-20 12:38:11 UTC (rev 3460) @@ -27,6 +27,8 @@ import static org.nuiton.i18n.I18n._; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.math.BigDecimal; import java.util.Calendar; import java.util.Collection; @@ -34,6 +36,7 @@ import java.util.List; import javax.swing.JOptionPane; +import javax.swing.text.View; import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.logging.Log; @@ -87,6 +90,15 @@ public void init() { loadAllFiscalPeriod(); + FiscalPeriodModelUI model = view.getModel(); + model.addPropertyChangeListener(FiscalPeriodModelUI.SELECTED_FISCAL_PERIOD_PROPERTY, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + FiscalPeriodModelUI model = (FiscalPeriodModelUI)evt.getSource(); + FiscalPeriod selectedFiscalPeriod = (FiscalPeriod)evt.getNewValue(); + reloadEnablingButton(model, selectedFiscalPeriod); + } + }); } /** @@ -294,39 +306,39 @@ /** * Manage the differents buttons for fiscal period * */ - public void reloadEnablingButton(){ + protected void reloadEnablingButton(FiscalPeriodModelUI model, FiscalPeriod selectedFiscalPeriod){ - JXTable fiscalPeriodeTable = view.getFiscalPeriodTable(); - FiscalPeriodTableModel model = view.getFiscalPeriodTableModel(); + financialTransactionService = LimaServiceFactory.getService(FinancialTransactionService.class); + List<FinancialTransaction> financialTransactionList = financialTransactionService.getAllFinancialTransactions(selectedFiscalPeriod); - int selectedRow = fiscalPeriodeTable.getSelectedRow(); + boolean enableBlock = false; + boolean enableDelete = false; + - //when a fiscal period is deleted, no row is selected ('-1') - if (selectedRow != -1){ - FiscalPeriod selectedFiscalPeriod = model.getFiscalPeriodAt(selectedRow); - - financialTransactionService = LimaServiceFactory.getService(FinancialTransactionService.class); - List<FinancialTransaction> financialTransactionList = financialTransactionService.getAllFinancialTransactions(selectedFiscalPeriod); - - //no action possible for fiscal period closed - if (selectedFiscalPeriod.getLocked()){ - view.blockButton.setEnabled(false); - view.deleteButton.setEnabled(false); - }else{ - view.blockButton.setEnabled(true); - - //only an empty fiscal period may be deleted - if (financialTransactionList.size() <= 0){ - view.deleteButton.setEnabled(true); - }else{ - view.deleteButton.setEnabled(false); - } - } - }else{ - //after an action (delete or closure), reinitialization at false - view.blockButton.setEnabled(false); - view.deleteButton.setEnabled(false); + //when a fiscal period is deleted, no row is selected ('-1') + if (selectedFiscalPeriod != null){ + + //no action possible for fiscal period closed + if (!selectedFiscalPeriod.getLocked()){ + enableBlock = true; + + System.out.println(" ! selectedFiscalPeriod.getLocked()"); + + //only an empty and open fiscal period may be deleted + if (financialTransactionList.size() <= 0){ + enableDelete = true; + + System.out.println("open and financialTransactionList.size() <= 0"); + + }else{ + enableDelete = false; + + System.out.println("open and financialTransactionList.size() > 0"); + } + } } + model.setBlockEnabled(enableBlock); + model.setDeleteEnabled(enableDelete); } }