private void createProgressPanel() {

		titleLabel = new GDLabel(title);
		add(titleLabel);
		progressLayout.putConstraint(SpringLayout.WEST, titleLabel, 5, SpringLayout.WEST, this);
		progressLayout.putConstraint(SpringLayout.NORTH, titleLabel, 5, SpringLayout.NORTH, this);

		progressBar = new JProgressBar(SwingConstants.HORIZONTAL);
		Dimension dim = progressBar.getPreferredSize();
		progressBar.setPreferredSize(new Dimension(500, (int) dim.getHeight()));
		progressBar.setMaximum(100);
		progressLayout.putConstraint(SpringLayout.NORTH, progressBar, 5, SpringLayout.SOUTH,
			titleLabel);
		progressLayout.putConstraint(SpringLayout.WEST, progressBar, 0, SpringLayout.WEST,
			titleLabel);
		doSetProgress(0);

		progressMessagePanel = new JPanel(new BorderLayout());
		messageIcon = new GIconLabel(INFORM_ICON);
		messageIcon.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5));
		messageLabel = new GDLabel(DEFAULT_INFO);
		progressMessagePanel.add(messageIcon, BorderLayout.WEST);
		progressMessagePanel.add(messageLabel, BorderLayout.CENTER);
		doSetMessage(DEFAULT_INFO);

		// Sets up the timer for updating the GUI.
		updateTimer = new Timer(250, e -> update());
	}
Determines and sets the preferred size of this panel.
Ghidra/Features/Base/src/main/java/ghidra/app/merge/PhaseProgressPanel.java