[Lutinutil-commits] r1650 - in trunk/nuiton-i18n-editor/src/main: filters java/org/nuiton/i18n/editor/ui java/org/nuiton/i18n/editor/ui/project java/org/nuiton/i18n/editor/ui/project/tabs resources/i18n resources/icons
Author: tchemit Date: 2009-08-02 17:27:51 +0200 (Sun, 02 Aug 2009) New Revision: 1650 Added: trunk/nuiton-i18n-editor/src/main/resources/icons/action-edit.png Modified: trunk/nuiton-i18n-editor/src/main/filters/nuiton-i18n-editor.properties trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUI.css trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUI.jaxx trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUIHandler.java trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/ProjectUI.jaxx trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/ProjectUIModel.java trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/SelectBundlesTableModel.java trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/SelectBundlesPanelUI.jaxx trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor-en_GB.properties trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor-fr_FR.properties Log: edition de la definition du projet ouvert Modified: trunk/nuiton-i18n-editor/src/main/filters/nuiton-i18n-editor.properties =================================================================== --- trunk/nuiton-i18n-editor/src/main/filters/nuiton-i18n-editor.properties 2009-07-30 23:04:45 UTC (rev 1649) +++ trunk/nuiton-i18n-editor/src/main/filters/nuiton-i18n-editor.properties 2009-08-02 15:27:51 UTC (rev 1650) @@ -12,6 +12,7 @@ icon.action.cancel=action-cancel.png icon.action.closeTab=action-closeTab.png icon.action.config=action-config.png +icon.action.edit=action-edit.png icon.action.open=action-open.png icon.action.save=action-save.png icon.action.close=action-close.png Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUI.css =================================================================== --- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUI.css 2009-07-30 23:04:45 UTC (rev 1649) +++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUI.css 2009-08-02 15:27:51 UTC (rev 1650) @@ -53,6 +53,12 @@ _help:{"ui.main.menu.file.configuration"}; } +#menuFileEditProject { + text:"i18neditor.action.editProject"; + actionIcon:"edit"; + enabled:{context.getProject() != null}; +} + #menuFileCreateProject { text:"i18neditor.action.createProject"; actionIcon:"add"; Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUI.jaxx =================================================================== --- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUI.jaxx 2009-07-30 23:04:45 UTC (rev 1649) +++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUI.jaxx 2009-08-02 15:27:51 UTC (rev 1650) @@ -223,6 +223,7 @@ <JMenu id='menuFile'> <JMenuItem id='menuFileConfiguration' onActionPerformed="handler.showConfig(context)"/> <JMenuItem id="menuFileCreateProject" onActionPerformed="handler.createProject(context)"/> + <JMenuItem id="menuFileEditProject" onActionPerformed="handler.editProject(context)"/> <JMenu id="menuFileOpenProject"> <JMenuItem id="menuFileOpenProjectOther" onActionPerformed="handler.openOtherProject(context)" Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUIHandler.java =================================================================== --- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUIHandler.java 2009-07-30 23:04:45 UTC (rev 1649) +++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUIHandler.java 2009-08-02 15:27:51 UTC (rev 1650) @@ -625,10 +625,11 @@ I18nProject project = null; I18nProjectProvider<?> type = model.getType(); project = I18nProjectFactory.newProject(type.getType(), model); - rootContext.getContextValue(I18nEditorConfig.class).getProjects().add(project.getName()); try { if (project.isStoreProject()) { - // on enregistre le projet + // ajout du projet dans la liste des projets connus + rootContext.getContextValue(I18nEditorConfig.class).getProjects().add(project.getName()); + // on enregistre la definition du projet project.saveDefinition(); } project.load(); @@ -646,6 +647,52 @@ }.start(); } + /** + * Méthode pour lancer l'assistant de mise a jour de projet. + * + * @param context le context applicatif + */ + public void editProject(final I18nEditorContext context) { + boolean canContinue = ensureModification(context); + if (!canContinue) { + return; + } + + final I18nEditorUI mainUI = getUI(context); + + new WizardUILancher<ProjectStep, ProjectUIModel, ProjectUI>(context, mainUI, ProjectUI.class, ProjectUIModel.class) { + + @Override + protected void doAction(ProjectUI ui) { + log.info(ui.getName()); + ProjectUIModel model = ui.getModel(); + I18nProject project = null; + I18nProjectProvider<?> type = model.getType(); + project = I18nProjectFactory.newProject(type.getType(), model); + try { + if (project.isStoreProject()) { + if (!context.getConfig().getProjects().contains(project.getName())) { + // ajout du projet dans la liste des projets connus + context.getConfig().getProjects().add(project.getName()); + } + // on enregistre la definition du projet + project.saveDefinition(); + } + project.load(); + I18nEditorContext.PROJECT_DEF.setContextValue(context, project); + } catch (IOException ex) { + log.error(ex.getMessage(), ex); + } + } + + @Override + protected void doCancel(ProjectUI ui) { + super.doCancel(ui); + + } + }.start(); + } + public void deleteProject(I18nEditorContext context) { JComboBox box = new JComboBox(); List<String> projects = new ArrayList<String>(context.getConfig().getProjects()); Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/ProjectUI.jaxx =================================================================== --- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/ProjectUI.jaxx 2009-07-30 23:04:45 UTC (rev 1649) +++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/ProjectUI.jaxx 2009-08-02 15:27:51 UTC (rev 1650) @@ -143,16 +143,12 @@ if (newStep == ProjectStep.SELECT_BUNDLES) { // recalcule des urls disponibles SELECT_BUNDLES.getBundlesModel().setUrls(model.detectBundles()); + if (!model.isCreate()) { + // on reselectionne les urls du projet + SELECT_BUNDLES.getBundlesModel().setSelectedUrls(model.getProject().getUrls()); + } return; - } - //if (newStep == ProjectStep.PERSIST) { - // positionnement de fichier de sauvegarde - //TODO depend du statut du model (create or update) - //if (model.getProject().isStoreProject()) { - // model.getProject().setStoreFile(new java.io.File(config.getProjectsDirectory(), model.getProject().getName() + ".i18nproject")); - //} - //return; - //} + } } @Override @@ -200,44 +196,12 @@ void $afterCompleteSetup() { - // on écoute les changements d'étapes - getModel().addPropertyChangeListener(ProjectUIModel.STEP_PROPERTY_NAME, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - ProjectUIModel model = (ProjectUIModel) evt.getSource(); - ProjectStep oldStep = (ProjectStep) evt.getOldValue(); - ProjectStep newStep = (ProjectStep) evt.getNewValue(); - log.debug("step has changed <old:"+oldStep+", new:"+newStep+">"); - int oldStepIndex = oldStep == null ? -1 : model.getStepIndex(oldStep); - int newStepIndex = model.getStepIndex(newStep); - if (oldStepIndex + 1 == newStepIndex) { - // creation d'un nouvel onglet - AbstractProjectTabPanelUI c = (AbstractProjectTabPanelUI) getObjectById(newStep.name()); - String title = (String) _(newStep.getLabel()); - String tip = (String) _(newStep.getDescription()); - tabs.addTab(title, null, c, tip); - // selection du nouvel onglet - int index = tabs.indexOfComponent(c); - if (index > -1) { - tabs.setSelectedIndex(index); - } - } else if (oldStepIndex > newStepIndex) { - // il s'agit d'un retour en arrière - // on supprime tous les onglets obsoletes - int index = newStepIndex + 1; - while (tabs.getTabCount() > index) { - log.trace("remove tab : " + index); - tabs.remove(index); - } - } else { - throw new IllegalStateException("can not go from " + oldStep + " to " + newStep); - } - } - }); - // installation du dispatcher de modifications du modele WizardUtil.installWizardUIListeners(this); + // ajout de la politique d'affichage des onglets + WizardUtil.addTabsDisplayUntilStepListener(this); + // tableau de la synchronisation des données des references obsoletes final JTable table = SELECT_BUNDLES.getBundles(); @@ -287,7 +251,7 @@ }); // chargement du modèle - getModel().init(this); + getModel().finalizeUIInit(this); } ]]> </script> @@ -296,8 +260,6 @@ <!-- les differents contenu d'onglets --> <ChooseProjectTypePanelUI id='CHOOSE_PROJECT_TYPE' constructorParams='this'/> <ConfigureProjectPanelUI id='CONFIGURE_PROJECT' constructorParams='this'/> - <!--ConfigureJarProjectPanelUI id='CONFIGURE_JAR_PROJECT' constructorParams='this'/> - <ConfigureDirectoryProjectPanelUI id='CONFIGURE_DIRECTORY_PROJECT' constructorParams='this'/--> <SelectBundlesPanelUI id='SELECT_BUNDLES' constructorParams='this'/> <PersistPanelUI id='PERSIST' constructorParams='this'/> <ResumePanelUI id='RESUME' constructorParams='this'/> Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/ProjectUIModel.java =================================================================== --- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/ProjectUIModel.java 2009-07-30 23:04:45 UTC (rev 1649) +++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/ProjectUIModel.java 2009-08-02 15:27:51 UTC (rev 1650) @@ -30,11 +30,11 @@ import java.util.List; import java.util.Map; import java.util.Set; -import jaxx.runtime.JAXXContext; import jaxx.runtime.swing.wizard.WizardModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.i18n.editor.I18nEditorConfig; +import org.nuiton.i18n.editor.I18nEditorContext; import org.nuiton.i18n.editor.project.I18nProject; import org.nuiton.i18n.editor.project.I18nProjectFactory; import org.nuiton.i18n.editor.project.I18nProjectProvider; @@ -51,13 +51,6 @@ static private Log log = LogFactory.getLog(ProjectUIModel.class); public static final String TYPE_PROPERTY_NAME = "type"; public static final String PROJECT_PROPERTY_NAME = "project"; -// public static final String PROJECT_NAME_PROPERTY_NAME = "projectName"; -// public static final String JAR_SOURCE_PROPERTY_NAME = "jarSource"; -// public static final String DIRECTORY_SOURCE_PROPERTY_NAME = "directorySource"; -// public static final String SELECTED_BUNDLES_PROPERTY_NAME = "selectedBundles"; -// public static final String UNIQUE_JAR_DEFINITION_PROPERTY_NAME = "uniqueJarDefinition"; -// public static final String STORE_FILE_PROPERTY_NAME = "storeFile"; -// public static final String STORE_PROJECT_PROPERTY_NAME = "storeProject"; public static final String VALID_PROPERTY_NAME = "valid"; /** le dictionnaire des differents projects possible indexes par leur provideur */ protected Map<I18nProjectProvider<?>, I18nProject> projects; @@ -99,28 +92,31 @@ } /** - * La méthode pour initialiser le modèle à partir du context applicatif. + * Methode pour finir l'initialisation de l'ui partir du modele. * - * @param context le context applicatif + * @param ui l'ui de l'assistant */ - public void init(JAXXContext context) { + public void finalizeUIInit(final ProjectUI ui) { - config = context.getContextValue(I18nEditorConfig.class); + config = ui.getContextValue(I18nEditorConfig.class); + I18nEditorContext ctxt = ui.getContextValue(I18nEditorContext.class); + //TODO instead of seeking an ui model, must seek fro an incoming project... - I18nProject incomingProject = context.getContextValue(I18nProject.class, "incoming"); + I18nProject incomingProject = ctxt.getProject(); - setCreate(incomingProject==null); - + setCreate(incomingProject == null); + if (incomingProject != null) { + log.info("from a incoming project " + incomingProject); if (log.isDebugEnabled()) { log.debug("from a incoming project " + incomingProject); } I18nProjectProvider<?> provider = I18nProjectFactory.getProvider(incomingProject.getClass()); setType(provider); incomingProject.copyDefinitionTo(project); - } + } } @Override @@ -128,11 +124,11 @@ super.start(); firePropertyChange(TYPE_PROPERTY_NAME, null, type); firePropertyChange(PROJECT_PROPERTY_NAME, null, project); -// if (type != null && project != null) { -// // ask to provider to fire every thing on the project ? -// //TODO no! the project fire will do it in each specicialized project's ui -// project.fireAllProperties(); -// } + if (!create && type != null && project != null) { + // ask to provider to fire every thing on the project ? + //TODO no! the project fire will do it in each specicialized project's ui + project.fireAllProperties(); + } } @Override Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/SelectBundlesTableModel.java =================================================================== --- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/SelectBundlesTableModel.java 2009-07-30 23:04:45 UTC (rev 1649) +++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/SelectBundlesTableModel.java 2009-08-02 15:27:51 UTC (rev 1650) @@ -63,13 +63,13 @@ public void setUrls(List<URL> entries) { // on nettoye toujours le model lors de l'init d'une entité this.entries = new java.util.ArrayList<URL>(entries); - selected.clear(); +// selected.clear(); // par defaut, on selectionne toutes les references setSelectAll(true); //fireTableDataChanged(); } - public List<URL> getUrls() { + public List<URL> getSelectedUrls() { List<URL> result = new ArrayList<URL>(); for (Integer index : selected) { result.add(entries.get(index)); @@ -77,6 +77,23 @@ return result; } + public void setSelectedUrls(List<URL> selectedUrls) { + setSelectAll(false); + + for (URL selectedUrl : selectedUrls) { + // trouver l'inder de l'url + String selectedUrlStr = selectedUrl.toString(); + int index = 0; + for (URL u : entries) { + if (selectedUrlStr.equals(u.toString())) { + selected.add(index); + break; + } + index++; + } + } + } + public int[] getSelected() { int[] result = new int[selected.size()]; int i = 0; @@ -168,12 +185,11 @@ public void setSelectAll(boolean selectAll) { this.selectAll = selectAll; + selected.clear(); if (selectAll) { for (int i = 0, max = getRowCount(); i < max; i++) { selected.add(i); } - } else { - selected.clear(); } fireTableDataChanged(); } Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/SelectBundlesPanelUI.jaxx =================================================================== --- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/SelectBundlesPanelUI.jaxx 2009-07-30 23:04:45 UTC (rev 1649) +++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/SelectBundlesPanelUI.jaxx 2009-08-02 15:27:51 UTC (rev 1650) @@ -31,7 +31,7 @@ void $afterCompleteSetup() { - if (getStep()!=null) { + if (getStep() != null) { setDescriptionText(_(getStep().getDescription())); } } @@ -39,7 +39,7 @@ </script> <SelectBundlesTableModel id='bundlesModel' - onTableChanged='model.getProject().setUrls(bundlesModel.getUrls())'/> + onTableChanged='model.getProject().setUrls(bundlesModel.getSelectedUrls())'/> <Table id='content' constraints='BorderLayout.CENTER' fill='both' weightx='1' weighty='1'> <row> Modified: trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor-en_GB.properties =================================================================== --- trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor-en_GB.properties 2009-07-30 23:04:45 UTC (rev 1649) +++ trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor-en_GB.properties 2009-08-02 15:27:51 UTC (rev 1650) @@ -21,6 +21,7 @@ i18neditor.action.createProject=Create project i18neditor.action.delete.key.tip= i18neditor.action.deleteProject=Delete project +i18neditor.action.editProject=Modify project i18neditor.action.exit=Exit i18neditor.action.exit.tip=Quit i18neditor.action.fullscreen=Full screen Modified: trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor-fr_FR.properties =================================================================== --- trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor-fr_FR.properties 2009-07-30 23:04:45 UTC (rev 1649) +++ trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor-fr_FR.properties 2009-08-02 15:27:51 UTC (rev 1650) @@ -21,6 +21,7 @@ i18neditor.action.createProject=Cr\u00E9er un projet i18neditor.action.delete.key.tip=Supprimer cette traduction i18neditor.action.deleteProject=Supprimer un projet +i18neditor.action.editProject=Modifier le projet i18neditor.action.exit=Quitter i18neditor.action.exit.tip=Quitter l'application i18neditor.action.fullscreen=Plein \u00E9cran Added: trunk/nuiton-i18n-editor/src/main/resources/icons/action-edit.png =================================================================== (Binary files differ) Property changes on: trunk/nuiton-i18n-editor/src/main/resources/icons/action-edit.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream
participants (1)
-
tchemit@users.labs.libre-entreprise.org