// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.tageditor.editor; import static org.openstreetmap.josm.tools.I18n.tr; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JPanel; import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset; public class PresetManager extends JPanel { //static private final Logger logger = Logger.getLogger(PresetManager.class.getName()); private JComboBox<TaggingPreset> presets; private JButton btnRemove; private JButton btnHighlight; private TagEditorModel model = null; protected void build() { setLayout(new FlowLayout(FlowLayout.LEFT)); // create the combobox to display the list of applied presets // presets = new JComboBox<TaggingPreset>() { @Override public Dimension getPreferredSize() { Dimension d = super.getPreferredSize(); d.width = 200; return d; } }; presets.addItemListener( new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { syncWidgetStates(); } } ); presets.setRenderer(new PresetItemListCellRenderer()); add(presets); btnHighlight = new JButton(tr("Highlight")); btnHighlight.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { highlightCurrentPreset(); } } ); add(btnHighlight); btnRemove = new JButton(tr("Remove")); btnRemove.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { removeCurrentPreset(); } } ); add(btnRemove); syncWidgetStates(); } protected void syncWidgetStates() { btnRemove.setEnabled(presets.getSelectedItem() != null); btnHighlight.setEnabled(presets.getSelectedItem() != null); } protected void removeCurrentPreset() { TaggingPreset item = (TaggingPreset) presets.getSelectedItem(); if (item != null && model != null) { model.removeAppliedPreset(item); } } protected void highlightCurrentPreset() { model.highlightCurrentPreset(); } public PresetManager() { build(); } public void setModel(TagEditorModel model) { presets.setModel(model.getAppliedPresetsModel()); this.model = model; } }