Ignore:
Timestamp:
03.12.2009 19:02:25 (2 years ago)
Author:
Gubaer
Message:

fixed #3400: relation editor: improvement to highlight an element
fixed #3873: Feature request: download selected elements in relation editor
New: Dbl-Click in member table to set the map selection to this member
New: Ctrl-Dbl-Clik in member table to add the member to the the map selection
New: Download selected incomplete members only

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java

    r2512 r2563  
    44import java.awt.Color; 
    55import java.awt.Component; 
    6 import java.util.ArrayList; 
    7 import java.util.Collections; 
    8 import java.util.HashMap; 
    96 
    10 import javax.swing.ImageIcon; 
    117import javax.swing.JLabel; 
    128import javax.swing.JTable; 
     9import javax.swing.UIManager; 
    1310import javax.swing.table.TableCellRenderer; 
    1411 
    1512import org.openstreetmap.josm.data.osm.OsmPrimitive; 
    16 import org.openstreetmap.josm.data.osm.OsmPrimitiveType; 
    1713import org.openstreetmap.josm.gui.DefaultNameFormatter; 
    1814import org.openstreetmap.josm.tools.ImageProvider; 
    1915 
    2016/** 
    21  * This is the {@see TableCellRenderer} used in the tables of {@see RelationMemberMerger}. 
     17 * This is the {@see TableCellRenderer} used in {@see SelectionTable}. 
    2218 * 
    2319 */ 
    2420public  class SelectionTableCellRenderer extends JLabel implements TableCellRenderer { 
    25     public final static Color BGCOLOR_SELECTED = new Color(143,170,255); 
    26     public final static Color BGCOLOR_DOUBLE_ENTRY = new Color(255,234,213); 
     21    public final static Color BGCOLOR_DOUBLE_ENTRY = new Color(254,226,214); 
     22    public final static Color BGCOLOR_SINGLE_ENTRY = new Color(235,255,177); 
    2723 
    28     private HashMap<OsmPrimitiveType, ImageIcon>  icons; 
    2924    /** 
    3025     * reference to the member table model; required, in order to check whether a 
     
    3530 
    3631    /** 
    37      * Load the image icon for an OSM primitive of type node 
    38      * 
    39      * @return the icon; null, if not found 
    40      */ 
    41     protected void loadIcons() { 
    42         icons = new HashMap<OsmPrimitiveType, ImageIcon>(); 
    43         icons.put(OsmPrimitiveType.NODE,ImageProvider.get("data", "node")); 
    44         icons.put(OsmPrimitiveType.WAY, ImageProvider.get("data", "way")); 
    45         icons.put(OsmPrimitiveType.RELATION, ImageProvider.get("data", "relation")); 
    46     } 
    47  
    48     /** 
    4932     * constructor 
    5033     */ 
     
    5235        setIcon(null); 
    5336        setOpaque(true); 
    54         loadIcons(); 
    55     } 
    56  
    57     public String buildToolTipText(OsmPrimitive primitive) { 
    58         StringBuilder sb = new StringBuilder(); 
    59         sb.append("<html>"); 
    60         sb.append("<strong>id</strong>=") 
    61         .append(primitive.getId()) 
    62         .append("<br>"); 
    63         ArrayList<String> keyList = new ArrayList<String>(primitive.keySet()); 
    64         Collections.sort(keyList); 
    65         for (int i = 0; i < keyList.size(); i++) { 
    66             if (i > 0) { 
    67                 sb.append("<br>"); 
    68             } 
    69             String key = keyList.get(i); 
    70             sb.append("<strong>") 
    71             .append(key) 
    72             .append("</strong>") 
    73             .append("="); 
    74             String value = primitive.get(key); 
    75             while(value.length() != 0) { 
    76                 sb.append(value.substring(0,Math.min(50, value.length()))); 
    77                 if (value.length() > 50) { 
    78                     sb.append("<br>"); 
    79                     value = value.substring(50); 
    80                 } else { 
    81                     value = ""; 
    82                 } 
    83             } 
    84         } 
    85         sb.append("</html>"); 
    86         return sb.toString(); 
    8737    } 
    8838 
     
    9141     */ 
    9242    protected void reset() { 
    93         setBackground(Color.WHITE); 
    94         setForeground(Color.BLACK); 
     43        setBackground(UIManager.getColor("Table.background")); 
     44        setForeground(UIManager.getColor("Table.foreground")); 
    9545        setBorder(null); 
    9646        setIcon(null); 
     
    9949 
    10050    protected void renderBackground(OsmPrimitive primitive, boolean isSelected) { 
    101         Color bgc = Color.WHITE; 
    102         if (isSelected) { 
    103             bgc = BGCOLOR_SELECTED; 
    104         } else if (primitive != null && model != null && model.getNumMembersWithPrimitive(primitive) > 0) { 
     51        Color bgc = UIManager.getColor("Table.background"); 
     52        if (primitive != null && model != null && model.getNumMembersWithPrimitive(primitive) == 1) { 
     53            bgc = BGCOLOR_SINGLE_ENTRY; 
     54        } else if (primitive != null && model != null && model.getNumMembersWithPrimitive(primitive) > 1) { 
    10555            bgc = BGCOLOR_DOUBLE_ENTRY; 
    10656        } 
     
    10858    } 
    10959 
    110     protected void renderForeground(boolean isSelected) { 
    111         Color fgc = Color.BLACK; 
    112         setForeground(fgc); 
    113     } 
    11460 
    11561    protected void renderPrimitive(OsmPrimitive primitive) { 
    116         setIcon(icons.get(OsmPrimitiveType.from(primitive))); 
     62        setIcon(ImageProvider.get(primitive.getPrimitiveId().getType())); 
    11763        setText(primitive.getDisplayName(DefaultNameFormatter.getInstance())); 
    118         setToolTipText(buildToolTipText(primitive)); 
     64        setToolTipText(DefaultNameFormatter.getInstance().buildDefaultToolTip(primitive)); 
    11965    } 
    12066 
     
    12369 
    12470        reset(); 
    125         renderForeground(isSelected); 
    12671        renderBackground((OsmPrimitive)value, isSelected); 
    12772        renderPrimitive((OsmPrimitive)value); 
Note: See TracChangeset for help on using the changeset viewer.