package layer; import java.util.Collection; /** * The abstract Layer class represents a layer placed over presentation content * used for annotation, sharing, and exporting. */ public abstract class Layer { /** * The User that owns and is responsible for creating content on this Layer. */ user.User owner; /** * A Layer has a collection of LayerAnnotations made by the owner * containing information about what they've placed on the layer. */ public Collection annotations; /** * The opacity (or, inversely, the visible opacity of this layer. */ double opacity; /** * Keeps track of whether or not this layer is currently selected for * drawing by the owner. */ boolean hasDrawFocus; } /** * The PrivateLayer class inherits from the abstract Layer class, and it * represents a Layer that is only for use by the user that owns it. That is, * it may not be shared with the entire class. */ class PrivateLayer extends Layer {} /** * The PublicLayer class inherits from the abstract Layer class, and it * represents a Layer that is annotated by its owner, and it may be shared * with the rest of the class at any time if the instructor selects it for * viewing. */ class PublicLayer extends Layer { /** * Keeps track of whether or not this layer is being presented to the rest * of the class. */ boolean isPresented; } /** * StudentLayersPair acts as a container of a student's public and private * layers. */ class StudentLayersPair { /** * The individual student's public layer. */ PublicLayer publicLayer; /** * The individual student's private layer. */ PrivateLayer privateLayer; }