package org.goko.core.controller; import org.goko.core.common.exception.GkException; import org.goko.core.controller.listener.IWorkVolumeUpdateListener; import org.goko.core.math.Tuple6b; public interface IWorkVolumeProvider { /** * Returns the name of this provider * @return String */ String getWorkVolumeProviderName(); /** * Register the given listener for update events * @param listener the listener */ void addUpdateListener(IWorkVolumeUpdateListener listener); /** * Unregister the given listener for update events * @param listener the listener */ void removeUpdateListener(IWorkVolumeUpdateListener listener); /** * The minimal point that the machine can reach * Cannot return null; If no volume is defined, an exception is thrown * @return the work volume minimal position * @throws GkException GkException */ Tuple6b getWorkVolumeMinimalPosition() throws GkException; /** * The minimal point that the machine can reach * @return the work volume minimal position or <code>null</code> if no volume currently defined * @throws GkException GkException */ Tuple6b findWorkVolumeMinimalPosition() throws GkException; /** * The maximal point that the machine can reach * Cannot return null; If no volume is defined, an exception is thrown * @return the work volume maximal position * @throws GkException GkException */ Tuple6b getWorkVolumeMaximalPosition() throws GkException; /** * The maximal point that the machine can reach * @return the work volume maximal position or <code>null</code> if no volume currently defined * @throws GkException GkException */ Tuple6b findWorkVolumeMaximalPosition() throws GkException; }