Changeset 15457 in josm


Ignore:
Timestamp:
2019-10-15T20:40:50+02:00 (5 years ago)
Author:
Don-vip
Message:

see #17221 - make layer numbering an expert feature, configurable with layerlist.display.numbers advanced preference

File:
1 edited

Legend:

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

    r15390 r15457  
    3939import javax.swing.table.TableModel;
    4040
     41import org.openstreetmap.josm.actions.ExpertToggleAction;
    4142import org.openstreetmap.josm.actions.MergeLayerAction;
    4243import org.openstreetmap.josm.data.coor.EastNorth;
    4344import org.openstreetmap.josm.data.imagery.OffsetBookmark;
    4445import org.openstreetmap.josm.data.preferences.AbstractProperty;
     46import org.openstreetmap.josm.data.preferences.AbstractProperty.ValueChangeListener;
     47import org.openstreetmap.josm.data.preferences.BooleanProperty;
    4548import org.openstreetmap.josm.gui.MainApplication;
    4649import org.openstreetmap.josm.gui.MapFrame;
     
    97100    private static volatile LayerListDialog instance;
    98101
     102    private static final BooleanProperty DISPLAY_NUMBERS = new BooleanProperty("layerlist.display.numbers", true);
     103
    99104    /**
    100105     * Creates the instance of the dialog. It's connected to the layer manager
     
    127132    /** the list of layers (technically its a JTable, but appears like a list) */
    128133    private final LayerList layerList;
     134    private final ValueChangeListener<? super Boolean> displayNumbersPrefListener;
    129135
    130136    private final ActivateLayerAction activateLayerAction;
     
    219225        layerList.getColumnModel().getColumn(2).setResizable(false);
    220226
     227        int width = getLayerNumberWidth();
    221228        layerList.getColumnModel().getColumn(3).setCellRenderer(new LayerVisibleCellRenderer());
    222229        layerList.getColumnModel().getColumn(3).setCellEditor(new LayerVisibleCellEditor(new LayerVisibleCheckBox()));
    223         layerList.getColumnModel().getColumn(3).setMaxWidth(48);
    224         layerList.getColumnModel().getColumn(3).setPreferredWidth(48);
     230        layerList.getColumnModel().getColumn(3).setMaxWidth(width);
     231        layerList.getColumnModel().getColumn(3).setPreferredWidth(width);
    225232        layerList.getColumnModel().getColumn(3).setResizable(false);
    226233
     
    247254        }
    248255
     256        displayNumbersPrefListener = change -> {
     257            int numberWidth = getLayerNumberWidth();
     258            layerList.getColumnModel().getColumn(3).setMaxWidth(numberWidth);
     259            layerList.getColumnModel().getColumn(3).setPreferredWidth(numberWidth);
     260            repaint();
     261        };
     262        DISPLAY_NUMBERS.addListener(displayNumbersPrefListener);
     263
    249264        // init the model
    250265        //
     
    326341    }
    327342
     343    private static boolean displayLayerNumbers() {
     344        return ExpertToggleAction.isExpert() && DISPLAY_NUMBERS.get();
     345    }
     346
     347    private static int getLayerNumberWidth() {
     348        return displayLayerNumbers() ? 48 : 16;
     349    }
     350
    328351    /**
    329352     * Gets the layer manager this dialog is for.
     
    367390        JumpToMarkerActions.unregisterActions();
    368391        layerList.setTransferHandler(null);
     392        DISPLAY_NUMBERS.removeListener(displayNumbersPrefListener);
    369393        super.destroy();
    370394        instance = null;
     
    419443            boolean visible = layer.isVisible();
    420444            setSelected(visible);
    421             List<Layer> layers = MainApplication.getLayerManager().getLayers();
    422             int num = layers.size() - layers.indexOf(layer);
    423             setText(String.format("%s[%d]", num < 10 ? " " : "", num));
     445            if (displayLayerNumbers()) {
     446                List<Layer> layers = MainApplication.getLayerManager().getLayers();
     447                int num = layers.size() - layers.indexOf(layer);
     448                setText(String.format("%s[%d]", num < 10 ? " " : "", num));
     449            } else {
     450                setText(null);
     451            }
    424452            setTranslucent(layer.getOpacity() < 1.0);
    425453            setToolTipText(visible ?
Note: See TracChangeset for help on using the changeset viewer.