Author: echatellier Date: 2010-03-01 15:40:47 +0100 (Mon, 01 Mar 2010) New Revision: 2799 Modified: trunk/lima-main/src/main/java/org/chorem/lima/ui/ClosureViewImpl.java Log: Update JXTable filters to 1.6, misc improvments Modified: trunk/lima-main/src/main/java/org/chorem/lima/ui/ClosureViewImpl.java =================================================================== --- trunk/lima-main/src/main/java/org/chorem/lima/ui/ClosureViewImpl.java 2010-03-01 13:50:09 UTC (rev 2798) +++ trunk/lima-main/src/main/java/org/chorem/lima/ui/ClosureViewImpl.java 2010-03-01 14:40:47 UTC (rev 2799) @@ -28,13 +28,13 @@ import java.util.Calendar; import java.util.Collections; import java.util.Date; -import java.util.GregorianCalendar; import java.util.LinkedList; import java.util.List; import java.util.Locale; import javax.swing.JComboBox; import javax.swing.ListSelectionModel; +import javax.swing.RowFilter; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -48,10 +48,7 @@ import org.chorem.lima.dto.util.TriPeriodDesc; import org.chorem.lima.table.model.ClosureTableModel; import org.jdesktop.swingx.JXTable; -import org.jdesktop.swingx.decorator.Filter; -import org.jdesktop.swingx.decorator.FilterPipeline; import org.jdesktop.swingx.decorator.HighlighterFactory; -import org.jdesktop.swingx.decorator.PatternFilter; /** @@ -106,20 +103,26 @@ public void itemStateChanged(ItemEvent e) { // Récupère la période master PeriodDTO periodMaster = (PeriodDTO) comboBoxPeriod.getSelectedItem(); - Filter[] filterArray = {new PatternFilter("(.*" + (periodMaster.getBegin().getYear() + 1900) + ".*)|(.*Final.*)", 0, 0)}; - FilterPipeline filters = new FilterPipeline(filterArray); - table.setFilters(filters); + //Filter[] filterArray = {new PatternFilter("(.*" + (periodMaster.getBegin().getYear() + 1900) + ".*)|(.*Final.*)", 0, 0)}; + //FilterPipeline filters = new FilterPipeline(filterArray); + + RowFilter<Object, Object> filter = null; + if (periodMaster != null) { + // 0 = check only in first column + // filter : + // period name containing selected periode + // Final = ??? TODO + Calendar calendar = Calendar.getInstance(); + calendar.setTime(periodMaster.getBegin()); + filter = RowFilter.regexFilter("(.*" + calendar.get(Calendar.YEAR) + ".*)|(.*Final.*)", 0); + if (log.isDebugEnabled()) { + log.debug("Apply filter on " + calendar.get(Calendar.YEAR)); + } + } + table.setRowFilter(filter); } }); - // Récupère la période master (celle de l'exercice) - /* - PeriodDTO periodMaster = (PeriodDTO) comboBoxPeriod.getSelectedItem(); - // Définition du tri avec une expression régulière - Filter[] filterArray = { new PatternFilter("(.*"+(periodMaster.getBegin().getYear()+1900)+".*)|(.*Final.*)", 0, 0) }; - FilterPipeline filters = new FilterPipeline(filterArray); - // Applique le tri - table.setFilters(filters); - */ + // Ajout du tableau dans l'UI getClosureScrollPane().setViewportView(table); @@ -143,22 +146,15 @@ //Init YEAR Periode Combobox // take care about previous year #120 - cal.add(Calendar.YEAR, -1); - for (int i = 0; i <= 6; i++) { - int newYear = cal.get(Calendar.YEAR); - comboBeginYearPeriod.addItem(newYear); - comboEndYearPeriod.addItem(newYear); - - // set current year selected - if (i == 0) { - comboBeginYearPeriod.setSelectedItem(newYear); - comboEndYearPeriod.setSelectedItem(newYear); - } - - cal.add(Calendar.YEAR, 1); + int todayYear = cal.get(Calendar.YEAR); + for (int currentYear = todayYear - 1; currentYear <= todayYear + 5; currentYear ++) { + comboBeginYearPeriod.addItem(currentYear); + comboEndYearPeriod.addItem(currentYear); } - + comboBeginYearPeriod.setSelectedItem(todayYear); + comboEndYearPeriod.setSelectedItem(todayYear); + //Add BeginYear ComboBox to addPeriodForm addPeriodForm.getBeginYearPeriodPanel().add(comboBeginYearPeriod); addPeriodForm.getBeginYearPeriodPanel().validate(); @@ -183,7 +179,6 @@ addPeriodForm.getEndMonthPeriodPanel().add(comboEndMonthPeriod); addPeriodForm.getEndMonthPeriodPanel().validate(); - addPeriodForm.setVisible(true); addPeriodForm.getOkButton().addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -287,31 +282,40 @@ PeriodDTO periodCurrent = LimaContext.getContext().getDataManager().getCurrentPeriod(); List<StatusDTO> status = LimaContext.getContext().getDataManager().getStatus(); - Calendar cal_beg = Calendar.getInstance(); + // get begin date + Calendar beginCalendar = Calendar.getInstance(); if (periodCurrent != null) { - cal_beg.setTime(periodCurrent.getBegin()); - cal_beg.add(Calendar.YEAR , comboBeginYearPeriod.getSelectedIndex()); + beginCalendar.setTime(periodCurrent.getBegin()); } + beginCalendar.set(Calendar.YEAR, (Integer)comboBeginYearPeriod.getSelectedItem()); + beginCalendar.set(Calendar.DAY_OF_MONTH, 1); + // month is equals to list index + beginCalendar.set(Calendar.MONTH, comboBeginMonthPeriod.getSelectedIndex()); + Date beginDate = beginCalendar.getTime(); + + // get end date + Calendar endCalendar = Calendar.getInstance(); + endCalendar.set(Calendar.YEAR, (Integer)comboEndYearPeriod.getSelectedItem()); + endCalendar.set(Calendar.MONTH , comboEndMonthPeriod.getSelectedIndex()); + int maximum = endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH); + endCalendar.set(Calendar.DAY_OF_MONTH, maximum); + Date endDate = endCalendar.getTime(); + + if (log.isDebugEnabled()) { + log.debug("Add new periode from " + beginDate + " to " + endDate); + } + + String periodName = null; + if (comboBeginYearPeriod.getSelectedIndex() != comboEndYearPeriod.getSelectedIndex()) { + periodName = Integer.toString(beginCalendar.get(Calendar.YEAR)) + "-" + Integer.toString(endCalendar.get(Calendar.YEAR)); + } else { - cal_beg.add(Calendar.YEAR , comboBeginYearPeriod.getSelectedIndex()); + periodName = Integer.toString(beginCalendar.get(Calendar.YEAR)); } - cal_beg.set(Calendar.DAY_OF_MONTH, 1); - cal_beg.set(Calendar.MONTH, comboBeginMonthPeriod.getSelectedIndex()); - Date begin = cal_beg.getTime(); + // TODO what is status.get(3) ??? + PeriodDTO period = new PeriodDTO("", periodName, beginDate, endDate, null, null, status.get(3)); - Calendar cal_end = Calendar.getInstance(); - cal_end.add(Calendar.YEAR, comboEndYearPeriod.getSelectedIndex()); - cal_end.set(Calendar.MONTH , comboEndMonthPeriod.getSelectedIndex()); - int maximum = cal_end.getActualMaximum(Calendar.DAY_OF_MONTH); - cal_end.set(Calendar.DAY_OF_MONTH, maximum); - - Date end = cal_end.getTime(); - log.debug("Date de debut: "+begin+" Date de fin: "+end); - - String periodName = comboBeginYearPeriod.getSelectedIndex() != comboEndYearPeriod.getSelectedIndex() ? Integer.toString(cal_beg.get(Calendar.YEAR))+"-"+Integer.toString(cal_end.get(Calendar.YEAR)) : Integer.toString(cal_beg.get(Calendar.YEAR)); - PeriodDTO period = new PeriodDTO("", periodName, begin, end, null, null, status.get(3)); - ClosureTableModel closureModel = (ClosureTableModel) table.getModel(); closureModel.addPeriod(period, status); }