--- /dev/null
+package org.simantics.g3d.property;\r
+\r
+import java.util.Collections;\r
+import java.util.List;\r
+\r
+import org.simantics.g3d.property.annotations.PropertyContributor;\r
+\r
+public class PropertyTabUtil {\r
+ \r
+ \r
+ @SuppressWarnings("unchecked")\r
+ public static List<PropertyTabContributor> getContributors(Object input) {\r
+ PropertyTabContributorFactory factory = resolveFactory(input.getClass());\r
+ if (factory == null)\r
+ return Collections.EMPTY_LIST;\r
+ return factory.getContributors(input);\r
+ }\r
+ \r
+ private static PropertyTabContributorFactory resolveFactory(Class<?> clazz) {\r
+ PropertyContributor contributor = clazz.getAnnotation(PropertyContributor.class);\r
+ if (contributor != null)\r
+ try {\r
+ return contributor.value().newInstance();\r
+ } catch (InstantiationException e) {\r
+ e.printStackTrace();\r
+ } catch (IllegalAccessException e) {\r
+ e.printStackTrace();\r
+ }\r
+ Class<?> superClass = clazz.getSuperclass();\r
+ if (superClass != null)\r
+ return resolveFactory(superClass);\r
+ return null;\r
+ }\r
+\r
+}\r