コード例 #1
0
        protected override void KeyDownHandler(Event e)
        {
            if (e.Phase == EventPhase.Bubbling)
            {
                return;
            }

            if (!Enabled || null == DataGroup || e.DefaultPrevented)
            {
                return;
            }

            // Block input if space bar is being held down.
            if (null != _pressedIndex)
            {
                e.PreventDefault();
                return;
            }

            base.KeyDownHandler(e);

            KeyboardEvent ke = (KeyboardEvent)e;

            switch (ke.KeyCode)
            {
            case KeyCode.UpArrow:
            case KeyCode.LeftArrow:
            {
                AdjustCaretIndex(-1);
                e.PreventDefault();
                break;
            }

            case KeyCode.DownArrow:
            case KeyCode.RightArrow:
            {
                AdjustCaretIndex(+1);
                e.PreventDefault();
                break;
            }

            case KeyCode.Space:
            {
                IItemRenderer renderer = GetItemRenderer(CaretIndex) as IItemRenderer;
                if (null != renderer && ((!renderer.Selected && RequireSelection) || !RequireSelection))
                {
                    renderer.DispatchEvent(e);
                    _pressedIndex = CaretIndex;
                }
                break;
            }
            }
        }
コード例 #2
0
        public EnumDropDownControl(IWindowsFormsEditorService editorService, IItemRenderer <E> renderer, Size dropDownSize)
        {
            this.editorService = editorService;
            this.renderer      = renderer;
            InitializeComponent();
            values = InitializeValues();
            listBox1.DataSource = values;
            // Set the DrawMode property to draw fixed sized items.
            if (Renderer != null)
            {
                listBox1.DrawMode   = DrawMode.OwnerDrawFixed;
                listBox1.ItemHeight = Renderer.PreferredIconSize.Height;
                this.Width          = Renderer.PreferredDropDownWidth;
//       listBox1.Size = dropDownSize;
                listBox1.Dock = DockStyle.Fill;
            }
        }
コード例 #3
0
        protected override void KeyUpHandler(Event e)
        {
            if (e.Phase == EventPhase.Bubbling)
            {
                return;
            }

            if (!Enabled)
            {
                return;
            }

            base.KeyUpHandler(e);

            KeyboardEvent ke = (KeyboardEvent)e;

            switch (ke.KeyCode)
            {
            case KeyCode.Space:
            {
                _inKeyUpHandler = true;

                // Need to check pressedIndex for NaN for the case when key up
                // happens on an already selected renderer and under the condition
                // that requireSelection=true.
                if (null != _pressedIndex)
                {
                    // Dispatch key up to the previously pressed item in case focus was lost
                    // through other interaction (e.g. mouse clicks, etc...)
                    IItemRenderer renderer = GetItemRenderer((int)_pressedIndex) as IItemRenderer;
                    if (null != renderer && ((!renderer.Selected && RequireSelection) || !RequireSelection))
                    {
                        renderer.DispatchEvent(e);
                        _pressedIndex = null;
                    }
                }
                _inKeyUpHandler = false;
                break;
            }
            }
        }
コード例 #4
0
 public override void Load(IController hud)
 {
     base.Load(hud);
     ItemRenderer = new StandardItemRenderer(Hud);
 }
