| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| package org.apache.tapestry5.integration.app1.pages; |
| |
| import org.apache.tapestry5.ComponentResources; |
| import org.apache.tapestry5.Link; |
| import org.apache.tapestry5.PersistenceConstants; |
| import org.apache.tapestry5.annotations.InjectPage; |
| import org.apache.tapestry5.annotations.Persist; |
| import org.apache.tapestry5.annotations.Property; |
| import org.apache.tapestry5.ioc.annotations.Inject; |
| import org.apache.tapestry5.ioc.internal.util.CollectionFactory; |
| import org.apache.tapestry5.ioc.internal.util.InternalUtils; |
| import org.apache.tapestry5.services.PageRenderLinkSource; |
| import org.apache.tapestry5.services.StreamPageContent; |
| |
| import java.util.*; |
| |
| /** |
| * Have to start somewhere! |
| */ |
| public class Index |
| { |
| @Persist(PersistenceConstants.FLASH) |
| private String alert; |
| |
| public static class Item implements Comparable<Item> |
| { |
| public final String pageName; |
| public final String label; |
| public final String description; |
| public final Object[] context; |
| |
| public Item(String pageName, String label, String description, Object... context) |
| { |
| this.pageName = pageName; |
| this.label = label; |
| this.description = description; |
| this.context = context; |
| } |
| |
| public int compareTo(Item o) |
| { |
| return label.compareTo(o.label); |
| } |
| } |
| |
| private static final List<Item> ITEMS = CollectionFactory |
| .newList( |
| |
| new Item("PublishEventDemo", "@PublishEvent Demo", "Publishing server-side events to client-side code (JavaScript)"), |
| |
| new Item("Html5DateFieldDemo", "Html5DateField Demo", "Choosing dates using the native HTML5 date picker"), |
| |
| // new Item("ZoneFormDemo", "Zone Form Decoration", "Fields inside an Ajax-updatd Form are still decorated properly."), |
| |
| new Item("AjaxValidationDemo", "Ajax Validation", "Demonstrated proper integration of server-side validation and client-side field decoration."), |
| |
| new Item("OverrideEventHandlerDemo", "Event Handler Override Demo", "Event Handler methods overridden by sub-classes invoke base-class correctly."), |
| |
| new Item("LogoSubclass", "Base class Assets in sub-classes", "Assets are resolved for the parent class if that's where the annotations are."), |
| |
| new Item("MissingRequiredARP", "Missing Query Parameter for @ActivationRequestParameter", "Activating a page with a required @ActivationRequestParameter, but no matching query parameter, is an error."), |
| |
| new Item("DateFieldValidationDemo", "DateField Validation Demo", |
| "Use of DateField component when client validation is disabled."), |
| |
| new Item("MixinParameters54", "Strict Mixin Parameters", "In the 5.4 DTD, Parameter Mixins must be qualified with the mixin id."), |
| |
| new Item("AsyncDemo", "Async Links and Forms Demo", "Async (XHR) Updates without a containing Zone."), |
| |
| new Item("FormCancelActionDemo", "Form Cancel Action Demo", "FormSupport.addCancel() support"), |
| |
| new Item("AjaxRadioDemo", "Ajax Radio Demo", "Radio components inside an Ajax form"), |
| |
| new Item("TimeIntervalDemo", "TimeInterval Demo", "Interval component, based on Moment.js"), |
| |
| new Item("LocalDateDemo", "LocalDate Demo", "LocalDate component, based on Moment.js"), |
| |
| new Item("EmptyIfDemo", "Empty If Demo", "Ensure an empty If can still render."), |
| |
| new Item("MissingAssetDemo", "Missing Asset Demo", "Error when injecting an asset that does not exist."), |
| |
| new Item("ConfirmDemo", "Confirm Mixin Demo", "Confirm an action when clicking it."), |
| |
| new Item("SingleErrorDemo", "Single Error", "Using Error component to customize where the errors for a field will be displayed."), |
| |
| new Item("JavaScriptTests", "JavaScript Tests", "Client-side tests using Mocha and Chai"), |
| |
| new Item("ModuleInitDemo", "Module-based Initialization Demo", "Invoke a module function to perform page initialization"), |
| |
| new Item("OperationWorkerDemo", "Operation Worker Demo", "Demonstrate use of @Operation annotation on component methods"), |
| |
| new Item("MixinParameterDefault", "Mixin Parameter with Default", "Ensure that a mixin parameter with a default value is not reported as unbound."), |
| |
| new Item("MixinVsInformalParameter", "Mixin Parameter vs. Informal Parameter", "Informal Paramters vs. Mixin parameter of same name"), |
| |
| new Item("inherit/childa", "TAP5-1656 Demo", "Test a reported bug in component inheritance"), |
| |
| new Item("ComponentInsideBlockDemo", "Component Inside Block Demo", "Verify that a component, inside a block, is still an embedded "), |
| |
| new Item("EventMethodUnmatchedComponentId", "Unmatched Component Id in Event Method Demo", "Show that referencing a component that does not exist in an event handler method name is an error."), |
| |
| new Item("AlertsDemo", "Alerts Demo", "Managing alerts both traditional and Ajax"), |
| |
| new Item("ClientConsoleDemo", "Client Console Demo", "Demo for the JavaScript client-side console"), |
| |
| new Item("InvalidFormalParameterDemo", "Unmatched Formal Parameter with @Component", "Parameters specified with @Component annotation must match formal parameters"), |
| |
| new Item("NullBindingToPrimitive", "Null Bound to Primitive Demo", "Correct exception when a primitive parameter is bound to null"), |
| |
| new Item("TreeDemo", "Tree Component Demo", "Demo of Tree Component"), |
| |
| new Item("TreeSelectionDemo", "Tree Component Selection Demo", "Demo of Selection with Tree Component"), |
| |
| new Item("InvalidExpressionInDynamicTemplate", "Invalid Dynamic Expression", |
| "Invalid expression in a Dynamic Template"), |
| |
| new Item("DynamicDemo", "Dynamic Demo", "Basic Dynamic component tests"), |
| |
| new Item("DynamicExpansionsDemo", "Expansions in Dynamic Templates", |
| "Expansions inside Dynamic component content and attributes"), |
| |
| new Item("PACAnnotationDemo", "PageActivationContext Demo", |
| "Shows that @PageActivationContext fields are set before calls to the activate event handler."), |
| |
| new Item("PACMultipleAnnotationDemo", "PageActivationContext Multiple Demo", |
| "Demonstrates multiple @PageActivationContext fields."), |
| |
| new Item("PublicFieldAccessDemo", "Public Field Access Demo", "Demonstrates TAP5-1222 fix"), |
| |
| new Item("ActivationRequestParameterDemo", "ActivationRequestParameter Annotation Demo", |
| "Use of @ActivationRequestParameter to encode page state into query parameters"), |
| |
| new Item("LibraryMessagesDemo", "Library Messages Demo", |
| "Demo ability to contribute additional message catalog resources to the application global catalog."), |
| |
| new Item("MultiZoneUpdateInsideForm", "MultiZone Update inside a Form", |
| "Update multiple zones within a single Form."), |
| |
| new Item("ZoneFormUpdateDemo", "Zone/Form Update Demo", "Updating a Zone inside a Form"), |
| |
| new Item("MultiZoneStringBodyDemo", "MultiZone String Body Demo", |
| "Multi-zone updates in a loop using strings coerced into blocks"), |
| |
| new Item("RenderNotificationDemo", "RenderNotification Demo", "Use of RenderNotification mixin"), |
| |
| new Item("InjectMessagesDemo", "Inject Global Messages into Service Demo", |
| "Ensure that it is possible to inject the application global message catalog into a service"), |
| |
| new Item("ReloadDemo", "Reloadable Service Implementation Demo", |
| "Used when manually testing service reloads"), |
| |
| new Item("RequestParameterDemo", "RequestParameter Annotation Demo", |
| "Use of @RequestParameter annotation on event handler method parameters"), |
| |
| new Item("CancelDemo", "Cancel Demo", "Use of the cancel option with Submit"), |
| |
| new Item("CanceledEventDemo", "Canceled Event Demo", "Triggering of the canceled event from a form."), |
| |
| new Item("PageResetDemo", "PageReset Annotation Demo", |
| "Use of PageReset annotation to re-initialize page state"), |
| |
| new Item("TestOnlyServiceDemo", "Test Only Service Demo", |
| "IoC module available via web.xml configuration"), |
| |
| new Item("RenderObjectExceptionDemo", "RenderObject Exception Demo", |
| "Demonstrate how exceptions when rendering default objects are displayed."), |
| |
| new Item("MultiLevelInheritDemo", "Multi-Level Inherit Demo", |
| "Use of inherit: binding prefix across three levels"), |
| |
| new Item("HiddenDemo", "Hidden Demo", "Demo the use of the Hidden component."), |
| |
| new Item("FormZoneDemo", "Form Zone Demo", "Use a form to update a zone."), |
| |
| new Item("ZoneUpdateNamespace", "Zone/Namespace Interaction", "Prove that TAP5-573 is fixed"), |
| |
| new Item("AbstractComponentDemo", "Abstract Component Demo", "Error when a component is abstract"), |
| |
| new Item("TemplateOverrideDemo", "Template Override Demo", |
| "Child component extends and overrides parent template."), |
| |
| new Item("MultiZoneUpdateDemo", "Multiple Zone Update Demo", |
| "A single request can now update multiple Zones"), |
| |
| new Item("LinkSubmitInZoneDemo", "LinkSubmit inside Zone", |
| "Ensure that a LinkSubmit works correctly when its containing Form updates a Zone"), |
| |
| new Item("ProgressiveDemo", "ProgressiveDisplay Demo", "Progressive Enhancement via a component"), |
| |
| new Item("ClientNumericValidationDemo", "Client-Side Numeric Validation", |
| "Client-side locale-specific validation"), |
| |
| new Item("PublishParametersDemo", "Publish Parameters Demo", |
| "Use of @Component.publishParameters attribute."), |
| |
| new Item("LinkSubmitDemo", "LinkSubmit Demo", "JavaScript LinkSubmit component"), |
| |
| new Item("LinkSubmitWithoutValidatorDemo", "LinkSubmit Without Validator Demo", |
| "Demonstrates that the LinkSubmit component is working without a validator on any of fields in the form"), |
| |
| new Item("PerFormValidationMessageDemo", "Per-Form Validation Messages", |
| "Per-form configuration of validation messages and constraints."), |
| |
| new Item("EmptyLoopDemo", "Empty Loop Demo", "Use of empty parameter with the Loop component."), |
| |
| new Item("GenericLoopDemo", "Generic Loop Demo", |
| "Use of generic parameters with the Loop component."), |
| |
| new Item("LoopWithMixinDemo", "Loop With Mixin Demo", |
| "Use a mixin with a Loop component."), |
| |
| new Item("BlankPasswordDemo", "Blank Password Demo", |
| "Show that a blank value in a PasswordField does not update the server side value."), |
| |
| new Item("GridFormEncoderDemo", "Grid Form Encoder Demo", |
| "Grid inside a Form using the ValueEncoder option"), |
| |
| new Item("GridFormWithInitialSortMixinDemo", "Grid Form With Initial Sort Mixin Demo", |
| "Grid inside a Form using the InitialSort mixin"), |
| |
| new Item("DateFieldAjaxFormLoop", "DateField inside AjaxFormLoop", |
| "Show that DateField component works correctly inside AjaxFormLoop"), |
| |
| new Item("NestedForm", "Nested Form Demo", "Error when a Form is nested inside another Form."), |
| |
| new Item("UnhandledEventDemo", "Unhandled Event Demo", |
| "Events that don't have matching event handlers cause exceptions"), |
| |
| new Item("PrimitiveDefaultDemo", "Primitive Default Demo", |
| "Primitive value returned from parameter default method"), |
| |
| new Item("ValidateFormValidationExceptionDemo", "ValidationForm ValidationException Demo", |
| "Throwing a ValidationException from the validateForm event handler."), |
| |
| new Item("ClientFormatDemo", "Client Format Validation", "Client-side input format validation"), |
| |
| new Item("ShortGrid", "Short Grid", |
| "Grid where the number of claimed rows is less than the number of actual rows"), |
| |
| new Item("NullParameterDemo", "Null Parameter Demo", "Binding a not-null parameter to null."), |
| |
| new Item("nestedbeaneditor", "Nested BeanEditor", |
| "BeanEditor as override for property editor in BeanEditForm"), |
| |
| new Item("actionpage", "Action Page", "tests fixture for ActionLink component"), |
| |
| new Item("cleancachedemo", "Clean Cache Demo", "cache cleared properly during Ajax calls"), |
| |
| new Item("numberbeaneditordemo", "Number BeanEditor Demo", |
| "use of nulls and wrapper types with BeanEditor"), |
| |
| new Item("forminjectordemo", "FormInjector Demo", "extending a form dynamically via Ajax"), |
| |
| new Item("music", "Music Page", "demo handling of edge cases of page naming"), |
| |
| new Item("PersistentDemo", "Persistent Demo", "storing and clearing persistent properties"), |
| |
| new Item("ActionViaLinkDemo", "Action via Link Demo", "tests creating an action link explicitly"), |
| |
| new Item("FormFragmentDemo", "Form Fragment Demo", "page with dynamic form sections"), |
| |
| new Item("BooleanDemo", "Boolean Property Demo", |
| "demo boolean properties using both is and get prefixes"), |
| |
| new Item("DeleteFromGridDemo", "Delete From Grid", "demo deleting items form a Grid"), |
| |
| new Item("RenderErrorDemo", "Render Error Demo", "reporting of errors while rendering"), |
| |
| new Item("nested/AssetDemo", "AssetDemo", "declaring an image using Assets"), |
| |
| new Item("nested/ActionDemo", "Action With Context Demo", |
| "using action links with context on page with activation context"), |
| |
| new Item("blockdemo", "BlockDemo", "use of blocks to control rendering"), |
| |
| new Item("countdown", "Countdown Page", "defining component using @Component annotation"), |
| |
| new Item("injectdemo", "Inject Demo", "use of various kinds of injection"), |
| |
| new Item("instancemixin", "InstanceMixin", "mixin added to a particular component instance"), |
| |
| new Item("TextFieldWrapperTypeDemo", "TextField Wrapper Types", |
| "use of TextField to edit numeric wrapper types (not primitives) "), |
| |
| new Item("EnvironmentalDemo", "Environmental Annotation Usage", |
| "Storing and retrieving Environmental values"), |
| |
| new Item("Expansion", "Expansion Page", "Use of expansions in templates"), |
| |
| new Item("ExpansionSubclass", "ExpansionSubclass", |
| "components can inherit templates from base classes"), |
| |
| new Item("Localization", "Localization", "access localized messages from the component catalog"), |
| |
| new Item("NumberSelect", "NumberSelect", "passivate/activate page context demo"), |
| |
| new Item("ParameterConflict", "Template Overridden by Class Page", |
| "Parameters in the class override those in the template"), |
| |
| new Item("ParameterDefault", "ParameterDefault", "defaulter methods for component parameters"), |
| |
| new Item("passwordfielddemo", "PasswordFieldDemo", "test for the PasswordField component"), |
| |
| new Item("rendercomponentdemo", "RenderComponentDemo", |
| "components that \"nominate\" other components to render"), |
| |
| new Item("renderphaseorder", "RenderPhaseOrder", |
| "order of operations when invoking render phase methods"), |
| |
| new Item("simpleform", "SimpleForm", "first pass at writing Form and TextField components"), |
| |
| new Item("OptionGroupForm", "OptionGroupForm Demo", "Select with Option Group"), |
| |
| new Item("validform", "ValidForm", "server-side input validation"), |
| |
| new Item("ToDoListVolatile", "ToDo List (Volatile)", "Loops and Submit inside Form, volatile mode"), |
| |
| new Item("MissingTemplate", "Missing Template Demo", |
| "Demo for what happens when a template is not found for a page"), |
| |
| new Item("nested/zonedemo", "Zone Demo", "dynamic updates within a page"), |
| |
| new Item("todolist", "ToDo List", "Loops and Submit inside Form using primary key encoder"), |
| |
| new Item("flashdemo", "FlashDemo", "demonstrate 'flash' persistence"), |
| |
| new Item("beaneditordemo", "BeanEditor Demo", "demonstrate the BeanEditor mega-component"), |
| |
| new Item("pageloadeddemo", "PageLoaded Demo", "shows that page lifecycle methods are invoked"), |
| |
| new Item("griddemo", "Grid Demo", "default Grid component"), |
| |
| new Item("GridInLoopDemo", "Grid In Loop Demo", "Grid inside loop with different model on each iteration"), |
| |
| new Item("nullgrid", "Null Grid", "handling of null source for Grid"), |
| |
| new Item("gridsetdemo", "Grid Set Demo", "handling of Set sources for Grid"), |
| |
| new Item("gridenumdemo", "Grid Enum Demo", "handling of enum types in the Grid"), |
| |
| new Item("GridRemoveReorderDemo", "Grid Remove/Reorder Demo", |
| "handling of remove and reorder parameters"), |
| |
| new Item("EmptyGrid", "Empty Grid Demo", "show table for empty data sources"), |
| |
| new Item("GridEarlyPagingDemo", "Grid Early Paging", "set a Grid's current page before rendering"), |
| |
| new Item("protected", "Protected Page", |
| "Demonstrate result of non-void return from a page's activate method"), |
| |
| new Item("Kicker", "Kicker", "demos complex page and component context in links"), |
| |
| new Item("simpletrackgriddemo", "SimpleTrack Grid Demo", |
| "customizing the model for a Grid around an interface"), |
| |
| new Item("pagelinkcontext", "PageLink Context Demo", |
| "passing explicit context in a page render link"), |
| |
| new Item("pagecontextinform", "Page Context in Form", "passivate/activate page context in Form", |
| "betty", "wilma", "context with spaces", "context/with/slashes"), |
| |
| new Item("ValidBeanEditorDemo", "Client Validation Demo", "BeanEditor with validation enabled"), |
| |
| new Item("Unreachable", "Unreachable Page", "page not reachable due to IgnoredPathsFilter"), |
| |
| new Item("renderabledemo", "Renderable Demo", |
| "shows that render phase methods can return a Renderable"), |
| |
| new Item("inheritedbindingsdemo", "Inherited Bindings Demo", |
| "Tests for components that inherit bindings from containing components"), |
| |
| new Item("ClientPersistenceDemo", "Client Persistence Demo", |
| "component field values persisted on the client side"), |
| |
| new Item("attributeExpansionsDemo", "Attribute Expansions Demo", |
| "use expansions inside attributes of ordinary elements"), |
| |
| new Item("PaletteDemo", "Palette Demo", "multiple selection component"), |
| |
| new Item("ReturnTypes", "Return Types", "tests various event handler return types"), |
| |
| new Item("FormEncodingType", "Form Encoding Type", |
| "Test ability to set an encoding type for a Form"), |
| |
| new Item("RadioDemo", "RadioDemo", "Use of the RadioGroup and Radio components"), |
| |
| new Item("RegexpDemo", "Regexp Demo", "Use of the Regexp validator"), |
| |
| new Item("BeanEditRemoveReorder", "BeanEdit Remove/Reorder", |
| "Use of the remove and reorder parameters with BeanEditForm"), |
| |
| new Item("MultiBeanEditDemo", "MultiBeanEdit Demo", |
| "Multiple BeanEditor components in a single form"), |
| |
| new Item("GridFormDemo", "Grid Form Demo", "Grid operating inside a Form"), |
| |
| new Item("DateFieldDemo", "DateField Demo", "using DateField by itself on a page"), |
| |
| new Item("BeanEditDateDemo", "BeanEditor / Date Demo", |
| "Use of date properties inside BeanEditor and BeanDisplay"), |
| |
| new Item("eventmethodtranslate", "EventMethod Translator", |
| "Demo ability to provide toclient and parseclient event handler methods"), |
| |
| new Item("autocompletedemo", "Autocomplete Mixin Demo", |
| "Demo the autocomplete mixin for text fields"), |
| |
| new Item("componentparameter", "ComponentParameter Demo", |
| " Demo using a component type as a parameter type and succesfully passing a component"), |
| |
| new Item("inheritinformalsdemo", "Inherit Informal Parameters Demo", |
| "Demo a component which inherits informal parameters from its container"), |
| |
| new Item("disabledfields", "Disabled Fields", |
| "Demonstrate a bunch of disabled fields, to verify that the RenderDisabled mixin works and is being used properly"), |
| |
| new Item("BeanEditorOverride", "BeanEditor Override", |
| "Property editor overrides work for the BeanEditor component itself (not just the BeanEditForm component)"), |
| |
| new Item("varbindingdemo", "Var Binding Demo", "use of the var: binding prefix"), |
| |
| new Item("leangriddemo", "Lean Grid Demo", |
| "Grid component with lean parameter turned on, to eliminate CSS class attributes in TD and TH elements"), |
| |
| new Item("blockcaller", "Action Links off of Active Page", |
| "Actions can exist on pages other than the active page, via Blocks."), |
| |
| new Item("unlessdemo", "Unless Demo", "use of the Unless component"), |
| |
| new Item("delegateinline", "Inline Delegate", |
| "Using the delegate component to create inline components"), |
| |
| new Item("MagicValueEncoder", "Magic ValueEncoder Demo", |
| "Automatic creation of ValueEncoder using the TypeCoercer"), |
| |
| new Item("NullStrategyDemo", "Null Field Strategy Demo", "use of the nulls parameter of TextField"), |
| |
| new Item("OverrideValidationDecorator", "Override Validation Decorator", |
| "override the default validation decorator"), |
| |
| new Item("ExceptionEventDemo", "Exception Event Demo", "handling component event exceptions"), |
| |
| new Item("AddedGridColumnsDemo", "Added Grid Columns Demo", "programatically adding grid columns"), |
| |
| new Item("PrimitiveArrayParameterDemo", "Primitive Array Parameter Demo", |
| "use primitive array as parameter type"), |
| |
| new Item("RenderPhaseMethodExceptionDemo", "Render Phase Method Exception Demo", |
| "render phase methods may throw checked exceptions"), |
| |
| new Item("TrackEditor", "Generic Page Class Demo", |
| "demo use of generics with component classes and, particularily, with property types"), |
| |
| new Item("IndirectProtectedFields", "Protected Fields Demo", |
| "demo exception when component class contains protected fields"), |
| |
| new Item("injectcomponentdemo", "Inject Component Demo", "inject component defined in template"), |
| |
| new Item("cachedpage", "Cached Annotation", "Caching method return values"), |
| |
| new Item("cachedpage2", "Cached Annotation2", "Caching method return values w/ inheritence"), |
| |
| new Item("inplacegriddemo", "In-Place Grid Demo", "Grid that updates in-place using Ajax"), |
| |
| new Item("methodadvicedemo", "Method Advice Demo", "Advising component methods."), |
| |
| new Item("HasBodyDemo", "Has Body Demo", "Verify the hasBody() method of ComponentResources"), |
| |
| new Item("BeanEditorBeanEditContext", "BeanEditor BeanEditContext", |
| "BeanEditContext is pushed into enviroment by BeanEditor."), |
| |
| new Item("InformalParametersDemo", "Informal Parameters Demo", |
| "Access to informal parameters names and values"), |
| |
| new Item("FormFieldOutsideForm", "Form Field Outside Form", |
| "Nice exception message for common problem of form fields outside forms"), |
| |
| new Item("SubmitWithContext", "Submit With Context", "Providing a context for Submit component"), |
| |
| new Item("MessageConstraintGeneratorDemo", "Validation Constraints From Messages", |
| "Providing validators to apply from a properties file"), |
| |
| new Item("RenderClientIdDemo", "RenderClientId Mixin", |
| "Force render of client-side id of a client element via the RenderClientId mixin"), |
| |
| new Item("BindParameterDemo", "BindParameter mixin annotation", |
| "Accessing component parameter values from a mixin"), |
| |
| new Item("BindParameterNoSuchParameter", "BindParameter error handling", |
| "BindParameter throws exception if the containing component doesn't have a matching parameter"), |
| |
| new Item("BindParameterOnComponent", "BindParameter on component", |
| "Verify that BindParameter can only be used on mixin fields"), |
| |
| new Item("MixinOrderingDemo", "Mixin Ordering Demo", "Various mixin-ordering scenarios"), |
| |
| new Item( |
| "MissingComponentClassException", |
| "Missing Component Class Exception", |
| "Meaningful exception message thrown when component class can't be determined from template or field in containing component."), |
| |
| new Item("SessionAttributeDemo", "SessionAttribute Demo", |
| "Annotation to map a field to a specific session attribute"), |
| |
| new Item("BeanEditCalendarDemo", "BeanEditor / Calendar Demo", |
| "Use of calendar properties inside BeanEditor and BeanDisplay"), |
| |
| new Item("TriggerDemo", "Trigger Demo", "Use of Trigger component"), |
| |
| new Item("ImageSubmitDemo", "Submit with an Image Demo", |
| "Make sure that submit with the image parameter set triggers the 'selected' event."), |
| |
| new Item("SelectZoneDemo", "Select Zone Demo", "Use a Select component to update a zone."), |
| |
| new Item("AssetProtectionDemo", "Asset Protection Demo", |
| "AssetProtectionDispatcher is properly contributed and functioning"), |
| |
| new Item("BeanDisplayEnumDemo", "BeanDisplay Enum Demo", |
| "User represenation of enum values is correctly read from messages"), |
| |
| new Item("unavailablecomponentdemo", "Report Location of Unavailable Component", |
| "Report Location of Unavailable Component"), |
| |
| new Item("discardafterdemo", "@DiscardAfter Demo", "Demo using @DiscardAfter annotation"), |
| |
| new Item("SelectDemo", "Select Demo", "Validation decoration for Select"), |
| |
| new Item("SelectModelFromObjectsAndPropertyNameDemo", "SelectModel from objects and property name", |
| "Creating a SelectModel from a list of objects and a label property name"), |
| |
| new Item("SelectModelFromObjectsDemo", "SelectModel from objects", |
| "Creating a SelectModel from a list of objects"), |
| |
| new Item("SelectModelCoercionDemo", "SelectModel coercion", |
| "Creating a SelectModel from a list of objects using coercion"), |
| |
| new Item("DecoratePageRenderLinkDemo", "Decorate Page Render Link Demo", |
| "Decorating page render links"), |
| |
| new Item("DecorateComponentEventLinkDemo", "Decorate Component Event Link Demo", |
| "Decorating event links"), |
| |
| new Item("ValidatorMacroDemo", "Validator Macro Demo", "Using validator macros"), |
| |
| new Item("AtInjectDemo", "@javax.inject.Inject Demo", "Using @javax.inject.Inject for injection"), |
| |
| new Item("LinkQueryParameters", "Link Query Parameters Demo", |
| "Providing Query Parameters directly to link components as a map of key=parameter name, value=parameter values"), |
| |
| new Item("ChecklistDemo", "Checklist Demo", "Use Checklist component"), |
| |
| new Item("BeanEditFormPrepareBubbling", "BeanEditor Prepare Bubbling Demo", "Prepare event bubbling"), |
| |
| new Item("NestedFormFragment", "Nested Form Fragment Demo", "Nesting Form Fragments work properly"), |
| |
| new Item("MapExpressionInExpansions", "Map Expressions in Expansions Demo", "Maps can be used in expansions"), |
| |
| new Item("ExpressionInJsFunction", "Expressions in JS Functions Demo", "Expressions can be used inside javascript functions"), |
| |
| new Item("FormFieldFocusDemo", "FormFieldFocus (DEPRECATED) Demo", "Setting the Form focus on a specific field"), |
| |
| new Item("FormFragmentExplicitVisibleBoundsDemo", "Form Fragment Explicit Visible Bounds Demo", "Check for form fragment parent visibility can be bounded to"), |
| |
| new Item("OverrideFieldFocusDemo", "OverrideFieldFocus Demo", "Setting the focus in a form to a specific field"), |
| |
| new Item("OverrideLabelClassDemo", "Override Label Class Demo", "Setting class attribute on Label component"), |
| |
| new Item("FormLinkParameters", "FormLinkParameters Demo", "Form link parameters should be unescaped for a hidden field"), |
| |
| new Item("KnownActivationContextDemo", "Known Activation Context Demo", "Page is displayed normally if called without context (TAP5-2070)", |
| "Exact"), |
| |
| new Item("UnknownActivationContextDemo", "Unknown Activation Context Demo", "Page refuse to serve if called with an unknown activation context (TAP5-2070)", |
| "Unwanted", "context"), |
| |
| new Item("ModuleConfigurationCallbackDemo", "ModuleConfigurationCallback Demo", "Shows an example of changing the Require.js configuration using JavaScriptSupport.addModuleConfigurationDemo()"), |
| |
| new Item("PartialTemplateRendererDemo", "PartialTemplateRenderer Demo", "Shows some examples of rendering blocks and components to a String using PartialTemplateRenderer"), |
| |
| new Item("nested/PageThatThrowsException", "Reload on nested page", "Tests a page reload from a nested page's exception report"), |
| |
| new Item("inplacegridinloopdemo", "In-Place Grid in a Loop Demo", "In-place grid in a loop"), |
| |
| new Item("GenericTypeDemo", "Generic bound type demo", "Tests that generic type info is available for generic bindings"), |
| |
| new Item("FormFieldClientIdParameterDemo", "Form Field clientId Parameter Demo", "Shows and tests how to explicitly set the id of a form field component"), |
| |
| new Item("gridwithsubmitwithcontextdemo", "Grid with Submit with context", "A grid whose rows contain a Submit component with context"), |
| |
| new Item("textfieldwithnullvalidateparameter", "TextField with null validate parameter", "A TextField whose validate parameter is bound to null"), |
| |
| new Item("validateInErrorEvent", "Validate in error Event", "A form that trigger validate in " + |
| "error event on submit when textfield is empty"), |
| |
| new Item("onactivateredirect", "OnActivateRedirect Demo", "A page that redirects to itself from" |
| + " its activation method"), |
| |
| new Item("BeanEditorWithFormFragmentDemo", "Bean Editor With Form Fragment Demo", "TriggerFragment mixin used inside a BeanEditor") |
| |
| ); |
| |
| static |
| { |
| Collections.sort(ITEMS); |
| } |
| |
| @Property |
| private Item item; |
| |
| @InjectPage |
| private SecurePage securePage; |
| |
| @Inject |
| private ComponentResources resources; |
| |
| @Inject |
| private PageRenderLinkSource linkSource; |
| |
| @Property |
| private String key; |
| |
| @Property |
| private Map<String, List<Item>> alphaKeyItems; |
| |
| void setupRender() |
| { |
| alphaKeyItems = new TreeMap<String, List<Item>>(); |
| |
| for (Item item : ITEMS) |
| { |
| InternalUtils.addToMapList(alphaKeyItems, item.label.substring(0, 1), item); |
| } |
| } |
| |
| public List<Item> itemsForKey() |
| { |
| return alphaKeyItems.get(key); |
| } |
| |
| Object onActionFromSecurePage() |
| { |
| return securePage.initialize("Triggered from Index"); |
| } |
| |
| public Link getInjectDemoLink() |
| { |
| return linkSource.createPageRenderLink(InjectDemo.class); |
| } |
| |
| public List getDemoContext() |
| { |
| return Arrays.asList(1, 2, 3); |
| } |
| |
| /* This will fail, because component classes are not instantiable. */ |
| public Object onActionFromInstantiatePage() |
| { |
| return new Music(); |
| } |
| |
| public void setAlert(String alert) |
| { |
| this.alert = alert; |
| } |
| |
| public String getAlert() |
| { |
| return alert; |
| } |
| |
| Object onActionFromImmediateResponse() |
| { |
| return new StreamPageContent(BypassActivationTarget.class).withoutActivation(); |
| } |
| } |