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