@Override
	public ActionContext getActionContext(MouseEvent event) {
		// TODO Put this someplace else that makes better sense. (Maybe in the plugin?)
		MergeManager mergeManager = plugin.getMergeManager();
		if (event != null && event.getSource() instanceof FieldHeaderComp) {
			FieldHeaderComp comp = (FieldHeaderComp) event.getSource();
			FieldHeaderLocation fieldHeaderLocation = comp.getFieldHeaderLocation(event.getPoint());
			return createContext(fieldHeaderLocation);

		}
		if (mergeManager instanceof ProgramMultiUserMergeManager) {
			ProgramMultiUserMergeManager programMergeManager =
				(ProgramMultiUserMergeManager) mergeManager;
			Navigatable navigatable = programMergeManager.navigatable;
			if (currentComponent instanceof ListingMergePanel) {
				// Set the program location within the context so it is from the listing panel
				// that is being clicked. Actions should use the location to know which of the
				// 4 programs or listings is in the current context.
				ListingMergePanel listingMergePanel = (ListingMergePanel) currentComponent;
				Object actionContext = listingMergePanel.getActionContext(event);
				if (actionContext instanceof ProgramLocation) {
					ListingActionContext listingActionContext = new ListingActionContext(this,
						navigatable, (ProgramLocation) actionContext);
					return listingActionContext;
				}
			}
			ProgramLocation programLocation = navigatable.getLocation();
			ListingActionContext listingActionContext =
				new ListingActionContext(this, navigatable, programLocation);
			return listingActionContext;
		}
		return null;
	}
Component that displays merge components as needed.
Ghidra/Features/Base/src/main/java/ghidra/app/merge/MergeManagerProvider.java