Changeset 13434 in josm for trunk/src/org/openstreetmap/josm/gui/layer/MainLayerManager.java
- Timestamp:
- 2018-02-18T05:02:23+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/layer/MainLayerManager.java
r13219 r13434 48 48 49 49 /** 50 * This event is fired whenever the active or the editlayer changes.50 * This event is fired whenever the active or the data layer changes. 51 51 * @author Michael Zangl 52 52 */ 53 53 public static class ActiveLayerChangeEvent extends LayerManagerEvent { 54 54 55 private final OsmDataLayer previous EditLayer;55 private final OsmDataLayer previousDataLayer; 56 56 57 57 private final Layer previousActiveLayer; … … 60 60 * Create a new {@link ActiveLayerChangeEvent} 61 61 * @param source The source 62 * @param previous EditLayer the previous editlayer62 * @param previousDataLayer the previous data layer 63 63 * @param previousActiveLayer the previous active layer 64 64 */ 65 ActiveLayerChangeEvent(MainLayerManager source, OsmDataLayer previous EditLayer,65 ActiveLayerChangeEvent(MainLayerManager source, OsmDataLayer previousDataLayer, 66 66 Layer previousActiveLayer) { 67 67 super(source); 68 this.previous EditLayer = previousEditLayer;68 this.previousDataLayer = previousDataLayer; 69 69 this.previousActiveLayer = previousActiveLayer; 70 70 } 71 71 72 72 /** 73 * Gets the edit layer that was previously used. 74 * @return The old edit layer, <code>null</code> if there is none. 75 */ 73 * Gets the data layer that was previously used. 74 * @return The old data layer, <code>null</code> if there is none. 75 * @deprecated use {@link #getPreviousDataLayer} 76 */ 77 @Deprecated 76 78 public OsmDataLayer getPreviousEditLayer() { 77 return previousEditLayer; 79 return getPreviousDataLayer(); 80 } 81 82 /** 83 * Gets the data layer that was previously used. 84 * @return The old data layer, <code>null</code> if there is none. 85 * @since 13434 86 */ 87 public OsmDataLayer getPreviousDataLayer() { 88 return previousDataLayer; 78 89 } 79 90 … … 88 99 /** 89 100 * Gets the data set that was previously used. 90 * @return The data set of {@link #getPreviousEditLayer()}. 91 */ 101 * @return The data set of {@link #getPreviousDataLayer()}. 102 * @deprecated use {@link #getPreviousDataSet} 103 */ 104 @Deprecated 92 105 public DataSet getPreviousEditDataSet() { 93 if (previousEditLayer != null) { 94 return previousEditLayer.data; 106 return getPreviousDataSet(); 107 } 108 109 /** 110 * Gets the data set that was previously used. 111 * @return The data set of {@link #getPreviousDataLayer()}. 112 * @since 13434 113 */ 114 public DataSet getPreviousDataSet() { 115 if (previousDataLayer != null) { 116 return previousDataLayer.data; 95 117 } else { 96 118 return null; … … 151 173 152 174 /** 153 * The edit layer is the current active data layer.154 */ 155 private OsmDataLayer editLayer;175 * The current active data layer. It might be editable or not, based on its read-only status. 176 */ 177 private OsmDataLayer dataLayer; 156 178 157 179 private final List<ActiveLayerChangeListener> activeLayerChangeListeners = new CopyOnWriteArrayList<>(); … … 214 236 215 237 /** 216 * Set the active layer, unless the layer is read-only.238 * Set the active layer, unless the layer is being uploaded. 217 239 * If the layer is an OsmDataLayer, the edit layer is also changed. 218 240 * @param layer The active layer. … … 221 243 // we force this on to the EDT Thread to make events fire from there. 222 244 // The synchronization lock needs to be held by the EDT. 223 if (layer instanceof OsmDataLayer && ((OsmDataLayer) layer).is ReadOnly()) {245 if (layer instanceof OsmDataLayer && ((OsmDataLayer) layer).isUploadInProgress()) { 224 246 GuiHelper.runInEDT(() -> 225 247 JOptionPane.showMessageDialog( … … 240 262 241 263 private void setActiveLayer(Layer layer, boolean forceEditLayerUpdate) { 242 ActiveLayerChangeEvent event = new ActiveLayerChangeEvent(this, editLayer, activeLayer);264 ActiveLayerChangeEvent event = new ActiveLayerChangeEvent(this, dataLayer, activeLayer); 243 265 activeLayer = layer; 244 266 if (activeLayer instanceof OsmDataLayer) { 245 editLayer = (OsmDataLayer) activeLayer;267 dataLayer = (OsmDataLayer) activeLayer; 246 268 } else if (forceEditLayerUpdate) { 247 editLayer = null;269 dataLayer = null; 248 270 } 249 271 fireActiveLayerChange(event); … … 252 274 private void fireActiveLayerChange(ActiveLayerChangeEvent event) { 253 275 GuiHelper.assertCallFromEdt(); 254 if (event.getPreviousActiveLayer() != activeLayer || event.getPrevious EditLayer() != editLayer) {276 if (event.getPreviousActiveLayer() != activeLayer || event.getPreviousDataLayer() != dataLayer) { 255 277 for (ActiveLayerChangeListener l : activeLayerChangeListeners) { 256 278 l.activeOrEditLayerChanged(event); … … 277 299 @Override 278 300 protected Collection<Layer> realRemoveSingleLayer(Layer layer) { 279 if ((layer instanceof OsmDataLayer) && (((OsmDataLayer) layer).is ReadOnly())) {301 if ((layer instanceof OsmDataLayer) && (((OsmDataLayer) layer).isUploadInProgress())) { 280 302 GuiHelper.runInEDT(() -> JOptionPane.showMessageDialog(MainApplication.parent, 281 303 tr("Trying to delete the layer with background upload. Please wait until the upload is finished."))); … … 285 307 } 286 308 287 if (layer == activeLayer || layer == editLayer) {309 if (layer == activeLayer || layer == dataLayer) { 288 310 Layer nextActive = suggestNextActiveLayer(layer); 289 311 setActiveLayer(nextActive, true); … … 337 359 public synchronized Layer getActiveLayer() { 338 360 if (activeLayer instanceof OsmDataLayer) { 339 if (!((OsmDataLayer) activeLayer).is ReadOnly()) {361 if (!((OsmDataLayer) activeLayer).isUploadInProgress()) { 340 362 return activeLayer; 341 363 } else { … … 351 373 * 352 374 * @return the current edit layer. May be null. 375 * @see #getActiveDataLayer 353 376 */ 354 377 public synchronized OsmDataLayer getEditLayer() { 355 if ( editLayer != null && !editLayer.isReadOnly())356 return editLayer;378 if (dataLayer != null && !dataLayer.isReadOnly()) 379 return dataLayer; 357 380 else 358 381 return null; … … 360 383 361 384 /** 362 * Gets the data set of the active edit layer. 385 * Replies the active data layer. The layer can be read-only. 386 * 387 * @return the current data layer. May be null or read-only. 388 * @see #getEditLayer 389 * @since 13434 390 */ 391 public synchronized OsmDataLayer getActiveDataLayer() { 392 if (dataLayer != null) 393 return dataLayer; 394 else 395 return null; 396 } 397 398 /** 399 * Gets the data set of the active edit layer, if not readOnly. 363 400 * @return That data set, <code>null</code> if there is no edit layer. 401 * @see #getActiveDataSet 364 402 */ 365 403 public synchronized DataSet getEditDataSet() { 366 if (editLayer != null) { 367 return editLayer.data; 404 if (dataLayer != null && !dataLayer.isReadOnly()) { 405 return dataLayer.data; 406 } else { 407 return null; 408 } 409 } 410 411 /** 412 * Gets the data set of the active data layer. The dataset can be read-only. 413 * @return That data set, <code>null</code> if there is no active data layer. 414 * @see #getEditDataSet 415 * @since 13434 416 */ 417 public synchronized DataSet getActiveDataSet() { 418 if (dataLayer != null) { 419 return dataLayer.data; 368 420 } else { 369 421 return null; … … 413 465 */ 414 466 public void invalidateEditLayer() { 415 if ( editLayer != null) {416 editLayer.invalidate();467 if (dataLayer != null) { 468 dataLayer.invalidate(); 417 469 } 418 470 } … … 445 497 */ 446 498 public void prepareLayerForUpload(OsmDataLayer layer) { 447 448 499 GuiHelper.assertCallFromEdt(); 500 layer.setUploadInProgress(); 449 501 layer.setReadOnly(); 450 502 451 503 // Reset only the edit layer as empty 452 if ( editLayer == layer) {453 ActiveLayerChangeEvent activeLayerChangeEvent = new ActiveLayerChangeEvent(this, editLayer, activeLayer);454 editLayer = null;504 if (dataLayer == layer) { 505 ActiveLayerChangeEvent activeLayerChangeEvent = new ActiveLayerChangeEvent(this, dataLayer, activeLayer); 506 dataLayer = null; 455 507 fireActiveLayerChange(activeLayerChangeEvent); 456 508 } … … 467 519 GuiHelper.assertCallFromEdt(); 468 520 layer.unsetReadOnly(); 521 layer.unsetUploadInProgress(); 469 522 470 523 // Set the layer as edit layer if the edit layer is empty. 471 if ( editLayer == null) {472 ActiveLayerChangeEvent layerChangeEvent = new ActiveLayerChangeEvent(this, editLayer, activeLayer);473 editLayer = layer;524 if (dataLayer == null) { 525 ActiveLayerChangeEvent layerChangeEvent = new ActiveLayerChangeEvent(this, dataLayer, activeLayer); 526 dataLayer = layer; 474 527 fireActiveLayerChange(layerChangeEvent); 475 528 }
Note:
See TracChangeset
for help on using the changeset viewer.