/// <summary> /// Add the given predicate to this node? /// </summary> internal override void Add(ILocPredicate p) { var node = p.Accept(Default <ItemBuilder> .Instance, railway); Nodes.Add(node); Expand(); }
/// <summary> /// Can a given predicate be added to this node? /// </summary> internal override bool CanAdd(ILocPredicate p) { if (p is ILocOrPredicate) { return(false); } return(base.CanAdd(p)); }
/// <summary> /// Add the given item to this set /// </summary> IRouteEventBehavior IRouteEventBehaviorList.Add(ILocPredicate appliesTo) { var item = new RouteEventBehavior { AppliesTo = (LocStandardPredicate)appliesTo }; impl.Add(item); return(item); }
/// <summary> /// Update text on predicate changed. /// </summary> void IPredicateChangedListener.PredicateChanged(ILocPredicate predicate) { foreach (var eventNode in lbSet.Nodes.Cast <EventNode>()) { foreach (var behaviorNode in eventNode.Nodes.Cast <BehaviorNode>()) { if (behaviorNode.AppliesTo == predicate) { behaviorNode.UpdateText(); return; } } } }
// Predicate public virtual TReturn Visit(ILocPredicate entity, TData data) { return(default(TReturn)); }
/// <summary> /// Default ctor /// </summary> public PredicateEditorForm(ILocPredicate predicate, IRailway railway) { this.predicate = predicate; InitializeComponent(); if (predicate != null) { rootNode = predicate.Accept(Default <ItemBuilder> .Instance, railway); rootNode.Text = "Permissions"; tvItems.Nodes.Add(rootNode); tvItems.ExpandAll(); // Locs foreach (var locRef in railway.Locs) { ILoc loc; if (locRef.TryResolve(out loc)) { var menuItem = new LocEqualsMenuItem(loc, railway); menuItem.Click += (s, x) => Execute(menuItem); tbAddLocs.DropDownItems.Add(menuItem); } } // LocGroups foreach (var group in railway.LocGroups) { var menuItem = new LocGroupEqualsMenuItem(group, railway); menuItem.Click += (s, x) => Execute(menuItem); tbAddLocGroups.DropDownItems.Add(menuItem); } // Specials { // Change direction { var menuItem = new LocCanChangeDirectionMenuItem(railway); menuItem.Click += (s, x) => Execute(menuItem); tbAddSpecial.DropDownItems.Add(menuItem); } // Time predicate { var menuItem = new LocTimeMenuItem(railway); menuItem.Click += (s, x) => Execute(menuItem); tbAddSpecial.DropDownItems.Add(menuItem); } // AND { var menuItem = new LocAndMenuItem(railway); menuItem.Click += (s, x) => Execute(menuItem); tbAddSpecial.DropDownItems.Add(menuItem); } // OR { var menuItem = new LocOrMenuItem(railway); menuItem.Click += (s, x) => Execute(menuItem); tbAddSpecial.DropDownItems.Add(menuItem); } } UpdateToolbar(); } }
/// <summary> /// Add the given predicate to this node? /// </summary> internal abstract void Add(ILocPredicate p);
/// <summary> /// Can a given predicate be added to this node? /// </summary> internal abstract bool CanAdd(ILocPredicate p);
/// <summary> /// Add the given predicate to this node? /// </summary> internal override void Add(ILocPredicate p) { // Do nothing }
/// <summary> /// Can a given predicate be added to this node? /// </summary> internal override bool CanAdd(ILocPredicate p) { return(false); }