2 * Copyright (C) 2017 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
9 package eu
.etaxonomy
.vaadin
.component
;
11 import com
.vaadin
.data
.Container
;
12 import com
.vaadin
.data
.Property
;
13 import com
.vaadin
.data
.fieldgroup
.FieldGroup
;
14 import com
.vaadin
.server
.FontAwesome
;
15 import com
.vaadin
.ui
.Button
;
16 import com
.vaadin
.ui
.Button
.ClickListener
;
17 import com
.vaadin
.ui
.Component
;
18 import com
.vaadin
.ui
.CssLayout
;
19 import com
.vaadin
.ui
.ListSelect
;
20 import com
.vaadin
.ui
.themes
.ValoTheme
;
23 * @author a.kohlbecker
27 public class ToOneRelatedEntityListSelect
<V
extends Object
> extends CompositeCustomField
<V
> implements ToOneRelatedEntityField
{
29 private static final long serialVersionUID
= 6277565876657520311L;
31 public static final String PRIMARY_STYLE
= "v-related-entity-list-select";
33 private Class
<V
> type
;
35 private CssLayout container
= new CssLayout();
37 private ListSelect select
;
39 private Button addButton
= new Button(FontAwesome
.PLUS
);
40 private Button editButton
= new Button(FontAwesome
.EDIT
);
42 public ToOneRelatedEntityListSelect(String caption
, Class
<V
> type
, Container dataSource
){
44 select
= new ListSelect(caption
, dataSource
);
45 addStyledComponents(select
, addButton
, editButton
);
46 addSizedComponent(select
);
53 protected Component
initContent() {
54 container
.addComponents(select
, addButton
, editButton
);
55 setPrimaryStyleName(PRIMARY_STYLE
);
64 public Class
<?
extends V
> getType() {
72 protected void addDefaultStyles() {
73 container
.addStyleName(ValoTheme
.LAYOUT_COMPONENT_GROUP
);
80 public FieldGroup
getFieldGroup() {
87 public ListSelect
getSelect() {
97 public void setPropertyDataSource(Property newDataSource
) {
98 select
.setPropertyDataSource(newDataSource
);
102 public Property
getPropertyDataSource() {
103 return select
.getPropertyDataSource();
110 public void addClickListenerAddEntity(ClickListener listener
) {
111 addButton
.addClickListener(listener
);
118 public void addClickListenerEditEntity(ClickListener listener
) {
119 editButton
.addClickListener(listener
);