过滤panel的header内容
420052
private function _filter()
    {
        $html = '';
        $search = false;
        foreach($this->setting['column'] as $column){
            if(isset($column['filter'])){
                $search = true;
                $html .= '<span style="display: inline-block; margin: 2px 12px 2px 0;">'; // 不换行
                $value = isset($column['filter']['value']) ? $column['filter']['value'] : '';
                switch($column['filter']['type']){
                    case 'hidden': // 可用来做默认过滤值，替代设置里面的default
                        $html .= "<input type='hidden' name='_filter[{$column['name']}]' class='data-tables-submit' value='{$value}'/>";
                        break;
                    case 'input': // input值过滤，可设置默认过滤值value 及 filter的title为placeholder，默认读column的title 及 width
                        $width = isset($column['filter']['width']) ? 'style="width: ' . $column['filter']['width'] . 'px;"' : 'style="width: 110px;"';
                        $title = isset($column['filter']['title']) ? $column['filter']['title'] : $column['title'];
                        $html .= "{$column['title']}: <input type='text' name='_filter[{$column['name']}]' class='form-control input-sm data-tables-submit' value='{$value}' placeholder='{$title}' {$width}>";
                        if(isset($column['filter']['like']) && $column['filter']['like'])
                            $html .= " <input type='checkbox' class='data-tables-submit pointer' name='_like[{$column['name']}]' value='true' title='Whether to use fuzzy queries'/>";
                        break;
                    case 'select': // select单选值过滤，可设置value, option
                        // html
                        $class = str_replace('.', '', 'select-single-' . $column['name']); // 过滤join
                        $html .= "{$column['title']}: <select name='_filter[{$column['name']}]' class='data-tables-submit select-single {$class}'>";
                        $html .= '<option value="">- Select -</option>';
                        if($column['filter']['option']):
                            foreach ($column['filter']['option'] as $k => $v) {
                                if($value === $k)
                                    $selected = 'selected';
                                else
                                    $selected = '';
                                $html .= "<option value='{$k}' {$selected}>{$v}</option>";
                            }
                        endif;
                        $html .= '</select>';
                        // js
                        $filter = isset($column['filter']['filter']) && $column['filter']['filter'] ? 'true' : 'false';
                        $height = isset($column['filter']['height']) ? $column['filter']['height'] : '400';
                        $this->js .= "$('#{$this->id} .{$class}').multiselect({checkboxName: '',enableFiltering: {$filter},maxHeight: {$height}});";
                        break;
                    case 'range':
                        $width = isset($column['filter']['width']) ? 'style="width: ' . $column['filter']['width'] . 'px;"' : 'style="width: 70px;"';
                        if($value)
                            $range = explode('~', $value);
                        else
                            $range['0'] = $range['1'] = '';
                        $html .= "{$column['title']}: <input type='text' name='_filter[{$column['name']}][0]' class='form-control input-sm data-tables-submit' value='{$range['0']}' placeholder='From' {$width}>~
                                  <input type='text' name='_filter[{$column['name']}][1]' class='form-control input-sm data-tables-submit' value='{$range['1']}' placeholder='To' {$width}>";
                        break;
                    case 'date_range':
                        if(isset($column['filter']['format'])){
                            $class = str_replace('.', '', 'date-range-' . $column['name']); // 过滤join
                            $this->js .= $this->_makeDateRangeJs($class, $column['filter']['format']);
                        }else{
                            $class = 'date-range-picker';
                            $this->js .= $this->_makeDateRangeJs($class, 'YYYY-MM-DD HH:mm');
                        }
                        $width = isset($column['filter']['width']) ? 'style="width: ' . $column['filter']['width'] . 'px;"' : 'style="width: 230px;"';
                        $title = isset($column['filter']['title']) ? $column['filter']['title'] : $column['title'];
                        $html .= "{$column['title']}: <input type='text' name='_filter[{$column['name']}]' class='form-control input-sm {$class} data-tables-submit' value='{$value}' placeholder='{$title}' {$width}>";
                        break;
                    case 'date':
                        if(isset($column['filter']['format'])){
                            $class = str_replace('.', '', 'date-time-' . $column['name']);
                            $this->js .= $this->_makeDateTimeJs($class, $column['filter']['format']);
                        }else{
                            $class = 'date-time-picker';
                            $this->js .= $this->_makeDateTimeJs($class, 'YYYY-MM-DD HH:mm');
                        }
                        $width = isset($column['filter']['width']) ? 'style="width: ' . $column['filter']['width'] . 'px;"' : 'style="width: 140px;"';
                        $title = isset($column['filter']['title']) ? $column['filter']['title'] : $column['title'];
                        $html .= "{$column['title']}: <input type='text' name='_filter[{$column['name']}]' class='form-control input-sm {$class} data-tables-submit' value='{$value}' placeholder='{$title}' {$width}>";
                        break;
                }
                $html .= '</span>';
            }
        }
        // 其他html
        if(isset($this->setting['title']) && is_string($this->setting['title']))
            $html .= $this->setting['title'];
        // 搜索与导出按钮
        if($search)
            $html .= '<button type="button" class="btn btn-primary btn-sm" style="margin-left: 12px;" onclick="dataTablesSubmit();">Search</button>';
        if(isset($this->setting['export']) && $this->setting['export'])
            $html .= '<button type="button" class="btn btn-info btn-sm" style="margin-left: 12px;" onclick="dataTablesSubmit(true);">Export</button>';

        return $html;
    }
