]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.databoard/src/org/simantics/databoard/binding/mutable/MutableVariantBinding.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.databoard / src / org / simantics / databoard / binding / mutable / MutableVariantBinding.java
1 /*******************************************************************************\r
2  *  Copyright (c) 2010 Association for Decentralized Information Management in\r
3  *  Industry THTH ry.\r
4  *  All rights reserved. This program and the accompanying materials\r
5  *  are made available under the terms of the Eclipse Public License v1.0\r
6  *  which accompanies this distribution, and is available at\r
7  *  http://www.eclipse.org/legal/epl-v10.html\r
8  *\r
9  *  Contributors:\r
10  *      VTT Technical Research Centre of Finland - initial API and implementation\r
11  *******************************************************************************/\r
12 package org.simantics.databoard.binding.mutable;
13
14 import java.util.Set;\r
15 \r
16 import org.simantics.databoard.adapter.AdapterFactory;\r
17 import org.simantics.databoard.binding.Binding;\r
18 import org.simantics.databoard.binding.error.BindingException;\r
19 import org.simantics.databoard.binding.reflection.ClassBindingFactory;\r
20
21 /**
22  * MutableVariantBinding binds VariantType to {@link MutableVariant} Class. 
23  */
24 public class MutableVariantBinding extends ImmutableVariantBinding {
25                 \r
26         public MutableVariantBinding(ClassBindingFactory bindingFactory, AdapterFactory adapterFactory) {\r
27                 super(bindingFactory, adapterFactory);\r
28         }\r
29         \r
30         @Override\r
31         public Object create(Binding binding, Object value) throws BindingException {\r
32                 return new MutableVariant(binding, value);\r
33         }\r
34         \r
35         @Override
36         public boolean isImmutable() {
37                 return false;
38         }
39 \r
40         @Override\r
41         public boolean isInstance(Object obj) {\r
42                 if (obj==null) return false;\r
43                 if (obj instanceof MutableVariant == false) return false;\r
44                 return true;\r
45         }\r
46         \r
47         @Override\r
48         public void assertInstaceIsValid(Object obj, Set<Object> validInstances) throws BindingException {\r
49                 if (obj==null) throw new BindingException("null value is not MutableVariant");\r
50                 if (obj instanceof MutableVariant == false) throw new BindingException("wrong class, MutableVariant expected");\r
51                 MutableVariant var = (MutableVariant) obj;\r
52                 if (var.binding==null) throw new BindingException("Binding is expected");               \r
53                 var.binding.assertInstaceIsValid(var.value, validInstances);\r
54         }\r
55         
56         @Override
57         public void setContent(Object variant, Binding binding, Object value)
58                         throws BindingException {
59                 assert(isValid(binding, value));
60                 MutableVariant var = (MutableVariant) variant;
61                 var.binding = binding;
62                 var.value = value;
63         }
64
65 }