public void Creator(DetailedItem item, object obj) { if (item == null || obj == null) return; item.panel.DoubleClick += (s, e) => { item.panel.SendMessage(Message.Click, new MouseEventArgs()); }; item.panel.Click += (s, e) => { CheckBox cb = (CheckBox)item.itemControls["checkbox"]; cb.Checked = !cb.Checked; }; CheckBox checkbox = new CheckBox(manager); checkbox.Init(); checkbox.Parent = item.panel; checkbox.Left = 6; checkbox.Top = 3; checkbox.Checked = false; checkbox.Text = ""; checkbox.Name = "checkbox"; item.AddControl(checkbox); mtypes types = Utils.GetCompTypes((Type)item.obj); if (types == mtypes.none) return; bool AO = (types & mtypes.affectother) == mtypes.affectother; bool AS = (types & mtypes.affectself) == mtypes.affectself; bool D = ((types & mtypes.draw) == mtypes.draw) || (types & mtypes.minordraw) == mtypes.minordraw; bool Q = (types & mtypes.tracer) == mtypes.tracer; bool TREE = (Type)item.obj == typeof(Tree); //int weight = 0; //if (AO) weight += 10; //if (AS) weight += 1; //if (D) weight += 1; //if (Q) weight += 3; //if (TREE) weight = 50; int leftcounter = 135; //NewLabel(weight.ToString(), hc, item, "label1"); //leftcounter += 100; if (AO) NewLabel(UserInterface.Checkmark, leftcounter, item, "label2"); else NewLabel(UserInterface.Cross, leftcounter, item, "label2"); leftcounter += 20; if (AS) NewLabel(UserInterface.Checkmark, leftcounter, item, "label3"); else NewLabel(UserInterface.Cross, leftcounter, item, "label3"); leftcounter += 20; if (D) NewLabel(UserInterface.Checkmark, leftcounter, item, "label4"); else NewLabel(UserInterface.Cross, leftcounter, item, "label4"); Info info = Utils.GetInfoType((Type)item.obj); if (info == null) Console.WriteLine("Info was null on component type " + item.obj); else { string summary = info.summary.wordWrap(32); item.panel.MouseOver += (s, e) => { lblCompName.Text = item.obj.ToString().LastWord('.'); lblDescription.Text = summary; }; } }
public void NewLabel(string s, int left, DetailedItem item, string name) { Label label = new Label(manager); label.Init(); label.Parent = item.panel; label.Top = 1; label.Left = left; label.TextColor = Color.Black; label.Width = 30; label.Text = s; label.Name = name; if (s.Equals(UserInterface.Checkmark)) label.TextColor = UserInterface.TomShanePuke; else if (s.Equals(UserInterface.Cross)) label.TextColor = Color.Red; item.AddControl(label); }
private void ItemCreatorDelegate(DetailedItem item, object obj) { //editGroupWindow = new EditNodeWindow(sidebar, "All Players", room.groups.playerGroup.Name); //editGroupWindow.componentView.SwitchGroup(room.groups.playerGroup); //editGroupWindow.componentView.SwitchNode(n, false); if (obj == null) return; if (obj is InspectorInfo) { InspectorInfo inspectorItem = (InspectorInfo)obj; if (inspectorItem.methodInfo != null) { Button btnInvoke = new Button(manager); btnInvoke.Init(); btnInvoke.Parent = item.panel; btnInvoke.TextColor = Color.Blue; btnInvoke.Width = 50; btnInvoke.Left = item.panel.Width - btnInvoke.Width - btnInvoke.Width - 5; btnInvoke.Height = item.buttonHeight; btnInvoke.ToolTip.Text = "Invoke Method"; btnInvoke.Name = "method_button_invoke"; btnInvoke.Text = "Do"; item.AddControl(btnInvoke); } if (inspectorItem.obj == null) return; object o = inspectorItem.obj; bool isToggle = Utils.isToggle(o); if (o != null) { if (o is Node) { //item.label.Text = "Root"; Node n = (Node)o; Button btnEdit = new Button(manager); btnEdit.Init(); btnEdit.Parent = item.panel; btnEdit.Width = 30; btnEdit.Left = item.panel.Width - btnEdit.Width - 10; btnEdit.Top = 2; btnEdit.Height = item.buttonHeight; EventHandler editnode = (s, e) => { //item.isSelected = true; EditNodeWindow editNodeWindow = new EditNodeWindow(sidebar, inspectorItem.Name(), n.name, ViewType.Node); editNodeWindow.componentView.SwitchNode(n, false); }; btnEdit.Text = "Edit"; btnEdit.ToolTip.Text = "Edit"; btnEdit.TextColor = UserInterface.TomShanePuke; btnEdit.Click += editnode; } else if (o is Link) { Link link = (Link)o; Button btnEdit = new Button(manager); btnEdit.Init(); btnEdit.Parent = item.panel; btnEdit.Width = 30; btnEdit.Left = item.panel.Width - btnEdit.Width - 10; btnEdit.Top = 2; btnEdit.Height = item.buttonHeight; EventHandler editlink = (s, e) => { EditLinkWindow editLinkWindow = new EditLinkWindow(sidebar, link, inspectorItem.Name()); }; btnEdit.Text = "Edit"; btnEdit.ToolTip.Text = "Edit"; btnEdit.TextColor = UserInterface.TomShanePuke; btnEdit.Click += editlink; } else if (o is Body || o is Component) { item.label.Text = o.GetType().ToString().LastWord('.'); } if (o is Component) { Component comp = (Component)o; Button btnEnabled = new Button(manager); btnEnabled.Init(); btnEnabled.Parent = item.panel; btnEnabled.TextColor = Color.Red; btnEnabled.Width = 25; btnEnabled.Left = item.panel.Width - btnEnabled.Width - 20; btnEnabled.Top = 3; btnEnabled.Height = item.buttonHeight; btnEnabled.ToolTip.Text = "Toggle Active"; btnEnabled.Name = "component_button_enabled"; SetButtonBool(btnEnabled, comp.active); item.AddControl(btnEnabled); //check for essential if (!comp.isEssential()) { Button btnRemove = new Button(manager); btnRemove.Init(); btnRemove.Parent = item.panel; btnRemove.TextColor = Color.Red; btnRemove.Left = btnEnabled.Left - 20; btnRemove.Top = 3; btnRemove.Height = item.buttonHeight; btnRemove.Width = item.buttonWidth; btnRemove.Text = "-"; btnRemove.ToolTip.Text = "Remove"; btnRemove.Name = "component_button_remove"; item.AddControl(btnRemove); } } else if (o is int || o is Single || o is byte || isToggle) { int w = 60; TextBox textbox = new TextBox(manager); textbox.ClientMargins = new Margins(); textbox.Init(); textbox.Parent = item.panel; textbox.TextColor = UserInterface.TomShanePuke; textbox.Left = backPanel.Width - w - 26; textbox.Width = w; textbox.Height = textbox.Height - 4; textbox.Name = "number_textbox"; if (isToggle) { textbox.Name = "toggle_textbox"; Button btnEnabled = new Button(manager); btnEnabled.Init(); btnEnabled.Parent = item.panel; btnEnabled.TextColor = Color.Red; btnEnabled.Width = 25; btnEnabled.Left = textbox.Left - btnEnabled.Width; //btnEnabled.Top = 3; btnEnabled.Height = item.buttonHeight; btnEnabled.ToolTip.Text = "Toggle Active"; btnEnabled.Name = "toggle_button_enabled"; SetButtonBool(btnEnabled, (o as dynamic).enabled); item.AddControl(btnEnabled); //item.AddControl(checkbox); //textbox.Text = (o as dynamic).valueString(); // too slow. textbox.Text = "..."; } else textbox.Text = o.ToString(); textbox.ClientArea.Top += 2; textbox.ClientArea.Left += 4; textbox.FocusLost += delegate { textbox.SendMessage(Message.KeyUp, new KeyEventArgs(Microsoft.Xna.Framework.Input.Keys.Enter)); }; textbox.ClientArea.Move += delegate { marginalize(textbox); }; item.AddControl(textbox); Type primitiveType = !isToggle ? o.GetType() : ((dynamic)o).value.GetType(); Button up = new Button(manager); up.SetSize(textbox.ClientArea.Height, textbox.ClientArea.Height / 2); up.Anchor = Anchors.Right; up.Init(); up.Left = textbox.ClientArea.Width - up.Width; sidebar.ui.SetScrollableControl(up, List_ChangeScrollPosition); up.ToolTip.Text = "Increment : RightClick = byOne, MiddleClick = byTen, RightClick = Double"; up.MouseDown += (s, e) => { switch (e.Button) { case MouseButton.Left: textbox.Text = textbox.Text.increment(primitiveType, NumBoxMode.byOne); break; case MouseButton.Right: textbox.Text = textbox.Text.increment(primitiveType, NumBoxMode.quadratic); break; case MouseButton.Middle: textbox.Text = textbox.Text.increment(primitiveType, NumBoxMode.byTen); break; } textbox.SendMessage(Message.KeyUp, new KeyEventArgs(Microsoft.Xna.Framework.Input.Keys.Enter)); marginalize(textbox); }; textbox.Add(up); Button down = new Button(manager); down.SetSize(textbox.ClientArea.Height, textbox.ClientArea.Height / 2); down.Anchor = Anchors.Right; down.Top = up.Height; down.Init(); down.ToolTip.Text = "Decrement : RightClick = byOne, MiddleClick = byTen, RightClick = half"; down.MouseDown += (s, e) => { switch (e.Button) { case MouseButton.Left: textbox.Text = textbox.Text.decrement(primitiveType, NumBoxMode.byOne); break; case MouseButton.Right: textbox.Text = textbox.Text.decrement(primitiveType, NumBoxMode.quadratic); break; case MouseButton.Middle: textbox.Text = textbox.Text.decrement(primitiveType, NumBoxMode.byTen); break; } textbox.SendMessage(Message.KeyUp, new KeyEventArgs(Microsoft.Xna.Framework.Input.Keys.Enter)); marginalize(textbox); }; down.Left = textbox.ClientArea.Width - down.Width; sidebar.ui.SetScrollableControl(down, List_ChangeScrollPosition); textbox.Add(down); //todo: make tiny + and - buttons } else if (o is string) { int w = 60; TextBox textbox = new TextBox(manager); textbox.ClientMargins = new Margins(); textbox.Init(); textbox.Parent = item.panel; textbox.TextColor = UserInterface.TomShanePuke; textbox.Left = backPanel.Width - w - 26; textbox.Width = w; textbox.Height = textbox.Height - 4; textbox.Text = o.ToString(); textbox.Name = "string_textbox"; item.AddControl(textbox); textbox.ClientArea.Top += 2; textbox.ClientArea.Left += 2; textbox.KeyPress += delegate { if (!textbox.Text.Equals("")) { textbox.ClientArea.Top += 2; textbox.ClientArea.Left += 2; } }; } else if (o is bool) { Button btnEnabled = new Button(manager); btnEnabled.Init(); btnEnabled.Parent = item.panel; btnEnabled.TextColor = Color.Red; btnEnabled.Width = 25; btnEnabled.Left = item.panel.Width - btnEnabled.Width - 20; //btnEnabled.Top = 3; btnEnabled.Height = item.buttonHeight; btnEnabled.ToolTip.Text = "Toggle Enabled"; btnEnabled.Name = "bool_button_enabled"; SetButtonBool(btnEnabled, (bool)o); item.AddControl(btnEnabled); } else if (o.GetType().IsEnum) { int w = 95; ComboBox combobox = new ComboBox(manager); combobox.ClientMargins = new Margins(); combobox.Init(); combobox.TextColor = UserInterface.TomShanePuke; combobox.Parent = item.panel; combobox.Left = backPanel.Width - w - 26; combobox.Height = combobox.Height - 4; combobox.Width = w; combobox.MaxItems = 15; int i = 0; foreach(string s in Enum.GetNames(o.GetType())) { combobox.Items.Add(s); if (s.Equals(o.ToString())) combobox.ItemIndex = i; i++; } combobox.Name = "enum_combobox"; item.AddControl(combobox); combobox.ClientArea.Top += 2; combobox.ClientArea.Left += 2; combobox.ItemIndexChanged += delegate { if (!combobox.Text.Equals("")) { combobox.ClientArea.Top += 2; combobox.ClientArea.Left += 2; } }; } } } }