kopia lustrzana https://github.com/JOSM/MapWithAI
Only enable RapiD download button when there is a dataset
Signed-off-by: Taylor Smock <smocktaylor@gmail.com>pull/1/head v0.0.3
rodzic
a4c446d46a
commit
330f18409e
|
@ -26,24 +26,38 @@ public class RapiDAction extends JosmAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent event) {
|
public void actionPerformed(ActionEvent event) {
|
||||||
final RapiDLayer layer = getLayer();
|
final RapiDLayer layer = getLayer(true);
|
||||||
getRapiDData(layer);
|
getRapiDData(layer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public RapiDLayer getLayer() {
|
/**
|
||||||
|
* Get the first {@link RapiDLayer} that we can find.
|
||||||
|
*
|
||||||
|
* @param create true if we want to create a new layer
|
||||||
|
* @return A RapiDLayer, or a new RapiDLayer if none exist. May return
|
||||||
|
* {@code null} if {@code create} is {@code false}.
|
||||||
|
*/
|
||||||
|
public RapiDLayer getLayer(boolean create) {
|
||||||
final List<RapiDLayer> rapidLayers = MainApplication.getLayerManager().getLayersOfType(RapiDLayer.class);
|
final List<RapiDLayer> rapidLayers = MainApplication.getLayerManager().getLayersOfType(RapiDLayer.class);
|
||||||
RapiDLayer layer;
|
RapiDLayer layer;
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
if (rapidLayers.isEmpty()) {
|
if (rapidLayers.isEmpty() && create) {
|
||||||
layer = new RapiDLayer(new DataSet(), RapiDPlugin.NAME, null);
|
layer = new RapiDLayer(new DataSet(), RapiDPlugin.NAME, null);
|
||||||
MainApplication.getLayerManager().addLayer(layer);
|
MainApplication.getLayerManager().addLayer(layer);
|
||||||
} else {
|
} else if (!rapidLayers.isEmpty()) {
|
||||||
layer = rapidLayers.get(0);
|
layer = rapidLayers.get(0);
|
||||||
|
} else {
|
||||||
|
layer = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return layer;
|
return layer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get data for a {@link RapiDLayer}
|
||||||
|
*
|
||||||
|
* @param layer The {@link RapiDLayer} to add data to
|
||||||
|
*/
|
||||||
public void getRapiDData(RapiDLayer layer) {
|
public void getRapiDData(RapiDLayer layer) {
|
||||||
final List<OsmDataLayer> osmLayers = MainApplication.getLayerManager().getLayersOfType(OsmDataLayer.class);
|
final List<OsmDataLayer> osmLayers = MainApplication.getLayerManager().getLayersOfType(OsmDataLayer.class);
|
||||||
for (final OsmDataLayer osmLayer : osmLayers) {
|
for (final OsmDataLayer osmLayer : osmLayers) {
|
||||||
|
@ -53,6 +67,12 @@ public class RapiDAction extends JosmAction {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the data for RapiD
|
||||||
|
*
|
||||||
|
* @param layer A pre-existing {@link RapiDLayer}
|
||||||
|
* @param osmLayer The osm datalayer with a set of bounds
|
||||||
|
*/
|
||||||
public void getRapiDData(RapiDLayer layer, OsmDataLayer osmLayer) {
|
public void getRapiDData(RapiDLayer layer, OsmDataLayer osmLayer) {
|
||||||
final DataSet editSet = osmLayer.getDataSet();
|
final DataSet editSet = osmLayer.getDataSet();
|
||||||
final List<Bounds> editSetBounds = editSet.getDataSourceBounds();
|
final List<Bounds> editSetBounds = editSet.getDataSourceBounds();
|
||||||
|
@ -71,4 +91,13 @@ public class RapiDAction extends JosmAction {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void updateEnabledState() {
|
||||||
|
if (getLayerManager().getEditDataSet() == null) {
|
||||||
|
setEnabled(false);
|
||||||
|
} else {
|
||||||
|
setEnabled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue