001: /*
002:
003: This software is OSI Certified Open Source Software.
004: OSI Certified is a certification mark of the Open Source Initiative.
005:
006: The license (Mozilla version 1.0) can be read at the MMBase site.
007: See http://www.MMBase.org/license
008:
009: */
010: package org.mmbase.util.functions;
011:
012: import java.util.*;
013:
014: import org.mmbase.bridge.Descriptor;
015: import org.mmbase.util.LocalizedString;
016:
017: /**
018: * A described function provider maintains a set of {@link Function} objects, and also contains functionality to add
019: * gui information to the provider itself.
020: *
021: * @since MMBase-1.9
022: * @author Pierre van Rooden
023: *
024: * @version $Id: DescribedFunctionProvider.java,v 1.2 2007/06/19 14:00:11 michiel Exp $
025: */
026: public abstract class DescribedFunctionProvider extends
027: FunctionProvider implements Descriptor {
028:
029: /**
030: * Name or key of the provider.
031: */
032: protected String name;
033:
034: /**
035: * Descriptions per locale
036: */
037: protected LocalizedString description;
038:
039: /**
040: *(GUI) names per locale
041: */
042: protected LocalizedString guiName;
043:
044: protected DescribedFunctionProvider() {
045: super ();
046: setDescription("");
047: }
048:
049: /**
050: * Create a described function provider
051: * @param name the name of the function provider
052: */
053: protected DescribedFunctionProvider(String name) {
054: super ();
055: this .name = name;
056: setGUIName(name);
057: setDescription("");
058: }
059:
060: /**
061: * Returns the name or 'key' of this descriptor.
062: * @return the name as a String
063: */
064: public String getName() {
065: return name;
066: }
067:
068: /**
069: * @deprecated
070: */
071: public final void setName(String n) {
072: if (n == null)
073: throw new IllegalArgumentException();
074: this .name = n;
075: setGUIName(name);
076: }
077:
078: /**
079: * The locale which must be used if no locale is specified.
080: * The default implementation returns <code>null</code>.
081: * This method can be overriden if another more logical default is
082: * available. E.g. in BasicField the locale of the current cloud is returned.
083: * @since MMBase-1.8.1
084: */
085: protected Locale getDefaultLocale() {
086: return null;
087: }
088:
089: public String getDescription(Locale locale) {
090: if (description == null)
091: description = new LocalizedString(name);
092: return description.get(locale == null ? getDefaultLocale()
093: : locale);
094: }
095:
096: public String getDescription() {
097: return getDescription(getDefaultLocale());
098: }
099:
100: public LocalizedString getLocalizedDescription() {
101: return description;
102: }
103:
104: protected void setLocalizedDescription(LocalizedString description) {
105: this .description = description;
106: }
107:
108: public void setDescription(String desc, Locale locale) {
109: if (description == null)
110: description = new LocalizedString("");
111: description.set(desc, locale);
112: }
113:
114: public void setDescription(String desc) {
115: setDescription(desc, getDefaultLocale());
116: }
117:
118: /**
119: * Retrieve the GUI name of the field depending on specified langauge.
120: * If the language is not available, the "en" value is returned instead.
121: * If that one is unavailable the internal fieldname is returned.
122: * @return the GUI Name
123: */
124: public String getGUIName(Locale locale) {
125: if (guiName == null)
126: guiName = new LocalizedString(name);
127: return guiName
128: .get(locale == null ? getDefaultLocale() : locale);
129: }
130:
131: /**
132: * Retrieve the GUI name of the field.
133: * If possible, the "en" value is returned.
134: * If that one is unavailable the internal fieldname is returned.
135: * @return the GUI Name
136: */
137: public String getGUIName() {
138: return getGUIName(getDefaultLocale());
139: }
140:
141: public void setGUIName(String g, Locale locale) {
142: if (guiName == null)
143: guiName = new LocalizedString(name);
144: guiName.set(g, locale);
145: }
146:
147: public void setGUIName(String g) {
148: setGUIName(g, getDefaultLocale());
149: }
150:
151: public LocalizedString getLocalizedGUIName() {
152: return guiName;
153: }
154:
155: protected void setLocalizedGUIName(LocalizedString value) {
156: guiName = value;
157: }
158:
159: }
|