Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/RasterFiltersPlugin.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/RasterFiltersPlugin.java	(revision 32852)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/RasterFiltersPlugin.java	(revision 32853)
@@ -1,9 +1,3 @@
 package org.openstreetmap.josm.plugins.rasterfilters;
-
-import java.awt.Container;
-import java.io.File;
-import java.io.IOException;
-
-import javax.swing.JPanel;
 
 import org.openstreetmap.josm.Main;
@@ -26,4 +20,9 @@
 import org.openstreetmap.josm.plugins.rasterfilters.preferences.RasterFiltersPreferences;
 
+import javax.swing.*;
+import java.awt.*;
+import java.io.File;
+import java.io.IOException;
+
 /**
  * Main Plugin class. This class embed new plugin button for adding filter and
@@ -35,103 +34,104 @@
 public class RasterFiltersPlugin extends Plugin implements LayerChangeListener, ActiveLayerChangeListener {
 
-	private SideButton filterButton;
-	private ShowLayerFiltersDialog action;
-	private PreferenceSetting setting;
+    private SideButton filterButton;
+    private ShowLayerFiltersDialog action;
+    private PreferenceSetting setting;
 
-	public RasterFiltersPlugin(PluginInformation info) {
-		super(info);
-		Main.debug("Loading RasterFiltersPlugin");
+    public RasterFiltersPlugin(PluginInformation info) {
+        super(info);
+        Main.debug("Loading RasterFiltersPlugin");
 
-		File file = new File(getPluginDir());
-		if (file.mkdir()) {
+        File file = new File(getPluginDir());
+        if (file.mkdir()) {
 
-			// opening file with last user's settings
-			file = new File(file.getAbsoluteFile(), "urls.map");
-			if (!file.exists()) {
-				try {
-					file.createNewFile();
-				} catch (IOException e) {
-					Main.debug("Cannot create file" + file.getAbsolutePath() + "\n" + e.getMessage());
-				}
-			}
-		}
+            // opening file with last user's settings
+            file = new File(file.getAbsoluteFile(), "urls.map");
+            if (!file.exists()) {
+                try {
+                    file.createNewFile();
+                } catch (IOException e) {
+                    Main.debug("Cannot create file" + file.getAbsolutePath() + "\n" + e.getMessage());
+                }
+            }
+        }
 
-		FiltersDownloader.setPluginDir(getPluginDir());
-	}
+        FiltersDownloader.setPluginDir(getPluginDir());
+    }
 
-	@Override
-	public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
-		if (Main.isDisplayingMapView()) {
-			Main.getLayerManager().addLayerChangeListener(this);
+    @Override
+    public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
+        if (Main.isDisplayingMapView()) {
+            Main.getLayerManager().addLayerChangeListener(this);
             Main.getLayerManager().addActiveLayerChangeListener(this);
-		}
-	}
+        }
+    }
 
-	@Override
-	public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
-		if (!(Main.getLayerManager().getActiveLayer() instanceof ImageryLayer)) {
-			filterButton.setEnabled(false);
-		} else {
-			filterButton.setEnabled(true);
-		}
-	}
+    @Override
+    public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
+        if (!(Main.getLayerManager().getActiveLayer() instanceof ImageryLayer)) {
+            filterButton.setEnabled(false);
+        } else {
+            filterButton.setEnabled(true);
+        }
+    }
 
-	@Override
-	public void layerAdded(LayerAddEvent e) {
+    @Override
+    public void layerAdded(LayerAddEvent e) {
 
-		if (filterButton == null) {
+        if (filterButton == null) {
 
-			// filter reading and adding to the collections of FilterDownloader
-			FiltersDownloader.downloadFiltersInfoList();
-			FiltersDownloader.initFilters();
+            // filter reading and adding to the collections of FilterDownloader
+            FiltersDownloader.downloadFiltersInfoList();
+            FiltersDownloader.initFilters();
 
-			if (action == null) {
-				action = new ShowLayerFiltersDialog();
-			}
+            if (action == null) {
+                action = new ShowLayerFiltersDialog();
+            }
 
-			if (e.getAddedLayer() instanceof ImageryLayer) {
-				filterButton = new SideButton(action, false);
-				filterButton.setEnabled(true);
-			} else {
-				filterButton = new SideButton(action, false);
-				filterButton.setEnabled(false);
-			}
+            if (e.getAddedLayer() instanceof ImageryLayer) {
+                filterButton = new SideButton(action, false);
+                filterButton.setEnabled(true);
+            } else {
+                filterButton = new SideButton(action, false);
+                filterButton.setEnabled(false);
+            }
 
-			LayerListDialog dialog = LayerListDialog.getInstance();
+            LayerListDialog dialog = LayerListDialog.getInstance();
 
-			JPanel buttonRowPanel = (JPanel) ((JPanel) dialog.getComponent(2)).getComponent(0);
-			buttonRowPanel.add(filterButton);
-		}
+            JPanel buttonRowPanel = (JPanel) ((JPanel) dialog.getComponent(2)).getComponent(0);
+            buttonRowPanel.add(filterButton);
+        }
 
-		if (e.getAddedLayer() instanceof ImageryLayer) {
-			FiltersDialog dialog = new FiltersDialog((ImageryLayer) e.getAddedLayer());
-			action.addFiltersDialog(dialog);
-		}
+        if (e.getAddedLayer() instanceof ImageryLayer) {
+            FiltersDialog dialog = new FiltersDialog((ImageryLayer) e.getAddedLayer());
+            action.addFiltersDialog(dialog);
+        }
 
-	}
+    }
 
-	@Override
-	public void layerRemoving(LayerRemoveEvent e) {
+    @Override
+    public void layerRemoving(LayerRemoveEvent e) {
 
-		if (e.getRemovedLayer() instanceof ImageryLayer) {
-			FiltersDialog dialog = action.getDialogByLayer(e.getRemovedLayer());
-			((ImageryLayer) e.getRemovedLayer()).removeImageProcessor(dialog.getFiltersManager());
-			dialog.closeFrame();
-			action.removeFiltersDialog(dialog);
-		}
+        if (e.getRemovedLayer() instanceof ImageryLayer) {
+            FiltersDialog dialog = action.getDialogByLayer(e.getRemovedLayer());
+            ((ImageryLayer) e.getRemovedLayer()).removeImageProcessor(dialog.getFiltersManager());
+            dialog.closeFrame();
+            action.removeFiltersDialog(dialog);
+        }
 
-		if (Main.getLayerManager().getLayers().isEmpty()) {
+        if (Main.getLayerManager().getLayers().isEmpty()) {
+            Container container = filterButton.getParent();
+            if (container != null)
+                container.remove(filterButton);
 
-			Container container = filterButton.getParent();
-			if (container != null)
-				container.remove(filterButton);
-			
-			FiltersDownloader.destroyFilters();
-			filterButton = null;
+            FiltersDownloader.destroyFilters();
+            filterButton = null;
+        }
 
-		}
-	}
+        Main.getLayerManager().removeLayerChangeListener(this);
+        Main.getLayerManager().removeActiveLayerChangeListener(this);
+    }
 
-	@Override
+    @Override
     public void layerOrderChanged(LayerOrderChangeEvent e) {
         // Do nothing
@@ -139,10 +139,10 @@
 
     @Override
-	public PreferenceSetting getPreferenceSetting() {
-		if (setting == null) {
-			setting = new RasterFiltersPreferences();
-		}
+    public PreferenceSetting getPreferenceSetting() {
+        if (setting == null) {
+            setting = new RasterFiltersPreferences();
+        }
 
-		return setting;
-	}
+        return setting;
+    }
 }
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/actions/ShowLayerFiltersDialog.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/actions/ShowLayerFiltersDialog.java	(revision 32852)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/actions/ShowLayerFiltersDialog.java	(revision 32853)
@@ -1,14 +1,3 @@
 package org.openstreetmap.josm.plugins.rasterfilters.actions;
-
-import static org.openstreetmap.josm.tools.I18n.tr;
-
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.net.MalformedURLException;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.AbstractAction;
-import javax.swing.JMenuItem;
 
 import org.openstreetmap.josm.Main;
@@ -19,74 +8,82 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.net.MalformedURLException;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
 /**
  * The action that is called when user click on 'Choose filters' button
- *
+ * <p>
  * and sets image on that button
  *
  * @author Nipel-Crumple
- *
  */
 public final class ShowLayerFiltersDialog extends AbstractAction implements LayerAction {
 
-	private List<FiltersDialog> dialogs = new ArrayList<>();
+    private List<FiltersDialog> dialogs = new ArrayList<>();
 
-	/**
-	 * Constructs a new {@code ShowLayerFiltersDialog}.
-	 */
-	public ShowLayerFiltersDialog() {
-		putValue(NAME, tr("Filters"));
-		putValue(SHORT_DESCRIPTION, tr("Choose Filter"));
-		putValue(SMALL_ICON, ImageProvider.get("josm_filters_48.png"));
-	}
+    /**
+     * Constructs a new {@code ShowLayerFiltersDialog}.
+     */
+    public ShowLayerFiltersDialog() {
+        putValue(NAME, tr("Filters"));
+        putValue(SHORT_DESCRIPTION, tr("Choose Filter"));
+        putValue(SMALL_ICON, ImageProvider.get("josm_filters_48.png"));
+    }
 
-	public void addFiltersDialog(FiltersDialog dialog) {
-		dialogs.add(dialog);
-	}
+    public void addFiltersDialog(FiltersDialog dialog) {
+        dialogs.add(dialog);
+    }
 
-	public void removeFiltersDialog(FiltersDialog dialog) {
-		dialogs.remove(dialog);
-	}
+    public void removeFiltersDialog(FiltersDialog dialog) {
+        dialogs.remove(dialog);
+    }
 
-	@Override
-	public void actionPerformed(ActionEvent e) {
+    @Override
+    public void actionPerformed(ActionEvent e) {
 
-		Layer layer = Main.getLayerManager().getActiveLayer();
+        Layer layer = Main.getLayerManager().getActiveLayer();
 
-		if (layer instanceof ImageryLayer) {
-			for (FiltersDialog temp : dialogs) {
+        if (layer instanceof ImageryLayer) {
+            for (FiltersDialog temp : dialogs) {
 
-				if (temp.getLayer().equals(layer)) {
-					try {
-						temp.createAndShowGUI();
-					} catch (MalformedURLException e1) {
-						e1.printStackTrace();
-					}
-					break;
-				}
+                if (temp.getLayer().equals(layer)) {
+                    try {
+                        temp.createAndShowGUI();
+                    } catch (MalformedURLException e1) {
+                        e1.printStackTrace();
+                    }
+                    break;
+                }
 
-			}
-		}
-	}
+            }
+        }
+    }
 
-	public FiltersDialog getDialogByLayer(Layer layer) {
-		for (FiltersDialog dialog : dialogs) {
+    public FiltersDialog getDialogByLayer(Layer layer) {
+        for (FiltersDialog dialog : dialogs) {
 
-			if (dialog.getLayer().equals(layer)) {
-				return dialog;
-			}
+            if (dialog.getLayer().equals(layer)) {
+                return dialog;
+            }
 
-		}
+        }
 
-		return null;
-	}
+        return null;
+    }
 
-	@Override
-	public boolean supportLayers(List<Layer> layers) {
-		return true;
-	}
+    @Override
+    public boolean supportLayers(List<Layer> layers) {
+        return true;
+    }
 
-	@Override
-	public Component createMenuComponent() {
-		return new JMenuItem(this);
-	}
+    @Override
+    public Component createMenuComponent() {
+        return new JMenuItem(this);
+    }
 }
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/filters/Filter.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/filters/Filter.java	(revision 32852)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/filters/Filter.java	(revision 32853)
@@ -1,58 +1,55 @@
 package org.openstreetmap.josm.plugins.rasterfilters.filters;
 
+import javax.json.JsonObject;
 import java.awt.image.BufferedImage;
 import java.rmi.server.UID;
 
-import javax.json.JsonObject;
 /**
  * The Filter interface is inherited by all filters which are implemented.
- *
+ * <p>
  * This interface has four methods that should be overrided in
- *
+ * <p>
  * implementation.
  *
  * @author Nipel-Crumple
- *
  */
 public interface Filter {
 
-	/**
-	 * This method should take external fields values of filter's parameters
-	 * which should be described in the meta-information. In other words, if you have 3
-	 * controls of type 'linear_slider' and if state at least one of these
-	 * controls has changed, you will get new filter state in the form of
-	 * json object 'filterState', then parse it and
-	 * store given parameters' values in class.
-	 *
-	 * @param filterState json that has information about current filter state
-	 *
-	 * @return json object 'filterState'
-	 */
-	public JsonObject changeFilterState(JsonObject filterState);
+    /**
+     * This method should take external fields values of filter's parameters
+     * which should be described in the meta-information. In other words, if you have 3
+     * controls of type 'linear_slider' and if state at least one of these
+     * controls has changed, you will get new filter state in the form of
+     * json object 'filterState', then parse it and
+     * store given parameters' values in class.
+     *
+     * @param filterState json that has information about current filter state
+     * @return json object 'filterState'
+     */
+    public JsonObject changeFilterState(JsonObject filterState);
 
-	/**
-	 * This method processes given image and returns
-	 * updated version of the image. Algorithm and implementation of
-	 * this method depends on your needs and wishes.
-	 *
-	 * @param img image to process
-	 *
-	 * @return processed image
-	 */
-	public BufferedImage applyFilter(BufferedImage img);
+    /**
+     * This method processes given image and returns
+     * updated version of the image. Algorithm and implementation of
+     * this method depends on your needs and wishes.
+     *
+     * @param img image to process
+     * @return processed image
+     */
+    public BufferedImage applyFilter(BufferedImage img);
 
-	/**
-	 * Every filter must have his own unique ID number.
-	 * In case of rasterfilters plugin it ID is the type of UID.
-	 *
-	 * @param id sets value of ID field
-	 */
-	public void setId(UID id);
+    /**
+     * Every filter must have his own unique ID number.
+     * In case of rasterfilters plugin it ID is the type of UID.
+     *
+     * @param id sets value of ID field
+     */
+    public void setId(UID id);
 
-	/**
-	 * Getter for filter's ID field.
-	 *
-	 * @return id of filter
-	 */
-	public UID getId();
+    /**
+     * Getter for filter's ID field.
+     *
+     * @return id of filter
+     */
+    public UID getId();
 }
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/gui/FilterGuiListener.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/gui/FilterGuiListener.java	(revision 32852)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/gui/FilterGuiListener.java	(revision 32853)
@@ -1,5 +1,16 @@
 package org.openstreetmap.josm.plugins.rasterfilters.gui;
 
-import java.awt.Color;
+import com.bric.swing.ColorPicker;
+import org.openstreetmap.josm.plugins.rasterfilters.model.FilterStateModel;
+import org.openstreetmap.josm.plugins.rasterfilters.model.StateChangeListener;
+import org.openstreetmap.josm.plugins.rasterfilters.values.BooleanValue;
+import org.openstreetmap.josm.plugins.rasterfilters.values.ColorValue;
+import org.openstreetmap.josm.plugins.rasterfilters.values.SelectValue;
+import org.openstreetmap.josm.plugins.rasterfilters.values.SliderValue;
+
+import javax.swing.*;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
@@ -12,156 +23,140 @@
 import java.util.Set;
 
