private JComponent buildTablePanel() {
		stringModel = new StringTableModel(tool, options);

		threadedTablePanel = new GhidraThreadedTablePanel<>(stringModel, 1000);
		table = threadedTablePanel.getTable();
		table.setActionsEnabled(true);
		table.setName("DataTable");
		table.setPreferredScrollableViewportSize(new Dimension(350, 150));
		table.getSelectionModel().addListSelectionListener(e -> tableSelectionChanged());

		stringModel.addTableModelListener(e -> updateSubTitle());

		table.installNavigation(tool);
		table.setDefaultRenderer(FoundString.DefinedState.class, new DefinedColumnRenderer());

		filterPanel = new GhidraTableFilterPanel<>(table, stringModel);

		toggleShowMakeStringOptionsButton = new JButton(COLLAPSE_ICON);
		toggleShowMakeStringOptionsButton.setToolTipText("Toggle Make Strings Panel On/Off");
		toggleShowMakeStringOptionsButton.addActionListener(e -> toggleShowMakeStringOptions());

		JPanel panel = new JPanel(new BorderLayout());
		panel.add(threadedTablePanel, BorderLayout.CENTER);
		JPanel bottomPanel = new JPanel(new BorderLayout());
		bottomPanel.add(filterPanel, BorderLayout.CENTER);
		bottomPanel.add(toggleShowMakeStringOptionsButton, BorderLayout.EAST);
		panel.add(bottomPanel, BorderLayout.SOUTH);

		return panel;
	}
Sets the given row as a selection in the table.  Note, this method assumes that the given
row was obtained by getting the selected row from the table and not somehow
obtained from the model.

@param row the row in the table to select
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/string/StringTableProvider.java