public static void Write(this MenuSuiteNode node, CSideWriter writer)
        {
            writer.Write("{ ");
            writer.Write(node.NodeTypeAsString());
            writer.Write(";");
            writer.Write("[{0}] ", node.ID.ToString("B").ToUpper());
            writer.Write(";");

            writer.Indent(writer.Column);

            IEnumerable <Property> properties = null;

            TypeSwitch.Do(
                node,
                TypeSwitch.Case <RootNode>(n => properties  = n.Properties),
                TypeSwitch.Case <MenuNode>(n => properties  = n.Properties),
                TypeSwitch.Case <GroupNode>(n => properties = n.Properties),
                TypeSwitch.Case <ItemNode>(n => properties  = n.Properties),
                TypeSwitch.Case <DeltaNode>(n => properties = n.Properties)
                );

            var relevantProperties = properties.Where(p => p.HasValue);

            relevantProperties.Write(PropertiesStyle.Field, writer);

            writer.Unindent();
            writer.WriteLine("}");
        }
Ejemplo n.º 2
0
        public static IEnumerable <ParameterBase> ToParameters(this MenuSuiteNode menuSuiteNode)
        {
            yield return(new SimpleParameter("ID", menuSuiteNode.ID));

            foreach (var parameter in menuSuiteNode.AllProperties.Where(p => p.HasValue).SelectMany(p => p.ToParameters()))
            {
                yield return(parameter);
            }
        }
        public static string NodeTypeAsString(this MenuSuiteNode node)
        {
            string result = null;

            TypeSwitch.Do(
                node,
                TypeSwitch.Case <RootNode>(n => result  = "Root".PadRight(15)),
                TypeSwitch.Case <MenuNode>(n => result  = "Menu".PadRight(15)),
                TypeSwitch.Case <GroupNode>(n => result = "MenuGroup".PadRight(15)),
                TypeSwitch.Case <ItemNode>(n => result  = "MenuItem".PadRight(15)),
                TypeSwitch.Case <DeltaNode>(n => result = string.Empty.PadRight(15))
                );

            return(result);
        }
Ejemplo n.º 4
0
        public static Invocation ToInvocation(this MenuSuiteNode menuSuiteNode)
        {
            switch (menuSuiteNode)
            {
            case RootNode rootNode: return(rootNode.ToInvocation());

            case DeltaNode deltaNode: return(deltaNode.ToInvocation());

            case MenuNode menuNode: return(menuNode.ToInvocation());

            case ItemNode itemNode: return(itemNode.ToInvocation());

            case GroupNode groupNode: return(groupNode.ToInvocation());

            default: throw new ArgumentOutOfRangeException("menuSuiteNode");
            }
        }