public TableChooserDialog createTableChooserDialog(String title, TableChooserExecutor executor,
			boolean isModal) throws ImproperUseException {

		if (isRunningHeadless()) {
			throw new ImproperUseException(
				"The createTableChooserDialog() method can only be run within a headed Ghidra.");
		}

		PluginTool tool = state.getTool();
		if (tool == null) {
			throw new ImproperUseException(
				"The createTableChooserDialog() method can only be run within a headed Ghidra.");
		}

		Program program = state.getCurrentProgram();
		TableService service = tool.getService(TableService.class);
		return service.createTableChooserDialog(executor, program, title, null, isModal);
	}
Creates a TableChooserDialog that allows the script to display a list of addresses (and
associated column data) in a table and also provides the capability to execute an
action from a selection in the table.
<p>
This method is unavailable in headless mode.

@param title of the dialog
@param executor the TableChooserExecuter to be used to apply operations on table entries.
@param isModal indicates whether the dialog should be modal or not
@return a new TableChooserDialog.

@throws ImproperUseException if this method is run in headless mode; if this script is
                             run directly via Java or another script where the state does
                             not include a tool.
Ghidra/Features/Base/src/main/java/ghidra/app/script/GhidraScript.java