public abstract class ModelType
extends java.lang.Object
Element
(usually, in fact, with
an IDE Node
). A model type identifies the Element
classes which correspond to object models of its type, knows its
corresponding ModelAdapter
subclass, and manufactures model adapter
instances for each model of its type.
To reduce special case code in the Audit framework, IDE container elements
such as Workspaces
,
Workspace
,
Project
, and
packages and directories
each have a corresponding ModelType
and ModelAdapter
subclass.
IDE extensions define model types with a
ModelAdapter
Constructor and Description |
---|
ModelType() |
Modifier and Type | Method and Description |
---|---|
ModelAdapter |
createModelAdapter(ModelAdapter model,
java.util.Collection<Location> fragments)
Creates a fragmentary model for this model type corresponding to fragments
produced by a model of a different model type.
|
abstract ModelAdapter |
createModelAdapter(ModelFactory factory,
Element element,
java.net.URL url,
ContainerModelAdapter directory,
ContainerModelAdapter project,
ContainerModelAdapter workspace)
Creates a model for this model type corresponding to a workspace,
project, package, element, and URL.
|
java.util.Collection<java.lang.Class<? extends Element>> |
getContainedElementTypes()
Gets the IDE
Element types which correspond to contained (non-root)
constructs of this model type. |
java.util.Collection<java.lang.Class<?>> |
getDefaultPresentationTypes()
Gets the default presentation types for this model type.
|
ModelDefinition |
getDefinition()
Gets the model definition which registered this model type, or null if none.
|
java.util.Collection<java.lang.Class<? extends ModelAdapter>> |
getModelAdapterTypes()
Gets the classes of the
ModelAdapter s created by this type. |
abstract java.util.Collection<java.lang.Class<?>> |
getPresentationTypes()
Gets the presentation types for this model type.
|
abstract java.util.Collection<java.lang.Class<? extends Element>> |
getRootElementTypes()
Gets the IDE
Element types which correspond to root constructs of
this model type. |
abstract javax.swing.Icon |
icon(java.lang.Class type)
Gets the icon for a presentation type of this model type.
|
boolean |
isAuditable(Element element,
ContentDirectory directory,
Project project,
Workspace workspace)
Gets whether a root element is auditable in the context of a directory,
project, and workspace.
|
boolean |
isContainedElementType(Element element)
Gets whether an
Element is an instance of one of the element
types returned by getContainedElementTypes() . |
boolean |
isElementType(Element element)
Gets whether an
Element is an instance of one of the element
types returned by getRootElementTypes() or
getContainedElementTypes() . |
boolean |
isRootElementType(Element element)
Gets whether an
Element is an instance of one of the element
types returned by getRootElementTypes() . |
abstract java.lang.String |
label(java.lang.Class type)
Gets the label for a presentation type of this model type.
|
abstract java.lang.String |
summary(java.lang.Class type)
Gets the summary for a presentation type of this model type.
|
public ModelDefinition getDefinition()
public java.util.Collection<java.lang.Class<? extends ModelAdapter>> getModelAdapterTypes()
ModelAdapter
s created by this type. This
method should be abstract but was added too late. The default ModelType
implementation returns an empty list.public abstract java.util.Collection<java.lang.Class<? extends Element>> getRootElementTypes()
Element
types which correspond to root constructs of
this model type. These are used to map from objects selected in the IDE
into the Audit object model.public java.util.Collection<java.lang.Class<? extends Element>> getContainedElementTypes()
public boolean isAuditable(Element element, ContentDirectory directory, Project project, Workspace workspace)
ModelType
implementation
requires that the directory, project, and workspace be non-null.element
- The element for which to create the model.directory
- The directory containing the element, or null if none.project
- The project containing the element, or null if none.workspace
- The workspace containing the element, or null if none.public abstract ModelAdapter createModelAdapter(ModelFactory factory, Element element, java.net.URL url, ContainerModelAdapter directory, ContainerModelAdapter project, ContainerModelAdapter workspace)
factory
- The model factory for creating contained models.element
- The element for which to create the model.url
- The URL of the file represented by the model.directory
- The directory containing the element, or null if none.project
- The project containing the element, or null if none.workspace
- The workspace containing the element, or null if none.public ModelAdapter createModelAdapter(ModelAdapter model, java.util.Collection<Location> fragments)
ModelType
implementation throws UnsupportedOperationException
.model
- The model producing the fragments.fragments
- A list of fragment Location
s from model
.public abstract java.util.Collection<java.lang.Class<?>> getPresentationTypes()
public java.util.Collection<java.lang.Class<?>> getDefaultPresentationTypes()
getPresentationTypes()
. The default ModelType
implementation
returns getPresentationTypes()
.public abstract java.lang.String label(java.lang.Class type)
public abstract java.lang.String summary(java.lang.Class type)
public abstract javax.swing.Icon icon(java.lang.Class type)
public boolean isElementType(Element element)
Element
is an instance of one of the element
types returned by getRootElementTypes()
or
getContainedElementTypes()
.public boolean isRootElementType(Element element)
Element
is an instance of one of the element
types returned by getRootElementTypes()
.public boolean isContainedElementType(Element element)
Element
is an instance of one of the element
types returned by getContainedElementTypes()
.