Project

General

Profile

1
package eu.dnetlib.repo.manager.client.datasources.update;
2

    
3
import com.google.gwt.core.client.GWT;
4
import com.google.gwt.dom.client.Document;
5
import com.google.gwt.event.dom.client.ClickEvent;
6
import com.google.gwt.event.dom.client.ClickHandler;
7
import com.google.gwt.user.client.History;
8
import com.google.gwt.user.client.Window;
9
import com.google.gwt.user.client.rpc.AsyncCallback;
10
import com.google.gwt.user.client.ui.FlowPanel;
11
import com.google.gwt.user.client.ui.HTML;
12
import com.google.gwt.user.client.ui.Widget;
13
import eu.dnetlib.domain.data.Repository;
14
import eu.dnetlib.gwt.client.help.HelpService;
15
import eu.dnetlib.gwt.client.help.HelpServiceAsync;
16
import eu.dnetlib.repo.manager.client.HelpCallback;
17
import eu.dnetlib.repo.manager.client.RepositoryManager;
18
import eu.dnetlib.repo.manager.client.RepositoryManagerWidget;
19
import eu.dnetlib.repo.manager.client.services.RepositoryService;
20
import eu.dnetlib.repo.manager.client.services.RepositoryServiceAsync;
21
import eu.dnetlib.repo.manager.client.widgets.ListOrGridViewOfDatasourcesWidget;
22
import eu.dnetlib.repo.manager.client.widgets.OpenAIRECompliantLogoDownloadWidget;
23
import eu.dnetlib.repo.manager.shared.DatasourcesCollection;
24
import org.gwtbootstrap3.client.ui.Alert;
25
import org.gwtbootstrap3.client.ui.Anchor;
26
import org.gwtbootstrap3.client.ui.constants.AlertType;
27
import org.gwtbootstrap3.client.ui.constants.IconPosition;
28
import org.gwtbootstrap3.client.ui.constants.IconType;
29

    
30
/**
31
 * Created by stefania on 1/14/16.
32
 */
33
public class SelectFromMyRepositoriesWidget implements RepositoryManagerWidget {
34

    
35
    private String parentToken = "";
36
    private String restToken = "";
37

    
38
    private FlowPanel selectRepositoryPanel = new FlowPanel();
39

    
40
    private FlowPanel myRepositoriesListPanel = new FlowPanel();
41
    private FlowPanel myRepositoriesListInnerPanel = new FlowPanel();
42
    private FlowPanel myRepositoriesListBox = new FlowPanel();
43
    private FlowPanel myRepositoriesListBoxContent = new FlowPanel();
44

    
45
    private FlowPanel helpPanel = new FlowPanel();
46

    
47
    private RepositoryServiceAsync repositoryService = GWT.create(RepositoryService.class);
48
    private static HelpServiceAsync helpService = GWT.create(HelpService.class);
49

    
50
    public SelectFromMyRepositoriesWidget() {
51

    
52
        selectRepositoryPanel.addStyleName("row");
53

    
54
        myRepositoriesListPanel.addStyleName("col-lg-12");
55
        myRepositoriesListPanel.add(myRepositoriesListInnerPanel);
56

    
57
        myRepositoriesListInnerPanel.addStyleName("wrapper wrapper-content animated fadeInUp");
58
        myRepositoriesListInnerPanel.add(myRepositoriesListBox);
59

    
60
        myRepositoriesListBox.addStyleName("ibox");
61
        myRepositoriesListBox.add(myRepositoriesListBoxContent);
62

    
63
        myRepositoriesListBoxContent.addStyleName("ibox-content bigContent");
64

    
65
        selectRepositoryPanel.add(myRepositoriesListPanel);
66
    }
67

    
68
    @Override
69
    public void clear() {
70
        myRepositoriesListBoxContent.clear();
71
        selectRepositoryPanel.remove(helpPanel);
72
    }
73

    
74
    @Override
75
    public void reload() {
76

    
77
        Document.get().getElementById("page-wrapper").removeClassName("sidebar-content");
78

    
79
        helpService.getHelpById(parentToken, new HelpCallback(myRepositoriesListPanel, helpPanel, selectRepositoryPanel));
80

    
81
        final HTML loadingWheel = new HTML("<div class=\"loader-big\" style=\"text-align: center; padding-top: 170px; " +
82
                "color: rgb(47, 64, 80); font-weight: bold;\">Retrieving repositories...</div>" +
83
                "<div class=\"whiteFilm\"></div>");
84
        myRepositoriesListBoxContent.addStyleName("loading-big");
85
        myRepositoriesListBoxContent.add(loadingWheel);
86

    
87
            repositoryService.getRepositoriesOfUser(RepositoryManager.currentUser.getEmail(), true, false,
88
                new AsyncCallback<DatasourcesCollection>() {
89

    
90
            @Override
91
            public void onFailure(Throwable caught) {
92

    
93
                myRepositoriesListBoxContent.removeStyleName("loading-big");
94
                myRepositoriesListBoxContent.remove(loadingWheel);
95

    
96
                Alert errorAlert = new Alert();
97
                errorAlert.setType(AlertType.DANGER);
98
                errorAlert.setText("System error retrieving repositories.");
99
                errorAlert.setDismissable(false);
100
                myRepositoriesListBoxContent.add(errorAlert);
101
            }
102

    
103
            @Override
104
            public void onSuccess(DatasourcesCollection datasourcesCollection) {
105

    
106
                myRepositoriesListBoxContent.removeStyleName("loading-big");
107
                myRepositoriesListBoxContent.remove(loadingWheel);
108

    
109
                ListOrGridViewOfDatasourcesWidget listOrGridViewOfDatasourcesWidget =
110
                        new ListOrGridViewOfDatasourcesWidget(datasourcesCollection, "Choose the Datasource you would like to manage",
111
                                parentToken, "<i class=\"fa fa-pencil\" aria-hidden=\"true\"></i>");
112

    
113
                myRepositoriesListBoxContent.add(listOrGridViewOfDatasourcesWidget.asWidget());
114

    
115
                OpenAIRECompliantLogoDownloadWidget openAIRECompliantLogoDownloadWidget = new OpenAIRECompliantLogoDownloadWidget();
116
                myRepositoriesListBoxContent.add(openAIRECompliantLogoDownloadWidget.asWidget());
117

    
118

    
119
            }
120
        });
121
    }
122

    
123
    @Override
124
    public void setToken(String parentToken, String rest) {
125
        this.parentToken = parentToken;
126
        this.restToken = rest;
127
    }
128

    
129
    @Override
130
    public void afterAdditionToRootPanel() {
131

    
132
    }
133

    
134
    @Override
135
    public Widget asWidget() {
136
        return selectRepositoryPanel;
137
    }
138
}
(2-2/4)