Project

General

Profile

1
package eu.dnetlib.client.widgets;
2

    
3
import com.github.gwtbootstrap.client.ui.base.IconAnchor;
4
import com.github.gwtbootstrap.client.ui.constants.AlternateSize;
5
import com.github.gwtbootstrap.client.ui.constants.IconType;
6
import com.google.gwt.event.dom.client.ClickEvent;
7
import com.google.gwt.event.dom.client.ClickHandler;
8
import com.google.gwt.user.client.ui.FlowPanel;
9
import com.google.gwt.user.client.ui.IsWidget;
10
import com.google.gwt.user.client.ui.Label;
11
import com.google.gwt.user.client.ui.Widget;
12
import com.sencha.gxt.widget.core.client.info.Info;
13
import eu.dnetlib.goldoa.domain.Affiliation;
14
import eu.dnetlib.goldoa.domain.Organization;
15
import eu.dnetlib.goldoa.domain.Vocabulary;
16

    
17
/**
18
 * Created by stefania on 3/10/15.
19
 */
20
public class AffiliationInfoWidget implements IsWidget {
21

    
22
    private FlowPanel affiliationPanel = new FlowPanel();
23

    
24
    private AutoCompleteWidget organizationAutoComplete = new AutoCompleteWidget("organisation", "Search or insert institution");
25
    private TextBox departmentTextBox = new TextBox();
26
    private IconAnchor deleteIcon = new IconAnchor();
27
    private Label commentLabel = new Label();
28

    
29
    private Affiliation affiliation = new Affiliation();
30

    
31
    private Vocabulary organization = null;
32

    
33
    private DeleteAffiliationListener deleteAffiliationListener;
34

    
35
    public AffiliationInfoWidget() {
36

    
37
        affiliationPanel.addStyleName("affiliationPanel");
38

    
39
        AutoCompleteWidget.AutoCompleteListener organizationAutoCompleteListener = new AutoCompleteWidget.AutoCompleteListener() {
40
            @Override
41
            public void valueSelected(Vocabulary vocabulary) {
42
                organization = vocabulary;
43
            }
44
        };
45
        organizationAutoComplete.setAutoCompleteListener(organizationAutoCompleteListener);
46
        organizationAutoComplete.addStyleName("inlineBlock");
47

    
48
        departmentTextBox.setAlternateSize(AlternateSize.MEDIUM);
49
        departmentTextBox.setPlaceholder(" Department (optional)");
50
        departmentTextBox.addStyleName("inlineBlock");
51

    
52
        deleteIcon.setIcon(IconType.REMOVE);
53
        deleteIcon.addStyleName("inlineBlock");
54
        deleteIcon.addStyleName("deleteIcon");
55
        deleteIcon.addClickHandler(new ClickHandler() {
56
            @Override
57
            public void onClick(ClickEvent clickEvent) {
58

    
59
                if(deleteAffiliationListener !=null)
60
                    deleteAffiliationListener.deleteAffiliation();
61
            }
62
        });
63

    
64
        commentLabel.setText("Search using the name as it appears in CORDA");
65
        commentLabel.addStyleName("comment");
66
        commentLabel.addStyleName("fontItalic");
67

    
68
        affiliationPanel.add(organizationAutoComplete);
69
        affiliationPanel.add(departmentTextBox);
70
        affiliationPanel.add(deleteIcon);
71
        affiliationPanel.add(commentLabel);
72
    }
73

    
74
    @Override
75
    public Widget asWidget() {
76
        return affiliationPanel;
77
    }
78

    
79
    public interface DeleteAffiliationListener {
80
        public void deleteAffiliation();
81
    }
82

    
83
    public void setDeleteAffiliationListener(DeleteAffiliationListener deleteAffiliationListener) {
84
        this.deleteAffiliationListener = deleteAffiliationListener;
85
    }
86

    
87
    public Affiliation getAffiliation() {
88

    
89
        if(!organizationAutoComplete.getValue().equals("")) {
90

    
91
            if(organization!=null && organization.getName().equals(organizationAutoComplete.getValue())) {
92
                Organization organization = new Organization();
93
                organization.setName(this.organization.getName());
94
                organization.setId(this.organization.getId());
95
                affiliation.setOrganization(organization);
96

    
97
            } else {
98
                Organization organization = new Organization();
99
                organization.setName(organizationAutoComplete.getValue());
100
                affiliation.setOrganization(organization);
101
            }
102

    
103
            if(!departmentTextBox.getValue().trim().equals(""))
104
                affiliation.setDepartment(departmentTextBox.getValue().trim());
105

    
106
            return affiliation;
107
        }
108

    
109
        return null;
110
    }
111

    
112
    public void clear() {
113

    
114
        organization = null;
115
        organizationAutoComplete.setValue("");
116
        departmentTextBox.setValue("");
117
    }
118

    
119
    public void loadAffiliation(Affiliation affiliation) {
120

    
121
        if(affiliation.getOrganization()!=null) {
122
            organization = new Vocabulary();
123
            organization.setId(affiliation.getOrganization().getId());
124
            organization.setName(affiliation.getOrganization().getName());
125
            organizationAutoComplete.setValue(affiliation.getOrganization().getName());
126
        }
127

    
128
        if(affiliation.getDepartment()!=null)
129
            departmentTextBox.setValue(affiliation.getDepartment());
130
    }
131
}
(1-1/21)