|
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.
|