Author: mallon Date: 2012-07-05 13:56:32 +0200 (Thu, 05 Jul 2012) New Revision: 3490 Url: http://chorem.org/repositories/revision/lima/3490 Log: Modification du mod?\195?\168le de l'interface de lettrage pour la s?\195?\169lection des entr?\195?\169es ayant le m?\195?\170me lettrage que la ligne s?\195?\169lectionn?\195?\169e. Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringModelUI.java trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringTable.java trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringTableModel.java trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringViewHandler.java trunk/lima-swing/src/main/resources/log4j.properties Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringModelUI.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringModelUI.java 2012-07-04 16:55:47 UTC (rev 3489) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringModelUI.java 2012-07-05 11:56:32 UTC (rev 3490) @@ -6,6 +6,7 @@ import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.math.BigDecimal; +import java.util.List; public class LetteringModelUI extends DefaultListSelectionModel{ @@ -34,6 +35,12 @@ protected boolean lettrer; protected boolean delettrer; + protected String currentLettring; + + public LetteringModelUI(LetteringTableModel model) { + this.model = model; + } + public Entry getSelectedEntry() { return selectedEntry; } @@ -64,10 +71,6 @@ firePropertyChange(DELETTRER_PROPERTY, oldDelettrer, delettrer); } - public LetteringModelUI(LetteringTableModel model) { - this.model = model; - } - public BigDecimal getDebit() { return debit; } @@ -119,15 +122,46 @@ } @Override + public int getSelectionMode() { + return MULTIPLE_INTERVAL_SELECTION; + } + + @Override public void setSelectionInterval(int row, int column) { - super.setSelectionInterval(row, column); - setSelectedEntry(model.getEntryAt(row)); + Entry entryAt = model.getEntryAt(row); + setSelectedEntry(entryAt); + //if no line selected or if line selected different of the current + if (isSelectionEmpty() || !currentLettring.equals(entryAt.getLettering())){ + this.currentLettring = entryAt.getLettering(); + super.setSelectionInterval(row, column); + //select entries with the same letter of the selected entry + List<Entry> modelEntries = model.getEntries(); + for(Entry entry : modelEntries){ + if (entry.getLettering() != null && !entry.getLettering().isEmpty()){ + if (entry.getLettering().equals(entryAt.getLettering())){ + int entryToSelect = model.getIndexOfEntry(entry); + super.addSelectionInterval(entryToSelect, entryToSelect); + } + } + } + + } } @Override - public int getSelectionMode() { - return MULTIPLE_INTERVAL_SELECTION; + public void addSelectionInterval(int index0, int index1) { + setSelectionInterval(index0, index1); } + @Override + public void removeSelectionInterval(int index0, int index1) { + // do nothing + } + @Override + public void clearSelection() { + // do nothing + } + + } Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringTable.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringTable.java 2012-07-04 16:55:47 UTC (rev 3489) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringTable.java 2012-07-05 11:56:32 UTC (rev 3490) @@ -55,15 +55,11 @@ protected LetteringViewHandler handler; - /*private Highlighter colorTransaction; + //protected LetteringTableModel letteringTableModel; - private ColorHighlighter colorBalance;*/ - - protected LetteringTableModel letteringTableModel; - public LetteringTable(LetteringTableModel letteringTableModel) { super(letteringTableModel); - this.letteringTableModel = letteringTableModel; + //this.letteringTableModel = letteringTableModel; addKeyListener(this); addMouseListener(this); Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringTableModel.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringTableModel.java 2012-07-04 16:55:47 UTC (rev 3489) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringTableModel.java 2012-07-05 11:56:32 UTC (rev 3490) @@ -25,14 +25,6 @@ package org.chorem.lima.ui.lettering; -import static org.nuiton.i18n.I18n._; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -import javax.swing.table.AbstractTableModel; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.chorem.lima.business.ServiceListener; @@ -42,6 +34,13 @@ import org.chorem.lima.entity.Entry; import org.chorem.lima.service.LimaServiceFactory; +import javax.swing.table.AbstractTableModel; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +import static org.nuiton.i18n.I18n._; + /** * Basic transaction table model. * <p/> @@ -96,12 +95,30 @@ return entries; } + public Integer getIndexOfEntry(Entry entrySearch){ + Integer index = -1; + for (Entry entry : entries){ + index++; + if (entrySearch == entry){ + return index; + } + } + return null; + } + + public int getNUmberOfEntries(){ + return entries.size(); + } + public void updateEntries(List<Entry> entries,List<Date> datesEntree, List<String> entryBooks) { this.entries = entries; setDate(datesEntree); setJournal(entryBooks); fireTableDataChanged(); + if (log.isInfoEnabled()) { + log.info("Nb entries model (In model) : " + getNUmberOfEntries()); + } } protected void setDate(List<Date> datesEntree){ Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringViewHandler.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringViewHandler.java 2012-07-04 16:55:47 UTC (rev 3489) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringViewHandler.java 2012-07-05 11:56:32 UTC (rev 3490) @@ -100,25 +100,33 @@ modelUi.addListSelectionListener(new ListSelectionListener(){ List<Entry> entries = new ArrayList<Entry>(); + @Override public void valueChanged(ListSelectionEvent evt) { LetteringModelUI modelUiPropChange = (LetteringModelUI)evt.getSource(); if (evt.getValueIsAdjusting()){ - Entry lastEntry = view.getTableModel().getEntryAt(evt.getLastIndex()); - int nbSelectedRowModel = view.getTable().getSelectedRows().length; + LetteringTableModel tableModel = view.getTableModel(); + LetteringTable table = view.getTable(); + int nbEntriesModel = tableModel.getNUmberOfEntries(); + + Entry lastEntry = tableModel.getEntryAt(evt.getLastIndex()); + int nbSelectedRowTable = table.getSelectedRows().length; int sizeEntries = entries.size(); if (log.isInfoEnabled()) { log.info("Size list entries : " + sizeEntries + "\n" + - "Nb selected row : " + nbSelectedRowModel); + "Nb selected row : " + nbSelectedRowTable + "\n"+ + "Nb ligne model : " + nbEntriesModel); } - if (nbSelectedRowModel > sizeEntries || (nbSelectedRowModel==sizeEntries && nbSelectedRowModel==1)){ + + //Managing selection + if (nbSelectedRowTable > sizeEntries || (nbSelectedRowTable==sizeEntries && nbSelectedRowTable==1)){ entries.add(lastEntry); if (log.isInfoEnabled()) { log.info("Add entry"); } - }else if (nbSelectedRowModel < sizeEntries){ + }else if (nbSelectedRowTable < sizeEntries){ entries.remove(entries.size() - 1); if (log.isInfoEnabled()) { log.info("Remove entry"); @@ -132,15 +140,6 @@ } } }); - - /*modelUi.addPropertyChangeListener(LetteringModelUI.SELECTED_ENTRY_PROPERTY, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - LetteringModelUI modelUiPropChange = (LetteringModelUI)evt.getSource(); - Entry selectedEntry = (Entry)evt.getNewValue(); - loadCurrentSelection(modelUiPropChange, selectedEntry); - } - });*/ } public void loadComboAndRows(){ @@ -189,6 +188,9 @@ //Load entry with the default dates, default account 4 and with no letter updateAllEntries(defaultDateBegFiscalPeriod, defaultDateEndCurrent, view.getAccountComboBoxModel().getSelectedItem(), view.getLetteredCheckGroup().getSelectedButton().getName()); + if (log.isInfoEnabled()) { + log.info("Nb entries model (After update all entries) : " + view.getTableModel().getNUmberOfEntries()); + } } protected List<Entry> findAllEntries(Date selectedBeginDate, Date selectedEndDate, Object compte, String filtreLettre){ @@ -232,6 +234,9 @@ } view.getTableModel().updateEntries(entries, datesEntree, journalEntrees); + if (log.isInfoEnabled()) { + log.info("Nb entries model : " + view.getTableModel().getNUmberOfEntries()); + } } } Modified: trunk/lima-swing/src/main/resources/log4j.properties =================================================================== --- trunk/lima-swing/src/main/resources/log4j.properties 2012-07-04 16:55:47 UTC (rev 3489) +++ trunk/lima-swing/src/main/resources/log4j.properties 2012-07-05 11:56:32 UTC (rev 3490) @@ -43,4 +43,5 @@ log4j.logger.org.chorem.lima.ui.home=DEBUG log4j.logger.org.chorem.lima.business.accountingrules.DefaultAccountingRules=DEBUG log4j.logger.org.chorem.lima.ui.lettering.LetteringViewHandler=DEBUG -log4j.logger.org.chorem.lima.ui.lettering.LetteringTableModel=DEBUG \ No newline at end of file +log4j.logger.org.chorem.lima.ui.lettering.LetteringTableModel=DEBUG +log4j.logger.org.chorem.lima.ui.lettering.LetteringTableSelectionModel=DEBUG \ No newline at end of file