this.add(activityDetailPanel);
stream.reinitialize();
// ---- Wire up events ----
final EventBus eventBus = Session.getInstance().getEventBus();
eventBus.addObserver(UpdatedHistoryParametersEvent.class, new Observer<UpdatedHistoryParametersEvent>()
{
public void update(final UpdatedHistoryParametersEvent event)
{
checkHistory(event.getParameters());
// Only process this once.
eventBus.removeObserver(UpdatedHistoryParametersEvent.class, this);
}
}, true);
eventBus.addObserver(UpdatedHistoryParametersEvent.class, new Observer<UpdatedHistoryParametersEvent>()
{
public void update(final UpdatedHistoryParametersEvent event)
{
if (checkHistory(event.getParameters()))
{
eventBus.notifyObservers(StreamReinitializeRequestEvent.getEvent());
}
}
});
eventBus.addObserver(GotActivityResponseEvent.class, new Observer<GotActivityResponseEvent>()
{
public void update(final GotActivityResponseEvent event)
{
setSingleActivityMode();
activityDetailPanel.clear();
activityDetailPanel.add(new ActivityDetailPanel(event.getResponse(), inShowRecipients));
}
});
eventBus.addObserver(StreamRequestMoreEvent.class, new Observer<StreamRequestMoreEvent>()
{
public void update(final StreamRequestMoreEvent arg1)
{
JSONObject jsonObj = StreamJsonRequestFactory.getJSONRequest(jsonQuery);
jsonObj = StreamJsonRequestFactory.setMaxId(lastSeenId, jsonObj);
// Must be sorted by date to request more.
jsonObj = StreamJsonRequestFactory.setSort("date", jsonObj);
if (!search.isEmpty())
{
searchBoxWidget.setSearchTerm(search);
searchStatusWidget.setSearchTerm(search);
jsonObj = StreamJsonRequestFactory.setSearchTerm(search, jsonObj);
}
StreamModel.getInstance().fetch(jsonObj.toString(), false);
}
});
eventBus.addObserver(GotStreamResponseEvent.class, new Observer<GotStreamResponseEvent>()
{
public void update(final GotStreamResponseEvent event)
{
PagedSet<ActivityDTO> activity = event.getStream();
int numberOfActivities = activity.getPagedSet().size();
if (numberOfActivities > 0)
{
lastSeenId = activity.getPagedSet().get(numberOfActivities - 1).getId();
}
MessageStreamUpdateEvent updateEvent = new MessageStreamUpdateEvent(activity);
updateEvent.setMoreResults(activity.getTotal() > activity.getPagedSet().size());
error.setText("");
error.setVisible(false);
eventBus.notifyObservers(updateEvent);
stream.setVisible(true);
}
});
eventBus.addObserver(StreamReinitializeRequestEvent.class, new Observer<StreamReinitializeRequestEvent>()
{
public void update(final StreamReinitializeRequestEvent event)
{
eventBus.notifyObservers(new StreamRequestEvent(streamName, jsonQuery, true));
}
});
eventBus.addObserver(MessageStreamAppendEvent.class, new Observer<MessageStreamAppendEvent>()
{
public void update(final MessageStreamAppendEvent evt)
{
if ("date".equals(sortPanel.getSort()))
{
eventBus.notifyObservers(StreamReinitializeRequestEvent.getEvent());
}
else
{
sortPanel.updateSelected("date", true);
}
}
});
eventBus.addObserver(StreamRequestEvent.class, new Observer<StreamRequestEvent>()
{
public void update(final StreamRequestEvent event)
{
if (event.getForceReload() || !event.getJson().equals(jsonQuery))
{
streamName = event.getStreamName();
jsonQuery = event.getJson();
if (activityId != 0L)
{
ActivityModel.getInstance().fetch(activityId, false);
}
else
{
setListMode();
stream.reinitialize();
String titleLinkUrl = null;
String updatedJson = jsonQuery;
JSONObject queryObject = JSONParser.parse(updatedJson).isObject().get("query").isObject();
// Only show cancel option if search is not part of the view.
Boolean canChange = !queryObject.containsKey("keywords");
if (queryObject.containsKey("keywords"))
{
final String streamSearchText = queryObject.get("keywords").isString().stringValue();
searchBoxWidget.setSearchTerm(streamSearchText);
searchStatusWidget.setSearchTerm(streamSearchText);
updatedJson = StreamJsonRequestFactory.setSearchTerm(streamSearchText,
StreamJsonRequestFactory.getJSONRequest(updatedJson)).toString();
}
else if (!search.isEmpty())
{
searchBoxWidget.setSearchTerm(search);
searchStatusWidget.setSearchTerm(search);
updatedJson = StreamJsonRequestFactory.setSearchTerm(search,
StreamJsonRequestFactory.getJSONRequest(updatedJson)).toString();
}
// see if the stream belongs to a group and set up the stream title as a link
else if (queryObject.containsKey("recipient")
&& queryObject.get("recipient").isArray().size() == 1)
{
JSONArray recipientArr = queryObject.get("recipient").isArray();
JSONObject recipientObj = recipientArr.get(0).isObject();
// only show the link if viewing a group stream on the activity page
if ("GROUP".equals(recipientObj.get("type").isString().stringValue())
&& Session.getInstance().getUrlPage() == Page.ACTIVITY)
{
String shortName = recipientObj.get("name").isString().stringValue();
titleLinkUrl = Session.getInstance().generateUrl(
new CreateUrlRequest(Page.GROUPS, shortName));
}
searchBoxWidget.onSearchCanceled();
searchStatusWidget.onSearchCanceled();
}
else
{
searchBoxWidget.onSearchCanceled();
searchStatusWidget.onSearchCanceled();
}
sort = sortPanel.getSort();
updatedJson = StreamJsonRequestFactory.setSort(sort,
StreamJsonRequestFactory.getJSONRequest(updatedJson)).toString();
streamTitleWidget.setStreamTitle(streamName, titleLinkUrl);
addGadgetWidget.setStreamTitle(streamName);
searchBoxWidget.setCanChange(canChange);
searchStatusWidget.setCanChange(canChange);
StreamModel.getInstance().fetch(updatedJson, false);
}
}
}
});
eventBus.addObserver(StreamSearchBeginEvent.class, new Observer<StreamSearchBeginEvent>()
{
public void update(final StreamSearchBeginEvent event)
{
eventBus.notifyObservers(new UpdateHistoryEvent(new CreateUrlRequest("search", event.getSearchText(),
false)));
}
});
eventBus.addObserver(DeletedActivityResponseEvent.class, new Observer<DeletedActivityResponseEvent>()
{
public void update(final DeletedActivityResponseEvent ev)
{
eventBus.notifyObservers(new ShowNotificationEvent(new Notification("Activity has been deleted")));
}
});
}