Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / android / src / net / sf / openrocket / android / events / ChangeEventBroadcastReceiver.java
diff --git a/android/src/net/sf/openrocket/android/events/ChangeEventBroadcastReceiver.java b/android/src/net/sf/openrocket/android/events/ChangeEventBroadcastReceiver.java
new file mode 100644 (file)
index 0000000..69da625
--- /dev/null
@@ -0,0 +1,44 @@
+package net.sf.openrocket.android.events;\r
+\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.support.v4.content.LocalBroadcastManager;\r
+\r
+public abstract class ChangeEventBroadcastReceiver extends BroadcastReceiver {\r
+\r
+       public void register( Context context ) {\r
+               LocalBroadcastManager.getInstance(context).registerReceiver( this, \r
+                               new IntentFilter(Events.MESSAGE_ACTION) );\r
+       }\r
+       \r
+       public void unregister( Context context ) {\r
+               LocalBroadcastManager.getInstance(context).unregisterReceiver(this);\r
+       }\r
+\r
+       @Override\r
+       public void onReceive(Context context, Intent intent) {\r
+               \r
+               int type = intent.getIntExtra(Events.TYPE, -1);\r
+               switch( type ) {\r
+               case Events.CONFIGS_CHANGED:\r
+                       doMotorConfigsChanged();\r
+                       doSimsChanged();\r
+                       break;\r
+               case Events.SIMS_CHANGED:\r
+                       doSimsChanged();\r
+                       break;\r
+               case Events.SIM_COMPLETE:\r
+                       doSimComplete();\r
+                       break;\r
+               }\r
+       }\r
+\r
+       protected abstract void doSimComplete();\r
+\r
+       protected abstract void doSimsChanged();\r
+       \r
+       protected abstract void doMotorConfigsChanged();\r
+\r
+}\r