private void toggleVisibleButtonsSelector() { if (visibleButtonsSelector == null) { visibleButtonsSelector = new VisibleButtonsSelector(savedVisibleButtons); visibleButtonsSelector.OnButtonSelectionChanged += () => { Log.info("user changed button visibilities"); updateVisibleButtons(); fireChange(); }; visibleButtonsSelector.OnDestroy += () => { visibleButtonsSelector = null; }; } else { visibleButtonsSelector.destroy(); // OnDestroy event will clear the variable } }
private void toggleVisibleButtonsSelector() { if (visibleButtonsSelector == null) { List<Button> buttons = new List<Button>(this.buttons.Where(b => (b.ns != Button.NAMESPACE_INTERNAL) && !b.Equals(dropdownMenuButton))); buttons.AddRange(folders.Values.SelectMany(f => f.buttons).Where(b => b.ns != Button.NAMESPACE_INTERNAL)); sortButtons(buttons, compareButtonsNaturalOrder); visibleButtonsSelector = new VisibleButtonsSelector(buttons); visibleButtonsSelector.OnButtonSelectionChanged += (button) => { string id = button.ns + "." + button.id; Log.info("user changed button visibility: button: {0}, new visibility: {1}", id, button.UserVisible); if (button.UserVisible && !savedVisibleButtons.Contains(id)) { savedVisibleButtons.Add(id); } else if (!button.UserVisible && savedVisibleButtons.Contains(id)) { savedVisibleButtons.Remove(id); } fireChange(); }; visibleButtonsSelector.OnDestroy += () => { visibleButtonsSelector = null; }; } else { visibleButtonsSelector.destroy(); // OnDestroy event will clear the variable } }