r354 - in trunk: sammoa-application/src/main/java/fr/ulr/sammoa/application/map sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util sammoa-ui-swing/src/main/resources/i18n sammoa-ui-swing/src/main/resources/icons
Author: tchemit Date: 2012-08-03 16:28:31 +0200 (Fri, 03 Aug 2012) New Revision: 354 Url: http://forge.codelutin.com/repositories/revision/sammoa/354 Log: refs #1203: Export SHP (continue ui) Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapLauncherUI.css trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapLauncherUI.jaxx trunk/sammoa-ui-swing/src/main/resources/icons/action-accept.png trunk/sammoa-ui-swing/src/main/resources/icons/action-cancel.png Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapService.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.jaxx trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIHandler.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIModel.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/SammoaUtil.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/map/ExportMapService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapService.java 2012-08-03 14:27:36 UTC (rev 353) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapService.java 2012-08-03 14:28:31 UTC (rev 354) @@ -30,16 +30,41 @@ } public void exportEffortsMap(ExportMapModel dataModel) { + if (logger.isInfoEnabled()) { + logger.info("Start EffortsMap export to " + + dataModel.getExportDirectory() + "::" + + dataModel.getExportFilename()); + } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + } } public void exportObservationsMap(ExportMapModel dataModel) { + if (logger.isInfoEnabled()) { + logger.info("Start ObservationsMap export to " + + dataModel.getExportDirectory() + "::" + + dataModel.getExportFilename()); + } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + } } public void exportGeoPointsMap(ExportMapModel dataModel) { + if (logger.isInfoEnabled()) { + logger.info("Start GeoPointsMap export to " + + dataModel.getExportDirectory() + "::" + + dataModel.getExportFilename()); + } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + } } - - } Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapLauncherUI.css =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapLauncherUI.css (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapLauncherUI.css 2012-08-03 14:28:31 UTC (rev 354) @@ -0,0 +1,20 @@ +#exportMapDirectoryFileChooseAction { + actionIcon:"fileChooser"; +} + +#exportMapDirectoryLbl { + text:"sammoa.label.exportMapDirectory"; +} + +#exportMapDirectory { + text:{model.getExportDirectory().getAbsolutePath()}; +} + +#exportMapFilenameLbl { + text:"sammoa.label.exportMapFilename"; +} + +#exportMapFilename { + text:{model.getExportFilename()}; +} + Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapLauncherUI.css ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapLauncherUI.jaxx =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapLauncherUI.jaxx (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapLauncherUI.jaxx 2012-08-03 14:28:31 UTC (rev 354) @@ -0,0 +1,60 @@ +<JPanel layout='{new BorderLayout()}'> + + <import> + + java.awt.BorderLayout + java.io.File + + jaxx.runtime.swing.BlockingLayerUI + + static org.nuiton.i18n.I18n._ + </import> + + <script><![CDATA[ + + public ExportMapLauncherUI(ExportMapUIHandler handler) { + setContextValue(handler); + setContextValue(handler.getModel()); + } + ]]></script> + + <ExportMapUIModel id='model' + initializer='getContextValue(ExportMapUIModel.class)'/> + + <ExportMapUIHandler id='handler' + initializer='getContextValue(ExportMapUIHandler.class)'/> + + <Table id='body' fill='both' constraints='BorderLayout.CENTER' decorator='boxed'> + <!-- export directory--> + <row> + <cell anchor='west'> + <JLabel id='exportMapDirectoryLbl'/> + </cell> + <cell weightx='1' fill="horizontal"> + <JTextField id='exportMapDirectory' + onKeyReleased='getModel().setExportDirectory(new File(((JTextField)event.getSource()).getText()))'/> + </cell> + <cell anchor="east"> + <JButton id="exportMapDirectoryFileChooseAction" + onActionPerformed="getHandler().chooseEffortDirectory()"/> + </cell> + </row> + <row> + <cell anchor='west'> + <JLabel id='exportMapFilenameLbl'/> + </cell> + <cell fill='horizontal' weightx='1.0' columns='2'> + <JTextField id='exportMapFilename' + onKeyReleased='model.setExportFilename(((JTextField)event.getSource()).getText())'/> + </cell> + </row> + <row> + <cell columns='3' fill="both"> + <JPanel layout='{new GridLayout(1,2,0,0)}'> + <JButton id='cancel'/> + <JButton id='start'/> + </JPanel> + </cell> + </row> + </Table> +</JPanel> \ No newline at end of file Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.jaxx =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.jaxx 2012-08-03 14:27:36 UTC (rev 353) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.jaxx 2012-08-03 14:28:31 UTC (rev 354) @@ -1,5 +1,5 @@ -<JPanel id='campaignUI' layout='{new BorderLayout()}' - implements='fr.ulr.sammoa.ui.swing.SammoaUI<ExportMapUIHandler>'> +<JPanel id='exportMapUI' layout='{new BorderLayout()}' + implements='fr.ulr.sammoa.ui.swing.SammoaUI<ExportMapUIHandler>'> <import> fr.ulr.sammoa.application.FlightState @@ -115,30 +115,6 @@ </JScrollPane> </cell> </row> - <!-- export observations filename--> - <!-- export directory--> - <!--row> - <cell anchor='west'> - <JLabel id='exportDirectoryLbl'/> - </cell> - <cell weightx='1' fill="horizontal"> - <JTextField id='exportDirectory' text='{model.getExportDirectory().getAbsolutePath()}' - onKeyReleased='getModel().setExportDirectory(new File(((JTextField)event.getSource()).getText()))'/> - </cell> - <cell anchor="east"> - <JButton id="exportDirectoryFileChooseAction" - onActionPerformed="getHandler().chooseEffortDirectory()"/> - </cell> - </row--> - <!--row> - <cell anchor='west'> - <JLabel id='exportObservationsFilenameLbl'/> - </cell> - <cell fill='horizontal' weightx='1.0'> - <JTextField id='exportObservationsFilename' text='{model.getExportObservationsFilename()}' - onKeyReleased='model.setExportObservationsFilename(((JTextField)event.getSource()).getText())'/> - </cell> - </row--> <!--export observations --> <row> <cell columns='5' fill="both"> Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIHandler.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIHandler.java 2012-08-03 14:27:36 UTC (rev 353) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIHandler.java 2012-08-03 14:28:31 UTC (rev 354) @@ -24,7 +24,14 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JFrame; import javax.swing.JList; +import java.awt.Dimension; +import java.awt.event.ActionEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; @@ -121,8 +128,18 @@ model.setExportEffortsFilename("Efforts"); model.setExportObservationsFilename("Observations"); - model.setExportDirectory(FileUtil.getCurrentDirectory().getAbsoluteFile()); + model.setExportGeoPointsFilename("GeoPoints"); + 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); + SwingUtil.fillComboBox(ui.getCampaignCombobox(), model.getCampaigns(), model.getSelectedCampaign()); @@ -188,63 +205,169 @@ ExportMapUIModel model = ui.getModel(); - boolean canContinue = askExportFile( - _("sammoa.title.export.exportEfforts"), - ExportMapUIModel.PROPERTY_EXPORT_EFFORTS_FILENAME, - model); + Action startAction = new AbstractAction( + _("sammoa.action.startExport"), + SwingUtil.createActionIcon("accept")) { - if (canContinue) { - ExportMapModel dataModel = - model.toModel(model.getExportEffortsFilename()); + private static final long serialVersionUID = 1L; - getExportMapService().exportEffortsMap(dataModel); - } + @Override + public void actionPerformed(ActionEvent e) { + JButton source = (JButton) e.getSource(); + ExportMapLauncherUI fileChooserUI = SwingUtil.getParentContainer( + source, ExportMapLauncherUI.class); + + SammoaUtil.updateBusyState(fileChooserUI, true); + try { + ExportMapUIModel model = ui.getModel(); + + // persist the file name + model.setExportEffortsFilename(model.getExportFilename()); + + // create export service model + ExportMapModel dataModel = + model.toModel(model.getExportEffortsFilename()); + + // launch export + getExportMapService().exportEffortsMap(dataModel); + + } finally { + + SwingUtil.getParentContainer( + source, JDialog.class).setVisible(false); + } + } + }; + + displayExportLauncher(_("sammoa.title.export.exportEfforts"), + model.getExportEffortsFilename(), + model, + startAction); } public void exportObservations() { ExportMapUIModel model = ui.getModel(); - boolean canContinue = askExportFile( - _("sammoa.title.export.exportObservations"), - ExportMapUIModel.PROPERTY_EXPORT_OBSERVATIONS_FILENAME, - model); + Action startAction = new AbstractAction( + _("sammoa.action.startExport"), + SwingUtil.createActionIcon("accept")) { - if (canContinue) { - ExportMapModel dataModel = - model.toModel(model.getExportObservationsFilename()); + private static final long serialVersionUID = 1L; - getExportMapService().exportObservationsMap(dataModel); - } + @Override + public void actionPerformed(ActionEvent e) { + + JButton source = (JButton) e.getSource(); + ExportMapLauncherUI fileChooserUI = SwingUtil.getParentContainer( + source, ExportMapLauncherUI.class); + + try { + SammoaUtil.updateBusyState(fileChooserUI, true); + ExportMapUIModel model = ui.getModel(); + + // persist the file name + model.setExportObservationsFilename(model.getExportFilename()); + + // create export service model + ExportMapModel dataModel = + model.toModel(model.getExportObservationsFilename()); + + // launch export + getExportMapService().exportObservationsMap(dataModel); + + } finally { + + SwingUtil.getParentContainer( + source, JDialog.class).setVisible(false); + } + } + }; + displayExportLauncher(_("sammoa.title.export.exportObservations"), + model.getExportObservationsFilename(), + model, + startAction); } public void exportGeoPoints() { ExportMapUIModel model = ui.getModel(); - boolean canContinue = askExportFile( - _("sammoa.title.export.exportGeoPoints"), - ExportMapUIModel.PROPERTY_EXPORT_GEO_POINTS_FILENAME, - model); + Action startAction = new AbstractAction( + _("sammoa.action.startExport"), + SwingUtil.createActionIcon("accept")) { - if (canContinue) { - ExportMapModel dataModel = - model.toModel(model.getExportGeoPointsFilename()); + private static final long serialVersionUID = 1L; - getExportMapService().exportGeoPointsMap(dataModel); - } + @Override + public void actionPerformed(ActionEvent e) { + + JButton source = (JButton) e.getSource(); + + ExportMapLauncherUI fileChooserUI = SwingUtil.getParentContainer( + source, ExportMapLauncherUI.class); + SammoaUtil.updateBusyState(fileChooserUI, true); + try { + + ExportMapUIModel model = ui.getModel(); + + // persist the file name + model.setExportGeoPointsFilename(model.getExportFilename()); + + // create export service model + ExportMapModel dataModel = + model.toModel(model.getExportGeoPointsFilename()); + + // launch export + getExportMapService().exportGeoPointsMap(dataModel); + + } finally { + + SwingUtil.getParentContainer( + source, JDialog.class).setVisible(false); + } + } + }; + displayExportLauncher(_("sammoa.title.export.exportGeoPoints"), + model.getExportGeoPointsFilename(), + model, + startAction); } - protected boolean askExportFile(String effortTitle, - String exportType, - ExportMapUIModel model) { - boolean canContinue = false; + public ExportMapUIModel getModel() { + return ui.getModel(); + } - //TODO - return canContinue; + protected void displayExportLauncher(String effortTitle, + String defaultFilename, + ExportMapUIModel model, + Action startAction) { + + model.setExportFilename(defaultFilename); + final ExportMapLauncherUI ui = new ExportMapLauncherUI(this); + + JFrame frame = this.ui.getParentContainer(JFrame.class); + Action closeAction = new AbstractAction( + _("sammoa.action.cancelExport"), + SwingUtil.createActionIcon("cancel")) { + private static final long serialVersionUID = 1L; + + @Override + public void actionPerformed(ActionEvent e) { + ui.getParentContainer(JDialog.class).setVisible(false); + } + }; + + ui.getStart().setAction(startAction); + ui.getCancel().setAction(closeAction); + + SammoaUtil.openInDialog(ui, + frame, + effortTitle, + closeAction, + new Dimension(550, 150)); } - /** * Remplit le modèle d'une liste graphique avec la liste des entités d'un * type donné sur un service de persistance donné. Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIModel.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIModel.java 2012-08-03 14:27:36 UTC (rev 353) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIModel.java 2012-08-03 14:28:31 UTC (rev 354) @@ -49,6 +49,8 @@ public static final String PROPERTY_EXPORT_DIRECTORY = "exportDirectory"; + public static final String PROPERTY_EXPORT_FILENAME = "exportFilename"; + public static final String PROPERTY_EXPORT_EFFORTS_FILENAME = "exportEffortsFilename"; public static final String PROPERTY_EXPORT_OBSERVATIONS_FILENAME = "exportObservationsFilename"; @@ -81,9 +83,12 @@ protected File exportDirectory; + protected String exportFilename; + protected String exportEffortsFilename; protected String exportObservationsFilename; + protected String exportGeoPointsFilename; public File getExportDirectory() { @@ -96,6 +101,16 @@ 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 String getExportEffortsFilename() { return exportEffortsFilename; } Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/SammoaUtil.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/SammoaUtil.java 2012-08-03 14:27:36 UTC (rev 353) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/SammoaUtil.java 2012-08-03 14:28:31 UTC (rev 354) @@ -36,8 +36,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.swing.*; -import java.awt.*; +import javax.swing.Action; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JFrame; +import javax.swing.JRootPane; +import javax.swing.KeyStroke; +import java.awt.Color; +import java.awt.Component; +import java.awt.Cursor; +import java.awt.Dimension; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; @@ -55,7 +63,7 @@ private SammoaUtil() { // never instanciate util class } - + public static Highlighter newColorHighlighter(HighlightPredicate predicate, Color color) { return new SammoaColorHighlighter(predicate, color); } @@ -91,17 +99,34 @@ throw Throwables.propagate(e); } } - - public static JDialog openInDialog(JComponent ui, JFrame frame, String title, Action closeAction) { - + + public static JDialog openInDialog(JComponent ui, + JFrame frame, + String title, + Action closeAction) { + return openInDialog(ui, frame, title, closeAction, null); + } + + public static JDialog openInDialog(JComponent ui, + JFrame frame, + String title, + Action closeAction, + Dimension dim) { + JDialog result = new JDialog(frame, false); result.setTitle(title); result.add(ui); result.setResizable(true); - result.setSize(550, 450); - JRootPane rootPane = result.getRootPane(); - rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("ESCAPE"), "close"); - rootPane.getActionMap().put("close", closeAction); + if (dim == null) { + result.setSize(550, 450); + } else { + result.setSize(dim); + } + if (closeAction != null) { + JRootPane rootPane = result.getRootPane(); + rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("ESCAPE"), "close"); + rootPane.getActionMap().put("close", closeAction); + } result.addWindowListener(new WindowAdapter() { @Override @@ -189,4 +214,20 @@ FileUtil.setCurrentDirectory(oldBasedir); return file == null ? incoming : new File(file); } + + public static void updateBusyState(JComponent ui, boolean busy) { + if (busy) { + // ui bloquee + if (logger.isDebugEnabled()) { + logger.debug("block ui in busy mode"); + } + ui.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + } else { + // ui debloquee + if (logger.isDebugEnabled()) { + logger.debug("unblock ui in none busy mode"); + } + ui.setCursor(Cursor.getDefaultCursor()); + } + } } 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-03 14:27:36 UTC (rev 353) +++ trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 2012-08-03 14:28:31 UTC (rev 354) @@ -1,10 +1,12 @@ SAMMOA=Sammoa csv.import.error.unableToReadField=Unable to read value of column '%s' at line %s +sammo.export.inprogress=Export in progress... sammoa.about.message=About Sammoa sammoa.action.about=About sammoa.action.about.tip=About sammoa.action.break.tip=Break sammoa.action.cancel=Cancel +sammoa.action.cancelExport=Cancel sammoa.action.choose.export.directory=Accept sammoa.action.circleback.tip=Circle Back sammoa.action.close=Close @@ -35,6 +37,7 @@ sammoa.action.save=Save sammoa.action.site=Site sammoa.action.site.tip=Display project site +sammoa.action.startExport=Start sammoa.action.startFlight.tip=Start the flight sammoa.action.stop.tip=Stop sammoa.action.stopFlight.tip=Stop the flight @@ -90,6 +93,8 @@ sammoa.label.exportDirectory=Export directory sammoa.label.exportEffortsFilename=Export filename (Efforts) sammoa.label.exportGeoPointsFilename=Export filename (GeoPoints) +sammoa.label.exportMapDirectory=Export directory +sammoa.label.exportMapFilename=Export filename sammoa.label.exportObservationsFilename=Export filename (Observations) sammoa.label.flight=Flight\: sammoa.label.flight.beginDate=Start @@ -205,9 +210,9 @@ sammoa.title.about=About Sammoa sammoa.title.campaign=Campaign sammoa.title.choose.export.directory=Choose directory where to export maps -sammoa.title.export.exportEfforts= -sammoa.title.export.exportGeoPoints= -sammoa.title.export.exportObservations= +sammoa.title.export.exportEfforts=Efforts Export +sammoa.title.export.exportGeoPoints=GPS Points ExportGPS +sammoa.title.export.exportObservations=Observations 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 Added: trunk/sammoa-ui-swing/src/main/resources/icons/action-accept.png =================================================================== (Binary files differ) Property changes on: trunk/sammoa-ui-swing/src/main/resources/icons/action-accept.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: trunk/sammoa-ui-swing/src/main/resources/icons/action-cancel.png =================================================================== (Binary files differ) Property changes on: trunk/sammoa-ui-swing/src/main/resources/icons/action-cancel.png ___________________________________________________________________ Added: svn:mime-type + image/png
participants (1)
-
tchemit@users.forge.codelutin.com