GWT - Реализация вырезания, копирования и вставки на странице с 70 нечетными виджетами - PullRequest
2 голосов
/ 13 августа 2011

Я пытаюсь реализовать функции вырезания, копирования и вставки для страница, которая имеет около 70 виджетов, включая текстовые поля, списки, этикетки, контейнеры, панели и так далее. Кнопки вырезания, копирования и вставки являются частью этого. Когда пользователь выбирает текст в каком-либо текстовом поле в страница и нажимает на копию, текстовое поле теряет фокус и кнопку копирования теперь есть это. Мне нужен текст для вызова метода, который имеет некоторый Javascript позвоните в это как:

$ wnd.window.clipboardData.setData ( "Текст", текст);

Для этого мне нужен текст из текстового поля и потому кнопка копирования теперь есть, я не знаю, где она была выбрана с.

Может ли кто-нибудь сообщить мне, если они сделали что-то подобное перед использованием GWT?

Ответы [ 2 ]

1 голос
/ 13 августа 2011

Я думаю, что GWT не поддерживает копирование и вставку. Но вы можете реализовать операцию копирования / вставки, используя JSNI Methods .

Чтобы узнать, какое текстовое поле использовалось для операции копирования / вставки, вы можете добавить FocusHandler или BlurHandler ко всем текстовым полям, в которых может храниться последнее текстовое поле, которое было сфокусировано. /размытый.

public class CopyPasteExample {
      private TextBox lastTextBox = null;

      private class CopyPasteFocusHandler implements FocusHandler {

             @Override
             public void onFocus(FocusEvent ev) {
                    lastTextBox = (TextBox) ev.getSource();
             }

      }

      private native void copy (String s) /*-{
             $wnd.window.clipboardData.setData("Text", s); 
      }-*/;

      private void copyFromLastTextBox() {
             if (lastTextBox != null) {
                 copy(lastTextBox.getValue());
             }
      }

}
0 голосов
/ 22 августа 2012

Немного поздно, но, наконец, я публикую информацию о том, как я работал над этой проблемой в прошлом году.

Я создал MouseOverHandlers для кнопок вырезания, копирования и вставки и когда пользователь наводит курсор на любой из этих виджетов,логика обработки Я использую некоторый собственный код javaScript, чтобы найти активный элемент в DOM, и преобразовываю его в элемент GWT с помощью GQuery.

После преобразования я проверяю, является ли он экземпляром TextBoxBase иЯ просто беру текст из этого поля, чтобы вырезать, скопировать.Вставка работает аналогично, за исключением того, что я вставляю только когда виджет является экземпляром TextBoxBase (так что виджеты TextBox и TextArea покрыты.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...