コード例 #5
0
ファイル: Entity.cs プロジェクト: LegacyGamerHD/Alex
        private void CheckHeldItem()
        {
            var inHand = Inventory[Inventory.SelectedSlot];

            //Log.Info($"Inventory slot changed.");

            if ((inHand == null || inHand.Count == 0 || inHand.Id <= 0) && ItemRenderer != null)
            {
                //  if (ModelRenderer.GetBone("rightItem", out EntityModelRenderer.ModelBone bone))
                {
                    //     _rightArmModel?.Detach(ItemRenderer);
                }

                ItemRenderer = null;
                return;
            }

            if (inHand != null)
            {
                if (!string.IsNullOrWhiteSpace(inHand.Name))
                {
                    /*var itemModel = Alex.Instance.Resources.ResourcePack.ItemModels.FirstOrDefault(x =>
                     *  x.Key.Contains(inHand.Name, StringComparison.InvariantCultureIgnoreCase));
                     *
                     * ItemRenderer = new ItemModelRenderer(itemModel.Value, Alex.Instance.Resources.ResourcePack);*/

                    var renderer = inHand.Renderer.Clone();
                    if (renderer == null)
                    {
                        Log.Warn($"No renderer for item: {inHand.Name}");
                        return;
                    }

                    if (renderer == ItemRenderer)
                    {
                        return;
                    }

                    var itemModel = renderer.Model;

                    var oldRenderer = ItemRenderer;
                    if (oldRenderer != default)
                    {
                        renderer.DisplayPosition = oldRenderer.DisplayPosition;
                    }

                    // renderer.Scale = new Vector3(_scale);

                    ItemRenderer = renderer;

                    if (this is Player p)
                    {
                        var pos = renderer.DisplayPosition;
                        //if (pos.HasFlag(DisplayPosition.FirstPerson) || pos.HasFlag(DisplayPosition.ThirdPerson))
                        {
                            if (p.IsLeftyHandy)
                            {
                                if (!pos.HasFlag(DisplayPosition.LeftHand))
                                {
                                    pos  = (pos & ~(DisplayPosition.LeftHand | DisplayPosition.RightHand));
                                    pos |= DisplayPosition.LeftHand;
                                }
                            }
                            else
                            {
                                if (!pos.HasFlag(DisplayPosition.RightHand))
                                {
                                    pos  = (pos & ~(DisplayPosition.LeftHand | DisplayPosition.RightHand));
                                    pos |= DisplayPosition.RightHand;
                                }
                            }

                            if (p.IsFirstPersonMode)
                            {
                                if (!pos.HasFlag(DisplayPosition.FirstPerson))
                                {
                                    pos  = (pos & ~(DisplayPosition.FirstPerson | DisplayPosition.ThirdPerson));
                                    pos |= DisplayPosition.FirstPerson;
                                }
                            }
                            else
                            {
                                if (!pos.HasFlag(DisplayPosition.ThirdPerson))
                                {
                                    pos  = (pos & ~(DisplayPosition.FirstPerson | DisplayPosition.ThirdPerson));
                                    pos |= DisplayPosition.ThirdPerson;
                                }
                            }

                            renderer.DisplayPosition = pos;
                        }
                    }
                    else
                    {
                        renderer.DisplayPosition = DisplayPosition.ThirdPersonRightHand;
                    }
                }
            }
            else
            {
                if (ItemRenderer != null)
                {
                    //if (ModelRenderer.GetBone("rightItem", out EntityModelRenderer.ModelBone bone))
                    //  {
                    //     _rightArmModel?.Detach(ItemRenderer);
                    //     }

                    ItemRenderer = null;
                }
            }
        }
