Ignore:
Timestamp:
2013-06-27T11:49:16+02:00 (11 years ago)
Author:
akks
Message:

Highlight selected members in Relation Editor dialog

File:
1 edited

Legend:

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

    r5891 r6036  
    88import java.awt.event.ActionEvent;
    99import java.awt.event.KeyEvent;
     10import java.awt.event.MouseAdapter;
     11import java.awt.event.MouseEvent;
     12import java.util.ArrayList;
    1013import java.util.Arrays;
    1114import java.util.Collection;
     
    2427import org.openstreetmap.josm.actions.AutoScaleAction;
    2528import org.openstreetmap.josm.actions.ZoomToAction;
     29import org.openstreetmap.josm.data.osm.OsmPrimitive;
     30import org.openstreetmap.josm.data.osm.RelationMember;
    2631import org.openstreetmap.josm.data.osm.Way;
    2732import org.openstreetmap.josm.gui.MapView;
     
    3136import org.openstreetmap.josm.gui.layer.Layer;
    3237import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     38import org.openstreetmap.josm.gui.util.HighlightHelper;
    3339import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTable;
    3440
     
    3743    /** the additional actions in popup menu */
    3844    private ZoomToGapAction zoomToGap;
     45    private HighlightHelper highlightHelper = new HighlightHelper();
    3946
    4047    /**
     
    6673                KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false), "selectNextColumnCell");
    6774
     75        initHighlighting();
     76       
    6877        // install custom navigation actions
    6978        //
     
    8998        return menu;
    9099    }
    91 
     100   
    92101    @Override
    93102    public Dimension getPreferredSize(){
     
    104113    }
    105114
     115    @Override
    106116    public void makeMemberVisible(int index) {
    107117        scrollRectToVisible(getCellRect(index, 0, true));
     118    }
     119
     120    private void initHighlighting() {
     121        getMemberTableModel().getSelectionModel().addListSelectionListener(new ListSelectionListener() {
     122            @Override
     123            public void valueChanged(ListSelectionEvent lse) {
     124                if (Main.isDisplayingMapView()) {
     125                    Collection<RelationMember> sel = getMemberTableModel().getSelectedMembers();
     126                    ArrayList<OsmPrimitive> toHighlight = new ArrayList<OsmPrimitive>();
     127                    for (RelationMember r: sel) {
     128                        if (r.getMember().isUsable()) {
     129                            toHighlight.add(r.getMember());
     130                        }
     131                    }
     132                    if (highlightHelper.highlightOnly(toHighlight)) {
     133                        Main.map.mapView.repaint();
     134                    }
     135                }
     136            }});
     137        if (Main.isDisplayingMapView()) {
     138            HighlightHelper.clearAllHighlighted();
     139            Main.map.mapView.repaint();
     140        }
    108141    }
    109142
     
    145178    private class SelectPreviousColumnCellAction extends AbstractAction {
    146179
     180        @Override
    147181        public void actionPerformed(ActionEvent e) {
    148182            int col = getSelectedColumn();
     
    166200        super.unlinkAsListener();
    167201        MapView.removeLayerChangeListener(zoomToGap);
     202        highlightHelper.clear();
    168203    }
    169204
Note: See TracChangeset for help on using the changeset viewer.