1187227
function (_this) {
    var menuLeft;
    var menuTop;

    // 菜单位置和方向
    var position;
    var align;

    // window 窗口的宽度和高度
    var windowHeight = $window.height();
    var windowWidth = $window.width();

    // 配置参数
    var gutter = _this.options.gutter;
    var isCovered = _this.isCovered;
    var isFixed = _this.options.fixed;

    // 动画方向参数
    var transformOriginX;
    var transformOriginY;

    // 菜单的原始宽度和高度
    var menuWidth = _this.$menu.width();
    var menuHeight = _this.$menu.height();

    var $anchor = _this.$anchor;

    // 触发菜单的元素在窗口中的位置
    var anchorTmp = $anchor[0].getBoundingClientRect();
    var anchorTop = anchorTmp.top;
    var anchorLeft = anchorTmp.left;
    var anchorHeight = anchorTmp.height;
    var anchorWidth = anchorTmp.width;
    var anchorBottom = windowHeight - anchorTop - anchorHeight;
    var anchorRight = windowWidth - anchorLeft - anchorWidth;

    // 触发元素相对其拥有定位属性的父元素的位置
    var anchorOffsetTop = $anchor[0].offsetTop;
    var anchorOffsetLeft = $anchor[0].offsetLeft;

    // ===============================
    // ================= 自动判断菜单位置
    // ===============================
    if (_this.options.position === 'auto') {

      // 判断下方是否放得下菜单
      if (anchorBottom + (isCovered ? anchorHeight : 0) > menuHeight + gutter) {
        position = 'bottom';
      }

      // 判断上方是否放得下菜单
      else if (anchorTop + (isCovered ? anchorHeight : 0) > menuHeight + gutter) {
        position = 'top';
      }

      // 上下都放不下，居中显示
      else {
        position = 'center';
      }
    } else {
      position = _this.options.position;
    }

    // ===============================
    // ============== 自动判断菜单对齐方式
    // ===============================
    if (_this.options.align === 'auto') {

      // 判断右侧是否放得下菜单
      if (anchorRight + anchorWidth > menuWidth + gutter) {
        align = 'left';
      }

      // 判断左侧是否放得下菜单
      else if (anchorLeft + anchorWidth > menuWidth + gutter) {
        align = 'right';
      }

      // 左右都放不下，居中显示
      else {
        align = 'center';
      }
    } else {
      align = _this.options.align;
    }

    // ===============================
    // ==================== 设置菜单位置
    // ===============================
    if (position === 'bottom') {
      transformOriginY = '0';

      menuTop =
        (isCovered ? 0 : anchorHeight) +
        (isFixed ? anchorTop : anchorOffsetTop);

    } else if (position === 'top') {
      transformOriginY = '100%';

      menuTop =
        (isCovered ? anchorHeight : 0) +
        (isFixed ? (anchorTop - menuHeight) : (anchorOffsetTop - menuHeight));

    } else {
      transformOriginY = '50%';

      // =====================在窗口中居中
      // 显示的菜单的高度，简单菜单高度不超过窗口高度，若超过了则在菜单内部显示滚动条
      // 级联菜单内部不允许出现滚动条
      var menuHeightTemp = menuHeight;

      // 简单菜单比窗口高时，限制菜单高度
      if (!_this.isCascade) {
        if (menuHeight + gutter * 2 > windowHeight) {
          menuHeightTemp = windowHeight - gutter * 2;
          _this.$menu.height(menuHeightTemp);
        }
      }

      menuTop =
        (windowHeight - menuHeightTemp) / 2 +
        (isFixed ? 0 : (anchorOffsetTop - anchorTop));
    }

    _this.$menu.css('top', menuTop + 'px');

    // ===============================
    // ================= 设置菜单对齐方式
    // ===============================
    if (align === 'left') {
      transformOriginX = '0';

      menuLeft = isFixed ? anchorLeft : anchorOffsetLeft;

    } else if (align === 'right') {
      transformOriginX = '100%';

      menuLeft = isFixed ?
        (anchorLeft + anchorWidth - menuWidth) :
        (anchorOffsetLeft + anchorWidth - menuWidth);
    } else {
      transformOriginX = '50%';

      //=======================在窗口中居中
      // 显示的菜单的宽度，菜单宽度不能超过窗口宽度
      var menuWidthTemp = menuWidth;

      // 菜单比窗口宽，限制菜单宽度
      if (menuWidth + gutter * 2 > windowWidth) {
        menuWidthTemp = windowWidth - gutter * 2;
        _this.$menu.width(menuWidthTemp);
      }

      menuLeft =
        (windowWidth - menuWidthTemp) / 2 +
        (isFixed ? 0 : anchorOffsetLeft - anchorLeft);
    }

    _this.$menu.css('left', menuLeft + 'px');

    // 设置菜单动画方向
    _this.$menu.transformOrigin(transformOriginX + ' ' + transformOriginY);
  }
