Ignore:
Timestamp:
2017-10-12T19:56:13+02:00 (7 years ago)
Author:
bastiK
Message:

closes #15410 - update tests + minor fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java

    r12987 r12989  
    3131import javax.swing.ListSelectionModel;
    3232import javax.swing.event.ListSelectionEvent;
     33import javax.swing.event.ListSelectionListener;
     34import javax.swing.event.TableModelEvent;
     35import javax.swing.event.TableModelListener;
    3336import javax.swing.table.AbstractTableModel;
    3437import javax.swing.table.DefaultTableCellRenderer;
     
    6366 * @see NamedColorProperty
    6467 */
    65 public class ColorPreference implements SubPreferenceSetting {
     68public class ColorPreference implements SubPreferenceSetting, ListSelectionListener, TableModelListener {
    6669
    6770    /**
     
    320323            int sel = colors.getSelectedRow();
    321324            ColorEntry ce = tableModel.getEntry(sel);
    322             Color c = Main.pref.getDefaultColor(ce.key);
     325            Color c = ce.info.getDefaultValue();
    323326            if (c != null) {
    324327                colors.setValueAt(c, sel, 1);
     
    330333            for (int i = 0; i < data.size(); ++i) {
    331334                ColorEntry ce = data.get(i);
    332                 Color c = Main.pref.getDefaultColor(ce.key);
     335                Color c = ce.info.getDefaultValue();
    333336                if (c != null) {
    334337                    colors.setValueAt(c, i, 1);
     
    345348        defaultSet.setEnabled(false);
    346349
    347         colors = new JTable(tableModel) {
    348             @Override public void valueChanged(ListSelectionEvent e) {
    349                 super.valueChanged(e);
    350                 int sel = getSelectedRow();
    351                 remove.setEnabled(sel >= 0 && isRemoveColor(sel));
    352                 colorEdit.setEnabled(sel >= 0);
    353                 defaultSet.setEnabled(sel >= 0);
    354             }
    355         };
     350        colors = new JTable(tableModel);
    356351        colors.addMouseListener(new MouseAdapter() {
    357352            @Override
     
    402397        colors.setPreferredScrollableViewportSize(new Dimension(100, 112));
    403398
     399        colors.getSelectionModel().addListSelectionListener(this);
     400        colors.getModel().addTableModelListener(this);
     401
    404402        JPanel panel = new JPanel(new GridBagLayout());
    405403        panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
     
    417415    }
    418416
    419     Boolean isRemoveColor(int row) {
    420         return tableModel.getEntry(row).info.getCategory().equals(NamedColorProperty.COLOR_CATEGORY_LAYER);
     417    private boolean isRemoveColor(ColorEntry ce) {
     418        return ce.info.getCategory().equals(NamedColorProperty.COLOR_CATEGORY_LAYER);
    421419    }
    422420
     
    443441        }
    444442        for (ColorEntry e : tableModel.getData()) {
    445             if (!e.isDefault()) {
     443            if (e.info.getValue() != null) {
    446444                if (e.toProperty().put(e.info.getValue())
    447445                        && e.key.startsWith("mappaint.")) {
     
    463461        return gui.getDisplayPreference();
    464462    }
     463
     464    @Override
     465    public void valueChanged(ListSelectionEvent e) {
     466        updateEnabledState();
     467    }
     468
     469    @Override
     470    public void tableChanged(TableModelEvent e) {
     471        updateEnabledState();
     472    }
     473
     474    private void updateEnabledState() {
     475        int sel = colors.getSelectedRow();
     476        ColorEntry ce = sel >= 0 ? tableModel.getEntry(sel) : null;
     477        remove.setEnabled(ce != null && isRemoveColor(ce));
     478        colorEdit.setEnabled(ce != null);
     479        defaultSet.setEnabled(ce != null && !ce.isDefault());
     480    }
    465481}
Note: See TracChangeset for help on using the changeset viewer.