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