org.bushe.swing.event.annotation.VetoSubscriber Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of eventbus Show documentation
Show all versions of eventbus Show documentation
A simple but powerful publish-subscribe API that is based on class semantics and/or string (topic) matching.
The newest version!
package org.bushe.swing.event.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.bushe.swing.event.EventService;
import org.bushe.swing.event.EventServiceLocator;
import org.bushe.swing.event.ThreadSafeEventService;
/**
* An Annotation for adding VetoListener subscriptions to EventService Events.
*
* This annotation simplifies much of the repetitive boilerplate used for adding veto listeners
* (which in EventBus 2.0 will be called VetoSubscribers, thus this annotation name difference)
* to EventService Events. Example:
*
*
* public class MyAppController {
* public MyAppController {
* AnnotationProcessor.process(this);//this line can be avoided with a compile-time tool or an Aspect
* }
* @EventSubscriber(eventClass=AppAppClosingEvent.class)
* public void onAppClosingEvent(AppClosingEvent appClosingEvent) {
* //close connections, close windows
* }
* }
*
* public class MyDocumentController {
* @VetoSubscriber(eventClass=AppAppClosingEvent.class)
* public boolean ensureDocumentIsSaved(AppAppClosingEvent appClosingEvent) {
* if (docHasUnsavedChanges()) {
* boolean answer = MyModalDialog.show("Are you sure you want to close and lose your changes?");
* if (answer == StandardButtonValues.Cancel) {
* //stop processing this event
* return true;
* }
* }
* //It's OK to close
* return false;
* }
* }
*
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface VetoSubscriber {
/** The class to subscribe to, if not specified, a subscription is created for the type of the method parameter. */
public abstract Class eventClass() default UseTheClassOfTheAnnotatedMethodsParameter.class;
/** Determines the order in which this veto subscriber is called, default is FIFO.*/
public abstract int priority() default 0;
/** Whether or not to subscribe to the exact class or a class hierarchy, defaults to class hierarchy (false). */
public abstract boolean exact() default false;
/** Whether to subscribe weakly or strongly. */
public abstract ReferenceStrength referenceStrength() default ReferenceStrength.WEAK;
/** The event service to subscribe to, default to the EventServiceLocator.SERVICE_NAME_EVENT_BUS. */
public abstract String eventServiceName() default EventServiceLocator.SERVICE_NAME_EVENT_BUS;
/**
* Whether or not to autocreate the event service if it doesn't exist on subscription, default is true. If the
* service needs to be created, it must have a default constructor.
*/
public abstract Class extends EventService> autoCreateEventServiceClass() default ThreadSafeEventService.class;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy