package nl.tudelft.simulation.dsol.animation.D2;
import java.rmi.RemoteException;
import nl.tudelft.simulation.dsol.animation.Locatable;
/**
* This interface provides the functionality that editable animation objects must implement.
*
* Copyright (c) 2002-2020 Delft University of Technology, Jaffalaan 5, 2628 BX Delft, the Netherlands. All rights reserved. See
* for project information https://simulation.tudelft.nl. The DSOL
* project is distributed under a three-clause BSD-style license, which can be found at
*
* https://simulation.tudelft.nl/dsol/3.0/license.html.
*
* @author Peter Jacobs
* @since 1.5
* @param the type of Locatable.
*/
public interface EditableRenderable2DInterface extends Renderable2DInterface
{
/**
* Returns whether this shape is closed or open. For example an area is a closed shape while a trajectory is open (has
* ends).
* @return true or false
* @throws RemoteException RemoteException
*/
boolean isClosedShape() throws RemoteException;
/**
* Is the user allowed to move this editable?
* @return True or false
* @throws RemoteException RemoteException
*/
boolean allowMove() throws RemoteException;
/**
* Is the user allowed to rotate this editable?
* @return True or false
* @throws RemoteException RemoteException
*/
boolean allowRotate() throws RemoteException;
/**
* Is the user allowed to scale this editable?
* @return True or false
* @throws RemoteException RemoteException
*/
boolean allowScale() throws RemoteException;
/**
* Is the user allowed to edit individual points of this editable?
* @return True or false
* @throws RemoteException RemoteException
*/
boolean allowEditPoints() throws RemoteException;
/**
* Is the user allowed to delete this object?
* @return True or false
* @throws RemoteException RemoteException
*/
boolean allowDelete() throws RemoteException;
/**
* Is the user allowed to add or delete points of this editable?
* @return True or false
* @throws RemoteException RemoteException
*/
boolean allowAddOrDeletePoints() throws RemoteException;
/**
* Get the maximum allowed number of points for this editable
* @return Maximum number of points
* @throws RemoteException RemoteException
*/
int getMaxNumberOfPoints() throws RemoteException;
/**
* Get the minimum allowed number of points for this editable
* @return Minimum number of points
* @throws RemoteException RemoteException
*/
int getMinNumberOfPoints() throws RemoteException;
}