protected void PropertyField(SerializedProperty property)
        {
            Assert.IsNotNull(property);
            var title = ChartEditorHelper.GetContent(property.displayName);

            PropertyField(property, title);
        }
        protected void PropertyTwoFiled(string relativePropName)
        {
            var m_DrawRect = GUILayoutUtility.GetRect(1f, 17f);
            var prop       = FindProperty(relativePropName);

            ChartEditorHelper.MakeTwoField(ref m_DrawRect, m_DrawRect.width, prop, prop.displayName);
        }
 protected void PropertyField(SerializedProperty prop, SerializedProperty relativeProp)
 {
     if (!ChartEditorHelper.PropertyField(ref m_DrawRect, m_Heights, m_KeyName, relativeProp))
     {
         Debug.LogError("PropertyField ERROR:" + prop.displayName + ", " + relativeProp);
     }
 }
Example #4
0
        public void OnGUI()
        {
            if (chart == null)
            {
                return;
            }

            for (int i = 0; i < m_Editors.Count; i++)
            {
                var    editor = m_Editors[i];
                string title  = editor.GetDisplayTitle();
                int    id     = i;

                bool displayContent = ChartEditorHelper.DrawHeader(
                    title,
                    editor.baseProperty,
                    editor.showProperty,
                    () => { ResetComponentEditor(id); },
                    () => { RemoveComponentEditor(id); }
                    );
                if (displayContent)
                {
                    editor.OnInternalInspectorGUI();
                }
            }

            if (m_Editors.Count == 0)
            {
                EditorGUILayout.HelpBox("No componnet.", MessageType.Info);
            }
        }
