Пример #1
0
        ///<summary>Sets up a button that can use data for a range of years.</summary>
        ///<typeparam name="TRow">The strongly-typed Singularity row that the feature uses.  These rows are used to populate the years dropdown.</typeparam>
        ///<param name="button">The button that initiates the action.</param>
        ///<param name="yearGetter">A delegate that gets the year represented by a row.  This is called to populate the years dropdown.</param>
        ///<param name="showForm">The method bound to the button.</param>
        ///<param name="defaultYear">The year used when clicking the button itself. This year will also be bolded in the dropdown.  Defaults to the current year.</param>
        public static void SetupYearlyButton <TRow>(this BarButtonItem button, Func <TRow, int?> yearGetter, Action <int> showForm, int?defaultYear = null) where TRow : Row
        {
            if (button == null)
            {
                throw new ArgumentNullException("button");
            }
            if (yearGetter == null)
            {
                throw new ArgumentNullException("yearGetter");
            }
            if (showForm == null)
            {
                throw new ArgumentNullException("showForm");
            }

            defaultYear = defaultYear ?? DateTime.Now.Year;
            var menu = new PopupMenu(button.Manager);

            button.Disposed += delegate { menu.Dispose(); };

            if (button.DropDownSuperTip == null)
            {
                button.DropDownSuperTip = Utilities.CreateSuperTip(button.Caption, "Shows a " + button.Caption + " for a specific year");
            }

            button.ButtonStyle     = BarButtonStyle.DropDown;
            button.DropDownControl = menu;
            button.ItemClick      += delegate { showForm(defaultYear.Value); };
            menu.BeforePopup      += delegate {
                foreach (var link in menu.ItemLinks.Cast <BarItemLink>().ToList())                //Collection will be modified
                {
                    button.Manager.Items.Remove(link.Item);
                }

                menu.ItemLinks.Clear();

                AppFramework.LoadTable <TRow>();
                foreach (int dontUse in AppFramework.Table <TRow>().Rows
                         .Select(yearGetter)
                         .Where(y => y.HasValue)
                         .Distinct()
                         .OrderByDescending(y => y))
                {
                    int year = dontUse;                         //Force separate variable per closure
                    var item = new BarButtonItem(button.Manager, year.ToString(CultureInfo.CurrentCulture));

                    item.ItemClick += delegate { showForm(year); };
                    if (year == defaultYear)
                    {
                        item.Appearance.Font = new Font(item.Appearance.GetFont(), FontStyle.Bold);
                    }

                    menu.AddItem(item);
                }
            };
        }
 protected override void Dispose(bool disposing)
 {
     base.Dispose(disposing);
     if (disposing)
     {
         if (popupMenu != null)
         {
             DeletePopupItems();
             popupMenu.Dispose();
             popupMenu = null;
         }
     }
 }
Пример #3
0
        // IDisposable
        protected virtual void Dispose(bool disposing)
        {
            if (!this.disposedValue)
            {
                if (disposing)
                {
                    if ((m_PopupMenu != null))
                    {
                        m_PopupMenu.Dispose();
                        m_PopupMenu = null;
                    }
                }

                // TODO: free shared unmanaged resources
            }
            this.disposedValue = true;
        }
Пример #4
0
 protected override void Dispose(bool disposing)
 {
     if (disposing)
     {
         _popupMenu.Dispose();
         _popupMenu = null;
         GalleryInitDropDownGallery -= FilterGalleryBarItem_GalleryInitDropDownGallery;
         GalleryItemClick           -= FilterGalleryBarItem_GalleryItemClick;
         if (_ribbon != null)
         {
             _ribbon.MergeOwnerChanged     -= ribbonControl_MergeOwnerChanged;
             _ribbon.ShowCustomizationMenu -= Ribbon_ShowCustomizationMenu;
             if (_mergeOwner != null)
             {
                 _mergeOwner.ShowCustomizationMenu -= Ribbon_ShowCustomizationMenu;
             }
             _mergeOwner = null;
             _ribbon     = null;
         }
     }
     base.Dispose(disposing);
     GC.Collect();
     //GC.SuppressFinalize(this);
 }
