Eclipse Scout Neon表格单元鼠标悬停

时间:2016-05-30 10:57:26

标签: row mouseover eclipse-scout

我想知道如果列对于全文来说太短,如何在单元格上实现鼠标悬停。

因此,如果我的列具有固定宽度,并且文本太长,则如何使用鼠标悬停在单元格中显示整个文本。

2 个答案:

答案 0 :(得分:1)

您可以通过覆盖

在任何单元格上的工具提示上动态添加鼠标 execDecorateCell(Cell view, ITableRow row, IColumn<?> col)中的

AbstractTable方法,并将工具提示文本设置为

@Override
protected void execDecorateCell(Cell view, ITableRow row, IColumn<?> col) {
    super.execDecorateCell(view, row, col);
    view.setTooltipText("Hi there: " + view.getText());
}

不幸的是,这不会考虑您的文本长度是否超过列/单元格的长度。它会在任何情况下设置工具提示文本!到目前为止,我不确定是否(或如何)计算(以像素为单位),如果单元格内的实际字符串长度超过列长度。也许你可以尝试一些东西,它会考虑实际的字符串长度(java.lang.String.length()),并且只有在给定一定长度时才提供工具提示。

请告诉我,如果这对您有用!

祝你好运,
的Matthias

答案 1 :(得分:1)

如果无法调整列的大小,则仅显示表格单元格中截断文本的工具提示。这是出于目的而完成的,因为工具提示可能非常烦人。负责此操作的代码位于Table.js文件中:

scout.Table.prototype._isTruncatedCellTooltipEnabled = function(column) {
  return !this.headerVisible || column.fixedWidth;
};

如果您不喜欢此行为,则可以调整JavaScript代码。这主要有两种方法:

  1. 替换原始功能
  2. 扩展表并覆盖函数
  3. 使用第一种方法替换实际函数,因此每次创建scout.Table时都会使用此函数。使用第二种方法,您需要确保使用新表。为此,您需要指定对象类型和构造函数之间的映射,只要使用scout.create(objectType)创建对象,就会使用该映射。这通常是按惯例完成的,所以如果你写scout.create(&#39;表&#39;),就会创建一个新的scout.Table。因为您现在想要创建自定义表,所以需要将映射添加到scout.objectFactories。

    对我来说,第一种方法更像是修补,而第二种方法则是更清洁的解决方案。第二种解决方案的优点是原始对象保持不变,至少在理论上,您仍然可以创建常规表。这就是我建议使用第二种方法的原因。但最终这可能是一种品味问题。

    在这两种方式中,您需要创建一个或多个JavaScript文件,在yourproject-module.js中注册它们并将此模块包含在index.html中。文件可能如下所示:

    方法1:

    patches.js

    scout.Table.prototype._isTruncatedCellTooltipEnabled = function(column) {
      return true;
    };
    

    方法2

    CustomTable.js

    scout.CustomTable = function() {
      scout.CustomTable.parent.call(this);
    };
    scout.inherits(scout.CustomTable, scout.Table);
    
    /**
     * @override
     */
    scout.CustomTable.prototype._isTruncatedCellTooltipEnabled = function(column) {
      return true;
    };
    

    objectFactories.js

    scout.objectFactories = $.extend(scout.objectFactories, {
      'Table': function() {
        return new scout.CustomTable();
      }
    });
    

    请记住:scout JavaScript代码不是api,可能随时更改。如果函数将像以前一样用于重命名,那么您将不会遇到编译错误。因此,在添加大量自定义JavaScript代码以调整默认行为之前,您应该考虑首先打开一个错误,以便可以在Scout中修复它。它也可以帮助其他人。