Ignore:
Timestamp:
2013-10-07T16:23:05+02:00 (11 years ago)
Author:
Don-vip
Message:

fix #8512 - Do not display discardable keys by default. Expert users can display them by enabling "Display discardable keys" in OSM Data preferences, and change their display colour

File:
1 edited

Legend:

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

    r6264 r6314  
    6060import org.openstreetmap.josm.command.ChangePropertyCommand;
    6161import org.openstreetmap.josm.command.Command;
     62import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
     63import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
    6264import org.openstreetmap.josm.data.SelectionChangedListener;
    6365import org.openstreetmap.josm.data.osm.IRelation;
     
    113115 * @author imi
    114116 */
    115 public class PropertiesDialog extends ToggleDialog implements SelectionChangedListener, MapView.EditLayerChangeListener, DataSetListenerAdapter.Listener {
     117public class PropertiesDialog extends ToggleDialog implements SelectionChangedListener, MapView.EditLayerChangeListener, DataSetListenerAdapter.Listener, PreferenceChangedListener {
    116118
    117119    /**
     
    272274
    273275        editHelper.loadTagsIfNeeded();
     276       
     277        Main.pref.addPreferenceChangeListener(this);
    274278    }
    275279
     
    281285        propertyTable.getTableHeader().setReorderingAllowed(false);
    282286
    283         propertyTable.getColumnModel().getColumn(1).setCellRenderer(new DefaultTableCellRenderer(){
    284             @Override public Component getTableCellRendererComponent(JTable table, Object value,
    285                     boolean isSelected, boolean hasFocus, int row, int column) {
    286                 Component c = super.getTableCellRendererComponent(table, value, isSelected, false, row, column);
    287                 if (value == null)
    288                     return this;
    289                 if (c instanceof JLabel) {
    290                     String str = null;
    291                     if (value instanceof String) {
    292                         str = (String) value;
    293                     } else if (value instanceof Map<?, ?>) {
    294                         Map<?, ?> v = (Map<?, ?>) value;
    295                         if (v.size() != 1) {
    296                             str=tr("<different>");
    297                             c.setFont(c.getFont().deriveFont(Font.ITALIC));
    298                         } else {
    299                             final Map.Entry<?, ?> entry = v.entrySet().iterator().next();
    300                             str = (String) entry.getKey();
    301                         }
    302                     }
    303                     ((JLabel)c).putClientProperty("html.disable", Boolean.TRUE); // Fix #8730
    304                     ((JLabel)c).setText(str);
    305                 }
    306                 return c;
    307             }
    308         });
     287        PropertiesCellRenderer cellRenderer = new PropertiesCellRenderer();
     288        propertyTable.getColumnModel().getColumn(0).setCellRenderer(cellRenderer);
     289        propertyTable.getColumnModel().getColumn(1).setCellRenderer(cellRenderer);
    309290    }
    310291
     
    562543    public void destroy() {
    563544        super.destroy();
     545        Main.pref.removePreferenceChangeListener(this);
    564546        for (JosmAction action : josmActions) {
    565547            action.destroy();
     
    594576        propertyData.setRowCount(0);
    595577
     578        final boolean displayDiscardableKeys = Main.pref.getBoolean("display.discardable-keys", false);
    596579        final Map<String, Integer> keyCount = new HashMap<String, Integer>();
    597580        final Map<String, String> tags = new HashMap<String, String>();
     
    601584            types.add(TaggingPresetType.forPrimitive(osm));
    602585            for (String key : osm.keySet()) {
    603                 String value = osm.get(key);
    604                 keyCount.put(key, keyCount.containsKey(key) ? keyCount.get(key) + 1 : 1);
    605                 if (valueCount.containsKey(key)) {
    606                     Map<String, Integer> v = valueCount.get(key);
    607                     v.put(value, v.containsKey(value) ? v.get(value) + 1 : 1);
    608                 } else {
    609                     TreeMap<String, Integer> v = new TreeMap<String, Integer>();
    610                     v.put(value, 1);
    611                     valueCount.put(key, v);
     586                if (displayDiscardableKeys || !OsmPrimitive.getDiscardableKeys().contains(key)) {
     587                    String value = osm.get(key);
     588                    keyCount.put(key, keyCount.containsKey(key) ? keyCount.get(key) + 1 : 1);
     589                    if (valueCount.containsKey(key)) {
     590                        Map<String, Integer> v = valueCount.get(key);
     591                        v.put(value, v.containsKey(value) ? v.get(value) + 1 : 1);
     592                    } else {
     593                        TreeMap<String, Integer> v = new TreeMap<String, Integer>();
     594                        v.put(value, 1);
     595                        valueCount.put(key, v);
     596                    }
    612597                }
    613598            }
     
    12541239        }
    12551240    }
     1241
     1242    @Override
     1243    public void preferenceChanged(PreferenceChangeEvent e) {
     1244        if ("display.discardable-keys".equals(e.getKey())) {
     1245            if (Main.main.getCurrentDataSet() != null) {
     1246                // Re-load data when display preference change
     1247                selectionChanged(Main.main.getCurrentDataSet().getSelected());
     1248            }
     1249        }
     1250    }
    12561251}
Note: See TracChangeset for help on using the changeset viewer.