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

Location:
trunk/src/org/openstreetmap/josm/gui
Files:
1 added
3 edited

Legend:

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

    r6313 r6314  
    2424import java.awt.event.MouseListener;
    2525import java.awt.event.MouseMotionListener;
     26import java.lang.reflect.InvocationTargetException;
    2627import java.util.ArrayList;
    2728import java.util.Collection;
     
    341342                            }
    342343                        });
    343                     } catch (Exception e) {
     344                    } catch (InterruptedException e) {
     345                        // Occurs frequently during JOSM shutdown, log set to debug only
     346                        Main.debug("InterruptedException in "+MapStatus.class.getSimpleName());
     347                    } catch (InvocationTargetException e) {
    344348                        Main.warn(e);
    345349                    }
  • 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}
  • trunk/src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java

    r6296 r6314  
    4141    private JCheckBox virtualNodes = new JCheckBox(tr("Draw virtual nodes in select mode"));
    4242    private JCheckBox inactive = new JCheckBox(tr("Draw inactive layers in other color"));
     43    private JCheckBox discardableKeys = new JCheckBox(tr("Display discardable keys"));
    4344
    4445    // Options that affect performance
     
    117118
    118119        // outlineOnly
     120        outlineOnly.setToolTipText(tr("This option suppresses the filling of areas, overriding anything specified in the selected style."));
    119121        outlineOnly.setSelected(Main.pref.getBoolean("draw.data.area_outline_only", false));
    120         outlineOnly.setToolTipText(tr("This option suppresses the filling of areas, overriding anything specified in the selected style."));
    121 
     122
     123        // discardable keys
     124        discardableKeys.setToolTipText(tr("Display keys which have been deemed uninteresting to the point that they can be silently removed."));
     125        discardableKeys.setSelected(Main.pref.getBoolean("display.discardable-keys", false));
     126       
    122127        JLabel performanceLabel = new JLabel(tr("Options that affect drawing performance"));
    123128
     
    144149        panel.add(sourceBounds, GBC.eop().insets(20,0,0,0));
    145150        panel.add(inactive, GBC.eop().insets(20,0,0,0));
     151        panel.add(discardableKeys, GBC.eop().insets(20,0,0,0));
    146152
    147153        ExpertToggleAction.addVisibilitySwitcher(performanceLabel);
     
    150156        ExpertToggleAction.addVisibilitySwitcher(useHighlighting);
    151157        ExpertToggleAction.addVisibilitySwitcher(outlineOnly);
     158        ExpertToggleAction.addVisibilitySwitcher(discardableKeys);
    152159
    153160        panel.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.BOTH));
     
    171178        Main.pref.put("draw.target-highlight", useHighlighting.isSelected());
    172179        Main.pref.put("draw.helper-line", drawHelperLine.isSelected());
     180        Main.pref.put("display.discardable-keys", discardableKeys.isSelected());
    173181        int vn = Main.pref.getInteger("mappaint.node.virtual-size", 8);
    174182        if (virtualNodes.isSelected()) {
Note: See TracChangeset for help on using the changeset viewer.