|
From: <de...@us...> - 2015-09-23 21:38:55
|
Revision: 9176
http://sourceforge.net/p/fudaa/svn/9176
Author: deniger
Date: 2015-09-23 21:38:52 +0000 (Wed, 23 Sep 2015)
Log Message:
-----------
CRUE-644
Modified Paths:
--------------
trunk/framework/ctulu-common/src/main/resources/org/fudaa/ctulu/ctulu_en.fr_txt
trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluDialog.java
trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluFileChooserCsvExcel.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/EGCsvFileImporter.java
trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTableAction.java
trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTableGraphePanel.java
trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTableModel.java
trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTableModelUpdatable.java
trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliTableInfoPanel.java
Added Paths:
-----------
trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluDialogPreferences.java
Modified: trunk/framework/ctulu-common/src/main/resources/org/fudaa/ctulu/ctulu_en.fr_txt
===================================================================
--- trunk/framework/ctulu-common/src/main/resources/org/fudaa/ctulu/ctulu_en.fr_txt 2015-09-22 22:11:45 UTC (rev 9175)
+++ trunk/framework/ctulu-common/src/main/resources/org/fudaa/ctulu/ctulu_en.fr_txt 2015-09-23 21:38:52 UTC (rev 9176)
@@ -335,4 +335,8 @@
Restaurer la fen\xEAtre parente=Restore the parent window
Maximiser la fen\xEAtre parente=Maximize the parent window
Le contenu du fichier de g\xE9or\xE9f\xE9rencement n'est pas valide ( il doit contenir 6 lignes)=The content of the georeferencing file is not valid ( must contain 6 lines)
-La ligne {0} n'est pas valide et ne peut pas \xEAtre transform\xE9e en nombre=The line {0} is not valid and cannot be transformed to a number
\ No newline at end of file
+La ligne {0} n'est pas valide et ne peut pas \xEAtre transform\xE9e en nombre=The line {0} is not valid and cannot be transformed to a number
+S\xE9lection des donn\xE9es \xE0 exporter=Select data to export
+Export termin\xE9=Export finished
+Donn\xE9es export\xE9es dans le fichier\n {0}=Data exported in the file\n {0}
+Enregistrer sous=Save as
\ No newline at end of file
Modified: trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluDialog.java
===================================================================
--- trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluDialog.java 2015-09-22 22:11:45 UTC (rev 9175)
+++ trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluDialog.java 2015-09-23 21:38:52 UTC (rev 9176)
@@ -136,6 +136,11 @@
afficheDialog(true, _r);
return response_;
}
+ public int afficheDialogModal(final boolean modify) {
+ setModal(true);
+ afficheDialog(modify, null);
+ return response_;
+ }
/**
* @param _loc le point en haut a gauche de la nouvelle fenetre
Added: trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluDialogPreferences.java
===================================================================
--- trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluDialogPreferences.java (rev 0)
+++ trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluDialogPreferences.java 2015-09-23 21:38:52 UTC (rev 9176)
@@ -0,0 +1,354 @@
+/*
+ GPL 2
+ */
+package org.fudaa.ctulu.gui;
+
+import com.memoire.bu.BuDesktop;
+import com.memoire.fu.FuPreferences;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Frame;
+import java.awt.GraphicsDevice;
+import java.awt.GraphicsEnvironment;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Toolkit;
+import java.util.List;
+import java.util.Map;
+import java.util.prefs.Preferences;
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.JInternalFrame;
+import javax.swing.table.TableColumn;
+import org.apache.commons.lang.StringUtils;
+import org.jdesktop.swingx.JXTable;
+import org.jdesktop.swingx.table.TableColumnExt;
+import org.jdesktop.swingx.table.TableColumnModelExt;
+
+/**
+ *
+ * @author Frederic Deniger
+ */
+public class CtuluDialogPreferences {
+
+ public static boolean isWindowMaximized(JFrame main) {
+ int extendedState = main.getExtendedState();
+ return isExtendedStateMaximized(extendedState);
+ }
+
+ public static boolean isExtendedStateMaximized(int extendedState) {
+ return (extendedState & Frame.MAXIMIZED_BOTH) == Frame.MAXIMIZED_BOTH;
+ }
+
+ public static void saveComponentLocationAndDimension(Component main, final Preferences preferences,
+ final String prefix) {
+ saveIn(main.getSize(), prefix, preferences);
+ saveIn(main.getLocation(), prefix, preferences);
+ }
+ public static void saveComponentLocationAndDimension(Component main, final FuPreferences preferences,
+ final String prefix) {
+ saveIn(main.getSize(), prefix, preferences);
+ saveIn(main.getLocation(), prefix, preferences);
+ }
+
+ public static void ensureJInternalFrameWillBeVisible(JInternalFrame main, BuDesktop parent) {
+ Point init = main.getLocation();
+ Dimension initDim = main.getSize();
+ int maxW = parent.getWidth();
+ int maxH = parent.getHeight();
+ int ifW = initDim.width;
+ int ifH = initDim.height;
+ ifW = Math.min(maxW, ifW);
+ ifH = Math.min(maxH, ifH);
+ int locX = Math.max(0, Math.min(init.x, maxW - ifW));
+ int locY = Math.max(0, Math.min(init.y, maxH - ifH));
+ Point newPt = new Point(locX, locY);
+ Dimension newDimension = new Dimension(ifW, ifH);
+ if (!newPt.equals(init) || newDimension.equals(initDim)) {
+ main.setLocation(newPt);
+ main.setSize(newDimension);
+ }
+ }
+
+ public static Point loadComponentLocationAndDimension(final Component window, final Preferences preferences,
+ final String mainWindow) {
+
+ final Dimension dim = loadDim(mainWindow, preferences);
+ if (dim != null) {
+ window.setPreferredSize(dim);
+ window.setSize(dim);
+ }
+ final Point loc = loadLocation(mainWindow, preferences);
+ if (loc != null) {
+ window.setLocation(loc);
+ }
+ return loc;
+ }
+ public static Point loadComponentLocationAndDimension(final Component window, final FuPreferences preferences,
+ final String mainWindow) {
+
+ final Dimension dim = loadDim(mainWindow, preferences);
+ if (dim != null) {
+ window.setPreferredSize(dim);
+ window.setSize(dim);
+ }
+ final Point loc = loadLocation(mainWindow, preferences);
+ if (loc != null) {
+ window.setLocation(loc);
+ }
+ return loc;
+ }
+
+ /**
+ * @param prefix le prefixe a utilser pour les cles
+ * @param parentDim
+ * @param pref les preferences a utiliser
+ * @return la dim lue ou null si non trouvee
+ */
+ public static Dimension loadRatioDim(final String prefix, final Dimension parentDim, final Preferences pref) {
+ final double w = pref.getDouble(prefix + ".ratio.w", -1d);
+ if (w <= 0) {
+ return null;
+ }
+ final double h = pref.getDouble(prefix + ".ratio.h", -1d);
+ if (h <= 0) {
+ return null;
+ }
+ return new Dimension((int) (w * parentDim.width), (int) (h * parentDim.height));
+ }
+
+ /**
+ * @param prefix le prefixe a utilser pour les cles
+ * @param pref les preferences a utiliser
+ * @return le point lu ou null si non trouve
+ */
+ public static Point loadLocation(final String prefix, final Preferences pref) {
+ final int x = pref.getInt(prefix + ".x", -1);
+ if (x < 0) {
+ return null;
+ }
+ final int y = pref.getInt(prefix + ".y", -1);
+ if (y < 0) {
+ return null;
+ }
+ return new Point(x, y);
+ }
+ public static Point loadLocation(final String prefix, final FuPreferences pref) {
+ final int x = pref.getIntegerProperty(prefix + ".x", -1);
+ if (x < 0) {
+ return null;
+ }
+ final int y = pref.getIntegerProperty(prefix + ".y", -1);
+ if (y < 0) {
+ return null;
+ }
+ return new Point(x, y);
+ }
+
+ /**
+ * @param pref les pref a modifier
+ * @param table la table a sauver: colonne + visibilite
+ */
+ public static void saveTablePreferences(final Preferences pref, final JXTable table) {
+ final List<TableColumn> columns = ((TableColumnModelExt) table.getColumnModel()).getColumns(true);
+ final String tablePrefix = getComponentPreferencesPrefix(table);
+ saveIn(table.getSize(), tablePrefix + "dimension.", pref);
+ final String wId = tablePrefix + "column.width.";
+ final String visibleId = tablePrefix + "column.visible.";
+ for (final TableColumn tableColumn : columns) {
+ final String colName = table.getModel().getColumnName(tableColumn.getModelIndex());
+ pref.putInt(wId + colName, tableColumn.getWidth());
+ pref.putBoolean(visibleId + colName, ((TableColumnExt) tableColumn).isVisible());
+ }
+ }
+
+ public static GraphicsDevice getDevice(final Component window) {
+ GraphicsDevice[] screenDevices = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
+ Rectangle boundsOfWindow = window.getBounds();
+ if (screenDevices != null && screenDevices.length > 1) {
+ for (GraphicsDevice graphicsDevice : screenDevices) {
+ Rectangle bounds = graphicsDevice.getDefaultConfiguration().getBounds();
+ Point p = new Point(boundsOfWindow.x, bounds.y);
+ if (bounds.contains(p)) {
+ p.x = boundsOfWindow.x + boundsOfWindow.width;
+ if (bounds.contains(p)) {
+ return graphicsDevice;
+ }
+ }
+ }
+ }
+ return GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
+ }
+
+ public static void ensureComponentWillBeVisible(final Component window, final Point initLocation) {
+
+ final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+ ensureComponentWillBeVisible(window, initLocation, screenSize);
+ GraphicsDevice[] screenDevices = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
+ if (screenDevices != null && screenDevices.length > 1) {
+ GraphicsDevice device = getDevice(window);
+ if (device != null) {
+ ensureComponentWillBeVisible(window, initLocation, device.getDefaultConfiguration().getBounds().getSize(),
+ false);
+ }
+ }
+ }
+
+ private static void ensureComponentWillBeVisible(final Component window, final Point initLocation,
+ final Dimension screenSize) {
+ ensureComponentWillBeVisible(window, initLocation, screenSize, true);
+ }
+
+ private static void ensureComponentWillBeVisible(final Component window, final Point initLocation,
+ final Dimension screenSize, boolean modifyX) {
+ final Dimension dim = window.getSize();
+
+ boolean size = false;
+ if (dim.width > screenSize.width) {
+ size = true;
+ dim.width = screenSize.width;
+ }
+ if (dim.height > screenSize.height) {
+ size = true;
+ dim.height = screenSize.height;
+ }
+ if (size) {
+ window.setSize(dim);
+ window.setPreferredSize(dim);
+ }
+ if (initLocation == null) {
+ return;
+ }
+ if (modifyX) {
+ initLocation.x = Math.max(0, Math.min(initLocation.x, screenSize.width - dim.width));
+ }
+ initLocation.y = Math.max(0, Math.min(initLocation.y, screenSize.height - dim.height));
+ window.setLocation(initLocation);
+ }
+
+ /**
+ * @param d le point a sauvegarder
+ * @param prefix le prefixe a utilser pour les cles
+ * @param pref les preferences a modifier
+ */
+ public static void saveIn(final Point d, final String prefix, final Preferences pref) {
+ // on s'assure d'avoir au moins 0: car si la fenetre est maximise, la location
+ // renvoie -4 ,-4
+ pref.putInt(prefix + ".x", Math.max(0, d.x));
+ pref.putInt(prefix + ".y", Math.max(0, d.y));
+ }
+ public static void saveIn(final Point d, final String prefix, final FuPreferences pref) {
+ // on s'assure d'avoir au moins 0: car si la fenetre est maximise, la location
+ // renvoie -4 ,-4
+ pref.putIntegerProperty(prefix + ".x", Math.max(0, d.x));
+ pref.putIntegerProperty(prefix + ".y", Math.max(0, d.y));
+ }
+
+ /**
+ * @param prefix le prefixe a utilser pour les cles
+ * @param pref les preferences a utiliser
+ * @return la dim lue ou null si non trouvee
+ */
+ public static Dimension loadDim(final String prefix, final Preferences pref) {
+ final int w = pref.getInt(prefix + ".w", -1);
+ if (w <= 0) {
+ return null;
+ }
+ final int h = pref.getInt(prefix + ".h", -1);
+ if (h <= 0) {
+ return null;
+ }
+ return new Dimension(w, h);
+ }
+ public static Dimension loadDim(final String prefix, final FuPreferences pref) {
+ final int w = pref.getIntegerProperty(prefix + ".w", -1);
+ if (w <= 0) {
+ return null;
+ }
+ final int h = pref.getIntegerProperty(prefix + ".h", -1);
+ if (h <= 0) {
+ return null;
+ }
+ return new Dimension(w, h);
+ }
+
+ public static boolean loadExtendedState(final String prefix, final Preferences pref) {
+ return pref.getBoolean(prefix + ".isExtended", false);
+ }
+
+ public static void saveExtendedState(final String prefix, final Preferences pref, boolean val) {
+ pref.putBoolean(prefix + ".isExtended", val);
+ }
+
+ public static void saveIn(final Dimension d, final String prefix, final Preferences pref) {
+ pref.putInt(prefix + ".w", d.width);
+ pref.putInt(prefix + ".h", d.height);
+ }
+ public static void saveIn(final Dimension d, final String prefix, final FuPreferences pref) {
+ pref.putIntegerProperty(prefix + ".w", d.width);
+ pref.putIntegerProperty(prefix + ".h", d.height);
+ }
+
+ /**
+ * @param d les dimension du composant a suaver
+ * @param parentDim les dimension parentes utilisees pour le ratio.
+ * @param prefix prefix a utiliser pour les preferences
+ * @param pref lles preferences a modifier
+ */
+ public static void saveRatioIn(final Dimension d, final Dimension parentDim, final String prefix,
+ final Preferences pref) {
+ pref.putDouble(prefix + ".ratio.w", ((double) d.width) / (double) parentDim.width);
+ pref.putDouble(prefix + ".ratio.h", ((double) d.height) / (double) parentDim.height);
+ }
+
+ /**
+ * @param pref les preferences a utiliser
+ * @param table la table a modifier
+ * @param defaultWidths les largeurs a utiliser par default
+ */
+ public static void loadTablePreferences(final Preferences pref, final JXTable table,
+ final Map<String, Integer> defaultWidths) {
+ final String tablePrefix = getComponentPreferencesPrefix(table);
+ loadTableSizePreferences(pref, table, tablePrefix);
+ final List<TableColumn> columns = ((TableColumnModelExt) table.getColumnModel()).getColumns(true);
+
+ final String wId = tablePrefix + "column.width.";
+ final String visibleId = tablePrefix + "column.visible.";
+ for (final TableColumn tableColumn : columns) {
+ final String colName = table.getModel().getColumnName(tableColumn.getModelIndex());
+ final Integer defaultWidth = defaultWidths == null ? null : defaultWidths.get(colName);
+ final int w = pref.getInt(wId + colName, defaultWidth == null ? -1 : defaultWidth.intValue());
+ if (w > 0) {
+ tableColumn.setPreferredWidth(w);
+ tableColumn.setWidth(w);
+ }
+ // par defaut les colonnes sont visibles: donc on ne traite que le cas cache.
+ if (!pref.getBoolean(visibleId + colName, true)) {
+ ((TableColumnExt) tableColumn).setVisible(false);
+ }
+ }
+ }
+
+ /**
+ * Dimensionne la table selon les preferences sauvegardees.
+ *
+ * @param pref les preferences a utiliser
+ * @param table la table a modifier
+ * @param defaultWidths les largeurs a utiliser par default
+ */
+ private static void loadTableSizePreferences(final Preferences pref, final JXTable table, final String tablePrefix) {
+ final Dimension d = loadDim(tablePrefix + "dimension.", pref);
+ if (d != null) {
+ table.setSize(d);
+ }
+ }
+
+ /**
+ * @param t
+ * @return
+ */
+ private static String getComponentPreferencesPrefix(final JComponent t) {
+ return StringUtils.defaultString(t.getName(), "noName") + ".";
+ }
+
+}
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 2015-09-22 22:11:45 UTC (rev 9175)
+++ trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluFileChooserCsvExcel.java 2015-09-23 21:38:52 UTC (rev 9176)
@@ -57,6 +57,7 @@
CtuluFileChooserTestWritable tester = new CtuluFileChooserTestWritable(parentComponent);
tester.setAppendExtension(true, null);
setFileFilter(ftXslx_);
+ setDialogTitle(CtuluLib.getS("Enregistrer sous"));
setTester(tester);
}
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-09-22 22:11:45 UTC (rev 9175)
+++ trunk/framework/ctulu-ui/src/main/java/org/fudaa/ctulu/gui/CtuluTableExportPanel.java 2015-09-23 21:38:52 UTC (rev 9176)
@@ -20,6 +20,7 @@
import com.memoire.bu.BuScrollPane;
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;
@@ -32,6 +33,7 @@
import javax.swing.JTable;
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;
@@ -79,17 +81,37 @@
pn.separator = separator;
final CtuluDialog dial = CtuluDialogPanel.createDialog(windowParent, pn);
pn.setParentDial(dial);
- dial.afficheDialogModal();
+ dial.setTitle(CtuluLib.getS("S\xE9lection des donn\xE9es \xE0 exporter"));
+ Point isSet = CtuluDialogPreferences.loadComponentLocationAndDimension(dial, BuPreferences.BU, "exportExcelDialog");
+ CtuluDialogPreferences.ensureComponentWillBeVisible(dial, dial.getLocation());
+ dial.afficheDialogModal(isSet == null);
+ 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);
+ if (StringUtils.isNotBlank(defaultDir)) {
+ File dir = new File(defaultDir);
+ if (dir.exists() && dir.isDirectory()) {
+ choose.setCurrentDirectory(dir);
+
+ }
+ }
final File f = choose.getDestFile();
if (f == null) {
return;
+ } else {
+ File dir = f.getParentFile();
+ if (dir != null) {
+ BuPreferences.BU.putStringProperty("export.excel.lastPath", dir.getAbsolutePath());
+ BuPreferences.BU.writeIniFile();
+ }
}
CtuluTableExportPanel.showExportDialog(separator, _t, f, choose.getTypeChoosen(), _ui);
}
@@ -264,6 +286,9 @@
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);
}
});
Modified: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGCsvFileImporter.java
===================================================================
--- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGCsvFileImporter.java 2015-09-22 22:11:45 UTC (rev 9175)
+++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGCsvFileImporter.java 2015-09-23 21:38:52 UTC (rev 9176)
@@ -7,6 +7,8 @@
import java.util.ArrayList;
import java.util.Arrays;
import javax.swing.JFileChooser;
+import org.fudaa.ctulu.CtuluLib;
+import org.fudaa.ctulu.CtuluLibString;
import org.fudaa.ctulu.gui.CtuluFileChooserCsvExcel;
import org.fudaa.ctulu.table.CtuluExcelCsvFileReader;
@@ -15,13 +17,13 @@
* @author Frederic Deniger
*/
public class EGCsvFileImporter {
-
+
private final EGTableGraphePanel panel;
-
+
EGCsvFileImporter(EGTableGraphePanel aThis) {
this.panel = aThis;
}
-
+
void importCsv() {
final CtuluFileChooserCsvExcel choose = new CtuluFileChooserCsvExcel(panel);
choose.setDialogType(JFileChooser.OPEN_DIALOG);
@@ -39,9 +41,15 @@
ArrayList tab = new ArrayList(values.length);
for (int i = 0; i < values.length; i++) {
String[] value = values[i];
+ //la premier ligne peut \xEAtre les entetes
+ if (i == 0) {
+ if (!CtuluLibString.isNumeric(value[0])) {
+ continue;
+ }
+ }
tab.add(Arrays.asList(value));
}
panel.t_.insertTableInTable(tab);
}
-
+
}
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-09-22 22:11:45 UTC (rev 9175)
+++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTableAction.java 2015-09-23 21:38:52 UTC (rev 9176)
@@ -12,8 +12,10 @@
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;
@@ -30,12 +32,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.CtuluUIDialog;
import org.fudaa.ctulu.table.CtuluTable;
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;
@@ -152,7 +156,8 @@
menu.setIcon(BuResource.BU.getMenuIcon("configurer"));
final ActionListener ac = new OptionActionListener(tableModel, table);
final boolean isCourbeSelected = courbesSelected.size() > 0;
- menu.addCheckBox(EbliLib.getS("Afficher uniquement les courbes s\xE9lectionn\xE9es"), "SHOW_SELECTED_COURBES", null, isCourbeSelected, isCourbeSelected)
+ menu.addCheckBox(EbliLib.getS("Afficher uniquement les courbes s\xE9lectionn\xE9es"), "SHOW_SELECTED_COURBES", null, isCourbeSelected,
+ isCourbeSelected)
.addActionListener(ac);
menu.addCheckBox(EbliLib.getS("Afficher une seule colonne des abscisses"), "SHOW_ONE_TIME", null, true, false).addActionListener(ac);
tableModel.setShowOnlySelected(isCourbeSelected);
Modified: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTableGraphePanel.java
===================================================================
--- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTableGraphePanel.java 2015-09-22 22:11:45 UTC (rev 9175)
+++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTableGraphePanel.java 2015-09-23 21:38:52 UTC (rev 9176)
@@ -336,6 +336,10 @@
private void addValuesInModel(final List _tab, final EGTableModel _model, final CtuluDoubleParser _doubleParser,
final CtuluCommandComposite _cmp, final int _maxUpdate) {
+ if (_model instanceof EGTableModelUpdatable) {
+ ((EGTableModelUpdatable) _model).addValuesInModel(_tab, _doubleParser, _cmp, _maxUpdate);
+ return;
+ }
final int nbLine = _tab.size();
final TDoubleArrayList newX = new TDoubleArrayList(nbLine - _maxUpdate + 1);
final TDoubleArrayList newY = new TDoubleArrayList(nbLine - _maxUpdate + 1);
Modified: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTableModel.java
===================================================================
--- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTableModel.java 2015-09-22 22:11:45 UTC (rev 9175)
+++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTableModel.java 2015-09-23 21:38:52 UTC (rev 9176)
@@ -91,19 +91,19 @@
c_.getModel().setValue(_rowIndex, x, y, a_.getCmd());
}
- public void setValueAt(final double _val, final int _rowIndex, final int _columnIndex,
+ public boolean setValueAt(final double _val, final int _rowIndex, final int _columnIndex,
final CtuluCommandContainer _cmd) {
final double x = _columnIndex == xColIndex ? _val : c_.getModel().getX(_rowIndex);
final double y = _columnIndex == yColIndex ? _val : c_.getModel().getY(_rowIndex);
- c_.getModel().setValue(_rowIndex, x, y, _cmd);
+ return c_.getModel().setValue(_rowIndex, x, y, _cmd);
}
public void addValueAt(final double _x, final double _y, final CtuluCommandContainer _cmd) {
c_.getModel().addValue(_x, _y, _cmd);
}
- public void addValueAt(final double[] _x, final double[] _y, final CtuluCommandContainer _cmd) {
- c_.getModel().addValue(_x, _y, _cmd);
+ public final boolean addValueAt(final double[] _x, final double[] _y, final CtuluCommandContainer _cmd) {
+ return c_.getModel().addValue(_x, _y, _cmd);
}
protected void selectedCourbeChanged(final EGCourbe _a) {
Modified: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTableModelUpdatable.java
===================================================================
--- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTableModelUpdatable.java 2015-09-22 22:11:45 UTC (rev 9175)
+++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTableModelUpdatable.java 2015-09-23 21:38:52 UTC (rev 9176)
@@ -16,4 +16,6 @@
int updateLines(final List _tab, final int _selectedColumm,
final int _selectedRow, final CtuluDoubleParser _doubleParser, final CtuluCommandComposite _cmp);
+ public void addValuesInModel(List _tab, CtuluDoubleParser _doubleParser, CtuluCommandComposite _cmp, int _maxUpdate);
+
}
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-09-22 22:11:45 UTC (rev 9175)
+++ trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliTableInfoPanel.java 2015-09-23 21:38:52 UTC (rev 9176)
@@ -32,11 +32,13 @@
import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.KeyEvent;
+import javax.swing.JTable;
import javax.units.SI;
import org.fudaa.ctulu.CtuluLib;
import org.fudaa.ctulu.CtuluUI;
import org.fudaa.ctulu.gui.CtuluCellTextDecimalRenderer;
+import org.fudaa.ctulu.gui.CtuluDialogPreferences;
import org.fudaa.ctulu.gui.CtuluLibSwing;
import org.fudaa.ctulu.gui.CtuluTableExportPanel;
import org.fudaa.ctulu.table.CtuluTableColumnHeader;
@@ -210,6 +212,7 @@
sortedModel_.setModel(globalModel_);
sortedModel_.setSortOnUpdate(true);
table_.setModel(sortedModel_);
+ table_.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table_.getActionMap().remove("copy");
String t = (String) table_.getClientProperty("TABLE_TITLE");
if (t == null) {
@@ -236,11 +239,15 @@
}
add(new BuScrollPane(table_), BuBorderLayout.CENTER);
// l'ordre de ces 2 lignes est important
- table_.setTableHeader(new CtuluTableColumnHeader(colModel_));
+ CtuluTableColumnHeader header = new CtuluTableColumnHeader(colModel_);
+ table_.setTableHeader(header);
+
sortedModel_.install(table_);
table_.setColumnModel(colModel_);
table_.setCellSelectionEnabled(true);
-
+ for (int i = 0; i < colModel_.getColumnCount(); i++) {
+ header.adjustWidth(colModel_.getColumn(i));
+ }
}
}
@@ -303,8 +310,12 @@
dialog_.pack();
dialog_.setTitle(target_.getTitle());
dialog_.setLocationRelativeTo(CtuluLibSwing.getFrameAncestor(ui_.getParentComponent()));
+ CtuluDialogPreferences.loadComponentLocationAndDimension(dialog_, EbliPreferences.EBLI, "graphe.table");
+ CtuluDialogPreferences.ensureComponentWillBeVisible(dialog_, dialog_.getLocation());
dialog_.show();
dialog_.dispose();
+ CtuluDialogPreferences.saveComponentLocationAndDimension(dialog_, EbliPreferences.EBLI, "graphe.table");
+ EbliPreferences.EBLI.writeIniFile();
dialog_ = null;
}
private ExportTableCommentSupplier exportTableCommentSupplier;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|