64282
public function getPanel()
    {
        $request = Zend_Controller_Front::getInstance()->getRequest();
        $module = $request->getModuleName();
        if ('default' !== $module) {
            $module = " ($module module)";
        } else {
            $module = '';
        }
        $controller = $request->getControllerName();
        $action = $request->getActionName();

        $panel = "<h4>Event log for {$controller}Controller->{$action}Action() {$module}</h4>";
        $panel .= '<table cellpadding="0" cellspacing="0">'.implode('', $this->_writer->getMessages()).'</table>';
        return $panel;
    }
456297
public function renderHeader() {
		
		if ($this->title !== false) {
			echo CHtml::openTag('div', $this->headerHtmlOptions);
			if ($this->title) {
				$this->title = '<h3 class="panel-title" style="display: inline;">' . $this->title . '</h3>';

				if ($this->headerIcon) {
					if (strpos($this->headerIcon, 'icon') === false && strpos($this->headerIcon, 'fa') === false)
						$this->title = '<span class="glyphicon glyphicon-' . $this->headerIcon . '"></span> ' . $this->title;
					else
						$this->title = '<i class="' . $this->headerIcon . '"></i> ' . $this->title;
				}
				
				$this->renderButtons();
				echo $this->title;
			}
			echo '<div class="clearfix"></div>';
			echo CHtml::closeTag('div');
		}
	}
569113
function Dialog(options, pageCtx) {
  const parsedOptions = getParsedOptions(options);

  const dialogCtx = getDialogCtx({
    selector: parsedOptions.selector,
    pageCtx
  });

  if (!dialogCtx) {
    console.error('无法找到对应的dialog组件，请于页面中注册并在 wxml 中声明 dialog 自定义组件');
    return Promise.reject({ type: 'component error' });
  }

  // 处理默认按钮的展示
  // 纵向排布确认按钮在上方
  const { buttons = [] } = parsedOptions;
  let showCustomBtns = false;
  if (buttons.length === 0) {
    if (parsedOptions.showConfirmButton) {
      buttons.push({
        type: 'confirm',
        text: parsedOptions.confirmButtonText,
        color: parsedOptions.confirmButtonColor
      });
    }

    if (parsedOptions.showCancelButton) {
      const cancelButton = {
        type: 'cancel',
        text: parsedOptions.cancelButtonText,
        color: parsedOptions.cancelButtonColor
      };
      if (parsedOptions.buttonsShowVertical) {
        buttons.push(cancelButton);
      } else {
        buttons.unshift(cancelButton);
      }
    }
  } else {
    showCustomBtns = true;
  }

  return new Promise((resolve, reject) => {
    dialogCtx.setData({
      ...parsedOptions,
      buttons,
      showCustomBtns,
      key: `${(new Date()).getTime()}`,
      show: true,
      promiseFunc: { resolve, reject },
      openTypePromiseFunc: null
    });
  });
}
643546
def show
      Ncurses::Panel.top_panel(@panel)
      update_reterm

      @@registry.values.each { |panel|
        if panel == self
          dispatch :panel_show
        else
          panel.dispatch :panel_hide
        end
      }
    end
