001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.mappaint;
003
004import java.awt.event.ActionEvent;
005import java.util.Arrays;
006
007import javax.swing.AbstractAction;
008import javax.swing.Action;
009import javax.swing.JCheckBoxMenuItem;
010import javax.swing.JMenu;
011
012import org.openstreetmap.josm.gui.MainApplication;
013import org.openstreetmap.josm.gui.mappaint.loader.MapPaintStyleLoader;
014
015/**
016 * GUI elements for a {@link StyleSetting.BooleanStyleSetting} class.
017 * @since 12831
018 */
019public class BooleanStyleSettingGui implements StyleSettingGui {
020
021    final StyleSetting.BooleanStyleSetting setting;
022
023    public BooleanStyleSettingGui(StyleSetting.BooleanStyleSetting setting) {
024        this.setting = setting;
025    }
026
027    @Override
028    public void addMenuEntry(JMenu menu) {
029        final JCheckBoxMenuItem item = new JCheckBoxMenuItem();
030        Action a = new AbstractAction(setting.label) {
031            @Override
032            public void actionPerformed(ActionEvent e) {
033                setting.setValue(item.isSelected());
034                MainApplication.worker.submit(new MapPaintStyleLoader(Arrays.asList(setting.parentStyle)));
035            }
036        };
037        item.setAction(a);
038        item.setSelected((boolean) setting.getValue());
039        menu.add(item);
040    }
041}