Files
UnrealEngineUWP/Engine/Source/Editor/PropertyEditor/Private/PropertyEditorToolkit.h
Jamie Dale 837ec025dd Added overrides for GetToolkitToolTipText where required
UE-16078 - Crash hovering over texture reference in material

A lot of asset editors were overriding GetToolkitName to implement custom logic (sometimes because the default logic would cause a crash), and these asset editors now also need to override GetToolkitToolTipText too.

[CL 2564832 by Jamie Dale in Main branch]
2015-05-26 09:14:55 -04:00

107 lines
3.2 KiB
C++

// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Toolkits/AssetEditorToolkit.h"
#include "TimerManager.h"
class FPropertyEditorToolkit : public FAssetEditorToolkit
{
public:
FPropertyEditorToolkit();
virtual void RegisterTabSpawners(const TSharedRef<class FTabManager>& TabManager) override;
virtual void UnregisterTabSpawners(const TSharedRef<class FTabManager>& TabManager) override;
virtual FName GetToolkitFName() const override;
virtual FText GetBaseToolkitName() const override;
virtual FText GetToolkitName() const override;
virtual FText GetToolkitToolTipText() const override;
virtual FString GetWorldCentricTabPrefix() const override;
virtual FLinearColor GetWorldCentricTabColorScale() const override;
bool IsExposedAsColumn( const TWeakPtr< IPropertyTreeRow >& Row ) const;
void ToggleColumnForProperty( const TSharedPtr< class FPropertyPath >& PropertyPath );
bool TableHasCustomColumns() const;
virtual bool CloseWindow() override;
virtual bool IsPrimaryEditor() const override{ return false; };
public:
static TSharedRef<FPropertyEditorToolkit> CreateEditor( const EToolkitMode::Type Mode, const TSharedPtr< IToolkitHost >& InitToolkitHost, UObject* ObjectToEdit );
static TSharedRef<FPropertyEditorToolkit> CreateEditor( const EToolkitMode::Type Mode, const TSharedPtr< IToolkitHost >& InitToolkitHost, const TArray<UObject*>& ObjectsToEdit );
private:
static TSharedPtr<FPropertyEditorToolkit> FindExistingEditor( UObject* Object );
void Initialize( const EToolkitMode::Type Mode, const TSharedPtr< class IToolkitHost >& InitToolkitHost, const TArray<UObject*>& ObjectsToEdit );
void CreatePropertyTree();
void CreatePropertyTable();
void CreateGridView();
TSharedRef<SDockTab> SpawnTab_PropertyTree( const FSpawnTabArgs& Args );
TSharedRef<SDockTab> SpawnTab_PropertyTable( const FSpawnTabArgs& Args ) ;
void GridSelectionChanged();
void GridRootPathChanged();
void ConstructTreeColumns( const TSharedRef< class SHeaderRow >& HeaderRow );
TSharedRef< SWidget > ConstructTreeCell( const FName& ColumnName, const TSharedRef< class IPropertyTreeRow >& Row );
FReply OnToggleColumnClicked( const TWeakPtr< class IPropertyTreeRow > Row );
const FSlateBrush* GetToggleColumnButtonImageBrush( const TWeakPtr< class IPropertyTreeRow > Row ) const;
EVisibility GetToggleColumnButtonVisibility( const TSharedRef< class IPropertyTreeRow > Row ) const;
void TickPinColorAndOpacity();
FSlateColor GetPinColorAndOpacity( const TWeakPtr< IPropertyTreeRow > Row ) const;
void TableColumnsChanged();
EVisibility GetAddColumnInstructionsOverlayVisibility() const;
private:
TSharedPtr< class SPropertyTreeViewImpl > PropertyTree;
TSharedPtr< class IPropertyTable > PropertyTable;
TSharedPtr< FPropertyPath > PathToRoot;
TArray< TSharedRef< FPropertyPath > > PropertyPathsAddedAsColumns;
/** Animation sequence to pulse the pin image */
FCurveSequence PinSequence;
FTimerHandle TimerHandle_TickPinColor;
FSlateColor PinColor;
TArray< TWeakPtr<IPropertyTreeRow> > PinRows;
static const FName ToolkitFName;
static const FName ApplicationId;
static const FName TreeTabId;
static const FName GridTabId;
static const FName TreePinAsColumnHeaderId;
};