Exemple #1
0
        public DrawGrid()
        {
            var colinfo = new RowColumnInfo_Steady_BindableProp(this, NumberOfColumnsProperty, ColumnWidthProperty);
            var rowinfo = new RowColumnInfo_Steady_BindableProp(this, NumberOfRowsProperty, RowHeightProperty);

            var padding4   = new ValuePerCell_Steady <Padding?> (new Padding(4, 4, 4, 4));
            var fill_blue  = new ValuePerCell_Steady <CrossGraphics.Color> (CrossGraphics.Colors.Blue);
            var fill_white = new ValuePerCell_Steady <CrossGraphics.Color> (CrossGraphics.Colors.White);            // TODO used to have radius 8

            Func <IDrawCell <IGraphics>, IDrawCell <IGraphics> > f = (IDrawCell <IGraphics> inner) => new DrawCell_Fill(
                fill_blue,
                new DrawCell_Chain_Padding(
                    padding4,
                    new DrawCell_Fill(
                        fill_white,
                        new DrawCell_Chain_Padding(
                            padding4,
                            inner
                            )
                        )
                    )
                );

            var dec_oval        = f(new DrawCell_Oval(CrossGraphics.Colors.Red));
            var dec_arc         = f(new DrawCell_Oval(CrossGraphics.Colors.Green));       // TODO was pie wedge
            var dec_roundedrect = f(new DrawCell_RoundedRect(CrossGraphics.Colors.Yellow));

            var map = new DisplayTypeMap();

            map.Add(0, dec_oval);
            map.Add(1, dec_arc);
            map.Add(2, dec_roundedrect);

            IGetCellDisplayType getter = new myGetCellDisplayType();
            //getter = new OneDisplayTypeForEachColumn (getter);

            var dec_switch = new DrawCell_Chain_DisplayTypes(getter, map);

            var dec_cache = new DrawCell_Chain_Cache(dec_switch, colinfo, rowinfo);

            var sel = new Selection();

            var dec_selection = new DrawCell_FillRectIfSelected(sel, new CrossGraphics.Color(0, 255, 0, 120));

            var dh_layers = new DrawVisible_Layers(new IDrawVisible <IGraphics>[] {
                new DrawVisible_Adapter_DrawCell <IGraphics>(dec_cache),
                new DrawVisible_Adapter_DrawCell <IGraphics>(dec_selection)
            });

            Main = new MainPanel(
                colinfo,
                rowinfo,
                dh_layers
                );
            Notify_DemoToggleSelections.Listen(Main, sel);
        }
Exemple #2
0
        public ColumnishGrid()
        {
            var colinfo = new myColumnInfo(this);
            var rowinfo = new myRowInfo(this);

            var fmt = new OneValueForEachColumn <MyTextFormat> (new ValuePerCell_FromDelegates <MyTextFormat> (gv_fmt));

            IRowList <T> rowlist = new RowList_Bindable_IList <T>(this, RowsProperty);

            // TODO it would be better if these propnames were stored separately
            // from the formatting info.
            var propnames = new Dictionary <int, string>();

            this.PropertyChanged += (object sender, System.ComponentModel.PropertyChangedEventArgs e) => {
                if (e.PropertyName == ColumnsProperty.PropertyName)
                {
                    propnames.Clear();
                    for (int i = 0; i < Columns.Count; i++)
                    {
                        propnames[i] = Columns[i].PropertyName;
                    }
                }
            };

            IValuePerCell <string> vals = new ValuePerCell_RowList_Properties <string, T>(rowlist, propnames);

            IDrawCell <IGraphics> dec = new DrawCell_Text(vals, fmt);

            var padding1 = new ValuePerCell_Steady <Padding?> (new Padding(1, 1, 1, 1));
            var padding8 = new ValuePerCell_Steady <Padding?> (new Padding(8, 8, 8, 8));
            IValuePerCell <CrossGraphics.Color> bginfo = new ValuePerCell_FromDelegates <CrossGraphics.Color> (gv_clr);

            bginfo = new OneValueForEachColumn <CrossGraphics.Color> (bginfo);

            dec = new DrawCell_Chain_Padding(padding8, dec);
            dec = new DrawCell_Fill(bginfo, dec);
            dec = new DrawCell_Chain_Padding(padding1, dec);
            dec = new DrawCell_Chain_Cache(dec, colinfo, rowinfo);

            var sel = new Selection();

            var dec_selection = new DrawCell_FillRectIfSelected(sel, new CrossGraphics.Color(0, 255, 0, 120));

            var dh_layers = new DrawVisible_Layers(new IDrawVisible <IGraphics>[] {
                new DrawVisible_Adapter_DrawCell <IGraphics>(dec),
                new DrawVisible_Adapter_DrawCell <IGraphics>(dec_selection)
            });

            Main = new MainPanel(
                colinfo,
                rowinfo,
                dh_layers
                );
            Notify_DemoToggleSelections.Listen(Main, sel);
                        #if not
            // TODO the mod happens, but the notification does not
            _main.SingleTap += (object sender, CellCoords e) => {
                T          r   = Rows [e.Row];
                ColumnInfo ci  = Columns[e.Column];
                var        typ = typeof(T);
                var        ti  = typ.GetTypeInfo();
                var        p   = ti.GetDeclaredProperty(ci.PropertyName);
                if (p != null)
                {
                    var val = p.GetValue(r);
                    p.SetValue(r, val.ToString() + "*");
                }
            };
                        #endif

            var bginfo_gray = new ValuePerCell_Steady <CrossGraphics.Color> (CrossGraphics.Colors.Gray);
            Top = new FrozenRowsPanel(
                colinfo,
                new Dimension_Steady(1, 40, false),
                new DrawVisible_Adapter_DrawCell <IGraphics>(
                    new DrawCell_Chain_Padding(
                        padding1,
                        new DrawCell_Fill(
                            bginfo_gray,
                            new DrawCell_Text(
                                new myFrozenGetCellTextValue(this),
                                new ValuePerCell_Steady <MyTextFormat>(
                                    new MyTextFormat {
                TextFont  = CrossGraphics.Font.BoldSystemFontOfSize(20),
                TextColor = CrossGraphics.Colors.Red,
                HorizontalTextAlignment = CrossGraphics.TextAlignment.Center,
                VerticalTextAlignment   = CrossGraphics.TextAlignment.Center
            }
                                    )
                                )
                            )
                        )
                    )
                );
        }