private DynamicLayout GenLoadsPanel(bool lockedMode) { var layout = new DynamicLayout() { Height = 500 }; //layout.DefaultPadding = new Padding(4); layout.BeginScrollable(BorderType.None); var container = new DynamicLayout() { Enabled = !lockedMode }; container.DefaultSpacing = new Size(4, 4); //Get lighting container.AddRow(GenLightingPanel()); //Get People container.AddRow(GenPplPanel()); //Get ElecEquipment container.AddRow(GenElecEqpPanel()); //Get gas Equipment container.AddRow(GenGasEqpPanel()); //Get Ventilation container.AddRow(GenVentPanel()); //Get Infiltration container.AddRow(GenInfPanel()); //Get Setpoint container.AddRow(GenStpPanel()); //Get ServiceHotWater container.AddRow(GenSHWPanel()); layout.AddRow(container); layout.AddRow(null); layout.EndScrollable(); return(layout); }
public DragDropSection() { // drag data object showDragOverEvents = new CheckBox { Text = "Show DragOver Events" }; var includeImageCheck = new CheckBox { Text = "Include Image" }; descriptionTextBox = new TextBox { PlaceholderText = "Format", ToolTip = "Add {0} to insert inner text into the description, e.g. 'Move to {0}'" }; innerTextBox = new TextBox { PlaceholderText = "Inner", ToolTip = "Highlighted text to insert into description" }; var textBox = new TextBox { Text = "Some text" }; allowedEffectDropDown = new EnumDropDown <DragEffects> { SelectedValue = DragEffects.All }; dragEnterEffect = new EnumDropDown <DragEffects?> { SelectedValue = DragEffects.Copy }; dragOverEffect = new EnumDropDown <DragEffects?> { SelectedValue = null }; writeDataCheckBox = new CheckBox { Text = "Write data to log" }; useDragImage = new CheckBox { Text = "Use custom drag image" }; imageOffset = new PointEntry { Value = new Point(80, 80) }; imageOffset.Bind(c => c.Enabled, useDragImage, c => c.Checked); var htmlTextArea = new TextArea { Height = 24 }; var selectFilesButton = new Button { Text = "Select Files" }; Uri[] fileUris = null; selectFilesButton.Click += (sender, e) => { var ofd = new OpenFileDialog(); ofd.MultiSelect = true; ofd.ShowDialog(this); fileUris = ofd.Filenames.Select(r => new Uri(r)).ToArray(); if (fileUris.Length == 0) { fileUris = null; } }; var urlTextBox = new TextBox(); DataObject CreateDataObject() { var data = new DataObject(); if (!string.IsNullOrEmpty(textBox.Text)) { data.Text = textBox.Text; } var uris = new List <Uri>(); if (fileUris != null) { uris.AddRange(fileUris); } if (Uri.TryCreate(urlTextBox.Text, UriKind.Absolute, out var uri)) { uris.Add(uri); } if (uris.Count > 0) { data.Uris = uris.ToArray(); } if (!string.IsNullOrEmpty(htmlTextArea.Text)) { data.Html = htmlTextArea.Text; } if (includeImageCheck.Checked == true) { data.Image = TestIcons.Logo; } return(data); } // sources var buttonSource = new Button { Text = "Source" }; buttonSource.MouseDown += (sender, e) => { if (e.Buttons != MouseButtons.None) { DoDragDrop(buttonSource, CreateDataObject()); e.Handled = true; } }; var panelSource = new Panel { BackgroundColor = Colors.Red, Size = new Size(50, 50) }; panelSource.MouseMove += (sender, e) => { if (e.Buttons != MouseButtons.None) { DoDragDrop(panelSource, CreateDataObject()); e.Handled = true; } }; var treeSource = new TreeGridView { Size = new Size(200, 200) }; treeSource.SelectedItemsChanged += (sender, e) => Log.Write(treeSource, $"TreeGridView.SelectedItemsChanged (source) Rows: {string.Join(", ", treeSource.SelectedRows.Select(r => r.ToString()))}"); treeSource.DataStore = CreateTreeData(); SetupTreeColumns(treeSource); treeSource.MouseMove += (sender, e) => { if (e.Buttons == MouseButtons.Primary && !treeSource.IsEditing) { var cell = treeSource.GetCellAt(e.Location); if (cell.Item == null || cell.ColumnIndex == -1) { return; } var data = CreateDataObject(); var selected = treeSource.SelectedItems.OfType <TreeGridItem>().Select(r => (string)r.Values[0]); data.SetString(string.Join(";", selected), "my.tree.data"); DoDragDrop(treeSource, data); e.Handled = true; } }; var gridSource = new GridView { }; gridSource.SelectedRowsChanged += (sender, e) => Log.Write(gridSource, $"GridView.SelectedItemsChanged (source): {string.Join(", ", gridSource.SelectedRows.Select(r => r.ToString()))}"); SetupGridColumns(gridSource); gridSource.DataStore = CreateGridData(); gridSource.MouseMove += (sender, e) => { if (e.Buttons == MouseButtons.Primary && !gridSource.IsEditing) { var cell = gridSource.GetCellAt(e.Location); if (cell.RowIndex == -1 || cell.ColumnIndex == -1) { return; } var data = CreateDataObject(); var selected = gridSource.SelectedItems.OfType <GridItem>().Select(r => (string)r.Values[0]); data.SetString(string.Join(";", selected), "my.grid.data"); DoDragDrop(gridSource, data); e.Handled = true; } }; // destinations var buttonDestination = new Button { Text = "Drop here!", AllowDrop = true }; buttonDestination.DragEnter += (sender, e) => buttonDestination.Text = "Now, drop it!"; buttonDestination.DragLeave += (sender, e) => buttonDestination.Text = "Drop here!"; LogEvents(buttonDestination); var drawableDest = new Drawable { BackgroundColor = Colors.Blue, AllowDrop = true, Size = new Size(50, 50) }; LogEvents(drawableDest); drawableDest.DragEnter += (sender, e) => { if (e.Effects != DragEffects.None) { drawableDest.BackgroundColor = Colors.Green; } }; drawableDest.DragLeave += (sender, e) => { if (e.Effects != DragEffects.None) { drawableDest.BackgroundColor = Colors.Blue; } }; drawableDest.DragDrop += (sender, e) => { if (e.Effects != DragEffects.None) { drawableDest.BackgroundColor = Colors.Blue; } }; var dragMode = new RadioButtonList { Orientation = Orientation.Vertical, Items = { new ListItem { Text = "No Restriction", Key = "" }, new ListItem { Text = "RestrictToOver", Key = "over" }, new ListItem { Text = "RestrictToInsert", Key = "insert" }, new ListItem { Text = "RestrictToNode", Key = "node" }, new ListItem { Text = "No Node", Key = "none" } }, SelectedIndex = 0 }; var treeDest = new TreeGridView { AllowDrop = true, Size = new Size(200, 200) }; var treeDestData = CreateTreeData(); treeDest.DataStore = treeDestData; treeDest.DragOver += (sender, e) => { var info = treeDest.GetDragInfo(e); if (info == null) { return; // not supported } switch (dragMode.SelectedKey) { case "over": info.RestrictToOver(); break; case "insert": info.RestrictToInsert(); break; case "node": info.RestrictToNode(treeDestData[2]); break; case "none": info.Item = info.Parent = null; break; } }; SetupTreeColumns(treeDest); LogEvents(treeDest); var gridDest = new GridView { AllowDrop = true }; var gridDestData = CreateGridData(); gridDest.DataStore = gridDestData; gridDest.DragOver += (sender, e) => { var info = gridDest.GetDragInfo(e); if (info == null) { return; // not supported } switch (dragMode.SelectedKey) { case "over": info.RestrictToOver(); break; case "insert": info.RestrictToInsert(); break; case "node": info.Index = 2; info.Position = GridDragPosition.Over; break; case "none": info.Index = -1; break; } }; SetupGridColumns(gridDest); LogEvents(gridDest); // layout var layout = new DynamicLayout { Padding = 10, DefaultSpacing = new Size(4, 4) }; layout.BeginHorizontal(); layout.BeginScrollable(BorderType.None); layout.BeginCentered(); layout.AddSeparateRow(showDragOverEvents); layout.AddSeparateRow("AllowedEffect", allowedEffectDropDown, null); layout.BeginVertical(); layout.AddRow("DropDescription", descriptionTextBox); layout.AddRow(new Panel(), innerTextBox); layout.EndVertical(); layout.AddSeparateRow("DragEnter Effect", dragEnterEffect, null); layout.AddSeparateRow("DragOver Effect", dragOverEffect, null); layout.AddSeparateRow(useDragImage); layout.AddSeparateRow("Image offset:", imageOffset); layout.AddSeparateRow(writeDataCheckBox); layout.BeginGroup("DataObject", 10); layout.AddRow("Text", textBox); layout.AddRow("Html", htmlTextArea); layout.AddRow("Url", urlTextBox); layout.BeginHorizontal(); layout.AddSpace(); layout.BeginVertical(); layout.AddCentered(includeImageCheck); layout.AddCentered(selectFilesButton); layout.EndVertical(); layout.EndGroup(); layout.Add(dragMode); layout.AddSpace(); layout.EndCentered(); layout.EndScrollable(); layout.BeginVertical(xscale: true); layout.AddRange("Drag sources:", buttonSource, panelSource); layout.Add(treeSource, yscale: true); layout.Add(gridSource, yscale: true); layout.EndVertical(); layout.BeginVertical(xscale: true); layout.AddRange("Drag destinations:", buttonDestination, drawableDest); layout.Add(treeDest, yscale: true); layout.Add(gridDest, yscale: true); layout.EndVertical(); layout.EndHorizontal(); Content = layout; }
public Dialog_ProgramType(ref HB.ModelProperties libSource, HB.ProgramTypeAbridged programType, bool lockedMode = false) { try { libSource.FillNulls(); _vm = new ProgramTypeViewModel(this, ref libSource, programType); Title = $"Program Type - {DialogHelper.PluginName}"; WindowStyle = WindowStyle.Default; Width = 450; this.Icon = DialogHelper.HoneybeeIcon; //Generate ProgramType Panel var nameTbx = new TextBox(); nameTbx.TextBinding.Bind(_vm, c => c.Name); var loadGroup = GenLoadsPanel(lockedMode); var locked = new CheckBox() { Text = "Locked", Enabled = false }; locked.Checked = lockedMode; var OkButton = new Button { Text = "OK", Enabled = !lockedMode }; OkButton.Click += (sender, e) => { try { OkCommand.Execute(_vm.GetHBObject()); } catch (Exception er) { MessageBox.Show(er.Message); //throw; } }; AbortButton = new Button { Text = "Cancel" }; AbortButton.Click += (sender, e) => Close(); // Json Data var hbData = new Button { Text = "Schema Data" }; hbData.Command = _vm.HBDataBtnClick; //Create layout var layout = new DynamicLayout() { DefaultPadding = new Padding(5), DefaultSpacing = new Size(5, 5) }; layout.BeginScrollable(BorderType.None); layout.AddRow("Name"); layout.AddRow(nameTbx); layout.AddRow(loadGroup); layout.AddRow(null); layout.EndScrollable(); layout.AddSeparateRow(locked, null, OkButton, AbortButton, null, hbData); layout.Add(null); //Create layout Content = layout; } catch (Exception e) { //throw e; Dialog_Message.Show(e.ToString()); } }
public LevelPropertiesWindow(IEditor <CampaignFile> editor, CampaignLevel level) { this.editor = editor; Data = level.CloneObject() ?? new CampaignLevel() { Guid = Guid.NewGuid().ToString() }; Title = $"{(Equals(level, null) ? "Add" : "Edit")} level"; Size = MinimumSize = new Size(600, 400); Padding = new Padding(8); Resizable = true; Content = new StackLayout() { Style = "vertical", Spacing = 8, Items = { new StackLayoutItem(tabs = new ExtendedTabControl(), true), new StackLayoutItem(new StackLayout() { Style = "horizontal", Spacing = 8, Padding = new Padding(0, 8,0, 0), Items = { null, (DefaultButton = new Button(OnConfirm) { Text = "OK", Image = Resources.GetIcon("CheckGreen.ico", 16) }), (AbortButton = new Button(OnCancel) { Text = "Cancel", Image = Resources.GetIcon("CloseRed.ico", 16) }) } }, false) } }; #region General Tab tabs.AddPage("General", generalProperties = new DynamicLayout()); generalProperties.BeginScrollable(BorderType.None); generalProperties.BeginVertical(); generalProperties.AddRow("Unique ID", propLevelGuid = new GuidLabel()); generalProperties.AddRow("Level file", propLevelFile = new ResourceSelector(editor, ResourceType.Level)); generalProperties.AddRow("Level name", propLevelName = new TextBox()); generalProperties.EndVertical(); generalProperties.AddSpace(); generalProperties.EndScrollable(); #endregion //tabs.AddPage("Gameplay", gameplayProperties = new DynamicLayout()); #region Loading Screen Tab tabs.AddPage("Loading screen", loadingScreenProperties = new DynamicLayout()); loadingScreenProperties.BeginScrollable(BorderType.None); loadingScreenProperties.BeginVertical(); loadingScreenProperties.AddRow("Background image", propLoadingBackground = new ResourceSelector(editor, ResourceType.Texture)); loadingScreenProperties.AddRow(string.Empty, new StackLayout() { Style = "no-padding horizontal", Items = { (propLoadingBackgroundPreview = new StretchedImageBox() { Width =160, Height = 90 }), null } }); loadingScreenProperties.AddRow("Overwrite loading text", propLoadingOverwriteText = new BooleanSelector()); loadingScreenProperties.AddRow("Loading text", propLoadingText = new TextBox()); loadingScreenProperties.AddRow("Progress indicator icon", propLoadingBackgroundIcon = new ResourceSelector(editor, ResourceType.Texture)); loadingScreenProperties.AddRow(string.Empty, new StackLayout() { Style = "no-padding horizontal", Items = { (propLoadingBackgroundIconPreview = new StretchedImageBox() { Width =64, Height = 64 }), null } }); loadingScreenProperties.EndVertical(); loadingScreenProperties.AddSpace(); loadingScreenProperties.EndScrollable(); #endregion #region Intro Sequence Tab tabs.AddPage("Intro sequence", introSequenceProperties = new DynamicLayout()); introSequenceProperties.BeginScrollable(BorderType.None); introSequenceProperties.BeginVertical(); // Set whether or not to show the intro, the intro style and text values introSequenceProperties.AddRow("Intro type", propIntroType = new EnumDropDown <LevelTransitionType>()); introSequenceProperties.AddRow("First line", propIntroLine1 = new TextBox()); introSequenceProperties.AddRow("Second line", propIntroLine2 = new TextBox()); introSequenceProperties.EndVertical(); introSequenceProperties.AddSpace(); introSequenceProperties.EndScrollable(); #endregion #region Event Subscribing propLoadingOverwriteText.ValueChanged += OnOverwriteLoadingTextChanged; propIntroType.SelectedValueChanged += OnTransitionTypeChanged; propLoadingBackground.ResourceSelected += OnBackgroundSelected; propLoadingBackgroundIcon.ResourceSelected += OnLoadingIconSelected; #endregion LoadData(Data); }