Ignore:
Timestamp:
2009-12-28T00:16:04+01:00 (14 years ago)
Author:
Gubaer
Message:

new: Changeset Cache Manager for querying, downloading, browsing, and managing changesets within JOSM. See also Changeset Manager and Changeset Query Dialog

File:
1 edited

Legend:

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

    r2512 r2689  
    33
    44import java.awt.Component;
    5 import java.util.ArrayList;
    6 import java.util.Collections;
    75
    86import javax.swing.DefaultListCellRenderer;
     
    1513
    1614import org.openstreetmap.josm.data.osm.OsmPrimitive;
    17 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
     15import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
    1816import org.openstreetmap.josm.tools.ImageProvider;
    1917
     
    2725 */
    2826public class OsmPrimitivRenderer implements ListCellRenderer, TableCellRenderer {
     27    private DefaultNameFormatter formatter = new DefaultNameFormatter();
     28
    2929    /**
    3030     * Default list cell renderer - delegate for ListCellRenderer operation
     
    5050    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    5151        Component def = defaultTableCellRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    52         return renderer(def, (OsmPrimitive) value);
     52        if (value instanceof OsmPrimitive)
     53            return renderer(def, (OsmPrimitive) value);
     54        else if (value instanceof HistoryOsmPrimitive)
     55            return renderer(def, (HistoryOsmPrimitive) value);
     56        else
     57            return def;
    5358    }
    5459
     
    6368        if (def != null && value != null && def instanceof JLabel) {
    6469            ((JLabel)def).setText(value.getDisplayName(DefaultNameFormatter.getInstance()));
    65             ((JLabel)def).setIcon(ImageProvider.get(OsmPrimitiveType.from(value)));
    66             ((JLabel)def).setToolTipText(buildToolTipText(value));
     70            ((JLabel)def).setIcon(ImageProvider.get(value.getType()));
     71            ((JLabel)def).setToolTipText(formatter.buildDefaultToolTip(value));
    6772        }
    6873        return def;
     
    7075
    7176    /**
    72      * build the tool tip text for an {@see OsmPrimitive}. It consist of the formatted
    73      * key/value pairs for this primitive.
    74      *
    75      * @param primitive
    76      * @return the tool tip text
     77     * Internal method that stuffs information into the rendering component
     78     * provided that it's a kind of JLabel.
     79     * @param def the rendering component
     80     * @param value the HistoryOsmPrimtive to render
     81     * @return the modified rendering component
    7782     */
    78     public String buildToolTipText(OsmPrimitive primitive) {
    79         StringBuilder sb = new StringBuilder();
    80 
    81         sb.append("<html>");
    82         // show the id
    83         //
    84         sb.append("<strong>id</strong>=")
    85         .append(primitive.getId())
    86         .append("<br>");
    87 
    88         // show the key/value-pairs, sorted by key
    89         //
    90         ArrayList<String> keyList = new ArrayList<String>(primitive.keySet());
    91         Collections.sort(keyList);
    92         for (int i = 0; i < keyList.size(); i++) {
    93             if (i > 0) {
    94                 sb.append("<br>");
    95             }
    96             String key = keyList.get(i);
    97             sb.append("<strong>")
    98             .append(key)
    99             .append("</strong>")
    100             .append("=");
    101             // make sure long values are split into several rows. Otherwise
    102             // the tool tip window can become to wide
    103             //
    104             String value = primitive.get(key);
    105             while(value.length() != 0) {
    106                 sb.append(value.substring(0,Math.min(50, value.length())));
    107                 if (value.length() > 50) {
    108                     sb.append("<br>");
    109                     value = value.substring(50);
    110                 } else {
    111                     value = "";
    112                 }
    113             }
     83    private Component renderer(Component def, HistoryOsmPrimitive value) {
     84        if (def != null && value != null && def instanceof JLabel) {
     85            ((JLabel)def).setText(value.getDisplayName(DefaultNameFormatter.getInstance()));
     86            ((JLabel)def).setIcon(ImageProvider.get(value.getType()));
     87            ((JLabel)def).setToolTipText(formatter.buildDefaultToolTip(value));
    11488        }
    115         sb.append("</html>");
    116         return sb.toString();
     89        return def;
    11790    }
    11891}
Note: See TracChangeset for help on using the changeset viewer.