Ignore:
Timestamp:
2012-09-08T19:09:04+02:00 (13 years ago)
Author:
donvip
Message:

[josm_opendata] Allow to split Toulouse data by sector/neighbourhood (admin level 10 and 11)

Location:
applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata
Files:
1 deleted
8 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/OdPlugin.java

    r28246 r28696  
    7070        private final JMenu menu;
    7171       
     72        private OdDialog dialog;
     73       
    7274        public OdPlugin(PluginInformation info) { // NO_UCD
    7375                super(info);
     
    167169        public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
    168170                if (newFrame != null) {
    169                         newFrame.addToggleDialog(new OdDialog());
     171                        newFrame.addToggleDialog(dialog = new OdDialog());
     172                } else {
     173                    dialog = null;
    170174                }
    171175        }
     
    203207    public final File getResourcesDirectory() {
    204208        return getSubDirectory("resources");
     209    }
     210
     211    public OdDialog getDialog() {
     212        return dialog;
    205213    }
    206214
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/actions/DownloadDataTask.java

    r28143 r28696  
    5353        @Override
    5454        public Future<?> loadUrl(boolean newLayer, String url, ProgressMonitor progressMonitor) {
    55         downloadTask = new InternalDownloadTasK(newLayer, new NetworkReader(url, handler), progressMonitor);
     55        downloadTask = new InternalDownloadTasK(newLayer, new NetworkReader(url, handler, true), progressMonitor);
    5656        currentBounds = null;
    5757        if (handler == null || !handler.hasLicenseToBeAccepted() || askLicenseAgreement(handler.getLicense())) {
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/AbstractDataSetHandler.java

    r28191 r28696  
    2424import java.util.regex.Pattern;
    2525
     26import org.openstreetmap.josm.actions.JosmAction;
    2627import org.openstreetmap.josm.data.Bounds;
    2728import org.openstreetmap.josm.data.coor.LatLon;
     
    478479                }
    479480        }
     481       
     482        // Tools
     483
     484        private final Collection<JosmAction> tools = new ArrayList<JosmAction>();
     485       
     486        public final Collection<JosmAction> getTools() {
     487            return tools;
     488        }
     489       
     490        public final boolean addTool(JosmAction tool) {
     491        return tool != null ? tools.add(tool) : false;
     492        }
     493       
     494        public final boolean removeTool(JosmAction tool) {
     495            return tool != null ? tools.remove(tool) : false;
     496        }
     497
     498    public void notifyActive() {
     499        // To be overriden when the handler has specific treatments to perform when its layer becomes active
     500    }
    480501}
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/OdDialog.java

    r28616 r28696  
    66import java.awt.event.ActionEvent;
    77import java.awt.event.KeyEvent;
     8import java.awt.event.MouseAdapter;
     9import java.awt.event.MouseEvent;
    810import java.util.Arrays;
    911import java.util.List;
    1012
     13import javax.swing.JPopupMenu;
    1114import javax.swing.JTree;
    1215import javax.swing.tree.DefaultTreeModel;
     
    2326import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    2427import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
    25 import org.openstreetmap.josm.plugins.opendata.core.actions.ToolsAction;
    2628import org.openstreetmap.josm.plugins.opendata.core.layers.OdDataLayer;
    2729import org.openstreetmap.josm.plugins.opendata.core.layers.OdLayer;
     
    7678                }
    7779    }
     80   
     81    private class ToolsAction extends JosmAction {
     82        public ToolsAction() {
     83            super(marktr("Tools"), "dialogs/utils", tr("Open tools menu for this data."), null, false);
     84        }
     85        @Override
     86        public void actionPerformed(ActionEvent e) {
     87            // Done via mouseListener
     88        }
     89    }
    7890
    7991        public OdDialog() {
     
    8799                                diffButton = new SideButton(new DiffAction()),
    88100                                toolsButton = new SideButton(new ToolsAction())
     101        });
     102               
     103                this.toolsButton.addMouseListener(new MouseAdapter() {
     104                    @Override
     105                    public void mousePressed(MouseEvent e) {
     106                    if (Main.main.getEditLayer() instanceof OdLayer) {
     107                    JPopupMenu popup = new JPopupMenu();
     108                        for (JosmAction tool : dataLayer.handler.getTools()) {
     109                            popup.add(tool);
     110                        }
     111                    popup.show(e.getComponent(), e.getX(), e.getY());
     112                    }
     113                    }
    89114        });
    90115               
     
    124149                                diffButton.setEnabled(true);
    125150                        }
     151                        toolsButton.setEnabled(dataLayer.handler != null && !dataLayer.handler.getTools().isEmpty());
    126152                } else {
    127153                        disableAllButtons();
     
    143169        MapView.removeEditLayerChangeListener(this);
    144170    }
     171
     172    public OdDataLayer getDataLayer() {
     173        return dataLayer;
     174    }
    145175}
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/NetworkReader.java

    r28191 r28696  
    4747        private final AbstractDataSetHandler handler;
    4848        private Class<? extends AbstractReader> readerClass;
     49        private final boolean promptUser;
    4950
    5051        private File file;
    5152        private String filename;
    5253       
    53     public NetworkReader(String url, AbstractDataSetHandler handler) {
     54    public NetworkReader(String url, AbstractDataSetHandler handler, boolean promptUser) {
    5455        CheckParameterUtil.ensureParameterNotNull(url, "url");
    5556        this.url = url;
    5657        this.handler = handler;
    5758        this.readerClass = null;
     59        this.promptUser = promptUser;
    5860    }
    5961   
     
    150152            instance = progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false);
    151153            if (readerClass.equals(ZipReader.class)) {
    152                 ZipReader zipReader = new ZipReader(in, handler);
     154                ZipReader zipReader = new ZipReader(in, handler, promptUser);
    153155                DataSet ds = zipReader.parseDoc(instance);
    154156                file = zipReader.getReadFile();
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/archive/ZipImporter.java

    r28000 r28696  
    3333                        throws IllegalDataException {
    3434                try {
    35                         return ZipReader.parseDataSet(in, handler, instance);
     35                        return ZipReader.parseDataSet(in, handler, instance, true);
    3636                } catch (Exception e) {
    3737                        throw new IllegalDataException(e);
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/archive/ZipReader.java

    r28374 r28696  
    5555        private final AbstractDataSetHandler handler;
    5656        private final ZipHandler zipHandler;
     57        private final boolean promptUser;
    5758       
    5859        private File file;
    5960   
    60     public ZipReader(InputStream in, AbstractDataSetHandler handler) {
     61    public ZipReader(InputStream in, AbstractDataSetHandler handler, boolean promptUser) {
    6162        this.zis = in instanceof ZipInputStream ? (ZipInputStream) in : new ZipInputStream(in);
    6263        this.handler = handler;
    6364        this.zipHandler = handler != null ? handler.getZipHandler() : null;
     65        this.promptUser = promptUser;
    6466    }
    6567
    66         public static DataSet parseDataSet(InputStream in, AbstractDataSetHandler handler, ProgressMonitor instance) throws IOException, XMLStreamException, FactoryConfigurationError, JAXBException {
    67                 return new ZipReader(in, handler).parseDoc(instance);
     68        public static DataSet parseDataSet(InputStream in, AbstractDataSetHandler handler, ProgressMonitor instance, boolean promptUser)
     69                throws IOException, XMLStreamException, FactoryConfigurationError, JAXBException {
     70                return new ZipReader(in, handler, promptUser).parseDoc(instance);
    6871        }
    6972       
     
    156159                        file = null;
    157160                       
    158                         if (candidates.size() > 1) {
     161                        if (promptUser && candidates.size() > 1) {
    159162                                DialogPrompter<CandidateChooser> prompt = new DialogPrompter() {
    160163                                        @Override
     
    166169                                        file = prompt.getDialog().getSelectedFile();
    167170                                }
    168                         } else if (candidates.size() == 1) {
     171                        } else if (!candidates.isEmpty()) {
    169172                                file = candidates.get(0);
    170173                        }
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/layers/OdDataLayer.java

    r28185 r28696  
    115115        @Override
    116116        public void activeLayerChange(Layer oldLayer, Layer newLayer) {
     117            if (newLayer == this && this.handler != null) {
     118                this.handler.notifyActive();
     119            }
    117120        }
    118121
Note: See TracChangeset for help on using the changeset viewer.