A tab can be any container type, but, by default, the sample portal uses table container. To add a new tab, you must first define the container, then register that container in JSPTabContainer, which “houses” the tabs.
Create the necessary display profile.
Define the new collection within <Collection name="TabProperties"> in JSPTabContainer. For example:
... <Collection name=" NewTabPanelContainer" > <Boolean name=“removable” value=“false”/> <Boolean name=“renamable” value=“true”/> <Boolean name=“predefined” value=“true”/> </Collection> ... </Collection> ... |
Add entries to the <Available> and <Selected> tags. For example:
... <Available> <Reference value=”NewTabPanelContainer”/> ... </Available> ... <Selected> <Reference value=”NewTabPanelContainer"/> ... </Selected> ... |
Define a container for NewTabPanelContainer. For example:
<Container name="NewTabPanelContainer" provider="JSPTableContainerProvider"> <Properties> <String name="title" value="New Container Channel"/> <String name="contentPage" value="tabtable.jsp"/> <String name="description" value="This is a test for front table containers"/> <String name="Desktop-fontFace1" value="Sans-serif"/> <Collection name="categories"> <String value="Personal Channels"/> <String value="Sample Channels"/> </Collection> <Collection name="Personal Channels"> <String value="UserInfo"/> <String value="MailCheck"/> </Collection> <Collection name="Sample Channels"> <String value="SampleJSP"/> <String value="SampleXML"/> </Collection> </Properties> <Available> <Reference value="UserInfo"/> <Reference value="MailCheck"/> <Reference value="SampleJSP"/> <Reference value="SampleXML"/> </Available> <Selected> <Reference value="UserInfo"/> <Reference value="MailCheck"/> <Reference value="SampleJSP"/> <Reference value="SampleXML"/> </Selected> <Channels> ... </Channels> </Container> |
If predefined property value is true in the TabProperties collection ( Adding a Tab to JSPTabContainer), then it is recommended to define a Provider for the container channel which is meant to be used as a predefined tab.
For example, see below for the PredefinedNewTabPanelContainerProvider Display Profile Definition
<Provider name="PredefinedNewTabPanelContainerProvider" class="com.sun.portal.providers.containers.jsp.table.JSPTableContainerProvider" version="2"> <Properties> <ConditionalProperties condition="locale" value="en" > <ConditionalProperties condition="locale" value="US" > <String name="title" value="New Sample"/> <String name="description" value="New Tab"/> </ConditionalProperties> </ConditionalProperties> <String name="title" value="New Sample"/> <String name="description" value="New Tab"/> <String name="contentPage" value="tabtable.jsp"/> <String name="presetThemeChannel" value="JSPPresetThemeContainer" advanced="true"/> <String name="customThemeChannel" value="JSPCustomThemeContainer" advanced="true"/> <String name="parentTabContainer" value="JSPTabContainer" advanced="true"/> <String name="Desktop-fontFace1" value="Sans-serif"/> <String name="refreshTime" value="" advanced="true"/> <String name="width" value="thin" advanced="true"/> <String name="fontFace1" value="Sans-serif"/> <String name="productName" value="Sun Java System Portal Server"/> <String name="maximizedChannel" value=""/> <Integer name="timeout" value ="240"/> <Integer name="layout" value="1"/> <Boolean name="showExceptions" value="false"/> <Boolean name="parallelChannelsInit" value="false"/> <Boolean name="refreshParentContainerOnly" value="false" advanced="true"/> <Boolean name="isEditable" value="true" advanced="true"/> <String name="editType" value="edit_complete" advanced="true"/> <String name="editContainerName" value="JSPEditContainer" advanced="true"/> <Integer name="thin_popup_height" value="200"/> <Integer name="thin_popup_width" value="500"/> <Integer name="thick_popup_height" value="300"/> <Integer name="thick_popup_width" value="600"/> <Integer name="fullwidth_popup_height" value="500"/> <Integer name="fullwidth_popup_width" value="600"/> <Boolean name="defaultChannelIsMinimizable" value="true"/> <Boolean name="defaultChannelIsMaximizable" value="true"/> <Boolean name="defaultChannelIsMinimized" value="false" advanced="true"/> <Boolean name="defaultChannelIsDetached" value="false" advanced="true"/> <Boolean name="defaultChannelIsDetachable" value="true"/> <Boolean name="defaultChannelIsRemovable" value="true"/> <Boolean name="defaultChannelHasFrame" value="true" advanced="true"/> <Boolean name="defaultChannelIsMovable" value="true"/> <Boolean name="defaultBorderlessChannel" value="false" advanced="true"/> <String name="defaultChannelColumn" value="1" advanced="true"/> <String name="defaultChannelRow" value="1" advanced="true"/> <Collection name="categories"> <String value="Sample Channels"/> </Collection> <Collection name="Sample Channels"> <String value="SampleRSS"/> <String value="SampleURLScraper"/> <String value="Notes"/> <String value="SampleSimpleWebService"/> </Collection> <Collection name="channelsColumn" advanced="true"> <String name="SampleURLScraper" value="2"/> <String name="Notes" value="2"/> <String name="SampleSimpleWebService" value="2"/> </Collection> <Collection name="channelsRow" advanced="true"> <String name="SampleURLScraper" value="2"/> <String name="Notes" value="3"/> <String name="SampleSimpleWebService" value="4"/> </Collection> <Collection name="channelsIsMinimized" advanced="true"/> <Collection name="channelsIsDetached" advanced="true"/> <Collection name="channelsHasFrame" advanced="true"/> <Collection name="channelsIsMinimizable"/> <Collection name="channelsIsMaximizable"/> <Collection name="channelsIsMovable"/> <Collection name="channelsIsRemovable"/> <Collection name="channelsIsDetachable"/> <Collection name="borderlessChannels"/> </Properties> </Provider> |
Define the container channel based on the PredefinedNewTabPanelContainerProvider.
When the user creates a new tab based on the predefined tab, all the properties for this tab are picked up from the Provider definition. For example, see below for PredefinedNewTabPanelContainer Channel Properties.
<Container name="PredefinedNewTabPanelContainer" provider="PredefinedNewTabPanelContainerProvider"> <Properties/> <Available> <Reference value="SampleRSS"/> <Reference value="SampleURLScraper"/> <Reference value="Notes"/> <Reference value="SampleSimpleWebService"/> </Available> <Selected> <Reference value="SampleRSS"/> <Reference value="SampleURLScraper"/> <Reference value="Notes"/> <Reference value="SampleSimpleWebService"/> </Selected> <Channels> </Channels> </Container> |
Load the display profile into LDAP by using the psadmin subcommand.