// EMERGENT GAME TECHNOLOGIES PROPRIETARY INFORMATION
//
// This software is supplied under the terms of a license agreement or
// nondisclosure agreement with Emergent Game Technologies and may not
// be copied or disclosed except in accordance with the terms of that
// agreement.
//
// Copyright (c) 1996-2007 Emergent Game Technologies.
// All Rights Reserved.
//
// Emergent Game Technologies, Chapel Hill, North Carolina 27517
// http://www.emergent.net
#pragma once
#include "UIState.h"
#include "UICommandEventArgs.h"
using namespace System::Collections;
namespace Emergent{ namespace Gamebryo{ namespace SceneDesigner{
namespace PluginAPI
{
///
/// Summary description for UICommand.
///
public __gc class UICommand
{
public:
UICommand();
UICommand(String* strName);
UICommand(String* strName, Object* pmData);
// Emergent internal use only
String* GetRequiredParameterNames()[];
__delegate void ClickEventHandler(Object* pmSender, EventArgs* pmArgs);
static __event ClickEventHandler* CommandClicked;
__property bool get_CheckParameters();
__property void set_CheckParameters(bool bValue);
__property int get_InteractivityLevelMask();
__property void set_InteractivityLevelMask(int iValue);
//End Emergent internal use
__property String* get_Name();
///
/// Allows a command to store arbitrary data that may be used
/// by the handlers
///
[Obsolete("The 'Data' parameter is obsolete")]
__property Object* get_Data();
[Obsolete("The 'Data' parameter is obsolete")]
__property void set_Data(Object* pmData);
__event EventHandler* Click;
virtual void DoClick(Object* pmSender, EventArgs* pmEventArgs);
// Event wrapper for Single case delegate
__delegate void ValidateCommandHandler(Object* pmSender,
UIState* pmState);
__event void add_Validate(ValidateCommandHandler* pmHandler);
__event void remove_Validate(ValidateCommandHandler* pmHandler);
virtual void ValidateCommand(UIState* pmState);
///
/// This method will unhook all events for this
/// command object that have the passed in object as the
/// event target
///
/// Any events that target this object will be
/// removed
void UnregisterAllByTarget(Object* pmObject);
// These functions are for internal use only.
Delegate* GetHandlerList()[];
Delegate* GetValidator();
protected:
static Delegate* RemoveByTarget(Delegate* pmDelegate,
Object* pmTarget);
bool DoCheckParameters(UICommandEventArgs* pmArgs);
private:
ValidateCommandHandler* m_pmValidateDelegate;
String* m_strName;
Object* m_pmData;
bool m_bCheckParameters;
int m_iInteractivyLevelMask;
};
}}}}