|
@@ -25,6 +25,7 @@ import Editor = require("editor/Editor");
|
|
|
import EditorEvents = require("editor/EditorEvents");
|
|
import EditorEvents = require("editor/EditorEvents");
|
|
|
import ProjectFrameMenu = require("./menus/ProjectFrameMenu");
|
|
import ProjectFrameMenu = require("./menus/ProjectFrameMenu");
|
|
|
import MenuItemSources = require("./menus/MenuItemSources");
|
|
import MenuItemSources = require("./menus/MenuItemSources");
|
|
|
|
|
+import SearchBarFiltering = require("resources/SearchBarFiltering");
|
|
|
|
|
|
|
|
class ProjectFrame extends ScriptWidget {
|
|
class ProjectFrame extends ScriptWidget {
|
|
|
|
|
|
|
@@ -38,6 +39,9 @@ class ProjectFrame extends ScriptWidget {
|
|
|
currentReferencedButton: Atomic.UIButton = null;
|
|
currentReferencedButton: Atomic.UIButton = null;
|
|
|
containerScrollToHeight: number;
|
|
containerScrollToHeight: number;
|
|
|
containerScrollToHeightCounter: number;
|
|
containerScrollToHeightCounter: number;
|
|
|
|
|
+ uiSearchBar: SearchBarFiltering.UISearchBar = new SearchBarFiltering.UISearchBar();
|
|
|
|
|
+ search: boolean = false;
|
|
|
|
|
+ searchEdit: Atomic.UIEditField;
|
|
|
|
|
|
|
|
constructor(parent: Atomic.UIWidget) {
|
|
constructor(parent: Atomic.UIWidget) {
|
|
|
|
|
|
|
@@ -49,6 +53,8 @@ class ProjectFrame extends ScriptWidget {
|
|
|
|
|
|
|
|
this.gravity = Atomic.UI_GRAVITY_TOP_BOTTOM;
|
|
this.gravity = Atomic.UI_GRAVITY_TOP_BOTTOM;
|
|
|
|
|
|
|
|
|
|
+ this.searchEdit = <Atomic.UIEditField>this.getWidget("filter");
|
|
|
|
|
+
|
|
|
var projectviewcontainer = parent.getWidget("projectviewcontainer");
|
|
var projectviewcontainer = parent.getWidget("projectviewcontainer");
|
|
|
|
|
|
|
|
projectviewcontainer.addChild(this);
|
|
projectviewcontainer.addChild(this);
|
|
@@ -82,6 +88,17 @@ class ProjectFrame extends ScriptWidget {
|
|
|
|
|
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+ // Activates search while user is typing in search widget
|
|
|
|
|
+ this.searchEdit.subscribeToEvent(this.searchEdit, "WidgetEvent", (data) => {
|
|
|
|
|
+
|
|
|
|
|
+ if (!ToolCore.toolSystem.project) return;
|
|
|
|
|
+
|
|
|
|
|
+ if (data.type == Atomic.UI_EVENT_TYPE_KEY_UP) {
|
|
|
|
|
+ this.search = true;
|
|
|
|
|
+ this.refreshContent(this.currentFolder);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
handleAssetRenamed(ev: ToolCore.AssetRenamedEvent) {
|
|
handleAssetRenamed(ev: ToolCore.AssetRenamedEvent) {
|
|
@@ -182,6 +199,12 @@ class ProjectFrame extends ScriptWidget {
|
|
|
|
|
|
|
|
var id = data.target.id;
|
|
var id = data.target.id;
|
|
|
|
|
|
|
|
|
|
+ // cancel search - goes back to the last selected folder
|
|
|
|
|
+ if (id == "cancel search") {
|
|
|
|
|
+ if (!ToolCore.toolSystem.project) return;
|
|
|
|
|
+ this.searchEdit.text = "";
|
|
|
|
|
+ this.refreshContent(this.currentFolder);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
if (this.menu.handlePopupMenu(data.target, data.refid))
|
|
if (this.menu.handlePopupMenu(data.target, data.refid))
|
|
|
return true;
|
|
return true;
|
|
@@ -418,6 +441,26 @@ class ProjectFrame extends ScriptWidget {
|
|
|
this.folderList.scrollToSelectedItem();
|
|
this.folderList.scrollToSelectedItem();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // Searches folders within folders recursively
|
|
|
|
|
+ searchProjectFolder(folderPath: string, container: Atomic.UILayout, searchText: string, db: ToolCore.AssetDatabase) {
|
|
|
|
|
+
|
|
|
|
|
+ if (folderPath == "")
|
|
|
|
|
+ return;
|
|
|
|
|
+
|
|
|
|
|
+ var assets = db.getFolderAssets(folderPath);
|
|
|
|
|
+
|
|
|
|
|
+ for (var i in assets) {
|
|
|
|
|
+
|
|
|
|
|
+ var childAsset = assets[i];
|
|
|
|
|
+
|
|
|
|
|
+ if (childAsset.isFolder()) {
|
|
|
|
|
+ this.searchProjectFolder(childAsset.path, container, searchText, db);
|
|
|
|
|
+ } else if (this.uiSearchBar.searchPopulate(searchText, childAsset.name + childAsset.extension)) {
|
|
|
|
|
+ container.addChild(this.createButtonLayout(childAsset));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private refreshContent(folder: ToolCore.Asset) {
|
|
private refreshContent(folder: ToolCore.Asset) {
|
|
|
|
|
|
|
|
if (this.currentFolder != folder) {
|
|
if (this.currentFolder != folder) {
|
|
@@ -433,20 +476,26 @@ class ProjectFrame extends ScriptWidget {
|
|
|
var container: Atomic.UILayout = <Atomic.UILayout>this.getWidget("contentcontainer");
|
|
var container: Atomic.UILayout = <Atomic.UILayout>this.getWidget("contentcontainer");
|
|
|
container.deleteAllChildren();
|
|
container.deleteAllChildren();
|
|
|
|
|
|
|
|
- var assets = db.getFolderAssets(folder.path);
|
|
|
|
|
|
|
+ if (this.currentFolder != null) {
|
|
|
|
|
+ var assets = db.getFolderAssets(folder.path);
|
|
|
|
|
|
|
|
- this.containerScrollToHeightCounter = 0;
|
|
|
|
|
|
|
+ this.containerScrollToHeightCounter = 0;
|
|
|
|
|
|
|
|
- for (var i in assets) {
|
|
|
|
|
|
|
+ if (this.searchEdit.text == "" || !this.search) {
|
|
|
|
|
|
|
|
- var asset = assets[i];
|
|
|
|
|
- container.addChild(this.createButtonLayout(asset));
|
|
|
|
|
- this.containerScrollToHeightCounter++;
|
|
|
|
|
|
|
+ for (var i in assets) {
|
|
|
|
|
+ var asset = assets[i];
|
|
|
|
|
+ container.addChild(this.createButtonLayout(asset));
|
|
|
|
|
+ this.containerScrollToHeightCounter++;
|
|
|
|
|
+ }
|
|
|
|
|
+ } else if (this.search) {
|
|
|
|
|
+ this.searchProjectFolder(this.resourceFolder.path, container, this.searchEdit.text, db);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
var containerScroll: Atomic.UIScrollContainer = <Atomic.UIScrollContainer>this.getWidget("contentcontainerscroll");
|
|
var containerScroll: Atomic.UIScrollContainer = <Atomic.UIScrollContainer>this.getWidget("contentcontainerscroll");
|
|
|
containerScroll.scrollTo(0, this.containerScrollToHeight);
|
|
containerScroll.scrollTo(0, this.containerScrollToHeight);
|
|
|
-
|
|
|
|
|
|
|
+ this.search = false;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private createButtonLayout(asset: ToolCore.Asset): Atomic.UILayout {
|
|
private createButtonLayout(asset: ToolCore.Asset): Atomic.UILayout {
|