Я работаю в приложении GWT, которое будет иметь два RichTextAreas.В каждом из них будет одно и то же предложение, но на разных языках.Когда пользователь нажимает слово, оно будет выделено вместе с его соответствием в другом RichTextArea.Когда пользователь дважды щелкает слово, а не слова, его фрагменты будут выделены.Поскольку событие двойного щелчка никогда не вызывается (я не знаю почему), я создал свой собственный класс, который расширяет RichTextArea, и я сам вызвал событие двойного щелчка (в зависимости от времени, прошедшего между двумя нажатиями).
Проблема в том, что я не могу отключить выбор текста по умолчанию.Я искал возможные решения, но я не нашел ни одного, который действительно работал.Я пробовал как с CSS, так и с JavaScript.Вот как выглядит мой класс:
public class MyRichTextArea extends RichTextArea
{
private boolean clickedOnce = false;
private int msDelay = 250;
public MyRichTextArea()
{
sinkEvents(Event.ONMOUSEDOWN);
disableTextSelectInternal(this.getElement());
}
public void onBrowserEvent(Event event)
{
switch (DOM.eventGetType(event))
{
case Event.ONMOUSEDOWN:
if (!clickedOnce)
{
clickedOnce = true;
Timer t = new Timer()
{
public void run()
{
if (clickedOnce)
{
clickedOnce = false;
raiseEvent(1);
}
}
};
t.schedule(msDelay);
}
else
{
clickedOnce = false;
raiseEvent(2);
}
//DOM.eventPreventDefault(event);
break;
}
}
public void raiseEvent(int clickCount)
{
if (clickCount == 1)
{
this.fireEvent( new GwtEvent<ClickHandler>()
{
public com.google.gwt.event.shared.GwtEvent.Type<ClickHandler> getAssociatedType()
{
return ClickEvent.getType();
}
protected void dispatch(ClickHandler handler)
{
handler.onClick(null);
}
});
}
else
{
this.fireEvent( new GwtEvent<DoubleClickHandler>()
{
public com.google.gwt.event.shared.GwtEvent.Type<DoubleClickHandler> getAssociatedType()
{
return DoubleClickEvent.getType();
}
protected void dispatch(DoubleClickHandler handler)
{
handler.onDoubleClick(null);
}
});
}
}
protected native static void disableTextSelectInternal(Element e)
/*-{
e.ondrag = function () { return false; };
e.onselectstart = function () { return false; };
e.onmousedown = function () { return false; }
e.style.MozUserSelect="none"
}-*/;
}
Я выбрал этот метод отсюда: http://comments.gmane.org/gmane.org.google.gwt/49564,, но он не работает для меня.Я думаю, это должно быть сделано с помощью JavaScript.Я немного новичок в JavaScript и не знаю с чего начать.Если кто-то сталкивался с этой проблемой ранее или имеет какое-либо возможное решение, любая помощь будет оценена.
Заранее спасибо