private void ToolBarDoubleClick(object sender, System.EventArgs e) { ToolBarDockHolder holder = (ToolBarDockHolder)sender; if (IsDocked(holder)) { ToolBarDockArea docked = GetDockedArea(holder); docked.SuspendLayout(); holder.Parent = holder.FloatForm; holder.Location = new Point(0, 0); holder.DockStyle = DockStyle.None; holder.FloatForm.Visible = true; holder.FloatForm.Size = holder.Size; docked.ResumeLayout(); docked.PerformLayout(); } else { ToolBarDockArea area = holder.PreferredDockedArea; area.SuspendLayout(); Point newLoc = holder.PreferredDockedLocation; holder.DockStyle = area.Dock; holder.Parent = area; holder.PreferredDockedLocation = newLoc; holder.FloatForm.Visible = false; holder.PreferredDockedArea = area; area.ResumeLayout(); area.PerformLayout(); } }
private bool IsDocked(ToolBarDockHolder holder) { return(holder.Parent == Top || holder.Parent == Left || holder.Parent == Right || holder.Parent == Bottom); }
public ToolBarDockHolder AddControl(Control c, DockStyle site, Control refControl, DockStyle refSite) { if (site == DockStyle.Fill) { site = DockStyle.Top; } ToolBarDockHolder holder = new ToolBarDockHolder(this, c, site); if (refControl != null) { ToolBarDockHolder refHolder = GetHolder(refControl); if (refHolder != null) { Point p = refHolder.PreferredDockedLocation; if (refSite == DockStyle.Left) { p.X -= 1; } else if (refSite == DockStyle.Right) { p.X += refHolder.Width + 1; } else if (refSite == DockStyle.Bottom) { p.Y += refHolder.Height + 1; } else { p.Y -= 1; } holder.PreferredDockedLocation = p; } } holders.Add(holder); if (site != DockStyle.None) { holder.DockStyle = site; holder.Parent = holder.PreferredDockedArea; } else { holder.Parent = holder.FloatForm; holder.Location = new Point(0, 0); holder.DockStyle = DockStyle.None; holder.FloatForm.Size = holder.Size; holder.FloatForm.Visible = true; } holder.MouseUp += new MouseEventHandler(ToolBarMouseUp); holder.DoubleClick += new EventHandler(ToolBarDoubleClick); holder.MouseMove += new MouseEventHandler(ToolBarMouseMove); holder.MouseDown += new MouseEventHandler(ToolBarMouseDown); return(holder); }
private void ToolBarMouseUp(object sender, MouseEventArgs e) { if (dragged != null) { dragged = null; ptOffset.X = 8; ptOffset.Y = 8; } }
private void ToolBarMouseDown(object sender, MouseEventArgs e) { ToolBarDockHolder holder = (ToolBarDockHolder)sender; if (dragged == null && e.Button.Equals(MouseButtons.Left) && e.Clicks == 1 && holder.CanDrag(new Point(e.X, e.Y))) { ptStart = Control.MousePosition; dragged = (ToolBarDockHolder)sender; ptOffset = new Point(e.X, e.Y); } }
public void RemoveControl(Control c) { ToolBarDockHolder holder = GetHolder(c); if (holder != null) { holder.MouseUp -= new MouseEventHandler(this.ToolBarMouseUp); holder.DoubleClick -= new EventHandler(this.ToolBarDoubleClick); holder.MouseMove -= new MouseEventHandler(this.ToolBarMouseMove); holder.MouseDown -= new MouseEventHandler(this.ToolBarMouseDown); holders.Remove(holder); holder.Parent = null; holder.FloatForm.Close(); } }
protected int GetPreferredLine(int lineSz, ToolBarDockHolder holder) { int pos, sz; if (Horizontal) { pos = holder.PreferredDockedLocation.Y; sz = holder.Size.Height; if (pos < 0) { return(Int32.MinValue); } if (pos > this.Height) { return(Int32.MaxValue); } } else { pos = holder.PreferredDockedLocation.X; sz = holder.Size.Width; if (pos < 0) { return(Int32.MinValue); } if (pos > this.Width) { return(Int32.MaxValue); } } int line = pos / lineSz; int posLine = line * lineSz; if (posLine + 3 > pos) { return(line * 2); } if (posLine + lineSz - 3 < pos) { return(line * 2 + 2); } return(line * 2 + 1); }
public void ShowControl(Control c, bool show) { ToolBarDockHolder holder = GetHolder(c); if (holder != null) { if (holder.Visible != show) { if (IsDocked(holder)) { holder.Visible = show; } else { holder.FloatForm.Visible = show; } } } }
private ToolBarDockArea GetDockedArea(ToolBarDockHolder holder) { if (holder.Parent == Top) { return(Top); } if (holder.Parent == Left) { return(Left); } if (holder.Parent == Right) { return(Right); } if (holder.Parent == Bottom) { return(Bottom); } return(null); }
public ColumnHolder(int pos, ToolBarDockHolder holder, int size) { Position = pos; Holder = holder; Size = size; }
protected int GetHolderWidth(ToolBarDockHolder holder) { return(Horizontal ? holder.Width : holder.Height); }
protected int GetHolderLineSize(ToolBarDockHolder holder) { return(Horizontal ? holder.Height : holder.Width); }
protected int GetPreferredPosition(ToolBarDockHolder holder) { return(Horizontal ? holder.PreferredDockedLocation.X : holder.PreferredDockedLocation.Y); }