| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- /*******************************************************************************
- * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
- * 类的信息:
- * 1.程序名称:DockOutlineBase.cs
- * 2.功能描述:类文件
- * 编辑履历:
- * 作者 日期 版本 修改内容
- * 陈晓野 2014/09/01 1.00 新建
- *******************************************************************************/
- using System.Drawing;
- using System.Windows.Forms;
- namespace Dongke.IBOSS.PRD.Basics.DockPanel
- {
- /// <summary>
- /// 类文件
- /// </summary>
- internal abstract class DockOutlineBase
- {
- public DockOutlineBase()
- {
- Init();
- }
- private void Init()
- {
- SetValues(Rectangle.Empty, null, DockStyle.None, -1);
- SaveOldValues();
- }
- private Rectangle m_oldFloatWindowBounds;
- protected Rectangle OldFloatWindowBounds
- {
- get { return m_oldFloatWindowBounds; }
- }
- private Control m_oldDockTo;
- protected Control OldDockTo
- {
- get { return m_oldDockTo; }
- }
- private DockStyle m_oldDock;
- protected DockStyle OldDock
- {
- get { return m_oldDock; }
- }
- private int m_oldContentIndex;
- protected int OldContentIndex
- {
- get { return m_oldContentIndex; }
- }
- protected bool SameAsOldValue
- {
- get
- {
- return FloatWindowBounds == OldFloatWindowBounds &&
- DockTo == OldDockTo &&
- Dock == OldDock &&
- ContentIndex == OldContentIndex;
- }
- }
- private Rectangle m_floatWindowBounds;
- public Rectangle FloatWindowBounds
- {
- get { return m_floatWindowBounds; }
- }
- private Control m_dockTo;
- public Control DockTo
- {
- get { return m_dockTo; }
- }
- private DockStyle m_dock;
- public DockStyle Dock
- {
- get { return m_dock; }
- }
- private int m_contentIndex;
- public int ContentIndex
- {
- get { return m_contentIndex; }
- }
- public bool FlagFullEdge
- {
- get { return m_contentIndex != 0; }
- }
- private bool m_flagTestDrop = false;
- public bool FlagTestDrop
- {
- get { return m_flagTestDrop; }
- set { m_flagTestDrop = value; }
- }
- private void SaveOldValues()
- {
- m_oldDockTo = m_dockTo;
- m_oldDock = m_dock;
- m_oldContentIndex = m_contentIndex;
- m_oldFloatWindowBounds = m_floatWindowBounds;
- }
- protected abstract void OnShow();
- protected abstract void OnClose();
- private void SetValues(Rectangle floatWindowBounds, Control dockTo, DockStyle dock, int contentIndex)
- {
- m_floatWindowBounds = floatWindowBounds;
- m_dockTo = dockTo;
- m_dock = dock;
- m_contentIndex = contentIndex;
- FlagTestDrop = true;
- }
- private void TestChange()
- {
- if (m_floatWindowBounds != m_oldFloatWindowBounds ||
- m_dockTo != m_oldDockTo ||
- m_dock != m_oldDock ||
- m_contentIndex != m_oldContentIndex)
- OnShow();
- }
- public void Show()
- {
- SaveOldValues();
- SetValues(Rectangle.Empty, null, DockStyle.None, -1);
- TestChange();
- }
- public void Show(DockPane pane, DockStyle dock)
- {
- SaveOldValues();
- SetValues(Rectangle.Empty, pane, dock, -1);
- TestChange();
- }
- public void Show(DockPane pane, int contentIndex)
- {
- SaveOldValues();
- SetValues(Rectangle.Empty, pane, DockStyle.Fill, contentIndex);
- TestChange();
- }
- public void Show(DockPanel dockPanel, DockStyle dock, bool fullPanelEdge)
- {
- SaveOldValues();
- SetValues(Rectangle.Empty, dockPanel, dock, fullPanelEdge ? -1 : 0);
- TestChange();
- }
- public void Show(Rectangle floatWindowBounds)
- {
- SaveOldValues();
- SetValues(floatWindowBounds, null, DockStyle.None, -1);
- TestChange();
- }
- public void Close()
- {
- OnClose();
- }
- }
- }
|