111 lines
2.8 KiB
JavaScript
111 lines
2.8 KiB
JavaScript
![]() |
/*
|
||
|
Copyright (c) 2004-2006, 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.ResizableTextarea");
|
||
|
dojo.require("dojo.html");
|
||
|
dojo.require("dojo.widget.*");
|
||
|
dojo.require("dojo.widget.LayoutContainer");
|
||
|
dojo.require("dojo.widget.ResizeHandle");
|
||
|
|
||
|
dojo.widget.tags.addParseTreeHandler("dojo:resizabletextarea");
|
||
|
|
||
|
dojo.widget.ResizableTextarea = function(){
|
||
|
dojo.widget.HtmlWidget.call(this);
|
||
|
}
|
||
|
|
||
|
dojo.inherits(dojo.widget.ResizableTextarea, dojo.widget.HtmlWidget);
|
||
|
|
||
|
dojo.lang.extend(dojo.widget.ResizableTextarea, {
|
||
|
templatePath: dojo.uri.dojoUri("src/widget/templates/HtmlResizableTextarea.html"),
|
||
|
templateCssPath: dojo.uri.dojoUri("src/widget/templates/HtmlResizableTextarea.css"),
|
||
|
widgetType: "ResizableTextarea",
|
||
|
tagName: "dojo:resizabletextarea",
|
||
|
isContainer: false,
|
||
|
textAreaNode: null,
|
||
|
textAreaContainer: null,
|
||
|
textAreaContainerNode: null,
|
||
|
statusBar: null,
|
||
|
statusBarContainerNode: null,
|
||
|
statusLabelNode: null,
|
||
|
statusLabel: null,
|
||
|
rootLayoutNode: null,
|
||
|
resizeHandleNode: null,
|
||
|
resizeHandle: null,
|
||
|
|
||
|
fillInTemplate: function(args, frag){
|
||
|
this.textAreaNode = this.getFragNodeRef(frag).cloneNode(true);
|
||
|
|
||
|
// FIXME: Safari apparently needs this!
|
||
|
document.body.appendChild(this.domNode);
|
||
|
|
||
|
this.rootLayout = dojo.widget.createWidget(
|
||
|
"LayoutContainer",
|
||
|
{
|
||
|
minHeight: 50,
|
||
|
minWidth: 100
|
||
|
},
|
||
|
this.rootLayoutNode
|
||
|
);
|
||
|
|
||
|
|
||
|
this.textAreaContainer = dojo.widget.createWidget(
|
||
|
"LayoutContainer",
|
||
|
{ layoutAlign: "client" },
|
||
|
this.textAreaContainerNode
|
||
|
);
|
||
|
this.rootLayout.addChild(this.textAreaContainer);
|
||
|
|
||
|
this.textAreaContainer.domNode.appendChild(this.textAreaNode);
|
||
|
with(this.textAreaNode.style){
|
||
|
width="100%";
|
||
|
height="100%";
|
||
|
}
|
||
|
|
||
|
this.statusBar = dojo.widget.createWidget(
|
||
|
"LayoutContainer",
|
||
|
{
|
||
|
layoutAlign: "bottom",
|
||
|
minHeight: 28
|
||
|
},
|
||
|
this.statusBarContainerNode
|
||
|
);
|
||
|
this.rootLayout.addChild(this.statusBar);
|
||
|
|
||
|
this.statusLabel = dojo.widget.createWidget(
|
||
|
"LayoutContainer",
|
||
|
{
|
||
|
layoutAlign: "client",
|
||
|
minWidth: 50
|
||
|
},
|
||
|
this.statusLabelNode
|
||
|
);
|
||
|
this.statusBar.addChild(this.statusLabel);
|
||
|
|
||
|
this.resizeHandle = dojo.widget.createWidget(
|
||
|
"ResizeHandle",
|
||
|
{ targetElmId: this.rootLayout.widgetId },
|
||
|
this.resizeHandleNode
|
||
|
);
|
||
|
this.statusBar.addChild(this.resizeHandle);
|
||
|
// dojo.debug(this.rootLayout.widgetId);
|
||
|
|
||
|
// dojo.event.connect(this.resizeHandle, "beginSizing", this, "hideContent");
|
||
|
// dojo.event.connect(this.resizeHandle, "endSizing", this, "showContent");
|
||
|
},
|
||
|
|
||
|
hideContent: function(){
|
||
|
this.textAreaNode.style.display = "none";
|
||
|
},
|
||
|
|
||
|
showContent: function(){
|
||
|
this.textAreaNode.style.display = "";
|
||
|
}
|
||
|
});
|