private void buildMainPanel(String labelText, String[] optionValues, String initialValue,
			Icon messageIcon) {

		// The main panel to be returned
		JPanel workPanel = new JPanel(new BorderLayout());
		workPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

		// COMBO BOX PANEL
		JLabel messageLabel = new GHtmlLabel(labelText);
		messageLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 5, 0));
		messageLabel.getAccessibleContext().setAccessibleName("Message");
		combo = createComboBox(optionValues, initialValue);
		combo.getAccessibleContext().setAccessibleName("Options");

		JPanel dataPanel = new JPanel(new BorderLayout());
		dataPanel.add(messageLabel, BorderLayout.NORTH);
		dataPanel.add(combo, BorderLayout.SOUTH);
		dataPanel.getAccessibleContext().setAccessibleName("Data");

		workPanel.add(dataPanel, BorderLayout.CENTER);

		// ICON PANEL (if an icon has been supplied)
		if (messageIcon != null) {
			JLabel iconLabel = new GDLabel();
			iconLabel.setIcon(messageIcon);
			iconLabel.setVerticalAlignment(SwingConstants.TOP);
			iconLabel.getAccessibleContext().setAccessibleName("Icon");

			JPanel separatorPanel = new JPanel();
			separatorPanel.setPreferredSize(new Dimension(15, 1));
			separatorPanel.getAccessibleContext().setAccessibleName("Separator");

			JPanel iconPanel = new JPanel(new BorderLayout());
			iconPanel.add(iconLabel, BorderLayout.CENTER);
			iconPanel.add(separatorPanel, BorderLayout.EAST);
			iconPanel.getAccessibleContext().setAccessibleName("Icon");

			workPanel.add(iconPanel, BorderLayout.WEST);
		}
		workPanel.getAccessibleContext().setAccessibleName("Input With Choices");
		addWorkPanel(workPanel);
	}
Completes the construction of the gui for this dialog
Ghidra/Framework/Docking/src/main/java/docking/widgets/dialogs/InputWithChoicesDialog.java