Files
UnrealEngineUWP/Engine/Source/Editor/ReferenceViewer/Private/ReferenceViewer.cpp
Ben Marsh 20bf0eb6a1 Updating copyright notices to 2017 (copying from //Tasks/UE4/Dev-Copyright-2017).
#rb none
#lockdown Nick.Penwarden

[CL 3226823 by Ben Marsh in Main branch]
2016-12-08 08:52:44 -05:00

86 lines
2.5 KiB
C++

// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
#include "ReferenceViewer.h"
#include "Widgets/DeclarativeSyntaxSupport.h"
#include "Framework/Docking/TabManager.h"
#include "EdGraphNode_Reference.h"
#include "SGraphNode.h"
#include "SReferenceNode.h"
#include "SReferenceViewer.h"
#include "EdGraphUtilities.h"
#include "Widgets/Docking/SDockTab.h"
#define LOCTEXT_NAMESPACE "ReferenceViewer"
//DEFINE_LOG_CATEGORY(LogReferenceViewer);
class FGraphPanelNodeFactory_ReferenceViewer : public FGraphPanelNodeFactory
{
virtual TSharedPtr<class SGraphNode> CreateNode(UEdGraphNode* Node) const override
{
if ( UEdGraphNode_Reference* DependencyNode = Cast<UEdGraphNode_Reference>(Node) )
{
return SNew(SReferenceNode, DependencyNode);
}
return NULL;
}
};
class FReferenceViewerModule : public IReferenceViewerModule
{
public:
FReferenceViewerModule()
: ReferenceViewerTabId("ReferenceViewer")
{
}
virtual void StartupModule() override
{
GraphPanelNodeFactory = MakeShareable( new FGraphPanelNodeFactory_ReferenceViewer() );
FEdGraphUtilities::RegisterVisualNodeFactory(GraphPanelNodeFactory);
FGlobalTabmanager::Get()->RegisterNomadTabSpawner(ReferenceViewerTabId, FOnSpawnTab::CreateRaw( this, &FReferenceViewerModule::SpawnReferenceViewerTab ) )
.SetDisplayName( LOCTEXT("ReferenceViewerTitle", "Reference Viewer") )
.SetMenuType( ETabSpawnerMenuType::Hidden );
}
virtual void ShutdownModule() override
{
if ( GraphPanelNodeFactory.IsValid() )
{
FEdGraphUtilities::UnregisterVisualNodeFactory(GraphPanelNodeFactory);
GraphPanelNodeFactory.Reset();
}
FGlobalTabmanager::Get()->UnregisterNomadTabSpawner(ReferenceViewerTabId);
}
virtual void InvokeReferenceViewerTab(const TArray<FAssetIdentifier>& GraphRootIdentifiers) override
{
TSharedRef<SDockTab> NewTab = FGlobalTabmanager::Get()->InvokeTab( ReferenceViewerTabId );
TSharedRef<SReferenceViewer> ReferenceViewer = StaticCastSharedRef<SReferenceViewer>( NewTab->GetContent() );
ReferenceViewer->SetGraphRootPackageNames(GraphRootIdentifiers);
}
private:
TSharedRef<SDockTab> SpawnReferenceViewerTab( const FSpawnTabArgs& SpawnTabArgs )
{
TSharedRef<SDockTab> NewTab = SNew(SDockTab)
.TabRole(ETabRole::NomadTab);
NewTab->SetContent( SNew(SReferenceViewer) );
return NewTab;
}
private:
TSharedPtr<FGraphPanelNodeFactory> GraphPanelNodeFactory;
FName ReferenceViewerTabId;
};
IMPLEMENT_MODULE( FReferenceViewerModule, ReferenceViewer )
#undef LOCTEXT_NAMESPACE