82 lines
2.6 KiB
Java
82 lines
2.6 KiB
Java
package org.gcube.portlets.user.newsfeed.client.ui;
|
|
|
|
import org.gcube.portlets.user.newsfeed.client.FilterType;
|
|
import org.gcube.portlets.user.newsfeed.client.NewsServiceAsync;
|
|
import org.gcube.portlets.user.newsfeed.client.panels.NewsFeedPanel;
|
|
import org.gcube.portlets.user.newsfeed.shared.UserSettings;
|
|
|
|
import com.github.gwtbootstrap.client.ui.NavLink;
|
|
import com.google.gwt.core.client.GWT;
|
|
import com.google.gwt.event.dom.client.ClickEvent;
|
|
import com.google.gwt.uibinder.client.UiBinder;
|
|
import com.google.gwt.uibinder.client.UiField;
|
|
import com.google.gwt.uibinder.client.UiHandler;
|
|
import com.google.gwt.user.client.Window;
|
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
|
import com.google.gwt.user.client.ui.Composite;
|
|
import com.google.gwt.user.client.ui.Widget;
|
|
|
|
public class FilterPanel extends Composite {
|
|
|
|
private static FilterPanelUiBinder uiBinder = GWT
|
|
.create(FilterPanelUiBinder.class);
|
|
|
|
interface FilterPanelUiBinder extends UiBinder<Widget, FilterPanel> {
|
|
}
|
|
|
|
protected static final String ERROR_MESSAGE = "Ops! we encountered some problems, server is not responding, please try again in a short while.";
|
|
protected static final String SESSION_EXPIRED = "Your session has expired, please log out and login again";
|
|
|
|
NewsFeedPanel caller;
|
|
NewsServiceAsync service;
|
|
|
|
public FilterPanel(NewsFeedPanel caller, NewsServiceAsync newsService) {
|
|
initWidget(uiBinder.createAndBindUi(this));
|
|
this.caller = caller;
|
|
this.service = newsService;
|
|
}
|
|
|
|
@UiField
|
|
NavLink allUpdatesLink;
|
|
@UiField
|
|
NavLink recentCommentsLink;
|
|
|
|
public void removeFilterSelected() {
|
|
allUpdatesLink.setActive(false);
|
|
recentCommentsLink.setActive(false);
|
|
}
|
|
|
|
@UiHandler("recentCommentsLink")
|
|
void onRecentCommentsLinkClick(ClickEvent e) {
|
|
allUpdatesLink.setActive(false);
|
|
recentCommentsLink.setActive(true);
|
|
caller.setCurrentFilter(FilterType.RECENT_COMMENTS);
|
|
int loadedPostsInView = caller.getAllUpdatesSize();
|
|
int quantity = loadedPostsInView < 100 ? 100 - loadedPostsInView : loadedPostsInView;
|
|
caller.loadMorePosts(quantity, true);
|
|
}
|
|
|
|
@UiHandler("allUpdatesLink")
|
|
void onAllUpdatesClick(ClickEvent e) {
|
|
allUpdatesLink.setActive(true);
|
|
recentCommentsLink.setActive(false);
|
|
caller.setCurrentFilter(FilterType.ALL_UPDATES);
|
|
service.getUserSettings(new AsyncCallback<UserSettings>() {
|
|
@Override
|
|
public void onFailure(Throwable caught) {
|
|
Window.alert(ERROR_MESSAGE);
|
|
}
|
|
|
|
@Override
|
|
public void onSuccess(UserSettings result) {
|
|
if (result.getUserInfo().getUsername().equals("test.user")) {
|
|
Window.alert(SESSION_EXPIRED);
|
|
}
|
|
else
|
|
caller.showAllUpdatesFeeds();
|
|
}
|
|
});
|
|
}
|
|
|
|
}
|