Version 2.0.0: update sources
[jvcard.git] / src / com / googlecode / lanterna / gui2 / AbstractWindow.java
diff --git a/src/com/googlecode/lanterna/gui2/AbstractWindow.java b/src/com/googlecode/lanterna/gui2/AbstractWindow.java
deleted file mode 100644 (file)
index 4e55f3d..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * This file is part of lanterna (http://code.google.com/p/lanterna/).
- * 
- * lanterna 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.
- *
- * 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 Lesser General Public License for more details.
- *
- * 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/>.
- * 
- * Copyright (C) 2010-2015 Martin
- */
-package com.googlecode.lanterna.gui2;
-
-import com.googlecode.lanterna.TerminalPosition;
-import com.googlecode.lanterna.input.KeyStroke;
-import com.googlecode.lanterna.TerminalSize;
-import com.googlecode.lanterna.input.KeyType;
-
-import java.util.*;
-
-/**
- * Abstract Window has most of the code requiring for a window to function, all concrete window implementations extends
- * from this in one way or another. You can define your own window by extending from this, as an alternative to building
- * up the GUI externally by constructing a {@code BasicWindow} and adding components to it.
- * @author Martin
- */
-public abstract class AbstractWindow extends AbstractBasePane implements Window {
-    private String title;
-    private WindowBasedTextGUI textGUI;
-    private boolean visible;
-    private TerminalSize lastKnownSize;
-    private TerminalSize lastKnownDecoratedSize;
-    private TerminalPosition lastKnownPosition;
-    private TerminalPosition contentOffset;
-    private Set<Hint> hints;
-    private boolean closeWindowWithEscape;
-
-    /**
-     * Default constructor, this creates a window with no title
-     */
-    public AbstractWindow() {
-        this("");
-    }
-
-    /**
-     * Creates a window with a specific title that will (probably) be drawn in the window decorations
-     * @param title Title of this window
-     */
-    public AbstractWindow(String title) {
-        super();
-        this.title = title;
-        this.textGUI = null;
-        this.visible = true;
-        this.lastKnownPosition = null;
-        this.lastKnownSize = null;
-        this.lastKnownDecoratedSize = null;
-        this.closeWindowWithEscape = false;
-
-        this.hints = new HashSet<Hint>();
-    }
-
-    /**
-     * Setting this property to {@code true} will cause pressing the ESC key to close the window. This used to be the
-     * default behaviour of lanterna 3 during the development cycle but is not longer the case. You are encouraged to
-     * put proper buttons or other kind of components to clearly mark to the user how to close the window instead of
-     * magically taking ESC, but sometimes it can be useful (when doing testing, for example) to enable this mode.
-     * @param closeWindowWithEscape If {@code true}, this window will self-close if you press ESC key
-     */
-    public void setCloseWindowWithEscape(boolean closeWindowWithEscape) {
-        this.closeWindowWithEscape = closeWindowWithEscape;
-    }
-
-    @Override
-    public void setTextGUI(WindowBasedTextGUI textGUI) {
-        //This is kind of stupid check, but might cause it to blow up on people using the library incorrectly instead of
-        //just causing weird behaviour
-        if(this.textGUI != null && textGUI != null) {
-            throw new UnsupportedOperationException("Are you calling setTextGUI yourself? Please read the documentation"
-                    + " in that case (this could also be a bug in Lanterna, please report it if you are sure you are "
-                    + "not calling Window.setTextGUI(..) from your code)");
-        }
-        this.textGUI = textGUI;
-    }
-
-    @Override
-    public WindowBasedTextGUI getTextGUI() {
-        return textGUI;
-    }
-
-    /**
-     * Alters the title of the window to the supplied string
-     * @param title New title of the window
-     */
-    public void setTitle(String title) {
-        this.title = title;
-        invalidate();
-    }
-
-    @Override
-    public String getTitle() {
-        return title;
-    }
-
-    @Override
-    public boolean isVisible() {
-        return visible;
-    }
-
-    @Override
-    public void setVisible(boolean visible) {
-        this.visible = visible;
-    }
-    @Override
-    public void draw(TextGUIGraphics graphics) {
-        if(!graphics.getSize().equals(lastKnownSize)) {
-            getComponent().invalidate();
-        }
-        setSize(graphics.getSize(), false);
-        super.draw(graphics);
-    }
-
-    @Override
-    public boolean handleInput(KeyStroke key) {
-        boolean handled = super.handleInput(key);
-        if(!handled && closeWindowWithEscape && key.getKeyType() == KeyType.Escape) {
-            close();
-            return true;
-        }
-        return handled;
-    }
-
-    @Override
-    public TerminalPosition toGlobal(TerminalPosition localPosition) {
-        if(localPosition == null) {
-            return null;
-        }
-        return lastKnownPosition.withRelative(contentOffset.withRelative(localPosition));
-    }
-
-    @Override
-    public TerminalPosition fromGlobal(TerminalPosition globalPosition) {
-        if(globalPosition == null) {
-            return null;
-        }
-        return globalPosition.withRelative(
-                -lastKnownPosition.getColumn() - contentOffset.getColumn(),
-                -lastKnownPosition.getRow() - contentOffset.getRow());
-    }
-
-    @Override
-    public TerminalSize getPreferredSize() {
-        return contentHolder.getPreferredSize();
-    }
-
-    @Override
-    public void setHints(Collection<Hint> hints) {
-        this.hints = new HashSet<Hint>(hints);
-        invalidate();
-    }
-
-    @Override
-    public Set<Hint> getHints() {
-        return Collections.unmodifiableSet(hints);
-    }
-
-    @Override
-    public final TerminalPosition getPosition() {
-        return lastKnownPosition;
-    }
-
-    @Override
-    public final void setPosition(TerminalPosition topLeft) {
-        this.lastKnownPosition = topLeft;
-    }
-
-    @Override
-    public final TerminalSize getSize() {
-        return lastKnownSize;
-    }
-
-    @Override
-    public void setSize(TerminalSize size) {
-        setSize(size, true);
-    }
-
-    private void setSize(TerminalSize size, boolean invalidate) {
-        this.lastKnownSize = size;
-        if(invalidate) {
-            invalidate();
-        }
-    }
-
-    @Override
-    public final TerminalSize getDecoratedSize() {
-        return lastKnownDecoratedSize;
-    }
-
-    @Override
-    public final void setDecoratedSize(TerminalSize decoratedSize) {
-        this.lastKnownDecoratedSize = decoratedSize;
-    }
-
-    @Override
-    public void setContentOffset(TerminalPosition offset) {
-        this.contentOffset = offset;
-    }
-
-    @Override
-    public void close() {
-        if(textGUI != null) {
-            textGUI.removeWindow(this);
-        }
-        setComponent(null);
-    }
-
-    @Override
-    public void waitUntilClosed() {
-        WindowBasedTextGUI textGUI = getTextGUI();
-        if(textGUI != null) {
-            textGUI.waitForWindowToClose(this);
-        }
-    }
-}