From 978b9049d057d2a0995758275f68da8641193201 Mon Sep 17 00:00:00 2001
From: Nivesh Rajbhandari
Date: Wed, 27 Jun 2012 14:21:27 -0700
Subject: Integrating Materials UI changes. Squashed commit of the following:

commit 89ccb55130e67c4516e616ccc56d2a649a2b9160
Author: Nivesh Rajbhandari <mqg734@motorola.com>
Date:   Wed Jun 27 14:20:01 2012 -0700

    Position Materials Editor popup and change buttons' text color.

    Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com>

commit 89bca82adc781f4913f8d302a49a8baa907631c5
Author: Nivesh Rajbhandari <mqg734@motorola.com>
Date:   Wed Jun 27 12:00:51 2012 -0700

    Support deleting and editing custom materials.

    Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com>

commit 5be5160c4786beb70e8ad4d75562adb135718c6c
Merge: 1d9d9f6 2ebf3e3
Author: Nivesh Rajbhandari <mqg734@motorola.com>
Date:   Wed Jun 27 11:11:37 2012 -0700

    Merge branch 'refs/heads/ninja-internal' into WebGLMaterials

    Conflicts:
    	js/data/panels-data.js

    Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com>

commit 1d9d9f6e66ea7585f07ed461cebba99e71f65de0
Author: Nivesh Rajbhandari <mqg734@motorola.com>
Date:   Tue Jun 26 22:01:22 2012 -0700

    "Save as" support to duplicate material with modified settings. Also removed Add button and disabled Reset button for now.

    Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com>

commit bf1037508dbc686f2884765344832f906cbf06d0
Author: Nivesh Rajbhandari <mqg734@motorola.com>
Date:   Tue Jun 26 17:23:31 2012 -0700

    Added UI for duplicating and deleting materials in the Materials Library.

    Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com>

commit 54930792f9c417df5f739831164aa1f96a41d67a
Author: Nivesh Rajbhandari <mqg734@motorola.com>
Date:   Tue Jun 26 14:29:17 2012 -0700

    Added preview of material in materials editor popup and fixed some styling.

    Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com>

Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com>
---
 .../materials-library-panel.css                    |  18 +++-
 .../materials-library-panel.html                   |  25 ++---
 .../materials-library-panel.js                     | 109 +++++++++++++++++++--
 3 files changed, 129 insertions(+), 23 deletions(-)

(limited to 'js/panels/Materials/materials-library-panel.reel')

diff --git a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.css b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.css
index bed3acfe..b5d36108 100755
--- a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.css
+++ b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.css
@@ -15,6 +15,12 @@
     margin: 4px 0 4px 0;
 }
 
+.materials_library_panel .ml_tree_holder {
+    height: 200px;
+    min-height: 200px;
+    max-height: 200px;
+    overflow-y: scroll;
+}
 
 .ml_buttons {
     clear:both;
@@ -30,9 +36,19 @@
     cursor: pointer;
     margin: 0 1px;
     float: left;
+    width: 40px;
+}
+
+.ml_buttons .ml_duplicate_btn {
     width: 60px;
 }
 
