private void createTable() {
		table = new CompositeEditorTable(model);

		TableColumnModel columnModel = table.getColumnModel();
		if (columnModel instanceof GTableColumnModel) {
			GTableColumnModel gColumnModel = (GTableColumnModel) columnModel;
			List<TableColumn> hiddenColumns = model.getHiddenColumns();
			for (TableColumn column : hiddenColumns) {
				gColumnModel.addHiddenColumn(column);
			}
		}

		table.setAutoEditEnabled(false); // do not edit when typing

		table.addMouseListener(new CompositeTableMouseListener());

		table.getSelectionModel().addListSelectionListener(e -> {
			if (e.getValueIsAdjusting()) {
				return;
			}
			model.setSelection(table.getSelectedRows());
			if (table.getAutoscrolls()) {
				table.scrollToSelectedRow();
			}
		});

		table.getColumnModel().getSelectionModel().addListSelectionListener(e -> {
			if (e.getValueIsAdjusting()) {
				return;
			}

			TableColumnModel cm = table.getColumnModel();
			int[] selected = cm.getSelectedColumns();
			if (selected.length == 1) {
				int viewIndex = selected[0];
				int modelIndex = table.convertColumnIndexToModel(viewIndex);
				model.setColumn(modelIndex);
			}
			else {
				model.setColumn(e.getFirstIndex());
			}
		});

		JPanel tablePanel = new JPanel(new BorderLayout());
		JScrollPane sp = new JScrollPane(table);
		table.setPreferredScrollableViewportSize(new Dimension(model.getWidth(), 250));
		table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
		tablePanel.add(sp, BorderLayout.CENTER);
		searchPanel = new SearchControlPanel(this);

		HelpService help = Help.getHelpService();
		help.registerHelp(searchPanel, new HelpLocation("DataTypeEditors", "Searching_In_Editor"));

		tablePanel.add(searchPanel, BorderLayout.SOUTH);

		add(tablePanel, BorderLayout.CENTER);

		JTableHeader header = table.getTableHeader();
		header.setUpdateTableInRealTime(true);
		table.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
		for (int i = 0; i < model.getColumnCount(); i++) {
			TableColumn tc = table.getColumn(model.getColumnName(i));
			tc.setPreferredWidth(model.getFieldWidth(i));
		}

		setupTableCellRenderer();
		setupTableCellEditor();
		selectionChanged();

		Color gridColor = table.getGridColor();
		Color tableBackground = table.getBackground();
		if (tableBackground.equals(gridColor)) {
			// This can happen on the Mac and is usually white.  This is a simple solution for
			// that scenario.  If this fails on other platforms, then do something more advanced
			// at that point.
			table.setGridColor(new GColor("color.bg.table.grid"));
		}
	}
Scrolls the table so that the table cell indicated becomes viewable.
@param rowIndex the row of the table cell
@param columnIndex the column of the table cell
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/CompositeEditorPanel.java