コード例 #6
0
ファイル: NavigatorDemo.cs プロジェクト: onamoni/edriven-gui
    override protected void CreateChildren()
    {
        base.CreateChildren();

        #region Controls

        Toolbar toolbar = new Toolbar();
        AddChild(toolbar);

        Button button = new Button
        {
            Text       = "Add data",
            SkinClass  = typeof(ImageButtonSkin),
            Icon       = ImageLoader.Instance.Load("Icons/add"),
            AutoRepeat = true
        };
        button.ButtonDown += delegate
        {
            _dataProvider.AddItem("data " + _random.Next(1, 100));
        };
        toolbar.AddContentChild(button);

        button = new Button
        {
            Text      = "Previous tab",
            SkinClass = typeof(ImageButtonSkin),
            Icon      = ImageLoader.Instance.Load("Icons/previous")
        };
        button.Click += delegate
        {
            _buttonBar.SelectedIndex--;
            _viewstack.Previous();
        };
        toolbar.AddContentChild(button);

        button = new Button
        {
            Text      = "Next tab",
            SkinClass = typeof(ImageButtonSkin),
            Icon      = ImageLoader.Instance.Load("Icons/next")
        };
        button.Click += delegate
        {
            _buttonBar.SelectedIndex++;
            _viewstack.Next();
        };
        toolbar.AddContentChild(button);

        #endregion

        #region Scroller

        Scroller scroller = new Scroller
        {
            SkinClass     = typeof(ScrollerSkin2),
            PercentWidth  = 100,
            PercentHeight = 100
        };
        //scroller.SetStyle("horizontalScrollPolicy", ScrollPolicy.On);
        //scroller.SetStyle("verticalScrollPolicy", ScrollPolicy.On);
        AddChild(scroller);

        Group viewport = new Group
        {
            MouseEnabled = true,
            Layout       = new VerticalLayout
            {
                HorizontalAlign = HorizontalAlign.Left,
                PaddingLeft     = 10,
                PaddingRight    = 10,
                PaddingTop      = 10,
                PaddingBottom   = 10,
                Gap             = 10
            }
        };
        scroller.Viewport = viewport;

        #endregion

        List <object> source = new List <object> {
            "Failure", "Teaches", "Success", "One", "Two", "Three", "Four", "Five", "Six"
        };

        _dataProvider = new ArrayList(source);

        viewport.AddChild(new Label {
            Text = "ButtonBar:"
        });

        #region Button bar

        _buttonBar = new ButtonBar
        {
            DataProvider = new ArrayList(new List <object> {
                "List 1", "List 2", "List 3", "List 4", "List 5"
            }),
            SkinClass        = typeof(ButtonBarSkin2),
            RequireSelection = true
        };
        _buttonBar.AddEventListener(Event.CHANGE, delegate(Event e)
        {
            IndexChangeEvent ice = e as IndexChangeEvent;
            if (null != ice)
            {
                int newIndex = ice.NewIndex;
                //Debug.Log("Changed to: " + newIndex);
                _viewstack.SelectedIndex = newIndex;
            }
        });
        viewport.AddChild(_buttonBar);

        #endregion

        #region ViewStack

        viewport.AddChild(new Label {
            Text = "ViewStack (having 5 lists as children):"
        });

        _viewstack = new ViewStack {
            ResizeToContent = true
        };
        viewport.AddChild(_viewstack);

        #endregion

        /* Factory is used for creating renderer instances */
        var factory = new ItemRendererFactory <DefaultItemRenderer>();

        /* LISTS */

        #region List 1

        List list = new List
        {
            Id = "list1",
            //Layout = new TileLayout { RequestedColumnCount = 4 },
            Width        = 200, Height = 200,
            DataProvider = _dataProvider,
            //ItemRenderer = new ItemRendererFactory <DefaultItemRenderer>(),

            /* ItemRendererFunction is used for switching between different factories, based on the supplied item */
            ItemRendererFunction = delegate { return(factory); }
        };
        _viewstack.AddChild(list);

        #endregion

        #region List 2

        list = new List
        {
            Id = "list2",
            //Layout = new TileLayout { RequestedColumnCount = 3 },
            Width        = 200, Height = 245,
            DataProvider = _dataProvider,
            //ItemRenderer = new ItemRendererFactory <DefaultItemRenderer>(),
            ItemRendererFunction = delegate { return(factory); }
        };
        _viewstack.AddChild(list);

        #endregion

        #region List 3

        list = new List
        {
            Id           = "list3",
            Width        = 400,
            Height       = 450,
            DataProvider = _dataProvider,
            SkinClass    = typeof(ListSkin2),
            ItemRenderer = new ItemRendererFactory <BigItemRenderer>()
        };
        _viewstack.AddChild(list);

        #endregion

        #region List 4

        list = new List
        {
            Id     = "list4",
            Width  = 600, Height = 800,
            Layout = new TileLayout {
                HorizontalGap = 0, VerticalGap = 0, RequestedRowCount = 4, RequestedColumnCount = 3
            },
            DataProvider = _dataProvider,
            SkinClass    = typeof(ListSkin2),
            ItemRenderer = new ItemRendererFactory <BigItemRenderer>()
        };
        _viewstack.AddChild(list);

        #endregion

        #region List 5 (horizontal)

        list = new List
        {
            Id     = "list5",
            Width  = 800,
            Height = 100,
            Layout = new HorizontalLayout {
                Gap = 0, RequestedColumnCount = 3
            },
            DataProvider = _dataProvider,
            SkinClass    = typeof(ListSkin2),
            ItemRenderer = new ItemRendererFactory <BigItemRenderer>()
        };
        _viewstack.AddChild(list);

        #endregion

        #region Process renderer click

        AddEventListener(BigItemRenderer.ADD_BUTTON_CLICKED, delegate(Event e)
        {
            IItemRenderer itemRenderer = (IItemRenderer)e.Target;
            Alert.Show("Info", itemRenderer.Data.ToString(), AlertButtonFlag.Ok,
                       new AlertOption(AlertOptionType.HeaderIcon, ImageLoader.Instance.Load("Icons/information")));
        });

        #endregion
    }
