1 package org.glom.web.shared.libglom.layout;
3 import org.glom.web.client.StringUtils;
4 import org.glom.web.shared.libglom.CustomTitle;
5 import org.glom.web.shared.libglom.Field;
6 import org.glom.web.shared.libglom.Field.GlomFieldType;
7 import org.glom.web.shared.libglom.Relationship;
9 public class LayoutItemField extends LayoutItemWithFormatting implements UsesRelationship {
11 private static final long serialVersionUID = -7101706636312130106L;
15 * Don't make this final, because that breaks GWT compilation. See
16 * http://code.google.com/p/google-web-toolkit/issues/detail?id=1054
18 private/* final */UsesRelationship usesRel = new UsesRelationshipImpl();
19 private boolean useDefaultFormatting = true;
22 * Don't make this final, because that breaks GWT serialization. See
23 * http://code.google.com/p/google-web-toolkit/issues/detail?id=1054
25 private/* final */CustomTitle customTitle = new CustomTitle();
28 private String navigationTableName = null; // If any.
31 public String getName() {
33 return super.getName();
35 return field.getName();
42 public Field getFullFieldDetails() {
50 public void setFullFieldDetails(final Field field) {
57 public Formatting getFormattingUsed() {
58 if (useDefaultFormatting && (field != null)) {
59 return field.getFormatting();
61 return super.getFormatting();
68 public GlomFieldType getGlomType() {
70 return field.getGlomType();
73 return GlomFieldType.TYPE_INVALID;
79 * @see org.glom.web.shared.libglom.layout.UsesRelationship#get_table_used(java.lang.String)
82 public String getTableUsed(final String tableName) {
83 return usesRel.getTableUsed(tableName);
87 * @param forDetailsView
90 public Formatting.HorizontalAlignment getFormattingUsedHorizontalAlignment(final boolean forDetailsView) {
94 // TODO: This should actually be in LayoutItem, with an override here.
98 public String getLayoutDisplayName() {
102 result = field.getName();
107 // Indicate if it's a field in another table.
108 if (getHasRelatedRelationshipName()) {
109 final Relationship rel = getRelatedRelationship();
111 result = rel.getName() + "::" + result;
115 if (getHasRelationshipName()) {
116 final Relationship rel = getRelationship();
118 result = rel.getName() + "::" + result;
129 * org.glom.web.shared.libglom.layout.UsesRelationship#setRelationship(org.glom.web.shared.libglom.Relationship)
132 public void setRelationship(final Relationship relationship) {
133 usesRel.setRelationship(relationship);
139 * @see org.glom.web.shared.libglom.layout.UsesRelationship#getRelationship()
142 public Relationship getRelationship() {
143 return usesRel.getRelationship();
149 * @see org.glom.web.shared.libglom.layout.UsesRelationship#getHasRelationshipName()
152 public boolean getHasRelationshipName() {
153 return usesRel.getHasRelationshipName();
160 * org.glom.web.shared.libglom.layout.UsesRelationship#setRelatedRelationship(org.glom.web.shared.libglom.Relationship
164 public void setRelatedRelationship(final Relationship relationship) {
165 usesRel.setRelatedRelationship(relationship);
171 * @see org.glom.web.shared.libglom.layout.UsesRelationship#getRelatedRelationship()
174 public Relationship getRelatedRelationship() {
175 return usesRel.getRelatedRelationship();
181 * @see org.glom.web.shared.libglom.layout.UsesRelationship#getHasRelatedRelationshipName()
184 public boolean getHasRelatedRelationshipName() {
185 return usesRel.getHasRelatedRelationshipName();
191 * @see org.glom.web.shared.libglom.layout.UsesRelationship#getSqlJoinAliasName()
194 public String getSqlJoinAliasName() {
195 return usesRel.getSqlJoinAliasName();
201 public void setUseDefaultFormatting(final boolean useDefaultFormatting) {
202 this.useDefaultFormatting = useDefaultFormatting;
208 public boolean getUseDefaultFormatting() {
209 return useDefaultFormatting;
215 * @see org.glom.web.shared.libglom.layout.UsesRelationship#getSqlTableOrJoinAliasName(java.lang.String)
218 public String getSqlTableOrJoinAliasName(final String tableName) {
219 return usesRel.getSqlTableOrJoinAliasName(tableName);
225 public String getNavigationTableName() {
226 return navigationTableName;
230 public void setNavigationTableName(final String navigationtableName) {
231 this.navigationTableName = navigationtableName;
237 * @see org.glom.web.shared.libglom.layout.UsesRelationship#getRelationshipNameUsed()
240 public String getRelationshipNameUsed() {
241 return usesRel.getRelationshipNameUsed();
245 public String getTitleOriginal() {
246 if (customTitle.getUseCustomTitle()) {
247 return customTitle.getTitleOriginal();
251 return field.getTitleOriginal();
258 public String getTitle(final String locale) {
259 if (customTitle.getUseCustomTitle()) {
260 return customTitle.getTitle(locale);
263 // Fallback to the field's title:
266 title = field.getTitle(locale);
269 // Fallback to the field's original title:
270 if (StringUtils.isEmpty(title) && (field != null)) {
271 title = field.getTitleOriginal();
278 public String getTitleOrName(final String locale) {
279 if (customTitle.getUseCustomTitle()) {
280 return customTitle.getTitle(locale);
281 // TODO: Do not force the use of empty translations.
284 // Fallback to the field's original title:
286 return field.getTitleOrName(locale);
292 public CustomTitle getCustomTitle() {
299 * @see org.glom.web.shared.libglom.layout.UsesRelationship#getTitleUsed(java.lang.String, java.lang.String)
302 public String getTitleUsed(final String parentTableTitle, final String locale) {
303 return usesRel.getTitleUsed(parentTableTitle, locale);