-import javax.swing.ComboBoxModel;
-import javax.swing.JCheckBox;
-import javax.swing.JComboBox;
-import javax.swing.JSlider;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-
-import org.openstreetmap.josm.plugins.rasterfilters.model.FilterStateModel;
-import org.openstreetmap.josm.plugins.rasterfilters.model.StateChangeListener;
-import org.openstreetmap.josm.plugins.rasterfilters.values.BooleanValue;
-import org.openstreetmap.josm.plugins.rasterfilters.values.ColorValue;
-import org.openstreetmap.josm.plugins.rasterfilters.values.SelectValue;
-import org.openstreetmap.josm.plugins.rasterfilters.values.SliderValue;
-
-import com.bric.swing.ColorPicker;
-
 /**
  * This class is GUI listener which tracks all changes of GUI controls
  * elements: sliders, checkboxes, color pickers and select lists.
+ *
  * @author Nipel-Crumple
- *
  */
 public class FilterGuiListener implements ChangeListener, ItemListener,
-		ActionListener, PropertyChangeListener, FilterStateOwner {
+        ActionListener, PropertyChangeListener, FilterStateOwner {
 
-	private StateChangeListener handler;
-	private FilterStateModel filterState;
-	private Set<ComboBoxModel<String>> models = new HashSet<>();
-	private UID filterId;
+    private StateChangeListener handler;
+    private FilterStateModel filterState;
+    private Set<ComboBoxModel<String>> models = new HashSet<>();
+    private UID filterId;
 
-	public FilterGuiListener(StateChangeListener handler) {
-		this.handler = handler;
-	}
+    public FilterGuiListener(StateChangeListener handler) {
+        this.handler = handler;
+    }
 
-	public void setFilterState(FilterStateModel state) {
-		this.filterState = state;
-	}
+    public void setFilterState(FilterStateModel state) {
+        this.filterState = state;
+    }
 
-	/**
-	 * Listener which responds on any changes of sliders values.
-	 */
-	@Override
-	public void stateChanged(ChangeEvent e) {
+    /**
+     * Listener which responds on any changes of sliders values.
+     */
+    @Override
+    public void stateChanged(ChangeEvent e) {
 
-		JSlider slider = (JSlider) e.getSource();
+        JSlider slider = (JSlider) e.getSource();
 
-		if (!slider.getValueIsAdjusting()) {
-			slider.setToolTipText(String.valueOf((double) slider.getValue() / 100));
-		}
+        if (!slider.getValueIsAdjusting()) {
+            slider.setToolTipText(String.valueOf((double) slider.getValue() / 100));
+        }
 
-		String parameterName = slider.getName();
+        String parameterName = slider.getName();
 
-		if (filterState.getParams().containsKey(parameterName)) {
+        if (filterState.getParams().containsKey(parameterName)) {
 
-			@SuppressWarnings("unchecked")
-			SliderValue<Number> value = (SliderValue<Number>) filterState
-					.getParams().get(parameterName);
+            @SuppressWarnings("unchecked")
+            SliderValue<Number> value = (SliderValue<Number>) filterState
+                    .getParams().get(parameterName);
 
-			if (value.isDouble()) {
-				value.setValue((double) slider.getValue() / 100);
-			} else {
-				value.setValue(slider.getValue());
-			}
+            if (value.isDouble()) {
+                value.setValue((double) slider.getValue() / 100);
+            } else {
+                value.setValue(slider.getValue());
+            }
 
-			filterState.getParams().put(parameterName, value);
-		}
+            filterState.getParams().put(parameterName, value);
+        }
 
-		// notifies about state is changed now and sends msg to FiltersManager
-		handler.filterStateChanged(filterId, filterState);
-	}
+        // notifies about state is changed now and sends msg to FiltersManager
+        handler.filterStateChanged(filterId, filterState);
+    }
 
-	@Override
-	public FilterStateModel getState() {
-		return filterState;
-	}
+    @Override
+    public FilterStateModel getState() {
+        return filterState;
+    }
 
-	public ComboBoxModel<String> addModel(ComboBoxModel<String> model) {
-		models.add(model);
-		return model;
-	}
+    public ComboBoxModel<String> addModel(ComboBoxModel<String> model) {
+        models.add(model);
+        return model;
+    }
 
-	public void setFilterId(UID filterId) {
-		this.filterId = filterId;
-	}
+    public void setFilterId(UID filterId) {
+        this.filterId = filterId;
+    }
 
-	public UID getFilterId() {
-		return filterId;
-	}
+    public UID getFilterId() {
+        return filterId;
+    }
 
-	/**
-	 * Method reacts on changes of checkbox GUI elements.
-	 */
-	@Override
-	public void itemStateChanged(ItemEvent e) {
+    /**
+     * Method reacts on changes of checkbox GUI elements.
+     */
+    @Override
+    public void itemStateChanged(ItemEvent e) {
 
-		JCheckBox box = (JCheckBox) e.getSource();
+        JCheckBox box = (JCheckBox) e.getSource();
 
-		String parameterName = box.getName();
+        String parameterName = box.getName();
 
-		BooleanValue value = (BooleanValue) filterState.getParams().get(
-				parameterName);
-		value.setValue(box.isSelected());
+        BooleanValue value = (BooleanValue) filterState.getParams().get(
+                parameterName);
+        value.setValue(box.isSelected());
 
-		handler.filterStateChanged(filterId, filterState);
+        handler.filterStateChanged(filterId, filterState);
 
-	}
+    }
 
-	/**
-	 * Methods tracks all changes of select lists
-	 */
-	@SuppressWarnings("unchecked")
-	@Override
-	public void actionPerformed(ActionEvent e) {
+    /**
+     * Methods tracks all changes of select lists
+     */
+    @SuppressWarnings("unchecked")
+    @Override
+    public void actionPerformed(ActionEvent e) {
 
-		JComboBox<String> box = (JComboBox<String>) e.getSource();
+        JComboBox<String> box = (JComboBox<String>) e.getSource();
 
-		String parameterName = box.getName();
-		SelectValue<String> value = (SelectValue<String>) filterState
-				.getParams().get(parameterName);
+        String parameterName = box.getName();
+        SelectValue<String> value = (SelectValue<String>) filterState
+                .getParams().get(parameterName);
 
-		ComboBoxModel<String> model = box.getModel();
-		String selectedItem = (String) model.getSelectedItem();
+        ComboBoxModel<String> model = box.getModel();
+        String selectedItem = (String) model.getSelectedItem();
 
-		value.setValue(selectedItem);
+        value.setValue(selectedItem);
 
-		// notify about state is changed now so send msg to FiltersManager
-		if (handler != null)
-			handler.filterStateChanged(filterId, filterState);
+        // notify about state is changed now so send msg to FiltersManager
+        if (handler != null)
+            handler.filterStateChanged(filterId, filterState);
 
-	}
+    }
 
-	/**
-	 * This listener's method is for responding on some
-	 * color pick changes.
-	 */
-	@Override
-	public void propertyChange(PropertyChangeEvent evt) {
-		ColorPicker picker = (ColorPicker) evt.getSource();
+    /**
+     * This listener's method is for responding on some
+     * color pick changes.
+     */
+    @Override
+    public void propertyChange(PropertyChangeEvent evt) {
+        ColorPicker picker = (ColorPicker) evt.getSource();
 
-		int r = picker.getColor().getRed();
-		int g = picker.getColor().getGreen();
-		int b = picker.getColor().getBlue();
+        int r = picker.getColor().getRed();
+        int g = picker.getColor().getGreen();
+        int b = picker.getColor().getBlue();
 
-		String parameterName = picker.getName();
+        String parameterName = picker.getName();
 
-		@SuppressWarnings("unchecked")
-		ColorValue<Color> value = (ColorValue<Color>) filterState.getParams()
-				.get(parameterName);
-		value.setValue(new Color(r, g, b));
+        @SuppressWarnings("unchecked")
+        ColorValue<Color> value = (ColorValue<Color>) filterState.getParams()
+                .get(parameterName);
+        value.setValue(new Color(r, g, b));
 
-		handler.filterStateChanged(filterId, filterState);
-	}
+        handler.filterStateChanged(filterId, filterState);
+    }
 
 }
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/gui/FilterPanel.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/gui/FilterPanel.java	(revision 32852)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/gui/FilterPanel.java	(revision 32853)
@@ -1,11 +1,14 @@
 package org.openstreetmap.josm.plugins.rasterfilters.gui;
 
-import static org.openstreetmap.josm.tools.I18n.tr;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.FlowLayout;
-import java.awt.Font;
+import com.bric.swing.ColorPicker;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.plugins.rasterfilters.model.FiltersManager;
+
+import javax.json.JsonArray;
+import javax.json.JsonObject;
+import javax.swing.*;
+import javax.swing.border.Border;
+import javax.swing.border.EmptyBorder;
+import java.awt.*;
 import java.awt.event.ActionListener;
 import java.awt.event.ItemListener;
@@ -13,25 +16,5 @@
 import java.util.Hashtable;
 
-import javax.json.JsonArray;
-import javax.json.JsonObject;
-import javax.swing.BorderFactory;
-import javax.swing.Box;
-import javax.swing.BoxLayout;
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JComboBox;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JSlider;
-import javax.swing.border.Border;
-import javax.swing.border.EmptyBorder;
-
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.plugins.rasterfilters.model.FiltersManager;
-
-import com.bric.swing.ColorPicker;
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 /**
@@ -41,296 +24,294 @@
  *
  * @author Nipel-Crumple
- *
  */
 public class FilterPanel extends JPanel {
 
-	private static final long serialVersionUID = 1L;
-	private UID filterId;
-	private int neededHeight;
-
-	public FilterPanel() {
-		super();
-		setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
-		setBackground(Color.white);
-	}
-
-	/**
-	 * Methods adds GUI element on filter's panel according to meta-information and
-	 * automatically resizes the given filter's panel.
-	 *
-	 * @param json filter's meta-information
-	 *
-	 * @return added GUI element
-	 */
-	public JComponent addGuiElement(JsonObject json) {
-		String type = json.getString("type");
-
-		if (type.equals("linear_slider")) {
-
-			setNeededHeight(getNeededHeight() + 70);
-
-			return createSlider(json);
-
-		} else if (type.equals("checkbox")) {
-
-			setNeededHeight(getNeededHeight() + 30);
-
-			JCheckBox checkBox = createCheckBox(json.getString("title"));
-			checkBox.setSelected(json.getBoolean("default"));
-			checkBox.setName(json.getString("name"));
-
-			return checkBox;
-
-		} else if (type.equals("select")) {
-
-			setNeededHeight(getNeededHeight() + 50);
-
-			return createSelect(json);
-
-		} else if (type.equals("colorpicker")) {
-
-			setNeededHeight(getNeededHeight() + 220);
-
-			return createColorPicker(json);
-		}
-		return null;
-	}
-
-	private JComponent createSelect(JsonObject json) {
-
-		Font font = new Font("Arial", Font.PLAIN, 14);
-
-		JPanel selectPanel = new JPanel();
-
-		selectPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
-		selectPanel.setBackground(Color.white);
-		selectPanel.setLayout(new BoxLayout(selectPanel, BoxLayout.X_AXIS));
-		selectPanel.setMaximumSize(new Dimension(300, 40));
-
-		JLabel selectTitle = new JLabel(json.getString("title"));
-
-		selectTitle.setFont(font);
-		selectTitle.setBackground(Color.white);
-
-		JsonArray valuesArray = json.getJsonArray("values");
-
-		DefaultComboBoxModel<String> model = new DefaultComboBoxModel<>();
-
-		model.setSelectedItem(json.getString("default"));
-
-		for (int i = 0; i < valuesArray.size(); i++) {
-			model.addElement(valuesArray.getString(i));
-		}
-
-		JComboBox<String> selectBox = new JComboBox<>(model);
-		selectBox.setMinimumSize(new Dimension(140, 30));
-
-		selectPanel.add(selectTitle);
-		selectPanel.add(Box.createHorizontalGlue());
-		selectPanel.add(selectBox);
-		selectBox.setName(json.getString("name"));
-
-		this.add(selectPanel);
-
-		return selectBox;
-	}
-
-	public JComponent createColorPicker(JsonObject json) {
-
-		ColorPicker picker = new ColorPicker(false, false);
-		picker.setPreferredSize(new Dimension(200,180));
-		picker.setMode(ColorPicker.HUE);
-		picker.setName(json.getString("name"));
-
-		addControlTitle(json.getString("title"));
-
-		this.add(picker);
-
-		return picker;
-	}
-
-	public JCheckBox createCheckBox(String text) {
-
-		JPanel checkBoxPanel = new JPanel();
-		checkBoxPanel.setMaximumSize(new Dimension(300, 30));
-		checkBoxPanel.setLayout(new BoxLayout(checkBoxPanel, BoxLayout.X_AXIS));
-		checkBoxPanel.setBackground(Color.white);
-
-		JCheckBox checkBox = new JCheckBox(text);
-		Font font = new Font("Arial", Font.PLAIN, 12);
-
-		checkBox.setFont(font);
-		checkBox.setBackground(Color.white);
-		checkBox.setName(text);
-
-		checkBoxPanel.add(checkBox);
-
-		this.add(checkBoxPanel);
-
-		return checkBox;
-	}
-
-	private JCheckBox createDisableBox(ItemListener listener) {
-		JCheckBox disable = new JCheckBox("Disable");
-		Font font = new Font("Arial", Font.PLAIN, 12);
-
-		disable.addItemListener(listener);
-		disable.setFont(font);
-
-		return disable;
-	}
-
-	private JButton createRemoveButton(ActionListener listener) {
-		JButton removeButton = new JButton("Remove");
-		Font font = new Font("Arial", Font.PLAIN, 12);
-
-		removeButton.setFont(font);
-		removeButton.setName("remove");
-
-		removeButton.addActionListener(listener);
-
-		return removeButton;
-	}
-
-	public JPanel createBottomPanel(FiltersManager listener) {
-
-		this.add(Box.createRigidArea(new Dimension(0, 10)));
-		JPanel bottom = new JPanel();
-
-		bottom.setLayout(new BoxLayout(bottom, BoxLayout.X_AXIS));
-		bottom.setMaximumSize(new Dimension(300, 40));
-		bottom.setBorder(BorderFactory
-				.createMatteBorder(2, 0, 0, 0, Color.gray));
-
-		bottom.add(createDisableBox(listener));
-		bottom.add(Box.createHorizontalGlue());
-		bottom.add(createRemoveButton(listener));
-
-		this.add(bottom);
-
-		return bottom;
-	}
-
-	private void addControlTitle(String labelText) {
-		Font labelFont = new Font("Arial", Font.PLAIN, 14);
-
-		JPanel sliderLabelPanel = new JPanel();
-		sliderLabelPanel.setMaximumSize(new Dimension(400, 30));
-		sliderLabelPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
-		sliderLabelPanel.setBackground(Color.white);
-
-		JLabel sliderLabel = new JLabel(labelText, JLabel.LEFT);
-		sliderLabel.setFont(labelFont);
-		sliderLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
-		sliderLabel.setVisible(true);
-
-		sliderLabelPanel.add(sliderLabel);
-
-		this.add(sliderLabelPanel);
-	}
-
-	public JSlider createSlider(JsonObject json) {
-
-		Border sliderBorder = new EmptyBorder(5, 5, 5, 5);
-
-		addControlTitle(json.getString("title"));
-
-		Hashtable<Integer, JLabel> labelTable = new Hashtable<>();
-
-		JsonArray array = json.getJsonArray("scale");
-
-		String valueType = json.getString("value_type");
-
-		JSlider slider = null;
-		if (valueType.equals("integer")) {
-			int minValue = array.getInt(0);
-			int maxValue = array.getInt(1);
-			int initValue = json.getInt("default");
-
-			Main.debug("Slider is integer\n");
-			Main.debug("minValue: " + String.valueOf(minValue) +
-					"maxValue: " + String.valueOf(maxValue));
-			try {
-				slider = new JSlider(JSlider.HORIZONTAL, minValue, maxValue,
-						initValue);
-				slider.setName(json.getString("name"));
-				slider.setToolTipText(String.valueOf(slider.getValue()));
-				slider.setMinorTickSpacing(maxValue / 4);
-			} catch(IllegalArgumentException e) {
-
-				 JOptionPane.showMessageDialog(
-						 Main.parent,
-						 tr("JSlider initialization error. Make sure your meta-inf is correct."),
-						 tr("Error"),
-						 JOptionPane.ERROR_MESSAGE);
-			}
-
-		} else if (valueType.equals("float")) {
-
-			Main.debug("Slider is float\n");
-			// every value is supplied by 10 to be integer for slider
-			double minValueDouble = array.getJsonNumber(0).doubleValue();
-			double maxValueDouble = array.getJsonNumber(1).doubleValue();
-			Main.debug("DminValue: " + String.valueOf(minValueDouble) +
-					"DmaxValue: " + String.valueOf(maxValueDouble));
-
-			int minValue = (int) (minValueDouble * 100);
-			int maxValue = (int) (maxValueDouble * 100);
-
-
-			double initValue = json.getJsonNumber("default").doubleValue() * 100;
-			double delta = (maxValue - minValue) / 100;
-
-			for (int i = 0; i <= maxValue; i++) {
-
-				if ((i % 20) == 0) {
-
-					labelTable.put(Integer.valueOf(i),
-							new JLabel(String.valueOf(i * delta / 100)));
-
-				}
-			}
-
-			try {
-
-				slider = new JSlider(JSlider.HORIZONTAL, minValue, maxValue, (int) initValue);
-				slider.setMinorTickSpacing(maxValue / 4);
-				slider.setName(json.getString("name"));
-				slider.setToolTipText(String.valueOf((double) slider.getValue() / 100));
-
-
-			} catch (IllegalArgumentException e) {
-
-				 JOptionPane.showMessageDialog(
-						 Main.parent,
-						 tr("JSlider initialization error. Make sure your meta-inf is correct."),
-						 tr("Error"),
-						 JOptionPane.ERROR_MESSAGE);
-			}
-		}
-
-		slider.setBackground(this.getBackground());
-		slider.setBorder(sliderBorder);
-		slider.setPaintTicks(true);
-		slider.setPaintLabels(true);
-		this.add(slider);
-
-		return slider;
-	}
-
-	public void setFilterId(UID filterId) {
-		this.filterId = filterId;
-	}
-
-	public UID getFilterId() {
-		return filterId;
-	}
-
-	public int getNeededHeight() {
-		return neededHeight;
-	}
-
-	public void setNeededHeight(int neededHeight) {
-		this.neededHeight = neededHeight;
-	}
+    private static final long serialVersionUID = 1L;
+    private UID filterId;
+    private int neededHeight;
+
+    public FilterPanel() {
+        super();
+        setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
+        setBackground(Color.white);
+    }
+
+    /**
+     * Methods adds GUI element on filter's panel according to meta-information and
+     * automatically resizes the given filter's panel.
+     *
+     * @param json filter's meta-information
+     * @return added GUI element
+     */
+    public JComponent addGuiElement(JsonObject json) {
+        String type = json.getString("type");
+
+        if (type.equals("linear_slider")) {
+
+            setNeededHeight(getNeededHeight() + 70);
+
+            return createSlider(json);
+
+        } else if (type.equals("checkbox")) {
+
+            setNeededHeight(getNeededHeight() + 30);
+
+            JCheckBox checkBox = createCheckBox(json.getString("title"));
+            checkBox.setSelected(json.getBoolean("default"));
+            checkBox.setName(json.getString("name"));
+
+            return checkBox;
+
+        } else if (type.equals("select")) {
+
+            setNeededHeight(getNeededHeight() + 50);
+
+            return createSelect(json);
+
+        } else if (type.equals("colorpicker")) {
+
+            setNeededHeight(getNeededHeight() + 220);
+
+            return createColorPicker(json);
+        }
+        return null;
+    }
+
+    private JComponent createSelect(JsonObject json) {
+
+        Font font = new Font("Arial", Font.PLAIN, 14);
+
+        JPanel selectPanel = new JPanel();
+
+        selectPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
+        selectPanel.setBackground(Color.white);
+        selectPanel.setLayout(new BoxLayout(selectPanel, BoxLayout.X_AXIS));
+        selectPanel.setMaximumSize(new Dimension(300, 40));
+
+        JLabel selectTitle = new JLabel(json.getString("title"));
+
+        selectTitle.setFont(font);
+        selectTitle.setBackground(Color.white);
+
+        JsonArray valuesArray = json.getJsonArray("values");
+
+        DefaultComboBoxModel<String> model = new DefaultComboBoxModel<>();
+
+        model.setSelectedItem(json.getString("default"));
+
+        for (int i = 0; i < valuesArray.size(); i++) {
+            model.addElement(valuesArray.getString(i));
+        }
+
+        JComboBox<String> selectBox = new JComboBox<>(model);
+        selectBox.setMinimumSize(new Dimension(140, 30));
+
+        selectPanel.add(selectTitle);
+        selectPanel.add(Box.createHorizontalGlue());
+        selectPanel.add(selectBox);
+        selectBox.setName(json.getString("name"));
+
+        this.add(selectPanel);
+
+        return selectBox;
+    }
+
+    public JComponent createColorPicker(JsonObject json) {
+
+        ColorPicker picker = new ColorPicker(false, false);
+        picker.setPreferredSize(new Dimension(200, 180));
+        picker.setMode(ColorPicker.HUE);
+        picker.setName(json.getString("name"));
+
+        addControlTitle(json.getString("title"));
+
+        this.add(picker);
+
+        return picker;
+    }
+
+    public JCheckBox createCheckBox(String text) {
+
+        JPanel checkBoxPanel = new JPanel();
+        checkBoxPanel.setMaximumSize(new Dimension(300, 30));
+        checkBoxPanel.setLayout(new BoxLayout(checkBoxPanel, BoxLayout.X_AXIS));
+        checkBoxPanel.setBackground(Color.white);
+
+        JCheckBox checkBox = new JCheckBox(text);
+        Font font = new Font("Arial", Font.PLAIN, 12);
+
+        checkBox.setFont(font);
+        checkBox.setBackground(Color.white);
+        checkBox.setName(text);
+
+        checkBoxPanel.add(checkBox);
+
+        this.add(checkBoxPanel);
+
+        return checkBox;
+    }
+
+    private JCheckBox createDisableBox(ItemListener listener) {
+        JCheckBox disable = new JCheckBox("Disable");
+        Font font = new Font("Arial", Font.PLAIN, 12);
+
+        disable.addItemListener(listener);
+        disable.setFont(font);
+
+        return disable;
+    }
+
+    private JButton createRemoveButton(ActionListener listener) {
+        JButton removeButton = new JButton("Remove");
+        Font font = new Font("Arial", Font.PLAIN, 12);
+
+        removeButton.setFont(font);
+        removeButton.setName("remove");
+
+        removeButton.addActionListener(listener);
+
+        return removeButton;
+    }
+
+    public JPanel createBottomPanel(FiltersManager listener) {
+
+        this.add(Box.createRigidArea(new Dimension(0, 10)));
+        JPanel bottom = new JPanel();
+
+        bottom.setLayout(new BoxLayout(bottom, BoxLayout.X_AXIS));
+        bottom.setMaximumSize(new Dimension(300, 40));
+        bottom.setBorder(BorderFactory
+                .createMatteBorder(2, 0, 0, 0, Color.gray));
+
+        bottom.add(createDisableBox(listener));
+        bottom.add(Box.createHorizontalGlue());
+        bottom.add(createRemoveButton(listener));
+
+        this.add(bottom);
+
+        return bottom;
+    }
+
+    private void addControlTitle(String labelText) {
+        Font labelFont = new Font("Arial", Font.PLAIN, 14);
+
+        JPanel sliderLabelPanel = new JPanel();
+        sliderLabelPanel.setMaximumSize(new Dimension(400, 30));
+        sliderLabelPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
+        sliderLabelPanel.setBackground(Color.white);
+
+        JLabel sliderLabel = new JLabel(labelText, JLabel.LEFT);
+        sliderLabel.setFont(labelFont);
+        sliderLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
+        sliderLabel.setVisible(true);
+
+        sliderLabelPanel.add(sliderLabel);
+
+        this.add(sliderLabelPanel);
+    }
+
+    public JSlider createSlider(JsonObject json) {
+
+        Border sliderBorder = new EmptyBorder(5, 5, 5, 5);
+
+        addControlTitle(json.getString("title"));
+
+        Hashtable<Integer, JLabel> labelTable = new Hashtable<>();
+
+        JsonArray array = json.getJsonArray("scale");
+
+        String valueType = json.getString("value_type");
+
+        JSlider slider = null;
+        if (valueType.equals("integer")) {
+            int minValue = array.getInt(0);
+            int maxValue = array.getInt(1);
+            int initValue = json.getInt("default");
+
+            Main.debug("Slider is integer\n");
+            Main.debug("minValue: " + String.valueOf(minValue) +
+                    "maxValue: " + String.valueOf(maxValue));
+            try {
+                slider = new JSlider(JSlider.HORIZONTAL, minValue, maxValue,
+                        initValue);
+                slider.setName(json.getString("name"));
+                slider.setToolTipText(String.valueOf(slider.getValue()));
+                slider.setMinorTickSpacing(maxValue / 4);
+            } catch (IllegalArgumentException e) {
+
+                JOptionPane.showMessageDialog(
+                        Main.parent,
+                        tr("JSlider initialization error. Make sure your meta-inf is correct."),
+                        tr("Error"),
+                        JOptionPane.ERROR_MESSAGE);
+            }
+
+        } else if (valueType.equals("float")) {
+
+            Main.debug("Slider is float\n");
+            // every value is supplied by 10 to be integer for slider
+            double minValueDouble = array.getJsonNumber(0).doubleValue();
+            double maxValueDouble = array.getJsonNumber(1).doubleValue();
+            Main.debug("DminValue: " + String.valueOf(minValueDouble) +
+                    "DmaxValue: " + String.valueOf(maxValueDouble));
+
+            int minValue = (int) (minValueDouble * 100);
+            int maxValue = (int) (maxValueDouble * 100);
+
+
+            double initValue = json.getJsonNumber("default").doubleValue() * 100;
+            double delta = (maxValue - minValue) / 100;
+
+            for (int i = 0; i <= maxValue; i++) {
+
+                if ((i % 20) == 0) {
+
+                    labelTable.put(Integer.valueOf(i),
+                            new JLabel(String.valueOf(i * delta / 100)));
+
+                }
+            }
+
+            try {
+
+                slider = new JSlider(JSlider.HORIZONTAL, minValue, maxValue, (int) initValue);
+                slider.setMinorTickSpacing(maxValue / 4);
+                slider.setName(json.getString("name"));
+                slider.setToolTipText(String.valueOf((double) slider.getValue() / 100));
+
+
+            } catch (IllegalArgumentException e) {
+
+                JOptionPane.showMessageDialog(
+                        Main.parent,
+                        tr("JSlider initialization error. Make sure your meta-inf is correct."),
+                        tr("Error"),
+                        JOptionPane.ERROR_MESSAGE);
+            }
+        }
+
+        slider.setBackground(this.getBackground());
+        slider.setBorder(sliderBorder);
+        slider.setPaintTicks(true);
+        slider.setPaintLabels(true);
+        this.add(slider);
+
+        return slider;
+    }
+
+    public void setFilterId(UID filterId) {
+        this.filterId = filterId;
+    }
+
+    public UID getFilterId() {
+        return filterId;
+    }
+
+    public int getNeededHeight() {
+        return neededHeight;
+    }
+
+    public void setNeededHeight(int neededHeight) {
+        this.neededHeight = neededHeight;
+    }
 }
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/gui/FilterStateOwner.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/gui/FilterStateOwner.java	(revision 32852)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/gui/FilterStateOwner.java	(revision 32853)
@@ -2,13 +2,13 @@
 
 import org.openstreetmap.josm.plugins.rasterfilters.model.FilterStateModel;
+
 /**
  * Filter state's keeper. This interface is implemented by {@link FilterGuiListeener}.
  *
  * @author Nipel-Crumple
- *
  */
 public interface FilterStateOwner {
 
-	public FilterStateModel getState();
+    public FilterStateModel getState();
 
 }
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/gui/FiltersDialog.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/gui/FiltersDialog.java	(revision 32852)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/gui/FiltersDialog.java	(revision 32853)
@@ -1,7 +1,12 @@
 package org.openstreetmap.josm.plugins.rasterfilters.gui;
 
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Dimension;
+import org.openstreetmap.josm.gui.layer.ImageryLayer;
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.plugins.rasterfilters.model.FiltersManager;
+import org.openstreetmap.josm.plugins.rasterfilters.preferences.FiltersDownloader;
+
+import javax.swing.*;
+import javax.swing.border.EmptyBorder;
+import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
@@ -10,20 +15,4 @@
 import java.util.Set;
 
-import javax.swing.Box;
-import javax.swing.BoxLayout;
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.border.EmptyBorder;
-
-import org.openstreetmap.josm.gui.layer.ImageryLayer;
-import org.openstreetmap.josm.gui.layer.Layer;
-import org.openstreetmap.josm.plugins.rasterfilters.model.FiltersManager;
-import org.openstreetmap.josm.plugins.rasterfilters.preferences.FiltersDownloader;
-
 /**
  * This filters is responsible for creating filter's dialog where user can
@@ -31,228 +20,227 @@
  *
  * @author Nipel-Crumple
- *
  */
 public class FiltersDialog {
 
-	public JFrame frame;
-	private JComboBox<String> filterChooser;
-	private JPanel pane;
-	private JButton addButton;
-	private DefaultComboBoxModel<String> listModel = new DefaultComboBoxModel<>();
-	private Set<String> showedFiltersTitles = new HashSet<>();
-	private JPanel filterContainer;
-	private Layer layer;
-	private FiltersManager filtersManager;
-	private JScrollPane filterContainerScroll;
-
-	public FiltersDialog(ImageryLayer layer) {
-		this.layer = layer;
-		this.filtersManager = new FiltersManager(this);
-		layer.addImageProcessor(filtersManager);
-	}
-
-	public JPanel createFilterContainer() {
-		if (filterContainer == null) {
-
-			filterContainer = new JPanel();
-			filterContainer.setLayout(new BoxLayout(getFilterContainer(),
-					BoxLayout.Y_AXIS));
-			filterContainer.setBackground(Color.white);
-
-			filterContainerScroll = new JScrollPane(getFilterContainer(),
-					JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
-					JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
-
-			pane.add(filterContainerScroll);
-
-		}
-
-		return filterContainer;
-	}
-
-	public void deleteFilterContainer() {
-
-		Component parent = filterContainerScroll.getParent();
-		filterContainerScroll.removeAll();
-		((JPanel) parent).remove(filterContainerScroll);
-
-		filterContainer = null;
-
-		parent.revalidate();
-		parent.repaint();
-	}
-
-	public JFrame createAndShowGUI() throws MalformedURLException {
-		listModel.removeAllElements();
-
-		Set<String> filterTitles = FiltersDownloader.filterTitles;
-
-		for (String temp : filterTitles) {
-
-			if (!showedFiltersTitles.contains(temp)) {
-				listModel.addElement(temp);
-			}
-
-		}
-
-		if (frame != null) {
-
-			filterChooser.setModel(listModel);
-			filterChooser.revalidate();
-			frame.setVisible(true);
-
-		} else {
-
-			frame = new JFrame();
-			String title = "Filters | " + layer.getName();
-			frame.setTitle(title);
-			frame.setMinimumSize(new Dimension(350, 420));
-			frame.setPreferredSize(new Dimension(350, 420));
-
-			pane = new JPanel();
-			pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));
-
-			pane.setBorder(new EmptyBorder(10, 5, 10, 5));
-			pane.setPreferredSize(new Dimension(300, 400));
-			pane.setBackground(Color.white);
-
-			JPanel topPanel = new JPanel();
-			topPanel.setLayout(new BoxLayout(topPanel, BoxLayout.Y_AXIS));
-			topPanel.setMaximumSize(new Dimension(300, 50));
-			topPanel.setMinimumSize(new Dimension(300, 50));
-			topPanel.setBackground(Color.white);
-
-			JPanel labelPanel = new JPanel();
-			labelPanel.setLayout(new BoxLayout(labelPanel, BoxLayout.X_AXIS));
-			labelPanel.setMaximumSize(new Dimension(300, 20));
-			labelPanel.setBackground(Color.white);
-
-			JLabel label = new JLabel("Add filter");
-			labelPanel.add(label);
-			// pane.add(labelPanel);
-
-			// TODO why after add clicked the top panel is resized???
-
-			// panel that contains the checkBox and add button
-			JPanel chooseFilterPanel = new JPanel();
-			chooseFilterPanel.setMinimumSize(new Dimension(300, 30));
-			chooseFilterPanel.setLayout(new BoxLayout(chooseFilterPanel,
-					BoxLayout.X_AXIS));
-			chooseFilterPanel.setBackground(Color.white);
-
-			filterChooser = new JComboBox<>(getListModel());
-			filterChooser.setMaximumSize(new Dimension(200, 30));
-			chooseFilterPanel.add(filterChooser);
-
-			// empty space area between select and add button
-			chooseFilterPanel.add(Box.createRigidArea(new Dimension(10, 0)));
-
-			addButton = new JButton();
-			addButton.setText("add");
-			addButton.setAlignmentX(Component.CENTER_ALIGNMENT);
-			addButton.setMaximumSize(new Dimension(90, 30));
-			addButton.addActionListener(new AddFilterToPanelListener());
-			//
-			// // check if there is no meta information
-			// Main.debug("Empty " +
-			// String.valueOf(FiltersDownloader.filterTitles.isEmpty()));
-			// if (FiltersDownloader.filterTitles.isEmpty() ||
-			// listModel.getSize() == 0) {
-			// addButton.setEnabled(false);
-			// filterChooser.setEnabled(false);
-			// } else {
-			// addButton.setEnabled(true);
-			// filterChooser.setEnabled(true);
-			// }
-
-			chooseFilterPanel.add(getAddButton());
-
-			topPanel.add(labelPanel);
-			topPanel.add(chooseFilterPanel);
-			pane.add(topPanel);
-			// pane.add(chooseFilterPanel);
-			// pane.add(Box.createRigidArea(new Dimension(0, 20)));
-
-			frame.setContentPane(pane);
-			frame.pack();
-			frame.setVisible(true);
-		}
-
-		if (FiltersDownloader.filterTitles.isEmpty()
-				|| listModel.getSize() == 0) {
-			addButton.setEnabled(false);
-			filterChooser.setEnabled(false);
-		} else {
-			addButton.setEnabled(true);
-			filterChooser.setEnabled(true);
-		}
-
-		return frame;
-	}
-
-	public FiltersManager createFilterManager() {
-		return new FiltersManager(this);
-	}
-
-	public void closeFrame() {
-		if (frame != null) {
-			if (frame.isShowing()) {
-				frame.dispose();
-			}
-		}
-	}
-
-	public FiltersManager getFiltersManager() {
-		return filtersManager;
-	}
-
-	class AddFilterToPanelListener implements ActionListener {
-
-		@Override
-		public void actionPerformed(ActionEvent e) {
-
-			String title = (String) listModel.getSelectedItem();
-			JPanel panel = null;
-
-			panel = filtersManager.createPanelByTitle(title);
-
-			if (panel != null) {
-				filterContainer = createFilterContainer();
-				filterContainer.add(panel);
-			}
-
-			listModel.removeElement(title);
-			showedFiltersTitles.add(title);
-
-			if (listModel.getSize() == 0) {
-				filterChooser.setEnabled(false);
-				addButton.setEnabled(false);
-			}
-
-		}
-	}
-
-	public Set<String> getShowedFiltersTitles() {
-		return showedFiltersTitles;
-	}
-
-	public Layer getLayer() {
-		return layer;
-	}
-
-	public JPanel getFilterContainer() {
-		return filterContainer;
-	}
-
-	public DefaultComboBoxModel<String> getListModel() {
-		return listModel;
-	}
-
-	public JComboBox<String> getFilterChooser() {
-		return filterChooser;
-	}
-
-	public JButton getAddButton() {
-		return addButton;
-	}
+    public JFrame frame;
+    private JComboBox<String> filterChooser;
+    private JPanel pane;
+    private JButton addButton;
+    private DefaultComboBoxModel<String> listModel = new DefaultComboBoxModel<>();
+    private Set<String> showedFiltersTitles = new HashSet<>();
+    private JPanel filterContainer;
+    private Layer layer;
+    private FiltersManager filtersManager;
+    private JScrollPane filterContainerScroll;
+
+    public FiltersDialog(ImageryLayer layer) {
+        this.layer = layer;
+        this.filtersManager = new FiltersManager(this);
+        layer.addImageProcessor(filtersManager);
+    }
+
+    public JPanel createFilterContainer() {
+        if (filterContainer == null) {
+
+            filterContainer = new JPanel();
+            filterContainer.setLayout(new BoxLayout(getFilterContainer(),
+                    BoxLayout.Y_AXIS));
+            filterContainer.setBackground(Color.white);
+
+            filterContainerScroll = new JScrollPane(getFilterContainer(),
+                    JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
+                    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+
+            pane.add(filterContainerScroll);
+
+        }
+
+        return filterContainer;
+    }
+
+    public void deleteFilterContainer() {
+
+        Component parent = filterContainerScroll.getParent();
+        filterContainerScroll.removeAll();
+        ((JPanel) parent).remove(filterContainerScroll);
+
+        filterContainer = null;
+
+        parent.revalidate();
+        parent.repaint();
+    }
+
+    public JFrame createAndShowGUI() throws MalformedURLException {
+        listModel.removeAllElements();
+
+        Set<String> filterTitles = FiltersDownloader.filterTitles;
+
+        for (String temp : filterTitles) {
+
+            if (!showedFiltersTitles.contains(temp)) {
+                listModel.addElement(temp);
+            }
+
+        }
+
+        if (frame != null) {
+
+            filterChooser.setModel(listModel);
+            filterChooser.revalidate();
+            frame.setVisible(true);
+
+        } else {
+
+            frame = new JFrame();
+            String title = "Filters | " + layer.getName();
+            frame.setTitle(title);
+            frame.setMinimumSize(new Dimension(350, 420));
+            frame.setPreferredSize(new Dimension(350, 420));
+
+            pane = new JPanel();
+            pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));
+
+            pane.setBorder(new EmptyBorder(10, 5, 10, 5));
+            pane.setPreferredSize(new Dimension(300, 400));
+            pane.setBackground(Color.white);
+
+            JPanel topPanel = new JPanel();
+            topPanel.setLayout(new BoxLayout(topPanel, BoxLayout.Y_AXIS));
+            topPanel.setMaximumSize(new Dimension(300, 50));
+            topPanel.setMinimumSize(new Dimension(300, 50));
+            topPanel.setBackground(Color.white);
+
+            JPanel labelPanel = new JPanel();
+            labelPanel.setLayout(new BoxLayout(labelPanel, BoxLayout.X_AXIS));
+            labelPanel.setMaximumSize(new Dimension(300, 20));
+            labelPanel.setBackground(Color.white);
+
+            JLabel label = new JLabel("Add filter");
+            labelPanel.add(label);
+            // pane.add(labelPanel);
+
+            // TODO why after add clicked the top panel is resized???
+
+            // panel that contains the checkBox and add button
+            JPanel chooseFilterPanel = new JPanel();
+            chooseFilterPanel.setMinimumSize(new Dimension(300, 30));
+            chooseFilterPanel.setLayout(new BoxLayout(chooseFilterPanel,
+                    BoxLayout.X_AXIS));
+            chooseFilterPanel.setBackground(Color.white);
+
+            filterChooser = new JComboBox<>(getListModel());
+            filterChooser.setMaximumSize(new Dimension(200, 30));
+            chooseFilterPanel.add(filterChooser);
+
+            // empty space area between select and add button
+            chooseFilterPanel.add(Box.createRigidArea(new Dimension(10, 0)));
+
+            addButton = new JButton();
+            addButton.setText("add");
+            addButton.setAlignmentX(Component.CENTER_ALIGNMENT);
+            addButton.setMaximumSize(new Dimension(90, 30));
+            addButton.addActionListener(new AddFilterToPanelListener());
+            //
+            // // check if there is no meta information
+            // Main.debug("Empty " +
+            // String.valueOf(FiltersDownloader.filterTitles.isEmpty()));
+            // if (FiltersDownloader.filterTitles.isEmpty() ||
+            // listModel.getSize() == 0) {
+            // addButton.setEnabled(false);
+            // filterChooser.setEnabled(false);
+            // } else {
+            // addButton.setEnabled(true);
+            // filterChooser.setEnabled(true);
+            // }
+
+            chooseFilterPanel.add(getAddButton());
+
+            topPanel.add(labelPanel);
+            topPanel.add(chooseFilterPanel);
+            pane.add(topPanel);
+            // pane.add(chooseFilterPanel);
+            // pane.add(Box.createRigidArea(new Dimension(0, 20)));
+
+            frame.setContentPane(pane);
+            frame.pack();
+            frame.setVisible(true);
+        }
+
+        if (FiltersDownloader.filterTitles.isEmpty()
+                || listModel.getSize() == 0) {
+            addButton.setEnabled(false);
+            filterChooser.setEnabled(false);
+        } else {
+            addButton.setEnabled(true);
+            filterChooser.setEnabled(true);
+        }
+
+        return frame;
+    }
+
+    public FiltersManager createFilterManager() {
+        return new FiltersManager(this);
+    }
+
+    public void closeFrame() {
+        if (frame != null) {
+            if (frame.isShowing()) {
+                frame.dispose();
+            }
+        }
+    }
+
+    public FiltersManager getFiltersManager() {
+        return filtersManager;
+    }
+
+    class AddFilterToPanelListener implements ActionListener {
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+
+            String title = (String) listModel.getSelectedItem();
+            JPanel panel = null;
+
+            panel = filtersManager.createPanelByTitle(title);
+
+            if (panel != null) {
+                filterContainer = createFilterContainer();
+                filterContainer.add(panel);
+            }
+
+            listModel.removeElement(title);
+            showedFiltersTitles.add(title);
+
+            if (listModel.getSize() == 0) {
+                filterChooser.setEnabled(false);
+                addButton.setEnabled(false);
+            }
+
+        }
+    }
+
+    public Set<String> getShowedFiltersTitles() {
+        return showedFiltersTitles;
+    }
+
+    public Layer getLayer() {
+        return layer;
+    }
+
+    public JPanel getFilterContainer() {
+        return filterContainer;
+    }
+
+    public DefaultComboBoxModel<String> getListModel() {
+        return listModel;
+    }
+
+    public JComboBox<String> getFilterChooser() {
+        return filterChooser;
+    }
+
+    public JButton getAddButton() {
+        return addButton;
+    }
 }
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/model/FilterStateModel.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/model/FilterStateModel.java	(revision 32852)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/model/FilterStateModel.java	(revision 32853)
@@ -1,18 +1,14 @@
 package org.openstreetmap.josm.plugins.rasterfilters.model;
 
