Author: chatellier Date: 2011-02-07 22:37:23 +0000 (Mon, 07 Feb 2011) New Revision: 695 Log: Improve control modification UI Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/NoCopiedLayerUI.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/OptionHandler.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorDialog.jaxx trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorsTreeRenderer.java trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java 2011-02-07 21:45:12 UTC (rev 694) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java 2011-02-07 22:37:23 UTC (rev 695) @@ -307,6 +307,11 @@ } validatorDialog.setLocationRelativeTo(view); + + // restore session size + SwingSession session = (SwingSession)view.getContextValue(SwingSession.class); + session.add(validatorDialog); + validatorDialog.setVisible(true); } Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/NoCopiedLayerUI.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/NoCopiedLayerUI.java 2011-02-07 21:45:12 UTC (rev 694) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/NoCopiedLayerUI.java 2011-02-07 22:37:23 UTC (rev 695) @@ -23,6 +23,8 @@ package fr.ifremer.coser.ui.option; +import static org.nuiton.i18n.I18n._; + import java.awt.Color; import java.awt.FlowLayout; import java.awt.Graphics2D; @@ -53,7 +55,7 @@ public NoCopiedLayerUI(ValidatorDialog view) { this.view = view; setLocked(true); - copyToDiskButton = new JButton("Copy to disk"); + copyToDiskButton = new JButton(_("coser.ui.validators.copyToDisk")); copyToDiskButton.addActionListener(this); } Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/OptionHandler.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/OptionHandler.java 2011-02-07 21:45:12 UTC (rev 694) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/OptionHandler.java 2011-02-07 22:37:23 UTC (rev 695) @@ -23,11 +23,14 @@ package fr.ifremer.coser.ui.option; +import static org.nuiton.i18n.I18n._; + import java.io.File; import java.io.IOException; import java.net.URL; import java.util.List; +import javax.swing.JOptionPane; import javax.swing.tree.TreePath; import org.apache.commons.io.FileUtils; @@ -56,6 +59,32 @@ private static final Log log = LogFactory.getLog(OptionHandler.class); /** + * Restaure les validateurs par defaut en supprimant ceux + * ceux du répertoire et en utilsant le class path. + * + * @param view view + */ + public void restoreDefaults(ValidatorDialog view) { + + int answer = JOptionPane.showConfirmDialog(view, _("coser.ui.validators.confirmRestore"), + _("coser.ui.validators.title"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); + + if (answer == JOptionPane.YES_OPTION) { + CoserConfig config = view.getContextValue(CoserConfig.class); + File validatorsDir = config.getValidatorsDirectory(); + + try { + FileUtils.deleteDirectory(validatorsDir); + view.dispose(); + } catch (IOException ex) { + if (log.isErrorEnabled()) { + log.error("Can't delete directory", ex); + } + } + } + } + + /** * Appelé par le layer pour copier les validateurs par defaut sur * le disque de l'utilisateur. Les copies depuis le classpath (dossier * "validators" vers le dossier défini par l'utilisateur. @@ -63,6 +92,15 @@ * @param view view */ public void copyDefaultValidators(ValidatorDialog view) { + + int answer = JOptionPane.showConfirmDialog(view, _("coser.ui.validators.confirmCopyToDisk"), + _("coser.ui.validators.title"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); + + if (answer != JOptionPane.YES_OPTION) { + view.dispose(); + return; + } + CoserConfig config = view.getContextValue(CoserConfig.class); File validatorsDir = config.getValidatorsDirectory(); validatorsDir.mkdirs(); @@ -84,8 +122,10 @@ } try { FileUtils.copyURLToFile(url, validatorFile); - } catch (IOException e) { - e.printStackTrace(); + } catch (IOException ex) { + if (log.isErrorEnabled()) { + log.error("Can't copy validators to file system", ex); + } } } @@ -100,16 +140,15 @@ } /** - * Control selected in tree. + * Retourne le File qui correspond (ou devrait) a un fichier de validateur + * sur le disque. * - * Dans ce cas, les fichiers sur disque existent, et on ne doit - * editer que ceux là, sinon enregistrer un fichier dans le classpath - * ca risque pas de fonctionner. - * * @param view view + * @return un file (existant... ou pas) */ - public void selectValidator(ValidatorDialog view) { - + protected File getValidatorFile(ValidatorDialog view) { + File validatorFile = null; + TreePath selectedPath = view.getValidatorsTree().getSelectionPath(); if (selectedPath != null) { Object[] path = selectedPath.getPath(); @@ -131,8 +170,34 @@ validatorResource += StringUtils.capitalize(category.toString().toLowerCase()); validatorResource += "-" + level.getXWorkContext() + "-validation.xml"; - File validatorFile = new File(validatorsDir, validatorResource); + validatorFile = new File(validatorsDir, validatorResource); + } + } + + return validatorFile; + } + /** + * Control selected in tree. + * + * Dans ce cas, les fichiers sur disque existent, et on ne doit + * editer que ceux là, sinon enregistrer un fichier dans le classpath + * ca risque pas de fonctionner. + * + * @param view view + */ + public void selectValidator(ValidatorDialog view) { + + view.getCreateNewButton().setEnabled(false); + view.getDeleteButton().setEnabled(false); + + TreePath selectedPath = view.getValidatorsTree().getSelectionPath(); + if (selectedPath != null) { + + File validatorFile = getValidatorFile(view); + + if (validatorFile != null) { + // look for resources in class path if (log.isDebugEnabled()) { log.debug("Looking for validator : " + validatorFile.getAbsoluteFile()); @@ -140,15 +205,58 @@ if (validatorFile.isFile()) { view.getValidationEditor().open(validatorFile); + // selection, enable delete + view.getDeleteButton().setEnabled(true); } else { view.getValidationEditor().close(); + view.getCreateNewButton().setEnabled(true); } view.getValidationEditor().validate(); view.getValidationEditor().repaint(); } } } + + /** + * Save current file. + * + * @param view view + */ + public void saveValidator(ValidatorDialog view) { + view.getValidationEditor().save(); + } + + /** + * Create new file. + * + * @param view view + */ + public void createNew(ValidatorDialog view) { + + File validatorFile = getValidatorFile(view); + + try { + FileUtils.writeStringToFile(validatorFile, ""); + } catch (IOException ex) { + if (log.isErrorEnabled()) { + log.error("Can't copy validators to file system", ex); + } + } + + selectValidator(view); + } + /** + * Delete a single validator. + * + * @param view view + */ + public void deleteValidator(ValidatorDialog view) { + + File validatorFile = getValidatorFile(view); + validatorFile.delete(); + selectValidator(view); + } } Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorDialog.jaxx =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorDialog.jaxx 2011-02-07 21:45:12 UTC (rev 694) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorDialog.jaxx 2011-02-07 22:37:23 UTC (rev 695) @@ -55,7 +55,11 @@ <row> <cell columns="2" anchor="east" insets="0"> <JPanel> - <JButton text="coser.ui.validators.valid" onActionPerformed="dispose()"/> + <JButton text="coser.ui.validators.restoredefaults" onActionPerformed="getHandler().restoreDefaults(this)" /> + <JButton id="createNewButton" text="coser.ui.validators.createNew" onActionPerformed="getHandler().createNew(this)" enabled="false" /> + <JButton id="saveButton" text="coser.ui.validators.saveValidator" onActionPerformed="getHandler().saveValidator(this)" enabled="false" /> + <JButton id="deleteButton" text="coser.ui.validators.deleteValidator" onActionPerformed="getHandler().deleteValidator(this)" enabled="false" /> + <JButton text="coser.ui.validators.close" onActionPerformed="dispose()" /> </JPanel> </cell> </row> Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorsTreeRenderer.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorsTreeRenderer.java 2011-02-07 21:45:12 UTC (rev 694) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorsTreeRenderer.java 2011-02-07 22:37:23 UTC (rev 695) @@ -66,6 +66,4 @@ return super.getTreeCellRendererComponent(tree, stringValue, sel, expanded, leaf, row, hasFocus); } - - } Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties =================================================================== --- trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2011-02-07 21:45:12 UTC (rev 694) +++ trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2011-02-07 22:37:23 UTC (rev 695) @@ -255,8 +255,15 @@ coser.ui.uploadresult.uploadLogin=Admin login \: coser.ui.uploadresult.uploadPassword=Admin password \: coser.ui.uploadresult.zone=Zone +coser.ui.validators.close=Close +coser.ui.validators.confirmCopyToDisk=Warning\: Controls can be customized, but some errors can break errors detection.\nDo you want to continue ? +coser.ui.validators.confirmRestore=Are you sure you want to restore default configuration ? coser.ui.validators.content=Content \: -coser.ui.validators.description=Application must be restarted after validators modification. +coser.ui.validators.copyToDisk=Copy controls to disk +coser.ui.validators.createNew=Create control +coser.ui.validators.deleteValidator=Delete control +coser.ui.validators.description=Application must be restarted after controls modification. +coser.ui.validators.restoredefaults=Default configuration +coser.ui.validators.saveValidator=Save control coser.ui.validators.title=Controls -coser.ui.validators.valid=Valid coser.ui.validators.validators=Validators \: Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties =================================================================== --- trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2011-02-07 21:45:12 UTC (rev 694) +++ trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2011-02-07 22:37:23 UTC (rev 695) @@ -255,8 +255,15 @@ coser.ui.uploadresult.uploadLogin=Login admin \: coser.ui.uploadresult.uploadPassword=Mot de passe admin \: coser.ui.uploadresult.zone=Zone +coser.ui.validators.close=Fermer +coser.ui.validators.confirmCopyToDisk=Attention\: La modification des contr\u00F4les permet de les param\u00E9trer mais une erreur pourrait emp\u00EAcher la d\u00E9tection des erreurs.\n\u00CAtes vous s\u00FBr de vouloir continuer ?\n +coser.ui.validators.confirmRestore=\u00CAtes vous s\u00FBr de vouloir r\u00E9tablir la configuration par d\u00E9faut ? coser.ui.validators.content=Contenu \: +coser.ui.validators.copyToDisk=Copier les contr\u00F4les sur le disque +coser.ui.validators.createNew=Cr\u00E9er le contr\u00F4le +coser.ui.validators.deleteValidator=Supprimer le contr\u00F4le coser.ui.validators.description=L'application doit \u00EAtre red\u00E9marr\u00E9e apr\u00E8s la modification des validateurs. +coser.ui.validators.restoredefaults=Configuration par d\u00E9faut +coser.ui.validators.saveValidator=Sauvegarder le contr\u00F4le coser.ui.validators.title=Contr\u00F4les -coser.ui.validators.valid=Valider coser.ui.validators.validators=Validateurs \:
participants (1)
-
chatellier@users.labs.libre-entreprise.org