|  |  | #include "../yScripts/y_JSExtensions.jsx";
 | 
						
						
						
							|  |  | function yFlattenSelectedFolderContentsTool()
 | 
						
						
						
							|  |  | {
 | 
						
						
						
							|  |  |     this.info =
 | 
						
						
						
							|  |  |     {
 | 
						
						
						
							|  |  | 	name : "yFlatten",
 | 
						
						
						
							|  |  | 	version : 0.11,
 | 
						
						
						
							|  |  | 	stage : "alpha",
 | 
						
						
						
							|  |  | 	description : "Set the Folder Structure for a new Project",
 | 
						
						
						
							|  |  | 	url : "yorchnet.com"
 | 
						
						
						
							|  |  |     };
 | 
						
						
						
							|  |  |     this.appearence =
 | 
						
						
						
							|  |  |     {
 | 
						
						
						
							|  |  | 	buttonHeight : 30,
 | 
						
						
						
							|  |  | 	buttonWidth : 126
 | 
						
						
						
							|  |  |     };
 | 
						
						
						
							|  |  |     this.resources = 
 | 
						
						
						
							|  |  |     {
 | 
						
						
						
							|  |  | 	icon : new File('yNet.png'),
 | 
						
						
						
							|  |  |     };
 | 
						
						
						
							|  |  |     this.init = function init()
 | 
						
						
						
							|  |  |     {
 | 
						
						
						
							|  |  | 	//alert("my name is:" + this.info.name);
 | 
						
						
						
							|  |  | 	this.btnLauyout = 
 | 
						
						
						
							|  |  | 	"button\
 | 
						
						
						
							|  |  | 	 {\
 | 
						
						
						
							|  |  | 	    preferredSize: ['" + this.appearence.buttonWidth + "','" + this.appearence.buttonHeight + "'],\
 | 
						
						
						
							|  |  | 	    text:'" + this.info.name + "',\
 | 
						
						
						
							|  |  | 	    helpTip:'" + this.info.description + "'\
 | 
						
						
						
							|  |  | 	 }";
 | 
						
						
						
							|  |  | 	
 | 
						
						
						
							|  |  | 	this. res = 
 | 
						
						
						
							|  |  | 	 "window\
 | 
						
						
						
							|  |  | 	{\
 | 
						
						
						
							|  |  | 	    type:'palette',\
 | 
						
						
						
							|  |  | 	    text:'" + this.info.name + ' ' + this.info.ver + ' ' + this.info.stage + "',\
 | 
						
						
						
							|  |  | 	    info: Group \
 | 
						
						
						
							|  |  | 	    {\
 | 
						
						
						
							|  |  | 		alignment:['center','bottom'],\
 | 
						
						
						
							|  |  | 		icon: Image \
 | 
						
						
						
							|  |  | 		{\
 | 
						
						
						
							|  |  | 		    icon:'" + this.resources.icon.path + '/' + this.resources.icon.name + "',\
 | 
						
						
						
							|  |  | 		    preferredSize: [15, 18]\
 | 
						
						
						
							|  |  | 		},\
 | 
						
						
						
							|  |  | 		website: StaticText\
 | 
						
						
						
							|  |  | 		{\
 | 
						
						
						
							|  |  | 		    text:'" + this.info.url + "',\
 | 
						
						
						
							|  |  | 		    alignment:['fill','center']\
 | 
						
						
						
							|  |  | 		},\
 | 
						
						
						
							|  |  | 	    }\
 | 
						
						
						
							|  |  | 	}";
 | 
						
						
						
							|  |  |     }
 | 
						
						
						
							|  |  |     this.createUI = function createUI()
 | 
						
						
						
							|  |  |     {
 | 
						
						
						
							|  |  | 		
 | 
						
						
						
							|  |  | 		
 | 
						
						
						
							|  |  | 	this.window = new Window ( this.res );
 | 
						
						
						
							|  |  | 	this.window.show() ;
 | 
						
						
						
							|  |  |     }
 | 
						
						
						
							|  |  |     
 | 
						
						
						
							|  |  | 	this.getSelectedProjectItems = function getSelectedProjectItems (){
 | 
						
						
						
							|  |  | 		var items = [];
 | 
						
						
						
							|  |  | 		var p = app.project;
 | 
						
						
						
							|  |  | 		for ( var i = 1 ; i <= p.numItems ; i ++ ){
 | 
						
						
						
							|  |  | 			var item = p.item(i);
 | 
						
						
						
							|  |  | 			if ( item.selected ){
 | 
						
						
						
							|  |  | 				items.push(item);
 | 
						
						
						
							|  |  | 			}
 | 
						
						
						
							|  |  | 		}
 | 
						
						
						
							|  |  | 		return items;
 | 
						
						
						
							|  |  | 	}
 | 
						
						
						
							|  |  | 	this.getAllItems = function getAllItems( folderItem ){
 | 
						
						
						
							|  |  | 		
 | 
						
						
						
							|  |  | 		var items = [];
 | 
						
						
						
							|  |  | 		var folders = [];
 | 
						
						
						
							|  |  | 		
 | 
						
						
						
							|  |  | 		for ( var i = 1 ; i <= folderItem.numItems ; i ++ ){
 | 
						
						
						
							|  |  | 		var item = folderItem.item(i);
 | 
						
						
						
							|  |  | 		
 | 
						
						
						
							|  |  | 		if ( (item.typeName != "Folder") ){
 | 
						
						
						
							|  |  | 				//if ( (isInArray( items ,item )) == false ){
 | 
						
						
						
							|  |  | 					items.push( item );
 | 
						
						
						
							|  |  | 				//}
 | 
						
						
						
							|  |  | 			}else{
 | 
						
						
						
							|  |  | 					var new_items = yFlattenSelectedFolderContentsTool().getAllItems(item);
 | 
						
						
						
							|  |  | 					for ( var j = 0 ; j < new_items.length ; j ++ ){
 | 
						
						
						
							|  |  | 						new_item = new_items[j];
 | 
						
						
						
							|  |  | 						//if ( (isInArray ( new_item )) == false ){
 | 
						
						
						
							|  |  | 							items.push ( new_item );
 | 
						
						
						
							|  |  | 						//}
 | 
						
						
						
							|  |  | 					}
 | 
						
						
						
							|  |  | 				}
 | 
						
						
						
							|  |  | 			}
 | 
						
						
						
							|  |  | 		return items
 | 
						
						
						
							|  |  | 	}
 | 
						
						
						
							|  |  | 	this.flatten = function flatten( items, root ){
 | 
						
						
						
							|  |  | 		app.beginUndoGroup("Flatten Selected Folder Contents")
 | 
						
						
						
							|  |  | 		for ( var i = 0; i < items.length ; i ++){
 | 
						
						
						
							|  |  | 			item = items[i];
 | 
						
						
						
							|  |  | 			item.parentFolder = root;
 | 
						
						
						
							|  |  | 		}
 | 
						
						
						
							|  |  | 		app.endUndoGroup()
 | 
						
						
						
							|  |  | 		purgeEmptyFolders();
 | 
						
						
						
							|  |  | 		return
 | 
						
						
						
							|  |  | 	}
 | 
						
						
						
							|  |  | 	this.purgeEmptyFolders = function purgeEmptyFolders(){
 | 
						
						
						
							|  |  | 		app.beginUndoGroup("Purge Empty Folders")
 | 
						
						
						
							|  |  | 		var emptyFolders = [];
 | 
						
						
						
							|  |  | 		
 | 
						
						
						
							|  |  | 		var p = app.project;
 | 
						
						
						
							|  |  | 		for ( var i = p.numItems ; i >= 1 ; i -- ){
 | 
						
						
						
							|  |  | 			item = p.item(i);
 | 
						
						
						
							|  |  | 			if ( item.typeName == "Folder" ){
 | 
						
						
						
							|  |  | 				if ( item.numItems <= 0 ){
 | 
						
						
						
							|  |  | 					item.remove();
 | 
						
						
						
							|  |  | 				}
 | 
						
						
						
							|  |  | 			}
 | 
						
						
						
							|  |  | 		}
 | 
						
						
						
							|  |  | 		
 | 
						
						
						
							|  |  | 		app.endUndoGroup()
 | 
						
						
						
							|  |  | 	}
 | 
						
						
						
							|  |  |     this.yFlattenSelectedFolderContents = function yFlattenSelectedFolderContents()
 | 
						
						
						
							|  |  |     {
 | 
						
						
						
							|  |  | 	//alert("is this working");
 | 
						
						
						
							|  |  | 	app.beginUndoGroup(yFlattenSelectedFolderContentsTool().info.description);
 | 
						
						
						
							|  |  | 	yFlattenSelectedFolderContentsTool().flatten( yFlattenSelectedFolderContentsTool().getAllItems( yFlattenSelectedFolderContentsTool().getSelectedProjectItems()[0] ) , yFlattenSelectedFolderContentsTool().getSelectedProjectItems()[0] );
 | 
						
						
						
							|  |  | 	app.endUndoGroup();
 | 
						
						
						
							|  |  |     }
 | 
						
						
						
							|  |  |     
 | 
						
						
						
							|  |  |     this.activate = this.yFlattenSelectedFolderContents;
 | 
						
						
						
							|  |  |     
 | 
						
						
						
							|  |  |     this.init();
 | 
						
						
						
							|  |  |     return this;
 | 
						
						
						
							|  |  | }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | //CHECKS that the toolbox exists, and if it doesn´t it runs the script on its own.
 | 
						
						
						
							|  |  | if (typeof(YTB)=='undefined')
 | 
						
						
						
							|  |  | {
 | 
						
						
						
							|  |  |     yFlattenSelectedFolderContentsTool = new yFlattenSelectedFolderContentsTool();
 | 
						
						
						
							|  |  |     yFlattenSelectedFolderContentsTool.activate();
 | 
						
						
						
							|  |  | }
 | 
						
						
						
							|  |  | else
 | 
						
						
						
							|  |  | {
 | 
						
						
						
							|  |  |     yFlattenSelectedFolderContentsTool = YTB.addTool(new yFlattenSelectedFolderContentsTool());
 | 
						
						
						
							|  |  | }
 |