@Override public void activate(final Session session, final SubscriptionRegistrar subscriptionRegistrar) { // Add a ProblemSubmissionHistory object to the session. ProblemSubmissionHistory history = new ProblemSubmissionHistory(); session.add(history); // FIXME: for now, subscribe the page directly to the ProblemSubmissionHistory // Eventually, only the various views should be subscribed history.subscribe( ProblemSubmissionHistory.Event.SET_SUBMISSION_RECEIPT_LIST, this, subscriptionRegistrar); history.subscribe(ProblemSubmissionHistory.Event.SET_SELECTED, this, subscriptionRegistrar); // FIXME: also subscribe to session add object events session.subscribe(Session.Event.ADDED_OBJECT, this, subscriptionRegistrar); // Show username, problem name and description Problem problem = session.get(Problem.class); UserSelection userSelection = session.get(UserSelection.class); usernameAndProblemLabel.setText( userSelection.getUser().getUsername() + ", " + problem.toNiceString()); // Activate views pageNavPanel.setBackHandler(new PageBackHandler(session)); pageNavPanel.setLogoutHandler(new LogoutHandler(session)); sliderView.activate(session, subscriptionRegistrar); problemTextView.activate(session, subscriptionRegistrar); statusMessageView.activate(session, subscriptionRegistrar); testOutcomeSummaryView.activate(session, subscriptionRegistrar); testResultListView.activate(session, subscriptionRegistrar); // Get all SubmissionReceipts for this user on this problem RPC.getCoursesAndProblemsService.getAllSubmissionReceiptsForUser( problem, userSelection.getUser(), new AsyncCallback<SubmissionReceipt[]>() { @Override public void onSuccess(SubmissionReceipt[] result) { onLoadSubmissionReceipts(result); } @Override public void onFailure(Throwable caught) { session.add(StatusMessage.error("Could not get submission receipts", caught)); } }); }