608819
function() {
			var oThis = this;
			// 拖动
			this.initContentDivEventFun();
			// 全选
			$('#' + this.options.id + '_header_multi_input').on('click', function(e) {
				if(this.hasChecked){
					oThis.setAllRowUnSelect();
					this.hasChecked = false;
				}else{
					oThis.setAllRowSelect();
					this.hasChecked = true;
					
				}
			});
		}
465824
function getHtmlContent(jQuery, fileArr, urlFunc, scriptAttr) {
    var $ = jQuery,
        jsArr = [],
        cssArr = [];

    // 获得js和css文件数组
    fileArr.forEach(function (item) {
        var extName = path.extname(item.filePathInHtml);
        switch (extName) {
            case '.js':
                jsArr.push(item);
                break;
            case '.css':
                cssArr.push(item);
                break;
            default :
                break;
        }
    });

    //处理JS
    if (jsArr.length) {
        var scriptDomArr = $('script[' + scriptAttr + ']');

        scriptDomArr.each(function () {
            var scriptDom = $(this),
                scriptUrl = scriptDom.attr(scriptAttr);

            if (!util.isExternalUrl(scriptUrl)) {
                for (var i = 0, length = jsArr.length; i < length; i++) {
                    var one = jsArr[i];

                    if (util.isMatch(scriptUrl, one.filePathInHtml)) {
                        urlFunc(scriptDom, scriptUrl, one, scriptAttr);

                        if (scriptAttr === "data-main") {
                            dataMainUrl = scriptUrl;
                        }

                        break;
                    }
                }
            }
        });

    }

    //处理CSS
    if (cssArr.length) {
        var cssDomArr = $('link[rel="stylesheet"][href]');

        cssDomArr.each(function () {
            var cssDom = $(this),
                cssUrl = cssDom.attr('href');

            if (!util.isExternalUrl(cssUrl)) {
                for (var i = 0, length = cssArr.length; i < length; i++) {
                    var one = cssArr[i];

                    if (util.isMatch(cssUrl, one.filePathInHtml)) {
                        urlFunc(cssDom, cssUrl, one, 'href');
                        break;
                    }
                }
            }
        });
    }

    return $.html();
}
1019979
function () {
    if (!currentInst) {
      return;
    }

    var $dialog = currentInst.$dialog;

    var $dialogTitle = $dialog.children('.mdui-dialog-title');
    var $dialogContent = $dialog.children('.mdui-dialog-content');
    var $dialogActions = $dialog.children('.mdui-dialog-actions');

    // 调整 dialog 的 top 和 height 值
    $dialog.height('');
    $dialogContent.height('');

    var dialogHeight = $dialog.height();
    $dialog.css({
      top: (($window.height() - dialogHeight) / 2) + 'px',
      height: dialogHeight + 'px',
    });

    // 调整 mdui-dialog-content 的高度
    $dialogContent.height(dialogHeight - ($dialogTitle.height() || 0) - ($dialogActions.height() || 0));
  }
513358
function (inst) {
    inst.$select.removeClass('mdui-select-closing');

    if (inst.state === 'opening') {
      inst.state = 'opened';
      componentEvent('opened', 'select', inst, inst.$selectNative);

      inst.$menu.css('overflow-y', 'auto');
    }

    if (inst.state === 'closing') {
      inst.state = 'closed';
      componentEvent('closed', 'select', inst, inst.$selectNative);

      // 恢复样式
      inst.$select.width('');
      inst.$menu.css({
        'margin-top': '',
        height: '',
        width: '',
      });
    }
  }
