2016-05-30 14 views
0

Ich würde gerne wissen, wie man mouseover auf einer Zelle erreicht, wenn eine Spalte zu kurz für den Volltext ist.Eclipse Scout Neon Tischzelle mouseover

Also, wenn ich Spalte mit fixer Breite habe, und Text zu lang ist, wie man ganzen Text mit Mouseover in einer Zelle darstellt.

Antwort

1

Sie können durch Überschreiben der

execDecorateCell(Cell view, ITableRow row, IColumn<?> col) Methode in AbstractTable und Einstellung Ihrer Tooltiptext wie

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

Leider eine Maus über Tooltip auf einer beliebigen Zelle dynamisch hinzufügen, dies ist nicht der, wenn Ihre Textlänge überschreitet die Länge Ihrer Spalte/Zelle. Es wird auf jeden Fall den Tooltip-Text setzen! Bisher bin ich mir nicht sicher, ob (oder wie) es möglich ist, (in Pixeln?) Zu berechnen, ob die tatsächliche Stringlänge innerhalb einer Zelle die Spaltenlänge überschreitet. Vielleicht könntest du etwas ausprobieren, das die tatsächliche Länge der Zeichenfolge berücksichtigt (java.lang.String.length()) und nur einen Tooltip bereitstellt, wenn eine bestimmte Länge angegeben ist.

Lassen Sie mich wissen, wenn dies für Sie arbeitet!

Mit freundlichen Grüßen,
Matthias

1

Der Tooltip für abgeschnittenen Text in einer Tabellenzelle zur Zeit nur angezeigt, wenn es nicht möglich ist, die Spalte zu ändern. Dies geschieht absichtlich, weil der Tooltip sehr nervig sein kann. Der Code verantwortlich dafür ist, in der Datei Table.js:

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

Wenn Sie dieses Verhalten nicht gefällt, können Sie die JavaScript-Code anpassen können. Es gibt im Wesentlichen zwei Möglichkeiten, dies zu tun:

  1. Ersetzen Sie die ursprüngliche Funktion
  2. die Tabelle erweitern und die Funktion außer Kraft setzen

Mit dem ersten Ansatz ersetzen Sie die eigentliche Funktion, so jedes Mal ein Scout. Tabelle wird erstellt, diese Funktion wird verwendet. Bei der zweiten Methode müssen Sie sicherstellen, dass Ihre neue Tabelle verwendet wird. Dazu müssen Sie eine Zuordnung zwischen dem Objekttyp und dem Konstruktor angeben, die immer dann verwendet wird, wenn ein Objekt mit scout.create (objectType) erstellt werden soll. Dies geschieht normalerweise per Konvention. Wenn Sie also scout.create ('Table') schreiben, wird eine neue Scout.Table erstellt. Da Sie jetzt eine benutzerdefinierte Tabelle erstellen möchten, müssen Sie die Zuordnung zu scout.objectFactories hinzufügen.

Für mich fühlt sich der erste Ansatz eher wie Patching, während der zweite eine sauberere Lösung ist. Der Vorteil der zweiten Lösung besteht darin, dass das ursprüngliche Objekt unberührt bleibt und Sie zumindest theoretisch noch normale Tabellen erstellen können. Deshalb schlage ich vor, den zweiten Ansatz zu verwenden. Aber am Ende ist es wahrscheinlich eine Frage des Geschmacks.

In beiden Fällen müssen Sie eine oder mehrere JavaScript-Dateien erstellen, sie in Ihrem Projekt-module.js registrieren und dieses Modul in Ihre index.html einbinden. Die Dateien könnten wie folgt aussehen:

Ansatz 1:

Patches.js

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

Ansatz 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(); 
    } 
}); 

Denken Sie daran: Der Scout JavaScript-Code nicht api ist und können sich jederzeit ändern. Sie werden keine Kompilierungsfehler erhalten, wenn die Funktion so umbenannt wird, wie Sie es von Java gewohnt sind. Bevor Sie also eine Menge benutzerdefinierten JavaScript-Code hinzufügen, um das Standardverhalten anzupassen, sollten Sie zuerst einen Fehler beheben, damit er in Scout behoben werden kann. Es könnte auch anderen helfen.