Changeset 16277 in josm


Ignore:
Timestamp:
2020-04-12T17:06:27+02:00 (4 years ago)
Author:
simon04
Message:

fix #8352 - Presets: add color chooser for <combo>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Combo.java

    r16057 r16277  
    22package org.openstreetmap.josm.gui.tagging.presets.items;
    33
     4import static org.openstreetmap.josm.tools.I18n.tr;
     5
     6import java.awt.Color;
     7import java.awt.event.ActionEvent;
     8import java.awt.event.ActionListener;
     9
     10import javax.swing.AbstractAction;
     11import javax.swing.JButton;
     12import javax.swing.JColorChooser;
    413import javax.swing.JPanel;
    514
    615import org.openstreetmap.josm.data.tagging.ac.AutoCompletionPriority;
     16import org.openstreetmap.josm.gui.MainApplication;
    717import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
    818import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
    919import org.openstreetmap.josm.gui.widgets.JosmComboBox;
    1020import org.openstreetmap.josm.spi.preferences.Config;
     21import org.openstreetmap.josm.tools.ColorHelper;
    1122import org.openstreetmap.josm.tools.GBC;
    1223
     
    90101            combobox.setSelectedItem(originalValue);
    91102        }
    92         p.add(combobox, GBC.eol().fill(GBC.HORIZONTAL));
     103        if ("colour".equals(key) || key.startsWith("colour:") || key.endsWith(":colour")) {
     104            p.add(combobox, GBC.std().fill(GBC.HORIZONTAL));
     105            JButton button = new JButton(new ChooseColorAction());
     106            p.add(button, GBC.eol().fill(GBC.VERTICAL));
     107            ActionListener updateColor = ignore -> button.setBackground(getColor());
     108            updateColor.actionPerformed(null);
     109            combobox.addActionListener(updateColor);
     110        } else {
     111            p.add(combobox, GBC.eol().fill(GBC.HORIZONTAL));
     112        }
     113    }
     114
     115    class ChooseColorAction extends AbstractAction {
     116        ChooseColorAction() {
     117            putValue(SHORT_DESCRIPTION, tr("Select color"));
     118        }
     119
     120        @Override
     121        public void actionPerformed(ActionEvent e) {
     122            Color color = getColor();
     123            color = JColorChooser.showDialog(MainApplication.getMainPanel(), tr("Select color"), color);
     124            setColor(color);
     125        }
     126    }
     127
     128    protected void setColor(Color color) {
     129        if (color != null) {
     130            combobox.setSelectedItem(ColorHelper.color2html(color));
     131        }
     132    }
     133
     134    protected Color getColor() {
     135        return ColorHelper.html2color(String.valueOf(getSelectedItem()));
    93136    }
    94137
Note: See TracChangeset for help on using the changeset viewer.