Project

General

Profile

1
package eu.dnetlib.client.widgets;
2

    
3
import com.github.gwtbootstrap.client.ui.*;
4
import com.github.gwtbootstrap.client.ui.constants.AlertType;
5
import com.github.gwtbootstrap.client.ui.constants.AlternateSize;
6
import com.google.gwt.user.client.ui.FlowPanel;
7
import com.google.gwt.user.client.ui.IsWidget;
8
import com.google.gwt.user.client.ui.Widget;
9
import eu.dnetlib.goldoa.domain.Affiliation;
10
import eu.dnetlib.goldoa.domain.Person;
11

    
12
import java.util.ArrayList;
13
import java.util.List;
14

    
15
/**
16
 * Created by stefania on 3/9/15.
17
 */
18
public class AuthorInfoWidget implements IsWidget {
19

    
20
    private FlowPanel authorInfoPanel = new FlowPanel();
21

    
22
    private Alert errorLabel = new Alert();
23

    
24
    private TextBox firstNameTextBox = new TextBox();
25
    private TextBox lastNameTextBox = new TextBox();
26
    private TextBox initialsTextBox = new TextBox();
27
    private TextBox emailTextBox = new TextBox();
28

    
29
    private AffiliationInfoWidget affiliationInfoWidget = new AffiliationInfoWidget();
30

    
31
    private DeleteAuthorListener deleteAuthorListener;
32

    
33
    public AuthorInfoWidget() {
34

    
35
        authorInfoPanel.addStyleName("authorInfo");
36
        authorInfoPanel.add(errorLabel);
37

    
38
        errorLabel.addStyleName("alertLabel");
39
        errorLabel.setType(AlertType.ERROR);
40
        errorLabel.setHeading("Error! ");
41
        errorLabel.setVisible(false);
42
        errorLabel.setClose(false);
43

    
44
        firstNameTextBox.setAlternateSize(AlternateSize.MEDIUM);
45
        firstNameTextBox.setPlaceholder(" First name (*)");
46
        firstNameTextBox.addStyleName("inlineBlock");
47
        authorInfoPanel.add(firstNameTextBox);
48

    
49
        initialsTextBox.setAlternateSize(AlternateSize.MINI);
50
        initialsTextBox.setPlaceholder(" Initials");
51
        initialsTextBox.addStyleName("inlineBlock");
52
        authorInfoPanel.add(initialsTextBox);
53

    
54
        lastNameTextBox.setAlternateSize(AlternateSize.MEDIUM);
55
        lastNameTextBox.setPlaceholder(" Last name (*)");
56
        lastNameTextBox.addStyleName("inlineBlock");
57
        authorInfoPanel.add(lastNameTextBox);
58

    
59
        emailTextBox.setAlternateSize(AlternateSize.XXLARGE);
60
        emailTextBox.setPlaceholder(" E-mail Address");
61
        authorInfoPanel.add(emailTextBox);
62

    
63
        AffiliationInfoWidget.DeleteAffiliationListener deleteAffiliationListener = new AffiliationInfoWidget.DeleteAffiliationListener() {
64
            @Override
65
            public void deleteAffiliation() {
66
                if(deleteAuthorListener!=null)
67
                    deleteAuthorListener.removeAuthor();
68
            }
69
        };
70
        affiliationInfoWidget.setDeleteAffiliationListener(deleteAffiliationListener);
71
        authorInfoPanel.add(affiliationInfoWidget.asWidget());
72
    }
73

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

    
79
    public interface DeleteAuthorListener {
80
        public void removeAuthor();
81
    }
82

    
83
    public void setDeleteAuthorListener(DeleteAuthorListener deleteAuthorListener) {
84
        this.deleteAuthorListener = deleteAuthorListener;
85
    }
86

    
87
    public Affiliation getAuthor() {
88

    
89
        if(isComplete()) {
90

    
91
            Affiliation affiliation = new Affiliation();
92

    
93
            Person person = new Person();
94
            person.setName(firstNameTextBox.getValue().trim());
95
            person.setInitials(initialsTextBox.getValue().trim());
96
            person.setLastname(lastNameTextBox.getValue().trim());
97
            person.setEmail(emailTextBox.getValue().trim());
98
            affiliation.setPerson(person);
99

    
100
            if(affiliationInfoWidget.getAffiliation()!=null) {
101
                affiliation.setOrganization(affiliationInfoWidget.getAffiliation().getOrganization());
102
                if (affiliationInfoWidget.getAffiliation().getDepartment() != null && !affiliationInfoWidget.getAffiliation().getDepartment().equals(""))
103
                    affiliation.setDepartment(affiliationInfoWidget.getAffiliation().getDepartment());
104
            }
105

    
106
            return affiliation;
107
        }
108

    
109
        return null;
110
    }
111

    
112
    private boolean isComplete() {
113

    
114
        if(!firstNameTextBox.getValue().trim().equals("") && !lastNameTextBox.getValue().trim().equals(""))
115
            return true;
116

    
117
        return false;
118
    }
119

    
120
    public void loadAuthor(Affiliation author) {
121

    
122
        if(author.getPerson()!=null) {
123
            if(author.getPerson().getName()!=null)
124
                firstNameTextBox.setValue(author.getPerson().getName());
125
            if(author.getPerson().getLastname()!=null)
126
                lastNameTextBox.setValue(author.getPerson().getLastname());
127
            if(author.getPerson().getInitials()!=null)
128
                initialsTextBox.setValue(author.getPerson().getInitials());
129
            if(author.getPerson().getEmail()!=null)
130
                emailTextBox.setValue(author.getPerson().getEmail());
131
        }
132

    
133
        if(author.getOrganization()!=null) {
134
            Affiliation affiliation = new Affiliation();
135
            affiliation.setOrganization(author.getOrganization());
136
            affiliation.setDepartment(author.getDepartment());
137
            affiliationInfoWidget.loadAffiliation(affiliation);
138
        }
139
    }
140
}
(3-3/14)