Coser-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
August 2012
- 3 participants
- 44 discussions
07 Aug '12
Author: echatellier
Date: 2012-08-07 15:40:47 +0200 (Tue, 07 Aug 2012)
New Revision: 1031
Url: http://forge.codelutin.com/repositories/revision/coser/1031
Log:
refs #1331 : G?\195?\169rer les esp?\195?\168ces par C_Perm, AA_Valide ou L_Valide
Added:
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesComboRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesTableCellRenderer.java
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionReplayHandler.java
trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties
trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java 2012-08-06 15:01:20 UTC (rev 1030)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java 2012-08-07 13:40:47 UTC (rev 1031)
@@ -29,8 +29,13 @@
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -219,4 +224,25 @@
}
return result;
}
+
+ /**
+ * Sort a map by value.
+ * See http://stackoverflow.com/a/2581754/1165234
+ *
+ * @param map map to sort
+ * @return sorted map
+ */
+ public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map) {
+ List<Map.Entry<K, V>> list = new LinkedList<Map.Entry<K, V>>(map.entrySet());
+ Collections.sort( list, new Comparator<Map.Entry<K, V>>() {
+ public int compare( Map.Entry<K, V> o1, Map.Entry<K, V> o2 ) {
+ return (o1.getValue()).compareTo( o2.getValue() );
+ }
+ });
+ Map<K, V> result = new LinkedHashMap<K, V>();
+ for (Map.Entry<K, V> entry : list) {
+ result.put(entry.getKey(), entry.getValue());
+ }
+ return result;
+ }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java 2012-08-06 15:01:20 UTC (rev 1030)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java 2012-08-07 13:40:47 UTC (rev 1031)
@@ -414,20 +414,20 @@
Date date = new Date(Long.parseLong(props.getProperty("project.creationdate")));
setCreationDate(date);
}
-
+
// species field type was added in 1.3+
// missing values for previous project are considered as L_Valide
- if (props.contains("project.storageSpeciesType")) {
+ if (props.containsKey("project.storageSpeciesType")) {
setStorageSpeciesType(SpeciesFieldType.valueOf(props.getProperty("project.storageSpeciesType")));
} else {
setStorageSpeciesType(SpeciesFieldType.C_Valide);
}
- if (props.contains("project.displaySpeciesType")) {
+ if (props.containsKey("project.displaySpeciesType")) {
setDisplaySpeciesType(SpeciesFieldType.valueOf(props.getProperty("project.displaySpeciesType")));
} else {
setDisplaySpeciesType(SpeciesFieldType.C_Valide);
}
- if (props.contains("project.outputSpeciesType")) {
+ if (props.containsKey("project.outputSpeciesType")) {
setOutputSpeciesType(SpeciesFieldType.valueOf(props.getProperty("project.outputSpeciesType")));
} else {
setOutputSpeciesType(SpeciesFieldType.C_Valide);
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java 2012-08-06 15:01:20 UTC (rev 1030)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java 2012-08-07 13:40:47 UTC (rev 1031)
@@ -54,8 +54,8 @@
import fr.ifremer.coser.CoserBusinessConfig;
import fr.ifremer.coser.CoserBusinessException;
import fr.ifremer.coser.CoserConstants;
+import fr.ifremer.coser.CoserConstants.Category;
import fr.ifremer.coser.CoserUtils;
-import fr.ifremer.coser.CoserConstants.Category;
import fr.ifremer.coser.bean.Project;
import fr.ifremer.coser.data.AbstractDataEntity;
import fr.ifremer.coser.data.Catch;
@@ -148,8 +148,7 @@
if (line == null || line.length <= 1) {
throw new CoserBusinessException(_("Can't read file '%s'. Check CSV file separator",
file.getAbsolutePath()));
- }
- else {
+ } else {
if (originalLoading) {
checkFileHeader(file, category, line);
if (category.isDataCategory()) {
@@ -174,8 +173,7 @@
}
} catch (IOException ex) {
throw new CoserBusinessException("Can't read file", ex);
- }
- finally {
+ } finally {
IOUtils.closeQuietly(csvReader);
}
@@ -228,8 +226,7 @@
StringUtils.join(frHeaders, ", "),
StringUtils.join(enHeaders, ", ")));
}
- }
- else {
+ } else {
if (!Arrays.equals(line, enHeaders)) {
throw new CoserBusinessException(_("Wrong header detected in file %s. Found : %s, expected %s",
file.getName(),
@@ -299,10 +296,13 @@
*
* @param content content to save
* @param file file to save to
+ * @param project project used only to get species output field (can be null)
+ * @param category category used to replace species output field if needed (can be null)
*
* @throws CoserBusinessException
*/
- public void storeDataWhithoutQuote(DataStorage content, File file) throws CoserBusinessException {
+ public void storeDataWhithoutQuote(DataStorage content, File file, Map<String, String> refTaxSpecies, Category category) throws CoserBusinessException {
+
// save content
Writer writer = null;
try {
@@ -320,10 +320,20 @@
}
String contentData = contentDatas[i];
+
+ // for some category, need to swap species output field with
+ // user preference (since 1.3)
+ if ((category == Category.CATCH && i == Catch.INDEX_SPECIES) ||
+ (category == Category.LENGTH && i == Length.INDEX_SPECIES)) {
+ // can not exists, stay unchanged
+ if (refTaxSpecies.containsKey(contentData)) {
+ contentData = refTaxSpecies.get(contentData);
+ }
+ }
+
if (contentData.indexOf(CoserConstants.CSV_SEPARATOR_CHAR) > -1) {
writer.write("\"" + contentData + "\"");
- }
- else {
+ } else {
writer.write(contentData);
}
}
@@ -331,8 +341,7 @@
}
} catch (IOException ex) {
throw new CoserBusinessException("Can't save data", ex);
- }
- finally {
+ } finally {
IOUtils.closeQuietly(writer);
}
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2012-08-06 15:01:20 UTC (rev 1030)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2012-08-07 13:40:47 UTC (rev 1031)
@@ -81,6 +81,7 @@
import fr.ifremer.coser.bean.Project;
import fr.ifremer.coser.bean.RSufiResult;
import fr.ifremer.coser.bean.Selection;
+import fr.ifremer.coser.bean.SpeciesFieldType;
import fr.ifremer.coser.command.Command;
import fr.ifremer.coser.command.DeleteLineCommand;
import fr.ifremer.coser.command.MergeSpeciesCommand;
@@ -376,7 +377,7 @@
* Just load non category data (reftax).
*
* @param projectName project name to open
- * @param parentDirectory optionnal custom parent directory (for results)
+ * @param parentDirectory optional custom parent directory (for results)
* @return loaded project with data
* @throws CoserBusinessException
*/
@@ -429,8 +430,7 @@
}
} catch (IOException ex) {
throw new CoserBusinessException("Can't read control properties file", ex);
- }
- finally {
+ } finally {
IOUtils.closeQuietly(inputStream);
}
}
@@ -462,8 +462,7 @@
}
} catch (IOException ex) {
throw new CoserBusinessException("Can't read selection properties file", ex);
- }
- finally {
+ } finally {
IOUtils.closeQuietly(inputStream);
}
@@ -492,8 +491,7 @@
}
} catch (IOException ex) {
throw new CoserBusinessException("Can't read project properties file", ex);
- }
- finally {
+ } finally {
IOUtils.closeQuietly(inputStream);
}
@@ -1945,45 +1943,23 @@
}
/**
- * Get species name in project.
- *
- * Used in control ui (graph).
- *
- * @param container data container
- * @return species
- */
- public List<String> getProjectSpecies(AbstractDataContainer container) {
- List<String> result = new ArrayList<String>();
-
- Iterator<String[]> itTuple = container.getCatch().iterator(true);
- while (itTuple.hasNext()) {
- String[] tuple = itTuple.next();
- String species = tuple[Catch.INDEX_SPECIES];
- if (!result.contains(species)) {
- result.add(species);
- }
- }
-
- Collections.sort(result);
- return result;
- }
-
- /**
* Get species name in project with data in [{@code beginYear}-{@code endYear}].
*
* Used in selection ui.
*
+ * Cette liste est issue du fichier captures (petit fichier, mais suffisant).
+ *
* Les especes sont determinées :
* - en lisant les traits pour determiner les traits à partir des zones
* - en lisant les captures pour determiner les especes à partir des traits
* - en filtrant la liste des especes
*
- * @param project project
* @param container data container
- * @param filterSpecyType filterSpecyType (can be null or empty)
+ * @param project project (can be {@code null}, no filtering)
+ * @param filterSpecyType filterSpecyType (can be {@code null}, no filtering)
* @return species
*/
- public List<String> getProjectSpecies(Project project, AbstractDataContainer container, Collection<String> filterSpecyType) {
+ public List<String> getProjectSpecies(AbstractDataContainer container, Project project, Collection<String> filterSpecyType) {
// first get species with trait list
List<String> result = new ArrayList<String>();
@@ -1998,62 +1974,65 @@
}
}
- // load map SpecyName > numSys
- Map<String, Integer> map = new HashMap<String, Integer>();
- Iterator<String[]> refTaxIterator = project.getRefTaxSpecies().iterator(true);
- while (refTaxIterator.hasNext()) {
- // "C_Perm";"NumSys";"NivSys";"C_VALIDE";"L_VALIDE";"AA_VALIDE";"C_TxPère";"Taxa"
- String[] tuple = refTaxIterator.next();
- String specyName = tuple[3];
- Integer iNumSys = Integer.valueOf(tuple[1]);
- map.put(specyName, iNumSys);
- }
-
- // load specy type map SpecyTypeName > [min, max]
- // iteration sur les type d'especes
- Map<String, Integer[]> mapType = new HashMap<String, Integer[]>();
- Iterator<String[]> itTypeSpecies = project.getTypeEspeces().iterator(true);
- while (itTypeSpecies.hasNext()) {
- // "Types";"Commentaire";"NumSys min";"NumSys max","Code"
- String[] tuple = itTypeSpecies.next();
- String specyType = tuple[0];
-
- if (filterSpecyType != null && filterSpecyType.contains(specyType)) {
- Integer iMinNumSys = Integer.valueOf(tuple[2]);
- Integer iMaxNumSys = Integer.valueOf(tuple[3]);
- mapType.put(specyType, new Integer[]{iMinNumSys, iMaxNumSys});
+ // filtering is optionnal
+ if (project != null && filterSpecyType != null) {
+ // load map SpecyName > numSys
+ Map<String, Integer> map = new HashMap<String, Integer>();
+ Iterator<String[]> refTaxIterator = project.getRefTaxSpecies().iterator(true);
+ while (refTaxIterator.hasNext()) {
+ // "C_Perm";"NumSys";"NivSys";"C_VALIDE";"L_VALIDE";"AA_VALIDE";"C_TxPère";"Taxa"
+ String[] tuple = refTaxIterator.next();
+ String specyName = tuple[3];
+ Integer iNumSys = Integer.valueOf(tuple[1]);
+ map.put(specyName, iNumSys);
}
- }
-
- // iteration sur les especes trouvées
- Iterator<String> itSpecies = result.iterator();
- while (itSpecies.hasNext()) {
- String specy = itSpecies.next();
- Integer specyNumSys = map.get(specy);
-
- if (specyNumSys == null) {
- // ca ne peut pas arriver, ce cs est valider
- // par un control
- if (log.isWarnEnabled()) {
- log.warn("Can't find specy " + specy + " in reftax");
+
+ // load specy type map SpecyTypeName > [min, max]
+ // iteration sur les type d'especes
+ Map<String, Integer[]> mapType = new HashMap<String, Integer[]>();
+ Iterator<String[]> itTypeSpecies = project.getTypeEspeces().iterator(true);
+ while (itTypeSpecies.hasNext()) {
+ // "Types";"Commentaire";"NumSys min";"NumSys max","Code"
+ String[] tuple = itTypeSpecies.next();
+ String specyType = tuple[0];
+
+ if (filterSpecyType != null && filterSpecyType.contains(specyType)) {
+ Integer iMinNumSys = Integer.valueOf(tuple[2]);
+ Integer iMaxNumSys = Integer.valueOf(tuple[3]);
+ mapType.put(specyType, new Integer[]{iMinNumSys, iMaxNumSys});
}
- itSpecies.remove();
- continue;
}
-
- // test si le numsys est dans les bornes d'un
- // des type d'espece demandé
- boolean foundInFilter = false;
- for (Integer[] bornes : mapType.values()) {
- if (specyNumSys >= bornes[0]
- && specyNumSys <= bornes[1]){
- foundInFilter = true;
+
+ // iteration sur les especes trouvées
+ Iterator<String> itSpecies = result.iterator();
+ while (itSpecies.hasNext()) {
+ String specy = itSpecies.next();
+ Integer specyNumSys = map.get(specy);
+
+ if (specyNumSys == null) {
+ // ca ne peut pas arriver, ce cs est valider
+ // par un control
+ if (log.isWarnEnabled()) {
+ log.warn("Can't find specy " + specy + " in reftax");
+ }
+ itSpecies.remove();
+ continue;
}
+
+ // test si le numsys est dans les bornes d'un
+ // des type d'espece demandé
+ boolean foundInFilter = false;
+ for (Integer[] bornes : mapType.values()) {
+ if (specyNumSys >= bornes[0]
+ && specyNumSys <= bornes[1]){
+ foundInFilter = true;
+ }
+ }
+
+ if (!foundInFilter) {
+ itSpecies.remove();
+ }
}
-
- if (!foundInFilter) {
- itSpecies.remove();
- }
}
Collections.sort(result);
@@ -2750,7 +2729,8 @@
}
DataStorage content = getProjectContent(project, selection, category, false);
- commonService.storeDataWhithoutQuote(content, dataFile);
+ Map<String, String> reftaxSpecies = getReftaxSpeciesDisplayFieldMap(project, true);
+ commonService.storeDataWhithoutQuote(content, dataFile, reftaxSpecies, category);
}
}
@@ -3017,4 +2997,105 @@
selection.setSelectedSpeciesSizeAllYear(localSpeciesSizeAllYear);
selection.setSelectedSpeciesMaturity(localSpeciesMaturity);
}
+
+ /**
+ * Retourne une map de transcription entre la valeur de stockage de l'espece
+ * et la valeur retranscrite à l'utilisateur suivant les préférences qu'il
+ * a renseigner dans le projet.
+ * La map est triée sur le "VALEUR" et non sur la clé (pour la visualisation
+ * soit triée suivant la représentation de l'utilisateur).
+ *
+ * Les données sont issues du reftax.
+ *
+ * @param project le projet pour avoir accès au reftax
+ * @param outputField meme algorithm, mais renvoi une map de correspondance
+ * pour le champ de sortie
+ * @since 1.3
+ */
+ public Map<String, String> getReftaxSpeciesDisplayFieldMap(Project project, boolean outputField) {
+ Map<String, String> speciesMap = new HashMap<String, String>();
+
+ // "C_Perm";"NumSys";"NivSys";"C_VALIDE";"L_VALIDE";"AA_VALIDE";"C_TxPère";"Taxa"
+ Iterator<String[]> itData = project.getRefTaxSpecies().iterator(true);
+ while (itData.hasNext()) {
+ String[] tuple = itData.next();
+ String key = null;
+ String value = null;
+
+ switch (project.getStorageSpeciesType()) {
+ case C_Valide:
+ key = tuple[3];
+ break;
+ case C_PERM:
+ key = tuple[0];
+ break;
+ case L_Valide:
+ key = tuple[4];
+ break;
+ }
+
+ SpeciesFieldType valueField = outputField ? project.getOutputSpeciesType():
+ project.getDisplaySpeciesType();
+
+ switch (valueField) {
+ case C_Valide:
+ value = tuple[3];
+ break;
+ case C_PERM:
+ value = tuple[0];
+ break;
+ case L_Valide:
+ value = tuple[4];
+ break;
+ }
+
+ speciesMap.put(key, value);
+ }
+
+ return CoserUtils.sortByValue(speciesMap);
+ }
+
+ /*
+ * Retourne le nom d'affichage d'une espèce pour l'utilisateur suivant
+ * les préférences qu'il a choisit.
+ *
+ * @param project le projet pour avoir accès au reftax
+ * @param speciesId le code a retranscrire
+ * @return display name
+ * @since 1.3
+ *
+ public String getSpeciesDisplayField(Project project, String speciesId) {
+
+ // "C_Perm";"NumSys";"NivSys";"C_VALIDE";"L_VALIDE";"AA_VALIDE";"C_TxPère";"Taxa"
+ int index = -1;
+ switch (project.getStorageSpeciesType()) {
+ case C_Valide:
+ index = ((ReftaxMemoryDataStorage)project.getRefTaxSpecies()).indexOfCValide(speciesId);
+ break;
+ case C_PERM:
+ index = ((ReftaxMemoryDataStorage)project.getRefTaxSpecies()).indexOfCode(speciesId);
+ break;
+ case L_Valide:
+ index = ((ReftaxMemoryDataStorage)project.getRefTaxSpecies()).indexOfLValide(speciesId);
+ break;
+ }
+
+ String speciesText = speciesId;
+ if (index >= 0) {
+ String[] data = project.getRefTaxSpecies().get(index);
+ switch (project.getDisplaySpeciesType()) {
+ case C_Valide:
+ speciesText = data[3];
+ break;
+ case C_PERM:
+ speciesText = data[0];
+ break;
+ case L_Valide:
+ speciesText = data[4];
+ break;
+ }
+ }
+
+ return speciesText;
+ }*/
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java 2012-08-06 15:01:20 UTC (rev 1030)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java 2012-08-07 13:40:47 UTC (rev 1031)
@@ -1133,7 +1133,7 @@
}
}
- commonService.storeDataWhithoutQuote(subDataStorage, result);
+ commonService.storeDataWhithoutQuote(subDataStorage, result, null, null);
} catch (IOException ex) {
throw new CoserBusinessException("Can't save csv file", ex);
}
@@ -1199,7 +1199,7 @@
}
}
- commonService.storeDataWhithoutQuote(subDataStorage, result);
+ commonService.storeDataWhithoutQuote(subDataStorage, result, null, null);
} catch (IOException ex) {
throw new CoserBusinessException("Can't save csv file", ex);
}
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java 2012-08-06 15:01:20 UTC (rev 1030)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java 2012-08-07 13:40:47 UTC (rev 1031)
@@ -321,35 +321,35 @@
// all data
List<String> allStrata = projectService.filterDataYearsAndGetStrata(project, selection, years20102011);
projectService.filterDataStrata(project, selection, allStrata);
- List<String> species = projectService.getProjectSpecies(project, selection, allPpeciesType);
+ List<String> species = projectService.getProjectSpecies(selection, project, allPpeciesType);
Assert.assertEquals(4, species.size());
// data in 2011
projectService.loadControlDataToSelection(project, selection);
allStrata = projectService.filterDataYearsAndGetStrata(project, selection, years2011);
projectService.filterDataStrata(project, selection, allStrata);
- species = projectService.getProjectSpecies(project, selection, allPpeciesType);
+ species = projectService.getProjectSpecies(selection, project, allPpeciesType);
Assert.assertEquals(4, species.size());
// all strata but no data for years
projectService.loadControlDataToSelection(project, selection);
allStrata = projectService.filterDataYearsAndGetStrata(project, selection, years2009);
projectService.filterDataStrata(project, selection, allStrata);
- species = projectService.getProjectSpecies(project, selection, allPpeciesType);
+ species = projectService.getProjectSpecies(selection, project, allPpeciesType);
Assert.assertEquals(0, species.size());
// test with no strata
projectService.loadControlDataToSelection(project, selection);
allStrata = projectService.filterDataYearsAndGetStrata(project, selection, years20102011);
projectService.filterDataStrata(project, selection, new ArrayList<String>());
- species = projectService.getProjectSpecies(project, selection, allPpeciesType);
+ species = projectService.getProjectSpecies(selection, project, allPpeciesType);
Assert.assertEquals(0, species.size());
// test with only one stratum
projectService.loadControlDataToSelection(project, selection);
allStrata = projectService.filterDataYearsAndGetStrata(project, selection, years20102011);
projectService.filterDataStrata(project, selection, Collections.singletonList("STR6"));
- species = projectService.getProjectSpecies(project, selection, allPpeciesType);
+ species = projectService.getProjectSpecies(selection, project, allPpeciesType);
Assert.assertEquals(4, species.size());
}
@@ -373,15 +373,15 @@
project = projectService.mergeSpecies(project, selection, "COSER_SPECIES_1_3", null, "COSER_SPECIES1", "COSER_SPECIES3");
Assert.assertEquals(19, selection.getCatch().size());
Assert.assertEquals(28, selection.getLength().size());
- Assert.assertTrue(projectService.getProjectSpecies(selection).contains("COSER_SPECIES_1_3"));
- Assert.assertFalse(projectService.getProjectSpecies(selection).contains("COSER_SPECIES1"));
+ Assert.assertTrue(projectService.getProjectSpecies(selection, null, null).contains("COSER_SPECIES_1_3"));
+ Assert.assertFalse(projectService.getProjectSpecies(selection, null, null).contains("COSER_SPECIES1"));
// second merge
project = projectService.mergeSpecies(project, selection, "COSER_SPECIES_2_4", null, "COSER_SPECIES2", "COSER_SPECIES4");
Assert.assertEquals(13, selection.getCatch().size());
Assert.assertEquals(26, selection.getLength().size());
- Assert.assertTrue(projectService.getProjectSpecies(selection).contains("COSER_SPECIES_2_4"));
- Assert.assertFalse(projectService.getProjectSpecies(selection).contains("COSER_SPECIES4"));
+ Assert.assertTrue(projectService.getProjectSpecies(selection, null, null).contains("COSER_SPECIES_2_4"));
+ Assert.assertFalse(projectService.getProjectSpecies(selection, null, null).contains("COSER_SPECIES4"));
projectService.createProjectSelection(project, selection);
}
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java 2012-08-06 15:01:20 UTC (rev 1030)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java 2012-08-07 13:40:47 UTC (rev 1031)
@@ -25,6 +25,7 @@
package fr.ifremer.coser;
import java.io.File;
+import java.util.Map;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
@@ -41,9 +42,9 @@
import com.bbn.openmap.MapBean;
+import fr.ifremer.coser.bean.Project;
import fr.ifremer.coser.services.CommandService;
import fr.ifremer.coser.services.ControlService;
-import fr.ifremer.coser.services.CommonService;
import fr.ifremer.coser.services.ProjectService;
import fr.ifremer.coser.services.PublicationService;
import fr.ifremer.coser.services.WebService;
Added: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesComboRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesComboRenderer.java (rev 0)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesComboRenderer.java 2012-08-07 13:40:47 UTC (rev 1031)
@@ -0,0 +1,61 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * 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 3 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, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+package fr.ifremer.coser.ui.common;
+
+import java.awt.Component;
+import java.util.Map;
+
+import javax.swing.DefaultListCellRenderer;
+import javax.swing.JList;
+
+/**
+ * L'editeur remplace la valeur présente dans le fichier csv pour l'especes
+ * par un autre nom (latin valide, code...)
+ *
+ * @author echatellier
+ * @since 1.3
+ */
+public class SpeciesComboRenderer extends DefaultListCellRenderer {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 3747535342745177615L;
+
+ protected Map<String, String> reftaxSpecies;
+
+ public SpeciesComboRenderer(Map<String, String> reftaxSpecies) {
+ this.reftaxSpecies = reftaxSpecies;
+ }
+
+ @Override
+ public Component getListCellRendererComponent(JList list, Object value,
+ int index, boolean isSelected, boolean cellHasFocus) {
+ String speciesId = (String)value;
+ if (reftaxSpecies.containsKey(speciesId)) {
+ speciesId = reftaxSpecies.get(speciesId);
+ }
+
+ return super.getListCellRendererComponent(list, speciesId, index, isSelected,
+ cellHasFocus);
+ }
+}
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesComboRenderer.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesTableCellRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesTableCellRenderer.java (rev 0)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesTableCellRenderer.java 2012-08-07 13:40:47 UTC (rev 1031)
@@ -0,0 +1,61 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * 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 3 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, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+package fr.ifremer.coser.ui.common;
+
+import java.awt.Component;
+import java.util.Map;
+
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableCellRenderer;
+
+/**
+ * L'editeur remplace la valeur présente dans le fichier csv pour l'especes
+ * par un autre nom (latin valide, code...)
+ *
+ * @author echatellier
+ * @since 1.3
+ */
+public class SpeciesTableCellRenderer extends DefaultTableCellRenderer {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = -1913267872081009935L;
+
+ protected Map<String, String> reftaxSpecies;
+
+ public SpeciesTableCellRenderer(Map<String, String> reftaxSpecies) {
+ this.reftaxSpecies = reftaxSpecies;
+ }
+
+ @Override
+ public Component getTableCellRendererComponent(JTable table, Object value,
+ boolean isSelected, boolean hasFocus, int row, int column) {
+
+ String speciesId = (String)value;
+ if (reftaxSpecies.containsKey(speciesId)) {
+ speciesId = reftaxSpecies.get(speciesId);
+ }
+ return super.getTableCellRendererComponent(table, speciesId, isSelected, hasFocus,
+ row, column);
+ }
+}
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesTableCellRenderer.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java 2012-08-06 15:01:20 UTC (rev 1030)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java 2012-08-07 13:40:47 UTC (rev 1031)
@@ -24,7 +24,6 @@
package fr.ifremer.coser.ui.control;
import static org.nuiton.i18n.I18n._;
-import static org.nuiton.i18n.I18n.n_;
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
@@ -33,16 +32,18 @@
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
import java.awt.event.MouseEvent;
import java.beans.Introspector;
import java.io.File;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.UUID;
+import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
@@ -69,8 +70,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTreeTable;
-import org.jdesktop.swingx.treetable.DefaultMutableTreeTableNode;
-import org.jdesktop.swingx.treetable.DefaultTreeTableModel;
+import org.jdesktop.swingx.combobox.ListComboBoxModel;
import org.jdesktop.swingx.treetable.TreeTableNode;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
@@ -85,7 +85,6 @@
import fr.ifremer.coser.command.Command;
import fr.ifremer.coser.control.ControlError;
import fr.ifremer.coser.control.ControlErrorGroup;
-import fr.ifremer.coser.control.DiffCatchLengthControlError;
import fr.ifremer.coser.control.SpeciesControlError;
import fr.ifremer.coser.data.AbstractDataEntity;
import fr.ifremer.coser.data.Catch;
@@ -97,6 +96,8 @@
import fr.ifremer.coser.services.ProjectService;
import fr.ifremer.coser.services.PublicationService;
import fr.ifremer.coser.ui.common.DataHandler;
+import fr.ifremer.coser.ui.common.SpeciesComboRenderer;
+import fr.ifremer.coser.ui.common.SpeciesTableCellRenderer;
import fr.ifremer.coser.ui.util.CoserProgressBar;
/**
@@ -112,6 +113,8 @@
private static final Log log = LogFactory.getLog(ControlHandler.class);
+ protected static final String REFTAX_SPECIES_FIELD = "reftaxSpecies";
+
/**
* Init control view.
*
@@ -121,6 +124,19 @@
CoserConfig config = controlView.getContextValue(CoserConfig.class);
boolean localUsed = config.getValidatorsDirectory().isDirectory();
controlView.getLocalControlUsedLabel().setVisible(localUsed);
+
+ // about dans le context de la map des traductions d'especes
+ // du reftax par rapport aux preferences du projet
+ ProjectService projectService = controlView.getContextValue(ProjectService.class);
+ Project project = controlView.getContextValue(Project.class);
+ Map<String, String> reftaxSpecies = projectService.getReftaxSpeciesDisplayFieldMap(project, false);
+ controlView.setContextValue(reftaxSpecies, REFTAX_SPECIES_FIELD);
+
+ // fixe les editeurs qui affiche les noms d'espèces différement
+ // de leur nom de stockage
+ SpeciesTableCellRenderer renderer = new SpeciesTableCellRenderer(reftaxSpecies);
+ controlView.getControlDataTableCatch().getColumnModel().getColumn(4).setCellRenderer(renderer);
+ controlView.getControlDataTableLength().getColumnModel().getColumn(4).setCellRenderer(renderer);
}
/**
@@ -819,46 +835,82 @@
final String stringBeanFieldName = beanFieldName + "AsString";
JLabel label = new JLabel(headerValue + "\u2009:");
- final JTextField fieldTextField = new JTextField(fieldValue);
- fieldTextField.getDocument().addDocumentListener(new DocumentListener() {
- @Override
- public void insertUpdate(DocumentEvent event) {
- valueChanged(event);
- }
+ panel.add(label, new GridBagConstraints(0, fieldIndex, 1, 1, 0, 0,
+ GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(
+ 1, 1, 1, 1), 0, 0));
- @Override
- public void removeUpdate(DocumentEvent event) {
- valueChanged(event);
+ if ((category == Category.CATCH && fieldIndex == Catch.INDEX_SPECIES) ||
+ (category == Category.LENGTH && fieldIndex == Length.INDEX_SPECIES)) {
+ // combo box used to choose for species in list
+ Map<String, String> reftaxSpecies = view.getContextValue(Map.class, REFTAX_SPECIES_FIELD);
+ List<String> domain = new ArrayList<String>(reftaxSpecies.keySet());
+ // ajout de la valeur pour que même si elle n'existe pas
+ // elle soit sélectionnée
+ if (reftaxSpecies.containsKey(fieldValue)) {
+ domain.add(0, fieldValue);
}
-
- @Override
- public void changedUpdate(DocumentEvent event) {
- valueChanged(event);
- }
-
- protected void valueChanged(DocumentEvent event) {
- try {
- PropertyUtils.setProperty(finalBean, stringBeanFieldName, fieldTextField.getText());
- } catch (Exception ex) {
- if (log.isErrorEnabled()) {
- log.error("Can't set property value (" + stringBeanFieldName + ")", ex);
+ ListComboBoxModel<String> speciesComboModel = new ListComboBoxModel<String>(domain);
+ JComboBox speciesCombo = new JComboBox(speciesComboModel);
+ speciesCombo.setRenderer(new SpeciesComboRenderer(reftaxSpecies));
+ speciesCombo.setSelectedItem(fieldValue);
+ speciesCombo.addItemListener(new ItemListener() {
+ @Override
+ public void itemStateChanged(ItemEvent e) {
+ if (e.getStateChange() == ItemEvent.SELECTED) {
+ String value = (String)e.getItem();
+ try {
+ PropertyUtils.setProperty(finalBean, stringBeanFieldName, value);
+ } catch (Exception ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't set property value (" + stringBeanFieldName + ")", ex);
+ }
+ }
}
}
- }
- });
-
- panel.add(label, new GridBagConstraints(0, fieldIndex, 1, 1, 0, 0,
- GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(
- 1, 1, 1, 1), 0, 0));
- panel.add(SwingUtil.boxComponentWithJxLayer(fieldTextField), new GridBagConstraints(1, fieldIndex, 1, 1, 1, 0,
- GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(
- 1, 1, 1, 1), 0, 0));
-
- // permet de dire a jaxx que les erreurs sur les
- // champs d'origine, et les champs string pointent sur le
- // même composant
- validator.setFieldRepresentation(beanFieldName, fieldTextField);
- validator.setFieldRepresentation(stringBeanFieldName, fieldTextField);
+ });
+ panel.add(SwingUtil.boxComponentWithJxLayer(speciesCombo), new GridBagConstraints(1, fieldIndex, 1, 1, 1, 0,
+ GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(
+ 1, 1, 1, 1), 0, 0));
+ // permet de dire a jaxx que les erreurs sur les
+ // champs d'origine, et les champs string pointent sur le
+ // même composant
+ validator.setFieldRepresentation(beanFieldName, speciesCombo);
+ validator.setFieldRepresentation(stringBeanFieldName, speciesCombo);
+ } else {
+ final JTextField fieldTextField = new JTextField(fieldValue);
+ fieldTextField.getDocument().addDocumentListener(new DocumentListener() {
+ @Override
+ public void insertUpdate(DocumentEvent event) {
+ valueChanged(event);
+ }
+ @Override
+ public void removeUpdate(DocumentEvent event) {
+ valueChanged(event);
+ }
+ @Override
+ public void changedUpdate(DocumentEvent event) {
+ valueChanged(event);
+ }
+ protected void valueChanged(DocumentEvent event) {
+ try {
+ PropertyUtils.setProperty(finalBean, stringBeanFieldName, fieldTextField.getText());
+ } catch (Exception ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't set property value (" + stringBeanFieldName + ")", ex);
+ }
+ }
+ }
+ });
+ panel.add(SwingUtil.boxComponentWithJxLayer(fieldTextField), new GridBagConstraints(1, fieldIndex, 1, 1, 1, 0,
+ GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(
+ 1, 1, 1, 1), 0, 0));
+
+ // permet de dire a jaxx que les erreurs sur les
+ // champs d'origine, et les champs string pointent sur le
+ // même composant
+ validator.setFieldRepresentation(beanFieldName, fieldTextField);
+ validator.setFieldRepresentation(stringBeanFieldName, fieldTextField);
+ }
}
validator.installUIs();
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx 2012-08-06 15:01:20 UTC (rev 1030)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx 2012-08-07 13:40:47 UTC (rev 1031)
@@ -201,7 +201,7 @@
<cell anchor="west">
<JLabel text="coser.ui.project.storageSpeciesType" />
</cell>
- <cell columns="2">
+ <cell anchor="west" columns="2">
<JComboBox id="projectStorageSpeciesType" model="{new org.jdesktop.swingx.combobox.EnumComboBoxModel(SpeciesFieldType.class)}"
renderer="{new SpeciesFieldTypeListRenderer()}"
onItemStateChanged="getProject().setStorageSpeciesType((SpeciesFieldType)projectStorageSpeciesType.getSelectedItem())"/>
@@ -211,7 +211,7 @@
<cell anchor="west">
<JLabel text="coser.ui.project.displaySpeciesType" />
</cell>
- <cell columns="2">
+ <cell anchor="west" columns="2">
<JComboBox id="projectDisplaySpeciesType" model="{new org.jdesktop.swingx.combobox.EnumComboBoxModel(SpeciesFieldType.class)}"
renderer="{new SpeciesFieldTypeListRenderer()}"
onItemStateChanged="getProject().setDisplaySpeciesType((SpeciesFieldType)projectDisplaySpeciesType.getSelectedItem())"/>
@@ -221,7 +221,7 @@
<cell anchor="west">
<JLabel text="coser.ui.project.outputSpeciesType" />
</cell>
- <cell columns="2">
+ <cell anchor="west" columns="2">
<JComboBox id="projectOutputSpeciesType" model="{new org.jdesktop.swingx.combobox.EnumComboBoxModel(SpeciesFieldType.class)}"
renderer="{new SpeciesFieldTypeListRenderer()}"
onItemStateChanged="getProject().setOutputSpeciesType((SpeciesFieldType)projectOutputSpeciesType.getSelectedItem())"/>
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx 2012-08-06 15:01:20 UTC (rev 1030)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx 2012-08-07 13:40:47 UTC (rev 1031)
@@ -92,8 +92,8 @@
<cell>
<JComboBox id="projectStorageSpeciesType" model="{new org.jdesktop.swingx.combobox.EnumComboBoxModel(SpeciesFieldType.class)}"
renderer="{new SpeciesFieldTypeListRenderer()}"
- enabled="false"
- selectedItem="{getProject().getStorageSpeciesType()}"/>
+ selectedItem="{getProject().getStorageSpeciesType()}"
+ enabled="false" />
</cell>
</row>
<row>
@@ -103,8 +103,8 @@
<cell>
<JComboBox id="projectDisplaySpeciesType" model="{new org.jdesktop.swingx.combobox.EnumComboBoxModel(SpeciesFieldType.class)}"
renderer="{new SpeciesFieldTypeListRenderer()}"
- onItemStateChanged="getProject().setDisplaySpeciesType((SpeciesFieldType)projectDisplaySpeciesType.getSelectedItem())"
- selectedItem="{getProject().getDisplaySpeciesType()}"/>
+ selectedItem="{getProject().getDisplaySpeciesType()}"
+ onItemStateChanged="getProject().setDisplaySpeciesType((SpeciesFieldType)projectDisplaySpeciesType.getSelectedItem())" />
</cell>
</row>
<row>
@@ -114,8 +114,8 @@
<cell>
<JComboBox id="projectOutputSpeciesType" model="{new org.jdesktop.swingx.combobox.EnumComboBoxModel(SpeciesFieldType.class)}"
renderer="{new SpeciesFieldTypeListRenderer()}"
- onItemStateChanged="getProject().setOutputSpeciesType((SpeciesFieldType)projectOutputSpeciesType.getSelectedItem())"
- selectedItem="{getProject().getOutputSpeciesType()}"/>
+ selectedItem="{getProject().getOutputSpeciesType()}"
+ onItemStateChanged="getProject().setOutputSpeciesType((SpeciesFieldType)projectOutputSpeciesType.getSelectedItem())" />
</cell>
</row>
<row>
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java 2012-08-06 15:01:20 UTC (rev 1030)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java 2012-08-07 13:40:47 UTC (rev 1031)
@@ -314,8 +314,8 @@
ProjectService projectService = projectView.getContextValue(ProjectService.class);
CoserFrame parent = projectView.getContextValue(CoserFrame.class, JAXXUtil.PARENT);
- setWaitCursor(projectView);
try {
+ setWaitCursor(projectView);
Project project = projectService.openProject(projectName);
parent.getHandler().projectLoaded(project);
parent.getHandler().showSummaryView();
@@ -325,7 +325,8 @@
}
JOptionPane.showMessageDialog(projectView, ex.getMessage(), _("coser.ui.project.openError"),
JOptionPane.ERROR_MESSAGE);
+ } finally {
+ setDefaultCursor(projectView);
}
- setDefaultCursor(projectView);
}
}
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2012-08-06 15:01:20 UTC (rev 1030)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2012-08-07 13:40:47 UTC (rev 1031)
@@ -486,7 +486,7 @@
speciesTypes.add((String)selectedSpeciesType);
}
- List<String> filteredSpecies = projectService.getProjectSpecies(project, selection, speciesTypes);
+ List<String> filteredSpecies = projectService.getProjectSpecies(selection, project, speciesTypes);
// ne fait pas apparaitre les especes deja selectionnées
List<String> selectedSpecies = view.getSelectedSpeciesListModel().getSpecies();
@@ -889,6 +889,7 @@
if (canBeValidated) {
try {
service.validSelection(project, selection);
+ selection.setValidated(true);
JOptionPane.showMessageDialog(view, _("coser.ui.selection.selectionValidated"),
_("coser.ui.selection.selectionTitle"), JOptionPane.INFORMATION_MESSAGE);
} catch (CoserBusinessException ex) {
@@ -1398,19 +1399,23 @@
*/
public void extractRSufiData(SelectionRsufiView view) {
- ProjectService projectService = view.getContextValue(ProjectService.class);
- Project project = view.getContextValue(Project.class);
- Selection selection = view.getContextValue(Selection.class);
-
- String directoryPath = view.getResultExtractDataField().getText();
- File directory = new File(directoryPath);
try {
+ setWaitCursor(view);
+ ProjectService projectService = view.getContextValue(ProjectService.class);
+ Project project = view.getContextValue(Project.class);
+ Selection selection = view.getContextValue(Selection.class);
+
+ String directoryPath = view.getResultExtractDataField().getText();
+ File directory = new File(directoryPath);
+
projectService.extractRSUfiData(project, selection, directory, false);
JOptionPane.showMessageDialog(view, _("coser.ui.selection.rsufidataextracted"),
_("coser.ui.selection.selectionTitle"), JOptionPane.INFORMATION_MESSAGE);
} catch (CoserBusinessException ex) {
throw new CoserException("Can't extract rsufi files", ex);
+ } finally {
+ setDefaultCursor(view);
}
}
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionReplayHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionReplayHandler.java 2012-08-06 15:01:20 UTC (rev 1030)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionReplayHandler.java 2012-08-07 13:40:47 UTC (rev 1031)
@@ -248,7 +248,7 @@
}
// init next step
- List<String> currentSpecies = projectService.getProjectSpecies(project, selection, null);
+ List<String> currentSpecies = projectService.getProjectSpecies(selection, project, null);
view.getSelectedSpeciesListModel().setSpecies(currentSpecies);
((CoserListSelectionModel)view.getSelectedSpeciesList().getSelectionModel()).setSelectedObjects(replayedSelection.getSelectedSpecies());
Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties
===================================================================
--- trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2012-08-06 15:01:20 UTC (rev 1030)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2012-08-07 13:40:47 UTC (rev 1031)
@@ -107,9 +107,9 @@
coser.ui.mainview.accesswontrolwithselection=Can't access control interface since selection exists in project \!\n\nIn order to maintain consistency between the controlled data\nand data used to create selection, create a new project\nor remove selections to access to the control interface.
coser.ui.mainview.titleempty=Contrôle et Sélection RSufi
coser.ui.mainview.titleproject=Contrôle et Sélection RSufi (%s)
-coser.ui.project.lValideSpeciesTypeDesc=Species latin name
coser.ui.project.addMaps=Add map…
coser.ui.project.cPermSpeciesTypeDesc=Numeric species code
+coser.ui.project.cValideSpeciesTypeDesc=Alphabetic species code
coser.ui.project.catchFile=Catch file \:
coser.ui.project.createProject=Create project
coser.ui.project.createProjectMissingCodeTypeSpecies=File 'CodeTypeSpecies' is not valid \!\n(check configuration \: coser.reference.typeSpecies)
@@ -118,7 +118,7 @@
coser.ui.project.displaySpeciesType=Display field \:
coser.ui.project.editProject=Edit project
coser.ui.project.haulFile=Haul file \:
-coser.ui.project.cValideSpeciesTypeDesc=Alphabetic species code
+coser.ui.project.lValideSpeciesTypeDesc=Species latin name
coser.ui.project.lengthFile=Length file \:
coser.ui.project.maps=Maps \:
coser.ui.project.missingFile=Missing file
Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties
===================================================================
--- trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2012-08-06 15:01:20 UTC (rev 1030)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2012-08-07 13:40:47 UTC (rev 1031)
@@ -107,9 +107,9 @@
coser.ui.mainview.accesswontrolwithselection=Impossible d'acceder à l'interface de contrôle alors que des sélections existent \!\n\nDans le but de garder une cohérence entre les données contrôlées et les données\nutilisées pour créer les sélections, créez un nouveau projet\nou supprimer les sélections du projet pour accèder de nouveau à l'interface de contrôle.
coser.ui.mainview.titleempty=Contrôle et Sélection RSufi
coser.ui.mainview.titleproject=Contrôle et Sélection RSufi (%s)
-coser.ui.project.lValideSpeciesTypeDesc=Nom latin des espèces
coser.ui.project.addMaps=Ajouter…
coser.ui.project.cPermSpeciesTypeDesc=Code numerique des espèces
+coser.ui.project.cValideSpeciesTypeDesc=Code alphabetique des espèces
coser.ui.project.catchFile=Fichier de captures \:
coser.ui.project.createProject=Créer le projet
coser.ui.project.createProjectMissingCodeTypeSpecies=Le fichier 'CodeTypeEspeces' n'est pas valide \!\n(vérifiez la configuration \: coser.reference.typeSpecies)
@@ -118,7 +118,7 @@
coser.ui.project.displaySpeciesType=Champ pour affichage \:
coser.ui.project.editProject=Modifier le projet
coser.ui.project.haulFile=Fichier des traits \:
-coser.ui.project.cValideSpeciesTypeDesc=Code alphabetique des espèces
+coser.ui.project.lValideSpeciesTypeDesc=Nom latin des espèces
coser.ui.project.lengthFile=Fichier des tailles \:
coser.ui.project.maps=Cartes \:
coser.ui.project.missingFile=Fichier manquant
1
0
r1030 - trunk/coser-business/src/main/java/fr/ifremer/coser/bean
by echatellier@users.forge.codelutin.com 06 Aug '12
by echatellier@users.forge.codelutin.com 06 Aug '12
06 Aug '12
Author: echatellier
Date: 2012-08-06 17:01:20 +0200 (Mon, 06 Aug 2012)
New Revision: 1030
Url: http://forge.codelutin.com/repositories/revision/coser/1030
Log:
refs #1331 : C_valide par defaut
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java 2012-08-06 14:58:30 UTC (rev 1029)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java 2012-08-06 15:01:20 UTC (rev 1030)
@@ -117,13 +117,13 @@
protected DataStorage typeEspeces;
/** Species field type used in storage. */
- protected SpeciesFieldType storageSpeciesType = SpeciesFieldType.L_Valide;
+ protected SpeciesFieldType storageSpeciesType = SpeciesFieldType.C_Valide;
/** Species field type used for user display. */
- protected SpeciesFieldType displaySpeciesType = SpeciesFieldType.L_Valide;
+ protected SpeciesFieldType displaySpeciesType = SpeciesFieldType.C_Valide;
/** Species field type used for rsufi output files. */
- protected SpeciesFieldType outputSpeciesType = SpeciesFieldType.L_Valide;
+ protected SpeciesFieldType outputSpeciesType = SpeciesFieldType.C_Valide;
public Project() {
@@ -420,17 +420,17 @@
if (props.contains("project.storageSpeciesType")) {
setStorageSpeciesType(SpeciesFieldType.valueOf(props.getProperty("project.storageSpeciesType")));
} else {
- setStorageSpeciesType(SpeciesFieldType.L_Valide);
+ setStorageSpeciesType(SpeciesFieldType.C_Valide);
}
if (props.contains("project.displaySpeciesType")) {
setDisplaySpeciesType(SpeciesFieldType.valueOf(props.getProperty("project.displaySpeciesType")));
} else {
- setDisplaySpeciesType(SpeciesFieldType.L_Valide);
+ setDisplaySpeciesType(SpeciesFieldType.C_Valide);
}
if (props.contains("project.outputSpeciesType")) {
setOutputSpeciesType(SpeciesFieldType.valueOf(props.getProperty("project.outputSpeciesType")));
} else {
- setOutputSpeciesType(SpeciesFieldType.L_Valide);
+ setOutputSpeciesType(SpeciesFieldType.C_Valide);
}
}
}
1
0
r1029 - in trunk: coser-business/src/main/java/fr/ifremer/coser/bean coser-business/src/main/java/fr/ifremer/coser/services coser-ui/src/main/java/fr/ifremer/coser/ui/project coser-ui/src/main/resources/i18n
by echatellier@users.forge.codelutin.com 06 Aug '12
by echatellier@users.forge.codelutin.com 06 Aug '12
06 Aug '12
Author: echatellier
Date: 2012-08-06 16:58:30 +0200 (Mon, 06 Aug 2012)
New Revision: 1029
Url: http://forge.codelutin.com/repositories/revision/coser/1029
Log:
refs #1331 : G?\195?\169rer les esp?\195?\168ces par C_Perm, AA_Valide ou L_Valide
Added:
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesFieldType.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/SpeciesFieldTypeListRenderer.java
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java
trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties
trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java 2012-08-06 10:48:10 UTC (rev 1028)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java 2012-08-06 14:58:30 UTC (rev 1029)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
@@ -102,18 +102,29 @@
/** Commentaire du projet. */
protected String comment;
+ protected Date creationDate;
+
+ /** Project control. */
protected Control control;
- protected Date creationDate;
-
+ /** Project selections. */
protected Map<String, Selection> selections;
/** Reftax SIH. */
protected DataStorage refTaxSpecies;
-
+
/** Type especes */
protected DataStorage typeEspeces;
+ /** Species field type used in storage. */
+ protected SpeciesFieldType storageSpeciesType = SpeciesFieldType.L_Valide;
+
+ /** Species field type used for user display. */
+ protected SpeciesFieldType displaySpeciesType = SpeciesFieldType.L_Valide;
+
+ /** Species field type used for rsufi output files. */
+ protected SpeciesFieldType outputSpeciesType = SpeciesFieldType.L_Valide;
+
public Project() {
}
@@ -259,7 +270,7 @@
this.selections = selections;
getPropertyChangeSupport().firePropertyChange(PROPERTY_SELECTIONS, null, selections);
}
-
+
public void addSelections(Selection selection) {
this.selections.put(selection.getName(), selection);
getPropertyChangeSupport().firePropertyChange(PROPERTY_SELECTIONS, null, selections);
@@ -272,7 +283,7 @@
public void setRefTaxSpecies(DataStorage refTaxSpecies) {
this.refTaxSpecies = refTaxSpecies;
}
-
+
public DataStorage getTypeEspeces() {
return typeEspeces;
}
@@ -280,7 +291,37 @@
public void setTypeEspeces(DataStorage typeEspeces) {
this.typeEspeces = typeEspeces;
}
-
+
+ public SpeciesFieldType getStorageSpeciesType() {
+ return storageSpeciesType;
+ }
+
+ public void setStorageSpeciesType(SpeciesFieldType storageSpeciesType) {
+ SpeciesFieldType oldValue = this.storageSpeciesType;
+ this.storageSpeciesType = storageSpeciesType;
+ getPropertyChangeSupport().firePropertyChange("storageSpeciesType", oldValue, storageSpeciesType);
+ }
+
+ public SpeciesFieldType getDisplaySpeciesType() {
+ return displaySpeciesType;
+ }
+
+ public void setDisplaySpeciesType(SpeciesFieldType displaySpeciesType) {
+ SpeciesFieldType oldValue = this.displaySpeciesType;
+ this.displaySpeciesType = displaySpeciesType;
+ getPropertyChangeSupport().firePropertyChange("displaySpeciesType", oldValue, displaySpeciesType);
+ }
+
+ public SpeciesFieldType getOutputSpeciesType() {
+ return outputSpeciesType;
+ }
+
+ public void setOutputSpeciesType(SpeciesFieldType outputSpeciesType) {
+ SpeciesFieldType oldValue = this.outputSpeciesType;
+ this.outputSpeciesType = outputSpeciesType;
+ getPropertyChangeSupport().firePropertyChange("outputSpeciesType", oldValue, outputSpeciesType);
+ }
+
/**
* Force all container data clear to force free memory.
*/
@@ -294,7 +335,7 @@
}
}
}
-
+
public Properties toProperties() {
Properties props = new Properties();
if (author != null) {
@@ -329,6 +370,15 @@
if (creationDate != null) {
props.setProperty("project.creationdate", String.valueOf(creationDate.getTime()));
}
+ if (storageSpeciesType != null) {
+ props.setProperty("project.storageSpeciesType", storageSpeciesType.toString());
+ }
+ if (displaySpeciesType != null) {
+ props.setProperty("project.displaySpeciesType", displaySpeciesType.toString());
+ }
+ if (outputSpeciesType != null) {
+ props.setProperty("project.outputSpeciesType", outputSpeciesType.toString());
+ }
return props;
}
@@ -364,5 +414,23 @@
Date date = new Date(Long.parseLong(props.getProperty("project.creationdate")));
setCreationDate(date);
}
+
+ // species field type was added in 1.3+
+ // missing values for previous project are considered as L_Valide
+ if (props.contains("project.storageSpeciesType")) {
+ setStorageSpeciesType(SpeciesFieldType.valueOf(props.getProperty("project.storageSpeciesType")));
+ } else {
+ setStorageSpeciesType(SpeciesFieldType.L_Valide);
+ }
+ if (props.contains("project.displaySpeciesType")) {
+ setDisplaySpeciesType(SpeciesFieldType.valueOf(props.getProperty("project.displaySpeciesType")));
+ } else {
+ setDisplaySpeciesType(SpeciesFieldType.L_Valide);
+ }
+ if (props.contains("project.outputSpeciesType")) {
+ setOutputSpeciesType(SpeciesFieldType.valueOf(props.getProperty("project.outputSpeciesType")));
+ } else {
+ setOutputSpeciesType(SpeciesFieldType.L_Valide);
+ }
}
}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesFieldType.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesFieldType.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesFieldType.java 2012-08-06 14:58:30 UTC (rev 1029)
@@ -0,0 +1,55 @@
+/*
+ * #%L
+ *
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+package fr.ifremer.coser.bean;
+
+/**
+ * Since 1.3, species can be managed by C_Perm, AA_Valide or L_Valide.
+ * They are always presented to user with latin name.
+ *
+ * @author echatellier
+ * @since 1.3
+ */
+public enum SpeciesFieldType {
+
+ /** Species alpha code (BONA, BONAOST...)*/
+ C_Valide("C_Valide"),
+
+ /** Species num code (1, 2, 3...). */
+ C_PERM("C_Perm"),
+
+ /** Species latin name. */
+ L_Valide("L_Valide");
+
+ protected String reftaxField;
+
+ private SpeciesFieldType(String reftaxField) {
+ this.reftaxField = reftaxField;
+ }
+
+ public String getReftaxField() {
+ return reftaxField;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesFieldType.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java 2012-08-06 10:48:10 UTC (rev 1028)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java 2012-08-06 14:58:30 UTC (rev 1029)
@@ -504,13 +504,13 @@
}
/**
- * Retourne le nom d'affichage d'une especes.
+ * Retourne le nom d'affichage d'une especes pour les rapports.
*
* @param project project
* @param species species code
* @return species display name
*/
- public String getSpeciesDisplayName(Project project, String species) {
+ public String getReportDisplayName(Project project, String species) {
String displayName = null;
// load reftax in memory
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java 2012-08-06 10:48:10 UTC (rev 1028)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java 2012-08-06 14:58:30 UTC (rev 1029)
@@ -1013,7 +1013,7 @@
// get graph title
String title = zoneDisplayName;
title += " - " + indicatorName;
- title += " - " + commonService.getSpeciesDisplayName(project, species);
+ title += " - " + commonService.getReportDisplayName(project, species);
// generate dataset with sorted data
DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx 2012-08-06 10:48:10 UTC (rev 1028)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx 2012-08-06 14:58:30 UTC (rev 1029)
@@ -5,7 +5,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
+ Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as
@@ -25,6 +25,7 @@
<Table>
<import>
javax.swing.JCheckBox
+ fr.ifremer.coser.bean.SpeciesFieldType
</import>
<ProjectHandler id="handler" javaBean="null" />
@@ -197,6 +198,36 @@
</cell>
</row>
<row>
+ <cell anchor="west">
+ <JLabel text="coser.ui.project.storageSpeciesType" />
+ </cell>
+ <cell columns="2">
+ <JComboBox id="projectStorageSpeciesType" model="{new org.jdesktop.swingx.combobox.EnumComboBoxModel(SpeciesFieldType.class)}"
+ renderer="{new SpeciesFieldTypeListRenderer()}"
+ onItemStateChanged="getProject().setStorageSpeciesType((SpeciesFieldType)projectStorageSpeciesType.getSelectedItem())"/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor="west">
+ <JLabel text="coser.ui.project.displaySpeciesType" />
+ </cell>
+ <cell columns="2">
+ <JComboBox id="projectDisplaySpeciesType" model="{new org.jdesktop.swingx.combobox.EnumComboBoxModel(SpeciesFieldType.class)}"
+ renderer="{new SpeciesFieldTypeListRenderer()}"
+ onItemStateChanged="getProject().setDisplaySpeciesType((SpeciesFieldType)projectDisplaySpeciesType.getSelectedItem())"/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor="west">
+ <JLabel text="coser.ui.project.outputSpeciesType" />
+ </cell>
+ <cell columns="2">
+ <JComboBox id="projectOutputSpeciesType" model="{new org.jdesktop.swingx.combobox.EnumComboBoxModel(SpeciesFieldType.class)}"
+ renderer="{new SpeciesFieldTypeListRenderer()}"
+ onItemStateChanged="getProject().setOutputSpeciesType((SpeciesFieldType)projectOutputSpeciesType.getSelectedItem())"/>
+ </cell>
+ </row>
+ <row>
<cell anchor="northwest">
<JLabel text="coser.ui.project.projectcomment" />
</cell>
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx 2012-08-06 10:48:10 UTC (rev 1028)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx 2012-08-06 14:58:30 UTC (rev 1029)
@@ -5,7 +5,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
+ Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as
@@ -23,6 +23,10 @@
#L%
-->
<Table>
+ <import>
+ fr.ifremer.coser.bean.SpeciesFieldType
+ </import>
+
<ProjectHandler id="handler" javaBean="null" />
<!-- Validation -->
@@ -59,7 +63,6 @@
<javax.swing.text.Document javaBean="projectAuthor.getDocument()"
onInsertUpdate='getProject().setAuthor(projectAuthor.getText())'
onRemoveUpdate='getProject().setAuthor(projectAuthor.getText())' />
-
</cell>
</row>
<row>
@@ -83,6 +86,39 @@
</cell>
</row>
<row>
+ <cell anchor="west">
+ <JLabel text="coser.ui.project.storageSpeciesType" />
+ </cell>
+ <cell>
+ <JComboBox id="projectStorageSpeciesType" model="{new org.jdesktop.swingx.combobox.EnumComboBoxModel(SpeciesFieldType.class)}"
+ renderer="{new SpeciesFieldTypeListRenderer()}"
+ enabled="false"
+ selectedItem="{getProject().getStorageSpeciesType()}"/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor="west">
+ <JLabel text="coser.ui.project.displaySpeciesType" />
+ </cell>
+ <cell>
+ <JComboBox id="projectDisplaySpeciesType" model="{new org.jdesktop.swingx.combobox.EnumComboBoxModel(SpeciesFieldType.class)}"
+ renderer="{new SpeciesFieldTypeListRenderer()}"
+ onItemStateChanged="getProject().setDisplaySpeciesType((SpeciesFieldType)projectDisplaySpeciesType.getSelectedItem())"
+ selectedItem="{getProject().getDisplaySpeciesType()}"/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor="west">
+ <JLabel text="coser.ui.project.outputSpeciesType" />
+ </cell>
+ <cell>
+ <JComboBox id="projectOutputSpeciesType" model="{new org.jdesktop.swingx.combobox.EnumComboBoxModel(SpeciesFieldType.class)}"
+ renderer="{new SpeciesFieldTypeListRenderer()}"
+ onItemStateChanged="getProject().setOutputSpeciesType((SpeciesFieldType)projectOutputSpeciesType.getSelectedItem())"
+ selectedItem="{getProject().getOutputSpeciesType()}"/>
+ </cell>
+ </row>
+ <row>
<cell anchor="northwest">
<JLabel text="coser.ui.project.projectcomment" />
</cell>
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java 2012-08-06 10:48:10 UTC (rev 1028)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java 2012-08-06 14:58:30 UTC (rev 1029)
@@ -33,7 +33,6 @@
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
-import javax.swing.ListSelectionModel;
import javax.swing.SwingWorker;
import javax.swing.filechooser.FileFilter;
Added: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/SpeciesFieldTypeListRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/SpeciesFieldTypeListRenderer.java (rev 0)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/SpeciesFieldTypeListRenderer.java 2012-08-06 14:58:30 UTC (rev 1029)
@@ -0,0 +1,73 @@
+/*
+ * #%L
+ * Coser :: UI
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * 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 3 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, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+package fr.ifremer.coser.ui.project;
+
+import static org.nuiton.i18n.I18n._;
+
+import java.awt.Component;
+
+import javax.swing.DefaultListCellRenderer;
+import javax.swing.JList;
+
+import fr.ifremer.coser.bean.SpeciesFieldType;
+
+/**
+ * List renderer used to render {@link SpeciesFieldType} enum values with
+ * additionnal comment.
+ *
+ * @author echatellier
+ * @since 1.3
+ */
+public class SpeciesFieldTypeListRenderer extends DefaultListCellRenderer {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 6335214555392070266L;
+
+ @Override
+ public Component getListCellRendererComponent(JList list, Object value,
+ int index, boolean isSelected, boolean cellHasFocus) {
+
+ SpeciesFieldType type = (SpeciesFieldType)value;
+ String text = type.getReftaxField();
+
+ // add another human comment
+ switch (type) {
+ case C_Valide:
+ text += " (" + _("coser.ui.project.cValideSpeciesTypeDesc") + ")";
+ break;
+ case C_PERM:
+ text += " (" + _("coser.ui.project.cPermSpeciesTypeDesc") + ")";
+ break;
+ case L_Valide:
+ text += " (" + _("coser.ui.project.lValideSpeciesTypeDesc") + ")";
+ break;
+ }
+
+ return super.getListCellRendererComponent(list, text, index, isSelected,
+ cellHasFocus);
+ }
+
+}
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/SpeciesFieldTypeListRenderer.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties
===================================================================
--- trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2012-08-06 10:48:10 UTC (rev 1028)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2012-08-06 14:58:30 UTC (rev 1029)
@@ -107,14 +107,18 @@
coser.ui.mainview.accesswontrolwithselection=Can't access control interface since selection exists in project \!\n\nIn order to maintain consistency between the controlled data\nand data used to create selection, create a new project\nor remove selections to access to the control interface.
coser.ui.mainview.titleempty=Contrôle et Sélection RSufi
coser.ui.mainview.titleproject=Contrôle et Sélection RSufi (%s)
+coser.ui.project.lValideSpeciesTypeDesc=Species latin name
coser.ui.project.addMaps=Add map…
+coser.ui.project.cPermSpeciesTypeDesc=Numeric species code
coser.ui.project.catchFile=Catch file \:
coser.ui.project.createProject=Create project
coser.ui.project.createProjectMissingCodeTypeSpecies=File 'CodeTypeSpecies' is not valid \!\n(check configuration \: coser.reference.typeSpecies)
coser.ui.project.createProjectMissingReftax=File 'Reftax' is not valid \!\n(check configuration \: coser.reference.species)
coser.ui.project.customReferenceSpeciesFile=New taxonomy reference file \:
+coser.ui.project.displaySpeciesType=Display field \:
coser.ui.project.editProject=Edit project
coser.ui.project.haulFile=Haul file \:
+coser.ui.project.cValideSpeciesTypeDesc=Alphabetic species code
coser.ui.project.lengthFile=Length file \:
coser.ui.project.maps=Maps \:
coser.ui.project.missingFile=Missing file
@@ -122,6 +126,7 @@
coser.ui.project.openError=Open error
coser.ui.project.openProject=Open
coser.ui.project.openProjectTitle=Open existing project
+coser.ui.project.outputSpeciesType=Output field \:
coser.ui.project.project=Project \:
coser.ui.project.projectauthor=Author \:
coser.ui.project.projectcomment=Comment \:
@@ -129,6 +134,7 @@
coser.ui.project.projectname=Project name \:
coser.ui.project.removeMaps=Remove map
coser.ui.project.saveProject=Save project
+coser.ui.project.storageSpeciesType=Storage field \:
coser.ui.project.strataFile=Strata file \:
coser.ui.project.summary.catchFileName=Catch file name \:
coser.ui.project.summary.haulFileName=Haul file name \:
Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties
===================================================================
--- trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2012-08-06 10:48:10 UTC (rev 1028)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2012-08-06 14:58:30 UTC (rev 1029)
@@ -107,14 +107,18 @@
coser.ui.mainview.accesswontrolwithselection=Impossible d'acceder à l'interface de contrôle alors que des sélections existent \!\n\nDans le but de garder une cohérence entre les données contrôlées et les données\nutilisées pour créer les sélections, créez un nouveau projet\nou supprimer les sélections du projet pour accèder de nouveau à l'interface de contrôle.
coser.ui.mainview.titleempty=Contrôle et Sélection RSufi
coser.ui.mainview.titleproject=Contrôle et Sélection RSufi (%s)
+coser.ui.project.lValideSpeciesTypeDesc=Nom latin des espèces
coser.ui.project.addMaps=Ajouter…
+coser.ui.project.cPermSpeciesTypeDesc=Code numerique des espèces
coser.ui.project.catchFile=Fichier de captures \:
coser.ui.project.createProject=Créer le projet
coser.ui.project.createProjectMissingCodeTypeSpecies=Le fichier 'CodeTypeEspeces' n'est pas valide \!\n(vérifiez la configuration \: coser.reference.typeSpecies)
coser.ui.project.createProjectMissingReftax=Le fichier 'Reftax' n'est pas valide \!\n(vérifiez la configuration \: coser.reference.species)
coser.ui.project.customReferenceSpeciesFile=Nouveau fichier de référence taxonomique \:
+coser.ui.project.displaySpeciesType=Champ pour affichage \:
coser.ui.project.editProject=Modifier le projet
coser.ui.project.haulFile=Fichier des traits \:
+coser.ui.project.cValideSpeciesTypeDesc=Code alphabetique des espèces
coser.ui.project.lengthFile=Fichier des tailles \:
coser.ui.project.maps=Cartes \:
coser.ui.project.missingFile=Fichier manquant
@@ -122,6 +126,7 @@
coser.ui.project.openError=Erreur d'ouverture
coser.ui.project.openProject=Ouvrir
coser.ui.project.openProjectTitle=Ouvrir un projet existant
+coser.ui.project.outputSpeciesType=Champ de sortie \:
coser.ui.project.project=Projet \:
coser.ui.project.projectauthor=Auteur \:
coser.ui.project.projectcomment=Commentaire \:
@@ -129,6 +134,7 @@
coser.ui.project.projectname=Nom du projet \:
coser.ui.project.removeMaps=Supprimer
coser.ui.project.saveProject=Sauver le projet
+coser.ui.project.storageSpeciesType=Champ de stockage \:
coser.ui.project.strataFile=Fichier des strates \:
coser.ui.project.summary.catchFileName=Nom du fichier captures \:
coser.ui.project.summary.haulFileName=Nom du fichier traits \:
1
0
r1028 - in trunk: . coser-ui/src/main/java/fr/ifremer/coser/ui/selection coser-ui/src/main/resources/i18n coser-ui/src/main/resources/icons
by echatellier@users.forge.codelutin.com 06 Aug '12
by echatellier@users.forge.codelutin.com 06 Aug '12
06 Aug '12
Author: echatellier
Date: 2012-08-06 12:48:10 +0200 (Mon, 06 Aug 2012)
New Revision: 1028
Url: http://forge.codelutin.com/repositories/revision/coser/1028
Log:
fixes #1322 : Ajouter des boutons suppl?\195?\169mentaires correspondant au action du menu contextuel
Added:
trunk/coser-ui/src/main/resources/icons/arrow_jion_up.png
trunk/coser-ui/src/main/resources/icons/stock_select_clear.png
trunk/coser-ui/src/main/resources/icons/stock_select_table.png
Modified:
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionDetailsView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionListsView.jaxx
trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties
trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties
trunk/pom.xml
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionDetailsView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionDetailsView.jaxx 2012-07-19 14:07:21 UTC (rev 1027)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionDetailsView.jaxx 2012-08-06 10:48:10 UTC (rev 1028)
@@ -171,7 +171,7 @@
onActionPerformed='getDetailDecisionPanelLayout().show(getDetailDecisionPanel(), "ZONEMAP");getHandler().showStataOnMap(this);' />
</cell>
<cell anchor="northeast">
- <JButton icon="table.png" toolTipText="coser.ui.selection.details.showSpreciesTip"
+ <JButton icon="table.png" toolTipText="coser.ui.selection.details.showSpeciesTip"
onActionPerformed='getDetailDecisionPanelLayout().show(getDetailDecisionPanel(), "SPECIESDATA");getHandler().showSamplingEffort(this);' />
</cell>
</row>
@@ -233,10 +233,10 @@
<ListSelectionModel id="filteredSpeciesListSelectionModel" javaBean="filteredSpeciesList.getSelectionModel()" />
</JScrollPane>
</cell>
- <cell anchor="north">
+ <cell anchor="north" insets="2">
<Table>
<row>
- <cell>
+ <cell insets="0">
<JButton icon="arrow_right.png"
toolTipText="coser.ui.selection.details.addToSelectedListTip"
onActionPerformed="getHandler().addSelectedFilteredSpecies(this)"
@@ -244,13 +244,49 @@
</cell>
</row>
<row>
- <cell>
+ <cell insets="0">
<JButton icon="arrow_left.png"
toolTipText="coser.ui.selection.details.removeFromSelectedListTip"
onActionPerformed="getHandler().removeSelectedSpecies(this)"
enabled="{getSelectedSpeciesList().getSelectedIndex() != -1 && isYearsValidated() && isStrataValidated()}"/>
</cell>
</row>
+ <row>
+ <cell>
+ <JSeparator />
+ </cell>
+ </row>
+ <row>
+ <cell insets="0">
+ <JButton icon="stock_select_table.png"
+ toolTipText="coser.ui.selection.details.selectAllSpeciesTip"
+ onActionPerformed="getHandler().selectAllListSpecies(this)" />
+ </cell>
+ </row>
+ <row>
+ <cell insets="0">
+ <JButton icon="stock_select_clear.png"
+ toolTipText="coser.ui.selection.details.unSelectAllSpeciesTip"
+ onActionPerformed="getHandler().unSelectAllListSpecies(this)" />
+ </cell>
+ </row>
+ <row>
+ <cell insets="0">
+ <JButton icon="chart_curve.png"
+ toolTipText="coser.ui.selection.details.displayDiffCatchLengthGraphTip"
+ onActionPerformed="getHandler().showSelectedSpeciesGraph(this, null)"
+ enabled="{isYearsValidated() && isStrataValidated() && (getSelectedSpeciesList().getSelectedIndex() != -1 || getFilteredSpeciesList().getSelectedIndex() != -1)}" />
+ </cell>
+ </row>
+
+ <row>
+ <cell insets="0">
+ <JButton icon="arrow_jion_up.png"
+ toolTipText="coser.ui.selection.details.mergeSpeciesTip"
+ onActionPerformed="getHandler().showSpeciesMergeDialog(this)"
+ enabled="{getFilteredSpeciesList().getSelectedIndex() != -1 && isYearsValidated() && isStrataValidated()}"/>
+ </cell>
+ </row>
</Table>
</cell>
<cell weightx="1" weighty="1" fill="both">
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2012-07-19 14:07:21 UTC (rev 1027)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2012-08-06 10:48:10 UTC (rev 1028)
@@ -623,15 +623,7 @@
fusionMenu.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- SpeciesFusionDialog speciesFusionDialog = new SpeciesFusionDialog(view);
- speciesFusionDialog.setHandler(SelectionHandler.this);
-
- // pre fill new speci name with first selected species name
- String firstSelected = (String)view.getFilteredSpeciesList().getSelectedValue();
- speciesFusionDialog.getNewSpeciesNameField().setText(firstSelected);
-
- speciesFusionDialog.setLocationRelativeTo(view);
- speciesFusionDialog.setVisible(true);
+ showSpeciesMergeDialog(view);
}
});
popupMenu.add(fusionMenu);
@@ -675,7 +667,7 @@
popupMenu.show(view.getFilteredSpeciesList(), event.getX(), event.getY());
}
}
-
+
/**
* Affiche un menu contextuel lors du clic (droit) sur la liste des especes
* sélectionnées.
@@ -729,6 +721,56 @@
}
/**
+ * Show species merge dialog. Called from view action or context menu.
+ *
+ * @param view parent view
+ */
+ protected void showSpeciesMergeDialog(SelectionDetailsView view) {
+ SpeciesFusionDialog speciesFusionDialog = new SpeciesFusionDialog(view);
+ speciesFusionDialog.setHandler(SelectionHandler.this);
+
+ // pre fill new speci name with first selected species name
+ String firstSelected = (String)view.getFilteredSpeciesList().getSelectedValue();
+ speciesFusionDialog.getNewSpeciesNameField().setText(firstSelected);
+
+ speciesFusionDialog.setLocationRelativeTo(view);
+ speciesFusionDialog.setVisible(true);
+
+ }
+
+ /**
+ * Clic sur le bouton selectionner tout.
+ * Selectionne toutes les espèces dans les 2 listes contrairement au
+ * menu contextuel qui ne selectionne que dans une seule liste.
+ *
+ * @param view parent view
+ * @since 1.3
+ */
+ public void selectAllListSpecies(SelectionDetailsView view) {
+ // available
+ int size = view.getFilteredSpeciesList().getModel().getSize();
+ view.getFilteredSpeciesList().getSelectionModel().addSelectionInterval(0, size - 1);
+ // selected
+ size = view.getSelectedSpeciesList().getModel().getSize();
+ view.getSelectedSpeciesList().getSelectionModel().addSelectionInterval(0, size - 1);
+ }
+
+ /**
+ * Clic sur le bouton selectionner tout.
+ * Selectionne toutes les espèces dans les 2 listes contrairement au
+ * menu contextuel qui ne selectionne que dans une seule liste.
+ *
+ * @param view parent view
+ * @since 1.3
+ */
+ public void unSelectAllListSpecies(SelectionDetailsView view) {
+ // available
+ view.getFilteredSpeciesList().getSelectionModel().clearSelection();
+ // selected
+ view.getSelectedSpeciesList().getSelectionModel().clearSelection();
+ }
+
+ /**
* Sauvegarde (ou creer) la sélection (partie details).
*
* @param view parent view
@@ -1186,7 +1228,7 @@
* sur laquelle porte l'appel.
*
* @param view view
- * @param source
+ * @param source source list to choose selected values (can be {@code null}, read both lists)
*/
public void showSelectedSpeciesGraph(SelectionDetailsView view, JList source) {
@@ -1194,11 +1236,25 @@
Project project = view.getContextValue(Project.class);
Selection selection = view.getContextValue(Selection.class);
- Object[] selectedSpecies = source.getSelectedValues();
Set<String> graphSpecies = new HashSet<String>();
- for (Object selectedSingleSpecies : selectedSpecies) {
- graphSpecies.add((String)selectedSingleSpecies);
+ // specific list given (context menu)
+ if (source != null) {
+ Object[] selectedSpecies = source.getSelectedValues();
+ for (Object selectedSingleSpecies : selectedSpecies) {
+ graphSpecies.add((String)selectedSingleSpecies);
+ }
}
+ else {
+ // merge both lists
+ Object[] selectedSpecies = view.getFilteredSpeciesList().getSelectedValues();
+ for (Object selectedSingleSpecies : selectedSpecies) {
+ graphSpecies.add((String)selectedSingleSpecies);
+ }
+ selectedSpecies = view.getSelectedSpeciesList().getSelectedValues();
+ for (Object selectedSingleSpecies : selectedSpecies) {
+ graphSpecies.add((String)selectedSingleSpecies);
+ }
+ }
Map<String, JFreeChart> chartsMap = publicationService.getCompareCatchLengthGraph(project, selection, graphSpecies);
Collection<JFreeChart> charts = chartsMap.values();
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionListsView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionListsView.jaxx 2012-07-19 14:07:21 UTC (rev 1027)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionListsView.jaxx 2012-08-06 10:48:10 UTC (rev 1028)
@@ -53,7 +53,7 @@
]]></script>
<row>
- <cell columns="8" weightx="1" fill="horizontal">
+ <cell columns="8" weightx="1" insets="0" fill="horizontal">
<JToolBar floatable="false">
<Component initializer="javax.swing.Box.createHorizontalGlue()" />
<JButton id="validSelectionButton" text="coser.ui.selection.details.validSelection"
Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties
===================================================================
--- trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2012-07-19 14:07:21 UTC (rev 1027)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2012-08-06 10:48:10 UTC (rev 1028)
@@ -41,12 +41,12 @@
coser.ui.control.globalErrorMenuSelectAll=Select all lines
coser.ui.control.graph.species=Species \:
coser.ui.control.progressStep=Step %d/%d \: %s
-coser.ui.control.project.requiredauthor=Author field is required
-coser.ui.control.project.requiredcatchFile=Catch file is required
-coser.ui.control.project.requiredhaulFile=Haul file is required
-coser.ui.control.project.requiredlengthFile=Length file is required
-coser.ui.control.project.requiredname=Project name is required
-coser.ui.control.project.requiredstrataFile=Strata file is required
+coser.ui.control.project.requiredauthor=
+coser.ui.control.project.requiredcatchFile=
+coser.ui.control.project.requiredhaulFile=
+coser.ui.control.project.requiredlengthFile=
+coser.ui.control.project.requiredname=
+coser.ui.control.project.requiredstrataFile=
coser.ui.control.replace.find=Find \:
coser.ui.control.replace.inField=In field \:
coser.ui.control.replace.replace=Replace \:
@@ -156,10 +156,10 @@
coser.ui.result.newResult=New Result
coser.ui.result.otherDataFile=Other files \:
coser.ui.result.publiableResult=Publiable \:
-coser.ui.result.requiredestComIndPath=ESTCOMind file is required
-coser.ui.result.requiredestPopIndPath=ESTPOPind file is required
-coser.ui.result.requiredname=Result name is required
-coser.ui.result.requiredrsufiVersion=Rsufi version is required
+coser.ui.result.requiredestComIndPath=
+coser.ui.result.requiredestPopIndPath=
+coser.ui.result.requiredname=
+coser.ui.result.requiredrsufiVersion=
coser.ui.result.resultName=Result name \:
coser.ui.result.rsufiVersion=RSufi version \:
coser.ui.result.saveError=Save error
@@ -189,17 +189,21 @@
coser.ui.selection.details.comment=Comments \:
coser.ui.selection.details.description=Description \:
coser.ui.selection.details.displayDiffCatchLengthGraph=Comparison catch/length graphs
+coser.ui.selection.details.displayDiffCatchLengthGraphTip=Comparison catch/length graphs
coser.ui.selection.details.filteredSpecies=Filtered species (%d/%d) \:
+coser.ui.selection.details.mergeSpeciesTip=Merge
coser.ui.selection.details.name=Selection name \:
coser.ui.selection.details.removeFromSelectedListTip=Remove selected species from selected species list
coser.ui.selection.details.saveSelection=Save selection
+coser.ui.selection.details.selectAllSpeciesTip=Select all
coser.ui.selection.details.selectedSpecies=L1 \: Selected species (%d/%d) \:
coser.ui.selection.details.showMapTip=Display strata map
-coser.ui.selection.details.showSpreciesTip=Display sampling effort table
+coser.ui.selection.details.showSpeciesTip=
coser.ui.selection.details.speciesDataDescription=Haul count by strata and year \:
coser.ui.selection.details.speciescontextmenu=For more options, use species lists contextual menu
coser.ui.selection.details.strata=Strata (%d/%d) \:
coser.ui.selection.details.type=Filter by type (%d/%d) \:
+coser.ui.selection.details.unSelectAllSpeciesTip=Unselect all
coser.ui.selection.details.validFilter=Valid filter
coser.ui.selection.details.validSelection=Valid selection
coser.ui.selection.details.validSpecies=Valid species
@@ -240,8 +244,8 @@
coser.ui.selection.replay.selectioninfos=Selection information \:
coser.ui.selection.rsufidataextracted=RSufi data extracted.
coser.ui.selection.saveError=Save error
-coser.ui.selection.selection.requiredDescription=Selection description is required
-coser.ui.selection.selection.requiredName=Selection name is required
+coser.ui.selection.selection.requiredDescription=
+coser.ui.selection.selection.requiredName=
coser.ui.selection.selectionCreated=Selection created.
coser.ui.selection.selectionFilterDescription=Coser selection (*.selection)
coser.ui.selection.selectionSaved=Selection saved.
Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties
===================================================================
--- trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2012-07-19 14:07:21 UTC (rev 1027)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2012-08-06 10:48:10 UTC (rev 1028)
@@ -41,12 +41,12 @@
coser.ui.control.globalErrorMenuSelectAll=Sélectionner toutes les lignes
coser.ui.control.graph.species=Espèces \:
coser.ui.control.progressStep=Étape %d/%d \: %s
-coser.ui.control.project.requiredauthor=Le champ 'auteur' est requis
-coser.ui.control.project.requiredcatchFile=Le fichier 'capture' est requis
-coser.ui.control.project.requiredhaulFile=Le fichier 'traits' est requis
-coser.ui.control.project.requiredlengthFile=Le fichier 'taille' est requis
-coser.ui.control.project.requiredname=Le nom du project est requis
-coser.ui.control.project.requiredstrataFile=Le fichier 'strates' est requis
+coser.ui.control.project.requiredauthor=
+coser.ui.control.project.requiredcatchFile=
+coser.ui.control.project.requiredhaulFile=
+coser.ui.control.project.requiredlengthFile=
+coser.ui.control.project.requiredname=
+coser.ui.control.project.requiredstrataFile=
coser.ui.control.replace.find=Chercher \:
coser.ui.control.replace.inField=Dans le champ \:
coser.ui.control.replace.replace=Remplacer \:
@@ -156,10 +156,10 @@
coser.ui.result.newResult=Nouveau résultat
coser.ui.result.otherDataFile=Autre fichiers \:
coser.ui.result.publiableResult=Publiable \:
-coser.ui.result.requiredestComIndPath=Le fichier ESTCOMind est requis
-coser.ui.result.requiredestPopIndPath=Le fichier ESTPOPind est requis
-coser.ui.result.requiredname=Le nom du résultat est requis
-coser.ui.result.requiredrsufiVersion=Le champ 'rsufiVersion' est requis
+coser.ui.result.requiredestComIndPath=
+coser.ui.result.requiredestPopIndPath=
+coser.ui.result.requiredname=
+coser.ui.result.requiredrsufiVersion=
coser.ui.result.resultName=Nom du résultat \:
coser.ui.result.rsufiVersion=Version de RSufi \:
coser.ui.result.saveError=Erreur de sauvegarde
@@ -189,17 +189,21 @@
coser.ui.selection.details.comment=Commentaire \:
coser.ui.selection.details.description=Description \:
coser.ui.selection.details.displayDiffCatchLengthGraph=Graphiques des différences captures/tailles
+coser.ui.selection.details.displayDiffCatchLengthGraphTip=Graphiques des différences captures/tailles
coser.ui.selection.details.filteredSpecies=Espèces filtrées (%d/%d) \:
+coser.ui.selection.details.mergeSpeciesTip=Fusion
coser.ui.selection.details.name=Nom de la sélection \:
coser.ui.selection.details.removeFromSelectedListTip=Retire les espèces sélectionnées de la liste des espèces sélectionnées
coser.ui.selection.details.saveSelection=Sauvegarder la sélection
+coser.ui.selection.details.selectAllSpeciesTip=Sélectionner tout
coser.ui.selection.details.selectedSpecies=L1 \: Espèces sélectionnées (%d/%d) \:
coser.ui.selection.details.showMapTip=Afficher la carte des strates
-coser.ui.selection.details.showSpreciesTip=Afficher la table de l'effort d'échantillonage
+coser.ui.selection.details.showSpeciesTip=Afficher la table de l'effort d'échantillonage
coser.ui.selection.details.speciesDataDescription=Nombre de traits par strate par année \:
coser.ui.selection.details.speciescontextmenu=Pour plus d'options, utilisez le menu contextuel sur les listes d'espèces
coser.ui.selection.details.strata=Strates (%d/%d) \:
coser.ui.selection.details.type=Filtrer par type (%d/%d) \:
+coser.ui.selection.details.unSelectAllSpeciesTip=Désélectionner tout
coser.ui.selection.details.validFilter=Valider les filtres
coser.ui.selection.details.validSelection=Valider la sélection
coser.ui.selection.details.validSpecies=Valider les espèces
@@ -240,8 +244,8 @@
coser.ui.selection.replay.selectioninfos=Information sur la sélection \:
coser.ui.selection.rsufidataextracted=Données RSufi extraites.
coser.ui.selection.saveError=Erreur de sauvegarde
-coser.ui.selection.selection.requiredDescription=La description de la sélection est requise
-coser.ui.selection.selection.requiredName=Le nom de la sélection est requis
+coser.ui.selection.selection.requiredDescription=
+coser.ui.selection.selection.requiredName=
coser.ui.selection.selectionCreated=Sélection créée.
coser.ui.selection.selectionFilterDescription=Coser sélection (*.selection)
coser.ui.selection.selectionSaved=Sélection sauvée.
Added: trunk/coser-ui/src/main/resources/icons/arrow_jion_up.png
===================================================================
(Binary files differ)
Property changes on: trunk/coser-ui/src/main/resources/icons/arrow_jion_up.png
___________________________________________________________________
Added: svn:mime-type
+ image/png
Added: trunk/coser-ui/src/main/resources/icons/stock_select_clear.png
===================================================================
(Binary files differ)
Property changes on: trunk/coser-ui/src/main/resources/icons/stock_select_clear.png
___________________________________________________________________
Added: svn:mime-type
+ image/png
Added: trunk/coser-ui/src/main/resources/icons/stock_select_table.png
===================================================================
(Binary files differ)
Property changes on: trunk/coser-ui/src/main/resources/icons/stock_select_table.png
___________________________________________________________________
Added: svn:mime-type
+ image/png
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-07-19 14:07:21 UTC (rev 1027)
+++ trunk/pom.xml 2012-08-06 10:48:10 UTC (rev 1028)
@@ -117,13 +117,13 @@
<dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-utils</artifactId>
- <version>2.5.2-SNAPSHOT</version>
+ <version>2.5.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-validator</artifactId>
- <version>2.5.2-SNAPSHOT</version>
+ <version>2.5.2</version>
<scope>compile</scope>
</dependency>
@@ -172,7 +172,7 @@
<dependency>
<groupId>org.swinglabs.swingx</groupId>
<artifactId>swingx-core</artifactId>
- <version>1.6.3</version>
+ <version>1.6.4</version>
<scope>compile</scope>
</dependency>
@@ -346,7 +346,7 @@
<license.organizationName>Ifremer, Codelutin</license.organizationName>
<!-- Versions -->
- <jaxx.version>2.5.2</jaxx.version>
+ <jaxx.version>2.5.3</jaxx.version>
<i18n.version>2.4.1</i18n.version>
<!-- 2.3.1.1 fails to validate fields in jnlp -->
<struts.version>2.3.4</struts.version>
1
0