Author: chatellier
Date: 2009-08-24 08:24:04 +0000 (Mon, 24 Aug 2009)
New Revision: 2516
Modified:
isis-fish/trunk/changelog.txt
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ExportDialogUI.jaxx
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.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/java/fr/ifremer/isisfish/ui/script/action/BackupAction.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/CancelAction.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ChooseFileAction.java
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
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/util/IsisActionWithBackup.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:
Debut de refactoring des interfaces import/export de script (pas fini).
Modified: isis-fish/trunk/changelog.txt
===================================================================
--- isis-fish/trunk/changelog.txt 2009-08-20 17:03:54 UTC (rev 2515)
+++ isis-fish/trunk/changelog.txt 2009-08-24 08:24:04 UTC (rev 2516)
@@ -1,5 +1,7 @@
isis-fish (3.2.0.5) stable; urgency=low
+ * Move script import/export to Jaxx
+ * Fix nano time problem (not related to real date)
* @Doc annotation is now only field target
* Fix creation group assistant's labels
* Improve simulation summary
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ExportDialogUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ExportDialogUI.jaxx 2009-08-20 17:03:54 UTC (rev 2515)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ExportDialogUI.jaxx 2009-08-24 08:24:04 UTC (rev 2516)
@@ -1,6 +1,25 @@
+<!--
+/* *##%
+ * Copyright (C) 2005 - 2009
+ * Ifremer, Code Lutin, Cedric Pineau, Benjamin Poussin
+ *
+ * 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.export'>
<script>
- // FIXME a refaire
// public org.codelutin.vcs.ui.FieldModelUtil.ModuleFile model;
public Object model = null;
@@ -20,7 +39,7 @@
fr.ifremer.isisfish.ui.util.JaxxUtil.refresh(this,"items.enabled",
"checkAll.enabled","ok.enabled","chooseDir.enabled",
"archivePath.enabled");
- }
+ }
</script>
<Table anchor='center'>
@@ -53,9 +72,9 @@
toolTipText='isisfish.script.export.tooltip.checkAll'
enabled='{!isEmpty()}'
onActionPerformed="doCheckAll()" />
- <JButton id='ok' text='isisfish.script.export.ok'
+ <JButton id='okButton'
enabled='{isOkEnabled()}'/>
- <JButton id='cancel' text='isisfish.script.export.cancel'/>
+ <JButton id='cancelButton' />
</JPanel>
</cell>
</row>
Modified: 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 2009-08-20 17:03:54 UTC (rev 2515)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/FileSelectionTableModel.java 2009-08-24 08:24:04 UTC (rev 2516)
@@ -26,7 +26,8 @@
import javax.swing.table.AbstractTableModel;
/**
- * File selection table model.
+ * File selection table model displayed in import/export script
+ * for files selection (first column is checkbox).
*
* @author chatellier
* @version $Revision: 1.0 $
@@ -43,7 +44,10 @@
public final static String[] COLUMN_NAMES = { _("isisfish.common.ellipsis"),
_("isisfish.common.module"), _("isisfish.common.file") };
+ /** All files displayed in table. */
protected List<String> availableFiles;
+
+ /** Only selected files. */
protected List<String> selectedFiles;
/**
@@ -164,12 +168,24 @@
/**
* Set all files selected.
+ *
+ * @param selection {@code true} to select all files, {@code false} to unselect all files
*/
- public void checkAll() {
- selectedFiles.addAll(availableFiles);
+ public void setAllChecked(boolean selection) {
+ if (selection) {
+ selectedFiles.addAll(availableFiles);
+ }
+ else {
+ selectedFiles.clear();
+ }
fireTableDataChanged();
}
+ /**
+ * Get current files selection.
+ *
+ * @return list of selected file path
+ */
public List<String> getSelectedFiles() {
return selectedFiles;
}
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-08-20 17:03:54 UTC (rev 2515)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ImportDialogUI.jaxx 2009-08-24 08:24:04 UTC (rev 2516)
@@ -35,9 +35,6 @@
(!isNewItemEmpty() && !newFilesTableModel.getSelectedFiles().isEmpty());
}*/
- newFilesTable.getColumnModel().getColumn(0).setWidth(30);
- conflictFilesTable.getColumnModel().getColumn(0).setWidth(30);
-
public void refresh() {
setConflictItemEmpty(conflictFilesTableModel.getRowCount() == 0);
setNewItemEmpty(newFilesTableModel.getRowCount() == 0);
@@ -48,10 +45,19 @@
}
public void doCheckAll() {
- newFilesTableModel.checkAll();
- conflictFilesTableModel.checkAll();
- //refresh();
+ boolean selection = checkAllCheckbox.isSelected();
+ newFilesTableModel.setAllChecked(selection);
+ conflictFilesTableModel.setAllChecked(selection);
}
+
+ protected void performImport() {
+ File archiveFile = new File(archivePath.getText());
+ getContextValue(ScriptAction.class).performImportScript(archiveFile, newFilesTableModel, conflictFilesTableModel);
+ }
+
+ protected void cancel() {
+ hide();
+ }
]]></script>
<Table>
<row weighty="1" fill='both'>
@@ -96,13 +102,15 @@
<row fill='horizontal'>
<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='{!isBothEmpty()}'
- onActionPerformed="doCheckAll()" />
+ <JCheckBox id='checkAllCheckbox' text='isisfish.script.import.checkAll'
+ toolTipText='isisfish.script.import.tooltip.checkAll'
+ enabled='{!isBothEmpty()}'
+ onActionPerformed='doCheckAll()'
+ selected='true' />
<JButton id='okButton' text='isisfish.script.import.import'
- enabled='{isOkEnabled()}'/>
- <JButton id='cancelButton' text='isisfish.common.cancel'/>
+ enabled='{isOkEnabled()}'/>
+ <JButton id='cancelButton' text='isisfish.script.import.cancel'
+ onActionPerformed="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-08-20 17:03:54 UTC (rev 2515)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java 2009-08-24 08:24:04 UTC (rev 2516)
@@ -46,6 +46,7 @@
import org.apache.commons.logging.LogFactory;
import org.codelutin.util.FileUtil;
import org.codelutin.util.ZipUtil;
+import org.codelutin.widget.SwingUtil;
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.IsisFishRuntimeException;
@@ -59,8 +60,6 @@
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;
@@ -447,12 +446,12 @@
/**
* Exporte le(s) script(s) sélectionnés dans l'arbre.
- * <br>L'arbre doit avoir au moins un script de selectionne
+ * <br>L'arbre doit avoir au moins un script de selectionnés
*
* @param selectedPaths selected path
* @return <code>null</code> if everything is ok.
*/
- public static String exportScript(TreePath[] selectedPaths) {
+ public String showExportScriptDialog(TreePath[] selectedPaths) {
String message = null;
// first step : acquire list of files required
int prefixLength = IsisFish.config.getDatabaseDirectory()
@@ -627,11 +626,11 @@
}
/**
- * Import zipped archive containing scripts.
+ * Show a improved script dialog with multiple selection support.
*
* @return status message
*/
- public String importScript() {
+ public String showImportScriptDialog() {
String msg = null;
if (log.isDebugEnabled()) {
log.debug("importScript ");
@@ -672,11 +671,13 @@
dialog.setConflictFilesTableModel(modelItems);
dialog.getConflictFilesTable().setModel(modelItems);
dialog.getNewFilesTable().setModel(modelNewItems);
+ // can't be in ui :(
+ dialog.getNewFilesTable().getColumnModel().getColumn(0).setWidth(30);
+ dialog.getConflictFilesTable().getColumnModel().getColumn(0).setWidth(30);
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();
+ SwingUtil.center(dialog);
dialog.setVisible(true);
msg = _("isisfish.message.import.scripts.file.done", file);
}
@@ -691,6 +692,108 @@
}
/**
+ * Perform import script action called by {@link ImportDialogUI}.
+ *
+ * @param sourceScriptArchive source archive file
+ * @param selectedFiles selected non conflict files model
+ * @param selectedConflictFiles selected conflict files model
+ */
+ public void performImportScript(File sourceScriptArchive, FileSelectionTableModel selectedFiles, FileSelectionTableModel selectedConflictFiles) {
+
+ File sourceDirectory = IsisFish.config.getDatabaseDirectory();
+
+ List<String> filesToImports = new ArrayList<String>();
+ if (selectedFiles != null) {
+ filesToImports.addAll(selectedFiles.getSelectedFiles());
+ }
+
+ if (selectedConflictFiles != null) {
+ // do backup stuff (only backup conflict files)
+ backupScripts(selectedConflictFiles.getSelectedFiles(), sourceDirectory);
+
+ filesToImports.addAll(selectedConflictFiles.getSelectedFiles());
+ }
+
+ // unflate files to destination (root)
+ try {
+ if (log.isInfoEnabled()) {
+ for (String newFile : filesToImports) {
+ log.info("unzip " + newFile);
+ }
+ }
+ ZipUtil.uncompress(sourceScriptArchive, sourceDirectory, filesToImports, null, null);
+
+ } catch (IOException e1) {
+ throw new RuntimeException(e1);
+ }
+ if (log.isInfoEnabled()) {
+ log.info("Unzip " + filesToImports.size() + " entry(ies) from '" + sourceScriptArchive + "'");
+ }
+ }
+
+ /**
+ * Make a backup a given files to current isis backup directory.
+ *
+ * @param paths
+ */
+ protected void backupScripts(List<String> paths, File destination) {
+
+ File backupDirectory = IsisFish.config.getBackupSessionDirectory();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Backup directory is : " + backupDirectory);
+ }
+ String suffix = "_" + IsisFish.config.getBackupSessionDirectory().getName();
+ try {
+ for (String path : paths) {
+
+ //backup(new File(src, path), path, suffix);
+
+ File sourceFile = new File(destination, path);
+
+ if (!sourceFile.exists()) {
+ return;
+ }
+ if (sourceFile.isDirectory()) {
+ File dst = new File(backupDirectory, path);
+ dst.mkdirs();
+ } else {
+ int extension = path.lastIndexOf(".");
+ if (extension != -1) {
+ path = path.substring(0, extension) + suffix + "."
+ + path.substring(extension + 1);
+ } else {
+ path += suffix;
+ }
+ File dst = new File(destination, path);
+ if (!dst.getParentFile().exists()) {
+ dst.getParentFile().mkdirs();
+ }
+ if (log.isInfoEnabled()) {
+ log.info("Copying " + sourceFile.getName() + " to " + dst);
+ }
+ FileUtil.copy(sourceFile, dst);
+ }
+ }
+ } catch (Exception ee) {
+ throw new IsisFishRuntimeException(ee);
+ }
+ }
+
+ /**
+ * Copy a single file to destination directory.
+ *
+ * @param src file to copy
+ * @param path path of file to copy
+ * @param suffix file suffix
+ * @throws IOException if copy fail
+ */
+ protected void backup(File src, String path, String suffix)
+ throws IOException {
+
+ }
+
+ /**
* Scan archive for script, and return an array of new files and conflict files.
*
* @param source archive file
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-08-20 17:03:54 UTC (rev 2515)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx 2009-08-24 08:24:04 UTC (rev 2516)
@@ -21,13 +21,13 @@
<JPanel layout='{new BorderLayout()}'>
<script><![CDATA[
import javax.swing.event.TreeSelectionListener;
- import javax.swing.tree.TreePath;
- import fr.ifremer.isisfish.ui.widget.editor.GenericCell;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;
+ import javax.swing.tree.TreePath;
+ import fr.ifremer.isisfish.IsisFishRuntimeException;
import fr.ifremer.isisfish.ui.WelcomePanelUI;
- import fr.ifremer.isisfish.IsisFishRuntimeException;
+ import fr.ifremer.isisfish.ui.widget.editor.GenericCell;
import fr.ifremer.isisfish.util.CompilationResult;
setContextValue(new ScriptAction());
@@ -130,10 +130,11 @@
return result;
}
- protected void setButton(){
+ protected void setButton() {
boolean fileLoaded = getContextValue(ScriptAction.class).fileLoaded();
boolean isJavaScript = getContextValue(ScriptAction.class).isJavaScript();
buttonScriptExport.setEnabled(tree.getSelectionValue() != null);
+ // TODO refactoring en cours, mais pas fini
miExport.setEnabled(tree.getSelectionValue() != null);
buttonScriptCommit.setEnabled(fileLoaded);
miCommitVCS.setEnabled(fileLoaded);
@@ -152,7 +153,7 @@
buttonScriptEval.setEnabled(isJavaScript);
miEvaluate.setEnabled(isJavaScript);
}
- protected void setInfoText(String msg){
+ protected void setInfoText(String msg) {
WelcomePanelUI root = getParentContainer(WelcomePanelUI.class);
root.setInfoText(msg);
}
@@ -204,12 +205,12 @@
setInfoText(_("isisfish.message.save.finished"));
}
protected void importScript() {
- String importMessage = getContextValue(ScriptAction.class).importScript();
+ String importMessage = getContextValue(ScriptAction.class).showImportScriptDialog();
setInfoText(importMessage);
}
- protected void exportScript(){
- new IsisFishRuntimeException("Not yet implemented");
- getContextValue(ScriptAction.class).exportScript(tree.getSelectionPaths());
+ protected void exportScript() {
+ TreePath[] selectedFilesPath = tree.getSelectionPaths();
+ getContextValue(ScriptAction.class).showExportScriptDialog(selectedFilesPath);
}
protected void commitScript(){
new IsisFishRuntimeException("Not yet implemented");
@@ -286,8 +287,8 @@
</JMenu>
<JMenuItem id="miSave" text="isisfish.script.menu.save" onActionPerformed="saveScript()" accelerator="accSave"/>
<JSeparator/>
- <JMenuItem id="miImport" text="isisfish.script.menu.txtImport" onActionPerformed="importScript()" accelerator="accImport"/>
- <JMenuItem id="miExport" text="isisfish.script.menu.txtExport" onActionPerformed="exportScript()" accelerator="accExport"/>
+ <JMenuItem id="miImport" text="isisfish.script.menu.txtImport" enabled="false" onActionPerformed="importScript()" accelerator="accImport"/>
+ <JMenuItem id="miExport" text="isisfish.script.menu.txtExport" enabled="false" onActionPerformed="exportScript()" accelerator="accExport"/>
<JSeparator/>
<JMenuItem id="miDelete" text="isisfish.script.menu.deleteLocaly" onActionPerformed='deleteScript(false)' accelerator="accDelete"/>
</JMenu>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/BackupAction.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/BackupAction.java 2009-08-20 17:03:54 UTC (rev 2515)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/BackupAction.java 2009-08-24 08:24:04 UTC (rev 2516)
@@ -33,27 +33,40 @@
import fr.ifremer.isisfish.ui.util.IsisAction;
/**
- * BackupAction.
+ * Make a backup directory containing a set a specific files.
*
* @author bpoussin
* @version $Revision$
*
* Last update : $Date$
* By : $Author$
+ *
+ * @deprecated C'est pas evident de faire des Actions swing avec jaxx
*/
public class BackupAction extends IsisAction {
+ /** serialVersionUID. */
+ private static final long serialVersionUID = -7574218899996427656L;
+
+ /** log. */
private static Log log = LogFactory.getLog(BackupAction.class);
- /** source root directory */
+ /** Source root directory. */
protected File src;
- /** backup root directory */
+
+ /** Backup root directory. */
protected File dst;
- /** list of relative path of files to backup */
+
+ /** List of relative path of files to backup. */
protected List<String> paths;
- private static final long serialVersionUID = -7574218899996427656L;
-
+ /**
+ * Constructor.
+ *
+ * @param src source root directory
+ * @param dst backup root directory
+ * @param paths list of relative path of files to backup
+ */
public BackupAction(File src, File dst, List<String> paths) {
super();
this.src = src;
@@ -61,14 +74,19 @@
this.paths = paths;
}
+ @Override
protected boolean prepare() {
- return src != null && dst != null && paths != null &&
- src.exists() && !paths.isEmpty();
+ return src != null && dst != null && paths != null && src.exists()
+ && !paths.isEmpty();
}
+ @Override
protected void perform(ActionEvent e) {
- log.info("directory for backup [" + dst+']');
- String suffix = "_" + IsisFish.config.getBackupSessionDirectory().getName();
+ if (log.isDebugEnabled()) {
+ log.debug("Backup directory is : " + dst);
+ }
+ String suffix = "_"
+ + IsisFish.config.getBackupSessionDirectory().getName();
try {
for (String path : paths) {
backup(new File(src, path), path, suffix);
@@ -78,7 +96,16 @@
}
}
- protected void backup(File src, String path, String suffix) throws IOException {
+ /**
+ * Copy a single file to destination directory.
+ *
+ * @param src file to copy
+ * @param path path of file to copy
+ * @param suffix file suffix
+ * @throws IOException if copy fail
+ */
+ protected void backup(File src, String path, String suffix)
+ throws IOException {
if (!src.exists()) {
return;
}
@@ -87,16 +114,19 @@
dst.mkdirs();
} else {
int extension = path.lastIndexOf(".");
- if (extension!=-1) {
- path = path.substring(0,extension)+suffix+"."+path.substring(extension+1);
+ if (extension != -1) {
+ path = path.substring(0, extension) + suffix + "."
+ + path.substring(extension + 1);
} else {
- path +=suffix;
+ path += suffix;
}
File dst = new File(this.dst, path);
if (!dst.getParentFile().exists()) {
dst.getParentFile().mkdirs();
}
- log.info("[" + src.getName()+ "] to ["+dst+"]");
+ if (log.isInfoEnabled()) {
+ log.info("Copying " + src.getName() + " to " + dst);
+ }
FileUtil.copy(src, dst);
}
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/CancelAction.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/CancelAction.java 2009-08-20 17:03:54 UTC (rev 2515)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/CancelAction.java 2009-08-24 08:24:04 UTC (rev 2516)
@@ -24,20 +24,38 @@
import javax.swing.JDialog;
import java.awt.event.ActionEvent;
+/**
+ * Cancel action. Do nothing, just close current dialog.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ *
+ * @deprecated C'est pas evident de faire des Actions swing avec jaxx
+ */
public class CancelAction extends IsisAction {
+ /** serialVersionUID. */
private static final long serialVersionUID = 2536223593370089763L;
+ /**
+ * Constructor.
+ *
+ * @param dialog dialog to close on action performed
+ */
public CancelAction(JDialog dialog) {
super(dialog);
}
+ @Override
protected boolean prepare() {
return true;
}
+ @Override
protected void perform(ActionEvent e) {
//nothing special to do
}
-
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ChooseFileAction.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ChooseFileAction.java 2009-08-20 17:03:54 UTC (rev 2515)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ChooseFileAction.java 2009-08-24 08:24:04 UTC (rev 2516)
@@ -28,10 +28,21 @@
import java.awt.event.ActionEvent;
import java.io.File;
+/**
+ * Choose file action.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ *
+ * @deprecated as of 20090819 unused
+ */
public class ChooseFileAction extends AbstractAction {
private static final long serialVersionUID = -5004217809548352109L;
-
+
protected JTextField file;
protected JDialog dialog;
@@ -56,16 +67,18 @@
}
JFileChooser chooser = new JFileChooser(dir);
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
- int ret = chooser.showDialog(dialog, _("isisfish.message.choose.archive"));
+ int ret = chooser.showDialog(dialog,
+ _("isisfish.message.choose.archive"));
if (ret == JFileChooser.APPROVE_OPTION) {
File newFile = chooser.getSelectedFile();
String path;
if (newFile.isFile()) {
path = newFile.getAbsolutePath();
- }
- else {
+ } else {
path = newFile.getAbsolutePath();
- if (!"".equals(name)) path += File.separator + name;
+ if (!"".equals(name)) {
+ path += File.separator + name;
+ }
}
file.setText(path);
}
Modified: 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 2009-08-20 17:03:54 UTC (rev 2515)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ExportAction.java 2009-08-24 08:24:04 UTC (rev 2516)
@@ -1,9 +1,23 @@
+/* *##%
+ * Copyright (C) 2006 - 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.
+ *##%*/
+
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;
@@ -13,27 +27,54 @@
import java.util.List;
import javax.swing.JDialog;
+import javax.swing.JOptionPane;
import javax.swing.JTextField;
import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.codelutin.util.ZipUtil;
import fr.ifremer.isisfish.IsisFishRuntimeException;
import fr.ifremer.isisfish.ui.script.FileSelectionTableModel;
import fr.ifremer.isisfish.ui.util.IsisAction;
+/**
+ * Action to export a set of selected file to a zip archive.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ *
+ * @deprecated C'est pas evident de faire des Actions swing avec jaxx
+ */
public class ExportAction extends IsisAction {
- static private Log log = getLog(ExportAction.class);
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 3373564473968724365L;
+ /** log. */
+ private static Log log = LogFactory.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;
+ /**
+ * Export action constructor.
+ *
+ * @param dialog dialog ???
+ * @param file textfield containing dest archive path
+ * @param root root for all file in includes that is in this directory
+ * @param model selected file model
+ */
public ExportAction(JDialog dialog, JTextField file, File root,
FileSelectionTableModel model) {
super(dialog);
@@ -42,32 +83,39 @@
this.model = model;
}
+ @Override
protected boolean prepare() {
dst = new File(file.getText());
- if ("".equals(dst.getAbsolutePath())) return false;
+ if ("".equals(dst.getAbsolutePath())) {
+ return false;
+ }
if (dst.exists()) {
- int resp = showConfirmDialog(dialog,
+ int resp = JOptionPane.showConfirmDialog(dialog,
_("isisfish.message.file.already.exists" + dst));
- if (resp == CANCEL_OPTION) {
+ if (resp == JOptionPane.CANCEL_OPTION) {
dialog.dispose();
return false;
}
- if (resp == YES_OPTION)
+ if (resp == JOptionPane.YES_OPTION) {
dst.getParentFile().mkdirs();
- else return false;
+ } else {
+ return false;
+ }
} else if (!dst.getParentFile().exists()) {
- int resp = showConfirmDialog(dialog,
+ int resp = JOptionPane.showConfirmDialog(dialog,
_("isisfish.message.directory.not.exists" + dst));
- if (resp == CANCEL_OPTION) {
+ if (resp == JOptionPane.CANCEL_OPTION) {
dialog.dispose();
return false;
}
- if (resp == YES_OPTION)
+ if (resp == JOptionPane.YES_OPTION) {
dst.getParentFile().mkdirs();
- else return false;
+ } else {
+ return false;
+ }
}
selected = model.getSelectedFiles();
@@ -75,21 +123,28 @@
return !(selected == null || selected.isEmpty());
}
+ @Override
protected void perform(ActionEvent e) {
try {
List<File> toZip = new ArrayList<File>();
- for (String path : selected) toZip.add(new File(root, path));
+ for (String path : selected) {
+ toZip.add(new File(root, path));
+ }
- if (dst.exists()) dst.delete();
+ if (dst.exists()) {
+ dst.delete();
+ }
dst.createNewFile();
ZipUtil.compressFiles(dst, root, toZip);
- log.info("Zip DataStorage in " + dst + "[" + toZip.size()
- + " files] (size " + dst.length() + ")");
+ if (log.isInfoEnabled()) {
+ log.info("Zip DataStorage in " + dst + "[" + toZip.size()
+ + " files] (size " + dst.length() + ")");
+ }
} catch (IOException e1) {
throw new IsisFishRuntimeException(e1);
Modified: 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 2009-08-20 17:03:54 UTC (rev 2515)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ImportAction.java 2009-08-24 08:24:04 UTC (rev 2516)
@@ -1,7 +1,23 @@
+/* *##%
+ * Copyright (C) 2006 - 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.
+ *##%*/
+
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;
@@ -11,69 +27,68 @@
import javax.swing.JDialog;
import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.codelutin.util.ZipUtil;
import fr.ifremer.isisfish.ui.script.FileSelectionTableModel;
import fr.ifremer.isisfish.ui.util.IsisActionWithBackup;
+/**
+ * Action for import zip content into isis script directory.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ *
+ * @deprecated C'est pas evident de faire des Actions swing avec jaxx
+ */
public class ImportAction extends IsisActionWithBackup {
+ /** serialVersionUID. */
private static final long serialVersionUID = 2459027106690418279L;
-
- private static Log log = getLog(ImportAction.class);
-
- /**
- * model to contains new files to add from import
- */
+
+ /** log. */
+ private static Log log = LogFactory.getLog(ImportAction.class);
+
+ /** Model to contains new files to add from import. */
protected FileSelectionTableModel model;
-
- /**
- * model to contains files conflicted from import
- */
+
+ /** Model to contains files conflicted from import. */
protected FileSelectionTableModel modelWithBackup;
-
- /**
- * location of archive to import
- */
+
+ /** Location of archive to import. */
protected File source;
-
+
+ /** List of relative path to import (is init in {@link #prepare()} method). */
+ private List<String> toImport;
+
/**
- * List of relative path to import (is init in {@link #prepare()} method)
+ * Import action constructor.
+ *
+ * @param dialog dialog ???
+ * @param source zip file
+ * @param root destination directory
+ * @param modelNewItems added files model (for selection)
+ * @param modelItems conflict files model (for selection)
*/
- private List<String> toImport;
-
public ImportAction(JDialog dialog, File source, File root,
- FileSelectionTableModel modelNewItems,
- FileSelectionTableModel modelItems) {
+ 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);
+ @Override
+ protected boolean prepare() {
+ if (source == null || (model == null && modelWithBackup == null)
+ || "".equals(source.getAbsolutePath())) {
+ return false;
}
- 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
@@ -88,6 +103,32 @@
return !toImport.isEmpty();
}
+ @Override
+ protected void perform(ActionEvent e) {
+
+ // do backup stuff
+ super.perform(e);
+
+ // unflate files to destination (root)
+ try {
+ if (log.isInfoEnabled()) {
+ for (String newFile : toImport) {
+ log.info("unzip " + newFile);
+ }
+ }
+ ZipUtil.uncompress(source, root, toImport, null, null);
+
+ } catch (IOException e1) {
+ throw new RuntimeException(e1);
+ }
+ if (log.isInfoEnabled()) {
+ log.info("unzip " + toImport.size() + " entry(ies) from '" + source
+ + "'");
+ }
+ toImport.clear();
+ }
+
+ @Override
protected List<String> getFilesToBackup() {
List<String> toBackup = new ArrayList<String>();
if (modelWithBackup != null) {
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/util/IsisActionWithBackup.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/util/IsisActionWithBackup.java 2009-08-20 17:03:54 UTC (rev 2515)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/util/IsisActionWithBackup.java 2009-08-24 08:24:04 UTC (rev 2516)
@@ -1,22 +1,61 @@
+/* *##%
+ * Copyright (C) 2006 - 2009
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ *
+ * 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.util;
-import fr.ifremer.isisfish.IsisFish;
-import fr.ifremer.isisfish.ui.script.action.BackupAction;
-
-import javax.swing.JDialog;
import java.awt.event.ActionEvent;
import java.io.File;
import java.util.List;
+import javax.swing.JDialog;
+
+import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.ui.script.action.BackupAction;
+
+/**
+ * This abstract action perform a backup action.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ *
+ * @deprecated C'est pas evident de faire des Actions swing avec jaxx
+ */
public abstract class IsisActionWithBackup extends IsisAction {
- protected File backupRoot;
- protected File root;
+
+ /** serialVersionUID. */
private static final long serialVersionUID = -5498329861390316586L;
+ /** Root directory of files to be backupped. */
+ protected File root;
+
+ /**
+ * Constructor.
+ *
+ * @param dialog dialog ???
+ * @param root root directory of files to be backupped
+ */
protected IsisActionWithBackup(JDialog dialog, File root) {
super(dialog);
this.root = root;
- this.backupRoot = IsisFish.config.getBackupSessionDirectory();
}
/**
@@ -27,10 +66,16 @@
*/
protected abstract List<String> getFilesToBackup();
+ /**
+ * Just perform a {@link BackupAction}.
+ *
+ * Need to be overridden and called by {@code super.perform(e)}
+ */
+ @Override
protected void perform(ActionEvent e) {
-
// do backup stuff here
- new BackupAction(root, backupRoot, getFilesToBackup()).actionPerformed(e);
-
+ BackupAction backupAction = new BackupAction(root, IsisFish.config
+ .getBackupSessionDirectory(), getFilesToBackup());
+ backupAction.actionPerformed(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-08-20 17:03:54 UTC (rev 2515)
+++ isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-08-24 08:24:04 UTC (rev 2516)
@@ -495,19 +495,19 @@
isisfish.input.continuePopulations=Continue to populations
isisfish.input.continuePorts=Continue to ports
isisfish.input.continueSetOfVessels=Continue to set of vessels
-isisfish.input.continueSpecies=
+isisfish.input.continueSpecies=Continue to species
isisfish.input.continueStrategies=Continue to strategies
-isisfish.input.continueTripTypes=Continue to trip type
+isisfish.input.continueTripTypes=Continue to trip types
isisfish.input.continueVesselTypes=Continue to vessel types
isisfish.input.continueZones=Continue to zones
isisfish.input.menu.addRegion=Add region
isisfish.input.menu.commit=Commit change
-isisfish.input.menu.copyRegion=Copy Region
-isisfish.input.menu.exportRegion=Export Region
-isisfish.input.menu.importRegion=Import Region
-isisfish.input.menu.importRegionSimulation=Import Region from simulation
-isisfish.input.menu.importRegionV2=Import Region from v2
-isisfish.input.menu.importRenameRegion=Import Region and rename
+isisfish.input.menu.copyRegion=Copy region
+isisfish.input.menu.exportRegion=Export region
+isisfish.input.menu.importRegion=Import region
+isisfish.input.menu.importRegionSimulation=Import region from simulation
+isisfish.input.menu.importRegionV2=Import region from v2
+isisfish.input.menu.importRenameRegion=Import region and rename
isisfish.input.menu.removeLocaly=Remove localy
isisfish.input.menu.removeLocalyRemotely=Remove localy and remotely
isisfish.input.menu.server=Server
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-08-20 17:03:54 UTC (rev 2515)
+++ isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-08-24 08:24:04 UTC (rev 2516)
@@ -860,9 +860,9 @@
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.cancel=Annuler
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.tooltip.checkAll=(D\u00E9-)S\u00E9lectionner tous les scripts \u00E0 importer