Project

General

Profile

« Previous | Next » 

Revision 5367d5aa

Added by Andreas Kohlbecker about 7 years ago

ref #6169 TimePeriod field with simple and details view

View differences:

src/main/java/eu/etaxonomy/cdm/vaadin/component/TimePeriodField.java
11 11
import com.vaadin.data.fieldgroup.BeanFieldGroup;
12 12
import com.vaadin.data.util.BeanItem;
13 13
import com.vaadin.event.FieldEvents.TextChangeEvent;
14
import com.vaadin.server.FontAwesome;
14 15
import com.vaadin.ui.Alignment;
16
import com.vaadin.ui.Button;
15 17
import com.vaadin.ui.Component;
16 18
import com.vaadin.ui.CssLayout;
17 19
import com.vaadin.ui.CustomField;
18 20
import com.vaadin.ui.GridLayout;
19 21
import com.vaadin.ui.Label;
20 22
import com.vaadin.ui.TextField;
23
import com.vaadin.ui.themes.ValoTheme;
21 24

  
22 25
import eu.etaxonomy.cdm.model.common.TimePeriod;
23 26
import eu.etaxonomy.cdm.strategy.parser.TimePeriodParser;
......
44 47

  
45 48
    GridLayout grid = new GridLayout(3, 3);
46 49

  
50
    CssLayout detailsView = new CssLayout();
51
    CssLayout buttonTextField = new CssLayout();
52

  
53
    CssLayout simpleView = new CssLayout();
54

  
55
    TextField cacheField = new TextField();
56

  
47 57
    /**
48 58
     *
49 59
     */
......
67 77

  
68 78
        super.setPrimaryStyleName(PRIMARY_STYLE);
69 79

  
80
        CssLayout root = new CssLayout();
81

  
82
        initSimpleView();
83
        root.addComponent(simpleView);
84

  
85
        initDetailsView();
86
        root.addComponent(detailsView);
87

  
88
        applyDefaultStyles();
89

  
90
        showSimple();
91

  
92
        return root;
93
    }
94

  
95
    /**
96
     *
97
     */
98
    private void initSimpleView() {
99

  
100
        cacheField.setWidth(100, Unit.PERCENTAGE);
101
        Button showDetailsButton = new Button(FontAwesome.CALENDAR);
102
        showDetailsButton.addClickListener(e -> showDetails());
103
        simpleView.addComponent(showDetailsButton);
104
        simpleView.addComponent(cacheField);
105
        simpleView.addStyleName(ValoTheme.LAYOUT_COMPONENT_GROUP);
106
    }
107

  
108
    /**
109
     *
110
     */
111
    private void initDetailsView() {
112

  
70 113
        parseField = new TextField();
71 114
        parseField.setWidth(100, Unit.PERCENTAGE);
72 115
        parseField.setInputPrompt("This field will parse the entered time period");
73 116
        parseField.addTextChangeListener(e -> parseInput(e));
74 117

  
118
        Button closeDetailsButton = new Button(FontAwesome.CLOSE);
119
        closeDetailsButton.addClickListener(e -> showSimple());
120

  
121
        buttonTextField.addComponent(closeDetailsButton);
122
        buttonTextField.addComponent(parseField);
123

  
75 124
        PartialDateField startDate = new PartialDateField("Start");
76 125
        startDate.setInputPrompt("dd.mm.yyy");
77 126
        PartialDateField endDate = new PartialDateField("End");
......
86 135
        toLabel = new Label("\u2014"); // EM DASH : 0x2014
87 136

  
88 137
        int row = 0;
89
        grid.addComponent(parseField, 0, row, 2, row);
138
        grid.addComponent(buttonTextField, 0, row, 2, row);
90 139
        row++;
91 140
        grid.addComponent(startDate, 0, row);
92 141
        grid.addComponent(toLabel, 1, row);
......
97 146

  
98 147
        grid.iterator().forEachRemaining(c -> c.setStyleName(getStyleName()));
99 148

  
100
        CssLayout marginwrapper = new CssLayout();
101
        marginwrapper.setStyleName("margin-wrapper");
102
        marginwrapper.addComponent(grid);
149
        detailsView.setStyleName("margin-wrapper");
150
        detailsView.addComponent(grid);
151
    }
103 152

  
104
        applyDefaultStyles();
105 153

  
106
        return marginwrapper;
154
    /**
155
     * @return
156
     */
157
    private void showSimple() {
158
        detailsView.setVisible(false);
159
        simpleView.setVisible(true);
107 160
    }
108 161

  
109

  
162
    /**
163
     * @return
164
     */
165
    private void showDetails() {
166
        detailsView.setVisible(true);
167
        simpleView.setVisible(false);
168
    }
110 169

  
111 170
    /**
112 171
     * @param e
......
126 185
        if(parseField != null) {
127 186
            parseField.addStyleName(RegistrationStyles.HELPER_FIELD);
128 187
            toLabel.addStyleName("to-label");
188
            buttonTextField.addStyleName(ValoTheme.LAYOUT_COMPONENT_GROUP);
129 189
        }
130 190

  
131 191
    }
......
134 194
    protected void setInternalValue(TimePeriod newValue) {
135 195
        super.setInternalValue(newValue);
136 196
        fieldGroup.setItemDataSource(new BeanItem<TimePeriod>(newValue));
197

  
198
        cacheField.setReadOnly(false);
199
        cacheField.setValue(newValue.toString());
200
        cacheField.setReadOnly(true);
137 201
    }
138 202

  
139 203
    @Override
140 204
    public void setStyleName(String style) {
141 205
        super.setStyleName(style);
142 206
        grid.iterator().forEachRemaining(c -> c.setStyleName(style));
207
        buttonTextField.iterator().forEachRemaining(c -> c.setStyleName(style));
208
        simpleView.iterator().forEachRemaining(c -> c.setStyleName(style));
143 209
        applyDefaultStyles();
144 210
    }
145 211

  
......
147 213
    public void addStyleName(String style) {
148 214
        super.addStyleName(style);
149 215
        grid.iterator().forEachRemaining(c -> c.addStyleName(style));
216
        simpleView.iterator().forEachRemaining(c -> c.addStyleName(style));
217
        buttonTextField.iterator().forEachRemaining(c -> c.addStyleName(style));
150 218
    }
151 219

  
152 220
    /**

Also available in: Unified diff