/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.isis.applib.services.wrapper.listeners;
import org.apache.isis.applib.events.ActionArgumentEvent;
import org.apache.isis.applib.events.ActionInvocationEvent;
import org.apache.isis.applib.events.ActionUsabilityEvent;
import org.apache.isis.applib.events.ActionVisibilityEvent;
import org.apache.isis.applib.events.CollectionAccessEvent;
import org.apache.isis.applib.events.CollectionAddToEvent;
import org.apache.isis.applib.events.CollectionMethodEvent;
import org.apache.isis.applib.events.CollectionRemoveFromEvent;
import org.apache.isis.applib.events.CollectionUsabilityEvent;
import org.apache.isis.applib.events.CollectionVisibilityEvent;
import org.apache.isis.applib.events.ObjectTitleEvent;
import org.apache.isis.applib.events.ObjectValidityEvent;
import org.apache.isis.applib.events.PropertyAccessEvent;
import org.apache.isis.applib.events.PropertyModifyEvent;
import org.apache.isis.applib.events.PropertyUsabilityEvent;
import org.apache.isis.applib.events.PropertyVisibilityEvent;
public interface InteractionListener {
/**
* The title was read.
*
* @param ev
*/
void objectTitleRead(ObjectTitleEvent ev);
/**
* The object was persisted (or an attempt to persist it was made).
*
* @param ev
*/
void objectPersisted(ObjectValidityEvent ev);
/**
* A check was made to determine if a property was visible.
*
* @param ev
*/
void propertyVisible(PropertyVisibilityEvent ev);
/**
* A check was made to determine if a property was usable.
*
* @param ev
*/
void propertyUsable(PropertyUsabilityEvent ev);
/**
* A property was read.
*
* <p>
* Unlike most other events, a {@link PropertyAccessEvent} will never have
* been vetoed (that is, {@link PropertyAccessEvent#isVeto()} will always be
* <tt>false</tt>).
*
* @param ev
*/
void propertyAccessed(PropertyAccessEvent ev);
/**
* A property was modified (or an attempt to modify it was made)
*
* <p>
* Use {@link PropertyModifyEvent#getProposed()} to determine whether the
* property was being set or cleared.
*
* @param ev
*/
void propertyModified(PropertyModifyEvent ev);
/**
* A check was made to determine if a collection was visible.
*
* <p>
* Will be fired prior to
* {@link #collectionUsable(CollectionUsabilityEvent)}.
*
* @param ev
*/
void collectionVisible(CollectionVisibilityEvent ev);
/**
* A check was made to determine if a collection was usable.
*
* <p>
* Will be fired prior to either
* {@link #collectionAccessed(CollectionAccessEvent)} or
* {@link #collectionAddedTo(CollectionAddToEvent)} or
* {@link #collectionRemovedFrom(CollectionRemoveFromEvent)}.
*
* @param ev
*/
void collectionUsable(CollectionUsabilityEvent ev);
/**
* A collection was read.
*
* <p>
* Unlike most other events, a {@link CollectionAccessEvent} will never have
* been vetoed (that is, {@link CollectionAccessEvent#isVeto()} will always
* be <tt>false</tt>).
*
* @param ev
*/
void collectionAccessed(CollectionAccessEvent ev);
/**
* An object was added to the collection (or an attempt to add it was made).
*
* @param ev
*/
void collectionAddedTo(CollectionAddToEvent ev);
/**
* An object was removed from the collection (or an attempt to remove it was
* made).
*
* @param ev
*/
void collectionRemovedFrom(CollectionRemoveFromEvent ev);
/**
* A method of a collection (such as <tt>isEmpty()</tt> or <tt>size()</tt>) has been invoked.
*
*
* <p>
* Unlike the other methods in this interface, the source of these events will be an instance of a
* Collection (such as <tt>java.util.List</tt>) rather than the domain object. (The domain object is
* {@link CollectionMethodEvent#getDomainObject() still available, however).
*
* @param interactionEvent
*/
void collectionMethodInvoked(CollectionMethodEvent interactionEvent);
/**
* A check was made to determine if an action was visible.
*
* <p>
* Will be fired prior to {@link #actionUsable(ActionUsabilityEvent)}.
*
* @param ev
*/
void actionVisible(ActionVisibilityEvent interactionEvent);
/**
* A check was made to determine if an action was usable.
*
* <p>
* Will be fired prior to {@link #actionArgument(ActionArgumentEvent)}.
*
* @param ev
*/
void actionUsable(ActionUsabilityEvent ev);
/**
* A check was made as to whether an argument proposed for an action was
* valid.
*
* <p>
* Will be fired prior to {@link #actionInvoked(ActionInvocationEvent)}.
*
* @param ev
*/
void actionArgument(ActionArgumentEvent ev);
/**
* An action was invoked (or an attempt to invoke it was made).
*
* @param ev
*/
void actionInvoked(ActionInvocationEvent ev);
}