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; } } }
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; } }
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; } } }
public override void Load(IController hud) { base.Load(hud); ItemRenderer = new StandardItemRenderer(Hud); }
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; } } }
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 }
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 }