2014-09-16 13:46:20 -04:00
|
|
|
// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved.
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "UObjectToken.h"
|
|
|
|
|
|
|
|
|
|
#if WITH_EDITOR
|
|
|
|
|
#include "IDocumentation.h"
|
2014-09-18 18:59:55 -04:00
|
|
|
#include "IIntroTutorials.h"
|
2014-09-16 13:46:20 -04:00
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#define LOCTEXT_NAMESPACE "SMessageLogMessageListRow"
|
|
|
|
|
|
|
|
|
|
|
2014-10-14 22:50:06 -04:00
|
|
|
class MESSAGELOG_API SMessageLogMessageListRow
|
2014-09-16 13:46:20 -04:00
|
|
|
: public STableRow<TSharedPtr<FTokenizedMessage>>
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
DECLARE_DELEGATE_TwoParams( FOnTokenClicked, TSharedPtr<FTokenizedMessage>, const TSharedRef<class IMessageToken>& );
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
SLATE_BEGIN_ARGS(SMessageLogMessageListRow)
|
|
|
|
|
: _Message()
|
|
|
|
|
, _OnTokenClicked()
|
|
|
|
|
{ }
|
|
|
|
|
SLATE_ATTRIBUTE(TSharedPtr<FTokenizedMessage>, Message)
|
|
|
|
|
SLATE_EVENT(FOnTokenClicked, OnTokenClicked)
|
|
|
|
|
SLATE_END_ARGS()
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Construct child widgets that comprise this widget.
|
|
|
|
|
*
|
|
|
|
|
* @param InArgs Declaration from which to construct this widget
|
|
|
|
|
*/
|
2014-10-14 22:50:06 -04:00
|
|
|
void Construct( const FArguments& InArgs, const TSharedRef< STableViewBase >& InOwnerTableView );
|
2014-09-16 13:46:20 -04:00
|
|
|
|
2014-09-25 22:34:19 -04:00
|
|
|
public:
|
|
|
|
|
|
2014-09-16 13:46:20 -04:00
|
|
|
/** @return Widget for this log listing item*/
|
2014-10-14 22:50:06 -04:00
|
|
|
virtual TSharedRef<SWidget> GenerateWidget();
|
2014-09-16 13:46:20 -04:00
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
2014-10-14 22:50:06 -04:00
|
|
|
TSharedRef<SWidget> CreateHyperlink( const TSharedRef<IMessageToken>& InMessageToken, const FText& InToolTip = FText() );
|
2014-09-16 13:46:20 -04:00
|
|
|
|
2014-10-14 22:50:06 -04:00
|
|
|
void CreateMessage( const TSharedRef<SHorizontalBox>& InHorzBox, const TSharedRef<IMessageToken>& InMessageToken, float Padding );
|
2014-09-16 13:46:20 -04:00
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
void HandleActionHyperlinkNavigate( TSharedRef<FActionToken> ActionToken )
|
|
|
|
|
{
|
|
|
|
|
ActionToken->ExecuteAction();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void HandleHyperlinkNavigate( TSharedRef<IMessageToken> InMessageToken )
|
|
|
|
|
{
|
|
|
|
|
InMessageToken->GetOnMessageTokenActivated().ExecuteIfBound(InMessageToken);
|
|
|
|
|
OnTokenClicked.ExecuteIfBound(Message, InMessageToken);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FReply HandleTokenButtonClicked( TSharedRef<IMessageToken> InMessageToken )
|
|
|
|
|
{
|
|
|
|
|
InMessageToken->GetOnMessageTokenActivated().ExecuteIfBound(InMessageToken);
|
|
|
|
|
OnTokenClicked.ExecuteIfBound(Message, InMessageToken);
|
|
|
|
|
return FReply::Handled();
|
|
|
|
|
}
|
|
|
|
|
|
2014-09-18 18:59:55 -04:00
|
|
|
#if WITH_EDITOR
|
|
|
|
|
void HandleDocsHyperlinkNavigate( FString DocumentationLink )
|
|
|
|
|
{
|
|
|
|
|
IDocumentation::Get()->Open(DocumentationLink);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void HandleTutorialHyperlinkNavigate( FString TutorialAssetName )
|
|
|
|
|
{
|
|
|
|
|
IIntroTutorials::Get().LaunchTutorial(TutorialAssetName);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
2014-09-16 13:46:20 -04:00
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
/** The message used to create this widget. */
|
|
|
|
|
TSharedPtr<FTokenizedMessage> Message;
|
|
|
|
|
|
|
|
|
|
/** Delegate to execute when the token is clicked. */
|
|
|
|
|
FOnTokenClicked OnTokenClicked;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#undef LOCTEXT_NAMESPACE
|