Changeset 33896 in osm for applications


Ignore:
Timestamp:
2017-11-25T01:46:02+01:00 (7 years ago)
Author:
donvip
Message:

update to JOSM 13007

Location:
applications/editors/josm/plugins/routes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/routes/build.xml

    r33593 r33896  
    22<project name="routes" default="dist" basedir=".">
    33    <property name="commit.message" value="Changed the constructor signature of the plugin main class"/>
    4     <property name="plugin.main.version" value="12662"/>
     4    <property name="plugin.main.version" value="13007"/>
    55    <property name="josm" location="../../core/dist/josm-custom.jar"/>
    66    <property name="plugin.dist.dir" value="../../dist"/>
  • applications/editors/josm/plugins/routes/src/org/openstreetmap/josm/plugins/routes/RoutesPlugin.java

    r33606 r33896  
    3030public class RoutesPlugin extends Plugin implements LayerChangeListener {
    3131
    32         private final List<RouteLayer> routeLayers = new ArrayList<>();
     32    private final List<RouteLayer> routeLayers = new ArrayList<>();
    3333
    34         public RoutesPlugin(PluginInformation info) {
    35                 super(info);
    36                 MainApplication.getLayerManager().addLayerChangeListener(this);
     34    public RoutesPlugin(PluginInformation info) {
     35        super(info);
     36        MainApplication.getLayerManager().addLayerChangeListener(this);
    3737
    38                 File routesFile = new File(getPluginDir() + File.separator + "routes.xml");
    39                 if (!routesFile.exists()) {
    40                         Logging.info("File with route definitions doesn't exist, using default");
     38        File routesFile = new File(getPluginDirs().getUserDataDirectory(false), "routes.xml");
     39        if (!routesFile.exists()) {
     40            Logging.info("File with route definitions doesn't exist, using default");
    4141
    42                         try {
    43                                 routesFile.getParentFile().mkdir();
    44                                 try (
    45                                                 OutputStream outputStream = new FileOutputStream(routesFile);
    46                                                 InputStream inputStream = Routes.class.getResourceAsStream("routes.xml");
    47                                                 ) {
    48                                         byte[] b = new byte[512];
    49                                         int read;
    50                                         while ((read = inputStream.read(b)) != -1) {
    51                                                 outputStream.write(b, 0, read);
    52                                         }
    53                                 }
    54                         } catch (IOException e) {
    55                                 Logging.error(e);
    56                         }
    57                 }
     42            try {
     43                routesFile.getParentFile().mkdir();
     44                try (
     45                        OutputStream outputStream = new FileOutputStream(routesFile);
     46                        InputStream inputStream = Routes.class.getResourceAsStream("routes.xml");
     47                        ) {
     48                    byte[] b = new byte[512];
     49                    int read;
     50                    while ((read = inputStream.read(b)) != -1) {
     51                        outputStream.write(b, 0, read);
     52                    }
     53                }
     54            } catch (IOException e) {
     55                Logging.error(e);
     56            }
     57        }
    5858
    59                 try {
    60                         JAXBContext context = JAXBContext.newInstance(
    61                                         Routes.class.getPackage().getName(), Routes.class.getClassLoader());
    62                         Unmarshaller unmarshaller = context.createUnmarshaller();
    63                         Routes routes = (Routes)unmarshaller.unmarshal(
    64                                         new FileInputStream(getPluginDir() + File.separator + "routes.xml"));
    65                         for (RoutesXMLLayer layer:routes.getLayer()) {
    66                                 if (layer.isEnabled()) {
    67                                         routeLayers.add(new RouteLayer(layer));
    68                                 }
    69                         }
    70                 } catch (Exception e) {
    71                         e.printStackTrace();
    72                 }
    73         }
     59        try {
     60            JAXBContext context = JAXBContext.newInstance(
     61                    Routes.class.getPackage().getName(), Routes.class.getClassLoader());
     62            Unmarshaller unmarshaller = context.createUnmarshaller();
     63            Routes routes = (Routes)unmarshaller.unmarshal(
     64                    new FileInputStream(getPluginDirs().getUserDataDirectory(false) + File.separator + "routes.xml"));
     65            for (RoutesXMLLayer layer:routes.getLayer()) {
     66                if (layer.isEnabled()) {
     67                    routeLayers.add(new RouteLayer(layer));
     68                }
     69            }
     70        } catch (Exception e) {
     71            e.printStackTrace();
     72        }
     73    }
    7474
    75         public void activeLayerChange(Layer oldLayer, Layer newLayer) {
    76                 // Do nothing
    77         }
     75    public void activeLayerChange(Layer oldLayer, Layer newLayer) {
     76        // Do nothing
     77    }
    7878
    79         @Override
    80         public void layerAdded(LayerAddEvent e) {
    81                 Layer layer = e.getAddedLayer();
    82                 if (layer instanceof OsmDataLayer) {
    83                         LayerManager lm = e.getSource();
    84                         for (RouteLayer routeLayer : routeLayers) {
    85                                 if (!lm.containsLayer(routeLayer)) {
    86                                         SwingUtilities.invokeLater(() -> {
    87                                                 if (!lm.containsLayer(routeLayer)) {
    88                                                         lm.addLayer(routeLayer);
    89                                                 }
    90                                         });
    91                                 }
    92                         }
    93                 }
    94         }
     79    @Override
     80    public void layerAdded(LayerAddEvent e) {
     81        Layer layer = e.getAddedLayer();
     82        if (layer instanceof OsmDataLayer) {
     83            LayerManager lm = e.getSource();
     84            for (RouteLayer routeLayer : routeLayers) {
     85                if (!lm.containsLayer(routeLayer)) {
     86                    SwingUtilities.invokeLater(() -> {
     87                        if (!lm.containsLayer(routeLayer)) {
     88                            lm.addLayer(routeLayer);
     89                        }
     90                    });
     91                }
     92            }
     93        }
     94    }
    9595
    96         @Override
    97         public void layerRemoving(LayerRemoveEvent e) {
    98                 for (Layer layer : e.getSource().getLayers()) {
    99                         if (layer instanceof OsmDataLayer)  {
    100                                 return; /* at least one OSM layer left, do nothing */
    101                         }
    102                 }
    103                 if(!e.isLastLayer()) {
    104                         SwingUtilities.invokeLater(() -> {
    105                                 for (RouteLayer routeLayer : routeLayers) {
    106                                         if (e.getSource().containsLayer(routeLayer)) {
    107                                                 e.getSource().removeLayer(routeLayer);
    108                                         }
    109                                 }
    110                         });
    111                 }
    112         }
     96    @Override
     97    public void layerRemoving(LayerRemoveEvent e) {
     98        for (Layer layer : e.getSource().getLayers()) {
     99            if (layer instanceof OsmDataLayer)  {
     100                return; /* at least one OSM layer left, do nothing */
     101            }
     102        }
     103        if(!e.isLastLayer()) {
     104            SwingUtilities.invokeLater(() -> {
     105                for (RouteLayer routeLayer : routeLayers) {
     106                    if (e.getSource().containsLayer(routeLayer)) {
     107                        e.getSource().removeLayer(routeLayer);
     108                    }
     109                }
     110            });
     111        }
     112    }
    113113
    114         @Override
    115         public void layerOrderChanged(LayerOrderChangeEvent e) {
    116                 // Do nothing
    117         }
     114    @Override
     115    public void layerOrderChanged(LayerOrderChangeEvent e) {
     116        // Do nothing
     117    }
    118118}
Note: See TracChangeset for help on using the changeset viewer.