java gwt cursor textarea richtextbox

java - ¿Cómo obtener la posición o ubicación del cursor desde RichTextArea en GWT?



richtextbox (4)

Quiero ubicar el cursor o la ubicación desde RichTextArea. No sé cómo obtener la posición actual del cursor Sin ningún evento de mouse. por ejemplo, TextArea tiene el método getCursorPos (), pero RichTextArea no tiene un método como TextArea. ¿Alguien tiene alguna idea? Por favor, ayúdame...

Gracias por adelantado...


En Vaadin 7.5 @AndreiVolgin la respuesta parece no funcionar. Pero si alguien solo quiere pegar texto en la posición del cursor, entonces el contenedor CKEditor para el complemento Vaadin puede ayudar ( enlace ).

Aquí hay un ejemplo para la posteridad:

CKEditorTextField textArea; // and for example in some listener function we could call: textArea.insertHtml("<b>some html</b>"); textArea.insertText("sample text");


No sé si esto todavía es necesario, pero he estado tratando de hacer exactamente lo mismo hoy y no pude encontrar una respuesta definitiva. Encontré esta solución que no es GWT ( Posición de cursor (cursor) en el área de contentEditable que contiene contenido HTML ), que necesitaba ajustes muy pequeños. Espero que esto ayude a alguien.

public static native int getCursor(Element elem) /*-{ var node = elem.contentWindow.document.body var range = elem.contentWindow.getSelection().getRangeAt(0); var treeWalker = $doc.createTreeWalker(node, NodeFilter.SHOW_TEXT, function(node) { var nodeRange = $doc.createRange(); nodeRange.selectNodeContents(node); return nodeRange.compareBoundaryPoints(Range.END_TO_END, range) < 1 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT; }, false); var charCount = 0; while (treeWalker.nextNode()) { charCount += treeWalker.currentNode.length; } if (range.startContainer.nodeType == 3) { charCount += range.startOffset; } return charCount; }-*/;


Prueba esto, funcionó para mí. básicamente, inserta un texto único en el área de texto enriquecido, luego obtiene el índice del texto insertado y luego lo elimina.

richText=new RichTextArea(); basicFormatter=richText.getFormatter(); basicFormatter.insertHTML("dummydata"); int cursor=richText.getText().indexOf("dummydata"); basicFormatter.undo();