Expose width/height in TApplication constructor, attempt on ECMA48
[fanfix.git] / src / jexer / TWindow.java
index 962130560af8c7ed9cd3f9367db389c7b7bbc9a4..19c96fd141d2550209a9ca8fb14ae53bcbfbc378 100644 (file)
@@ -73,6 +73,11 @@ public class TWindow extends TWidget {
      */
     public static final int NOCLOSEBOX  = 0x08;
 
+    /**
+     * Window has no maximize box (default no).
+     */
+    public static final int NOZOOMBOX   = 0x10;
+
     // ------------------------------------------------------------------------
     // Common window attributes -----------------------------------------------
     // ------------------------------------------------------------------------
@@ -547,6 +552,27 @@ public class TWindow extends TWidget {
     // General behavior -------------------------------------------------------
     // ------------------------------------------------------------------------
 
+    /**
+     * See if this window is undergoing any movement/resize/etc.
+     *
+     * @return true if the window is moving
+     */
+    public boolean inMovements() {
+        if (inWindowResize || inWindowMove || inKeyboardResize) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Stop any pending movement/resize/etc.
+     */
+    public void stopMovements() {
+        inWindowResize = false;
+        inWindowMove = false;
+        inKeyboardResize = false;
+    }
+
     /**
      * Returns true if this window is modal.
      *
@@ -571,12 +597,24 @@ public class TWindow extends TWidget {
         return false;
     }
 
+    /**
+     * Returns true if this window has a maximize/zoom box.
+     *
+     * @return true if this window has a maximize/zoom box
+     */
+    public final boolean hasZoomBox() {
+        if ((flags & NOZOOMBOX) != 0) {
+            return true;
+        }
+        return false;
+    }
+
     /**
      * Retrieve the background color.
      *
      * @return the background color
      */
-    public final CellAttributes getBackground() {
+    public CellAttributes getBackground() {
         if (!isModal()
             && (inWindowMove || inWindowResize || inKeyboardResize)
         ) {
@@ -694,7 +732,7 @@ public class TWindow extends TWidget {
             }
 
             // Draw the maximize button
-            if (!isModal()) {
+            if (!isModal() && ((flags & NOZOOMBOX) == 0)) {
 
                 putCharXY(getWidth() - 5, 0, '[', border);
                 putCharXY(getWidth() - 3, 0, ']', border);
@@ -752,6 +790,9 @@ public class TWindow extends TWidget {
      * @return true if the mouse is currently on the maximize/restore button
      */
     protected boolean mouseOnMaximize() {
+        if ((flags & NOZOOMBOX) != 0) {
+            return false;
+        }
         if ((mouse != null)
             && !isModal()
             && (mouse.getAbsoluteY() == getY())
@@ -1124,7 +1165,7 @@ public class TWindow extends TWidget {
             }
 
             // F5 - zoom
-            if (keypress.equals(kbF5)) {
+            if (keypress.equals(kbF5) && ((flags & NOZOOMBOX) == 0)) {
                 if (maximized) {
                     restore();
                 } else {
@@ -1179,7 +1220,7 @@ public class TWindow extends TWidget {
                 return;
             }
 
-            if (command.equals(cmWindowZoom)) {
+            if (command.equals(cmWindowZoom) && ((flags & NOZOOMBOX) == 0)) {
                 if (maximized) {
                     restore();
                 } else {
@@ -1225,7 +1266,9 @@ public class TWindow extends TWidget {
                 return;
             }
 
-            if (menu.getId() == TMenu.MID_WINDOW_ZOOM) {
+            if ((menu.getId() == TMenu.MID_WINDOW_ZOOM)
+                && ((flags & NOZOOMBOX) == 0)
+            ) {
                 if (maximized) {
                     restore();
                 } else {
@@ -1384,5 +1427,4 @@ public class TWindow extends TWidget {
         getScreen().hLineXY(x, y, n, ch, attr);
     }
 
-
 }