Implement the flow table layout in the Details View.
[online-glom:gwt-glom.git] / src / main / java / org / glom / web / client / ui / DetailsViewImpl.java
1 /*
2  * Copyright (C) 2011 Openismus GmbH
3  *
4  * This file is part of GWT-Glom.
5  *
6  * GWT-Glom is free software: you can redistribute it and/or modify it
7  * under the terms of the GNU Lesser General Public License as published by the
8  * Free Software Foundation, either version 3 of the License, or (at your
9  * option) any later version.
10  *
11  * GWT-Glom is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
14  * for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with GWT-Glom.  If not, see <http://www.gnu.org/licenses/>.
18  */
19
20 package org.glom.web.client.ui;
21
22 import java.util.ArrayList;
23
24 import org.glom.web.client.ui.details.Group;
25 import org.glom.web.shared.GlomField;
26 import org.glom.web.shared.layout.LayoutGroup;
27
28 import com.google.gwt.user.client.ui.Composite;
29 import com.google.gwt.user.client.ui.FlowPanel;
30 import com.google.gwt.user.client.ui.Label;
31
32 /**
33  * @author Ben Konrath <ben@bagu.org>
34  * 
35  */
36 public class DetailsViewImpl extends Composite implements DetailsView {
37
38         @SuppressWarnings("unused")
39         private Presenter presenter;
40         private final FlowPanel mainPanel = new FlowPanel();
41         private final ArrayList<Label> dataLabels = new ArrayList<Label>();
42
43         public DetailsViewImpl() {
44                 initWidget(mainPanel);
45         }
46
47         /*
48          * (non-Javadoc)
49          * 
50          * @see org.glom.web.client.ui.DetailsView#setPresenter(org.glom.web.client.ui.DetailsView.Presenter)
51          */
52         @Override
53         public void setPresenter(Presenter presenter) {
54                 this.presenter = presenter;
55         }
56
57         /*
58          * (non-Javadoc)
59          * 
60          * @see org.glom.web.client.ui.DetailsView#addLayoutGroup(org.glom.web.shared.layout.LayoutGroup)
61          */
62         @Override
63         public void addLayoutGroup(LayoutGroup layoutGroup) {
64                 Group group = new Group(layoutGroup, false, false);
65                 dataLabels.addAll(group.getDataLabels());
66                 mainPanel.add(group);
67         }
68
69         /*
70          * (non-Javadoc)
71          * 
72          * @see org.glom.web.client.ui.DetailsView#setData(org.glom.web.shared.GlomField[])
73          */
74         public void setData(GlomField[] glomFields) {
75                 if (glomFields == null) {
76                         return;
77                 }
78
79                 for (int i = 0; i < dataLabels.size(); i++) {
80                         Label dataLabel = dataLabels.get(i);
81                         dataLabel.setText(glomFields[i] == null ? "" : glomFields[i].getText());
82                 }
83         }
84
85         /*
86          * (non-Javadoc)
87          * 
88          * @see org.glom.web.client.ui.DetailsView#clear()
89          */
90         @Override
91         public void clear() {
92                 mainPanel.clear();
93                 dataLabels.clear();
94         }
95
96 }