ProjectFrameMenu.ts 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. //
  2. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  3. // LICENSE: Atomic Game Engine Editor and Tools EULA
  4. // Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
  5. // license information: https://github.com/AtomicGameEngine/AtomicGameEngine
  6. //
  7. import strings = require("ui/EditorStrings");
  8. import EditorEvents = require("editor/EditorEvents");
  9. import EditorUI = require("ui/EditorUI");
  10. import MenuItemSources = require("./MenuItemSources");
  11. class ProjectFrameMenus extends Atomic.ScriptObject {
  12. constructor() {
  13. super();
  14. MenuItemSources.createMenuItemSource("asset context folder", assetFolderContextItems);
  15. MenuItemSources.createMenuItemSource("asset context general", assetGeneralContextItems);
  16. MenuItemSources.createMenuItemSource("project create items", createItems);
  17. this.subscribeToEvent(EditorEvents.ContentFolderChanged, (ev: EditorEvents.ContentFolderChangedEvent) => {
  18. this.contentFolder = ev.path;
  19. });
  20. }
  21. handleAssetContextMenu(target: Atomic.UIWidget, refid: string):boolean {
  22. if (target.id == "asset context menu" || target.id == "create popup") {
  23. var path;
  24. var asset = <ToolCore.Asset> target["asset"];
  25. if (asset) {
  26. path = asset.path;
  27. } else {
  28. path = this.contentFolder;
  29. }
  30. if (refid == "rename_asset") {
  31. EditorUI.getModelOps().showRenameAsset(asset);
  32. return true;
  33. }
  34. if (refid == "delete_asset") {
  35. EditorUI.getModelOps().showResourceDelete(asset);
  36. return true;
  37. }
  38. if (refid == "create_folder") {
  39. EditorUI.getModelOps().showCreateFolder(path);
  40. return true;
  41. }
  42. if (refid == "create_component") {
  43. EditorUI.getModelOps().showCreateComponent(path);
  44. return true;
  45. }
  46. if (refid == "create_script") {
  47. EditorUI.getModelOps().showCreateScript(path);
  48. return true;
  49. }
  50. if (refid == "create_scene") {
  51. EditorUI.getModelOps().showCreateScene(path);
  52. return true;
  53. }
  54. if (refid == "create_material") {
  55. EditorUI.getModelOps().showCreateMaterial(path);
  56. return true;
  57. }
  58. if (refid == "reveal_folder") {
  59. var utils = new Editor.FileUtils();
  60. utils.revealInFinder(path);
  61. return true;
  62. }
  63. if (refid == "force_reimport") {
  64. asset.setDirty(true);
  65. ToolCore.assetDatabase.scan();
  66. return true;
  67. }
  68. if (refid == "force_reimport_folder") {
  69. ToolCore.assetDatabase.reimportAllAssetsInDirectory(path);
  70. return true;
  71. }
  72. }
  73. return false;
  74. }
  75. createFolderContextMenu(parent: Atomic.UIWidget, id: string, folder: ToolCore.Asset, x: number, y: number) {
  76. }
  77. createAssetContextMenu(parent: Atomic.UIWidget, asset: ToolCore.Asset, x: number, y: number) {
  78. var menu = new Atomic.UIMenuWindow(parent, "asset context menu");
  79. menu["asset"] = asset;
  80. var srcName: string;
  81. if (asset.isFolder()) {
  82. srcName = "asset context folder";
  83. } else {
  84. srcName = "asset context general";
  85. }
  86. var src = MenuItemSources.getMenuItemSource(srcName);
  87. menu.show(src, x, y);
  88. }
  89. handlePopupMenu(target: Atomic.UIWidget, refid: string): boolean {
  90. if (!target || !refid) return;
  91. if (this.handleAssetContextMenu(target, refid)) {
  92. return true;
  93. }
  94. return false;
  95. }
  96. contentFolder: string;
  97. }
  98. export = ProjectFrameMenus;
  99. // initialization
  100. var StringID = strings.StringID;
  101. //Change the words "Reveal in Finder" based on platform
  102. var showInFs = "Reveal in File Manager";
  103. if (Atomic.platform == "Windows") {
  104. showInFs = "Reveal in Explorer";
  105. }
  106. else if (Atomic.platform == "MacOSX") {
  107. showInFs = "Reveal in Finder";
  108. }
  109. var assetGeneralContextItems = {
  110. "Rename": ["rename_asset", undefined, ""],
  111. "Force Reimport": ["force_reimport", undefined, ""],
  112. [showInFs]: ["reveal_folder", undefined, ""],
  113. "-1": null,
  114. "Delete": ["delete_asset", undefined, ""]
  115. };
  116. var assetFolderContextItems = {
  117. "Create Folder": ["create_folder", undefined, "Folder.icon"],
  118. "Create Component": ["create_component", undefined, "ComponentBitmap"],
  119. "Create Script": ["create_script", undefined, "ComponentBitmap"],
  120. "Create Material": ["create_material", undefined, "ComponentBitmap"],
  121. "Create Scene": ["create_scene", undefined, "ComponentBitmap"],
  122. "Force Reimport": ["force_reimport_folder", undefined, ""],
  123. "-1": null,
  124. [showInFs]: ["reveal_folder", undefined, ""],
  125. "-2": null,
  126. "Delete": ["delete_asset", undefined, "FolderDeleteBitmap"]
  127. };
  128. var createItems = {
  129. "Create Folder": ["create_folder", undefined, "Folder.icon"],
  130. "Create Component": ["create_component", undefined, "ComponentBitmap"],
  131. "Create Script": ["create_script", undefined, "ComponentBitmap"],
  132. "Create Material": ["create_material", undefined, "ComponentBitmap"],
  133. "Create Scene": ["create_scene", undefined, "ComponentBitmap"],
  134. };