/*
 * @author Valentin Simonov / http://va.lent.in/
 */

#if TOUCHSCRIPT_TUIO
using TouchScript.InputSources;
using UnityEditor;
using UnityEngine;

namespace TouchScript.Editor.InputSources
{
    [CustomEditor(typeof(TuioInput), true)]
    internal sealed class TuioInputEditor : InputSourceEditor
    {
        private static readonly GUIContent INPUT_TYPES = new GUIContent("Input Types", "Supported input types.");

        private TuioInput instance;
        private SerializedProperty supportedInputs;
        private SerializedProperty tuioPort;

        protected override void OnEnable()
        {
            base.OnEnable();

            instance = target as TuioInput;
            supportedInputs = serializedObject.FindProperty("supportedInputs");
            tuioPort = serializedObject.FindProperty("tuioPort");
        }

        public override void OnInspectorGUI()
        {
            serializedObject.UpdateIfDirtyOrScript();

            EditorGUILayout.PropertyField(tuioPort);

            var r = EditorGUILayout.GetControlRect(true, 16f, EditorStyles.layerMaskField);
            var label = EditorGUI.BeginProperty(r, INPUT_TYPES, supportedInputs);
            EditorGUI.BeginChangeCheck();
            r = EditorGUI.PrefixLabel(r, label);
            var sMask = (TuioInput.InputType)EditorGUI.EnumMaskField(r, instance.SupportedInputs);
            if (EditorGUI.EndChangeCheck())
            {
                instance.SupportedInputs = sMask;
                EditorUtility.SetDirty(instance);
            }
            EditorGUI.EndProperty();

            serializedObject.ApplyModifiedProperties();
            base.OnInspectorGUI();
        }
    }
}
#endif