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