Шаблон Eclipse для сеттера, который вызывает firePropertyChange () - PullRequest
5 голосов
/ 17 января 2012

Для классов моделей MVC мои сеттеры выглядят так:

enum BoundProperty {FIELD_NAME, ...}

private Type fieldName;

public setFieldName(Type newValue) {
    Type oldValue = fieldName;
    fieldName = newValue;
    firePropertyChange(BoundProperty.FIELD_NAME, oldValue, newValue);
}

При заданном поле может ли этот вывод получаться из автоматически сгенерированного сеттера?Если нет, то есть ли способ получить этот вывод из шаблона?

Выходные данные должны CamelCase имя поля для получения имени метода, поэтому fieldName генерирует setFieldName () и Uppercase имя поля для получения свойства enum.

Так fieldName генерирует FIELD_NAME (илиFIELDNAME тоже сработает).

Ответы [ 3 ]

1 голос
/ 17 января 2012

Я думаю, что нет простого способа сделать это с помощью шаблонов Eclipse, в основном это касается camelCase / upperCase и генерации значений enum. Вы можете проверить эти два вопроса Есть ли способ прописать первую букву значения переменной в шаблонах кода Eclipse (Helios) , Программно добавлять шаблоны кода? , чтобы углубиться в дальнейшие действия подробности.

ИМХО, лучший способ добиться того, чего вы хотите, это использовать Fast Code Eclipse Plugin и написать шаблон скорости для этого плагина, который генерирует весь код из полей.

enum BoundProperty {
#foreach ($field in ${fields})
    ${field.toUpperCase()} #if( $foreach.hasNext ), #end
#end
}

#foreach ($field in ${fields})
    public ${field.type} get${field.name.substring(0,1).toUpperCase()}${field.name.substring(1)}(${field.type} newValue) {
        Type oldValue = fieldName;
        fieldName = newValue;
        firePropertyChange(BoundProperty.${field.name.toUpperCase()}, oldValue, newValue);       
    }
#end

Или измените шаблон "getter_setter" этого плагина .

1 голос
/ 17 января 2012

Я вижу это сообщение в диалоге «Генерировать геттеры / сеттеры». Формат геттеров / сеттеров можно настроить на странице настроек шаблонов кода. Вы можете перейти туда (Setter Body в разделе Code) и изменить, как показано ниже.

Type oldValue = ${field};
${field} = ${param};
firePropertyChange(BoundProperty.FIELD_NAME, oldValue, ${param});

Однако он не будет генерировать BoundProperty, хотя.Нужно больше исследований, чтобы выяснить, возможно ли это или нет.Эти ссылки могут помочь

Полезные шаблоны кода Java Eclipse и Начало работы с шаблонами кода Eclipse

0 голосов
/ 18 января 2012

Плагин Fast Code Eclipse выглядит как опция, но я получил ошибку при ее установке, на которую у меня нет времени, и ответ, предложенный пользователем qualidafial наquestion Полезные шаблоны кода Eclipse Java делает все, что мне нужно, без использования подключаемого модуля Eclipse.

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