Beispiel #1
0
 void ClearControlSplitter(DragControl control)
 {
     if (_splitters.ContainsKey(control) && _splitters[control] != null)
     {
         _splitters[control].Parent.Controls.Remove(_splitters[control]);
         _splitters.Remove(control);
     }
 }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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();
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
        /// <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();
        }
Beispiel #7
0
        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;
            }
        }
Beispiel #8
0
        /// <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);
        }
Beispiel #11
0
        /// <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);
        }
Beispiel #12
0
        /// <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;
                }
            }
        }
        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>
        /// 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>
        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>
        /// 
        /// </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 ClearControlSplitter(DragControl control)
 {
     if (_splitters.ContainsKey(control) && _splitters[control] != null)
     {
         _splitters[control].Parent.Controls.Remove(_splitters[control]);
         _splitters.Remove(control);
     }
 }
 void dragStrip_CloseEvent(DragControl control)
 {
     RemoveDragControl(control);
 }
Beispiel #21
0
 void dragStrip_CloseEvent(DragControl control)
 {
     RemoveDragControl(control);
 }
        /// <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>
 /// 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);
 }
        /// <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();
        }
        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);
            }
        }
Beispiel #26
0
 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;
        }
 void dragStrip_DockPaneEvent(DragControl control, DockStyle style)
 {
     DockControl(control, style);
 }
        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);
            }
        }
Beispiel #30
0
 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();
        }
        /// <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();
        }
 void dragContainerControl1_DragControlAdded(DragContainerControl container, DragControl control)
 {
 }
        /// <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>
 /// 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);
 }