Index: /applications/editors/josm/plugins/indoorhelper/.checkstyle
===================================================================
--- /applications/editors/josm/plugins/indoorhelper/.checkstyle	(revision 32637)
+++ /applications/editors/josm/plugins/indoorhelper/.checkstyle	(revision 32637)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="JOSM" location="/JOSM/tools/checkstyle/josm_checks.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="JOSM" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+  <filter name="DerivedFiles" enabled="true"/>
+  <filter name="FilesFromPackage" enabled="true">
+    <filter-data value="data"/>
+    <filter-data value="images"/>
+    <filter-data value="styles"/>
+    <filter-data value="resources"/>
+    <filter-data value="scripts"/>
+  </filter>
+</fileset-config>
Index: /applications/editors/josm/plugins/indoorhelper/.project
===================================================================
--- /applications/editors/josm/plugins/indoorhelper/.project	(revision 32636)
+++ /applications/editors/josm/plugins/indoorhelper/.project	(revision 32637)
@@ -17,7 +17,13 @@
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
 	</natures>
 </projectDescription>
Index: /applications/editors/josm/plugins/indoorhelper/.settings/org.eclipse.jdt.ui.prefs
===================================================================
--- /applications/editors/josm/plugins/indoorhelper/.settings/org.eclipse.jdt.ui.prefs	(revision 32637)
+++ /applications/editors/josm/plugins/indoorhelper/.settings/org.eclipse.jdt.ui.prefs	(revision 32637)
@@ -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=false
+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=true
+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/indoorhelper/old/ToolboxViewOLD.java
===================================================================
--- /applications/editors/josm/plugins/indoorhelper/old/ToolboxViewOLD.java	(revision 32636)
+++ /applications/editors/josm/plugins/indoorhelper/old/ToolboxViewOLD.java	(revision 32637)
@@ -48,5 +48,5 @@
 			@Override
 			public void actionPerformed(ActionEvent e) {
-				if(activatorButton.getText().equals("OFF")){
+				if (activatorButton.getText().equals("OFF")){
 					activatorButton.setText("ON");
 					
@@ -54,5 +54,5 @@
 					levSel.createFrame();
 					
-				} else if(activatorButton.getText().equals("ON")){
+				} else if (activatorButton.getText().equals("ON")){
 					activatorButton.setText("OFF");
 				}
Index: /applications/editors/josm/plugins/indoorhelper/src/controller/IndoorHelperController.java
===================================================================
--- /applications/editors/josm/plugins/indoorhelper/src/controller/IndoorHelperController.java	(revision 32636)
+++ /applications/editors/josm/plugins/indoorhelper/src/controller/IndoorHelperController.java	(revision 32637)
@@ -49,8 +49,8 @@
 
 /**
- * 
+ *
  * Class for the Controller which provides the communication between
  * the IndoorHelperModel and the different views.
- * 
+ *
  * @author egru
  *
@@ -58,481 +58,467 @@
 public class IndoorHelperController {
 
-	private IndoorHelperModel model;
-	private ToolBoxView toolboxView;
-	private FittingView fittingView;
-	private LevelSelectorView selectorView;
-	private String sep = System.getProperty("file.separator");
-
-
-	private int lastLevelIndex;
-
-	/**
-	 * Constructor for the {@link IndoorHelperController} which initiates model and views.
-	 * 
-	 */
-	public IndoorHelperController(){
-		this.model = new IndoorHelperModel();
-		this.toolboxView = new ToolBoxView();
-
-		this.lastLevelIndex = 0;
-
-		addToolboxListeners();
-		Main.map.addToggleDialog(toolboxView);
-	}
-
-	/**
-	 * Adds the button- and box-listeners to the {@link ToolBoxView}.
-	 */
-	private void addToolboxListeners(){
-
-		if(this.toolboxView!=null){
-			this.toolboxView.setPowerButtonListener(new ToolPowerButtonListener());
-			this.toolboxView.setApplyButtonListener(new ToolApplyButtonListener());
-			this.toolboxView.setLevelItemListener(new ToolLevelItemListener());
-			this.toolboxView.setObjectItemListener(new ToolObjectItemListener());
-			this.toolboxView.setPreset1Listener(new Preset1Listener());
-			this.toolboxView.setPreset2Listener(new Preset2Listener());
-			this.toolboxView.setPreset3Listener(new Preset3Listener());
-			this.toolboxView.setPreset4Listener(new Preset4Listener());
-		}
-	}
-
-	/**
-	 * Adds the button-listeners to the {@link LevelSelectorView}.
-	 */
-	private void addLevelSelectorListeners(){
-		if(this.selectorView!=null){
-			this.selectorView.setOkButtonListener(new LevelOkButtonListener());
-			this.selectorView.setCancelButtonListener(new LevelCancelButtonListener());
-		}
-	}
-
-	/**
-	 * Adds the button-listeners to the {@link FittingView}.
-	 */
-	private void addFittingListeners(){
-		if(this.fittingView!=null){
-			this.fittingView.setOkButtonListener(new FittingOkButtonListener());
-		}
-	}
-
-	//********************************************************************
-	//*********************   TOOLBOX LISTENERS   ************************
-	//********************************************************************
-
-	/**
-	 * The listener which handles the power button.
-	 * 
-	 * @author egru
-	 *
-	 */
-	class ToolPowerButtonListener implements ActionListener{
-
-		@Override
-		public void actionPerformed(ActionEvent e) {
-			if(toolboxView.getPowerButtonState()){
-				selectorView = new LevelSelectorView();
-				addLevelSelectorListeners();
-				selectorView.setVisible(true);
-				setPluginPreferences(true);
-			} else if(!toolboxView.getPowerButtonState()){
-				model = new IndoorHelperModel();
-				selectorView.dispose();
-				toolboxView.reset();
-				setPluginPreferences(false);
-
-				// Delete the indoor filters
-				FilterDialog filterDialog = Main.map.getToggleDialog(FilterDialog.class);
-
-				if(filterDialog!=null){
-					FilterTableModel filterTableModel = filterDialog.getFilterModel();
-
-					for(int i=filterTableModel.getRowCount()-1;i>-1;i--){
-						if(filterTableModel.getFilter(i).text.startsWith("\"indoor:level\"=\"")){
-							filterTableModel.removeFilter(i);
-						}
-					}
-
-				}
-			}
-		}
-	}
-
-
-	/**
-	 * The listener which provides the handling of the apply button.
-	 * Gets the texts which were written by the user and writes them to the OSM-data.
-	 * After that it checks the tagged data  with the built-in validator file.
-	 * 
-	 * @author egru
-	 */
-	class ToolApplyButtonListener implements ActionListener{
-
-		@Override
-		public void actionPerformed(ActionEvent e) {
-			IndoorObject indoorObject = toolboxView.getSelectedObject();
-			if(toolboxView.getNameText().isEmpty() && toolboxView.getRefText().isEmpty() && toolboxView.getLevelName().isEmpty()){
-				model.addTagsToOSM(indoorObject);
-			} else {
-				List<Tag> tags = new ArrayList<>();
-				if(!toolboxView.getLevelName().isEmpty()){
-					model.getLevelList().get(toolboxView.getSelectedLevelIndex()).setNameTag(toolboxView.getLevelName());
-				}
-				if(!toolboxView.getNameText().isEmpty()){
-					tags.add(new Tag("name", toolboxView.getNameText()));
-				}
-				if(!toolboxView.getRefText().isEmpty()) {
-					tags.add(new Tag("ref", toolboxView.getRefText()));	
-				}
-				model.addTagsToOSM(indoorObject, tags);	
-			} 
-			//Do the validation process
-			ValidateAction validateAction = new ValidateAction();
-			validateAction.doValidate(true);
-			
-			refreshPresets();
-		}
-	}
-
-	/**
-	 * <pre>The listener which is called when a new item in the level list is selected.
-	 *It also sets the name-tag for a level, if the user has done an input in the textbox.
-	 * </pre>
-	 * @author egru
-	 *
-	 */
-	class ToolLevelItemListener implements ItemListener{
-
-		@Override
-		public void itemStateChanged(ItemEvent e) {
-			if(!toolboxView.levelListIsEmpty()){
-
-				if(!toolboxView.getLevelName().isEmpty()){
-					model.getLevelList().get(lastLevelIndex).setNameTag(toolboxView.getLevelName());
-				}
-
-				if(!model.getLevelList().get(toolboxView.getSelectedLevelIndex()).hasEmptyName()){
-					toolboxView.setLevelName(model.getLevelList().get(toolboxView.getSelectedLevelIndex()).getName());
-				} else {
-					toolboxView.setLevelName("");
-				}
-				model.setWorkingLevel(toolboxView.getSelectedLevelIndex());
-
-				lastLevelIndex = toolboxView.getSelectedLevelIndex();
-			}
-		}
-	}
-
-
-
-	/**
-	 * The listener which is called when a new item in the object list is selected.
-	 * 
-	 * @author egru
-	 *
-	 */
-	class ToolObjectItemListener implements ItemListener{
-
-		@Override
-		public void itemStateChanged(ItemEvent e) {
-			if(toolboxView.getSelectedObject().equals(IndoorObject.ROOM)){
-				toolboxView.setTagUiElementsEnabled(true);
-			} else{
-				toolboxView.setTagUiElementsEnabled(false);
-			}
-		}
-
-	}
-	
-	/**
-	 * Listener for preset button 1.
-	 * @author egru
-	 *
-	 */
-	class Preset1Listener implements ActionListener{
-
-		@Override
-		public void actionPerformed(ActionEvent e) {
-			model.addTagsToOSM(toolboxView.getPreset1());
-
-		}
-
-	}
-
-	/**
-	 * Listener for preset button 2.
-	 * @author egru
-	 *
-	 */
-	class Preset2Listener implements ActionListener{
-
-		@Override
-		public void actionPerformed(ActionEvent e) {
-			model.addTagsToOSM(toolboxView.getPreset2());
-
-		}
-
-	}
-
-	/**
-	 * Listener for preset button 3.
-	 * @author egru
-	 *
-	 */
-	class Preset3Listener implements ActionListener{
-
-		@Override
-		public void actionPerformed(ActionEvent e) {
-			model.addTagsToOSM(toolboxView.getPreset3());
-
-		}
-
-	}
-
-	/**
-	 * Listener for preset button 4.
-	 * @author egru
-	 *
-	 */
-	class Preset4Listener implements ActionListener{
-
-		@Override
-		public void actionPerformed(ActionEvent e) {
-			model.addTagsToOSM(toolboxView.getPreset4());
-
-		}
-
-	}
-	
-	/**
-	 * Updates the preset button from the current ranking.
-	 */
-	private void refreshPresets(){
-		toolboxView.setPresetButtons(model.getPresetRanking());
-	}
-
-
-	//*******************
-	// SELECTOR LISTENERS
-	//*******************
-
-	/**
-	 * <pre>
-	 * The listener which handles the click on the OK-button of the {@link LevelSelectorView}.
-	 * It sends the data of the view to the model and displays an error message, 
-	 * if the level-list couldn't be created.
-	 * </pre>
-	 * @author egru
-	 *
-	 */
-	class LevelOkButtonListener implements ActionListener{
-
-		@Override
-		public void actionPerformed(ActionEvent e) {
-			boolean levelSuccess = model.setBuildingLevels(selectorView.getMin(), selectorView.getMax());
-
-			if(levelSuccess){
-				toolboxView.setLevelList(model.getLevelList());				//set the levels to the ComboBox and
-				model.setWorkingLevel(toolboxView.getSelectedLevelIndex());		//sets the working level in the model
-
-				selectorView.dispose();
-
-				fittingView = new FittingView();
-				addFittingListeners();
-				fittingView.setVisible(true);
-			} else{
-
-				JOptionPane.showMessageDialog(null, "Lowest Level has to be lower than the highest level",
-						"Error", JOptionPane.ERROR_MESSAGE);
-			}
-		}
-	}
-
-	/**
-	 * Closes the level selection view if the user hits the cancel button.
-	 * 
-	 * @author egru
-	 *
-	 */	
-	class LevelCancelButtonListener implements ActionListener{
-
-		@Override
-		public void actionPerformed(ActionEvent e) {
-			selectorView.dispose();	
-			toolboxView.setPowerButtonDisabled();
-			setPluginPreferences(false);
-		}
-
-	}
-
-
-
-	//*******************
-	// FITTING LISTENERS
-	//*******************
-	/**
-	 * Closes the {@link FittingView} if the OK-Button is clicked.
-	 * Enables the UI elements of the toolbox
-	 * 
-	 * @author egru
-	 *
-	 */
-	class FittingOkButtonListener implements ActionListener{
-
-		@Override
-		public void actionPerformed(ActionEvent e) {
-			fittingView.dispose();
-			toolboxView.setAllUiElementsEnabled(true);
-			toolboxView.setTagUiElementsEnabled(false);
-		}
-
-	}
-	
-	/*
-	HELPER METHODS
-	*/
-	
-	/**
-	 * Enables or disables the preferences for the mapcss-style and the validator. 
-	 * 
-	 * @param enabled Activates or disables the settings.
-	 */
-	private void setPluginPreferences(boolean enabled){
-		Map<String, Setting<?>> settings =  Main.pref.getAllSettings();
-		
-		
-		MapListSetting validatorMapListSetting = (MapListSetting) settings.
-				get("validator.org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.entries");
-		List<Map<String, String>> validatorMaps = new ArrayList<>();
-		if(validatorMapListSetting!=null){
-			validatorMaps = validatorMapListSetting.getValue();
-		}
-		
-		MapListSetting styleMapListSetting = (MapListSetting) settings.
-				get("mappaint.style.entries");
-		List<Map<String, String>> styleMaps = new ArrayList<>();
-		if(styleMapListSetting != null){
-			styleMaps = styleMapListSetting.getValue();
-		}
-							
-		if(enabled){
-			//set the validator active
-			
-			
-			List<Map<String, String>> validatorMapsNew = new ArrayList<>();
-			if(!validatorMaps.isEmpty()){
-				validatorMapsNew.addAll(validatorMaps);
-			}
-			
-			
-			for(Map<String, String> map : validatorMapsNew){
-				if(map.containsValue("Indoor")){
-					validatorMapsNew.remove(map);
-					break;
-				}
-			}
-			
-			Map<String, String> indoorValidator = new HashMap<>();
-			indoorValidator.put("title", "Indoor");
-			indoorValidator.put("active", "true");
-			indoorValidator.put("url", Main.pref.getUserDataDirectory()+ sep +"validator" + 
-					sep + "indoorhelper.validator.mapcss");
-
-			validatorMapsNew.add(indoorValidator);
-			Main.pref.putListOfStructs
-			("validator.org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.entries", 
-					validatorMapsNew);
-			
-			
-			
-						
-			//set mappaint active
-			
-			List<Map<String, String>> styleMapsNew = new ArrayList<>();
-			if(!styleMaps.isEmpty()){
-				styleMapsNew.addAll(styleMaps);
-			}
-			
-			for(Map<String, String> map : styleMapsNew){
-				if(map.containsValue("Indoor")){
-					styleMapsNew.remove(map);
-					break;
-				}
-			}
-			Map<String, String> indoorMapPaint = new HashMap<>();
-			indoorMapPaint.put("title", "Indoor");
-			indoorMapPaint.put("active", "true");
-			indoorMapPaint.put("url", Main.pref.getUserDataDirectory() + sep + "styles"
-					+ sep + "indoor.mapcss");			
-			styleMapsNew.add(indoorMapPaint);
-			Main.pref.putListOfStructs
-			("mappaint.style.entries", styleMapsNew);
-			
-			updateSettings();
-		}else{
-			//set the validator inactive
-		
-			
-			List<Map<String, String>> validatorMapsNew = new ArrayList<>();
-			if(!validatorMaps.isEmpty()){
-				validatorMapsNew.addAll(validatorMaps);
-			}
-			
-			for(Map<String, String> map : validatorMapsNew){
-				if(map.containsValue("Indoor")){
-					validatorMapsNew.remove(map);
-					break;
-				}
-			}
-			Map<String, String> indoorValidator = new HashMap<>();
-			indoorValidator.put("title", "Indoor");
-			indoorValidator.put("active", "false");
-			indoorValidator.put("url", Main.pref.getUserDataDirectory()+ sep +"validator" + 
-					sep + "indoorhelper.validator.mapcss");
-
-			validatorMapsNew.add(indoorValidator);
-			Main.pref.putListOfStructs
-			("validator.org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.entries", 
-					validatorMapsNew);
-		
-			
-			//set mappaint inactive
-		
-			
-			List<Map<String, String>> styleMapsNew = new ArrayList<>();
-			if(!styleMaps.isEmpty()){
-				styleMapsNew.addAll(styleMaps);
-			}
-			for(Map<String, String> map : styleMapsNew){
-				if(map.containsValue("Indoor")){
-					styleMapsNew.remove(map);
-					break;
-				}
-			}
-			Map<String, String> indoorMapPaint = new HashMap<>();
-			indoorMapPaint.put("title", "Indoor");
-			indoorMapPaint.put("active", "false");
-			indoorMapPaint.put("url", Main.pref.getUserDataDirectory() + sep + "styles"
-					+ sep + "indoor.mapcss");			
-			styleMapsNew.add(indoorMapPaint);
-			Main.pref.putListOfStructs
-			("mappaint.style.entries", styleMapsNew);
-			
-			updateSettings();
-		}
-	}
-	
-	/**
-	 * Forces JOSM to load the validator and mappaint settings.
-	 */
-	private void updateSettings(){
-		Main.pref.init(false);
-		MapCSSTagChecker tagChecker = OsmValidator.getTest(MapCSSTagChecker.class);
+    private IndoorHelperModel model;
+    private ToolBoxView toolboxView;
+    private FittingView fittingView;
+    private LevelSelectorView selectorView;
+    private String sep = System.getProperty("file.separator");
+
+
+    private int lastLevelIndex;
+
+    /**
+     * Constructor for the {@link IndoorHelperController} which initiates model and views.
+     *
+     */
+    public IndoorHelperController() {
+        this.model = new IndoorHelperModel();
+        this.toolboxView = new ToolBoxView();
+
+        this.lastLevelIndex = 0;
+
+        addToolboxListeners();
+        Main.map.addToggleDialog(toolboxView);
+    }
+
+    /**
+     * Adds the button- and box-listeners to the {@link ToolBoxView}.
+     */
+    private void addToolboxListeners() {
+
+        if (this.toolboxView != null) {
+            this.toolboxView.setPowerButtonListener(new ToolPowerButtonListener());
+            this.toolboxView.setApplyButtonListener(new ToolApplyButtonListener());
+            this.toolboxView.setLevelItemListener(new ToolLevelItemListener());
+            this.toolboxView.setObjectItemListener(new ToolObjectItemListener());
+            this.toolboxView.setPreset1Listener(new Preset1Listener());
+            this.toolboxView.setPreset2Listener(new Preset2Listener());
+            this.toolboxView.setPreset3Listener(new Preset3Listener());
+            this.toolboxView.setPreset4Listener(new Preset4Listener());
+        }
+    }
+
+    /**
+     * Adds the button-listeners to the {@link LevelSelectorView}.
+     */
+    private void addLevelSelectorListeners() {
+        if (this.selectorView != null) {
+            this.selectorView.setOkButtonListener(new LevelOkButtonListener());
+            this.selectorView.setCancelButtonListener(new LevelCancelButtonListener());
+        }
+    }
+
+    /**
+     * Adds the button-listeners to the {@link FittingView}.
+     */
+    private void addFittingListeners() {
+        if (this.fittingView != null) {
+            this.fittingView.setOkButtonListener(new FittingOkButtonListener());
+        }
+    }
+
+    //********************************************************************
+    //*********************   TOOLBOX LISTENERS   ************************
+    //********************************************************************
+
+    /**
+     * The listener which handles the power button.
+     *
+     * @author egru
+     *
+     */
+    class ToolPowerButtonListener implements ActionListener {
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            if (toolboxView.getPowerButtonState()) {
+                selectorView = new LevelSelectorView();
+                addLevelSelectorListeners();
+                selectorView.setVisible(true);
+                setPluginPreferences(true);
+            } else if (!toolboxView.getPowerButtonState()) {
+                model = new IndoorHelperModel();
+                selectorView.dispose();
+                toolboxView.reset();
+                setPluginPreferences(false);
+
+                // Delete the indoor filters
+                FilterDialog filterDialog = Main.map.getToggleDialog(FilterDialog.class);
+
+                if (filterDialog != null) {
+                    FilterTableModel filterTableModel = filterDialog.getFilterModel();
+
+                    for (int i = filterTableModel.getRowCount()-1; i > -1; i--) {
+                        if (filterTableModel.getFilter(i).text.startsWith("\"indoor:level\"=\"")) {
+                            filterTableModel.removeFilter(i);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * The listener which provides the handling of the apply button.
+     * Gets the texts which were written by the user and writes them to the OSM-data.
+     * After that it checks the tagged data  with the built-in validator file.
+     *
+     * @author egru
+     */
+    class ToolApplyButtonListener implements ActionListener {
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            IndoorObject indoorObject = toolboxView.getSelectedObject();
+            if (toolboxView.getNameText().isEmpty() && toolboxView.getRefText().isEmpty() && toolboxView.getLevelName().isEmpty()) {
+                model.addTagsToOSM(indoorObject);
+            } else {
+                List<Tag> tags = new ArrayList<>();
+                if (!toolboxView.getLevelName().isEmpty()) {
+                    model.getLevelList().get(toolboxView.getSelectedLevelIndex()).setNameTag(toolboxView.getLevelName());
+                }
+                if (!toolboxView.getNameText().isEmpty()) {
+                    tags.add(new Tag("name", toolboxView.getNameText()));
+                }
+                if (!toolboxView.getRefText().isEmpty()) {
+                    tags.add(new Tag("ref", toolboxView.getRefText()));
+                }
+                model.addTagsToOSM(indoorObject, tags);
+            }
+            //Do the validation process
+            ValidateAction validateAction = new ValidateAction();
+            validateAction.doValidate(true);
+
+            refreshPresets();
+        }
+    }
+
+    /**
+     * <pre>The listener which is called when a new item in the level list is selected.
+     *It also sets the name-tag for a level, if the user has done an input in the textbox.
+     * </pre>
+     * @author egru
+     *
+     */
+    class ToolLevelItemListener implements ItemListener {
+
+        @Override
+        public void itemStateChanged(ItemEvent e) {
+            if (!toolboxView.levelListIsEmpty()) {
+
+                if (!toolboxView.getLevelName().isEmpty()) {
+                    model.getLevelList().get(lastLevelIndex).setNameTag(toolboxView.getLevelName());
+                }
+
+                if (!model.getLevelList().get(toolboxView.getSelectedLevelIndex()).hasEmptyName()) {
+                    toolboxView.setLevelName(model.getLevelList().get(toolboxView.getSelectedLevelIndex()).getName());
+                } else {
+                    toolboxView.setLevelName("");
+                }
+                model.setWorkingLevel(toolboxView.getSelectedLevelIndex());
+
+                lastLevelIndex = toolboxView.getSelectedLevelIndex();
+            }
+        }
+    }
+
+
+
+    /**
+     * The listener which is called when a new item in the object list is selected.
+     *
+     * @author egru
+     *
+     */
+    class ToolObjectItemListener implements ItemListener {
+
+        @Override
+        public void itemStateChanged(ItemEvent e) {
+            if (toolboxView.getSelectedObject().equals(IndoorObject.ROOM)) {
+                toolboxView.setTagUiElementsEnabled(true);
+            } else {
+                toolboxView.setTagUiElementsEnabled(false);
+            }
+        }
+    }
+
+    /**
+     * Listener for preset button 1.
+     * @author egru
+     *
+     */
+    class Preset1Listener implements ActionListener {
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            model.addTagsToOSM(toolboxView.getPreset1());
+
+        }
+    }
+
+    /**
+     * Listener for preset button 2.
+     * @author egru
+     *
+     */
+    class Preset2Listener implements ActionListener {
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            model.addTagsToOSM(toolboxView.getPreset2());
+
+        }
+
+    }
+
+    /**
+     * Listener for preset button 3.
+     * @author egru
+     *
+     */
+    class Preset3Listener implements ActionListener {
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            model.addTagsToOSM(toolboxView.getPreset3());
+
+        }
+
+    }
+
+    /**
+     * Listener for preset button 4.
+     * @author egru
+     *
+     */
+    class Preset4Listener implements ActionListener {
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            model.addTagsToOSM(toolboxView.getPreset4());
+
+        }
+
+    }
+
+    /**
+     * Updates the preset button from the current ranking.
+     */
+    private void refreshPresets() {
+        toolboxView.setPresetButtons(model.getPresetRanking());
+    }
+
+
+    //*******************
+    // SELECTOR LISTENERS
+    //*******************
+
+    /**
+     * <pre>
+     * The listener which handles the click on the OK-button of the {@link LevelSelectorView}.
+     * It sends the data of the view to the model and displays an error message,
+     * if the level-list couldn't be created.
+     * </pre>
+     * @author egru
+     *
+     */
+    class LevelOkButtonListener implements ActionListener {
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            boolean levelSuccess = model.setBuildingLevels(selectorView.getMin(), selectorView.getMax());
+
+            if (levelSuccess) {
+                toolboxView.setLevelList(model.getLevelList());                //set the levels to the ComboBox and
+                model.setWorkingLevel(toolboxView.getSelectedLevelIndex());        //sets the working level in the model
+
+                selectorView.dispose();
+
+                fittingView = new FittingView();
+                addFittingListeners();
+                fittingView.setVisible(true);
+            } else {
+
+                JOptionPane.showMessageDialog(null, "Lowest Level has to be lower than the highest level",
+                        "Error", JOptionPane.ERROR_MESSAGE);
+            }
+        }
+    }
+
+    /**
+     * Closes the level selection view if the user hits the cancel button.
+     *
+     * @author egru
+     *
+     */
+    class LevelCancelButtonListener implements ActionListener {
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            selectorView.dispose();
+            toolboxView.setPowerButtonDisabled();
+            setPluginPreferences(false);
+        }
+
+    }
+
+
+
+    //*******************
+    // FITTING LISTENERS
+    //*******************
+    /**
+     * Closes the {@link FittingView} if the OK-Button is clicked.
+     * Enables the UI elements of the toolbox
+     *
+     * @author egru
+     *
+     */
+    class FittingOkButtonListener implements ActionListener {
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            fittingView.dispose();
+            toolboxView.setAllUiElementsEnabled(true);
+            toolboxView.setTagUiElementsEnabled(false);
+        }
+
+    }
+
+    /*
+    HELPER METHODS
+    */
+
+    /**
+     * Enables or disables the preferences for the mapcss-style and the validator.
+     *
+     * @param enabled Activates or disables the settings.
+     */
+    private void setPluginPreferences(boolean enabled) {
+        Map<String, Setting<?>> settings = Main.pref.getAllSettings();
+
+        MapListSetting validatorMapListSetting = (MapListSetting) settings.
+                get("validator.org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.entries");
+        List<Map<String, String>> validatorMaps = new ArrayList<>();
+        if (validatorMapListSetting != null) {
+            validatorMaps = validatorMapListSetting.getValue();
+        }
+
+        MapListSetting styleMapListSetting = (MapListSetting) settings.
+                get("mappaint.style.entries");
+        List<Map<String, String>> styleMaps = new ArrayList<>();
+        if (styleMapListSetting != null) {
+            styleMaps = styleMapListSetting.getValue();
+        }
+
+        if (enabled) {
+            //set the validator active
+
+            List<Map<String, String>> validatorMapsNew = new ArrayList<>();
+            if (!validatorMaps.isEmpty()) {
+                validatorMapsNew.addAll(validatorMaps);
+            }
+
+            for (Map<String, String> map : validatorMapsNew) {
+                if (map.containsValue("Indoor")) {
+                    validatorMapsNew.remove(map);
+                    break;
+                }
+            }
+
+            Map<String, String> indoorValidator = new HashMap<>();
+            indoorValidator.put("title", "Indoor");
+            indoorValidator.put("active", "true");
+            indoorValidator.put("url", Main.pref.getUserDataDirectory()+ sep +"validator" +
+                    sep + "indoorhelper.validator.mapcss");
+
+            validatorMapsNew.add(indoorValidator);
+            Main.pref.putListOfStructs("validator.org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.entries",
+                    validatorMapsNew);
+
+            //set mappaint active
+
+            List<Map<String, String>> styleMapsNew = new ArrayList<>();
+            if (!styleMaps.isEmpty()) {
+                styleMapsNew.addAll(styleMaps);
+            }
+
+            for (Map<String, String> map : styleMapsNew) {
+                if (map.containsValue("Indoor")) {
+                    styleMapsNew.remove(map);
+                    break;
+                }
+            }
+            Map<String, String> indoorMapPaint = new HashMap<>();
+            indoorMapPaint.put("title", "Indoor");
+            indoorMapPaint.put("active", "true");
+            indoorMapPaint.put("url", Main.pref.getUserDataDirectory() + sep + "styles"
+                    + sep + "indoor.mapcss");
+            styleMapsNew.add(indoorMapPaint);
+            Main.pref.putListOfStructs("mappaint.style.entries", styleMapsNew);
+
+            updateSettings();
+        } else {
+            //set the validator inactive
+
+
+            List<Map<String, String>> validatorMapsNew = new ArrayList<>();
+            if (!validatorMaps.isEmpty()) {
+                validatorMapsNew.addAll(validatorMaps);
+            }
+
+            for (Map<String, String> map : validatorMapsNew) {
+                if (map.containsValue("Indoor")) {
+                    validatorMapsNew.remove(map);
+                    break;
+                }
+            }
+            Map<String, String> indoorValidator = new HashMap<>();
+            indoorValidator.put("title", "Indoor");
+            indoorValidator.put("active", "false");
+            indoorValidator.put("url", Main.pref.getUserDataDirectory()+ sep +"validator" +
+                    sep + "indoorhelper.validator.mapcss");
+
+            validatorMapsNew.add(indoorValidator);
+            Main.pref.putListOfStructs("validator.org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.entries",
+                    validatorMapsNew);
+
+
+            //set mappaint inactive
+
+
+            List<Map<String, String>> styleMapsNew = new ArrayList<>();
+            if (!styleMaps.isEmpty()) {
+                styleMapsNew.addAll(styleMaps);
+            }
+            for (Map<String, String> map : styleMapsNew) {
+                if (map.containsValue("Indoor")) {
+                    styleMapsNew.remove(map);
+                    break;
+                }
+            }
+            Map<String, String> indoorMapPaint = new HashMap<>();
+            indoorMapPaint.put("title", "Indoor");
+            indoorMapPaint.put("active", "false");
+            indoorMapPaint.put("url", Main.pref.getUserDataDirectory() + sep + "styles"
+                    + sep + "indoor.mapcss");
+            styleMapsNew.add(indoorMapPaint);
+            Main.pref.putListOfStructs("mappaint.style.entries", styleMapsNew);
+
+            updateSettings();
+        }
+    }
+
+    /**
+     * Forces JOSM to load the validator and mappaint settings.
+     */
+    private void updateSettings() {
+        Main.pref.init(false);
+        MapCSSTagChecker tagChecker = OsmValidator.getTest(MapCSSTagChecker.class);
             if (tagChecker != null) {
                 OsmValidator.initializeTests(Collections.singleton(tagChecker));
             }
-            
+
             MapPaintStyles.readFromPreferences();
-	}
+    }
 }
 
