Isis-fish-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
October 2009
- 1 participants
- 67 discussions
r2701 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore
by chatellier@users.labs.libre-entreprise.org 27 Oct '09
by chatellier@users.labs.libre-entreprise.org 27 Oct '09
27 Oct '09
Author: chatellier
Date: 2009-10-27 11:03:36 +0000 (Tue, 27 Oct 2009)
New Revision: 2701
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/FormuleStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ScriptStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java
Log:
Misc doc, code format, generics...
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java 2009-10-27 11:02:32 UTC (rev 2700)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java 2009-10-27 11:03:36 UTC (rev 2701)
@@ -299,7 +299,7 @@
public Doc getClassDoc() {
Doc result = null;
try {
- Class klazz = getCodeClass();
+ Class<?> klazz = getCodeClass();
result = DocHelper.getClassDoc(klazz);
} catch (IsisFishException e) {
log.warn(_("isisfish.error.not.found.code", this));
@@ -317,7 +317,7 @@
public Doc getFieldDoc(String fieldName) {
Doc result = null;
try {
- Class klazz = getCodeClass();
+ Class<?> klazz = getCodeClass();
result = DocHelper.getFieldDoc(klazz, fieldName);
} catch (Exception e) {
log.warn(_("isisfish.error.not.found.field", fieldName, this));
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java 2009-10-27 11:02:32 UTC (rev 2700)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java 2009-10-27 11:03:36 UTC (rev 2701)
@@ -19,13 +19,15 @@
package fr.ifremer.isisfish.datastore;
-import fr.ifremer.isisfish.IsisFishRuntimeException;
-import fr.ifremer.isisfish.vcs.VCSException;
+import java.io.File;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.List;
import org.nuiton.util.FileUtil;
-import java.io.File;
-import java.io.IOException;
+import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.vcs.VCSException;
/**
* Classes abstraite permettant la gestion des fichiers de code source.
@@ -91,6 +93,19 @@
// Il n'y a rien a faire pour les code sources
}
+ /*
+ * @see fr.ifremer.isisfish.datastore.VersionStorage#getFiles(boolean)
+ */
+ @Override
+ protected List<File> getFiles(boolean withParent) {
+
+ // don't work in svn, commiting each parent
+ // just return current script
+ List<File> result = Collections.singletonList(getFile());
+
+ return result;
+ }
+
/**
* Check if script exists.
*
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java 2009-10-27 11:02:32 UTC (rev 2700)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java 2009-10-27 11:03:36 UTC (rev 2701)
@@ -151,7 +151,7 @@
public Doc getFieldDoc(String fieldName) {
Doc result=null;
try {
- Class klazz = getCodeClass();
+ Class<?> klazz = getCodeClass();
result = DocHelper.getFieldDoc(klazz,fieldName);
} catch (Exception e) {
log.warn(_("isisfish.error.not.found.field",fieldName,this));
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/FormuleStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/FormuleStorage.java 2009-10-27 11:02:32 UTC (rev 2700)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/FormuleStorage.java 2009-10-27 11:03:36 UTC (rev 2701)
@@ -200,7 +200,7 @@
}
/**
- * Retourne toutes les categories existantes dans les formules sauvegardées
+ * Retourne toutes les categories existantes dans les formules sauvegardées.
*
* @return la liste des categories existant en tant que modele
*/
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java 2009-10-27 11:02:32 UTC (rev 2700)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java 2009-10-27 11:03:36 UTC (rev 2701)
@@ -37,12 +37,13 @@
* Classes abstraite permettant la gestion des fichiers de code source.
*
* Exemple :
+ * {@link fr.ifremer.isisfish.datastore.AnalysePlanStorage}
+ * {@link fr.ifremer.isisfish.datastore.ExportStorage},
+ * {@link fr.ifremer.isisfish.datastore.RuleStorage},
* {@link fr.ifremer.isisfish.datastore.ScriptStorage},
- * {@link fr.ifremer.isisfish.datastore.RuleStorage},
- * {@link fr.ifremer.isisfish.datastore.ExportStorage}
- * {@link fr.ifremer.isisfish.datastore.SensitivityStorage}
- * {@link fr.ifremer.isisfish.datastore.AnalysePlanStorage}
- *
+ * {@link fr.ifremer.isisfish.datastore.SensitivityStorage},
+ * {@link fr.ifremer.isisfish.datastore.SimulatorStorage}
+ *
* @author poussin
*
* @version $Revision$
@@ -52,7 +53,7 @@
public abstract class JavaSourceStorage extends CodeSourceStorage {
protected static final String PARAM_PREFIX = "param_";
-
+
/**
* Build a new java source storage.
*
@@ -118,7 +119,7 @@
*
* @param force force javadoc build even if destination file is never
* @param out output print stream. if <tt>null</tt standart output will be used
- * @return
+ * @return 0 si la generation a reussi, une autre valeur sinon
*/
public int doJavadoc(boolean force, PrintWriter out) {
int result = JavadocHelper.generateJavadoc(this, IsisFish.config.getJavadocDirectory(), force, out);
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2009-10-27 11:02:32 UTC (rev 2700)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2009-10-27 11:03:36 UTC (rev 2701)
@@ -130,9 +130,12 @@
* @see fr.ifremer.isisfish.datastore.DataStorage#isVersionnableAbleFile(java.io.File)
*/
@Override
- protected boolean isVersionnableAbleFile(File file) {
- boolean result = super.isVersionnableAbleFile(file);
+ protected boolean isVersionnableFile(File file) {
+ boolean result = super.isVersionnableFile(file);
+
+ // do not commit file commentForNextCommitFile
if (result) {
+ // file can be named commentForNextCommit.txt/date
result = !file.getAbsolutePath().startsWith(commentForNextCommitFile.getAbsolutePath());
}
return result;
@@ -206,7 +209,7 @@
}
/**
- * Recupere le TopiaContext d'une region
+ * Recupere le TopiaContext d'une region.
*
* @param name le nom de la region a recuperer
* @return Le TopiaContext contenant la region, si la region n'existait null
@@ -227,8 +230,9 @@
}
/**
- * Recupere le TopiaContext d'une region
+ * Recupere le TopiaContext d'une region.
*
+ * @param directory root form where to load database (hack should be removed)
* @param name le nom de la region a recuperer
* @return Le TopiaContext contenant la region, si la region n'existait null
* est retourné
@@ -248,7 +252,7 @@
}
/**
- * Verifie si la region exists en local ou sur le serveur CVS
+ * Verifie si la region exists en local ou sur le serveur CVS.
*
* @param name le nom de la region
* @return vrai si la region existe deja
@@ -263,7 +267,7 @@
/**
* Permet de creer une nouvelle region. Si le nom est deja utilisé en local
* ou sur le serveur alors une exception est leve. Sinon le repertoire pour
- * accueillir la region est cree
+ * accueillir la region est cree.
*
* @param name Le nom de la nouvelle region
* @return La nouvelle region
@@ -297,7 +301,7 @@
return result;
}
- /* (non-Javadoc)
+ /*
* @see fr.ifremer.isisfish.datastore.DataStorage#delete(boolean)
*/
@Override
@@ -311,7 +315,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local
+ * Retourne la liste des noms de toutes les régions disponible en local.
*
* @return la liste des noms de toutes les régions disponible en local
*/
@@ -323,7 +327,7 @@
}
/**
- * Retourne la liste de toutes les régions disponible en local
+ * Retourne la liste de toutes les régions disponible en local.
*
* @return la liste de toutes les régions disponible en local
*/
@@ -338,7 +342,7 @@
/**
* Retourne la liste des noms de toutes les régions disponible en local qui
- * ne sont pas encore sur le serveur CVS
+ * ne sont pas encore sur le serveur VCS.
*
* @return liste de noms de regions
*/
@@ -350,10 +354,10 @@
/**
* Retourne la liste des noms de toutes les régions disponible sur le
- * serveur CVS
+ * serveur VCS.
*
* @return la liste des noms de toutes les régions disponible sur le serveur
- * CVS. Si le serveur n'est pas disponible la liste retournée est
+ * VCS. Si le serveur n'est pas disponible la liste retournée est
* vide.
*/
static public List<String> getRemoteRegionNames() {
@@ -366,7 +370,7 @@
/**
* Retourne la liste des noms de toutes les régions disponible sur le
- * serveur CVS qui ne sont pas encore en local
+ * serveur VCS qui ne sont pas encore en local.
*
* @return liste de noms de regions
*/
@@ -396,7 +400,7 @@
}
/**
- * import zipped region
+ * Import zipped region.
*
* @param file zipped region file
* @return region storage or null
@@ -410,7 +414,7 @@
}
/**
- * import zipped region
+ * Import zipped region.
*
* @param file zipped region file
* @param newName new name for the imported simulation
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java 2009-10-27 11:02:32 UTC (rev 2700)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java 2009-10-27 11:03:36 UTC (rev 2701)
@@ -232,7 +232,7 @@
/**
* Recupere les parametres et leur valeur pour les retourner sous forme
- * de chaine. Pour pouvoir par exemple les afficher a l'utilisateur
+ * de chaine. Pour pouvoir par exemple les afficher a l'utilisateur.
*
* @param rule the rule to inspect
* @return a string representation of parameters and their values for
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ScriptStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ScriptStorage.java 2009-10-27 11:02:32 UTC (rev 2700)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ScriptStorage.java 2009-10-27 11:03:36 UTC (rev 2701)
@@ -168,7 +168,7 @@
public Doc getClassDoc() {
Doc result=null;
try {
- Class klazz = getCodeClass();
+ Class<?> klazz = getCodeClass();
result = DocHelper.getClassDoc(klazz);
} catch (IsisFishException e) {
log.warn(_("isisfish.error.not.found.code",this));
@@ -186,7 +186,7 @@
public Doc getFieldDoc(String fieldName) {
Doc result=null;
try {
- Class klazz = getCodeClass();
+ Class<?> klazz = getCodeClass();
result = DocHelper.getFieldDoc(klazz,fieldName);
} catch (Exception e) {
log.warn(_("isisfish.error.not.found.field",fieldName,this));
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java 2009-10-27 11:02:32 UTC (rev 2700)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java 2009-10-27 11:03:36 UTC (rev 2701)
@@ -49,7 +49,6 @@
public static final String SIMULATOR_TEMPLATE = "templates/script/simulator.ftl";
/**
- *
* Constructeur
*
* @param rootSrc
1
0
r2700 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore
by chatellier@users.labs.libre-entreprise.org 27 Oct '09
by chatellier@users.labs.libre-entreprise.org 27 Oct '09
27 Oct '09
Author: chatellier
Date: 2009-10-27 11:02:32 +0000 (Tue, 27 Oct 2009)
New Revision: 2700
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
Log:
Override isVersionnableFile method. Since simulation preparation are never in VCS localDirectory super call always fail.
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2009-10-27 11:01:27 UTC (rev 2699)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2009-10-27 11:02:32 UTC (rev 2700)
@@ -848,6 +848,22 @@
return super.createZip(file);
}
+
+ @Override
+ protected boolean isVersionnableFile(File file) {
+
+ // Warning, don't call super() here
+
+ // Cette methode a été surchargé, car les fichiers ne sont pas dans
+ // le repos, mais seulement pour le cas du SimulationStorage
+ String filename = file.getName();
+ boolean result = !".svn".equals(filename) && !"CVS".equals(filename) && !filename.endsWith("~");
+
+ // don't set data
+ // FIXME don't set it here
+ result &= !new File(getFile(), "data").equals(file);
+
+ return result;
+ }
-
} // SimulationStorage
1
0
r2699 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore
by chatellier@users.labs.libre-entreprise.org 27 Oct '09
by chatellier@users.labs.libre-entreprise.org 27 Oct '09
27 Oct '09
Author: chatellier
Date: 2009-10-27 11:01:27 +0000 (Tue, 27 Oct 2009)
New Revision: 2699
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/IsisH2Config.java
Log:
Simplify h2 config.
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java 2009-10-27 11:01:04 UTC (rev 2698)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java 2009-10-27 11:01:27 UTC (rev 2699)
@@ -100,8 +100,7 @@
* de la base
*/
protected File getDataBackupFile() {
- File result;
- result = new File(getDirectory(), DATA_BACKUP_FILENAME);
+ File result = new File(getDirectory(), DATA_BACKUP_FILENAME);
return result;
}
@@ -115,24 +114,21 @@
protected void prepare() {
try {
File file = getDataBackupFile();
- if (file != null) {
- TopiaContext tx = getStorage().beginTransaction();
- tx.backup(file, true);
- tx.closeContext();
- }
+
+ TopiaContext tx = getStorage().beginTransaction();
+ tx.backup(file, true);
+ tx.closeContext();
} catch (TopiaException eee) {
throw new IsisFishRuntimeException(_("isisfish.error.prepare.data"), eee);
}
}
/*
- * (non-Javadoc)
- *
- * @see fr.ifremer.isisfish.datastore.VersionStorage#isVersionnableAbleFile(java.io.File)
+ * @see fr.ifremer.isisfish.datastore.VersionStorage#isVersionnableFile(java.io.File)
*/
@Override
- protected boolean isVersionnableAbleFile(File file) {
- boolean result = super.isVersionnableAbleFile(file);
+ protected boolean isVersionnableFile(File file) {
+ boolean result = super.isVersionnableFile(file);
if (result) {
result = !file.equals(getStorageDirectory());
}
@@ -210,7 +206,7 @@
try {
// creation des proprietes pour creer le TopiaContext
Properties config = new Properties();
- IsisH2Config.addDatabaseConfig(config, getDirectory(), false);
+ IsisH2Config.addDatabaseConfig(config, getDirectory());
IsisH2Config.addHibernateMapping(config);
// instanciation du TopiaContext
@@ -287,7 +283,7 @@
// load data
// creation des proprietes pour creer le TopiaContext
Properties config = new Properties();
- IsisH2Config.addDatabaseConfig(config, rootDirDest, false);
+ IsisH2Config.addDatabaseConfig(config, rootDirDest);
IsisH2Config.addHibernateMapping(config);
// instanciation du TopiaContext
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/IsisH2Config.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/IsisH2Config.java 2009-10-27 11:01:04 UTC (rev 2698)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/IsisH2Config.java 2009-10-27 11:01:27 UTC (rev 2699)
@@ -41,15 +41,9 @@
*/
public class IsisH2Config {
- /** Set in static field to be overriden by tests. Default to swing callback. */
+ /** Set in static field to be overridden by tests. Default to swing callback. */
protected static Class<?> databaseMigrationClass = SwingMigrationCallbackHandler.class;
- /*static {
- // http://www.h2database.com/javadoc/org/h2/constant/SysProperties.html#h2.lob…
- // Force lob storage in database instead of filesystem
- System.setProperty("h2.lobFilesInDirectories", "false");
- }*/
-
protected static final String COMMON_URL =
// on peut aussi utiliser mysql ou postgresql
"MODE=hsqldb;" +
@@ -86,15 +80,6 @@
"LOG=1;" +
COMMON_URL;
- /**
- * H2 recover URL.
- *
- * Include 'recover=1' parameter.
- */
- protected final static String H2_RECOVER_URL =
- H2_URL +
- ";recover=1";
-
protected static final String H2_MEM_URL =
"jdbc:h2:mem:%s;" +
"LOG=0;" +
@@ -142,10 +127,9 @@
*
* @param config l'objet properties dans lequel il faut ajouter les informations
* @param directory le repertoire dans lequel la base de données doit se trouver
- * @param tryRecover only used with H2 database engine, add recover parameter when db is detected as corrumpted
* @return l'objet config passe en parametre
*/
- public static Properties addDatabaseConfig(Properties config, File directory, boolean tryRecover) {
+ public static Properties addDatabaseConfig(Properties config, File directory) {
File databasePath = getStorageDataDirectory(directory);
databasePath.mkdirs();
@@ -153,13 +137,7 @@
addMemDatabaseConfig(config, "");
// pour h2 on remet STORAGE_DATA car il ne cree pas de repertoire
- String url;
- if (tryRecover) {
- url = String.format(H2_RECOVER_URL, getStorageDataDirectory(databasePath).getPath(), IsisFish.config.getDatabaseLockMode());
- }
- else {
- url = String.format(H2_URL, getStorageDataDirectory(databasePath).getPath(), IsisFish.config.getDatabaseLockMode());
- }
+ String url = String.format(H2_URL, getStorageDataDirectory(databasePath).getPath(), IsisFish.config.getDatabaseLockMode());
config.setProperty(Environment.URL, url);
// migration configuration, seulement pour les fichiers, pas pour les bases memoires
@@ -172,7 +150,6 @@
return config;
}
-
/**
* Permet d'ajouter les differents mapping hibernate spécifique à l'application.
*
1
0
r2698 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore
by chatellier@users.labs.libre-entreprise.org 27 Oct '09
by chatellier@users.labs.libre-entreprise.org 27 Oct '09
27 Oct '09
Author: chatellier
Date: 2009-10-27 11:01:04 +0000 (Tue, 27 Oct 2009)
New Revision: 2698
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java
Log:
VCS improvement. Rename isVersionableAble methode. Fix isVersionable method.
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2009-10-27 10:54:43 UTC (rev 2697)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2009-10-27 11:01:04 UTC (rev 2698)
@@ -50,10 +50,10 @@
/** Logger for this class */
private static final Log log = LogFactory.getLog(VersionStorage.class);
-
+
/** Listener set. Manage single reference and weak reference. */
protected static ListenerSet<StorageChangeListener> changeListeners = new ListenerSet<StorageChangeListener>();
-
+
protected File root = null;
protected File file = null;
@@ -62,7 +62,7 @@
* Par exemple si on a /home/poussin/isis-database comme root
* il faut que file soit un fichier ou un sous fichiers dans root
*
- * @param root le repertoire racine de mise en VCSNone (HOME VCSNone)
+ * @param root le repertoire racine de mise en VCS (HOME VCS)
* @param file le fichier a gérer.
*/
protected VersionStorage(File root, File file) {
@@ -70,32 +70,40 @@
this.file = file;
}
+ /**
+ * Get {@link VCS}.
+ *
+ * @return VCS
+ */
protected static VCS getVCS() {
return IsisFish.vcs;
}
/**
- * Permet de demander la preparation des fichiers pour etre envoyé
- * vers le VCS.
+ * Permet de demander la preparation des fichiers pour etre envoyé vers le VCS.
*/
protected abstract void prepare();
/**
- * @return Returns the root.
+ * Get VCS root directory.
+ *
+ * @return the root.
*/
public File getRoot() {
return this.root;
}
/**
- * @return Returns the file.
+ * Get file.
+ *
+ * @return the file.
*/
public File getFile() {
return this.file;
}
/**
- * Indique s'il a deja ete ajouté au cvs. Si file est un repertoire
+ * Indique s'il a deja ete ajouté au VCS. Si file est un repertoire
* (ex pour Region) alors vrai meme si tous les fichiers du repertoire
* ne sont pas sur le VCSNone
*
@@ -114,20 +122,24 @@
* @param file le fichier a tester
* @return {@code true} si le fichier est versionné
*/
- protected boolean isVersionnableAbleFile(File file) {
-
+ protected boolean isVersionnableFile(File file) {
+
// Dans le cas ou on essaye de savoir si file
// est versionnable dans le storage courant
// mais le VCS est toujours celui d'ISIs en static,
// si le storage est alleur que ce VCS
// cela ne fonctionne pas.
-
+
// FIXME il ne faurdrait pas que le VCS soit
// statique , mais contextuel au this.file
// du storage
+
+ boolean result = true;
- boolean result = true;
- if (getVCS().getLocalRepository().equals(this.file)) {
+ // Ca fait une erreur de fichier non versionne
+ // si on essaye de l'appeler sur le working directory
+ // dans ce cas, on retourne la valeur par defaut "true"
+ if (!getVCS().getLocalRepository().equals(this.file)) {
result = getVCS().isVersionnableFile(file);
}
return result;
@@ -137,7 +149,7 @@
* Donne la liste de tous les fichiers que le VCS doit gérer.
* Par defaut parcours tous les repertoires et ajouter tous les fichiers
* et repertoire trouvé. Il est possible d'exclure des fichiers et/ou
- * repertoire en surchargeant {@link #isVersionnableAbleFile(File)}
+ * repertoire en surchargeant {@link #isVersionnableFile(File)}
*
* @param current le fichier
* @param result la liste des fichiers à traiter
@@ -145,7 +157,7 @@
* update
*/
protected List<File> getFiles(File current, List<File> result) {
- if (isVersionnableAbleFile(current)) {
+ if (isVersionnableFile(current)) {
result.add(current);
if (current.exists() && current.isDirectory()) {
for (File child : current.listFiles()) {
@@ -157,7 +169,7 @@
}
/**
- * Donne la liste de tous les fichiers à gérer par le VCSNone.
+ * Donne la liste de tous les fichiers à gérer par le VCS.
* Ceci inclu la liste des répertoires pour aller de ce storage
* jusqu'a la racine VCSNone si withParent est vrai
*
@@ -172,6 +184,7 @@
while (withParent && current != null && !current.equals(getRoot())) {
current = current.getParentFile();
if (current != null) {
+ // insere les parents avant tous les autres
result.add(0, current);
}
}
@@ -189,7 +202,10 @@
*/
public void add(String msg) throws VCSException {
prepare();
+
+ // parent folder must be added too
List<File> files = getFiles(true);
+
// we can sure remove module directory and root directory
files.remove(IsisFish.config.getDatabaseDirectory());
@@ -208,14 +224,23 @@
*/
public void delete(boolean vcsDelete) throws StorageException {
if (vcsDelete) {
- List<File> files = getFiles(true);
+
+ // parent folder must not be deleted
+ List<File> files = getFiles(false);
+
+ if (log.isDebugEnabled()) {
+ log.debug("About to delete : " + files);
+ }
+
try {
getVCS().delete(files, _("isisfish.versionStorage.removed"));
} catch (VCSException eee) {
- throw new StorageException(_("isisfish.error.delete.vcs.files"), eee);
+ throw new StorageException(
+ _("isisfish.error.delete.vcs.files"), eee);
}
}
//TODO There is a bug to fix ? some files are not deleted!
+ // due to h2, storage need to be closed before deletion
if (getFile().isDirectory()) {
FileUtil.deleteRecursively(getFile());
} else {
@@ -224,15 +249,14 @@
}
/**
- * Permet d'envoyer des modifications faite en local sur le VCSNone
+ * Permet d'envoyer des modifications faite en local sur le VCS.
*
* @param msg le message indiquant le type des modifications
* @throws VCSException si pb pendant l'op
- *
*/
public void commit(String msg) throws VCSException {
// on appelle en fait add, car il y a peut-etre des nouveaux fichiers
- // a ajouter au VCSNone et ca doit etre fait automatiquement
+ // a ajouter au VCS et ca doit etre fait automatiquement
add(msg);
}
@@ -260,7 +284,8 @@
* @param module le repertoire qui peut etre scripts ou exports
* @throws VCSException si pb pendant l'opération
*/
- public static void checkout(File destDir, String module) throws VCSException {
+ public static void checkout(File destDir, String module)
+ throws VCSException {
// Si on utilise pas le bon tag on change de tag
Version tag = IsisConfig.getApiVersion();
if (!getVCS().isTag(tag)) {
@@ -282,8 +307,8 @@
List<String> result = new ArrayList<String>();
if (directory.exists()) {
- for(File f : directory.listFiles()) {
- if(getVCS().isVersionnableFile(f)) {
+ for (File f : directory.listFiles()) {
+ if (getVCS().isVersionnableFile(f)) {
result.add(f.getName());
}
}
@@ -333,7 +358,7 @@
}
}
}
-
+
/**
* Add listener to be notified on change to storage.
*
@@ -342,13 +367,14 @@
public static void addStorageChangeListener(StorageChangeListener listener) {
changeListeners.add(listener);
}
-
+
/**
* Remove listener for storage change notification.
*
* @param listener listener to remove
*/
- public static void removeStorageChangeListener(StorageChangeListener listener) {
+ public static void removeStorageChangeListener(
+ StorageChangeListener listener) {
changeListeners.remove(listener);
}
}
1
0
r2697 - in isis-fish/trunk/src/main/java/fr/ifremer/isisfish: actions simulator simulator/launcher
by chatellier@users.labs.libre-entreprise.org 27 Oct '09
by chatellier@users.labs.libre-entreprise.org 27 Oct '09
27 Oct '09
Author: chatellier
Date: 2009-10-27 10:54:43 +0000 (Tue, 27 Oct 2009)
New Revision: 2697
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationControl.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java
Log:
With new launcher architecture, control file should be alwaus saved
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java 2009-10-27 10:39:30 UTC (rev 2696)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java 2009-10-27 10:54:43 UTC (rev 2697)
@@ -126,32 +126,28 @@
@Step(IsisConfig.STEP_AFTER_INIT_VCS)
public static void simulateWithSimulationAndScript(String simulationId, File simulationZip, File simulationPrescript)
throws Exception {
-
+
if (log.isInfoEnabled()) {
log.info("Command line action : simulateWithSimulation (" + simulationId + ", " + simulationZip.getAbsolutePath() + ", " + simulationPrescript + ")");
}
String name = simulationId; // ne pas mettre la date, car le sub process la met deja + " " + new SimpleDateFormat("yyyy-MM-dd-HH-mm").format(new Date());
-
- SimulationControl control = new SimulationControl(name);
- // pour forcer le fichier de control a être sauver
- // pour ensuite être lu par le processus parent
- control.setAutoSaveState(true);
-
// lancement de la simulation
SimulatorLauncher launcher = new InProcessSimulatorLauncher();
-
+
//SimulationStorage simulation = launcher.simulate(null, control, simulationZip);
//simulation.getStorage().closeContext();
String simulationPrescriptContent = null;
if (simulationPrescript != null && simulationPrescript.canRead()) {
simulationPrescriptContent = FileUtil.readAsString(simulationPrescript);
}
+
+ SimulationControl control = new SimulationControl(name);
launcher.simulate(null, control, simulationZip, simulationPrescriptContent);
SimulationStorage simulation = launcher.getSimulationStorage(SimulationService.getService(), control);
simulation.getStorage().closeContext();
-
+
// FIXME integrer ca dans le process normal d'init
IsisFish.quit();
}
@@ -212,12 +208,6 @@
String name = simulationId; // ne pas mettre la date, car le sub process la met deja + " " + new SimpleDateFormat("yyyy-MM-dd-HH-mm").format(new Date());
- SimulationControl control = new SimulationControl(name);
-
- // pour forcer le fichier de control a être sauver
- // pour ensuite être lu par le processus parent
- control.setAutoSaveState(true);
-
// lancement de la simulation
SimulatorLauncher launcher = new InProcessSimulatorLauncher();
@@ -227,27 +217,19 @@
if (simulationPrescript != null && simulationPrescript.canRead()) {
simulationPrescriptContent = FileUtil.readAsString(simulationPrescript);
}
+
+ SimulationControl control = new SimulationControl(name);
launcher.simulate(null, control, simulationZip, simulationPrescriptContent);
SimulationStorage simulationStorage = launcher.getSimulationStorage(SimulationService.getService(), control);
-
- // zip + md5 creation
- //simulationStorage.createZip(simulationResultZip, true);
- // close all resources
- //simulationStorage.getStorage().closeContext();
- // FIXME more performant than simulationStorage.createZip
- //ZipUtil.compressFiles(simulationResultZip, simulationStorage.getFile(),
- // Collections.singletonList(new File(simulationStorage.getFile(), simulationStorage.getName())), true);
-
+ // make result archive after simulation
if (log.isInfoEnabled()) {
log.info("Compressing simulation as zip : " + simulationResultArchive);
if (log.isDebugEnabled()) {
log.debug("Timing : before zipping results : " + new java.util.Date());
}
}
-
ZipUtil.compress(simulationResultArchive, simulationStorage.getFile(), null, true);
-
if (log.isDebugEnabled()) {
log.debug("Timing : after zipping results : " + new java.util.Date());
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationControl.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationControl.java 2009-10-27 10:39:30 UTC (rev 2696)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationControl.java 2009-10-27 10:54:43 UTC (rev 2697)
@@ -51,8 +51,6 @@
protected PropertyChangeSupport listeners = new PropertyChangeSupport(this);
protected boolean inUpdateFromHashtable = false;
protected transient SimulationStorage simulation = null;
- /** si vrai des qu'une propriete change, sauvegarde sont etat */
- protected transient boolean autoSaveState = false;
protected String id = null;
protected boolean started = false;
@@ -85,19 +83,6 @@
progressMax = 0;
progress = 0;
}
-
- /**
- *
- * @deprecated todo remove, should be always auto saved
- * @param autoSaveState
- */
- public void setAutoSaveState(boolean autoSaveState) {
- this.autoSaveState = autoSaveState;
- }
-
- public boolean isAutoSaveState() {
- return autoSaveState;
- }
/**
* Retourne la simulation associe a ce control
@@ -110,8 +95,6 @@
return simulation;
}
-
-
public void addPropertyChangeListener(String propName, PropertyChangeListener l) {
listeners.addPropertyChangeListener(propName, l);
}
@@ -409,7 +392,7 @@
} else {
Object value = e.getNewValue();
update.put(property, value);
- if (isAutoSaveState() && getSimulation() != null) {
+ if (getSimulation() != null) {
getSimulation().saveControl(this);
}
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2009-10-27 10:39:30 UTC (rev 2696)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2009-10-27 10:54:43 UTC (rev 2697)
@@ -121,10 +121,6 @@
control.setDate(new Date());
control.setProgress(0);
control.setStarted(true);
-
- // FIXME temp auto save
- // force saving of control file
- control.setAutoSaveState(true);
// replace prescript if specified on method
if (simulationPrescript != null
1
0
Author: chatellier
Date: 2009-10-27 10:39:30 +0000 (Tue, 27 Oct 2009)
New Revision: 2696
Modified:
isis-fish/trunk/pom.xml
Log:
Update versions, fix scope.
Modified: isis-fish/trunk/pom.xml
===================================================================
--- isis-fish/trunk/pom.xml 2009-10-27 10:38:37 UTC (rev 2695)
+++ isis-fish/trunk/pom.xml 2009-10-27 10:39:30 UTC (rev 2696)
@@ -79,7 +79,7 @@
<dependency>
<groupId>commons-jxpath</groupId>
<artifactId>commons-jxpath</artifactId>
- <version>1.2</version>
+ <version>1.3</version>
<scope>compile</scope>
</dependency>
@@ -100,7 +100,7 @@
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
- <version>1.8.0</version>
+ <version>1.8.1</version>
<scope>compile</scope>
</dependency>
@@ -224,7 +224,7 @@
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
- <version>1.1.119</version>
+ <version>1.2.121</version>
<scope>compile</scope>
</dependency>
@@ -338,6 +338,7 @@
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
+ <scope>test</scope>
</dependency>
</dependencies>
@@ -657,7 +658,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
- <version>2.5</version>
+ <version>2.6.1</version>
<configuration>
<links>
<link>http://java.sun.com/javase/6/docs/api/</link>
1
0
r2695 - in isis-fish/trunk: . src/main/java/fr/ifremer/isisfish src/main/java/fr/ifremer/isisfish/ui src/main/java/fr/ifremer/isisfish/vcs src/main/resources/i18n src/test/java/fr/ifremer/isisfish
by chatellier@users.labs.libre-entreprise.org 27 Oct '09
by chatellier@users.labs.libre-entreprise.org 27 Oct '09
27 Oct '09
Author: chatellier
Date: 2009-10-27 10:38:37 +0000 (Tue, 27 Oct 2009)
New Revision: 2695
Modified:
isis-fish/trunk/changelog.txt
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/vcs/VCS.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/vcs/VCSFactory.java
isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties
isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties
isis-fish/trunk/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java
Log:
Add configurable entries in UI.
Remove duplicated ssh key configuration.
Modified: isis-fish/trunk/changelog.txt
===================================================================
--- isis-fish/trunk/changelog.txt 2009-10-26 18:17:09 UTC (rev 2694)
+++ isis-fish/trunk/changelog.txt 2009-10-27 10:38:37 UTC (rev 2695)
@@ -1,6 +1,7 @@
isis-fish (3.3.0.0) stable; urgency=low
- * Global VCS improvement (code, script UI, inptu UI)
+ * Remove duplicated SSH key configuration, common configuration for VCS and caparmor
+ * Global VCS improvement (code, script UI, input UI)
* Update to svnkit 1.3.1
* Unification of error frames
* Move codelutin librairies to nuiton.org
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-10-26 18:17:09 UTC (rev 2694)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-10-27 10:38:37 UTC (rev 2695)
@@ -813,7 +813,9 @@
"smtpServer", Option.SMTP_SERVER.key,
"userMail", Option.USER_MAIL.key,
"userName", Option.USER_NAME.key,
- "vcs.keyFile", Option.VCS_SSH_KEY_FILE.key,
+ "vcs.keyFile", Option.SSH_KEY_FILE.key,
+ "vcs.keyFile", Option.SSH_KEY_FILE.key,
+ "vcs.ssh.keyFile", Option.SSH_KEY_FILE.key,
"vcs.localDatabasePath", Option.DATABASE_DIRECTORY.key,
// on supprime car non compatible, les valeurs par defaut sont tres bien
"localSimulator", null,
@@ -929,16 +931,16 @@
DATABASE_LOCK_MODE("database.lockmode", _("isisfish.config.database.lockmode.description"), "file"),
- // TODO remove duplicated ssh key configuration
+ // SSH (global, for both VCS and caparmor)
SSH_KEY_FILE("ssh.key.file", _("isisfish.config.ssh.key.file.description"), getUserHome() + File.separator + ".ssh" + File.separator + "isis_rsa"),
- SSH_PASSPHRASE_ENABLED("ssh.passphrase.enabled", _("isisfish.config.vcs.noPassPhrase.description"), "false"),
- SSH_PASSPHRASE("ssh.passphrase", _("isisfish.config.vcs.passphrase.description"), ""),
+ //SSH_PASSPHRASE_ENABLED("ssh.passphrase.enabled", _("isisfish.config.vcs.noPassPhrase.description"), "false"),
+ //SSH_PASSPHRASE("ssh.passphrase", _("isisfish.config.vcs.passphrase.description"), ""),
// can be None, CVS or SVN. only None or SVN work
VCS_TYPE(VCS.VCS_TYPE, _("isisfish.config.vcs.type.description"), VCS.TYPE_SVN),
// depend of VCS_TYPE, for SVN can be svn, svn+ssh, http or file
- VCS_PROTOCOLE(VCS.VCS_PROTOCOL, _("isisfish.config.vcs.useSshConnexion.description"), "svn"),
- VCS_SSH_KEY_FILE(VCS.VCS_SSH_KEY_FILE, _("isisfish.config.vcs.keyFile.description"), getUserHome() + File.separator + ".ssh" + File.separator + "isis_rsa"),
+ VCS_PROTOCOL(VCS.VCS_PROTOCOL, _("isisfish.config.vcs.useSshConnexion.description"), "svn"),
+ //VCS_SSH_KEY_FILE(VCS.VCS_SSH_KEY_FILE, _("isisfish.config.vcs.keyFile.description"), getUserHome() + File.separator + ".ssh" + File.separator + "isis_rsa"),
// user login to access vcs
VCS_USER_NAME(VCS.VCS_USER_NAME, _("isisfish.config.vcs.userName.description"), ""),
VCS_USER_PASSWORD(VCS.VCS_USER_PASSWORD, _("isisfish.config.vcs.userPassword.description"), ""),
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.jaxx 2009-10-26 18:17:09 UTC (rev 2694)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.jaxx 2009-10-27 10:38:37 UTC (rev 2695)
@@ -105,9 +105,37 @@
_("isisfish.config.category.main"),
_("isisfish.config.category.main.description"),
IsisConfig.Option.CONFIG_FILE,
- IsisConfig.Option.LOCALE
+ IsisConfig.Option.DATABASE_DIRECTORY,
+ IsisConfig.Option.COMPILATION_DIRECTORY,
+ IsisConfig.Option.JAVADOC_DIRECTORY,
+ IsisConfig.Option.BACKUP_DIRECTORY,
+ IsisConfig.Option.DEFAULT_EXPORT_DIRECTORY,
+ IsisConfig.Option.LOCALE,
+ IsisConfig.Option.SIMULATION_SHOW_ONLY_ERROR
);
+ // categorie versionning
+ model.addCategory(
+ _("isisfish.config.category.versioning"),
+ _("isisfish.config.category.versioning.description"),
+ IsisConfig.Option.VCS_TYPE,
+ IsisConfig.Option.VCS_PROTOCOL,
+ IsisConfig.Option.VCS_USER_NAME,
+ IsisConfig.Option.VCS_USER_PASSWORD,
+ IsisConfig.Option.VCS_HOST_NAME,
+ IsisConfig.Option.VCS_PATH
+ );
+
+ // categorie misc
+ model.addCategory(
+ _("isisfish.config.category.misc"),
+ _("isisfish.config.category.misc.description"),
+ IsisConfig.Option.SSH_KEY_FILE,
+ IsisConfig.Option.USER_NAME,
+ IsisConfig.Option.SMTP_SERVER,
+ IsisConfig.Option.USER_MAIL
+ );
+
ConfigUI configUI = ConfigUIBuilder.newConfigUI(new DefaultJAXXContext(this), model, _("isisfish.config.category.main"));
ConfigUIBuilder.showConfigUI(configUI, this, false);
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/vcs/VCS.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/vcs/VCS.java 2009-10-26 18:17:09 UTC (rev 2694)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/vcs/VCS.java 2009-10-27 10:38:37 UTC (rev 2695)
@@ -63,12 +63,12 @@
* can be http, ssh, pserver, ...
*/
public static final String VCS_PROTOCOL = "vcs.protocol";
-
- /**
+
+ /*
* ssh key file
- */
- public static final String VCS_SSH_KEY_FILE = "vcs.ssh.keyFile";
-
+ *
+ public static final String VCS_SSH_KEY_FILE = "vcs.ssh.keyFile";*/
+
/**
* remote server adresse (ip or serveur name) ex: labs.libre-entreprise.org
*/
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/vcs/VCSFactory.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/vcs/VCSFactory.java 2009-10-26 18:17:09 UTC (rev 2694)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/vcs/VCSFactory.java 2009-10-27 10:38:37 UTC (rev 2695)
@@ -68,7 +68,7 @@
String protocol = config.getOption(VCS.VCS_PROTOCOL);
String host = config.getOption(VCS.VCS_HOST_NAME);
String path = config.getOption(VCS.VCS_PATH);
- File sshKeyFile = config.getOptionAsFile(VCS.VCS_SSH_KEY_FILE);
+ File sshKeyFile = config.getSSHPrivateKeyFilePath();
String login = config.getOption(VCS.VCS_USER_NAME);
String password = config.getOption(VCS.VCS_USER_PASSWORD);
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-10-26 18:17:09 UTC (rev 2694)
+++ isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-10-27 10:38:37 UTC (rev 2695)
@@ -142,6 +142,10 @@
isisfish.common.zone=Zone
isisfish.config.category.main=Main
isisfish.config.category.main.description=Main configuration
+isisfish.config.category.misc=Misc
+isisfish.config.category.misc.description=Miscealenous
+isisfish.config.category.versioning=VCS
+isisfish.config.category.versioning.description=Versioning system
isisfish.config.database.lockmode.description=
isisfish.config.main.compileDirectory.description=
isisfish.config.main.configFileName.description=
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-10-26 18:17:09 UTC (rev 2694)
+++ isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-10-27 10:38:37 UTC (rev 2695)
@@ -142,6 +142,10 @@
isisfish.common.zone=Zone
isisfish.config.category.main=Globale
isisfish.config.category.main.description=Configuration globale
+isisfish.config.category.misc=Divers
+isisfish.config.category.misc.description=Divers
+isisfish.config.category.versioning=VCS
+isisfish.config.category.versioning.description=Gestionnaire de version
isisfish.config.database.lockmode.description=
isisfish.config.main.compileDirectory.description=le r\u00E9pertoire o\u00F9 sont compil\u00E9s les scripts
isisfish.config.main.configFileName.description=le fichier de configuration \u00E0 utiliser
Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java
===================================================================
--- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java 2009-10-26 18:17:09 UTC (rev 2694)
+++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java 2009-10-27 10:38:37 UTC (rev 2695)
@@ -84,7 +84,7 @@
System.setProperty(IsisConfig.Option.LAUNCH_UI.key, "false");
System.setProperty(IsisConfig.Option.DATABASE_DIRECTORY.key, dirDatabase.getAbsolutePath());
System.setProperty(IsisConfig.Option.SSH_KEY_FILE.key, dirDatabase.getAbsolutePath() + File.separator + "ssh" + File.separator + "isis_test_dsa");
- System.setProperty(IsisConfig.Option.VCS_SSH_KEY_FILE.key, dirDatabase.getAbsolutePath() + File.separator + "ssh" + File.separator + "isis_test_rsa");
+ //System.setProperty(IsisConfig.Option.VCS_SSH_KEY_FILE.key, dirDatabase.getAbsolutePath() + File.separator + "ssh" + File.separator + "isis_test_rsa");
IsisFish.init();
IsisFish.initVCS();
1
0
26 Oct '09
Author: chatellier
Date: 2009-10-26 18:17:09 +0000 (Mon, 26 Oct 2009)
New Revision: 2694
Modified:
isis-fish/trunk/src/main/resources/log4j.properties
Log:
Move log4j category to nuiton too.
Modified: isis-fish/trunk/src/main/resources/log4j.properties
===================================================================
--- isis-fish/trunk/src/main/resources/log4j.properties 2009-10-26 15:19:57 UTC (rev 2693)
+++ isis-fish/trunk/src/main/resources/log4j.properties 2009-10-26 18:17:09 UTC (rev 2694)
@@ -7,7 +7,7 @@
# package level
log4j.logger.fr.ifremer.isisfish=INFO
-log4j.logger.org.codelutin=INFO
+log4j.logger.org.nuiton=INFO
log4j.logger.analyseplans=INFO
log4j.logger.exports=INFO
log4j.logger.formules=INFO
1
0
r2693 - in isis-fish/trunk: . src/main/java/fr/ifremer/isisfish/ui/script src/main/java/fr/ifremer/isisfish/ui/script/model src/main/java/fr/ifremer/isisfish/util src/main/resources/i18n
by chatellier@users.labs.libre-entreprise.org 26 Oct '09
by chatellier@users.labs.libre-entreprise.org 26 Oct '09
26 Oct '09
Author: chatellier
Date: 2009-10-26 15:19:57 +0000 (Mon, 26 Oct 2009)
New Revision: 2693
Added:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptTypesComboModel.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeCellRenderer.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeModel.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/package-info.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/package-info.java
Removed:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompilationResult.java
Modified:
isis-fish/trunk/changelog.txt
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:
Script UI refactoring (tree model, combo model, commit, delete, actions...)
Modified: isis-fish/trunk/changelog.txt
===================================================================
--- isis-fish/trunk/changelog.txt 2009-10-26 15:02:52 UTC (rev 2692)
+++ isis-fish/trunk/changelog.txt 2009-10-26 15:19:57 UTC (rev 2693)
@@ -1,13 +1,18 @@
isis-fish (3.3.0.0) stable; urgency=low
- * Fix a depth commit problem on script UI
- * Readd diff on script UI
+ * Global VCS improvement (code, script UI, inptu UI)
* Update to svnkit 1.3.1
* Unification of error frames
- * Move codelutin libs to nuiton.org
+ * Move codelutin librairies to nuiton.org
-- mar. oct. 13 09:48:15 CEST 2009
+isis-fish (3.2.0.9) stable; urgency=high
+
+ * Add file redirection in caparmor simulation launch scripts
+
+-- mer. oct. 21 14:27:05 CEST 2009
+
isis-fish (3.2.0.8) stable; urgency=high
* Fix compilation directory per simulation problem (aspect were defined
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-10-26 15:02:52 UTC (rev 2692)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java 2009-10-26 15:19:57 UTC (rev 2693)
@@ -21,6 +21,7 @@
import static org.nuiton.i18n.I18n._;
+import java.awt.Color;
import java.awt.Desktop;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -39,6 +40,11 @@
import java.util.Map;
import javax.swing.JOptionPane;
+import javax.swing.SwingUtilities;
+import javax.swing.event.CaretEvent;
+import javax.swing.event.CaretListener;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
@@ -61,10 +67,11 @@
import fr.ifremer.isisfish.datastore.SensitivityStorage;
import fr.ifremer.isisfish.datastore.SimulatorStorage;
import fr.ifremer.isisfish.equation.Language;
+import fr.ifremer.isisfish.ui.WelcomePanelUI;
+import fr.ifremer.isisfish.ui.script.model.ScriptTreeModel;
import fr.ifremer.isisfish.ui.util.ErrorHelper;
-import fr.ifremer.isisfish.ui.widget.editor.GenericCell;
+import fr.ifremer.isisfish.ui.vcs.UpdateDialogUI;
import fr.ifremer.isisfish.util.ClasspathTemplateLoader;
-import fr.ifremer.isisfish.util.CompilationResult;
import fr.ifremer.isisfish.util.JavadocHelper;
import fr.ifremer.isisfish.vcs.VCSException;
import freemarker.cache.TemplateLoader;
@@ -94,137 +101,162 @@
* Last update: $Date: 2008-10-07 18:46:13 +0200 (mar 07 oct 2008) $
* by : $Author: tchemit $
*/
-public class ScriptAction {
+public class ScriptAction implements TreeSelectionListener, CaretListener {
/** to use log facility, just put in your code: log.info(\"...\"); */
private static Log log = LogFactory.getLog(ScriptAction.class);
- protected CodeSourceStorage code;
+ /** Couleur de succes (vert leger). */
+ protected static final Color COLOR_SUCCESS = new Color(210, 255, 210);
- protected File fileOpen = null;
+ /** Couleur d'echec (rouge leger). */
+ protected static final Color COLOR_FAILURE = new Color(255, 210, 210);
+ /** Storage for currently edited file. */
+ protected CodeSourceStorage codeStorage;
+
+ /** Freemarke configuration used to create new script (based on templates). */
protected Configuration freemarkerConfiguration;
+ /** UI managed by this action class. */
+ protected ScriptUI scriptUI;
+
/**
* Constructeur.
*
* Init freemarker.
+ *
+ * @param scriptUI managed script UI
*/
- public ScriptAction() {
+ public ScriptAction(ScriptUI scriptUI) {
+ this.scriptUI = scriptUI;
+
freemarkerConfiguration = new Configuration();
-
// needed to overwrite "Defaults to default system encoding."
// fix encoding issue on some systems
freemarkerConfiguration.setDefaultEncoding("utf-8");
-
// specific template loader to get template from jars (classpath)
TemplateLoader templateLoader = new ClasspathTemplateLoader();
freemarkerConfiguration.setTemplateLoader(templateLoader);
- //freemarkerConfiguration.setObjectWrapper(new BeansWrapper());
-
}
- public CodeSourceStorage getCode() {
- return code;
+ /**
+ * Post init, must be called after ui building.
+ */
+ public void postInit() {
+
+ // add listeners
+ this.scriptUI.getTree().addTreeSelectionListener(this);
+ this.scriptUI.getEditor().addCaretListener(this);
}
/**
- * @return an array of all script's modules names managed by this screen
+ * Update script UI component actions buttons.
*/
- public static String[] getScriptTypesNames() {
- ScriptMapping[] values = ScriptMapping.values();
- String[] result = new String[values.length];
- for (int i = 0; i < result.length; i++) {
- result[i] = values[i].name();
+ protected void setButton() {
+
+ File selectedFile = (File)scriptUI.getTree().getLastSelectedPathComponent();
+
+ if (selectedFile != null) {
+ scriptUI.setSingleFileSelected(selectedFile.isFile());
+ scriptUI.setJavaFileSelected(selectedFile.getName().endsWith(".java"));
}
- return result;
+ else {
+ scriptUI.setSingleFileSelected(false);
+ scriptUI.setJavaFileSelected(false);
+ }
+
+ /*buttonScriptExport.setEnabled(tree.getSelectionValue() != null);
+ miExport.setEnabled(tree.getSelectionValue() != null);
+ buttonScriptCommit.setEnabled(fileSelected);
+ miCommitVCS.setEnabled(fileSelected);
+ miDiffVCS.setEnabled(fileSelected);
+ //buttonScriptUpdate.setEnabled(fileSelected);
+ buttonScriptSave.setEnabled(fileSelected);
+ miSave.setEnabled(fileSelected);
+ buttonScriptCut.setEnabled(fileSelected);
+ miCut.setEnabled(fileSelected);
+ buttonScriptCopy.setEnabled(fileSelected);
+ miCopy.setEnabled(fileSelected);
+ buttonScriptPaste.setEnabled(fileSelected);
+ miPaste.setEnabled(fileSelected);
+ buttonScriptCheck.setEnabled(isJavaScript);
+ miCheckSyntax.setEnabled(isJavaScript);
+ buttonScriptEval.setEnabled(isJavaScript);
+ miEvaluate.setEnabled(isJavaScript);*/
}
-
- public List<String> getScriptNames() {
- return ScriptStorage.getScriptNames();
+
+ protected void setStatusMessage(String msg) {
+ // FIXME remove all parent container reference
+ WelcomePanelUI parentUI = scriptUI.getParentContainer(WelcomePanelUI.class);
+ parentUI.setStatusMessage(msg);
}
-
- public List<String> getSimulatorNames() {
- return SimulatorStorage.getSimulatorNames();
+ protected void setStatusMessage(String msg, boolean running) {
+ // FIXME remove all parent container reference
+ WelcomePanelUI parentUI = scriptUI.getParentContainer(WelcomePanelUI.class);
+ parentUI.setStatusMessage(msg, running);
}
-
- public List<String> getExportNames() {
- return ExportStorage.getExportNames();
- }
-
- public List<String> getRuleNames() {
- return RuleStorage.getRuleNames();
- }
-
- public List<String> getAnalysePlanNames() {
- return AnalysePlanStorage.getAnalysePlanNames();
- }
-
- public List<String> getSensitivityNames() {
- return SensitivityStorage.getSensitivityNames();
- }
- public List<String> getSensitivityExportsNames() {
- return SensitivityExportStorage.getSensitivityExportNames();
+ /**
+ * Make new script, and select it on tree.
+ */
+ public void newScript() {
+ ScriptMapping selectedType = (ScriptMapping) scriptUI.getScriptTypeChoice().getSelectedItem();
+ newScript(selectedType);
}
- public List<String> getCategories() {
- return FormuleStorage.getCategories();
- }
+ /**
+ * Make new script, and select it on tree.
+ *
+ * @param scriptType script to make
+ */
+ public void newScript(ScriptMapping scriptType) {
- public List<String> getFormuleNames(String Categories) {
- return FormuleStorage.getFormuleNames(Categories);
- }
+ String equationModelType = "";
+ String equationModelTypePath = "";
- public File getScriptDirectory() {
- return ScriptStorage.getScriptDirectory();
- }
+ // specific case for equation model
+ if (scriptType.equals(ScriptMapping.EquationModel)) {
+ java.util.List<String> values = FormuleStorage.getCategories();
+ equationModelType = (String) JOptionPane.showInputDialog(scriptUI,
+ _("isisfish.message.new.formule.category"),
+ _("isisfish.message.new.formule.title"),
+ JOptionPane.PLAIN_MESSAGE, null, values.toArray(), values.get(0));
+ equationModelTypePath = equationModelType + File.separator;
+ }
- public File getSimulatorDirectory() {
- return SimulatorStorage.getSimulatorDirectory();
- }
+ // if user has not choose "cancel"
+ if (equationModelType != null) {
+ String fileName = JOptionPane
+ .showInputDialog(_("isisfish.message.new.filename"));
+ File scriptFile = newScript(equationModelTypePath + fileName,
+ scriptType);
+ ScriptTreeModel model = (ScriptTreeModel) scriptUI.getTree().getModel();
+ model.fileAdded(scriptFile);
+ TreePath treePath = model.getTreePathFor(scriptFile);
+ scriptUI.getTree().setSelectionPath(treePath);
+ }
- public File getExportDirectory() {
- return ExportStorage.getExportDirectory();
}
- public File getRuleDirectory() {
- return RuleStorage.getRuleDirectory();
- }
-
- public File getAnalysePlanDirectory() {
- return AnalysePlanStorage.getAnalysePlanDirectory();
- }
-
- public File getFormuleDirectory() {
- return FormuleStorage.getFormuleDirectory();
- }
-
- public File getSensitivityDirectory() {
- return SensitivityStorage.getSensitivityDirectory();
- }
-
- public File getSensitivityExportDirectory() {
- return SensitivityExportStorage.getSensitivityExportDirectory();
- }
-
/**
* Creer un nouveau script, ici un script peut-etre un Script, un Simulator,
* un Export.
*
- * @param fileName
- * @param scriptType le type que l'on souhaite Script, Simulator,
- * ou Export.
+ * @param fileName full filename
+ * @param scriptType le type que l'on souhaite Script, Simulator, ou Export.
+ * @return created file
*/
- public void newScript(String fileName, String scriptType) {
+ protected File newScript(String fileName, ScriptMapping scriptType) {
if (log.isDebugEnabled()) {
- log.info("newScript called [" + scriptType + "]");
+ log.debug("newScript called [" + scriptType + "]");
}
- Exception e;
+ File scriptFile = null;
+
try {
// Vérifie qu'il n'y pas de caractères spéciaux. Seul les caractre
// de a à z (majuscule ou minuscule) ainsi que les nombres sont
@@ -232,20 +264,14 @@
// au moins 1 caractère.
String realFilename;
String category;
- ScriptMapping mapping = ScriptMapping.valueOf(scriptType);
- if (mapping == null) {
- e = new RuntimeException("ScriptType unknown: " + scriptType);
- returnError(_("isisfish.error.script.create", fileName, e
- .getMessage()), e);
- }
int pos = fileName.lastIndexOf('/');
if (pos != -1) {
- if (mapping != ScriptMapping.EquationModel) {
+ if (scriptType != ScriptMapping.EquationModel) {
// interdit pour le moment ?
String message = _("isisfish.error.invalid.file.name",
fileName);
- e = new RuntimeException(message);
+ Exception e = new RuntimeException(message);
returnError(_("isisfish.error.script.create", fileName, e
.getMessage()), e);
}
@@ -253,7 +279,7 @@
if (pos == fileName.length() - 1) {
String message = _("isisfish.error.invalid.file.name",
fileName);
- e = new RuntimeException(message);
+ Exception e = new RuntimeException(message);
returnError(_("isisfish.error.script.create", fileName, e
.getMessage()), e);
}
@@ -266,13 +292,13 @@
}
if (!realFilename.matches("[A-Z0-9_][a-zA-Z0-9_]*")) {
String message = _("isisfish.error.invalid.file.name", fileName);
- e = new RuntimeException(message);
+ Exception e = new RuntimeException(message);
returnError(_("isisfish.error.script.create", fileName, e
.getMessage()), e);
}
//TODO do test on category
CodeSourceStorage script = null;
- switch (mapping) {
+ switch (scriptType) {
case EquationModel:
script = FormuleStorage.createFormule(category, realFilename,
Language.JAVA);
@@ -296,22 +322,25 @@
script = SensitivityStorage.getSensitivity(fileName);
break;
case SensitivityExport:
- script = SensitivityExportStorage.getSensitivityExport(fileName);
+ script = SensitivityExportStorage
+ .getSensitivityExport(fileName);
break;
default:
- log.fatal("ScriptType unknown: " + scriptType);
+ if (log.isErrorEnabled()) {
+ log.fatal("ScriptType unknown: " + scriptType);
+ }
}
if (script.exists()) {
// Message d'erreur si le fichier existe en local.
String message = _("isisfish.error.file.already.exists",
fileName);
- e = new RuntimeException(message);
+ Exception e = new RuntimeException(message);
returnError(_("isisfish.error.script.create", fileName, e
.getMessage()), e);
}
- String scriptTemplatePath = mapping.getTemplatePath();
+ String scriptTemplatePath = scriptType.getTemplatePath();
if (scriptTemplatePath != null) {
@@ -326,8 +355,6 @@
// context values
Map<String, Object> root = new HashMap<String, Object>();
- // FIXME what is category ?
- root.put("category", "");
root.put("name", realFilename);
root.put("date", new Date());
root.put("author", IsisFish.config.getUserName());
@@ -342,12 +369,14 @@
throw new IsisFishRuntimeException("There is no templatePath");
}
- code = script;
+ codeStorage = script;
+ scriptFile = script.getFile();
} catch (Exception eee) {
returnError(_("isisfish.error.script.create", fileName, eee
.getMessage()), eee);
}
+ return scriptFile;
}
/**
@@ -363,122 +392,165 @@
ErrorHelper.showErrorDialog(s, eee);
}
- public void loadScript(GenericCell c, String fileName, String type) {
- ScriptMapping mapping = ScriptMapping.valueOf(type);
+ /*
+ * @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent)
+ */
+ @Override
+ public void valueChanged(TreeSelectionEvent e) {
+ if (e.getNewLeadSelectionPath() != null) {
+ File selectedFile = (File)e.getNewLeadSelectionPath().getLastPathComponent();
+ if (selectedFile.isFile()) {
+ // load file into current action codeStorage
+ loadScript(selectedFile);
+ scriptUI.getEditor().open(selectedFile);
+ // force refresh
+ scriptUI.getEditor().validate();
+
+ setButton();
+ }
+ else {
+ scriptUI.getEditor().close();
+ scriptUI.getEditor().validate();
+ setButton();
+ }
+ }
+ }
+
+ /**
+ * Load specified script in current action.
+ *
+ * TODO can we change this ?
+ *
+ * @param file file to load
+ */
+ public void loadScript(File file) {
+ ScriptMapping mapping = ScriptMapping.getMappingFor(file);
CodeSourceStorage script = null;
try {
-
switch (mapping) {
case EquationModel:
- script = FormuleStorage.getFormule((String) c.getValue(),
- fileName);
+ String fullPath = file.getAbsolutePath();
+ int lastIndexOf = fullPath.lastIndexOf('/');
+ // in string .../aaa/bbb/ccc/ddd.java
+ // get ccc
+ String category = fullPath.substring(fullPath.lastIndexOf('/',
+ lastIndexOf - 1) + 1, lastIndexOf);
+ script = FormuleStorage.getFormule(category, file.getName());
break;
case Rule:
- script = RuleStorage.getRule(fileName);
+ script = RuleStorage.getRule(file.getName());
break;
case AnalysePlan:
- script = AnalysePlanStorage.getAnalysePlan(fileName);
+ script = AnalysePlanStorage.getAnalysePlan(file.getName());
break;
case Export:
- script = ExportStorage.getExport(fileName);
+ script = ExportStorage.getExport(file.getName());
break;
case Script:
- script = ScriptStorage.getScript(fileName);
+ script = ScriptStorage.getScript(file.getName());
break;
case Simulator:
- script = SimulatorStorage.getSimulator(fileName);
+ script = SimulatorStorage.getSimulator(file.getName());
break;
case Sensitivity:
- script = SensitivityStorage.getSensitivity(fileName);
+ script = SensitivityStorage.getSensitivity(file.getName());
break;
case SensitivityExport:
- script = SensitivityExportStorage.getSensitivityExport(fileName);
+ script = SensitivityExportStorage.getSensitivityExport(file
+ .getName());
break;
default:
- log.fatal("ScriptType unknown: " + fileName);
+ log.fatal("ScriptType unknown: " + file.getName());
}
//frame.setInfoText(_("isisfish.message.load.finished"));
} catch (Exception eee) {
- returnError(_("isisfish.error.script.load", fileName, eee
- .getMessage()), eee);
+ returnError(_("isisfish.error.script.load", file.getAbsolutePath(),
+ eee.getMessage()), eee);
} finally {
- code = script;
+ codeStorage = script;
}
}
public boolean fileLoaded() {
- return code != null;
+ return codeStorage != null;
}
public boolean isJavaScript() {
- return JavaSourceStorage.class.isInstance(code);
+ return JavaSourceStorage.class.isInstance(codeStorage);
}
- public Object saveScript(String content) {
- log.info("saveScript called [" + code.getName() + "] ");
+ /**
+ * Save current editor test in current loaded codeStorage.
+ */
+ public void saveScript() {
+ if (log.isDebugEnabled()) {
+ log.debug("saveScript called on " + codeStorage.getName());
+ }
+
try {
- code.setContent(content);
+ //String content = scriptUI.getEditor().getText();
+ //codeStorage.setContent(content);
+ // setContent() or scriptUI.getEditor().save()
+ // if setContent() only editor ask for t saving
+ scriptUI.getEditor().save();
+
+ // notify tree to refresh
+ ScriptTreeModel model = (ScriptTreeModel) scriptUI.getTree().getModel();
+ model.fileModified(codeStorage.getFile());
} catch (Exception eee) {
- returnError(_("isisfish.error.script.save", code.getFile(), eee
- .getMessage()), eee);
+ returnError(_("isisfish.error.script.save", codeStorage.getFile(),
+ eee.getMessage()), eee);
}
- return null;
+ setStatusMessage(_("isisfish.message.save.finished"));
}
- public String commitScript(String content) {
- String result = null;
+ /**
+ * Save script, and disply commit UI.
+ *
+ * @return
+ */
+ public void commitScript() {
+
try {
- log.debug("commitScript called for ");
+ log.debug("commitScript called for " + codeStorage.getName());
+
// save script before commit
- code.setContent(content);
- String msg = JOptionPane
- .showInputDialog(_("isisfish.message.script.commit"));
+ saveScript();
+
+ String msg = JOptionPane.showInputDialog(_("isisfish.message.script.commit", codeStorage.getName()));
if (msg == null) {
- result = _("isisfish.message.commit.cancelled");
+ setStatusMessage(_("isisfish.message.commit.cancelled"));
} else {
-
- try {
- code.commit(msg);
- code.reload();
- result = _("isisfish.message.commit.finished");
- } catch (VCSException e) {
-
- // FIXME enable/disable button only
- // if vcs can write
- JOptionPane.showMessageDialog(null, e.getMessage(),
- _("isisfish.common.error"),
- JOptionPane.ERROR_MESSAGE);
- if (log.isWarnEnabled()) {
- log.warn("Exception on commit", e);
- }
- }
+ codeStorage.commit(msg);
+ codeStorage.reload();
+ setStatusMessage(_("isisfish.message.commit.finished"));
}
- return null;
} catch (Exception ex) {
if (log.isErrorEnabled()) {
log.error("Error on script commit", ex);
}
+
+ // if vcs can write
+ ErrorHelper.showErrorDialog(_("isisfish.common.error"), ex);
}
- return result;
}
/**
* Exporte le(s) script(s) sélectionnés dans l'arbre.
* <br>L'arbre doit avoir au moins un script de selectionnés
- *
- * @param selectedPaths selected path
- * @return <code>null</code> if everything is ok.
*/
- public String showExportScriptDialog(TreePath[] selectedPaths) {
- String message = null;
+ public void exportScript() {
+
+ TreePath[] selectedFilesPath = scriptUI.getTree().getSelectionPaths();
+
// first step : acquire list of files required
int prefixLength = IsisFish.config.getDatabaseDirectory()
.getAbsolutePath().length() + 1;
- List<String> listFiles = extractFiles(prefixLength, selectedPaths);
- return message;
+ List<String> listFiles = extractFiles(prefixLength, selectedFilesPath);
+
}
protected static List<String> extractFiles(int prefixLength,
@@ -539,6 +611,27 @@
return result;
}
+ /**
+ * Cut selection in current editor.
+ */
+ public void cut() {
+ scriptUI.getEditor().cut();
+ }
+
+ /**
+ * Copy selection in current editor.
+ */
+ public void copy() {
+ scriptUI.getEditor().copy();
+ }
+
+ /**
+ * Paste clipboard content in editor.
+ */
+ public void paste() {
+ scriptUI.getEditor().paste();
+ }
+
protected static FileFilter scriptFileFilter;
public static FileFilter getScriptFileFilter() {
@@ -553,9 +646,13 @@
try {
log.debug("updateScript called for ");
//TODO Use VCS UI dialog
- //TODO Use FileState new mecanism to obtain state
- code.update();
- code.reload();
+ UpdateDialogUI ui = new UpdateDialogUI();
+ ui.setVisible(true);
+ //TODO Use FileState new mechanism to obtain state
+ if (codeStorage == null) {
+ codeStorage.update();
+ codeStorage.reload();
+ }
} catch (VCSException ex) {
if (log.isErrorEnabled()) {
log.error("Error on script update", ex);
@@ -566,75 +663,84 @@
/**
* Check script content.
*
- * @param content
- * @return compilation result and output
+ * @return compilation success flag
*/
- public CompilationResult checkScript(String content) {
-
- CompilationResult compilationResult = new CompilationResult();
-
+ public boolean checkScript() {
+
+ boolean check = false;
+ String content = scriptUI.getEditor().getText();
+
try {
if (log.isDebugEnabled()) {
log.debug("checkScript called");
}
// save script before commit
- code.setContent(content);
- JavaSourceStorage javaCode = (JavaSourceStorage) code;
+ codeStorage.setContent(content);
+ JavaSourceStorage javaCode = (JavaSourceStorage) codeStorage;
StringWriter result = new StringWriter();
PrintWriter out = new PrintWriter(result);
try {
int compileResult = javaCode.compile(false, out);
-
+
if (compileResult == 0) {
- compilationResult.setCompilationResult(CompilationResult.COMPILATION_OK);
+ check = true;
}
- else {
- compilationResult.setCompilationResult(CompilationResult.COMPILATION_FAILED);
- }
} catch (Exception eee) {
- compilationResult.setCompilationResult(CompilationResult.COMPILATION_FAILED);
eee.printStackTrace(out);
}
+ out.flush();
- out.flush();
- compilationResult.setCompilationOutput(result.toString());
-
+ if (check) {
+ scriptUI.getActionLogArea().setText(
+ _("isisfish.script.compilation.ok", result.toString()));
+ scriptUI.getActionLogArea().setBackground(COLOR_SUCCESS);
+ } else {
+ scriptUI.getActionLogArea().setText(
+ _("isisfish.script.compilation.failed", result
+ .toString()));
+ scriptUI.getActionLogArea().setBackground(COLOR_FAILURE);
+ }
+
} catch (IOException ex) {
if (log.isErrorEnabled()) {
log.error("Error on script check", ex);
}
}
- return compilationResult;
+ setStatusMessage(_("isisfish.message.check.finished"));
+ return check;
}
- public String evaluateScript(String content) {
+ /**
+ * Call main method in current cod storage code.
+ * Check script before call.
+ */
+ public void evaluateScript() {
if (log.isDebugEnabled()) {
log.debug("evaluateScript called");
}
- String msg = "";
try {
- CompilationResult compilationResult = checkScript(content);
- if (compilationResult.getCompilationResult() == CompilationResult.COMPILATION_FAILED) {
- return compilationResult.getCompilationOutput();
+ if (checkScript()) {
+ // reset area color
+ scriptUI.getActionLogArea().setBackground(null);
+
+ JavaSourceStorage javaCode = (JavaSourceStorage) codeStorage;
+ ByteArrayOutputStream result = new ByteArrayOutputStream();
+ PrintStream out = new PrintStream(result);
+ PrintStream err = new PrintStream(result);
+ PrintStream oldOut = System.out;
+ PrintStream oldErr = System.err;
+ System.setOut(out);
+ System.setErr(err);
+ Class<?> clazz = javaCode.getCodeClass();
+ Method main = clazz.getMethod("main", String[].class);
+ //noinspection RedundantArrayCreation
+ main.invoke(null, new Object[] { new String[] {} });
+ System.setOut(oldOut);
+ System.setErr(oldErr);
+ scriptUI.getActionLogArea().setText(result.toString());
}
- code.setContent(content);
- JavaSourceStorage javaCode = (JavaSourceStorage) code;
- ByteArrayOutputStream result = new ByteArrayOutputStream();
- PrintStream out = new PrintStream(result);
- PrintStream err = new PrintStream(result);
- PrintStream oldOut = System.out;
- PrintStream oldErr = System.err;
- System.setOut(out);
- System.setErr(err);
- Class clazz = javaCode.getCodeClass();
- Method main = clazz.getMethod("main", String[].class);
- //noinspection RedundantArrayCreation
- main.invoke(null, new Object[] { new String[] {} });
- System.setOut(oldOut);
- System.setErr(oldErr);
- msg = result.toString();
} catch (Exception ex) {
if (log.isDebugEnabled()) {
log.debug("Error on script evaluation", ex);
@@ -642,28 +748,27 @@
ByteArrayOutputStream result = new ByteArrayOutputStream();
PrintStream out = new PrintStream(result);
ex.printStackTrace(out);
- msg = result.toString();
+ scriptUI.getActionLogArea().setText(result.toString());
}
- return msg;
+ setStatusMessage(_("isisfish.message.evaluation.finished"));
}
/**
* Show a improved script dialog with multiple selection support.
- *
- * @return status message
*/
- public String showImportScriptDialog() {
- String msg = null;
+ public void importScript() {
+
if (log.isDebugEnabled()) {
log.debug("importScript ");
}
-
+
File root = IsisFish.config.getDatabaseDirectory();
try {
// ask user form a .zip file
- File file = FileUtil.getFile(".*.zip$", _("isisfish.message.import.scripts.zipped"));
+ 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,
@@ -671,19 +776,19 @@
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);
+ modelNewItems = new FileSelectionTableModel(newFiles);
//}
// s'il y a des fichier en conflic
//if (!conflictFiles.isEmpty()) {
- modelItems = new FileSelectionTableModel(conflictFiles);
+ modelItems = new FileSelectionTableModel(conflictFiles);
//}
// create import dialog
@@ -694,23 +799,23 @@
dialog.getConflictFilesTable().setModel(modelItems);
dialog.getNewFilesTable().setModel(modelNewItems);
// can't be in ui :(
- dialog.getNewFilesTable().getColumnModel().getColumn(0).setWidth(30);
- dialog.getConflictFilesTable().getColumnModel().getColumn(0).setWidth(30);
+ dialog.getNewFilesTable().getColumnModel().getColumn(0)
+ .setWidth(30);
+ dialog.getConflictFilesTable().getColumnModel().getColumn(0)
+ .setWidth(30);
dialog.getArchivePath().setText(file.getAbsolutePath());
dialog.refresh();
dialog.pack();
SwingUtil.center(dialog);
dialog.setVisible(true);
- msg = _("isisfish.message.import.scripts.file.done", file);
+ setStatusMessage(_("isisfish.message.import.scripts.file.done", file));
+ } else {
+ setStatusMessage(_("isisfish.message.import.scripts.file.cancelled"));
}
- else {
- msg = _("isisfish.message.import.scripts.file.cancelled");
- }
} catch (Exception eee) {
returnError(_("isisfish.error.script.import", eee.getMessage()),
eee);
}
- return msg;
}
/**
@@ -720,19 +825,22 @@
* @param selectedFiles selected non conflict files model
* @param selectedConflictFiles selected conflict files model
*/
- public void performImportScript(File sourceScriptArchive, FileSelectionTableModel selectedFiles, FileSelectionTableModel selectedConflictFiles) {
+ public void performImportScript(File sourceScriptArchive,
+ FileSelectionTableModel selectedFiles,
+ FileSelectionTableModel selectedConflictFiles) {
File sourceDirectory = IsisFish.config.getDatabaseDirectory();
-
+
List<String> filesToImports = new ArrayList<String>();
if (selectedFiles != null) {
filesToImports.addAll(selectedFiles.getSelectedFiles());
}
-
+
if (selectedConflictFiles != null) {
// do backup stuff (only backup conflict files)
- backupScripts(selectedConflictFiles.getSelectedFiles(), sourceDirectory);
-
+ backupScripts(selectedConflictFiles.getSelectedFiles(),
+ sourceDirectory);
+
filesToImports.addAll(selectedConflictFiles.getSelectedFiles());
}
@@ -743,13 +851,15 @@
log.info("unzip " + newFile);
}
}
- ZipUtil.uncompress(sourceScriptArchive, sourceDirectory, filesToImports, null, null);
+ ZipUtil.uncompress(sourceScriptArchive, sourceDirectory,
+ filesToImports, null, null);
} catch (IOException e1) {
throw new RuntimeException(e1);
}
if (log.isInfoEnabled()) {
- log.info("Unzip " + filesToImports.size() + " entry(ies) from '" + sourceScriptArchive + "'");
+ log.info("Unzip " + filesToImports.size() + " entry(ies) from '"
+ + sourceScriptArchive + "'");
}
}
@@ -761,16 +871,17 @@
protected void backupScripts(List<String> paths, File destination) {
File backupDirectory = IsisFish.config.getBackupSessionDirectory();
-
+
if (log.isDebugEnabled()) {
log.debug("Backup directory is : " + backupDirectory);
}
- String suffix = "_" + IsisFish.config.getBackupSessionDirectory().getName();
+ String suffix = "_"
+ + IsisFish.config.getBackupSessionDirectory().getName();
try {
for (String path : paths) {
-
+
//backup(new File(src, path), path, suffix);
-
+
File sourceFile = new File(destination, path);
if (!sourceFile.exists()) {
@@ -792,7 +903,8 @@
dst.getParentFile().mkdirs();
}
if (log.isInfoEnabled()) {
- log.info("Copying " + sourceFile.getName() + " to " + dst);
+ log.info("Copying " + sourceFile.getName() + " to "
+ + dst);
}
FileUtil.copy(sourceFile, dst);
}
@@ -801,7 +913,7 @@
throw new IsisFishRuntimeException(ee);
}
}
-
+
/**
* Copy a single file to destination directory.
*
@@ -812,7 +924,7 @@
*/
protected void backup(File src, String path, String suffix)
throws IOException {
-
+
}
/**
@@ -836,42 +948,78 @@
throw new RuntimeException(e);
}
- return new List[]{ newFiles, overwrittenFiles};
+ return new List[] { newFiles, overwrittenFiles };
}
-
- public String deleteScript(int resp, boolean remote) {
- String msg = "";
- log.debug("deleteScript called");
- try {
- //TODO desactive editor
- //TODO Review this because after delete fi file saw previously
- //TODO modified, it ask if we want to save, and then we have
- //TODO again the file in panel but not in tree panel ?
- if (resp == JOptionPane.YES_OPTION) {
+ /**
+ * Delete a script
+ *
+ * @param deleteRemote {@code true} to remove in vcs too
+ */
+ public void deleteScript(boolean deleteRemote) {
- code.delete(remote);
- if (code.getFile().exists()) {
- RuntimeException exception = new RuntimeException(
- "file could not be deleted");
- returnError(_("isisfish.error.script.delete", code
- .getFile(), exception.getMessage()), exception);
+ if (log.isDebugEnabled()) {
+ log.debug("DeleteScript called");
+ }
+
+ String name = codeStorage.getName();
+ int resp = JOptionPane.showConfirmDialog(scriptUI, _(
+ "isisfish.message.confirm.remove.script", name), null,
+ JOptionPane.YES_NO_OPTION);
+ if (resp == JOptionPane.YES_OPTION) {
+ // stay in UI even if deleted
+ scriptUI.getEditor().close();
+
+ try {
+ // TODO change this, need to be called before
+ // effective deletion
+ ((ScriptTreeModel) scriptUI.getTree().getModel())
+ .fileDeleted(codeStorage.getFile());
+
+ //TODO desactive editor
+ //TODO Review this because after delete fi file saw previously
+ //TODO modified, it ask if we want to save, and then we have
+ //TODO again the file in panel but not in tree panel ?
+ codeStorage.delete(deleteRemote);
+ if (codeStorage.getFile().exists()) {
+ ErrorHelper.showErrorDialog(_(
+ "isisfish.error.script.delete", codeStorage
+ .getFile()));
}
- msg = _("isisfish.message.delete.finished");
- } else {
- msg = _("isisfish.message.delete.canceled");
+ } catch (Exception eee) {
+ returnError(_("isisfish.error.script.delete",
+ codeStorage == null ? null : codeStorage.getFile(), eee
+ .getMessage()), eee);
}
- } catch (Exception eee) {
- returnError(_("isisfish.error.script.delete", code == null ? null
- : code.getFile(), eee.getMessage()), eee);
+ setStatusMessage(_("isisfish.message.delete.finished"));
+ } else {
+ setStatusMessage(_("isisfish.message.delete.canceled"));
}
- return msg;
}
- public String diffScript(String content) {
- log.debug("commitScript called");
- // TODO a refaire
- throw new UnsupportedOperationException("En reparation");
+ /**
+ * Show diff between selected files and files server version.
+ */
+ public void diffScript() {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Method diffScript called on " + codeStorage.getFile());
+ }
+
+ try {
+ String result = null;
+ if (IsisFish.vcs.isOnRemote(codeStorage.getFile())) {
+ result = IsisFish.vcs.getDiff(codeStorage.getFile());
+ } else {
+ result = "File not on remote";
+ }
+ scriptUI.getActionLogArea().setText(result);
+ } catch (VCSException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't get diff", e);
+ }
+ ErrorHelper.showErrorDialog(_("isisfish.vcs.vcssvn.diff.error"), e);
+ }
}
/** enum to encapsulate a script module */
@@ -910,6 +1058,30 @@
this.templatePath = templatePath;
}
+ /**
+ * Get script type for script path.
+ *
+ * @param file file to get type
+ * @return ScriptMapping type
+ */
+ public static ScriptMapping getMappingFor(File file) {
+
+ ScriptMapping result = null;
+
+ // test if path starts with type begin path
+
+ // don't forget last / for distinction begin
+ // "sensitivity" and "sensitivityexport"
+
+ for (ScriptMapping mapping : ScriptMapping.values()) {
+ if (file.getAbsolutePath().startsWith(mapping.getModule().getAbsolutePath() + File.separator)) {
+ result = mapping;
+ }
+ }
+
+ return result;
+ }
+
public File getModule() {
return module;
}
@@ -918,33 +1090,45 @@
return templatePath;
}
}
-
+
/**
- * Generate javadoc for all database script.
- *
- * @return javadoc status and output
+ * Generate javadoc and display output in UI.
*/
- public CompilationResult generateScriptJavadoc() {
-
- CompilationResult result = new CompilationResult();
-
- File rootDatabase = IsisFish.config.getDatabaseDirectory();
- File javadocDirectory = IsisFish.config.getJavadocDirectory();
-
- StringWriter output = new StringWriter();
- PrintWriter out = new PrintWriter(output);
- int ok = JavadocHelper.generateJavadoc(rootDatabase, javadocDirectory, out);
-
- if (ok == 0) {
- result.setCompilationResult(CompilationResult.COMPILATION_OK);
- }
- else {
- result.setCompilationResult(CompilationResult.COMPILATION_FAILED);
- }
- result.setCompilationOutput(output.toString());
- return result;
+ public void generateScriptJavadoc() {
+ setStatusMessage(_("isisfish.script.menu.javadocgenerating",
+ fr.ifremer.isisfish.IsisFish.config.getJavadocDirectory()),
+ true);
+
+ SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ File rootDatabase = IsisFish.config.getDatabaseDirectory();
+ File javadocDirectory = IsisFish.config.getJavadocDirectory();
+
+ StringWriter output = new StringWriter();
+ PrintWriter out = new PrintWriter(output);
+ int ok = JavadocHelper.generateJavadoc(rootDatabase,
+ javadocDirectory, out);
+
+ if (ok == 0) {
+ scriptUI.getActionLogArea().setText(
+ _("isisfish.script.compilation.ok", output
+ .toString()));
+ // vert leger
+ scriptUI.getActionLogArea().setBackground(COLOR_SUCCESS);
+ } else {
+ scriptUI.getActionLogArea().setText(
+ _("isisfish.script.compilation.failed", output
+ .toString()));
+ // rouge leger
+ scriptUI.getActionLogArea().setBackground(COLOR_FAILURE);
+ }
+
+ setStatusMessage(_("isisfish.script.menu.javadocgenerated",
+ fr.ifremer.isisfish.IsisFish.config.getJavadocDirectory()));
+ }
+ });
}
-
+
/**
* Open a browser displaying javadoc.
*/
@@ -952,8 +1136,9 @@
try {
// in faut ouvrir l'index, sinon, ca ouvre
// un explorateur de fichier
- File indexFile = new File(IsisFish.config.getJavadocDirectory(), "index.html");
-
+ File indexFile = new File(IsisFish.config.getJavadocDirectory(),
+ "index.html");
+
URI uri = indexFile.toURI();
Desktop.getDesktop().browse(uri);
} catch (Exception e) {
@@ -962,4 +1147,13 @@
}
}
}
+
+ /*
+ * @see javax.swing.event.CaretListener#caretUpdate(javax.swing.event.CaretEvent)
+ */
+ @Override
+ public void caretUpdate(CaretEvent e) {
+ // selection pas vide si dot = mark
+ scriptUI.setTextSelected(e.getDot() != e.getMark());
+ }
}
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptTypesComboModel.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptTypesComboModel.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptTypesComboModel.java 2009-10-26 15:19:57 UTC (rev 2693)
@@ -0,0 +1,78 @@
+/* *##%
+ * 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 java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.DefaultComboBoxModel;
+
+import fr.ifremer.isisfish.ui.script.ScriptAction.ScriptMapping;
+
+/**
+ * Model pour la liste des scripts disponibles.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author: chatellier $
+ */
+public class ScriptTypesComboModel extends DefaultComboBoxModel {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = -4070846632975105788L;
+
+ /** Mapping list. */
+ protected List<ScriptMapping> mappings;
+
+ /**
+ * Empty constructor.
+ */
+ public ScriptTypesComboModel() {
+ super();
+
+ ScriptMapping[] values = ScriptMapping.values();
+ mappings = new ArrayList<ScriptMapping>(values.length);
+ for (ScriptMapping mapping : values) {
+ mappings.add(mapping);
+ }
+
+ // default first selected
+ if (!mappings.isEmpty()) {
+ setSelectedItem(mappings.get(0));
+ }
+ }
+
+ /*
+ * @see javax.swing.ListModel#getElementAt(int)
+ */
+ @Override
+ public Object getElementAt(int index) {
+ return mappings.get(index);
+ }
+
+ /*
+ * @see javax.swing.ListModel#getSize()
+ */
+ @Override
+ public int getSize() {
+ return mappings.size();
+ }
+}
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptTypesComboModel.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
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-10-26 15:02:52 UTC (rev 2692)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx 2009-10-26 15:19:57 UTC (rev 2693)
@@ -19,365 +19,78 @@
*##%*/
-->
<JPanel layout='{new BorderLayout()}'>
- <script><![CDATA[
- import javax.swing.event.TreeSelectionListener;
- import javax.swing.tree.DefaultTreeModel;
- import javax.swing.tree.DefaultMutableTreeNode;
- import javax.swing.tree.TreeNode;
- import javax.swing.tree.TreePath;
- import fr.ifremer.isisfish.IsisFishRuntimeException;
- import fr.ifremer.isisfish.ui.WelcomePanelUI;
- import fr.ifremer.isisfish.ui.widget.editor.GenericCell;
- import fr.ifremer.isisfish.util.CompilationResult;
-
- setContextValue(new ScriptAction());
- setButton();
- tree.addTreeSelectionListener(new TreeSelectionListener() {
- @Override
- public void valueChanged(TreeSelectionEvent e) {
- DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
- if (node != null){
- GenericCell selectedValue = (GenericCell) node.getUserObject();
- if (selectedValue.getValue() != null){
- String parent = selectedValue.getValue().toString();
- File f = null;
- if (!parent.equals("EquationModel")) {
- if (parent.equals("Script")) {
- f = new File(getContextValue(ScriptAction.class).getScriptDirectory().getPath() + File.separator + selectedValue);
- } else if (parent.equals("Simulator")) {
- f = new File(getContextValue(ScriptAction.class).getSimulatorDirectory().getPath() + File.separator + selectedValue);
- } else if (parent.equals("Export")) {
- f = new File(getContextValue(ScriptAction.class).getExportDirectory().getPath() + File.separator + selectedValue);
- } else if (parent.equals("Rule")) {
- f = new File(getContextValue(ScriptAction.class).getRuleDirectory().getPath() + File.separator + selectedValue);
- } else if (parent.equals("AnalysePlan")) {
- f = new File(getContextValue(ScriptAction.class).getAnalysePlanDirectory().getPath() + File.separator + selectedValue);
- } else if (parent.equals("Sensitivity")) {
- f = new File(getContextValue(ScriptAction.class).getSensitivityDirectory().getPath() + File.separator + selectedValue);
- } else if (parent.equals("SensitivityExport")) {
- f = new File(getContextValue(ScriptAction.class).getSensitivityExportDirectory().getPath() + File.separator + selectedValue);
- } else {
- f = new File(getContextValue(ScriptAction.class).getFormuleDirectory().getPath() + File.separator + parent + File.separator + selectedValue);
- parent = "EquationModel";
- }
- }
- if (f != null) {
- getContextValue(ScriptAction.class).loadScript(selectedValue, selectedValue.getName(), parent);
- setEditor(f);
- }
- }
- else {
- editor.close();
- editor.validate();
- }
- actionLogArea.setText("");
- actionLogArea.setBackground(null);
- }
- setButton();
- }
- });
- protected void setTreeModel(){
- tree.setModel(getTreeModel());
- }
- protected DefaultTreeModel getTreeModel(){
- DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode();
- DefaultTreeModel treeModel = new DefaultTreeModel(rootNode);
- DefaultMutableTreeNode scriptNode = new DefaultMutableTreeNode(new GenericCell("Script", null, null));
- DefaultMutableTreeNode simulatorNode = new DefaultMutableTreeNode(new GenericCell("Simulator", null, null));
- DefaultMutableTreeNode exportNode = new DefaultMutableTreeNode(new GenericCell("Export", null, null));
- DefaultMutableTreeNode ruleNode = new DefaultMutableTreeNode(new GenericCell("Rule", null, null));
- DefaultMutableTreeNode analysePlanNode = new DefaultMutableTreeNode(new GenericCell("AnalysePlan", null, null));
- DefaultMutableTreeNode sensitivityNode = new DefaultMutableTreeNode(new GenericCell("Sensitivity", null, null));
- DefaultMutableTreeNode sensitivityExportNode = new DefaultMutableTreeNode(new GenericCell("SensitivityExport", null, null));
- DefaultMutableTreeNode equationModelNode = new DefaultMutableTreeNode(new GenericCell("EquationModel", null, null));
- setNode(scriptNode, getContextValue(ScriptAction.class).getScriptNames(), "Script");
- setNode(simulatorNode, getContextValue(ScriptAction.class).getSimulatorNames(), "Simulator");
- setNode(exportNode, getContextValue(ScriptAction.class).getExportNames(), "Export");
- setNode(ruleNode, getContextValue(ScriptAction.class).getRuleNames(), "Rule");
- setNode(analysePlanNode, getContextValue(ScriptAction.class).getAnalysePlanNames(), "AnalysePlan");
- setNode(sensitivityNode, getContextValue(ScriptAction.class).getSensitivityNames(), "Sensitivity");
- setNode(sensitivityExportNode, getContextValue(ScriptAction.class).getSensitivityExportsNames(), "SensitivityExport");
- setNode(equationModelNode, getContextValue(ScriptAction.class).getCategories(), "EquationModel");
- for (Enumeration e = equationModelNode.children(); e.hasMoreElements();){
- DefaultMutableTreeNode node = (DefaultMutableTreeNode)e.nextElement();
- GenericCell g = (GenericCell)node.getUserObject();
- setNode(node, getContextValue(ScriptAction.class).getFormuleNames(g.toString()), g.toString());
- }
- treeModel.insertNodeInto(scriptNode, rootNode, 0);
- treeModel.insertNodeInto(simulatorNode, rootNode, 1);
- treeModel.insertNodeInto(exportNode, rootNode, 2);
- treeModel.insertNodeInto(ruleNode, rootNode, 3);
- treeModel.insertNodeInto(analysePlanNode, rootNode, 4);
- treeModel.insertNodeInto(sensitivityNode, rootNode, 5);
- treeModel.insertNodeInto(sensitivityExportNode, rootNode, 6);
- treeModel.insertNodeInto(equationModelNode, rootNode, 7);
- return treeModel;
- }
- protected void setNode(DefaultMutableTreeNode node, java.util.List<String> values, String type) {
- for (String value : values){
- DefaultMutableTreeNode childNode = new DefaultMutableTreeNode(new GenericCell(value, type, null));
- node.add(childNode);
- }
- }
- protected void setEditor(File f) {
- editor.open(f);
- editor.validate();
- }
- protected DefaultMutableTreeNode findNode(DefaultMutableTreeNode root, String value) {
- DefaultMutableTreeNode result = null;
- for (Enumeration e = root.children(); e.hasMoreElements();){
- DefaultMutableTreeNode node = (DefaultMutableTreeNode)e.nextElement();
- GenericCell g = (GenericCell)node.getUserObject();
- if (value.equals(g.getName())){
- result = node;
- }
- }
- return result;
- }
-
- protected void setButton() {
- boolean fileLoaded = getContextValue(ScriptAction.class).fileLoaded();
- boolean isJavaScript = getContextValue(ScriptAction.class).isJavaScript();
- buttonScriptExport.setEnabled(tree.getSelectionValue() != null);
- // TODO refactoring en cours, mais pas fini
- //miExport.setEnabled(tree.getSelectionValue() != null);
- buttonScriptCommit.setEnabled(fileLoaded);
- miCommitVCS.setEnabled(fileLoaded);
- //buttonScriptUpdate.setEnabled(fileLoaded);
- buttonScriptSave.setEnabled(fileLoaded);
- miSave.setEnabled(fileLoaded);
- // FIXME use jaxx binding
- //buttonScriptCut.setEnabled(fileLoaded);
- //miCut.setEnabled(fileLoaded);
- //buttonScriptCopy.setEnabled(fileLoaded);
- //miCopy.setEnabled(fileLoaded);
- //buttonScriptPaste.setEnabled(fileLoaded);
- //miPaste.setEnabled(fileLoaded);
- buttonScriptCheck.setEnabled(isJavaScript);
- miCheckSyntax.setEnabled(isJavaScript);
- buttonScriptEval.setEnabled(isJavaScript);
- miEvaluate.setEnabled(isJavaScript);
- }
- protected void setStatusMessage(String msg) {
- WelcomePanelUI root = getParentContainer(WelcomePanelUI.class);
- root.setStatusMessage(msg);
- }
- protected void setStatusMessage(String msg, boolean running) {
- WelcomePanelUI root = getParentContainer(WelcomePanelUI.class);
- root.setStatusMessage(msg, running);
- }
-/*
- * JButton and JMenu Action
- */
- protected void newScript(){
- newScript((String)ScriptTypeChoice.getSelectedItem());
- }
- protected void newScript(String scriptType){
- java.util.List<String> values = getContextValue(ScriptAction.class).getCategories();
- String equationModelType = "";
- String equationModelTypePath = "";
- if (scriptType.equals("EquationModel")){
- equationModelType = (String)JOptionPane.showInputDialog(
- this,
- _("isisfish.message.new.formule.category"),
- _("isisfish.message.new.formule.title"),
- JOptionPane.PLAIN_MESSAGE,
- null,
- values.toArray(),
- values.get(0));
- equationModelTypePath = equationModelType + File.separator;
- }
- if (equationModelType != null){
- String fileName = JOptionPane.showInputDialog(_("isisfish.message.new.filename"));
- if (fileName != null){
- getContextValue(ScriptAction.class).newScript(equationModelTypePath + fileName, scriptType);
- setTreeModel();
- setStatusMessage(_("isisfish.message.creation.done", fileName));
- DefaultMutableTreeNode element = null;
- element = findNode((DefaultMutableTreeNode) tree.getModel().getRoot(), scriptType);
- if (!equationModelTypePath.equals("")){
- element = findNode(element, equationModelType);
- }
- element = findNode(element, fileName + ".java");
- TreeNode[] path = element.getPath();
- if (log.isDebugEnabled()) {
- log.debug("chemin du prochain noeud selectionnée: " + Arrays.toString(path));
- }
- TreePath newSelectionPath = new TreePath(path);
- tree.setSelectionPath(newSelectionPath);
- }
- }
- }
- protected void saveScript(){
- getContextValue(ScriptAction.class).saveScript(editor.getText());
- setStatusMessage(_("isisfish.message.save.finished"));
- }
- protected void importScript() {
- String importMessage = getContextValue(ScriptAction.class).showImportScriptDialog();
- setStatusMessage(importMessage);
- }
- protected void exportScript() {
- TreePath[] selectedFilesPath = tree.getSelectionPaths();
- getContextValue(ScriptAction.class).showExportScriptDialog(selectedFilesPath);
- }
- protected void commitScript(){
- new IsisFishRuntimeException("Not yet implemented");
- getContextValue(ScriptAction.class).commitScript(editor.getText());
- setStatusMessage(_("isisfish.message.commit.finished"));
- }
- protected void updateScript(){
- new IsisFishRuntimeException("Not yet implemented");
- getContextValue(ScriptAction.class).updateScript();
- setStatusMessage(_("isisfish.message.update.finished"));
- }
- protected void cut(){
- }
- protected void copy(){
- }
- protected void paste(){
- }
- protected void checkScript(){
- CompilationResult compilationResult = getContextValue(ScriptAction.class).checkScript(editor.getText());
-
- // TODO display an ok status ?
- if (compilationResult.getCompilationResult() == CompilationResult.COMPILATION_OK) {
- actionLogArea.setText(_("isisfish.script.compilation.ok", compilationResult.getCompilationOutput()));
- // vert leger
- actionLogArea.setBackground(new Color(210, 255, 210));
- }
- else {
- actionLogArea.setText(_("isisfish.script.compilation.failed", compilationResult.getCompilationOutput()));
- // rouge leger
- actionLogArea.setBackground(new Color(255, 210, 210));
- }
+ <ScriptAction id="scriptAction" javaBean="new ScriptAction(this)" />
- setStatusMessage(_("isisfish.message.check.finished"));
- }
- protected void evaluateScript(){
- actionLogArea.setText(getContextValue(ScriptAction.class).evaluateScript(editor.getText()));
- actionLogArea.setBackground(null);
- setStatusMessage(_("isisfish.message.evaluation.finished"));
- }
- protected void deleteScript(boolean deleteRemote) {
- // reste in UI even if deleted
- editor.close();
+ <script><![CDATA[
+ getScriptAction().postInit();
+ ]]></script>
- int resp = JOptionPane.showConfirmDialog(this,_("isisfish.message.confirm.remove.script",
- getContextValue(ScriptAction.class).getCode().getName()), null, JOptionPane.YES_NO_OPTION);
- setStatusMessage(getContextValue(ScriptAction.class).deleteScript(resp, deleteRemote));
- setTreeModel();
- }
-
- /**
- * Show diff between selected files and files server version.
- */
- protected void diffScript(){
- String diffMessage = getContextValue(ScriptAction.class).diffScript(editor.getText());
- setStatusMessage(diffMessage);
- }
-
- /**
- * Generate javadoc and disply output in UI.
- */
- protected void generateScriptJavadoc() {
- setStatusMessage(_("isisfish.script.menu.javadocgenerating", fr.ifremer.isisfish.IsisFish.config.getJavadocDirectory()), true);
-
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- ScriptAction action = getContextValue(ScriptAction.class);
- CompilationResult compilationResult = action.generateScriptJavadoc();
-
- // TODO display an ok status ?
- if (compilationResult.getCompilationResult() == CompilationResult.COMPILATION_OK) {
- actionLogArea.setText(_("isisfish.script.compilation.ok", compilationResult.getCompilationOutput()));
- // vert leger
- actionLogArea.setBackground(new Color(210, 255, 210));
- }
- else {
- actionLogArea.setText(_("isisfish.script.compilation.failed", compilationResult.getCompilationOutput()));
- // rouge leger
- actionLogArea.setBackground(new Color(255, 210, 210));
- }
- setStatusMessage(_("isisfish.script.menu.javadocgenerated", fr.ifremer.isisfish.IsisFish.config.getJavadocDirectory()));
- }
- });
- }
-
- /**
- * Show generated javadoc.
- */
- protected void showScriptJavadoc() {
- ScriptAction action = getContextValue(ScriptAction.class);
- action.showScriptJavadoc();
- }
-
- ]]>
- </script>
+ <Boolean id="fileSelected" javaBean="false" />
+ <Boolean id="singleFileSelected" javaBean="false" />
+ <Boolean id="textSelected" javaBean="false" />
+ <Boolean id="javaFileSelected" javaBean="false" />
- <!--
- | Menu
- +-->
-
+ <!-- Menu -->
<JMenuBar id="scriptMenuBar" constraints='BorderLayout.NORTH'>
<JMenu id="scriptTxtFile" text="isisfish.script.menu.file">
<JMenu id="scriptNewMenu" text="isisfish.script.menu.new">
- <JMenuItem id="miNewScript" text="isisfish.script.menu.txtNewScript" onActionPerformed='newScript("Script")' accelerator="accNewScript"/>
- <JMenuItem id="miNewSimulator" text="isisfish.script.menu.txtNewSimulator" onActionPerformed='newScript("Simulator")' accelerator="accNewSimulator"/>
- <JMenuItem id="miNewExport" text="isisfish.script.menu.txtNewExport" onActionPerformed='newScript("Export")' accelerator="accNewExport"/>
- <JMenuItem id="miNewRule" text="isisfish.script.menu.txtNewRule" onActionPerformed='newScript("Rule")' accelerator="accNewRule"/>
- <JMenuItem id="miNewAnalysePlan" text="isisfish.script.menu.txtNewAnalysePlan" onActionPerformed='newScript("AnalysePlan")' accelerator="accNewAnalysePlan"/>
- <JMenuItem id="miNewSensitivity" text="isisfish.script.menu.txtNewSensitivity" onActionPerformed='newScript("Sensitivity")' accelerator="accNewSensitivity"/>
- <JMenuItem id="miNewSensitivityExport" text="isisfish.script.menu.txtNewSensitivityExport" onActionPerformed='newScript("SensitivityExport")' accelerator="accNewSensitivityExport"/>
- <JMenuItem id="miNewEquationModel" text="isisfish.script.menu.txtNewEquationModel" onActionPerformed='newScript("EquationModel")' accelerator="accNewEquationModel"/>
+ <JMenuItem id="miNewScript" text="isisfish.script.menu.txtNewScript" onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.Script)' accelerator="accNewScript"/>
+ <JMenuItem id="miNewSimulator" text="isisfish.script.menu.txtNewSimulator" onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.Simulator)' accelerator="accNewSimulator"/>
+ <JMenuItem id="miNewExport" text="isisfish.script.menu.txtNewExport" onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.Export)' accelerator="accNewExport"/>
+ <JMenuItem id="miNewRule" text="isisfish.script.menu.txtNewRule" onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.Rule)' accelerator="accNewRule"/>
+ <JMenuItem id="miNewAnalysePlan" text="isisfish.script.menu.txtNewAnalysePlan" onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.AnalysePlan)' accelerator="accNewAnalysePlan"/>
+ <JMenuItem id="miNewSensitivity" text="isisfish.script.menu.txtNewSensitivity" onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.Sensitivity)' accelerator="accNewSensitivity"/>
+ <JMenuItem id="miNewSensitivityExport" text="isisfish.script.menu.txtNewSensitivityExport" onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.SensitivityExport)' accelerator="accNewSensitivityExport"/>
+ <JMenuItem id="miNewEquationModel" text="isisfish.script.menu.txtNewEquationModel" onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.EquationModel)' accelerator="accNewEquationModel"/>
</JMenu>
- <JMenuItem id="miSave" text="isisfish.script.menu.save" onActionPerformed="saveScript()" accelerator="accSave"/>
+ <JMenuItem id="miSave" text="isisfish.script.menu.save" onActionPerformed="getScriptAction().saveScript()" accelerator="accSave" enabled='{isSingleFileSelected()}' />
<JSeparator/>
- <JMenuItem id="miImport" text="isisfish.script.menu.txtImport" enabled="false" onActionPerformed="importScript()" accelerator="accImport"/>
- <JMenuItem id="miExport" text="isisfish.script.menu.txtExport" enabled="false" onActionPerformed="exportScript()" accelerator="accExport"/>
+ <JMenuItem id="miImport" text="isisfish.script.menu.txtImport" enabled="false" onActionPerformed="getScriptAction().importScript()" accelerator="accImport" />
+ <JMenuItem id="miExport" text="isisfish.script.menu.txtExport" onActionPerformed="getScriptAction().exportScript()" accelerator="accExport" enabled='{isFileSelected()}' />
<JSeparator/>
- <JMenuItem id="miDelete" text="isisfish.script.menu.deleteLocaly" onActionPerformed='deleteScript(false)' accelerator="accDelete"/>
+ <JMenuItem id="miDelete" text="isisfish.script.menu.deleteLocaly" onActionPerformed='getScriptAction().deleteScript(false)' accelerator="accDelete" enabled='{isSingleFileSelected()}' />
</JMenu>
- <JMenu id="scriptTxtEdit" text="isisfish.script.menu.edit">
- <JMenuItem id="miCut" text="isisfish.script.menu.cut" enabled='false' onActionPerformed="cut()" accelerator="accCut"/>
- <JMenuItem id="miCopy" text="isisfish.script.menu.copy" enabled='false' onActionPerformed="copy()" accelerator="accCopy"/>
- <JMenuItem id="miPaste" text="isisfish.script.menu.paste" enabled='false' onActionPerformed="paste()" accelerator="accPaste"/>
+ <JMenu id="scriptTxtEdit" text="isisfish.script.menu.edit">
+ <JMenuItem id="miCut" text="isisfish.script.menu.cut" onActionPerformed="getScriptAction().cut()" accelerator="accCut" enabled='{isTextSelected()}' />
+ <JMenuItem id="miCopy" text="isisfish.script.menu.copy" onActionPerformed="getScriptAction().copy()" accelerator="accCopy" enabled='{isTextSelected()}' />
+ <JMenuItem id="miPaste" text="isisfish.script.menu.paste" onActionPerformed="getScriptAction().paste()" accelerator="accPaste" enabled='{isSingleFileSelected()}' />
</JMenu>
- <JMenu id="scriptTxtVCS" text="isisfish.script.menu.txtVCS">
- <JMenuItem id="miCommitVCS" enabled='false' text="isisfish.script.menu.commit" accelerator="accCommitVCS" onActionPerformed="commitScript()"/>
- <JMenuItem id="miDiffVCS" enabled='false' text="isisfish.script.menu.diff" accelerator="mnDiffVCS" onActionPerformed="diffScript()"/>
- <JMenuItem id="miUpdateVCS" enabled='false' text="isisfish.script.menu.update" accelerator="accUpdateVCS" onActionPerformed="updateScript()"/>
+ <JMenu id="scriptTxtVCS" text="isisfish.script.menu.txtVCS">
+ <JMenuItem id="miCommitVCS" text="isisfish.script.menu.commit" accelerator="accCommitVCS" onActionPerformed="getScriptAction().commitScript()" enabled='{isSingleFileSelected()}' />
+ <JMenuItem id="miDiffVCS" text="isisfish.script.menu.diff" accelerator="mnDiffVCS" onActionPerformed="getScriptAction().diffScript()" enabled='{isSingleFileSelected()}' />
+ <JMenuItem id="miUpdateVCS" text="isisfish.script.menu.update" accelerator="accUpdateVCS" onActionPerformed="getScriptAction().updateScript()"/>
<JSeparator/>
- <JMenuItem id="miDeleteVCS" enabled='false' text="isisfish.script.menu.deleteLocalyServer" onActionPerformed='deleteScript(true)' accelerator="accDeleteVCS"/>
+ <JMenuItem id="miDeleteVCS" text="isisfish.script.menu.deleteLocalyServer" onActionPerformed='getScriptAction().deleteScript(true)' accelerator="accDeleteVCS" enabled='{isSingleFileSelected()}'/>
</JMenu>
<JMenu id="scriptTxtCode" text="isisfish.script.menu.code">
- <JMenuItem id="miCheckSyntax" text="isisfish.script.menu.checkSyntax" accelerator="accCheckSyntax" onActionPerformed="checkScript()"/>
- <JMenuItem id="miEvaluate" text="isisfish.script.menu.evaluate" accelerator="accEvaluate" onActionPerformed="evaluateScript()"/>
+ <JMenuItem id="miCheckSyntax" text="isisfish.script.menu.checkSyntax" accelerator="accCheckSyntax" onActionPerformed="getScriptAction().checkScript()" enabled='{isJavaFileSelected()}' />
+ <JMenuItem id="miEvaluate" text="isisfish.script.menu.evaluate" accelerator="accEvaluate" onActionPerformed="getScriptAction().evaluateScript()" enabled='{isJavaFileSelected()}' />
<JSeparator/>
- <JMenuItem id="miGenerateJavadoc" text="isisfish.script.menu.javadocgenerate" onActionPerformed="generateScriptJavadoc()"/>
- <JMenuItem id="miShowJavadoc" text="isisfish.script.menu.javadocshow" onActionPerformed="showScriptJavadoc()"/>
+ <JMenuItem id="miGenerateJavadoc" text="isisfish.script.menu.javadocgenerate" onActionPerformed="getScriptAction().generateScriptJavadoc()"/>
+ <JMenuItem id="miShowJavadoc" text="isisfish.script.menu.javadocshow" onActionPerformed="getScriptAction().showScriptJavadoc()"/>
</JMenu>
</JMenuBar>
- <!--
- | Toolbar
- +-->
- <JPanel layout='{new BorderLayout()}' constraints='BorderLayout.CENTER'>
+ <!-- Toolbar -->
+ <JPanel layout='{new BorderLayout()}' constraints='BorderLayout.CENTER'>
<JPanel id="buttonBar" layout='{new GridLayout()}' constraints='BorderLayout.NORTH'>
- <JComboBox id="ScriptTypeChoice" model='{new DefaultComboBoxModel(getContextValue(ScriptAction.class).getScriptTypesNames())}'/>
- <JButton id="buttonScriptNew" text="isisfish.script.new" toolTipText='isisfish.script.new.tooltip' onActionPerformed='newScript()'/>
- <JButton id="buttonScriptSave" text="isisfish.script.save" toolTipText="isisfish.script.save.tooltip" enabled='false' onActionPerformed='saveScript()'/>
- <JButton id="buttonScriptExport" text="isisfish.script.export" toolTipText="isisfish.script.export.tooltip" enabled='false' onActionPerformed='exportScript()'/>
- <JButton id="buttonScriptCommit" text="isisfish.script.commit" toolTipText="isisfish.script.commit.tooltip" enabled='false' onActionPerformed='commitScript()'/>
- <JButton id="buttonScriptCut" text="isisfish.script.cut" toolTipText="isisfish.script.cut.tooltip" enabled='false' onActionPerformed='cut()'/>
- <JButton id="buttonScriptCopy" text="isisfish.script.copy" toolTipText="isisfish.script.copy.tooltip" enabled='false' onActionPerformed='copy()'/>
- <JButton id="buttonScriptPaste" text="isisfish.script.paste" toolTipText="isisfish.script.paste.tooltip" enabled='false' onActionPerformed='paste()'/>
- <JButton id="buttonScriptCheck" text="isisfish.script.check" toolTipText="isisfish.script.check.tooltip" enabled='false' onActionPerformed='checkScript()'/>
- <JButton id="buttonScriptEval" text="isisfish.script.evaluate" toolTipText="isisfish.script.evaluate.tooltip" enabled='false' onActionPerformed='evaluateScript()'/>
+ <JComboBox id="scriptTypeChoice" model='{new ScriptTypesComboModel()}'/>
+ <JButton id="buttonScriptNew" text="isisfish.script.new" toolTipText='isisfish.script.new.tooltip' onActionPerformed='getScriptAction().newScript()' />
+ <JButton id="buttonScriptSave" text="isisfish.script.save" toolTipText="isisfish.script.save.tooltip" enabled='{isSingleFileSelected()}' onActionPerformed='getScriptAction().saveScript()' />
+ <JButton id="buttonScriptExport" text="isisfish.script.export" toolTipText="isisfish.script.export.tooltip" enabled='false' onActionPerformed='getScriptAction().exportScript()' />
+ <JButton id="buttonScriptCommit" text="isisfish.script.commit" toolTipText="isisfish.script.commit.tooltip" enabled='{isSingleFileSelected()}' onActionPerformed='getScriptAction().commitScript()' />
+ <JButton id="buttonScriptCut" text="isisfish.script.cut" toolTipText="isisfish.script.cut.tooltip" enabled='{isTextSelected()}' onActionPerformed='getScriptAction().cut()' />
+ <JButton id="buttonScriptCopy" text="isisfish.script.copy" toolTipText="isisfish.script.copy.tooltip" enabled='{isTextSelected()}' onActionPerformed='getScriptAction().copy()' />
+ <JButton id="buttonScriptPaste" text="isisfish.script.paste" toolTipText="isisfish.script.paste.tooltip" enabled='{isSingleFileSelected()}' onActionPerformed='getScriptAction().paste()' />
+ <JButton id="buttonScriptCheck" text="isisfish.script.check" toolTipText="isisfish.script.check.tooltip" enabled='{isJavaFileSelected()}' onActionPerformed='getScriptAction().checkScript()' />
+ <JButton id="buttonScriptEval" text="isisfish.script.evaluate" toolTipText="isisfish.script.evaluate.tooltip" enabled='{isJavaFileSelected()}' onActionPerformed='getScriptAction().evaluateScript()' />
</JPanel>
<JSplitPane oneTouchExpandable="true" dividerLocation="250" orientation="HORIZONTAL" constraints='BorderLayout.CENTER'>
<JScrollPane>
- <javax.swing.JTree id="tree" name="tree" rootVisible="false" model='{getTreeModel()}' />
+ <JTree id="tree" name="tree" rootVisible="false"
+ model='{new fr.ifremer.isisfish.ui.script.model.ScriptTreeModel()}'
+ cellRenderer='{new fr.ifremer.isisfish.ui.script.model.ScriptTreeCellRenderer()}' />
</JScrollPane>
<JSplitPane oneTouchExpandable="true" resizeWeight="0.75" orientation="VERTICAL">
<org.nuiton.widget.editor.Editor id='editor'/>
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeCellRenderer.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeCellRenderer.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeCellRenderer.java 2009-10-26 15:19:57 UTC (rev 2693)
@@ -0,0 +1,97 @@
+/* *##%
+ * 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.model;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.io.File;
+
+import javax.swing.JLabel;
+import javax.swing.JTree;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.vcs.VCSException;
+import fr.ifremer.isisfish.vcs.VCS.Status;
+
+/**
+ * Renderer for script tree.
+ *
+ * Can display VCS local status on files.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class ScriptTreeCellRenderer extends DefaultTreeCellRenderer {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 807570061868454777L;
+
+ /** Class logger. */
+ private static Log log = LogFactory.getLog(ScriptTreeCellRenderer.class);
+
+ /*
+ * @see javax.swing.tree.TreeCellRenderer#getTreeCellRendererComponent(javax.swing.JTree, java.lang.Object, boolean, boolean, boolean, int, boolean)
+ */
+ @Override
+ public Component getTreeCellRendererComponent(JTree tree, Object value,
+ boolean selected, boolean expanded, boolean leaf, int row,
+ boolean hasFocus) {
+
+ JLabel c = (JLabel)super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
+
+ if (value instanceof File) {
+ File file = (File)value;
+
+ try {
+ if (file.isFile()) {
+ if (IsisFish.vcs.getLocalStatus(file) == Status.STATUS_MODIFIED) {
+ if (selected) {
+ c.setForeground(new Color(188, 188, 255));
+ }
+ else {
+ c.setForeground(Color.BLUE);
+ }
+ }
+ else if (IsisFish.vcs.getLocalStatus(file) == Status.STATUS_ADDED) {
+ if (selected) {
+ c.setForeground(Color.GREEN.brighter());
+ }
+ else {
+ c.setForeground(Color.GREEN.darker());
+ }
+ }
+ }
+ } catch (VCSException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't get file status", e);
+ }
+ }
+ c.setText(file.getName());
+ }
+
+ return c;
+ }
+}
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeCellRenderer.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeModel.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeModel.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeModel.java 2009-10-26 15:19:57 UTC (rev 2693)
@@ -0,0 +1,332 @@
+/* *##%
+ * 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.model;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.swing.event.TreeModelListener;
+import javax.swing.tree.TreeModel;
+import javax.swing.tree.TreePath;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jdesktop.swingx.tree.TreeModelSupport;
+
+import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
+import fr.ifremer.isisfish.datastore.ExportStorage;
+import fr.ifremer.isisfish.datastore.FormuleStorage;
+import fr.ifremer.isisfish.datastore.RuleStorage;
+import fr.ifremer.isisfish.datastore.ScriptStorage;
+import fr.ifremer.isisfish.datastore.SensitivityExportStorage;
+import fr.ifremer.isisfish.datastore.SensitivityStorage;
+import fr.ifremer.isisfish.datastore.SimulatorStorage;
+
+/**
+ * Tree model for scripts edition.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class ScriptTreeModel implements TreeModel {
+
+ /** Class logger. */
+ private static Log log = LogFactory.getLog(ScriptTreeModel.class);
+
+ protected TreeModelSupport modelSupport;
+
+ public List<File> rootFiles;
+
+ /** Add node operation */
+ public static final int OPERATION_ADD = 0;
+ /** Modify node operation */
+ public static final int OPERATION_MODIFY = 1;
+ /** Delete Node operation */
+ public static final int OPERATION_DELETE = 2;
+
+ public ScriptTreeModel() {
+ modelSupport = new TreeModelSupport(this);
+
+ rootFiles = new ArrayList<File>();
+ rootFiles.add(AnalysePlanStorage.getAnalysePlanDirectory());
+ rootFiles.add(ExportStorage.getExportDirectory());
+ rootFiles.add(FormuleStorage.getFormuleDirectory());
+ rootFiles.add(RuleStorage.getRuleDirectory());
+ rootFiles.add(ScriptStorage.getScriptDirectory());
+ rootFiles.add(SensitivityExportStorage.getSensitivityExportDirectory());
+ rootFiles.add(SensitivityStorage.getSensitivityDirectory());
+ rootFiles.add(SimulatorStorage.getSimulatorDirectory());
+ }
+
+ /*
+ * @see javax.swing.tree.TreeModel#addTreeModelListener(javax.swing.event.TreeModelListener)
+ */
+ @Override
+ public void addTreeModelListener(TreeModelListener l) {
+ modelSupport.addTreeModelListener(l);
+ }
+
+ /*
+ * @see javax.swing.tree.TreeModel#getChild(java.lang.Object, int)
+ */
+ @Override
+ public Object getChild(Object parent, int index) {
+
+ Object result = null;
+
+ if (parent == rootFiles) {
+ result = rootFiles.get(index);
+ }
+ else {
+ File parentFile = (File)parent;
+ File[] filesArray = parentFile.listFiles();
+ List<File> files = getVersionnableSortedFiles(filesArray);
+ result = files.get(index);
+ }
+
+ return result;
+ }
+
+ /*
+ * @see javax.swing.tree.TreeModel#getChildCount(java.lang.Object)
+ */
+ @Override
+ public int getChildCount(Object parent) {
+
+ int count = 0;
+ if (parent == rootFiles) {
+ count = rootFiles.size();
+ }
+ else {
+ File parentFile = (File)parent;
+ File[] filesArray = parentFile.listFiles();
+ if ( filesArray != null) {
+ List<File> files = getVersionnableSortedFiles(filesArray);
+ count = files.size();
+ }
+ }
+ return count;
+ }
+
+ /*
+ * @see javax.swing.tree.TreeModel#getIndexOfChild(java.lang.Object, java.lang.Object)
+ */
+ @Override
+ public int getIndexOfChild(Object parent, Object child) {
+ int index = 0;
+ if (parent == rootFiles) {
+ index = rootFiles.indexOf(child);
+ }
+ else {
+ File parentFile = (File)parent;
+ File[] filesArray = parentFile.listFiles();
+ List<File> files = getVersionnableSortedFiles(filesArray);
+ index = files.indexOf(child);
+ }
+ return index;
+ }
+
+ /*
+ * @see javax.swing.tree.TreeModel#getRoot()
+ */
+ @Override
+ public Object getRoot() {
+ return rootFiles;
+ }
+
+ /*
+ * @see javax.swing.tree.TreeModel#isLeaf(java.lang.Object)
+ */
+ @Override
+ public boolean isLeaf(Object node) {
+ return getChildCount(node) == 0;
+ }
+
+ /*
+ * @see javax.swing.tree.TreeModel#removeTreeModelListener(javax.swing.event.TreeModelListener)
+ */
+ @Override
+ public void removeTreeModelListener(TreeModelListener l) {
+ modelSupport.removeTreeModelListener(l);
+ }
+
+ /*
+ * @see javax.swing.tree.TreeModel#valueForPathChanged(javax.swing.tree.TreePath, java.lang.Object)
+ */
+ @Override
+ public void valueForPathChanged(TreePath path, Object newValue) {
+
+ }
+
+ /**
+ * Filter input file array and return only sorted collection with only directories.
+ *
+ * @param files file array
+ * @return sorted list
+ */
+ protected List<File> getVersionnableSortedFiles(File[] filesArray) {
+ List<File> files = new ArrayList<File>();
+ for (File fileArray : filesArray) {
+ if (IsisFish.vcs.isVersionnableFile(fileArray)) {
+ files.add(fileArray);
+ }
+ }
+ Collections.sort(files);
+ return files;
+ }
+
+ /**
+ * Notify for file addition.
+ *
+ * @param file added file
+ */
+ public void fileAdded(File file) {
+ TreePath path = new TreePath(rootFiles);
+ updateChildren(file, path, OPERATION_ADD);
+ }
+
+ /**
+ * Notify for file modification.
+ *
+ * @param file modified file
+ */
+ public void fileModified(File file) {
+ TreePath path = new TreePath(rootFiles);
+ updateChildren(file, path, OPERATION_MODIFY);
+ }
+
+ /**
+ * Notify for file deletion.
+ *
+ * TODO must be called "before" effective deletion
+ *
+ * @param file deleted file
+ */
+ public void fileDeleted(File file) {
+ TreePath path = new TreePath(rootFiles);
+ updateChildren(file, path, OPERATION_DELETE);
+ }
+
+ /**
+ * Notify for tree operation.
+ *
+ * @param file
+ * @param path path to update
+ * @param operation operation {@link #OPERATION_ADD #OPERATION_DELETE #OPERATION_MODIFY}
+ * @return {@code true} if path has been updated
+ */
+ protected boolean updateChildren(File file, TreePath path,
+ int operation) {
+ Object pathLastComponent = (Object) path.getLastPathComponent();
+
+ // pour ses enfants
+ boolean updated = false;
+ int childCount = getChildCount(pathLastComponent);
+ for (int childIndex = 0; !updated && childIndex < childCount; ++childIndex) {
+ File child = (File) getChild(pathLastComponent, childIndex);
+
+ TreePath childTreePath = path.pathByAddingChild(child);
+
+ if (file.equals(child)) {
+
+ // this update only node, not all path...
+ switch (operation) {
+
+ case OPERATION_ADD:
+ modelSupport.fireChildAdded(path, childIndex, child);
+ // expand path
+ //projectsAndTaskTable.expandPath(path);
+ break;
+
+ case OPERATION_DELETE:
+ modelSupport.fireChildRemoved(path, childIndex, child);
+ break;
+
+ case OPERATION_MODIFY:
+ modelSupport.fireChildChanged(path, childIndex, child);
+ break;
+
+ default:
+ if (log.isErrorEnabled()) {
+ log.error("Unknow operation : " + operation);
+ }
+ }
+
+ if (log.isTraceEnabled()) {
+ log.trace(" updated : " + childTreePath);
+ }
+ updated = true;
+ } else {
+ updated = updateChildren(file, childTreePath, operation);
+
+ if (updated) {
+ // ...and by recursion update all path
+ modelSupport.firePathChanged(path);
+ }
+ }
+ }
+
+ return updated;
+ }
+
+ /**
+ * Find tree path for a file
+ *
+ * @param file to search
+ * @return tree path
+ */
+ public TreePath getTreePathFor(File file) {
+ TreePath path = new TreePath(rootFiles);
+ path = getRecursiveTreePath(file, path);
+ return path;
+ }
+
+ /**
+ * Find file in tree, and return tree path.
+ *
+ * @param file
+ * @param path path to update
+ * @return tree path
+ */
+ protected TreePath getRecursiveTreePath(File file, TreePath path) {
+ Object pathLastComponent = (Object) path.getLastPathComponent();
+ TreePath resultTreePath = null;
+
+ int childCount = getChildCount(pathLastComponent);
+ for (int childIndex = 0; resultTreePath == null && childIndex < childCount; ++childIndex) {
+ File child = (File) getChild(pathLastComponent, childIndex);
+
+ TreePath childTreePath = path.pathByAddingChild(child);
+
+ if (file.equals(child)) {
+ resultTreePath = childTreePath;
+ } else {
+ resultTreePath = getRecursiveTreePath(file, childTreePath);
+ }
+ }
+
+ return resultTreePath;
+ }
+}
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeModel.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/package-info.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/package-info.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/package-info.java 2009-10-26 15:19:57 UTC (rev 2693)
@@ -0,0 +1,5 @@
+/**
+ * Contains model and renderers for all script uis.
+ */
+package fr.ifremer.isisfish.ui.script.model;
+
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/package-info.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/package-info.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/package-info.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/package-info.java 2009-10-26 15:19:57 UTC (rev 2693)
@@ -0,0 +1,5 @@
+/**
+ * Script UI.
+ */
+package fr.ifremer.isisfish.ui.script;
+
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/package-info.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Deleted: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompilationResult.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompilationResult.java 2009-10-26 15:02:52 UTC (rev 2692)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompilationResult.java 2009-10-26 15:19:57 UTC (rev 2693)
@@ -1,105 +0,0 @@
-/* *##%
- * 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.util;
-
-/**
- * Petite structure permettant de retourner a la fois
- * un resultat de compilation et des messages d'erreur
- * et/ou d'avertissement.
- *
- * @author chatellier
- * @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
- */
-public class CompilationResult {
-
- /** Compilation success. */
- public static final int COMPILATION_OK = 0;
-
- /** Compilation failed. */
- public static final int COMPILATION_FAILED = 1;
-
- /**
- * Résultat de la compilation.
- *
- * Values are {@link #COMPILATION_OK}, {@link #COMPILATION_FAILED}.
- */
- protected int compilationResult;
-
- /** Compilation output. */
- protected String compilationOutput;
-
- /**
- * Default constructor.
- */
- public CompilationResult() {
- this(COMPILATION_OK, null);
- }
-
- /**
- * Constructor with output and result.
- *
- * @param compilationResult result
- * @param compilationOutput output
- */
- public CompilationResult(int compilationResult, String compilationOutput) {
- this.compilationResult = 0;
- this.compilationOutput = compilationOutput;
- }
-
- /**
- * Get compilation result.
- *
- * Return {@link #COMPILATION_OK} or {@link #COMPILATION_FAILED}.
- *
- * @return the compilationResult
- */
- public int getCompilationResult() {
- return compilationResult;
- }
-
- /**
- * Set compilation result.
- *
- * @param compilationResult the compilationResult to set
- */
- public void setCompilationResult(int compilationResult) {
- this.compilationResult = compilationResult;
- }
-
- /**
- * Return compilation output.
- *
- * @return the compilationOutput
- */
- public String getCompilationOutput() {
- return compilationOutput;
- }
-
- /**
- * Set compilation output.
- *
- * @param compilationOutput the compilationOutput to set
- */
- public void setCompilationOutput(String compilationOutput) {
- this.compilationOutput = compilationOutput;
- }
-}
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-10-26 15:02:52 UTC (rev 2692)
+++ isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-10-26 15:19:57 UTC (rev 2693)
@@ -16,7 +16,6 @@
Can't\ get\ changlog=
Can't\ get\ result\:\ %1$s=Can't get result\: %1$s
Can't\ instanciate\ export\ %1$s=Can't instanciate export %1$s
-Can't\ instanciate\ wanted\ VCS\ (%s),\ use\ default=
Can't\ instantiate\ %s=
Can't\ open\ log\ for\ %s=
Can't\ open\ simulation\ internal\ frame=
@@ -141,6 +140,8 @@
isisfish.common.warn=warn
isisfish.common.year=year
isisfish.common.zone=Zone
+isisfish.config.category.main=Main
+isisfish.config.category.main.description=Main configuration
isisfish.config.database.lockmode.description=
isisfish.config.main.compileDirectory.description=
isisfish.config.main.configFileName.description=
@@ -605,7 +606,7 @@
isisfish.message.confirm.remove.region=Do you really want to remove the region %1$s ?
isisfish.message.confirm.remove.script=Do you want to remove script '%1$s' ?
isisfish.message.copy.finished=Copy finished
-isisfish.message.copy.region=Copy region to %1$s
+isisfish.message.copy.region=Copy region
isisfish.message.creating.region=Creating region %1$s
isisfish.message.creation.done=creation done %1$s
isisfish.message.creation.finished=Creation finished
@@ -657,7 +658,7 @@
isisfish.message.save.finished=Save finished
isisfish.message.saveModel.dialog=Input equation model name
isisfish.message.saveModel.finished=Save model finished
-isisfish.message.script.commit=Enter commit message
+isisfish.message.script.commit=Enter commit message for modification on %s
isisfish.message.setting.cache.aspects=Setting Cache aspects
isisfish.message.setting.trace.aspects=Setting Trace aspects
isisfish.message.simulation.ended=Simulation ended
@@ -937,6 +938,8 @@
isisfish.script.save=Save
isisfish.script.save.tooltip=Sauve le script
isisfish.script.title=Script Editor
+isisfish.script.vcs.localaddition=This file is not present on remote repository
+isisfish.script.vcs.localmodification=This file has local modifications
isisfish.season.toString=season %1$s-%2$s
isisfish.selectivity.equation=Equation
isisfish.selectivity.selectPopulation=Select a population
@@ -1029,8 +1032,11 @@
isisfish.vcs.commit.cancel=vcs.commit.cancel
isisfish.vcs.commit.label=vcs.commit.label
isisfish.vcs.commit.ok=vcs.commit.ok
+isisfish.vcs.factory.cantinstanciate=Can't instanciate wanted VCS (%s), use default
+isisfish.vcs.howto.save.key=How to register my public key on labs forge
isisfish.vcs.init.notfoundcantdownload=No database version %s found and can't get it.\nYou must go to ISIS-Fish web site and download database manually.
isisfish.vcs.init.wrongprotocol=Your database repository\: %s\n don't use correct protocol.\nDo you want to make backup of your database and take the correct one ?
+isisfish.vcs.save.key=Go to labs forge to register my public key
isisfish.vcs.switchprotocol.confirm=Protocol to access repository script has changed.\nDo you want to switch your repository ?
isisfish.vcs.switchtag.warningconflict=Your repository is now up-to-date, but following files are conflicted, you may check them \:
isisfish.vcs.switchversion.confirm=You don't use correct repository script for your application version %s.\nDo you want to switch your repository ?
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-10-26 15:02:52 UTC (rev 2692)
+++ isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-10-26 15:19:57 UTC (rev 2693)
@@ -16,7 +16,6 @@
Can't\ get\ changlog=Impossible d'obtenir de changelog
Can't\ get\ result\:\ %1$s=Can't get result\: %1$s
Can't\ instanciate\ export\ %1$s=Can't instanciate export %1$s
-Can't\ instanciate\ wanted\ VCS\ (%s),\ use\ default=
Can't\ instantiate\ %s=
Can't\ open\ log\ for\ %s=
Can't\ open\ simulation\ internal\ frame=
@@ -141,6 +140,8 @@
isisfish.common.warn=Warning
isisfish.common.year=ann\u00E9e
isisfish.common.zone=Zone
+isisfish.config.category.main=Globale
+isisfish.config.category.main.description=Configuration globale
isisfish.config.database.lockmode.description=
isisfish.config.main.compileDirectory.description=le r\u00E9pertoire o\u00F9 sont compil\u00E9s les scripts
isisfish.config.main.configFileName.description=le fichier de configuration \u00E0 utiliser
@@ -263,7 +264,7 @@
isisfish.error.equation.openeditor=Impossible d'ouvrir l'editeur d'\u00E9quation
isisfish.error.equation.return.number=EquationImpl must retun a number\: %1$s
isisfish.error.equation.savemodel=Impossible de sauver l'\u00E9quation en tant que mod\u00E8le
-isisfish.error.errorpane.htmlmessage=IsisFish a d\u00E9tect\u00E9 une erreur \:
+isisfish.error.errorpane.htmlmessage=<html><b>IsisFish a d\u00E9tect\u00E9 une erreur \:</b><br />%s</b></html>
isisfish.error.errorpane.title=Erreur
isisfish.error.evaluate.equation=Can't evaluate equation\: %1$s
isisfish.error.evaluate.preplan.script=
@@ -605,7 +606,7 @@
isisfish.message.confirm.remove.region=Voulez-vous vraiment supprimer la r\u00E9gion %1$s ?
isisfish.message.confirm.remove.script=Voulez-vous vraiment supprimer le script '%1$s' ?
isisfish.message.copy.finished=Copie termin\u00E9e
-isisfish.message.copy.region=Copier la r\u00E9gion vers %1$s
+isisfish.message.copy.region=Copier la r\u00E9gion
isisfish.message.creating.region=En train de cr\u00E9er la r\u00E9gion %1$s
isisfish.message.creation.done=Cr\u00E9ation termin\u00E9e %1$s
isisfish.message.creation.finished=Cr\u00E9ation termin\u00E9e
@@ -641,7 +642,7 @@
isisfish.message.new.filename=Entrez le nom du nouveau du fichier.\n\t (utiliser uniquemment des caract\u00E8res et _ en commencant avec une majuscule)
isisfish.message.new.formule.category=Choisissez le cat\u00E9gorie de la formule
isisfish.message.new.formule.title=Nouvelle formule
-isisfish.message.new.region.name=Entrer le nom de la nouvell r\u00E9gion
+isisfish.message.new.region.name=Entrer le nom de la nouvelle r\u00E9gion
isisfish.message.old.simulation.loaded=Ancienne simulation charg\u00E9e
isisfish.message.page.modified=Cette page a \u00E9t\u00E9 modifi\u00E9, voulez-vous la sauvegarder ?
isisfish.message.presimulation.script.execution=Ex\u00E9cution des scripts de Presimulation
@@ -657,7 +658,7 @@
isisfish.message.save.finished=Sauvegarde termin\u00E9e
isisfish.message.saveModel.dialog=Entrez le nom du mod\u00E8le d'equation
isisfish.message.saveModel.finished=Sauvegarde du mod\u00E8le termin\u00E9e
-isisfish.message.script.commit=Indiquez vos modifications
+isisfish.message.script.commit=Indiquez un message pour committer les modifications fa\u00EEtes sur %s
isisfish.message.setting.cache.aspects=Mise en place des aspects Cache
isisfish.message.setting.trace.aspects=Mise en place des aspects Trace
isisfish.message.simulation.ended=Simulation termin\u00E9e
@@ -937,6 +938,8 @@
isisfish.script.save=Sauver
isisfish.script.save.tooltip=Sauve le script
isisfish.script.title=Editeur de scripts
+isisfish.script.vcs.localaddition=Ce fichier n'est pas pr\u00E9sent sur le d\u00E9p\u00F4t
+isisfish.script.vcs.localmodification=Ce fichier a des moficiations locale
isisfish.season.toString=saison %1$s-%2$s
isisfish.selectivity.equation=Equation
isisfish.selectivity.selectPopulation=S\u00E9lectionnez une population
@@ -1029,8 +1032,11 @@
isisfish.vcs.commit.cancel=annuler
isisfish.vcs.commit.label=Entrer quelques mots concernant la modification des scripts
isisfish.vcs.commit.ok=confirmer
+isisfish.vcs.factory.cantinstanciate=Can't instanciate wanted VCS (%s), use default
+isisfish.vcs.howto.save.key=Comment enregister sa clef publique ssh aupr\u00E8s du labs
isisfish.vcs.init.notfoundcantdownload=La base de donn\u00E9es pour la version %s n'a ni pu \u00EAtre trouv\u00E9e, ni t\u00E9l\u00E9charg\u00E9e.\nVous devez la t\u00E9l\u00E9charger manullement \u00E0 partir du site d'Isis-Fish.
isisfish.vcs.init.wrongprotocol=Votre base de donn\u00E9es locale \: %s n'utilise pas un protocole correct.\nVoulez-vous faire une sauvegarde de cette base et r\u00E9cup\u00E9rer une meilleure version ?
+isisfish.vcs.save.key=Acc\u00E9der au labs pour enregister votre clef publique ssh
isisfish.vcs.switchprotocol.confirm=Le protocole d'acc\u00E8s au d\u00E9p\u00F4t des scripts a chang\u00E9.\nVoulez-vous changer vers le nouveau d\u00E9p\u00F4t ?
isisfish.vcs.switchtag.warningconflict=Votre base de donn\u00E9es a \u00E9t\u00E9 mise \u00E0 jour mais les fichiers suivants sont en conflit, merci de les v\u00E9rifier \:
isisfish.vcs.switchversion.confirm=Vous n'utilisez pas le d\u00E9p\u00F4t correct pour votre version d'Isis-Fish \: %s.\nVoulez-vous changer de d\u00E9p\u00F4t ?
1
0
r2692 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config
by chatellier@users.labs.libre-entreprise.org 26 Oct '09
by chatellier@users.labs.libre-entreprise.org 26 Oct '09
26 Oct '09
Author: chatellier
Date: 2009-10-26 15:02:52 +0000 (Mon, 26 Oct 2009)
New Revision: 2692
Removed:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/ConfigUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/IsisConfigTableModel.java
Log:
Replaced by jaxx configuration editor.
Deleted: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/ConfigUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/ConfigUI.jaxx 2009-10-26 15:02:11 UTC (rev 2691)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/ConfigUI.jaxx 2009-10-26 15:02:52 UTC (rev 2692)
@@ -1,36 +0,0 @@
-<!--
-/* *##%
- * 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.
- *##%*/
- -->
-<JFrame title='isisfish.welcome.menu.configuration'>
- <JPanel layout='{new BorderLayout()}'>
- <JScrollPane constraints="BorderLayout.CENTER">
- <JTable id='propertiesTable' model='{new IsisConfigTableModel()}' />
- </JScrollPane>
- <Table constraints="BorderLayout.SOUTH">
- <row>
- <cell fill="none" weightx="1">
- <JButton id='cancelButton' text='isisfish.common.cancel' onActionPerformed='' visible='false' />
- </cell>
- <cell fill='none' anchor='east' weightx="1">
- <JButton id='okButton' text='isisfish.common.ok' onActionPerformed='dispose()' />
- </cell>
- </row>
- </Table>
- </JPanel>
-</JFrame>
\ No newline at end of file
Deleted: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/IsisConfigTableModel.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/IsisConfigTableModel.java 2009-10-26 15:02:11 UTC (rev 2691)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/IsisConfigTableModel.java 2009-10-26 15:02:52 UTC (rev 2692)
@@ -1,154 +0,0 @@
-/* *##%
- * 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.config;
-
-import static org.nuiton.i18n.I18n._;
-
-import javax.swing.table.AbstractTableModel;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import fr.ifremer.isisfish.IsisConfig;
-import fr.ifremer.isisfish.IsisFish;
-
-/**
- * Model pour l'edition des proprietes de IsisConfig.
- *
- * Columns :
- * <li>Property name</li>
- * <li>Property value</li>
- *
- * @author chatellier
- * @version $Revision: 2418 $
- *
- * Last update : $Date: 2009-06-22 14:52:27 +0200 (lun. 22 juin 2009) $
- * By : $Author: chatellier $
- */
-public class IsisConfigTableModel extends AbstractTableModel {
-
- /** Log. */
- private static Log log = LogFactory
- .getLog(IsisConfigTableModel.class);
-
- /** serialVersionUID. */
- private static final long serialVersionUID = 4593731087704399810L;
-
- /** Columns names. */
- public final static String[] COLUMN_NAMES = { _("isisfish.common.name"),
- _("isisfish.common.value") };
-
- /*
- * @see javax.swing.table.TableModel#getColumnCount()
- */
- @Override
- public int getColumnCount() {
- return COLUMN_NAMES.length;
- }
-
- /*
- * @see javax.swing.table.TableModel#getRowCount()
- */
- @Override
- public int getRowCount() {
- return IsisConfig.Option.values().length;
- }
-
- /*
- * @see javax.swing.table.TableModel#getValueAt(int, int)
- */
- @Override
- public Object getValueAt(int rowIndex, int columnIndex) {
-
- Object result = null;
-
- String name = IsisConfig.Option.values()[rowIndex].key;
- switch (columnIndex) {
- case 0:
- result = name;
- break;
- case 1:
- result = IsisFish.config.getOption(name);
- break;
- default:
- throw new IndexOutOfBoundsException("No such column " + columnIndex);
- }
-
- return result;
- }
-
- /*
- * @see javax.swing.table.TableModel#getColumnClass(int)
- */
- @Override
- public Class<?> getColumnClass(int columnIndex) {
-
- Class<?> result = null;
-
- switch (columnIndex) {
- case 0:
- result = String.class;
- break;
- case 1:
- result = String.class;
- break;
- default:
- throw new IndexOutOfBoundsException("No such column " + columnIndex);
- }
-
- return result;
- }
-
- /*
- * @see javax.swing.table.TableModel#getColumnName(int)
- */
- @Override
- public String getColumnName(int columnIndex) {
- return COLUMN_NAMES[columnIndex];
- }
-
- /*
- * @see javax.swing.table.TableModel#isCellEditable(int, int)
- */
- @Override
- public boolean isCellEditable(int rowIndex, int columnIndex) {
- return columnIndex > 0;
- }
-
- /*
- * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
- */
- @Override
- public void setValueAt(Object value, int rowIndex, int columnIndex) {
-
- if (log.isDebugEnabled()) {
- log.debug("Cell edition (column " + columnIndex + ") = " + value);
- }
-
- String name = IsisConfig.Option.values()[rowIndex].key;
- switch (columnIndex) {
- case 1:
- IsisFish.config.setOption(name, (String)value);
- break;
- default:
- throw new IndexOutOfBoundsException("No such column " + columnIndex);
- }
-
- }
-}
1
0