Ignore:
Timestamp:
2009-11-14T17:59:10+01:00 (14 years ago)
Author:
Gubaer
Message:

fixed #3352: History doesn't get invalidated on upload?
fixed #3912: Extend history dialog to contain the currently modified version
new: zoom to node in list of nodes in history dialog (popup menu)
new: load history of node from node list in history dialog (popup menu or double click)
fixed: close all history dialogs when the number of layers drop to 0
fixed: implemented equals() and hashCode() on SimplePrimitiveId
fixed: history features now usePrimitiveId instead of long.

File:
1 edited

Legend:

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

    r2250 r2448  
    1515import javax.swing.table.TableCellRenderer;
    1616
     17import org.openstreetmap.josm.Main;
     18import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1719import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
    1820import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
     21import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    1922import org.openstreetmap.josm.tools.ImageProvider;
    2023
     
    4447    }
    4548
    46     protected void renderIcon(HistoryOsmPrimitive primitive) {
    47         ImageIcon icon = null;
    48         if (primitive != null) {
    49             icon = icons.get(primitive.getType());
    50         }
     49    protected void renderIcon(OsmPrimitiveType type) {
     50        ImageIcon icon = type == null? null : icons.get(type);
    5151        setIcon(icon);
    5252    }
    5353
    5454    protected void renderText(HistoryOsmPrimitive primitive) {
    55         // render lable text
     55        // render label text
    5656        //
    5757        StringBuilder sb = new StringBuilder();
     
    8686    }
    8787
     88    protected OsmDataLayer getEditLayer() {
     89        try {
     90            return Main.map.mapView.getEditLayer();
     91        } catch(NullPointerException e) {
     92            return null;
     93        }
     94    }
     95
     96    protected void renderLatestText(OsmPrimitive primitive) {
     97        // -- label text
     98        StringBuffer sb = new StringBuffer();
     99        if (primitive == null) {
     100            setText("");
     101            return;
     102        }
     103        if (primitive.isModified()) {
     104            sb.append("*");
     105        }
     106        sb.append(tr("Version {0} in editor", primitive.getVersion()));
     107        if (primitive.isDeleted()) {
     108            sb.append(tr("[deleted]"));
     109        }
     110        setText(sb.toString());
     111
     112        // -- tooltip text
     113        sb = new StringBuffer();
     114        OsmDataLayer l = getEditLayer();
     115
     116        sb.append(
     117                tr(
     118                        "Version {0} currently edited in data layer ''{1}''",
     119                        primitive.getId(),
     120                        l == null ? tr("unknown") : l.getName()
     121                )
     122        );
     123        setToolTipText(sb.toString());
     124    }
     125
    88126    protected void renderBackground(JTable table, int row, boolean isSelected) {
    89127        Color bgColor = Color.WHITE;
     
    96134    }
    97135
     136    public void renderVersionFromHistory(HistoryOsmPrimitive primitive, JTable table, int row, boolean isSelected) {
     137        renderIcon(primitive.getType());
     138        renderText(primitive);
     139        renderBackground(table, row, isSelected);
     140    }
     141
     142    public void renderLatest(OsmPrimitive primitive, JTable table, int row, boolean isSelected) {
     143        renderIcon(primitive.getType());
     144        renderLatestText(getModel(table).getLatest());
     145        renderBackground(table, row, isSelected);
     146    }
     147
    98148    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
    99149            int row, int column) {
    100 
    101         HistoryOsmPrimitive primitive = (HistoryOsmPrimitive)value;
    102         renderIcon(primitive);
    103         renderText(primitive);
    104         renderBackground(table, row, isSelected);
     150        if (getModel(table).isLatest(row)) {
     151            renderLatest(getModel(table).getLatest(),table, row, isSelected);
     152        } else {
     153            renderVersionFromHistory((HistoryOsmPrimitive)value, table, row, isSelected);
     154        }
    105155        return this;
    106156    }
Note: See TracChangeset for help on using the changeset viewer.