using Autodesk.Aec.Building.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using System;
using Autodesk.AutoCAD.DatabaseServices;
using ObjectId = Autodesk.AutoCAD.DatabaseServices.ObjectId;
namespace ToolTips
{
public class ToolTipHelper
{
private static ObjectId toolTipObjectId = ObjectId.Null;
public static void Editor_Rollover(Object sender, RolloverEventArgs e)
{
if (!e.Highlighted.IsNull)
{
ObjectId[] objectsIds = e.Highlighted.GetObjectIds();
if ((objectsIds != null) && (objectsIds.Length > 0))
{
if ((objectsIds[0].ObjectClass.Name == "AecbDbDuct") ||
(objectsIds[0].ObjectClass.Name == "AecbDbDuctFitting") ||
(objectsIds[0].ObjectClass.Name == "AecbDbDuctCustomFitting") ||
(objectsIds[0].ObjectClass.Name == "AecbDbDuctFlex") ||
(objectsIds[0].ObjectClass.Name == "AecbDbPipe") ||
(objectsIds[0].ObjectClass.Name == "AecbDbPipeFitting") ||
(objectsIds[0].ObjectClass.Name == "AecbDbPipeCustomFitting") ||
(objectsIds[0].ObjectClass.Name == "AecbDbPipeFlex") ||
(objectsIds[0].ObjectClass.Name == "AecbDbMvPart"))
{
toolTipObjectId = objectsIds[0];
}
else
{
toolTipObjectId = ObjectId.Null;
}
}
else
{
toolTipObjectId = ObjectId.Null;
}
}
else
{
toolTipObjectId = ObjectId.Null;
}
}
public static void ComponentManager_ToolTipOpened(object sender, EventArgs e)
{
if (toolTipObjectId != ObjectId.Null)
{
var toolTip = sender as Autodesk.Internal.Windows.ToolTip;
// This check is needed to distinguish between the ribbon tooltips and the member tooltips
if (toolTip != null)
{
Member member = null;
using (
Transaction transaction =
HostApplicationServices.WorkingDatabase.TransactionManager.StartOpenCloseTransaction())
{
member = transaction.GetObject(toolTipObjectId, 0) as Member;
transaction.Commit();
}
if (member != null)
{
var memberToolTip
= new ToolTipMember
();
// Switch the AutoCAD WPF ToolTip out with our WPF ToolTip
toolTip.Content = memberToolTip;
member.Dispose();
}
}
// Reset the object for the next tooltip
toolTipObjectId = ObjectId.Null;
}
}
}
}