Index: /applications/editors/josm/plugins/measurement/.settings/org.eclipse.jdt.ui.prefs
===================================================================
--- /applications/editors/josm/plugins/measurement/.settings/org.eclipse.jdt.ui.prefs	(revision 32454)
+++ /applications/editors/josm/plugins/measurement/.settings/org.eclipse.jdt.ui.prefs	(revision 32454)
@@ -0,0 +1,60 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=false
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
Index: /applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementDialog.java
===================================================================
--- /applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementDialog.java	(revision 32453)
+++ /applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementDialog.java	(revision 32454)
@@ -241,5 +241,5 @@
         });
 
-        DataSet currentDs = Main.main.getCurrentDataSet();
+        DataSet currentDs = Main.getLayerManager().getEditDataSet();
 
         if (ds != currentDs) {
@@ -280,5 +280,5 @@
         // Refresh selection if a node belonging to a selected member has moved (example: scale action)
         if ((nodes != null && nodes.contains(n)) || waysContain(n)) {
-            selectionChanged(Main.main.getCurrentDataSet().getSelected());
+            selectionChanged(Main.getLayerManager().getEditDataSet().getSelected());
         }
     }
@@ -295,5 +295,5 @@
     public void systemOfMeasurementChanged(String oldSoM, String newSoM) {
         // Refresh selection to take into account new system of measurement
-        DataSet currentDs = Main.main.getCurrentDataSet();
+        DataSet currentDs = Main.getLayerManager().getEditDataSet();
         if (currentDs != null) {
             selectionChanged(currentDs.getSelected());
Index: /applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementPlugin.java
===================================================================
--- /applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementPlugin.java	(revision 32453)
+++ /applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementPlugin.java	(revision 32454)
@@ -7,7 +7,11 @@
 import org.openstreetmap.josm.gui.IconToggleButton;
 import org.openstreetmap.josm.gui.MapFrame;
-import org.openstreetmap.josm.gui.MapView;
-import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
 import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
+import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
+import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
 import org.openstreetmap.josm.plugins.Plugin;
 import org.openstreetmap.josm.plugins.PluginInformation;
@@ -42,15 +46,32 @@
         if (currentLayer == null) {
             currentLayer = new MeasurementLayer(tr("Measurements"));
-            Main.main.addLayer(currentLayer);
-            MapView.addLayerChangeListener(new LayerChangeListener(){
-                public void activeLayerChange(final Layer oldLayer, final Layer newLayer) {
-                    if(newLayer instanceof MeasurementLayer)
+            Main.getLayerManager().addLayer(currentLayer);
+            final ActiveLayerChangeListener activeListener = new ActiveLayerChangeListener() {
+                @Override
+                public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
+                    Layer newLayer = Main.getLayerManager().getActiveLayer();
+                    if (newLayer instanceof MeasurementLayer)
                         MeasurementPlugin.currentLayer = (MeasurementLayer)newLayer;
                 }
-                public void layerAdded(final Layer newLayer) {
+            };
+            Main.getLayerManager().addActiveLayerChangeListener(activeListener);
+            Main.getLayerManager().addLayerChangeListener(new LayerChangeListener(){
+                @Override
+                public void layerAdded(LayerAddEvent e) {
+                    // Do nothing
                 }
-                public void layerRemoved(final Layer oldLayer) {
-                    if (oldLayer != null && oldLayer == currentLayer)
-                        MapView.removeLayerChangeListener(this);
+
+                @Override
+                public void layerRemoving(LayerRemoveEvent e) {
+                    Layer oldLayer = e.getRemovedLayer();
+                    if (oldLayer != null && oldLayer == currentLayer) {
+                        Main.getLayerManager().removeActiveLayerChangeListener(activeListener);
+                        Main.getLayerManager().removeLayerChangeListener(this);
+                    }
+                }
+
+                @Override
+                public void layerOrderChanged(LayerOrderChangeEvent e) {
+                    // Do nothing
                 }
             });