コード例 #7
0
ファイル: GridDemo.cs プロジェクト: iwaken71/ActivityGame
    override protected void CreateChildren()
    {
        base.CreateChildren();

        #region Controls

        Toolbar toolbar = new Toolbar();
        AddChild(toolbar);

        Button button = new Button
        {
            Text       = "Add data",
            SkinClass  = typeof(ImageButtonSkin),
            Icon       = ImageLoader.Instance.Load("Icons/star"),
            AutoRepeat = true
        };
        button.ButtonDown += delegate
        {
            _dataProvider.AddItem(
                new ExampleItem
            {
                FirstName      = "First" + _random.Next(1, 100),
                LastName       = "Last" + _random.Next(1, 100),
                Age            = _random.Next(1, 80),
                DrivingLicense = _random.Next(0, 2) == 1
            }
                );
        };
        toolbar.AddContentChild(button);

        #endregion

        #region Scroller

        Scroller scroller = new Scroller
        {
            SkinClass     = typeof(ScrollerSkin2),
            PercentWidth  = 100,
            PercentHeight = 100
        };
        //scroller.SetStyle("horizontalScrollPolicy", ScrollPolicy.On);
        //scroller.SetStyle("verticalScrollPolicy", ScrollPolicy.On);
        AddChild(scroller);

        Group viewport = new Group
        {
            MouseEnabled = true,
            Layout       = new VerticalLayout
            {
                HorizontalAlign = HorizontalAlign.Left,
                PaddingLeft     = 10,
                PaddingRight    = 10,
                PaddingTop      = 10,
                PaddingBottom   = 10,
                Gap             = 10
            }
        };
        scroller.Viewport = viewport;

        #endregion

        #region Fill the data provider

        List <string> names = new List <string>
        {
            "Failure",
            "Teaches",
            "Success",
            "One",
            "Two",
            "Three",
            "Four",
            "Five",
            "Six"
        };

        List <object> source = new List <object>();
        foreach (var theName in names)
        {
            source.Add(
                new ExampleItem
            {
                FirstName      = theName,
                LastName       = theName,
                Age            = _random.Next(1, 10),
                DrivingLicense = _random.Next(0, 2) == 1
            }
                );
        }

        _dataProvider = new ArrayList(source);

        #endregion

        HGroup hGroup = new HGroup {
            PercentWidth = 100, PercentHeight = 100
        };
        viewport.AddChild(hGroup);

        #region Grid (header + list + footer)

        VGroup vGroup = new VGroup {
            PercentWidth = 100, PercentHeight = 100, Gap = 0
        };
        hGroup.AddChild(vGroup);

        #region Header

        /* Implement your own header logic here */

        /*HGroup header = new HGroup {PercentWidth = 100, Gap = 0};
         * vGroup.AddChild(header);
         *
         * for (int i = 0; i < 5; i++)
         * {
         *  Button btnCol = new Button // example header
         *  {
         *      Text = "Column " + (i + 1),
         *      ToggleMode = true,
         *      PercentWidth = 100
         *  };
         *  btnCol.Click += delegate(Event e)
         *  {
         *      // sort, filder and refresh (do list.DataProvider = list.DataProvider)
         *  };
         *  header.AddChild(btnCol);
         * }*/

        #endregion

        #region List

        List list = new List
        {
            Id            = "list1",
            PercentWidth  = 100,
            PercentHeight = 100,
            DataProvider  = _dataProvider,
            LabelField    = "FirstName", // this must be set due to list logic legacy (the field must exist in DTO)
            SkinClass     = typeof(ListSkin2),
            ItemRenderer  = new ItemRendererFactory <MyGridItemRenderer>()
        };
        vGroup.AddChild(list);

        #endregion

        #region Footer

        HGroup footer = new HGroup {
            PercentWidth = 100, Gap = 30, PaddingLeft = 10, PaddingRight = 10, PaddingTop = 10, PaddingBottom = 0
        };
        vGroup.AddChild(footer);

        _lblSum = new Label {
            Text = "Age sum: ", StyleName = "footer"
        };
        footer.AddChild(_lblSum);

        _lblNumberOfSelectedItems = new Label {
            Text = "Driving licenses: ", StyleName = "footer"
        };
        footer.AddChild(_lblNumberOfSelectedItems);

        UpdateFooter();

        #endregion

        #endregion

        #region Process renderer click

        AddEventListener(MyGridItemRenderer.ADD_BUTTON_CLICKED, delegate(Event e)
        {
            IItemRenderer itemRenderer = (IItemRenderer)e.Target;
            Alert.Show("Info", itemRenderer.Data.ToString(), AlertButtonFlag.Ok,
                       new AlertOption(AlertOptionType.HeaderIcon, (object)ImageLoader.Instance.Load("Icons/information")));
        });

        AddEventListener(MyGridItemRenderer.EDIT_BUTTON_CLICKED, delegate(Event e)
        {
            var editor = new ExamplePopupEditor {
                Title      = "Edit",
                Icon       = ImageLoader.Instance.Load("Icons/edit"),
                Data       = ((MyGridItemRenderer)e.Target).Data,
                CloseOnEsc = true
            };
            editor.AddEventListener(CloseEvent.CLOSE, delegate
            {
                PopupManager.Instance.RemovePopup(editor);
            });

            PopupManager.Instance.AddPopup(editor, true);
        });

        #endregion

        #region Process property change

        _dataProvider.AddEventListener(PropertyChangeEvent.PROPERTY_CHANGE, delegate(Event e)
        {
            //PropertyChangeEvent pce = (PropertyChangeEvent) e;
            //Debug.Log(pce.NewValue);
            UpdateFooter();
        });

        #endregion
    }