r413 - in trunk: sammoa-application/src/main/java/fr/ulr/sammoa/application sammoa-application/src/main/java/fr/ulr/sammoa/application/io sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication sammoa-application/src/main/java/fr/ulr/sammoa/application/map sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication sammoa-ui-swing/src/main/reso
Author: tchemit Date: 2012-08-12 12:34:09 +0200 (Sun, 12 Aug 2012) New Revision: 413 Url: http://forge.codelutin.com/repositories/revision/sammoa/413 Log: refs #1201: Export format application (interface graphique done, mise en place du service, reste ?\195?\160 coder le service + les storages) Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationCallbackMode.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationModel.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationService.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.css trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.jaxx trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIHandler.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIModel.java Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapModel.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaScreen.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUIContext.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.css trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.jaxx trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUIHandler.java trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java 2012-08-11 09:17:30 UTC (rev 412) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java 2012-08-12 10:34:09 UTC (rev 413) @@ -24,6 +24,7 @@ */ package fr.ulr.sammoa.application; +import fr.ulr.sammoa.application.io.exportApplication.ExportApplicationService; import fr.ulr.sammoa.application.map.ExportMapService; import fr.ulr.sammoa.persistence.SammoaPersistence; @@ -87,6 +88,10 @@ return exportMapService; } + public ExportApplicationService newExportApplicationService() { + return new ExportApplicationService(this); + } + public void open() { persistence.open( config.getApplicationConfig().getFlatOptions(), Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationCallbackMode.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationCallbackMode.java (rev 0) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationCallbackMode.java 2012-08-12 10:34:09 UTC (rev 413) @@ -0,0 +1,51 @@ +package fr.ulr.sammoa.application.io.exportApplication; +/* + * #%L + * SAMMOA :: Application + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 UMS 3462, Code Lutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 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% + */ + +/** + * What to do after a application export. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.6 + */ +public enum ExportApplicationCallbackMode { + /** + * Do nothing. + * <p/> + * Says after this every thing stay in place. + */ + NOTHING, + /** + * Remove flight data. + * <p/> + * Says after this referential are still there (Region, Campaign, Strate, Observer, Species). + */ + REMOVE_FLIGHTS, + /** + * Remove campaign data. + * <p/> + * Says after this, there is no more stuff in db. + */ + REMOVE_ALL +} Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationCallbackMode.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationModel.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationModel.java (rev 0) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationModel.java 2012-08-12 10:34:09 UTC (rev 413) @@ -0,0 +1,85 @@ +package fr.ulr.sammoa.application.io.exportApplication; +/* + * #%L + * SAMMOA :: Application + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 UMS 3462, Code Lutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 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% + */ + +import fr.ulr.sammoa.persistence.Campaign; +import fr.ulr.sammoa.persistence.Flight; + +import java.io.File; +import java.io.Serializable; + +/** + * Model of export application. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.6 + */ +public class ExportApplicationModel implements Serializable { + + private static final long serialVersionUID = 1L; + + public static ExportApplicationModel newModel(File exportDirectory, + String exportFilename, + Campaign campaign, + Flight flight, + ExportApplicationCallbackMode callback) { + ExportApplicationModel result = new ExportApplicationModel(); + result.exportDirectory = exportDirectory; + result.exportFilename = exportFilename; + result.campaign = campaign; + result.flight = flight; + result.callback = callback; + return result; + } + + protected Campaign campaign; + + protected Flight flight; + + protected File exportDirectory; + + protected String exportFilename; + + protected ExportApplicationCallbackMode callback; + + public File getExportDirectory() { + return exportDirectory; + } + + public String getExportFilename() { + return exportFilename; + } + + public Campaign getCampaign() { + return campaign; + } + + public Flight getFlight() { + return flight; + } + + public ExportApplicationCallbackMode getCallback() { + return callback; + } +} \ No newline at end of file Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationService.java (rev 0) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationService.java 2012-08-12 10:34:09 UTC (rev 413) @@ -0,0 +1,111 @@ +package fr.ulr.sammoa.application.io.exportApplication; +/* + * #%L + * SAMMOA :: Application + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 UMS 3462, Code Lutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 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% + */ + +import fr.ulr.sammoa.application.SammoaConfig; +import fr.ulr.sammoa.application.SammoaContext; +import fr.ulr.sammoa.persistence.SammoaPersistence; +import org.nuiton.util.TimeLog; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * To export application as a {@code sammoa} file. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.6 + */ +public class ExportApplicationService { + + /** Logger. */ + private static final Logger logger = + LoggerFactory.getLogger(ExportApplicationService.class); + + + private static final TimeLog timeLog = + new TimeLog(ExportApplicationService.class); + + protected final SammoaContext context; + + protected final SammoaConfig config; + + protected final SammoaPersistence persistence; + + public ExportApplicationService(SammoaContext context) { + this.context = context; + this.persistence = context.getPersistence(); + this.config = context.getConfig(); + } + + public void exportApplication(ExportApplicationModel model) { + + if (logger.isInfoEnabled()) { + logger.info("Start Application export to {} :: {}", + model.getExportDirectory(), + model.getExportFilename()); + } + + long startTime = TimeLog.getTime(); + + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + //BOUH! + } + + //TODO + + startTime = timeLog.log(startTime, "exportApplication", + "after Export execution"); + + switch (model.getCallback()) { + + case NOTHING: + // nothing to do + break; + case REMOVE_FLIGHTS: + removeFlightData(model); + break; + case REMOVE_ALL: + removeAllData(); + break; + } + + timeLog.log(startTime, "exportApplication", "after Callback execution"); + + } + + protected void removeFlightData(ExportApplicationModel model) { + if (logger.isInfoEnabled()) { + logger.info("Will remove flight data for campaign {}", + model.getCampaign().getCode()); + } + } + + protected void removeAllData() { + if (logger.isInfoEnabled()) { + logger.info("Will remove all data from current db (create a new db...)"); + } + } +} Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationService.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapModel.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapModel.java 2012-08-11 09:17:30 UTC (rev 412) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapModel.java 2012-08-12 10:34:09 UTC (rev 413) @@ -35,7 +35,7 @@ import java.util.List; /** - * Model of export map UI. + * Model of export map. * * @author tchemit <chemit@codelutin.com> * @since 0.5 Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java 2012-08-11 09:17:30 UTC (rev 412) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java 2012-08-12 10:34:09 UTC (rev 413) @@ -35,6 +35,7 @@ import fr.ulr.sammoa.ui.swing.flight.FlightUI; import fr.ulr.sammoa.ui.swing.flight.FlightUIHandler; import fr.ulr.sammoa.ui.swing.home.HomeUI; +import fr.ulr.sammoa.ui.swing.io.exportApplication.ExportApplicationUI; import fr.ulr.sammoa.ui.swing.io.exportMap.ExportMapUI; import fr.ulr.sammoa.ui.swing.util.SammoaUtil; import jaxx.runtime.SwingUtil; @@ -165,16 +166,17 @@ campaign.getCode(), campaign.getRegion().getCode(), flight.getFlightNumber())); - ui.getBody().add(currentBody); + ui.getBody().add(currentBody, BorderLayout.CENTER); break; case CAMPAIGN: currentBody = new CampaignUI(context); context.getSwingSession().add(currentBody); ui.getBody().setTitle(_("sammoa.title.campaign")); - ui.getBody().add(currentBody); + ui.getBody().add(currentBody, BorderLayout.CENTER); break; + case EXPORT_MAP: currentBody = new ExportMapUI(context); context.getSwingSession().add(currentBody); @@ -182,6 +184,12 @@ ui.getBody().add(currentBody); break; + case EXPORT_APPLICATION: + currentBody = new ExportApplicationUI(context); + context.getSwingSession().add(currentBody); + ui.getBody().setTitle(_("sammoa.title.exportApplication")); + ui.getBody().add(currentBody); + break; } ui.setScreen(screen); Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaScreen.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaScreen.java 2012-08-11 09:17:30 UTC (rev 412) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaScreen.java 2012-08-12 10:34:09 UTC (rev 413) @@ -36,5 +36,7 @@ FLIGHT, + EXPORT_APPLICATION, + EXPORT_MAP } Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUIContext.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUIContext.java 2012-08-11 09:17:30 UTC (rev 412) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUIContext.java 2012-08-12 10:34:09 UTC (rev 413) @@ -32,9 +32,7 @@ import fr.ulr.sammoa.ui.swing.flight.FlightUIModel; import org.nuiton.widget.SwingSession; -/** - * @author sletellier <letellier@codelutin.com> - */ +/** @author sletellier <letellier@codelutin.com> */ public class SammoaUIContext { private static SammoaUIContext uiContext; @@ -50,13 +48,11 @@ @Deprecated protected FlightController flightController; - + protected SwingSession swingSession; - + protected SammoaDecoratorProvider decoratorProvider; - -// protected SammoaScreen screen; - + protected String campaignId; protected String flightId; @@ -68,15 +64,15 @@ public static SammoaUIContext getUIContext() { Preconditions.checkNotNull(uiContext, - "You must create the context with the method " + - "#newUIContext(SammoaContext) before retrieving it"); + "You must create the context with the method " + + "#newUIContext(SammoaContext) before retrieving it"); return uiContext; } protected SammoaUIContext(SammoaContext context) { this.context = context; } - + public SammoaContext getAppContext() { return context; } @@ -108,7 +104,7 @@ public void setSwingSession(SwingSession swingSession) { this.swingSession = swingSession; } - + public SammoaDecoratorProvider getDecoratorProvider() { if (decoratorProvider == null) { decoratorProvider = new SammoaDecoratorProvider(); @@ -132,19 +128,6 @@ return flightId; } -// public void setFlightId(String flightId) { -// this.flightId = flightId; -// } - -// public SammoaScreen getScreen() { -// return screen; -// } - -// public void setScreen(SammoaScreen screen) { -// this.screen = screen; -// mainUIHandler.setScreen(screen); -// } - public void setFlightScreen(String flightId) { this.flightId = flightId; mainUIHandler.setScreen(SammoaScreen.FLIGHT); @@ -164,6 +147,12 @@ mainUIHandler.setScreen(SammoaScreen.EXPORT_MAP); } + public void setExportApplicationScreen(String campaignId, String flightId) { + this.campaignId = campaignId; + this.flightId = flightId; + mainUIHandler.setScreen(SammoaScreen.EXPORT_APPLICATION); + } + public void setStatusMessage(String message) { mainUIHandler.getUI().getStatus().setStatus(message); } Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.css =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.css 2012-08-11 09:17:30 UTC (rev 412) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.css 2012-08-12 10:34:09 UTC (rev 413) @@ -65,9 +65,8 @@ text: "sammoa.action.exportMap"; } -#exportButton { - enabled:false; - text: "sammoa.action.export"; +#exportApplicationButton { + text: "sammoa.action.exportApplication"; } #onBoardButton { Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.jaxx =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.jaxx 2012-08-11 09:17:30 UTC (rev 412) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.jaxx 2012-08-12 10:34:09 UTC (rev 413) @@ -106,8 +106,8 @@ onActionPerformed='getHandler().showImport()'/> <JButton id='exportMapButton' onActionPerformed='getHandler().showExportMap()'/> - <JButton id='exportButton' - onActionPerformed='getHandler().showExport()'/> + <JButton id='exportApplicationButton' + onActionPerformed='getHandler().showExportApplication()'/> <JButton id='onBoardButton' onActionPerformed='getHandler().showOnBoard()'/> <JButton id='validationButton' Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUIHandler.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUIHandler.java 2012-08-11 09:17:30 UTC (rev 412) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUIHandler.java 2012-08-12 10:34:09 UTC (rev 413) @@ -51,7 +51,9 @@ */ public class HomeUIHandler implements SammoaUIHandler { - private static final Logger logger = LoggerFactory.getLogger(HomeUIHandler.class); + /** Logger. */ + private static final Logger logger = + LoggerFactory.getLogger(HomeUIHandler.class); // XXX-fdesbois-2012-07-23 : used to avoid set unexpected set null during // selections, this is a strange behavior of setElements that clear with @@ -59,7 +61,7 @@ protected boolean comboIsAdjusting; protected SammoaUIContext context; - + protected HomeUI ui; public HomeUIHandler(SammoaUIContext context, HomeUI ui) { @@ -74,7 +76,7 @@ protected FlightService getFlightService() { return context.getAppContext().getFlightService(); } - + protected ReferentialService getReferentialService() { return context.getAppContext().getReferentialService(); } @@ -103,7 +105,7 @@ } else { Campaign selectedCampaign = null; - + // Get campaign from context, then from config String campaignId = context.getCampaignId(); if (campaignId == null) { @@ -138,17 +140,13 @@ Campaign campaign = ui.getCampaignListModel().getSelectedItem(); if (logger.isDebugEnabled()) { - logger.debug(String.format("Select the campaign %s", - campaign.getCode()) - ); + logger.debug("Select the campaign {}", campaign.getCode()); } getModel().setCampaign(campaign); if (logger.isDebugEnabled()) { - logger.debug(String.format("Get flights from campaign %s", - campaign.getCode()) - ); + logger.debug("Get flights from campaign {}", campaign.getCode()); } List<Flight> flights = getFlightService().getFlights(campaign); @@ -161,26 +159,22 @@ if (logger.isDebugEnabled()) { - String flightsString = "[" + Joiner.on(";").join( + String flightsString = "[" + Joiner.on(";").join( Iterables.transform(flights, Flights.toFlightNumber()) ) + "]"; - logger.debug(String.format("Init flights combobox = %s", - flightsString) - ); + logger.debug("Init flights combobox = {}", flightsString); } ui.getFlightListModel().setElements(flights); if (logger.isDebugEnabled()) { - String systemsIdString = "[" + Joiner.on(";").join( + String systemsIdString = "[" + Joiner.on(";").join( systemIds ) + "]"; - logger.debug(String.format("Init systemId combobox = %s", - systemsIdString) - ); + logger.debug("Init systemId combobox = {}", systemsIdString); } ui.getSystemIdListModel().setElements(systemIds); @@ -198,19 +192,17 @@ selectSystemId(); } } - + public void selectSystemId() { if (!comboIsAdjusting) { comboIsAdjusting = true; - + String systemId = ui.getSystemIdListModel().getSelectedItem(); if (logger.isDebugEnabled()) { - logger.debug(String.format("Select the systemId %s", - systemId) - ); + logger.debug("Select the systemId {}", systemId); } getModel().setSystemId(systemId); @@ -222,14 +214,12 @@ if (logger.isDebugEnabled()) { - String flightString = "[" + Joiner.on(";").join( + String flightString = "[" + Joiner.on(";").join( Iterables.transform(filteredFlights, Flights.toFlightNumber()) ) + "]"; - logger.debug(String.format("Init flights combobox filtered by %s = %s", - systemId, - flightString) - ); + logger.debug("Init flights combobox filtered by {} = {}", + systemId, flightString); } ui.getFlightListModel().setElements(filteredFlights); @@ -243,24 +233,24 @@ selectFlight(); } } - + public void selectFlight() { if (!comboIsAdjusting) { - + Flight flight = ui.getFlightListModel().getSelectedItem(); if (logger.isDebugEnabled()) { - logger.debug(String.format("Select the flight %s", - flight != null ? "" + flight.getFlightNumber() : "null") + logger.debug("Select the flight {}", + flight != null ? "" + flight.getFlightNumber() : "null" ); } getModel().setFlight(flight); } } - + public void showSelectedCampaign() { - + Campaign campaign = getModel().getCampaign(); context.setCampaignScreen(campaign.getTopiaId()); @@ -270,29 +260,34 @@ context.setCampaignScreen(null); } - + public void showImport() { - + } - + public void showExportMap() { Campaign campaign = getModel().getCampaign(); - String campaignId = campaign==null?null:campaign.getTopiaId(); + String campaignId = campaign == null ? null : campaign.getTopiaId(); context.setExportMapScreen(campaignId); } - public void showExport() { + public void showExportApplication() { + Campaign campaign = getModel().getCampaign(); + String campaignId = campaign == null ? null : campaign.getTopiaId(); + Flight flight = getModel().getFlight(); + String flightId = flight == null ? null : flight.getTopiaId(); + context.setExportApplicationScreen(campaignId, flightId); } - + public void showOnBoard() { // Save the campaignId in the config for next loading Campaign campaign = getModel().getCampaign(); getConfig().setCampaignId(campaign.getTopiaId()); getConfig().save(); - + Flight flight = getModel().getFlight(); // Create a new Flight for the selected Campaign @@ -303,11 +298,11 @@ context.setFlightScreen(flight.getTopiaId()); } - + public void showValidation() { - + } - + protected Flight getFirstFlight(List<Flight> flights) { return flights.size() > 1 ? flights.get(1) : null; } Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.css =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.css (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.css 2012-08-12 10:34:09 UTC (rev 413) @@ -0,0 +1,91 @@ +/* + * #%L + * SAMMOA :: UI Swing + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 UMS 3462, Code Lutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 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% + */ +#campaignLabel { + text: "sammoa.label.campaign"; +} + +#campaignCombobox { + renderer: {new DecoratorProviderListCellRenderer(getHandler().getDecoratorProvider())}; +} + +#flightLabel { + text: "sammoa.label.flight"; +} + +#flightCombobox { + renderer: {new DecoratorProviderListCellRenderer(getHandler().getDecoratorProvider())}; +} + +#quitButton { + text:"sammoa.action.quitExportMaps"; +} + +#exportButton { + text:"sammoa.action.exportApplication"; +} + +#exportDirectoryFileChooseAction { + actionIcon:"fileChooser"; +} + +#exportDirectoryLbl { + text:"sammoa.label.exportApplicationDirectory"; +} + +#exportDirectory { + text:{model.getExportDirectory().getAbsolutePath()}; +} + +#exportFilenameLbl { + text:"sammoa.label.exportApplicationFilename"; +} + +#exportFilename { + text:{model.getExportFilename()}; +} + +#callbackLbl { + text:"sammoa.label.exportApplication.callbacks"; +} + +#callbackNothing { + text:"sammoa.label.exportApplication.callbackNothing"; + selected:{ExportApplicationCallbackMode.NOTHING == model.getCallback()}; + buttonGroup:"callbacks"; + value:{ExportApplicationCallbackMode.NOTHING}; +} + +#callbackRemoveData { + text:"sammoa.label.exportApplication.callbackRemoveData"; + buttonGroup:"callbacks"; + selected:{ExportApplicationCallbackMode.REMOVE_FLIGHTS == model.getCallback()}; + value:{ExportApplicationCallbackMode.REMOVE_FLIGHTS}; +} + +#callbackRemoveAll { + text:"sammoa.label.exportApplication.callbackRemoveAll"; + buttonGroup:"callbacks"; + selected:{ExportApplicationCallbackMode.REMOVE_ALL == model.getCallback()}; + value:{ExportApplicationCallbackMode.REMOVE_ALL}; +} Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.css ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.jaxx =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.jaxx (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.jaxx 2012-08-12 10:34:09 UTC (rev 413) @@ -0,0 +1,130 @@ +<!-- + #%L + SAMMOA :: UI Swing + $Id$ + $HeadURL$ + %% + Copyright (C) 2012 UMS 3462, Code Lutin + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 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% + --> +<JPanel id='exportApplicationUI' layout='{new BorderLayout()}' + implements='fr.ulr.sammoa.ui.swing.SammoaUI<ExportApplicationUIHandler>'> + + <import> + fr.ulr.sammoa.persistence.Campaign + fr.ulr.sammoa.persistence.Flight + fr.ulr.sammoa.ui.swing.SammoaUIContext + fr.ulr.sammoa.application.io.exportApplication.ExportApplicationCallbackMode + + jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer + + java.awt.BorderLayout + java.awt.event.ItemEvent + java.io.File + + static org.nuiton.i18n.I18n._ + </import> + + <script><![CDATA[ + + public ExportApplicationUI(SammoaUIContext context) { + ExportApplicationUIHandler handler = + new ExportApplicationUIHandler(context, this); + setContextValue(handler); + handler.beforeInitUI(); + } + + protected void $afterCompleteSetup() { + getHandler().afterInitUI(); + } + ]]></script> + + <ExportApplicationUIModel id='model' + initializer='getContextValue(ExportApplicationUIModel.class)'/> + + <ExportApplicationUIHandler id='handler' + initializer='getContextValue(ExportApplicationUIHandler.class)'/> + + <Table fill='both' constraints='BorderLayout.CENTER'> + <!-- Campaign filter --> + <row> + <cell anchor='west'> + <JLabel id='campaignLabel'/> + </cell> + <cell fill='horizontal' weightx='1.0' columns='2'> + <JComboBox id='campaignCombobox' + onItemStateChanged='if (ItemEvent.SELECTED == event.getStateChange()) { getModel().setSelectedCampaign((Campaign)event.getItem()); } else { getModel().setSelectedCampaign(null); }'/> + </cell> + </row> + <!-- Flight filter --> + <row> + <cell anchor='west'> + <JLabel id='flightLabel'/> + </cell> + <cell fill='horizontal' weightx='1.0' columns='2'> + <JComboBox id='flightCombobox' + onItemStateChanged='if (ItemEvent.SELECTED == event.getStateChange()) { getModel().setSelectedFlight((Flight)event.getItem()); } else { getModel().setSelectedFlight(null); }'/> + </cell> + </row> + <!-- export directory--> + <row> + <cell anchor='west'> + <JLabel id='exportDirectoryLbl'/> + </cell> + <cell weightx='1' fill="horizontal"> + <JTextField id='exportDirectory' + onKeyReleased='getModel().setExportDirectory(new File(((JTextField)event.getSource()).getText()))'/> + </cell> + <cell anchor="east"> + <JButton id="exportDirectoryFileChooseAction" + onActionPerformed="getHandler().chooseExportDirectory()"/> + </cell> + </row> + <row> + <cell anchor='west'> + <JLabel id='exportFilenameLbl'/> + </cell> + <cell fill='horizontal' weightx='1.0' columns='2'> + <JTextField id='exportFilename' + onKeyReleased='model.setExportFilename(((JTextField)event.getSource()).getText())'/> + </cell> + </row> + <!-- callBack --> + <row> + <cell anchor='west'> + <JLabel id='callbackLbl'/> + </cell> + <cell weightx='1' fill="horizontal" columns='2'> + <JPanel layout='{new GridLayout(0,1)}'> + <JRadioButton id='callbackNothing'/> + <JRadioButton id='callbackRemoveData'/> + <JRadioButton id='callbackRemoveAll'/> + </JPanel> + </cell> + </row> + <!--export actions--> + <row> + <cell columns='5' fill="both"> + <JPanel layout='{new GridLayout(1,2,0,0)}'> + <JButton id='quitButton' onActionPerformed='getHandler().close()'/> + <JButton id='exportButton' + onActionPerformed='getHandler().exportApplication()'/> + </JPanel> + </cell> + </row> + </Table> +</JPanel> \ No newline at end of file Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.jaxx ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIHandler.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIHandler.java (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIHandler.java 2012-08-12 10:34:09 UTC (rev 413) @@ -0,0 +1,270 @@ +package fr.ulr.sammoa.ui.swing.io.exportApplication; +/* + * #%L + * SAMMOA :: UI Swing + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 UMS 3462, Code Lutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 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% + */ + +import fr.ulr.sammoa.application.FlightService; +import fr.ulr.sammoa.application.ReferentialService; +import fr.ulr.sammoa.application.io.exportApplication.ExportApplicationCallbackMode; +import fr.ulr.sammoa.application.io.exportApplication.ExportApplicationModel; +import fr.ulr.sammoa.application.io.exportApplication.ExportApplicationService; +import fr.ulr.sammoa.application.map.ExportMapService; +import fr.ulr.sammoa.persistence.Campaign; +import fr.ulr.sammoa.persistence.Flight; +import fr.ulr.sammoa.ui.swing.SammoaDecoratorProvider; +import fr.ulr.sammoa.ui.swing.SammoaUIContext; +import fr.ulr.sammoa.ui.swing.SammoaUIHandler; +import fr.ulr.sammoa.ui.swing.util.SammoaUtil; +import jaxx.runtime.SwingUtil; +import org.nuiton.util.FileUtil; +import org.nuiton.util.decorator.Decorator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.swing.JFrame; +import javax.swing.SwingUtilities; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.io.File; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +import static org.nuiton.i18n.I18n._; + +/** + * Handelr of {@link ExportApplicationUI}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.6 + */ +public class ExportApplicationUIHandler implements SammoaUIHandler { + + private static final Logger logger = + LoggerFactory.getLogger(ExportApplicationUIHandler.class); + + private final ExportApplicationUI ui; + + protected SammoaUIContext context; + + public ExportApplicationUIHandler(SammoaUIContext context, + ExportApplicationUI ui) { + this.context = context; + this.ui = ui; + } + + protected ReferentialService getReferentialService() { + return context.getAppContext().getReferentialService(); + } + + protected FlightService getFlightService() { + return context.getAppContext().getFlightService(); + } + + protected ExportMapService getExportMapService() { + return context.getAppContext().getExportMapService(); + } + + public SammoaDecoratorProvider getDecoratorProvider() { + return context.getDecoratorProvider(); + } + + @Override + public void beforeInitUI() { + + //-- create model --// + + ExportApplicationUIModel model = new ExportApplicationUIModel(); + + List<Campaign> campaigns = getReferentialService().getCampaigns(); + //TODO-tchemit-2012-08-03 add an null campaign (for test purpose, should be removed...) + campaigns.add(0, null); + model.setCampaigns(campaigns); + + String campaignId = context.getCampaignId(); + + if (campaignId != null) { + + Campaign campaign = getReferentialService().getCampaign(campaignId); + + // selected cam + model.setSelectedCampaign(campaign); + } + + String flightId = context.getFlightId(); + + if (flightId != null) { + + Flight flight = getFlightService().getFlight(flightId); + + // selected cam + model.setSelectedFlight(flight); + } + + //-- share model and handler in jaxx context --// + ui.setContextValue(this); + ui.setContextValue(model); + + model.addPropertyChangeListener(new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + + if (ExportApplicationUIModel.PROPERTY_SELECTED_CAMPAIGN.equals(evt.getPropertyName())) { + Campaign newValue = (Campaign) evt.getNewValue(); + onSelectedCampaignChanged(newValue); + } else if (ExportApplicationUIModel.PROPERTY_FLIGHTS.equals(evt.getPropertyName())) { + Collection<Flight> newValue = (Collection<Flight>) evt.getNewValue(); + onFlightsChanged(newValue); + } else if (ExportApplicationUIModel.PROPERTY_SELECTED_FLIGHT.equals(evt.getPropertyName())) { + Flight newValue = (Flight) evt.getNewValue(); + onSelectedFlightChanged(newValue); + } + } + }); + } + + @Override + public void afterInitUI() { + ExportApplicationUIModel model = getModel(); + + File currentDirectory = FileUtil.getCurrentDirectory(); + String absolutePath = currentDirectory.getAbsolutePath(); + if (absolutePath.endsWith(File.separator + ".")) { + currentDirectory = new File(absolutePath.substring(0, absolutePath.length() - 2)); + } + if (logger.isInfoEnabled()) { + logger.info("Current directory to use: {}", currentDirectory); + } + model.setExportDirectory(currentDirectory); + model.setCallback(ExportApplicationCallbackMode.NOTHING); + + SwingUtil.fillComboBox(ui.getCampaignCombobox(), + model.getCampaigns(), + model.getSelectedCampaign()); + + Flight selectedFlight = model.getSelectedFlight(); + + onSelectedCampaignChanged(model.getSelectedCampaign()); + onSelectedFlightChanged(selectedFlight); + } + + public void exportApplication() { + + JFrame frame = ui.getParentContainer(JFrame.class); + SammoaUtil.updateBusyState(frame, true); + + try { + SwingUtilities.invokeLater( + new Runnable() { + @Override + public void run() { + ExportApplicationModel dataModel = getModel().toModel(); + + ExportApplicationService service = + context.getAppContext().newExportApplicationService(); + service.exportApplication(dataModel); + } + } + ); + + } finally { + SammoaUtil.updateBusyState(frame, false); + } + } + + protected void onSelectedCampaignChanged(Campaign newCampaign) { + + // reset flights,... + if (logger.isInfoEnabled()) { + Decorator<Campaign> decorator = getDecoratorProvider().getDecoratorByType(Campaign.class); + logger.info("New selected campain: {}", decorator.toString(newCampaign)); + } + + ExportApplicationUIModel model = getModel(); + + List<Flight> flights; + String filename; + if (newCampaign == null) { + flights = Collections.emptyList(); + filename = ""; + } else { + flights = getFlightService().getFlights(newCampaign); + filename = String.format("campaign-%s.sammoa", newCampaign.getCode()); + } + if (logger.isDebugEnabled()) { + logger.debug("New flights: {}", flights.size()); + logger.debug("New filename: {}", filename); + } + model.setFlights(flights); + model.setExportFilename(filename); + } + + protected void onFlightsChanged(Collection<Flight> flights) { + + ExportApplicationUIModel model = getModel(); + Flight selectedFlight = model.getSelectedFlight(); + if (flights.contains(selectedFlight)) { + model.setSelectedFlight(null); + } + + SwingUtil.fillComboBox(ui.getFlightCombobox(), + flights, + selectedFlight); + } + + protected void onSelectedFlightChanged(Flight newCampaign) { + + // reset flights,... + if (logger.isInfoEnabled()) { + Decorator<Flight> decorator = getDecoratorProvider().getDecoratorByType(Flight.class); + logger.info("New selected flight: {}", decorator.toString(newCampaign)); + } + + ExportApplicationUIModel model = getModel(); + } + + public void close() { + context.setHomeScreen(); + } + + @Override + public void onCloseUI() { + } + + public void chooseExportDirectory() { + File f = SammoaUtil.chooseDirectory( + ui, + _("sammoa.title.choose.export.directory"), + _("sammoa.action.choose.export.directory"), + ui.getModel().getExportDirectory() + ); + ui.getModel().setExportDirectory(f); + } + + + public ExportApplicationUIModel getModel() { + return ui.getModel(); + } + + +} Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIHandler.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIModel.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIModel.java (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIModel.java 2012-08-12 10:34:09 UTC (rev 413) @@ -0,0 +1,161 @@ +package fr.ulr.sammoa.ui.swing.io.exportApplication; +/* + * #%L + * SAMMOA :: UI Swing + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 UMS 3462, Code Lutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 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% + */ + +import com.google.common.collect.Lists; +import fr.ulr.sammoa.application.io.exportApplication.ExportApplicationCallbackMode; +import fr.ulr.sammoa.application.io.exportApplication.ExportApplicationModel; +import fr.ulr.sammoa.persistence.Campaign; +import fr.ulr.sammoa.persistence.Flight; +import org.jdesktop.beans.AbstractSerializableBean; + +import java.io.File; +import java.util.List; + +/** + * Model of export application UI. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.6 + */ +public class ExportApplicationUIModel extends AbstractSerializableBean { + + private static final long serialVersionUID = 1L; + + public static final String PROPERTY_CAMPAIGNS = "campaigns"; + + public static final String PROPERTY_SELECTED_CAMPAIGN = "selectedCampaign"; + + public static final String PROPERTY_FLIGHTS = "flights"; + + public static final String PROPERTY_SELECTED_FLIGHT = "selectedFlight"; + + public static final String PROPERTY_EXPORT_DIRECTORY = "exportDirectory"; + + public static final String PROPERTY_EXPORT_FILENAME = "exportFilename"; + + public static final String PROPERTY_CALLBACK = "callback"; + + protected List<Campaign> campaigns; + + protected Campaign selectedCampaign; + + protected List<Flight> flights; + + protected Flight selectedFlight; + + protected File exportDirectory; + + protected String exportFilename; + + protected ExportApplicationCallbackMode callback; + + public File getExportDirectory() { + return exportDirectory; + } + + public void setExportDirectory(File exportDirectory) { + File oldValue = this.exportDirectory; + this.exportDirectory = exportDirectory; + firePropertyChange(PROPERTY_EXPORT_DIRECTORY, oldValue, exportDirectory); + } + + public String getExportFilename() { + return exportFilename; + } + + public void setExportFilename(String exportFilename) { + String oldValue = this.exportFilename; + this.exportFilename = exportFilename; + firePropertyChange(PROPERTY_EXPORT_FILENAME, oldValue, exportFilename); + } + + public List<Campaign> getCampaigns() { + if (campaigns == null) { + campaigns = Lists.newArrayList(); + } + return campaigns; + } + + public void setCampaigns(List<Campaign> campaigns) { + List<Campaign> oldValue = this.campaigns; + this.campaigns = campaigns; + firePropertyChange(PROPERTY_CAMPAIGNS, oldValue, campaigns); + } + + public Campaign getSelectedCampaign() { + return selectedCampaign; + } + + public void setSelectedCampaign(Campaign selectedCampaign) { + Campaign oldValue = this.selectedCampaign; + this.selectedCampaign = selectedCampaign; + firePropertyChange(PROPERTY_SELECTED_CAMPAIGN, oldValue, selectedCampaign); + } + + public List<Flight> getFlights() { + if (flights == null) { + flights = Lists.newArrayList(); + } + return flights; + } + + public void setFlights(List<Flight> flights) { + List<Flight> oldValue = this.flights; + this.flights = flights; + firePropertyChange(PROPERTY_FLIGHTS, oldValue, flights); + } + + public Flight getSelectedFlight() { + return selectedFlight; + } + + public void setSelectedFlight(Flight selectedFlight) { + Flight oldValue = this.selectedFlight; + this.selectedFlight = selectedFlight; + firePropertyChange(PROPERTY_SELECTED_FLIGHT, oldValue, selectedFlight); + } + + public ExportApplicationCallbackMode getCallback() { + return callback; + } + + public void setCallback(ExportApplicationCallbackMode callback) { + ExportApplicationCallbackMode oldValue = this.callback; + this.callback = callback; + firePropertyChange(PROPERTY_CALLBACK, oldValue, callback); + } + + public ExportApplicationModel toModel() { + + ExportApplicationModel result = ExportApplicationModel.newModel( + getExportDirectory(), + getExportFilename(), + getSelectedCampaign(), + getSelectedFlight(), + getCallback() + ); + return result; + } +} \ No newline at end of file Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties =================================================================== --- trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 2012-08-11 09:17:30 UTC (rev 412) +++ trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 2012-08-12 10:34:09 UTC (rev 413) @@ -19,6 +19,7 @@ sammoa.action.edit=Edit sammoa.action.end.tip=END \: end effort and create a new TRANSIT route sammoa.action.export=Export +sammoa.action.exportApplication=Export sammoa.action.exportEffortsMap=Export Efforts sammoa.action.exportGeoPointsMap=Export GPS Points sammoa.action.exportMap=Export Maps @@ -95,7 +96,12 @@ sammoa.label.campaign.region=Region\: sammoa.label.campaign.strate=Strates\: sammoa.label.campaign.transect=Transects\: -sammoa.label.exportDirectory=Export directory +sammoa.label.exportApplication.callbackNothing=Do nothing +sammoa.label.exportApplication.callbackRemoveAll=Remove all data +sammoa.label.exportApplication.callbackRemoveData=Remove flights data +sammoa.label.exportApplication.callbacks=Call back after export\: +sammoa.label.exportApplicationDirectory=Export directory\: +sammoa.label.exportApplicationFilename=Export filename\: sammoa.label.exportEffortsFilename=Export filename (Efforts) sammoa.label.exportGeoPointsFilename=Export filename (GeoPoints) sammoa.label.exportMapDirectory=Export directory @@ -218,6 +224,7 @@ sammoa.title.export.exportEfforts=Efforts Export sammoa.title.export.exportGeoPoints=GPS Points ExportGPS sammoa.title.export.exportObservations=Observations Export +sammoa.title.exportApplication=Application Export sammoa.title.exportshape=Export Maps sammoa.title.flight=System %1$s - Campaign %2$s - Region %3$s - Flight n°%4$d sammoa.title.home=Home
participants (1)
-
tchemit@users.forge.codelutin.com