Example #1
0
        private void DrawBlockingListGUI()
        {
            var lineColor1 = new Color(0.3f, 0.3f, 0.3f, 0.5f);
            var lineColor2 = new Color(0.3f, 0.3f, 0.3f, 0.3f);

            var maxId = infos.Any() ? infos.Select(x => x.id).Max() : 0;

            var idLabelSize = EditorStyles.label.CalcSize(new GUIContent(maxId.ToString()));

            using (new EditorGUILayout.VerticalScope(listStyle))
            {
                using (var scrollView = new EditorGUILayout.ScrollViewScope(listScrollPosition, GUILayout.ExpandWidth(true)))
                {
                    for (var i = 0; i < infos.Length; i++)
                    {
                        var info = infos[i];

                        var color = i % 2 == 0 ? lineColor1 : lineColor2;

                        if (selectionId == info.id)
                        {
                            color = SelectionLineColor;
                        }

                        var backgroundStyle = BackgroundStyle.Get(color);

                        using (new EditorGUILayout.HorizontalScope(backgroundStyle))
                        {
                            EditorGUILayout.LabelField(info.id.ToString(), GUILayout.Width(idLabelSize.x));

                            GUILayout.Space(4f);

                            var size = EditorStyles.label.CalcSize(new GUIContent(info.from));

                            if (GUILayout.Button(info.from, EditorStyles.label, GUILayout.Width(size.x)))
                            {
                                selectionId = info.id;
                            }
                        }
                    }

                    listScrollPosition = scrollView.scrollPosition;
                }
            }
        }