From 9dd36b6788509f274536567783ad7baab765ae10 Mon Sep 17 00:00:00 2001 From: dev747368 <48332326+dev747368@users.noreply.github.com> Date: Tue, 6 Aug 2019 13:33:59 -0400 Subject: [PATCH] GT-2370 - make batch import language selection more user-friendly If a set of files in batch import didn't have a language set automatically, there wasn't much indication to the user how to set the language by clicking on the column. --- .../importer/batch/BatchImportDialog.java | 26 ++++++++++++++++++- .../importer/batch/BatchImportTableModel.java | 3 +++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/Ghidra/Features/Base/src/main/java/ghidra/plugins/importer/batch/BatchImportDialog.java b/Ghidra/Features/Base/src/main/java/ghidra/plugins/importer/batch/BatchImportDialog.java index 356b7dfc6a..1710da0e0d 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/plugins/importer/batch/BatchImportDialog.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/plugins/importer/batch/BatchImportDialog.java @@ -156,6 +156,7 @@ public class BatchImportDialog extends DialogComponentProvider { TableColumn langColumn = table.getColumnModel().getColumn(BatchImportTableModel.COLS.LANG.ordinal()); langColumn.setCellEditor(createLangColumnCellEditor()); + langColumn.setCellRenderer(createLangColumnCellRenderer()); JScrollPane scrollPane = new JScrollPane(table); @@ -478,7 +479,6 @@ public class BatchImportDialog extends DialogComponentProvider { private TableCellRenderer createFilesColumnCellRenderer() { TableCellRenderer cellRenderer = new GTableCellRenderer() { - @Override public Component getTableCellRendererComponent(GTableCellRenderingData data) { @@ -524,6 +524,30 @@ public class BatchImportDialog extends DialogComponentProvider { return cellEditor; } + private TableCellRenderer createLangColumnCellRenderer() { + TableCellRenderer cellRenderer = new GTableCellRenderer() { + { + setHTMLRenderingEnabled(true); + } + + @Override + public Component getTableCellRendererComponent(GTableCellRenderingData data) { + JLabel renderer = (JLabel) super.getTableCellRendererComponent(data); + renderer.setToolTipText("Click to set language"); + return renderer; + } + + @Override + protected String getText(Object value) { + BatchGroupLoadSpec bgls = (BatchGroupLoadSpec) value; + return (bgls != null) ? bgls.toString() + : "Click to set language"; + } + }; + + return cellRenderer; + } + private class SourcesListModel extends AbstractListModel { int prevSize = batchInfo.getUserAddedSources().size(); diff --git a/Ghidra/Features/Base/src/main/java/ghidra/plugins/importer/batch/BatchImportTableModel.java b/Ghidra/Features/Base/src/main/java/ghidra/plugins/importer/batch/BatchImportTableModel.java index 1eeaa23660..31be182df2 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/plugins/importer/batch/BatchImportTableModel.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/plugins/importer/batch/BatchImportTableModel.java @@ -23,6 +23,7 @@ import javax.swing.table.TableModel; import org.apache.commons.lang3.StringUtils; import docking.widgets.table.AbstractSortedTableModel; +import ghidra.util.Msg; /** * An adapter between {@link BatchInfo} and a {@link TableModel}. @@ -140,6 +141,8 @@ class BatchImportTableModel extends AbstractSortedTableModel { boolean newValue = (Boolean) aValue; // dont allow enable unless there is a lang chosen if (newValue == true && row.getSelectedBatchGroupLoadSpec() == null) { + Msg.showWarn(this, null, "Missing language", + "Select a language for this group before enabling"); return; }