-import java.awt.Color;
+import org.openstreetmap.josm.plugins.rasterfilters.values.*;
+
+import javax.json.Json;
+import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
+import java.awt.*;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import javax.json.Json;
-import javax.json.JsonObject;
-import javax.json.JsonObjectBuilder;
-
-import org.openstreetmap.josm.plugins.rasterfilters.values.BooleanValue;
-import org.openstreetmap.josm.plugins.rasterfilters.values.ColorValue;
-import org.openstreetmap.josm.plugins.rasterfilters.values.SelectValue;
-import org.openstreetmap.josm.plugins.rasterfilters.values.SliderValue;
-import org.openstreetmap.josm.plugins.rasterfilters.values.Value;
 /**
  * Filter state's model which stores all parameters of
@@ -22,143 +18,142 @@
  *
  * @author Nipel-Crumple
- *
  */
 public class FilterStateModel {
 
-	private Map<String, Value<?>> params = new HashMap<>();
-	private String filterClassName;
+    private Map<String, Value<?>> params = new HashMap<>();
+    private String filterClassName;
 
-	public FilterStateModel() {
+    public FilterStateModel() {
 
-	}
+    }
 
-	public Map<String, Value<?>> getParams() {
-		return params;
-	}
+    public Map<String, Value<?>> getParams() {
+        return params;
+    }
 
-	public String getFilterClassName() {
-		return filterClassName;
-	}
+    public String getFilterClassName() {
+        return filterClassName;
+    }
 
-	public void setFilterClassName(String filterClassName) {
-		this.filterClassName = filterClassName;
-	}
+    public void setFilterClassName(String filterClassName) {
+        this.filterClassName = filterClassName;
+    }
 
-	public void addParams(JsonObject json) {
+    public void addParams(JsonObject json) {
 
-		String parameterName = json.getString("name");
-		String valueType = json.getString("value_type");
+        String parameterName = json.getString("name");
+        String valueType = json.getString("value_type");
 
-		// setting up the beginning state of filter
-		// according to its metainfo
-		if (json.getString("type").equals("linear_slider")) {
+        // setting up the beginning state of filter
+        // according to its metainfo
+        if (json.getString("type").equals("linear_slider")) {
 
-			if (valueType.equals("float") || valueType.equals("double")) {
+            if (valueType.equals("float") || valueType.equals("double")) {
 
-				double defaultValue = json.getJsonNumber("default")
-						.doubleValue();
+                double defaultValue = json.getJsonNumber("default")
+                        .doubleValue();
 
-				SliderValue<Double> value = new SliderValue<>(parameterName,
-						defaultValue);
-				params.put(parameterName, value);
+                SliderValue<Double> value = new SliderValue<>(parameterName,
+                        defaultValue);
+                params.put(parameterName, value);
 
-			} else if (valueType.equals("integer")) {
+            } else if (valueType.equals("integer")) {
 
-				int defaultValue = json.getJsonNumber("default").intValue();
+                int defaultValue = json.getJsonNumber("default").intValue();
 
-				SliderValue<Integer> value = new SliderValue<>(parameterName,
-						defaultValue);
-				params.put(parameterName, value);
+                SliderValue<Integer> value = new SliderValue<>(parameterName,
+                        defaultValue);
+                params.put(parameterName, value);
 
-			}
+            }
 
-		} else if (json.getString("type").equals("checkbox")) {
+        } else if (json.getString("type").equals("checkbox")) {
 
-			boolean defaultValue = json.getBoolean("default");
+            boolean defaultValue = json.getBoolean("default");
 
-			BooleanValue value = new BooleanValue(parameterName, defaultValue);
-			params.put(parameterName, value);
+            BooleanValue value = new BooleanValue(parameterName, defaultValue);
+            params.put(parameterName, value);
 
-		} else if (json.getString("type").equals("select")) {
+        } else if (json.getString("type").equals("select")) {
 
-			String defaultValue = json.getString("default");
+            String defaultValue = json.getString("default");
 
-			SelectValue<String> value = new SelectValue<>(parameterName,
-					defaultValue);
-			params.put(parameterName, value);
+            SelectValue<String> value = new SelectValue<>(parameterName,
+                    defaultValue);
+            params.put(parameterName, value);
 
-		} else if (json.getString("type").equals("colorpicker")) {
+        } else if (json.getString("type").equals("colorpicker")) {
 
-			JsonObject defaultColorJson = json.getJsonObject("default");
-			int r = defaultColorJson.getInt("red");
-			int g = defaultColorJson.getInt("green");
-			int b = defaultColorJson.getInt("blue");
+            JsonObject defaultColorJson = json.getJsonObject("default");
+            int r = defaultColorJson.getInt("red");
+            int g = defaultColorJson.getInt("green");
+            int b = defaultColorJson.getInt("blue");
 
-			Color defaultColor = new Color(r, g, b);
+            Color defaultColor = new Color(r, g, b);
 
-			ColorValue<Color> value = new ColorValue<>(parameterName,
-					defaultColor);
-			params.put(parameterName, value);
+            ColorValue<Color> value = new ColorValue<>(parameterName,
+                    defaultColor);
+            params.put(parameterName, value);
 
-		}
-	}
+        }
+    }
 
-	/**
-	 * Method generates json from the current filter's model state.
-	 *
-	 * @return encoded json which describes current filter's state
-	 */
-	public JsonObject encodeJson() {
+    /**
+     * Method generates json from the current filter's model state.
+     *
+     * @return encoded json which describes current filter's state
+     */
+    public JsonObject encodeJson() {
 
-		JsonObjectBuilder jsonBuilder = Json.createObjectBuilder();
+        JsonObjectBuilder jsonBuilder = Json.createObjectBuilder();
 
-		for (Entry<String, Value<?>> entry : params.entrySet()) {
+        for (Entry<String, Value<?>> entry : params.entrySet()) {
 
-			Object value = entry.getValue().getValue();
+            Object value = entry.getValue().getValue();
 
-			if (value instanceof String) {
+            if (value instanceof String) {
 
-				jsonBuilder.add(entry.getKey(),
-						Json.createObjectBuilder().add("value", (String) value)
-								.build());
+                jsonBuilder.add(entry.getKey(),
+                        Json.createObjectBuilder().add("value", (String) value)
+                                .build());
 
-			}
+            }
 
-			if (value instanceof Boolean) {
-				jsonBuilder.add(entry.getKey(),
-						Json.createObjectBuilder()
-								.add("value", (Boolean) value).build());
-			}
+            if (value instanceof Boolean) {
+                jsonBuilder.add(entry.getKey(),
+                        Json.createObjectBuilder()
+                                .add("value", (Boolean) value).build());
+            }
 
-			if (value instanceof Number) {
+            if (value instanceof Number) {
 
-				if (value instanceof Double) {
+                if (value instanceof Double) {
 
-					jsonBuilder.add(entry.getKey(), Json.createObjectBuilder()
-							.add("value", (Double) value).build());
+                    jsonBuilder.add(entry.getKey(), Json.createObjectBuilder()
+                            .add("value", (Double) value).build());
 
-				} else if (value instanceof Integer) {
+                } else if (value instanceof Integer) {
 
-					jsonBuilder.add(entry.getKey(), Json.createObjectBuilder()
-							.add("value", (Integer) value).build());
+                    jsonBuilder.add(entry.getKey(), Json.createObjectBuilder()
+                            .add("value", (Integer) value).build());
 
-				}
-			}
+                }
+            }
 
-			if (value instanceof Color) {
+            if (value instanceof Color) {
 
-				jsonBuilder.add(entry.getKey(),
-							Json.createObjectBuilder()
-								.add("value", Json.createObjectBuilder()
-												  .add("red", ((Color) value).getRed())
-												  .add("green", ((Color) value).getGreen())
-												  .add("blue", ((Color) value).getBlue())
-												  .build())
-								.build());
+                jsonBuilder.add(entry.getKey(),
+                        Json.createObjectBuilder()
+                                .add("value", Json.createObjectBuilder()
+                                        .add("red", ((Color) value).getRed())
+                                        .add("green", ((Color) value).getGreen())
+                                        .add("blue", ((Color) value).getBlue())
+                                        .build())
+                                .build());
 
-			}
-		}
+            }
+        }
 
-		return jsonBuilder.build();
-	}
+        return jsonBuilder.build();
+    }
 }
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/model/FiltersManager.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/model/FiltersManager.java	(revision 32852)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/model/FiltersManager.java	(revision 32853)
@@ -1,27 +1,5 @@
 package org.openstreetmap.josm.plugins.rasterfilters.model;
 