Example #5
0
        private void AddComponent()
        {
            if (GUILayout.Button(Styles.btnAddComponent))
            {
                var menu = new GenericMenu();
                foreach (var type in GetMainComponentTypeNames())
                {
                    var  title  = ChartEditorHelper.GetContent(type.Name);
                    bool exists = !m_Chart.CanAddChartComponent(type);
                    if (!exists)
                    {
                        menu.AddItem(title, false, () =>
                        {
                            m_ComponentList.AddChartComponent(type);
                        });
                    }
                    else
                    {
                        menu.AddDisabledItem(title);
                    }
                }

                menu.ShowAsContext();
            }
        }
        private void DrawSerieDataDetail(SerializedProperty m_Datas, int index)
        {
            EditorGUI.indentLevel++;
            var serieData = m_Datas.GetArrayElementAtIndex(index);
            var m_Name    = serieData.FindPropertyRelative("m_Name");

            PropertyField(m_Name);
            if (serie.GetType().IsDefined(typeof(SerieDataExtraFieldAttribute), false))
            {
                var attribute = serie.GetType().GetAttribute <SerieDataExtraFieldAttribute>();
                foreach (var field in attribute.fields)
                {
                    PropertyField(serieData.FindPropertyRelative(field));
                }
            }

            serieDataMenus.Clear();
            if (serie.GetType().IsDefined(typeof(SerieDataExtraComponentAttribute), false))
            {
                var attribute = serie.GetType().GetAttribute <SerieDataExtraComponentAttribute>();
                foreach (var type in attribute.types)
                {
                    var size = serieData.FindPropertyRelative(SerieData.extraComponentMap[type]).arraySize;
                    serieDataMenus.Add(new HeaderMenuInfo("Add " + type.Name, () =>
                    {
                        serie.GetSerieData(index).GetOrAddComponent(type);
                        EditorUtility.SetDirty(chart);
                    }, size == 0));
                }
                foreach (var type in attribute.types)
                {
                    var size = serieData.FindPropertyRelative(SerieData.extraComponentMap[type]).arraySize;
                    serieDataMenus.Add(new HeaderMenuInfo("Remove " + type.Name, () =>
                    {
                        serie.GetSerieData(index).RemoveComponent(type);
                        EditorUtility.SetDirty(chart);
                    }, size > 0));
                }
            }
            serieDataMenus.Add(new HeaderMenuInfo("Remove All", () =>
            {
                serie.GetSerieData(index).RemoveAllComponent();
            }, true));
            m_DataComponentFoldout = ChartEditorHelper.DrawHeader("Component", m_DataComponentFoldout, false, null, null, serieDataMenus);
            if (m_DataComponentFoldout)
            {
                foreach (var kv in SerieData.extraComponentMap)
                {
                    var prop = serieData.FindPropertyRelative(kv.Value);
                    if (prop.arraySize > 0)
                    {
                        PropertyField(prop.GetArrayElementAtIndex(0));
                    }
                }
            }
            EditorGUI.indentLevel--;
        }
 protected void PropertyTwoFiled(SerializedProperty prop, SerializedProperty relativeListProp,
                                 string labelName = null)
 {
     if (string.IsNullOrEmpty(labelName))
     {
         labelName = relativeListProp.displayName;
     }
     ChartEditorHelper.MakeTwoField(ref m_DrawRect, m_DefaultWidth, relativeListProp, labelName);
     m_Heights[m_KeyName] += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
 }
        protected SerializedProperty PropertyField(string path)
        {
            Assert.IsNotNull(path);
            var property = FindProperty(path);

            Assert.IsNotNull(property, "Can't find:" + path);
            var title = ChartEditorHelper.GetContent(property.displayName);

            PropertyField(property, title);
            return(property);
        }
 protected void PropertyFiledMore(System.Action action)
 {
     m_MoreFoldout = ChartEditorHelper.DrawHeader(MORE, m_MoreFoldout, false, null, null);
     if (m_MoreFoldout)
     {
         if (action != null)
         {
             action();
         }
     }
 }
 protected void PropertyField(SerializedProperty prop, string relativePropName)
 {
     if (IngorePropertys.Contains(relativePropName))
     {
         return;
     }
     if (!ChartEditorHelper.PropertyField(ref m_DrawRect, m_Heights, m_KeyName, prop, relativePropName))
     {
         Debug.LogError("PropertyField ERROR:" + prop.displayName + ", " + relativePropName);
     }
 }
        protected void PropertyListField(string relativePropName, bool showOrder = true, params HeaderMenuInfo[] menus)
        {
            var m_DrawRect = GUILayoutUtility.GetRect(1f, 17f);
            var height     = 0f;
            var prop       = FindProperty(relativePropName);

            prop.isExpanded = ChartEditorHelper.MakeListWithFoldout(ref m_DrawRect, ref height,
                                                                    prop, prop.isExpanded, showOrder, true, menus);
            if (prop.isExpanded)
            {
                GUILayoutUtility.GetRect(1f, height - 17);
            }
        }
 protected bool MakeFoldout(SerializedProperty prop, string relativePropName)
 {
     if (string.IsNullOrEmpty(relativePropName))
     {
         return(ChartEditorHelper.MakeFoldout(ref m_DrawRect, m_Heights, m_PropToggles, m_KeyName,
                                              m_DisplayName, null));
     }
     else
     {
         var relativeProp = prop.FindPropertyRelative(relativePropName);
         return(ChartEditorHelper.MakeFoldout(ref m_DrawRect, m_Heights, m_PropToggles, m_KeyName,
                                              m_DisplayName, relativeProp));
     }
 }
        protected void PropertyListField(SerializedProperty prop, string relativePropName, bool showOrder = true)
        {
            if (IngorePropertys.Contains(relativePropName))
            {
                return;
            }
            var height        = m_Heights[m_KeyName];
            var toggleKeyName = m_KeyName + relativePropName;

            m_DataToggles[toggleKeyName] = ChartEditorHelper.MakeListWithFoldout(ref m_DrawRect, ref height,
                                                                                 prop.FindPropertyRelative(relativePropName),
                                                                                 m_DataToggles.ContainsKey(toggleKeyName) && m_DataToggles[toggleKeyName], showOrder, true);
            m_Heights[m_KeyName] = height;
        }
        protected void PropertyField(string path)
        {
            var property = FindProperty(path);

            if (property != null)
            {
                var title = ChartEditorHelper.GetContent(property.displayName);
                PropertyField(property, title);
            }
            else
            {
                Debug.LogError("Property not exist:" + baseProperty.propertyPath + "," + path);
            }
        }
 protected bool MakeComponentFoldout(SerializedProperty prop, string relativePropName, bool relativePropEnable,
                                     params HeaderMenuInfo[] menus)
 {
     if (string.IsNullOrEmpty(relativePropName))
     {
         return(ChartEditorHelper.MakeComponentFoldout(ref m_DrawRect, m_Heights, m_PropToggles, m_KeyName,
                                                       m_DisplayName, null, null, relativePropEnable, menus));
     }
     else
     {
         var relativeProp = prop.FindPropertyRelative(relativePropName);
         return(ChartEditorHelper.MakeComponentFoldout(ref m_DrawRect, m_Heights, m_PropToggles, m_KeyName,
                                                       m_DisplayName, relativeProp, null, relativePropEnable, menus));
     }
 }
