r405 - in trunk: coser-business/src/main/java/fr/ifremer/coser coser-business/src/main/java/fr/ifremer/coser/bean coser-business/src/main/java/fr/ifremer/coser/services coser-business/src/test/java/fr/ifremer/coser/services coser-ui/src/main/java/fr/ifremer/coser/ui coser-ui/src/main/java/fr/ifremer/coser/ui/maps coser-ui/src/main/java/fr/ifremer/coser/ui/project coser-ui/src/main/java/fr/ifremer/coser/ui/selection coser-ui/src/main/resources/i18n
Author: chatellier Date: 2010-12-14 17:40:06 +0000 (Tue, 14 Dec 2010) New Revision: 405 Log: Ajout du support des cartes personnalisables par projets Added: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectMapsListModel.java Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserConstants.java 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/bean/Selection.java trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/maps/CoserMap.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/ProjectOpenView.jaxx trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectSummaryView.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/SelectionRsufiView.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 Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserConstants.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserConstants.java 2010-12-14 13:55:38 UTC (rev 404) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserConstants.java 2010-12-14 17:40:06 UTC (rev 405) @@ -59,6 +59,9 @@ /** Nom du dossier des resultats RSufi. */ public static final String STORAGE_RESULTS_DIRECTORY = "results"; + /** Nom du dossier de stockage des maps. */ + public static final String STORAGE_MAPS_DIRECTORY = "maps"; + /** Suffix des nom de fichiers data apres control. */ public static final String STORAGE_CONTROL_SUFFIX = "_co"; Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java 2010-12-14 13:55:38 UTC (rev 404) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java 2010-12-14 17:40:06 UTC (rev 405) @@ -26,6 +26,7 @@ package fr.ifremer.coser; import java.util.ArrayList; +import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.regex.Matcher; @@ -115,4 +116,16 @@ } return result; } + + /** + * Split string as string list using "," separator. + * + * @param str string to split + * @return string list + */ + public static List<String> splitAsList(String str) { + String[] strArray = str.split(","); + List<String> strList = Arrays.asList(strArray); + return strList; + } } 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 2010-12-14 13:55:38 UTC (rev 404) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java 2010-12-14 17:40:06 UTC (rev 405) @@ -25,9 +25,16 @@ package fr.ifremer.coser.bean; +import java.io.File; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Properties; +import org.apache.commons.collections.CollectionUtils; + +import fr.ifremer.coser.CoserUtils; import fr.ifremer.coser.storage.DataStorage; /** @@ -87,6 +94,9 @@ /** Nom original du fichier de strates. */ protected String strataFileName; + /** File des cartes (plus facile a gerer en tant que file dans l'ui, mais seul le filename est sauvegardé). */ + protected List<File> maps; + /** Commentaire du projet. */ protected String comment; @@ -192,6 +202,14 @@ this.strataFileName = strataFileName; } + public void setMaps(List<File> maps) { + this.maps = maps; + } + + public List<File> getMaps() { + return maps; + } + public String getComment() { return comment; } @@ -273,13 +291,24 @@ if (strataFileName != null) { props.setProperty("project.strataFileName", strataFileName); } + if (CollectionUtils.isNotEmpty(maps)) { + StringBuilder mapsAsString = new StringBuilder(); + Iterator<File> itMaps = maps.iterator(); + while (itMaps.hasNext()) { + mapsAsString.append(itMaps.next().getName()); + if (itMaps.hasNext()) { + mapsAsString.append(','); + } + } + props.setProperty("project.maps", mapsAsString.toString()); + } if (comment != null) { props.setProperty("project.comment", comment); } return props; } - public void fromProperties(Properties props) { + public void fromProperties(Properties props, File mapDirectory) { if (props.containsKey("project.author")) { setAuthor(props.getProperty("project.author")); } @@ -295,6 +324,15 @@ if (props.containsKey("project.strataFileName")) { setStrataFileName(props.getProperty("project.strataFileName")); } + if (props.containsKey("project.maps")) { + List<String> mapsAsString = CoserUtils.splitAsList(props.getProperty("project.maps")); + List<File> maps = new ArrayList<File>(); + for (String mapAsString : mapsAsString) { + File mapFile = new File(mapDirectory, mapAsString); + maps.add(mapFile); + } + setMaps(maps); + } if (props.containsKey("project.comment")) { setComment(props.getProperty("project.comment")); } Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Selection.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Selection.java 2010-12-14 13:55:38 UTC (rev 404) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Selection.java 2010-12-14 17:40:06 UTC (rev 405) @@ -25,13 +25,14 @@ package fr.ifremer.coser.bean; -import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Properties; import org.apache.commons.lang.StringUtils; +import fr.ifremer.coser.CoserUtils; + /** * Project selection. * @@ -329,13 +330,13 @@ setDescription(props.getProperty("selection.description")); } if (props.containsKey("selection.allYears")) { - setAllYears(splitAsList(props.getProperty("selection.allYears"))); + setAllYears(CoserUtils.splitAsList(props.getProperty("selection.allYears"))); } if (props.containsKey("selection.selectedYears")) { - setSelectedYears(splitAsList(props.getProperty("selection.allYears"))); + setSelectedYears(CoserUtils.splitAsList(props.getProperty("selection.allYears"))); } if (props.containsKey("selection.selectedStrata")) { - setSelectedStrata(splitAsList(props.getProperty("selection.selectedStrata"))); + setSelectedStrata(CoserUtils.splitAsList(props.getProperty("selection.selectedStrata"))); } if (props.containsKey("selection.comment")) { setComment(props.getProperty("selection.comment")); @@ -347,16 +348,16 @@ setDensityFilter(Double.parseDouble(props.getProperty("selection.densityFilter"))); } if (props.containsKey("selection.selectedSpecies")) { - setSelectedSpecies(splitAsList(props.getProperty("selection.selectedSpecies"))); + setSelectedSpecies(CoserUtils.splitAsList(props.getProperty("selection.selectedSpecies"))); } if (props.containsKey("selection.selectedSpeciesOccDens")) { - setSelectedSpeciesOccDens(splitAsList(props.getProperty("selection.selectedSpeciesOccDens"))); + setSelectedSpeciesOccDens(CoserUtils.splitAsList(props.getProperty("selection.selectedSpeciesOccDens"))); } if (props.containsKey("selection.selectedSpeciesSizeAllYear")) { - setSelectedSpeciesSizeAllYear(splitAsList(props.getProperty("selection.selectedSpeciesSizeAllYear"))); + setSelectedSpeciesSizeAllYear(CoserUtils.splitAsList(props.getProperty("selection.selectedSpeciesSizeAllYear"))); } if (props.containsKey("selection.selectedSpeciesMaturity")) { - setSelectedSpeciesMaturity(splitAsList(props.getProperty("selection.selectedSpeciesMaturity"))); + setSelectedSpeciesMaturity(CoserUtils.splitAsList(props.getProperty("selection.selectedSpeciesMaturity"))); } if (props.containsKey("selection.selectedSpeciesComment")) { setSelectedSpeciesComment(props.getProperty("selection.selectedSpeciesComment")); @@ -374,10 +375,4 @@ setValidated(Boolean.parseBoolean(props.getProperty("selection.validated"))); } } - - protected List<String> splitAsList(String str) { - String[] strArray = str.split(","); - List<String> strList = Arrays.asList(strArray); - return strList; - } } 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 2010-12-14 13:55:38 UTC (rev 404) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2010-12-14 17:40:06 UTC (rev 405) @@ -140,11 +140,12 @@ * * @param project project to create * @param categoriesAndFiles additional files to load + * @param maps maps file * @param progress progress monitor (can be null) * @return project with filled data * @throws CoserBusinessException if project can't be created */ - public Project createProject(Project project, Map<Category, File> categoriesAndFiles, ProgressMonitor progress) throws CoserBusinessException { + public Project createProject(Project project, Map<Category, File> categoriesAndFiles, List<File> maps, ProgressMonitor progress) throws CoserBusinessException { File projectsDirectory = config.getProjectsDirectory(); if (!projectsDirectory.isDirectory()) { projectsDirectory.mkdirs(); @@ -231,7 +232,7 @@ } } - saveProject(project); + saveProject(project, maps); // init additional structures (load empty control) project.setSelections(new HashMap<String, Selection>()); @@ -242,19 +243,25 @@ } /** - * Sauve seulement les informations concernant le projet. + * Sauve seulement les informations concernant le projet et les cartes + * si elle ont été modifiée par rapport à la liste des cartes actuellement + * dans le projet. * - * @param project + * @param project project + * @param maps maps * @throws CoserBusinessException */ - public void saveProject(Project project) throws CoserBusinessException { + public void saveProject(Project project, List<File> maps) throws CoserBusinessException { File projectsDirectory = config.getProjectsDirectory(); String projectName = project.getName(); File projectDirectory = new File(projectsDirectory, projectName); + // manage maps BEFORE saving properties + Project localProject = updateProjectMaps(project, projectDirectory, maps); + // save project properties file File propertiesFile = new File(projectDirectory, "project.properties"); - Properties props = project.toProperties(); + Properties props = localProject.toProperties(); OutputStream outputStream = null; try { outputStream = new FileOutputStream(propertiesFile); @@ -272,6 +279,63 @@ } /** + * Update project maps with new maps. + * + * Thériquement, si les deux listes sont identiques, cette methode ne fait rien. + * + * @param project project to update maps + * @param projectDirectory project directory + * @param newMaps new maps to set + * @throws CoserBusinessException + */ + protected Project updateProjectMaps(Project project, File projectDirectory, List<File> newMaps) throws CoserBusinessException { + + File mapsDirectory = new File(projectDirectory, CoserConstants.STORAGE_MAPS_DIRECTORY); + + List<File> currentMaps = project.getMaps(); + if (currentMaps == null) { + currentMaps = new ArrayList<File>(); + } + + // bien faire attention aux instances de liste utilisées + // le code n'est pas evident + List<File> mapsList = new ArrayList<File>(currentMaps); + + try { + // check delete maps from current list (not in new "newMaps") + Collection<File> removedMaps = CollectionUtils.subtract(currentMaps, newMaps); + for (File removedMap : removedMaps) { + // not a problem if can't be delete really + removedMap.delete(); + if (log.isDebugEnabled()) { + log.debug("Deleting map : " + removedMap); + } + mapsList.remove(removedMap); + } + + // add new map + Collection<File> addedMaps = CollectionUtils.subtract(newMaps, currentMaps); + if (!addedMaps.isEmpty()) { + mapsDirectory.mkdirs(); + } + for (File addedMap : addedMaps) { + File storageMap = new File(mapsDirectory, addedMap.getName()); + FileUtils.copyFile(addedMap, storageMap); + mapsList.add(storageMap); + if (log.isDebugEnabled()) { + log.debug("Adding map : " + storageMap); + } + } + + project.setMaps(mapsList); + } catch (IOException ex) { + throw new CoserBusinessException("Can't copy maps", ex); + } + + return project; + } + + /** * Retourne le nom de stockage d'un fichier de données suivant la categories * de fichier demandé. Les fichiers sont stockés avec leurs noms originaux * (sauf les fichiers de réference) donc il n'est pas fixe. @@ -410,12 +474,13 @@ // relecture des informations du projet (properties) File projectPropertiesFile = new File(projectDirectory, "project.properties"); + File mapsDirectory = new File(projectDirectory, CoserConstants.STORAGE_MAPS_DIRECTORY); InputStream inputStream = null; try { Properties props = new Properties(); inputStream = new FileInputStream(projectPropertiesFile); props.load(inputStream); - project.fromProperties(props); + project.fromProperties(props, mapsDirectory); if (log.isDebugEnabled()) { log.debug("Read project properties file : " + projectPropertiesFile); Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java =================================================================== --- trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java 2010-12-14 13:55:38 UTC (rev 404) +++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java 2010-12-14 17:40:06 UTC (rev 405) @@ -28,6 +28,7 @@ import java.io.File; import java.io.FileFilter; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; import java.util.Locale; import java.util.Map; @@ -128,7 +129,7 @@ project.setHaulFileName(testHaul.getName()); project.setStrataFileName(testStrata.getName()); - project = projectService.createProject(project, categoriesAndFile, null); + project = projectService.createProject(project, categoriesAndFile, new ArrayList<File>(), null); project = projectService.loadControlData(project); // sans la sauvegarde des données de control, on ne pas creer de 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 2010-12-14 13:55:38 UTC (rev 404) +++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java 2010-12-14 17:40:06 UTC (rev 405) @@ -78,7 +78,7 @@ public void testDuplicatedProject() throws CoserBusinessException { Project p = new Project(); p.setName("project2"); // il existe deja dans src/test/resources - projectService.createProject(p, new HashMap<CoserConstants.Category, File>(), null); + projectService.createProject(p, new HashMap<CoserConstants.Category, File>(), new ArrayList<File>(), null); } /** Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java 2010-12-14 13:55:38 UTC (rev 404) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java 2010-12-14 17:40:06 UTC (rev 405) @@ -27,22 +27,17 @@ import java.awt.BorderLayout; import java.awt.Component; -import java.awt.Cursor; import java.awt.Desktop; import java.beans.PropertyChangeEvent; import java.io.File; import java.io.IOException; import java.net.URI; import java.net.URL; -import java.util.HashMap; import java.util.Locale; -import java.util.Map; import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JOptionPane; -import javax.swing.JTextField; -import javax.swing.SwingWorker; import javax.swing.filechooser.FileFilter; import jaxx.runtime.swing.editor.config.ConfigUI; @@ -55,16 +50,17 @@ import fr.ifremer.coser.CoserBusinessConfig; import fr.ifremer.coser.CoserBusinessException; import fr.ifremer.coser.CoserConfig; -import fr.ifremer.coser.CoserConstants.Category; import fr.ifremer.coser.CoserException; import fr.ifremer.coser.bean.Project; import fr.ifremer.coser.bean.Selection; import fr.ifremer.coser.data.Catch; import fr.ifremer.coser.services.ProjectService; +import fr.ifremer.coser.ui.common.CommonHandler; import fr.ifremer.coser.ui.control.ControlHandler; import fr.ifremer.coser.ui.control.ControlView; import fr.ifremer.coser.ui.project.ProjectCreationView; import fr.ifremer.coser.ui.project.ProjectEditView; +import fr.ifremer.coser.ui.project.ProjectHandler; import fr.ifremer.coser.ui.project.ProjectOpenView; import fr.ifremer.coser.ui.project.ProjectSummaryView; import fr.ifremer.coser.ui.selection.SelectionHandler; @@ -80,33 +76,17 @@ * Last update : $Date$ * By : $Author$ */ -public class CoserFrameHandler { +public class CoserFrameHandler extends CommonHandler { private static final Log log = LogFactory.getLog(CoserFrameHandler.class); protected CoserFrame view; - protected JFileChooser fileChooser; - public CoserFrameHandler(CoserFrame view) { this.view = view; } /** - * Install le curseur sablier. - */ - public void setWaitCursor() { - view.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - } - - /** - * Repositionne le curseur a sa valeur par defaut. - */ - public void setDefaultCursor() { - view.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - } - - /** * Switch application locale. * * @param frame frame @@ -125,7 +105,7 @@ */ public void showProjectCreationView() { ProjectCreationView projectCreationView = new ProjectCreationView(view); - projectCreationView.setHandler(this); + projectCreationView.setHandler(new ProjectHandler()); setMainComponent(projectCreationView); } @@ -134,7 +114,7 @@ */ public void showProjectOpenView() { ProjectOpenView projectOpenView = new ProjectOpenView(view); - projectOpenView.setHandler(this); + projectOpenView.setHandler(new ProjectHandler()); setMainComponent(projectOpenView); } @@ -144,7 +124,7 @@ public void showProjectEditView() { Project project = view.getProject(); ProjectEditView projectEditView = new ProjectEditView(view); - projectEditView.setHandler(this); + projectEditView.setHandler(new ProjectHandler()); projectEditView.setProject(project); setMainComponent(projectEditView); } @@ -235,183 +215,6 @@ } /** - * Retourne une unique instance du file chooser pour conserver - * le répertoire de sélection d'un appel sur l'autre. - * - * @return l'unique instance de file chooser - */ - protected JFileChooser getFileChooser() { - if (fileChooser == null) { - fileChooser = new JFileChooser(); - } - return fileChooser; - } - - /** - * Display user file selection dialog and fill given text component - * with given file. - * - * @param projectView project view - * @param textComponent text component to fill - */ - public void selectInputFile(ProjectCreationView projectView, JTextField textComponent) { - JFileChooser selectFileChooser = getFileChooser(); - - int result = selectFileChooser.showOpenDialog(projectView); - if (result == JFileChooser.APPROVE_OPTION) { - File selectedFile = selectFileChooser.getSelectedFile(); - textComponent.setText(selectedFile.getAbsolutePath()); - } - } - - /** - * Create project. - * - * @param projectView project view - */ - public void createProject(final ProjectCreationView projectView) { - CoserConfig config = projectView.getContextValue(CoserConfig.class); - final Project project = projectView.getProject(); - - // get correct reftax to use depending on project configuration - String reftaxSpeciesPath = null; - if (projectView.getCustomReferenceCheckBox().isSelected()) { - reftaxSpeciesPath = projectView.getCustomReferenceSpeciesFileTextField().getText().trim(); - } - else { - reftaxSpeciesPath = config.getReferenceSpeciesPath(); - } - - // get correct codeTypeEspece file to use - String codeTypeEspecePath = config.getReferenceTypeEspecesPath(); - - // convert to file - File capturesFile = new File(project.getCatchFile()); - File stratesFile = new File(project.getStrataFile()); - File traitsFile = new File(project.getHaulFile()); - File taillesFile = new File(project.getLengthFile()); - File reftaxSpeciesFile = new File(reftaxSpeciesPath); - File codeTypeEspeceFile = new File(codeTypeEspecePath); - - // remember original file names - project.setCatchFileName(capturesFile.getName()); - project.setLengthFileName(taillesFile.getName()); - project.setHaulFileName(traitsFile.getName()); - project.setStrataFileName(stratesFile.getName()); - - // check some files existences - if (!reftaxSpeciesFile.canRead()) { - JOptionPane.showMessageDialog(projectView, _("coser.ui.project.createProjectMissingReftax"), - _("coser.ui.project.missingFile"), JOptionPane.ERROR_MESSAGE); - return; - } - if (!codeTypeEspeceFile.canRead()) { - JOptionPane.showMessageDialog(projectView, _("coser.ui.project.createProjectMissingCodeTypeSpecies"), - _("coser.ui.project.missingFile"), JOptionPane.ERROR_MESSAGE); - return; - } - - // package in map - final Map<Category, File> fileToLoad = new HashMap<Category, File>(); - fileToLoad.put(Category.CATCH, capturesFile); - fileToLoad.put(Category.HAUL, traitsFile); - fileToLoad.put(Category.LENGTH, taillesFile); - fileToLoad.put(Category.STRATA, stratesFile); - fileToLoad.put(Category.REFTAX_SPECIES, reftaxSpeciesFile); - fileToLoad.put(Category.TYPE_ESPECES, codeTypeEspeceFile); - - // disable create button - projectView.getCreateProjectButton().setEnabled(false); - - setWaitCursor(); - SwingWorker<Project, Void> task = new SwingWorker<Project, Void>() { - long before = System.currentTimeMillis(); - - @Override - protected Project doInBackground() { - ProjectService projectService = projectView.getContextValue(ProjectService.class); - Project resultProject = null; - try { - resultProject = projectService.createProject(project, fileToLoad, projectView.getLoadProgressBar()); - } catch (CoserBusinessException ex) { - if (log.isErrorEnabled()) { - log.error("Can't create project", ex); - } - JOptionPane.showMessageDialog(projectView, ex.getMessage(), _("coser.ui.project.creationError"), - JOptionPane.ERROR_MESSAGE); - projectView.getCreateProjectButton().setEnabled(true); - } - return resultProject; - } - - @Override - protected void done() { - if (log.isInfoEnabled()) { - long after = System.currentTimeMillis(); - log.info("4 import take " + (after-before) + "ms"); - } - try { - Project resultProject = get(); - if (resultProject != null) { - projectLoaded(resultProject); - showControlView(false); - } - } catch (Exception ex) { - throw new CoserException("Can't create project", ex); - } - setDefaultCursor(); - } - }; - task.execute(); - } - - /** - * Sauve le projet apres edition. - * - * @param view view - */ - public void saveProject(ProjectEditView view) { - Project project = view.getProject(); - ProjectService projectService = view.getContextValue(ProjectService.class); - setWaitCursor(); - try { - projectService.saveProject(project); - showSummaryView(); - } - catch (CoserBusinessException ex) { - throw new CoserException("Can't save project", ex); - } - finally { - setDefaultCursor(); - } - } - - /** - * Reload project (name selected in ui). - * - * @param projectView view - */ - public void loadProject(final ProjectOpenView projectView) { - - final String projectName = (String)projectView.getProjectsComboBox().getSelectedItem(); - ProjectService projectService = projectView.getContextValue(ProjectService.class); - - setWaitCursor(); - try { - Project project = projectService.openProject(projectName); - projectLoaded(project); - showSummaryView(); - } catch (CoserBusinessException ex) { - if (log.isErrorEnabled()) { - log.error("Can't open project", ex); - } - JOptionPane.showMessageDialog(projectView, ex.getMessage(), _("coser.ui.project.openError"), - JOptionPane.ERROR_MESSAGE); - } - setDefaultCursor(); - } - - /** * Ferme le projet. */ public void closeProject() { @@ -422,11 +225,12 @@ /** * Do some operation when a new project is loaded into application. + * + * @param project loaded project */ - protected void projectLoaded(Project project) { + public void projectLoaded(Project project) { view.setProject(project); view.setContextValue(project); - view.setTitle(_("coser.ui.mainview.titleproject", project.getName())); } @@ -437,7 +241,7 @@ Project project = view.getContextValue(Project.class); ProjectSummaryView projectSummaryView = new ProjectSummaryView(view); - projectSummaryView.setHandler(this); + projectSummaryView.setHandler(new ProjectHandler()); projectSummaryView.setProject(project); int selectionCount = 0; @@ -470,7 +274,7 @@ ProjectService projectService = view.getContextValue(ProjectService.class); Project project = view.getContextValue(Project.class); - setWaitCursor(); + setWaitCursor(view); try { if (reloadData) { @@ -490,7 +294,7 @@ throw new CoserException("Can't load control data", ex); } finally { - setDefaultCursor(); + setDefaultCursor(view); } } @@ -503,7 +307,7 @@ ProjectService projectService = view.getContextValue(ProjectService.class); Project project = view.getContextValue(Project.class); - setWaitCursor(); + setWaitCursor(view); try { Selection selection = projectService.initProjectSelection(project); view.setContextValue(selection); @@ -515,7 +319,7 @@ SelectionHandler handler = new SelectionHandler(); selectionView.setHandler(handler); - handler.initMapToolBar(selectionView.getSelectionDetailsTab()); + handler.initMap(selectionView.getSelectionDetailsTab()); handler.initSelection(selectionView); // restore session size @@ -529,7 +333,7 @@ throw new CoserException("Can't create new selection", ex); } finally { - setDefaultCursor(); + setDefaultCursor(view); } } @@ -544,7 +348,7 @@ Project project = view.getContextValue(Project.class); Selection selection = project.getSelections().get(selectionName); - setWaitCursor(); + setWaitCursor(view); try { project = projectService.loadSelectionData(project, selection); view.setContextValue(selection); @@ -557,7 +361,7 @@ SelectionHandler handler = new SelectionHandler(); selectionView.setHandler(handler); - handler.initMapToolBar(selectionView.getSelectionDetailsTab()); + handler.initMap(selectionView.getSelectionDetailsTab()); handler.reloadSelection(selectionView); // restore session size @@ -569,7 +373,7 @@ throw new CoserException("Can't reload selection data", ex); } finally { - setDefaultCursor(); + setDefaultCursor(view); } } @@ -623,7 +427,7 @@ SelectionHandler handler = new SelectionHandler(); selectionView.setHandler(handler); - handler.initMapToolBar(selectionView.getSelectionDetailsTab()); + handler.initMap(selectionView.getSelectionDetailsTab()); // FIXME chatellier 20101126 il faut faire un mix de init && reload handler.initSelection(selectionView); Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/maps/CoserMap.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/maps/CoserMap.java 2010-12-14 13:55:38 UTC (rev 404) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/maps/CoserMap.java 2010-12-14 17:40:06 UTC (rev 405) @@ -23,6 +23,7 @@ package fr.ifremer.coser.ui.maps; +import java.io.File; import java.util.Properties; import org.apache.commons.logging.Log; @@ -39,6 +40,8 @@ import com.bbn.openmap.omGraphics.DrawingAttributes; import com.bbn.openmap.plugin.esri.EsriLayer; +import fr.ifremer.coser.bean.Project; + /** * Coser map based open openmap. * @@ -69,8 +72,7 @@ md.setDefaultMouseModes(); setActiveMouseMode(new NavMouseMode()); layerHandler.addLayerListener(this); - initMap(); - + //initMap(); } public void setActiveMouseMode(MapMouseMode mode) { @@ -82,18 +84,24 @@ }*/ } - protected void initMap() { + public void initMap(Project project) { - addGraticuleLayer(); - // centrée sur la france setCenter(50f, 0f); setScale(16000000f); + // graticule layer + addGraticuleLayer(); + + // world layer addLayer("maps/vmap_area_thin.shp", "maps/vmap_area_thin.shp", "ff000000", "ffbdde83"); - - // addLayer("maps/ibts/pol_ibts.shp", "maps/ibts/pol_ibts.shp", "ff000000", "ffE55B3C"); + // project layer + if (project.getMaps() != null) { + for (File map : project.getMaps()) { + addLayer(map.getAbsolutePath(), map.getAbsolutePath(), "ff000000", "ffE55B3C"); + } + } } protected void addGraticuleLayer() { @@ -185,35 +193,4 @@ return shapeLayer; } - - /** - * Manage shp layer display. - * - * @param layerId layer id - * @param mapFile absolute map fail path - * @param lineColor line color - * @param fillColor fill color - * - * @return shape layer - * @see ShapeLayer - */ - protected Layer getEsriLayer(String layerId, String mapFile, String lineColor, - String fillColor) { - - if (log.isDebugEnabled()) { - log.debug("Get ShapeLayer with filename : " + mapFile); - } - - EsriLayer layer = new EsriLayer(); - Properties p = new Properties(); - p.setProperty(layerId + "." + EsriLayer.PARAM_DBF, "maps/ibts/pol_ibts.dbf"); - p.setProperty(layerId + "." + EsriLayer.PARAM_SHP, "maps/ibts/pol_ibts.shp"); - p.setProperty(layerId + "." + EsriLayer.PARAM_SHX, "maps/ibts/pol_ibts.shx"); - p.setProperty(layerId + "." + DrawingAttributes.linePaintProperty, lineColor); - p.setProperty(layerId + "." + DrawingAttributes.fillPaintProperty, fillColor); - layer.setProperties(layerId, p); - layer.setName(layerId); - - return layer; - } } 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 2010-12-14 13:55:38 UTC (rev 404) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx 2010-12-14 17:40:06 UTC (rev 405) @@ -23,7 +23,7 @@ #L% --> <Table> - <fr.ifremer.coser.ui.CoserFrameHandler id="handler" javaBean="null" /> + <ProjectHandler id="handler" javaBean="null" /> <!-- Validation --> <fr.ifremer.coser.bean.Project id="project" /> @@ -143,6 +143,26 @@ </cell> </row> <row> + <cell anchor="northwest" rows="2"> + <JLabel text="coser.ui.project.maps" /> + </cell> + <cell fill="horizontal" columns="2" rows="2"> + <JScrollPane> + <ProjectMapsListModel id="projectMapsModel" /> + <JList id="projectMaps" model="{projectMapsModel}" /> + </JScrollPane> + </cell> + <cell fill="horizontal"> + <JButton text="coser.ui.project.addMaps" onActionPerformed="getHandler().selectMapFiles(this)" /> + </cell> + </row> + <row> + <cell anchor="north" fill="horizontal"> + <JButton text="coser.ui.project.removeMaps" enabled="{getProjectMaps().getSelectedIndices().length != 0}" + onActionPerformed="getHandler().removeSelectedMapFiles(this)" /> + </cell> + </row> + <row> <cell> <JLabel id="referenceSpeciesDescriptionLabel" text="coser.ui.project.usedReferenceSpeciesFile" enabled="{!customReferenceCheckBox.isSelected()}" /> 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 2010-12-14 13:55:38 UTC (rev 404) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx 2010-12-14 17:40:06 UTC (rev 405) @@ -23,7 +23,7 @@ #L% --> <Table> - <fr.ifremer.coser.ui.CoserFrameHandler id="handler" javaBean="null" /> + <ProjectHandler id="handler" javaBean="null" /> <!-- Validation --> <fr.ifremer.coser.bean.Project id="project" javaBean="null" /> @@ -63,6 +63,26 @@ </cell> </row> <row> + <cell anchor="northwest" rows="2"> + <JLabel text="coser.ui.project.maps" /> + </cell> + <cell fill="horizontal" columns="2" rows="2"> + <JScrollPane> + <ProjectMapsListModel id="projectMapsModel" maps="{getProject().getMaps()}" /> + <JList id="projectMaps" model="{projectMapsModel}" /> + </JScrollPane> + </cell> + <cell fill="horizontal"> + <JButton text="coser.ui.project.addMaps" onActionPerformed="getHandler().selectMapFiles(this)" /> + </cell> + </row> + <row> + <cell anchor="north" fill="horizontal"> + <JButton text="coser.ui.project.removeMaps" enabled="{getProjectMaps().getSelectedIndices().length != 0}" + onActionPerformed="getHandler().removeSelectedMapFiles(this)" /> + </cell> + </row> + <row> <cell anchor="northwest"> <JLabel text="coser.ui.project.projectcomment" /> </cell> Added: 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 (rev 0) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java 2010-12-14 17:40:06 UTC (rev 405) @@ -0,0 +1,339 @@ +/* + * #%L + * + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2010 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.ui.project; + +import static org.nuiton.i18n.I18n._; + +import java.io.File; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.swing.JFileChooser; +import javax.swing.JOptionPane; +import javax.swing.JTextField; +import javax.swing.SwingWorker; +import javax.swing.filechooser.FileFilter; + +import jaxx.runtime.JAXXUtil; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import fr.ifremer.coser.CoserBusinessException; +import fr.ifremer.coser.CoserConfig; +import fr.ifremer.coser.CoserConstants.Category; +import fr.ifremer.coser.CoserException; +import fr.ifremer.coser.bean.Project; +import fr.ifremer.coser.services.ProjectService; +import fr.ifremer.coser.ui.CoserFrame; +import fr.ifremer.coser.ui.common.CommonHandler; + +/** + * Handler for project related ui. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class ProjectHandler extends CommonHandler { + + private static final Log log = LogFactory.getLog(ProjectHandler.class); + + protected JFileChooser fileChooser; + + protected JFileChooser mapFileChooser; + + /** + * Retourne une unique instance du file chooser pour conserver + * le répertoire de sélection d'un appel sur l'autre. + * + * @return l'unique instance de file chooser + */ + protected JFileChooser getFileChooser() { + if (fileChooser == null) { + fileChooser = new JFileChooser(); + } + return fileChooser; + } + + /** + * Retourne une unique instance du file chooser pour conserver + * le répertoire de sélection d'un appel sur l'autre. + * + * @return l'unique instance de file chooser + */ + protected JFileChooser getMapFileChooser() { + if (mapFileChooser == null) { + mapFileChooser = new JFileChooser(); + mapFileChooser.addChoosableFileFilter(new FileFilter() { + @Override + public boolean accept(File f) { + return f.isDirectory() || f.getName().matches(".*\\.shp"); + } + + @Override + public String getDescription() { + return "ESRI Shapefiles (*.shp)"; + } + }); + } + return mapFileChooser; + } + + /** + * Display user file selection dialog and fill given text component + * with given file. + * + * @param projectView project view + * @param textComponent text component to fill + */ + public void selectInputFile(ProjectCreationView projectView, JTextField textComponent) { + JFileChooser selectFileChooser = getFileChooser(); + + int result = selectFileChooser.showOpenDialog(projectView); + if (result == JFileChooser.APPROVE_OPTION) { + File selectedFile = selectFileChooser.getSelectedFile(); + textComponent.setText(selectedFile.getAbsolutePath()); + } + } + + /** + * Display user file selection dialog and fill maps list. + * + * @param projectView project view + */ + public void selectMapFiles(ProjectCreationView projectView) { + JFileChooser selectFileChooser = getMapFileChooser(); + + int result = selectFileChooser.showOpenDialog(projectView); + if (result == JFileChooser.APPROVE_OPTION) { + File selectedFile = selectFileChooser.getSelectedFile(); + projectView.getProjectMapsModel().addMap(selectedFile); + } + } + + /** + * Display user file selection dialog and fill given text component + * with given file. + * + * @param projectView project view + */ + public void removeSelectedMapFiles(ProjectCreationView projectView) { + Object[] values = projectView.getProjectMaps().getSelectedValues(); + for (Object value : values) { + projectView.getProjectMapsModel().removeMap(value); + } + } + + /** + * Display user file selection dialog and fill maps list. + * + * @param projectView project view + */ + public void selectMapFiles(ProjectEditView projectView) { + JFileChooser selectFileChooser = getMapFileChooser(); + + int result = selectFileChooser.showOpenDialog(projectView); + if (result == JFileChooser.APPROVE_OPTION) { + File selectedFile = selectFileChooser.getSelectedFile(); + projectView.getProjectMapsModel().addMap(selectedFile); + } + } + + /** + * Display user file selection dialog and fill given text component + * with given file. + * + * @param projectView project view + */ + public void removeSelectedMapFiles(ProjectEditView projectView) { + Object[] values = projectView.getProjectMaps().getSelectedValues(); + for (Object value : values) { + projectView.getProjectMapsModel().removeMap(value); + } + } + + /** + * Create project. + * + * @param projectView project view + */ + public void createProject(final ProjectCreationView projectView) { + final CoserFrame parent = projectView.getContextValue(CoserFrame.class, JAXXUtil.PARENT); + CoserConfig config = projectView.getContextValue(CoserConfig.class); + final Project project = projectView.getProject(); + + // get correct reftax to use depending on project configuration + String reftaxSpeciesPath = null; + if (projectView.getCustomReferenceCheckBox().isSelected()) { + reftaxSpeciesPath = projectView.getCustomReferenceSpeciesFileTextField().getText().trim(); + } + else { + reftaxSpeciesPath = config.getReferenceSpeciesPath(); + } + + // get correct codeTypeEspece file to use + String codeTypeEspecePath = config.getReferenceTypeEspecesPath(); + + // convert to file + File capturesFile = new File(project.getCatchFile()); + File stratesFile = new File(project.getStrataFile()); + File traitsFile = new File(project.getHaulFile()); + File taillesFile = new File(project.getLengthFile()); + File reftaxSpeciesFile = new File(reftaxSpeciesPath); + File codeTypeEspeceFile = new File(codeTypeEspecePath); + + // remember original file names + project.setCatchFileName(capturesFile.getName()); + project.setLengthFileName(taillesFile.getName()); + project.setHaulFileName(traitsFile.getName()); + project.setStrataFileName(stratesFile.getName()); + + // get map list + final List<File> newMaps = projectView.getProjectMapsModel().getMaps(); + + // check some files existences + if (!reftaxSpeciesFile.canRead()) { + JOptionPane.showMessageDialog(projectView, _("coser.ui.project.createProjectMissingReftax"), + _("coser.ui.project.missingFile"), JOptionPane.ERROR_MESSAGE); + return; + } + if (!codeTypeEspeceFile.canRead()) { + JOptionPane.showMessageDialog(projectView, _("coser.ui.project.createProjectMissingCodeTypeSpecies"), + _("coser.ui.project.missingFile"), JOptionPane.ERROR_MESSAGE); + return; + } + + // package in map + final Map<Category, File> fileToLoad = new HashMap<Category, File>(); + fileToLoad.put(Category.CATCH, capturesFile); + fileToLoad.put(Category.HAUL, traitsFile); + fileToLoad.put(Category.LENGTH, taillesFile); + fileToLoad.put(Category.STRATA, stratesFile); + fileToLoad.put(Category.REFTAX_SPECIES, reftaxSpeciesFile); + fileToLoad.put(Category.TYPE_ESPECES, codeTypeEspeceFile); + + // disable create button + projectView.getCreateProjectButton().setEnabled(false); + + setWaitCursor(projectView); + SwingWorker<Project, Void> task = new SwingWorker<Project, Void>() { + long before = System.currentTimeMillis(); + + @Override + protected Project doInBackground() { + ProjectService projectService = projectView.getContextValue(ProjectService.class); + Project resultProject = null; + try { + resultProject = projectService.createProject(project, fileToLoad, newMaps, projectView.getLoadProgressBar()); + } catch (CoserBusinessException ex) { + if (log.isErrorEnabled()) { + log.error("Can't create project", ex); + } + JOptionPane.showMessageDialog(projectView, ex.getMessage(), _("coser.ui.project.creationError"), + JOptionPane.ERROR_MESSAGE); + projectView.getCreateProjectButton().setEnabled(true); + } + return resultProject; + } + + @Override + protected void done() { + if (log.isInfoEnabled()) { + long after = System.currentTimeMillis(); + log.info("4 import take " + (after-before) + "ms"); + } + try { + Project resultProject = get(); + if (resultProject != null) { + parent.getHandler().projectLoaded(resultProject); + parent.getHandler().showControlView(false); + } + } catch (Exception ex) { + throw new CoserException("Can't create project", ex); + } + setDefaultCursor(projectView); + } + }; + task.execute(); + } + + /** + * Sauve le projet apres edition. + * + * @param projectView project edit view + */ + public void saveProject(ProjectEditView projectView) { + Project project = projectView.getProject(); + ProjectService projectService = projectView.getContextValue(ProjectService.class); + CoserFrame parent = projectView.getContextValue(CoserFrame.class, JAXXUtil.PARENT); + + setWaitCursor(projectView); + try { + + // get map list + List<File> newMaps = projectView.getProjectMapsModel().getMaps(); + + projectService.saveProject(project, newMaps); + parent.getHandler().showSummaryView(); + } + catch (CoserBusinessException ex) { + throw new CoserException("Can't save project", ex); + } + finally { + setDefaultCursor(projectView); + } + } + + /** + * Reload project (name selected in ui). + * + * @param projectView view + */ + public void loadProject(final ProjectOpenView projectView) { + + final String projectName = (String)projectView.getProjectsComboBox().getSelectedItem(); + ProjectService projectService = projectView.getContextValue(ProjectService.class); + CoserFrame parent = projectView.getContextValue(CoserFrame.class, JAXXUtil.PARENT); + + setWaitCursor(projectView); + try { + Project project = projectService.openProject(projectName); + parent.getHandler().projectLoaded(project); + parent.getHandler().showSummaryView(); + } catch (CoserBusinessException ex) { + if (log.isErrorEnabled()) { + log.error("Can't open project", ex); + } + JOptionPane.showMessageDialog(projectView, ex.getMessage(), _("coser.ui.project.openError"), + JOptionPane.ERROR_MESSAGE); + } + setDefaultCursor(projectView); + } +} Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectMapsListModel.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectMapsListModel.java (rev 0) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectMapsListModel.java 2010-12-14 17:40:06 UTC (rev 405) @@ -0,0 +1,93 @@ +/* + * #%L + * Coser :: UI + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2010 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 java.io.File; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.DefaultListModel; + +/** + * Project maps files list model. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class ProjectMapsListModel extends DefaultListModel { + + /** serialVersionUID. */ + private static final long serialVersionUID = 7354496943155548103L; + + protected List<File> maps; + + public ProjectMapsListModel() { + maps = new ArrayList<File>(); + } + + public void setMaps(List<File> maps) { + if (maps != null) { + this.maps = new ArrayList<File>(maps); + } + else { + this.maps = new ArrayList<File>(); + } + fireContentsChanged(this, 0, this.maps.size() - 1); + } + + public List<File> getMaps() { + return maps; + } + + public void addMap(File map) { + maps.add(map); + fireContentsChanged(this, 0, maps.size() - 1); + } + + public void removeMap(Object map) { + maps.remove(map); + fireContentsChanged(this, 0, maps.size() - 1); + } + + /* + * @see javax.swing.ListModel#getSize() + */ + @Override + public int getSize() { + return maps.size(); + } + + /* + * @see javax.swing.ListModel#getElementAt(int) + */ + @Override + public Object getElementAt(int index) { + return maps.get(index); + } +} Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectMapsListModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectOpenView.jaxx =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectOpenView.jaxx 2010-12-14 13:55:38 UTC (rev 404) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectOpenView.jaxx 2010-12-14 17:40:06 UTC (rev 405) @@ -23,7 +23,7 @@ #L% --> <Table> - <fr.ifremer.coser.ui.CoserFrameHandler id="handler" javaBean="null" /> + <ProjectHandler id="handler" javaBean="null" /> <row> <cell weightx="1" fill="horizontal"> Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectSummaryView.jaxx =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectSummaryView.jaxx 2010-12-14 13:55:38 UTC (rev 404) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectSummaryView.jaxx 2010-12-14 17:40:06 UTC (rev 405) @@ -23,7 +23,7 @@ #L% --> <Table> - <fr.ifremer.coser.ui.CoserFrameHandler id="handler" javaBean="null" /> + <ProjectHandler id="handler" javaBean="null" /> <fr.ifremer.coser.bean.Project id="project" javaBean="null" /> 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 2010-12-14 13:55:38 UTC (rev 404) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2010-12-14 17:40:06 UTC (rev 405) @@ -267,11 +267,17 @@ } /** - * Link map toolbar with map. + * Init openmap toolbar and openmap layers. * * @param view view */ - public void initMapToolBar(SelectionDetailsView view) { + public void initMap(SelectionDetailsView view) { + + // add layers + Project project = view.getContextValue(Project.class); + view.getStrataMap().initMap(project); + + // link toolbar with map OMToolSet toolSet = new OMToolSet(); toolSet.setupListeners(view.getStrataMap()); view.getStrataMapToolBar().add((Tool)toolSet); Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionRsufiView.jaxx =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionRsufiView.jaxx 2010-12-14 13:55:38 UTC (rev 404) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionRsufiView.jaxx 2010-12-14 17:40:06 UTC (rev 405) @@ -25,7 +25,7 @@ <Table> <SelectionHandler id="handler" javaBean="null" /> <row> - <cell weightx="1" fill="horizontal"> + <cell weightx="1" fill="horizontal" > <Table border='{BorderFactory.createTitledBorder(_("coser.ui.result.extractDataTitle"))}'> <row> <cell> @@ -49,6 +49,9 @@ </cell> </row> <row> + <cell insets="30"></cell> + </row> + <row> <cell weightx="1" weighty="2" fill="both"> <Table border='{BorderFactory.createTitledBorder(_("coser.ui.result.availableDataTitle"))}'> <row> 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 2010-12-14 13:55:38 UTC (rev 404) +++ trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2010-12-14 17:40:06 UTC (rev 405) @@ -91,6 +91,7 @@ coser.ui.mainframe.menu.website=Online help coser.ui.mainview.titleempty=Contr\u00F4le et S\u00E9lection RSufi coser.ui.mainview.titleproject=Contr\u00F4le et S\u00E9lection RSufi (%s) +coser.ui.project.addMaps=Add map\u2026 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) @@ -100,6 +101,7 @@ coser.ui.project.editProject=Edit project coser.ui.project.haulFile=Haul file \: coser.ui.project.lengthFile=Length file \: +coser.ui.project.maps=Maps \: coser.ui.project.missingFile=Missing file coser.ui.project.newProject=New project coser.ui.project.openError=Open error @@ -109,6 +111,7 @@ coser.ui.project.projectauthor=Author \: coser.ui.project.projectcomment=Comment \: coser.ui.project.projectname=Project name \: +coser.ui.project.removeMaps=Remove map coser.ui.project.saveProject=Save project coser.ui.project.strataFile=Strata file \: coser.ui.project.summary.catchFileName=Catch 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 2010-12-14 13:55:38 UTC (rev 404) +++ trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2010-12-14 17:40:06 UTC (rev 405) @@ -91,6 +91,7 @@ coser.ui.mainframe.menu.website=Aide en ligne coser.ui.mainview.titleempty=Contr\u00F4le et S\u00E9lection RSufi coser.ui.mainview.titleproject=Contr\u00F4le et S\u00E9lection RSufi (%s) +coser.ui.project.addMaps=Ajouter\u2026 coser.ui.project.catchFile=Fichier de captures \: coser.ui.project.createProject=Cr\u00E9er le projet coser.ui.project.createProjectMissingCodeTypeSpecies=Le fichier 'CodeTypeEspeces' n'est pas valide \!\n(v\u00E9rifiez la configuration \: coser.reference.typeSpecies) @@ -100,6 +101,7 @@ coser.ui.project.editProject=Modifier le projet coser.ui.project.haulFile=Fichier des traits \: coser.ui.project.lengthFile=Fichier des tailles \: +coser.ui.project.maps=Cartes \: coser.ui.project.missingFile=Fichier manquant coser.ui.project.newProject=Nouveau projet coser.ui.project.openError=Erreur d'ouverture @@ -109,6 +111,7 @@ coser.ui.project.projectauthor=Auteur \: coser.ui.project.projectcomment=Commentaire \: coser.ui.project.projectname=Nom du projet \: +coser.ui.project.removeMaps=Supprimer coser.ui.project.saveProject=Sauver le projet coser.ui.project.strataFile=Fichier des strates \: coser.ui.project.summary.catchFileName=Nom du fichier captures \:
participants (1)
-
chatellier@users.labs.libre-entreprise.org