2014-12-07 19:09:38 -05:00
|
|
|
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
|
2014-03-14 14:13:41 -04:00
|
|
|
|
|
|
|
|
#include "ReferenceViewerPrivatePCH.h"
|
|
|
|
|
#include "ReferenceViewer.h"
|
2014-04-23 20:18:55 -04:00
|
|
|
|
2014-03-14 14:13:41 -04:00
|
|
|
#include "EdGraphUtilities.h"
|
2014-10-14 22:50:06 -04:00
|
|
|
#include "SDockTab.h"
|
2014-03-14 14:13:41 -04:00
|
|
|
|
|
|
|
|
#define LOCTEXT_NAMESPACE "ReferenceViewer"
|
|
|
|
|
//DEFINE_LOG_CATEGORY(LogReferenceViewer);
|
|
|
|
|
|
|
|
|
|
class FGraphPanelNodeFactory_ReferenceViewer : public FGraphPanelNodeFactory
|
|
|
|
|
{
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual TSharedPtr<class SGraphNode> CreateNode(UEdGraphNode* Node) const override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
if ( UEdGraphNode_Reference* DependencyNode = Cast<UEdGraphNode_Reference>(Node) )
|
|
|
|
|
{
|
|
|
|
|
return SNew(SReferenceNode, DependencyNode);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class FReferenceViewerModule : public IReferenceViewerModule
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
FReferenceViewerModule()
|
|
|
|
|
: ReferenceViewerTabId("ReferenceViewer")
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual void StartupModule() override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
GraphPanelNodeFactory = MakeShareable( new FGraphPanelNodeFactory_ReferenceViewer() );
|
|
|
|
|
FEdGraphUtilities::RegisterVisualNodeFactory(GraphPanelNodeFactory);
|
|
|
|
|
|
|
|
|
|
FGlobalTabmanager::Get()->RegisterNomadTabSpawner(ReferenceViewerTabId, FOnSpawnTab::CreateRaw( this, &FReferenceViewerModule::SpawnReferenceViewerTab ) )
|
|
|
|
|
.SetDisplayName( LOCTEXT("ReferenceViewerTitle", "Reference Viewer") )
|
2014-10-27 09:51:25 -04:00
|
|
|
.SetMenuType( ETabSpawnerMenuType::Hidden );
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual void ShutdownModule() override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
if ( GraphPanelNodeFactory.IsValid() )
|
|
|
|
|
{
|
|
|
|
|
FEdGraphUtilities::UnregisterVisualNodeFactory(GraphPanelNodeFactory);
|
|
|
|
|
GraphPanelNodeFactory.Reset();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FGlobalTabmanager::Get()->UnregisterNomadTabSpawner(ReferenceViewerTabId);
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual void InvokeReferenceViewerTab(const TArray<FName>& GraphRootPackageNames) override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
TSharedRef<SDockTab> NewTab = FGlobalTabmanager::Get()->InvokeTab( ReferenceViewerTabId );
|
|
|
|
|
TSharedRef<SReferenceViewer> ReferenceViewer = StaticCastSharedRef<SReferenceViewer>( NewTab->GetContent() );
|
|
|
|
|
ReferenceViewer->SetGraphRootPackageNames(GraphRootPackageNames);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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
|