Isis-fish-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
July 2009
- 3 participants
- 64 discussions
r2512 - in isis-fish/trunk/src/main: java/fr/ifremer/isisfish/ui/script java/fr/ifremer/isisfish/ui/script/action resources/i18n
by chatellier@users.labs.libre-entreprise.org 24 Jul '09
by chatellier@users.labs.libre-entreprise.org 24 Jul '09
24 Jul '09
Author: chatellier
Date: 2009-07-24 16:24:17 +0000 (Fri, 24 Jul 2009)
New Revision: 2512
Added:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/FileSelectionTableModel.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ImportDialogUI.css
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ExportAction.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ImportAction.java
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ImportDialogUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx
isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties
isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties
Log:
Migration of script import/export UI (not done from swixat)
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/FileSelectionTableModel.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/FileSelectionTableModel.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/FileSelectionTableModel.java 2009-07-24 16:24:17 UTC (rev 2512)
@@ -0,0 +1,176 @@
+/* *##%
+ * Copyright (C) 2009 Code Lutin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/
+
+package fr.ifremer.isisfish.ui.script;
+
+import static org.codelutin.i18n.I18n._;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.table.AbstractTableModel;
+
+/**
+ * File selection table model.
+ *
+ * @author chatellier
+ * @version $Revision: 1.0 $
+ *
+ * Last update : $Date: 23 juil. 2009 $
+ * By : $Author: chatellier $
+ */
+public class FileSelectionTableModel extends AbstractTableModel {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 6327223042377741126L;
+
+ /** Column names. */
+ public final static String[] COLUMN_NAMES = { _("isisfish.common.ellipsis"),
+ _("isisfish.common.module"), _("isisfish.common.file") };
+
+ protected List<String> availableFiles;
+ protected List<String> selectedFiles;
+
+ /**
+ * Constructor.
+ *
+ * @param availableFiles available file list
+ */
+ public FileSelectionTableModel(List<String> availableFiles) {
+ this.availableFiles = availableFiles;
+ this.selectedFiles = new ArrayList<String>(availableFiles);
+ }
+
+ /*
+ * @see javax.swing.table.TableModel#getColumnCount()
+ */
+ @Override
+ public int getColumnCount() {
+ return COLUMN_NAMES.length;
+ }
+
+ /*
+ * @see javax.swing.table.AbstractTableModel#getColumnName(int)
+ */
+ @Override
+ public String getColumnName(int column) {
+ return COLUMN_NAMES[column];
+ }
+
+ /*
+ * @see javax.swing.table.AbstractTableModel#getColumnClass(int)
+ */
+ @Override
+ public Class<?> getColumnClass(int columnIndex) {
+ Class<?> result = null;
+
+ switch (columnIndex) {
+ case 0:
+ result = Boolean.class;
+ break;
+ default:
+ result = String.class;
+ break;
+ }
+
+ return result;
+ }
+
+ /*
+ * @see javax.swing.table.AbstractTableModel#isCellEditable(int, int)
+ */
+ @Override
+ public boolean isCellEditable(int rowIndex, int columnIndex) {
+ // seulement les cases a cocher sont editables
+ return columnIndex == 0;
+ }
+
+ /*
+ * @see javax.swing.table.TableModel#getRowCount()
+ */
+ @Override
+ public int getRowCount() {
+ return availableFiles.size();
+ }
+
+ /*
+ * @see javax.swing.table.TableModel#getValueAt(int, int)
+ */
+ @Override
+ public Object getValueAt(int rowIndex, int columnIndex) {
+
+ Object result = null;
+
+ String rowFileName = availableFiles.get(rowIndex);
+ switch (columnIndex) {
+ case 0:
+ result = selectedFiles.contains(rowFileName);
+ break;
+ case 1:
+ if (rowFileName.contains(java.io.File.separator)) {
+ result = rowFileName.substring(0, rowFileName
+ .lastIndexOf(java.io.File.separator));
+ } else {
+ result = rowFileName;
+ }
+ break;
+ case 2:
+ if (rowFileName.contains(java.io.File.separator)) {
+ result = rowFileName.substring(rowFileName
+ .lastIndexOf(java.io.File.separator) + 1);
+ } else {
+ result = "";
+ }
+ break;
+ }
+ return result;
+ }
+
+ /*
+ * @see javax.swing.table.AbstractTableModel#setValueAt(java.lang.Object, int, int)
+ */
+ @Override
+ public void setValueAt(Object value, int rowIndex, int columnIndex) {
+
+ String rowFileName = availableFiles.get(rowIndex);
+ switch (columnIndex) {
+ case 0:
+ Boolean booleanValue = (Boolean) value;
+ if (booleanValue) {
+ selectedFiles.add(rowFileName);
+ } else {
+ selectedFiles.remove(rowFileName);
+ }
+ break;
+ default:
+ throw new RuntimeException("Can't edit that column");
+ }
+ }
+
+ /**
+ * Set all files selected.
+ */
+ public void checkAll() {
+ selectedFiles.addAll(availableFiles);
+ fireTableDataChanged();
+ }
+
+ public List<String> getSelectedFiles() {
+ return selectedFiles;
+ }
+}
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ImportDialogUI.css
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ImportDialogUI.css (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ImportDialogUI.css 2009-07-24 16:24:17 UTC (rev 2512)
@@ -0,0 +1,7 @@
+#newFilesLabel {
+ foreground: "{new java.awt.Color(051,102,225)}";
+}
+
+#conflictFilesLabel {
+ foreground: red;
+}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ImportDialogUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ImportDialogUI.jaxx 2009-07-24 16:23:34 UTC (rev 2511)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ImportDialogUI.jaxx 2009-07-24 16:24:17 UTC (rev 2512)
@@ -1,83 +1,87 @@
+<!--
+/* *##%
+ * Copyright (C) 2005 - 2009 Ifremer, Code Lutin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/
+-->
<JDialog modal="true" resizable='false' title='isisfish.script.import'>
- <script>
- // FIXME a refaire
+ <style source="ImportDialogUI.css" />
-// import org.codelutin.vcs.ui.FieldModelUtil.ModuleFile;
-
-// protected ModuleFile modelItems;
-// protected ModuleFile modelNewItems;
- protected Object modelItems;
- protected Object modelNewItems;
+ <FileSelectionTableModel id='newFilesTableModel' javaBean='null' />
+ <FileSelectionTableModel id='conflictFilesTableModel' javaBean='null' />
+
+ <Boolean id="okEnabled" javaBean='false' />
+ <Boolean id="newItemEmpty" javaBean='false' />
+ <Boolean id="conflictItemEmpty" javaBean='false' />
+ <Boolean id="bothEmpty" javaBean='false' />
+
+ <script><![CDATA[
- public boolean isOkEnabled() {
- return true;
-// (!isItemEmpty() && modelItems.getSelected(0).size() > 0) ||
-// (!isNewItemEmpty() && modelNewItems.getSelected(0).size() > 0);
- }
+ /*public boolean isOkEnabled() {
+ return (!isConflictItemEmpty() && !conflictFilesTableModel.getSelectedFiles().isEmpty()) ||
+ (!isNewItemEmpty() && !newFilesTableModel.getSelectedFiles().isEmpty());
+ }*/
- protected boolean isItemEmpty() {
- return modelItems == null;// || modelItems.getRowCount() == 0;
+ newFilesTable.getColumnModel().getColumn(0).setWidth(30);
+ conflictFilesTable.getColumnModel().getColumn(0).setWidth(30);
+
+ public void refresh() {
+ setConflictItemEmpty(conflictFilesTableModel.getRowCount() == 0);
+ setNewItemEmpty(newFilesTableModel.getRowCount() == 0);
+ setBothEmpty(isConflictItemEmpty() && isNewItemEmpty());
+
+ setOkEnabled((!isConflictItemEmpty() && !conflictFilesTableModel.getSelectedFiles().isEmpty()) ||
+ (!isNewItemEmpty() && !newFilesTableModel.getSelectedFiles().isEmpty()));
}
- protected boolean isNewItemEmpty() {
- return modelNewItems == null;// || modelNewItems.getRowCount() == 0;
+ public void doCheckAll() {
+ newFilesTableModel.checkAll();
+ conflictFilesTableModel.checkAll();
+ //refresh();
}
-
- public boolean isEmpty() {
- return isItemEmpty() && isNewItemEmpty();
- }
-
- public void doRefresh() {
- fr.ifremer.isisfish.ui.util.JaxxUtil.refresh(this,"table1.visible",
- "table2.visible","label2.visible", "label3.visible",
- "checkAll.enabled", "ok.enabled");
- }
-
- public void doCheckAll() {
-// if (!isItemEmpty()) modelItems.checkAll();
-// if (!isNewItemEmpty()) modelNewItems.checkAll();
- doRefresh();
- }
-</script>
+ ]]></script>
<Table>
- <row fill='horizontal'>
- <cell columns='3' weightx="1">
- <JLabel id='label' font-size='12'
- foreground='{new Color(051,102,225)}'/>
- </cell>
- </row>
<row weighty="1" fill='both'>
- <cell columns='3' weighty="1" weightx="1" fill="both">
+ <cell weighty="1" weightx="1" fill="both">
<Table>
<row>
<cell weightx="1">
- <JLabel id='label2' font-size='12' visible='{!isNewItemEmpty()}'
- text='isisfish.script.import.labelAdd'
- foreground='{new Color(051,102,225)}'/>
+ <JLabel id='newFilesLabel' font-size='12' visible='{!isNewItemEmpty()}'
+ text='isisfish.script.import.labelAdd' />
</cell>
</row>
<row fill='both'>
<cell weighty="1">
- <!-- TODO SHould put the both table in this cell -->
- <JScrollPane id='table1' visible='{!isNewItemEmpty()}'>
- <JTable id="newItems" autoResizeMode='3'
- onMouseClicked="doRefresh()"/>
+ <JScrollPane visible='{!isNewItemEmpty()}'>
+ <JTable id="newFilesTable" autoResizeMode='{JTable.AUTO_RESIZE_LAST_COLUMN}'
+ onMouseClicked="refresh()" />
</JScrollPane>
</cell>
</row>
<row>
<cell weightx="1">
- <JLabel id='label3' font-size='12' visible='{!isItemEmpty()}'
- text='isisfish.script.import.labelOverwrite'
- foreground='{Color.RED}'/>
+ <JLabel id='conflictFilesLabel' font-size='12' visible='{!isConflictItemEmpty()}'
+ text='isisfish.script.import.labelOverwrite' />
</cell>
</row>
<row fill='both' >
<cell weighty="1">
- <!-- TODO SHould put the both table in this cell -->
- <JScrollPane id='table2' visible='{!isItemEmpty()}'>
- <JTable id="items" autoResizeMode='3'
- onMouseClicked="doRefresh()"/>
+ <JScrollPane visible='{!isConflictItemEmpty()}'>
+ <JTable id="conflictFilesTable" autoResizeMode='{JTable.AUTO_RESIZE_LAST_COLUMN}'
+ onMouseClicked="refresh()" />
</JScrollPane>
</cell>
</row>
@@ -85,21 +89,20 @@
</cell>
</row>
<row fill='horizontal'>
- <cell weightx="1" columns="3" fill='both'>
- <JTextField id='archivePath' font-size='12' columns='28'
- editable='false' height='25'/>
+ <cell weightx="1" fill='both'>
+ <JTextField id='archivePath' editable='false' height='25'/>
</cell>
</row>
<row fill='horizontal'>
- <cell columns="3" fill='both'>
+ <cell fill='both'>
<JPanel layout='{new GridLayout(0, 3, 2, 2)}'>
<JCheckBox id='checkAll' text='isisfish.script.import.checkAll'
toolTipText='isisfish.script.import.tooltip.checkAll'
- enabled='{!isEmpty()}'
+ enabled='{!isBothEmpty()}'
onActionPerformed="doCheckAll()" />
- <JButton id='ok' text='isisfish.script.import.ok'
+ <JButton id='okButton' text='isisfish.script.import.import'
enabled='{isOkEnabled()}'/>
- <JButton id='cancel' text='isisfish.script.import.cancel'/>
+ <JButton id='cancelButton' text='isisfish.common.cancel'/>
</JPanel>
</cell>
</row>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java 2009-07-24 16:23:34 UTC (rev 2511)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java 2009-07-24 16:24:17 UTC (rev 2512)
@@ -40,9 +40,12 @@
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
+import jaxx.runtime.swing.ErrorDialogUI;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codelutin.util.FileUtil;
+import org.codelutin.util.ZipUtil;
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.IsisFishRuntimeException;
@@ -56,6 +59,8 @@
import fr.ifremer.isisfish.datastore.SensitivityStorage;
import fr.ifremer.isisfish.datastore.SimulatorStorage;
import fr.ifremer.isisfish.equation.Language;
+import fr.ifremer.isisfish.ui.script.action.CancelAction;
+import fr.ifremer.isisfish.ui.script.action.ImportAction;
import fr.ifremer.isisfish.ui.widget.editor.GenericCell;
import fr.ifremer.isisfish.util.ClasspathTemplateLoader;
import fr.ifremer.isisfish.util.CompilationResult;
@@ -63,7 +68,6 @@
import freemarker.cache.TemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.Template;
-import jaxx.runtime.swing.ErrorDialogUI;
class ScriptFileFilter implements FileFilter {
protected FileFilter filter;
@@ -622,14 +626,63 @@
return msg;
}
+ /**
+ * Import zipped archive containing scripts.
+ *
+ * @return status message
+ */
public String importScript() {
String msg = null;
if (log.isDebugEnabled()) {
log.debug("importScript ");
}
- // TODO : a reimplanter
+
+ File root = IsisFish.config.getDatabaseDirectory();
try {
- msg = _("isisfish.message.import.scripts.file.cancelled");
+ // ask user form a .zip file
+ File file = FileUtil.getFile(".*.zip$", _("isisfish.message.import.scripts.zipped"));
+ if (file != null) {
+
+ //frame.setInfoText(_("isisfish.message.import.scripts.file", file));
+
+ // get two list of relative path (one for new files,
+ // one for exisiting files)
+ List<String>[] explode = scanZip(file, root);
+ List<String> newFiles = explode[0];
+ List<String> conflictFiles = explode[1];
+
+ // build model for dialog (list of new items), (list of exisiting items)
+ FileSelectionTableModel modelNewItems = null;
+ FileSelectionTableModel modelItems = null;
+
+ // si'il y a des nouveau fichiers
+ //if (!newFiles.isEmpty()) {
+ modelNewItems = new FileSelectionTableModel(newFiles);
+ //}
+
+ // s'il y a des fichier en conflic
+ //if (!conflictFiles.isEmpty()) {
+ modelItems = new FileSelectionTableModel(conflictFiles);
+ //}
+
+ // create import dialog
+ // TODO do a better code
+ ImportDialogUI dialog = new ImportDialogUI();
+ dialog.setNewFilesTableModel(modelNewItems);
+ dialog.setConflictFilesTableModel(modelItems);
+ dialog.getConflictFilesTable().setModel(modelItems);
+ dialog.getNewFilesTable().setModel(modelNewItems);
+ dialog.getArchivePath().setText(file.getAbsolutePath());
+ dialog.refresh();
+ dialog.getOkButton().setAction(new ImportAction(dialog, file, root, modelNewItems, modelItems));
+ dialog.getCancelButton().setAction(new CancelAction(dialog));
+ dialog.pack();
+ dialog.setVisible(true);
+ msg = _("isisfish.message.import.scripts.file.done", file);
+ }
+ else {
+ msg = _("isisfish.message.import.scripts.file.cancelled");
+ }
} catch (Exception eee) {
returnError(_("isisfish.error.script.import", eee.getMessage()),
eee);
@@ -637,6 +690,30 @@
return msg;
}
+ /**
+ * Scan archive for script, and return an array of new files and conflict files.
+ *
+ * @param source archive file
+ * @param root database directory
+ * @return an array [newFiles, conflictFiles]
+ */
+ protected static List<String>[] scanZip(File source, File root) {
+
+ List<String> overwrittenFiles = new ArrayList<String>();
+ List<String> newFiles = new ArrayList<String>();
+
+ // ontain list of relative paths (to add or overwrite)
+ try {
+ ZipUtil.scan(source, root, newFiles, overwrittenFiles,
+ getScriptFileFilter(), null, null);
+ } catch (IOException e) {
+ log.error("Can't scan zip (" + source + ")", e);
+ throw new RuntimeException(e);
+ }
+
+ return new List[]{ newFiles, overwrittenFiles};
+ }
+
public String deleteScript(int resp, boolean remote) {
String msg = "";
log.debug("deleteScript called");
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx 2009-07-24 16:23:34 UTC (rev 2511)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx 2009-07-24 16:24:17 UTC (rev 2512)
@@ -203,6 +203,10 @@
getContextValue(ScriptAction.class).saveScript(editor.getText());
setInfoText(_("isisfish.message.save.finished"));
}
+ protected void importScript() {
+ String importMessage = getContextValue(ScriptAction.class).importScript();
+ setInfoText(importMessage);
+ }
protected void exportScript(){
new IsisFishRuntimeException("Not yet implemented");
getContextValue(ScriptAction.class).exportScript(tree.getSelectionPaths());
@@ -245,9 +249,6 @@
actionLogArea.setBackground(null);
setInfoText(_("isisfish.message.evaluation.finished"));
}
- protected void importScript(){
- setInfoText(getContextValue(ScriptAction.class).importScript());
- }
protected void deleteScript(boolean deleteRemote) {
// reste in UI even if deleted
editor.close();
@@ -257,8 +258,13 @@
setInfoText(getContextValue(ScriptAction.class).deleteScript(resp, deleteRemote));
setTreeModel();
}
+
+ /**
+ * Show diff between selected files and files server version.
+ */
protected void diffScript(){
- setInfoText(getContextValue(ScriptAction.class).diffScript(editor.getText()));
+ String diffMessage = getContextValue(ScriptAction.class).diffScript(editor.getText());
+ setInfoText(diffMessage);
}
]]>
</script>
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ExportAction.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ExportAction.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ExportAction.java 2009-07-24 16:24:17 UTC (rev 2512)
@@ -0,0 +1,98 @@
+package fr.ifremer.isisfish.ui.script.action;
+
+import static javax.swing.JOptionPane.CANCEL_OPTION;
+import static javax.swing.JOptionPane.YES_OPTION;
+import static javax.swing.JOptionPane.showConfirmDialog;
+import static org.apache.commons.logging.LogFactory.getLog;
+import static org.codelutin.i18n.I18n._;
+
+import java.awt.event.ActionEvent;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.JDialog;
+import javax.swing.JTextField;
+
+import org.apache.commons.logging.Log;
+import org.codelutin.util.ZipUtil;
+
+import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.ui.script.FileSelectionTableModel;
+import fr.ifremer.isisfish.ui.util.IsisAction;
+
+public class ExportAction extends IsisAction {
+
+ static private Log log = getLog(ExportAction.class);
+
+ protected FileSelectionTableModel model;
+ protected JTextField file;
+ protected File root;
+
+ private List<String> selected;
+ private File dst;
+ private static final long serialVersionUID = 3373564473968724365L;
+
+ public ExportAction(JDialog dialog, JTextField file, File root,
+ FileSelectionTableModel model) {
+ super(dialog);
+ this.file = file;
+ this.root = root;
+ this.model = model;
+ }
+
+ protected boolean prepare() {
+ dst = new File(file.getText());
+
+ if ("".equals(dst.getAbsolutePath())) return false;
+
+ if (dst.exists()) {
+ int resp = showConfirmDialog(dialog,
+ _("isisfish.message.file.already.exists" + dst));
+
+ if (resp == CANCEL_OPTION) {
+ dialog.dispose();
+ return false;
+ }
+ if (resp == YES_OPTION)
+ dst.getParentFile().mkdirs();
+ else return false;
+ } else if (!dst.getParentFile().exists()) {
+ int resp = showConfirmDialog(dialog,
+ _("isisfish.message.directory.not.exists" + dst));
+ if (resp == CANCEL_OPTION) {
+ dialog.dispose();
+ return false;
+ }
+ if (resp == YES_OPTION)
+ dst.getParentFile().mkdirs();
+ else return false;
+ }
+
+ selected = model.getSelectedFiles();
+
+ return !(selected == null || selected.isEmpty());
+ }
+
+ protected void perform(ActionEvent e) {
+ try {
+
+ List<File> toZip = new ArrayList<File>();
+
+ for (String path : selected) toZip.add(new File(root, path));
+
+ if (dst.exists()) dst.delete();
+
+ dst.createNewFile();
+
+ ZipUtil.compressFiles(dst, root, toZip);
+
+ log.info("Zip DataStorage in " + dst + "[" + toZip.size()
+ + " files] (size " + dst.length() + ")");
+
+ } catch (IOException e1) {
+ throw new IsisFishRuntimeException(e1);
+ }
+ }
+}
\ No newline at end of file
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ImportAction.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ImportAction.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ImportAction.java 2009-07-24 16:24:17 UTC (rev 2512)
@@ -0,0 +1,98 @@
+package fr.ifremer.isisfish.ui.script.action;
+
+import static org.apache.commons.logging.LogFactory.getLog;
+
+import java.awt.event.ActionEvent;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.JDialog;
+
+import org.apache.commons.logging.Log;
+import org.codelutin.util.ZipUtil;
+
+import fr.ifremer.isisfish.ui.script.FileSelectionTableModel;
+import fr.ifremer.isisfish.ui.util.IsisActionWithBackup;
+
+public class ImportAction extends IsisActionWithBackup {
+
+ private static final long serialVersionUID = 2459027106690418279L;
+
+ private static Log log = getLog(ImportAction.class);
+
+ /**
+ * model to contains new files to add from import
+ */
+ protected FileSelectionTableModel model;
+
+ /**
+ * model to contains files conflicted from import
+ */
+ protected FileSelectionTableModel modelWithBackup;
+
+ /**
+ * location of archive to import
+ */
+ protected File source;
+
+ /**
+ * List of relative path to import (is init in {@link #prepare()} method)
+ */
+ private List<String> toImport;
+
+ public ImportAction(JDialog dialog, File source, File root,
+ FileSelectionTableModel modelNewItems,
+ FileSelectionTableModel modelItems) {
+ super(dialog, root);
+ this.source = source;
+ this.model = modelNewItems;
+ this.modelWithBackup = modelItems;
+ }
+
+ protected void perform(ActionEvent e) {
+
+ // do backup stuff
+ super.perform(e);
+
+ // unflate files to destination (root)
+ try {
+ for (String newFile : toImport) {
+ log.info("unzip " + newFile);
+ }
+ ZipUtil.uncompress(source, root, toImport,null,null);
+
+ } catch (IOException e1) {
+ throw new RuntimeException(e1);
+ }
+ log.info("unzip " + toImport.size() + " entry(ies) from '" + source + "'");
+ toImport.clear();
+ }
+
+ protected boolean prepare() {
+ if (source == null || (model == null && modelWithBackup == null) ||
+ "".equals(source.getAbsolutePath())) return false;
+
+ toImport = new ArrayList<String>();
+ if (model != null) {
+ // add new files
+ toImport.addAll(model.getSelectedFiles());
+ }
+
+ if (modelWithBackup != null) {
+ // add selected files (force overwrite)
+ toImport.addAll(modelWithBackup.getSelectedFiles());
+ }
+
+ return !toImport.isEmpty();
+ }
+
+ protected List<String> getFilesToBackup() {
+ List<String> toBackup = new ArrayList<String>();
+ if (modelWithBackup != null) {
+ toBackup.addAll(modelWithBackup.getSelectedFiles());
+ }
+ return toBackup;
+ }
+}
\ No newline at end of file
Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties
===================================================================
--- isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-07-24 16:23:34 UTC (rev 2511)
+++ isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-07-24 16:24:17 UTC (rev 2512)
@@ -110,11 +110,13 @@
isisfish.common.emigration=Emigration
isisfish.common.equation=Equation
isisfish.common.error=error
+isisfish.common.file=File
isisfish.common.finish=Finish
isisfish.common.gear=Gear
isisfish.common.immigration=immigration
isisfish.common.info=info
isisfish.common.migration=migration
+isisfish.common.module=Module
isisfish.common.month=month %1$s
isisfish.common.name=Name
isisfish.common.new=New
@@ -583,9 +585,11 @@
isisfish.message.delete.entity=Delete entity
isisfish.message.delete.finished=delete finished
isisfish.message.delete.object=To delete object %1$s, all next object will be deleted\n\n
+isisfish.message.directory.not.exists=
isisfish.message.evaluation.finished=evaluation finished
isisfish.message.export.done=export done
isisfish.message.export.zip=Export to zip file %1$s
+isisfish.message.file.already.exists=
isisfish.message.file.overwrite=File exists, do you want overwrite it ?
isisfish.message.import=Import %1$s
isisfish.message.import.equation.convert=Manual equation convertion
@@ -593,7 +597,10 @@
isisfish.message.import.region.name=Enter name for imported region
isisfish.message.import.region.xml=XMLed Region
isisfish.message.import.region.zipped=Zipped Region
+isisfish.message.import.scripts.file=Import scripts from a zipped archive
isisfish.message.import.scripts.file.cancelled=Import scripts cancelled
+isisfish.message.import.scripts.file.done=Scripts imported
+isisfish.message.import.scripts.zipped=Zipped script (*.zip)
isisfish.message.import.xml.v2.file=Import xml v2 file
isisfish.message.import.zip=Import zip file
isisfish.message.launchui.notlaunch=
@@ -853,11 +860,10 @@
isisfish.script.export.tooltip.checkAll=
isisfish.script.export.tooltip.chooseDir=
isisfish.script.import=import
-isisfish.script.import.cancel=cancel
-isisfish.script.import.checkAll=checkAll
+isisfish.script.import.checkAll=(Un)Check all
+isisfish.script.import.import=importer
isisfish.script.import.labelAdd=labelAdd
isisfish.script.import.labelOverwrite=labelOverwrite
-isisfish.script.import.ok=ok
isisfish.script.import.tooltip.checkAll=
isisfish.script.menu.checkSyntax=CheckSyntax
isisfish.script.menu.code=Code
Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties
===================================================================
--- isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-07-24 16:23:34 UTC (rev 2511)
+++ isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-07-24 16:24:17 UTC (rev 2512)
@@ -110,11 +110,13 @@
isisfish.common.emigration=\u00E9migration
isisfish.common.equation=Equation
isisfish.common.error=Erreur
+isisfish.common.file=Fichier
isisfish.common.finish=Terminer
isisfish.common.gear=Engin
isisfish.common.immigration=immigration
isisfish.common.info=Info
isisfish.common.migration=migration
+isisfish.common.module=Module
isisfish.common.month=mois %1$s
isisfish.common.name=Nom
isisfish.common.new=Nouveau
@@ -583,9 +585,11 @@
isisfish.message.delete.entity=Supprimer l'entit\u00E9
isisfish.message.delete.finished=Suppression termin\u00E9e
isisfish.message.delete.object=Pour supprimer l'objet %1$s, tous les objets suivants seront aussi supprim\u00E9s \n\n
+isisfish.message.directory.not.exists=
isisfish.message.evaluation.finished=\u00E9valuation termin\u00E9e
isisfish.message.export.done=Export termin\u00E9
isisfish.message.export.zip=Exporter dans le fichier zip %1$s
+isisfish.message.file.already.exists=
isisfish.message.file.overwrite=Le fichier existe, Voulez-vous l'\u00E9craser ?
isisfish.message.import=Importer %1$s
isisfish.message.import.equation.convert=Conversion manuelle de l'\u00E9quation
@@ -593,7 +597,10 @@
isisfish.message.import.region.name=Entre le nom de la r\u00E9egion \u00E0 importer
isisfish.message.import.region.xml=R\u00E9gion XML (Isis-Fish V2.x)
isisfish.message.import.region.zipped=Zipped Region
+isisfish.message.import.scripts.file=Importer des scripts depuis une archive zip
isisfish.message.import.scripts.file.cancelled=Importation des scripts annul\u00E9
+isisfish.message.import.scripts.file.done=Scripts import\u00E9s
+isisfish.message.import.scripts.zipped=Archive de script (*.zip)
isisfish.message.import.xml.v2.file=Import xml v2 file
isisfish.message.import.zip=Import zip file
isisfish.message.launchui.notlaunch=
@@ -853,11 +860,10 @@
isisfish.script.export.tooltip.checkAll=(D\u00E9-)S\u00E9lectionner tous les scripts \u00E0 exporter
isisfish.script.export.tooltip.chooseDir=Choisir le r\u00E9pertoire o\u00F9 exporter les scripts
isisfish.script.import=Importer des scripts depuis une archive zip
-isisfish.script.import.cancel=annuler
isisfish.script.import.checkAll=Tout (d\u00E9-)s\u00E9lectionner
+isisfish.script.import.import=importer
isisfish.script.import.labelAdd=Le(s) fichier(s) suivant(s) sera(ont) ajout\u00E9(s), Confirmer l'ajout
isisfish.script.import.labelOverwrite=Le(s) fichier(s) suivant(s) existe(nt) d\u00E9j\u00E0, Confirmer pour l'\u00E9crasement
-isisfish.script.import.ok=importer
isisfish.script.import.tooltip.checkAll=(D\u00E9-)S\u00E9lectionner tous les scripts \u00E0 importer
isisfish.script.menu.checkSyntax=V\u00E9rifier la syntaxe
isisfish.script.menu.code=Code
1
0
r2511 - in isis-fish/trunk/src/main/java/fr/ifremer/isisfish: datastore ui
by chatellier@users.labs.libre-entreprise.org 24 Jul '09
by chatellier@users.labs.libre-entreprise.org 24 Jul '09
24 Jul '09
Author: chatellier
Date: 2009-07-24 16:23:34 +0000 (Fri, 24 Jul 2009)
New Revision: 2511
Added:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/StorageChangeListener.java
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/RegionMonitor.java
Log:
Begin of listener implementation on storage
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/StorageChangeListener.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/StorageChangeListener.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/StorageChangeListener.java 2009-07-24 16:23:34 UTC (rev 2511)
@@ -0,0 +1,46 @@
+/* *##%
+ * Copyright (C) 2009 Code Lutin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/
+
+package fr.ifremer.isisfish.datastore;
+
+import java.awt.Event;
+import java.util.EventListener;
+
+/**
+ * Listener for change made on storage.
+ *
+ * Such as :
+ * <li>region added</li>
+ * <li>script removed</li>
+ * <li>plan renamed</li>
+ *
+ * @author chatellier
+ * @version $Revision: 1.0 $
+ *
+ * Last update : $Date: 24 juil. 2009 $
+ * By : $Author: chatellier $
+ */
+public interface StorageChangeListener extends EventListener {
+
+ /**
+ * Fire data changed event.
+ *
+ * @param e event to fire
+ */
+ void versionDataChanged(Event e);
+}
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/StorageChangeListener.java
___________________________________________________________________
Name: svn:executable
+ *
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2009-07-22 17:03:33 UTC (rev 2510)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2009-07-24 16:23:34 UTC (rev 2511)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2006
+ * Copyright (C) 2006 - 2009
* Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
@@ -17,22 +17,11 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*##%*/
-/* *
- * VersionStorage.java
- *
- * Created: 21 janv. 2006 16:56:25
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-
package fr.ifremer.isisfish.datastore;
import static org.codelutin.i18n.I18n._;
+import java.awt.Event;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
@@ -41,6 +30,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codelutin.util.FileUtil;
+import org.codelutin.util.ListenerSet;
import org.codelutin.util.VersionNumber;
import fr.ifremer.isisfish.IsisConfig;
@@ -52,16 +42,19 @@
* Classe permettant de géré l'interaction avec le cvs
*
* @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
*/
public abstract class VersionStorage {
/** Logger for this class */
private static final Log log = LogFactory.getLog(VersionStorage.class);
-
- static protected VCS getVCS() {
- return IsisFish.vcs;
- }
-
+
+ /** Listener set. Manage single reference and weak reference. */
+ protected static ListenerSet<StorageChangeListener> changeListeners = new ListenerSet<StorageChangeListener>();
+
protected File root = null;
protected File file = null;
@@ -78,12 +71,15 @@
this.file = file;
}
+ protected static VCS getVCS() {
+ return IsisFish.vcs;
+ }
+
/**
* Permet de demander la preparation des fichiers pour etre envoyé
- * vers le VCSNone
- *
+ * vers le VCS.
*/
- abstract protected void prepare();
+ protected abstract void prepare();
/**
* @return Returns the root.
@@ -319,6 +315,20 @@
return result;
}
+ /**
+ * Fire a change event to all registred listeners.
+ *
+ * @param event event to fire
+ */
+ protected void fireDataChanged(Event event) {
+ try {
+ changeListeners.fire("dataChanged", event);
+ } catch (Exception e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't fire data change event", e);
+ }
+ }
+ }
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/RegionMonitor.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/RegionMonitor.java 2009-07-22 17:03:33 UTC (rev 2510)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/RegionMonitor.java 2009-07-24 16:23:34 UTC (rev 2511)
@@ -32,8 +32,9 @@
* Last update: $Date$
* by : $Author$
*
- * @deprecated don't work with rule, plans... use refresh on affected uis
+ * @deprecated use {@link fr.ifremer.isisfish.datastore.VersionStorage#fireDataChanged(java.awt.Event)} instead
*/
+ at Deprecated
public class RegionMonitor {
/** pour le support des modifications de propriétés. */
1
0
r2510 - in isis-fish/trunk/src/main/java/fr/ifremer/isisfish: . ui ui/config ui/simulator
by chatellier@users.labs.libre-entreprise.org 22 Jul '09
by chatellier@users.labs.libre-entreprise.org 22 Jul '09
22 Jul '09
Author: chatellier
Date: 2009-07-22 17:03:33 +0000 (Wed, 22 Jul 2009)
New Revision: 2510
Added:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/ConfigUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/IsisConfigTableModel.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx
Removed:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/launcher/
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomePanelUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.jaxx
Log:
Update config ui.
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-07-22 17:02:57 UTC (rev 2509)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-07-22 17:03:33 UTC (rev 2510)
@@ -179,10 +179,19 @@
}
+
//////////////////////////////////////////////////
// Methode d'acces aux options
//////////////////////////////////////////////////
+ /*
+ * @see org.codelutin.util.ApplicationConfig#getOption(java.lang.String)
+ */
+ @Override
+ public String getOption(String key) {
+ return super.getOption(key);
+ }
+
/**
* Retourne le repertoire racine de toutes les donnees (script, simulation
* region, ...)
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomePanelUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomePanelUI.jaxx 2009-07-22 17:02:57 UTC (rev 2509)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomePanelUI.jaxx 2009-07-22 17:03:33 UTC (rev 2510)
@@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*##%*/
-->
-<JPanel id='welcomePanelUI' layout='{new BorderLayout()}'>
+<JPanel layout='{new BorderLayout()}'>
<script>
<![CDATA[
import fr.ifremer.isisfish.IsisFish;
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.jaxx 2009-07-22 17:02:57 UTC (rev 2509)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.jaxx 2009-07-22 17:03:33 UTC (rev 2510)
@@ -34,7 +34,8 @@
import fr.ifremer.isisfish.ui.script.ScriptUI;
import fr.ifremer.isisfish.ui.simulator.SimulUI;
import fr.ifremer.isisfish.ui.queue.QueueUI;
- import fr.ifremer.isisfish.ui.simulator.launcher.SSHLauncherConfigUI;
+ import fr.ifremer.isisfish.ui.config.ConfigUI;
+ import fr.ifremer.isisfish.ui.config.SSHLauncherConfigUI;
import fr.ifremer.isisfish.ui.vcs.VCSConfigUI;
import org.codelutin.widget.AboutFrame;
import jaxx.runtime.DefaultJAXXContext;
@@ -92,8 +93,10 @@
// thread:Welcome.updateVCS()
}
protected void config() {
-// FIXME a reimplanter
-// Welcome.showConfig()
+ ConfigUI configUI = new ConfigUI();
+ configUI.pack();
+ org.codelutin.widget.SwingUtil.center(configUI);
+ configUI.setVisible(true);
}
protected void configVCS() {
VCSConfigUI vcsConfig = new VCSConfigUI();
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/ConfigUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/ConfigUI.jaxx (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/ConfigUI.jaxx 2009-07-22 17:03:33 UTC (rev 2510)
@@ -0,0 +1,36 @@
+<!--
+/* *##%
+ * Copyright (C) 2005 - 2009 Ifremer, Code Lutin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/
+ -->
+<JFrame title='isisfish.welcome.menu.configuration'>
+ <JPanel layout='{new BorderLayout()}'>
+ <JScrollPane constraints="BorderLayout.CENTER">
+ <JTable id='propertiesTable' model='{new IsisConfigTableModel()}' />
+ </JScrollPane>
+ <Table constraints="BorderLayout.SOUTH">
+ <row>
+ <cell fill="none" weightx="1">
+ <JButton id='cancelButton' text='isisfish.common.cancel' onActionPerformed='' visible='false' />
+ </cell>
+ <cell fill='none' anchor='east' weightx="1">
+ <JButton id='okButton' text='isisfish.common.ok' onActionPerformed='dispose()' />
+ </cell>
+ </row>
+ </Table>
+ </JPanel>
+</JFrame>
\ No newline at end of file
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/IsisConfigTableModel.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/IsisConfigTableModel.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/IsisConfigTableModel.java 2009-07-22 17:03:33 UTC (rev 2510)
@@ -0,0 +1,154 @@
+/* *##%
+ * Copyright (C) 2009 Code Lutin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/
+
+package fr.ifremer.isisfish.ui.config;
+
+import static org.codelutin.i18n.I18n._;
+
+import javax.swing.table.AbstractTableModel;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import fr.ifremer.isisfish.IsisConfig;
+import fr.ifremer.isisfish.IsisFish;
+
+/**
+ * Model pour l'edition des proprietes de IsisConfig.
+ *
+ * Columns :
+ * <li>Property name</li>
+ * <li>Property value</li>
+ *
+ * @author chatellier
+ * @version $Revision: 2418 $
+ *
+ * Last update : $Date: 2009-06-22 14:52:27 +0200 (lun. 22 juin 2009) $
+ * By : $Author: chatellier $
+ */
+public class IsisConfigTableModel extends AbstractTableModel {
+
+ /** Log. */
+ private static Log log = LogFactory
+ .getLog(IsisConfigTableModel.class);
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 4593731087704399810L;
+
+ /** Columns names. */
+ public final static String[] COLUMN_NAMES = { _("isisfish.common.name"),
+ _("isisfish.common.value") };
+
+ /*
+ * @see javax.swing.table.TableModel#getColumnCount()
+ */
+ @Override
+ public int getColumnCount() {
+ return COLUMN_NAMES.length;
+ }
+
+ /*
+ * @see javax.swing.table.TableModel#getRowCount()
+ */
+ @Override
+ public int getRowCount() {
+ return IsisConfig.Option.values().length;
+ }
+
+ /*
+ * @see javax.swing.table.TableModel#getValueAt(int, int)
+ */
+ @Override
+ public Object getValueAt(int rowIndex, int columnIndex) {
+
+ Object result = null;
+
+ String name = IsisConfig.Option.values()[rowIndex].key;
+ switch (columnIndex) {
+ case 0:
+ result = name;
+ break;
+ case 1:
+ result = IsisFish.config.getOption(name);
+ break;
+ default:
+ throw new IndexOutOfBoundsException("No such column " + columnIndex);
+ }
+
+ return result;
+ }
+
+ /*
+ * @see javax.swing.table.TableModel#getColumnClass(int)
+ */
+ @Override
+ public Class<?> getColumnClass(int columnIndex) {
+
+ Class<?> result = null;
+
+ switch (columnIndex) {
+ case 0:
+ result = String.class;
+ break;
+ case 1:
+ result = String.class;
+ break;
+ default:
+ throw new IndexOutOfBoundsException("No such column " + columnIndex);
+ }
+
+ return result;
+ }
+
+ /*
+ * @see javax.swing.table.TableModel#getColumnName(int)
+ */
+ @Override
+ public String getColumnName(int columnIndex) {
+ return COLUMN_NAMES[columnIndex];
+ }
+
+ /*
+ * @see javax.swing.table.TableModel#isCellEditable(int, int)
+ */
+ @Override
+ public boolean isCellEditable(int rowIndex, int columnIndex) {
+ return columnIndex > 0;
+ }
+
+ /*
+ * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
+ */
+ @Override
+ public void setValueAt(Object value, int rowIndex, int columnIndex) {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Cell edition (column " + columnIndex + ") = " + value);
+ }
+
+ String name = IsisConfig.Option.values()[rowIndex].key;
+ switch (columnIndex) {
+ case 1:
+ IsisFish.config.setOption(name, (String)value);
+ break;
+ default:
+ throw new IndexOutOfBoundsException("No such column " + columnIndex);
+ }
+
+ }
+}
Copied: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx (from rev 2478, isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/launcher/SSHLauncherConfigUI.jaxx)
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx 2009-07-22 17:03:33 UTC (rev 2510)
@@ -0,0 +1,453 @@
+<!-- ##%
+Copyright (C) 2009 Ifremer, Code Lutin
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+##% -->
+<JDialog resizable="false" title="isisfish.simulator.ssh.configuration.title" layout="{new BoxLayout(this.getContentPane(), BoxLayout.PAGE_AXIS)}">
+ <script><![CDATA[
+
+ import java.io.IOException;
+ import fr.ifremer.isisfish.IsisFish;
+ import com.jcraft.jsch.JSch;
+ import com.jcraft.jsch.JSchException;
+ import com.jcraft.jsch.KeyPair;
+ import com.jcraft.jsch.Session;
+ import fr.ifremer.isisfish.util.ssh.InvalidPassphraseException;
+ import fr.ifremer.isisfish.util.ssh.SSHAgent;
+ import fr.ifremer.isisfish.util.ssh.SSHException;
+ import fr.ifremer.isisfish.util.ssh.SSHUserInfo;
+ import fr.ifremer.isisfish.util.ssh.SSHUtils;
+
+ protected String currentSSHserver;
+ protected String currentSSHUsername;
+ protected File currentSSHKey;
+ protected String currentSSHUserhome;
+ protected String currentSSHDatapath;
+ protected String currentSSHIsisHome;
+ protected String currentSSHTempPath;
+ protected String currentSSHPbsBinPath;
+ protected String currentSSHControlInterval;
+ protected String currentSSHSimultaneousSimulation;
+
+ // fill default values
+ resetSSHConfiguration();
+
+ /**
+ * Reset values with default configuration values.
+ */
+ protected void resetSSHConfiguration() {
+ // server config
+ sshServerField.setText(IsisFish.config.getSimulatorSshServer());
+ usernameField.setText(IsisFish.config.getSimulatorSshUsername());
+ sshKeyField.setText(IsisFish.config.getSSHPrivateKeyFilePath().getAbsolutePath());
+
+ // caparmor config
+ sshUserhomeField.setText(IsisFish.config.getSimulatorSshUserHome());
+ sshDatapathField.setText(IsisFish.config.getSimulatorSshDataPath());
+ sshIsisHomeField.setText(IsisFish.config.getSimulatorSshIsisHome());
+ sshTemppathField.setText(IsisFish.config.getSimulatorSshTmpPath());
+ sshPbsBinPathField.setText(IsisFish.config.getSimulatorSshPbsBinPath());
+ sshControlIntervalField.setText(String.valueOf(IsisFish.config.getSimulatorSshControlCheckInterval()));
+ sshSimultaneousSimulationField.setText(String.valueOf(IsisFish.config.getSimulatorSshMaxSimultaneousSimulation()));
+
+ doCheck();
+ }
+
+ protected void doCheck() {
+
+ validButton.setEnabled(false);
+ messageLabel.setText("");
+
+ // copy values
+ currentSSHserver = sshServerField.getText().trim();
+ if (currentSSHserver.isEmpty()) {
+ setColor(true, sshServerField);
+ }
+ else {
+ setColor(false, sshServerField);
+ }
+
+ currentSSHUsername = usernameField.getText().trim();
+ if (!currentSSHUsername.matches("\\w+")) {
+ setColor(true, usernameField);
+ }
+ else {
+ setColor(false, usernameField);
+ }
+
+ // if ssh key is set, must be a valid file
+ currentSSHKey = new File(sshKeyField.getText().trim());
+ if (!currentSSHKey.isFile()) {
+ setColor(true, sshKeyField);
+ }
+ else {
+ sshKeyButton.setEnabled(false);
+ sshKeyField.setEnabled(false);
+ setColor(false, sshKeyField);
+ }
+
+ currentSSHDatapath = sshDatapathField.getText().trim();
+ if (currentSSHDatapath.isEmpty()) {
+ setColor(true, sshDatapathField);
+ }
+ else {
+ setColor(false, sshDatapathField);
+ }
+
+ currentSSHIsisHome = sshIsisHomeField.getText().trim();
+ if (currentSSHIsisHome.isEmpty()) {
+ setColor(true, sshIsisHomeField);
+ }
+ else {
+ setColor(false, sshIsisHomeField);
+ }
+
+ currentSSHTempPath = sshTemppathField.getText().trim();
+ if (currentSSHTempPath.isEmpty()) {
+ setColor(true, sshTemppathField);
+ }
+ else {
+ setColor(false, sshTemppathField);
+ }
+
+ currentSSHPbsBinPath = sshPbsBinPathField.getText().trim();
+ if (currentSSHPbsBinPath.isEmpty()) {
+ setColor(true, sshPbsBinPathField);
+ }
+ else {
+ setColor(false, sshPbsBinPathField);
+ }
+
+ currentSSHControlInterval = sshControlIntervalField.getText().trim();
+ if (!currentSSHControlInterval.matches("\\d+")) {
+ setColor(true, sshControlIntervalField);
+ }
+ else {
+ setColor(false, sshControlIntervalField);
+ }
+
+ currentSSHSimultaneousSimulation = sshSimultaneousSimulationField.getText().trim();
+ if (!currentSSHSimultaneousSimulation.matches("\\d+")) {
+ setColor(true, sshSimultaneousSimulationField);
+ }
+ else {
+ setColor(false, sshSimultaneousSimulationField);
+ }
+ }
+
+ /**
+ * Set values in config and force configuration save.
+ */
+ protected void saveSSHConfiguration() {
+ IsisFish.config.setSimulatorSshServer(currentSSHserver);
+ IsisFish.config.setSimulatorSshUsername(currentSSHUsername);
+ IsisFish.config.setSSHPrivateKeyFilePath(currentSSHKey);
+
+ IsisFish.config.setSimulatorSshUserHome(currentSSHUserhome);
+ IsisFish.config.setSimulatorSshDataPath(currentSSHDatapath);
+ IsisFish.config.setSimulatorSshIsisHome(currentSSHIsisHome);
+ IsisFish.config.setSimulatorSshTmpPath(currentSSHTempPath);
+ IsisFish.config.setSimulatorSshPbsBinPath(currentSSHPbsBinPath);
+ IsisFish.config.setSimulatorSshControlCheckInterval(Long.parseLong(currentSSHControlInterval));
+ IsisFish.config.setSimulatorSshMaxSimultaneousSimulation(Integer.parseInt(currentSSHSimultaneousSimulation));
+
+ IsisFish.config.saveForUser();
+ dispose();
+ }
+
+ /**
+ * Close frame.
+ */
+ protected void cancelSSHConfiguration() {
+ dispose();
+ }
+
+ /**
+ * Realise une connexion ssh et teste les données.
+ */
+ protected void testSSHConfiguration() {
+ JSch jsch = new JSch();
+
+ String host = currentSSHserver;
+ int port = 22; // by default, 22
+ String sPort = null;
+
+ try {
+ if (host.indexOf(':') > 0) {
+ sPort = host.substring(host.indexOf(':') + 1);
+ port = Integer.parseInt(sPort);
+ host = host.substring(0, host.indexOf(':'));
+ }
+
+ // add ssh key
+ boolean sshKeyUsed = false;
+ if (currentSSHKey.canRead()) {
+ if (log.isInfoEnabled()) {
+ log.info(_("Ssh key found '%s' will be used to connect to",
+ currentSSHKey.getAbsoluteFile(), host));
+ }
+ jsch.addIdentity(currentSSHKey.getAbsolutePath());
+ sshKeyUsed = true;
+ }
+ else {
+ if (log.isInfoEnabled()) {
+ log.info(_("Can't read ssh key : %s", currentSSHKey));
+ }
+ }
+
+ Session session = jsch.getSession(currentSSHUsername, host, port);
+
+ // username and password will be given via UserInfo interface.
+ SSHUserInfo ui = new SSHUserInfo();
+ if (sshKeyUsed) {
+ String passphrase = null;
+ passphrase = SSHAgent.getAgent().getPassphrase(currentSSHKey);
+ ui.setPassphrase(passphrase);
+ setTestMessage(_("isisfish.simulator.ssh.configuration.connectingpk"), false);
+ }
+ else {
+ setTestMessage(_("isisfish.simulator.ssh.configuration.connecting"), false);
+ }
+ session.setUserInfo(ui);
+ session.connect(10000); // timeout
+
+ setTestMessage(_("isisfish.simulator.ssh.configuration.connectionok"), false);
+
+ // get user home
+ currentSSHUserhome = getUserHomeDirectory(session);
+ sshUserhomeField.setText(currentSSHUserhome);
+ session.disconnect();
+
+ validButton.setEnabled(true);
+ } catch (NumberFormatException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't connect", e);
+ }
+ setTestMessage(_("isisfish.error.simulation.remote.wrongportvalue", sPort), true);
+ } catch (JSchException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't connect", e);
+ }
+ setTestMessage(_("isisfish.simulator.ssh.configuration.connectionerror", e.getMessage()), true);
+ } catch (SSHException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't connect", e);
+ }
+ setTestMessage(_("isisfish.simulator.ssh.configuration.connectionerror", e.getMessage()), true);
+ } catch (InvalidPassphraseException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't connect", e);
+ }
+ setTestMessage(_("isisfish.simulator.ssh.configuration.invalidpassphrase"), true);
+ }
+ }
+
+ /**
+ * Get user home directory with an opened session.
+ */
+ protected String getUserHomeDirectory(Session session) throws SSHException {
+
+ String command ="pwd";
+
+ Writer output = new StringWriter();
+ int exit = SSHUtils.exec(session, command, output);
+
+ if (exit != 0) {
+ throw new SSHException(_("Command '%s' fail to execute", command));
+ }
+
+ String out = output.toString();
+ return out;
+ }
+
+ /**
+ * Generate new SSH key.
+ */
+ protected void generateSSHKey() {
+ if (currentSSHKey.exists()) {
+ throw new IllegalArgumentException("Can't overwrite ssh key");
+ }
+
+ try {
+ // make parent dir
+ if (currentSSHKey.getParentFile() != null && !currentSSHKey.getParentFile().exists()) {
+ currentSSHKey.getParentFile().mkdirs();
+ }
+ JSch jsch=new JSch();
+ KeyPair kpair=KeyPair.genKeyPair(jsch, KeyPair.RSA, 2048);
+ //kpair.setPassphrase(passphrase);
+ kpair.writePrivateKey(currentSSHKey.getAbsolutePath());
+ kpair.writePublicKey(currentSSHKey.getAbsolutePath()+".pub", currentSSHUsername + "@forIsisFish");
+ if (log.isInfoEnabled()) {
+ log.info("Finger print: "+kpair.getFingerPrint());
+ }
+ kpair.dispose();
+ }
+ catch (JSchException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't make ssh key", e);
+ }
+ }
+ catch (IOException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't make ssh key", e);
+ }
+ }
+
+ // refresh ckeck
+ doCheck();
+ }
+
+ protected void setColor(boolean invalid, JComponent component) {
+ component.setForeground(invalid ? Color.RED: Color.BLACK);
+ }
+ protected void setTestMessage(String message, boolean error) {
+ messageLabel.setForeground(error ? Color.RED: Color.GREEN.darker());
+ messageLabel.setText(message);
+ }
+ ]]></script>
+
+ <Table border='{BorderFactory.createTitledBorder(_("isisfish.simulator.ssh.configuration.connection"))}'
+ fill='horizontal'>
+ <row>
+ <cell>
+ <JLabel id='sshServerLabel' text='isisfish.config.main.simulation.ssh.server'
+ toolTipText='isisfish.config.main.simulation.ssh.server' />
+ </cell>
+ <cell fill='horizontal' columns="2">
+ <JTextField id='sshServerField' toolTipText='isisfish.config.main.simulation.ssh.server'
+ onKeyReleased="doCheck()" />
+ </cell>
+ </row>
+ <row fill='horizontal'>
+ <cell>
+ <JLabel id='usernameLabel' text='isisfish.config.main.simulation.ssh.username'
+ toolTipText='isisfish.config.main.simulation.ssh.username.description' />
+ </cell>
+ <cell columns="2">
+ <JTextField id='usernameField' toolTipText='isisfish.config.main.simulation.ssh.username.description'
+ onKeyReleased="doCheck()" />
+ </cell>
+ </row>
+ <row fill='horizontal'>
+ <cell>
+ <JLabel id='sshKeyLabel' text='isisfish.config.ssh.key.file' toolTipText='isisfish.config.ssh.key.file.description' />
+ </cell>
+ <cell weightx="2.0">
+ <JTextField id='sshKeyField' toolTipText='isisfish.config.ssh.key.file.description'
+ onKeyReleased="doCheck()" />
+ </cell>
+ <cell>
+ <JButton id='sshKeyButton' text='isisfish.simulator.ssh.configuration.keygenerate' onActionPerformed="generateSSHKey()" />
+ </cell>
+ </row>
+ </Table>
+ <Table border='{BorderFactory.createTitledBorder(_("isisfish.simulator.ssh.configuration.environment"))}'>
+ <row fill='horizontal'>
+ <cell>
+ <JLabel id='sshUserhomeLabel' text='isisfish.config.main.simulation.ssh.userhome'
+ toolTipText='isisfish.config.main.simulation.ssh.userhome.description' />
+ </cell>
+ <cell weightx="1.0">
+ <JTextField id='sshUserhomeField' enabled='false' toolTipText='isisfish.config.main.simulation.ssh.userhome.description'
+ onKeyReleased="doCheck()" />
+ </cell>
+ </row>
+ <row fill='horizontal'>
+ <cell>
+ <JLabel id='sshDatapathLabel' text='isisfish.config.main.simulation.ssh.datapath'
+ toolTipText='isisfish.config.main.simulation.ssh.datapath.description' />
+ </cell>
+ <cell weightx="1.0">
+ <JTextField id='sshDatapathField' toolTipText='isisfish.config.main.simulation.ssh.datapath.description'
+ onKeyReleased="doCheck()" />
+ </cell>
+ </row>
+ <row fill='horizontal'>
+ <cell>
+ <JLabel id='sshIsisHomeLabel' text='isisfish.config.main.simulation.ssh.isis.home'
+ toolTipText='isisfish.config.main.simulation.ssh.isis.home.description' />
+ </cell>
+ <cell>
+ <JTextField id='sshIsisHomeField' toolTipText='isisfish.config.main.simulation.ssh.isis.home.description'
+ onKeyReleased="doCheck()" />
+ </cell>
+ </row>
+ <row fill='horizontal'>
+ <cell>
+ <JLabel id='sshTemppathLabel' text='isisfish.config.main.simulation.ssh.tmppath'
+ toolTipText='isisfish.config.main.simulation.ssh.tmppath.description' />
+ </cell>
+ <cell>
+ <JTextField id='sshTemppathField' toolTipText='isisfish.config.main.simulation.ssh.tmppath.description'
+ onKeyReleased="doCheck()" />
+ </cell>
+ </row>
+ <row fill='horizontal'>
+ <cell>
+ <JLabel id='sshPbsBinPathLabel' text='isisfish.config.main.simulation.ssh.pbsbinpath'
+ toolTipText='isisfish.config.main.simulation.ssh.pbsbinpath.description' />
+ </cell>
+ <cell>
+ <JTextField id='sshPbsBinPathField'
+ toolTipText='isisfish.config.main.simulation.ssh.pbsbinpath.description'
+ onKeyReleased="doCheck()" />
+ </cell>
+ </row>
+ <row fill='horizontal'>
+ <cell>
+ <JLabel id='sshControlIntervalLabel' text='isisfish.config.main.simulation.ssh.control.check.interval'
+ toolTipText='isisfish.config.main.simulation.ssh.control.check.interval.description' />
+ </cell>
+ <cell>
+ <JTextField id='sshControlIntervalField'
+ toolTipText='isisfish.config.main.simulation.ssh.control.check.interval.description'
+ onKeyReleased="doCheck()" />
+ </cell>
+ </row>
+ <row fill='horizontal'>
+ <cell>
+ <JLabel id='sshSimultaneousSimulationLabel' text='isisfish.config.main.simulation.max.simultaneous.simulation'
+ toolTipText='isisfish.config.main.simulation.max.simultaneous.simulation.description' />
+ </cell>
+ <cell>
+ <JTextField id='sshSimultaneousSimulationField'
+ toolTipText='isisfish.config.main.simulation.max.simultaneous.simulation.description'
+ onKeyReleased="doCheck()" />
+ </cell>
+ </row>
+ </Table>
+ <Table>
+ <row fill='horizontal'>
+ <cell columns="4" fill='horizontal'>
+ <JLabel id='messageLabel' text=' ' font-weight='bold' opaque='true' horizontalAlignment='center' minimumSize='{new Dimension(0, 25)}' preferredSize='{new Dimension(0, 25)}'/>
+ </cell>
+ </row>
+ <row fill='horizontal'>
+ <cell fill='horizontal'>
+ <JButton id='testButton' text='isisfish.simulator.ssh.configuration.test' onActionPerformed="testSSHConfiguration()" />
+ </cell>
+ <cell fill='horizontal'>
+ <JButton id='validButton' text='isisfish.common.valid' onActionPerformed="saveSSHConfiguration()" />
+ </cell>
+ <cell fill='horizontal'>
+ <JButton id='resetButton' text='isisfish.common.reset' onActionPerformed="resetSSHConfiguration()" />
+ </cell>
+ <cell fill='horizontal'>
+ <JButton id='cancelButton' text='isisfish.common.cancel' onActionPerformed="cancelSSHConfiguration()" />
+ </cell>
+ </row>
+ </Table>
+</JDialog>
1
0
Author: chatellier
Date: 2009-07-22 17:02:57 +0000 (Wed, 22 Jul 2009)
New Revision: 2509
Modified:
isis-fish/trunk/pom.xml
Log:
Update rsyntax and h2 version
Modified: isis-fish/trunk/pom.xml
===================================================================
--- isis-fish/trunk/pom.xml 2009-07-22 17:02:11 UTC (rev 2508)
+++ isis-fish/trunk/pom.xml 2009-07-22 17:02:57 UTC (rev 2509)
@@ -198,7 +198,7 @@
<dependency>
<groupId>org.fife</groupId>
<artifactId>rsyntaxtextarea</artifactId>
- <version>1.3.3</version>
+ <version>1.3.4</version>
<scope>runtime</scope>
</dependency>
@@ -221,7 +221,7 @@
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
- <version>1.1.114</version>
+ <version>1.1.116</version>
<scope>compile</scope>
</dependency>
1
0
r2508 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/result
by chatellier@users.labs.libre-entreprise.org 22 Jul '09
by chatellier@users.labs.libre-entreprise.org 22 Jul '09
22 Jul '09
Author: chatellier
Date: 2009-07-22 17:02:11 +0000 (Wed, 22 Jul 2009)
New Revision: 2508
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultEdit.java
Log:
Wrong import added.
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultEdit.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultEdit.java 2009-07-20 13:38:55 UTC (rev 2507)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultEdit.java 2009-07-22 17:02:11 UTC (rev 2508)
@@ -45,8 +45,6 @@
import org.codelutin.util.FileUtil;
import org.codelutin.util.Resource;
-import sun.print.resources.serviceui;
-
import fr.ifremer.isisfish.datastore.ExportStorage;
import fr.ifremer.isisfish.datastore.ResultStorage;
import fr.ifremer.isisfish.datastore.SimulationStorage;
1
0
r2507 - in isis-fish/trunk: . src/main/java/fr/ifremer/isisfish/util src/main/resources/templates/script
by chatellier@users.labs.libre-entreprise.org 20 Jul '09
by chatellier@users.labs.libre-entreprise.org 20 Jul '09
20 Jul '09
Author: chatellier
Date: 2009-07-20 13:38:55 +0000 (Mon, 20 Jul 2009)
New Revision: 2507
Modified:
isis-fish/trunk/changelog.txt
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/Doc.java
isis-fish/trunk/src/main/resources/templates/script/export.ftl
isis-fish/trunk/src/main/resources/templates/script/sensitivity.ftl
Log:
@Doc annotation is now field target only.
Modified: isis-fish/trunk/changelog.txt
===================================================================
--- isis-fish/trunk/changelog.txt 2009-07-17 13:29:26 UTC (rev 2506)
+++ isis-fish/trunk/changelog.txt 2009-07-20 13:38:55 UTC (rev 2507)
@@ -1,9 +1,11 @@
isis-fish (3.2.0.5) stable; urgency=low
+ * @Doc annotation is now only field target
* Fix creation group assistant's labels
* Improve simulation summary
* #1905 : nom des labels pour somme par année
+ --
isis-fish (3.2.0.5-rc1) stable; urgency=low
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/Doc.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/Doc.java 2009-07-17 13:29:26 UTC (rev 2506)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/Doc.java 2009-07-20 13:38:55 UTC (rev 2507)
@@ -18,6 +18,11 @@
package fr.ifremer.isisfish.util;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
/**
* Used by user to add informations about a code he wrote.
*
@@ -27,31 +32,34 @@
* Last update : $Date$
* By : $Author$
*/
- at java.lang.annotation.Retention(value =
- java.lang.annotation.RetentionPolicy.RUNTIME)
- at java.lang.annotation.Target(value = {
- java.lang.annotation.ElementType.FIELD,
- java.lang.annotation.ElementType.TYPE
- })
+ at Retention(value = RetentionPolicy.RUNTIME)
+ at Target(value = { ElementType.FIELD })
public @interface Doc {
-
+
/**
+ * Get content of the documentation.
*
* @return the content of the documentation
*/
String value();
/**
+ * Get documentation date (optional).
+ *
* @return optional date
*/
String date() default "";
/**
+ * Get documentation version (optional).
+ *
* @return optional version
*/
String version() default "";
/**
+ * Get documentation author (optional).
+ *
* @return optional author of the documentation
*/
String author() default "";
Modified: isis-fish/trunk/src/main/resources/templates/script/export.ftl
===================================================================
--- isis-fish/trunk/src/main/resources/templates/script/export.ftl 2009-07-17 13:29:26 UTC (rev 2506)
+++ isis-fish/trunk/src/main/resources/templates/script/export.ftl 2009-07-20 13:38:55 UTC (rev 2507)
@@ -41,8 +41,7 @@
}
public String getExportFilename() {
- // remove _(...) if you don''t want translation on filename
- return _("${name}");
+ return "${name}";
}
public String getExtensionFilename() {
Modified: isis-fish/trunk/src/main/resources/templates/script/sensitivity.ftl
===================================================================
--- isis-fish/trunk/src/main/resources/templates/script/sensitivity.ftl 2009-07-17 13:29:26 UTC (rev 2506)
+++ isis-fish/trunk/src/main/resources/templates/script/sensitivity.ftl 2009-07-20 13:38:55 UTC (rev 2507)
@@ -27,7 +27,6 @@
* Last update: $Date: ${date?date?string.long} $
* by : $Author: ${author} $
*/
- at Doc("TODO Doc for ${name} SensitivityCalculator")
public class ${name} extends AbstractSensitivityCalculator {
/** to use log facility, just put in your code: log.info("..."); */
1
0
r2506 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/queue
by chatellier@users.labs.libre-entreprise.org 17 Jul '09
by chatellier@users.labs.libre-entreprise.org 17 Jul '09
17 Jul '09
Author: chatellier
Date: 2009-07-17 13:29:26 +0000 (Fri, 17 Jul 2009)
New Revision: 2506
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueAction.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueUI.jaxx
Log:
Activation du bouton, quand le contenu change (pas la selection)
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueAction.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueAction.java 2009-07-17 13:28:58 UTC (rev 2505)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueAction.java 2009-07-17 13:29:26 UTC (rev 2506)
@@ -61,7 +61,6 @@
public void updateActions() {
queueUI.setCanStop(!queueUI.getSelectionModelQueueTable().isSelectionEmpty());
queueUI.setCanShowLog(!queueUI.getSelectionModelQueueTableDone().isSelectionEmpty());
- // TODO value have to change on non valueChanged event
queueUI.setCanClear(queueUI.getQueueTableDone().getModel().getRowCount()>0);
queueUI.setCanRestart(!queueUI.getSelectionModelQueueTableDone().isSelectionEmpty());
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueUI.jaxx 2009-07-17 13:28:58 UTC (rev 2505)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueUI.jaxx 2009-07-17 13:29:26 UTC (rev 2506)
@@ -37,7 +37,8 @@
<QueueAction id="queueAction" javaBean='new QueueAction(this)'/>
<SimulationServiceTableModel id="newSimulationModel" javaBean='new SimulationServiceTableModel(SimulationService.getService(), true)'/>
- <SimulationServiceTableModel id="doneSimulationModel" javaBean='new SimulationServiceTableModel(SimulationService.getService(), false)'/>
+ <SimulationServiceTableModel id="doneSimulationModel" javaBean='new SimulationServiceTableModel(SimulationService.getService(), false)'
+ onTableChanged='queueAction.updateActions()' />
<DefaultListSelectionModel id="selectionModelQueueTable" onValueChanged='queueAction.updateActions()'/>
<DefaultListSelectionModel id="selectionModelQueueTableDone" onValueChanged='queueAction.updateActions()'/>
1
0
r2505 - isis-fish/trunk/src/main/resources/i18n
by chatellier@users.labs.libre-entreprise.org 17 Jul '09
by chatellier@users.labs.libre-entreprise.org 17 Jul '09
17 Jul '09
Author: chatellier
Date: 2009-07-17 13:28:58 +0000 (Fri, 17 Jul 2009)
New Revision: 2505
Modified:
isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties
Log:
Formatage i18n
Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties
===================================================================
--- isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-07-17 12:31:00 UTC (rev 2504)
+++ isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-07-17 13:28:58 UTC (rev 2505)
@@ -676,9 +676,9 @@
isisfish.params.toString.lib.logger.level=niveau du logger de librairies \: %1$s
isisfish.params.toString.number.years=Nombre d'ann\u00E9es \: %1$s\n\n
isisfish.params.toString.plan=Plan\: %1$s
-isisfish.params.toString.plan.number=Num\u00e9ro de s\u00e9quence dans le plan \: %1$s\n\n
+isisfish.params.toString.plan.number=Num\u00E9ro de s\u00E9quence dans le plan \: %1$s\n\n
isisfish.params.toString.populations=Populations \:
-isisfish.params.toString.rule=R\u00e8gle\: %1$s
+isisfish.params.toString.rule=R\u00E8gle\: %1$s
isisfish.params.toString.script.logger.level=niveau du logger de scripts \: %1$s
isisfish.params.toString.script.presimulation=Script de presimulation
isisfish.params.toString.simul.logger.level=niveau du logger de simulateur \: %1$s
1
0
r2504 - in isis-fish/trunk: . src/main/resources/i18n
by chatellier@users.labs.libre-entreprise.org 17 Jul '09
by chatellier@users.labs.libre-entreprise.org 17 Jul '09
17 Jul '09
Author: chatellier
Date: 2009-07-17 12:31:00 +0000 (Fri, 17 Jul 2009)
New Revision: 2504
Modified:
isis-fish/trunk/changelog.txt
isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties
isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties
Log:
Fix creation group assistant's labels
Modified: isis-fish/trunk/changelog.txt
===================================================================
--- isis-fish/trunk/changelog.txt 2009-07-17 12:27:53 UTC (rev 2503)
+++ isis-fish/trunk/changelog.txt 2009-07-17 12:31:00 UTC (rev 2504)
@@ -1,5 +1,6 @@
isis-fish (3.2.0.5) stable; urgency=low
+ * Fix creation group assistant's labels
* Improve simulation summary
* #1905 : nom des labels pour somme par année
Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties
===================================================================
--- isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-07-17 12:27:53 UTC (rev 2503)
+++ isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-07-17 12:31:00 UTC (rev 2504)
@@ -1079,8 +1079,8 @@
isisfish.wizardGroupCreation.firstAge=First age
isisfish.wizardGroupCreation.firstAgeHelp=First age \= minimal age
isisfish.wizardGroupCreation.firstGroup=First group
-isisfish.wizardGroupCreation.firstLength=First length
-isisfish.wizardGroupCreation.firstLengthHelp=First length \= minimal length of first group
+isisfish.wizardGroupCreation.firstLength=First min length
+isisfish.wizardGroupCreation.firstLengthHelp=First min length \= minimal length of first group
isisfish.wizardGroupCreation.gapBetweenGroupsHelp=gap between to group is 1 year.
isisfish.wizardGroupCreation.groupWidth=Group width
isisfish.wizardGroupCreation.groupWidthHelp=Group width \= width of group
Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties
===================================================================
--- isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-07-17 12:27:53 UTC (rev 2503)
+++ isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-07-17 12:31:00 UTC (rev 2504)
@@ -1079,8 +1079,8 @@
isisfish.wizardGroupCreation.firstAge=Premier age
isisfish.wizardGroupCreation.firstAgeHelp=Premier age \= age minimal
isisfish.wizardGroupCreation.firstGroup=Premier groupe
-isisfish.wizardGroupCreation.firstLength=Premi\u00E8re taille
-isisfish.wizardGroupCreation.firstLengthHelp=Premi\u00E8re taille \= taille minimale du premier groupe
+isisfish.wizardGroupCreation.firstLength=Taille min premi\u00E8re classe
+isisfish.wizardGroupCreation.firstLengthHelp=Taille min premi\u00E8re classe \= taille minimale du premier groupe
isisfish.wizardGroupCreation.gapBetweenGroupsHelp=L'interval entre chaque groupe est de 1 an
isisfish.wizardGroupCreation.groupWidth=Longueur du groupe
isisfish.wizardGroupCreation.groupWidthHelp=Longueur du groupe \= Longueur du groupe
1
0
r2503 - in isis-fish/trunk: . src/main/java/fr/ifremer/isisfish/simulator src/main/java/fr/ifremer/isisfish/ui/result src/main/resources/i18n
by chatellier@users.labs.libre-entreprise.org 17 Jul '09
by chatellier@users.labs.libre-entreprise.org 17 Jul '09
17 Jul '09
Author: chatellier
Date: 2009-07-17 12:27:53 +0000 (Fri, 17 Jul 2009)
New Revision: 2503
Modified:
isis-fish/trunk/changelog.txt
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultEdit.java
isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties
isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties
Log:
Improve simulation summary
Modified: isis-fish/trunk/changelog.txt
===================================================================
--- isis-fish/trunk/changelog.txt 2009-07-17 09:20:39 UTC (rev 2502)
+++ isis-fish/trunk/changelog.txt 2009-07-17 12:27:53 UTC (rev 2503)
@@ -1,6 +1,9 @@
isis-fish (3.2.0.5) stable; urgency=low
+ * Improve simulation summary
+ * #1905 : nom des labels pour somme par année
+
isis-fish (3.2.0.5-rc1) stable; urgency=low
* Remove inprocess launcher (due to memory consumption)
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2009-07-17 09:20:39 UTC (rev 2502)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2009-07-17 12:27:53 UTC (rev 2503)
@@ -1328,6 +1328,7 @@
}
}
result.append(_("isisfish.params.toString.rule", name));
+ result.append('\n');
result.append(param);
result.append("\n");
@@ -1344,6 +1345,7 @@
}
}
result.append(_("isisfish.params.toString.plan", name));
+ result.append('\n');
result.append(param);
result.append('\n');
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultEdit.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultEdit.java 2009-07-17 09:20:39 UTC (rev 2502)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultEdit.java 2009-07-17 12:27:53 UTC (rev 2503)
@@ -256,6 +256,8 @@
StringBuffer resume = new StringBuffer(sp.toString());
resume.append("\n");
+ // TODO EC20090717 ca marche plus ca
+ // les results name ne commence plus par ABONDANCE_STRING...
for(Iterator i=resultManager.getResultName().iterator(); i.hasNext();){
String name = (String)i.next();
try {
Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties
===================================================================
--- isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-07-17 09:20:39 UTC (rev 2502)
+++ isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-07-17 12:27:53 UTC (rev 2503)
@@ -673,17 +673,17 @@
isisfish.params.simulationName=Simulation name
isisfish.params.title=Parameters
isisfish.params.toString.fishery=P\u00EAcherie\: %1$s\n\n
-isisfish.params.toString.lib.logger.level=Level of libraries' logger %1$s
+isisfish.params.toString.lib.logger.level=Level of libraries' logger \: %1$s
isisfish.params.toString.number.years=Number of years\: %1$s\n\n
isisfish.params.toString.plan=Plan\: %1$s
isisfish.params.toString.plan.number=Analyse plan sequence number\: %1$s\n\n
-isisfish.params.toString.populations=Populations\:
+isisfish.params.toString.populations=Populations \:
isisfish.params.toString.rule=Rule\: %1$s
-isisfish.params.toString.script.logger.level=Level of scripts' logger %1$s
+isisfish.params.toString.script.logger.level=Level of scripts' logger \: %1$s
isisfish.params.toString.script.presimulation=Script de presimulation
-isisfish.params.toString.simul.logger.level=Level of simulator's logger %1$s
-isisfish.params.toString.simulation.done=Simulation done with %1$s\:
-isisfish.params.toString.strategies=Strat\u00E9gies d'exploitation\:
+isisfish.params.toString.simul.logger.level=Level of simulator's logger \: %1$s
+isisfish.params.toString.simulation.done=Simulation done with \: %1$s
+isisfish.params.toString.strategies=Strat\u00E9gies \:
isisfish.params.useAnalysePlan=Use simulation plan
isisfish.params.usePreSimulationScript=Use pre simulation script
isisfish.population.capturability=Capturability
Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties
===================================================================
--- isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-07-17 09:20:39 UTC (rev 2502)
+++ isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-07-17 12:27:53 UTC (rev 2503)
@@ -673,17 +673,17 @@
isisfish.params.simulationName=Nom de la simulation
isisfish.params.title=Param\u00E8tres
isisfish.params.toString.fishery=P\u00EAcherie\: %1$s\n\n
-isisfish.params.toString.lib.logger.level=niveau du logger de librairies %1$s
-isisfish.params.toString.number.years=Nombre d'ann\u00E9s \: %1$s\n\n
+isisfish.params.toString.lib.logger.level=niveau du logger de librairies \: %1$s
+isisfish.params.toString.number.years=Nombre d'ann\u00E9es \: %1$s\n\n
isisfish.params.toString.plan=Plan\: %1$s
-isisfish.params.toString.plan.number=Analyse plan sequence number\: %1$s\n\n
-isisfish.params.toString.populations=Populations\:
-isisfish.params.toString.rule=Rule\: %1$s
-isisfish.params.toString.script.logger.level=niveau du logger de scripts %1$s
+isisfish.params.toString.plan.number=Num\u00e9ro de s\u00e9quence dans le plan \: %1$s\n\n
+isisfish.params.toString.populations=Populations \:
+isisfish.params.toString.rule=R\u00e8gle\: %1$s
+isisfish.params.toString.script.logger.level=niveau du logger de scripts \: %1$s
isisfish.params.toString.script.presimulation=Script de presimulation
-isisfish.params.toString.simul.logger.level=niveau du logger de simulateur %1$s
-isisfish.params.toString.simulation.done=Simulation r\u00E9alis\u00E9e avec %1$s\:
-isisfish.params.toString.strategies=Strat\u00E9gies d'exploitation\:
+isisfish.params.toString.simul.logger.level=niveau du logger de simulateur \: %1$s
+isisfish.params.toString.simulation.done=Simulation r\u00E9alis\u00E9e avec \: %1$s
+isisfish.params.toString.strategies=Strat\u00E9gies d'exploitation \:
isisfish.params.useAnalysePlan=Utiliser le plan de simulation
isisfish.params.usePreSimulationScript=Utiliser un script de pr\u00E9-simulation
isisfish.population.capturability=Capturabilit\u0E009e
1
0