public override bool Start(IMouseInformation mouseInformation)
        {
            if (mouseInformation.ClickCount < 2)
            {
                return(false);
            }

            IPhysicalWorkspace workspace = base.ImageViewer.PhysicalWorkspace;

            if (workspace == null)
            {
                return(false);
            }

            IImageBox imageBox = workspace.SelectedImageBox;

            if (imageBox == null)
            {
                return(false);
            }

            if (imageBox.SelectedTile == null || imageBox.SelectedTile.PresentationImage == null)
            {
                return(false);
            }

            // This tool could just be lumped into the explode image box tool, but I like the separation.
            if (ExplodeImageBoxTool.IsExploded(base.ImageViewer))
            {
                return(false);
            }

            if (_unexplodeCommands.ContainsKey(imageBox))
            {
                _unexplodeCommands[imageBox].Execute();
                return(true);
            }
            else if (CanExplodeTiles(imageBox))
            {
                ExplodeSelectedTile(imageBox);
                return(true);
            }

            return(false);
        }
 public ExtensionDataProxy(ExplodeImageBoxTool tool)
 {
     Tool = tool;
 }