private JPanel buildMatchingStructPanel() {
		JPanel structurePanel = new JPanel();
		structurePanel.setLayout(new BoxLayout(structurePanel, BoxLayout.Y_AXIS));

		GTable table = buildMatchingStructuresTable();
		// allow user to re-activate the "use existing" panel without forcing a radio button click.
		table.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent event) {
				useExistingStructButton.setSelected(true);
				updateEnablement();
			}
		});
		ListSelectionModel selectionModel = table.getSelectionModel();
		selectionModel.addListSelectionListener(e -> {
			if (e.getValueIsAdjusting()) {
				return;
			}

			if (useExistingStructButton.isSelected()) {
				setOkEnabled(table.getSelectedRowCount() > 0);
			}
		});

		filterPanel = new GhidraTableFilterPanel<>(table, structureTableModel) {
			// make sure our height doesn't stretch
			@Override
			public Dimension getMaximumSize() {
				Dimension d = super.getMaximumSize();
				d.height = getPreferredSize().height;
				return d;
			}
		};

		JScrollPane scrollPane = new JScrollPane(table);
		scrollPane.getAccessibleContext().setAccessibleName("Scroll");

		structurePanel.add(scrollPane);
		structurePanel.add(Box.createVerticalStrut(10));
		structurePanel.add(filterPanel);
		structurePanel.add(Box.createVerticalStrut(10));
		structurePanel.add(buildMatchingStyelPanel());
		structurePanel.add(Box.createVerticalStrut(10));
		return structurePanel;
	}
Creates a new dialog with the given parent.

@param tool The current tool that this dialog needs to access services.
@param program the current program
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/CreateStructureDialog.java