public ReportsPerspective(IPluginContext context, IPluginConfig config) { super(context, config, "reports"); setOutputMarkupId(true); refreshGroup = new WebMarkupContainer("refresh-group"); refreshGroup.add(new Label("latest-refresh-label", new StringResourceModel("last-refresh-label", this, null))); lastRefreshDateLabel = new DateLabel("latest-refresh-date", new PatternDateConverter("HH:mm", false)); lastRefreshDateLabel.setOutputMarkupId(true); refreshGroup.add(lastRefreshDateLabel); AjaxLink<String> refreshLink = new AjaxLink<String>("refresh-link") { @Override public void onClick(final AjaxRequestTarget target) { try { Session session = UserSession.get().getJcrSession(); session.save(); session.refresh(false); lastRefreshDateLabel.setDefaultModel(Model.of(new Date())); target.add(lastRefreshDateLabel); } catch (RepositoryException repositoryException) { log.error("Error refreshing jcr session.", repositoryException); } target.appendJavaScript("if (typeof Hippo.Reports.RefreshObservableInstance !== 'undefined') { Hippo.Reports.RefreshObservableInstance.fireEvent('refresh'); }"); } }; refreshLink.add(new Label("refresh-link-label", new StringResourceModel("refresh-link-text", this, null))); refreshGroup.add(refreshLink); add(refreshGroup); }