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 32850)
+++ applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/RasterFiltersPlugin.java	(revision 32851)
@@ -1,3 +1,9 @@
 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;
@@ -20,9 +26,4 @@
 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
@@ -34,104 +35,103 @@
 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()) {
-            Container container = filterButton.getParent();
-            if (container != null)
-                container.remove(filterButton);
+		if (Main.getLayerManager().getLayers().isEmpty()) {
 
-            FiltersDownloader.destroyFilters();
-            filterButton = null;
-        }
+			Container container = filterButton.getParent();
+			if (container != null)
+				container.remove(filterButton);
+			
+			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 32850)
+++ applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/actions/ShowLayerFiltersDialog.java	(revision 32851)
@@ -1,3 +1,14 @@
 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;
@@ -8,82 +19,74 @@
 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 32850)
+++ applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/filters/Filter.java	(revision 32851)
@@ -1,55 +1,58 @@
 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 32850)
+++ applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/gui/FilterGuiListener.java	(revision 32851)
@@ -1,16 +1,5 @@
 package org.openstreetmap.josm.plugins.rasterfilters.gui;
 
-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.Color;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
@@ -23,140 +12,156 @@
 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
  *
- * @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 32850)
+++ applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/gui/FilterPanel.java	(revision 32851)
@@ -1,14 +1,11 @@
 package org.openstreetmap.josm.plugins.rasterfilters.gui;
 
-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 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 java.awt.event.ActionListener;
 import java.awt.event.ItemListener;
@@ -16,5 +13,25 @@
 import java.util.Hashtable;
 
-import static org.openstreetmap.josm.tools.I18n.tr;
+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;
 
 /**
@@ -24,294 +41,296 @@
  *
  * @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 32850)
+++ applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/gui/FilterStateOwner.java	(revision 32851)
@@ -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 32850)
+++ applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/gui/FiltersDialog.java	(revision 32851)
@@ -1,12 +1,7 @@
 package org.openstreetmap.josm.plugins.rasterfilters.gui;
 
-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.Color;
+import java.awt.Component;
+import java.awt.Dimension;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
@@ -15,4 +10,20 @@
 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
@@ -20,227 +31,228 @@
  *
  * @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 32850)
+++ applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/model/FilterStateModel.java	(revision 32851)
@@ -1,14 +1,18 @@
 package org.openstreetmap.josm.plugins.rasterfilters.model;
 
-import org.openstreetmap.josm.plugins.rasterfilters.values.*;
+import java.awt.Color;
+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 java.awt.*;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
 
+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
@@ -18,142 +22,143 @@
  *
  * @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 32850)
+++ applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/model/FiltersManager.java	(revision 32851)
@@ -1,5 +1,27 @@
 package org.openstreetmap.josm.plugins.rasterfilters.model;
 
-import com.bric.swing.ColorPicker;
+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 org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.layer.ImageProcessor;
@@ -10,16 +32,5 @@
 import org.openstreetmap.josm.plugins.rasterfilters.preferences.FiltersDownloader;
 
-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.*;
-
+import com.bric.swing.ColorPicker;
 /**
  * This class adds filter to the dialog and can also remove
@@ -27,229 +38,231 @@
  *
  * @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 32850)
+++ applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/model/StateChangeListener.java	(revision 32851)
@@ -6,10 +6,10 @@
  * Interface that notifies about filter's state is changed.
  * This interface is implemented by {@link FiltersManager}.
+ * @author Nipel-Crumple
  *
- * @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 32850)
+++ applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/preferences/FiltersDownloader.java	(revision 32851)
@@ -1,3 +1,40 @@
 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;
@@ -6,19 +43,4 @@
 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
@@ -30,325 +52,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 32850)
+++ applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/preferences/RasterFiltersPreferences.java	(revision 32851)
@@ -1,3 +1,18 @@
 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;
@@ -8,255 +23,246 @@
 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 32850)
+++ applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/BooleanValue.java	(revision 32851)
@@ -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;
-    }
+	public BooleanValue(String parameterName, Boolean value) {
+		this.value = value;
+		this.parameterName = parameterName;
+	}
+	
+	@Override
+	public Boolean getValue() {
+		return value;
+	}
 
-    @Override
-    public Boolean getValue() {
-        return value;
-    }
+	@Override
+	public void setValue(Boolean value) {
+		this.value = value;
+	}
 
-    @Override
-    public void setValue(Boolean 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/ColorValue.java
===================================================================
--- applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/ColorValue.java	(revision 32850)
+++ applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/ColorValue.java	(revision 32851)
@@ -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 32850)
+++ applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/SelectValue.java	(revision 32851)
@@ -3,31 +3,31 @@
 public class SelectValue<T> implements Value<T> {
 
-    private T selectedItem;
-    private String parameterName;
+	private T selectedItem;
+	private String parameterName;
+	
+	public SelectValue(String parameterName, T value) {
+		this.selectedItem = value;
+		this.parameterName = parameterName;
+	}
+	
+	@Override
+	public T getValue() {
+		return selectedItem;
+	}
 
-    public SelectValue(String parameterName, T value) {
-        this.selectedItem = value;
-        this.parameterName = parameterName;
-    }
+	@Override
+	public void setValue(T value) {
+		this.selectedItem = value;
+	}
 
-    @Override
-    public T getValue() {
-        return selectedItem;
-    }
+	@Override
+	public String getParameterName() {
+		return parameterName;
+	}
 
-    @Override
-    public void setValue(T value) {
-        this.selectedItem = value;
-    }
-
-    @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/SliderValue.java
===================================================================
--- applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/SliderValue.java	(revision 32850)
+++ applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/SliderValue.java	(revision 32851)
@@ -3,37 +3,36 @@
 public class SliderValue<Number> implements Value<Number> {
 
-    private String parameterName;
-    private Number value;
+	private String parameterName;
+	private Number value;
+	
+	public SliderValue(String parameterName, Number value) {
+		this.value = value;
+		this.parameterName = parameterName;
+	}
+	
+	@Override
+	public Number getValue() {
+		return value;
+	}
 
-    public SliderValue(String parameterName, Number value) {
-        this.value = value;
-        this.parameterName = parameterName;
-    }
+	@Override
+	public void setValue(Number value) {
+		this.value = value;
+	}
 
-    @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;
-    }
+	@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 32850)
+++ applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/values/Value.java	(revision 32851)
@@ -6,15 +6,16 @@
  * Generic values which are used by {@link FilterStateModel}.
  *
+ * @author Nipel-Crumple
+ *
  * @param <T> generic class of the value
- * @author Nipel-Crumple
  */
 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);
 }