Example #16
0
 public void OnGUI()
 {
     if (chart == null)
     {
         return;
     }
     if (chart.debug.foldSeries)
     {
         m_SerieFoldout = ChartEditorHelper.DrawHeader("Series", m_SerieFoldout, false, null, null);
         if (m_SerieFoldout)
         {
             DrawSeries();
         }
     }
     else
     {
         DrawSeries();
     }
 }
Example #17
0
        public static bool MakeListWithFoldout(ref Rect drawRect, ref float height, SerializedProperty listProp,
                                               bool foldout, bool showOrder, bool showSize, params HeaderMenuInfo[] menus)
        {
            var rawWidth     = drawRect.width;
            var headerHeight = DrawSplitterAndBackground(drawRect);
            var foldoutRect  = drawRect;

            foldoutRect.xMax -= 10;
            bool flag = EditorGUI.Foldout(foldoutRect, foldout, listProp.displayName, true);

            ChartEditorHelper.DrawMenu(drawRect, menus);
            height        += headerHeight;
            drawRect.y    += headerHeight;
            drawRect.width = rawWidth;
            if (flag)
            {
                MakeList(ref drawRect, ref height, listProp, showOrder, showSize);
            }
            return(flag);
        }
Example #18
0
 protected virtual void OnStartInspectorGUI()
 {
     ShowVersion();
     m_BaseFoldout = ChartEditorHelper.DrawHeader("Base", m_BaseFoldout, false, null, null);
     if (m_BaseFoldout)
     {
         EditorGUILayout.PropertyField(m_Script);
         EditorGUILayout.PropertyField(m_ChartName);
         EditorGUILayout.PropertyField(m_RaycastTarget);
         if (XChartsMgr.IsRepeatChartName(m_Chart, m_ChartName.stringValue))
         {
             EditorGUILayout.BeginHorizontal();
             EditorGUILayout.HelpBox("chart name is repeated: " + m_ChartName.stringValue, MessageType.Error);
             EditorGUILayout.EndHorizontal();
         }
     }
     EditorGUILayout.PropertyField(m_Theme);
     EditorGUILayout.PropertyField(m_Settings);
     m_ComponentList.OnGUI();
     m_SerieList.OnGUI();
 }
Example #19
0
 void DrawSeries()
 {
     for (int i = 0; i < m_Editors.Count; i++)
     {
         var    editor         = m_Editors[i];
         string title          = editor.GetDisplayTitle();
         bool   displayContent = ChartEditorHelper.DrawHeader(
             title,
             editor.baseProperty,
             editor.showProperty,
             editor.menus);
         if (displayContent)
         {
             editor.OnInternalInspectorGUI();
         }
     }
     if (m_Editors.Count <= 0)
     {
         EditorGUILayout.HelpBox("No serie.", MessageType.Info);
     }
 }
