private JComponent createWorkPanel() {

		scalarModel = new ScalarSearchModel(plugin, currentSelection);

		threadedTablePanel = new GhidraThreadedTablePanel<>(scalarModel, 1000);
		scalarTable = threadedTablePanel.getTable();

		filter = new GTableFilterPanel<>(scalarTable, scalarModel);

		scalarTable.setName("ScalarTable");
		scalarTable.setAutoLookupColumn(ScalarSearchModel.PREVIEW_COLUMN);
		scalarTable.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
		scalarTable.setPreferredScrollableViewportSize(new Dimension(400, 400));
		scalarTable.setRowSelectionAllowed(true);
		scalarTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
		scalarTable.getSelectionModel().addListSelectionListener(e -> notifyContextChanged());

		filter.setSecondaryFilter(new ScalarTableSecondaryFilter());

		scalarModel.addTableModelListener(
			e -> setSubTitle(primarySubTitle + ' ' + scalarModel.getRowCount() + " items"));

		scalarTable.installNavigation(tool);

		mainPanel = new JPanel(new BorderLayout());
		mainPanel.add(threadedTablePanel, BorderLayout.CENTER);

		JPanel filterPanel = new JPanel(new BorderLayout());
		filterPanel.add(filter, BorderLayout.NORTH);

		filterPanel.add(new RangeFilterPanel(), BorderLayout.SOUTH);

		mainPanel.add(filterPanel, BorderLayout.SOUTH);

		return mainPanel;
	}
Displays the results of a query from the {@link ScalarSearchPlugin}. Consists of 2 components:
<ul>
<li>The scalar table that is displayed to the user</li>
<li>The range filter that allows the user to filter the scalar table via a min and max value.</li>
</ul>
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/scalartable/ScalarSearchProvider.java