Beispiel #1
0
            /// <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();
            }
Beispiel #2
0
 /// <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;
             }
         }
     }
 }
Beispiel #5
0
 // Predicate
 public virtual TReturn Visit(ILocPredicate entity, TData data)
 {
     return(default(TReturn));
 }
Beispiel #6
0
        /// <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();
            }
        }
Beispiel #7
0
 /// <summary>
 /// Add the given predicate to this node?
 /// </summary>
 internal abstract void Add(ILocPredicate p);
Beispiel #8
0
 /// <summary>
 /// Can a given predicate be added to this node?
 /// </summary>
 internal abstract bool CanAdd(ILocPredicate p);
Beispiel #9
0
 /// <summary>
 /// Add the given predicate to this node?
 /// </summary>
 internal override void Add(ILocPredicate p)
 {
     // Do nothing
 }
Beispiel #10
0
 /// <summary>
 /// Can a given predicate be added to this node?
 /// </summary>
 internal override bool CanAdd(ILocPredicate p)
 {
     return(false);
 }