You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1213 lines
35 KiB

/*
* set default, depressed and hover behaviours of a widget using classes
*/
bobj.crv.setAllClasses = function (widget, prefix)
{
if (widget && widget.setClasses)
{
if (prefix)
widget.setClasses(prefix + '_default', prefix + '_depressed', prefix + '_hover', prefix + '_depressed');
else
widget.setClasses(null, null, null, null);
}
};
/**
* Toolbar Constructor
*/
bobj.crv.newToolbar = function(kwArgs) {
var UPDATE = MochiKit.Base.update;
kwArgs = UPDATE({
id: bobj.uniqueId(),
visualStyle : {
className : null,
backgroundColor : null,
borderWidth : null,
borderStyle : null,
borderColor : null,
fontFamily : null,
fontWeight : null,
textDecoration : null,
color : null,
width : null,
height : null,
fontStyle : null,
fontSize : null
}
}, kwArgs);
var o = newPaletteContainerWidget(kwArgs.id);
o.margin = 0;
bobj.fillIn(o, kwArgs);
o._rightZoneWgts = [];
o.widgetType = 'Toolbar';
// Attach member functions (since we can't use prototypes)
o.initOld = o.init;
UPDATE(o, bobj.crv.Toolbar);
o.palette = newPaletteWidget(o.id + "_palette");
o.add(o.palette);
return o;
};
bobj.crv.Toolbar = {
/**
* Adds a widget to the toolbar and attaches callbacks to known types.
*
* @param widget
* [Widget] The control to be displayed in the toolbar.
*/
addChild : function(widget) {
if(!widget)
return;
var SIGNAL = MochiKit.Signal.signal;
var PARTIAL = MochiKit.Base.partial;
var BIND = MochiKit.Base.bind;
/* Connect callbacks that broadcast events as signals */
switch (widget.widgetType) {
case 'ToolbarMenu':
this.menu = widget;
if (widget.exportMenuItem)
widget.exportMenuItem.cb = PARTIAL (SIGNAL, this, 'export');
if (widget.printMenuItem)
widget.printMenuItem.cb = PARTIAL (SIGNAL, this, 'print');
break;
case 'ToolbarButtonGroup':
this.group = widget;
if (widget.printButton)
widget.printButton.clickCB = PARTIAL (SIGNAL, this, 'print', widget.printButton.closeCB);
if (widget.exportButton)
widget.exportButton.clickCB = PARTIAL (SIGNAL, this, 'export', widget.exportButton.closeCB);
if (widget.refreshButton)
widget.refreshButton.clickCB = PARTIAL (SIGNAL, this, 'refresh');
if (widget.drillUpButton)
widget.drillUpButton.clickCB = PARTIAL (SIGNAL, this, 'drillUp');
break;
case 'PrevPageButton':
this.prevPageButton = widget;
widget.clickCB = PARTIAL (SIGNAL, this, 'prevPage');
break;
case 'NextPageButton':
this.nextPageButton = widget;
widget.clickCB = PARTIAL (SIGNAL, this, 'nextPage');
break;
case 'ZoomControl':
this.zoomControl = widget;
widget.zoomCB = PARTIAL (SIGNAL, this, 'zoom');
break;
case 'SelectPageControl':
this.selectPageControl = widget;
widget.selectPageCB = PARTIAL (SIGNAL, this, 'selectPage');
if (widget.firstPage && widget.lastPage) {
widget.firstPage.cb = PARTIAL (SIGNAL, this, 'firstPage');
widget.lastPage.cb = PARTIAL (SIGNAL, this, 'lastPage');
}
break;
case 'SearchTextControl':
this.searchTextControl = widget;
widget.searchTextCB = PARTIAL (SIGNAL, this, 'search');
break;
default:
break;
}
/* Delay adding right-aligned widgets due to the semantics of the palette*/
if (widget.layoutAlign == 'right') {
this._rightZoneWgts.push (widget);
} else {
this.palette.add (widget);
}
},
/**
* Do not Remove, Used by WebElements Public API
*/
getSearchTextControl : function () {
return this.searchTextControl;
},
/**
* Do not Remove, Used by WebElements Public API
*/
getZoomControl : function () {
return this.zoomControl;
},
/**
* Do not Remove, Used by WebElements Public API
*/
getSelectPageControl : function () {
return this.selectPageControl;
},
/**
* Do not Remove, Used by WebElements Public API
*/
getButtonGroup : function () {
return this.group;
},
/**
* Do not Remove, Used by WebElements Public API
*/
getNextPageButton : function () {
return this.nextPageButton;
},
/**
* Do not Remove, Used by WebElements Public API
*/
getPrevPageButton : function () {
return this.prevPageButton;
},
init : function() {
this.initOld ();
bobj.setVisualStyle (this.layer, this.visualStyle);
this.palette.init ();
this._updateNavButtons ();
},
write : function() {
this._addRightZone ();
this.begin ();
this.palette.write ();
this.end ();
document.write (bobj.crv.getInitHTML (this.widx));
},
/**
* Overrides parent. Opens the toolbar's tags.
*/
beginHTML : function() {
return bobj.html.openTag ('div', {
id : this.id,
'class' : 'crtoolbar',
style : {
height : '28px',
overflow : 'hidden',
margin : this.margin + 'px'
}
});
},
getHTML : function() {
this._addRightZone ();
return (this.beginHTML () + this.palette.getHTML () + this.endHTML ());
},
getWidth : function() {
var itemLayer;
var width = 0;
var items = this.palette.items;
for ( var i = 0, len = items.length; i < len; i++) {
itemLayer = items[i].layer;
if (itemLayer.offsetWidth) {
width += itemLayer.offsetWidth;
}
if (itemLayer.offsetLeft) {
width += (itemLayer.offsetLeft * 2);
}
}
return width;
},
/**
* Private. Adds right-aligned widgets to the right zone of the palette
*/
_addRightZone : function() {
this.palette.beginRightZone ();
var w = null;
while (w = this._rightZoneWgts.pop ()) {
this.palette.add (w);
}
delete this._rightZoneWgts;
},
/**
* Private. Updates the enabled state of navigation buttons based on the current page number and the number of pages.
*/
_updateNavButtons : function() {
if (this.selectPageControl) {
var curPg = this.selectPageControl.getCurrentPage ();
if (this.selectPageControl.firstPage) {
this.selectPageControl.firstPage.setDisabled (curPg == 1);
}
if (this.prevPageButton) {
this.prevPageButton.setDisabled (curPg == 1);
}
var numPgsStr = this.selectPageControl.getNumPages ();
var lastPgKnown = numPgsStr.indexOf ('+') == -1;
var numPgs = parseInt (numPgsStr, 10);
var fwdDisabled = lastPgKnown && numPgs == curPg;
if (this.nextPageButton) {
this.nextPageButton.setDisabled (fwdDisabled);
}
if (this.selectPageControl.lastPage) {
this.selectPageControl.lastPage.setDisabled (fwdDisabled);
}
}
},
setPageNumber : function(curPage, numPages) {
if (this.selectPageControl) {
if (curPage)
this.selectPageControl.setCurrentPage (curPage);
if (numPages)
this.selectPageControl.setNumPages (numPages);
this._updateNavButtons ();
}
},
update : function(update) {
if (update) {
for ( var childNum in update.children) {
var child = update.children[childNum];
if (child) {
switch (child.cons) {
case "bobj.crv.newSelectPageControl":
if (this.selectPageControl) {
this.selectPageControl.update (child);
this._updateNavButtons ();
}
break;
case "bobj.crv.newSearchTextControl":
if (this.searchTextControl) {
this.searchTextControl.update (child);
}
break;
case "bobj.crv.newZoomControl":
if(this.zoomControl) {
this.zoomControl.update(child);
}
break;
case "bobj.crv.newToolbarButtonGroup":
if(this.group) {
this.group.update(child);
}
break;
}
}
}
}
}
};
/**
* ToolbarMenu Constructor
*/
bobj.crv.newToolbarMenu = function(kwArgs) {
kwArgs = MochiKit.Base.update({
id: bobj.uniqueId(),
icon: null,
text: L_bobj_crv_File,
tooltip: L_bobj_crv_FileMenu
}, kwArgs);
var o = newSingleIconMenuWidget(kwArgs.id, kwArgs.icon, null, kwArgs.text, kwArgs.tooltip);
o.widgetType = 'ToolbarMenu';
o._tbBtnOldInit = o.init;
bobj.crv.setAllClasses(o.icon, null);
bobj.crv.setAllClasses(o.arrow, null);
bobj.crv.setAllClasses(o, 'filemenu');
o.arrow.resize(13, (_ie?20:18));
MochiKit.Base.update(o, bobj.crv.ToolbarMenu);
return o;
};
bobj.crv.ToolbarMenu = {
init : function() {
this._tbBtnOldInit ();
bobj.disableTabbingKey (this.icon.layer, true);
/* If menu does not have any items make it look like a 'label' */
if (this.getMenu ().items.length == 0) {
this.arrow.setDisplay (false);
bobj.crv.setAllClasses (this.icon, null);
this.icon.clickCB = null;
}
},
/**
* Add toolbar menu items to toolbar
*/
addChild : function(widget) {
var menu = this.getMenu ();
switch (widget.widgetType) {
case 'ExportMenuItem':
var icon = bobj.crv.allInOne.uri;
var dy = bobj.crv.allInOne.toolbarExportDy;
var disDy = dy;
this.exportMenuItem = menu.add (widget.id, L_bobj_crv_submitBtnLbl, null, icon, 3, dy, widget.disabled, 25, disDy, null);
break;
case 'PrintMenuItem':
var icon = bobj.crv.allInOne.uri;
var dy = bobj.crv.allInOne.toolbarPrintDy;
var disDy = dy;
this.printMenuItem = menu.add (widget.id, L_bobj_crv_ActiveXPrintDialogTitle, null, icon, 3, dy, widget.disabled, 25, disDy, null);
break;
default:
bobj.crv.ToolbarMenu.commonAddChild (menu, widget);
break;
}
},
commonAddChild : function(menu, widget) {
switch (widget.widgetType) {
case 'Separator':
menu.addSeparator ();
break;
case 'ScriptMenuItem':
var cb = function() {
bobj.crv.ToolbarMenuItem.scriptItemCB (widget.callback, widget.args);
};
var menuitem = menu.add (widget.id, widget.text, cb, widget.icon, widget.dx, widget.dy, widget.disabled, widget.disDx, widget.disDy, widget.alt);
if (widget.callback == null)
menuitem.setDisabled (true);
break;
case 'ToolbarSubMenu':
var menuitem = menu.add (widget.id, widget.text, null, widget.icon, widget.dx, widget.dy, widget.disabled, widget.disDx, widget.disDy, widget.alt);
menuitem.attachSubMenu (widget.submenu);
break;
}
}
};
/**
* ToolbarSubMenu Constructor
*/
bobj.crv.newToolbarSubMenu = function(kwArgs) {
var o = MochiKit.Base.update({
id: bobj.uniqueId(),
text: null,
icon: null,
dx: 0,
dy: 0,
disabled: false,
disDx: 0,
disDy: 0,
alt : null
}, kwArgs);
o.submenu = newMenuWidget(o.id);
o.widgetType = 'ToolbarSubMenu';
MochiKit.Base.update(o, bobj.crv.ToolbarSubMenu);
return o;
};
bobj.crv.ToolbarSubMenu = {
/**
* Add toolbar menu items to toolbarsubmenu
*/
addChild : function(widget) {
bobj.crv.ToolbarMenu.commonAddChild (this.submenu, widget);
}
};
/**
* ToolbarMenuItem constructor
*/
bobj.crv.newToolbarMenuItem = function(kwArgs) {
var o = MochiKit.Base.update({
id: bobj.uniqueId(),
widgetType:null,
text: null,
icon: null,
dx: 0,
dy: 0,
disabled: false,
disDx: 0,
disDy: 0,
alt : null
}, kwArgs);
MochiKit.Base.update(o, bobj.crv.ToolbarMenuItem);
return o;
};
bobj.crv.ToolbarMenuItem = {
scriptItemCB : function(callback, args) {
if (callback) {
var f = eval (callback);
if (typeof f == 'function') {
if (args)
f.call (null, args);
else
f.call (null);
}
}
}
};
/**
* Constructor. Base class for toolbar buttons.
*/
bobj.crv.newToolbarButton = function(kwArgs) {
kwArgs = MochiKit.Base.update({
id: bobj.uniqueId(),
icon: null,
tooltip: null,
text: null,
isDisabled: false,
isChecked: false,
clickCB: null,
width: 16,
height: 16,
dx: 3,
dy: 3,
disDx: 25,
disDy: 3,
isTabEnabled: true
}, kwArgs);
var o = newIconWidget(
kwArgs.id,
kwArgs.icon,
kwArgs.clickCB,
kwArgs.text,
kwArgs.tooltip,
kwArgs.width,
kwArgs.height,
kwArgs.dx,
kwArgs.dy,
kwArgs.disDx,
kwArgs.disDy,
kwArgs.isTabEnabled);
if (kwArgs.text)
bobj.crv.setAllClasses(o, null);
else
bobj.crv.setAllClasses(o, 'toolbar_button');
o._tbBtnOldInit = o.init;
o._tbBtnKwArgs = kwArgs;
MochiKit.Base.update(o, bobj.crv.ToolbarButton);
return o;
};
bobj.crv.ToolbarButton = {
init : function() {
this._tbBtnOldInit ();
var kwArgs = this._tbBtnKwArgs;
this.setDisabled (kwArgs.isDisabled);
},
update : function (update) {
if(update && bobj.isBoolean(update.args.isDisabled)) {
this.setDisabled (update.args.isDisabled);
}
}
};
/**
* PrevPageButton constructor
*/
bobj.crv.newPrevPageButton = function(kwArgs) {
var o = bobj.crv.newToolbarButton(MochiKit.Base.update({
icon: bobj.crv.allInOne.uri,
tooltip: L_bobj_crv_PrevPage,
dx:3, dy:bobj.crv.allInOne.toolbarPrevPageDy + 3, disDx:25, disDy:bobj.crv.allInOne.toolbarPrevPageDy + 3, width:16, height:16
}, kwArgs));
o.widgetType = 'PrevPageButton';
return o;
};
/**
* NextPageButton constructor
*/
bobj.crv.newNextPageButton = function(kwArgs) {
var o = bobj.crv.newToolbarButton(MochiKit.Base.update({
icon: bobj.crv.allInOne.uri,
tooltip: L_bobj_crv_NextPage,
dx:3, dy:bobj.crv.allInOne.toolbarNextPageDy + 3, disDx:25, disDy:bobj.crv.allInOne.toolbarNextPageDy + 3, width:16, height:16
}, kwArgs));
o.widgetType = 'NextPageButton';
return o;
};
/**
* DrillUp constructor
*/
bobj.crv.newDrillUpButton = function(kwArgs) {
var o = bobj.crv.newToolbarButton(MochiKit.Base.update({
icon: bobj.crv.allInOne.uri,
tooltip: L_bobj_crv_DrillUp,
dx:0, dy:bobj.crv.allInOne.toolbarUpDy, disDx:22, disDy:bobj.crv.allInOne.toolbarUpDy
}, kwArgs));
o.widgetType = 'DrillUpButton';
return o;
};
/**
* RefreshButton constructor
*/
bobj.crv.newRefreshButton = function(kwArgs) {
var o = bobj.crv.newToolbarButton(MochiKit.Base.update({
icon: bobj.crv.allInOne.uri,
tooltip: L_bobj_crv_Refresh,
dy: bobj.crv.allInOne.toolbarRefreshDy,
disDy: bobj.crv.allInOne.toolbarRefreshDy
}, kwArgs));
o.widgetType = 'RefreshButton';
return o;
};
/**
* ExportButton constructor
*/
bobj.crv.newExportButton = function(kwArgs) {
var o = bobj.crv.newToolbarButton(MochiKit.Base.update({
icon: bobj.crv.allInOne.uri,
tooltip: L_bobj_crv_Export,
dy: bobj.crv.allInOne.toolbarExportDy,
disDy: bobj.crv.allInOne.toolbarExportDy
}, kwArgs));
o.widgetType = 'ExportButton';
o.closeCB = MochiKit.Base.bind(function() { if (this.focus) this.focus(); }, o);
return o;
};
/**
* PrintButton constructor
*/
bobj.crv.newPrintButton = function(kwArgs) {
var o = bobj.crv.newToolbarButton(MochiKit.Base.update({
icon: bobj.crv.allInOne.uri,
tooltip: L_bobj_crv_Print,
dy: bobj.crv.allInOne.toolbarPrintDy,
disDy: bobj.crv.allInOne.toolbarPrintDy
}, kwArgs));
o.widgetType = 'PrintButton';
o.closeCB = MochiKit.Base.bind(function() { if (this.focus) this.focus(); }, o);
return o;
};
/**
* LogoButton constructor
*/
bobj.crv.newLogoIcon = function(kwArgs) {
kwArgs = MochiKit.Base.update({
id: bobj.uniqueId(),
icon : bobj.crvUri('images/logo.gif')
}, kwArgs);
var o = newIconWidget(
kwArgs.id,
kwArgs.icon,
function() {window.open('http://www.businessobjects.com/ipl/default.asp?destination=ViewerLogoLink&product=crystalreports&version=14%2E0')},
null,
"SAP Crystal Reports",
120,
20,
0,
0,
0,
0,
true
);
bobj.crv.setAllClasses(o, null);
o.layoutAlign = 'right';
o.widgetType = 'LogoIcon';
return o;
};
/**
* Catalyst constructor
*/
bobj.crv.newCatalystIcon = function(kwArgs) {
var o = newIconWidget(
kwArgs.id,
bobj.crvUri('images/catalyst.gif'),
function() {window.open('http://www.businessobjects.com/ipl/default.asp?destination=DHTMLViewerLandingPage&product=crystalreports&version=14%2E0')},
null,
L_bobj_crv_CatalystTip,
22,
22,
0,
0,
0,
0,
true
);
bobj.crv.setAllClasses(o, null);
o.layoutAlign = 'right';
o.widgetType = 'CatalystIcon';
return o;
};
/**
* ToolbarSeparator constructor
*/
bobj.crv.newToolbarSeparator = function() {
var o = newPaletteVerticalSepWidget(bobj.uniqueId());
o.getHTML = function() {
return bobj.html.DIV({id: this.id, style: {width: '6px'}},
bobj.html.IMG({src: _skin+'../transp.gif', 'class':'toolbar_separator'}));
};
return o;
};
/**
* ZoomControl Constructor
*/
bobj.crv.newZoomControl = function(kwArgs) {
var UPDATE = MochiKit.Base.update;
kwArgs = UPDATE({
initialZoom: '100%',
id: bobj.uniqueId()
}, kwArgs);
if (bobj.isNumber(kwArgs.initialZoom)) {
kwArgs.initialZoom = kwArgs.initialZoom + '%';
}
var o = newTextComboWidget(
kwArgs.id,
5, // max chars
L_bobj_crv_Zoom, // tooltip
60, // width
bobj.crv.ZoomControl._zoomChangeCB, // change CB
null, // check CB
null, // beforeShow CB
null // form name
);
o.arrow.resize(13, (_ie?20:18));
bobj.crv.setAllClasses(o.arrow, 'toolbar_menuarrow');
o.menu.setAccelEnabled(false);
var zoomList = ['400%','300%','200%','150%','125%','100%','75%','50%','25%'];
for (var i = 0, len = zoomList.length; i < len; ++i) {
var zoomLevel = zoomList[i];
o.add(zoomLevel, zoomLevel, (zoomLevel == kwArgs.initialZoom));
}
o.text.setValue(kwArgs.initialZoom);
o.zoomCB = null;
o.widgetType = 'ZoomControl';
o.initOld = o.init;
o._initZoom = kwArgs.initialZoom;
UPDATE(o, bobj.crv.ZoomControl);
return o;
};
bobj.crv.ZoomControl = {
init : function() {
this.initOld ();
this.setZoom (this._initZoom);
},
update : function(update) {
if(update.cons == "bobj.crv.newZoomControl") {
this.setZoom(update.args.initialZoom);
}
},
setZoom : function(lvl) {
var zoomVal = parseInt (lvl, 10);
if (bobj.isNumber (zoomVal)) {
zoomVal += '%';
this.valueSelect (zoomVal);
var si = this.selectedItem;
if (si && si.val != zoomVal) {
si.check (false);
this.selectedItem = null;
}
this._lastValue = zoomVal;
return true;
}
return false;
},
_zoomChangeCB : function() {
var zoomLvl = parseInt (this.text.getValue (), 10);
if (bobj.isNumber (zoomLvl)) {
if (zoomLvl < 10) {
zoomLvl = 10;
} else if (zoomLvl > 400) {
zoomLvl = 400;
}
}
if (!this.setZoom (zoomLvl)) {
this.setZoom (this._lastValue);
} else if (this.zoomCB) {
this.zoomCB (zoomLvl);
}
}
};
/**
* SelectPageControl constructor
*
* @param kwArgs.curPage [String|Int] Current page number
* @param kwArgs.numPages [String|Int] Number of pages in report
*/
bobj.crv.newSelectPageControl = function(kwArgs) {
var UPDATE = MochiKit.Base.update;
kwArgs = UPDATE({
id: bobj.uniqueId(),
showMenu: true
}, kwArgs);
// calculate the text input width on construction time to eliminate resize visual while loading
var textNWidth = bobj.crv.SelectPageControl.getTextAndWidth(kwArgs.curPage, kwArgs.numPages);
var o = newTextComboWidget(
kwArgs.id,
75, // max chars
L_bobj_crv_PageNav, // tooltip
textNWidth.width + 13, // calculated width of the input field + what is getting substracted from it this constructor
null, // change CB
null, // check CB
null, // beforeShow CB
null // form name
);
// Constructor args
o.curPage = kwArgs.curPage;
o.numPages = kwArgs.numPages;
if (kwArgs.showMenu) {
o.addMenuItem(bobj.uniqueId(),L_bobj_crv_FirstPage,null,null,0,0,false,0,0);
o.addMenuItem(bobj.uniqueId(),L_bobj_crv_LastPage,null,null,0,0,false,0,0);
o.firstPage = o.menu.items[0];
o.lastPage = o.menu.items[1];
o.arrow.resize(13, (_ie?20:18));
bobj.crv.setAllClasses(o.arrow, 'toolbar_menuarrow');
o.menu.setAccelEnabled(false);
}
else {
o.arrow.setDisplay(false);
}
o.text.oldSetValue = o.text.setValue;
o.text.setValue = function(newText, newWidth) {
o.text.oldSetValue(newText);
if (newWidth && o.text.layer) {
o.text.resize(newWidth, null);
}
};
o.text.focusCB = function() {
o.text.setValue(o.curPage);
var l = o.text.layer;
if (l) l.select();
};
o.text.blurCB = function() {
var textNWidth = o.getTextAndWidth(o.curPage, o.numPages);
o.text.setValue(textNWidth.text);
};
o.text.enterCB = function() {
if (o.selectPageCB){
var value = o.text.getValue();
o.selectPageCB(value);
}
};
// Constants
o.margin = 1;
o.space = 0;
o.fieldWidth = 30;
o.labelWidth = 13 + o.space;
/* Attach member functions */
o.selectPageCB = null;
UPDATE(o, bobj.crv.SelectPageControl);
o.updateTextValue();
o.widgetType = 'SelectPageControl';
return o;
};
bobj.crv.SelectPageControl = {
getTextAndWidth : function(curPage, numPages) {
var text = L_bobj_crv_of.replace ("%1", curPage).replace ("%2", numPages);
var width = (text.length > 9) ? (text.length * 7) : 60; /* min. width is 60; 7 is a number works for font size 11 */
return {
'text' : text,
'width' : width
};
},
update : function(update) {
if (update && update.cons == "bobj.crv.newSelectPageControl") {
/* Don't call setCurrentPage and setNumPages as each of them calls updateTextValue - we'll end in updating twice!*/
this.curPage = update.args.curPage;
this.numPages = update.args.numPages;
this.updateTextValue ();
}
},
updateTextValue : function() {
var textNWidth = this.getTextAndWidth(this.curPage, this.numPages);
this.text.setValue(textNWidth.text, textNWidth.width);
/* lets not leave the cursor inside this edit box as user could start editing the formatted text, "n of N" */
var l = this.text.layer;
if (l) l.blur();
},
/**
* @return [Int] Returns the current page number
*/
getCurrentPage : function() {
return this.curPage;
},
setCurrentPage : function(val) {
this.curPage = val;
this.updateTextValue();
},
/**
* @return [String] Returns the number of pages label
*/
getNumPages : function() {
return this.numPages;
},
setNumPages : function(val) {
this.numPages = val;
this.updateTextValue();
},
/**
* Do not Remove, Used by WebElements Public API
*/
getFirstPageButton : function () {
return this.firstPage;
},
/**
* Do not Remove, Used by WebElements Public API
*/
getLastPageButton : function () {
return this.lastPage;
}
};
/**
* searchTextControl constructor
*
* @param kwArgs.searchText [String] Search Text
*/
bobj.crv.newSearchTextControl = function(kwArgs) {
var UPDATE = MochiKit.Base.update;
kwArgs = UPDATE({id: bobj.uniqueId(),
icon : bobj.crv.allInOne.uri,
dy : bobj.crv.allInOne.toolbarSearchDy,
disDy : bobj.crv.allInOne.toolbarSearchDy
}, kwArgs);
var o = newWidget(kwArgs.id);
bobj.fillIn(o, kwArgs);
/* Construct the input box */
o.textField = newTextFieldWidget(
o.id + "_textField",
null,
null,
null,
MochiKit.Base.bind(bobj.crv.SearchTextControl._searchTextCB, o),
true,
L_bobj_crv_SearchText,
100);
o.empty = (o.searchText == '');
o.textField.focusCB = function() {
if (o.empty) {
o.textField.setValue('');
}
};
o.textField.blurCB = function() {
if (o.textField.getValue() == '') {
o.textField.setValue(L_bobj_crv_Find);
o.empty = true;
}
else {
o.empty = false;
}
};
o.searchButton = newIconWidget(
o.id + "_button",
kwArgs.icon,
MochiKit.Base.bind(bobj.crv.SearchTextControl._searchTextCB, o),
null,
L_bobj_crv_SearchText,
16,16,3,kwArgs.dy, kwArgs.disDy,3,true);
bobj.crv.setAllClasses(o.searchButton, 'toolbar_button');
/* Attach member functions */
o.initOld = o.init;
o.searchTextCB = null;
UPDATE(o, bobj.crv.SearchTextControl);
o.widgetType = 'SearchTextControl';
return o;
};
bobj.crv.SearchTextControl = {
update : function(update) {
if (update && update.cons == "bobj.crv.newSearchTextControl") {
this.empty = (update.args.searchText == '');
var text = (this.empty) ? L_bobj_crv_Find : update.args.searchText;
this.textField.setValue (text);
}
},
init : function() {
this.initOld ();
this.textField.init ();
var text = (this.empty) ? L_bobj_crv_Find : this.searchText;
this.textField.setValue (text);
this.searchButton.init ();
},
getHTML : function() {
var h = bobj.html;
var labelStyle = {
cursor : 'default',
'padding-left' : this.space + 'px',
width : this.labelWidth + 'px'
};
return h.TABLE ( {
id : this.id,
cellspacing : 0,
cellpadding : 0,
border : 0,
style : {
margin : this.margin + 'px'
}
}, h.TBODY (null, h.TR (null, h.TD (null, this.textField.getHTML ()), h.TD (null, this.searchButton.getHTML ()))));
},
_searchTextCB : function() {
var text = this.textField.getValue ();
if ((text !== "" || this.searchText != text) && bobj.isFunction (this.searchTextCB)) {
this.searchTextCB (text);
}
}
};
bobj.crv.newToolbarButtonGroup = function(kwArgs) {
var UPDATE = MochiKit.Base.update;
kwArgs = UPDATE({
id: bobj.uniqueId(),
visualStyle : {
className : null,
backgroundColor : null,
borderWidth : null,
borderStyle : null,
borderColor : null,
fontFamily : null,
fontWeight : null,
textDecoration : null,
color : null,
width : null,
height : null,
fontStyle : null,
fontSize : null
}
}, kwArgs);
var o = newPaletteContainerWidget(kwArgs.id);
o.margin = 2;
bobj.fillIn(o, kwArgs);
o.widgetType = 'ToolbarButtonGroup';
// Attach member functions (since we can't use prototypes)
o.initOld = o.init;
UPDATE(o, bobj.crv.ToolbarButtonGroup);
o.palette = newPaletteWidget(o.id + "_palette");
o.add(o.palette);
return o;
};
bobj.crv.ToolbarButtonGroup = {
addChild : function(widget) {
switch (widget.widgetType) {
case 'ExportButton':
this.exportButton = widget;
break;
case 'PrintButton':
this.printButton = widget;
break;
case 'RefreshButton':
this.refreshButton = widget;
break;
case 'DrillUpButton':
this.drillUpButton = widget;
}
this.palette.add (widget);
},
update : function (update) {
if(update != null && update.cons == "bobj.crv.newToolbarButtonGroup") {
for (var childNum in update.children) {
var child = update.children[childNum];
if (child) {
switch(child.cons) {
case "bobj.crv.newPrintButton":
if(this.printButton) {
this.printButton.update(child);
}
break;
case "bobj.crv.newExportButton":
if(this.exportButton) {
this.exportButton.update(child);
}
break;
case "bobj.crv.newRefreshButton":
if(this.refreshButton) {
this.refreshButton.update(child);
}
break;
case "bobj.crv.newDrillUpButton":
if(this.drillUpButton) {
this.drillUpButton.update(child);
}
break;
}
}
}
}
},
isAnyButtonDisplayed : function () {
return (this.printButton != null && this.printButton.isDisplayed()) ||
(this.exportButton != null && this.exportButton.isDisplayed()) ||
(this.refreshButton != null && this.refreshButton.isDisplayed()) ||
(this.drillUpButton != null && this.drillUpButton.isDisplayed());
},
autoDisplay : function () {
if(this.isAnyButtonDisplayed())
this.setDisplay (true);
else
this.setDisplay(false);
},
/**
* Do not Remove, Used by WebElements Public API
*/
getExportButton : function () {
return this.exportButton;
},
/**
* Do not Remove, Used by WebElements Public API
*/
getRefreshButton : function () {
return this.refreshButton;
},
/**
* Do not Remove, Used by WebElements Public API
*/
getDrillUpButton : function () {
return this.drillUpButton;
},
/**
* Do not Remove, Used by WebElements Public API
*/
getPrintButton : function () {
return this.printButton;
},
init : function() {
this.initOld ();
bobj.setVisualStyle (this.layer, this.visualStyle);
this.palette.init ();
},
/**
* Overrider parent
*/
beginHTML : function() {
var h = bobj.html;
return h.openTag ('table', {
id: this.id,
'class': 'dialogzone toolbar',
border: '0',
cellspacing: '0',
cellpadding: '0',
style: {
overflow: 'hidden',
margin: this.margin + 'px'
}
})
+ h.openTag ('tr', null)
+ h.TD ({ style: { width: '2px' }
}, h.IMG({src: _skin+'../transp.gif', 'class': 'toolbar_buttongroup_left'}))
+ h.openTag ('td', {'class': 'toolbar_buttongroup'});
},
/**
* Overrider parent
*/
endHTML : function() {
var h = bobj.html;
return h.closeTag ('td', null)
+ h.TD (
{ style: { width: '2px' }
}, h.IMG({src: _skin+'../transp.gif', 'class' : 'toolbar_buttongroup_right'}))
+ h.closeTag ('tr', null)
+ h.closeTag ('table');
},
getHTML : function() {
return this.beginHTML () + this.palette.getHTML () + this.endHTML ();
}
};
bobj.crv.newToolbarButtonGroupSeparator = function() {
return newPaletteVerticalSepWidget(bobj.uniqueId());
};