private void createActions() {

		int subMenuGroup = 1;

		DockingAction openAction =
			new ActionBuilder("Open File", getName()).menuPath(ToolConstants.MENU_FILE, "&Open...")
					.menuGroup(OPEN_GROUP, Integer.toString(subMenuGroup++))
					.keyBinding("ctrl O")
					.onAction(c -> open())
					.buildAndInstall(tool);
		openAction.addToWindowWhen(ProgramActionContext.class);

		tool.addAction(new CloseProgramAction(this, OPEN_GROUP, subMenuGroup++));
		new ActionBuilder("Close Others", getName())
				.menuPath(ToolConstants.MENU_FILE, "Close &Others")
				.menuGroup(OPEN_GROUP, Integer.toString(subMenuGroup++))
				.enabled(false)
				.withContext(ProgramActionContext.class)
				.inWindow(ActionBuilder.When.CONTEXT_MATCHES)
				.enabledWhen(c -> programMgr.contains(c.getProgram()))
				.onAction(c -> closeOtherPrograms(false))
				.buildAndInstall(tool);

		DockingAction closeAllAction = new ActionBuilder("Close All", getName())
				.menuPath(ToolConstants.MENU_FILE, "Close &All")
				.menuGroup(OPEN_GROUP, Integer.toString(subMenuGroup++))
				.enabledWhen(c -> !programMgr.isEmpty())
				.onAction(c -> closeAllPrograms(false))
				.buildAndInstall(tool);
		closeAllAction.addToWindowWhen(ProgramActionContext.class);

		tool.addAction(new SaveProgramAction(this, SAVE_GROUP, subMenuGroup));
		tool.addAction(new SaveAsProgramAction(this, SAVE_GROUP, subMenuGroup));

		DockingAction saveAllAction = new ActionBuilder("Save All Files", getName())
				.menuPath(ToolConstants.MENU_FILE, "Save All")
				.description("Save All Programs")
				.menuGroup(SAVE_GROUP, Integer.toString(subMenuGroup++))
				.enabledWhen(c -> programMgr.hasUnsavedPrograms())
				.onAction(c -> programSaveMgr.saveChangedPrograms())
				.buildAndInstall(tool);
		saveAllAction.addToWindowWhen(ProgramActionContext.class);

		tool.addAction(new ProgramOptionsAction(this));

		undoAction = new UndoAction(this, tool);
		redoAction = new RedoAction(this, tool);
		tool.addAction(undoAction);
		tool.addAction(redoAction);
	}
This method notifies listening plugins that a programs has been added to the program manager.
This is not used for actually opening a program from the database and will act strangely if
given a closed Program object.

@see ghidra.app.services.ProgramManager#openProgram(ghidra.program.model.listing.Program)
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/ProgramManagerPlugin.java