2016-06-23 37 views
1

Ich habe eine TableViewer mit der letzten Spalte, die EditingSupport hat, um den Wert der Zelle zu bearbeiten. Der Viewer hat den Stil FULL_SELECTION. Sobald ich auf die Zelle klicken, wird der Textwert vollständig ausgewählt:TableViewer wie Caret-Position für die Zelle mit Bearbeitungsunterstützung und entfernen FULL_SELECTION

"max value" is fully selected

I Bearbeitung beginnen kann, wird es den aktuellen Wert "max value" und neuen Wert beginnen abhauen.

Wenn ich jedoch die Maus an eine bestimmte Position zum Bearbeiten bewegen möchte, muss ich eine Verzögerung von etwa einer Sekunde geben. Wenn ich direkt nach dem ersten Klick zu schnell klicke, wird die Zelle abgewählt.

Gibt es eine Möglichkeit, das zu vermeiden? Kann ich die Zelle nicht vollständig auswählen? oder haben Sie immer den Caret bis zum Ende des Textes? Vielen Dank!

Antwort

1

Ich nehme an, Sie verwenden TextCellEditor als Zelleneditor.

Erstellen Sie Ihre eigene Klasse TextCellEditor und überschreiben die doSetFocus-Klasse erweitern, um so etwas wie:

@Override 
protected void doSetFocus() 
{ 
    super.doSetFocus(); 

    if (text != null) { 
    text.setSelection(0, 0); 
    } 
} 
+0

Ja, ich benutze 'TextCellEditor', und ich mache nur ein wenig Modifizierung als' text.setSelection (text.getText(). length()); 'um den Cursor auf das Ende des Textes zu setzen. Vielen Dank! –

0

volle Auswahl zu entfernen und legen Sie caret Text zu beenden, außer Kraft setzen doSetFocus und setzen text.setSelection(text.getText().length());

zu ignorieren Doppelklick Ereignis, überschreiben getDoubleClickTimeout zu return 0