i have registered a Dock panel, i don't want to open when application startup. instead i want to show on button click.
This is my code,
public Result OnStartup(UIControlledApplication application)
{
RibbonPanel panel = RibbonPanel(application);
string assemblyPath = Assembly.GetExecutingAssembly().Location;
ImageSource imgSource = GetImageSource();
RibbonItemData pushButtonData = new PushButtonData(
"Get plants button",
"Get Plants",
assemblyPath,
"FetchAPI.Command"
)
{
ToolTip = "Get data from cloud",
Image = imgSource,
LargeImage = imgSource,
};
panel.AddItem(pushButtonData);
var PlanterPanelCommand = application.CreateRibbonPanel("Planter", "Plants list");
if (PlanterPanelCommand.AddItem(new PushButtonData("ShowPanel", "Show", assemblyPath, "FetchAPI.ShowPlantManagerCommand")) is PushButton btnShow)
{
btnShow.ToolTip = "Show";
}
if (PlanterPanelCommand.AddItem(new PushButtonData("HidePanel", "Hide", assemblyPath, "FetchAPI.HidePlantManagerCommand")) is PushButton btnHide)
{
btnHide.ToolTip = "Hide";
}
application.ControlledApplication.ApplicationInitialized += DockablePanelRegisters;
return Result.Succeeded;
}
private void DockablePanelRegisters(object sender, ApplicationInitializedEventArgs e)
{
var familyManagerRegisterCommand = new RegisterFamilyManagerCommand();
familyManagerRegisterCommand.Execute(new UIApplication(sender as Autodesk.Revit.ApplicationServices.Application));
}
public Result Execute(UIApplication uIApplication)
{
DockablePaneProviderData data = new DockablePaneProviderData();
managerPage = new FamilyManagerMainPage();
try
{
var dpid = new DockablePaneId(new Guid("E839010B-35C6-47AA-A9FD-B4597AA00229"));
uIApplication.RegisterDockablePane(dpid, "Plants list", managerPage); // Register pane
uIApplication.ViewActivated += new EventHandler<ViewActivatedEventArgs>(Application_ViewActivated);
DockablePaneId dockablePaneId = new DockablePaneId(new Guid("E839010B-35C6-47AA-A9FD-B4597AA00229"));
}
catch (Exception ex)
{
TaskDialog.Show("Info Message", ex.Message);
}
return Result.Succeeded;
}
public partial class FamilyManagerMainPage : Page,IDockablePaneProvider
{
public FamilyManagerMainPage()
{
InitializeComponent();
// GetPlantdata();
}
public void CustomInitiator(Document document)
{
doc = document;
}
public void SetupDockablePane(DockablePaneProviderData data)
{
data.FrameworkElement = this as FrameworkElement;
// data.VisibleByDefault = false;
// data.InitialState = new DockablePaneState
// {
// DockPosition = DockPosition.Right,
// };
}
}