LayoutItemPortal: Also override getTitleOriginal().
[online-glom:gwt-glom.git] / src / main / java / org / glom / web / shared / libglom / layout / LayoutItemPortal.java
1 package org.glom.web.shared.libglom.layout;
2
3 import org.glom.web.client.StringUtils;
4 import org.glom.web.shared.libglom.Relationship;
5
6 public class LayoutItemPortal extends LayoutGroup implements UsesRelationship {
7
8         private static final long serialVersionUID = 751801531875664661L;
9         private UsesRelationship usesRel = new UsesRelationshipImpl();
10
11         public enum NavigationType {
12                 NAVIGATION_NONE, NAVIGATION_AUTOMATIC, NAVIGATION_SPECIFIC
13         }
14
15         private NavigationType navigationType = NavigationType.NAVIGATION_AUTOMATIC;
16         private UsesRelationship navigationRelationshipSpecific = null;
17         private boolean addNavigation = false;
18
19         /**
20          * @return
21          */
22         public String getFromField() {
23                 String from_table = null;
24
25                 final Relationship relationship = getRelationship();
26                 if (relationship != null) {
27                         from_table = relationship.getFromTable();
28                 }
29
30                 return from_table;
31         }
32
33         /*
34          * (non-Javadoc)
35          * 
36          * @see
37          * org.glom.web.shared.libglom.layout.UsesRelationship#setRelationship(org.glom.web.shared.libglom.Relationship)
38          */
39         @Override
40         public void setRelationship(Relationship relationship) {
41                 usesRel.setRelationship(relationship);
42         }
43
44         /*
45          * (non-Javadoc)
46          * 
47          * @see org.glom.web.shared.libglom.layout.UsesRelationship#getRelationship()
48          */
49         @Override
50         public Relationship getRelationship() {
51                 return usesRel.getRelationship();
52         }
53
54         /*
55          * (non-Javadoc)
56          * 
57          * @see org.glom.web.shared.libglom.layout.UsesRelationship#getHasRelationshipName()
58          */
59         @Override
60         public boolean getHasRelationshipName() {
61                 return usesRel.getHasRelationshipName();
62         }
63
64         /*
65          * (non-Javadoc)
66          * 
67          * @see
68          * org.glom.web.shared.libglom.layout.UsesRelationship#setRelatedRelationship(org.glom.web.shared.libglom.Relationship
69          * )
70          */
71         @Override
72         public void setRelatedRelationship(Relationship relationship) {
73                 usesRel.setRelatedRelationship(relationship);
74         }
75
76         /*
77          * (non-Javadoc)
78          * 
79          * @see org.glom.web.shared.libglom.layout.UsesRelationship#getRelatedRelationship()
80          */
81         @Override
82         public Relationship getRelatedRelationship() {
83                 return usesRel.getRelatedRelationship();
84         }
85
86         /*
87          * (non-Javadoc)
88          * 
89          * @see org.glom.web.shared.libglom.layout.UsesRelationship#getHasRelatedRelationshipName()
90          */
91         @Override
92         public boolean getHasRelatedRelationshipName() {
93                 return usesRel.getHasRelatedRelationshipName();
94         }
95
96         /*
97          * (non-Javadoc)
98          * 
99          * @see org.glom.web.shared.libglom.layout.UsesRelationship#get_sql_join_alias_name()
100          */
101         @Override
102         public String getSqlJoinAliasName() {
103                 return usesRel.getSqlJoinAliasName();
104         }
105
106         /*
107          * (non-Javadoc)
108          * 
109          * @see org.glom.web.shared.libglom.layout.UsesRelationship#get_sql_table_or_join_alias_name(java.lang.String)
110          */
111         @Override
112         public String getSqlTableOrJoinAliasName(String tableName) {
113                 return usesRel.getSqlTableOrJoinAliasName(tableName);
114         }
115
116         /*
117          * (non-Javadoc)
118          * 
119          * @see org.glom.web.shared.libglom.layout.UsesRelationship#get_table_used(java.lang.String)
120          */
121         @Override
122         public String getTableUsed(String parentTable) {
123                 return usesRel.getTableUsed(parentTable);
124         }
125
126         /**
127          * @return
128          */
129         public NavigationType getNavigationType() {
130                 return navigationType;
131         }
132
133         /**
134          * @param navigationAutomatic
135          */
136         public void setNavigationType(NavigationType navigationType) {
137                 this.navigationType = navigationType;
138         }
139
140         /**
141          * @return
142          */
143         public UsesRelationship getNavigationRelationshipSpecific() {
144                 if (getNavigationType() == NavigationType.NAVIGATION_SPECIFIC)
145                         return navigationRelationshipSpecific;
146                 else
147                         return null;
148         }
149
150         /**
151          * @return
152          */
153         public void setNavigationRelationshipSpecific(UsesRelationship relationship) {
154                 navigationRelationshipSpecific = relationship;
155                 navigationType = NavigationType.NAVIGATION_SPECIFIC;
156         }
157
158         // TODO: Where is getAddNavigation?
159         /**
160          * Whether the UI should show a navigation button. TODO: Remove this?
161          * 
162          * @param b
163          */
164         public void setAddNavigation(boolean addNavigation) {
165                 this.addNavigation = addNavigation;
166         }
167
168         /*
169          * (non-Javadoc)
170          * 
171          * @see org.glom.web.shared.libglom.layout.UsesRelationship#getRelationshipNameUsed()
172          */
173         @Override
174         public String getRelationshipNameUsed() {
175                 return usesRel.getRelationshipNameUsed();
176         }
177
178         @Override
179         public String getTitleOriginal() {
180                 String title = getTitleUsed("" /* parent table - not relevant */, "" /* locale */);
181                 if (StringUtils.isEmpty(title)) // TODO: This prevents "" as a real title.
182                         title = "Undefined Table";
183
184                 return title;
185         }
186         
187         @Override
188         public String getTitle(final String locale) {
189                 String title = getTitleUsed("" /* parent table - not relevant */, locale);
190                 if (StringUtils.isEmpty(title)) // TODO: This prevents "" as a real title.
191                         title = "Undefined Table";
192
193                 return title;
194         }
195
196         @Override
197         public String getTitleOrName(final String locale) {
198                 String title = getTitleUsed("" /* parent table - not relevant */, locale);
199                 if (StringUtils.isEmpty(title)) // TODO: This prevents "" as a real title.
200                         title = getRelationshipNameUsed();
201
202                 if (StringUtils.isEmpty(title)) // TODO: This prevents "" as a real title.
203                         title = "Undefined Table";
204
205                 return title;
206         }
207
208         /*
209          * (non-Javadoc)
210          * 
211          * @see org.glom.web.shared.libglom.layout.UsesRelationship#getTitleUsed(java.lang.String, java.lang.String)
212          */
213         @Override
214         public String getTitleUsed(String parentTableTitle, String locale) {
215                 return usesRel.getTitleUsed(parentTableTitle, locale);
216         }
217 }