Changeset 15049 in josm for trunk/src/org


Ignore:
Timestamp:
2019-05-05T02:24:18+02:00 (6 years ago)
Author:
Don-vip
Message:

see #16301 - add category icons in imagery preferences

Location:
trunk/src/org/openstreetmap/josm
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java

    r14214 r15049  
    1010import java.util.Collection;
    1111import java.util.Collections;
     12import java.util.EnumMap;
    1213import java.util.List;
    1314import java.util.Locale;
     
    4344import org.openstreetmap.josm.tools.CheckParameterUtil;
    4445import org.openstreetmap.josm.tools.ImageProvider;
     46import org.openstreetmap.josm.tools.ImageProvider.ImageSizes;
    4547import org.openstreetmap.josm.tools.LanguageInfo;
    4648import org.openstreetmap.josm.tools.Logging;
     
    123125        private final String category;
    124126        private final String description;
     127        private static final Map<ImageSizes, Map<ImageryCategory, ImageIcon>> iconCache =
     128                Collections.synchronizedMap(new EnumMap<>(ImageSizes.class));
    125129
    126130        ImageryCategory(String category, String description) {
     
    143147        public final String getDescription() {
    144148            return description;
     149        }
     150
     151        /**
     152         * Returns the category icon at the given size.
     153         * @param size icon wanted size
     154         * @return the category icon at the given size
     155         * @since 15049
     156         */
     157        public final ImageIcon getIcon(ImageSizes size) {
     158            return iconCache
     159                    .computeIfAbsent(size, x -> Collections.synchronizedMap(new EnumMap<>(ImageryCategory.class)))
     160                    .computeIfAbsent(this, x -> ImageProvider.get("data/imagery", x.category, size));
    145161        }
    146162
  • trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java

    r14632 r15049  
    2525import java.util.Map;
    2626import java.util.Objects;
     27import java.util.Optional;
    2728import java.util.Set;
    2829import java.util.stream.Collectors;
     
    3132import javax.swing.BorderFactory;
    3233import javax.swing.Box;
     34import javax.swing.ImageIcon;
    3335import javax.swing.JButton;
    3436import javax.swing.JLabel;
     
    5658import org.openstreetmap.josm.data.imagery.ImageryInfo;
    5759import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryBounds;
     60import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryCategory;
    5861import org.openstreetmap.josm.data.imagery.ImageryLayerInfo;
    5962import org.openstreetmap.josm.data.imagery.OffsetBookmark;
     
    7578import org.openstreetmap.josm.tools.GBC;
    7679import org.openstreetmap.josm.tools.ImageProvider;
     80import org.openstreetmap.josm.tools.ImageProvider.ImageSizes;
    7781import org.openstreetmap.josm.tools.LanguageInfo;
    7882import org.openstreetmap.josm.tools.Logging;
     
    335339
    336340            TableColumnModel mod = defaultTable.getColumnModel();
    337             mod.getColumn(2).setPreferredWidth(800);
    338             mod.getColumn(2).setCellRenderer(new ImageryURLTableCellRenderer(layerInfo.getLayers()));
    339             mod.getColumn(1).setPreferredWidth(400);
    340             mod.getColumn(1).setCellRenderer(new ImageryNameTableCellRenderer());
     341            mod.getColumn(3).setPreferredWidth(775);
     342            mod.getColumn(3).setCellRenderer(new ImageryURLTableCellRenderer(layerInfo.getLayers()));
     343            mod.getColumn(2).setPreferredWidth(475);
     344            mod.getColumn(2).setCellRenderer(new ImageryNameTableCellRenderer());
     345            mod.getColumn(0).setPreferredWidth(50);
    341346            mod.getColumn(0).setPreferredWidth(50);
    342347
     
    757762             */
    758763            public ImageryDefaultLayerTableModel() {
    759                 setColumnIdentifiers(new String[]{"", tr("Menu Name (Default)"), tr("Imagery URL (Default)")});
     764                setColumnIdentifiers(new String[]{"", "", tr("Menu Name (Default)"), tr("Imagery URL (Default)")});
    760765            }
    761766
     
    775780
    776781            @Override
     782            public Class<?> getColumnClass(int columnIndex) {
     783                return columnIndex == 0 ? ImageIcon.class : super.getColumnClass(columnIndex);
     784            }
     785
     786            @Override
    777787            public Object getValueAt(int row, int column) {
    778788                ImageryInfo info = layerInfo.getAllDefaultLayers().get(row);
     789                ImageryCategory cat = Optional.ofNullable(info.getImageryCategory()).orElse(ImageryCategory.OTHER);
    779790                switch (column) {
    780791                case 0:
     792                    return cat.getIcon(ImageSizes.TABLE);
     793                case 1:
    781794                    return info.getCountryCode();
    782                 case 1:
     795                case 2:
    783796                    return info;
    784                 case 2:
     797                case 3:
    785798                    return info.getExtendedUrl();
    786799                }
  • trunk/src/org/openstreetmap/josm/tools/ImageProvider.java

    r14695 r15049  
    150150         */
    151151        LAYER(Config.getPref().getInt("iconsize.layer", 16)),
     152        /** Table icon size
     153         * @since 15049
     154         */
     155        TABLE(SMALLICON),
    152156        /** Toolbar button icon size
    153157         * @since 9253
Note: See TracChangeset for help on using the changeset viewer.