X-Git-Url: http://git.nikiroo.be/?p=jvcard.git;a=blobdiff_plain;f=src%2Fcom%2Fgooglecode%2Flanterna%2Fgui2%2FBasePane.java;fp=src%2Fcom%2Fgooglecode%2Flanterna%2Fgui2%2FBasePane.java;h=0000000000000000000000000000000000000000;hp=1f3c10e2c75f8179701993dd2b0ed59a69ae14eb;hb=f06c81000632cfb5f525ca458f719338f55f9f66;hpb=a73a906356c971b080c36368e71a15d87e8b8d31 diff --git a/src/com/googlecode/lanterna/gui2/BasePane.java b/src/com/googlecode/lanterna/gui2/BasePane.java deleted file mode 100644 index 1f3c10e..0000000 --- a/src/com/googlecode/lanterna/gui2/BasePane.java +++ /dev/null @@ -1,147 +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 . - * - * Copyright (C) 2010-2015 Martin - */ -package com.googlecode.lanterna.gui2; - -import com.googlecode.lanterna.TerminalPosition; -import com.googlecode.lanterna.input.KeyStroke; - -/** - * BasePane is the base container in a Text GUI. A text gui may have several base panes, although they are - * always independent. One common example of this is a multi-window system where each window is a base pane. Think of - * the base pane as a root container, the ultimate parent of all components added to a GUI. When you use - * {@code MultiWindowTextGUI}, the background space behind the windows is a {@code BasePane} too, just like each of the - * windows. They are all drawn separately and composited together. Every {@code BasePane} has a single component that - * is drawn over the entire area the {@code BasePane} is occupying, it's very likely you want to set this component to - * be a container of some sort, probably a {@code Panel}, that can host multiple child components. - * - * @see Panel - * @author Martin - */ -public interface BasePane extends Composite { - - /** - * Returns the TextGUI this BasePane belongs to or {@code null} if none. One example of when this method returns - * {@code null} is when calling it on a Window that hasn't been displayed yet. - * @return The TextGUI this BasePane belongs to - */ - TextGUI getTextGUI(); - - /** - * Called by the GUI system (or something imitating the GUI system) to draw the root container. The TextGUIGraphics - * object should be used to perform the drawing operations. - * @param graphics TextGraphics object to draw with - */ - void draw(TextGUIGraphics graphics); - - /** - * Checks if this root container (i.e. any of its child components) has signaled that what it's currently displaying - * is out of date and needs re-drawing. - * @return {@code true} if the container's content is invalid and needs redrawing, {@code false} otherwise - */ - boolean isInvalid(); - - /** - * Invalidates the whole root container (including all of its child components) which will cause them all to be - * recalculated (for containers) and redrawn. - */ - void invalidate(); - - /** - * Called by the GUI system to delegate a keyboard input event. The root container will decide what to do with this - * input, usually sending it to one of its sub-components, but if it isn't able to find any handler for this input - * it should return {@code false} so that the GUI system can take further decisions on what to do with it. - * @param key Keyboard input - * @return {@code true} If the root container could handle the input, false otherwise - */ - boolean handleInput(KeyStroke key); - - /** - * Returns the component that is the content of the BasePane. This is probably the root of a hierarchy of nested - * Panels but it could also be a single component. - * @return Component which is the content of this BasePane - */ - @Override - Component getComponent(); - - /** - * Sets the top-level component inside this BasePane. If you want it to contain only one component, you can set it - * directly, but for more complicated GUIs you probably want to create a hierarchy of panels and set the first one - * here. - * @param component Component which this BasePane is using as it's content - */ - @Override - void setComponent(Component component); - - /** - * Returns the component in the root container that currently has input focus. There can only be one component at a - * time being in focus. - * @return Interactable component that is currently in receiving input focus - */ - Interactable getFocusedInteractable(); - - /** - * Sets the component currently in focus within this root container, or sets no component in focus if {@code null} - * is passed in. - * @param interactable Interactable to focus, or {@code null} to clear focus - */ - void setFocusedInteractable(Interactable interactable); - - /** - * Returns the position of where to put the terminal cursor according to this root container. This is typically - * derived from which component has focus, or {@code null} if no component has focus or if the root container doesn't - * want the cursor to be visible. Note that the coordinates are in local coordinate space, relative to the top-left - * corner of the root container. You can use your TextGUI implementation to translate these to global coordinates. - * @return Local position of where to place the cursor, or {@code null} if the cursor shouldn't be visible - */ - TerminalPosition getCursorPosition(); - - /** - * Returns a position in a root container's local coordinate space to global coordinates - * @param localPosition The local position to translate - * @return The local position translated to global coordinates - */ - TerminalPosition toGlobal(TerminalPosition localPosition); - - /** - * Returns a position expressed in global coordinates, i.e. row and column offset from the top-left corner of the - * terminal into a position relative to the top-left corner of the base pane. Calling - * {@code fromGlobal(toGlobal(..))} should return the exact same position. - * @param position Position expressed in global coordinates to translate to local coordinates of this BasePane - * @return The global coordinates expressed as local coordinates - */ - TerminalPosition fromGlobal(TerminalPosition position); - - /** - * If set to true, up/down array keys will not translate to next/previous if there are no more components - * above/below. - * @param strictFocusChange Will not allow relaxed navigation if set to {@code true} - */ - void setStrictFocusChange(boolean strictFocusChange); - - /** - * If set to false, using the keyboard arrows keys will have the same effect as using the tab and reverse tab. - * Lanterna will map arrow down and arrow right to tab, going to the next component, and array up and array left to - * reverse tab, going to the previous component. If set to true, Lanterna will search for the next component - * starting at the cursor position in the general direction of the arrow. By default this is enabled. - *

- * In Lanterna 2, direction based movements were not available. - * @param enableDirectionBasedMovements Should direction based focus movements be enabled? - */ - void setEnableDirectionBasedMovements(boolean enableDirectionBasedMovements); -}