void ClearControlSplitter(DragControl control) { if (_splitters.ContainsKey(control) && _splitters[control] != null) { _splitters[control].Parent.Controls.Remove(_splitters[control]); _splitters.Remove(control); } }
void PerformDragDrop(Point location) { DragControl parent = (DragControl)this.Parent; parent.DraggableLocation = location; // Synchronous drag operation. int index = this.Parent.GetHashCode(); //parent.Parent.Controls.IndexOf(parent); DoDragDrop(index, DragDropEffects.All); }
public void DockControl(DragControl dragControl, DockStyle dockPane) { if (_dragControls.Contains(dragControl) == false) { SystemMonitor.Warning("Miuse of method."); return; } ClearControlSplitter(dragControl); switch (dockPane) { case DockStyle.None: { // Floating. if (AllowFloating) { dragControl.Dock = DockStyle.None; dragControl.Parent = this; dragControl.BringToFront(); } else { AddControlToContainer(panelCenter, dragControl); } } break; case DockStyle.Bottom: AddControlToContainer(panelBottom, dragControl); break; case DockStyle.Fill: AddControlToContainer(panelCenter, dragControl); break; case DockStyle.Left: AddControlToContainer(panelLeft, dragControl); break; case DockStyle.Right: AddControlToContainer(panelRight, dragControl); break; case DockStyle.Top: AddControlToContainer(panelTop, dragControl); break; default: break; } UpdatePanels(); }
void dragStrip_DoubleClick(object sender, EventArgs e) { DragControl control = ((DragStripControl)sender).Parent as DragControl; if (control.Dock == DockStyle.Fill && AllowFloating) { DockControl(control, DockStyle.None); } else if (control.Dock == DockStyle.None) { DockControl(control, DockStyle.Fill); } }
/// <summary> /// /// </summary> void DoRemoveDragControl(DragControl control) { control.dragStrip.DoubleClick -= new EventHandler(dragStrip_DoubleClick); control.dragStrip.CloseEvent -= new DragStripControl.CloseDelegate(dragStrip_CloseEvent); control.dragStrip.DockPaneEvent -= new DragStripControl.DockDelegate(dragStrip_DockPaneEvent); control.DragContainer = null; ClearControlSplitter(control); control.Parent.Controls.Remove(control); _dragControls.Remove(control); }
/// <summary> /// Helper. /// </summary> void SetControlToDragControl(CommonBaseControl control, DragControl dragControl, Point location) { SystemMonitor.CheckError(dragControl.ControlContained == null, "Drag control already has a contained control."); dragControl.ControlContained = control; dragControl.Name = control.Name; dragControl.Location = location; dragControl.Image = GetControlImage(control); dragControl.dragStrip.DoubleClick += new EventHandler(dragStrip_DoubleClick); UpdateUI(); }
void SetControlSplitter(Control container, DragControl control) { if (control.Dock != DockStyle.Fill) { Splitter splitter = new SplitterEx(); splitter.Width = 6; splitter.Height = 6; splitter.Dock = GetContainerDefaultDockStyle(container); splitter.BackColor = SystemColors.Control; container.Controls.Add(splitter); _splitters[control] = splitter; } }
/// <summary> /// This is the way to remove a control. /// Removing from "Controls" will not do. /// </summary> public void RemoveDragControl(DragControl control) { if (_dragControls.Contains(control) == false) { return; } DoRemoveDragControl(control); UpdatePanels(); if (DragControlRemoved != null) { DragControlRemoved(this, control); } }
/// <summary> /// /// </summary> public void ChangeCheckedControl(CommonBaseControl control) { if (_checkedControl == control) { return; } if (_checkedControlContainer == null) {// Creating a new checked container. _checkedControlContainer = new DragControl(); _checkedControlContainer.ShowDragStrip = false; dragContainerControl.AddDragControl(_checkedControlContainer); dragContainerControl.DockControl(_checkedControlContainer, DockStyle.Fill); } if (control == null) { _checkedControlContainer.ControlContained = null; } else { _checkedControlContainer.ControlContained = control; _checkedControlContainer.Name = control.Name; } if (_checkedControl != null && _checkedControl.PersistenceData != null && control != null) { _checkedControl.PersistenceData.AddValue("combinedContainer.Checked", false); } _checkedControl = control; if (_checkedControl != null && _checkedControl.PersistenceData != null) { _checkedControl.PersistenceData.AddValue("combinedContainer.Checked", true); } if (SelectedTabbedControlChangedEvent != null) { SelectedTabbedControlChangedEvent(this, _checkedControl); } UpdateUI(); }
/// <summary> /// Add a floating control to the workspace area. /// location considered only for floating (dockStyle = none) /// </summary> public DragControl AddWorkspaceControl(CommonBaseControl control, DockStyle dockPane, Point location) { if (dragContainerControl.GetDragControlFromContainedControl(control) != null) { SystemMonitor.Warning("Misuse."); return(null); } DragControl dragControl = new DragControl(); SetControlToDragControl(control, dragControl, location); dragContainerControl.AddDragControl(dragControl); dragContainerControl.DockControl(dragControl, dockPane); UpdateUI(); return(dragControl); }
/// <summary> /// Restore state of controls. Controls are created and left invisible untill assigned. /// </summary> /// <param name="info"></param> public void RestoreState(SerializationInfoEx info) { // Clear off any existing drag control from any area. DockStyle[] values = (DockStyle[])Enum.GetValues(typeof(DockStyle)); foreach (DockStyle style in values) { foreach (DragControl control in GetAreaControls(style)) { RemoveDragControl(control); } } // Restore draggable controls. foreach (DockStyle style in values) { string fieldName = style.ToString() + "Infos"; if (info.ContainsValue(fieldName) == false) { continue; } List <SerializationInfoEx> infos = info.GetValue <List <SerializationInfoEx> >(fieldName); foreach (SerializationInfoEx controlInfo in infos) { DragControl control = new DragControl(); control.RestoreState(controlInfo); control.Visible = false; AddDragControl(control); if (style != DockStyle.None) { DockControl(control, style); } } } // Restore panes. RestorePanelState(info, panelTop); RestorePanelState(info, panelBottom); RestorePanelState(info, panelLeft); RestorePanelState(info, panelRight); RestorePanelState(info, panelCenter); }
/// <summary> /// Add a control to a given control containing pane. /// </summary> void AddControlToContainer(Control container, DragControl control) { if (container.Controls.Contains(control) == false) {// Not already added. DragControl currentFill = GetContainerFill(container); if (currentFill != null && currentFill != control) {// A fill already exists //if (addAsFill) //{// But we need to swap since the new one want to be fill now. // control.Dock = DockStyle.Fill; // // Remove now so we can add the new one properly. // container.Controls.Remove(currentFill); // WinFormsHelper.BeginManagedInvoke(this, delegate() // {// And this will be executed as soon as we finish the current operation trough the Invoke mechanism. // currentFill.Height = 100; // AddControlToContainer(container, currentFill, false); // }); //} //else //{ control.Dock = GetContainerDefaultDockStyle(container); //} } else { control.Dock = DockStyle.Fill; } } SetControlSplitter(container, control); container.Controls.Add(control); }
/// <summary> /// /// </summary> public void RestoreState(SerializationInfoEx info) { dragContainerControl.ClearControls(); dragContainerControl.RestoreState(info); //dragContainerControl.ClearControls(); if (info.ContainsValue("combinedContainerControl.ShowComponentsTitles")) { toolStripButtonTitlesText.Checked = info.GetBoolean("combinedContainerControl.ShowComponentsTitles"); } // Establish the CheckedControlContainer if (info.ContainsValue("combinedContainerControl.CheckedControlContainerGuid")) { Guid guid = info.GetValue <Guid>("combinedContainerControl.CheckedControlContainerGuid"); _checkedControlContainer = dragContainerControl.GetDragControlByGuid(guid); if (_checkedControlContainer != null) { _checkedControlContainer.ShowDragStrip = false; } } }
/// <summary> /// Restore state of controls. Controls are created and left invisible untill assigned. /// </summary> /// <param name="info"></param> public void RestoreState(SerializationInfoEx info) { // Clear off any existing drag control from any area. DockStyle[] values = (DockStyle[])Enum.GetValues(typeof(DockStyle)); foreach (DockStyle style in values) { foreach (DragControl control in GetAreaControls(style)) { RemoveDragControl(control); } } // Restore draggable controls. foreach (DockStyle style in values) { string fieldName = style.ToString() + "Infos"; if (info.ContainsValue(fieldName) == false) { continue; } List<SerializationInfoEx> infos = info.GetValue<List<SerializationInfoEx>>(fieldName); foreach (SerializationInfoEx controlInfo in infos) { DragControl control = new DragControl(); control.RestoreState(controlInfo); control.Visible = false; AddDragControl(control); if (style != DockStyle.None) { DockControl(control, style); } } } // Restore panes. RestorePanelState(info, panelTop); RestorePanelState(info, panelBottom); RestorePanelState(info, panelLeft); RestorePanelState(info, panelRight); RestorePanelState(info, panelCenter); }
private void dragContainerControl_DragControlRemoved(DragContainerControl container, DragControl dragControl) { if (dragControl.ControlContained == _checkedControl) { ChangeCheckedControl(null); return; } if (dragControl.ControlContained == null) { return; } DialogResult result = MessageBox.Show("Remove component?" + Environment.NewLine + "- Click [Yes] to Remove" + Environment.NewLine + "- Click [No] to Send to Tabbed", "Open Forex Platform", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) {// Remove. CommonBaseControl control = (CommonBaseControl)dragControl.ControlContained; dragControl.ControlContained = null; RemoveControl(control); } else if (result == DialogResult.No) {// Send to tabbed. DoRemoveControl((CommonBaseControl)dragControl.ControlContained); AddTabbedControl((CommonBaseControl)dragControl.ControlContained); } }
/// <summary> /// /// </summary> public void RestoreState(SerializationInfoEx info) { dragContainerControl.ClearControls(); dragContainerControl.RestoreState(info); //dragContainerControl.ClearControls(); if (info.ContainsValue("combinedContainerControl.ShowComponentsTitles")) { toolStripButtonTitlesText.Checked = info.GetBoolean("combinedContainerControl.ShowComponentsTitles"); } // Establish the CheckedControlContainer if (info.ContainsValue("combinedContainerControl.CheckedControlContainerGuid")) { Guid guid = info.GetValue<Guid>("combinedContainerControl.CheckedControlContainerGuid"); _checkedControlContainer = dragContainerControl.GetDragControlByGuid(guid); if (_checkedControlContainer != null) { _checkedControlContainer.ShowDragStrip = false; } } }
void dragStrip_CloseEvent(DragControl control) { RemoveDragControl(control); }
/// <summary> /// Adds a control to a drag pane. /// </summary> /// <param name="control"></param> void AddComponentControl(Control controlContained, string text) { DragControl control = new DragControl(); control.Text = text; control.ControlContained = controlContained; control.CreateControl(); this.dragContainerControl1.AddDragControl(control); }
void dragStrip_DockPaneEvent(DragControl control, DockStyle style) { DockControl(control, style); }
/// <summary> /// Add a floating control to the workspace area. /// location considered only for floating (dockStyle = none) /// </summary> public DragControl AddWorkspaceControl(CommonBaseControl control, DockStyle dockPane, Point location) { if (dragContainerControl.GetDragControlFromContainedControl(control) != null) { SystemMonitor.Warning("Misuse."); return null; } DragControl dragControl = new DragControl(); SetControlToDragControl(control, dragControl, location); dragContainerControl.AddDragControl(dragControl); dragContainerControl.DockControl(dragControl, dockPane); UpdateUI(); return dragControl; }
public void AddDragControl(DragControl control) { if (_dragControls.Contains(control)) { return; } if (Controls.Contains(control) == false) { Controls.Add(control); } // Default add floating. _dragControls.Add(control); control.DragContainer = this; control.dragStrip.DoubleClick += new EventHandler(dragStrip_DoubleClick); control.dragStrip.CloseEvent += new DragStripControl.CloseDelegate(dragStrip_CloseEvent); control.dragStrip.DockPaneEvent += new DragStripControl.DockDelegate(dragStrip_DockPaneEvent); control.BringToFront(); UpdatePanels(); if (DragControlAdded != null) { DragControlAdded(this, control); } }
public bool ControlIsDocked(DragControl control) { return(control.Dock != DockStyle.None); //(control.Parent != this); }
/// <summary> /// /// </summary> public void AddControl(CommonBaseControl control) { Point?location = null; Size? size = null; if (control.PersistenceData != null && control.PersistenceData.ContainsValue("combinedContainer.Size")) { size = control.PersistenceData.GetValue <Size>("combinedContainer.Size"); } if (control.PersistenceData != null && control.PersistenceData.ContainsValue("combinedContainer.Location")) { location = control.PersistenceData.GetValue <Point>("combinedContainer.Location"); } if (control.PersistenceData != null && control.PersistenceData.ContainsValue("combinedContainer.Floating")) { CombinedHostingForm form = SetControlFloating(control); if (location.HasValue) { form.Location = location.Value; } // Sometimes persistence may be wrong, so make sure to bring control to view when added. form.Left = Math.Max(form.Left, 0); form.Top = Math.Max(form.Top, 0); form.Left = Math.Min(Screen.PrimaryScreen.WorkingArea.Width, form.Left); form.Top = Math.Min(Screen.PrimaryScreen.WorkingArea.Height, form.Top); form.Width = Math.Max(form.Width, 200); form.Height = Math.Max(form.Height, 150); if (size.HasValue) { form.Size = size.Value; } } else if (control.PersistenceData != null && control.PersistenceData.ContainsValue("combinedContainer.Tabbed")) { AddTabbedControl(control); } else if (control.PersistenceData != null && control.PersistenceData.ContainsValue("combinedContainer.Docked") && control.PersistenceData.ContainsValue("combinedContainer.Guid")) { Guid guid = control.PersistenceData.GetValue <Guid>("combinedContainer.Guid"); DragControl dragControl = dragContainerControl.GetDragControlByGuid(guid); if (dragControl == null) { SystemMonitor.OperationError("Guid drag control not found. Using a default new one."); AddTabbedControl(control); } else {// Reuse the existing drag control and place the new control inside it. SetControlToDragControl(control, dragControl, Point.Empty); dragControl.Visible = true; } } else {// By default add tabbed. AddTabbedControl(control); } }
public void DockControl(DragControl dragControl, DockStyle dockPane) { if (_dragControls.Contains(dragControl) == false) { SystemMonitor.Warning("Miuse of method."); return; } ClearControlSplitter(dragControl); switch (dockPane) { case DockStyle.None: {// Floating. if (AllowFloating) { dragControl.Dock = DockStyle.None; dragControl.Parent = this; dragControl.BringToFront(); } else { AddControlToContainer(panelCenter, dragControl); } } break; case DockStyle.Bottom: AddControlToContainer(panelBottom, dragControl); break; case DockStyle.Fill: AddControlToContainer(panelCenter, dragControl); break; case DockStyle.Left: AddControlToContainer(panelLeft, dragControl); break; case DockStyle.Right: AddControlToContainer(panelRight, dragControl); break; case DockStyle.Top: AddControlToContainer(panelTop, dragControl); break; default: break; } UpdatePanels(); }
void dragContainerControl1_DragControlAdded(DragContainerControl container, DragControl control) { }
/// <summary> /// Destroy sessionInformation upon closing its UI component. /// </summary> void dragContainerControl1_DragControlRemoved(DragContainerControl container, DragControl control) { if (control.ControlContained is PlatformExpertSessionControl) { _expert.Manager.UnRegisterExpertSession(((PlatformExpertSessionControl)control.ControlContained).Session); } }
public bool ControlIsDocked(DragControl control) { return control.Dock != DockStyle.None; //(control.Parent != this); }