diff options
Diffstat (limited to 'rba.tool.editor/src/rba/tool/editor/validation/validators/SceneValidator.xtend')
-rw-r--r-- | rba.tool.editor/src/rba/tool/editor/validation/validators/SceneValidator.xtend | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/rba.tool.editor/src/rba/tool/editor/validation/validators/SceneValidator.xtend b/rba.tool.editor/src/rba/tool/editor/validation/validators/SceneValidator.xtend new file mode 100644 index 0000000..f6646e5 --- /dev/null +++ b/rba.tool.editor/src/rba/tool/editor/validation/validators/SceneValidator.xtend @@ -0,0 +1,40 @@ +package rba.tool.editor.validation.validators + +import org.eclipse.xtext.validation.Check +import org.eclipse.xtext.validation.EValidatorRegistrar +import rba.core.RBACorePackage +import rba.core.Scene +import rba.tool.editor.messages.Messages +import rba.tool.editor.validation.AbstractRBAModelValidator + +class SceneValidator extends AbstractRBAModelValidator { + + private String SCENE_GLOBAL = Messages.SCENE_GLOBAL; + private String SCENE_PROPERTY_NEGATIVE = Messages.SCENE_PROPERTY_NEGATIVE; + + override register(EValidatorRegistrar registrar) { + // not needed for classes used as ComposedCheck + } + + @Check(NORMAL) + def checkSceneProperty(Scene scene) { + + if (scene.properties.size > 0 && scene.global == false) { + error(SCENE_GLOBAL, RBACorePackage.Literals.SCENE__PROPERTIES); + return; + } + val properties = scene.properties + for (var int i = 0; i < properties.size; i++) { + var property = properties.get(i) + if (property instanceof rba.core.impl.IntegerPropertyImpl) { + var value = property.getValue() + if (value instanceof rba.core.impl.IntegerValueImpl) { + if (value.getValue() < 0) { + error(SCENE_PROPERTY_NEGATIVE, RBACorePackage.Literals.SCENE__PROPERTIES, i); + return; + } + } + } + } + } +} |