using CodeImp.DoomBuilder.Config;
using CodeImp.DoomBuilder.Controls;
using CodeImp.DoomBuilder.Plugins;
namespace CodeImp.DoomBuilder.TagExplorer
{
public sealed class BuilderPlug : Plug
{
private static BuilderPlug me;
// Docker
private TagExplorer tagExplorer;
private Docker docker;
// Static property to access the BuilderPlug
public static BuilderPlug Me { get { return me; } }
// This event is called when the plugin is initialized
public override void OnInitialize()
{
base.OnInitialize();
// Keep a static reference
me = this;
}
// When a map is created
public override void OnMapNewEnd()
{
OnMapOpenEnd();
}
// This is called after a map has been successfully opened
public override void OnMapOpenEnd()
{
if(tagExplorer == null)
{
tagExplorer = new TagExplorer();
docker = new Docker("tagexplorerdockerpanel", "Tag Explorer", tagExplorer);
General.Interface.AddDocker(docker);
tagExplorer.Setup();
}
}
// This is called after a map has been closed
public override void OnMapCloseBegin()
{
// If we have a Tag Explorer panel, remove it
if(tagExplorer != null)
{
tagExplorer.Terminate();
General.Interface.RemoveDocker(docker);
docker = null;
tagExplorer.Dispose();
tagExplorer = null;
}
}
// Geometry pasted
public override void OnPasteEnd(PasteOptions options)
{
if(tagExplorer != null) tagExplorer.UpdateTreeSoon();
}
// Undo performed
public override void OnUndoEnd()
{
if(tagExplorer != null) tagExplorer.UpdateTreeSoon();
}
// Redo performed
public override void OnRedoEnd()
{
if(tagExplorer != null) tagExplorer.UpdateTreeSoon();
}
// Edit performed
public override void OnEditAccept()
{
if(tagExplorer != null) tagExplorer.UpdateTreeSoon();
}
public override void OnActionEnd(Actions.Action action)
{
if(tagExplorer != null && action.Name == "builder_deleteitem")
tagExplorer.UpdateTreeSoon();
}
///
/// Checks if the currently active docker is the Tag Explorer docker.
///
/// true if the Tag Explorer docker is active, otherwise false
public bool IsDockerActive()
{
return General.Interface.ActiveDockerTabName == docker.Title;
}
}
}