response.render(OnDomReadyHeaderItem.forScript("$('.bookmarkRibbon').height($('.navbar.navbar-fixed-top').height()-5);"));
}
private void buildGui() {
final BookmarkedPagesModel bookmarkedPagesModel = getModel();
Component helpText = addHelpText(bookmarkedPagesModel);
addOrReplace(helpText);
final WebMarkupContainer container = new WebMarkupContainer(ID_BOOKMARK_LIST) {
private static final long serialVersionUID = 1L;
@Override
public void renderHead(IHeaderResponse response) {
response.render(CssHeaderItem.forReference(new CssResourceReference(BookmarkedPagesPanel.class, "BookmarkedPagesPanel.css")));
response.render(JavaScriptReferenceHeaderItem.forReference(SLIDE_PANEL_JS));
}
};
// allow to be updated by AjaxLink
container.setOutputMarkupId(true);
add(container);
final AjaxLink<Void> clearAllBookmarksLink = new AjaxLink<Void>(CLEAR_BOOKMARKS){
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
BookmarkedPagesPanel.this.getModel().clear();
setEnabled(false);
target.add(container, this);
}
};
clearAllBookmarksLink.setOutputMarkupId(true);
add(clearAllBookmarksLink);
clearAllBookmarksLink.setOutputMarkupId(true);
if(getModel().isEmpty()) {
clearAllBookmarksLink.setVisible(false);
}
final ListView<BookmarkTreeNode> listView = new ListView<BookmarkTreeNode>(ID_BOOKMARKED_PAGE_ITEM, bookmarkedPagesModel) {
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<BookmarkTreeNode> item) {
final BookmarkTreeNode node = item.getModelObject();
try {
final PageType pageType = node.getPageType();
final Class<? extends Page> pageClass = pageClassRegistry.getPageClass(pageType);
final AjaxLink<Object> clearBookmarkLink = new AjaxLink<Object>(ID_CLEAR_BOOKMARK_LINK) {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
bookmarkedPagesModel.remove(node);
if(bookmarkedPagesModel.isEmpty()) {
permanentlyHide(CLEAR_BOOKMARKS);
}
target.add(container, clearAllBookmarksLink);
}
};
if(node.getDepth() == 0) {
clearBookmarkLink.add(new CssClassAppender("clearBookmark"));
} else {
clearBookmarkLink.setEnabled(true);
}
item.add(clearBookmarkLink);
PageParameters pageParameters = node.getPageParameters();
final AbstractLink link = Links.newBookmarkablePageLink(ID_BOOKMARKED_PAGE_LINK, pageParameters, pageClass);
ObjectSpecification objectSpec = null;
RootOid oid = node.getOidNoVer();
if(oid != null) {
ObjectSpecId objectSpecId = oid.getObjectSpecId();
objectSpec = getSpecificationLoader().lookupBySpecId(objectSpecId);
}
final ResourceReference imageResource = imageCache.resourceReferenceForSpec(objectSpec);
final Image image = new Image(ID_BOOKMARKED_PAGE_ICON, imageResource) {
private static final long serialVersionUID = 1L;
@Override
protected boolean shouldAddAntiCacheParameter() {
return false;
}
};
link.addOrReplace(image);
String title = node.getTitle();
final Label label = new Label(ID_BOOKMARKED_PAGE_TITLE, title);
link.add(label);
item.add(link);
if(bookmarkedPagesModel.isCurrent(pageParameters)) {
item.add(new CssClassAppender("disabled"));
}
item.add(new CssClassAppender("bookmarkDepth" + node.getDepth()));
} catch(ObjectNotFoundException ex) {
// ignore