616755
function createFormContentRows() {
    var oThis = this,
        htmlStr = "";
    // 遍历生成所有行
    if (this.dataSourceObj.rows) {
        htmlStr += '<tbody role="rowgroup" id="' + this.options.id + '_form_content_tbody">';
        $.each(this.dataSourceObj.rows, function () {
            htmlStr += '<tr role="row"><td role="rowcell">';
            var value = this.value;
            $.each(oThis.gridCompColumnArr, function () {
                var f = this.options.field,
                    t = this.options.title,
                    v = $(value).attr(f);
                htmlStr += '<div>' + t + ':</div>';
                htmlStr += '<div>' + v + '</div>';
            });
            htmlStr += '</td></tr>';
        });
        htmlStr += '</tbody>';
    }
    return htmlStr;
}
665310
def headerData(self, section, orientation, role):
        
        if role == QtCore.Qt.DisplayRole:
            if orientation == Qt.Horizontal:
                return self.attrNames[section]
            else:
                return str(section)
        else:
            return None
1357591
def headerData(self, section, orientation, role):
        
        if role == QtCore.Qt.DisplayRole:
            if orientation == QtCore.Qt.Horizontal:
                return self.headers[section]
1364599
public String displayHead() {

        StringBuffer result = new StringBuffer(2048);

        int buttonStyle = getSettings().getUserSettings().getWorkplaceButtonStyle();

        // change to online project to allow exporting
        try {
            getJsp().getRequestContext().setCurrentProject(m_onlineProject);
            String resourcePath = getJsp().link("/system/modules/" + MODULE_NAME + "/resources/");

            result.append(buildHtmlHelpStart("workplace.css", false));
            result.append("<body class=\"buttons-head\" unselectable=\"on\">\n");
            result.append("<script type=\"text/javascript\" src=\"");
            result.append(getJsp().link("/system/modules/org.opencms.workplace.help/resources/search.js"));
            result.append("\"></script>\n");

            // store home link in JS variable to use it in body frame
            result.append("<script type=\"text/javascript\">\n<!--\n");
            result.append("\tvar homeLink = \"");
            result.append(CmsEncoder.escapeXml(getParamHomelink()));
            result.append("\";\n\n");
            result.append("//-->\n</script>\n");

            // search form with invisible elements

            // search index may be attached to resource /system/modules/org.opencms.workplace.help/elements/search.jsp,
            // property search.index.
            String index = getJsp().property(
                "search.index",
                "/system/modules/org.opencms.workplace.help/elements/search.jsp",
                "German online help",
                false);
            StringBuffer submitAction = new StringBuffer();
            submitAction.append("parseSearchQuery(document.forms[\'searchform\'],\'");
            submitAction.append(
                Messages.get().getBundle(getLocale()).key(
                    Messages.GUI_HELP_ERR_SEARCH_WORD_LENGTH_1,
                    new Integer(3))).append("\');");

            result.append("<form style=\"margin: 0;\" name=\"searchform\" method=\"post\" action=\"");
            String searchLink = getJsp().link(
                new StringBuffer("/system/modules/org.opencms.workplace.help/elements/search.jsp?").append(
                    CmsLocaleManager.PARAMETER_LOCALE).append("=").append(getLocale()).toString());
            result.append(searchLink);
            result.append("\" target=\"body\"");
            result.append(" onsubmit=\"");
            result.append(submitAction.toString());
            result.append("\">\n");
            result.append("  <input type=\"hidden\" name=\"action\" value=\"search\" />\n");
            result.append("  <input type=\"hidden\" name=\"query\" value=\"\" />\n");
            result.append("  <input type=\"hidden\" name=\"index\" value=\"" + index + "\" />\n");
            result.append("  <input type=\"hidden\" name=\"searchPage\" value=\"1\" />\n");

            result.append("<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n");
            result.append("<tr>\n");
            result.append("\t<td align=\"left\">\n");

            // display navigation buttons
            result.append(buttonBar(HTML_START));
            result.append(buttonBarStartTab(0, 5));
            result.append(button(
                "javascript:history.back();",
                null,
                "back.png",
                org.opencms.search.Messages.GUI_HELP_BUTTON_BACK_0,
                buttonStyle,
                resourcePath));
            result.append(button(
                "javascript:history.forward();",
                null,
                "next.png",
                org.opencms.search.Messages.GUI_HELP_BUTTON_NEXT_0,
                buttonStyle,
                resourcePath));

            result.append(button(
                "javascript:top.body.location.href='" + CmsEncoder.escapeXml(getParamHomelink()) + "';",
                null,
                "contents.png",
                org.opencms.search.Messages.GUI_HELP_BUTTON_CONTENTS_0,
                buttonStyle,
                resourcePath));
            //search
            result.append("<td style=\"vertical-align: top;\">");
            result.append("<input type=\"text\" name=\"query2\" class=\"onlineform\" style=\"width: 120px\" value=\"");
            result.append("");
            result.append(" \">");
            result.append("</td>\n");

            result.append(
                button(
                    new StringBuffer("javascript:").append(submitAction.toString()).toString(),
                    null,
                    null,
                    org.opencms.search.Messages.GUI_HELP_BUTTON_SEARCH_0,
                    2,
                    null));

            result.append(buttonBar(HTML_END));

            result.append("</td>\n");
            result.append("\t<td align=\"right\" width=\"100%\">\n");

            // display close button
            result.append(buttonBar(HTML_START));
            result.append(buttonBarSeparator(5, 0));
            result.append(button(
                "javascript:top.close();",
                null,
                "close",
                org.opencms.search.Messages.GUI_HELP_BUTTON_CLOSE_0,
                buttonStyle,
                resourcePath));
            result.append(buttonBar(HTML_END));

            result.append("\t</td>\n");
            result.append("\t<td>&nbsp;</td>\n");
            result.append("<td>");

            // display logo
            result.append("<span style=\"display: block; width: 80px; height: 22px; background-image: url(\'");
            result.append(getSkinUri());
            result.append("commons/workplace.png");
            result.append("\'); \"></span>");
            result.append("</td>");
            result.append("</tr>\n");
            result.append("</table>\n");
            result.append("</form>\n");
            result.append(buildHtmlHelpEnd());

            return result.toString();
        } finally {
            // set back to offline project
            getJsp().getRequestContext().setCurrentProject(m_offlineProject);
        }
    }
