private void buildProgressPanel(boolean includeTextField, boolean includeCancelButton,
			boolean includeAnimatedIcon) {
		messageLabel = new GDHtmlLabel("               ") {
			@Override
			public void invalidate() {
				// don't care
			}
		};
		Gui.registerFont(messageLabel, MESSAGE_FONT_ID);
		Dimension d = messageLabel.getPreferredSize();
		d.width = 180;
		messageLabel.setPreferredSize(d);
		progressBar = new JProgressBar() {
			@Override
			public String getToolTipText() {
				if (isStringPainted()) {
					return getString();
				}

				return createProgressString();
			}
		};

		progressBar.setStringPainted(true);
		progressBar.setValue(59); // arbitrary value to make it obvious that it wasn't initialized
		ToolTipManager.sharedInstance().registerComponent(progressBar);

		progressPanel = new JPanel(new VerticalLayout(0));
		progressPanel.add(progressBar);
		if (includeTextField) {
			progressPanel.add(messageLabel);
			progressBar.setPreferredSize(new Dimension(180, 12));
		}
		else {
			progressBar.setBorderPainted(true);
			Dimension size = progressBar.getPreferredSize();
			progressPanel.setBorder(BorderFactory.createEmptyBorder(
				(imageLabel.getPreferredSize().height - size.height) / 2, 0, 0, 8));
		}

		activeProgressPanel = new JPanel(new BorderLayout());
		activeProgressPanel.add(progressPanel, BorderLayout.CENTER);
		if (includeAnimatedIcon) {
			createAnimatedIcon();
			activeProgressPanel.add(imageLabel, BorderLayout.EAST);
		}

		Icon icon = Icons.STOP_ICON;
		cancelButton = new EmptyBorderButton(icon);

		cancelButton.setName("CANCEL_TASK");
		cancelButton.setPreferredSize(new Dimension(icon.getIconWidth(), icon.getIconHeight()));
		cancelButton.addActionListener(e -> cancel());
		cancelButton.setFocusable(false);
		cancelButton.setRolloverEnabled(true);

		add(activeProgressPanel, BorderLayout.CENTER);

		if (includeCancelButton) {
			eastButtonPanel = new JPanel();
			eastButtonPanel.setLayout(new BoxLayout(eastButtonPanel, BoxLayout.Y_AXIS));
			//	eastButtonPanel.add(Box.createVerticalGlue());
			eastButtonPanel.add(cancelButton);
			eastButtonPanel.add(Box.createVerticalGlue());
			add(eastButtonPanel, BorderLayout.EAST);
		}
	}
True (the default) signals to paint the progress information inside of the progress bar.

@param showProgressValue true to paint the progress value; false to not
Ghidra/Framework/Project/src/main/java/ghidra/framework/task/gui/GProgressBar.java