From: <de...@us...> - 2015-10-09 19:53:26
|
Revision: 9183 http://sourceforge.net/p/fudaa/svn/9183 Author: deniger Date: 2015-10-09 19:53:24 +0000 (Fri, 09 Oct 2015) Log Message: ----------- CRUE-644 Modified Paths: -------------- trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluExcelCsvFileReader.java trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableColumnHeader.java trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableSortModel.java trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableExportPanel.java trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGExportData.java trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTableAction.java trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliTableInfoPanel.java trunk/framework/ebli-common/src/main/resources/org/fudaa/ebli/ressource/ebli_en.fr_txt Added Paths: ----------- trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableExportTask.java trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTimeLabel.java Modified: trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluExcelCsvFileReader.java =================================================================== --- trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluExcelCsvFileReader.java 2015-10-09 11:59:10 UTC (rev 9182) +++ trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluExcelCsvFileReader.java 2015-10-09 19:53:24 UTC (rev 9183) @@ -13,8 +13,6 @@ import java.io.Reader; import java.util.ArrayList; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; import org.apache.commons.lang.StringUtils; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; Modified: trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableColumnHeader.java =================================================================== --- trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableColumnHeader.java 2015-10-09 11:59:10 UTC (rev 9182) +++ trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableColumnHeader.java 2015-10-09 19:53:24 UTC (rev 9183) @@ -164,6 +164,7 @@ w = computePreferredWidth(getTable(), _column, i); _column.setMaxWidth(Integer.MAX_VALUE); _column.setPreferredWidth(w); + _column.setWidth(w); } } Modified: trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableSortModel.java =================================================================== --- trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableSortModel.java 2015-10-09 11:59:10 UTC (rev 9182) +++ trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableSortModel.java 2015-10-09 19:53:24 UTC (rev 9183) @@ -8,6 +8,7 @@ package org.fudaa.ctulu.table; import com.memoire.bu.BuTableSortModel; +import org.apache.commons.lang.StringUtils; /** * @author fred deniger @@ -15,9 +16,9 @@ */ public class CtuluTableSortModel extends BuTableSortModel { - protected final int compareNumberRowsByColumn(final int _row1,final int _row2,final int _col){ - final Object o1 = model_.getValueAt(_row1, _col); - final Object o2 = model_.getValueAt(_row2, _col); + protected final int compareNumberRowsByColumn(final int _row1, final int _row2, final int _col) { + final Object o1 = model_.getValueAt(_row1, _col); + final Object o2 = model_.getValueAt(_row2, _col); if ((o1 == null) && (o2 == null)) { return 0; @@ -26,8 +27,12 @@ } else if (o2 == null) { return 1; } - final double d1 = ((Number) o1).doubleValue(); - final double d2 = ((Number) o2).doubleValue(); + Class clazz = model_.getColumnClass(_col); + if (String.class.equals(clazz) || Number.class.isAssignableFrom(clazz)) { + return o1.toString().compareTo(o2.toString()); + } + final double d1 = ((Number) o1).doubleValue(); + final double d2 = ((Number) o2).doubleValue(); if (d1 < d2) { return -1; @@ -39,21 +44,20 @@ } @Override - public int compare(final int _row1,final int _row2){ + public int compare(final int _row1, final int _row2) { compares++; - final int nc = model_.getRowCount(); + final int nc = model_.getRowCount(); - for (int i = 0; i < nbcols_; i++) - //for(int i=nbcols_-1;i>=0;i--) + for (int i = 0; i < nbcols_; i++) //for(int i=nbcols_-1;i>=0;i--) { - final int c = columns_[i]; + final int c = columns_[i]; if ((c < 0) || (c >= nc)) { continue; } int s = Number.class.isAssignableFrom(model_.getColumnClass(c)) ? compareNumberRowsByColumn( - _row1, _row2, c) : compareRowsByColumn(_row1, _row2, c); + _row1, _row2, c) : compareRowsByColumn(_row1, _row2, c); if (descending_[i]) { s = -s; } Modified: trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableExportPanel.java =================================================================== --- trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableExportPanel.java 2015-10-09 11:59:10 UTC (rev 9182) +++ trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableExportPanel.java 2015-10-09 19:53:24 UTC (rev 9183) @@ -12,20 +12,17 @@ package org.fudaa.ctulu.gui; import com.memoire.bu.BuBorderLayout; -import com.memoire.bu.BuGlassPaneStop; -import com.memoire.bu.BuLib; import com.memoire.bu.BuList; import com.memoire.bu.BuPreferences; import com.memoire.bu.BuRadioButton; import com.memoire.bu.BuScrollPane; +import com.memoire.bu.BuTable; import gnu.trove.TIntArrayList; -import java.awt.Cursor; import java.awt.Point; import java.awt.Window; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.io.File; -import java.text.DecimalFormat; import javax.swing.AbstractListModel; import javax.swing.ButtonGroup; import javax.swing.JDialog; @@ -34,49 +31,54 @@ import javax.swing.ListSelectionModel; import javax.swing.table.TableColumn; import org.apache.commons.lang.StringUtils; -import org.fudaa.ctulu.CsvWriter; import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.CtuluResource; -import org.fudaa.ctulu.CtuluTaskDelegate; import org.fudaa.ctulu.CtuluUI; import org.fudaa.ctulu.gui.CtuluFileChooserCsvExcel.TypeChoosen; -import org.fudaa.ctulu.table.CtuluTableCsvWriter; -import org.fudaa.ctulu.table.CtuluTableExcelWriter; import org.fudaa.ctulu.table.CtuluTableExportInterface; -import org.fudaa.ctulu.table.CtuluTableModelDefault; -import org.fudaa.ctulu.table.CtuluTableModelInterface; -import org.fudaa.ctulu.table.CtuluTableXlsxWriter; -import org.jdesktop.swingx.JXTreeTable; /** * @author DENIGER */ @SuppressWarnings("serial") public final class CtuluTableExportPanel extends CtuluDialogPanel implements ItemListener { - + private static final char DEFAULT_SEPARATOR = '\t'; JList cbModel_; BuRadioButton cbOnlySelected_; - File dest_; - TypeChoosen choosenType_; - final JTable table_; - final CtuluUI ui_; + + final CtuluTableExportTask exportTask; JDialog parentDial_; char separator = '\t'; - + + public static void setShowColumnsToExport(final BuTable _b, final boolean _show) { + _b.putClientProperty("TABLE_SHOW_COLUMNS_TO_EXPORT", Boolean.valueOf(_show)); + } + + public static boolean isshowColumnToExport(final JTable _b) { + final Boolean res = (Boolean) _b.getClientProperty("TABLE_SHOW_COLUMNS_TO_EXPORT"); + return res == null ? true : res.booleanValue(); + } + public static void showExportDialog(final char separator, final JTable _table, final File _dest, final TypeChoosen type, final CtuluUI _ui) { showExportDialog(separator, _table, _dest, type, _ui, CtuluLibSwing.getFrameAncestor(_ui.getParentComponent())); } - + public static void showExportDialog(final JTable _table, final File _dest, final TypeChoosen type, final CtuluUI _ui, final Window windowParent) { showExportDialog('\t', _table, _dest, type, _ui, windowParent); } - + public static void showExportDialog(final char separator, final JTable _table, final File _dest, final TypeChoosen type, final CtuluUI _ui, final Window windowParent) { + if (!isshowColumnToExport(_table)) { + CtuluTableExportTask task = new CtuluTableExportTask(_table, _ui, type, _dest); + task.setSeparator(separator); + task.export(null, null); + return; + } final CtuluTableExportPanel pn = new CtuluTableExportPanel(_table, _dest, type, _ui); pn.separator = separator; final CtuluDialog dial = CtuluDialogPanel.createDialog(windowParent, pn); @@ -88,11 +90,11 @@ CtuluDialogPreferences.saveComponentLocationAndDimension(dial, BuPreferences.BU, "exportExcelDialog"); BuPreferences.BU.writeIniFile(); } - + public static void doExport(final JTable _t, final CtuluUI _ui, final Window _f) { doExport(DEFAULT_SEPARATOR, _t, _ui, _f); } - + public static void doExport(final char separator, final JTable _t, final CtuluUI _ui, final Window _f) { final CtuluFileChooserCsvExcel choose = new CtuluFileChooserCsvExcel(_ui); String defaultDir = BuPreferences.BU.getStringProperty("export.excel.lastPath", null); @@ -100,7 +102,7 @@ File dir = new File(defaultDir); if (dir.exists() && dir.isDirectory()) { choose.setCurrentDirectory(dir); - + } } final File f = choose.getDestFile(); @@ -115,32 +117,29 @@ } CtuluTableExportPanel.showExportDialog(separator, _t, f, choose.getTypeChoosen(), _ui); } - + public static void doExport(char separator, final JTable _t, final CtuluUI _ui) { doExport(separator, _t, _ui, CtuluLibSwing.getFrameAncestor(_ui.getParentComponent())); } - + public static void doExport(final JTable _t, final CtuluUI _ui) { doExport('\t', _t, _ui, CtuluLibSwing.getFrameAncestor(_ui.getParentComponent())); } - + @SuppressWarnings("serial") private CtuluTableExportPanel(final JTable _table, final File _dest, final TypeChoosen type, final CtuluUI _ui) { super(false); setLayout(new BuBorderLayout(5, 5)); - table_ = _table; - dest_ = _dest; - ui_ = _ui; - choosenType_ = type; + exportTask = new CtuluTableExportTask(_table, _ui, type, _dest); cbModel_ = new BuList(); final TIntArrayList exportableColumns = new TIntArrayList(); CtuluTableExportInterface exportInterface = null; - if (table_.getModel() instanceof CtuluTableExportInterface) { - exportInterface = (CtuluTableExportInterface) table_.getModel(); + if (_table.getModel() instanceof CtuluTableExportInterface) { + exportInterface = (CtuluTableExportInterface) _table.getModel(); } - - for (int i = 0; i < table_.getColumnCount(); i++) { - final TableColumn column = table_.getColumnModel().getColumn(i); + + for (int i = 0; i < _table.getColumnCount(); i++) { + final TableColumn column = _table.getColumnModel().getColumn(i); boolean toAdd = true; if (exportInterface != null) { toAdd = exportInterface.isColumnExportable(column.getModelIndex()); @@ -152,9 +151,9 @@ cbModel_.setModel(new AbstractListModel() { @Override public Object getElementAt(final int _index) { - return table_.getColumnName(exportableColumns.get(_index)); + return exportTask.getTable().getColumnName(exportableColumns.get(_index)); } - + @Override public int getSize() { return exportableColumns.size(); @@ -164,7 +163,7 @@ final BuRadioButton col = new BuRadioButton(CtuluLib.getS("Exporter les colonnes suivantes:")); bg.add(col); add(col, BuBorderLayout.NORTH); - final boolean isCellSelected = !table_.getSelectionModel().isSelectionEmpty(); + final boolean isCellSelected = !exportTask.getTable().getSelectionModel().isSelectionEmpty(); add(new BuScrollPane(cbModel_), BuBorderLayout.CENTER); cbModel_.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); cbModel_.getSelectionModel().setSelectionInterval(0, cbModel_.getModel().getSize() - 1); @@ -178,7 +177,7 @@ col.setSelected(true); add(cbOnlySelected_, BuBorderLayout.SOUTH); } - + @Override public String getHelpText() { String msg = CtuluLib.getS("Vous pouvez s\xE9lectionner les colonnes \xE0 exporter"); @@ -190,24 +189,25 @@ msg += "<br>" + CtuluLib.getS("Par d\xE9faut, toutes les colonnes sont s\xE9lectionn\xE9es pour l'exportation."); return "<html><body>" + msg + "</body></html>"; } - + protected void nothingToExport() { - ui_.warn(CtuluResource.CTULU.getString("Exportation annul\xE9e"), CtuluResource.CTULU.getString("Ancune donn\xE9e n'a \xE9t\xE9 s\xE9lectionn\xE9e"), false); + exportTask.getUi().warn(CtuluResource.CTULU.getString("Exportation annul\xE9e"), CtuluResource.CTULU.getString("Ancune donn\xE9e n'a \xE9t\xE9 s\xE9lectionn\xE9e"), + false); } - + @Override public void apply() { int[] col = null; int[] row = null; if (cbOnlySelected_.isSelected()) { - col = table_.getSelectedColumns(); - if (!table_.getColumnSelectionAllowed()) { - col = new int[table_.getColumnCount()]; + col = exportTask.getTable().getSelectedColumns(); + if (!exportTask.getTable().getColumnSelectionAllowed()) { + col = new int[exportTask.getTable().getColumnCount()]; for (int i = 0; i < col.length; i++) { col[i] = i; } } - row = table_.getSelectedRows(); + row = exportTask.getTable().getSelectedRows(); if ((col == null || row == null) || (row.length == 0 || col.length == 0)) { nothingToExport(); return; @@ -224,95 +224,18 @@ col = null; } } - final BuGlassPaneStop s = new BuGlassPaneStop(); - //on enleve les colonnes non exportables - if (table_.getModel() instanceof CtuluTableExportInterface) { - CtuluTableExportInterface exportInterface = (CtuluTableExportInterface) table_.getModel(); - final TIntArrayList toExport = new TIntArrayList(); - if (col == null) { - for (int i = 0; i < table_.getColumnCount(); i++) { - final TableColumn column = table_.getColumnModel().getColumn(i); - boolean toAdd = exportInterface.isColumnExportable(column.getModelIndex()); - if (toAdd) { - toExport.add(i); - } - } - } else { - for (int i = 0; i < col.length; i++) { - final TableColumn column = table_.getColumnModel().getColumn(col[i]); - boolean toAdd = exportInterface.isColumnExportable(column.getModelIndex()); - if (toAdd) { - toExport.add(i); - } - } - } - col = toExport.toNativeArray(); - } - final int[] colToWrite = col; - final int[] rowToWrite = row; - parentDial_.setGlassPane(s); - parentDial_.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - s.setVisible(true); - final CtuluTaskDelegate task = ui_.createTask(CtuluLib.getS("Export format texte")); - task.start(new Runnable() { - @Override - public void run() { - final CtuluTableModelInterface m = createDefaultModele(colToWrite, rowToWrite); - try { - if (TypeChoosen.XLS.equals(choosenType_)) { - final CtuluTableExcelWriter w = new CtuluTableExcelWriter(m, dest_); - w.write(task.getStateReceiver()); - } else if (TypeChoosen.XLSX.equals(choosenType_)) { - final CtuluTableXlsxWriter w = new CtuluTableXlsxWriter(m, dest_); - w.write(task.getStateReceiver()); - } else { - int nbDigits = BuPreferences.BU.getIntegerProperty(CtuluTablePreferencesComponent.COORDS_EXPORT_NB_DIGITS, -1); - DecimalFormat fmt; - if (nbDigits == -1) { - fmt = null; - } else { - fmt = CtuluLib.getDecimalFormat(); - fmt.setMaximumFractionDigits(nbDigits); - } - final CtuluTableCsvWriter w = new CtuluTableCsvWriter(new CsvWriter(dest_), m, separator, fmt); - w.write(task.getStateReceiver()); - } - } catch (final Exception e) { - ui_.error(dest_.getName(), e.getLocalizedMessage(), false); - } - BuLib.invokeLater(new Runnable() { - @Override - public void run() { - s.setVisible(false); - parentDial_.getRootPane().remove(s); - parentDial_.setCursor(Cursor.getDefaultCursor()); - ui_.message(CtuluResource.CTULU.getString("Export termin\xE9"), CtuluResource.CTULU.getString("Donn\xE9es export\xE9es dans le fichier\n {0}", - dest_. - getAbsolutePath()), false); - } - }); - - } - - private CtuluTableModelInterface createDefaultModele(final int[] colToWrite, final int[] rowToWrite) { - if (table_ instanceof JXTreeTable) { - return new CtuluTreeTableModelDefault((JXTreeTable) table_, colToWrite, - rowToWrite); - } - return new CtuluTableModelDefault(table_, colToWrite, rowToWrite); - } - }); + exportTask.export(col, row); } - + @Override public void itemStateChanged(final ItemEvent _e) { cbModel_.setEnabled(!cbOnlySelected_.isSelected()); } - + public JDialog getParentDial() { return parentDial_; } - + public void setParentDial(final JDialog _parentDial) { parentDial_ = _parentDial; } Added: trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableExportTask.java =================================================================== --- trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableExportTask.java (rev 0) +++ trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableExportTask.java 2015-10-09 19:53:24 UTC (rev 9183) @@ -0,0 +1,165 @@ +/* + GPL 2 + */ +package org.fudaa.ctulu.gui; + +import com.memoire.bu.BuGlassPaneStop; +import com.memoire.bu.BuLib; +import com.memoire.bu.BuPreferences; +import gnu.trove.TIntArrayList; +import java.awt.Cursor; +import java.io.File; +import static java.io.File.separator; +import java.text.DecimalFormat; +import javax.swing.JDialog; +import javax.swing.JTable; +import javax.swing.table.TableColumn; +import org.fudaa.ctulu.CsvWriter; +import org.fudaa.ctulu.CtuluLib; +import org.fudaa.ctulu.CtuluResource; +import org.fudaa.ctulu.CtuluTaskDelegate; +import org.fudaa.ctulu.CtuluUI; +import org.fudaa.ctulu.table.CtuluTableCsvWriter; +import org.fudaa.ctulu.table.CtuluTableExcelWriter; +import org.fudaa.ctulu.table.CtuluTableExportInterface; +import org.fudaa.ctulu.table.CtuluTableModelDefault; +import org.fudaa.ctulu.table.CtuluTableModelInterface; +import org.fudaa.ctulu.table.CtuluTableXlsxWriter; +import org.jdesktop.swingx.JXTreeTable; + +/** + * + * @author Frederic Deniger + */ +public class CtuluTableExportTask { + + private final JTable table_; + private final CtuluUI ui_; + private final CtuluFileChooserCsvExcel.TypeChoosen choosenType_; + private final File dest_; + private JDialog parentDial_; + private char separator = '\t'; + + public CtuluTableExportTask(JTable table_, CtuluUI ui_, CtuluFileChooserCsvExcel.TypeChoosen choosenType_, File dest_) { + this.table_ = table_; + this.ui_ = ui_; + this.choosenType_ = choosenType_; + this.dest_ = dest_; + } + + public JTable getTable() { + return table_; + } + + public CtuluUI getUi() { + return ui_; + } + + public CtuluFileChooserCsvExcel.TypeChoosen getChoosenType() { + return choosenType_; + } + + public File getDest() { + return dest_; + } + + public JDialog getParentDial() { + return parentDial_; + } + + public char getSeparator() { + return separator; + } + + public void setParentDial(JDialog parentDial_) { + this.parentDial_ = parentDial_; + } + + public void setSeparator(char separator) { + this.separator = separator; + } + + private CtuluTableModelInterface createDefaultModele(final int[] colToWrite, final int[] rowToWrite) { + if (table_ instanceof JXTreeTable) { + return new CtuluTreeTableModelDefault((JXTreeTable) table_, colToWrite, + rowToWrite); + } + return new CtuluTableModelDefault(table_, colToWrite, rowToWrite); + } + + public void export(int[] col, int[] row) { + final BuGlassPaneStop s = new BuGlassPaneStop(); + //on enleve les colonnes non exportables + if (table_.getModel() instanceof CtuluTableExportInterface) { + CtuluTableExportInterface exportInterface = (CtuluTableExportInterface) table_.getModel(); + final TIntArrayList toExport = new TIntArrayList(); + if (col == null) { + for (int i = 0; i < table_.getColumnCount(); i++) { + final TableColumn column = table_.getColumnModel().getColumn(i); + boolean toAdd = exportInterface.isColumnExportable(column.getModelIndex()); + if (toAdd) { + toExport.add(i); + } + } + } else { + for (int i = 0; i < col.length; i++) { + final TableColumn column = table_.getColumnModel().getColumn(col[i]); + boolean toAdd = exportInterface.isColumnExportable(column.getModelIndex()); + if (toAdd) { + toExport.add(i); + } + } + } + col = toExport.toNativeArray(); + } + final int[] colToWrite = col; + final int[] rowToWrite = row; + if (parentDial_ != null) { + parentDial_.setGlassPane(s); + parentDial_.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + } + s.setVisible(true); + final CtuluTaskDelegate task = ui_.createTask(CtuluLib.getS("Export format texte")); + task.start(new Runnable() { + @Override + public void run() { + final CtuluTableModelInterface m = createDefaultModele(colToWrite, rowToWrite); + try { + if (CtuluFileChooserCsvExcel.TypeChoosen.XLS.equals(choosenType_)) { + final CtuluTableExcelWriter w = new CtuluTableExcelWriter(m, dest_); + w.write(task.getStateReceiver()); + } else if (CtuluFileChooserCsvExcel.TypeChoosen.XLSX.equals(choosenType_)) { + final CtuluTableXlsxWriter w = new CtuluTableXlsxWriter(m, dest_); + w.write(task.getStateReceiver()); + } else { + int nbDigits = BuPreferences.BU.getIntegerProperty(CtuluTablePreferencesComponent.COORDS_EXPORT_NB_DIGITS, -1); + DecimalFormat fmt; + if (nbDigits == -1) { + fmt = null; + } else { + fmt = CtuluLib.getDecimalFormat(); + fmt.setMaximumFractionDigits(nbDigits); + } + final CtuluTableCsvWriter w = new CtuluTableCsvWriter(new CsvWriter(dest_), m, separator, fmt); + w.write(task.getStateReceiver()); + } + } catch (final Exception e) { + ui_.error(dest_.getName(), e.getLocalizedMessage(), false); + } + BuLib.invokeLater(new Runnable() { + @Override + public void run() { + s.setVisible(false); + if (parentDial_ != null) { + parentDial_.getRootPane().remove(s); + parentDial_.setCursor(Cursor.getDefaultCursor()); + } + ui_.message(CtuluResource.CTULU.getString("Export termin\xE9"), CtuluResource.CTULU.getString("Donn\xE9es export\xE9es dans le fichier\n {0}", + dest_. + getAbsolutePath()), true); + } + }); + } + }); + } +} Modified: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGExportData.java =================================================================== --- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGExportData.java 2015-10-09 11:59:10 UTC (rev 9182) +++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGExportData.java 2015-10-09 19:53:24 UTC (rev 9183) @@ -11,15 +11,18 @@ */ package org.fudaa.ebli.courbe; -import gnu.trove.TDoubleHashSet; import gnu.trove.TIntArrayList; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Set; import jxl.write.Label; import jxl.write.Number; import jxl.write.WritableCell; +import org.apache.commons.lang.StringUtils; import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibArray; import org.fudaa.ctulu.CtuluLibString; @@ -168,10 +171,11 @@ private final static class SameH extends EGExportData { double[] time_; + List<String> labels; SameH(final EGCourbe[] _cs, final EGGraphe _g, boolean _onlyH, boolean showLabels) { super(_cs, _g, showLabels); - final TDoubleHashSet set = new TDoubleHashSet(); + Set<EGTimeLabel> set = new HashSet<EGTimeLabel>(); maxCol_ = cs_.length + 1; final EGAxeHorizontal h = g_.getTransformer().getXAxe(); for (int i = cs_.length - 1; i >= 0; i--) { @@ -179,27 +183,61 @@ for (int j = c.getModel().getNbValues() - 1; j >= 0; j--) { final double x = c.getModel().getX(j); if ((!_onlyH) || (h.containsPoint(x))) { - set.add(x); + EGTimeLabel value = new EGTimeLabel(x); + set.add(value); + value.setLabel(c.getModel().getPointLabel(j)); } } } - time_ = set.toArray(); + List<EGTimeLabel> values = new ArrayList<EGTimeLabel>(set); + Collections.sort(values); + time_ = new double[values.size()]; + for (int i = 0; i < time_.length; i++) { + time_[i] = values.get(i).getX(); + } Arrays.sort(time_); maxLine_ = time_.length; - column_ = new String[_cs.length + 1]; - column_[0] = h.getTitre(); + int nbCols = _cs.length + 1; + if (showLabels) { + nbCols++; + } + column_ = new String[nbCols]; + int offset = 0; + if (showLabels) { + offset = 1; + column_[0] = ""; + if (cs_.length > 0 && cs_[0].getModel() instanceof EgModelLabelNamed) { + column_[0] = ((EgModelLabelNamed) cs_[0].getModel()).getLabelColumnName(); + } + labels = new ArrayList<String>(); + for (EGTimeLabel value : values) { + labels.add(value.getLabel()); + } + } + column_[offset] = h.getTitre(); for (int i = 0; i < _cs.length; i++) { - column_[i + 1] = _cs[i].getTitle(); + column_[i + 1 + offset] = _cs[i].getTitle(); } } @Override public Object getValue(final int _row, final int _col) { final double x = time_[_row]; - if (_col == 0) { + int offset = 0; + if (showLabel) { + offset = 1; + if (_col == 0) { + if (_row < labels.size()) { + return labels.get(_row); + } + return ""; + + } + } + if (_col == offset) { return getXValueFor(x); } - return getYValueFor(cs_[_col - 1], cs_[_col - 1].interpol(x)); + return getYValueFor(cs_[_col - 1 - offset], cs_[_col - 1 - offset].interpol(x)); } } @@ -289,4 +327,4 @@ public final int getMaxRow() { return maxLine_; } -} \ No newline at end of file +} Modified: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTableAction.java =================================================================== --- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTableAction.java 2015-10-09 11:59:10 UTC (rev 9182) +++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTableAction.java 2015-10-09 19:53:24 UTC (rev 9183) @@ -12,10 +12,8 @@ package org.fudaa.ebli.courbe; import com.memoire.bu.BuMenu; -import com.memoire.bu.BuPreferences; import com.memoire.bu.BuResource; import com.memoire.bu.BuTable; -import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; @@ -25,6 +23,7 @@ import java.util.List; import java.util.Map; import javax.swing.AbstractButton; +import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JInternalFrame; @@ -32,14 +31,14 @@ import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumnModel; import org.fudaa.ctulu.gui.CtuluCellTextDecimalRenderer; -import org.fudaa.ctulu.gui.CtuluDialogPreferences; import org.fudaa.ctulu.gui.CtuluPopupMenu; +import org.fudaa.ctulu.gui.CtuluTableExportPanel; import org.fudaa.ctulu.gui.CtuluUIDialog; import org.fudaa.ctulu.table.CtuluTable; +import org.fudaa.ctulu.table.CtuluTableColumnHeader; import org.fudaa.ctulu.table.CtuluTableSortModel; import org.fudaa.ebli.commun.EbliActionSimple; import org.fudaa.ebli.commun.EbliLib; -import org.fudaa.ebli.commun.EbliPreferences; import org.fudaa.ebli.commun.EbliTableInfoPanel; import org.fudaa.ebli.commun.EbliTableInfoTarget; import org.fudaa.ebli.ressource.EbliResource; @@ -66,12 +65,32 @@ } boolean displayAll; boolean addOptions = true; + boolean addCheckbox = false; + //boolean utilise pour afficher ou pas le dialogue permettant d'afficher les colonnes a exporter + boolean showColumnToExport = false; boolean showLabel; public boolean isShowLabel() { return showLabel; } + public boolean isShowColumnToExport() { + return showColumnToExport; + } + + public void setShowColumnToExport(boolean showColumnToExport) { + this.showColumnToExport = showColumnToExport; + } + + + public boolean isAddCheckbox() { + return addCheckbox; + } + + public void setAddCheckbox(boolean addCheckbox) { + this.addCheckbox = addCheckbox; + } + public void setShowLabel(boolean showLabel) { this.showLabel = showLabel; } @@ -151,6 +170,7 @@ title = EbliResource.EBLI.getString("Courbes"); } EbliTableInfoPanel.setTitle(table, title); + List<JComponent> components = new ArrayList<JComponent>(); if (addOptions) { final BuMenu menu = new BuMenu(EbliLib.getS("Options"), "OPTIONS"); menu.setIcon(BuResource.BU.getMenuIcon("configurer")); @@ -173,9 +193,21 @@ } } }); - EbliTableInfoPanel.setJMenuBarComponents(table, new JComponent[]{menu}); + components.add(menu); } + if (addCheckbox) { + JCheckBox ch = new JCheckBox(EbliLib.getS("Factorisation des abscisses")); + ch.setActionCommand("SHOW_ONE_TIME"); + ch.addActionListener(new OptionActionListener(tableModel, table)); + components.add(ch); + } + + if (!components.isEmpty()) { + EbliTableInfoPanel.setJMenuBarComponents(table, components.toArray(new JComponent[components.size()])); + } + EbliTableInfoPanel.setShowSelectedRow(table, false); + CtuluTableExportPanel.setShowColumnsToExport(table, showColumnToExport); return table; } @@ -207,6 +239,9 @@ } else if ("SHOW_ONE_TIME".equals(com)) { Map<Object, TableCellRenderer> cellsRenderer = getCellsRenderer(); target_.setShowOneTime(((AbstractButton) _e.getSource()).isSelected()); + for (int i = 0; i < table_.getColumnCount(); i++) { + ((CtuluTableColumnHeader) table_.getTableHeader()).adjustWidth(table_.getColumnModel().getColumn(i)); + } putCellsRenderer(cellsRenderer); } if (idx > 0 && model != null) { Added: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTimeLabel.java =================================================================== --- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTimeLabel.java (rev 0) +++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTimeLabel.java 2015-10-09 19:53:24 UTC (rev 9183) @@ -0,0 +1,68 @@ +/* + GPL 2 + */ +package org.fudaa.ebli.courbe; + +/** + * + * @author Frederic Deniger + */ +public class EGTimeLabel implements Comparable<EGTimeLabel> { + + private final double x; + private String label; + + public EGTimeLabel(double x) { + this.x = x; + } + + public String getLabel() { + return label; + } + + public double getX() { + return x; + } + + + public void setLabel(String label) { + this.label = label; + } + + @Override + public int compareTo(EGTimeLabel o) { + if (o == this) { + return 0; + } + if (o == null) { + return 1; + } + if (equals(o)) { + return 0; + } + return x - o.x > 0 ? 1 : -1; + } + + @Override + public int hashCode() { + int hash = 5; + hash = 89 * hash + (int) (Double.doubleToLongBits(this.x) ^ (Double.doubleToLongBits(this.x) >>> 32)); + return hash; + } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final EGTimeLabel other = (EGTimeLabel) obj; + if (Double.doubleToLongBits(this.x) != Double.doubleToLongBits(other.x)) { + return false; + } + return true; + } + +} Modified: trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliTableInfoPanel.java =================================================================== --- trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliTableInfoPanel.java 2015-10-09 11:59:10 UTC (rev 9182) +++ trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliTableInfoPanel.java 2015-10-09 19:53:24 UTC (rev 9183) @@ -28,6 +28,7 @@ import javax.swing.table.TableModel; import com.memoire.bu.*; +import com.memoire.fu.FuLog; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ItemEvent; @@ -117,6 +118,7 @@ return res == null ? true : res.booleanValue(); } + /** * Enregistre le titre dans les propriete (putClientProperty) de la table. * @@ -148,6 +150,8 @@ public static void setShowSelectedRow(final BuTable _b, final boolean _show) { _b.putClientProperty("TABLE_SHOW_SELECTED_ROW", Boolean.valueOf(_show)); } + + final TableColumnModel colModel_; JDialog dialog_; boolean displaySelected_; @@ -329,8 +333,12 @@ copy(); } else if ("EXPORT_CSV".equals(_e.getActionCommand())) { table_.putClientProperty(CtuluTableModelInterface.EXPORT_COMMENT_PROPERTY, null); - if (exportTableCommentSupplier != null) { - table_.putClientProperty(CtuluTableModelInterface.EXPORT_COMMENT_PROPERTY, exportTableCommentSupplier.getComments()); + try { + if (exportTableCommentSupplier != null) { + table_.putClientProperty(CtuluTableModelInterface.EXPORT_COMMENT_PROPERTY, exportTableCommentSupplier.getComments()); + } + } catch (NullPointerException ex) { + FuLog.error(ex); } CtuluTableExportPanel.doExport(';', table_, ui_); Modified: trunk/framework/ebli-common/src/main/resources/org/fudaa/ebli/ressource/ebli_en.fr_txt =================================================================== --- trunk/framework/ebli-common/src/main/resources/org/fudaa/ebli/ressource/ebli_en.fr_txt 2015-10-09 11:59:10 UTC (rev 9182) +++ trunk/framework/ebli-common/src/main/resources/org/fudaa/ebli/ressource/ebli_en.fr_txt 2015-10-09 19:53:24 UTC (rev 9183) @@ -910,4 +910,5 @@ Mode contour=Contour mode Mode densit\xE9=Density mode Un calque \xE9ditable doit \xEAtre selectionn\xE9=An editable layer must be selected -Autom. zoom=Zoom auto \ No newline at end of file +Autom. zoom=Zoom auto +Factorisation des abscisses=Factoring abscissa \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |