23
23
import org .openstreetmap .josm .data .osm .OsmPrimitive ;
24
24
import org .openstreetmap .josm .data .osm .Relation ;
25
25
import org .openstreetmap .josm .data .osm .Way ;
26
+ import org .openstreetmap .josm .data .osm .event .AbstractDatasetChangedEvent ;
27
+ import org .openstreetmap .josm .data .osm .event .DataSetListenerAdapter ;
28
+ import org .openstreetmap .josm .data .osm .event .DatasetEventManager ;
29
+ import org .openstreetmap .josm .data .osm .event .DatasetEventManager .FireMode ;
26
30
import org .openstreetmap .josm .data .osm .visitor .OsmPrimitiveVisitor ;
27
31
import org .openstreetmap .josm .gui .MainApplication ;
28
32
import org .openstreetmap .josm .gui .Notification ;
41
45
* Uploads the current selection to the server.
42
46
* @since 2250
43
47
*/
44
- public class UploadSelectionAction extends AbstractUploadAction {
48
+ public class UploadSelectionAction extends AbstractUploadAction implements DataSetListenerAdapter .Listener {
49
+ private final transient DataSetListenerAdapter dataChangedAdapter = new DataSetListenerAdapter (this );
50
+
45
51
/**
46
52
* Constructs a new {@code UploadSelectionAction}.
47
53
*/
@@ -55,6 +61,7 @@ public UploadSelectionAction() {
55
61
// CHECKSTYLE.ON: LineLength
56
62
true );
57
63
setHelpId (ht ("/Action/UploadSelection" ));
64
+ DatasetEventManager .getInstance ().addDatasetListener (dataChangedAdapter , FireMode .IMMEDIATELY );
58
65
}
59
66
60
67
@ Override
@@ -321,4 +328,16 @@ protected void realRun() throws SAXException, IOException, OsmTransferException
321
328
}
322
329
}
323
330
}
331
+
332
+ @ Override
333
+ public void destroy () {
334
+ super .destroy ();
335
+ DatasetEventManager .getInstance ().removeDatasetListener (dataChangedAdapter );
336
+
337
+ }
338
+
339
+ @ Override
340
+ public void processDatasetEvent (AbstractDatasetChangedEvent event ) {
341
+ updateEnabledStateOnCurrentSelection ();
342
+ }
324
343
}
0 commit comments