|
From: <de...@us...> - 2013-07-15 22:56:10
|
Revision: 8442
http://sourceforge.net/p/fudaa/svn/8442
Author: deniger
Date: 2013-07-15 22:56:08 +0000 (Mon, 15 Jul 2013)
Log Message:
-----------
CRUE-504
Modified Paths:
--------------
trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTable.java
trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableModelDefault.java
trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluFileChooserCsvExcel.java
Added Paths:
-----------
trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableModelExportDecorator.java
trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableSimpleExporter.java
Modified: trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTable.java
===================================================================
--- trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTable.java 2013-07-15 22:55:52 UTC (rev 8441)
+++ trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTable.java 2013-07-15 22:56:08 UTC (rev 8442)
@@ -17,6 +17,7 @@
import java.awt.Component;
import java.awt.Point;
import java.awt.Rectangle;
+import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
@@ -257,8 +258,8 @@
* @throws IOException
* @return String
*/
- private String getClipboard() throws UnsupportedFlavorException, IOException {
- final Clipboard clipboard = getToolkit().getSystemClipboard();
+ public static String getClipboard() throws UnsupportedFlavorException, IOException {
+ final Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
return (String) clipboard.getContents(null).getTransferData(DataFlavor.stringFlavor);
}
@@ -270,7 +271,7 @@
* @param _localDecimalSeparator char
* @return ArrayList
*/
- private static ArrayList convertClipboardToTable(final String _chaine, final String _lineseparator,
+ public static ArrayList convertClipboardToTable(final String _chaine, final String _lineseparator,
final String _cellseparator, final char _localDecimalSeparator) {
// ajouter les traitements des exceptions lev\xE9es par les deux methodes de parse.
final ArrayList tab = new ArrayList();
Modified: trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableModelDefault.java
===================================================================
--- trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableModelDefault.java 2013-07-15 22:55:52 UTC (rev 8441)
+++ trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableModelDefault.java 2013-07-15 22:56:08 UTC (rev 8442)
@@ -25,12 +25,14 @@
final JTable t_;
private boolean commentSetByUser;
private List<String> comments;
+ CtuluTableModelExportDecorator decorator;
public CtuluTableModelDefault(final JTable _t, final int[] _column, final int[] _row) {
super();
row_ = _row;
column_ = _column;
t_ = _t;
+ decorator = (CtuluTableModelExportDecorator) _t.getClientProperty(CtuluTableModelExportDecorator.CLIENT_PROPERTY_);
}
public void setComments(List<String> comments) {
@@ -65,7 +67,7 @@
if (row_ != null) {
r = row_[r];
}
- final Object o = t_.getValueAt(r, c);
+ final Object o = getValueAt(r, c);
if (o == null) {
return null;
}
@@ -104,6 +106,13 @@
if (row_ != null) {
r = row_[r];
}
- return t_.getValueAt(r, c);
+ return getValueAt(r, c);
}
+
+ protected Object getValueAt(int row, int col) {
+ if (decorator != null && decorator.hasSpecificExportValue(col)) {
+ return decorator.getValue(row, col);
+ }
+ return t_.getValueAt(row, col);
+ }
}
\ No newline at end of file
Added: trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableModelExportDecorator.java
===================================================================
--- trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableModelExportDecorator.java (rev 0)
+++ trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/table/CtuluTableModelExportDecorator.java 2013-07-15 22:56:08 UTC (rev 8442)
@@ -0,0 +1,17 @@
+/*
+ GPL 2
+ */
+package org.fudaa.ctulu.table;
+
+/**
+ *
+ * @author Frederic Deniger
+ */
+public interface CtuluTableModelExportDecorator {
+
+ static String CLIENT_PROPERTY_ = "CtuluTableModelExportDecorator";
+
+ boolean hasSpecificExportValue(int col);
+
+ Object getValue(int row, int col);
+}
Modified: trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluFileChooserCsvExcel.java
===================================================================
--- trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluFileChooserCsvExcel.java 2013-07-15 22:55:52 UTC (rev 8441)
+++ trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluFileChooserCsvExcel.java 2013-07-15 22:56:08 UTC (rev 8442)
@@ -21,15 +21,15 @@
* @version $Id: CtuluFileChooserCsvExcel.java,v 1.6 2007-06-14 11:58:18 deniger Exp $
*/
public class CtuluFileChooserCsvExcel extends CtuluFileChooser {
-
+
final BuFileFilter ftCsv_;
final BuFileFilter ftXsl_;
final Component parentComponent;
-
+
public CtuluFileChooserCsvExcel(CtuluUI _ui) {
this(_ui == null ? null : _ui.getParentComponent());
}
-
+
public CtuluFileChooserCsvExcel(Component parentComponent) {
this.parentComponent = parentComponent;
ftCsv_ = new BuFileFilter(new String[]{"txt", "csv"}, CtuluResource.CTULU.getString("Texte CSV"));
@@ -44,6 +44,7 @@
setApproveButtonToolTipText(CtuluLib.getS("L'extension du fichier sera automatiquement compl\xE9t\xE9e"));
CtuluFileChooserTestWritable tester = new CtuluFileChooserTestWritable(parentComponent);
tester.setAppendExtension(true, null);
+ setFileFilter(ftCsv_);
setTester(tester);
}
@@ -53,26 +54,22 @@
public boolean isExcelChoosen() {
return getFileFilter() == ftXsl_;
}
-
+
public File getDestFile() {
final int res = showDialog(parentComponent, BuResource.BU.getString("Continuer"));
if (res != JFileChooser.APPROVE_OPTION) {
return null;
}
File f = getSelectedFile();
-
-
- completeExtension(f);
-
-
- return f;
+ return completeExtension(f);
}
-
- private void completeExtension(File f) {
+
+ private File completeExtension(File f) {
final javax.swing.filechooser.FileFilter filter = getFileFilter();
final String name = f.getName();
if (name.indexOf('.') < 0) {
- f = new File(f.getAbsolutePath() + (filter == ftXsl_ ? ".xls" : ".txt"));
+ return new File(f.getAbsolutePath() + (filter == ftXsl_ ? ".xls" : ".txt"));
}
+ return f;
}
}
\ No newline at end of file
Copied: trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableSimpleExporter.java (from rev 8421, trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableExportPanel.java)
===================================================================
--- trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableSimpleExporter.java (rev 0)
+++ trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableSimpleExporter.java 2013-07-15 22:56:08 UTC (rev 8442)
@@ -0,0 +1,107 @@
+/*
+ * @creation 10 mars 2005
+ *
+ * @modification $Date: 2007-06-14 11:58:18 $
+ *
+ * @license GNU General Public License 2
+ *
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ *
+ * @mail de...@fu...
+ */
+package org.fudaa.ctulu.gui;
+
+import com.memoire.bu.BuPreferences;
+import java.awt.Window;
+import java.io.File;
+import java.text.DecimalFormat;
+import org.fudaa.ctulu.CsvWriter;
+import org.fudaa.ctulu.CtuluLib;
+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.CtuluTableModelInterface;
+
+/**
+ * @author DENIGER
+ */
+@SuppressWarnings("serial")
+public final class CtuluTableSimpleExporter {
+
+ private static final char DEFAULT_SEPARATOR = '\t';
+ File dest_;
+ boolean xlsFormat_;
+ final CtuluUI ui_;
+ char separator = '\t';
+ private CtuluTableModelInterface model;
+
+ public static void showExportDialog(final char separator, final CtuluTableModelInterface _table, final File _dest, final boolean _xsl,
+ final CtuluUI _ui) {
+ final CtuluTableSimpleExporter pn = new CtuluTableSimpleExporter(_dest, _xsl, _ui, _table);
+ pn.separator = separator;
+ pn.apply();
+ }
+
+ public static void doExport(final CtuluTableModelInterface _t, final CtuluUI _ui, final Window _f) {
+ doExport(DEFAULT_SEPARATOR, _t, _ui, _f);
+ }
+
+ public static void doExport(final char separator, final CtuluTableModelInterface _t, final CtuluUI _ui, final Window _f) {
+ final CtuluFileChooserCsvExcel choose = new CtuluFileChooserCsvExcel(_ui);
+ final File f = choose.getDestFile();
+ if (f == null) {
+ return;
+ }
+ CtuluTableSimpleExporter.showExportDialog(separator, _t, f, choose.isExcelChoosen(), _ui);
+ }
+
+ public static void doExport(char separator, final CtuluTableModelInterface _t, final CtuluUI _ui) {
+ doExport(separator, _t, _ui, CtuluLibSwing.getFrameAncestor(_ui.getParentComponent()));
+ }
+
+ public static void doExport(final CtuluTableModelInterface _t, final CtuluUI _ui) {
+ doExport('\t', _t, _ui, CtuluLibSwing.getFrameAncestor(_ui.getParentComponent()));
+ }
+
+ public CtuluTableSimpleExporter(File dest_, boolean xlsFormat_, CtuluUI ui_, CtuluTableModelInterface model) {
+ this.dest_ = dest_;
+ this.xlsFormat_ = xlsFormat_;
+ this.ui_ = ui_;
+ this.model = model;
+ }
+
+ public void apply() {
+
+ final CtuluTaskDelegate task = ui_.createTask(CtuluLib.getS("Export format texte"));
+ task.start(new Runnable() {
+ @Override
+ public void run() {
+ final CtuluTableModelInterface m = model;
+ try {
+ if (xlsFormat_) {
+ final CtuluTableExcelWriter w = new CtuluTableExcelWriter(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) {
+ e.printStackTrace();
+ ui_.error(dest_.getName(), e.getMessage(), false);
+ }
+
+ }
+ });
+
+
+ }
+}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|