MapWithAIProvidersPanel: Avoid index error when clicking outside of table

Signed-off-by: Taylor Smock <tsmock@fb.com>
pull/1/head
Taylor Smock 2021-07-20 13:58:15 -06:00
rodzic 2becd190c3
commit d8fdc1683f
1 zmienionych plików z 27 dodań i 20 usunięć

Wyświetl plik

@ -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);
});
}); });
} }
} }