Author: tchemit Date: 2008-08-04 19:59:45 +0000 (Mon, 04 Aug 2008) New Revision: 981 Added: trunk/lutini18neditor/src/main/resources/log4j.properties Modified: trunk/lutini18neditor/pom.xml trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/ManagerI18n.java trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/model/PropertieNode.java trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/model/PropertiesTreeModel.java trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/ui/CreateBundleImpl.java trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/ui/I18nPrincipalImpl.java Log: passage en projet UTF8 reformat nettoyage des import utilisation de maven-i18n-plugin:0.4 qui ne traite que les fichiers modifi?\195?\169s Modified: trunk/lutini18neditor/pom.xml =================================================================== --- trunk/lutini18neditor/pom.xml 2008-08-04 19:36:43 UTC (rev 980) +++ trunk/lutini18neditor/pom.xml 2008-08-04 19:59:45 UTC (rev 981) @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> <project -xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <!--The version of maven's project object model--> <modelVersion>4.0.0</modelVersion> @@ -10,7 +10,7 @@ <parent> <groupId>lutinlib</groupId> <artifactId>lutinproject</artifactId> - <version>2.2</version> + <version>2.3</version> </parent> <!--A unique name for this project--> @@ -22,84 +22,71 @@ <packaging>jar</packaging> <!--Version--> - <version>0.2</version> + <version>0.3-SNAPSHOT</version> <!--Description--> <description>Editeur de fichier i18n</description> <inceptionYear>2008</inceptionYear> - <!--Tracking--> - <issueManagement> - <url>http://labs.libre-entreprise.org/tracker/?group_id=12</url> - </issueManagement> + <!--Tracking--> + <issueManagement> + <url>http://labs.libre-entreprise.org/tracker/?group_id=12</url> + </issueManagement> <distributionManagement> - <site> - <id>labs</id> - <url>scp://labs.libre-entreprise.org/home/groups/${pom.artifactId}/htdocs/</url> - </site> + <site> + <id>labs</id> + <url>scp://labs.libre-entreprise.org/home/groups/${pom.artifactId}/htdocs/</url> + </site> </distributionManagement> <build> <plugins> <plugin> - <groupId>lutinplugin</groupId> - <artifactId>maven-jaxx-plugin</artifactId> - <version>0.4</version> - <configuration> + <groupId>org.codelutin.jaxx</groupId> + <artifactId>maven-jaxx-plugin</artifactId> + <version>0.3</version> + <!--configuration> <src>${basedir}/src/main/uimodel</src> <out>${basedir}/target/gen/java</out> - </configuration> - <executions> - <execution> - <phase>generate-sources</phase> - <goals> - <goal>generate</goal> - </goals> - </execution> - </executions> - </plugin> - <plugin> - <artifactId>maven-compiler-plugin</artifactId> - <configuration> - <source>${maven.compile.source}</source> - <target>${maven.compile.target}</target> - <encoding>${maven.compile.encoding}</encoding> - </configuration> - </plugin> - <plugin> - <artifactId>maven-antrun-plugin</artifactId> + </configuration--> <executions> <execution> - <id>CopyGenJavaVersSrcBuild</id> <phase>process-sources</phase> - <configuration> - <tasks> - <copy todir="${basedir}/target/src-build/java" verbose="${maven.verbose}" overwrite="false"> - <fileset dir="${basedir}/target/gen/java"/> - <fileset dir="${basedir}/src/main/java"/> - </copy> - </tasks> - </configuration> <goals> - <goal>run</goal> + <goal>generate</goal> </goals> </execution> - </executions> + </executions> + <dependencies> + <dependency> + <groupId>org.codelutin.jaxx</groupId> + <artifactId>jaxx-swing</artifactId> + <scope>compile</scope> + <version>0.3</version> + </dependency> + </dependencies> </plugin> - <plugin> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>${maven.compile.source}</source> + <target>${maven.compile.target}</target> + <encoding>${maven.compile.encoding}</encoding> + </configuration> + </plugin> + <plugin> <groupId>lutinplugin</groupId> <artifactId>maven-i18n-plugin</artifactId> - <version>0.3</version> + <version>0.4</version> <configuration> <bundles> <param>fr_FR</param> <param>en_GB</param> </bundles> - <src>${basedir}/src/main/resources/i18n</src> - <defaultBasedir>${maven.src.dir}/java</defaultBasedir> + <src>${maven.src.dir}/main/resources/i18n</src> + <defaultBasedir>${maven.src.dir}/main/java</defaultBasedir> <keysModifier>false</keysModifier> <keepBackup>false</keepBackup> </configuration> @@ -111,11 +98,18 @@ <goal>parserJava</goal> <goal>gen</goal> </goals> + <configuration> + <entries> + <entry> + <basedir>${maven.gen.dir}/java</basedir> + </entry> + </entries> + </configuration> </execution> </executions> </plugin> - <!-- source--> + <!-- source--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> @@ -146,7 +140,6 @@ </build> - <!--Librairies--> <dependencies> @@ -159,42 +152,43 @@ <!--Librairies CodeLutin--> <dependency> - <groupId>lutinlib</groupId> + <groupId>org.codelutin</groupId> <artifactId>lutinutil</artifactId> - <version>0.29</version> + <version>0.30-SNAPSHOT</version> <scope>compile</scope> </dependency> <!--Jaxx--> <dependency> - <groupId>lutinlib</groupId> - <artifactId>jaxx</artifactId> - <version>1.0.5</version> + <groupId>org.codelutin.jaxx</groupId> + <artifactId>jaxx-swing</artifactId> <scope>compile</scope> + <version>0.3</version> </dependency> - - </dependencies> -<profiles> - <profile> - <id>project</id> + </dependencies> - <activation> - <activeByDefault>true</activeByDefault> - </activation> + <profiles> + <profile> + <id>project</id> - <properties> - <!--Test--> - <maven.test.skip>true</maven.test.skip> - - <!--Source base dir--> - <maven.src.dir>${basedir}/target/src-build</maven.src.dir> + <activation> + <activeByDefault>true</activeByDefault> + </activation> - <!--Compile with ?--> - <maven.compile.source>1.6</maven.compile.source> - <maven.compile.target>1.6</maven.compile.target> - <maven.compile.encoding>ISO-8859-15</maven.compile.encoding> - </properties> - </profile> -</profiles> + <properties> + <!--Test--> + <maven.test.skip>true</maven.test.skip> + + <!--Source base dir--> + <maven.gen.dir>${basedir}/target/generated-sources</maven.gen.dir> + + <!--Compile with ?--> + <maven.compile.source>1.6</maven.compile.source> + <maven.compile.target>1.6</maven.compile.target> + <maven.compile.encoding>UTF-8</maven.compile.encoding> + + </properties> + </profile> + </profiles> </project> Modified: trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/ManagerI18n.java =================================================================== --- trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/ManagerI18n.java 2008-08-04 19:36:43 UTC (rev 980) +++ trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/ManagerI18n.java 2008-08-04 19:59:45 UTC (rev 981) @@ -18,6 +18,9 @@ package org.codelutin.i18n.editor; +import org.codelutin.i18n.I18nFileReader; +import org.codelutin.util.Resource; + import java.io.FileWriter; import java.io.IOException; import java.net.URL; @@ -30,65 +33,44 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.codelutin.i18n.I18nFileReader; -import org.codelutin.util.Resource; - /** - * Permet la gestion des bundles, c'est � dire la cr�ation de nouveau bundle et + * Permet la gestion des bundles, c'est à dire la création de nouveau bundle et * la modification de bundle. - * - * Permet la r�cup�ration d'information sur les bundles, c'est � dire les paquetages + * <p/> + * Permet la récupération d'information sur les bundles, c'est à dire les paquetages * et les locales. - * + * * @author julien */ public class ManagerI18n { - /** - * Non de la racine de l'arbre - */ + /** Non de la racine de l'arbre */ public static final String ROOT_NAME = "i18n"; - - /** - * S�parateur des propri�t�s - */ + + /** Séparateur des propriétés */ public static final String SEPARATOR = "."; - - /** - * Nom du projet sur lequelle on travail - */ + + /** Nom du projet sur lequelle on travail */ protected static String PROJECT_NAME; - - /** - * R�pertoire d'enregistrement des modification ou des nouveaux bundles - */ - protected static String REP_NAME = "./"; // TODO: R�cup�ration automatique - - /** - * Pattern pour r�cup�rer le paquetage et le bundle sur un nom de fichier - */ + + /** Répertoire d'enregistrement des modification ou des nouveaux bundles */ + protected static String REP_NAME = "./"; // TODO: Récupération automatique + + /** Pattern pour récupérer le paquetage et le bundle sur un nom de fichier */ protected static Pattern PATTERN_FILE_NAME = Pattern.compile(".*/([^/]*)-(.*)\\.properties"); - /** - * Variable pour le stockage du singleton - */ + /** Variable pour le stockage du singleton */ protected static ManagerI18n manager; - - /** - * Ensemble des bundles - */ + + /** Ensemble des bundles */ protected Map<String, I18nFileReader> bundles; - - /** - * Ensemble des bundles modifi�s ou cr��s par l'utilisateur - */ + + /** Ensemble des bundles modifiés ou créés par l'utilisateur */ protected Map<String, I18nFileReader> userBundles; - /** - * Singleton - */ + /** Singleton */ public static ManagerI18n getInstance() { - if(manager == null) { + if (manager == null) { try { manager = new ManagerI18n(); } catch (IOException e) { @@ -97,15 +79,13 @@ } return manager; } - - /** - * Constucteur pour initialiser les bundles disponibles - */ + + /** Constucteur pour initialiser les bundles disponibles */ protected ManagerI18n() throws IOException { bundles = new HashMap<String, I18nFileReader>(); userBundles = new HashMap<String, I18nFileReader>(); - // R�cup�ration des fichiers + // Récupération des fichiers List<URL> files = Resource.getURLs(".*i18n/.+\\.properties"); for (URL file : files) { @@ -114,18 +94,19 @@ property.load(file.openStream(), "ISO-8859-1"); bundles.put(path, property); } - - // D�termination du nom du projet + + // Détermination du nom du projet List<URL> projects = Resource.getURLs(".*/i18n/.+\\.properties"); String project = projects.get(0).getPath(); Matcher matcher = PATTERN_FILE_NAME.matcher(project); matcher.matches(); - + PROJECT_NAME = matcher.group(1); } /** - * R�cup�ration des bundles + * Récupération des bundles + * * @return liste des bundles */ public List<String> getBundles() { @@ -141,7 +122,8 @@ } /** - * R�cup�ration des paquetages + * Récupération des paquetages + * * @return liste des paquetages */ public List<String> getPackages() { @@ -157,10 +139,11 @@ } /** - * R�cup�ration des valeurs pour les bundles pour une cl� + * Récupération des valeurs pour les bundles pour une clé + * * @param locales liste des bundles - * @param key cl� - * @return liste des valeurs pour les bundles pour une cl� + * @param key clé + * @return liste des valeurs pour les bundles pour une clé */ public List<String> getValues(List<String> locales, String key) { List<String> values = new ArrayList<String>(); @@ -172,7 +155,7 @@ for (String file : bundles.keySet()) { Matcher matcher = PATTERN_FILE_NAME.matcher(file); matcher.matches(); - if(locale.equals(matcher.group(2)) && value == null) { + if (locale.equals(matcher.group(2)) && value == null) { value = bundles.get(file).getProperty(key); } } @@ -184,9 +167,10 @@ } /** - * R�cup�ration des cl�s pour les paquetages + * Récupération des clés pour les paquetages + * * @param paquetages liste des paquetages - * @return liste des cl�s pour les paquetages + * @return liste des clés pour les paquetages */ public List<String> getKeys(List<String> paquetages) { Set<String> keys = new HashSet<String>(); @@ -194,7 +178,7 @@ for (String file : bundles.keySet()) { Matcher matcher = PATTERN_FILE_NAME.matcher(file); matcher.matches(); - if(paquetages.contains(matcher.group(1))) { + if (paquetages.contains(matcher.group(1))) { Set<Object> keySet = bundles.get(file).keySet(); for (Object object : keySet) { keys.add(object.toString()); @@ -204,20 +188,22 @@ return new ArrayList<String>(keys); } - + /** - * Cr�ation d'un nouveau bundle utilistateur + * Création d'un nouveau bundle utilistateur + * * @param bundleName nom du bundle (ex : fr_FR) */ public void createBundle(String bundleName) { getUserBundle(bundleName); } - + /** - * Enregistrement d'une modification de cl� dans le bundle utilisateur associ� + * Enregistrement d'une modification de clé dans le bundle utilisateur associé + * * @param bundleName nom du bundle - * @param key cl� - * @param value nouvelle valeur + * @param key clé + * @param value nouvelle valeur */ public void store(String bundleName, String key, String value) { I18nFileReader bundle = getUserBundle(bundleName); @@ -225,24 +211,23 @@ } /** - * R�cup�ration d'un bundle utilisateur, cr�� si il n'existe pas + * Récupération d'un bundle utilisateur, créé si il n'existe pas + * * @param bundleName nom du bundle * @return bundle */ public I18nFileReader getUserBundle(String bundleName) { String name = REP_NAME + PROJECT_NAME + "-" + bundleName + ".properties"; I18nFileReader bundle = bundles.get(name); - if(bundle == null) { + if (bundle == null) { bundle = new I18nFileReader(); userBundles.put(name, bundle); bundles.put(name, bundle); } return bundle; } - - /** - * Enregistrement des bundles utilisateur sur le disque - */ + + /** Enregistrement des bundles utilisateur sur le disque */ public void store() { for (String name : userBundles.keySet()) { I18nFileReader bundle = userBundles.get(name); Modified: trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/model/PropertieNode.java =================================================================== --- trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/model/PropertieNode.java 2008-08-04 19:36:43 UTC (rev 980) +++ trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/model/PropertieNode.java 2008-08-04 19:59:45 UTC (rev 981) @@ -18,27 +18,25 @@ package org.codelutin.i18n.editor.model; +import javax.swing.tree.DefaultMutableTreeNode; import java.io.Serializable; -import javax.swing.tree.DefaultMutableTreeNode; - /** - * Repr�sente un noeud de l'ardre des propri�t�s affich�es. Le noeud contient - * le chemin de la propri�t�s, par exemple tutu.toto.tata va �tre repr�sent� avec + * Représente un noeud de l'ardre des propriétés affichées. Le noeud contient + * le chemin de la propriétés, par exemple tutu.toto.tata va être représenté avec * 3 noeuds avec comme chemin tutu, tutu.toto, tutu.toto.tata - * + * * @author julien */ public class PropertieNode extends DefaultMutableTreeNode implements Comparable<PropertieNode> { - /** - * @see Serializable - */ + /** @see Serializable */ private static final long serialVersionUID = 1L; /** * Consturcteur avec l'objet contenu dans le noeud - * @param userObject chemin de la propri�t� + * + * @param userObject chemin de la propriété */ public PropertieNode(Object userObject) { super(userObject); @@ -49,7 +47,7 @@ * @see java.lang.Object#equals(java.lang.Object) */ public boolean equals(Object obj) { - if(obj instanceof PropertieNode) { + if (obj instanceof PropertieNode) { // Comparaison du chemin PropertieNode node = (PropertieNode) obj; return getUserObject().equals(node.getUserObject()); @@ -65,9 +63,9 @@ public String toString() { String userObject = getUserObject().toString(); int lastSeparator = userObject.lastIndexOf("."); - if(lastSeparator == -1) { + if (lastSeparator == -1) { // Si c'est la racine - return userObject; + return userObject; } else { // Si c'est un chemin return userObject.substring(lastSeparator + 1); Modified: trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/model/PropertiesTreeModel.java =================================================================== --- trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/model/PropertiesTreeModel.java 2008-08-04 19:36:43 UTC (rev 980) +++ trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/model/PropertiesTreeModel.java 2008-08-04 19:59:45 UTC (rev 981) @@ -18,6 +18,9 @@ package org.codelutin.i18n.editor.model; +import org.codelutin.i18n.editor.ManagerI18n; + +import javax.swing.tree.DefaultTreeModel; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; @@ -27,62 +30,55 @@ import java.util.Map; import java.util.Set; -import javax.swing.tree.DefaultTreeModel; - -import org.codelutin.i18n.editor.ManagerI18n; - /** - * Mod�le de l'arbre des propri�t�s. Le mod�le permet de sructurer les propri�t�s + * Modèle de l'arbre des propriétés. Le modèle permet de sructurer les propriétés * (ex: tutu.toto.tata) en un des noeuds de l'arbre. - * + * * @author julien */ public class PropertiesTreeModel extends DefaultTreeModel { - /** - * @see Serializable - */ + /** @see Serializable */ private static final long serialVersionUID = 1L; - /** - * Ensemble des noeuds de l'ardre avec ses enfants - */ + /** Ensemble des noeuds de l'ardre avec ses enfants */ protected Map<PropertieNode, List<PropertieNode>> nodes; - + /** - * Constructeur avec un liste de propr�t�s - * @param list liste de propri�t�s + * Constructeur avec un liste de proprétés + * + * @param list liste de propriétés */ public PropertiesTreeModel(List<String> list) { super(null); nodes = new HashMap<PropertieNode, List<PropertieNode>>(); - - // Cr�ation de la racine + + // Création de la racine PropertieNode root = new PropertieNode(ManagerI18n.ROOT_NAME); List<PropertieNode> childrenRoot = new ArrayList<PropertieNode>(); nodes.put(root, childrenRoot); setRoot(root); - - // Cr�ation des noeuds + + // Création des noeuds for (String property : list) { String path = ManagerI18n.ROOT_NAME; PropertieNode parent = root; - + String[] names = property.split("\\" + ManagerI18n.SEPARATOR); for (String name : names) { - // R�cup�ration des enfants pour le parent sous forme d'un - // ensemble pour �viter les doublons + // Récupération des enfants pour le parent sous forme d'un + // ensemble pour éviter les doublons List<PropertieNode> childrenParent = nodes.get(parent); Set<PropertieNode> setChildrenParent; - if(childrenParent == null) { + if (childrenParent == null) { setChildrenParent = new HashSet<PropertieNode>(); } else { setChildrenParent = new HashSet<PropertieNode>(childrenParent); } - // Cr�ation ou r�cup�ration du noeud enfant + // Création ou récupération du noeud enfant path += ManagerI18n.SEPARATOR + name; - + PropertieNode node = new PropertieNode(path); List<PropertieNode> children = nodes.get(node); nodes.put(node, children); @@ -94,28 +90,28 @@ // Trie des enfants Collections.sort(newChildrenParent); - + parent = node; } } } - + /* - * (non-Javadoc) - * @see javax.swing.tree.DefaultTreeModel#getChild(java.lang.Object, int) - */ + * (non-Javadoc) + * @see javax.swing.tree.DefaultTreeModel#getChild(java.lang.Object, int) + */ @Override public Object getChild(Object parent, int index) { - // Renvoi l'enfant � une position donn�e + // Renvoi l'enfant à une position donnée PropertieNode treeNode = (PropertieNode) parent; List<PropertieNode> children = nodes.get(treeNode); return children.get(index); } - + /* - * (non-Javadoc) - * @see javax.swing.tree.DefaultTreeModel#getChildCount(java.lang.Object) - */ + * (non-Javadoc) + * @see javax.swing.tree.DefaultTreeModel#getChildCount(java.lang.Object) + */ @Override public int getChildCount(Object parent) { // Nombre d'enfant pour un parent @@ -123,11 +119,11 @@ List<PropertieNode> children = nodes.get(treeNode); return children.size(); } - + /* - * (non-Javadoc) - * @see javax.swing.tree.DefaultTreeModel#isLeaf(java.lang.Object) - */ + * (non-Javadoc) + * @see javax.swing.tree.DefaultTreeModel#isLeaf(java.lang.Object) + */ @Override public boolean isLeaf(Object node) { // Le noeuds est un feuille si il n'a pas d'enfant @@ -135,5 +131,5 @@ List<PropertieNode> children = nodes.get(treeNode); return children == null || children.isEmpty(); } - + } Modified: trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/ui/CreateBundleImpl.java =================================================================== --- trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/ui/CreateBundleImpl.java 2008-08-04 19:36:43 UTC (rev 980) +++ trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/ui/CreateBundleImpl.java 2008-08-04 19:59:45 UTC (rev 981) @@ -18,45 +18,37 @@ package org.codelutin.i18n.editor.ui; +import org.codelutin.i18n.editor.ManagerI18n; + import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.Serializable; -import org.codelutin.i18n.editor.ManagerI18n; - /** - * Surcharge de l'interface jaax de cr�ation de nouveau bundle pour d�finir les - * actions associ�es aux bouttons. - * + * Surcharge de l'interface jaax de création de nouveau bundle pour définir les + * actions associées aux bouttons. + * * @author julien */ public class CreateBundleImpl extends CreateBundle { - /** - * @see Serializable - */ + /** @see Serializable */ private static final long serialVersionUID = 1L; - /** - * Manager des bundles - */ + /** Manager des bundles */ protected ManagerI18n manager; - - /** - * Nom du nouveau bundle cr�� - */ + + /** Nom du nouveau bundle créé */ protected String bundle; - - /** - * Consturcteur de l'interface - */ + + /** Consturcteur de l'interface */ public CreateBundleImpl() { super(); - // R�cup�ration du manager + // Récupération du manager manager = ManagerI18n.getInstance(); - - // Action d'annulation, juste fermeture de la fen�tre + + // Action d'annulation, juste fermeture de la fenêtre buttonCancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { bundle = null; @@ -64,20 +56,21 @@ } }); - // Action de cr�ation d'un nouveau bundle par le manager + // Action de création d'un nouveau bundle par le manager buttonCreate.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { bundle = textFieldLanguage.getText() + "_" + textFieldLocale.getText(); - // TODO: V�rification bundle n'existe pas d�j� + // TODO: Vérification bundle n'existe pas déjà manager.createBundle(bundle); - + dispose(); } }); } - + /** - * R�cup�ration du nouveau bundle + * Récupération du nouveau bundle + * * @return nom du nouveau bundle */ public String getBundle() { Modified: trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/ui/I18nPrincipalImpl.java =================================================================== --- trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/ui/I18nPrincipalImpl.java 2008-08-04 19:36:43 UTC (rev 980) +++ trunk/lutini18neditor/src/main/java/org/codelutin/i18n/editor/ui/I18nPrincipalImpl.java 2008-08-04 19:59:45 UTC (rev 981) @@ -18,6 +18,19 @@ package org.codelutin.i18n.editor.ui; +import org.codelutin.i18n.I18n; +import org.codelutin.i18n.editor.ManagerI18n; +import org.codelutin.i18n.editor.model.PropertieNode; +import org.codelutin.i18n.editor.model.PropertiesTreeModel; + +import javax.swing.BorderFactory; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; +import javax.swing.border.TitledBorder; +import javax.swing.tree.TreeModel; import java.awt.Dimension; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; @@ -31,84 +44,67 @@ import java.io.Serializable; import java.util.List; -import javax.swing.BorderFactory; -import javax.swing.JCheckBoxMenuItem; -import javax.swing.JFrame; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JTextArea; -import javax.swing.border.TitledBorder; -import javax.swing.tree.TreeModel; - -import org.codelutin.i18n.I18n; -import org.codelutin.i18n.editor.ManagerI18n; -import org.codelutin.i18n.editor.model.PropertieNode; -import org.codelutin.i18n.editor.model.PropertiesTreeModel; - /** - * Surcharge de l'interface jaax de la f�netre principal pour d�finir les actions - * associ�s et l'initialisation des composants graphiques. - * + * Surcharge de l'interface jaax de la fênetre principal pour définir les actions + * associés et l'initialisation des composants graphiques. + * * @author julien */ public class I18nPrincipalImpl extends I18nPrincipal { - /** - * @see Serializable - */ + /** @see Serializable */ private static final long serialVersionUID = 1L; - - /** - * Manager des bundles - */ - protected ManagerI18n manager; - - /** - * Liste des paquetages disponibles pour l'affichage de l'arbre de propri�t�s - */ - protected List<String> packagesI18n; - - /** - * Liste des bundles diponibles pour visualisation et modification des valeurs - */ - protected List<String> bundlesI18n; - - /** - * Constructeur de l'interface - */ + + /** Manager des bundles */ + protected ManagerI18n manager; + + /** Liste des paquetages disponibles pour l'affichage de l'arbre de propriétés */ + protected List<String> packagesI18n; + + /** Liste des bundles diponibles pour visualisation et modification des valeurs */ + protected List<String> bundlesI18n; + + /** Constructeur de l'interface */ public I18nPrincipalImpl() { super(); - + // Initialisation des variables manager = ManagerI18n.getInstance(); packagesI18n = manager.getPackages(); bundlesI18n = manager.getBundles(); - + // Initialisation de l'interface values.setLayout(new GridBagLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - // Cr�ation d'une checkbox dans le menu pour chaque bundle + // Création d'une checkbox dans le menu pour chaque bundle for (String name : packagesI18n) { createPackageChekBoxMenu(name); } - - // Cr�ation d'une checkbox dans le menu pour chaque locale + + // Création d'une checkbox dans le menu pour chaque locale for (String name : manager.getBundles()) { createBundleChekBoxMenu(name); } - - // A chaque acc�s � l'arbre, r�affichage des valeurs des bundles pour - // la cl� s�lectionn�e - tree.addMouseListener(new MouseListener(){ + + // A chaque accès à l'arbre, réaffichage des valeurs des bundles pour + // la clé sélectionnée + tree.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { reloadValues(); } - public void mouseEntered(MouseEvent e) { } - public void mouseExited(MouseEvent e) { } - public void mousePressed(MouseEvent e) { } - public void mouseReleased(MouseEvent e) { } + public void mouseEntered(MouseEvent e) { + } + + public void mouseExited(MouseEvent e) { + } + + public void mousePressed(MouseEvent e) { + } + + public void mouseReleased(MouseEvent e) { + } }); // Action de fermeture par le menu @@ -117,39 +113,40 @@ dispose(); } }); - - // Action de cr�ation d'un nouveau bundle + + // Action de création d'un nouveau bundle create.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - // Ouverture de la fen�tre de cr�ation + // Ouverture de la fenêtre de création CreateBundleImpl createBundle = new CreateBundleImpl(); createBundle.setVisible(true); - - // Ajout du nouveau bundle � l'�cran et dans le menu + + // Ajout du nouveau bundle à l'écran et dans le menu String bundle = createBundle.getBundle(); - if(bundle != null) { + if (bundle != null) { createBundleChekBoxMenu(bundle); bundlesI18n.add(bundle); reloadValues(); } } }); - + // Action d'enregistrement des modifications des valeurs des bundles store.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { manager.store(); } }); - - // Initialisation des donn�es + + // Initialisation des données reloadKeys(); pack(); } /** - * Cr�ation d'une checkbox dans le menu pour afficher ou non des bundles parmis + * Création d'une checkbox dans le menu pour afficher ou non des bundles parmis * les valeurs + * * @param name nom du bundle */ protected void createBundleChekBoxMenu(String name) { @@ -157,7 +154,7 @@ checkBoxMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String text = checkBoxMenuItem.getText(); - if(bundlesI18n.contains(text)) { + if (bundlesI18n.contains(text)) { bundlesI18n.remove(text); } else { bundlesI18n.add(text); @@ -169,8 +166,9 @@ } /** - * Cr�ation d'une checkbox dans le menu pour afficher ou non les paquetages - * dans l'arbre de propri�t� + * Création d'une checkbox dans le menu pour afficher ou non les paquetages + * dans l'arbre de propriété + * * @param name nom du paquetage */ protected void createPackageChekBoxMenu(String name) { @@ -178,7 +176,7 @@ checkBoxMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String text = checkBoxMenuItem.getText(); - if(packagesI18n.contains(text)) { + if (packagesI18n.contains(text)) { packagesI18n.remove(text); } else { packagesI18n.add(text); @@ -189,53 +187,50 @@ }); packages.add(checkBoxMenuItem); } - - /** - * Recharge les cl�s dans l'arbre des propri�t�s en fonction des paquetages - */ + + /** Recharge les clés dans l'arbre des propriétés en fonction des paquetages */ protected void reloadKeys() { TreeModel model = new PropertiesTreeModel(manager.getKeys(packagesI18n)); tree.setModel(model); } - - /** - * Recharge les valeurs en fonction des bundles. - */ + + /** Recharge les valeurs en fonction des bundles. */ protected void reloadValues() { values.removeAll(); PropertieNode node = (PropertieNode) tree.getSelectionValue(); - if(node != null) { + if (node != null) { String key = (String) node.getUserObject(); // Pas la racine car on i18n. - if(key.startsWith( + if (key.startsWith( ManagerI18n.ROOT_NAME + - ManagerI18n.SEPARATOR)) { + ManagerI18n.SEPARATOR)) { // Supprime le i18n. key = key.substring( ManagerI18n.ROOT_NAME.length() + - ManagerI18n.SEPARATOR.length()); + ManagerI18n.SEPARATOR.length()); } - + List<String> values = manager.getValues(bundlesI18n, key); int index = 0; for (String value : values) { addValue(bundlesI18n.get(index), key, value, index); - index ++; - } + index++; + } } - + scrollPane.validate(); scrollPane.repaint(); } - + /** - * Ajout du composant pour une valeur de cl� dans la fen�tre + * Ajout du composant pour une valeur de clé dans la fenêtre + * * @param bundle nom du bundle - * @param key cl� - * @param value valeur associ� � la cl� - * @param index num�ro d'ordonnacement dans la listes des valeurs + * @param key clé + * @param value valeur associé à la clé + * @param index numéro d'ordonnacement dans la listes des valeurs */ protected void addValue(final String bundle, final String key, final String value, int index) { // Construction du composant @@ -244,41 +239,42 @@ TitledBorder title = BorderFactory.createTitledBorder(bundle); panel.setBorder(title); - + JTextArea textArea = new JTextArea(value); // Zone de modification de la valeur textArea.setWrapStyleWord(true); textArea.setLineWrap(true); - + JScrollPane scrollPane = new JScrollPane(textArea); panel.add(scrollPane, new GBC(0, 0).setFill(GBC.BOTH).setWeight(1, 1).setInsets(10)); - + // A chaque modification, engistrement par le manager de la nouvelle // valeur textArea.addKeyListener(new KeyListener() { protected String lastValue = value; - + public void keyReleased(KeyEvent e) { JTextArea textArea = (JTextArea) e.getSource(); String newValue = textArea.getText(); - if(!newValue.equals(lastValue)) { + if (!newValue.equals(lastValue)) { manager.store(bundle, key, newValue); lastValue = newValue; } } - public void keyPressed(KeyEvent e) {} - public void keyTyped(KeyEvent e) { } + public void keyPressed(KeyEvent e) { + } + + public void keyTyped(KeyEvent e) { + } }); - - // Ajout du composant dans la fen�tre + + // Ajout du composant dans la fenêtre values.add(panel, new GBC(0, index).setFill(GBC.HORIZONTAL).setWeight(1, 1).setInsets(10)); } - /** - * Lancement de l'interface - */ + /** Lancement de l'interface */ public static void main(String[] args) throws FileNotFoundException, IOException { - I18n.init(); // Par d�faut pour tester + I18n.init(); // Par défaut pour tester new I18nPrincipalImpl().setVisible(true); } } Copied: trunk/lutini18neditor/src/main/resources/log4j.properties (from rev 978, trunk/lutinutil/src/test/resources/log4j.properties) =================================================================== --- trunk/lutini18neditor/src/main/resources/log4j.properties (rev 0) +++ trunk/lutini18neditor/src/main/resources/log4j.properties 2008-08-04 19:59:45 UTC (rev 981) @@ -0,0 +1,9 @@ +# Global logging configuration +log4j.rootLogger=ERROR, stdout +# Console output... +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n +#log4j.appender.stdout.layout.ConversionPattern=%%c=%c %%C=%C %%d=%d %%F=%F %%l=%l %%L=%L %%m=%m %%M=%M %%p=%p %%r=%r %%t=%t %%x=%x %%X=%X +# package level +log4j.logger.org.codelutin.i18n=INFO \ No newline at end of file