private void restoreProject() {

		if (restoreDialog == null) {
			restoreDialog = new RestoreDialog(this);
		}

		String archiveName = lastRestoreArchivePathName;
		ProjectLocator locator = lastRestoreLocator;
		if (!restoreDialog.showDialog(archiveName, locator)) {
			return;
		}

		lastRestoreArchivePathName = restoreDialog.getArchivePathName();
		lastRestoreLocator = restoreDialog.getRestoreURL();
		File archiveJar = new File(lastRestoreArchivePathName);
		try {
			if (!isJarFormat(archiveJar)) {
				Msg.showError(this, null, "File Format Error",
					"Can't read the file: " + lastRestoreArchivePathName);
				return;
			}
		}
		catch (IOException e) {
			Msg.showError(this, null, "File Format Error",
				"Can't read the file: " + lastRestoreArchivePathName, e);
			return;
		}

		isRestoring = true;

		restoringListener = new TaskListener() {
			@Override
			public void taskCompleted(Task task) {
				isRestoring = false;
			}

			@Override
			public void taskCancelled(Task task) {
				isRestoring = false;
			}
		};

		Task task = new RestoreTask(lastRestoreLocator, archiveJar, this);
		task.addTaskListener(restoringListener);
		new TaskLauncher(task, tool.getToolFrame());
	}
menu listener for File | Restore Archive ...
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/archive/ArchivePlugin.java