Index: /applications/editors/josm/plugins/indoorhelper/src/model/IndoorHelperModel.java
===================================================================
--- /applications/editors/josm/plugins/indoorhelper/src/model/IndoorHelperModel.java	(revision 32636)
+++ /applications/editors/josm/plugins/indoorhelper/src/model/IndoorHelperModel.java	(revision 32637)
@@ -21,4 +21,5 @@
 import java.util.ArrayList;
 import java.util.List;
+
 import javax.swing.JOptionPane;
 
@@ -36,283 +37,280 @@
  * Class for the data model which includes indoor data and
  * the functions to handle the plug-in
- * 
+ *
  * @author egru
  */
-public class IndoorHelperModel{
-
-	private java.util.List<IndoorLevel> levelList;
-	private int workingLevel;
-	private int workingIndex;
-	private TagCatalog tags;
-	private PresetCounter counter;
-	
-	/**
-	 * Constructor for the {@link IndoorHelperModel} which sets the current
-	 * workingLevel to 0 and creates the {@link TagCatalog}.
-	 */
-	public IndoorHelperModel() {
-		this.workingLevel = 0;
-		this.levelList = new ArrayList<>();
-		this.tags = new TagCatalog();
-		this.counter = new PresetCounter();
-	}	
-	
-	/**
-	 * Method to create a list of levels for the current building.
-	 * It also creates the filters which are needed to execute the indoor mapping.
-	 * minLevel should be lower than maxLevel or the same.
-	 * 
-	 * @param minLevel the lowest level of the building
-	 * @param maxLevel the highest level of the building
-	 * @return boolean which indicates if the creation of the levelList was successful
-	 */
-	public boolean setBuildingLevels(int minLevel, int maxLevel){
-		
-		if(minLevel < maxLevel){
-			
-			for(int i=minLevel; i<=maxLevel;i++){
-				
-				IndoorLevel level = new IndoorLevel(i);
-				levelList.add(level);
-				
-				// Get the filter dialog
-				FilterDialog filterDialog = Main.map.getToggleDialog(FilterDialog.class);
-				
-				if(filterDialog!=null){
-					// Create a new filter
-					//Filter filter = new Filter("\"indoor:level\"=\""+i+"\"", SearchMode.add, false, false, false);
-					FilterPreferenceEntry entry = new FilterPreferenceEntry();
-					entry.case_sensitive = false;
-					entry.enable = false;
-					entry.hiding = false;
-					entry.inverted = false;
-					entry.mapCSS_search = false;
-					entry.mode = "add";
-					entry.text = "\"indoor:level\"=\""+i+"\"";
-					Filter filter = new Filter(entry);
-					
-					FilterTableModel filterTableModel = filterDialog.getFilterModel();
-					
-					boolean exists = false;
-					
-					// Search if the filter exists already.
-					for(Filter listFilter : filterTableModel.getFilters()){
-						if(listFilter.equals(filter)){
-							exists = true;
-						}
-					}
-					
-					// Only add the filter if it is not already in the filter dialog.
-					if(exists==false){
-						filterTableModel.addFilter(filter);
-					}
-					
-				}else{
-					//Show error message if filter dialog is null.
-					JOptionPane.showMessageDialog(null, "Filter Dialog is null.", "Error", JOptionPane.ERROR_MESSAGE);
-				}
-			}
-			
-			return true;
-			
-		} else if(minLevel==maxLevel){
-			
-			IndoorLevel level = new IndoorLevel(minLevel);
-			levelList.add(level);
-			
-			// Get the filter dialog
-			FilterDialog filterDialog = Main.map.getToggleDialog(FilterDialog.class);
-			
-			if(filterDialog!=null){
-				// Create a new filter
-				//Filter filter = new Filter("\"indoor:level\"=\""+minLevel+"\"", SearchMode.add, false, false, false);
-				
-				FilterPreferenceEntry entry = new FilterPreferenceEntry();
-				entry.case_sensitive = false;
-				entry.enable = false;
-				entry.hiding = false;
-				entry.inverted = false;
-				entry.mapCSS_search = false;
-				entry.mode = "add";
-				entry.text = "\"indoor:level\"=\""+minLevel+"\"";
-				Filter filter = new Filter(entry);
-				
-				FilterTableModel filterTableModel = filterDialog.getFilterModel();
-				
-				boolean exists = false;
-				
-				// Search if the filter exists already.
-				for(Filter listFilter : filterTableModel.getFilters()){
-					if(listFilter.equals(filter)){
-						exists = true;
-					}
-				}
-				
-				// Only add the filter if it is not already in the filter dialog.
-				if(exists==false){
-					filterTableModel.addFilter(filter);
-				}
-			}else{
-				JOptionPane.showMessageDialog(null, "Filter Dialog is null.", "Error", JOptionPane.ERROR_MESSAGE);
-			}
-			
-			
-			return true;
-			
-		}
-		
-		return false;
-		
-	}
-	
-	/**
-	 * Getter for the levelList of the model.
-	 * 
-	 * @return the levelList, or null if no levelList was created yet
-	 */
-	public java.util.List<IndoorLevel> getLevelList(){
-		return this.levelList;
-	}
-	
-	/**
-	 * Function to set the level the user wants to work on (with the level index) and activates the corresponding filter.
-	 * 
-	 * @param index the index of the level the user wants to work on
-	 */
-	public void setWorkingLevel(int index){
-		this.workingIndex = index;
-		this.workingLevel = this.getLevelNumberFromIndex(index);
-		
-		FilterDialog filterDialog = Main.map.getToggleDialog(FilterDialog.class);
-		FilterTableModel filterTableModel = filterDialog.getFilterModel();
-		
-	
-		for(Filter filter : filterTableModel.getFilters()){
-			// disable the filter for the current level
-			if(filter.text.equals("\"indoor:level\"=\""+workingLevel+"\"")){
-				filterTableModel.setValueAt(false, filterTableModel.getFilters().indexOf(filter), FilterTableModel.COL_ENABLED);
-				filterTableModel.setValueAt(false, filterTableModel.getFilters().indexOf(filter), FilterTableModel.COL_HIDING);
-			} else if(filter.text.startsWith("\"indoor:level\"=\"")){
-				filterTableModel.setValueAt(true, filterTableModel.getFilters().indexOf(filter), FilterTableModel.COL_ENABLED);
-				filterTableModel.setValueAt(true, filterTableModel.getFilters().indexOf(filter), FilterTableModel.COL_HIDING);
-			}
-		}
-	}
-	
-	/**
-	 * Function to get the current working level of the plug-in
-	 * 
-	 * @return {@link Integer} which represents the current working level
-	 */
-	public int getWorkingLevel(){
-		return this.workingLevel;
-	}
-	
-	/**
-	 * Method to get the index of the current working level of the plug-in.
-	 * 
-	 * @return {@link Integer} which represents the index
-	 */
-	public int getWorkingIndex(){
-		return this.workingIndex;
-	}
-	
-	/**
-	 * Returns the level number which is corresponding to a specific index.
-	 * 
-	 * @param index index of the level
-	 * @return a level number as an {@link Integer}
-	 */
-	public int getLevelNumberFromIndex(int index){
-		return levelList.get(index).getLevelNumber();
-	}
-	
-	/**
-	 * Function to set the nameTag of a specific level.
-	 * 
-	 * @param levelNumber number of the level
-	 * @param levelName tag which the user wants to set
-	 * @return boolean which indicates if the level was found in the levelList
-	 */
-	public void setLevelName(int levelIndex, String levelName){
-		if((levelName.length()>0) && (levelName != null)){
-			levelList.get(levelIndex).setNameTag(levelName);
-		}
-	}
-	
-	/**
-	 * Function to get a tag-set out of the {@link TagCatalog}.
-	 * 
-	 * @param object the {@link IndoorObject} from which you want to get the tag-set
-	 * @return a {@link List} of {@link Tag}s
-	 */
-	public List<Tag> getObjectTags(TagCatalog.IndoorObject object){
-		return this.tags.getTags(object);
-	}
-	
-	
-	/**
-	 * Method which adds the selected tag-set to the currently selected OSM data.
-	 * It also adds the level tag corresponding to the current working level.
-	 * 
-	 * @param object the object which defines the tag-set you want to add
-	 * @param userTags the tags which are given by the user input
-	 */
-	public void addTagsToOSM(IndoorObject object, List<Tag> userTags){
-		if(!Main.getLayerManager().getEditDataSet().selectionEmpty() && !Main.main.getInProgressSelection().isEmpty()){
-			
-			List<Tag> tags = this.getObjectTags(object);
-			tags.addAll(userTags);
-			tags.add(new Tag("indoor:level", Integer.toString(workingLevel)));
-			
-			if(!this.getLevelList().get(workingIndex).hasEmptyName()){
-				tags.add(this.getLevelList().get(workingIndex).getNameTag());
-			}
-			
-			// Increment the counter for the presets
-			this.counter.count(object);
-			
-			//Add the tags to the current selection
-			for(Tag t : tags){
-				Main.main.undoRedo.add(new ChangePropertyCommand(Main.main.getInProgressSelection(), t.getKey(), t.getValue()));
-			}
-			
-		} else if(Main.getLayerManager().getEditDataSet().selectionEmpty()){
-			
-			JOptionPane.showMessageDialog(null, "No data selected.", "Error", JOptionPane.ERROR_MESSAGE);
-		}
-	}
-	
-	/**
+public class IndoorHelperModel {
+
+    private java.util.List<IndoorLevel> levelList;
+    private int workingLevel;
+    private int workingIndex;
+    private TagCatalog tags;
+    private PresetCounter counter;
+
+    /**
+     * Constructor for the {@link IndoorHelperModel} which sets the current
+     * workingLevel to 0 and creates the {@link TagCatalog}.
+     */
+    public IndoorHelperModel() {
+        this.workingLevel = 0;
+        this.levelList = new ArrayList<>();
+        this.tags = new TagCatalog();
+        this.counter = new PresetCounter();
+    }
+
+    /**
+     * Method to create a list of levels for the current building.
+     * It also creates the filters which are needed to execute the indoor mapping.
+     * minLevel should be lower than maxLevel or the same.
+     *
+     * @param minLevel the lowest level of the building
+     * @param maxLevel the highest level of the building
+     * @return boolean which indicates if the creation of the levelList was successful
+     */
+    public boolean setBuildingLevels(int minLevel, int maxLevel) {
+
+        if (minLevel < maxLevel) {
+
+            for (int i = minLevel; i <= maxLevel; i++) {
+
+                IndoorLevel level = new IndoorLevel(i);
+                levelList.add(level);
+
+                // Get the filter dialog
+                FilterDialog filterDialog = Main.map.getToggleDialog(FilterDialog.class);
+
+                if (filterDialog != null) {
+                    // Create a new filter
+                    //Filter filter = new Filter("\"indoor:level\"=\""+i+"\"", SearchMode.add, false, false, false);
+                    FilterPreferenceEntry entry = new FilterPreferenceEntry();
+                    entry.case_sensitive = false;
+                    entry.enable = false;
+                    entry.hiding = false;
+                    entry.inverted = false;
+                    entry.mapCSS_search = false;
+                    entry.mode = "add";
+                    entry.text = "\"indoor:level\"=\""+i+"\"";
+                    Filter filter = new Filter(entry);
+
+                    FilterTableModel filterTableModel = filterDialog.getFilterModel();
+
+                    boolean exists = false;
+
+                    // Search if the filter exists already.
+                    for (Filter listFilter : filterTableModel.getFilters()) {
+                        if (listFilter.equals(filter)) {
+                            exists = true;
+                        }
+                    }
+
+                    // Only add the filter if it is not already in the filter dialog.
+                    if (exists == false) {
+                        filterTableModel.addFilter(filter);
+                    }
+
+                } else {
+                    //Show error message if filter dialog is null.
+                    JOptionPane.showMessageDialog(null, "Filter Dialog is null.", "Error", JOptionPane.ERROR_MESSAGE);
+                }
+            }
+
+            return true;
+
+        } else if (minLevel == maxLevel) {
+
+            IndoorLevel level = new IndoorLevel(minLevel);
+            levelList.add(level);
+
+            // Get the filter dialog
+            FilterDialog filterDialog = Main.map.getToggleDialog(FilterDialog.class);
+
+            if (filterDialog != null) {
+                // Create a new filter
+                //Filter filter = new Filter("\"indoor:level\"=\""+minLevel+"\"", SearchMode.add, false, false, false);
+
+                FilterPreferenceEntry entry = new FilterPreferenceEntry();
+                entry.case_sensitive = false;
+                entry.enable = false;
+                entry.hiding = false;
+                entry.inverted = false;
+                entry.mapCSS_search = false;
+                entry.mode = "add";
+                entry.text = "\"indoor:level\"=\""+minLevel+"\"";
+                Filter filter = new Filter(entry);
+
+                FilterTableModel filterTableModel = filterDialog.getFilterModel();
+
+                boolean exists = false;
+
+                // Search if the filter exists already.
+                for (Filter listFilter : filterTableModel.getFilters()) {
+                    if (listFilter.equals(filter)) {
+                        exists = true;
+                    }
+                }
+
+                // Only add the filter if it is not already in the filter dialog.
+                if (exists == false) {
+                    filterTableModel.addFilter(filter);
+                }
+            } else {
+                JOptionPane.showMessageDialog(null, "Filter Dialog is null.", "Error", JOptionPane.ERROR_MESSAGE);
+            }
+
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Getter for the levelList of the model.
+     *
+     * @return the levelList, or null if no levelList was created yet
+     */
+    public java.util.List<IndoorLevel> getLevelList() {
+        return this.levelList;
+    }
+
+    /**
+     * Function to set the level the user wants to work on (with the level index) and activates the corresponding filter.
+     *
+     * @param index the index of the level the user wants to work on
+     */
+    public void setWorkingLevel(int index) {
+        this.workingIndex = index;
+        this.workingLevel = this.getLevelNumberFromIndex(index);
+
+        FilterDialog filterDialog = Main.map.getToggleDialog(FilterDialog.class);
+        FilterTableModel filterTableModel = filterDialog.getFilterModel();
+
+
+        for (Filter filter : filterTableModel.getFilters()) {
+            // disable the filter for the current level
+            if (filter.text.equals("\"indoor:level\"=\""+workingLevel+"\"")) {
+                filterTableModel.setValueAt(false, filterTableModel.getFilters().indexOf(filter), FilterTableModel.COL_ENABLED);
+                filterTableModel.setValueAt(false, filterTableModel.getFilters().indexOf(filter), FilterTableModel.COL_HIDING);
+            } else if (filter.text.startsWith("\"indoor:level\"=\"")) {
+                filterTableModel.setValueAt(true, filterTableModel.getFilters().indexOf(filter), FilterTableModel.COL_ENABLED);
+                filterTableModel.setValueAt(true, filterTableModel.getFilters().indexOf(filter), FilterTableModel.COL_HIDING);
+            }
+        }
+    }
+
+    /**
+     * Function to get the current working level of the plug-in
+     *
+     * @return {@link Integer} which represents the current working level
+     */
+    public int getWorkingLevel() {
+        return this.workingLevel;
+    }
+
+    /**
+     * Method to get the index of the current working level of the plug-in.
+     *
+     * @return {@link Integer} which represents the index
+     */
+    public int getWorkingIndex() {
+        return this.workingIndex;
+    }
+
+    /**
+     * Returns the level number which is corresponding to a specific index.
+     *
+     * @param index index of the level
+     * @return a level number as an {@link Integer}
+     */
+    public int getLevelNumberFromIndex(int index) {
+        return levelList.get(index).getLevelNumber();
+    }
+
+    /**
+     * Function to set the nameTag of a specific level.
+     *
+     * @param levelNumber number of the level
+     * @param levelName tag which the user wants to set
+     * @return boolean which indicates if the level was found in the levelList
+     */
+    public void setLevelName(int levelIndex, String levelName) {
+        if ((levelName.length() > 0) && (levelName != null)) {
+            levelList.get(levelIndex).setNameTag(levelName);
+        }
+    }
+
+    /**
+     * Function to get a tag-set out of the {@link TagCatalog}.
+     *
+     * @param object the {@link IndoorObject} from which you want to get the tag-set
+     * @return a {@link List} of {@link Tag}s
+     */
+    public List<Tag> getObjectTags(TagCatalog.IndoorObject object) {
+        return this.tags.getTags(object);
+    }
+
+
+    /**
      * Method which adds the selected tag-set to the currently selected OSM data.
-	 * It also adds the level tag corresponding to the current working level.
-	 * 
-	 * @param object the object which defines the tag-set you want to add
-	 */
-	public void addTagsToOSM(IndoorObject object){
-		
-		if(!Main.getLayerManager().getEditDataSet().selectionEmpty() && !Main.main.getInProgressSelection().isEmpty()){
-			List<Tag> tags = this.getObjectTags(object);
-			tags.add(new Tag("indoor:level", Integer.toString(workingLevel)));
-			
-			// Increment the counter for the presets
-			this.counter.count(object);
-			
-			//Add the tags to the current selection
-			for(Tag t : tags){
-				Main.main.undoRedo.add(new ChangePropertyCommand(Main.main.getInProgressSelection(), t.getKey(), t.getValue()));
-			}
-		} else if(Main.getLayerManager().getEditDataSet().selectionEmpty()){
-			JOptionPane.showMessageDialog(null, "No data selected.", "Error", JOptionPane.ERROR_MESSAGE);
-		}
-	}
-	
-	/**
-	 * Returns the current ranking of the preset counter, which includes the 4 most used items.
-	 * 
-	 * @return a list of the 4 most used IndoorObjects
-	 */
-	public List<IndoorObject> getPresetRanking(){
-		return counter.getRanking();
-	}
+     * It also adds the level tag corresponding to the current working level.
+     *
+     * @param object the object which defines the tag-set you want to add
+     * @param userTags the tags which are given by the user input
+     */
+    public void addTagsToOSM(IndoorObject object, List<Tag> userTags) {
+        if (!Main.getLayerManager().getEditDataSet().selectionEmpty() && !Main.main.getInProgressSelection().isEmpty()) {
+
+            List<Tag> tags = this.getObjectTags(object);
+            tags.addAll(userTags);
+            tags.add(new Tag("indoor:level", Integer.toString(workingLevel)));
+
+            if (!this.getLevelList().get(workingIndex).hasEmptyName()) {
+                tags.add(this.getLevelList().get(workingIndex).getNameTag());
+            }
+
+            // Increment the counter for the presets
+            this.counter.count(object);
+
+            //Add the tags to the current selection
+            for (Tag t : tags) {
+                Main.main.undoRedo.add(new ChangePropertyCommand(Main.main.getInProgressSelection(), t.getKey(), t.getValue()));
+            }
+
+        } else if (Main.getLayerManager().getEditDataSet().selectionEmpty()) {
+
+            JOptionPane.showMessageDialog(null, "No data selected.", "Error", JOptionPane.ERROR_MESSAGE);
+        }
+    }
+
+    /**
+     * Method which adds the selected tag-set to the currently selected OSM data.
+     * It also adds the level tag corresponding to the current working level.
+     *
+     * @param object the object which defines the tag-set you want to add
+     */
+    public void addTagsToOSM(IndoorObject object) {
+
+        if (!Main.getLayerManager().getEditDataSet().selectionEmpty() && !Main.main.getInProgressSelection().isEmpty()) {
+            List<Tag> tags = this.getObjectTags(object);
+            tags.add(new Tag("indoor:level", Integer.toString(workingLevel)));
+
+            // Increment the counter for the presets
+            this.counter.count(object);
+
+            //Add the tags to the current selection
+            for (Tag t : tags) {
+                Main.main.undoRedo.add(new ChangePropertyCommand(Main.main.getInProgressSelection(), t.getKey(), t.getValue()));
+            }
+        } else if (Main.getLayerManager().getEditDataSet().selectionEmpty()) {
+            JOptionPane.showMessageDialog(null, "No data selected.", "Error", JOptionPane.ERROR_MESSAGE);
+        }
+    }
+
+    /**
+     * Returns the current ranking of the preset counter, which includes the 4 most used items.
+     *
+     * @return a list of the 4 most used IndoorObjects
+     */
+    public List<IndoorObject> getPresetRanking() {
+        return counter.getRanking();
+    }
 }
Index: /applications/editors/josm/plugins/indoorhelper/src/model/IndoorLevel.java
===================================================================
--- /applications/editors/josm/plugins/indoorhelper/src/model/IndoorLevel.java	(revision 32636)
+++ /applications/editors/josm/plugins/indoorhelper/src/model/IndoorLevel.java	(revision 32637)
@@ -22,7 +22,7 @@
 
 /**
- * 
+ *
  * The class to save a level of the building.
- * 
+ *
  * @author egru
  *
@@ -30,89 +30,88 @@
 
 public class IndoorLevel {
-	
-	private Tag levelNumberTag;
-	private Tag nameTag;
-	
-	/**
-	 * Constructor which adds the level number.
-	 * 
-	 * @param levelNumber number of the level
-	 */
-	public IndoorLevel(int levelNumber) {
-		this.setLevelNumber(levelNumber);
-	}
-	
-	/**
-	 * Constructor which adds level number and name tag.
-	 * 	  
-	 * @param levelNumber number of the level
-	 * @param nameTag optional name tag for the level
-	 */
-	public IndoorLevel(int levelNumber, String nameTag) {
-		this.setLevelNumber(levelNumber);
-		this.setNameTag(nameTag);
-	}
-	
-	/**
-	 * Getter for the level tag
-	 * 
-	 * @return the complete level number tag
-	 */
-	public Tag getLevelNumberTag() {
-		return this.levelNumberTag;
-	}
-	
-	/**
-	 * Function to get the level number
-	 * 
-	 * @return level number as an Integer
-	 */
-	public int getLevelNumber(){
-		return Integer.parseInt(this.levelNumberTag.getValue());
-	}
-	
-	/**
-	 * Setter for the level number
-	 * 
-	 * @param levelNumber number of the level
-	 */
-	public void setLevelNumber(int levelNumber) {
-		this.levelNumberTag = new Tag("indoor:level", Integer.toString(levelNumber));
-	}
-	
-	/**
-	 * Getter for the name tag
-	 * 
-	 * @return the complete name tag
-	 */
-	public Tag getNameTag() {
-		return this.nameTag;
-	}
-	
-	/**
-	 * Function to get the optional name of the level.
-	 * 
-	 * @return String with the optional name.
-	 */
-	public String getName(){
-		return this.nameTag.getValue();
-	}
-	
-	/**
-	 * Setter for the name tag
-	 * 
-	 * @param nameTag String which optionally describes the level
-	 */
-	public void setNameTag(String nameTag) {
-		this.nameTag = new Tag("indoor:level:name", nameTag);
-	}
-	
-	public boolean hasEmptyName(){
-		if(this.nameTag==null){
-			return true;
-		} else {
-			return false;
-		}
-	}
-	
+
+    private Tag levelNumberTag;
+    private Tag nameTag;
+
+    /**
+     * Constructor which adds the level number.
+     *
+     * @param levelNumber number of the level
+     */
+    public IndoorLevel(int levelNumber) {
+        this.setLevelNumber(levelNumber);
+    }
+
+    /**
+     * Constructor which adds level number and name tag.
+     *
+     * @param levelNumber number of the level
+     * @param nameTag optional name tag for the level
+     */
+    public IndoorLevel(int levelNumber, String nameTag) {
+        this.setLevelNumber(levelNumber);
+        this.setNameTag(nameTag);
+    }
+
+    /**
+     * Getter for the level tag
+     *
+     * @return the complete level number tag
+     */
+    public Tag getLevelNumberTag() {
+        return this.levelNumberTag;
+    }
+
+    /**
+     * Function to get the level number
+     *
+     * @return level number as an Integer
+     */
+    public int getLevelNumber() {
+        return Integer.parseInt(this.levelNumberTag.getValue());
+    }
+
+    /**
+     * Setter for the level number
+     *
+     * @param levelNumber number of the level
+     */
+    public void setLevelNumber(int levelNumber) {
+        this.levelNumberTag = new Tag("indoor:level", Integer.toString(levelNumber));
+    }
+
+    /**
+     * Getter for the name tag
+     *
+     * @return the complete name tag
+     */
+    public Tag getNameTag() {
+        return this.nameTag;
+    }
+
+    /**
+     * Function to get the optional name of the level.
+     *
+     * @return String with the optional name.
+     */
+    public String getName() {
+        return this.nameTag.getValue();
+    }
+
+    /**
+     * Setter for the name tag
+     *
+     * @param nameTag String which optionally describes the level
+     */
+    public void setNameTag(String nameTag) {
+        this.nameTag = new Tag("indoor:level:name", nameTag);
+    }
+
+    public boolean hasEmptyName() {
+        if (this.nameTag == null) {
+            return true;
+        } else {
+            return false;
+        }
+    }
 }
Index: /applications/editors/josm/plugins/indoorhelper/src/model/PresetCounter.java
===================================================================
--- /applications/editors/josm/plugins/indoorhelper/src/model/PresetCounter.java	(revision 32636)
+++ /applications/editors/josm/plugins/indoorhelper/src/model/PresetCounter.java	(revision 32637)
@@ -33,104 +33,104 @@
  */
 public class PresetCounter {
-	
-	private List<IndoorObject> rankingList;
-	private List<ObjectCounter> counterList;
-	
-	/**
-	 * Initiates the counterList with the available IndoorObjects.
-	 */
-	
-	public PresetCounter(){
-		this.init();
-	}
-	
-	private void init(){
-		counterList = new ArrayList<>();
-		
-		counterList.add(new ObjectCounter(IndoorObject.CONCRETE_WALL, 0));
-		counterList.add(new ObjectCounter(IndoorObject.DOOR, 0));
-		counterList.add(new ObjectCounter(IndoorObject.ELEVATOR, 0));
-		counterList.add(new ObjectCounter(IndoorObject.ENTRANCE, 0));
-		counterList.add(new ObjectCounter(IndoorObject.GLASS_WALL, 0));
-		counterList.add(new ObjectCounter(IndoorObject.ROOM, 0));
-		counterList.add(new ObjectCounter(IndoorObject.SHELL, 0));
-		counterList.add(new ObjectCounter(IndoorObject.STAIRWAYS, 0));
-		counterList.add(new ObjectCounter(IndoorObject.STEPS, 0));
-		counterList.add(new ObjectCounter(IndoorObject.TOILET_FEMALE, 0));
-		counterList.add(new ObjectCounter(IndoorObject.TOILET_MALE, 0));
-	}
-	
-	/**
-	 * Increments the counter of a specific IndoorObject in the list.
-	 * @param object the IndoorObject, which counter should be incremented
-	 */
-	public void count(IndoorObject object){
-		ListIterator<ObjectCounter> iterator = this.counterList.listIterator();
-		
-		// Go through the list and increment the corresponding objects counter value.
-		while(iterator.hasNext()){
-			ObjectCounter counterTemp = iterator.next();
-			if(counterTemp.getObject().equals(object)){
-					counterList.get(iterator.nextIndex()-1).increment();	
-			}
-		}
-		
-		//Sort the list.
-		this.sort();
-	}
-	
-	private void sort(){
-		Collections.sort(counterList);
-		Collections.reverse(counterList);
-	}
-	
-	public List<IndoorObject> getRanking(){
-		rankingList = new ArrayList<IndoorObject>();
-		
-		rankingList.add(counterList.get(0).getObject());
-		rankingList.add(counterList.get(1).getObject());
-		rankingList.add(counterList.get(2).getObject());
-		rankingList.add(counterList.get(3).getObject());
-		
-		return rankingList;
-	}
-	
-	private class ObjectCounter implements Comparable<ObjectCounter>{
-		private IndoorObject object;
-		private int count;
-		
-		public ObjectCounter(IndoorObject o, int c) {
-			this.object = o;
-			this.count = c;
-		}
-		
-		public int getCount(){
-			return this.count;
-		}
-		
-		public IndoorObject getObject(){
-			return this.object;
-		}
-		
-		public void increment(){
-			this.count += 1;
-		}
-		
-		@Override
-		public int compareTo(ObjectCounter o) {
-			if(this.getCount()<o.getCount()){
-				return -1;
-			}
-			if(this.getCount()==o.getCount()){
-				return 0;
-			}
-			if(this.getCount()>o.getCount()){
-				return 1;
-			}
-			
-			return 0;
-		}
-		
-	}
-	
+    
+    private List<IndoorObject> rankingList;
+    private List<ObjectCounter> counterList;
+    
+    /**
+     * Initiates the counterList with the available IndoorObjects.
+     */
+    
+    public PresetCounter() {
+        this.init();
+    }
+    
+    private void init() {
+        counterList = new ArrayList<>();
+        
+        counterList.add(new ObjectCounter(IndoorObject.CONCRETE_WALL, 0));
+        counterList.add(new ObjectCounter(IndoorObject.DOOR, 0));
+        counterList.add(new ObjectCounter(IndoorObject.ELEVATOR, 0));
+        counterList.add(new ObjectCounter(IndoorObject.ENTRANCE, 0));
+        counterList.add(new ObjectCounter(IndoorObject.GLASS_WALL, 0));
+        counterList.add(new ObjectCounter(IndoorObject.ROOM, 0));
+        counterList.add(new ObjectCounter(IndoorObject.SHELL, 0));
+        counterList.add(new ObjectCounter(IndoorObject.STAIRWAYS, 0));
+        counterList.add(new ObjectCounter(IndoorObject.STEPS, 0));
+        counterList.add(new ObjectCounter(IndoorObject.TOILET_FEMALE, 0));
+        counterList.add(new ObjectCounter(IndoorObject.TOILET_MALE, 0));
+    }
+    
+    /**
+     * Increments the counter of a specific IndoorObject in the list.
+     * @param object the IndoorObject, which counter should be incremented
+     */
+    public void count(IndoorObject object) {
+        ListIterator<ObjectCounter> iterator = this.counterList.listIterator();
+        
+        // Go through the list and increment the corresponding objects counter value.
+        while (iterator.hasNext()) {
+            ObjectCounter counterTemp = iterator.next();
+            if (counterTemp.getObject().equals(object)) {
+                    counterList.get(iterator.nextIndex()-1).increment();    
+            }
+        }
+        
+        //Sort the list.
+        this.sort();
+    }
+    
+    private void sort() {
+        Collections.sort(counterList);
+        Collections.reverse(counterList);
+    }
+    
+    public List<IndoorObject> getRanking() {
+        rankingList = new ArrayList<IndoorObject>();
+        
+        rankingList.add(counterList.get(0).getObject());
+        rankingList.add(counterList.get(1).getObject());
+        rankingList.add(counterList.get(2).getObject());
+        rankingList.add(counterList.get(3).getObject());
+        
+        return rankingList;
+    }
+    
+    private class ObjectCounter implements Comparable<ObjectCounter> {
+        private IndoorObject object;
+        private int count;
+        
+        ObjectCounter(IndoorObject o, int c) {
+            this.object = o;
+            this.count = c;
+        }
+        
+        public int getCount() {
+            return this.count;
+        }
+        
+        public IndoorObject getObject() {
+            return this.object;
+        }
+        
+        public void increment() {
+            this.count += 1;
+        }
+        
+        @Override
+        public int compareTo(ObjectCounter o) {
+            if (this.getCount() < o.getCount()) {
+                return -1;
+            }
+            if (this.getCount() == o.getCount()) {
+                return 0;
+            }
+            if (this.getCount() > o.getCount()) {
+                return 1;
+            }
+            
+            return 0;
+        }
+        
+    }
+    
 }
Index: /applications/editors/josm/plugins/indoorhelper/src/model/TagCatalog.java
===================================================================
--- /applications/editors/josm/plugins/indoorhelper/src/model/TagCatalog.java	(revision 32636)
+++ /applications/editors/josm/plugins/indoorhelper/src/model/TagCatalog.java	(revision 32637)
@@ -32,70 +32,70 @@
 
 public final class TagCatalog {
-	
-	/**
-	 * Function to get a specific tag-set out of the {@link TagCatalog}. 
-	 * 
-	 * @param o the object for which you want the tag-set
-	 * @return a list of tags for the specified object
-	 */	
-	public List<Tag> getTags(IndoorObject o){
-		
-		List<Tag> tagList = new ArrayList<Tag>();
-		
-		switch(o){
-		case CONCRETE_WALL:
-			tagList.add(new Tag("indoor:area", "wall"));
-			tagList.add(new Tag("indoor:wall:material", "concrete"));
-			return tagList;
-		case DOOR:
-			tagList.add(new Tag("indoor:door", "yes"));
-			return tagList;
-		case ELEVATOR:
-			tagList.add(new Tag("indoor:area", "elevator"));
-			return tagList;
-		case ENTRANCE:
-			tagList.add(new Tag("indoor:entrance", "yes"));
-			return tagList;
-		case TOILET_FEMALE:
-			tagList.add(new Tag("indoor:area", "room"));
-			tagList.add(new Tag("amenity", "toilets"));
-			tagList.add(new Tag("female", "yes"));
-			return tagList;
-		case GLASS_WALL:
-			tagList.add(new Tag("indoor:area", "wall"));
-			tagList.add(new Tag("indoor:wall:material", "glass"));
-			return tagList;
-		case TOILET_MALE:
-			tagList.add(new Tag("indoor:area", "room"));
-			tagList.add(new Tag("amenity", "toilets"));
-			tagList.add(new Tag("male", "yes"));
-			return tagList;
-		case ROOM:
-			tagList.add(new Tag("indoor:area", "room"));
-			return tagList;
-		case SHELL:
-			tagList.add(new Tag("indoor:area", "shell"));
-			return tagList;
-		case STAIRWAYS:
-			tagList.add(new Tag("indoor:area", "stairways"));
-			return tagList;
-		case STEPS:
-			tagList.add(new Tag("indoor:highway", "steps"));
-			return tagList;
-		default:
-			tagList = null;
-			return tagList;
-		}
-	}
-	
-	/**
-	 * {@link Enum} class for an easier access of elements in the {@link TagCatalog}
-	 * 
-	 * @author egru
-	 *
-	 */
-	public enum IndoorObject{
-		SHELL, CONCRETE_WALL, GLASS_WALL, ROOM, TOILET_MALE, TOILET_FEMALE, ELEVATOR, STAIRWAYS, STEPS, DOOR, ENTRANCE;
-	}
+    
+    /**
+     * Function to get a specific tag-set out of the {@link TagCatalog}. 
+     * 
+     * @param o the object for which you want the tag-set
+     * @return a list of tags for the specified object
+     */    
+    public List<Tag> getTags(IndoorObject o) {
+        
+        List<Tag> tagList = new ArrayList<Tag>();
+        
+        switch(o) {
+        case CONCRETE_WALL:
+            tagList.add(new Tag("indoor:area", "wall"));
+            tagList.add(new Tag("indoor:wall:material", "concrete"));
+            return tagList;
+        case DOOR:
+            tagList.add(new Tag("indoor:door", "yes"));
+            return tagList;
+        case ELEVATOR:
+            tagList.add(new Tag("indoor:area", "elevator"));
+            return tagList;
+        case ENTRANCE:
+            tagList.add(new Tag("indoor:entrance", "yes"));
+            return tagList;
+        case TOILET_FEMALE:
+            tagList.add(new Tag("indoor:area", "room"));
+            tagList.add(new Tag("amenity", "toilets"));
+            tagList.add(new Tag("female", "yes"));
+            return tagList;
+        case GLASS_WALL:
+            tagList.add(new Tag("indoor:area", "wall"));
+            tagList.add(new Tag("indoor:wall:material", "glass"));
+            return tagList;
+        case TOILET_MALE:
+            tagList.add(new Tag("indoor:area", "room"));
+            tagList.add(new Tag("amenity", "toilets"));
+            tagList.add(new Tag("male", "yes"));
+            return tagList;
+        case ROOM:
+            tagList.add(new Tag("indoor:area", "room"));
+            return tagList;
+        case SHELL:
+            tagList.add(new Tag("indoor:area", "shell"));
+            return tagList;
+        case STAIRWAYS:
+            tagList.add(new Tag("indoor:area", "stairways"));
+            return tagList;
+        case STEPS:
+            tagList.add(new Tag("indoor:highway", "steps"));
+            return tagList;
+        default:
+            tagList = null;
+            return tagList;
+        }
+    }
+    
+    /**
+     * {@link Enum} class for an easier access of elements in the {@link TagCatalog}
+     * 
+     * @author egru
+     *
+     */
+    public enum IndoorObject {
+        SHELL, CONCRETE_WALL, GLASS_WALL, ROOM, TOILET_MALE, TOILET_FEMALE, ELEVATOR, STAIRWAYS, STEPS, DOOR, ENTRANCE;
+    }
 
 }
Index: /applications/editors/josm/plugins/indoorhelper/src/org/openstreetmap/josm/plugins/indoorhelper/IndoorHelperPlugin.java
===================================================================
--- /applications/editors/josm/plugins/indoorhelper/src/org/openstreetmap/josm/plugins/indoorhelper/IndoorHelperPlugin.java	(revision 32636)
+++ /applications/editors/josm/plugins/indoorhelper/src/org/openstreetmap/josm/plugins/indoorhelper/IndoorHelperPlugin.java	(revision 32637)
@@ -37,168 +37,154 @@
  * 
  */
-public class IndoorHelperPlugin extends Plugin{
+public class IndoorHelperPlugin extends Plugin {
 
 
-	@SuppressWarnings("unused")
-	private IndoorHelperController controller;
-	String sep = System.getProperty("file.separator");
+    @SuppressWarnings("unused")
+    private IndoorHelperController controller;
+    String sep = System.getProperty("file.separator");
 
-	/**
-	 * Constructor for the plug-in.
-	 * 
-	 * Exports the needed files and adds them to the settings.
-	 * 
-	 * @param info general information about the plug-in
-	 * @throws Exception 
-	 */
-	public IndoorHelperPlugin(PluginInformation info) throws Exception {
-		super(info);    
+    /**
+     * Constructor for the plug-in.
+     * 
+     * Exports the needed files and adds them to the settings.
+     * 
+     * @param info general information about the plug-in
+     */
+    public IndoorHelperPlugin(PluginInformation info) throws Exception {
+        super(info);    
 
-		this.exportValidator("/data/indoorhelper.validator.mapcss");
-		this.exportStyleFile("indoor.mapcss");
-		this.exportStyleFile("entrance_door_icon.png");
-		this.exportStyleFile("entrance_icon.png");
-//		this.setIndoorValidator();
-		
-	}
+        this.exportValidator("/data/indoorhelper.validator.mapcss");
+        this.exportStyleFile("indoor.mapcss");
+        this.exportStyleFile("entrance_door_icon.png");
+        this.exportStyleFile("entrance_icon.png");
+//        this.setIndoorValidator();
+    }
+
+    /**
+     * Secures that the plug-in is only loaded, if a new MapFrame is created.
+     */
+    @Override
+    public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
+        super.mapFrameInitialized(oldFrame, newFrame);
+
+        if (oldFrame == null && newFrame != null) {
+            controller = new IndoorHelperController();
+        }
+    }
+    
+    /**
+     * Exports the mapcss validator file to the preferences directory.
+     */
+    private void exportValidator(String resourceName) throws Exception {
+        InputStream stream = null;
+        OutputStream resStreamOut = null;
 
 
-	/**
-	 * Secures that the plug-in is only loaded, if a new MapFrame is created.
-	 */
-	@Override
-	public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
-		super.mapFrameInitialized(oldFrame, newFrame);
+        try {
+            stream = IndoorHelperPlugin.class.getResourceAsStream(resourceName);
+            if (stream == null) {
+                System.out.println("Validator: stream is null");
+                throw new Exception("Cannot get resource \"" + resourceName + "\" from Jar file.");
+            }
 
-		if( oldFrame == null && newFrame != null ) {
-			controller = new IndoorHelperController();
-		}
+            String outPath;
+            int readBytes;
+            byte[] buffer = new byte[4096];
 
-	}
+            String valDirPath = Main.pref.getUserDataDirectory() + sep + "validator";
+            File valDir = new File(valDirPath);
+            valDir.mkdirs();
+            outPath = valDir.getAbsolutePath() +sep+ "indoorhelper.validator.mapcss";
+            System.out.println("Validator:"+outPath);
 
-	
-	/**
-	 * Exports the mapcss validator file to the preferences directory.
-	 * 
-	 * @param resourceName
-	 * @throws Exception
-	 */
-	private void exportValidator(String resourceName) throws Exception {
-		InputStream stream = null;
-		OutputStream resStreamOut = null;
+            resStreamOut = new FileOutputStream(outPath);
+            while ((readBytes = stream.read(buffer)) > 0) {
+                resStreamOut.write(buffer, 0, readBytes);
+            }
+            resStreamOut.close();
+        } catch (Exception ex) {
+            throw ex;
+        } finally {
+            stream.close();
+        }   
+    }
 
+    /**
+     * Exports the mapCSS file to the preferences directory.
+     */
+    private void exportStyleFile(String resourceName) throws Exception {
+        InputStream stream = null;
+        OutputStream resStreamOut = null;
 
-		try {
-			stream = IndoorHelperPlugin.class.getResourceAsStream(resourceName);
-			if(stream == null) {
-				System.out.println("Validator: stream is null");
-				throw new Exception("Cannot get resource \"" + resourceName + "\" from Jar file.");
-			}
+        try {
+            stream = IndoorHelperPlugin.class.getResourceAsStream("/data/" + resourceName);
+            if (stream == null) {
+                System.out.println("MapPaint: stream is null");
+                throw new Exception("Cannot get resource \"" + resourceName + "\" from Jar file.");
+            }
 
-			String outPath;
-			int readBytes;
-			byte[] buffer = new byte[4096];
+            String outPath;
+            int readBytes;
+            byte[] buffer = new byte[4096];
 
-			String valDirPath = Main.pref.getUserDataDirectory() + sep + "validator";
-			File valDir = new File(valDirPath);
-			valDir.mkdirs();
-			outPath = valDir.getAbsolutePath() +sep+ "indoorhelper.validator.mapcss";
-			System.out.println("Validator:"+outPath);
+            String valDirPath = Main.pref.getUserDataDirectory() + sep + "styles";
+            File valDir = new File(valDirPath);
+            valDir.mkdirs();
+            outPath = valDir.getAbsolutePath() +sep+ resourceName;
+            System.out.println("MapPaint"+outPath);
 
-			resStreamOut = new FileOutputStream(outPath);
-			while ((readBytes = stream.read(buffer)) > 0) {
-				resStreamOut.write(buffer, 0, readBytes);
-			}
-			resStreamOut.close();
-		} catch (Exception ex) {
-			throw ex;
-		} finally {
-			stream.close();
-		}   
-	}
-
-	/**
-	 * Exports the mapCSS file to the preferences directory.
-	 * 
-	 * @param resourceName
-	 * @throws Exception
-	 */
-	private void exportStyleFile(String resourceName) throws Exception {
-		InputStream stream = null;
-		OutputStream resStreamOut = null;
-
-
-		try {
-			stream = IndoorHelperPlugin.class.getResourceAsStream("/data/" + resourceName);
-			if(stream == null) {
-				System.out.println("MapPaint: stream is null");
-				throw new Exception("Cannot get resource \"" + resourceName + "\" from Jar file.");
-			}
-
-			String outPath;
-			int readBytes;
-			byte[] buffer = new byte[4096];
-
-			String valDirPath = Main.pref.getUserDataDirectory() + sep + "styles";
-			File valDir = new File(valDirPath);
-			valDir.mkdirs();
-			outPath = valDir.getAbsolutePath() +sep+ resourceName;
-			System.out.println("MapPaint"+outPath);
-
-			resStreamOut = new FileOutputStream(outPath);
-			while ((readBytes = stream.read(buffer)) > 0) {
-				resStreamOut.write(buffer, 0, readBytes);
-			}
-			resStreamOut.close();
-		} catch (Exception ex) {
-			throw ex;
-		} finally {
-			stream.close();
-		}   
-	}
-	
-	/**
-	 * Writes the indoor validator file in the user preferences if it isn't there
-	 * and activates it.
-	 */
-//	private void setIndoorValidator(){
-//		//get the current validator settings
-//		Map<String, Setting<?>> settings =  Main.pref.getAllSettings();
-//		MapListSetting mapListSetting = (MapListSetting) settings.
-//				get("validator.org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.entries");
-//		List<Map<String, String>> validatorMaps;
-//		if(mapListSetting!=null){
-//			validatorMaps = mapListSetting.getValue();
-//		} else{
-//			validatorMaps = new ArrayList<>();
-//		}
-//		boolean validatorExists = false;
+            resStreamOut = new FileOutputStream(outPath);
+            while ((readBytes = stream.read(buffer)) > 0) {
+                resStreamOut.write(buffer, 0, readBytes);
+            }
+            resStreamOut.close();
+        } catch (Exception ex) {
+            throw ex;
+        } finally {
+            stream.close();
+        }   
+    }
+    
+    /**
+     * Writes the indoor validator file in the user preferences if it isn't there
+     * and activates it.
+     */
+//    private void setIndoorValidator() {
+//        //get the current validator settings
+//        Map<String, Setting<?>> settings =  Main.pref.getAllSettings();
+//        MapListSetting mapListSetting = (MapListSetting) settings.
+//                get("validator.org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.entries");
+//        List<Map<String, String>> validatorMaps;
+//        if (mapListSetting != null) {
+//            validatorMaps = mapListSetting.getValue();
+//        } else {
+//            validatorMaps = new ArrayList<>();
+//        }
+//        boolean validatorExists = false;
 //
-//		//check if indoor validator is already set
-//		for(Map<String, String> map : validatorMaps){
-//			if(map.containsValue("Indoor")){
-//				validatorExists = true;
-//			}
-//		}
+//        //check if indoor validator is already set
+//        for (Map<String, String> map : validatorMaps) {
+//            if (map.containsValue("Indoor")) {
+//                validatorExists = true;
+//            }
+//        }
 //
-//		//put it in the settings if not
-//		if(!validatorExists){
-//			List<Map<String, String>> validatorMapsNew = new ArrayList<>();
-//			if(!validatorMaps.isEmpty()){
-//				validatorMapsNew.addAll(validatorMaps);
-//			}
-//			Map<String, String> indoorValidator = new HashMap<>();
-//			indoorValidator.put("title", "Indoor");
-//			indoorValidator.put("active", "true");
-//			indoorValidator.put("url", Main.pref.getUserDataDirectory()+ sep +"validator" + 
-//					sep + "indoorhelper.validator.mapcss");
+//        //put it in the settings if not
+//        if (!validatorExists) {
+//            List<Map<String, String>> validatorMapsNew = new ArrayList<>();
+//            if (!validatorMaps.isEmpty()) {
+//                validatorMapsNew.addAll(validatorMaps);
+//            }
+//            Map<String, String> indoorValidator = new HashMap<>();
+//            indoorValidator.put("title", "Indoor");
+//            indoorValidator.put("active", "true");
+//            indoorValidator.put("url", Main.pref.getUserDataDirectory()+ sep +"validator" + 
+//                    sep + "indoorhelper.validator.mapcss");
 //
-//			validatorMapsNew.add(indoorValidator);
-//			Main.pref.putListOfStructs
-//			("validator.org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.entries", 
-//					validatorMapsNew);
-//		}
-//	}
-
-	
+//            validatorMapsNew.add(indoorValidator);
+//            Main.pref.putListOfStructs
+//            ("validator.org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.entries", 
+//                    validatorMapsNew);
+//        }
+//    }
 }
