Eclipse: рефакторинг-переименование GWT uibinder java bean не переименовывает шаблон ui.xml файл

#java #eclipse #gwt #google-eclipse-plugin

#java #eclipse #gwt #google-eclipse-plugin

Вопрос:

При использовании плагина Eclipse Google, когда вы создаете пару gwt uibinder, вы получаете файл Java bean и соответствующий ему .ui.xml файл шаблона.

Я полагаю, что раньше я мог это сделать в Eclipse Helios: щелкните правой кнопкой мыши на java-компоненте набора uibinder, выполните рефакторинг, чтобы переименовать его, я мог настроить диалоговое окно рефакторинга, чтобы также переименовать . .ui.xml файл шаблона.

В последнее время я использую Eclipse 3.7.0 и последнюю версию GPE. Я больше не могу этого делать. Может быть, я забыл, как это сделать. Кто-нибудь, пожалуйста, напомните мне, как — спасибо.

например, переименовать пару uibinder

 Hello.java, Hello.ui.xml
  

Для

 Bello.java, Bello.ui.xml
  

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

Ответ №1:

Я не заметил этой возможности, и я только что опробовал ее и переименовал либо java, либо ui.xml выдает ошибку до тех пор, пока вы не переименуете другой файл. Обратите внимание, что не задано, что файл.java-код сопоставляется с file.ui.xml , поскольку дизайн может использовать @UiTemplate для связывания файла.java для somethingelse.ui.xml . Это может быть причиной того, что это не работает. Изменение ui.xml автоматическое присвоение имени файлу таким образом может вызвать большой каскад изменений.

Но есть некоторый рефакторинг.

Что может сделать рефакторинг, так это отслеживать изменения в именах @UiField. Если я переименую (используя Alt-R) поле в моем файле.java-файл, который был аннотирован с помощью @UiField, поля ui: в ui.xml файл также будет изменен.

Теперь вот хитрый момент. Допустим, у меня есть foo.java , foo.ui.xml , и foo2.java , с foo2.java используя foo.ui.xml Шаблон пользовательского интерфейса (через аннотацию @UiTemplate). ui.xml файл имеет панель вызова кнопок, поэтому каждый из foo.java и foo2.java есть панель кнопок @UiField(«bar»). Следуйте за мной до сих пор?

В Eclipse я открываю foo.java , и с помощью Alt-R я меняю bar на baz. ui.xml файл имеет свой пользовательский интерфейс: field=»bar», измененный на пользовательский интерфейс: field =»baz», и все аннотации внутри foo.java эта панель ссылок (например, @UiField и @UiHandler) обновляется для ссылки на базу данных. Но код в foo2.java не изменено, и теперь есть ошибка, которую мне нужно исправить. foo2.java все еще ожидает увидеть кнопку под названием bar внутри foo.ui.xml .

Аналогично, если я открою foo2.java , и с помощью Alt-R я меняю bar на baz, пользовательский интерфейс: field=»bar» в foo.ui.xml не изменен, и теперь у вас есть ошибка.

Не уверен, что все это где-то задокументировано. Возможно, вы смутно помнили этот рефакторинг.