2012-01-17 11 views
5

Para las clases del modelo MVC, mis organismos parezca:plantilla de Eclipse para el colocador que llama firePropertyChange()

enum BoundProperty {FIELD_NAME, ...} 

private Type fieldName; 

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

Dado un campo, esta salida puede ser producido a partir del colocador autogenerado? Si no, ¿hay alguna forma de obtener esta salida de una plantilla?

La salida debe CamelCase el nombre del campo para producir el nombre del método, por lo que fieldName genera setFieldName() y mayúsculas el nombre del campo para producir la propiedad enum.

Así que fieldName genera FIELD_NAME (o FIELDNAME también funcionaría).

+1

Parece que [esta respuesta] (http://stackoverflow.com/a/7237108/274350) hace algo de lo que estoy buscando. –

Respuesta

1

Veo este mensaje en el cuadro de diálogo "Generar getters/setters". El formato de los getters/setters se puede configurar en la página de preferencias de Plantillas de códigos. Puede ir allí (Setter Body en la sección Code) y modificarlo a continuación.

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

Sin embargo, no va a generar BoundProperty sin embargo. Necesita más investigación para averiguar si es posible o no. Estos enlaces pueden ayudar a

Useful Eclipse Java Code Templates y Getting started with Eclipse code templates

+0

Gracias por la respuesta. Intenté esto, pero no es suficiente: el tipo debe ser del tipo del campo y FIELD_NAME debe ser la versión en mayúscula del campoName. No parece haber una manera de derivar estos de las variables disponibles en la pantalla Plantillas de código. –

+0

Acabo de agregar algunos enlaces en la respuesta. ¿Puede ser que puedas obtener nuevas variables allí? – Reddy

+0

BTW ¿necesita una forma de agregar nuevos campos en la enumeración también? – Reddy

1

Creo que no hay una forma sencilla de hacer esto a través de las plantillas de Eclipse, sobre todo en cuanto a la camelCase/mayúsculas y generación de valores de enumeración. Puede consultar estas dos preguntas Is there a way to capitalize the first letter of a value of a variable in Eclipse (Helios) code templates, Programmatically add code templates? para profundizar en más detalles.

En mi humilde opinión, la mejor manera de lograr lo que desea es utilizar el Fast Code Eclipse Plugin y escribir una plantilla de velocidad para ese complemento que genera todo el código de los campos.

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 

O cambie el "getter_setter" template of that plugin.

Cuestiones relacionadas