Index: /applications/editors/josm/plugins/indoorhelper/src/views/DialogPanel.java
===================================================================
--- /applications/editors/josm/plugins/indoorhelper/src/views/DialogPanel.java	(revision 32636)
+++ /applications/editors/josm/plugins/indoorhelper/src/views/DialogPanel.java	(revision 32637)
@@ -44,180 +44,182 @@
 @SuppressWarnings("serial")
 public class DialogPanel extends JPanel {
-	private JPanel contentPanel;
-	private JToggleButton powerButton;
-	private JLabel levelLabel;
-	private JosmComboBox<String> levelBox;
-	private JLabel levelTagLabel;
-	private DisableShortcutsOnFocusGainedTextField levelTagField;
-	private JLabel objectLabel;
-	private JosmComboBox<TagCatalog.IndoorObject> objectBox;
-	private JLabel nameLabel;
-	private DisableShortcutsOnFocusGainedTextField nameField;
-	private JLabel refLabel;
-	private DisableShortcutsOnFocusGainedTextField refField;
-	private JPanel buttonBar;
-	private JButton applyButton;
-	private JSeparator separator1;
-	private JSeparator separator2;
-
-	/**
-	 * Create the panel.
-	 */
-	public DialogPanel() {
-		contentPanel = new JPanel();
-		powerButton = new JToggleButton();
-		levelLabel = new JLabel();
-		levelBox = new JosmComboBox<String>();
-		levelTagLabel = new JLabel();
-		levelTagField = new DisableShortcutsOnFocusGainedTextField();
-		objectLabel = new JLabel();
-		objectBox = new JosmComboBox<>();
-		objectBox.setModel(new DefaultComboBoxModel<>(TagCatalog.IndoorObject.values()));
-		nameLabel = new JLabel();
-		nameField = new DisableShortcutsOnFocusGainedTextField();
-		refLabel = new JLabel();
-		refField = new DisableShortcutsOnFocusGainedTextField();
-		buttonBar = new JPanel();
-		applyButton = new JButton();
-		separator1 = new JSeparator();
-		separator2 = new JSeparator();
-
-		//======== this ========
-		//Container contentPane = this.get;
-		//contentPane.setLayout(new BorderLayout());
-
-		//======== dialogPane ========
-		{
-			this.setBorder(new EmptyBorder(12, 12, 12, 12));
-			this.setLayout(new BorderLayout());
-
-			//======== contentPanel ========
-			{
-				contentPanel.setLayout(new GridBagLayout());
-				((GridBagLayout)contentPanel.getLayout()).columnWidths = new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-				((GridBagLayout)contentPanel.getLayout()).rowHeights = new int[] {0, 0, 0, 0, 0, 0, 0, 0};
-				((GridBagLayout)contentPanel.getLayout()).columnWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0E-4};
-				((GridBagLayout)contentPanel.getLayout()).rowWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0E-4};
-
-				//---- powerButton ----
-				powerButton.setText(tr("POWER"));
-				powerButton.setToolTipText(tr("Activates the plug-in"));
-				contentPanel.add(powerButton, new GridBagConstraints(8, 0, 4, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-				contentPanel.add(separator1, new GridBagConstraints(1, 1, 12, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-
-				//---- levelLabel ----
-				levelLabel.setText(tr("Working Level"));
-				contentPanel.add(levelLabel, new GridBagConstraints(1, 2, 2, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-
-				//---- levelBox ----
-				levelBox.setEnabled(false);
-				levelBox.setEditable(false);
-				levelBox.setToolTipText(tr("Selects the working level."));
-				contentPanel.add(levelBox, new GridBagConstraints(3, 2, 3, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-
-				//---- levelTagLabel ----
-				levelTagLabel.setText(tr("Level Name"));
-				contentPanel.add(levelTagLabel, new GridBagConstraints(7, 2, 1, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-
-				//---- levelTagField ----
-				levelTagField.setEnabled(false);
-				levelTagField.setColumns(6);
-				levelTagField.setToolTipText(tr("Optional name-tag for a level."));
-				contentPanel.add(levelTagField, new GridBagConstraints(8, 2, 5, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-				contentPanel.add(separator2, new GridBagConstraints(1, 3, 12, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-
-				//---- objectLabel ----
-				objectLabel.setText(tr("Object"));
-				contentPanel.add(objectLabel, new GridBagConstraints(0, 4, 3, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-
-				//---- objectBox ----
-				objectBox.setEnabled(false);
-				objectBox.setPrototypeDisplayValue(IndoorObject.CONCRETE_WALL);
-				objectBox.setToolTipText(tr("The object preset you want to tag."));
-				contentPanel.add(objectBox, new GridBagConstraints(3, 4, 3, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-
-				//---- nameLabel ----
-				nameLabel.setText(tr("Name"));
-				contentPanel.add(nameLabel, new GridBagConstraints(0, 5, 3, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-
-				//---- nameField ----
-				nameField.setEnabled(false);
-				nameField.addFocusListener(new FocusListener() {
-					
-					@Override
-					public void focusLost(FocusEvent e) {}
-					
-					@Override
-					public void focusGained(FocusEvent e) {
-						nameField.selectAll();						
-					}
-				});
-				nameField.setToolTipText(tr("Sets the name tag when the room-object is selected."));
-				contentPanel.add(nameField, new GridBagConstraints(3, 5, 3, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-
-				//---- refLabel ----
-				refLabel.setText(tr("Reference"));
-				contentPanel.add(refLabel, new GridBagConstraints(0, 6, 3, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 0, 5), 0, 0));
-
-				//---- refField ----
-				refField.setEnabled(false);
-				refField.addFocusListener(new FocusListener() {
-					
-					@Override
-					public void focusLost(FocusEvent e) {}
-					
-					@Override
-					public void focusGained(FocusEvent e) {
-						refField.selectAll();
-					}
-				});
-				refField.setToolTipText(tr("Sets the ref tag when the room-object is selected."));
-				contentPanel.add(refField, new GridBagConstraints(3, 6, 3, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 0, 5), 0, 0));
-			}
-			this.add(contentPanel, BorderLayout.CENTER);
-
-			//======== buttonBar ========
-			{
-				buttonBar.setBorder(new EmptyBorder(12, 0, 0, 0));
-				buttonBar.setLayout(new GridBagLayout());
-				((GridBagLayout)buttonBar.getLayout()).columnWidths = new int[] {0, 80};
-				((GridBagLayout)buttonBar.getLayout()).columnWeights = new double[] {1.0, 0.0};
-
-				//---- applyButton ----
-				applyButton.setText(tr("Apply Tags"));
-				applyButton.setEnabled(false);
-				buttonBar.add(applyButton, new GridBagConstraints(0, 0, 2, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 0, 0), 0, 0));
-			}
-			this.add(buttonBar, BorderLayout.SOUTH);
-		}
-	}
+    private JPanel contentPanel;
+    private JToggleButton powerButton;
+    private JLabel levelLabel;
+    private JosmComboBox<String> levelBox;
+    private JLabel levelTagLabel;
+    private DisableShortcutsOnFocusGainedTextField levelTagField;
+    private JLabel objectLabel;
+    private JosmComboBox<TagCatalog.IndoorObject> objectBox;
+    private JLabel nameLabel;
+    private DisableShortcutsOnFocusGainedTextField nameField;
+    private JLabel refLabel;
+    private DisableShortcutsOnFocusGainedTextField refField;
+    private JPanel buttonBar;
+    private JButton applyButton;
+    private JSeparator separator1;
+    private JSeparator separator2;
+
+    /**
+     * Create the panel.
+     */
+    public DialogPanel() {
+        contentPanel = new JPanel();
+        powerButton = new JToggleButton();
+        levelLabel = new JLabel();
+        levelBox = new JosmComboBox<String>();
+        levelTagLabel = new JLabel();
+        levelTagField = new DisableShortcutsOnFocusGainedTextField();
+        objectLabel = new JLabel();
+        objectBox = new JosmComboBox<>();
+        objectBox.setModel(new DefaultComboBoxModel<>(TagCatalog.IndoorObject.values()));
+        nameLabel = new JLabel();
+        nameField = new DisableShortcutsOnFocusGainedTextField();
+        refLabel = new JLabel();
+        refField = new DisableShortcutsOnFocusGainedTextField();
+        buttonBar = new JPanel();
+        applyButton = new JButton();
+        separator1 = new JSeparator();
+        separator2 = new JSeparator();
+
+        //======== this ========
+        //Container contentPane = this.get;
+        //contentPane.setLayout(new BorderLayout());
+
+        //======== dialogPane ========
+        {
+            this.setBorder(new EmptyBorder(12, 12, 12, 12));
+            this.setLayout(new BorderLayout());
+
+            //======== contentPanel ========
+            {
+                contentPanel.setLayout(new GridBagLayout());
+                ((GridBagLayout) contentPanel.getLayout()).columnWidths = new int[] {
+                        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+                ((GridBagLayout) contentPanel.getLayout()).rowHeights = new int[] {0, 0, 0, 0, 0, 0, 0, 0};
+                ((GridBagLayout) contentPanel.getLayout()).columnWeights = new double[] {
+                        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0E-4};
+                ((GridBagLayout) contentPanel.getLayout()).rowWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0E-4};
+
+                //---- powerButton ----
+                powerButton.setText(tr("POWER"));
+                powerButton.setToolTipText(tr("Activates the plug-in"));
+                contentPanel.add(powerButton, new GridBagConstraints(8, 0, 4, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+                contentPanel.add(separator1, new GridBagConstraints(1, 1, 12, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- levelLabel ----
+                levelLabel.setText(tr("Working Level"));
+                contentPanel.add(levelLabel, new GridBagConstraints(1, 2, 2, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- levelBox ----
+                levelBox.setEnabled(false);
+                levelBox.setEditable(false);
+                levelBox.setToolTipText(tr("Selects the working level."));
+                contentPanel.add(levelBox, new GridBagConstraints(3, 2, 3, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- levelTagLabel ----
+                levelTagLabel.setText(tr("Level Name"));
+                contentPanel.add(levelTagLabel, new GridBagConstraints(7, 2, 1, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- levelTagField ----
+                levelTagField.setEnabled(false);
+                levelTagField.setColumns(6);
+                levelTagField.setToolTipText(tr("Optional name-tag for a level."));
+                contentPanel.add(levelTagField, new GridBagConstraints(8, 2, 5, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+                contentPanel.add(separator2, new GridBagConstraints(1, 3, 12, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- objectLabel ----
+                objectLabel.setText(tr("Object"));
+                contentPanel.add(objectLabel, new GridBagConstraints(0, 4, 3, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- objectBox ----
+                objectBox.setEnabled(false);
+                objectBox.setPrototypeDisplayValue(IndoorObject.CONCRETE_WALL);
+                objectBox.setToolTipText(tr("The object preset you want to tag."));
+                contentPanel.add(objectBox, new GridBagConstraints(3, 4, 3, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- nameLabel ----
+                nameLabel.setText(tr("Name"));
+                contentPanel.add(nameLabel, new GridBagConstraints(0, 5, 3, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- nameField ----
+                nameField.setEnabled(false);
+                nameField.addFocusListener(new FocusListener() {
+
+                    @Override
+                    public void focusLost(FocusEvent e) {}
+
+                    @Override
+                    public void focusGained(FocusEvent e) {
+                        nameField.selectAll();
+                    }
+                });
+                nameField.setToolTipText(tr("Sets the name tag when the room-object is selected."));
+                contentPanel.add(nameField, new GridBagConstraints(3, 5, 3, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- refLabel ----
+                refLabel.setText(tr("Reference"));
+                contentPanel.add(refLabel, new GridBagConstraints(0, 6, 3, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 0, 5), 0, 0));
+
+                //---- refField ----
+                refField.setEnabled(false);
+                refField.addFocusListener(new FocusListener() {
+
+                    @Override
+                    public void focusLost(FocusEvent e) {}
+
+                    @Override
+                    public void focusGained(FocusEvent e) {
+                        refField.selectAll();
+                    }
+                });
+                refField.setToolTipText(tr("Sets the ref tag when the room-object is selected."));
+                contentPanel.add(refField, new GridBagConstraints(3, 6, 3, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 0, 5), 0, 0));
+            }
+            this.add(contentPanel, BorderLayout.CENTER);
+
+            //======== buttonBar ========
+            {
+                buttonBar.setBorder(new EmptyBorder(12, 0, 0, 0));
+                buttonBar.setLayout(new GridBagLayout());
+                ((GridBagLayout) buttonBar.getLayout()).columnWidths = new int[] {0, 80};
+                ((GridBagLayout) buttonBar.getLayout()).columnWeights = new double[] {1.0, 0.0};
+
+                //---- applyButton ----
+                applyButton.setText(tr("Apply Tags"));
+                applyButton.setEnabled(false);
+                buttonBar.add(applyButton, new GridBagConstraints(0, 0, 2, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 0, 0), 0, 0));
+            }
+            this.add(buttonBar, BorderLayout.SOUTH);
+        }
+    }
 
 }
Index: /applications/editors/josm/plugins/indoorhelper/src/views/FittingView.java
===================================================================
--- /applications/editors/josm/plugins/indoorhelper/src/views/FittingView.java	(revision 32636)
+++ /applications/editors/josm/plugins/indoorhelper/src/views/FittingView.java	(revision 32637)
@@ -21,9 +21,17 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.awt.*;
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.FlowLayout;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
 import java.awt.event.ActionListener;
 
-import javax.swing.*;
-import javax.swing.border.*;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.border.EmptyBorder;
 
 
@@ -31,76 +39,76 @@
  * The view for the pop-up hint that tells the user, that he has to start the fitting
  * of his indoor building plans.
- * 
+ *
  * @author egru
  */
 @SuppressWarnings("serial")
 public class FittingView extends JFrame {
-	
-	private JPanel dialogPane;
-	private JPanel contentPanel;
-	private JLabel label1;
-	private JPanel buttonBar;
-	private JButton okButton;
-	
-	public FittingView() {
-		initComponents();
-	}
 
-	private void initComponents() {
-		dialogPane = new JPanel();
-		contentPanel = new JPanel();
-		label1 = new JLabel();
-		buttonBar = new JPanel();
-		okButton = new JButton();
+    private JPanel dialogPane;
+    private JPanel contentPanel;
+    private JLabel label1;
+    private JPanel buttonBar;
+    private JButton okButton;
 
-		//======== this ========
-		setTitle(tr("Fitting"));
-		Container contentPane = getContentPane();
-		contentPane.setLayout(new BorderLayout());
+    public FittingView() {
+        initComponents();
+    }
 
-		//======== dialogPane ========
-		{
-			dialogPane.setBorder(new EmptyBorder(12, 12, 12, 12));
-			dialogPane.setLayout(new BorderLayout());
+    private void initComponents() {
+        dialogPane = new JPanel();
+        contentPanel = new JPanel();
+        label1 = new JLabel();
+        buttonBar = new JPanel();
+        okButton = new JButton();
 
-			//======== contentPanel ========
-			{
-				contentPanel.setLayout(new FlowLayout());
+        //======== this ========
+        setTitle(tr("Fitting"));
+        Container contentPane = getContentPane();
+        contentPane.setLayout(new BorderLayout());
 
-				//---- label1 ----
-				label1.setText(tr("<html>Please mind to start fitting your building-plans now.<br>" +
-						"To do so, use the PicLayer plug-in, which you can install<br>" +
-						"using the JOSM plug-in management.</html>"));
-				contentPanel.add(label1);
-			}
-			dialogPane.add(contentPanel, BorderLayout.CENTER);
+        //======== dialogPane ========
+        {
+            dialogPane.setBorder(new EmptyBorder(12, 12, 12, 12));
+            dialogPane.setLayout(new BorderLayout());
 
-			//======== buttonBar ========
-			{
-				buttonBar.setBorder(new EmptyBorder(12, 0, 0, 0));
-				buttonBar.setLayout(new GridBagLayout());
-				((GridBagLayout)buttonBar.getLayout()).columnWidths = new int[] {0, 80};
-				((GridBagLayout)buttonBar.getLayout()).columnWeights = new double[] {1.0, 0.0};
+            //======== contentPanel ========
+            {
+                contentPanel.setLayout(new FlowLayout());
 
-				//---- okButton ----
-				okButton.setText(tr("OK"));
-				buttonBar.add(okButton, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 0, 0), 0, 0));
-			}
-			dialogPane.add(buttonBar, BorderLayout.SOUTH);
-		}
-		contentPane.add(dialogPane, BorderLayout.CENTER);
-		pack();
-		setLocationRelativeTo(getOwner());
-	}
-	
-	/**
-	 * Set the given {@link ActionListener} to the OK-Button of the {@link FittingView}.
-	 * 
-	 * @param l the listener which should be set
-	 */
-	public void setOkButtonListener(ActionListener l){
-		this.okButton.addActionListener(l);
-	}
+                //---- label1 ----
+                label1.setText(tr("<html>Please mind to start fitting your building-plans now.<br>" +
+                        "To do so, use the PicLayer plug-in, which you can install<br>" +
+                        "using the JOSM plug-in management.</html>"));
+                contentPanel.add(label1);
+            }
+            dialogPane.add(contentPanel, BorderLayout.CENTER);
+
+            //======== buttonBar ========
+            {
+                buttonBar.setBorder(new EmptyBorder(12, 0, 0, 0));
+                buttonBar.setLayout(new GridBagLayout());
+                ((GridBagLayout) buttonBar.getLayout()).columnWidths = new int[] {0, 80};
+                ((GridBagLayout) buttonBar.getLayout()).columnWeights = new double[] {1.0, 0.0};
+
+                //---- okButton ----
+                okButton.setText(tr("OK"));
+                buttonBar.add(okButton, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 0, 0), 0, 0));
+            }
+            dialogPane.add(buttonBar, BorderLayout.SOUTH);
+        }
+        contentPane.add(dialogPane, BorderLayout.CENTER);
+        pack();
+        setLocationRelativeTo(getOwner());
+    }
+
+    /**
+     * Set the given {@link ActionListener} to the OK-Button of the {@link FittingView}.
+     *
+     * @param l the listener which should be set
+     */
+    public void setOkButtonListener(ActionListener l) {
+        this.okButton.addActionListener(l);
+    }
 }
Index: /applications/editors/josm/plugins/indoorhelper/src/views/LevelSelectorView.java
===================================================================
--- /applications/editors/josm/plugins/indoorhelper/src/views/LevelSelectorView.java	(revision 32636)
+++ /applications/editors/josm/plugins/indoorhelper/src/views/LevelSelectorView.java	(revision 32637)
@@ -21,15 +21,23 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.awt.*;
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
 import java.awt.event.ActionListener;
 
-import javax.swing.*;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JSpinner;
 import javax.swing.JSpinner.DefaultEditor;
-import javax.swing.border.*;
+import javax.swing.border.EmptyBorder;
 
 /**
  * Class for the pop-up window which provides an level selector to get a user input.
  * In this window the user declares the lowest and the highest level of the building he wants to map.
- * 
+ *
  * @author egru
  *
@@ -38,156 +46,156 @@
 @SuppressWarnings("serial")
 public class LevelSelectorView extends JFrame {
-	
-	private JPanel dialogPane;
-	private JPanel contentPanel;
-	private JLabel minLabel;
-	private JSpinner minSpinner;
-	private JLabel maxLabel;
-	private JSpinner maxSpinner;
-	private JPanel buttonBar;
-	private JButton okButton;
-	private JButton cancelButton;
-	
-	public LevelSelectorView() {
-		initComponents();
-	}
-
-	private void initComponents() {
-		dialogPane = new JPanel();
-		contentPanel = new JPanel();
-		minLabel = new JLabel();
-		minSpinner = new JSpinner();
-		maxLabel = new JLabel();
-		maxSpinner = new JSpinner();
-		buttonBar = new JPanel();
-		okButton = new JButton();
-		cancelButton = new JButton();
-
-		//======== this ========
-		setTitle(tr("Level Selection"));
-		Container contentPane = getContentPane();
-		contentPane.setLayout(new BorderLayout());
-
-		//======== dialogPane ========
-		{
-			dialogPane.setBorder(new EmptyBorder(12, 12, 12, 12));
-			dialogPane.setLayout(new BorderLayout());
-
-			//======== contentPanel ========
-			{
-				contentPanel.setLayout(new GridBagLayout());
-				((GridBagLayout)contentPanel.getLayout()).columnWidths = new int[] {0, 0, 0, 0, 0};
-				((GridBagLayout)contentPanel.getLayout()).rowHeights = new int[] {0, 0, 0, 0, 0, 0};
-				((GridBagLayout)contentPanel.getLayout()).columnWeights = new double[] {0.0, 0.0, 0.0, 0.0, 1.0E-4};
-				((GridBagLayout)contentPanel.getLayout()).rowWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 1.0E-4};
-
-				//---- minLabel ----
-				minLabel.setText(tr("Lowest Level"));
-				contentPanel.add(maxLabel, new GridBagConstraints(0, 0, 2, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-				JSpinner.DefaultEditor minEditor = (DefaultEditor) maxSpinner.getEditor();
-				minEditor.getTextField().setColumns(2);
-				maxSpinner.setToolTipText(tr("The lowest level of your building."));
-				contentPanel.add(maxSpinner, new GridBagConstraints(2, 0, 2, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 0), 0, 0));
-
-				//---- maxLabel ----
-				maxLabel.setText(tr("Highest Level"));
-				contentPanel.add(minLabel, new GridBagConstraints(0, 2, 2, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-				JSpinner.DefaultEditor maxEditor = (DefaultEditor) minSpinner.getEditor();
-				maxEditor.getTextField().setColumns(2);
-				minSpinner.setToolTipText(tr("The highest level of your building."));
-				contentPanel.add(minSpinner, new GridBagConstraints(2, 2, 2, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 0), 0, 0));
-			}
-			dialogPane.add(contentPanel, BorderLayout.CENTER);
-
-			//======== buttonBar ========
-			{
-				buttonBar.setBorder(new EmptyBorder(12, 0, 0, 0));
-				buttonBar.setLayout(new GridBagLayout());
-				((GridBagLayout)buttonBar.getLayout()).columnWidths = new int[] {0, 85, 80};
-				((GridBagLayout)buttonBar.getLayout()).columnWeights = new double[] {1.0, 0.0, 0.0};
-
-				//---- okButton ----
-				okButton.setText(tr("OK"));
-				buttonBar.add(okButton, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 0, 5), 0, 0));
-
-				//---- cancelButton ----
-				cancelButton.setText(tr("Cancel"));
-				buttonBar.add(cancelButton, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 0, 0), 0, 0));
-			}
-			dialogPane.add(contentPanel, BorderLayout.CENTER);
-
-			//======== buttonBar ========
-			{
-				buttonBar.setBorder(new EmptyBorder(12, 0, 0, 0));
-				buttonBar.setLayout(new GridBagLayout());
-				((GridBagLayout)buttonBar.getLayout()).columnWidths = new int[] {0, 85, 80};
-				((GridBagLayout)buttonBar.getLayout()).columnWeights = new double[] {1.0, 0.0, 0.0};
-
-				//---- okButton ----
-				okButton.setText(tr("OK"));
-				buttonBar.add(okButton, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 0, 5), 0, 0));
-
-				//---- cancelButton ----
-				cancelButton.setText(tr("Cancel"));
-				buttonBar.add(cancelButton, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 0, 0), 0, 0));
-			}
-			dialogPane.add(buttonBar, BorderLayout.SOUTH);
-		}
-		contentPane.add(dialogPane, BorderLayout.CENTER);
-		pack();
-		setLocationRelativeTo(getOwner());
-
-	}
-	
-	/**
-	 * Set the listener for the OK button.
-	 * 
-	 * @param l the listener to set
-	 */
-	public void setOkButtonListener(ActionListener l){
-		this.okButton.addActionListener(l);
-	}
-	
-	/**
-	 * Set the listener for the cancel button.
-	 * 
-	 * @param l the listener to set
-	 */
-	public void setCancelButtonListener(ActionListener l){
-		this.cancelButton.addActionListener(l);
-	}
-	
-	/**
-	 * Getter for the lowest level.
-	 * 
-	 * @return Integer which represents the lowest level of the building.
-	 */
-	public int getMin(){
-		return (int) this.minSpinner.getValue();
-	}
-	
-	/**
-	 * Getter for the highest level.
-	 * 
-	 * @return Integer which represents the highest level of the building.
-	 */
-	public int getMax(){
-		return (int) this.maxSpinner.getValue();
-	}
+
+    private JPanel dialogPane;
+    private JPanel contentPanel;
+    private JLabel minLabel;
+    private JSpinner minSpinner;
+    private JLabel maxLabel;
+    private JSpinner maxSpinner;
+    private JPanel buttonBar;
+    private JButton okButton;
+    private JButton cancelButton;
+
+    public LevelSelectorView() {
+        initComponents();
+    }
+
+    private void initComponents() {
+        dialogPane = new JPanel();
+        contentPanel = new JPanel();
+        minLabel = new JLabel();
+        minSpinner = new JSpinner();
+        maxLabel = new JLabel();
+        maxSpinner = new JSpinner();
+        buttonBar = new JPanel();
+        okButton = new JButton();
+        cancelButton = new JButton();
+
+        //======== this ========
+        setTitle(tr("Level Selection"));
+        Container contentPane = getContentPane();
+        contentPane.setLayout(new BorderLayout());
+
+        //======== dialogPane ========
+        {
+            dialogPane.setBorder(new EmptyBorder(12, 12, 12, 12));
+            dialogPane.setLayout(new BorderLayout());
+
+            //======== contentPanel ========
+            {
+                contentPanel.setLayout(new GridBagLayout());
+                ((GridBagLayout) contentPanel.getLayout()).columnWidths = new int[] {0, 0, 0, 0, 0};
+                ((GridBagLayout) contentPanel.getLayout()).rowHeights = new int[] {0, 0, 0, 0, 0, 0};
+                ((GridBagLayout) contentPanel.getLayout()).columnWeights = new double[] {0.0, 0.0, 0.0, 0.0, 1.0E-4};
+                ((GridBagLayout) contentPanel.getLayout()).rowWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 1.0E-4};
+
+                //---- minLabel ----
+                minLabel.setText(tr("Lowest Level"));
+                contentPanel.add(maxLabel, new GridBagConstraints(0, 0, 2, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+                JSpinner.DefaultEditor minEditor = (DefaultEditor) maxSpinner.getEditor();
+                minEditor.getTextField().setColumns(2);
+                maxSpinner.setToolTipText(tr("The lowest level of your building."));
+                contentPanel.add(maxSpinner, new GridBagConstraints(2, 0, 2, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 0), 0, 0));
+
+                //---- maxLabel ----
+                maxLabel.setText(tr("Highest Level"));
+                contentPanel.add(minLabel, new GridBagConstraints(0, 2, 2, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+                JSpinner.DefaultEditor maxEditor = (DefaultEditor) minSpinner.getEditor();
+                maxEditor.getTextField().setColumns(2);
+                minSpinner.setToolTipText(tr("The highest level of your building."));
+                contentPanel.add(minSpinner, new GridBagConstraints(2, 2, 2, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 0), 0, 0));
+            }
+            dialogPane.add(contentPanel, BorderLayout.CENTER);
+
+            //======== buttonBar ========
+            {
+                buttonBar.setBorder(new EmptyBorder(12, 0, 0, 0));
+                buttonBar.setLayout(new GridBagLayout());
+                ((GridBagLayout) buttonBar.getLayout()).columnWidths = new int[] {0, 85, 80};
+                ((GridBagLayout) buttonBar.getLayout()).columnWeights = new double[] {1.0, 0.0, 0.0};
+
+                //---- okButton ----
+                okButton.setText(tr("OK"));
+                buttonBar.add(okButton, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 0, 5), 0, 0));
+
+                //---- cancelButton ----
+                cancelButton.setText(tr("Cancel"));
+                buttonBar.add(cancelButton, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 0, 0), 0, 0));
+            }
+            dialogPane.add(contentPanel, BorderLayout.CENTER);
+
+            //======== buttonBar ========
+            {
+                buttonBar.setBorder(new EmptyBorder(12, 0, 0, 0));
+                buttonBar.setLayout(new GridBagLayout());
+                ((GridBagLayout) buttonBar.getLayout()).columnWidths = new int[] {0, 85, 80};
+                ((GridBagLayout) buttonBar.getLayout()).columnWeights = new double[] {1.0, 0.0, 0.0};
+
+                //---- okButton ----
+                okButton.setText(tr("OK"));
+                buttonBar.add(okButton, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 0, 5), 0, 0));
+
+                //---- cancelButton ----
+                cancelButton.setText(tr("Cancel"));
+                buttonBar.add(cancelButton, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 0, 0), 0, 0));
+            }
+            dialogPane.add(buttonBar, BorderLayout.SOUTH);
+        }
+        contentPane.add(dialogPane, BorderLayout.CENTER);
+        pack();
+        setLocationRelativeTo(getOwner());
+
+    }
+
+    /**
+     * Set the listener for the OK button.
+     *
+     * @param l the listener to set
+     */
+    public void setOkButtonListener(ActionListener l) {
+        this.okButton.addActionListener(l);
+    }
+
+    /**
+     * Set the listener for the cancel button.
+     *
+     * @param l the listener to set
+     */
+    public void setCancelButtonListener(ActionListener l) {
+        this.cancelButton.addActionListener(l);
+    }
+
+    /**
+     * Getter for the lowest level.
+     *
+     * @return Integer which represents the lowest level of the building.
+     */
+    public int getMin() {
+        return (int) this.minSpinner.getValue();
+    }
+
+    /**
+     * Getter for the highest level.
+     *
+     * @return Integer which represents the highest level of the building.
+     */
+    public int getMax() {
+        return (int) this.maxSpinner.getValue();
+    }
 }
Index: /applications/editors/josm/plugins/indoorhelper/src/views/PresetButton.java
===================================================================
--- /applications/editors/josm/plugins/indoorhelper/src/views/PresetButton.java	(revision 32636)
+++ /applications/editors/josm/plugins/indoorhelper/src/views/PresetButton.java	(revision 32637)
@@ -20,4 +20,5 @@
 
 import javax.swing.JButton;
+
 import model.TagCatalog.IndoorObject;
 
@@ -30,20 +31,20 @@
 @SuppressWarnings("serial")
 class PresetButton extends JButton {
-	
-	private IndoorObject indoorObject;
-	
-	public PresetButton(IndoorObject object){
-		this.setIndoorObject(object);		
-	}
-	
-	public IndoorObject getIndoorObject(){
-		return this.indoorObject;
-	}
-	
-	public void setIndoorObject(IndoorObject object){
-		this.indoorObject = object;
-		this.setText(indoorObject.toString());
-		this.setToolTipText(indoorObject.toString());
-	}
+
+    private IndoorObject indoorObject;
+
+    PresetButton(IndoorObject object) {
+        this.setIndoorObject(object);
+    }
+
+    public IndoorObject getIndoorObject() {
+        return this.indoorObject;
+    }
+
+    public void setIndoorObject(IndoorObject object) {
+        this.indoorObject = object;
+        this.setText(indoorObject.toString());
+        this.setToolTipText(indoorObject.toString());
+    }
 
 }
Index: /applications/editors/josm/plugins/indoorhelper/src/views/ToolBoxView.java
===================================================================
--- /applications/editors/josm/plugins/indoorhelper/src/views/ToolBoxView.java	(revision 32636)
+++ /applications/editors/josm/plugins/indoorhelper/src/views/ToolBoxView.java	(revision 32637)
@@ -21,5 +21,9 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.awt.*;
+import java.awt.BorderLayout;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.TextField;
 import java.awt.event.ActionListener;
 import java.awt.event.FocusEvent;
@@ -29,6 +33,11 @@
 import java.util.ListIterator;
 
-import javax.swing.*;
-import javax.swing.border.*;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JSeparator;
+import javax.swing.JToggleButton;
+import javax.swing.border.EmptyBorder;
+
 import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
 import org.openstreetmap.josm.gui.widgets.DisableShortcutsOnFocusGainedTextField;
@@ -40,474 +49,476 @@
 
 /**
- * 
+ *
  * This is the main toolbox of the indoorhelper plug-in.
- * 
+ *
  * @author egru
  *
  */
 @SuppressWarnings("serial")
-public class ToolBoxView extends ToggleDialog{
-	private JPanel dialogPane;
-	private JPanel contentPanel;
-	private JToggleButton powerButton;
-	private JLabel levelLabel;
-	private JosmComboBox<String> levelBox;
-	private JLabel levelTagLabel;
-	private DisableShortcutsOnFocusGainedTextField levelTagField;
-	private JLabel objectLabel;
-	private JosmComboBox<TagCatalog.IndoorObject> objectBox;
-	private JLabel nameLabel;
-	private DisableShortcutsOnFocusGainedTextField nameField;
-	private JLabel refLabel;
-	private DisableShortcutsOnFocusGainedTextField refField;
-	private JPanel buttonBar;
-	private JButton applyButton;
-	private JSeparator separator1;
-	private JSeparator separator2;
-	private PresetButton preset1;
-	private PresetButton preset2;
-	private PresetButton preset3;
-	private PresetButton preset4;
-	
-	public ToolBoxView(){
-		super(tr("Indoor Mapping Helper"), "indoorhelper", 
-				tr("Toolbox for indoor mapping assistance"), null, 300, true);
-		
-		initComponents();
-	}
-	
-	/**
-	 * Creates the layout of the plug-in.
-	 */
-	private void initComponents() {
-		dialogPane = new JPanel();
-		contentPanel = new JPanel();
-		powerButton = new JToggleButton();
-		levelLabel = new JLabel();
-		levelBox = new JosmComboBox<String>();
-		levelTagLabel = new JLabel();
-		levelTagField = new DisableShortcutsOnFocusGainedTextField();
-		objectLabel = new JLabel();
-		objectBox = new JosmComboBox<>(TagCatalog.IndoorObject.values());
-		nameLabel = new JLabel();
-		nameField = new DisableShortcutsOnFocusGainedTextField();
-		refLabel = new JLabel();
-		refField = new DisableShortcutsOnFocusGainedTextField();
-		buttonBar = new JPanel();
-		applyButton = new JButton();
-		separator1 = new JSeparator();
-		separator2 = new JSeparator();
-		preset1 = new PresetButton(IndoorObject.ROOM);
-		preset2 = new PresetButton(IndoorObject.SHELL);
-		preset3 = new PresetButton(IndoorObject.CONCRETE_WALL);
-		preset4 = new PresetButton(IndoorObject.GLASS_WALL);
-
-		//======== this ========
-		//Container contentPane = this.get;
-		//contentPane.setLayout(new BorderLayout());
-
-		//======== dialogPane ========
-		{
-			dialogPane.setBorder(new EmptyBorder(12, 12, 12, 12));
-			dialogPane.setLayout(new BorderLayout());
-
-			//======== contentPanel ========
-			{
-				contentPanel.setLayout(new GridBagLayout());
-				((GridBagLayout)contentPanel.getLayout()).columnWidths = new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-				((GridBagLayout)contentPanel.getLayout()).rowHeights = new int[] {0, 0, 0, 0, 0, 0, 0, 0};
-				((GridBagLayout)contentPanel.getLayout()).columnWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0E-4};
-				((GridBagLayout)contentPanel.getLayout()).rowWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0E-4};
-
-				//---- powerButton ----
-				powerButton.setText(tr("POWER"));
-				powerButton.setToolTipText(tr("Activates the plug-in"));
-				contentPanel.add(powerButton, new GridBagConstraints(8, 0, 4, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-				contentPanel.add(separator1, new GridBagConstraints(1, 1, 12, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-
-				//---- levelLabel ----
-				levelLabel.setText(tr("Working Level"));
-				contentPanel.add(levelLabel, new GridBagConstraints(1, 2, 2, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-
-				//---- levelBox ----
-				levelBox.setEnabled(false);
-				levelBox.setEditable(false);
-				levelBox.setToolTipText(tr("Selects the working level."));
-				contentPanel.add(levelBox, new GridBagConstraints(3, 2, 3, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-
-				//---- levelTagLabel ----
-				levelTagLabel.setText(tr("Level Name"));
-				contentPanel.add(levelTagLabel, new GridBagConstraints(7, 2, 1, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-
-				//---- levelTagField ----
-				levelTagField.setEnabled(false);
-				levelTagField.setColumns(6);
-				levelTagField.setToolTipText(tr("Optional name-tag for a level."));
-				contentPanel.add(levelTagField, new GridBagConstraints(8, 2, 5, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-				contentPanel.add(separator2, new GridBagConstraints(1, 3, 12, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-
-				//---- objectLabel ----
-				objectLabel.setText(tr("Object"));
-				contentPanel.add(objectLabel, new GridBagConstraints(0, 4, 3, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-
-				//---- objectBox ----
-				objectBox.setEnabled(false);
-				objectBox.setPrototypeDisplayValue(IndoorObject.CONCRETE_WALL);
-				objectBox.setToolTipText(tr("The object preset you want to tag."));
-				contentPanel.add(objectBox, new GridBagConstraints(3, 4, 3, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-
-				//---- nameLabel ----
-				nameLabel.setText(tr("Name"));
-				contentPanel.add(nameLabel, new GridBagConstraints(0, 5, 3, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-
-				//---- nameField ----
-				nameField.setEnabled(false);
-				nameField.addFocusListener(new FocusListener() {
-					
-					@Override
-					public void focusLost(FocusEvent e) {}
-					
-					@Override
-					public void focusGained(FocusEvent e) {
-						nameField.selectAll();						
-					}
-				});
-				nameField.setToolTipText(tr("Sets the name tag when the room-object is selected."));
-				contentPanel.add(nameField, new GridBagConstraints(3, 5, 3, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-
-				//---- refLabel ----
-				refLabel.setText(tr("Reference"));
-				contentPanel.add(refLabel, new GridBagConstraints(0, 6, 3, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 0, 5), 0, 0));
-
-				//---- refField ----
-				refField.setEnabled(false);
-				refField.addFocusListener(new FocusListener() {
-					
-					@Override
-					public void focusLost(FocusEvent e) {}
-					
-					@Override
-					public void focusGained(FocusEvent e) {
-						refField.selectAll();
-					}
-				});
-				refField.setToolTipText(tr("Sets the ref tag when the room-object is selected."));
-				contentPanel.add(refField, new GridBagConstraints(3, 6, 3, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 0, 5), 0, 0));
-				
-				//---- preset1 ----
-				preset1.setEnabled(false);
-				contentPanel.add(preset1, new GridBagConstraints(16, 2, 1, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-				contentPanel.add(separator2, new GridBagConstraints(1, 3, 13, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-
-				//---- preset2 ----
-				preset2.setEnabled(false);
-				contentPanel.add(preset2, new GridBagConstraints(16, 3, 1, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-				
-				//---- preset3 ----
-				preset3.setEnabled(false);
-				contentPanel.add(preset3, new GridBagConstraints(16, 4, 1, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-				
-				//---- preset4 ----
-				preset4.setEnabled(false);
-				contentPanel.add(preset4, new GridBagConstraints(16, 5, 1, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 5, 5), 0, 0));
-			}
-			dialogPane.add(contentPanel, BorderLayout.CENTER);
-
-			//======== buttonBar ========
-			{
-				buttonBar.setBorder(new EmptyBorder(12, 0, 0, 0));
-				buttonBar.setLayout(new GridBagLayout());
-				((GridBagLayout)buttonBar.getLayout()).columnWidths = new int[] {0, 80};
-				((GridBagLayout)buttonBar.getLayout()).columnWeights = new double[] {1.0, 0.0};
-
-				//---- applyButton ----
-				applyButton.setText(tr("Apply Tags"));
-				applyButton.setEnabled(false);
-				buttonBar.add(applyButton, new GridBagConstraints(0, 0, 2, 1, 0.0, 0.0,
-					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-					new Insets(0, 0, 0, 0), 0, 0));
-			}
-			dialogPane.add(buttonBar, BorderLayout.SOUTH);
-		}
-		//contentPane.add(dialogPane, BorderLayout.CENTER);
-		
-		
-		this.createLayout(dialogPane, false, null);
-	}
-	
-	/**
-	 * Returns the state of the power button.
-	 * 
-	 * @return boolean which is true when the button is selected
-	 */
-	public boolean getPowerButtonState(){
-		return this.powerButton.isSelected();
-	}
-	
-	/**
-	 * Enables or disables the interactive UI elements of the toolbox.
-	 * 
-	 * @param enabled set this true for enabled elements
-	 */
-	public void setAllUiElementsEnabled(boolean enabled){
-		this.applyButton.setEnabled(enabled);
-		this.levelBox.setEnabled(enabled);
-		this.objectBox.setEnabled(enabled);
-		this.nameField.setEnabled(enabled);
-		this.refField.setEnabled(enabled);
-		this.levelTagField.setEnabled(enabled);
-		this.preset1.setEnabled(enabled);
-		this.preset2.setEnabled(enabled);
-		this.preset3.setEnabled(enabled);
-		this.preset4.setEnabled(enabled);
-		
-		
-		if(enabled==false) {
-			resetUiElements();
-			this.levelTagField.setText("");
-		}
-	}
-	
-	/**
-	 * Enables or disables the interactive text box elements name and ref.
-	 * 
-	 * @param enabled set this true for enabled elements
-	 */
-	public void setTagUiElementsEnabled(boolean enabled){
-		this.nameField.setEnabled(enabled);
-		this.refField.setEnabled(enabled);
-		
-		if(enabled==false) resetUiElements();
-	}
-	
-	/**
-	 * Disables the power-button of the plug-in.
-	 */
-	public void setPowerButtonDisabled(){
-		this.powerButton.setSelected(false);
-	}
-	
-	/**
-	 * Getter for the selected {@link IndoorObject} in the objectBox.
-	 * 
-	 * @return the selected indoor object in the object ComboBox.
-	 */	
-	public IndoorObject getSelectedObject(){
-		return (IndoorObject) this.objectBox.getSelectedItem();
-	}
-	
-	
-	/**
-	 * Sets the level list for the level selection comboBox.
-	 * 
-	 * @param levelList the list of levels which you want to set
-	 */
-	public void setLevelList(List<IndoorLevel> levelList){
-		this.levelBox.removeAllItems();
-		
-		ListIterator<IndoorLevel> listIterator = levelList.listIterator();
-		
-		while(listIterator.hasNext()){
-			IndoorLevel level = listIterator.next();
-			if(level.hasEmptyName()){
-				this.levelBox.addItem(Integer.toString(level.getLevelNumber()));
-			} else{
-				this.levelBox.addItem(level.getName());
-			}
-		}		
-	}
-	
-	/**
-	 * Getter for the selected working level.
-	 * 
-	 * @return the index of the selected item in the level-box
-	 */
-	public int getSelectedLevelIndex(){
-		return this.levelBox.getSelectedIndex();
-	}
-	
-	/**
-	 * Checks if the level list is empty.
-	 *  
-	 * @return boolean which is true if the level-list is empty
-	 */
-	public boolean levelListIsEmpty(){
-		if(this.levelBox.getItemCount()==0){
-			return true;
-		} else{
-			return false;
-		}
-	}
-	
-	/**
-	 * Getter for the level-name-field.
-	 * 
-	 * @return the {@link String} of the levelTagField
-	 */
-	public String getLevelName(){
-		return this.levelTagField.getText();
-	}
-	
-	/**
-	 * Setter for the level name field.
-	 * 
-	 * @param name the String for the levelTagField
-	 */
-	public void setLevelName(String name){
-		this.levelTagField.setText(name);
-	}
-	
-	/**
-	 * Getter for the name {@link TextField}.
-	 * 
-	 * @return {@link String} of the name text field
-	 */
-	public String getNameText(){
-		return this.nameField.getText();
-	}
-	
-	/**
-	 * Getter for the ref {@link TextField}.
-	 * 
-	 * @return {@link String} of the ref text field
-	 */
-	public String getRefText(){
-		return this.refField.getText();
-	}
-	
-	/**
-	 * Resets the view by making the UI elements disabled and deleting the level list.
-	 */
-	public void reset(){
-		this.setAllUiElementsEnabled(false);
-		this.levelBox.removeAllItems();
-	}
-	
-	/**
-	 * Clears the text boxes and sets an empty {@link String}.
-	 */
-	public void resetUiElements(){
-		this.nameField.setText("");
-		this.refField.setText("");
-	}
-	
-	/*
-	 * ********************************
-	 * SETTERS FOR THE BUTTON LISTENERS
-	 * ********************************
-	 */
-	
-	/**
-	 * Set the listener for the power button.
-	 * 
-	 * @param l the listener to set
-	 */
-	public void setPowerButtonListener(ActionListener l){
-		this.powerButton.addActionListener(l);		
-	}
-	
-	/**
-	 * Set the listener for the apply button.
-	 * 
-	 * @param l the listener to set
-	 */
-	public void setApplyButtonListener(ActionListener l){
-		this.applyButton.addActionListener(l);
-	}
-	
-	/**
-	 * Set the listener which is called when a new item in the level list is selected.
-	 * 
-	 * @param l the listener to set
-	 */
-	public void setLevelItemListener(ItemListener l){
-		this.levelBox.addItemListener(l);
-	}
-	
-		
-	/**
-	 * Set the listener which is called when a new item in the object list is selected.
-	 * 
-	 * @param l the listener to set
-	 */
-	public void setObjectItemListener(ItemListener l){
-		this.objectBox.addItemListener(l);
-	}	
-	
-	// Preset Button Functions
-	
-	public void setPresetButtons(List<IndoorObject> objects){
-		this.preset1.setIndoorObject(objects.get(0));
-		this.preset2.setIndoorObject(objects.get(1));
-		this.preset3.setIndoorObject(objects.get(2));
-		this.preset4.setIndoorObject(objects.get(3));
-	}
-	
-	public void setPreset1Listener(ActionListener l){
-		this.preset1.addActionListener(l);
-	}
-	
-	public void setPreset2Listener(ActionListener l){
-		this.preset2.addActionListener(l);
-	}
-	
-	public void setPreset3Listener(ActionListener l){
-		this.preset3.addActionListener(l);
-	}
-	
-	public void setPreset4Listener(ActionListener l){
-		this.preset4.addActionListener(l);
-	}
-	
-	public IndoorObject getPreset1(){
-		return preset1.getIndoorObject();
-	}
-	
-	public IndoorObject getPreset2(){
-		return preset2.getIndoorObject();
-	}
-	
-	public IndoorObject getPreset3(){
-		return preset3.getIndoorObject();
-	}
-	
-	public IndoorObject getPreset4(){
-		return preset4.getIndoorObject();
-	}
+public class ToolBoxView extends ToggleDialog {
+    private JPanel dialogPane;
+    private JPanel contentPanel;
+    private JToggleButton powerButton;
+    private JLabel levelLabel;
+    private JosmComboBox<String> levelBox;
+    private JLabel levelTagLabel;
+    private DisableShortcutsOnFocusGainedTextField levelTagField;
+    private JLabel objectLabel;
+    private JosmComboBox<TagCatalog.IndoorObject> objectBox;
+    private JLabel nameLabel;
+    private DisableShortcutsOnFocusGainedTextField nameField;
+    private JLabel refLabel;
+    private DisableShortcutsOnFocusGainedTextField refField;
+    private JPanel buttonBar;
+    private JButton applyButton;
+    private JSeparator separator1;
+    private JSeparator separator2;
+    private PresetButton preset1;
+    private PresetButton preset2;
+    private PresetButton preset3;
+    private PresetButton preset4;
+
+    public ToolBoxView() {
+        super(tr("Indoor Mapping Helper"), "indoorhelper",
+                tr("Toolbox for indoor mapping assistance"), null, 300, true);
+
+        initComponents();
+    }
+
+    /**
+     * Creates the layout of the plug-in.
+     */
+    private void initComponents() {
+        dialogPane = new JPanel();
+        contentPanel = new JPanel();
+        powerButton = new JToggleButton();
+        levelLabel = new JLabel();
+        levelBox = new JosmComboBox<String>();
+        levelTagLabel = new JLabel();
+        levelTagField = new DisableShortcutsOnFocusGainedTextField();
+        objectLabel = new JLabel();
+        objectBox = new JosmComboBox<>(TagCatalog.IndoorObject.values());
+        nameLabel = new JLabel();
+        nameField = new DisableShortcutsOnFocusGainedTextField();
+        refLabel = new JLabel();
+        refField = new DisableShortcutsOnFocusGainedTextField();
+        buttonBar = new JPanel();
+        applyButton = new JButton();
+        separator1 = new JSeparator();
+        separator2 = new JSeparator();
+        preset1 = new PresetButton(IndoorObject.ROOM);
+        preset2 = new PresetButton(IndoorObject.SHELL);
+        preset3 = new PresetButton(IndoorObject.CONCRETE_WALL);
+        preset4 = new PresetButton(IndoorObject.GLASS_WALL);
+
+        //======== this ========
+        //Container contentPane = this.get;
+        //contentPane.setLayout(new BorderLayout());
+
+        //======== dialogPane ========
+        {
+            dialogPane.setBorder(new EmptyBorder(12, 12, 12, 12));
+            dialogPane.setLayout(new BorderLayout());
+
+            //======== contentPanel ========
+            {
+                contentPanel.setLayout(new GridBagLayout());
+                ((GridBagLayout) contentPanel.getLayout()).columnWidths = new int[] {
+                        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+                ((GridBagLayout) contentPanel.getLayout()).rowHeights = new int[] {0, 0, 0, 0, 0, 0, 0, 0};
+                ((GridBagLayout) contentPanel.getLayout()).columnWeights = new double[] {
+                        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0E-4};
+                ((GridBagLayout) contentPanel.getLayout()).rowWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0E-4};
+
+                //---- powerButton ----
+                powerButton.setText(tr("POWER"));
+                powerButton.setToolTipText(tr("Activates the plug-in"));
+                contentPanel.add(powerButton, new GridBagConstraints(8, 0, 4, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+                contentPanel.add(separator1, new GridBagConstraints(1, 1, 12, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- levelLabel ----
+                levelLabel.setText(tr("Working Level"));
+                contentPanel.add(levelLabel, new GridBagConstraints(1, 2, 2, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- levelBox ----
+                levelBox.setEnabled(false);
+                levelBox.setEditable(false);
+                levelBox.setToolTipText(tr("Selects the working level."));
+                contentPanel.add(levelBox, new GridBagConstraints(3, 2, 3, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- levelTagLabel ----
+                levelTagLabel.setText(tr("Level Name"));
+                contentPanel.add(levelTagLabel, new GridBagConstraints(7, 2, 1, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- levelTagField ----
+                levelTagField.setEnabled(false);
+                levelTagField.setColumns(6);
+                levelTagField.setToolTipText(tr("Optional name-tag for a level."));
+                contentPanel.add(levelTagField, new GridBagConstraints(8, 2, 5, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+                contentPanel.add(separator2, new GridBagConstraints(1, 3, 12, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- objectLabel ----
+                objectLabel.setText(tr("Object"));
+                contentPanel.add(objectLabel, new GridBagConstraints(0, 4, 3, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- objectBox ----
+                objectBox.setEnabled(false);
+                objectBox.setPrototypeDisplayValue(IndoorObject.CONCRETE_WALL);
+                objectBox.setToolTipText(tr("The object preset you want to tag."));
+                contentPanel.add(objectBox, new GridBagConstraints(3, 4, 3, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- nameLabel ----
+                nameLabel.setText(tr("Name"));
+                contentPanel.add(nameLabel, new GridBagConstraints(0, 5, 3, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- nameField ----
+                nameField.setEnabled(false);
+                nameField.addFocusListener(new FocusListener() {
+
+                    @Override
+                    public void focusLost(FocusEvent e) {}
+
+                    @Override
+                    public void focusGained(FocusEvent e) {
+                        nameField.selectAll();
+                    }
+                });
+                nameField.setToolTipText(tr("Sets the name tag when the room-object is selected."));
+                contentPanel.add(nameField, new GridBagConstraints(3, 5, 3, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- refLabel ----
+                refLabel.setText(tr("Reference"));
+                contentPanel.add(refLabel, new GridBagConstraints(0, 6, 3, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 0, 5), 0, 0));
+
+                //---- refField ----
+                refField.setEnabled(false);
+                refField.addFocusListener(new FocusListener() {
+
+                    @Override
+                    public void focusLost(FocusEvent e) {}
+
+                    @Override
+                    public void focusGained(FocusEvent e) {
+                        refField.selectAll();
+                    }
+                });
+                refField.setToolTipText(tr("Sets the ref tag when the room-object is selected."));
+                contentPanel.add(refField, new GridBagConstraints(3, 6, 3, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 0, 5), 0, 0));
+
+                //---- preset1 ----
+                preset1.setEnabled(false);
+                contentPanel.add(preset1, new GridBagConstraints(16, 2, 1, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+                contentPanel.add(separator2, new GridBagConstraints(1, 3, 13, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- preset2 ----
+                preset2.setEnabled(false);
+                contentPanel.add(preset2, new GridBagConstraints(16, 3, 1, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- preset3 ----
+                preset3.setEnabled(false);
+                contentPanel.add(preset3, new GridBagConstraints(16, 4, 1, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+
+                //---- preset4 ----
+                preset4.setEnabled(false);
+                contentPanel.add(preset4, new GridBagConstraints(16, 5, 1, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 5, 5), 0, 0));
+            }
+            dialogPane.add(contentPanel, BorderLayout.CENTER);
+
+            //======== buttonBar ========
+            {
+                buttonBar.setBorder(new EmptyBorder(12, 0, 0, 0));
+                buttonBar.setLayout(new GridBagLayout());
+                ((GridBagLayout) buttonBar.getLayout()).columnWidths = new int[] {0, 80};
+                ((GridBagLayout) buttonBar.getLayout()).columnWeights = new double[] {1.0, 0.0};
+
+                //---- applyButton ----
+                applyButton.setText(tr("Apply Tags"));
+                applyButton.setEnabled(false);
+                buttonBar.add(applyButton, new GridBagConstraints(0, 0, 2, 1, 0.0, 0.0,
+                    GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                    new Insets(0, 0, 0, 0), 0, 0));
+            }
+            dialogPane.add(buttonBar, BorderLayout.SOUTH);
+        }
+        //contentPane.add(dialogPane, BorderLayout.CENTER);
+
+
+        this.createLayout(dialogPane, false, null);
+    }
+
+    /**
+     * Returns the state of the power button.
+     *
+     * @return boolean which is true when the button is selected
+     */
+    public boolean getPowerButtonState() {
+        return this.powerButton.isSelected();
+    }
+
+    /**
+     * Enables or disables the interactive UI elements of the toolbox.
+     *
+     * @param enabled set this true for enabled elements
+     */
+    public void setAllUiElementsEnabled(boolean enabled) {
+        this.applyButton.setEnabled(enabled);
+        this.levelBox.setEnabled(enabled);
+        this.objectBox.setEnabled(enabled);
+        this.nameField.setEnabled(enabled);
+        this.refField.setEnabled(enabled);
+        this.levelTagField.setEnabled(enabled);
+        this.preset1.setEnabled(enabled);
+        this.preset2.setEnabled(enabled);
+        this.preset3.setEnabled(enabled);
+        this.preset4.setEnabled(enabled);
+
+
+        if (enabled == false) {
+            resetUiElements();
+            this.levelTagField.setText("");
+        }
+    }
+
+    /**
+     * Enables or disables the interactive text box elements name and ref.
+     *
+     * @param enabled set this true for enabled elements
+     */
+    public void setTagUiElementsEnabled(boolean enabled) {
+        this.nameField.setEnabled(enabled);
+        this.refField.setEnabled(enabled);
+
+        if (enabled == false) resetUiElements();
+    }
+
+    /**
+     * Disables the power-button of the plug-in.
+     */
+    public void setPowerButtonDisabled() {
+        this.powerButton.setSelected(false);
+    }
+
+    /**
+     * Getter for the selected {@link IndoorObject} in the objectBox.
+     *
+     * @return the selected indoor object in the object ComboBox.
+     */
+    public IndoorObject getSelectedObject() {
+        return (IndoorObject) this.objectBox.getSelectedItem();
+    }
+
+
+    /**
+     * Sets the level list for the level selection comboBox.
+     *
+     * @param levelList the list of levels which you want to set
+     */
+    public void setLevelList(List<IndoorLevel> levelList) {
+        this.levelBox.removeAllItems();
+
+        ListIterator<IndoorLevel> listIterator = levelList.listIterator();
+
+        while (listIterator.hasNext()) {
+            IndoorLevel level = listIterator.next();
+            if (level.hasEmptyName()) {
+                this.levelBox.addItem(Integer.toString(level.getLevelNumber()));
+            } else {
+                this.levelBox.addItem(level.getName());
+            }
+        }
+    }
+
+    /**
+     * Getter for the selected working level.
+     *
+     * @return the index of the selected item in the level-box
+     */
+    public int getSelectedLevelIndex() {
+        return this.levelBox.getSelectedIndex();
+    }
+
+    /**
+     * Checks if the level list is empty.
+     *
+     * @return boolean which is true if the level-list is empty
+     */
+    public boolean levelListIsEmpty() {
+        if (this.levelBox.getItemCount() == 0) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Getter for the level-name-field.
+     *
+     * @return the {@link String} of the levelTagField
+     */
+    public String getLevelName() {
+        return this.levelTagField.getText();
+    }
+
+    /**
+     * Setter for the level name field.
+     *
+     * @param name the String for the levelTagField
+     */
+    public void setLevelName(String name) {
+        this.levelTagField.setText(name);
+    }
+
+    /**
+     * Getter for the name {@link TextField}.
+     *
+     * @return {@link String} of the name text field
+     */
+    public String getNameText() {
+        return this.nameField.getText();
+    }
+
+    /**
+     * Getter for the ref {@link TextField}.
+     *
+     * @return {@link String} of the ref text field
+     */
+    public String getRefText() {
+        return this.refField.getText();
+    }
+
+    /**
+     * Resets the view by making the UI elements disabled and deleting the level list.
+     */
+    public void reset() {
+        this.setAllUiElementsEnabled(false);
+        this.levelBox.removeAllItems();
+    }
+
+    /**
+     * Clears the text boxes and sets an empty {@link String}.
+     */
+    public void resetUiElements() {
+        this.nameField.setText("");
+        this.refField.setText("");
+    }
+
+    /*
+     * ********************************
+     * SETTERS FOR THE BUTTON LISTENERS
+     * ********************************
+     */
+
+    /**
+     * Set the listener for the power button.
+     *
+     * @param l the listener to set
+     */
+    public void setPowerButtonListener(ActionListener l) {
+        this.powerButton.addActionListener(l);
+    }
+
+    /**
+     * Set the listener for the apply button.
+     *
+     * @param l the listener to set
+     */
+    public void setApplyButtonListener(ActionListener l) {
+        this.applyButton.addActionListener(l);
+    }
+
+    /**
+     * Set the listener which is called when a new item in the level list is selected.
+     *
+     * @param l the listener to set
+     */
+    public void setLevelItemListener(ItemListener l) {
+        this.levelBox.addItemListener(l);
+    }
+
+
+    /**
+     * Set the listener which is called when a new item in the object list is selected.
+     *
+     * @param l the listener to set
+     */
+    public void setObjectItemListener(ItemListener l) {
+        this.objectBox.addItemListener(l);
+    }
+
+    // Preset Button Functions
+
+    public void setPresetButtons(List<IndoorObject> objects) {
+        this.preset1.setIndoorObject(objects.get(0));
+        this.preset2.setIndoorObject(objects.get(1));
+        this.preset3.setIndoorObject(objects.get(2));
+        this.preset4.setIndoorObject(objects.get(3));
+    }
+
+    public void setPreset1Listener(ActionListener l) {
+        this.preset1.addActionListener(l);
+    }
+
+    public void setPreset2Listener(ActionListener l) {
+        this.preset2.addActionListener(l);
+    }
+
+    public void setPreset3Listener(ActionListener l) {
+        this.preset3.addActionListener(l);
+    }
+
+    public void setPreset4Listener(ActionListener l) {
+        this.preset4.addActionListener(l);
+    }
+
+    public IndoorObject getPreset1() {
+        return preset1.getIndoorObject();
+    }
+
+    public IndoorObject getPreset2() {
+        return preset2.getIndoorObject();
+    }
+
+    public IndoorObject getPreset3() {
+        return preset3.getIndoorObject();
+    }
+
+    public IndoorObject getPreset4() {
+        return preset4.getIndoorObject();
+    }
 }
Index: /applications/editors/josm/plugins/indoorhelper/test/unit/PresetCounterTest.java
===================================================================
--- /applications/editors/josm/plugins/indoorhelper/test/unit/PresetCounterTest.java	(revision 32636)
+++ /applications/editors/josm/plugins/indoorhelper/test/unit/PresetCounterTest.java	(revision 32637)
@@ -1,3 +1,3 @@
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
 
 import java.util.ArrayList;
@@ -11,37 +11,37 @@
 public class PresetCounterTest {
 
-	/**
-	 * Test case for testing the ranking functionality.
-	 */
-	@Test
-	public void testRanking() {
-		// input preparation
-		PresetCounter counter = new PresetCounter();
+    /**
+     * Test case for testing the ranking functionality.
+     */
+    @Test
+    public void testRanking() {
+        // input preparation
+        PresetCounter counter = new PresetCounter();
 
-		counter.count(IndoorObject.CONCRETE_WALL);
-		counter.count(IndoorObject.CONCRETE_WALL);
-		counter.count(IndoorObject.CONCRETE_WALL);
-		counter.count(IndoorObject.ROOM);
-		counter.count(IndoorObject.ROOM);
-		counter.count(IndoorObject.STEPS);
-		counter.count(IndoorObject.TOILET_MALE);
+        counter.count(IndoorObject.CONCRETE_WALL);
+        counter.count(IndoorObject.CONCRETE_WALL);
+        counter.count(IndoorObject.CONCRETE_WALL);
+        counter.count(IndoorObject.ROOM);
+        counter.count(IndoorObject.ROOM);
+        counter.count(IndoorObject.STEPS);
+        counter.count(IndoorObject.TOILET_MALE);
 
-		List<IndoorObject> actualList = counter.getRanking();
+        List<IndoorObject> actualList = counter.getRanking();
 
-		//expectation
-		List<IndoorObject> expectedList = new ArrayList<>();
-		expectedList.add(IndoorObject.CONCRETE_WALL);
-		expectedList.add(IndoorObject.ROOM);
-		expectedList.add(IndoorObject.TOILET_MALE);
-		expectedList.add(IndoorObject.STEPS);
-		
-
-		//assertion
-		assertEquals(expectedList.get(0), actualList.get(0));
-		assertEquals(expectedList.get(1), actualList.get(1));
-		assertEquals(expectedList.get(2), actualList.get(2));
-		assertEquals(expectedList.get(3), actualList.get(3));
+        //expectation
+        List<IndoorObject> expectedList = new ArrayList<>();
+        expectedList.add(IndoorObject.CONCRETE_WALL);
+        expectedList.add(IndoorObject.ROOM);
+        expectedList.add(IndoorObject.TOILET_MALE);
+        expectedList.add(IndoorObject.STEPS);
 
 
-	}
+        //assertion
+        assertEquals(expectedList.get(0), actualList.get(0));
+        assertEquals(expectedList.get(1), actualList.get(1));
+        assertEquals(expectedList.get(2), actualList.get(2));
+        assertEquals(expectedList.get(3), actualList.get(3));
+
+
+    }
 }
