Changeset 348 in josm


Ignore:
Timestamp:
2007-10-07T19:36:54+02:00 (17 years ago)
Author:
framm
Message:
  • bugfix refresh relation list
  • bugfix NPE on clicking "select" in relation editors with no members selected
Location:
trunk/src/org/openstreetmap/josm
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java

    r304 r348  
    4242                        OsmDataLayer data = (OsmDataLayer)Main.map.mapView.getActiveLayer();
    4343                        data.setModified(true);
     44                        data.fireDataChange();
    4445                }
    4546                fireCommandsChanged();
     
    5859                        OsmDataLayer data = (OsmDataLayer)Main.map.mapView.getActiveLayer();
    5960                        data.setModified(data.uploadedModified || !commands.isEmpty());
     61                        data.fireDataChange();
    6062                        fireCommandsChanged();
    6163                }               
     
    7678                        OsmDataLayer data = (OsmDataLayer)Main.map.mapView.getActiveLayer();
    7779                        data.setModified(true);
     80                        data.fireDataChange();
    7881                        fireCommandsChanged();
    7982                }
  • trunk/src/org/openstreetmap/josm/gui/dialogs/RelationEditor.java

    r343 r348  
    1313import java.beans.PropertyChangeEvent;
    1414import java.beans.PropertyChangeListener;
     15import java.util.ArrayList;
    1516import java.util.Collections;
    1617import java.util.Map.Entry;
     
    174175               
    175176            memberData.setColumnIdentifiers(new String[]{tr("Role"),tr("Occupied By")});
    176                 memberTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
     177                memberTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    177178                memberTable.getColumnModel().getColumn(1).setCellRenderer(new OsmPrimitivRenderer());
    178179                /*
     
    228229                buttonPanel.add(createButton(marktr("Select"),"select", tr("Highlight the member from the current table row as JOSM's selection"), KeyEvent.VK_S, new ActionListener() {
    229230                        public void actionPerformed(ActionEvent e) {
    230                                 int row = memberTable.getSelectedRow();
    231                                 OsmPrimitive p = (OsmPrimitive) memberTable.getValueAt(row, 1);
    232                                 Main.ds.setSelected(Collections.singleton(p));
     231                                int[] rows = memberTable.getSelectedRows();
     232                                ArrayList<OsmPrimitive> sel = new ArrayList<OsmPrimitive>(rows.length);
     233                                for (int i : rows) { sel.add((OsmPrimitive)memberTable.getValueAt(i, 1)); }
     234                                Main.ds.setSelected(sel);
    233235                        }
    234236                }));
  • trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java

    r347 r348  
    3131import org.openstreetmap.josm.data.osm.OsmPrimitive;
    3232import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
     33import org.openstreetmap.josm.gui.layer.DataChangeListener;
     34import org.openstreetmap.josm.gui.layer.Layer;
     35import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     36import org.openstreetmap.josm.gui.layer.Layer.LayerChangeListener;
    3337import org.openstreetmap.josm.tools.ImageProvider;
    3438
     
    4246 * @author Frederik Ramm <frederik@remote.org>
    4347 */
    44 public class RelationListDialog extends ToggleDialog {
     48public class RelationListDialog extends ToggleDialog implements LayerChangeListener, DataChangeListener {
    4549
    4650        /**
     
    9599                        }
    96100                }));
    97                
     101                Layer.listeners.add(this);
    98102                add(buttonPanel, BorderLayout.SOUTH);
    99                
    100                 /*
    101                 DataSet.dataListeners.add(new DataChangedListener() {
    102                         public void dataChanged() {
    103                                 updateList();
    104                                 repaint();
    105                         }
    106                 });
    107                 */
    108103        }
    109104
     
    133128        }
    134129       
     130        public void activeLayerChange(Layer a, Layer b) {
     131                if (a instanceof OsmDataLayer && b instanceof OsmDataLayer) {
     132                        ((OsmDataLayer)a).listenerDataChanged.remove(this);
     133                        ((OsmDataLayer)b).listenerDataChanged.add(this);
     134                        updateList();
     135                        repaint();
     136                }
     137        }
     138       
     139        public void layerRemoved(Layer a) {
     140                if (a instanceof OsmDataLayer) {
     141                        ((OsmDataLayer)a).listenerDataChanged.remove(this);
     142                }
     143        }
     144        public void layerAdded(Layer a) {
     145                if (a instanceof OsmDataLayer) {
     146                        ((OsmDataLayer)a).listenerDataChanged.add(this);
     147                }
     148        }       
     149        public void dataChanged(OsmDataLayer l) {
     150                updateList();
     151                repaint();
     152        }
     153       
    135154}
  • trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java

    r343 r348  
    109109
    110110        public final LinkedList<ModifiedChangedListener> listenerModified = new LinkedList<ModifiedChangedListener>();
    111 
     111        public final LinkedList<DataChangeListener> listenerDataChanged = new LinkedList<DataChangeListener>();
     112       
    112113        private SimplePaintVisitor mapPainter = new SimplePaintVisitor();
    113114
     
    177178                for (DataSource src : ((OsmDataLayer)from).data.dataSources)
    178179                        data.dataSources.add(src);
     180                fireDataChange();
    179181               
    180182                if (visitor.conflicts.isEmpty())
     
    315317        this.mapPainter = mapPainter;
    316318    }
     319       
     320        public void fireDataChange() {
     321                for (DataChangeListener dcl : listenerDataChanged) {
     322                        dcl.dataChanged(this);
     323                }
     324        }
    317325}
Note: See TracChangeset for help on using the changeset viewer.