81 lines
2.6 KiB
C#
81 lines
2.6 KiB
C#
![]() |
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.IO;
|
|||
|
using System.Linq;
|
|||
|
using UnityEditor;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEngine.UIElements;
|
|||
|
|
|||
|
namespace AlicizaX.PackageManager.Editor
|
|||
|
{
|
|||
|
[EditorWindowTitle(title = "Package Manager", icon = "Package Manager")]
|
|||
|
internal class FrameworkPackageManagerWindow : EditorWindow
|
|||
|
{
|
|||
|
private const string VisualAssetPath = "Packages/com.alicizax.unity.packagemanager/Editor/PackageManager/Res/AlicizaXPackageManagerWindow.uxml";
|
|||
|
public List<RepositoryPackageData> RepositoryPackageDatas = new List<RepositoryPackageData>();
|
|||
|
|
|||
|
|
|||
|
public void RefreshPackageData(Action callBack)
|
|||
|
{
|
|||
|
RepositoryDataFetcher.FetchRepositoryData((datas) =>
|
|||
|
{
|
|||
|
PackageManagerCheckTool.ValidatePackageStates(datas);
|
|||
|
RepositoryPackageDatas = datas;
|
|||
|
callBack?.Invoke();
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
[MenuItem("Tools/AlicizaX/Package Manager")]
|
|||
|
internal static void Open()
|
|||
|
{
|
|||
|
EditorWindow.GetWindow<FrameworkPackageManagerWindow>().Show();
|
|||
|
GetWindow<FrameworkPackageManagerWindow>().Refresh();
|
|||
|
}
|
|||
|
|
|||
|
private void CreateGUI()
|
|||
|
{
|
|||
|
VisualTreeAsset visualTree = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>(VisualAssetPath);
|
|||
|
visualTree.CloneTree(rootVisualElement);
|
|||
|
CreateLeftList();
|
|||
|
}
|
|||
|
|
|||
|
private void Refresh()
|
|||
|
{
|
|||
|
RefreshPackageData(() =>
|
|||
|
{
|
|||
|
packageListView.itemsSource = RepositoryPackageDatas;
|
|||
|
packageListView.Rebuild();
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
private PackageListView packageListView;
|
|||
|
private PackageInfoView packageInfoView;
|
|||
|
|
|||
|
private void CreateLeftList()
|
|||
|
{
|
|||
|
var leftContainer = rootVisualElement.Q<VisualElement>("LeftContainer");
|
|||
|
leftContainer.style.backgroundColor = new Color(0.1686275f, 0.1606275f, 0.1686275f);
|
|||
|
|
|||
|
packageListView = new PackageListView();
|
|||
|
leftContainer.Add(packageListView);
|
|||
|
packageListView.OnSelectionChangedEvent += PackageListViewOnOnSelectionChangedEvent;
|
|||
|
|
|||
|
|
|||
|
leftContainer.Add(new PackageBottomStateBar());
|
|||
|
|
|||
|
var rightContainer = rootVisualElement.Q<VisualElement>("RightContainer");
|
|||
|
|
|||
|
packageInfoView = new PackageInfoView();
|
|||
|
rightContainer.Add(packageInfoView);
|
|||
|
|
|||
|
|
|||
|
packageListView.itemsSource = RepositoryPackageDatas;
|
|||
|
}
|
|||
|
|
|||
|
private void PackageListViewOnOnSelectionChangedEvent(IEnumerable<RepositoryPackageData> obj)
|
|||
|
{
|
|||
|
packageInfoView.RefreshView(obj.First());
|
|||
|
}
|
|||
|
}
|
|||
|
}
|