private JComponent buildMainPanel() {
		JPanel panel = new JPanel(new PairLayout());
		panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
		JLabel jLabel = new GDLabel("Fid Database: ", SwingConstants.RIGHT);
		jLabel.setToolTipText("Choose the Fid Database to populate");
		jLabel.getAccessibleContext().setAccessibleName("Fid Database");
		panel.add(jLabel);
		panel.add(buildFidCombo());

		panel.add(new GLabel("Library Family Name: ", SwingConstants.RIGHT));
		libraryFamilyNameTextField = new JTextField(20);
		libraryFamilyNameTextField.getDocument().addUndoableEditListener(e -> updateOkEnablement());
		libraryFamilyNameTextField.getAccessibleContext().setAccessibleName("Library Family Name");
		panel.add(libraryFamilyNameTextField);

		panel.add(new GLabel("Library Version: ", SwingConstants.RIGHT));
		versionTextField = new JTextField();
		versionTextField.getDocument().addUndoableEditListener(e -> updateOkEnablement());
		versionTextField.getAccessibleContext().setAccessibleName("Version");
		panel.add(versionTextField);

		panel.add(new GLabel("Library Variant: ", SwingConstants.RIGHT));
		variantTextField = new JTextField();
		variantTextField.getDocument().addUndoableEditListener(e -> updateOkEnablement());
		variantTextField.getAccessibleContext().setAccessibleName("Variant");
		panel.add(variantTextField);

		panel.add(new GLabel("Base Library: ", SwingConstants.RIGHT));
		panel.add(buildLibraryCombo());

		panel.add(new GLabel("Root Folder: ", SwingConstants.RIGHT));
		panel.add(buildDomainFolderChooserField());

		panel.add(new GLabel("Language: ", SwingConstants.RIGHT));
		panel.add(buildLanguageField());

		panel.add(new GLabel("Common Symbols File: ", SwingConstants.RIGHT));
		panel.add(buildSymbolsFileField(), jLabel);
		panel.getAccessibleContext().setAccessibleName("Populate Fid");
		return panel;
	}
Dialog for gathering information to populate a fid database.
Ghidra/Features/FunctionID/src/main/java/ghidra/feature/fid/plugin/PopulateFidDialog.java