X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2FTWindow.java;h=10f4e59d5df5d946a5d7032475a590552bbdf7ac;hb=e16dda65585466c8987bd1efd718431450a96605;hp=0a74a40dcc830f8cf739c0ad0f56c9c7ea4f943a;hpb=92554d64c21c6a477fd23a06ca3a64a542b622a3;p=fanfix.git diff --git a/src/jexer/TWindow.java b/src/jexer/TWindow.java index 0a74a40..10f4e59 100644 --- a/src/jexer/TWindow.java +++ b/src/jexer/TWindow.java @@ -1,29 +1,27 @@ -/** +/* * Jexer - Java Text User Interface * - * License: LGPLv3 or later - * - * This module is licensed under the GNU Lesser General Public License - * Version 3. Please see the file "COPYING" in this directory for more - * information about the GNU Lesser General Public License Version 3. + * The MIT License (MIT) * - * Copyright (C) 2015 Kevin Lamonte + * Copyright (C) 2016 Kevin Lamonte * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 3 of - * the License, or (at your option) any later version. + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, see - * http://www.gnu.org/licenses/, or write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. * * @author Kevin Lamonte [kevin.lamonte@gmail.com] * @version 1 @@ -143,13 +141,13 @@ public class TWindow extends TWidget { * If true, then the user clicked on the title bar and is moving the * window. */ - private boolean inWindowMove = false; + protected boolean inWindowMove = false; /** * If true, then the user clicked on the bottom right corner and is * resizing the window. */ - private boolean inWindowResize = false; + protected boolean inWindowResize = false; /** * If true, then the user selected "Size/Move" (or hit Ctrl-F5) and is @@ -374,17 +372,17 @@ public class TWindow extends TWidget { if (!isModal() && (inWindowMove || inWindowResize || inKeyboardResize) ) { - assert (getActive()); + assert (isActive()); return getTheme().getColor("twindow.background.windowmove"); } else if (isModal() && inWindowMove) { - assert (getActive()); + assert (isActive()); return getTheme().getColor("twindow.background.modal"); } else if (isModal()) { - if (getActive()) { + if (isActive()) { return getTheme().getColor("twindow.background.modal"); } return getTheme().getColor("twindow.background.modal.inactive"); - } else if (getActive()) { + } else if (isActive()) { assert (!isModal()); return getTheme().getColor("twindow.background"); } else { @@ -398,22 +396,22 @@ public class TWindow extends TWidget { * * @return the border color */ - private CellAttributes getBorder() { + public CellAttributes getBorder() { if (!isModal() && (inWindowMove || inWindowResize || inKeyboardResize) ) { - assert (getActive()); + assert (isActive()); return getTheme().getColor("twindow.border.windowmove"); } else if (isModal() && inWindowMove) { - assert (getActive()); + assert (isActive()); return getTheme().getColor("twindow.border.modal.windowmove"); } else if (isModal()) { - if (getActive()) { + if (isActive()) { return getTheme().getColor("twindow.border.modal"); } else { return getTheme().getColor("twindow.border.modal.inactive"); } - } else if (getActive()) { + } else if (isActive()) { assert (!isModal()); return getTheme().getColor("twindow.border"); } else { @@ -431,18 +429,18 @@ public class TWindow extends TWidget { if (!isModal() && (inWindowMove || inWindowResize || inKeyboardResize) ) { - assert (getActive()); + assert (isActive()); return 1; } else if (isModal() && inWindowMove) { - assert (getActive()); + assert (isActive()); return 1; } else if (isModal()) { - if (getActive()) { + if (isActive()) { return 2; } else { return 1; } - } else if (getActive()) { + } else if (isActive()) { return 2; } else { return 1; @@ -457,6 +455,22 @@ public class TWindow extends TWidget { // Default: do nothing } + /** + * Called by application.switchWindow() when this window gets the + * focus, and also by application.addWindow(). + */ + public void onFocus() { + // Default: do nothing + } + + /** + * Called by application.switchWindow() when another window gets the + * focus. + */ + public void onUnfocus() { + // Default: do nothing + } + /** * Called by TApplication.drawChildren() to render on screen. */ @@ -473,15 +487,15 @@ public class TWindow extends TWidget { // Draw the title int titleLeft = (getWidth() - title.length() - 2) / 2; putCharXY(titleLeft, 0, ' ', border); - putStrXY(titleLeft + 1, 0, title); + putStringXY(titleLeft + 1, 0, title); putCharXY(titleLeft + title.length() + 1, 0, ' ', border); - if (getActive()) { + if (isActive()) { // Draw the close button putCharXY(2, 0, '[', border); putCharXY(4, 0, ']', border); - if (mouseOnClose() && mouse.getMouse1()) { + if (mouseOnClose() && mouse.isMouse1()) { putCharXY(3, 0, GraphicsChars.CP437[0x0F], !isModal() ? getTheme().getColor("twindow.border.windowmove") @@ -498,7 +512,7 @@ public class TWindow extends TWidget { putCharXY(getWidth() - 5, 0, '[', border); putCharXY(getWidth() - 3, 0, ']', border); - if (mouseOnMaximize() && mouse.getMouse1()) { + if (mouseOnMaximize() && mouse.isMouse1()) { putCharXY(getWidth() - 4, 0, GraphicsChars.CP437[0x0F], getTheme().getColor("twindow.border.windowmove")); } else { @@ -536,7 +550,7 @@ public class TWindow extends TWidget { inKeyboardResize = false; if ((mouse.getAbsoluteY() == getY()) - && mouse.getMouse1() + && mouse.isMouse1() && (getX() <= mouse.getAbsoluteX()) && (mouse.getAbsoluteX() < getX() + getWidth()) && !mouseOnClose() @@ -605,26 +619,26 @@ public class TWindow extends TWidget { public void onMouseUp(final TMouseEvent mouse) { this.mouse = mouse; - if ((inWindowMove) && (mouse.getMouse1())) { + if ((inWindowMove) && (mouse.isMouse1())) { // Stop moving window inWindowMove = false; return; } - if ((inWindowResize) && (mouse.getMouse1())) { + if ((inWindowResize) && (mouse.isMouse1())) { // Stop resizing window inWindowResize = false; return; } - if (mouse.getMouse1() && mouseOnClose()) { + if (mouse.isMouse1() && mouseOnClose()) { // Close window application.closeWindow(this); return; } if ((mouse.getAbsoluteY() == getY()) - && mouse.getMouse1() + && mouse.isMouse1() && mouseOnMaximize()) { if (maximized) { // Restore @@ -776,6 +790,10 @@ public class TWindow extends TWidget { } } + // Pass a resize event to my children + onResize(new TResizeEvent(TResizeEvent.Type.WIDGET, + getWidth(), getHeight())); + return; } @@ -999,10 +1017,10 @@ public class TWindow extends TWidget { * @param str string to draw * @param attr attributes to use (bold, foreColor, backColor) */ - public final void putStrXY(final int x, final int y, final String str, + public final void putStringXY(final int x, final int y, final String str, final CellAttributes attr) { - getScreen().putStrXY(x, y, str, attr); + getScreen().putStringXY(x, y, str, attr); } /** @@ -1013,8 +1031,8 @@ public class TWindow extends TWidget { * @param y row coordinate. 0 is the top-most row. * @param str string to draw */ - public final void putStrXY(final int x, final int y, final String str) { - getScreen().putStrXY(x, y, str); + public final void putStringXY(final int x, final int y, final String str) { + getScreen().putStringXY(x, y, str); } /**