Ignore:
Timestamp:
2014-05-14T20:52:13+02:00 (10 years ago)
Author:
simon04
Message:

Fix Sonar issue (package cycle)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PresetListPanel.java

    r6986 r7128  
    22package org.openstreetmap.josm.gui.dialogs.properties;
    33
    4 import java.awt.Cursor;
    5 import java.awt.Dimension;
    6 import java.awt.Font;
    7 import java.awt.GridBagLayout;
    8 import java.awt.event.MouseEvent;
    9 import java.awt.event.MouseListener;
    10 import java.awt.font.TextAttribute;
    11 import java.util.Collection;
    12 import java.util.Collections;
    13 import java.util.List;
    14 import java.util.Map;
     4import org.openstreetmap.josm.data.osm.OsmPrimitive;
     5import org.openstreetmap.josm.gui.tagging.PresetHandler;
     6import org.openstreetmap.josm.gui.tagging.TaggingPreset;
     7import org.openstreetmap.josm.gui.tagging.TaggingPresetType;
     8import org.openstreetmap.josm.gui.tagging.PresetLabel;
     9import org.openstreetmap.josm.tools.GBC;
    1510
    1611import javax.swing.JLabel;
    1712import javax.swing.JPanel;
     13import java.awt.Dimension;
     14import java.awt.GridBagLayout;
     15import java.awt.event.MouseAdapter;
     16import java.awt.event.MouseEvent;
     17import java.util.Collection;
     18import java.util.Map;
    1819
    19 import org.openstreetmap.josm.data.osm.OsmPrimitive;
    20 import org.openstreetmap.josm.data.osm.Tag;
    21 import org.openstreetmap.josm.gui.tagging.TaggingPreset;
    22 import org.openstreetmap.josm.gui.tagging.TaggingPresetType;
    23 import org.openstreetmap.josm.tools.GBC;
    24 
     20/**
     21 * A list of matching presets for a set of tags.
     22 */
    2523public class PresetListPanel extends JPanel {
    2624
     
    3230    }
    3331
    34     public interface PresetHandler {
    35         Collection<OsmPrimitive> getSelection();
    36         void updateTags(List<Tag> tags);
    37     }
    38 
    3932    /**
    40      * Small helper class that manages the highlighting of the label on hover as well as opening
    41      * the corresponding preset when clicked
     33     * Updates the preset list based on the {@code tags} and {@code types},
     34     * and associates an interaction with (matching) presets via {@code presetHandler}.
    4235     */
    43     public static class PresetLabelML implements MouseListener {
    44         final JLabel label;
    45         final Font hover;
    46         final Font normal;
    47         final TaggingPreset tag;
    48         final PresetHandler presetHandler;
    49 
    50         public PresetLabelML(JLabel lbl, TaggingPreset t, PresetHandler presetHandler) {
    51             super();
    52             label = lbl;
    53             lbl.setCursor(new Cursor(Cursor.HAND_CURSOR));
    54             normal = label.getFont();
    55             hover = normal.deriveFont(Collections.singletonMap(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_LOW_DOTTED));
    56             tag = t;
    57             this.presetHandler = presetHandler;
    58         }
    59         @Override
    60         public void mouseClicked(MouseEvent arg0) {
    61             Collection<OsmPrimitive> selection = tag.createSelection(presetHandler.getSelection());
    62             if (selection == null || selection.isEmpty())
    63                 return;
    64             int answer = tag.showDialog(selection, false);
    65 
    66             if (answer == TaggingPreset.DIALOG_ANSWER_APPLY) {
    67                 presetHandler.updateTags(tag.getChangedTags());
    68             }
    69 
    70         }
    71         @Override
    72         public void mouseEntered(MouseEvent arg0) {
    73             label.setFont(hover);
    74         }
    75         @Override
    76         public void mouseExited(MouseEvent arg0) {
    77             label.setFont(normal);
    78         }
    79         @Override
    80         public void mousePressed(MouseEvent arg0) {}
    81         @Override
    82         public void mouseReleased(MouseEvent arg0) {}
    83     }
    84 
    85     public static JLabel createLabelForPreset(TaggingPreset t) {
    86         JLabel lbl = new JLabel(t.getName() + " …");
    87         lbl.setIcon(t.getIcon());
    88         return lbl;
    89     }
    90 
    91     public void updatePresets(final Collection<TaggingPresetType> types, final Map<String, String> tags, PresetHandler presetHandler) {
     36    public void updatePresets(final Collection<TaggingPresetType> types, final Map<String, String> tags, final PresetHandler presetHandler) {
    9237
    9338        removeAll();
     
    9742        }
    9843
    99         for (TaggingPreset t : TaggingPreset.getMatchingPresets(types, tags, true)) {
    100             final JLabel lbl = createLabelForPreset(t);
    101             lbl.addMouseListener(new PresetLabelML(lbl, t, presetHandler));
     44        for (final TaggingPreset t : TaggingPreset.getMatchingPresets(types, tags, true)) {
     45            final JLabel lbl = new PresetLabel(t);
     46            lbl.addMouseListener(new MouseAdapter() {
     47                @Override
     48                public void mouseClicked(MouseEvent e) {
     49                    Collection<OsmPrimitive> selection = t.createSelection(presetHandler.getSelection());
     50                    if (selection == null || selection.isEmpty())
     51                        return;
     52                    int answer = t.showDialog(selection, false);
     53
     54                    if (answer == TaggingPreset.DIALOG_ANSWER_APPLY) {
     55                        presetHandler.updateTags(t.getChangedTags());
     56                    }
     57                }
     58            });
    10259            add(lbl, GBC.eol().fill(GBC.HORIZONTAL));
    10360        }
Note: See TracChangeset for help on using the changeset viewer.