Пример #5
0
        private void GridViewOnPopupMenuShowing(object sender, PopupMenuShowingEventArgs popupMenuShowingEventArgs)
        {
            if (popupMenuShowingEventArgs.MenuType == GridMenuType.Row && SelectedItems.Count > 0)
            {
                //var meta = SelectedItems[0].GetAccessor() as IObjectMeta;
                IObject               o       = SelectedItems[0];
                IObjectPermissions    p       = SelectedItems[0].GetPermissions();
                List <ActionMetaItem> actions = ParentLayout.Actions;
                if (actions.Any(c => c.PanelType == ActionsPanelType.ContextMenu && (c.AppType == ActionsAppType.Win || c.AppType == ActionsAppType.All) && c.IsVisible(SelectedItems, p)))
                {
                    //SetCustomActions(meta.Actions);
                    var menu = new PopupMenu {
                        Manager = BaseFormManager.MainBarManager
                    };
                    menu.CloseUp += (s, args) => menu.Dispose();

                    /*
                     * bool bBeginGroup = false;
                     * actions.Where(
                     *  c => c.PanelType == ActionsPanelType.ContextMenu && c.IsVisible(SelectedItems, p))
                     *  .ToList().ForEach(c =>
                     *  {
                     *      BarItem item = null;
                     *      if (c.Children(SelectedItems).Any(i => i.IsVisible(SelectedItems, p)))
                     *      {
                     *          item = new BarSubItem(menu.Manager, BvMessages.Get(c.CaptionId(o, p))) {Tag = c};
                     *          (item as BarSubItem).AddItems(c.Children(SelectedItems).Where(i => i.IsVisible(SelectedItems, p))
                     *              .Select(i =>
                     *              {
                     *                  var item2 = new BarButtonItem(menu.Manager, BvMessages.Get(i.CaptionId(o, p))) {Tag = i};
                     *                  item2.ItemClick += ItemOnItemClick;
                     *                  return item2;
                     *              }).Cast<BarItem>().ToArray()
                     *              );
                     *      }
                     *      else if (c.Children(SelectedItems).Any())
                     *      {
                     *      }
                     *      else if (c.CaptionId(o, p) != "-")
                     *      {
                     *          item = new BarButtonItem(menu.Manager, BvMessages.Get(c.CaptionId(o, p))) {Tag = c};
                     *          item.ItemClick += ItemOnItemClick;
                     *      }
                     *      else
                     *      {
                     *          bBeginGroup = true;
                     *      }
                     *
                     *      if (item != null)
                     *      {
                     *          menu.AddItem(item).BeginGroup = bBeginGroup;
                     *          bBeginGroup = false;
                     *      }
                     *  }
                     *  );
                     */

                    bool bBeginGroup = false;
                    actions.Where(
                        c => c.PanelType == ActionsPanelType.ContextMenu && (c.AppType == ActionsAppType.Win || c.AppType == ActionsAppType.All))
                    .ToList().ForEach(c =>
                    {
                        BarItem item = null;
                        if (c.Children(SelectedItems).Any())
                        {
                            item = new BarSubItem(menu.Manager, BvMessages.Get(c.CaptionId(o, p)))
                            {
                                Tag = c, Enabled = c.IsVisible(SelectedItems, p)
                            };
                            c.Children(SelectedItems).ToList().ForEach(cc =>
                            {
                                BarItem item2 = null;
                                if (cc.Children(SelectedItems).Any())
                                {
                                    item2 = new BarSubItem(menu.Manager, BvMessages.Get(cc.CaptionId(o, p)))
                                    {
                                        Tag = cc, Enabled = cc.IsVisible(SelectedItems, p)
                                    };
                                    (item2 as BarSubItem).AddItems(cc.Children(SelectedItems)
                                                                   .Select(i =>
                                    {
                                        if (cc.IsFirstUI)
                                        {
                                            i.AddFirstUIFunc(cc.FirstUIFunc, cc.Parameters);
                                        }
                                        var item3 = new BarButtonItem(menu.Manager, BvMessages.Get(i.CaptionId(o, p)))
                                        {
                                            Tag = i, Enabled = i.IsVisible(SelectedItems, p)
                                        };
                                        item3.ItemClick += ItemOnItemClick;
                                        return(item3);
                                    }).Cast <BarItem>().ToArray()
                                                                   );
                                }
                                else if (cc.CaptionId(o, p) != "-")
                                {
                                    if (c.IsFirstUI)
                                    {
                                        cc.AddFirstUIFunc(c.FirstUIFunc, c.Parameters);
                                    }
                                    item2 = new BarButtonItem(menu.Manager, BvMessages.Get(cc.CaptionId(o, p)))
                                    {
                                        Tag = cc, Enabled = cc.IsVisible(SelectedItems, p)
                                    };
                                    item2.ItemClick += ItemOnItemClick;
                                }
                                if (item2 != null)
                                {
                                    (item as BarSubItem).AddItem(item2);
                                }
                            });

                            /*
                             * item = new BarSubItem(menu.Manager, BvMessages.Get(c.CaptionId(o, p))) { Tag = c, Enabled = c.IsVisible(SelectedItems, p) };
                             * (item as BarSubItem).AddItems(c.Children(SelectedItems)
                             *  .Select(i =>
                             *  {
                             *      var item2 = new BarButtonItem(menu.Manager, BvMessages.Get(i.CaptionId(o, p))) { Tag = i, Enabled = i.IsVisible(SelectedItems, p) };
                             *      item2.ItemClick += ItemOnItemClick;
                             *      return item2;
                             *  }).Cast<BarItem>().ToArray()
                             *  );
                             */
                        }
                        else if (c.CaptionId(o, p) != "-")
                        {
                            item = new BarButtonItem(menu.Manager, BvMessages.Get(c.CaptionId(o, p)))
                            {
                                Tag = c, Enabled = c.IsVisible(SelectedItems, p)
                            };
                            item.ItemClick += ItemOnItemClick;
                        }
                        else
                        {
                            bBeginGroup = true;
                        }

                        if (item != null)
                        {
                            menu.AddItem(item).BeginGroup = bBeginGroup;
                            bBeginGroup = false;
                        }
                    }
                                      );

                    menu.ShowPopup(menu.Manager, Grid.PointToScreen(popupMenuShowingEventArgs.Point));
                    popupMenuShowingEventArgs.Allow = false;
                }
            }
        }