void OnGUI() { Initialize(); // Toolbar. using (new EditorGUILayout.HorizontalScope(EditorStyles.toolbar, GUILayout.Height(15f))) { Action <string> onChangeSearchText = x => { searchText = x; displayContents = GetDisplayMasters(); }; Action onSearchCancel = () => { searchText = string.Empty; displayContents = GetDisplayMasters(); }; EditorLayoutTools.DrawToolbarSearchTextField(searchText, onChangeSearchText, onSearchCancel, GUILayout.MinWidth(150f)); GUILayout.FlexibleSpace(); if (EnableLoadButton) { if (GUILayout.Button("Load", EditorStyles.toolbarButton, GUILayout.Width(40f))) { LoadMasterData().Subscribe(_ => Repaint()).AddTo(Disposable); } } if (GUILayout.Button("Close All", EditorStyles.toolbarButton, GUILayout.Width(60f))) { var windows = RecordViewerWindow.FindAllWindow(); windows.ForEach(x => x.Close()); } } // ScrollView. if (displayContents != null) { GUILayout.Space(2f); using (new ContentsScope()) { using (var scrollViewScope = new EditorGUILayout.ScrollViewScope(scrollPosition)) { for (var i = 0; i < displayContents.Length; i++) { var content = displayContents[i]; var masterName = content.GetDisplayMasterName(); var color = content.HasChangedRecord ? Color.yellow : Color.white; using (new BackgroundColorScope(color)) { if (GUILayout.Button(masterName)) { var recordViewerWindow = RecordViewerWindow.Open(content); if (recordViewerWindow != null) { recordViewerWindow.OnChangeRecordAsObservable() .Subscribe(_ => Repaint()) .AddTo(Disposable); } } } if (i < displayContents.Length - 1) { GUILayout.Space(3f); } } scrollPosition = scrollViewScope.scrollPosition; } } GUILayout.Space(5f); } }
void OnDestroy() { var windows = RecordViewerWindow.FindAllWindow(); windows.ForEach(x => x.Close()); }