public static void main(String[] args) {
		MergeProgressPanel panel = new MergeProgressPanel();

		String[] MEMORY = new String[] { "Memory" };
		String[] PROGRAM_TREE = new String[] { "Program Tree" };
		String[] DATA_TYPES = new String[] { "Data Types" };
		String[] PROGRAM_CONTEXT = new String[] { "Program Context" };
		String[] LISTING = new String[] { "Listing" };
		String[] BYTES = new String[] { "Listing", "Bytes" };
		String[] CODE_UNITS = new String[] { "Listing", "Code Units" };
		String[] FUNCTIONS = new String[] { "Listing", "Functions" };
		String[] SYMBOLS = new String[] { "Listing", "Symbols" };
		String[] COMMENTS =
			new String[] { "Listing", "Comments, References & User Defined Properties" };
		String[] EXTERNAL_PROGRAM = new String[] { "External Program" };
		String[] PROPERTY_LIST = new String[] { "Property List" };

		panel.addInfo(MEMORY);
		panel.addInfo(PROGRAM_TREE);
		panel.addInfo(DATA_TYPES);
		panel.addInfo(PROGRAM_CONTEXT);
		panel.addInfo(LISTING);
		panel.addInfo(BYTES);
		panel.addInfo(CODE_UNITS);
		panel.addInfo(FUNCTIONS);
		panel.addInfo(SYMBOLS);
		panel.addInfo(COMMENTS);
		panel.addInfo(EXTERNAL_PROGRAM);
		panel.addInfo(PROPERTY_LIST);

//		try {
//			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
//		} catch (Exception e) {
//		}
		JFrame frame = new JFrame();
		frame.setSize(800, 400);
		frame.setVisible(true);

		frame.getContentPane().setLayout(new BorderLayout());
		frame.getContentPane().add(panel, BorderLayout.CENTER);
		frame.validate();
		frame.setVisible(true);

		try {
			panel.setInProgress(MEMORY);
			Thread.sleep(2000);
			panel.setCompleted(MEMORY);
//			panel.updateIcon(PROGRAM_TREE, IN_PROGRESS_ICON);
			Thread.sleep(2000);
//			panel.updateIcon(PROGRAM_TREE, COMPLETED_ICON);
//			panel.updateIcon(DATA_TYPES, IN_PROGRESS_ICON);
//			Thread.sleep(2000);
//			panel.updateIcon(DATA_TYPES, COMPLETED_ICON);
//			panel.updateIcon(PROGRAM_CONTEXT, IN_PROGRESS_ICON);
//			Thread.sleep(2000);
//			panel.updateIcon(PROGRAM_CONTEXT, COMPLETED_ICON);
//			panel.updateIcon(LISTING, IN_PROGRESS_ICON);
//			panel.updateIcon(BYTES, IN_PROGRESS_ICON);
//			Thread.sleep(2000);
//			panel.updateIcon(BYTES, COMPLETED_ICON);
//			panel.updateIcon(CODE_UNITS, IN_PROGRESS_ICON);
//			Thread.sleep(2000);
//			panel.updateIcon(CODE_UNITS, COMPLETED_ICON);
//			panel.updateIcon(FUNCTIONS, IN_PROGRESS_ICON);
//			Thread.sleep(2000);
//			panel.updateIcon(FUNCTIONS, COMPLETED_ICON);
//			panel.updateIcon(SYMBOLS, IN_PROGRESS_ICON);
//			Thread.sleep(2000);
//			panel.updateIcon(SYMBOLS, COMPLETED_ICON);
//			panel.updateIcon(COMMENTS, IN_PROGRESS_ICON);
//			Thread.sleep(2000);
//			panel.updateIcon(COMMENTS, COMPLETED_ICON);
//			panel.updateIcon(LISTING, COMPLETED_ICON);
//			panel.updateIcon(EXTERNAL_PROGRAM, IN_PROGRESS_ICON);
//			Thread.sleep(2000);
//			panel.updateIcon(EXTERNAL_PROGRAM, COMPLETED_ICON);
//			panel.updateIcon(PROPERTY_LIST, IN_PROGRESS_ICON);
//			Thread.sleep(2000);
//			panel.updateIcon(PROPERTY_LIST, COMPLETED_ICON);
//			Thread.sleep(2000);
		}
		catch (InterruptedException e) {
			Msg.error(null, "Unexpected Exception: " + e.getMessage(), e);
		}
		frame.setVisible(false);
		System.exit(0);
	}
Gets a string based on the array for a phase or sub-phase.
This string can then be used to identify the particular phase.
@param phase array which indicates the phase or sub-phase.
@return a string representation for the phase.
Ghidra/Features/Base/src/main/java/ghidra/app/merge/MergeProgressPanel.java