All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.vaadin.event.FieldEvents Maven / Gradle / Ivy

There is a newer version: 8.27.3
Show newest version
/*
 * Vaadin Framework 7
 *
 * Copyright (C) 2000-2024 Vaadin Ltd
 *
 * This program is available under Vaadin Commercial License and Service Terms.
 *
 * See  for the full
 * license.
 */

package com.vaadin.event;

import java.io.Serializable;
import java.lang.reflect.Method;

import com.vaadin.shared.EventId;
import com.vaadin.shared.communication.FieldRpc.FocusAndBlurServerRpc;
import com.vaadin.ui.Component;
import com.vaadin.ui.Component.Event;
import com.vaadin.ui.Field;
import com.vaadin.ui.Field.ValueChangeEvent;
import com.vaadin.ui.TextField;
import com.vaadin.util.ReflectTools;

/**
 * Interface that serves as a wrapper for {@link Field} related events.
 */
public interface FieldEvents {

    /**
     * The interface for adding and removing FocusEvent listeners.
     * By implementing this interface a class explicitly announces that it will
     * generate a FocusEvent when it receives keyboard focus.
     * 

* Note: The general Java convention is not to explicitly declare that a * class generates events, but to directly define the * addListener and removeListener methods. That * way the caller of these methods has no real way of finding out if the * class really will send the events, or if it just defines the methods to * be able to implement an interface. *

* * @since 6.2 * @see FocusListener * @see FocusEvent */ public interface FocusNotifier extends Serializable { /** * Adds a FocusListener to the Component which gets fired * when a Field receives keyboard focus. * * @param listener * @see FocusListener * @since 6.2 */ public void addFocusListener(FocusListener listener); /** * @deprecated As of 7.0, replaced by * {@link #addFocusListener(FocusListener)} **/ @Deprecated public void addListener(FocusListener listener); /** * Removes a FocusListener from the Component. * * @param listener * @see FocusListener * @since 6.2 */ public void removeFocusListener(FocusListener listener); /** * @deprecated As of 7.0, replaced by * {@link #removeFocusListener(FocusListener)} **/ @Deprecated public void removeListener(FocusListener listener); } /** * The interface for adding and removing BlurEvent listeners. * By implementing this interface a class explicitly announces that it will * generate a BlurEvent when it loses keyboard focus. *

* Note: The general Java convention is not to explicitly declare that a * class generates events, but to directly define the * addListener and removeListener methods. That * way the caller of these methods has no real way of finding out if the * class really will send the events, or if it just defines the methods to * be able to implement an interface. *

* * @since 6.2 * @see BlurListener * @see BlurEvent */ public interface BlurNotifier extends Serializable { /** * Adds a BlurListener to the Component which gets fired * when a Field loses keyboard focus. * * @param listener * @see BlurListener * @since 6.2 */ public void addBlurListener(BlurListener listener); /** * @deprecated As of 7.0, replaced by * {@link #addBlurListener(BlurListener)} **/ @Deprecated public void addListener(BlurListener listener); /** * Removes a BlurListener from the Component. * * @param listener * @see BlurListener * @since 6.2 */ public void removeBlurListener(BlurListener listener); /** * @deprecated As of 7.0, replaced by * {@link #removeBlurListener(BlurListener)} **/ @Deprecated public void removeListener(BlurListener listener); } /** * FocusEvent class for holding additional event information. * Fired when a Field receives keyboard focus. * * @since 6.2 */ @SuppressWarnings("serial") public static class FocusEvent extends Component.Event { /** * Identifier for event that can be used in {@link EventRouter} */ public static final String EVENT_ID = EventId.FOCUS; public FocusEvent(Component source) { super(source); } } /** * FocusListener interface for listening for * FocusEvent fired by a Field. * * @see FocusEvent * @since 6.2 */ public interface FocusListener extends ConnectorEventListener { public static final Method focusMethod = ReflectTools .findMethod(FocusListener.class, "focus", FocusEvent.class); /** * Component has been focused * * @param event * Component focus event. */ public void focus(FocusEvent event); } /** * BlurEvent class for holding additional event information. * Fired when a Field loses keyboard focus. * * @since 6.2 */ @SuppressWarnings("serial") public static class BlurEvent extends Component.Event { /** * Identifier for event that can be used in {@link EventRouter} */ public static final String EVENT_ID = EventId.BLUR; public BlurEvent(Component source) { super(source); } } /** * BlurListener interface for listening for * BlurEvent fired by a Field. * * @see BlurEvent * @since 6.2 */ public interface BlurListener extends ConnectorEventListener { public static final Method blurMethod = ReflectTools .findMethod(BlurListener.class, "blur", BlurEvent.class); /** * Component has been blurred * * @param event * Component blur event. */ public void blur(BlurEvent event); } /** * TextChangeEvents are fired when the user is editing the text content of a * field. Most commonly text change events are triggered by typing text with * keyboard, but e.g. pasting content from clip board to a text field also * triggers an event. *

* TextChangeEvents differ from {@link ValueChangeEvent}s so that they are * triggered repeatedly while the end user is filling the field. * ValueChangeEvents are not fired until the user for example hits enter or * focuses another field. Also note the difference that TextChangeEvents are * only fired if the change is triggered from the user, while * ValueChangeEvents are also fired if the field value is set by the * application code. *

* The {@link TextChangeNotifier}s implementation may decide when exactly * TextChangeEvents are fired. TextChangeEvents are not necessary fire for * example on each key press, but buffered with a small delay. The * {@link TextField} component supports different modes for triggering * TextChangeEvents. * * @see TextChangeListener * @see TextChangeNotifier * @see TextField#setTextChangeEventMode(com.vaadin.ui.TextField.TextChangeEventMode) * @since 6.5 */ public static abstract class TextChangeEvent extends Component.Event { public TextChangeEvent(Component source) { super(source); } /** * @return the text content of the field after the * {@link TextChangeEvent} */ public abstract String getText(); /** * @return the cursor position during after the {@link TextChangeEvent} */ public abstract int getCursorPosition(); } /** * A listener for {@link TextChangeEvent}s. * * @since 6.5 */ public interface TextChangeListener extends ConnectorEventListener { public static String EVENT_ID = "ie"; public static Method EVENT_METHOD = ReflectTools.findMethod( TextChangeListener.class, "textChange", TextChangeEvent.class); /** * This method is called repeatedly while the text is edited by a user. * * @param event * the event providing details of the text change */ public void textChange(TextChangeEvent event); } /** * An interface implemented by a {@link Field} supporting * {@link TextChangeEvent}s. An example a {@link TextField} supports * {@link TextChangeListener}s. */ public interface TextChangeNotifier extends Serializable { public void addTextChangeListener(TextChangeListener listener); /** * @deprecated As of 7.0, replaced by * {@link #addTextChangeListener(TextChangeListener)} **/ @Deprecated public void addListener(TextChangeListener listener); public void removeTextChangeListener(TextChangeListener listener); /** * @deprecated As of 7.0, replaced by * {@link #removeTextChangeListener(TextChangeListener)} **/ @Deprecated public void removeListener(TextChangeListener listener); } public static abstract class FocusAndBlurServerRpcImpl implements FocusAndBlurServerRpc { private Component component; public FocusAndBlurServerRpcImpl(Component component) { this.component = component; } protected abstract void fireEvent(Event event); @Override public void blur() { fireEvent(new BlurEvent(component)); } @Override public void focus() { fireEvent(new FocusEvent(component)); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy