private void InternalConstruct(IDockContent content, DockState dockState, bool flagBounds, Rectangle floatWindowBounds, DockPane prevPane, DockAlignment alignment, double proportion, bool show)
{
if (dockState == DockState.Hidden || dockState == DockState.Unknown)
throw new ArgumentException(Strings.DockPane_SetDockState_InvalidState);
if (content == null)
throw new ArgumentNullException(Strings.DockPane_Constructor_NullContent);
if (content.DockHandler.DockPanel == null)
throw new ArgumentException(Strings.DockPane_Constructor_NullDockPanel);
SuspendLayout();
SetStyle(ControlStyles.Selectable, false);
this.m_isFloat = (dockState == DockState.Float);
this.m_contents = new DockContentCollection();
this.m_displayingContents = new DockContentCollection(this);
this.m_dockPanel = content.DockHandler.DockPanel;
this.m_dockPanel.AddPane(this);
this.m_splitter = new SplitterControl(this);
this.m_nestedDockingStatus = new NestedDockingStatus(this);
this.m_captionControl = this.DockPanel.DockPaneCaptionFactory.CreateDockPaneCaption(this);
this.m_tabStripControl = this.DockPanel.DockPaneStripFactory.CreateDockPaneStrip(this);
Controls.AddRange(new Control[] { this.m_captionControl, this.m_tabStripControl });
this.DockPanel.SuspendLayout(true);
if (flagBounds)
this.FloatWindow = this.DockPanel.FloatWindowFactory.CreateFloatWindow(this.DockPanel, this, floatWindowBounds);
else if (prevPane != null)
this.DockTo(prevPane.NestedPanesContainer, prevPane, alignment, proportion);
this.SetDockState(dockState);
if (show)
{
content.DockHandler.Pane = this;
if (this.IsFloat)
{
Size size = (content as DockContent).DefaultFloatSize;
int x = (Screen.PrimaryScreen.Bounds.Width - size.Width) / 2;
int y = (Screen.PrimaryScreen.Bounds.Height - size.Height) / 2;
this.FloatWindow.Bounds = new Rectangle(new Point(x, y), size);
}
}
else if (this.IsFloat)
content.DockHandler.FloatPane = this;
else
content.DockHandler.PanelPane = this;
ResumeLayout();
this.DockPanel.ResumeLayout(true, true);
}