source: subversion/applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/actions/StreetsideExportAction.java

Last change on this file was 34577, checked in by donvip, 8 months ago

update to JOSM 14153

File size: 4.1 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.plugins.streetside.actions;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.Dimension;
7import java.awt.event.ActionEvent;
8import java.awt.event.KeyEvent;
9import java.util.Set;
10import java.util.concurrent.ConcurrentSkipListSet;
11
12import javax.swing.JButton;
13import javax.swing.JDialog;
14import javax.swing.JOptionPane;
15
16import org.apache.log4j.Logger;
17import org.openstreetmap.josm.actions.JosmAction;
18import org.openstreetmap.josm.gui.MainApplication;
19import org.openstreetmap.josm.plugins.streetside.StreetsideAbstractImage;
20import org.openstreetmap.josm.plugins.streetside.StreetsideImage;
21import org.openstreetmap.josm.plugins.streetside.StreetsideLayer;
22import org.openstreetmap.josm.plugins.streetside.StreetsidePlugin;
23import org.openstreetmap.josm.plugins.streetside.gui.StreetsideExportDialog;
24import org.openstreetmap.josm.plugins.streetside.io.export.StreetsideExportManager;
25import org.openstreetmap.josm.tools.ImageProvider;
26import org.openstreetmap.josm.tools.ImageProvider.ImageSizes;
27import org.openstreetmap.josm.tools.Shortcut;
28
29/**
30 * Action that launches a StreetsideExportDialog and lets you export the images.
31 *
32 * @author nokutu
33 *
34 */
35public class StreetsideExportAction extends JosmAction {
36
37  private static final long serialVersionUID = 6131359489725632369L;
38
39  final static Logger logger = Logger.getLogger(StreetsideExportAction.class);
40
41  private StreetsideExportDialog dialog;
42
43  /**
44   * Main constructor.
45   */
46  public StreetsideExportAction() {
47    super(tr("Export Streetside images"), new ImageProvider(StreetsidePlugin.LOGO).setSize(ImageSizes.DEFAULT),
48        tr("Export Streetside images"), Shortcut.registerShortcut("Export Streetside",
49            tr("Export Streetside images"), KeyEvent.CHAR_UNDEFINED,
50            Shortcut.NONE), false, "streetsideExport", true);
51    setEnabled(false);
52  }
53
54  @Override
55  public void actionPerformed(ActionEvent ae) {
56    JOptionPane pane = new JOptionPane();
57
58    JButton ok = new JButton("Ok");
59    ok.addActionListener(e -> pane.setValue(JOptionPane.OK_OPTION));
60    JButton cancel = new JButton(tr("Cancel"));
61    cancel.addActionListener(e -> pane.setValue(JOptionPane.CANCEL_OPTION));
62
63    dialog = new StreetsideExportDialog(ok);
64    pane.setMessage(dialog);
65    pane.setOptions(new JButton[] {ok, cancel});
66
67    JDialog dlg = pane.createDialog(MainApplication.getMainFrame(), tr("Export Streetside images"));
68    dlg.setMinimumSize(new Dimension(400, 150));
69    dlg.setVisible(true);
70
71    // Checks if the inputs are correct and starts the export process.
72    if (pane.getValue() != null
73        && (int) pane.getValue() == JOptionPane.OK_OPTION
74        && dialog.chooser != null) {
75      if (dialog.group.isSelected(dialog.all.getModel())) {
76        export(StreetsideLayer.getInstance().getData().getImages());
77      } else if (dialog.group.isSelected(dialog.sequence.getModel())) {
78        Set<StreetsideAbstractImage> images = new ConcurrentSkipListSet<>();
79        for (StreetsideAbstractImage image : StreetsideLayer.getInstance().getData().getMultiSelectedImages()) {
80          if (image instanceof StreetsideImage) {
81            if (!images.contains(image)) {
82              images.addAll(image.getSequence().getImages());
83            }
84          } else {
85            images.add(image);
86          }
87        }
88        export(images);
89      } else if (dialog.group.isSelected(dialog.selected.getModel())) {
90        export(StreetsideLayer.getInstance().getData().getMultiSelectedImages());
91      }
92    }
93    dlg.dispose();
94  }
95
96  /**
97   * Exports the given images from the database.
98   *
99   * @param images
100   *          The set of images to be exported.
101   */
102  public void export(Set<StreetsideAbstractImage> images) {
103    MainApplication.worker.execute(new StreetsideExportManager(images,
104        dialog.chooser.getSelectedFile().toString()));
105  }
106
107  @Override
108  protected boolean listenToSelectionChange() {
109    return false;
110  }
111
112  /**
113   * Enabled when streetside layer is in layer list
114   */
115  @Override
116  protected void updateEnabledState() {
117    super.updateEnabledState();
118    setEnabled(StreetsideLayer.hasInstance());
119  }
120}
Note: See TracBrowser for help on using the repository browser.