View Javadoc
1   /**
2    * This file Copyright (c) 2018 Magnolia International
3    * Ltd.  (http://www.magnolia-cms.com). All rights reserved.
4    *
5    *
6    * This file is dual-licensed under both the Magnolia
7    * Network Agreement and the GNU General Public License.
8    * You may elect to use one or the other of these licenses.
9    *
10   * This file is distributed in the hope that it will be
11   * useful, but AS-IS and WITHOUT ANY WARRANTY; without even the
12   * implied warranty of MERCHANTABILITY or FITNESS FOR A
13   * PARTICULAR PURPOSE, TITLE, or NONINFRINGEMENT.
14   * Redistribution, except as permitted by whichever of the GPL
15   * or MNA you select, is prohibited.
16   *
17   * 1. For the GPL license (GPL), you can redistribute and/or
18   * modify this file under the terms of the GNU General
19   * Public License, Version 3, as published by the Free Software
20   * Foundation.  You should have received a copy of the GNU
21   * General Public License, Version 3 along with this program;
22   * if not, write to the Free Software Foundation, Inc., 51
23   * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
24   *
25   * 2. For the Magnolia Network Agreement (MNA), this file
26   * and the accompanying materials are made available under the
27   * terms of the MNA which accompanies this distribution, and
28   * is available at http://www.magnolia-cms.com/mna.html
29   *
30   * Any modifications to this file must keep this entire header
31   * intact.
32   *
33   */
34  package info.magnolia.poc;
35  
36  import static com.vaadin.server.Sizeable.Unit.*;
37  
38  import info.magnolia.ui.incub.LinkField;
39  
40  import java.util.stream.StreamSupport;
41  
42  import javax.servlet.annotation.WebServlet;
43  
44  import org.vaadin.aceeditor.AceEditor;
45  
46  import com.vaadin.annotations.Theme;
47  import com.vaadin.annotations.Title;
48  import com.vaadin.annotations.VaadinServletConfiguration;
49  import com.vaadin.annotations.Widgetset;
50  import com.vaadin.server.VaadinRequest;
51  import com.vaadin.server.VaadinServlet;
52  import com.vaadin.ui.Button;
53  import com.vaadin.ui.CheckBoxGroup;
54  import com.vaadin.ui.ComboBox;
55  import com.vaadin.ui.FormLayout;
56  import com.vaadin.ui.Label;
57  import com.vaadin.ui.RadioButtonGroup;
58  import com.vaadin.ui.TextField;
59  import com.vaadin.ui.TwinColSelect;
60  import com.vaadin.ui.UI;
61  
62  @Theme("poctheme")
63  @Title("Magnolia 6 Resurface - Option Fields Components")
64  @Widgetset("info.magnolia.poc.Widgetset")
65  public class DisabledFieldsComponentUI extends UI {
66  
67      @Override
68      protected void init(VaadinRequest vaadinRequest) {
69  
70          FormLayout layout = new FormLayout();
71          layout.setMargin(true);
72          layout.setWidth(926, PIXELS);
73  
74          TextField textField = new TextField("Text field");
75          textField.setValue("Nullam quis risus eget urna mollis ornare vel eu leo");
76  
77          TextField disabledTextField = new TextField("Text field");
78          disabledTextField.setValue("Nullam quis risus eget urna mollis ornare vel eu leo");
79          disabledTextField.setEnabled(false);
80  
81          ComboBox<String> selectField = new ComboBox<>("Select field");
82          selectField.setPlaceholder("Select...");
83          selectField.setEmptySelectionAllowed(false);
84  
85          ComboBox<String> disabledSelectField = new ComboBox<>("Select field");
86          disabledSelectField.setPlaceholder("Select...");
87          disabledSelectField.setEmptySelectionAllowed(false);
88          disabledSelectField.setEnabled(false);
89  
90          CheckBoxGroup<String> checkBoxGroup = new CheckBoxGroup<>("CheckBox field");
91          checkBoxGroup.setItems("Select to display title");
92  
93          CheckBoxGroup<String> disabledCheckBoxGroup = new CheckBoxGroup<>("CheckBox field");
94          disabledCheckBoxGroup.setItems("Select to display title");
95          disabledCheckBoxGroup.setEnabled(false);
96  
97          CheckBoxGroup<String> optionGroupFieldCheck = new CheckBoxGroup<>("Option group field check");
98          optionGroupFieldCheck.setItems("Navigation Title", "None", "Page title");
99          optionGroupFieldCheck.select("Page title");
100 
101         CheckBoxGroup<String> disabledOptionGroupFieldCheck = new CheckBoxGroup<>("Option group field check");
102         disabledOptionGroupFieldCheck.setItems("Navigation Title", "None", "Page title");
103         disabledOptionGroupFieldCheck.select("Page title");
104         disabledOptionGroupFieldCheck.setEnabled(false);
105 
106         RadioButtonGroup<String> optionGroupFieldRadio = new RadioButtonGroup<>("Option group field radio");
107         optionGroupFieldRadio.setItems("Navigation Title", "None", "Page");
108         optionGroupFieldRadio.setSelectedItem("Page");
109 
110         RadioButtonGroup<String> disabledOptionGroupFieldRadio = new RadioButtonGroup<>("Option group field radio");
111         disabledOptionGroupFieldRadio.setItems("Navigation Title", "None", "Page");
112         disabledOptionGroupFieldRadio.setSelectedItem("Page");
113         disabledOptionGroupFieldRadio.setEnabled(false);
114 
115         TwinColSelect<String> twinColSelect = new TwinColSelect<>("Twin-column field");
116         twinColSelect.setItems("Celebrities", "Holidays", "Local", " Pets", "Sports");
117         twinColSelect.setLeftColumnCaption("From");
118         twinColSelect.setRightColumnCaption("To");
119         twinColSelect.select("Sports");
120 
121         TwinColSelect<String> disabledTwinColSelect = new TwinColSelect<>("Twin-column field");
122         disabledTwinColSelect.setItems("Celebrities", "Holidays", "Local", " Pets", "Sports");
123         disabledTwinColSelect.setLeftColumnCaption("From");
124         disabledTwinColSelect.setRightColumnCaption("To");
125         disabledTwinColSelect.select("Sports");
126         disabledTwinColSelect.setEnabled(false);
127 
128         AceEditor codeField = new AceEditor();
129         codeField.setStyleName("textcodefield");
130         codeField.setUseWorker(false);
131         codeField.setCaption("Code field");
132         codeField.setValue("class Resurface {\n" +
133                 "\t{\n" +
134                 "\t\tSystem.out.println(\"Hello Resurface\");\n" +
135                 "\t}\n" +
136                 "}\n");
137 
138         AceEditor disabledCodeField = new AceEditor();
139         disabledCodeField.setStyleName("textcodefield");
140         disabledCodeField.setUseWorker(false);
141         disabledCodeField.setCaption("Code field");
142         disabledCodeField.setEnabled(false);
143         disabledCodeField.setValue("class Resurface {\n" +
144                 "\t{\n" +
145                 "\t\tSystem.out.println(\"Hello Resurface\");\n" +
146                 "\t}\n" +
147                 "}\n");
148 
149         LinkField emptyLinkField = new LinkField();
150         emptyLinkField.setButtonCaptionNew("Select new");
151         emptyLinkField.setCaption("Link empty field");
152 
153         LinkField disabledEmptyLinkField = new LinkField();
154         disabledEmptyLinkField.setButtonCaptionNew("Select new");
155         disabledEmptyLinkField.setCaption("Link empty field");
156         disabledEmptyLinkField.setEnabled(false);
157 
158         Label dummy = new Label("");
159 
160         layout.addComponents(
161                 textField,
162                 disabledTextField,
163                 selectField,
164                 disabledSelectField,
165                 optionGroupFieldCheck,
166                 disabledOptionGroupFieldCheck,
167                 optionGroupFieldRadio,
168                 disabledOptionGroupFieldRadio,
169                 twinColSelect,
170                 disabledTwinColSelect,
171                 codeField,
172                 disabledCodeField,
173                 emptyLinkField,
174                 disabledEmptyLinkField,
175 
176                 dummy);
177 
178         StreamSupport.stream(layout.spliterator(), false)
179                 .filter(component -> !(component instanceof Button))
180                 .forEach(component -> component.setWidth(100, PERCENTAGE));
181 
182         setContent(layout);
183     }
184 
185     @WebServlet(value = "/disabled/*", asyncSupported = true)
186     @VaadinServletConfiguration(productionMode = false, ui = DisabledFieldsComponentUI.class)
187     public static class Servlet extends VaadinServlet {
188     }
189 }