/*
* ClassDescriptor.java
*
* Created on 3 ������ 2006 �., 15:58
*
*/
package datechooser.beans.editor.descriptor;
import java.util.Locale;
import static datechooser.beans.locale.LocaleUtils.getEditorLocaleString;
/**
* Abstract object descriptor class.
* You must extend it to register own class in DescriptionManager.
*
* @author Androsov Vadim
* @see DescriptionManager
* @since 1.0
*/
public abstract class ClassDescriptor {
protected static final String ONE_LINE_SEPARATOR = ", ";
protected static final String NEW_LINE_SEPARATOR = ",\n";
private static boolean newLineParameters = true;
/**
* Class of descripting object.
*
*/
public abstract Class getDescriptedClass();
/**
* Java initialization code.
*
*/
public abstract String getJavaDescription(Object value);
/**
* Get object description using specified locale.
*
* @see ClassDescriptor#getDescription(Object, Locale)
*/
public abstract String getDescription(Object value);
/**
* Describes object for output.
*
* @param value Descripting object.
* @param locale Localization.
*
* @return Object description.
*
*/
public String getDescription(Object value, Locale locale) {
return getDescription(value) + " (" +
getEditorLocaleString("default_locale_used") + ")";
}
/**
* Returns full class name.
*/
protected String getClassName() {
return getDescriptedClass().getName();
}
/**
* Returns parameter's delimiter: comma or comma with new line.
*
*/
protected String getSeparator() {
return isNewLineParameters() ? NEW_LINE_SEPARATOR : ONE_LINE_SEPARATOR;
}
/**
* Fit parameters list in one line.
* Used for java code generation - if code is too long, it is more readable
* if each parameter starts from new line.
*
*/
public static boolean isNewLineParameters() {
return newLineParameters;
}
/**
* @see ClassDescriptor#isNewLineParameters()
*/
public static void setNewLineParameters(boolean aNewLineParameters) {
newLineParameters = aNewLineParameters;
}
/**
* Can class process <b>null</b> values.
*
*/
public boolean canProcessNull() {
return false;
}
}