/******************************************************************************* * Copyright 2011 See AUTHORS file. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. ******************************************************************************/ package com.badlogic.gdx.scenes.scene2d.utils; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Event; import com.badlogic.gdx.scenes.scene2d.EventListener; /** * Listener for {@link FocusEvent}. * * @author Nathan Sweet */ abstract public class FocusListener implements EventListener { public boolean handle(Event event) { if (!(event instanceof FocusEvent)) return false; FocusEvent focusEvent = (FocusEvent) event; switch (focusEvent.getType()) { case keyboard: keyboardFocusChanged(focusEvent, event.getTarget(), focusEvent.isFocused()); break; case scroll: scrollFocusChanged(focusEvent, event.getTarget(), focusEvent.isFocused()); break; } return false; } /** * @param actor * The event target, which is the actor that emitted the focus event. */ public void keyboardFocusChanged(FocusEvent event, Actor actor, boolean focused) { } /** * @param actor * The event target, which is the actor that emitted the focus event. */ public void scrollFocusChanged(FocusEvent event, Actor actor, boolean focused) { } /** * Fired when an actor gains or loses keyboard or scroll focus. Can be cancelled to prevent losing or gaining focus. * * @author Nathan Sweet */ static public class FocusEvent extends Event { private boolean focused; private Type type; private Actor relatedActor; public void reset() { super.reset(); relatedActor = null; } public boolean isFocused() { return focused; } public void setFocused(boolean focused) { this.focused = focused; } public Type getType() { return type; } public void setType(Type focusType) { this.type = focusType; } /** * The actor related to the event. When focus is lost, this is the new actor being focused, or null. When focus * is gained, this is the previous actor that was focused, or null. */ public Actor getRelatedActor() { return relatedActor; } /** * @param relatedActor * May be null. */ public void setRelatedActor(Actor relatedActor) { this.relatedActor = relatedActor; } /** @author Nathan Sweet */ static public enum Type { keyboard, scroll } } }