r2516 - in isis-fish/trunk: . src/main/java/fr/ifremer/isisfish/ui/script src/main/java/fr/ifremer/isisfish/ui/script/action src/main/java/fr/ifremer/isisfish/ui/util src/main/resources/i18n
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
participants (1)
-
chatellier@users.labs.libre-entreprise.org