public ContextMenu GetContextMenu(HierarchicalViewModelBase selected) { if (selected is SiteExplorerNodeViewModel) { return(SiteExplorerMenuBuilder.Build(selected as SiteExplorerNodeViewModel, Explorer)); } else if (selected is SiteFavoriteViewModel) { var fav = selected as SiteFavoriteViewModel; return(SiteExplorerMenuBuilder.BuildForFavorite(fav, Explorer)); } return(null); }
private void ShowContextMenu(TreeView tvw) { var selected = tvw.SelectedItem as SiteExplorerNodeViewModel; var builder = new ContextMenuBuilder(null); if (selected != null) { tvw.ContextMenu = SiteExplorerMenuBuilder.Build(selected, this); } else if (tvw.SelectedItem == this.regionsNode) { builder.New("Add _Region").Handler(() => { var newNode = AddRegion(null); RegionsModel.Insert(0, newNode); }).End(); builder.Separator(); builder.AddMenuItem(SiteExplorerMenuBuilder.CreateTemplateItems(this)); builder.Separator(); builder.New("Refresh").Handler(() => { Refresh(); }).End(); tvw.ContextMenu = builder.ContextMenu; } else if (tvw.SelectedItem == unplacedNode) { builder.New("Add Site _Group").Handler(() => { var newNode = AddSiteGroup(null); UnplacedModel.Insert(0, newNode); }).End(); MenuItemBuilder b = new MenuItemBuilder(); MenuItem addSite = b.New("Add Site").MenuItem; addSite.Items.Add(b.New("Blank").Handler(() => { var newNode = AddSite(null); UnplacedModel.Insert(0, newNode); }).MenuItem); addSite.Items.Add(b.New("From _Template").Handler(() => { int?templateId = ChooseTemplate(SiteExplorerNodeType.Site); if (templateId != null && templateId.HasValue) { var newNode = AddSite(null, templateId.Value); UnplacedModel.Insert(0, newNode); } }).MenuItem); builder.AddMenuItem(addSite); builder.Separator(); builder.AddMenuItem(SiteExplorerMenuBuilder.CreateTemplateItems(this)); builder.Separator(); builder.New("Refresh").Handler(() => { Refresh(); }).End(); tvw.ContextMenu = builder.ContextMenu; } else if (tvw.SelectedItem is ViewModelPlaceholder) { var ph = tvw.SelectedItem as ViewModelPlaceholder; switch (ph.DisplayLabel.ToLower()) { case "site templates": builder.New("Add new _Site Template").Handler(() => { AddSiteTemplate(); }).End(); break; case "site visit templates": builder.New("Add new Site _Visit Template").Handler(() => { AddSiteVisitTemplate(); }).End(); break; case "material templates": builder.New("Add new _Material Template").Handler(() => { AddMaterialTemplate(); }).End(); break; } tvw.ContextMenu = builder.ContextMenu; } else if (tvw.SelectedItem == templatesNode) { builder.AddMenuItem(SiteExplorerMenuBuilder.CreateTemplateItems(this)); tvw.ContextMenu = builder.ContextMenu; } else { tvw.ContextMenu = null; } }