/*
 * 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-2020 Martin Berglund
 */
package com.googlecode.lanterna.gui2;

import com.googlecode.lanterna.input.KeyStroke;

import java.util.concurrent.atomic.AtomicBoolean;

Base listener interface having callback methods for events relating to BasePane (and Window, which extends BasePane) so that you can be notified by a callback when certain events happen. Assume it is the GUI thread that will call these methods. You typically use this through WindowListener and calling Window.addWindowListener(WindowListener)
/** * Base listener interface having callback methods for events relating to {@link BasePane} (and {@link Window}, which * extends {@link BasePane}) so that you can be notified by a callback when certain events happen. Assume it is the GUI * thread that will call these methods. You typically use this through {@link WindowListener} and calling * {@link Window#addWindowListener(WindowListener)} */
public interface BasePaneListener<T extends BasePane> {
Called when a user input is about to be delivered to the focused Interactable inside the BasePane, but before it is actually delivered. You can catch it and prevent it from being passed into the component by using the deliverEvent parameter and setting it to false.
Params:
  • basePane – Base pane that got the input event
  • keyStroke – The actual input event
  • deliverEvent – Set to true automatically, if you change it to false it will prevent the GUI from passing the input event on to the focused Interactable
/** * Called when a user input is about to be delivered to the focused {@link Interactable} inside the * {@link BasePane}, but before it is actually delivered. You can catch it and prevent it from being passed into * the component by using the {@code deliverEvent} parameter and setting it to {@code false}. * * @param basePane Base pane that got the input event * @param keyStroke The actual input event * @param deliverEvent Set to {@code true} automatically, if you change it to {@code false} it will prevent the GUI * from passing the input event on to the focused {@link Interactable} */
void onInput(T basePane, KeyStroke keyStroke, AtomicBoolean deliverEvent);
Called when a user entered some input which wasn't handled by the focused component. This allows you to catch it at a BasePane (or Window) level and prevent it from being reported to the TextGUI as an unhandled input event.
Params:
  • basePane – BasePane that got the input event
  • keyStroke – The unhandled input event
  • hasBeenHandled – Initially set to false, if you change it to true then the event will not be reported as an unhandled input to the TextGUI
/** * Called when a user entered some input which wasn't handled by the focused component. This allows you to catch it * at a {@link BasePane} (or {@link Window}) level and prevent it from being reported to the {@link TextGUI} as an * unhandled input event. * @param basePane {@link BasePane} that got the input event * @param keyStroke The unhandled input event * @param hasBeenHandled Initially set to {@code false}, if you change it to {@code true} then the event * will not be reported as an unhandled input to the {@link TextGUI} */
void onUnhandledInput(T basePane, KeyStroke keyStroke, AtomicBoolean hasBeenHandled); }