/* Copyright (c) 2009 Google Inc.
*
* 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.google.wave.api.event;
import com.google.wave.api.Context;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* An interface for robot event handler. This interface defines various methods
* that would respond to all possible robot events.
*/
public interface EventHandler {
/**
* An annotation that would define the robot's interest in handling a
* particular event. Robot should annotate the overriden event handler method
* with this annotation to specify the event contexts and filter.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
static @interface Capability {
/**
* @return the list of contexts that should be send with this particular
* event.
*/
Context[] contexts() default {Context.ROOT, Context.PARENT, Context.CHILDREN};
/**
* @return the filter for this particular event.
*/
String filter() default "";
}
/**
* Handler for {@link AnnotatedTextChangedEvent}.
*
* @param event the annotated text changed event.
*/
void onAnnotatedTextChanged(AnnotatedTextChangedEvent event);
/**
* Handler for {@link BlipContributorsChangedEvent}.
*
* @param event the blip contributors changed event.
*/
void onBlipContributorsChanged(BlipContributorsChangedEvent event);
/**
* Handler for {@link BlipSubmittedEvent}.
*
* @param event the blip submitted event.
*/
void onBlipSubmitted(BlipSubmittedEvent event);
/**
* Handler for {@link DocumentChangedEvent}.
*
* @param event the document changed event.
*/
void onDocumentChanged(DocumentChangedEvent event);
/**
* Handler for {@link FormButtonClickedEvent}.
*
* @param event the form button clicked event.
*/
void onFormButtonClicked(FormButtonClickedEvent event);
/**
* Handler for {@link GadgetStateChangedEvent}.
*
* @param event the gadget state changed event.
*/
void onGadgetStateChanged(GadgetStateChangedEvent event);
/**
* Handler for {@link WaveletBlipCreatedEvent}.
*
* @param event the blip created event.
*/
void onWaveletBlipCreated(WaveletBlipCreatedEvent event);
/**
* Handler for {@link WaveletBlipRemovedEvent}.
*
* @param event the blip removed event.
*/
void onWaveletBlipRemoved(WaveletBlipRemovedEvent event);
/**
* Handler for {@link WaveletCreatedEvent}.
*
* @param event the wavelet created event.
*/
void onWaveletCreated(WaveletCreatedEvent event);
/**
* Handler for {@link WaveletFetchedEvent}.
*
* @param event the wavelet fetched event.
*/
void onWaveletFetched(WaveletFetchedEvent event);
/**
* Handler for {@link WaveletParticipantsChangedEvent}.
*
* @param event the participants changed event.
*/
void onWaveletParticipantsChanged(WaveletParticipantsChangedEvent event);
/**
* Handler for {@link WaveletSelfAddedEvent}.
*
* @param event the self added event.
*/
void onWaveletSelfAdded(WaveletSelfAddedEvent event);
/**
* Handler for {@link WaveletSelfRemovedEvent}.
*
* @param event the self removed event.
*/
void onWaveletSelfRemoved(WaveletSelfRemovedEvent event);
/**
* Handler for {@link WaveletTagsChangedEvent}.
*
* @param event the tags changed event.
*/
void onWaveletTagsChanged(WaveletTagsChangedEvent event);
/**
* Handler for {@link WaveletTitleChangedEvent}.
*
* @param event the title changed event.
*/
void onWaveletTitleChanged(WaveletTitleChangedEvent event);
/**
* Handler for {@link OperationErrorEvent}.
*
* @param event the operation error event.
*/
void onOperationError(OperationErrorEvent event);
}