Author: mallon Date: 2012-08-10 18:31:26 +0200 (Fri, 10 Aug 2012) New Revision: 3598 Url: http://chorem.org/repositories/revision/lima/3598 Log: refs #625 Correction sur le modele utilise dans la gestion des boutons de cloture et de suppression d'exercice, afin de permettre le binding de jaxx. Modified: trunk/lima-callao/src/main/java/org/chorem/lima/entity/FiscalPeriodDAOImpl.java trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodModelUI.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 trunk/lima-swing/src/main/resources/log4j.properties Modified: trunk/lima-callao/src/main/java/org/chorem/lima/entity/FiscalPeriodDAOImpl.java =================================================================== --- trunk/lima-callao/src/main/java/org/chorem/lima/entity/FiscalPeriodDAOImpl.java 2012-08-10 11:36:35 UTC (rev 3597) +++ trunk/lima-callao/src/main/java/org/chorem/lima/entity/FiscalPeriodDAOImpl.java 2012-08-10 16:31:26 UTC (rev 3598) @@ -123,7 +123,11 @@ " WHERE locked = false" + " ORDER BY endDate desc"; - FiscalPeriod fiscalPeriod = (FiscalPeriod)context.findUnique(query); - return fiscalPeriod; + List<FiscalPeriod> fiscalPeriods = context.findAll(query); + FiscalPeriod result = null; + if (!fiscalPeriods.isEmpty()) { + result = fiscalPeriods.get(0); + } + return result; } } Modified: 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 2012-08-10 11:36:35 UTC (rev 3597) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodModelUI.java 2012-08-10 16:31:26 UTC (rev 3598) @@ -23,31 +23,22 @@ * #L% */ -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; - -import javax.swing.DefaultListSelectionModel; - import org.chorem.lima.entity.FiscalPeriod; +import org.jdesktop.beans.AbstractSerializableBean; -public class FiscalPeriodModelUI extends DefaultListSelectionModel { +public class FiscalPeriodModelUI extends AbstractSerializableBean { - public static final String SELECTED_FISCAL_PERIOD_PROPERTY = "selectedFiscalPeriod"; - + private static final long serialVersionUID = 1L; + 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 FiscalPeriodModelUI() { } public boolean isDeleteEnabled() { @@ -58,10 +49,6 @@ return blockEnabled; } - public FiscalPeriod getSelectedFiscalPeriod() { - return selectedFiscalPeriod; - } - public void setBlockEnabled(boolean blockEnabled) { Boolean oldValue = isBlockEnabled(); this.blockEnabled = blockEnabled; @@ -73,45 +60,7 @@ 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/FiscalPeriodView.jaxx =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodView.jaxx 2012-08-10 11:36:35 UTC (rev 3597) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodView.jaxx 2012-08-10 16:31:26 UTC (rev 3598) @@ -27,13 +27,15 @@ <import> javax.swing.ListSelectionModel + javax.swing.DefaultListSelectionModel org.chorem.lima.entity.FiscalPeriod org.chorem.lima.entity.FinancialPeriod </import> <FiscalPeriodViewHandler id="handler" constructorParams="this"/> <FiscalPeriodTableModel id="fiscalPeriodTableModel" /> - <FiscalPeriodModelUI id='model' constructorParams='fiscalPeriodTableModel'/> + <ListSelectionModel id="selectionModel" initializer="new DefaultListSelectionModel()" onValueChanged="handler.onSelectionChanged(event)" selectionMode="{ListSelectionModel.SINGLE_SELECTION}"/> + <FiscalPeriodModelUI id='model' javaBean='new FiscalPeriodModelUI()'/> <script><![CDATA[ void $afterCompleteSetup() { @@ -48,7 +50,7 @@ id="fiscalPeriodTable" sortable="false" rowHeight="24" constructorParams="getFiscalPeriodTableModel()" columnControlVisible="true" - selectionModel='{model}'/> + selectionModel='{selectionModel}'/> </JScrollPane> </cell> </row> @@ -61,14 +63,14 @@ <row> <cell fill="horizontal"> <JButton id="blockButton" text="lima.charts.fiscalperiod.block" - enabled="{getModel().isBlockEnabled()}" + enabled="{model.isBlockEnabled()}" onActionPerformed="getHandler().blockFiscalPeriod()"/> </cell> </row> <row> <cell fill="horizontal"> <JButton id="deleteButton" text="lima.charts.fiscalperiod.delete" - enabled="{getModel().isDeleteEnabled()}" + enabled="{model.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-08-10 11:36:35 UTC (rev 3597) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodViewHandler.java 2012-08-10 16:31:26 UTC (rev 3598) @@ -35,7 +35,9 @@ import java.util.Date; import java.util.List; +import javax.swing.DefaultListSelectionModel; import javax.swing.JOptionPane; +import javax.swing.event.ListSelectionEvent; import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.logging.Log; @@ -89,15 +91,6 @@ 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); - } - }); } /** @@ -161,6 +154,8 @@ fiscalPeriodService.deleteFiscalPeriod(selectedFiscalPeriod); model.deleteFiscalPeriod(selectedFiscalPeriod); + view.getModel().setBlockEnabled(false); + view.getModel().setDeleteEnabled(false); } } @@ -215,6 +210,11 @@ JOptionPane.WARNING_MESSAGE); if (response == JOptionPane.YES_OPTION) { + // FIXME report a nouveau et bloquage en une seule opération + // transactionnelle + selectedFiscalPeriod = fiscalPeriodService.blockFiscalPeriod(selectedFiscalPeriod); + model.updateFiscalPeriod(selectedFiscalPeriod); + //use to tell if the user wants to create a new fiscal year boolean newyear = false; //check if two fiscal periods are open @@ -233,11 +233,9 @@ } } - // FIXME report a nouveau et bloquage en une seule opération - // transactionnelle addRetainedEarnings(selectedFiscalPeriod, newyear); - selectedFiscalPeriod = fiscalPeriodService.blockFiscalPeriod(selectedFiscalPeriod); - model.updateFiscalPeriod(selectedFiscalPeriod); + view.getModel().setBlockEnabled(false); + view.getModel().setDeleteEnabled(false); } } @@ -307,33 +305,53 @@ /** * Manage the differents buttons for fiscal period * */ - protected void reloadEnablingButton(FiscalPeriodModelUI model, FiscalPeriod selectedFiscalPeriod){ - - financialTransactionService = LimaServiceFactory.getService(FinancialTransactionService.class); - List<FinancialTransaction> financialTransactionList = financialTransactionService.getAllFinancialTransactions(selectedFiscalPeriod); - - boolean enableBlock = false; - boolean enableDelete = false; + protected void onSelectionChanged(ListSelectionEvent listSelectionEvent){ + if(!listSelectionEvent.getValueIsAdjusting()) { + DefaultListSelectionModel listSelectionModel = (DefaultListSelectionModel)listSelectionEvent.getSource(); - - //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; - - //only an empty and open fiscal period may be deleted - if (financialTransactionList.size() <= 0){ - enableDelete = true; - - }else{ - enableDelete = false; - } - } + int selectedRow = listSelectionEvent.getFirstIndex(); + if (!listSelectionModel.isSelectedIndex(selectedRow)) { + selectedRow = listSelectionEvent.getLastIndex(); + } + + FiscalPeriodTableModel fiscalPeriodTableModel = view.getFiscalPeriodTableModel(); + if (fiscalPeriodTableModel.getRowCount() != selectedRow) { + FiscalPeriod fiscalPeriodAt = fiscalPeriodTableModel.getFiscalPeriodAt(selectedRow); + + List<FinancialTransaction> financialTransactionList = financialTransactionService.getAllFinancialTransactions(fiscalPeriodAt); + + boolean enableBlock = false; + boolean enableDelete = false; + + if (log.isDebugEnabled()) { + log.debug("reloadEnablingButton"); + } + + if (selectedRow != -1){ + if (log.isDebugEnabled()) { + log.debug("selectedFiscalPeriod != null"); + } + + //no action possible for fiscal period closed + if (!fiscalPeriodAt.getLocked()){ + if (log.isDebugEnabled()) { + log.debug("selectedFiscalPeriod not locked"); + } + enableBlock = true; + + //only an empty and open fiscal period may be deleted + if (financialTransactionList.size() <= 0){ + enableDelete = true; + + }else{ + enableDelete = false; + } + } + } + view.getModel().setBlockEnabled(enableBlock); + view.getModel().setDeleteEnabled(enableDelete); + } } - model.setBlockEnabled(enableBlock); - model.setDeleteEnabled(enableDelete); } } Modified: trunk/lima-swing/src/main/resources/log4j.properties =================================================================== --- trunk/lima-swing/src/main/resources/log4j.properties 2012-08-10 11:36:35 UTC (rev 3597) +++ trunk/lima-swing/src/main/resources/log4j.properties 2012-08-10 16:31:26 UTC (rev 3598) @@ -53,4 +53,5 @@ log4j.logger.org.chorem.lima.entity.FinancialTransactionDAOImpl=DEBUG log4j.logger.org.chorem.lima.ui.combobox.FiscalPeriodComboBoxModel=DEBUG log4j.logger.org.chorem.lima.ui.financialtransactionsearch.FinancialTransactionPeriodSearchPanel=DEBUG -log4j.logger.org.chorem.lima.ui.financialtransactionsearch.FinancialTransactionSearchViewHandler=DEBUG \ No newline at end of file +log4j.logger.org.chorem.lima.ui.financialtransactionsearch.FinancialTransactionSearchViewHandler=DEBUG +log4j.logger.org.chorem.lima.ui.fiscalperiod.FiscalPeriodViewHandler=DEBUG \ No newline at end of file
participants (1)
-
mallon@users.chorem.org