Example #20
0
 private void AddSerie()
 {
     if (GUILayout.Button(Styles.btnAddSerie))
     {
         var menu = new GenericMenu();
         foreach (var type in GetSerieTypeNames())
         {
             var title = ChartEditorHelper.GetContent(type.Name);
             if (m_Chart.CanAddSerie(type))
             {
                 menu.AddItem(title, false, () =>
                 {
                     m_SerieList.AddSerie(type);
                 });
             }
             else
             {
                 menu.AddDisabledItem(title);
             }
         }
         menu.ShowAsContext();
     }
 }
        private void DrawSerieData(int dimension, SerializedProperty m_Datas, int index, bool showName)
        {
            bool flag;

            if (!m_DataElementFoldout.TryGetValue(index, out flag))
            {
                flag = false;
                m_DataElementFoldout[index] = false;
            }
            var fieldCount = dimension + (showName ? 1 : 0);

            m_DataElementFoldout[index] = ChartEditorHelper.DrawHeader("SerieData " + index, flag, false, null,
                                                                       delegate(Rect drawRect)
            {
                //drawRect.width -= 2f;
                var maxX         = drawRect.xMax;
                var currentWidth = drawRect.width;
                var lastX        = drawRect.x;
                var lastWid      = drawRect.width;
                var lastFieldWid = EditorGUIUtility.fieldWidth;
                var lastLabelWid = EditorGUIUtility.labelWidth;
                var serieData    = m_Datas.GetArrayElementAtIndex(index);
                var sereName     = serieData.FindPropertyRelative("m_Name");
                var data         = serieData.FindPropertyRelative("m_Data");
#if UNITY_2019_3_OR_NEWER
                var gap     = 2;
                var namegap = 3;
#else
                var gap     = 0;
                var namegap = 0;
#endif
                if (fieldCount <= 1)
                {
                    while (2 > data.arraySize)
                    {
                        var value = data.arraySize == 0 ? index : 0;
                        data.arraySize++;
                        data.GetArrayElementAtIndex(data.arraySize - 1).floatValue = value;
                    }
                    SerializedProperty element = data.GetArrayElementAtIndex(1);
                    var startX    = drawRect.x + EditorGUIUtility.labelWidth - EditorGUI.indentLevel * 15 + gap;
                    drawRect.x    = startX;
                    drawRect.xMax = maxX;
                    EditorGUI.PropertyField(drawRect, element, GUIContent.none);
                }
                else
                {
                    var startX       = drawRect.x + EditorGUIUtility.labelWidth - EditorGUI.indentLevel * 15 + gap;
                    var dataWidTotal = (currentWidth - (startX + 20.5f + 1));
                    var dataWid      = dataWidTotal / fieldCount;
                    var xWid         = dataWid - 2;
                    for (int i = 0; i < dimension; i++)
                    {
                        var dataCount = i < 1 ? 2 : i + 1;
                        while (dataCount > data.arraySize)
                        {
                            var value = data.arraySize == 0 ? index : 0;
                            data.arraySize++;
                            data.GetArrayElementAtIndex(data.arraySize - 1).floatValue = value;
                        }
                        drawRect.x                 = startX + i * xWid;
                        drawRect.width             = dataWid + 25;
                        SerializedProperty element = data.GetArrayElementAtIndex(dimension <= 1 ? 1 : i);
                        EditorGUI.PropertyField(drawRect, element, GUIContent.none);
                    }
                    if (showName)
                    {
                        drawRect.x     = startX + (fieldCount - 1) * xWid;
                        drawRect.width = dataWid + 40 + dimension * namegap - 2.5f;
                        EditorGUI.PropertyField(drawRect, sereName, GUIContent.none);
                    }
                    EditorGUIUtility.fieldWidth = lastFieldWid;
                    EditorGUIUtility.labelWidth = lastLabelWid;
                }
            });
            if (m_DataElementFoldout[index])
            {
                if (!(serie is ISimplifiedSerie))
                {
                    DrawSerieDataDetail(m_Datas, index);
                }
            }
        }
        private void PropertyFieldData()
        {
            m_DataFoldout = ChartEditorHelper.DrawHeader("Data", m_DataFoldout, false, null, null,
                                                         new HeaderMenuInfo("Import ECharts Data", () =>
            {
                PraseExternalDataEditor.UpdateData(chart, serie, null);
                PraseExternalDataEditor.ShowWindow();
            }));
            if (!m_DataFoldout)
            {
                return;
            }
            EditorGUI.indentLevel++;
            var m_Datas         = FindProperty("m_Data");
            var m_DataDimension = FindProperty("m_ShowDataDimension");
            var m_ShowDataName  = FindProperty("m_ShowDataName");

            PropertyField(m_ShowDataName);
            PropertyField(m_DataDimension);
            var listSize = m_Datas.arraySize;

            listSize = EditorGUILayout.IntField("Size", listSize);
            if (listSize < 0)
            {
                listSize = 0;
            }
            if (m_DataDimension.intValue < 1)
            {
                m_DataDimension.intValue = 1;
            }
            int  dimension = m_DataDimension.intValue;
            bool showName  = m_ShowDataName.boolValue;

            if (listSize != m_Datas.arraySize)
            {
                while (listSize > m_Datas.arraySize)
                {
                    m_Datas.arraySize++;
                }
                while (listSize < m_Datas.arraySize)
                {
                    m_Datas.arraySize--;
                }
            }
            if (listSize > 30) // && !XCSettings.editorShowAllListData)
            {
                int num = listSize > 10 ? 10 : listSize;
                for (int i = 0; i < num; i++)
                {
                    DrawSerieData(dimension, m_Datas, i, showName);
                }
                if (num >= 10)
                {
                    ChartEditorHelper.DrawHeader("... ", false, false, null, null);
                    DrawSerieData(dimension, m_Datas, listSize - 1, showName);
                }
            }
            else
            {
                for (int i = 0; i < m_Datas.arraySize; i++)
                {
                    DrawSerieData(dimension, m_Datas, i, showName);
                }
            }
            EditorGUI.indentLevel--;
        }