Package jetbrains.mps.smodel
Class EditableModelDescriptor
- java.lang.Object
 - 
- jetbrains.mps.extapi.model.SModelDescriptorStub
 - 
- jetbrains.mps.extapi.model.SModelBase
 - 
- jetbrains.mps.smodel.RegularModelDescriptor
 - 
- jetbrains.mps.smodel.EditableModelDescriptor
 
 
 
 
 
- 
- All Implemented Interfaces:
 ModelWithDisposeInfo,FastNodeFinder.Factory,SModelInternal,EditableSModel,SModel
public abstract class EditableModelDescriptor extends RegularModelDescriptor implements EditableSModel
Base implementation ofEditableSModel. Since it relies on non-APIj.m.smodel.SModelmodel data implementation, the class kept in our implementation package, rather than being part of openapi/extapi. This implementation is responsible for change state field, change listeners (both new and contemporary), and root add/remove. Other aspects ofEditableSModelshall be implemented in subclasses.- Since:
 - 3.3
 
 
- 
- 
Nested Class Summary
- 
Nested classes/interfaces inherited from interface org.jetbrains.mps.openapi.model.SModel
SModel.Problem 
 - 
 
- 
Field Summary
- 
Fields inherited from class jetbrains.mps.smodel.RegularModelDescriptor
myLoadLock 
 - 
 
- 
Constructor Summary
Constructors Modifier Constructor Description protectedEditableModelDescriptor(SModelReference modelRef, DataSource source) 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddChangeListener(SNodeChangeListener listener)This class doesn't dispatch change events, no listeners are tracked.voidaddRootNode(SNode node)Adds the node as a root to this model.booleanisChanged()booleanisReadOnly()No changes are permitted.voidremoveChangeListener(SNodeChangeListener listener)This class doesn't dispatch change events, no listeners are tracked.voidremoveRootNode(SNode node)Removes the whole subtree from the model.voidsetChanged(boolean changed)- 
Methods inherited from class jetbrains.mps.smodel.RegularModelDescriptor
createModel, doUnload, getCurrentModelInternal, getSModelInternal, replace 
- 
Methods inherited from class jetbrains.mps.extapi.model.SModelBase
addAccessListener, addModelListener, assertCanChange, assertCanRead, attach, changeModelReference, createNode, createNode, detach, fireBeforeModelRenamed, fireConflictDetected, fireModelRenamed, fireModelReplaced, fireModelSaved, fireModelStateChanged, fireProblemsDetected, getLoadingState, getModelData, getModelId, getModelName, getModelRoot, getModule, getName, getNode, getNodeEventDispatch, getProblems, getReference, getRepository, getRootNodes, getSource, isLoaded, load, removeAccessListener, removeModelListener, replaceModelAndFireEvent, setLoadingState, setModelRoot, setModule, unload 
- 
Methods inherited from class jetbrains.mps.extapi.model.SModelDescriptorStub
addDevKit, addEngagedOnGenerationLanguage, addLanguage, addModelImport, addModelListener, clearListeners, createNodeFinder, deleteDevKit, deleteLanguageId, deleteModelImport, fireBeforeModelDisposed, fireBeforeModelFileChanged, fireBeforeModelRenamed, fireModelFileChanged, fireModelRenamed, fireModelStateChanged, getDisposedStacktrace, getLanguageImportVersion, getLanguagesEngagedOnGeneration, getModelDepsManager, getModelImports, getModelListeners, getSModel, importedDevkits, importedLanguageIds, isDisposed, removeEngagedOnGenerationLanguage, removeModelListener, setLanguageImportVersion, updateExternalReferences 
- 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait 
- 
Methods inherited from interface org.jetbrains.mps.openapi.model.EditableSModel
needsReloading, reloadFromSource, rename, save, updateTimestamp 
- 
Methods inherited from interface org.jetbrains.mps.openapi.model.SModel
addAccessListener, addModelListener, createNode, createNode, getModelId, getModelName, getModelRoot, getModule, getName, getNode, getProblems, getReference, getRepository, getRootNodes, getSource, isLoaded, load, removeAccessListener, removeModelListener, unload 
 - 
 
 - 
 
- 
- 
Constructor Detail
- 
EditableModelDescriptor
protected EditableModelDescriptor(@NotNull SModelReference modelRef, @NotNull DataSource source)
 
 - 
 
- 
Method Detail
- 
isChanged
public boolean isChanged()
- Specified by:
 isChangedin interfaceEditableSModel
 
- 
setChanged
public void setChanged(boolean changed)
- Specified by:
 setChangedin interfaceEditableSModel
 
- 
addRootNode
public void addRootNode(@NotNull SNode node)
Description copied from interface:SModelAdds the node as a root to this model. Each node in the underlying subtree becomes connected to this model and returns it from the getModel() method.- Specified by:
 addRootNodein interfaceSModel- Overrides:
 addRootNodein classSModelBase
 
- 
removeRootNode
public void removeRootNode(@NotNull SNode node)
Description copied from interface:SModelRemoves the whole subtree from the model.- Specified by:
 removeRootNodein interfaceSModel- Overrides:
 removeRootNodein classSModelBase
 
- 
isReadOnly
public boolean isReadOnly()
Description copied from interface:SModelNo changes are permitted. For read-only models all modification operations always throwIllegalModelChangeError.- Specified by:
 isReadOnlyin interfaceSModel- Overrides:
 isReadOnlyin classSModelBase
 
- 
addChangeListener
public void addChangeListener(SNodeChangeListener listener)
Description copied from class:SModelBaseThis class doesn't dispatch change events, no listeners are tracked.- Specified by:
 addChangeListenerin interfaceSModel- Overrides:
 addChangeListenerin classSModelBase- Parameters:
 listener- listener to add, toleratesnull
 
- 
removeChangeListener
public void removeChangeListener(SNodeChangeListener listener)
Description copied from class:SModelBaseThis class doesn't dispatch change events, no listeners are tracked.- Specified by:
 removeChangeListenerin interfaceSModel- Overrides:
 removeChangeListenerin classSModelBase- Parameters:
 listener- listener to remove, toleratesnulland unknown (not registered) listeners
 
 - 
 
 -