-import java.awt.Dimension;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
-import java.awt.image.BufferedImage;
-import java.rmi.server.UID;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Set;
-
-import javax.json.JsonArray;
-import javax.json.JsonObject;
-import javax.swing.BorderFactory;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JComboBox;
-import javax.swing.JComponent;
-import javax.swing.JPanel;
-import javax.swing.JSlider;
-
+import com.bric.swing.ColorPicker;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.layer.ImageProcessor;
@@ -32,5 +10,16 @@
 import org.openstreetmap.josm.plugins.rasterfilters.preferences.FiltersDownloader;
 
-import com.bric.swing.ColorPicker;
+import javax.json.JsonArray;
+import javax.json.JsonObject;
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.image.BufferedImage;
+import java.rmi.server.UID;
+import java.util.*;
+
 /**
  * This class adds filter to the dialog and can also remove
@@ -38,231 +27,229 @@
  *
  * @author Nipel-Crumple
- *
  */
 public class FiltersManager implements StateChangeListener, ImageProcessor,
-ActionListener, ItemListener {
-
-	public Map<UID, Filter> filtersMap = new LinkedHashMap<>();
-	public Set<Filter> disabledFilters = new HashSet<>();
-	public FiltersDialog dialog;
-
-	public FiltersManager(FiltersDialog dialog) {
-		this.dialog = dialog;
-	}
-
-	@SuppressWarnings("unchecked")
-	private JPanel createFilterWithPanel(JsonObject meta) {
-
-		FilterPanel fp = new FilterPanel();
-
-		// listener to track sliders and checkbox of creating filter
-		FilterGuiListener filterListener = new FilterGuiListener(this);
-
-		String filterClassName = meta.getString("classname");
-
-		String filterTitle = meta.getString("title");
-
-		fp.setName(filterTitle);
-
-		// creating model of the filter
-		FilterStateModel filterState = new FilterStateModel();
-		filterState.setFilterClassName(filterClassName);
-
-		// loading jar with filter at runtime
-		Class<?> clazz;
-
-		// filter for adding to map states
-		Filter filter = null;
-
-		try {
-			Main.debug("ClassName for loading " + filterState.getFilterClassName());
-			clazz = FiltersDownloader.loader.loadClass(filterState
-					.getFilterClassName());
-			filter = (Filter) clazz.getConstructor().newInstance();
-
-		} catch (ReflectiveOperationException | IllegalArgumentException | SecurityException e) {
-			e.printStackTrace();
-		}
-
-		if (filter != null) {
-
-			UID filterId = new UID();
-			fp.setFilterId(filterId);
-			filterListener.setFilterId(filterId);
-			filter.setId(filterId);
-			filtersMap.put(filterId, filter);
-
-			// all filters enabled in the beggining by default
-		}
-
-		fp.setBorder(BorderFactory.createTitledBorder(meta.getString("title")));
-
-		JsonArray controls = meta.getJsonArray("controls");
-
-		for (int i = 0; i < controls.size(); i++) {
-
-			JsonObject temp = controls.getJsonObject(i);
-			// Main.debug(temp.toString());
-
-			JComponent component = fp.addGuiElement(temp);
-
-			if (component != null) {
-
-				if (component instanceof JSlider) {
-					((JSlider) component).addChangeListener(filterListener);
-				} else if (component instanceof JCheckBox) {
-					((JCheckBox) component).addItemListener(filterListener);
-				} else if (component instanceof JComboBox) {
-					((JComboBox<String>) component).addActionListener(filterListener);
-				} else if (component instanceof ColorPicker) {
-					((ColorPicker) component).addPropertyChangeListener(filterListener);
-				}
-
-				// adding parameters to the filter instance
-				filterState.addParams(temp);
-			}
-		}
-
-		fp.setNeededHeight(fp.getNeededHeight() + 60);
-		fp.setMaximumSize(new Dimension(300, fp.getNeededHeight()));
-		fp.setPreferredSize(new Dimension(300, fp.getNeededHeight()));
-
-		if (filter != null) {
-		    filter.changeFilterState(filterState.encodeJson());
-		}
-		Main.getLayerManager().getActiveLayer().setFilterStateChanged();
-
-		fp.createBottomPanel(this);
-
-		filterListener.setFilterState(filterState);
-
-		Main.debug("The number of elems in the Filters map is equal \n"
-				+ filtersMap.size());
-
-		return fp;
-	}
-
-	/**
-	 * The method notifies about changes in the filter's status.
-	 *
-	 * @param filterState
-	 *            - model that contains info about filter which was changed
-	 */
-	@Override
-	public void filterStateChanged(UID filterId, FilterStateModel filterState) {
-
-		if (filtersMap.get(filterId) != null)
-			filtersMap.get(filterId).changeFilterState(filterState.encodeJson());
-
-		if (Main.getLayerManager().getActiveLayer() != null) {
-			Main.getLayerManager().getActiveLayer().setFilterStateChanged();
-		}
-
-	}
-
-	public JPanel createPanelByTitle(String title) {
-
-		for (JsonObject json : FiltersDownloader.filtersMeta) {
-
-			if (json.getString("title").equals(title)) {
-				return createFilterWithPanel(json);
-			}
-		}
-
-		return null;
-	}
-
-	@Override
-	public BufferedImage process(BufferedImage image) {
-
-		Iterator<Filter> it = filtersMap.values().iterator();
-
-		// iterating through map of filters according to the order
-		while (it.hasNext()) {
-
-			Filter curFilter = it.next();
-
-			if (!disabledFilters.contains(curFilter)) {
-				// if next filter will return null
-				// we should take an old example of the image
-				BufferedImage oldImg = image;
-
-				// applying filter to the current image
-				image = curFilter.applyFilter(image);
-
-				if (image == null) {
-					image = oldImg;
-				}
-			}
-		}
-
-		return image;
-	}
-
-	@Override
-	public void actionPerformed(ActionEvent e) {
-
-		FilterPanel filterPanel = (FilterPanel) ((JButton) e.getSource())
-				.getParent().getParent();
-
-		UID filterId = filterPanel.getFilterId();
-
-		// removing filter from the filters chain
-		filtersMap.remove(filterId);
-
-		dialog.getShowedFiltersTitles().remove(filterPanel.getName());
-
-		// add filterTitle to the 'choose list' on the top
-		dialog.getListModel().addElement(filterPanel.getName());
-
-		// removing panel from filterContainer
-		filterPanel.removeAll();
-		dialog.getFilterContainer().remove(filterPanel);
-
-		if (dialog.getFilterContainer().getComponentCount() == 0) {
-
-			dialog.deleteFilterContainer();
-
-		} else {
-
-			dialog.getFilterContainer().revalidate();
-			dialog.getFilterContainer().repaint();
-
-		}
-
-		// if there were no elements in the list
-		// but then it appeared
-		// button should be enabled
-		if (!dialog.getAddButton().isEnabled()) {
-			dialog.getFilterChooser().setEnabled(true);
-			dialog.getAddButton().setEnabled(true);
-		}
-
-		Main.getLayerManager().getActiveLayer().setFilterStateChanged();
-
-	}
-
-	@Override
-	public void itemStateChanged(ItemEvent e) {
-
-		JCheckBox enableFilter = (JCheckBox) e.getSource();
-		FilterPanel filterPanel = (FilterPanel) enableFilter.getParent()
-				.getParent();
-
-		if (enableFilter.isSelected()) {
-
-			UID filterId = filterPanel.getFilterId();
-			disabledFilters.add(filtersMap.get(filterId));
-
-			Main.getLayerManager().getActiveLayer().setFilterStateChanged();
-
-		} else {
-
-			UID filterId = filterPanel.getFilterId();
-			disabledFilters.remove(filtersMap.get(filterId));
-
-			Main.getLayerManager().getActiveLayer().setFilterStateChanged();
-
-		}
-	}
+        ActionListener, ItemListener {
+
+    public Map<UID, Filter> filtersMap = new LinkedHashMap<>();
+    public Set<Filter> disabledFilters = new HashSet<>();
+    public FiltersDialog dialog;
+
+    public FiltersManager(FiltersDialog dialog) {
+        this.dialog = dialog;
+    }
+
+    @SuppressWarnings("unchecked")
+    private JPanel createFilterWithPanel(JsonObject meta) {
+
+        FilterPanel fp = new FilterPanel();
+
+        // listener to track sliders and checkbox of creating filter
+        FilterGuiListener filterListener = new FilterGuiListener(this);
+
+        String filterClassName = meta.getString("classname");
+
+        String filterTitle = meta.getString("title");
+
+        fp.setName(filterTitle);
+
+        // creating model of the filter
+        FilterStateModel filterState = new FilterStateModel();
+        filterState.setFilterClassName(filterClassName);
+
+        // loading jar with filter at runtime
+        Class<?> clazz;
+
+        // filter for adding to map states
+        Filter filter = null;
+
+        try {
+            Main.debug("ClassName for loading " + filterState.getFilterClassName());
+            clazz = FiltersDownloader.loader.loadClass(filterState
+                    .getFilterClassName());
+            filter = (Filter) clazz.getConstructor().newInstance();
+
+        } catch (ReflectiveOperationException | IllegalArgumentException | SecurityException e) {
+            e.printStackTrace();
+        }
+
+        if (filter != null) {
+
+            UID filterId = new UID();
+            fp.setFilterId(filterId);
+            filterListener.setFilterId(filterId);
+            filter.setId(filterId);
+            filtersMap.put(filterId, filter);
+
+            // all filters enabled in the beggining by default
+        }
+
+        fp.setBorder(BorderFactory.createTitledBorder(meta.getString("title")));
+
+        JsonArray controls = meta.getJsonArray("controls");
+
+        for (int i = 0; i < controls.size(); i++) {
+
+            JsonObject temp = controls.getJsonObject(i);
+            // Main.debug(temp.toString());
+
+            JComponent component = fp.addGuiElement(temp);
+
+            if (component != null) {
+
+                if (component instanceof JSlider) {
+                    ((JSlider) component).addChangeListener(filterListener);
+                } else if (component instanceof JCheckBox) {
+                    ((JCheckBox) component).addItemListener(filterListener);
+                } else if (component instanceof JComboBox) {
+                    ((JComboBox<String>) component).addActionListener(filterListener);
+                } else if (component instanceof ColorPicker) {
+                    ((ColorPicker) component).addPropertyChangeListener(filterListener);
+                }
+
+                // adding parameters to the filter instance
+                filterState.addParams(temp);
+            }
+        }
+
+        fp.setNeededHeight(fp.getNeededHeight() + 60);
+        fp.setMaximumSize(new Dimension(300, fp.getNeededHeight()));
+        fp.setPreferredSize(new Dimension(300, fp.getNeededHeight()));
+
+        if (filter != null) {
+            filter.changeFilterState(filterState.encodeJson());
+        }
+        Main.getLayerManager().getActiveLayer().setFilterStateChanged();
+
+        fp.createBottomPanel(this);
+
+        filterListener.setFilterState(filterState);
+
+        Main.debug("The number of elems in the Filters map is equal \n"
+                + filtersMap.size());
+
+        return fp;
+    }
+
+    /**
+     * The method notifies about changes in the filter's status.
+     *
+     * @param filterState - model that contains info about filter which was changed
+     */
+    @Override
+    public void filterStateChanged(UID filterId, FilterStateModel filterState) {
+
+        if (filtersMap.get(filterId) != null)
+            filtersMap.get(filterId).changeFilterState(filterState.encodeJson());
+
+        if (Main.getLayerManager().getActiveLayer() != null) {
+            Main.getLayerManager().getActiveLayer().setFilterStateChanged();
+        }
+
+    }
+
+    public JPanel createPanelByTitle(String title) {
+
+        for (JsonObject json : FiltersDownloader.filtersMeta) {
+
+            if (json.getString("title").equals(title)) {
+                return createFilterWithPanel(json);
+            }
+        }
+
+        return null;
+    }
+
+    @Override
+    public BufferedImage process(BufferedImage image) {
+
+        Iterator<Filter> it = filtersMap.values().iterator();
+
+        // iterating through map of filters according to the order
+        while (it.hasNext()) {
+
+            Filter curFilter = it.next();
+
+            if (!disabledFilters.contains(curFilter)) {
+                // if next filter will return null
+                // we should take an old example of the image
+                BufferedImage oldImg = image;
+
+                // applying filter to the current image
+                image = curFilter.applyFilter(image);
+
+                if (image == null) {
+                    image = oldImg;
+                }
+            }
+        }
+
+        return image;
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent e) {
+
+        FilterPanel filterPanel = (FilterPanel) ((JButton) e.getSource())
+                .getParent().getParent();
+
+        UID filterId = filterPanel.getFilterId();
+
+        // removing filter from the filters chain
+        filtersMap.remove(filterId);
+
+        dialog.getShowedFiltersTitles().remove(filterPanel.getName());
+
+        // add filterTitle to the 'choose list' on the top
+        dialog.getListModel().addElement(filterPanel.getName());
+
+        // removing panel from filterContainer
+        filterPanel.removeAll();
+        dialog.getFilterContainer().remove(filterPanel);
+
+        if (dialog.getFilterContainer().getComponentCount() == 0) {
+
+            dialog.deleteFilterContainer();
+
+        } else {
+
+            dialog.getFilterContainer().revalidate();
+            dialog.getFilterContainer().repaint();
+
+        }
+
+        // if there were no elements in the list
+        // but then it appeared
+        // button should be enabled
+        if (!dialog.getAddButton().isEnabled()) {
+            dialog.getFilterChooser().setEnabled(true);
+            dialog.getAddButton().setEnabled(true);
+        }
+
+        Main.getLayerManager().getActiveLayer().setFilterStateChanged();
+
+    }
+
+    @Override
+    public void itemStateChanged(ItemEvent e) {
+
+        JCheckBox enableFilter = (JCheckBox) e.getSource();
+        FilterPanel filterPanel = (FilterPanel) enableFilter.getParent()
+                .getParent();
+
+        if (enableFilter.isSelected()) {
+
+            UID filterId = filterPanel.getFilterId();
+            disabledFilters.add(filtersMap.get(filterId));
+
+            Main.getLayerManager().getActiveLayer().setFilterStateChanged();
+
+        } else {
+
+            UID filterId = filterPanel.getFilterId();
+            disabledFilters.remove(filtersMap.get(filterId));
+
+            Main.getLayerManager().getActiveLayer().setFilterStateChanged();
+
+        }
+    }
 }
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/model/StateChangeListener.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/model/StateChangeListener.java	(revision 32852)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/model/StateChangeListener.java	(revision 32853)
@@ -6,10 +6,10 @@
  * Interface that notifies about filter's state is changed.
  * This interface is implemented by {@link FiltersManager}.
+ *
  * @author Nipel-Crumple
- *
  */
 public interface StateChangeListener {
 
-	public void filterStateChanged(UID filterId, FilterStateModel filterState);
+    public void filterStateChanged(UID filterId, FilterStateModel filterState);
 
 }
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/preferences/FiltersDownloader.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/preferences/FiltersDownloader.java	(revision 32852)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/preferences/FiltersDownloader.java	(revision 32853)
@@ -1,40 +1,3 @@
 package org.openstreetmap.josm.plugins.rasterfilters.preferences;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.StringReader;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.net.URLConnection;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.Set;
-import java.util.TreeSet;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.json.Json;
-import javax.json.JsonArray;
-import javax.json.JsonObject;
-import javax.json.JsonReader;
 
 import org.jsoup.Jsoup;
@@ -43,4 +6,19 @@
 import org.jsoup.select.Elements;
 import org.openstreetmap.josm.Main;
+
+import javax.json.Json;
+import javax.json.JsonArray;
+import javax.json.JsonObject;
+import javax.json.JsonReader;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.*;
+import java.net.*;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 /**
  * This class is responsible for downloading jars which contains
@@ -52,325 +30,325 @@
  */
 public class FiltersDownloader implements ActionListener {
-	private static volatile String pluginDir;
-
-	public static Set<JsonObject> filtersMeta = new HashSet<>();
-	public static Set<String> filterTitles = new TreeSet<>();
-	public static Set<URL> binariesLocalUrls = new HashSet<>();
-	public static ClassLoader loader;
-	public static Map<String, String> urlsMap = new HashMap<>();
-
-	private static Set<JsonObject> filtersMetaToLoad = new HashSet<>();
-	static List<FilterInfo> filtersInfoList = new ArrayList<>();
-
-	public static List<FilterInfo> downloadFiltersInfoList() {
-
-		JsonObject jsonRequest = Json
-				.createObjectBuilder()
-				.add("id", new Random().nextInt())
-				.add("method", "wiki.getPageHTML")
-				.add("params",
-						Json.createArrayBuilder().add("ImageFilters").build())
-				.build();
-
-		String jsonRequestString = jsonRequest.toString();
-
-		URL wikiApi;
-		HttpURLConnection wikiConnection;
-		try {
-			wikiApi = new URL("https://josm.openstreetmap.de/jsonrpc");
-			wikiConnection = (HttpURLConnection) wikiApi.openConnection();
-			wikiConnection.setDoOutput(true);
-			wikiConnection.setDoInput(true);
-
-			wikiConnection.setRequestProperty("Content-Type",
-					"application/json");
-			wikiConnection.setRequestProperty("Method", "POST");
-			wikiConnection.connect();
-
-			OutputStream os = wikiConnection.getOutputStream();
-			os.write(jsonRequestString.getBytes("UTF-8"));
-			os.close();
-
-			int HttpResult = wikiConnection.getResponseCode();
-			if (HttpResult == HttpURLConnection.HTTP_OK) {
-
-				JsonReader jsonStream = Json
-						.createReader(new InputStreamReader(wikiConnection
-								.getInputStream(), "utf-8"));
-
-				JsonObject jsonResponse = jsonStream.readObject();
-				jsonStream.close();
-
-				Elements trTagElems = Jsoup.parse(
-						jsonResponse.getString("result"))
-						.getElementsByTag("tr");
-				for (Element element : trTagElems) {
-
-					Elements elems = element.getElementsByTag("td");
-					if (!elems.isEmpty()) {
-						String name = elems.get(0).text();
-						String owner = elems.get(1).text();
-						String description = elems.get(2).text();
-
-						String link = elems.get(0).getElementsByTag("a")
-								.attr("href");
-
-						JsonObject meta = loadMeta(link);
-
-						String paramName = "rasterfilters."
-								+ meta.getString("name");
-
-						boolean needToLoad = Main.pref.getBoolean(paramName);
-
-						if (needToLoad) {
-							JsonArray binaries = meta.getJsonArray("binaries");
-							filterTitles.add(meta.getString("title"));
-							for (int i = 0; i < binaries.size(); i++) {
-								filtersMetaToLoad.add(meta);
-								loadBinaryToFile(binaries.getString(i));
-							}
-						}
-						FilterInfo newFilterInfo = new FilterInfo(name,
-								description, meta, needToLoad);
-						newFilterInfo.setOwner(owner);
-
-						if (!filtersInfoList.contains(newFilterInfo)) {
-							filtersInfoList.add(newFilterInfo);
-						}
-					}
-				}
-
-			} else {
-				Main.debug("Error happenned while requesting for the list of filters");
-			}
-		} catch (IOException e1) {
-			// TODO Auto-generated catch block
-			e1.printStackTrace();
-		}
-
-		loadBinariesFromMeta(filtersMetaToLoad);
-
-		return filtersInfoList;
-	}
-
-	public static JsonObject loadMeta(String link) {
-
-		Pattern p = Pattern.compile("ImageFilters/\\w.*");
-		Matcher m = p.matcher(link);
-
-		if (m.find()) {
-			link = link.substring(m.start());
-		}
-
-		JsonObject jsonRequest = Json.createObjectBuilder()
-				.add("id", new Random().nextInt())
-				.add("method", "wiki.getPageHTML")
-				.add("params", Json.createArrayBuilder().add(link).build())
-				.build();
-
-		String jsonStringRequest = jsonRequest.toString();
-
-		URL wikiApi;
-		HttpURLConnection wikiConnection;
-		JsonObject meta = null;
-
-		try {
-			wikiApi = new URL("https://josm.openstreetmap.de/jsonrpc");
-			wikiConnection = (HttpURLConnection) wikiApi.openConnection();
-			wikiConnection.setDoOutput(true);
-			wikiConnection.setDoInput(true);
-
-			wikiConnection.setRequestProperty("Content-Type",
-					"application/json");
-			wikiConnection.setRequestProperty("Method", "POST");
-			wikiConnection.connect();
-
-			OutputStream os = wikiConnection.getOutputStream();
-			os.write(jsonStringRequest.getBytes("UTF-8"));
-			os.close();
-
-			int HttpResult = wikiConnection.getResponseCode();
-			if (HttpResult == HttpURLConnection.HTTP_OK) {
-
-				JsonReader jsonStream = Json
-						.createReader(new InputStreamReader(wikiConnection
-								.getInputStream(), "UTF-8"));
-
-				JsonObject jsonResponse = jsonStream.readObject();
-				jsonStream.close();
-
-				String jsonPage = jsonResponse.getString("result");
-
-				Document doc = Jsoup.parse(jsonPage, "UTF-8");
-				String json = doc.getElementsByTag("pre").first().text();
-
-				JsonReader reader = Json.createReader(new StringReader(json));
-				meta = reader.readObject();
-				reader.close();
-
-			} else {
-				Main.debug(wikiConnection.getResponseMessage());
-			}
-		} catch (IOException e1) {
-			e1.printStackTrace();
-		}
-
-		filtersMeta.add(meta);
-
-		return meta;
-	}
-
-	public static void initFilters() {
-		File file = new File(pluginDir, "urls.map");
-		Main.debug("EXIST FILE? " + file.exists());
-
-		try (BufferedReader br = Files.newBufferedReader(file.toPath(), StandardCharsets.UTF_8)) {
-			String temp;
-
-			while ((temp = br.readLine()) != null) {
-				String[] mapEntry = temp.split("\\t");
-				File fileUrl = new File(mapEntry[1]);
-				if (fileUrl.exists()) {
-					URL url;
-					try {
-						url = new URL("jar", "", fileUrl.toURI().toURL() + "!/");
-						Main.debug("binaryUrl: " + url.toString());
-						binariesLocalUrls.add(url);
-					} catch (MalformedURLException e) {
-						Main.debug("Initializing filters with unknown protocol. \n"
-								+ e.getMessage());
-					}
-				}
-			}
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-
-		Main.debug("BinariesLocal : " + binariesLocalUrls.toString());
-
-		loader = new URLClassLoader(
-				binariesLocalUrls.toArray(new URL[binariesLocalUrls.size()]),
-				FiltersDownloader.class.getClassLoader());
-	}
-
-	public static void destroyFilters() {
-		filterTitles.clear();
-		binariesLocalUrls.clear();
-		FiltersDownloader.filtersMeta.clear();
-	}
-
-	@Override
-	public void actionPerformed(ActionEvent e) {
-
-		for (FilterInfo temp : filtersInfoList) {
-			if (temp.isNeedToDownload()) {
-
-				if (!filtersMetaToLoad.contains(temp.getMeta())) {
-					filtersMetaToLoad.add(temp.getMeta());
-				}
-
-				filterTitles.add(temp.getMeta().getString("title"));
-			} else {
-				filterTitles.remove(temp.getMeta().getString("title"));
-			}
-		}
-
-		loadBinariesFromMeta(filtersMetaToLoad);
-
-		filtersMetaToLoad.clear();
-	}
-
-	public static void loadBinariesFromMeta(Set<JsonObject> metaList) {
-
-		File file = new File(pluginDir, "urls.map");
-		Main.debug("pluginDir and urls map" + file.getAbsoluteFile());
-
-		try (BufferedWriter writer = Files.newBufferedWriter(file.toPath(), StandardCharsets.UTF_8)) {
-		    for (JsonObject temp : metaList) {
-			JsonArray binaries = temp.getJsonArray("binaries");
-
-			for (int i = 0; i < binaries.size(); i++) {
-
-				String localFile = loadBinaryToFile(binaries.getString(i));
-
-				try {
-					writer.append(binaries.getString(i));
-					writer.append("\t");
-					writer.append(localFile);
-					writer.append("\n");
-				} catch (IOException e) {
-					e.printStackTrace();
-				}
-			}
-		    }
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-
-	public static void setPluginDir(String dir) {
-		pluginDir = dir;
-	}
-
-	public static String loadBinaryToFile(String fromUrl) {
-
-		// Main.debug("Need to load binary from " + fromUrl);
-
-		URL url = null;
-		URLConnection con = null;
-
-		Pattern p = Pattern.compile("\\w.*/");
-		Matcher m = p.matcher(fromUrl);
-
-		String localFile = null;
-		File plugin = new File(pluginDir);
-		Main.debug("plugin dir" + plugin.getAbsolutePath());
-
-		if (m.find()) {
-
-			if (plugin.exists()) {
-
-				localFile = fromUrl.substring(m.end());
-				Main.debug("localFile: " + localFile);
-			}
-		}
-
-		try {
-			url = new URL(fromUrl);
-			con = url.openConnection();
-			String plugDir = plugin.getAbsolutePath();
-			File file = new File(plugDir, localFile);
-			Main.debug("Binary file: " + file.getAbsolutePath());
-
-			if (file.exists()) {
-				Main.debug("File " + localFile + " already exists");
-
-				return file.getAbsolutePath();
-			} else {
-
-				BufferedInputStream in = new BufferedInputStream(
-						con.getInputStream());
-				BufferedOutputStream out = new BufferedOutputStream(
-						new FileOutputStream(file));
-				int i;
-
-				while ((i = in.read()) != -1) {
-					out.write(i);
-				}
-
-				out.flush();
-				out.close();
-				in.close();
-
-				return localFile;
-			}
-		} catch (MalformedURLException e1) {
-			e1.printStackTrace();
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-
-		return null;
-	}
+    private static volatile String pluginDir;
+
+    public static Set<JsonObject> filtersMeta = new HashSet<>();
+    public static Set<String> filterTitles = new TreeSet<>();
+    public static Set<URL> binariesLocalUrls = new HashSet<>();
+    public static ClassLoader loader;
+    public static Map<String, String> urlsMap = new HashMap<>();
+
+    private static Set<JsonObject> filtersMetaToLoad = new HashSet<>();
+    static List<FilterInfo> filtersInfoList = new ArrayList<>();
+
+    public static List<FilterInfo> downloadFiltersInfoList() {
+
+        JsonObject jsonRequest = Json
+                .createObjectBuilder()
+                .add("id", new Random().nextInt())
+                .add("method", "wiki.getPageHTML")
+                .add("params",
+                        Json.createArrayBuilder().add("ImageFilters").build())
+                .build();
+
+        String jsonRequestString = jsonRequest.toString();
+
+        URL wikiApi;
+        HttpURLConnection wikiConnection;
+        try {
+            wikiApi = new URL("https://josm.openstreetmap.de/jsonrpc");
+            wikiConnection = (HttpURLConnection) wikiApi.openConnection();
+            wikiConnection.setDoOutput(true);
+            wikiConnection.setDoInput(true);
+
+            wikiConnection.setRequestProperty("Content-Type",
+                    "application/json");
+            wikiConnection.setRequestProperty("Method", "POST");
+            wikiConnection.connect();
+
+            OutputStream os = wikiConnection.getOutputStream();
+            os.write(jsonRequestString.getBytes("UTF-8"));
+            os.close();
+
+            int HttpResult = wikiConnection.getResponseCode();
+            if (HttpResult == HttpURLConnection.HTTP_OK) {
+
+                JsonReader jsonStream = Json
+                        .createReader(new InputStreamReader(wikiConnection
+                                .getInputStream(), "utf-8"));
+
+                JsonObject jsonResponse = jsonStream.readObject();
+                jsonStream.close();
+
+                Elements trTagElems = Jsoup.parse(
+                        jsonResponse.getString("result"))
+                        .getElementsByTag("tr");
+                for (Element element : trTagElems) {
+
+                    Elements elems = element.getElementsByTag("td");
+                    if (!elems.isEmpty()) {
+                        String name = elems.get(0).text();
+                        String owner = elems.get(1).text();
+                        String description = elems.get(2).text();
+
+                        String link = elems.get(0).getElementsByTag("a")
+                                .attr("href");
+
+                        JsonObject meta = loadMeta(link);
+
+                        String paramName = "rasterfilters."
+                                + meta.getString("name");
+
+                        boolean needToLoad = Main.pref.getBoolean(paramName);
+
+                        if (needToLoad) {
+                            JsonArray binaries = meta.getJsonArray("binaries");
+                            filterTitles.add(meta.getString("title"));
+                            for (int i = 0; i < binaries.size(); i++) {
+                                filtersMetaToLoad.add(meta);
+                                loadBinaryToFile(binaries.getString(i));
+                            }
+                        }
+                        FilterInfo newFilterInfo = new FilterInfo(name,
+                                description, meta, needToLoad);
+                        newFilterInfo.setOwner(owner);
+
+                        if (!filtersInfoList.contains(newFilterInfo)) {
+                            filtersInfoList.add(newFilterInfo);
+                        }
+                    }
+                }
+
+            } else {
+                Main.debug("Error happenned while requesting for the list of filters");
+            }
+        } catch (IOException e1) {
+            // TODO Auto-generated catch block
+            e1.printStackTrace();
+        }
+
+        loadBinariesFromMeta(filtersMetaToLoad);
+
+        return filtersInfoList;
+    }
+
+    public static JsonObject loadMeta(String link) {
+
+        Pattern p = Pattern.compile("ImageFilters/\\w.*");
+        Matcher m = p.matcher(link);
+
+        if (m.find()) {
+            link = link.substring(m.start());
+        }
+
+        JsonObject jsonRequest = Json.createObjectBuilder()
+                .add("id", new Random().nextInt())
+                .add("method", "wiki.getPageHTML")
+                .add("params", Json.createArrayBuilder().add(link).build())
+                .build();
+
+        String jsonStringRequest = jsonRequest.toString();
+
+        URL wikiApi;
+        HttpURLConnection wikiConnection;
+        JsonObject meta = null;
+
+        try {
+            wikiApi = new URL("https://josm.openstreetmap.de/jsonrpc");
+            wikiConnection = (HttpURLConnection) wikiApi.openConnection();
+            wikiConnection.setDoOutput(true);
+            wikiConnection.setDoInput(true);
+
+            wikiConnection.setRequestProperty("Content-Type",
+                    "application/json");
+            wikiConnection.setRequestProperty("Method", "POST");
+            wikiConnection.connect();
+
+            OutputStream os = wikiConnection.getOutputStream();
+            os.write(jsonStringRequest.getBytes("UTF-8"));
+            os.close();
+
+            int HttpResult = wikiConnection.getResponseCode();
+            if (HttpResult == HttpURLConnection.HTTP_OK) {
+
+                JsonReader jsonStream = Json
+                        .createReader(new InputStreamReader(wikiConnection
+                                .getInputStream(), "UTF-8"));
+
+                JsonObject jsonResponse = jsonStream.readObject();
+                jsonStream.close();
+
+                String jsonPage = jsonResponse.getString("result");
+
+                Document doc = Jsoup.parse(jsonPage, "UTF-8");
+                String json = doc.getElementsByTag("pre").first().text();
+
+                JsonReader reader = Json.createReader(new StringReader(json));
+                meta = reader.readObject();
+                reader.close();
+
+            } else {
+                Main.debug(wikiConnection.getResponseMessage());
+            }
+        } catch (IOException e1) {
+            e1.printStackTrace();
+        }
+
+        filtersMeta.add(meta);
+
+        return meta;
+    }
+
+    public static void initFilters() {
+        File file = new File(pluginDir, "urls.map");
+        Main.debug("EXIST FILE? " + file.exists());
+
+        try (BufferedReader br = Files.newBufferedReader(file.toPath(), StandardCharsets.UTF_8)) {
+            String temp;
+
+            while ((temp = br.readLine()) != null) {
+                String[] mapEntry = temp.split("\\t");
+                File fileUrl = new File(mapEntry[1]);
+                if (fileUrl.exists()) {
+                    URL url;
+                    try {
+                        url = new URL("jar", "", fileUrl.toURI().toURL() + "!/");
+                        Main.debug("binaryUrl: " + url.toString());
+                        binariesLocalUrls.add(url);
+                    } catch (MalformedURLException e) {
+                        Main.debug("Initializing filters with unknown protocol. \n"
+                                + e.getMessage());
+                    }
+                }
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        Main.debug("BinariesLocal : " + binariesLocalUrls.toString());
+
+        loader = new URLClassLoader(
+                binariesLocalUrls.toArray(new URL[binariesLocalUrls.size()]),
+                FiltersDownloader.class.getClassLoader());
+    }
+
+    public static void destroyFilters() {
+        filterTitles.clear();
+        binariesLocalUrls.clear();
+        FiltersDownloader.filtersMeta.clear();
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent e) {
+
+        for (FilterInfo temp : filtersInfoList) {
+            if (temp.isNeedToDownload()) {
+
+                if (!filtersMetaToLoad.contains(temp.getMeta())) {
+                    filtersMetaToLoad.add(temp.getMeta());
+                }
+
+                filterTitles.add(temp.getMeta().getString("title"));
+            } else {
+                filterTitles.remove(temp.getMeta().getString("title"));
+            }
+        }
+
+        loadBinariesFromMeta(filtersMetaToLoad);
+
+        filtersMetaToLoad.clear();
+    }
+
+    public static void loadBinariesFromMeta(Set<JsonObject> metaList) {
+
+        File file = new File(pluginDir, "urls.map");
+        Main.debug("pluginDir and urls map" + file.getAbsoluteFile());
+
+        try (BufferedWriter writer = Files.newBufferedWriter(file.toPath(), StandardCharsets.UTF_8)) {
+            for (JsonObject temp : metaList) {
+                JsonArray binaries = temp.getJsonArray("binaries");
+
+                for (int i = 0; i < binaries.size(); i++) {
+
+                    String localFile = loadBinaryToFile(binaries.getString(i));
+
+                    try {
+                        writer.append(binaries.getString(i));
+                        writer.append("\t");
+                        writer.append(localFile);
+                        writer.append("\n");
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    }
+                }
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static void setPluginDir(String dir) {
+        pluginDir = dir;
+    }
+
+    public static String loadBinaryToFile(String fromUrl) {
+
+        // Main.debug("Need to load binary from " + fromUrl);
+
+        URL url = null;
+        URLConnection con = null;
+
+        Pattern p = Pattern.compile("\\w.*/");
+        Matcher m = p.matcher(fromUrl);
+
+        String localFile = null;
+        File plugin = new File(pluginDir);
+        Main.debug("plugin dir" + plugin.getAbsolutePath());
+
+        if (m.find()) {
+
+            if (plugin.exists()) {
+
+                localFile = fromUrl.substring(m.end());
+                Main.debug("localFile: " + localFile);
+            }
+        }
+
+        try {
+            url = new URL(fromUrl);
+            con = url.openConnection();
+            String plugDir = plugin.getAbsolutePath();
+            File file = new File(plugDir, localFile);
+            Main.debug("Binary file: " + file.getAbsolutePath());
+
+            if (file.exists()) {
+                Main.debug("File " + localFile + " already exists");
+
+                return file.getAbsolutePath();
+            } else {
+
+                BufferedInputStream in = new BufferedInputStream(
+                        con.getInputStream());
+                BufferedOutputStream out = new BufferedOutputStream(
+                        new FileOutputStream(file));
+                int i;
+
+                while ((i = in.read()) != -1) {
+                    out.write(i);
+                }
+
+                out.flush();
+                out.close();
+                in.close();
+
+                return localFile;
+            }
+        } catch (MalformedURLException e1) {
+            e1.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
 
 }
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/preferences/RasterFiltersPreferences.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/preferences/RasterFiltersPreferences.java	(revision 32852)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/preferences/RasterFiltersPreferences.java	(revision 32853)
@@ -1,18 +1,3 @@
 package org.openstreetmap.josm.plugins.rasterfilters.preferences;
-
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.util.List;
-
-import javax.json.JsonObject;
-import javax.swing.JButton;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTable;
-import javax.swing.border.EmptyBorder;
-import javax.swing.event.TableModelEvent;
-import javax.swing.event.TableModelListener;
-import javax.swing.table.AbstractTableModel;
-import javax.swing.table.TableModel;
 
 import org.openstreetmap.josm.Main;
@@ -23,246 +8,255 @@
 import org.openstreetmap.josm.tools.GBC;
 
+import javax.json.JsonObject;
+import javax.swing.*;
+import javax.swing.border.EmptyBorder;
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
+import javax.swing.table.AbstractTableModel;
+import javax.swing.table.TableModel;
+import java.awt.*;
+import java.util.List;
+
 /**
  * This class draws subtab 'Image Filters' in the Preferences menu.
  *
  * @author Nipel-Crumple
- *
  */
 public class RasterFiltersPreferences implements SubPreferenceSetting {
 
-	private FiltersDownloader downloader = new FiltersDownloader();
-	AbstractTableModel model;
-	JPanel holder;
-
-	@Override
-	public void addGui(PreferenceTabbedPane gui) {
-
-		model = new FiltersTableModel();
-
-		if (holder == null) {
-			holder = new JPanel();
-			holder.setLayout(new GridBagLayout());
-
-			holder.setBorder(new EmptyBorder(10, 10, 10, 10));
-
-			model.addTableModelListener(new TableModelListener() {
-
-				@Override
-				public void tableChanged(TableModelEvent e) {
-					int row = e.getFirstRow();
-					int col = e.getColumn();
-					TableModel model = (TableModel) e.getSource();
-
-					Boolean isDownloadedUpdate = (Boolean) model.getValueAt(
-							row, col);
-					List<FilterInfo> filtersList = ((FiltersTableModel) model).filtersInfoList;
-
-					filtersList.get(row).setNeedToDownload(isDownloadedUpdate);
-
-				}
-			});
-
-			JTable table = new JTable(model);
-			table.getTableHeader().setReorderingAllowed(false);
-			table.getColumnModel().getColumn(3).setMaxWidth(20);
-			JScrollPane pane = new JScrollPane(table);
-
-			holder.add(pane, GBC.eol().fill(GBC.BOTH));
-
-			GridBagConstraints c = GBC.eol();
-			c.anchor = GBC.EAST;
-
-			JButton download = new JButton("Download");
-			download.addActionListener(downloader);
-			holder.add(download, c);
-		}
-
-		MapPreference pref = gui.getMapPreference();
-		pref.addSubTab(this, "Image Filters", holder);
-
-	}
-
-	@Override
-	public boolean ok() {
-		List<FilterInfo> filtersInfoList = ((FiltersTableModel) model).getFiltersInfoList();
-
-		for (FilterInfo temp : filtersInfoList) {
-			JsonObject meta = temp.getMeta();
-			String paramName = meta.getString("name");
-			paramName = "rasterfilters." + paramName;
-			Main.pref.put(paramName, temp.isNeedToDownload());
-		}
-
-		return false;
-	}
-
-	@Override
-	public boolean isExpert() {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	@Override
-	public TabPreferenceSetting getTabPreferenceSetting(PreferenceTabbedPane gui) {
-		return gui.getMapPreference();
-	}
-
-	static class FiltersTableModel extends AbstractTableModel {
-
-		String[] columnNames = { "Filter Name", "Author", "Description", "" };
-		Class<?>[] columnClasses = { String.class, String.class, String.class, Boolean.class };
-		List<FilterInfo> filtersInfoList;
-		Object[][] data;
-
-		public FiltersTableModel() {
-
-			filtersInfoList = FiltersDownloader.downloadFiltersInfoList();
-			data = new Object[filtersInfoList.size()][4];
-
-			for (int i = 0; i < filtersInfoList.size(); i++) {
-				data[i][0] = filtersInfoList.get(i).getName();
-				data[i][1] = filtersInfoList.get(i).getOwner();
-				data[i][2] = filtersInfoList.get(i).getDescription();
-				data[i][3] = filtersInfoList.get(i).isNeedToDownload();
-			}
-
-		}
-
-		@Override
-		public int getRowCount() {
-			return filtersInfoList.size();
-		}
-
-		@Override
-		public int getColumnCount() {
-			return columnNames.length;
-		}
-
-		@Override
-		public Object getValueAt(int rowIndex, int columnIndex) {
-			switch (columnIndex) {
-			case 0:
-				return filtersInfoList.get(rowIndex).getName();
-			case 1:
-				return filtersInfoList.get(rowIndex).getOwner();
-			case 2:
-				return filtersInfoList.get(rowIndex).getDescription();
-			case 3:
-				return filtersInfoList.get(rowIndex).isNeedToDownload();
-			default:
-				return null;
-			}
-		}
-
-		@Override
-		public String getColumnName(int col) {
-			return columnNames[col];
-		}
-
-		@Override
-		public Class<?> getColumnClass(int col) {
-			return columnClasses[col];
-		}
-
-		@Override
-		public boolean isCellEditable(int row, int col) {
-			if (col == 3) {
-				return true;
-			}
-
-			return false;
-		}
-
-		@Override
-		public void setValueAt(Object value, int row, int col) {
-			if (col == 3) {
-				filtersInfoList.get(row).setNeedToDownload((boolean) value);
-				fireTableCellUpdated(row, col);
-			}
-		}
-
-		public List<FilterInfo> getFiltersInfoList() {
-			return filtersInfoList;
-		}
-	}
+    private FiltersDownloader downloader = new FiltersDownloader();
+    AbstractTableModel model;
+    JPanel holder;
+
+    @Override
+    public void addGui(PreferenceTabbedPane gui) {
+
+        model = new FiltersTableModel();
+
+        if (holder == null) {
+            holder = new JPanel();
+            holder.setLayout(new GridBagLayout());
+
+            holder.setBorder(new EmptyBorder(10, 10, 10, 10));
+
+            model.addTableModelListener(new TableModelListener() {
+
+                @Override
+                public void tableChanged(TableModelEvent e) {
+                    int row = e.getFirstRow();
+                    int col = e.getColumn();
+                    TableModel model = (TableModel) e.getSource();
+
+                    Boolean isDownloadedUpdate = (Boolean) model.getValueAt(
+                            row, col);
+                    List<FilterInfo> filtersList = ((FiltersTableModel) model).filtersInfoList;
+
+                    filtersList.get(row).setNeedToDownload(isDownloadedUpdate);
+
+                }
+            });
+
+            JTable table = new JTable(model);
+            table.getTableHeader().setReorderingAllowed(false);
+            table.getColumnModel().getColumn(3).setMaxWidth(20);
+            JScrollPane pane = new JScrollPane(table);
+
+            holder.add(pane, GBC.eol().fill(GBC.BOTH));
+
+            GridBagConstraints c = GBC.eol();
+            c.anchor = GBC.EAST;
+
+            JButton download = new JButton("Download");
+            download.addActionListener(downloader);
+            holder.add(download, c);
+        }
+
+        MapPreference pref = gui.getMapPreference();
+        pref.addSubTab(this, "Image Filters", holder);
+
+    }
+
+    @Override
+    public boolean ok() {
+        List<FilterInfo> filtersInfoList = ((FiltersTableModel) model).getFiltersInfoList();
+
+        for (FilterInfo temp : filtersInfoList) {
+            JsonObject meta = temp.getMeta();
+            String paramName = meta.getString("name");
+            paramName = "rasterfilters." + paramName;
+            Main.pref.put(paramName, temp.isNeedToDownload());
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean isExpert() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public TabPreferenceSetting getTabPreferenceSetting(PreferenceTabbedPane gui) {
+        return gui.getMapPreference();
+    }
+
+    static class FiltersTableModel extends AbstractTableModel {
+
+        String[] columnNames = {"Filter Name", "Author", "Description", ""};
+        Class<?>[] columnClasses = {String.class, String.class, String.class, Boolean.class};
+        List<FilterInfo> filtersInfoList;
+        Object[][] data;
+
+        public FiltersTableModel() {
+
+            filtersInfoList = FiltersDownloader.downloadFiltersInfoList();
+            data = new Object[filtersInfoList.size()][4];
+
+            for (int i = 0; i < filtersInfoList.size(); i++) {
+                data[i][0] = filtersInfoList.get(i).getName();
+                data[i][1] = filtersInfoList.get(i).getOwner();
+                data[i][2] = filtersInfoList.get(i).getDescription();
+                data[i][3] = filtersInfoList.get(i).isNeedToDownload();
+            }
+
+        }
+
+        @Override
+        public int getRowCount() {
+            return filtersInfoList.size();
+        }
+
+        @Override
+        public int getColumnCount() {
+            return columnNames.length;
+        }
+
+        @Override
+        public Object getValueAt(int rowIndex, int columnIndex) {
+            switch (columnIndex) {
+                case 0:
+                    return filtersInfoList.get(rowIndex).getName();
+                case 1:
+                    return filtersInfoList.get(rowIndex).getOwner();
+                case 2:
+                    return filtersInfoList.get(rowIndex).getDescription();
+                case 3:
+                    return filtersInfoList.get(rowIndex).isNeedToDownload();
+                default:
+                    return null;
+            }
+        }
+
+        @Override
+        public String getColumnName(int col) {
+            return columnNames[col];
+        }
+
+        @Override
+        public Class<?> getColumnClass(int col) {
+            return columnClasses[col];
+        }
+
+        @Override
+        public boolean isCellEditable(int row, int col) {
+            if (col == 3) {
+                return true;
+            }
+
+            return false;
+        }
+
+        @Override
+        public void setValueAt(Object value, int row, int col) {
+            if (col == 3) {
+                filtersInfoList.get(row).setNeedToDownload((boolean) value);
+                fireTableCellUpdated(row, col);
+            }
+        }
+
+        public List<FilterInfo> getFiltersInfoList() {
+            return filtersInfoList;
+        }
+    }
 
 }
 
 class FilterInfo {
-	private String name;
-	private String description;
-	private JsonObject meta;
-	private boolean needToDownload;
-	private String owner;
-
-	public FilterInfo() {
-
-	}
-
-	public FilterInfo(String name, String description, JsonObject meta,
-			boolean needToDownload) {
-		this.setName(name);
-		this.setDescription(description);
-		this.meta = meta;
-		this.setNeedToDownload(needToDownload);
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	public String getDescription() {
-		return description;
-	}
-
-	public void setDescription(String description) {
-		this.description = description;
-	}
-
-	public JsonObject getMeta() {
-		return meta;
-	}
-
-	public void setMeta(JsonObject meta) {
-		this.meta = meta;
-	}
-
-	public boolean isNeedToDownload() {
-		return needToDownload;
-	}
-
-	public void setNeedToDownload(boolean needToDownload) {
-		this.needToDownload = needToDownload;
-	}
-
-	public String getOwner() {
-		return owner;
-	}
-
-	public void setOwner(String owner) {
-		this.owner = owner;
-	}
-
-	@Override
-	public String toString() {
-		return "name: " + getName() + "\nDescription: " + getDescription()
-				+ "\nMeta: " + getMeta();
-	}
-
-	@Override
-	public boolean equals(Object o) {
-		if (o instanceof FilterInfo) {
-			if (name.equals(((FilterInfo) o).getName()) &&
-					meta.equals(((FilterInfo) o).getMeta()) &&
-					description.equals(((FilterInfo) o).getDescription())) {
-				return true;
-			}
-		}
-
-		return false;
-	}
+    private String name;
+    private String description;
+    private JsonObject meta;
+    private boolean needToDownload;
+    private String owner;
+
+    public FilterInfo() {
+
+    }
+
+    public FilterInfo(String name, String description, JsonObject meta,
+                      boolean needToDownload) {
+        this.setName(name);
+        this.setDescription(description);
+        this.meta = meta;
+        this.setNeedToDownload(needToDownload);
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public JsonObject getMeta() {
+        return meta;
+    }
+
+    public void setMeta(JsonObject meta) {
+        this.meta = meta;
+    }
+
+    public boolean isNeedToDownload() {
+        return needToDownload;
+    }
+
+    public void setNeedToDownload(boolean needToDownload) {
+        this.needToDownload = needToDownload;
+    }
+
+    public String getOwner() {
+        return owner;
+    }
+
+    public void setOwner(String owner) {
+        this.owner = owner;
+    }
+
+    @Override
+    public String toString() {
+        return "name: " + getName() + "\nDescription: " + getDescription()
+                + "\nMeta: " + getMeta();
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (o instanceof FilterInfo) {
+            if (name.equals(((FilterInfo) o).getName()) &&
+                    meta.equals(((FilterInfo) o).getMeta()) &&
+                    description.equals(((FilterInfo) o).getDescription())) {
+                return true;
+            }
+        }
+
+        return false;
+    }
 }
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/BooleanValue.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/BooleanValue.java	(revision 32852)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/BooleanValue.java	(revision 32853)
@@ -3,31 +3,31 @@
 public class BooleanValue implements Value<Boolean> {
 
-	private Boolean value;
-	private String parameterName;
+    private Boolean value;
+    private String parameterName;
 
-	public BooleanValue(String parameterName, Boolean value) {
-		this.value = value;
-		this.parameterName = parameterName;
-	}
-	
-	@Override
-	public Boolean getValue() {
-		return value;
-	}
+    public BooleanValue(String parameterName, Boolean value) {
+        this.value = value;
+        this.parameterName = parameterName;
+    }
 
-	@Override
-	public void setValue(Boolean value) {
-		this.value = value;
-	}
+    @Override
+    public Boolean getValue() {
+        return value;
+    }
 
-	@Override
-	public String getParameterName() {
-		return parameterName;
-	}
+    @Override
+    public void setValue(Boolean value) {
+        this.value = value;
+    }
 
-	@Override
-	public void setParameterName(String name) {
-		this.parameterName = name;
-	}
+    @Override
+    public String getParameterName() {
+        return parameterName;
+    }
+
+    @Override
+    public void setParameterName(String name) {
+        this.parameterName = name;
+    }
 
 }
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/ColorValue.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/ColorValue.java	(revision 32852)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/ColorValue.java	(revision 32853)
@@ -1,33 +1,33 @@
 package org.openstreetmap.josm.plugins.rasterfilters.values;
 
-public class ColorValue<Color> implements Value<Color>{
+public class ColorValue<Color> implements Value<Color> {
 
-	private Color value;
-	private String parameterName;
+    private Color value;
+    private String parameterName;
 
-	public ColorValue(String parameterName, Color color) {
-		this.parameterName = parameterName;
-		this.value = color;
-	}
+    public ColorValue(String parameterName, Color color) {
+        this.parameterName = parameterName;
+        this.value = color;
+    }
 
-	@Override
-	public Color getValue() {
-		return value;
-	}
+    @Override
+    public Color getValue() {
+        return value;
+    }
 
-	@Override
-	public void setValue(Color value) {
-		this.value = value;
-	}
+    @Override
+    public void setValue(Color value) {
+        this.value = value;
+    }
 
-	@Override
-	public String getParameterName() {
-		return parameterName;
-	}
+    @Override
+    public String getParameterName() {
+        return parameterName;
+    }
 
-	@Override
-	public void setParameterName(String name) {
-		this.parameterName = name;
-	}
+    @Override
+    public void setParameterName(String name) {
+        this.parameterName = name;
+    }
 
 }
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/SelectValue.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/SelectValue.java	(revision 32852)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/SelectValue.java	(revision 32853)
@@ -3,31 +3,31 @@
 public class SelectValue<T> implements Value<T> {
 
-	private T selectedItem;
-	private String parameterName;
-	
-	public SelectValue(String parameterName, T value) {
-		this.selectedItem = value;
-		this.parameterName = parameterName;
-	}
-	
-	@Override
-	public T getValue() {
-		return selectedItem;
-	}
+    private T selectedItem;
+    private String parameterName;
 
-	@Override
-	public void setValue(T value) {
-		this.selectedItem = value;
-	}
+    public SelectValue(String parameterName, T value) {
+        this.selectedItem = value;
+        this.parameterName = parameterName;
+    }
 
-	@Override
-	public String getParameterName() {
-		return parameterName;
-	}
+    @Override
+    public T getValue() {
+        return selectedItem;
+    }
 
-	@Override
-	public void setParameterName(String name) {
-		this.parameterName = name;
-	}
+    @Override
+    public void setValue(T value) {
+        this.selectedItem = value;
+    }
+
+    @Override
+    public String getParameterName() {
+        return parameterName;
+    }
+
+    @Override
+    public void setParameterName(String name) {
+        this.parameterName = name;
+    }
 
 }
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/SliderValue.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/SliderValue.java	(revision 32852)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/SliderValue.java	(revision 32853)
@@ -3,36 +3,37 @@
 public class SliderValue<Number> implements Value<Number> {
 
-	private String parameterName;
-	private Number value;
-	
-	public SliderValue(String parameterName, Number value) {
-		this.value = value;
-		this.parameterName = parameterName;
-	}
-	
-	@Override
-	public Number getValue() {
-		return value;
-	}
+    private String parameterName;
+    private Number value;
 
-	@Override
-	public void setValue(Number value) {
-		this.value = value;
-	}
+    public SliderValue(String parameterName, Number value) {
+        this.value = value;
+        this.parameterName = parameterName;
+    }
 
-	@Override
-	public String getParameterName() {
-		return parameterName;
-	}
-	
-	@Override
-	public void setParameterName(String name) {
-		this.parameterName = name;;
-	}
-	
-	public boolean isDouble() {
-		if (value instanceof Double) 
-			return true;
-		return false;
-	}
+    @Override
+    public Number getValue() {
+        return value;
+    }
+
+    @Override
+    public void setValue(Number value) {
+        this.value = value;
+    }
+
+    @Override
+    public String getParameterName() {
+        return parameterName;
+    }
+
+    @Override
+    public void setParameterName(String name) {
+        this.parameterName = name;
+        ;
+    }
+
+    public boolean isDouble() {
+        if (value instanceof Double)
+            return true;
+        return false;
+    }
 }
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/Value.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/Value.java	(revision 32852)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/Value.java	(revision 32853)
@@ -6,16 +6,15 @@
  * Generic values which are used by {@link FilterStateModel}.
  *
+ * @param <T> generic class of the value
  * @author Nipel-Crumple
- *
- * @param <T> generic class of the value
  */
 public interface Value<T extends Object> {
 
-	public T getValue();
+    public T getValue();
 
-	public void setValue(T value);
+    public void setValue(T value);
 
-	public String getParameterName();
+    public String getParameterName();
 
-	public void setParameterName(String name);
+    public void setParameterName(String name);
 }
