示例#1
0
 /// <summary>
 /// 构造一个 <see cref="BaseStore{T}"/>。
 /// </summary>
 /// <param name="accessors">给定的 <see cref="IAccessorManager"/>。</param>
 /// <param name="idGeneratorFactory">给定的 <see cref="IIdGeneratorFactory"/>。</param>
 public BaseStore(IAccessorManager accessors,
                  IIdGeneratorFactory idGeneratorFactory)
 {
     Accessors          = accessors;
     CurrentAccessor    = accessors.GetReadAccessor();
     IdGeneratorFactory = idGeneratorFactory;
 }
    void OnGUI()
    {
        if(manager == null) {
            Type asset = Type.GetType("AccessorManager");
            if(asset == null) return;
            manager = (IAccessorManager) Activator.CreateInstance(asset);
        }

        GameObject gameObject = Selection.activeGameObject;
        if(!gameObject){
            return;
        }

        TableViewerInfo viewerInfo = gameObject.GetComponent<TableViewerInfo>();
        if(!viewerInfo){
            return;
        }

        string folderPath = viewerInfo.folderPath;

        IList<ICellData> datas = new List<ICellData>();

        try {
            foreach(string filePath in Directory.GetFiles(folderPath)) {
                GameObject prefab = (GameObject) AssetDatabase.LoadAssetAtPath(filePath, typeof(GameObject));
                if(prefab != null) {
                    IDataAccessor accessor =  manager.GetDataAccessor(prefab);
                    ICellData data = new PrefabData(accessor, prefab, folderPath);
                    datas.Add (data);
                }
            }

            IContentProvider contentProvider = new ContentProvider(datas);
            viewer.ContentProvider = contentProvider;

            ICellProvider cellProvider = new TableCellProvider(viewerInfo.labels);
            viewer.CellProvider = cellProvider;

            viewer.OnGUI();
        } catch {
        }
    }