Ejemplo n.º 1
0
        /// <summary>
        /// Window をアクティブにします。
        /// Activatable = false あるいは Visible = false の Window はアクティブにできません。
        /// </summary>
        /// <param name="window">アクティブにする Window。</param>
        internal void ActivateWindow(Window window)
        {
            if (window == null) throw new ArgumentNullException("window");
            EnsureWindow(window);

            // アクティブにできない Window は無視します。
            if (!window.Activatable || !window.Visible) return;

            // 既にアクティブな場合には処理を終えます。
            if (window.Active) return;

            // アクティブな Window を非アクティブ化します。
            var activeWindow = GetActiveWindow();
            if (activeWindow != null) activeWindow.Active = false;

            // 通常 Window ならば最前面へ移動させます。
            if (!(window is Desktop))
            {
                Windows.Remove(window);
                Windows.Add(window);
            }

            window.Active = true;

            // 論理フォーカスにフォーカスを設定します。
            Screen.FocusedControl = window.FocusScope.FocusedControl;
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 指定の Window を表示します。
 /// </summary>
 /// <param name="window">表示する Window。</param>
 internal void ShowWindow(Window window)
 {
     root.ShowWindow(window);
 }
Ejemplo n.º 3
0
 /// <summary>
 /// 指定の Window を非表示にします。
 /// </summary>
 /// <param name="window">非表示にする Window。</param>
 internal void HideWindow(Window window)
 {
     root.HideWindow(window);
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 指定の Window を閉じます。
 /// </summary>
 /// <remarks>
 /// Desktop を指定した場合には例外が発生します (Desktop を閉じることはできません)。
 /// </remarks>
 /// <param name="window">閉じる Window。</param>
 internal void CloseWindow(Window window)
 {
     root.CloseWindow(window);
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Window をアクティブ化します。
 /// Window の Visible プロパティが true に設定されます。
 /// </summary>
 /// <param name="window">アクティブ化する Window。</param>
 internal void ActivateWindow(Window window)
 {
     root.ActivateWindow(window);
 }
Ejemplo n.º 6
0
 /// <summary>
 /// 指定の Window が追加済みではない場合に例外を発生させます。
 /// </summary>
 /// <param name="window">Window。</param>
 void EnsureWindow(Window window)
 {
     if (Desktop != window && !Windows.Contains(window))
         throw new InvalidOperationException(
             "The specified window could not be found in this screen.");
 }
Ejemplo n.º 7
0
        /// <summary>
        /// 指定の Window を表示します。
        /// </summary>
        /// <param name="window">表示する Window。</param>
        internal void ShowWindow(Window window)
        {
            if (window == null) throw new ArgumentNullException("window");

            // 未登録ならば追加します。
            if (!(window is Desktop) && !Windows.Contains(window)) Windows.Add(window);

            window.Visible = true;

            // アクティブにします。
            if (window.Activatable) ActivateWindow(window);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 指定の Window を非表示にします。
        /// </summary>
        /// <param name="window">非表示にする Window。</param>
        internal void HideWindow(Window window)
        {
            if (window == null) throw new ArgumentNullException("window");
            EnsureWindow(window);

            window.Visible = false;

            // 最前面の Window をアクティブ化します。
            ActivateTopMostWindow();
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 指定の Window を閉じます。
        /// </summary>
        /// <remarks>
        /// Desktop を指定した場合には例外が発生します (Desktop を閉じることはできません)。
        /// </remarks>
        /// <param name="window">閉じる Window。</param>
        internal void CloseWindow(Window window)
        {
            if (window == null) throw new ArgumentNullException("window");
            EnsureWindow(window);

            if (window is Desktop)
                throw new InvalidOperationException("Desktop can never be closed.");

            // 非表示にしてから削除します。
            HideWindow(window);
            Windows.Remove(window);
        }