| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 | 
							- using UnityEditor.Experimental.GraphView;
 
- using UnityEngine.UIElements;
 
- using UnityEditor;
 
- using UnityEngine;
 
- using System;
 
- namespace GraphProcessor
 
- {
 
- 	public abstract class PinnedElementView : GraphElement
 
- 	{
 
- 		protected PinnedElement	pinnedElement;
 
- 		protected VisualElement	root;
 
- 		protected VisualElement	content;
 
- 		protected VisualElement	header;
 
- 		protected event Action	onResized;
 
- 		VisualElement			main;
 
- 		Label					titleLabel;
 
- 		bool					_scrollable;
 
- 		ScrollView				scrollView;
 
-         static readonly string	pinnedElementStyle = "GraphProcessorStyles/PinnedElementView";
 
-         static readonly string	pinnedElementTree = "GraphProcessorElements/PinnedElement";
 
-         public override string title
 
-         {
 
-             get { return titleLabel.text; }
 
-             set { titleLabel.text = value; }
 
-         }
 
-         protected bool scrollable
 
-         {
 
-             get
 
-             {
 
-                 return _scrollable;
 
-             }
 
-             set
 
-             {
 
-                 if (_scrollable == value)
 
-                     return;
 
-                 _scrollable = value;
 
-                 style.position = Position.Absolute;
 
-                 if (_scrollable)
 
-                 {
 
-                     content.RemoveFromHierarchy();
 
-                     root.Add(scrollView);
 
-                     scrollView.Add(content);
 
-                     AddToClassList("scrollable");
 
-                 }
 
-                 else
 
-                 {
 
- 					scrollView.RemoveFromHierarchy();
 
- 					content.RemoveFromHierarchy();
 
- 					root.Add(content);
 
-                     RemoveFromClassList("scrollable");
 
-                 }
 
-             }
 
-         }
 
- 		public PinnedElementView()
 
- 		{
 
-             var tpl = Resources.Load<VisualTreeAsset>(pinnedElementTree);
 
-             styleSheets.Add(Resources.Load<StyleSheet>(pinnedElementStyle));
 
-             main = tpl.CloneTree();
 
-             main.AddToClassList("mainContainer");
 
- 			scrollView = new ScrollView(ScrollViewMode.VerticalAndHorizontal);
 
-             root = main.Q("content");
 
-             header = main.Q("header");
 
-             titleLabel = main.Q<Label>(name: "titleLabel");
 
-             content = main.Q<VisualElement>(name: "contentContainer");
 
-             hierarchy.Add(main);
 
-             capabilities |= Capabilities.Movable | Capabilities.Resizable;
 
-             style.overflow = Overflow.Hidden;
 
-             ClearClassList();
 
-             AddToClassList("pinnedElement");
 
-             this.AddManipulator(new Dragger { clampToParentEdges = true });
 
-             scrollable = false;
 
-             hierarchy.Add(new Resizer(() => onResized?.Invoke()));
 
-             RegisterCallback<DragUpdatedEvent>(e =>
 
-             {
 
-                 e.StopPropagation();
 
-             });
 
- 			title = "PinnedElementView";
 
- 		}
 
- 		public void InitializeGraphView(PinnedElement pinnedElement, BaseGraphView graphView)
 
- 		{
 
- 			this.pinnedElement = pinnedElement;
 
- 			SetPosition(pinnedElement.position);
 
- 			onResized += () => {
 
- 				pinnedElement.position.size = layout.size;
 
- 			};
 
- 			RegisterCallback<MouseUpEvent>(e => {
 
- 				pinnedElement.position.position = layout.position;
 
- 			});
 
- 			Initialize(graphView);
 
- 		}
 
- 		public void ResetPosition()
 
- 		{
 
- 			pinnedElement.position = new Rect(Vector2.zero, PinnedElement.defaultSize);
 
- 			SetPosition(pinnedElement.position);
 
- 		}
 
- 		protected abstract void Initialize(BaseGraphView graphView);
 
- 		~PinnedElementView()
 
- 		{
 
- 			Destroy();
 
- 		}
 
- 		protected virtual void Destroy() {}
 
- 	}
 
- }
 
 
  |