kopia lustrzana https://github.com/JOSM/MapWithAI
MapWithAIProvidersPanel: Avoid index error when clicking outside of table
Signed-off-by: Taylor Smock <tsmock@fb.com>pull/1/head
rodzic
2becd190c3
commit
d8fdc1683f
|
@ -485,21 +485,23 @@ public class MapWithAIProvidersPanel extends JPanel {
|
||||||
private static void clickListener(MouseEvent e) {
|
private static void clickListener(MouseEvent e) {
|
||||||
if (e.getSource() instanceof JTable) {
|
if (e.getSource() instanceof JTable) {
|
||||||
JTable table = (JTable) e.getSource();
|
JTable table = (JTable) e.getSource();
|
||||||
int realCol = table.convertColumnIndexToModel(table.getSelectedColumn());
|
if (table.getSelectedRow() >= 0 && table.getSelectedColumn() >= 0) {
|
||||||
int realRow = table.convertRowIndexToModel(table.getSelectedRow());
|
int realCol = table.convertColumnIndexToModel(table.getSelectedColumn());
|
||||||
String tableName = table.getModel().getColumnName(realCol);
|
int realRow = table.convertRowIndexToModel(table.getSelectedRow());
|
||||||
if (tr("License").equals(tableName)) {
|
String tableName = table.getModel().getColumnName(realCol);
|
||||||
MapWithAIInfo info = MapWithAIDefaultLayerTableModel.getRow(realRow);
|
if (tr("License").equals(tableName)) {
|
||||||
if (info.getTermsOfUseURL() != null) {
|
MapWithAIInfo info = MapWithAIDefaultLayerTableModel.getRow(realRow);
|
||||||
OpenBrowser.displayUrl(info.getTermsOfUseURL());
|
if (info.getTermsOfUseURL() != null) {
|
||||||
}
|
OpenBrowser.displayUrl(info.getTermsOfUseURL());
|
||||||
} else if (tr("Enabled").equals(tableName)) {
|
}
|
||||||
MapWithAIInfo info = MapWithAIDefaultLayerTableModel.getRow(realRow);
|
} else if (tr("Enabled").equals(tableName)) {
|
||||||
MapWithAILayerInfo instance = MapWithAILayerInfo.getInstance();
|
MapWithAIInfo info = MapWithAIDefaultLayerTableModel.getRow(realRow);
|
||||||
if (instance.getLayers().contains(info)) {
|
MapWithAILayerInfo instance = MapWithAILayerInfo.getInstance();
|
||||||
instance.remove(info);
|
if (instance.getLayers().contains(info)) {
|
||||||
} else {
|
instance.remove(info);
|
||||||
instance.add(info);
|
} else {
|
||||||
|
instance.add(info);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -843,12 +845,17 @@ public class MapWithAIProvidersPanel extends JPanel {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent evt) {
|
public void actionPerformed(ActionEvent evt) {
|
||||||
|
this.setEnabled(false);
|
||||||
MapWithAILayerInfo.getInstance().loadDefaults(true, MainApplication.worker, false, () -> {
|
MapWithAILayerInfo.getInstance().loadDefaults(true, MainApplication.worker, false, () -> {
|
||||||
GuiHelper.runInEDT(DEFAULT_MODEL::fireTableDataChanged);
|
// This needs to be run in a block to avoid race conditions.
|
||||||
GuiHelper.runInEDT(defaultTable.getSelectionModel()::clearSelection);
|
GuiHelper.runInEDT(() -> {
|
||||||
GuiHelper.runInEDT(defaultTableListener::clearMap);
|
defaultTable.getSelectionModel().clearSelection();
|
||||||
/* loading new file may change active layers */
|
defaultTableListener.clearMap();
|
||||||
GuiHelper.runInEDT(ACTIVE_MODEL::fireTableDataChanged);
|
DEFAULT_MODEL.fireTableDataChanged();
|
||||||
|
/* loading new file may change active layers */
|
||||||
|
ACTIVE_MODEL.fireTableDataChanged();
|
||||||
|
this.setEnabled(true);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue