com.alogient.cameleon.extension.wicket.ui.page
Class AbstractCameleonPage<T extends com.alogient.cameleon.sdk.content.model.AbstractCameleonModel>

java.lang.Object
  extended by org.apache.wicket.Component
      extended by org.apache.wicket.MarkupContainer
          extended by org.apache.wicket.Page
              extended by org.apache.wicket.markup.html.WebPage
                  extended by com.alogient.cameleon.extension.wicket.ui.page.AbstractCameleonPage<T>
All Implemented Interfaces:
Serializable, org.apache.wicket.IClusterable, org.apache.wicket.IConverterLocator, org.apache.wicket.IRedirectListener, org.apache.wicket.IRequestListener, org.apache.wicket.markup.html.INewBrowserWindowListener, org.apache.wicket.session.pagemap.IPageMapEntry

public abstract class AbstractCameleonPage<T extends com.alogient.cameleon.sdk.content.model.AbstractCameleonModel>
extends org.apache.wicket.markup.html.WebPage

This page must be extended by all sub pages which would like to interact with Cameleon.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.wicket.Page
org.apache.wicket.Page.IPageSerializer
 
Nested classes/interfaces inherited from class org.apache.wicket.Component
org.apache.wicket.Component.ComponentModelChange, org.apache.wicket.Component.EnabledChange, org.apache.wicket.Component.IVisitor<T extends org.apache.wicket.Component>, org.apache.wicket.Component.VisibilityChange
 
Field Summary
protected  AbstractCameleonApplication application
          The application
protected  AbstractCameleonSession cameleonSession
          The cameleon session
protected  com.alogient.cameleon.sdk.content.service.MenuService menuService
          The menu service
protected  com.alogient.cameleon.sdk.content.service.PageService pageService
          The page service
 
Fields inherited from class org.apache.wicket.Page
LATEST_VERSION, serializer
 
Fields inherited from class org.apache.wicket.Component
ENABLE, FLAG_CONFIGURED, FLAG_INITIALIZED, FLAG_REMOVING_FROM_HIERARCHY, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED6, FLAG_RESERVED7, FLAG_RESERVED8, PATH_SEPARATOR, RENDER
 
Fields inherited from interface org.apache.wicket.markup.html.INewBrowserWindowListener
INTERFACE
 
Fields inherited from interface org.apache.wicket.IRedirectListener
INTERFACE
 
Constructor Summary
  AbstractCameleonPage()
          Constructor.
protected AbstractCameleonPage(org.apache.wicket.PageParameters parameters)
          Constructor.
 
Method Summary
protected static
<T extends com.alogient.cameleon.sdk.content.model.AbstractCameleonModel>
void
addCmsValidationPanelIfNeeded(String id, T pageModel, org.apache.wicket.MarkupContainer addToThis)
           
protected static void addDebugBarIfNeeded(String id, org.apache.wicket.MarkupContainer addToThis)
           
protected  void addMenuPanel(String id, String cssSelectedClass, int level)
          Add the menu panel
protected  Integer getCameleonPageId()
          Returns the page id.
protected  AbstractCameleonSession getCameleonSession()
           
protected  com.alogient.cameleon.sdk.content.vo.CultureVo getCurrentCulture()
           
protected  com.alogient.cameleon.sdk.content.vo.menu.MenuVo getCurrentMenu()
           
protected
<TModel extends com.alogient.cameleon.sdk.content.model.AbstractCameleonModel>
TModel
getDocumentByNavId(Integer navId, Class<TModel> modelClass)
          Get the document from NavId and culture
protected
<TModel extends com.alogient.cameleon.sdk.content.model.AbstractCameleonModel>
TModel
getDocumentlByPageId(Integer pageId, Class<TModel> modelClass)
          Get the document from page id
protected  List<com.alogient.cameleon.sdk.content.model.AbstractCameleonModel> getDocumentsByPageId(Integer pageId, Class<? extends com.alogient.cameleon.sdk.content.model.AbstractCameleonModel>... modelClasses)
          Get a list of documents from a specific node
 T getPageModel()
           
protected abstract  Class<T> getPageModelClass()
          Returns the model associated with this page
 com.alogient.cameleon.sdk.content.service.PageService getPageService()
           
protected abstract  String getPageTitle()
           
protected  com.alogient.cameleon.sdk.content.vo.menu.MenuVo getRootMenu()
           
protected  List<com.alogient.cameleon.sdk.content.model.AbstractCameleonModel> getSubDocumentsByNavId(Integer navId, Class<? extends com.alogient.cameleon.sdk.content.model.AbstractCameleonModel>... modelClasses)
          Get a list of sub pages from a specific node
protected
<TModel extends com.alogient.cameleon.sdk.content.model.AbstractCameleonModel>
List<TModel>
getSubDocumentsByNavId(Integer navId, Class<TModel> modelClass)
          Get a list of sub pages from a specific node
protected
<TModel extends com.alogient.cameleon.sdk.content.model.AbstractCameleonModel>
List<TModel>
getSubDocumentsByPageId(Integer pageId, Class<TModel> modelClass)
          Get a list of documents from a specific node
protected  void redirectToPageFromNavId(Integer navId)
          Redirect a page from a NavId
protected  T reloadPageModel()
          Reloads the page model
 
Methods inherited from class org.apache.wicket.markup.html.WebPage
configureResponse, getMarkupType, getUrlCompressor, getWebRequestCycle, homePageLink, onAfterRender, onNewBrowserWindow, setHeaders
 
Methods inherited from class org.apache.wicket.Page
afterCallComponent, beforeCallComponent, componentChanged, componentRendered, detachModels, dirty, endComponentRender, expireOldestVersion, getAjaxVersionNumber, getAutoIndex, getCurrentVersionNumber, getId, getNumericId, getPageClass, getPageId, getPageMap, getPageMapEntry, getPageMapName, getPageParameters, getPageReference, getSizeInBytes, getStatelessHint, getVersion, getVersions, hierarchyAsString, ignoreVersionMerge, internalOnModelChanged, isBookmarkable, isErrorPage, isPageStateless, moveToPageMap, newVersionManager, onBeforeRender, onDetach, onPageAttached, onRedirect, onRender, prepareForRender, removePersistedFormData, renderPage, rollbackPage, setNumericId, setStatelessHint, startComponentRender, toString, writeReplace
 
Methods inherited from class org.apache.wicket.MarkupContainer
add, addOrReplace, autoAdd, autoAdd, contains, findMarkupStream, get, get, getAssociatedMarkupStream, getMarkupStream, hasAssociatedMarkup, internalAdd, isTransparentResolver, iterator, iterator, newMarkupResourceStream, onComponentTagBody, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderComponentTagBody, renderNext, replace, setDefaultModel, setMarkupStream, size, swap, toString, visitChildren, visitChildren
 
Methods inherited from class org.apache.wicket.Component
add, addStateChange, afterRender, beforeRender, callOnBeforeRenderIfNotVisible, checkComponentTag, checkComponentTagAttribute, checkHierarchyChange, configure, continueToOriginalDestination, debug, detach, detachBehaviors, detachModel, determineVisibility, error, exceptionMessage, fatal, findPage, findParent, findParentWithAssociatedMarkup, getApplication, getBehaviors, getBehaviors, getBehaviorsRawList, getClassRelativePath, getComponentBorder, getConverter, getConverter, getDefaultModel, getDefaultModelObject, getDefaultModelObjectAsString, getDefaultModelObjectAsString, getEscapeModelStrings, getFeedbackMessage, getFlag, getFlag, getInnermostModel, getInnermostModel, getLocale, getLocalizer, getMarkupAttributes, getMarkupId, getMarkupId, getMarkupIdImpl, getMetaData, getModelComparator, getOutputMarkupId, getOutputMarkupPlaceholderTag, getPage, getPageRelativePath, getParent, getPath, getRenderBodyOnly, getRequest, getRequestCycle, getResponse, getSession, getString, getString, getString, getStyle, getVariation, hasBeenRendered, hasErrorMessage, hasFeedbackMessage, info, initModel, internalAttach, internalDetach, internalOnAttach, internalOnDetach, isActionAuthorized, isAncestorOf, isAttached, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isRenderAllowed, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, locateMarkupStream, markAttached, markRendering, modelChanged, modelChanging, onAttach, onBeginRequest, onComponentTag, onConfigure, onEndRequest, onInitialize, onModelChanged, onModelChanging, onRemove, prepareForRender, redirectToInterceptPage, remove, remove, render, render, renderComponent, renderComponent, renderComponentTag, rendered, renderHead, renderPlaceholderTag, replaceComponentTagBody, replaceWith, sameInnermostModel, sameInnermostModel, setAuto, setComponentBorder, setDefaultModelObject, setEnabled, setEscapeModelStrings, setFlag, setFlag, setIgnoreAttributeModifier, setMarkupId, setMarkupIdImpl, setMetaData, setOutputMarkupId, setOutputMarkupPlaceholderTag, setRedirect, setRenderBodyOnly, setResponsePage, setResponsePage, setResponsePage, setVersioned, setVisibilityAllowed, setVisible, urlFor, urlFor, urlFor, urlFor, urlFor, urlFor, visitParents, warn, wrap
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.apache.wicket.session.pagemap.IPageMapEntry
getPage
 

Field Detail

pageService

@SpringBean(name="pageService")
protected com.alogient.cameleon.sdk.content.service.PageService pageService
The page service


menuService

@SpringBean
protected com.alogient.cameleon.sdk.content.service.MenuService menuService
The menu service


cameleonSession

protected transient AbstractCameleonSession cameleonSession
The cameleon session


application

protected transient AbstractCameleonApplication application
The application

Constructor Detail

AbstractCameleonPage

public AbstractCameleonPage()
                     throws com.alogient.cameleon.sdk.content.util.exception.PageNotFoundException
Constructor. Having this constructor public means that your page is 'bookmarkable' and hence can be called/ created from anywhere.

Throws:
com.alogient.cameleon.sdk.content.util.exception.PageNotFoundException - if the page is not found

AbstractCameleonPage

protected AbstractCameleonPage(org.apache.wicket.PageParameters parameters)
                        throws com.alogient.cameleon.sdk.content.util.exception.PageNotFoundException
Constructor. Having this constructor public means that your page is 'bookmarkable' and hence can be called/created from anywhere.

This class imposes that you add the following two elements in your markup:

We suggest adding them as wicket:container elements, but you could as well use spans or divs.

Parameters:
parameters - list of parameters
Throws:
com.alogient.cameleon.sdk.content.util.exception.PageNotFoundException - if the page is not found
Method Detail

addDebugBarIfNeeded

protected static void addDebugBarIfNeeded(String id,
                                          org.apache.wicket.MarkupContainer addToThis)

addCmsValidationPanelIfNeeded

protected static <T extends com.alogient.cameleon.sdk.content.model.AbstractCameleonModel> void addCmsValidationPanelIfNeeded(String id,
                                                                                                                              T pageModel,
                                                                                                                              org.apache.wicket.MarkupContainer addToThis)

reloadPageModel

protected T reloadPageModel()
                                                                                           throws com.alogient.cameleon.sdk.content.util.exception.PageNotFoundException
Reloads the page model

Returns:
the page model
Throws:
com.alogient.cameleon.sdk.content.util.exception.PageNotFoundException - if the page could not be found

getCameleonPageId

protected Integer getCameleonPageId()
Returns the page id. If not defined, returns from the session

Returns:
the page id

getPageModelClass

protected abstract Class<T> getPageModelClass()
Returns the model associated with this page

Returns:
The model class associated with this page (Must match the generic)

getPageTitle

protected abstract String getPageTitle()
Returns:
the title of the page

getPageService

public com.alogient.cameleon.sdk.content.service.PageService getPageService()
Returns:
the pageService

getPageModel

public T getPageModel()
Returns:
the pageModel

getCameleonSession

protected final AbstractCameleonSession getCameleonSession()
Returns:
the cameleonSession

getCurrentCulture

protected final com.alogient.cameleon.sdk.content.vo.CultureVo getCurrentCulture()
Returns:
the current culture

addMenuPanel

protected final void addMenuPanel(String id,
                                  String cssSelectedClass,
                                  int level)
Add the menu panel

Parameters:
id - wicket id
level - The level
cssSelectedClass - the css class used when the menu is selected

getCurrentMenu

protected final com.alogient.cameleon.sdk.content.vo.menu.MenuVo getCurrentMenu()
Returns:
the current menu

getRootMenu

protected final com.alogient.cameleon.sdk.content.vo.menu.MenuVo getRootMenu()
                                                                      throws com.alogient.cameleon.sdk.content.util.exception.UnknownMenuException
Returns:
the root menu
Throws:
com.alogient.cameleon.sdk.content.util.exception.UnknownMenuException - thrown if the menu does not exist.

getDocumentlByPageId

protected final <TModel extends com.alogient.cameleon.sdk.content.model.AbstractCameleonModel> TModel getDocumentlByPageId(Integer pageId,
                                                                                                                           Class<TModel> modelClass)
                                                                                                           throws com.alogient.cameleon.sdk.content.util.exception.PageNotFoundException
Get the document from page id

Type Parameters:
TModel - The model class
Parameters:
pageId - id of the page
modelClass - The model class
Returns:
a page
Throws:
com.alogient.cameleon.sdk.content.util.exception.PageNotFoundException - thrown if the page is not found

getDocumentByNavId

protected final <TModel extends com.alogient.cameleon.sdk.content.model.AbstractCameleonModel> TModel getDocumentByNavId(Integer navId,
                                                                                                                         Class<TModel> modelClass)
                                                                                                         throws com.alogient.cameleon.sdk.content.util.exception.PageNotFoundException
Get the document from NavId and culture

Type Parameters:
TModel - The model class
Parameters:
navId - id of the navigation
modelClass - The model class
Returns:
a document
Throws:
com.alogient.cameleon.sdk.content.util.exception.PageNotFoundException - thrown if the page is not found

getSubDocumentsByPageId

protected final <TModel extends com.alogient.cameleon.sdk.content.model.AbstractCameleonModel> List<TModel> getSubDocumentsByPageId(Integer pageId,
                                                                                                                                    Class<TModel> modelClass)
                                                                                                                    throws com.alogient.cameleon.sdk.content.util.exception.PageNotFoundException
Get a list of documents from a specific node

Type Parameters:
TModel - The model class
Parameters:
pageId - id of the navigation
modelClass - The model class
Returns:
a list of documents
Throws:
com.alogient.cameleon.sdk.content.util.exception.PageNotFoundException - thrown if the page is not found

getDocumentsByPageId

protected final List<com.alogient.cameleon.sdk.content.model.AbstractCameleonModel> getDocumentsByPageId(Integer pageId,
                                                                                                         Class<? extends com.alogient.cameleon.sdk.content.model.AbstractCameleonModel>... modelClasses)
                                                                                                  throws com.alogient.cameleon.sdk.content.util.exception.PageNotFoundException
Get a list of documents from a specific node

Parameters:
pageId - id of the navigation
modelClasses - The model classes
Returns:
a list of documents
Throws:
com.alogient.cameleon.sdk.content.util.exception.PageNotFoundException - thrown if the page is not found

getSubDocumentsByNavId

protected final <TModel extends com.alogient.cameleon.sdk.content.model.AbstractCameleonModel> List<TModel> getSubDocumentsByNavId(Integer navId,
                                                                                                                                   Class<TModel> modelClass)
                                                                                                                   throws com.alogient.cameleon.sdk.content.util.exception.PageNotFoundException
Get a list of sub pages from a specific node

Type Parameters:
TModel - The model class
Parameters:
navId - id of the navigation
modelClass - The model class
Returns:
a list of sub pages
Throws:
com.alogient.cameleon.sdk.content.util.exception.PageNotFoundException - thrown if the page is not found

getSubDocumentsByNavId

protected final List<com.alogient.cameleon.sdk.content.model.AbstractCameleonModel> getSubDocumentsByNavId(Integer navId,
                                                                                                           Class<? extends com.alogient.cameleon.sdk.content.model.AbstractCameleonModel>... modelClasses)
                                                                                                    throws com.alogient.cameleon.sdk.content.util.exception.PageNotFoundException
Get a list of sub pages from a specific node

Parameters:
navId - id of the navigation
modelClasses - The model classes
Returns:
a list of sub pages
Throws:
com.alogient.cameleon.sdk.content.util.exception.PageNotFoundException - thrown if the page is not found

redirectToPageFromNavId

protected final void redirectToPageFromNavId(Integer navId)
Redirect a page from a NavId

Parameters:
navId - the navId used to redirect to a Page


Copyright © 2011 Alogient. All Rights Reserved.