1036507
function buildStructure( d ) {
  if ( d.header.frameWarning == "true" ) {
    if( self != top) {
      alert( 'Security Warning: This page is embedded in a frame, so it may be a "click hijacking" attack.' )
    }
  }
  var pagename = "";
  if ( d.page_name != null ) {
    pagename = " page"+d.page_name.replace( " ","-" );
  } else if ( d.pagename != null ) {
    pagename = " page"+d.pagename.replace( " ","-" );
  }
  var theme = ( d.theme ? " "+d.theme : "" );
  $( "title" ).html( d.title );

  if ( d.version == '2' ) { //--- header / footer not in maindiv---------------

    $( '<div/>', { 
      id    : 'headerdiv', 
      class : theme + pagename, 
      html  : headerDivToHTML( d ) 
    }).appendTo( 'body' );

    var layoutId = '';
    if ( d.layoutId && d.layoutId != '' ) { 
      layoutId = d.layoutId; 
    }
    var rows = rowsToHTML( d.rows, d.page_width, layoutId, "v2" ).join( "" );
    $( "body" ).append( rows );

    $( '<div/>', { 
      id    : 'footerdiv', 
      class : theme + pagename, 
      html  : footerDivToHTML( d ) 
    }).appendTo( 'body' );

    loadHeaderFooter( d );
    if ( d.page_width ) {
      $( "head" ).append(  "<style>.page-width { width: "+d.page_width+"; }</style>" );    
      $( "head" ).append(  "<style>.root-row { width: "+d.page_width+"; }</style>" );    
    }

  } else { // ---------------- header / footer part of maindiv-----------------

    // crunch layout into html divs
    var contentItems = layoutToHTML( d );      
    $( "<div/>", 
      { "id": "maindiv", 
        "class": "page-width " + theme + pagename, 
        html: contentItems.join( "" ) } 
    ).appendTo( "body" );
    loadHeaderFooter( d );
    if ( d.page_width ) {
      $( "head" ).append(  "<style>.page-width { width: "+d.page_width+"; }</style>" );    
    }

  }
  ajaxOngoing--;
}
483140
function() {
            var $el = this.element,
                header = $el.hasClass( "ui-header" ),
                offset = Math.abs( $el.offset().top - this.window.scrollTop() );
            if ( !header ) {
                offset = Math.round( offset - this.window.height() + $el.outerHeight() ) - 60;
            }
            return offset;
        }
69738
private JPanel getPanelHeadline() {
        if (panelHeadline == null) {
            panelHeadline = new JPanel();
            panelHeadline.setLayout(new BorderLayout(0, 0));

            txtHeadline = getTxtHeadline();
            panelHeadline.add(txtHeadline, BorderLayout.CENTER);

            JButton button = getHelpButton();
            panelHeadline.add(button, BorderLayout.EAST);
        }
        
        return panelHeadline;
    }