blob: 98c1bdfe04a70831825b423bf1abd2484b55ffd9 [file] [log] [blame]
/*
Copyright (c) 2004-2005, The Dojo Foundation
All Rights Reserved.
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
http://dojotoolkit.org/community/licensing.shtml
*/
dojo.provide("dojo.widget.EditorTreeContextMenu");
dojo.provide("dojo.widget.EditorTreeMenuItem");
dojo.require("dojo.event.*");
dojo.require("dojo.dnd.*");
dojo.require("dojo.fx.html");
dojo.require("dojo.io.*");
dojo.require("dojo.widget.Container");
dojo.require("dojo.widget.Menu2");
dojo.widget.tags.addParseTreeHandler("dojo:EditorTreeContextMenu");
dojo.widget.tags.addParseTreeHandler("dojo:EditorTreeMenuItem");
dojo.widget.EditorTreeContextMenu = function() {
dojo.widget.PopupMenu2.call(this);
this.widgetType = "EditorTreeContextMenu";
this.eventNames = {
open: ""
};
}
dojo.inherits(dojo.widget.EditorTreeContextMenu, dojo.widget.PopupMenu2);
dojo.lang.extend(dojo.widget.EditorTreeContextMenu, {
initialize: function(args, frag) {
var result = dojo.widget.PopupMenu2.prototype.initialize.apply(this, arguments);
if (args['eventNaming'] == "default" || args['eventnaming'] == "default" ) { // IE || FF
for (eventName in this.eventNames) {
this.eventNames[eventName] = this.widgetId+"/"+eventName;
}
}
return result;
},
postCreate: function(){
var result = dojo.widget.PopupMenu2.prototype.postCreate.apply(this, arguments);
var subItems = this.getChildrenOfType('EditorTreeMenuItem')
for(var i=0; i<subItems.length; i++) {
dojo.event.topic.subscribe(this.eventNames.open, subItems[i], "menuOpen")
}
return result;
},
open: function(x, y, parentMenu, explodeSrc){
var result = dojo.widget.PopupMenu2.prototype.open.apply(this, arguments);
/* publish many events here about structural changes */
dojo.event.topic.publish(this.eventNames.open, { menu:this });
return result;
}
});
dojo.widget.EditorTreeMenuItem = function() {
dojo.widget.MenuItem2.call(this);
this.widgetType = "EditorTreeMenuItem";
}
dojo.inherits(dojo.widget.EditorTreeMenuItem, dojo.widget.MenuItem2);
dojo.lang.extend(dojo.widget.EditorTreeMenuItem, {
for_folders: true,
getTreeNode: function() {
var menu = this;
while (menu.widgetType != 'EditorTreeContextMenu') {
menu = menu.parent;
}
var source = menu.getTopOpenEvent().target;
while (!source.treeNode && source.tagName != 'body') {
source = source.parentNode;
}
if (source.tagName == 'body') {
dojo.raise("treeNode not detected");
}
var treeNode = dojo.widget.manager.getWidgetById(source.treeNode);
return treeNode;
},
menuOpen: function(message) {
var treeNode = this.getTreeNode();
/* manage for folders status */
if (!treeNode.isFolder && this.for_folders==false) {
this.setDisabled(true);
}
else {
this.setDisabled(false);
}
}
});