-.ml_buttons .nj-skinned:last-child {
+.ml_buttons .ml_delete_btn {
+    width: 50px;
     float: right;
+}
+
+.ml_buttons .nj-skinned:hover,
+.ml_buttons .nj-skinned:active {
+    color: white;
 }
\ No newline at end of file
diff --git a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html
index 6fa54495..3adb2108 100755
--- a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html
+++ b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html
@@ -10,12 +10,12 @@
     	<link rel="stylesheet" type="text/css" href="materials-library-panel.css">
          <script type="text/montage-serialization">
         {
-            "addButton": {
+            "duplicateButton": {
                 "prototype": "montage/ui/button.reel",
                 "properties": {
-                    "element": {"#": "ml_add_btn"},
-					"enabled": false
-                },
+                    "element": {"#": "ml_duplicate_btn"},
+ 					"enabled": true
+               },
                 "listeners": [
                     {
                         "type": "action",
@@ -23,11 +23,10 @@
                     }
                 ]
              },
-            "copyButton": {
+            "editButton": {
                 "prototype": "montage/ui/button.reel",
                 "properties": {
-                    "element": {"#": "ml_copy_btn"},
- 					"enabled": false
+                    "element": {"#": "ml_edit_btn"}
                },
                 "listeners": [
                     {
@@ -82,7 +81,9 @@
                 "prototype": "js/panels/Materials/materials-library-panel.reel[MaterialsLibraryPanels]",
                 "properties": {
                     "element": {"#": "materials_library_panel"},
-                    "_materialInfo": {"@": "materialInfo"}
+                    "_materialInfo": {"@": "materialInfo"},
+                    "materialsController": {"@": "materialsController"},
+                    "deleteButton": {"@": "deleteButton"}
                 }
             }
     	}
@@ -92,14 +93,14 @@
 	<body>
 
     	<div data-montage-id="materials_library_panel" class="materials_library_panel">
-            <section data-montage-id="ml_tree_holder" class="animationsLibrary">
+            <section data-montage-id="ml_tree_holder" class="ml_tree_holder">
                 <div data-montage-id="materials_library_tree"></div>
             </section>
             <hr />
             <div data-montage-id="ml_buttons" class="ml_buttons">
-                <button data-montage-id="ml_add_btn" class="nj-skinned">Add</button>
-                <button data-montage-id="ml_copy_btn" class="nj-skinned">Copy</button>
-                <button data-montage-id="ml_delete_btn" class="nj-skinned">Delete</button>
+                <button data-montage-id="ml_duplicate_btn" class="nj-skinned ml_duplicate_btn">Duplicate</button>
+                <button data-montage-id="ml_edit_btn" class="nj-skinned ml_edit_btn">Edit</button>
+                <button data-montage-id="ml_delete_btn" class="nj-skinned ml_delete_btn">Delete</button>
             </div>
     	</div>
 
diff --git a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.js b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.js
index cf0d4e93..cd933ea6 100755
--- a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.js
+++ b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.js
@@ -7,14 +7,36 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot
 var Montage = require("montage/core/core").Montage,
     Component = require("montage/ui/component").Component,
     MaterialsData = require("js/panels/Materials/materials-data.json"),
-    Popup = require("montage/ui/popup/popup.reel").Popup;
+    Popup = require("montage/ui/popup/popup.reel").Popup,
+    MaterialsModel = require("js/models/materials-model").MaterialsModel,
+    LeafNode = require("js/components/treeview/ninja-leaf.reel").Leaf;
 
 exports.MaterialsLibraryPanel = Montage.create(Component, {
 
+    deleteButton: {
+        value: null
+    },
+
     materialsData: {
         value: null
     },
 
+    materialId: {
+        value: null
+    },
+
+    selectedMaterialNode: {
+        value: null
+    },
+
+    customMaterialsBranch: {
+        value: null
+    },
+
+    customMaterialsCounter: {
+        value: 2
+    },
+
     _hasFocus: {
     	enumerable: false,
     	value: false
@@ -36,21 +58,32 @@ exports.MaterialsLibraryPanel = Montage.create(Component, {
         value:function(event) {
             switch(event._currentTarget.label)
             {
-                case "Add":
-                    console.log("Add new material");
+                case "Duplicate":
+                    this.duplicateMaterial();
                     break;
-                case "Copy":
-                    console.log("Copy selected material");
+                case "Edit":
+//                    console.log("Edit selected material");
+                    this._showMaterialPopup({ materialId: this.materialId });
                     break;
                 case "Delete":
-                    console.log("Delete selected material");
+                    this.deleteMaterial();
                     break;
             }
         }
     },
 
     handleNodeActivation: {
-        value:function(obj) {
+        value: function(obj, event) {
+            this.selectedMaterialNode = event.currentTarget;
+            this.materialId = obj.id;
+            this.deleteButton.enabled = !!obj.canDelete;
+        }
+    },
+
+    handleDblclick: {
+        value:function(obj, event) {
+            this.selectedMaterialNode = event.currentTarget;
+            this.materialId = obj.id;
             this._showMaterialPopup({ materialId: obj.id });
         }
     },
@@ -58,7 +91,6 @@ exports.MaterialsLibraryPanel = Montage.create(Component, {
     handleShowMaterialPopup: {
         enumerable: false,
         value: function (event) {
-            //this._showMaterialPopup(event.detail.materialId);
             this._showMaterialPopup(event.detail);
         }
     },
@@ -80,15 +112,16 @@ exports.MaterialsLibraryPanel = Montage.create(Component, {
 			if(!this._materialPopup)
             {
                 this._materialPopup = Popup.create();
+                this._materialInfo.materialsLibraryRef = this;
                 this._materialPopup.content = this._materialInfo;
+                this._materialPopup.delegate = this;
                 this._materialPopup.modal = false;
                 this.eventManager.addEventListener("hideMaterialPopup", this, false);
                 this._materialPopup.addEventListener("show", this, false);
             }
             this._materialPopup.show();
 
-            materialID = materialObj.materialId;
-            this._materialInfo.loadMaterials(materialID,  materialObj.useSelection, materialObj.whichMaterial);
+            this._materialInfo.loadMaterials(materialObj.materialId,  materialObj.useSelection, materialObj.whichMaterial);
     	}
     },
 
@@ -99,5 +132,61 @@ exports.MaterialsLibraryPanel = Montage.create(Component, {
                 this._materialPopup.hide();
             }
     	}
+    },
+
+    duplicateMaterial: {
+        enumerable: false,
+        value: function (matCopyName) {
+//            console.log("Duplicate selected material");
+            var mat = MaterialsModel.getMaterial(this.materialId);
+            if(mat) {
+                var matCopy = mat.dup();
+                if(!matCopyName) {
+                    matCopyName = this.materialId + "_" + this.customMaterialsCounter++;
+                }
+                matCopy.setName(matCopyName);
+                MaterialsModel.addMaterial(matCopy);
+
+                var leaf = LeafNode.create();
+                leaf.id = matCopyName;
+                leaf.label = matCopyName;
+                leaf.treeNodeType = "leaf";
+                leaf.canDelete = true;
+                if(!this.customMaterialsBranch) {
+                    this.customMaterialsBranch = this.materialsController.branchControllers[2];
+                }
+                this.customMaterialsBranch.content.push(leaf);
+            }
+        }
+    },
+
+    deleteMaterial: {
+        enumerable: false,
+        value: function () {
+//            console.log("Delete selected material");
+            if(!this.customMaterialsBranch) {
+                this.customMaterialsBranch = this.materialsController.branchControllers[2];
+            }
+
+            var mat = MaterialsModel.getMaterial(this.materialId);
+            if(mat) {
+                MaterialsModel.removeMaterial(this.materialId);
+
+                var index = this.customMaterialsBranch.selectedIndexes[0];
+                this.customMaterialsBranch.content.splice(index, 1);
+            }
+
+            this.deleteButton.enabled = false;
+        }
+    },
+
+    willPositionPopup: {
+        value: function(popup, defaultPosition) {
+            var content = popup.content.element,
+                contentHt = parseFloat(content.style.height) || content.offsetHeight || 0,
+                contentWd = parseFloat(content.style.width) || content.offsetWidth || 0,
+                pt = webkitConvertPointFromNodeToPage(this.selectedMaterialNode, new WebKitPoint(0, 0));
+            return {top: pt.y - contentHt + 10, left: pt.x - contentWd + 10};
+        }
     }
 });
\ No newline at end of file
-- 
cgit v1.2.3


From 2da05a4c71bfe9b136384d9e94fbfbef19f24550 Mon Sep 17 00:00:00 2001
From: Nivesh Rajbhandari
Date: Wed, 27 Jun 2012 17:28:06 -0700
Subject: Performance fix for WebGL materials playing even when the dialog/file
 is no longer in view.

Also pausing videos when switching documents.

Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com>
---
 .../Materials/materials-library-panel.reel/materials-library-panel.js   | 2 ++
 1 file changed, 2 insertions(+)

(limited to 'js/panels/Materials/materials-library-panel.reel')

diff --git a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.js b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.js
index cd933ea6..8c1aa1dc 100755
--- a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.js
+++ b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.js
@@ -129,6 +129,8 @@ exports.MaterialsLibraryPanel = Montage.create(Component, {
     	enumerable: false,
     	value: function (event) {
             if(this._materialPopup){
+//                console.log("hiding material popup");
+                this._materialInfo.destroy();
                 this._materialPopup.hide();
             }
     	}
-- 
cgit v1.2.3


From 648ee61ae84216d0236e0dbc211addc13b2cfa3a Mon Sep 17 00:00:00 2001
From: Kris Kowal
Date: Fri, 6 Jul 2012 11:52:06 -0700
Subject: Expand tabs

---
 .../materials-library-panel.html                   | 26 +++++++++++-----------
 .../materials-library-panel.js                     | 18 +++++++--------
 2 files changed, 22 insertions(+), 22 deletions(-)

(limited to 'js/panels/Materials/materials-library-panel.reel')

diff --git a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html
index f77d3186..3204ce50 100755
--- a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html
+++ b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html
@@ -29,16 +29,16 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGE.
 </copyright> -->
 <html lang="en">
-	<head>
-    	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-    	<link rel="stylesheet" type="text/css" href="materials-library-panel.css">
+    <head>
+        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+        <link rel="stylesheet" type="text/css" href="materials-library-panel.css">
          <script type="text/montage-serialization">
         {
             "addButton": {
                 "prototype": "montage/ui/button.reel",
                 "properties": {
                     "element": {"#": "ml_add_btn"},
-					"enabled": false
+                    "enabled": false
                 },
                 "listeners": [
                     {
@@ -51,7 +51,7 @@ POSSIBILITY OF SUCH DAMAGE.
                 "prototype": "montage/ui/button.reel",
                 "properties": {
                     "element": {"#": "ml_copy_btn"},
- 					"enabled": false
+                    "enabled": false
                },
                 "listeners": [
                     {
@@ -64,7 +64,7 @@ POSSIBILITY OF SUCH DAMAGE.
                 "prototype": "montage/ui/button.reel",
                 "properties": {
                     "element": {"#": "ml_delete_btn"},
- 					"enabled": false
+                    "enabled": false
                },
                 "listeners": [
                     {
@@ -109,13 +109,13 @@ POSSIBILITY OF SUCH DAMAGE.
                     "_materialInfo": {"@": "materialInfo"}
                 }
             }
-    	}
-		</script>
-   		
-	</head>
-	<body>
+        }
+        </script>
+        
+    </head>
+    <body>
 
-    	<div data-montage-id="materials_library_panel" class="materials_library_panel">
+        <div data-montage-id="materials_library_panel" class="materials_library_panel">
             <section data-montage-id="ml_tree_holder" class="animationsLibrary">
                 <div data-montage-id="materials_library_tree"></div>
             </section>
@@ -125,7 +125,7 @@ POSSIBILITY OF SUCH DAMAGE.
                 <button data-montage-id="ml_copy_btn" class="nj-skinned">Copy</button>
                 <button data-montage-id="ml_delete_btn" class="nj-skinned">Delete</button>
             </div>
-    	</div>
+        </div>
 
     </body>
 </html>
diff --git a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.js b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.js
index b5d6bb96..1cf3cec7 100755
--- a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.js
+++ b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.js
@@ -40,8 +40,8 @@ exports.MaterialsLibraryPanel = Montage.create(Component, {
     },
 
     _hasFocus: {
-    	enumerable: false,
-    	value: false
+        enumerable: false,
+        value: false
     },
 
     didCreate: {
@@ -98,10 +98,10 @@ exports.MaterialsLibraryPanel = Montage.create(Component, {
     },
     
     _showMaterialPopup: {
-    	enumerable: false,
-    	value: function (materialObj) {
+        enumerable: false,
+        value: function (materialObj) {
 
-			if(!this._materialPopup)
+            if(!this._materialPopup)
             {
                 this._materialPopup = Popup.create();
                 this._materialPopup.content = this._materialInfo;
@@ -113,15 +113,15 @@ exports.MaterialsLibraryPanel = Montage.create(Component, {
 
             materialID = materialObj.materialId;
             this._materialInfo.loadMaterials(materialID,  materialObj.useSelection, materialObj.whichMaterial);
-    	}
+        }
     },
 
     handleHideMaterialPopup: {
-    	enumerable: false,
-    	value: function (event) {
+        enumerable: false,
+        value: function (event) {
             if(this._materialPopup){
                 this._materialPopup.hide();
             }
-    	}
+        }
     }
 });
-- 
cgit v1.2.3


From 04343eda8c2f870b0da55cfdc8003c99fe1cc4de Mon Sep 17 00:00:00 2001
From: Kris Kowal
Date: Fri, 6 Jul 2012 11:53:10 -0700
Subject: Remove trailing spaces

---
 .../Materials/materials-library-panel.reel/materials-library-panel.js   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'js/panels/Materials/materials-library-panel.reel')

diff --git a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.js b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.js
index 1cf3cec7..98a87b07 100755
--- a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.js
+++ b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.js
@@ -96,7 +96,7 @@ exports.MaterialsLibraryPanel = Montage.create(Component, {
         enumerable:true,
         serializable: true
     },
-    
+
     _showMaterialPopup: {
         enumerable: false,
         value: function (materialObj) {
-- 
cgit v1.2.3


From 6803c0abd279fcb640c38b3881b751bab982cbe0 Mon Sep 17 00:00:00 2001
From: Kris Kowal
Date: Fri, 6 Jul 2012 12:42:16 -0700
Subject: Remove trailing spaces

---
 .../Materials/materials-library-panel.reel/materials-library-panel.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'js/panels/Materials/materials-library-panel.reel')

diff --git a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html
index 3204ce50..6f2ea27a 100755
--- a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html
+++ b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html
@@ -111,7 +111,7 @@ POSSIBILITY OF SUCH DAMAGE.
             }
         }
         </script>
-        
+
     </head>
     <body>
 
-- 
cgit v1.2.3


From 9461e7731f91dd03a15b0a62667e722a60c84721 Mon Sep 17 00:00:00 2001
From: Kris Kowal
Date: Fri, 6 Jul 2012 12:44:57 -0700
Subject: Remove byte order markers (BOM)

---
 .../Materials/materials-library-panel.reel/materials-library-panel.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'js/panels/Materials/materials-library-panel.reel')

diff --git a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html
index 6f2ea27a..bda89b2c 100755
--- a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html
+++ b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
 <!-- <copyright>
 Copyright (c) 2012, Motorola Mobility, Inc
 All Rights Reserved.
-- 
cgit v1.2.3


From 40c6eb2c06b34f65a74d59ef9687251952858bab Mon Sep 17 00:00:00 2001
From: Kris Kowal
Date: Fri, 6 Jul 2012 12:47:27 -0700
Subject: Normalize HTML doctype

---
 .../Materials/materials-library-panel.reel/materials-library-panel.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'js/panels/Materials/materials-library-panel.reel')

diff --git a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html
index bda89b2c..a07e93f5 100755
--- a/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html
+++ b/js/panels/Materials/materials-library-panel.reel/materials-library-panel.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
 <!-- <copyright>
 Copyright (c) 2012, Motorola Mobility, Inc
 All Rights Reserved.
-- 
cgit v1.2.3