Class RecordActionTable<R extends PersistentRecord>

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Iterable<org.apache.wicket.Component>, org.apache.wicket.event.IEventSink, org.apache.wicket.event.IEventSource, org.apache.wicket.IConverterLocator, org.apache.wicket.markup.html.IHeaderContributor, org.apache.wicket.request.component.IRequestableComponent, org.apache.wicket.util.IHierarchical<org.apache.wicket.Component>, org.apache.wicket.util.io.IClusterable
    Direct Known Subclasses:
    ExtensionPointPage, SmtpSettingsPage

    public abstract class RecordActionTable<R extends PersistentRecord>
    extends ConfigPanel

    A RecordActionTable is commonly used in the Configure section of the gateway. It displays a table of each record for a given record type. By default, it includes edit and delete links next to each record, and an add link at the bottom. By default, the columns are created by looking at the record's RecordMeta and finding all fields marked with SFieldFlags.SDESCRIPTIVE

    This class is very customizable by subclassing it and overriding functions. Common points of overriding are:

    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected IConfigPage configPage  
      • Fields inherited from class org.apache.wicket.markup.html.panel.Panel

        PANEL
      • Fields inherited from class org.apache.wicket.Component

        ENABLE, FLAG_INITIALIZED, FLAG_REMOVING_FROM_HIERARCHY, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected void addRecordActions​(org.apache.wicket.markup.repeater.RepeatingView view)
      Provides a hook to add record actions, like "Add new.." to the bottom of the panel.
      protected void addRecordInstanceActions​(org.apache.wicket.markup.repeater.RepeatingView view, R record)
      Provides an opportunity to add any actions that deal with specific record instances.
      protected void canDelete​(R record)
      Verifies if a record can be deleted.
      protected org.apache.wicket.Component createFooter​(java.lang.String id)
      Override this to return a Wicket component to display beneath the table.
      protected org.apache.wicket.model.IModel<java.util.List<R>> createRecordModel​(RecordMeta<R> meta)  
      protected void doDeleteRelatedRecords​(PersistenceSession session, R record)
      Provides a chance for subclasses to delete any related records before this record is deleted.
      protected ConfigPanel getActionParentPanel()
      Returns the panel that will be used by actions as the parent.
      protected java.lang.String getCalculatedFieldDisplayValue​(java.lang.Object value)  
      protected org.apache.wicket.model.LoadableDetachableModel<java.lang.Object> getCalculatedFieldModel​(RecordActionTable.ICalculatedField<R> field, R record)  
      protected java.util.List<RecordActionTable.ICalculatedField<R>> getCalculatedFields()
      Override this to add calculated fields (columns) to the table.
      protected java.util.List<SFieldMeta> getDescriptiveFields()
      Looks through the SFieldMeta's defined by the record's RecordMeta, finding all descriptive fields.
      protected java.util.Collection<RecordMeta<? extends PersistentRecord>> getExemptForeignKeys()  
      protected java.lang.String getFieldValue​(R record, FormMeta formMeta)  
      protected int getInstanceActionMaxRowCount()
      Returns the maximum number of instance actions per row.
      protected java.lang.String getNoDescriptiveFieldsKey()  
      protected java.lang.String getNoRowsKey()
      Override this to return a custom resource key for what to display when no records exist
      protected abstract RecordMeta<R> getRecordMeta()  
      protected java.lang.String getTitleKey()  
      protected void initComponents​(org.apache.wicket.model.IModel<? extends java.util.List<? extends PersistentRecord>> model)  
      protected org.apache.wicket.markup.html.WebMarkupContainer newDeleteRecordAction​(java.lang.String id, R record)  
      protected org.apache.wicket.markup.html.WebMarkupContainer newEditRecordAction​(java.lang.String id, R record)  
      protected org.apache.wicket.markup.html.WebMarkupContainer newRecordAction​(java.lang.String id)
      Creates a link that will navigate to creating a new record.
      protected void onBeforeRender()  
      protected void onDelete​(R record)
      Called after a record is successfully deleted
      protected void setupNewRecord​(R record)
      Provides subclasses a chance to perform initialization on a new instance of of the record.
      • Methods inherited from class org.apache.wicket.markup.html.panel.Panel

        newMarkupSourcingStrategy
      • Methods inherited from class org.apache.wicket.markup.html.WebMarkupContainer

        getWebApplication, getWebPage, getWebRequest, getWebResponse, getWebSession
      • Methods inherited from class org.apache.wicket.MarkupContainer

        add, addOrReplace, autoAdd, contains, get, get, getAssociatedMarkup, getAssociatedMarkupStream, getMarkup, getMarkupType, internalAdd, internalInitialize, iterator, iterator, onAfterRenderChildren, onComponentTagBody, onRender, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderNext, replace, setDefaultModel, size, swap, toString, toString, visitChildren, visitChildren, visitChildren, visitChildren
      • Methods inherited from class org.apache.wicket.Component

        add, addStateChange, afterRender, beforeRender, canCallListenerInterface, checkComponentTag, checkComponentTagAttribute, checkHierarchyChange, clearOriginalDestination, configure, continueToOriginalDestination, debug, detach, detachModel, detachModels, determineVisibility, error, exceptionMessage, fatal, findMarkupStream, findPage, findParent, findParentWithAssociatedMarkup, getAjaxRegionMarkupId, getApplication, getBehaviorById, getBehaviorId, getBehaviors, getBehaviors, getClassRelativePath, getConverter, getDefaultModel, getDefaultModelObject, getDefaultModelObjectAsString, getDefaultModelObjectAsString, getEscapeModelStrings, getFeedbackMessages, getFlag, getId, getInnermostModel, getInnermostModel, getLocale, getLocalizer, getMarkup, getMarkupAttributes, getMarkupId, getMarkupId, getMarkupIdFromMarkup, getMarkupIdImpl, getMarkupSourcingStrategy, getMetaData, getModelComparator, getOutputMarkupId, getOutputMarkupPlaceholderTag, getPage, getPageRelativePath, getParent, getPath, getRenderBodyOnly, getRequest, getRequestCycle, getRequestFlag, getResponse, getSession, getSizeInBytes, getStatelessHint, getString, getString, getString, getStyle, getVariation, hasBeenRendered, hasErrorMessage, hasFeedbackMessage, info, initModel, internalOnModelChanged, internalPrepareForRender, internalRenderComponent, isActionAuthorized, isAuto, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isRenderAllowed, isRendering, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, markRendering, modelChanged, modelChanging, onAfterRender, onComponentTag, onConfigure, onDetach, onEvent, onInitialize, onModelChanged, onModelChanging, onReAdd, onRemove, prepareForRender, redirectToInterceptPage, remove, remove, render, renderComponentTag, rendered, renderHead, renderHead, renderPlaceholderTag, replaceComponentTagBody, replaceWith, sameInnermostModel, sameInnermostModel, send, setAuto, setDefaultModelObject, setEnabled, setEscapeModelStrings, setFlag, setIgnoreAttributeModifier, setMarkup, setMarkupId, setMarkupIdImpl, setMetaData, setOutputMarkupId, setOutputMarkupPlaceholderTag, setParent, setRenderBodyOnly, setRequestFlag, setResponsePage, setResponsePage, setResponsePage, setVersioned, setVisibilityAllowed, setVisible, success, urlFor, urlFor, urlFor, urlFor, urlFor, visitParents, visitParents, warn, wrap
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.lang.Iterable

        forEach, spliterator
    • Constructor Detail

      • RecordActionTable

        public RecordActionTable​(IConfigPage configPage)
        Creates a RecordActionTable, using a default RecordListModel
      • RecordActionTable

        public RecordActionTable​(IConfigPage configPage,
                                 java.lang.String id)
      • RecordActionTable

        public RecordActionTable​(IConfigPage configPage,
                                 org.apache.wicket.model.IModel<? extends java.util.List<? extends PersistentRecord>> model)
        Creates a RecordActionTable using a custom model to list the records
    • Method Detail

      • createRecordModel

        protected org.apache.wicket.model.IModel<java.util.List<R>> createRecordModel​(RecordMeta<R> meta)
      • getRecordMeta

        protected abstract RecordMeta<R> getRecordMeta()
      • getActionParentPanel

        protected ConfigPanel getActionParentPanel()
        Returns the panel that will be used by actions as the parent. By default is "this", but can be overridden for cases where multiple record action tables are used inside of another panel.
      • getDescriptiveFields

        protected java.util.List<SFieldMeta> getDescriptiveFields()
        Looks through the SFieldMeta's defined by the record's RecordMeta, finding all descriptive fields.
      • initComponents

        protected void initComponents​(org.apache.wicket.model.IModel<? extends java.util.List<? extends PersistentRecord>> model)
      • onBeforeRender

        protected void onBeforeRender()
        Overrides:
        onBeforeRender in class org.apache.wicket.Component
      • getInstanceActionMaxRowCount

        protected int getInstanceActionMaxRowCount()
        Returns the maximum number of instance actions per row. If there are more actions than this, then a new column will be started. Default is 3
      • getCalculatedFieldDisplayValue

        protected java.lang.String getCalculatedFieldDisplayValue​(java.lang.Object value)
      • getCalculatedFieldModel

        protected org.apache.wicket.model.LoadableDetachableModel<java.lang.Object> getCalculatedFieldModel​(RecordActionTable.ICalculatedField<R> field,
                                                                                                            R record)
      • getCalculatedFields

        protected java.util.List<RecordActionTable.ICalculatedField<R>> getCalculatedFields()
        Override this to add calculated fields (columns) to the table. Default implementation returns null.
      • createFooter

        protected org.apache.wicket.Component createFooter​(java.lang.String id)
        Override this to return a Wicket component to display beneath the table.
      • addRecordInstanceActions

        protected void addRecordInstanceActions​(org.apache.wicket.markup.repeater.RepeatingView view,
                                                R record)
        Provides an opportunity to add any actions that deal with specific record instances. Default actions are added for edit and delete.
      • newEditRecordAction

        protected org.apache.wicket.markup.html.WebMarkupContainer newEditRecordAction​(java.lang.String id,
                                                                                       R record)
      • newDeleteRecordAction

        protected org.apache.wicket.markup.html.WebMarkupContainer newDeleteRecordAction​(java.lang.String id,
                                                                                         R record)
      • addRecordActions

        protected void addRecordActions​(org.apache.wicket.markup.repeater.RepeatingView view)
        Provides a hook to add record actions, like "Add new.." to the bottom of the panel. Make sure that the wicket ids of the children are obtained via view.newChildId(). Default implementation adds a basic "New Record" action (which itself can be customized by overriding newRecordAction(String)
      • newRecordAction

        protected org.apache.wicket.markup.html.WebMarkupContainer newRecordAction​(java.lang.String id)
        Creates a link that will navigate to creating a new record. Uses a basic NewRecordAction
      • setupNewRecord

        protected void setupNewRecord​(R record)
        Provides subclasses a chance to perform initialization on a new instance of of the record.
      • canDelete

        protected void canDelete​(R record)
                          throws ConfirmedTaskVetoException
        Verifies if a record can be deleted. Throw an exception if the record should not be deleted. The default implementation will check defined foreign keys and will throw an error if any records refer to the record in question.
        Throws:
        ConfirmedTaskVetoException
      • onDelete

        protected void onDelete​(R record)
        Called after a record is successfully deleted
      • doDeleteRelatedRecords

        protected void doDeleteRelatedRecords​(PersistenceSession session,
                                              R record)
        Provides a chance for subclasses to delete any related records before this record is deleted. Will be called with an active SimpleORM session.
      • getNoRowsKey

        protected java.lang.String getNoRowsKey()
        Override this to return a custom resource key for what to display when no records exist
      • getNoDescriptiveFieldsKey

        protected java.lang.String getNoDescriptiveFieldsKey()
      • getFieldValue

        protected java.lang.String getFieldValue​(R record,
                                                 FormMeta formMeta)