Ignore:
Timestamp:
28.12.2009 00:16:04 (2 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.