-package org.simantics.utils;\r
-\r
-import java.util.HashMap;\r
-import java.util.Map;\r
-import java.util.TreeMap;\r
-import java.util.concurrent.CopyOnWriteArrayList;\r
-\r
-import org.simantics.databoard.Bindings;\r
-import org.simantics.databoard.adapter.AdaptException;\r
-import org.simantics.databoard.binding.Binding;\r
-import org.simantics.databoard.binding.error.BindingException;\r
-import org.simantics.databoard.binding.mutable.Variant;\r
-\r
-public class Development {\r
-\r
- public static TreeMap<String,Integer> histogram = new TreeMap<String,Integer>();\r
-\r
- public static final boolean DEVELOPMENT = false;\r
- \r
- public static final String PRINT = "Development.print";\r
-\r
- public interface DevelopmentListener {\r
- \r
- void handle(Object event);\r
- \r
- }\r
- \r
- final static private HashMap<String, Variant> properties = new HashMap<String, Variant>(); \r
- \r
- final static private CopyOnWriteArrayList<DevelopmentListener> listeners = new CopyOnWriteArrayList<DevelopmentListener>();\r
-\r
- static {\r
- \r
- if(DEVELOPMENT) {\r
- listeners.add(new DevelopmentListener() {\r
- \r
- @Override\r
- public void handle(Object event) {\r
- if((Boolean) getProperty(PRINT, Bindings.BOOLEAN))\r
- System.err.println(event.toString());\r
- }\r
- \r
- });\r
- }\r
-\r
- }\r
- \r
- public static void addListener(DevelopmentListener listener) {\r
- listeners.add(listener);\r
- }\r
- \r
- public static void removeListener(DevelopmentListener listener) {\r
- listeners.remove(listener);\r
- }\r
- \r
- public static void dispatchEvent(Object event) {\r
- for(DevelopmentListener listener : listeners) {\r
- listener.handle(event);\r
- }\r
- }\r
- \r
- \r
- public static void setProperty(String name, Object value, Binding binding) {\r
- assert(name != null);\r
- assert(binding != null);\r
- try {\r
- binding.assertInstaceIsValid(value);\r
- } catch (BindingException e) {\r
- throw new RuntimeException(e);\r
- }\r
- properties.put(name, new Variant(binding, value));\r
- }\r
-\r
- @SuppressWarnings("unchecked")\r
- public static <T> T getProperty(String name, Binding binding) {\r
- Variant value = properties.get(name);\r
- if(value == null) return null;\r
- try {\r
- return (T)value.getValue(binding);\r
- } catch (AdaptException e) {\r
- throw new RuntimeException(e);\r
- }\r
- }\r
- \r
- public static boolean isTrue(String name) {\r
- Boolean value = getProperty(name, Bindings.BOOLEAN);\r
- return value != null && value;\r
- }\r
- \r
- public static Map<String, Variant> getProperties() {\r
- return properties;\r
- }\r
- \r
- public static void recordHistogram(Object o) {\r
- String key = o.toString();\r
- Integer i = Development.histogram.get(key);\r
- if(i == null) i = 0;\r
- Development.histogram.put(key, i+1);\r
- }\r
- \r
-}\r
+package org.simantics.utils;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.simantics.databoard.Bindings;
+import org.simantics.databoard.adapter.AdaptException;
+import org.simantics.databoard.binding.Binding;
+import org.simantics.databoard.binding.error.BindingException;
+import org.simantics.databoard.binding.mutable.Variant;
+
+public class Development {
+
+ public static TreeMap<String,Integer> histogram = new TreeMap<String,Integer>();
+
+ public static final boolean DEVELOPMENT = false;
+
+ public static final String PRINT = "Development.print";
+
+ public interface DevelopmentListener {
+
+ void handle(Object event);
+
+ }
+
+ final static private HashMap<String, Variant> properties = new HashMap<String, Variant>();
+
+ final static private CopyOnWriteArrayList<DevelopmentListener> listeners = new CopyOnWriteArrayList<DevelopmentListener>();
+
+ static {
+
+ if(DEVELOPMENT) {
+ listeners.add(new DevelopmentListener() {
+
+ @Override
+ public void handle(Object event) {
+ if((Boolean) getProperty(PRINT, Bindings.BOOLEAN))
+ System.err.println(event.toString());
+ }
+
+ });
+ }
+
+ }
+
+ public static void addListener(DevelopmentListener listener) {
+ listeners.add(listener);
+ }
+
+ public static void removeListener(DevelopmentListener listener) {
+ listeners.remove(listener);
+ }
+
+ public static void dispatchEvent(Object event) {
+ for(DevelopmentListener listener : listeners) {
+ listener.handle(event);
+ }
+ }
+
+
+ public static void setProperty(String name, Object value, Binding binding) {
+ assert(name != null);
+ assert(binding != null);
+ try {
+ binding.assertInstaceIsValid(value);
+ } catch (BindingException e) {
+ throw new RuntimeException(e);
+ }
+ properties.put(name, new Variant(binding, value));
+ }
+
+ @SuppressWarnings("unchecked")
+ public static <T> T getProperty(String name, Binding binding) {
+ Variant value = properties.get(name);
+ if(value == null) return null;
+ try {
+ return (T)value.getValue(binding);
+ } catch (AdaptException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static boolean isTrue(String name) {
+ Boolean value = getProperty(name, Bindings.BOOLEAN);
+ return value != null && value;
+ }
+
+ public static Map<String, Variant> getProperties() {
+ return properties;
+ }
+
+ public static void recordHistogram(Object o) {
+ String key = o.toString();
+ Integer i = Development.histogram.get(key);
+ if(i == null) i = 0;
+ Development.histogram.put(key, i+1);
+ }
+
+}