Ignore:
Timestamp:
2012-06-24T19:14:38+02:00 (12 years ago)
Author:
Don-vip
Message:

fix #4493, fix #7750: conflict dialog, nodes and members tab: allow selection via double-click, allow zoom via contexual menu, plus various fix in EDT violations

File:
1 edited

Legend:

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

    r5275 r5297  
    6363import org.openstreetmap.josm.gui.layer.Layer.LayerAction;
    6464import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     65import org.openstreetmap.josm.gui.util.GuiHelper;
    6566import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
    6667import org.openstreetmap.josm.tools.CheckParameterUtil;
     
    704705        @Override
    705706        public void updateEnabledState() {
    706             if (layer == null) {
    707                 if (getModel().getSelectedLayers().size() != 1) {
    708                     setEnabled(false);
    709                     return;
    710                 }
    711                 Layer selectedLayer = getModel().getSelectedLayers().get(0);
    712                 setEnabled(!isActiveLayer(selectedLayer));
    713             } else {
    714                 setEnabled(!isActiveLayer(layer));
    715             }
     707            GuiHelper.runInEDT(new Runnable() {
     708                @Override
     709                public void run() {
     710                    if (layer == null) {
     711                        if (getModel().getSelectedLayers().size() != 1) {
     712                            setEnabled(false);
     713                            return;
     714                        }
     715                        Layer selectedLayer = getModel().getSelectedLayers().get(0);
     716                        setEnabled(!isActiveLayer(selectedLayer));
     717                    } else {
     718                        setEnabled(!isActiveLayer(layer));
     719                    }
     720                }
     721            });
    716722        }
    717723
     
    12551261                return;
    12561262            layer.removePropertyChangeListener(this);
    1257             int size = getRowCount();
    1258             List<Integer> rows = getSelectedRows();
    1259             if (rows.isEmpty() && size > 0) {
    1260                 selectionModel.setSelectionInterval(size-1, size-1);
    1261             }
    1262             fireTableDataChanged();
    1263             fireRefresh();
    1264             ensureActiveSelected();
     1263            final int size = getRowCount();
     1264            final List<Integer> rows = getSelectedRows();
     1265            GuiHelper.runInEDTAndWait(new Runnable() {
     1266                @Override
     1267                public void run() {
     1268                    if (rows.isEmpty() && size > 0) {
     1269                        selectionModel.setSelectionInterval(size-1, size-1);
     1270                    }
     1271                    fireTableDataChanged();
     1272                    fireRefresh();
     1273                    ensureActiveSelected();
     1274                }
     1275            });
    12651276        }
    12661277
     
    14261437            if (getLayers().isEmpty())
    14271438                return;
    1428             if (getActiveLayer() != null) {
     1439            final Layer activeLayer = getActiveLayer();
     1440            if (activeLayer != null) {
    14291441                // there's an active layer - select it and make it
    14301442                // visible
    1431                 int idx = getLayers().indexOf(getActiveLayer());
     1443                int idx = getLayers().indexOf(activeLayer);
    14321444                selectionModel.setSelectionInterval(idx, idx);
    14331445                ensureSelectedIsVisible();
     
    15061518        /* ------------------------------------------------------------------------------ */
    15071519        @Override
    1508         public void activeLayerChange(Layer oldLayer, Layer newLayer) {
    1509             if (oldLayer != null) {
    1510                 int idx = getLayers().indexOf(oldLayer);
    1511                 if (idx >= 0) {
    1512                     fireTableRowsUpdated(idx,idx);
    1513                 }
    1514             }
    1515 
    1516             if (newLayer != null) {
    1517                 int idx = getLayers().indexOf(newLayer);
    1518                 if (idx >= 0) {
    1519                     fireTableRowsUpdated(idx,idx);
    1520                 }
    1521             }
    1522             ensureActiveSelected();
     1520        public void activeLayerChange(final Layer oldLayer, final Layer newLayer) {
     1521            GuiHelper.runInEDTAndWait(new Runnable() {
     1522                @Override
     1523                public void run() {
     1524                    if (oldLayer != null) {
     1525                        int idx = getLayers().indexOf(oldLayer);
     1526                        if (idx >= 0) {
     1527                            fireTableRowsUpdated(idx,idx);
     1528                        }
     1529                    }
     1530
     1531                    if (newLayer != null) {
     1532                        int idx = getLayers().indexOf(newLayer);
     1533                        if (idx >= 0) {
     1534                            fireTableRowsUpdated(idx,idx);
     1535                        }
     1536                    }
     1537                    ensureActiveSelected();
     1538                }
     1539            });
    15231540        }
    15241541
Note: See TracChangeset for help on using the changeset viewer.