aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Android_Studio/Tango.SharedUI/src/main/java
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-11-08 12:03:06 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-11-08 12:03:06 +0200
commit5da415d6935bd6faa8c49db66f11015a8050bf4d (patch)
treed2b124a77b4e46f8c7ea92fa2e15151fe4d0d6e5 /Software/Android_Studio/Tango.SharedUI/src/main/java
parent65115888c2d2fd03522dd4b5243a6657e15a62f0 (diff)
downloadTango-5da415d6935bd6faa8c49db66f11015a8050bf4d.tar.gz
Tango-5da415d6935bd6faa8c49db66f11015a8050bf4d.zip
Moved android project and new project.
Visual Studio Timeout Task!
Diffstat (limited to 'Software/Android_Studio/Tango.SharedUI/src/main/java')
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/TangoApplication.java73
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/binding_adapters/BindingAdapters.java132
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/binding_converters/ObjectToIntConverter.java22
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/ActivityBase.java150
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/ActivityCallbackService.java88
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/FragmentBase.java154
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/FragmentBaseV4.java132
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/editors/IParameterized.java51
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/editors/ParameterAnnotation.java51
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/editors/ParameterItem.java172
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/editors/ParameterizedEditor.java79
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/DependencyProperty.java115
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/FieldUtils.java54
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/IView.java21
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ReadOnlyField.java55
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/RelayCommand.java114
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ViewModelBase.java61
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/navigation/AndroidNavigationProvider.java120
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/navigation/INavigationProvider.java51
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/notifications/AndroidNotificationProvider.java57
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/notifications/INotificationProvider.java37
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/paging/PagerAdapter.java82
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/paging/PagerZoomTransform.java47
-rw-r--r--Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/validation/IViewValidator.java23
24 files changed, 0 insertions, 1941 deletions
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/TangoApplication.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/TangoApplication.java
deleted file mode 100644
index aacb35350..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/TangoApplication.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.twine.tango.sharedui;
-
-import android.annotation.SuppressLint;
-import android.app.Application;
-import android.content.Context;
-
-import com.google.protobuf.GeneratedMessageV3;
-import com.twine.tango.core.ContextHelper;
-import com.twine.tango.dal.TangoDB;
-import com.twine.tango.logging.FileLogger;
-import com.twine.tango.logging.LogCatLogger;
-import com.twine.tango.logging.LogManager;
-import com.twine.tango.pmr.MessageFactory;
-import com.twine.tango.web.WebApiFactory;
-
-import net.danlew.android.joda.JodaTimeAndroid;
-
-import java.io.File;
-
-
-/**
- * Represents a base application structure for all Tango application.
- */
-public class TangoApplication extends Application
-{
- @SuppressLint("StaticFieldLeak")
- protected static Context context;
-
- @Override
- public void onCreate()
- {
- super.onCreate();
-
- context = getApplicationContext();
-
-
- JodaTimeAndroid.init(context);
-
- ContextHelper.init(context);
-
- LogManager logManager = LogManager.getDefault();
-
- LogCatLogger logCatLogger = new LogCatLogger();
- FileLogger fileLogger = new FileLogger(context);
-
- logManager.registerLogger(logCatLogger);
- logManager.registerLogger(fileLogger);
-
- logManager.log("Logger Initialized. logs will be saved to: " + fileLogger.getFileName());
-
-
- TangoDB.init();
- MessageFactory.init();
- WebApiFactory.init("http://10.0.2.2:45455/api/");
-
- Thread.setDefaultUncaughtExceptionHandler((thread, throwable) -> {
-
- throwable.printStackTrace();
- logManager.log(throwable);
- System.exit(1);
- //TODO: What to do on application crash ?
- });
- }
-
- /**
- * Gets the application context.
- *
- * @return the context
- */
- public static Context getContext() {
- return context;
- }
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/binding_adapters/BindingAdapters.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/binding_adapters/BindingAdapters.java
deleted file mode 100644
index 6b6d4b6e9..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/binding_adapters/BindingAdapters.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package com.twine.tango.sharedui.binding_adapters;
-
-import android.databinding.BindingAdapter;
-import android.databinding.Observable;
-import android.databinding.Observable.OnPropertyChangedCallback;
-import android.graphics.Bitmap;
-import android.text.method.ScrollingMovementMethod;
-import android.widget.ImageView;
-import android.widget.ListView;
-import android.widget.TextView;
-
-import com.hrules.horizontalnumberpicker.HorizontalNumberPicker;
-import com.twine.tango.sharedui.editors.IParameterized;
-import com.twine.tango.sharedui.editors.ParameterItem;
-import com.twine.tango.sharedui.editors.ParameterizedEditor;
-
-
-/**
- * Contains data binding adapters used by android data binding engine.
- * Methods will be auto detected by android.
- */
-public class BindingAdapters
-{
-
- /**
- * Binds an {@link ImageView} source to bitmap on memory.
- *
- * @param view the view
- * @param bitmap the bitmap
- */
- @BindingAdapter("android:memory_bitmap")
- public static void bitmapAdapter(ImageView view, Bitmap bitmap)
- {
- if (bitmap != null)
- {
- view.setImageBitmap(bitmap);
- }
- }
-
- /**
- * Binds a {@link ListView} item click to a listener.
- *
- * @param view the view
- * @param listener the listener
- */
- @BindingAdapter("android:onItemClick")
- public static void listViewClickAdapter(ListView view, ListView.OnItemClickListener listener)
- {
- if (view != null && listener != null)
- {
- view.setOnItemClickListener(listener);
- }
- }
-
- /**
- * Binds a {@link ListView} selected item position.
- *
- * @param view the view
- * @param position the position
- */
- @BindingAdapter("android:selectedItemPosition")
- public static void listViewSelectedItemPosition(ListView view, int position)
- {
- if (view != null)
- {
- view.setItemChecked(position, true);
- }
- }
-
- /**
- * Applies an auto 'scroll to bottom' behavior to a {@link TextView}.
- *
- * @param view the view
- * @param scroll the scroll
- */
- @BindingAdapter("android:autoScrollToBottom")
- public static void scrollToBottomAdapter(TextView view, Boolean scroll)
- {
- if (view != null)
- {
- view.setMovementMethod(new ScrollingMovementMethod());
- }
- }
-
- /**
- * Binds a {@link HorizontalNumberPicker} value to a {@link ParameterItem}.
- *
- * @param view the view
- * @param item the item
- */
- @BindingAdapter("android:editor_range_adapter")
- public static void editorSeekBarAdapter(HorizontalNumberPicker view, ParameterItem item)
- {
- if (view != null && item != null)
- {
- boolean block = false;
- view.setMinValue((int) item.getMinimum());
- view.setMaxValue((int) item.getMaximum());
- view.setValue((int) ((Double) item.getDefaultValue()).doubleValue());
-
- view.setListener((numberPicker, i) ->
- {
- item.property.setNoChange((double) numberPicker.getValue());
- });
-
- item.property.addOnPropertyChangedCallback(new OnPropertyChangedCallback()
- {
- @Override
- public void onPropertyChanged(Observable observable, int i)
- {
- view.setValue((int) ((Double) item.property.get()).doubleValue());
- }
- });
- }
- }
-
- /**
- * Binds a {@link ParameterizedEditor} to an {@link IParameterized} object.
- *
- * @param view the view
- * @param object the object
- */
- @BindingAdapter("android:parameterizedObject")
- public static void parameterizedObjectAdapter(ParameterizedEditor view, IParameterized object)
- {
- if (view != null && object != null)
- {
- view.setParameterizedObject(object);
- }
- }
-
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/binding_converters/ObjectToIntConverter.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/binding_converters/ObjectToIntConverter.java
deleted file mode 100644
index ee6de2b66..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/binding_converters/ObjectToIntConverter.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.twine.tango.sharedui.binding_converters;
-
-import android.databinding.BindingConversion;
-import android.databinding.InverseBindingMethod;
-import android.databinding.InverseMethod;
-
-
-/**
- * Contains binding converters which will be auto detected by the android data binding engine.
- */
-public class ObjectToIntConverter
-{
-// @InverseBindingMethod()
-// public static int toObject(int number) {
-// return number;
-// }
-//
-// @BindingConversion
-// public static int toInt(Object object) {
-// return Integer.parseInt(object.toString());
-// }
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/ActivityBase.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/ActivityBase.java
deleted file mode 100644
index 4526a4f09..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/ActivityBase.java
+++ /dev/null
@@ -1,150 +0,0 @@
-package com.twine.tango.sharedui.containers;
-
-import android.content.Intent;
-import android.databinding.DataBindingUtil;
-import android.databinding.ViewDataBinding;
-import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
-import android.view.View;
-import android.widget.EditText;
-import android.widget.Toast;
-
-import com.mobsandgeeks.saripaar.ValidationError;
-import com.mobsandgeeks.saripaar.Validator;
-import com.twine.tango.sharedui.mvvm.IView;
-import com.twine.tango.sharedui.mvvm.ViewModelBase;
-
-import java.lang.reflect.Method;
-import java.util.List;
-
-import javax.inject.Inject;
-
-import butterknife.ButterKnife;
-import io.reactivex.functions.Consumer;
-
-
-/**
- * Represents a base activity with extra features.
- *
- * @param <BindingView> the type parameter
- * @param <VM> the type parameter
- */
-public abstract class ActivityBase<BindingView extends ViewDataBinding, VM extends ViewModelBase> extends AppCompatActivity implements IView, Validator.ValidationListener {
-
- /**
- * The constant ACTIVITY_CALLBACK_INTENT.
- */
- protected static final String ACTIVITY_CALLBACK_INTENT = "ACTIVITY_CALLBACK_INTENT";
-
- private Consumer<Boolean> lastValidationConsumer;
- private Validator validator;
-
- /**
- * Holds the standard View Model instance.
- */
- @Inject
- public VM vm;
-
- /**
- * Holds the activity data binding instance.
- */
- public BindingView binding;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- inject();
- binding = DataBindingUtil.setContentView(this, getLayoutId());
- try {
-
- Method method = binding.getClass().getDeclaredMethod("setVm", vm.getClass());
- method.invoke(binding, vm);
-
- attachView();
-
- ButterKnife.bind(this, binding.getRoot());
-
- validator = new Validator(this);
- validator.setValidationListener(this);
-
- String key = getIntent().getStringExtra(ACTIVITY_CALLBACK_INTENT);
- if (key != null && !key.isEmpty()) {
- ActivityCallbackService.getInstance().runAndRemove(key);
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public void attachView() {
- vm.attachView(this);
- }
-
- @Override
- public void validateFields(Consumer<Boolean> consumer) {
- lastValidationConsumer = consumer;
- validator.validate();
- }
-
- @Override
- public void onValidationSucceeded() {
- try {
- lastValidationConsumer.accept(true);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- @Override
- public void onValidationFailed(List<ValidationError> errors) {
- for (ValidationError error : errors) {
- View view = error.getView();
- String message = error.getCollatedErrorMessage(this);
-
- if (view instanceof EditText) {
- view.requestFocus();
- ((EditText) view).setError(message);
- } else {
- Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
- }
- }
-
- if (lastValidationConsumer != null) {
- try {
- lastValidationConsumer.accept(false);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
-
- /**
- * Gets the activity layout resource id.
- *
- * @return the layout id
- */
- protected abstract int getLayoutId();
-
- /**
- * Performs dagger dependency injection.
- */
- protected abstract void inject();
-
- /**
- * Starts an activity and receive a callback from the new activity onCreate method.
- *
- * @param activity the activity
- * @param callback the callback
- */
- public void startActivityNotify(Class<?> activity, Runnable callback) {
-
- String key = ActivityCallbackService.getInstance().putCallback(callback);
- Intent i = new Intent(getApplicationContext(), activity);
- i.putExtra(ACTIVITY_CALLBACK_INTENT, key);
- startActivity(i);
- }
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/ActivityCallbackService.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/ActivityCallbackService.java
deleted file mode 100644
index 842d49561..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/ActivityCallbackService.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package com.twine.tango.sharedui.containers;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-
-
-/**
- * Represents an MVVM activity callback service that is responsible for notifying when activities are loaded and ready.
- */
-public class ActivityCallbackService
-{
-
- private static ActivityCallbackService instance;
-
- private Map<String, Runnable> callbacks;
-
- private ActivityCallbackService() {
- callbacks = new HashMap<>();
- }
-
- /**
- * Gets instance.
- *
- * @return the instance
- */
- public static ActivityCallbackService getInstance() {
- if (instance == null) {
- instance = new ActivityCallbackService();
- }
-
- return instance;
- }
-
- /**
- * Put callback.
- *
- * @param key the key
- * @param callback the callback
- */
- public void putCallback(String key, Runnable callback) {
- callbacks.put(key,callback);
- }
-
- /**
- * Put callback string.
- *
- * @param callback the callback
- * @return the string
- */
- public String putCallback(Runnable callback) {
-
- String key = UUID.randomUUID().toString();
- callbacks.put(key,callback);
- return key;
- }
-
- /**
- * Remove callback.
- *
- * @param key the key
- */
- public void removeCallback(String key)
- {
- callbacks.remove(key);
- }
-
- /**
- * Run.
- *
- * @param key the key
- */
- public void run(String key)
- {
- callbacks.get(key).run();
- }
-
- /**
- * Run and remove.
- *
- * @param key the key
- */
- public void runAndRemove(String key)
- {
- callbacks.get(key).run();
- removeCallback(key);
- }
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/FragmentBase.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/FragmentBase.java
deleted file mode 100644
index 61ed42764..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/FragmentBase.java
+++ /dev/null
@@ -1,154 +0,0 @@
-package com.twine.tango.sharedui.containers;
-
-import android.app.Fragment;
-import android.databinding.DataBindingUtil;
-import android.databinding.ViewDataBinding;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.EditText;
-import android.widget.Toast;
-
-import com.mobsandgeeks.saripaar.ValidationError;
-import com.mobsandgeeks.saripaar.Validator;
-import com.twine.tango.core.IAction1;
-import com.twine.tango.sharedui.mvvm.IView;
-import com.twine.tango.sharedui.mvvm.ViewModelBase;
-
-import java.lang.reflect.Method;
-import java.util.List;
-
-import javax.inject.Inject;
-
-import butterknife.ButterKnife;
-import io.reactivex.functions.Consumer;
-
-/**
- * Represents a an MVVM fragment with extra features.
- *
- * @param <BindingView> the type parameter
- * @param <VM> the type parameter
- */
-public abstract class FragmentBase<BindingView extends ViewDataBinding, VM extends ViewModelBase> extends Fragment implements IView, Validator.ValidationListener {
-
- private Consumer<Boolean> lastValidationConsumer;
- private Validator validator;
- private IAction1<FragmentBase> onCreateListener;
-
- /**
- * The Vm.
- */
- @Inject
- VM vm;
-
- /**
- * The Binding.
- */
- BindingView binding;
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-
- inject();
- binding = DataBindingUtil.inflate(inflater,getLayoutId(),container,false);
-
- try {
-
- Method method = binding.getClass().getDeclaredMethod("setVm", vm.getClass());
- method.invoke(binding, vm);
-
- attachView();
-
- ButterKnife.bind(this, binding.getRoot());
-
- validator = new Validator(this);
- validator.setValidationListener(this);
-
- if (onCreateListener != null)
- {
- onCreateListener.invoke(this);
- onCreateListener = null;
- }
-
- return binding.getRoot();
-
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
-
- /**
- * Sets on create listener.
- *
- * @param listener the listener
- */
- public void setOnCreateListener(IAction1<FragmentBase> listener)
- {
- onCreateListener = listener;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public void attachView() {
- vm.attachView(this);
- }
-
- @Override
- public void validateFields(Consumer<Boolean> consumer) {
- lastValidationConsumer = consumer;
- validator.validate();
- }
-
- @Override
- public void onValidationSucceeded() {
- try {
- lastValidationConsumer.accept(true);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- @Override
- public void onValidationFailed(List<ValidationError> errors) {
- for (ValidationError error : errors) {
- View view = error.getView();
- String message = error.getCollatedErrorMessage(this.getActivity().getBaseContext());
-
- if (view instanceof EditText) {
- view.requestFocus();
- ((EditText) view).setError(message);
- } else {
- Toast.makeText(this.getActivity().getBaseContext(), message, Toast.LENGTH_SHORT).show();
- }
- }
-
- if (lastValidationConsumer != null) {
- try {
- lastValidationConsumer.accept(false);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
-
- /**
- * Gets layout id.
- *
- * @return the layout id
- */
- protected abstract int getLayoutId();
-
- /**
- * Inject.
- */
- protected abstract void inject();
-
- /**
- * Gets title.
- *
- * @return the title
- */
- public abstract String getTitle();
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/FragmentBaseV4.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/FragmentBaseV4.java
deleted file mode 100644
index 5050a64fc..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/FragmentBaseV4.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package com.twine.tango.sharedui.containers;
-
-import android.support.v4.app.Fragment;
-import android.databinding.DataBindingUtil;
-import android.databinding.ViewDataBinding;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.EditText;
-import android.widget.Toast;
-import com.mobsandgeeks.saripaar.ValidationError;
-import com.mobsandgeeks.saripaar.Validator;
-import com.twine.tango.sharedui.mvvm.IView;
-import com.twine.tango.sharedui.mvvm.ViewModelBase;
-import java.lang.reflect.Method;
-import java.util.List;
-import javax.inject.Inject;
-import butterknife.ButterKnife;
-import io.reactivex.functions.Consumer;
-
-/**
- * Represents an MVVM fragment that supports tab navigation.
- *
- * @param <BindingView> the type parameter
- * @param <VM> the type parameter
- */
-public abstract class FragmentBaseV4<BindingView extends ViewDataBinding, VM extends ViewModelBase> extends Fragment implements IView, Validator.ValidationListener {
-
- private Consumer<Boolean> lastValidationConsumer;
- private Validator validator;
-
- /**
- * The Vm.
- */
- @Inject
- VM vm;
-
- /**
- * The Binding.
- */
- BindingView binding;
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-
- inject();
- binding = DataBindingUtil.inflate(inflater,getLayoutId(),container,false);
-
- try {
-
- Method method = binding.getClass().getDeclaredMethod("setVm", vm.getClass());
- method.invoke(binding, vm);
-
- attachView();
-
- ButterKnife.bind(this, binding.getRoot());
-
- validator = new Validator(this);
- validator.setValidationListener(this);
-
- return binding.getRoot();
-
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public void attachView() {
- vm.attachView(this);
- }
-
- @Override
- public void validateFields(Consumer<Boolean> consumer) {
- lastValidationConsumer = consumer;
- validator.validate();
- }
-
- @Override
- public void onValidationSucceeded() {
- try {
- lastValidationConsumer.accept(true);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- @Override
- public void onValidationFailed(List<ValidationError> errors) {
- for (ValidationError error : errors) {
- View view = error.getView();
- String message = error.getCollatedErrorMessage(this.getContext());
-
- if (view instanceof EditText) {
- view.requestFocus();
- ((EditText) view).setError(message);
- } else {
- Toast.makeText(this.getContext(), message, Toast.LENGTH_SHORT).show();
- }
- }
-
- if (lastValidationConsumer != null) {
- try {
- lastValidationConsumer.accept(false);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
-
- /**
- * Gets layout id.
- *
- * @return the layout id
- */
- protected abstract int getLayoutId();
-
- /**
- * Inject.
- */
- protected abstract void inject();
-
- /**
- * Gets title.
- *
- * @return the title
- */
- public abstract String getTitle();
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/editors/IParameterized.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/editors/IParameterized.java
deleted file mode 100644
index 95b352987..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/editors/IParameterized.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.twine.tango.sharedui.editors;
-
-import com.twine.tango.sharedui.mvvm.DependencyProperty;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Represents an object that supports binding of it's parameters through the {@link ParameterizedEditor} view.
- */
-public interface IParameterized
-{
-
- /**
- * Gets the object bind-able parameters.
- *
- * @return the parameters
- */
- default List<ParameterItem> getParameters()
- {
- List<ParameterItem> parameters = new ArrayList<>();
-
- for (Field field: this.getClass().getDeclaredFields())
- {
- ParameterAnnotation annotation = field.getAnnotation(ParameterAnnotation.class);
- if (annotation != null)
- {
- try
- {
- ParameterItem item = new ParameterItem(
- annotation.name(),
- annotation.minimum(),
- annotation.maximum(),
- annotation.defaultValue(),
- (DependencyProperty) field.get(this),
- annotation.type());
-
- parameters.add(item);
-
- } catch (IllegalAccessException e)
- {
- e.printStackTrace();
- }
- }
- }
-
- return parameters;
- }
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/editors/ParameterAnnotation.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/editors/ParameterAnnotation.java
deleted file mode 100644
index 102bb0b4f..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/editors/ParameterAnnotation.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.twine.tango.sharedui.editors;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-
-/**
- * Represents a {@link ParameterItem} property annotation.
- */
-@Target(ElementType.FIELD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface ParameterAnnotation
-{
- /**
- * Parameter display name.
- *
- * @return the string
- */
- String name() default "";
-
- /**
- * Minimum value.
- *
- * @return the double
- */
- double minimum() default 0;
-
- /**
- * Maximum value.
- *
- * @return the double
- */
- double maximum() default 100;
-
- /**
- * Default value.
- *
- * @return the double
- */
- double defaultValue() default 0;
-
- /**
- * Type of parameter.
- *
- * @return the class
- */
- Class<?> type() default double.class;
-}
-
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/editors/ParameterItem.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/editors/ParameterItem.java
deleted file mode 100644
index a89b1c671..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/editors/ParameterItem.java
+++ /dev/null
@@ -1,172 +0,0 @@
-package com.twine.tango.sharedui.editors;
-
-import com.twine.tango.sharedui.mvvm.DependencyProperty;
-
-/**
- * Represents a bind-able parameter which links an {@link IParameterized} object property to an android xml view.
- */
-public class ParameterItem
-{
- private String name;
- private double minimum;
- private double maximum;
- private double defaultValue;
- private Class<?> type;
-
- /**
- * The Property.
- */
- public DependencyProperty property;
-
- /**
- * The Number.
- */
- public DependencyProperty<Integer> number;
-
- /**
- * Gets name.
- *
- * @return the name
- */
- public String getName()
- {
- return name;
- }
-
- /**
- * Sets name.
- *
- * @param name the name
- */
- public void setName(String name)
- {
- this.name = name;
- }
-
- /**
- * Gets property.
- *
- * @return the property
- */
- public DependencyProperty getProperty()
- {
- return property;
- }
-
- /**
- * Sets property.
- *
- * @param property the property
- */
- public void setProperty(DependencyProperty property)
- {
- this.property = property;
- }
-
- /**
- * Gets minimum.
- *
- * @return the minimum
- */
- public double getMinimum()
- {
- return minimum;
- }
-
- /**
- * Sets minimum.
- *
- * @param minimum the minimum
- */
- public void setMinimum(double minimum)
- {
- this.minimum = minimum;
- }
-
- /**
- * Gets maximum.
- *
- * @return the maximum
- */
- public double getMaximum()
- {
- return maximum;
- }
-
- /**
- * Sets maximum.
- *
- * @param maximum the maximum
- */
- public void setMaximum(double maximum)
- {
- this.maximum = maximum;
- }
-
- /**
- * Gets default value.
- *
- * @return the default value
- */
- public double getDefaultValue()
- {
- return defaultValue;
- }
-
- /**
- * Sets default value.
- *
- * @param defaultValue the default value
- */
- public void setDefaultValue(double defaultValue)
- {
- this.defaultValue = defaultValue;
- }
-
- /**
- * Gets type.
- *
- * @return the type
- */
- public Class<?> getType()
- {
- return type;
- }
-
- /**
- * Sets type.
- *
- * @param type the type
- */
- public void setType(Class<?> type)
- {
- this.type = type;
- }
-
- /**
- * Instantiates a new Parameter item.
- */
- public ParameterItem()
- {
- }
-
- /**
- * Instantiates a new Parameter item.
- *
- * @param name the name
- * @param minimum the minimum
- * @param maximum the maximum
- * @param defaultValue the default value
- * @param property the property
- * @param type the type
- */
- public ParameterItem(String name, double minimum, double maximum, double defaultValue, DependencyProperty property, Class<?> type)
- {
- this.name = name;
- this.minimum = minimum;
- this.maximum = maximum;
- this.defaultValue = defaultValue;
- this.property = property;
- this.type = type;
- }
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/editors/ParameterizedEditor.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/editors/ParameterizedEditor.java
deleted file mode 100644
index 64ab322b9..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/editors/ParameterizedEditor.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.twine.tango.sharedui.editors;
-
-import android.content.Context;
-import android.databinding.DataBindingUtil;
-import android.databinding.ViewDataBinding;
-import android.util.AttributeSet;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.LinearLayout;
-import android.widget.ScrollView;
-import android.widget.TextView;
-
-import com.twine.tango.sharedui.BR;
-import com.twine.tango.sharedui.R;
-
-import java.util.List;
-
-/**
- * Represents a view capable of presenting and controlling an {@link IParameterized} object.
- */
-public class ParameterizedEditor extends ScrollView
-{
- private IParameterized parameterizedObject;
-
- /**
- * Instantiates a new Parameterized editor.
- *
- * @param context the context
- * @param attrs the attrs
- */
- public ParameterizedEditor(Context context, AttributeSet attrs)
- {
- super(context, attrs);
- }
-
- /**
- * Gets parameterized object.
- *
- * @return the parameterized object
- */
- public IParameterized getParameterizedObject()
- {
- return parameterizedObject;
- }
-
- /**
- * Sets parameterized object.
- *
- * @param parameterizedObject the parameterized object
- */
- public void setParameterizedObject(IParameterized parameterizedObject)
- {
- this.parameterizedObject = parameterizedObject;
- propagateParameters();
- }
-
- private void propagateParameters()
- {
- this.removeAllViews();
-
- LinearLayout layout = new LinearLayout(this.getContext());
- layout.setOrientation(LinearLayout.VERTICAL);
-
- this.addView(layout);
-
- List<ParameterItem> items = parameterizedObject.getParameters();
-
- for (ParameterItem item : items)
- {
- View titleView = LayoutInflater.from(layout.getContext()).inflate(R.layout.editor_title,layout,false);
- ((TextView)titleView.findViewById(R.id.editor_title_txtView)).setText(item.getName());
- layout.addView(titleView);
-
- ViewDataBinding binding = DataBindingUtil.inflate(LayoutInflater.from(layout.getContext()), R.layout.editor_range, layout, false);
- binding.setVariable(BR.item, item);
- layout.addView(binding.getRoot());
- }
- }
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/DependencyProperty.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/DependencyProperty.java
deleted file mode 100644
index 95b42f357..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/DependencyProperty.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package com.twine.tango.sharedui.mvvm;
-
-import android.databinding.ObservableField;
-
-
-/**
- * Represents a property with support for change notification and data binding.
- *
- * @param <T> the type parameter
- */
-public class DependencyProperty<T> extends ObservableField<T>
-{
-
- private boolean blockNotify;
-
- /**
- * The interface On property changed callback.
- *
- * @param <T> the type parameter
- */
- public interface OnPropertyChangedCallback<T>
- {
- /**
- * On property changed.
- *
- * @param dp the dp
- * @param value the value
- */
- void onPropertyChanged(DependencyProperty<T> dp, T value);
- }
-
- private OnPropertyChangedCallback<T> callback;
-
- /**
- * Instantiates a new Dependency property.
- *
- * @param callback the callback
- */
- public DependencyProperty(OnPropertyChangedCallback<T> callback)
- {
- this.callback = callback;
- init();
- }
-
- /**
- * Instantiates a new Dependency property.
- *
- * @param defaultValue the default value
- * @param callback the callback
- */
- public DependencyProperty(T defaultValue, OnPropertyChangedCallback<T> callback)
- {
- this.set(defaultValue);
- this.callback = callback;
- init();
- }
-
- /**
- * Instantiates a new Dependency property.
- *
- * @param defaultValue the default value
- */
- public DependencyProperty(T defaultValue)
- {
- this.set(defaultValue);
- init();
- }
-
- /**
- * Instantiates a new Dependency property.
- */
- public DependencyProperty()
- {
- init();
- }
-
- /**
- * Sets no change.
- *
- * @param value the value
- */
- public void setNoChange(T value)
- {
- blockNotify = true;
- set(value);
- }
-
- @Override
- public void notifyChange()
- {
- if (!blockNotify)
- {
- super.notifyChange();
- }
-
- blockNotify = false;
- }
-
- private void init()
- {
- final DependencyProperty<T> that = this;
-
- this.addOnPropertyChangedCallback(new android.databinding.Observable.OnPropertyChangedCallback()
- {
- @Override
- public void onPropertyChanged(android.databinding.Observable observable, int i)
- {
- if (that.callback != null)
- {
- that.callback.onPropertyChanged(that, that.get());
- }
- }
- });
- }
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/FieldUtils.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/FieldUtils.java
deleted file mode 100644
index 8ec2fe33b..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/FieldUtils.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.twine.tango.sharedui.mvvm;
-
-import android.databinding.Observable.OnPropertyChangedCallback;
-import android.databinding.ObservableField;
-import android.support.annotation.NonNull;
-
-import io.reactivex.Observable;
-import io.reactivex.ObservableEmitter;
-import io.reactivex.ObservableOnSubscribe;
-import io.reactivex.functions.Cancellable;
-
-
-public class FieldUtils {
- /**
- * Converts an ObservableField to an Observable. Note that setting null value inside
- * ObservableField (except for initial value) throws a NullPointerException.
- * @return Observable that contains the latest value in the ObservableField
- */
- @NonNull
- public static <T> Observable<T> toObservable(@NonNull final ObservableField<T> field) {
-
- return Observable.create(new ObservableOnSubscribe<T>() {
- @Override
- public void subscribe(final ObservableEmitter<T> e) throws Exception {
- T initialValue = field.get();
- if (initialValue != null) {
- e.onNext(initialValue);
- }
- final OnPropertyChangedCallback callback = new OnPropertyChangedCallback() {
- @Override
- public void onPropertyChanged(android.databinding.Observable observable, int i) {
- e.onNext(field.get());
- }
- };
- field.addOnPropertyChangedCallback(callback);
- e.setCancellable(new Cancellable() {
- @Override
- public void cancel() throws Exception {
- field.removeOnPropertyChangedCallback(callback);
- }
- });
- }
- });
- }
-
- /**
- * A convenient wrapper for {@code ReadOnlyField#create(Observable)}
- * @return DataBinding field created from the specified Observable
- */
- @NonNull
- public static <T> ReadOnlyField<T> toField(@NonNull final Observable<T> observable) {
- return ReadOnlyField.create(observable);
- }
-} \ No newline at end of file
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/IView.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/IView.java
deleted file mode 100644
index 9f0ef2b9f..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/IView.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.twine.tango.sharedui.mvvm;
-
-import io.reactivex.functions.Consumer;
-
-/**
- * Represents a supervising controller pattern view.
- */
-public interface IView
-{
- /**
- * Attach view.
- */
- void attachView();
-
- /**
- * Validate fields.
- *
- * @param consumer the consumer
- */
- void validateFields(Consumer<Boolean> consumer);
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ReadOnlyField.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ReadOnlyField.java
deleted file mode 100644
index 067dd953b..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ReadOnlyField.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.twine.tango.sharedui.mvvm;
-
-import android.databinding.ObservableField;
-import android.support.annotation.NonNull;
-import android.util.Log;
-
-import java.util.HashMap;
-
-import io.reactivex.Observable;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.functions.Consumer;
-
-
-public class ReadOnlyField<T> extends ObservableField<T> {
- private final Observable<T> source;
- private final HashMap<OnPropertyChangedCallback, Disposable> subscriptions = new HashMap<>();
-
- public static <U> ReadOnlyField<U> create(@NonNull Observable<U> source) {
- return new ReadOnlyField<>(source);
- }
-
- private ReadOnlyField(@NonNull Observable<T> source) {
- super();
- this.source = source.doOnNext(new Consumer<T>() {
- @Override
- public void accept(T t) throws Exception {
- ReadOnlyField.super.set(t);
- }
- }).doOnError(new Consumer<Throwable>() {
- @Override
- public void accept(Throwable throwable) throws Exception {
- Log.e("Twine", "onError in source observable", throwable);
- }
- }).onErrorResumeNext(Observable.<T>empty()).share();
- }
-
- @Override
- public void set(T value) {
- }
-
- @Override
- public synchronized void addOnPropertyChangedCallback(OnPropertyChangedCallback callback) {
- super.addOnPropertyChangedCallback(callback);
- subscriptions.put(callback, source.subscribe());
- }
-
- @Override
- public synchronized void removeOnPropertyChangedCallback(OnPropertyChangedCallback callback) {
- super.removeOnPropertyChangedCallback(callback);
- Disposable subscription = subscriptions.remove(callback);
- if (subscription != null && !subscription.isDisposed()) {
- subscription.dispose();
- }
- }
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/RelayCommand.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/RelayCommand.java
deleted file mode 100644
index e6d638678..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/RelayCommand.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package com.twine.tango.sharedui.mvvm;
-
-import android.databinding.BindingAdapter;
-import android.view.View;
-
-
-/**
- * Represents bind-able relay command.
- */
-public class RelayCommand {
-
- /**
- * The interface On command execute.
- */
- public interface OnCommandExecute
- {
- /**
- * Execute.
- */
- void execute();
- }
-
- /**
- * The interface Command can execute.
- */
- public interface CommandCanExecute
- {
- /**
- * Can execute boolean.
- *
- * @return the boolean
- */
- boolean canExecute();
- }
-
- /**
- * The On command execute.
- */
- public OnCommandExecute onCommandExecute;
-
- /**
- * The Command can execute.
- */
- public CommandCanExecute commandCanExecute;
-
- private View bindedView;
-
- /**
- * Command binding.
- *
- * @param view the view
- * @param command the command
- */
- @BindingAdapter("android:command")
- public static void CommandBinding(View view, RelayCommand command)
- {
- command.bindedView = view;
-
- view.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- command.execute();
- }
- });
-
- command.invalidateCommand();
- }
-
- /**
- * Instantiates a new Relay command.
- *
- * @param onCommandExecute the on command execute
- */
- public RelayCommand(OnCommandExecute onCommandExecute) {
- this.onCommandExecute = onCommandExecute;
- }
-
- /**
- * Instantiates a new Relay command.
- *
- * @param onCommandExecute the on command execute
- * @param commandCanExecute the command can execute
- */
- public RelayCommand(OnCommandExecute onCommandExecute, CommandCanExecute commandCanExecute) {
- this.onCommandExecute = onCommandExecute;
- this.commandCanExecute = commandCanExecute;
- }
-
- /**
- * Instantiates a new Relay command.
- */
- public RelayCommand() {
-
- }
-
- /**
- * Execute.
- */
- public void execute()
- {
- onCommandExecute.execute();
- }
-
- /**
- * Invalidate command.
- */
- public void invalidateCommand()
- {
- if (commandCanExecute != null)
- {
- bindedView.setEnabled(commandCanExecute.canExecute());
- }
- }
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ViewModelBase.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ViewModelBase.java
deleted file mode 100644
index 1d2e5ad86..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ViewModelBase.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.twine.tango.sharedui.mvvm;
-
-import android.util.Log;
-
-import com.twine.tango.core.ExtendedObject;
-
-import java.lang.reflect.Field;
-
-
-/**
- * Represents a base View Model.
- *
- * @param <T> the type parameter
- */
-public abstract class ViewModelBase<T extends IView> extends ExtendedObject
-{
-
- /**
- * The View.
- */
- public T view; //TODO: Maybe use WeakReference<T> to not prevent garbage collector from disposing the activity ?
-
- /**
- * Attach view.
- *
- * @param view the view
- */
- public void attachView(T view) {
- this.view = view;
- onViewAttached(view);
- }
-
- /**
- * On view attached.
- *
- * @param view the view
- */
- protected void onViewAttached(T view) {
- Log.i("MVVM",view.getClass().getSimpleName() + " attached to " + this.getClass().getSimpleName());
- }
-
- /**
- * Invalidate commands.
- */
- protected void invalidateCommands()
- {
- for (Field field : this.getClass().getDeclaredFields())
- {
- if (field.getType() == RelayCommand.class)
- {
- try
- {
- ((RelayCommand)field.get(this)).invalidateCommand();
- } catch (IllegalAccessException e)
- {
- e.printStackTrace();
- }
- }
- }
- }
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/navigation/AndroidNavigationProvider.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/navigation/AndroidNavigationProvider.java
deleted file mode 100644
index 545793a5d..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/navigation/AndroidNavigationProvider.java
+++ /dev/null
@@ -1,120 +0,0 @@
-package com.twine.tango.sharedui.navigation;
-
-import android.app.FragmentManager;
-import android.app.FragmentTransaction;
-import android.support.v7.app.AppCompatActivity;
-
-import com.twine.tango.core.ExtendedObject;
-import com.twine.tango.core.IAction1;
-import com.twine.tango.sharedui.R;
-import com.twine.tango.sharedui.containers.FragmentBase;
-
-/**
- * Represents an android navigation provider.
- */
-public class AndroidNavigationProvider extends ExtendedObject implements INavigationProvider
-{
- private AppCompatActivity activity;
- private FragmentBase currentFragment;
- private int fragment_container;
- private String basePackagePath;
-
- @Override
- public void registerNavigationActivity(AppCompatActivity activity, int fragmentContainerId, String basePackagePath)
- {
- this.activity = activity;
- this.fragment_container = fragmentContainerId;
- this.basePackagePath = basePackagePath;
- }
-
-
- @Override
- public void navigateTo(Enum fragmentValue)
- {
- navigateTo(fragmentValue.name());
- }
-
- @Override
- public void navigateTo(Enum fragmentValue, IAction1<FragmentBase> onCreateListener)
- {
- navigateTo(fragmentValue.name(), onCreateListener);
- }
-
- @Override
- public void navigateTo(String fragmentName)
- {
- navigateTo(fragmentName, null);
- }
-
- @Override
- public void navigateTo(String fragmentName, IAction1<FragmentBase> onCreateListener)
- {
- if (activity == null)
- {
- logManager.log(new NullPointerException("No navigation activity registered."));
- return;
- }
-
- fragmentName = basePackagePath + "." + fragmentName.toLowerCase() + "." + fragmentName + "Fragment";
-
- FragmentManager fragmentManager = activity.getFragmentManager();
- FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
- FragmentBase fragment;
-
- fragment = (FragmentBase) fragmentManager.findFragmentByTag(fragmentName);
-
- if (fragment == null)
- {
- try
- {
- fragment = (FragmentBase) Class.forName(fragmentName).newInstance();
- } catch (Exception ex)
- {
- logManager.log(ex,"Fragment " + fragmentName + " not found.");
- return;
- }
- }
-
-// Slide enterSlide = new Slide();
-// enterSlide.setSlideEdge(Gravity.END);
-// enterSlide.setDuration(300);
-//
-// Fade enterFade = new Fade(Fade.IN);
-// enterFade.setDuration(300);
-//
-// TransitionSet enterGroup = new TransitionSet();
-// enterGroup.addTransition(enterSlide);
-// enterGroup.addTransition(enterFade);
-//
-// Slide exitSlide = new Slide();
-// Fade exitFade = new Fade(Fade.OUT);
-//
-// exitSlide.setSlideEdge(Gravity.START);
-// exitSlide.setDuration(300);
-// exitFade.setDuration(300);
-//
-// TransitionSet exitGroup = new TransitionSet();
-// exitGroup.addTransition(exitSlide);
-// exitGroup.addTransition(exitFade);
-//
-// fragment.setEnterTransition(enterGroup);
-// fragment.setExitTransition(exitGroup);
-
- fragment.setOnCreateListener(onCreateListener);
-
- fragmentTransaction.setCustomAnimations(R.animator.slide_in_left, R.animator.slide_out_left, R.animator.slide_out_right, R.animator.slide_in_right);
- fragmentTransaction.replace(fragment_container, fragment).addToBackStack(fragmentName);
- fragmentTransaction.commit();
-
-// try
-// {
-// //noinspection ConstantConditions
-// //fragment.getView().setFocusableInTouchMode(true);
-// } catch (Exception ex)
-// {
-// logManager.log(ex);
-// }
-
- currentFragment = fragment;
- }
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/navigation/INavigationProvider.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/navigation/INavigationProvider.java
deleted file mode 100644
index cc333cfd8..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/navigation/INavigationProvider.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.twine.tango.sharedui.navigation;
-
-import android.support.v7.app.AppCompatActivity;
-
-import com.twine.tango.core.IAction1;
-import com.twine.tango.sharedui.containers.FragmentBase;
-
-/**
- * Represents an activity fragments navigator.
- */
-public interface INavigationProvider
-{
- /**
- * Register navigation activity.
- *
- * @param activity the activity
- * @param fragmentContainerId the fragment container id
- * @param basePackagePath the base package path
- */
- void registerNavigationActivity(AppCompatActivity activity, int fragmentContainerId, String basePackagePath);
-
- /**
- * Navigate to the specified fragment name.
- *
- * @param fragmentName the fragment name
- */
- void navigateTo(String fragmentName);
-
- /**
- * Navigate to to the specified fragment name.
- *
- * @param fragmentName the fragment name
- * @param onCreateListener the on create listener
- */
- void navigateTo(String fragmentName, IAction1<FragmentBase> onCreateListener);
-
- /**
- * Navigate to to the specified enum value fragment name.
- *
- * @param fragmentValue the fragment value
- */
- void navigateTo(Enum fragmentValue);
-
- /**
- * Navigate to to the specified enum value fragment name.
- *
- * @param fragmentValue the fragment value
- * @param onCreateListener the on create listener
- */
- void navigateTo(Enum fragmentValue, IAction1<FragmentBase> onCreateListener);
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/notifications/AndroidNotificationProvider.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/notifications/AndroidNotificationProvider.java
deleted file mode 100644
index e1a099093..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/notifications/AndroidNotificationProvider.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.twine.tango.sharedui.notifications;
-
-import android.content.Context;
-import android.support.v7.app.AlertDialog;
-import android.widget.Toast;
-
-import com.twine.tango.core.IAction;
-import com.twine.tango.sharedui.mvvm.IView;
-
-
-/**
- * Represents the default {@link INotificationProvider}.
- */
-public class AndroidNotificationProvider implements INotificationProvider
-{
-
- private Context context;
-
- /**
- * Instantiates a new Android notification provider.
- *
- * @param context the context
- */
- public AndroidNotificationProvider(Context context)
- {
- this.context = context;
- }
-
- @Override
- public void toast(String message)
- {
- Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
- }
-
- @Override
- public void showMessage(IView view, String message)
- {
- showMessage(view, message, null);
- }
-
- @Override
- public void showMessage(IView view, String message, IAction action)
- {
- AlertDialog.Builder builder = new AlertDialog.Builder((Context) view);
- builder.setMessage("Look at this dialog!")
- .setCancelable(false)
- .setTitle("Tango")
- .setMessage(message)
- .setIcon(android.R.drawable.ic_dialog_info)
- .setPositiveButton("OK", (dialog, id) ->
- {
- if (action != null) action.invoke();
- });
- AlertDialog alert = builder.create();
- alert.show();
- }
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/notifications/INotificationProvider.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/notifications/INotificationProvider.java
deleted file mode 100644
index 241c8a49c..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/notifications/INotificationProvider.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.twine.tango.sharedui.notifications;
-
-import com.twine.tango.core.IAction;
-import com.twine.tango.sharedui.mvvm.IView;
-
-
-/**
- * Represents a notifications provider service.
- */
-public interface INotificationProvider
-{
-
- /**
- * Toast.
- *
- * @param message the message
- */
- void toast(String message);
-
- /**
- * Show message.
- *
- * @param view the view
- * @param message the message
- */
- void showMessage(IView view, String message);
-
- /**
- * Show message.
- *
- * @param view the view
- * @param message the message
- * @param action the action
- */
- void showMessage(IView view, String message, IAction action);
-
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/paging/PagerAdapter.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/paging/PagerAdapter.java
deleted file mode 100644
index a74848816..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/paging/PagerAdapter.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.twine.tango.sharedui.paging;
-
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentPagerAdapter;
-
-import com.twine.tango.sharedui.containers.FragmentBaseV4;
-
-import java.util.ArrayList;
-import java.util.List;
-
-
-/**
- * Represents a fragments paging adapter.
- */
-public class PagerAdapter extends FragmentPagerAdapter {
-
- private List<FragmentBaseV4> fragments;
- private int currentPosition;
-
- /**
- * Instantiates a new Pager adapter.
- *
- * @param fm the fm
- */
- public PagerAdapter(FragmentManager fm) {
- super(fm);
-
- fragments = new ArrayList<>();
- }
-
- /**
- * Add fragment.
- *
- * @param fragment the fragment
- */
- public void addFragment(FragmentBaseV4 fragment)
- {
- fragments.add(fragment);
- }
-
- /**
- * Remove fragment.
- *
- * @param fragment the fragment
- */
- public void removeFragment(FragmentBaseV4 fragment)
- {
- fragments.remove(fragment);
- }
-
- @Override
- public Fragment getItem(int position) {
- currentPosition = position;
- return fragments.get(position);
- }
-
- /**
- * Gets current fragment.
- *
- * @param <T> the type parameter
- * @return the current fragment
- */
- @SuppressWarnings("unchecked")
- public <T> T getCurrentFragment() {
- return (T) getItem(currentPosition);
- }
-
- @Override
- public int getCount() {
- return fragments.size();
- }
-
- @Override
- public CharSequence getPageTitle(int position) {
- if (fragments.get(position) != null) {
- return fragments.get(position).getTitle();
- } else {
- return "";
- }
- }
-}
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/paging/PagerZoomTransform.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/paging/PagerZoomTransform.java
deleted file mode 100644
index 4fefcff13..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/paging/PagerZoomTransform.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.twine.tango.sharedui.paging;
-
-import android.support.v4.view.ViewPager;
-import android.view.View;
-
-/**
- * Represents an interactive view pager transformer.
- */
-public class PagerZoomTransform implements ViewPager.PageTransformer {
- private static final float MIN_SCALE = 0.85f;
- private static final float MIN_ALPHA = 0.5f;
-
- public void transformPage(View view, float position) {
- int pageWidth = view.getWidth();
- int pageHeight = view.getHeight();
-
- if (position < -1) { // [-Infinity,-1)
- // This page is way off-screen to the left.
- view.setAlpha(0);
-
- } else if (position <= 1) { // [-1,1]
- // Modify the default slide transition to shrink the page as well
- float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
- float vertMargin = pageHeight * (1 - scaleFactor) / 2;
- float horzMargin = pageWidth * (1 - scaleFactor) / 2;
- if (position < 0) {
- view.setTranslationX(horzMargin - vertMargin / 2);
- } else {
- view.setTranslationX(-horzMargin + vertMargin / 2);
- }
-
- // Scale the page down (between MIN_SCALE and 1)
- view.setScaleX(scaleFactor);
- view.setScaleY(scaleFactor);
-
- // Fade the page relative to its size.
- view.setAlpha(MIN_ALPHA +
- (scaleFactor - MIN_SCALE) /
- (1 - MIN_SCALE) * (1 - MIN_ALPHA));
-
- } else { // (1,+Infinity]
- // This page is way off-screen to the right.
- view.setAlpha(0);
- }
- }
-}
-
diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/validation/IViewValidator.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/validation/IViewValidator.java
deleted file mode 100644
index 710d57e49..000000000
--- a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/validation/IViewValidator.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.twine.tango.sharedui.validation;
-
-import com.mobsandgeeks.saripaar.ValidationError;
-import com.mobsandgeeks.saripaar.Validator;
-
-import java.util.List;
-
-
-/**
- * Represents a view with support for auto field validation.
- */
-public class IViewValidator implements Validator.ValidationListener {
-
- @Override
- public void onValidationSucceeded() {
-
- }
-
- @Override
- public void onValidationFailed(List<ValidationError> errors) {
-
- }
-}