I’m trying to setup a toggle button to hide/show the World Outliner window using a c++ plugin
this is the code to create the toolbar button, when pressed it shows a text message at PluginButtonClicked()
ExpandedEditor.h
// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Modules/ModuleManager.h"
class FToolBarBuilder;
class FMenuBuilder;
class FExpandedEditorModule : public IModuleInterface
{
public:
	/** IModuleInterface implementation */
	virtual void StartupModule() override;
	virtual void ShutdownModule() override;
	
	/** This function will be bound to Command. */
	void PluginButtonClicked();
	
private:
	void RegisterMenus();
private:
	TSharedPtr<class FUICommandList> PluginCommands;
};
ExpandedEditor.cpp
// Copyright Epic Games, Inc. All Rights Reserved.
#include "ExpandedEditor.h"
#include "ExpandedEditorStyle.h"
#include "ExpandedEditorCommands.h"
#include "Misc/MessageDialog.h"
#include "ToolMenus.h"
static const FName ExpandedEditorTabName("My Toolbar Button");
#define LOCTEXT_NAMESPACE "FExpandedEditorModule"
void FExpandedEditorModule::StartupModule()
{
	// This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-module
	
	FExpandedEditorStyle::Initialize();
	FExpandedEditorStyle::ReloadTextures();
	FExpandedEditorCommands::Register();
	
	PluginCommands = MakeShareable(new FUICommandList);
	PluginCommands->MapAction(
		FExpandedEditorCommands::Get().PluginAction,
		FExecuteAction::CreateRaw(this, &FExpandedEditorModule::PluginButtonClicked),
		FCanExecuteAction());
	UToolMenus::RegisterStartupCallback(FSimpleMulticastDelegate::FDelegate::CreateRaw(this, &FExpandedEditorModule::RegisterMenus));
}
void FExpandedEditorModule::ShutdownModule()
{
	// This function may be called during shutdown to clean up your module.  For modules that support dynamic reloading,
	// we call this function before unloading the module.
	UToolMenus::UnRegisterStartupCallback(this);
	UToolMenus::UnregisterOwner(this);
	FExpandedEditorStyle::Shutdown();
	FExpandedEditorCommands::Unregister();
}
void FExpandedEditorModule::PluginButtonClicked()
{
	// Put your "OnButtonClicked" stuff here
	FText DialogText = FText::Format(
							LOCTEXT("PluginButtonDialogText", "Add code to {0} in {1} to override this button's actions"),
							FText::FromString(TEXT("FExpandedEditorModule::PluginButtonClicked()")),
							FText::FromString(TEXT("ExpandedEditor.cpp"))
					   );
	FMessageDialog::Open(EAppMsgType::Ok, DialogText);
}
void FExpandedEditorModule::RegisterMenus()
{
	// Owner will be used for cleanup in call to UToolMenus::UnregisterOwner
	FToolMenuOwnerScoped OwnerScoped(this);
	{
		UToolMenu* Menu = UToolMenus::Get()->ExtendMenu("LevelEditor.MainMenu.Window");
		{
			FToolMenuSection& Section = Menu->FindOrAddSection("WindowLayout");
			Section.AddMenuEntryWithCommandList(FExpandedEditorCommands::Get().PluginAction, PluginCommands);
		}
	}
	{
		UToolMenu* ToolbarMenu = UToolMenus::Get()->ExtendMenu("LevelEditor.LevelEditorToolBar");
		{
			FToolMenuSection& Section = ToolbarMenu->FindOrAddSection("Settings");
			{
				FToolMenuEntry& Entry = Section.AddEntry(FToolMenuEntry::InitToolBarButton(FExpandedEditorCommands::Get().PluginAction));
				Entry.SetCommandList(PluginCommands);
			}
		}
	}
}
#undef LOCTEXT_NAMESPACE
	
IMPLEMENT_MODULE(FExpandedEditorModule, ExpandedEditor)
I don’t know how to invoke the close button on the World Outliner tab (to hide/close it)
// get World Outliner tab and invoke close button
// ...?
nor do I know how to invoke the menu item to show it again
// get menu
UToolMenu* Menu = UToolMenus::Get()->ExtendMenu("LevelEditor.MainMenu.Window");
// find menu item and invoke the command
// ...?
any clue about what classes or methods do I have to use?
