Changeset 7532 in josm


Ignore:
Timestamp:
2014-09-14T02:03:20+02:00 (10 years ago)
Author:
Don-vip
Message:

fix #8664, fix #10510 - possibility to add icon to preset labels

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/data/defaultpresets.xml

    r7511 r7532  
    3131label: simple static text label
    3232  text: the text to display
     33  icon: location of icon to display (optional)
     34  icon_size: maximal size of icon (optional). If no value is given, default is 16px
    3335
    3436space: empty line
  • trunk/data/tagging-preset.xsd

    r7504 r7532  
    155155                <attribute name="text" type="string" use="required" />
    156156                <attribute name="text_context" type="string" />
     157                <attribute name="icon" type="string" />
     158                <attribute name="icon_size" type="integer" />
    157159
    158160                <attribute name="name" use="prohibited" />
  • trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java

    r7525 r7532  
    220220        }
    221221        if (preset_name_label) {
    222             TaggingPresetItems.Label.addLabel(p, getName());
     222            TaggingPresetItems.Label.addLabel(p, getIcon(), getName());
    223223        }
    224224
     
    374374            }
    375375
    376             answer = new PresetDialog(p, title, (ImageIcon) getValue(Action.SMALL_ICON),
     376            answer = new PresetDialog(p, title, preset_name_label ? null : (ImageIcon) getValue(Action.SMALL_ICON),
    377377                    sel.isEmpty(), showNewRelation).getValue();
    378378        }
  • trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java

    r7525 r7532  
    3232
    3333import javax.swing.ButtonGroup;
     34import javax.swing.Icon;
    3435import javax.swing.ImageIcon;
    3536import javax.swing.JButton;
     
    9192        public String display_value;
    9293        public String short_description;
     94        /** The location of icon file to display */
    9395        public String icon;
     96        /** The size of displayed icon. If not set, default is size from icon file */
    9497        public String icon_size;
    9598        /** The localized version of {@link #display_value}. */
     
    128131        public ImageIcon getIcon() {
    129132            return icon == null ? null : loadImageIcon(icon, zipIcons, parseInteger(icon_size));
    130         }
    131 
    132         private Integer parseInteger(String str) {
    133             if (str == null || str.isEmpty())
    134                 return null;
    135             try {
    136                 return Integer.parseInt(str);
    137             } catch (Exception e) {
    138                 //
    139             }
    140             return null;
    141133        }
    142134
     
    357349    public static class Label extends TaggingPresetTextItem {
    358350
     351        /** The location of icon file to display (optional) */
     352        public String icon;
     353        /** The size of displayed icon. If not set, default is 16px */
     354        public String icon_size;
     355
    359356        @Override
    360357        public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
    361358            initializeLocaleText(null);
    362             addLabel(p, locale_text);
     359            addLabel(p, getIcon(), locale_text);
    363360            return true;
    364361        }
     
    367364         * Adds a new {@code JLabel} to the given panel.
    368365         * @param p The panel
     366         * @param icon the icon (optional, can be null)
    369367         * @param label The text label
    370368         */
    371         public static void addLabel(JPanel p, String label) {
    372             p.add(new JLabel(label), GBC.eol().fill(GBC.HORIZONTAL));
     369        public static void addLabel(JPanel p, Icon icon, String label) {
     370            p.add(new JLabel(label, icon, JLabel.LEADING), GBC.eol().fill(GBC.HORIZONTAL));
     371        }
     372
     373        /**
     374         * Returns the label icon, if any.
     375         * @return the label icon, or {@code null}
     376         */
     377        public ImageIcon getIcon() {
     378            Integer size = parseInteger(icon_size);
     379            return icon == null ? null : loadImageIcon(icon, TaggingPresetReader.getZipIcons(), size != null ? size : 16);
    373380        }
    374381    }
     
    15071514        return imgProv.get();
    15081515    }
     1516
     1517    protected static Integer parseInteger(String str) {
     1518        if (str == null || str.isEmpty())
     1519            return null;
     1520        try {
     1521            return Integer.parseInt(str);
     1522        } catch (Exception e) {
     1523            if (Main.isTraceEnabled()) {
     1524                Main.trace(e.getMessage());
     1525            }
     1526        }
     1527        return null;
     1528    }
    15091529}
Note: See TracChangeset for help on using the changeset viewer.