private void createToolButtonActions() {

		exportToolAction = new ToolButtonAction(EXPORT_TOOL_ACTION_NAME) {
			@Override
			public void actionPerformed(ActionContext context) {
				ToolButton tb = (ToolButton) context.getContextObject();
				exportToolConfig(tb.getToolTemplate(), "ToolButton");
			}

			@Override
			boolean isEnabledForContext(ToolButton toolButton) {
				return !toolButton.isRunningTool();
			}
		};
		exportToolAction.setPopupMenuData(new MenuData(new String[] { "Export..." }, "tool"));
		exportToolAction.setHelpLocation(
			new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, EXPORT_TOOL_ACTION_NAME));

		deleteToolAction = new ToolButtonAction(DELETE_TOOL_ACTION_NAME) {
			@Override
			public void actionPerformed(ActionContext context) {
				ToolButton tb = (ToolButton) context.getContextObject();
				delete(tb.getToolTemplate().getName());
			}

			@Override
			boolean isEnabledForContext(ToolButton toolButton) {
				return !toolButton.isRunningTool();
			}

		};
		deleteToolAction.setPopupMenuData(new MenuData(new String[] { "Delete..." }, "tool"));
		deleteToolAction.setHelpLocation(
			new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, DELETE_TOOL_ACTION_NAME));

		closeToolAction = new ToolButtonAction(CLOSE_TOOL_ACTION_NAME) {
			@Override
			public void actionPerformed(ActionContext context) {
				ToolButton tb = (ToolButton) context.getContextObject();
				tb.closeTool();
			}

			@Override
			public boolean isEnabledForContext(ToolButton toolButton) {
				return toolButton.isRunningTool();
			}
		};
		closeToolAction.setPopupMenuData(new MenuData(new String[] { "Close" }, "tool"));
		closeToolAction.setHelpLocation(
			new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, CLOSE_TOOL_ACTION_NAME));

		renameToolAction = new ToolButtonAction("Rename Tool") {
			@Override
			public void actionPerformed(ActionContext context) {
				Object contextObject = context.getContextObject();
				if (!(contextObject instanceof ToolButton)) {
					return;
				}

				ToolButton toolButton = (ToolButton) contextObject;
				ToolTemplate toolTemplate = toolButton.getToolTemplate();
				if (isToolRunning(toolTemplate)) {
					Msg.showWarn(this, toolButton, "Unable to Rename", "You must first close " +
						"any running instances of a tool before you can rename");
					return;
				}

				String oldName = toolTemplate.getName();
				String newName = getNewToolName(oldName);
				if (newName == null) {
					return;
				}

				ToolChest localToolChest = activeProject.getLocalToolChest();
				localToolChest.remove(oldName);
				toolTemplate.setName(newName);
				localToolChest.addToolTemplate(toolTemplate);
			}

			private String getNewToolName(String currentName) {
				InputDialog inputDialog =
					new InputDialog("Rename Tool", "Please enter a new name: ", currentName);
				tool.showDialog(inputDialog);

				if (inputDialog.isCanceled()) {
					return null;
				}

				String newName = inputDialog.getValue();
				if (currentName.equals(newName)) {
					return null;
				}

				return newName;
			}

			@Override
			public boolean isEnabledForContext(ToolButton toolButton) {
				return true;
			}

			private boolean isToolRunning(ToolTemplate template) {
				ToolManager toolManager = activeProject.getToolManager();
				PluginTool[] runningTools = toolManager.getRunningTools();
				for (PluginTool runningTool : runningTools) {
					if (runningTool.getToolName().equals(template.getName())) {
						return true;
					}
				}
				return false;
			}

			@Override
			public boolean isValidContext(ToolButton toolButton) {
				return !toolButton.isRunningTool();
			}
		};
		renameToolAction.setPopupMenuData(new MenuData(new String[] { "Rename..." }, "tool"));
		renameToolAction
				.setHelpLocation(new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Rename Tool"));

		propertiesAction = new ToolButtonAction(PROPERTIES_ACTION_NAME) {
			@Override
			public void actionPerformed(ActionContext context) {
				ToolButton tb = (ToolButton) context.getContextObject();
				PluginTool pluginTool = tb.getRunningTool();
				pluginTool.showConfig(true, false);
			}

			@Override
			boolean isEnabledForContext(ToolButton toolButton) {
				if (toolButton.isRunningTool()) {
					PluginTool pluginTool = toolButton.getRunningTool();
					return pluginTool.isConfigurable();
				}
				return false;
			}

		};
		propertiesAction.setPopupMenuData(
			new MenuData(new String[] { "Configure Plugins..." }, "zproperties"));

		propertiesAction
				.setHelpLocation(new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Configure_Tool"));

		tool.addLocalAction(frontEndProvider, exportToolAction);
		tool.addLocalAction(frontEndProvider, renameToolAction);
		tool.addLocalAction(frontEndProvider, deleteToolAction);
		tool.addLocalAction(frontEndProvider, closeToolAction);
		tool.addLocalAction(frontEndProvider, propertiesAction);
	}
builds the gui for the new front end
Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FrontEndPlugin.java