notifications/src/main/java/org/gcube/portlets/user/notifications/client/view/NotificationSettings.java

138 lines
4.4 KiB
Java

package org.gcube.portlets.user.notifications.client.view;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.TreeMap;
import org.gcube.portlets.user.gcubewidgets.client.popup.GCubeDialog;
import org.gcube.portlets.user.notifications.client.NotificationsServiceAsync;
import org.gcube.portlets.user.notifications.client.view.templates.CategoryWrapper;
import org.gcube.portlets.user.notifications.client.view.templates.NotificationPreferenceView;
import org.gcube.portlets.user.notifications.shared.NotificationPreference;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasAlignment;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
/**
* @author Massimiliano Assante ISTI-CNR
*
*/
public class NotificationSettings extends GCubeDialog {
private VerticalPanel mainPanel = new VerticalPanel();
private VerticalPanel container = new VerticalPanel();
private HorizontalPanel buttonsContainerPanel = new HorizontalPanel();
private HorizontalPanel buttonsPanel = new HorizontalPanel();
public static final String loading = GWT.getModuleBaseURL() + "../images/feeds-loader.gif";
public static final String mailSentOK = GWT.getModuleBaseURL() + "../images/yes.png";
public static final String mailSentNOK = GWT.getModuleBaseURL() + "../images/warning_blue.png";
private Button cancel = new Button("Cancel");
private Button save = new Button("Save");
private LinkedHashMap<String, ArrayList<NotificationPreference>> preferences;
public NotificationSettings(LinkedHashMap<String, ArrayList<NotificationPreference>> preferences, final NotificationsServiceAsync notificationService) {
super();
ScrollPanel scroller = new ScrollPanel();
scroller.setWidth("890px");
scroller.setHeight("500px");
this.preferences = preferences;
buttonsPanel.setWidth("100%");
buttonsPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
container.setStyleName("user-notification");
container.setWidth("850px");
for (String category : preferences.keySet()) {
container.add(new CategoryWrapper(category));
for (NotificationPreference pref : preferences.get(category)) {
container.add(new NotificationPreferenceView(pref));
}
}
buttonsContainerPanel.add(cancel);
buttonsContainerPanel.add(save);
buttonsPanel.add(buttonsContainerPanel);
//container.add(buttonsPanel);
setText("Notification Settings");
scroller.add(container);
mainPanel.add(scroller);
mainPanel.add(buttonsPanel);
setWidget(mainPanel);
save.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
}
});
cancel.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
hide();
}
});
}
private void showDeliveryResult(boolean success) {
container.clear();
container.setHorizontalAlignment(HasAlignment.ALIGN_CENTER);
container.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
if (success) {
setText("Notifications Settings Saved");
container.add(new Image(mailSentOK));
}
else {
setText("Notifications Settings Saving Error");
container.add(new Image(mailSentNOK));
container.add(new HTML("There were problems contacting the server, please try again in a short while."));
Button close = new Button("Close");
close.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
hide();
}
});
}
Button close = new Button("Close");
close.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
hide();
}
});
container.add(close);
}
}