如何让gwt的RichTextArea检测内容粘贴和切割事件?

时间:2012-04-25 14:19:38

标签: gwt copy-paste cut rich-text-editor autogrow

以下代码可以使RichTextArea基于KeyUp事件垂直自动增长或缩小,问题是当用户粘贴或剪切内容时,如何做同样的事情(Google plus已经实现了这一点).MouseUp和CONTEXTMENU事件已经尝试过,没有运气。任何人都可以给出解决方案吗?谢谢。

public AutoResizeTextArea()
{
    new Timer()
    {
        @Override
        public void run()
        {
            (doc = ((FrameElement) getElement().cast()).getContentDocument()).getBody()
                    .setAttribute("style", "word-wrap:break-word;overflow:hidden;");
        }
    }.schedule(100);
}


@Override
public void onBrowserEvent(Event event)
{
    switch (DOM.eventGetType(event))
    {
        case Event.ONKEYUP:
            adjustHeight();
            break;
    }
}

private void adjustHeight()
{
    if (doc.getDocumentElement()
            .getOffsetHeight() != doc.getClientHeight())
    {
        setHeight((doc.getDocumentElement()
                .getOffsetHeight() + 19) + "px");
    }
}

1 个答案:

答案 0 :(得分:0)

这对我有用。我假设您的RichTextArea小部件= richTextArea变量。

IFrameElement iFrame = IFrameElement.as(richTextArea.getElement());

//listen for paste event
addTextPasteHandler(iFrame);

/**
 * Add a listener for the paste event
 * @param iframe
 */
private native void addTextPasteHandler(IFrameElement iframe)
/*-{
    if(iframe == null)
        return;

    var _this = this;

    var pasteFunction = function(e)
    {
        _this.@com.yourpackagepath.YourClass::handlePaste()();
    }

    iframe.contentWindow.addEventListener('paste', pasteFunction, true);

}-*/;

public void handlePaste() {
    Window.alert("Paste!");
}