Hello
I decompiled the CollectionListRenderer and created my own collection render with a standard layout on top.
So first of all I decompiled. I created a java project, uploaded the par and mapped the collection renderer with my java class. Next I copied the default layoutset with all it's subcomponents and made it use my collection renderer.
But when I preview my layoutset, I get some errors. I get the following message from debug:
The given configuration was not used, because the alias is not defined or points to an invalid java class
The logs tell me the following:
#1.5 #005056BA19F0005F00000026000017FC000457B7A3CB09A2#1222346145711#com.sapportals.wcm.rendering.base.AbstractFactory#sap.com/irj#com.sapportals.wcm.rendering.base.AbstractFactory#Guest#0##n/a##d48fceb08a3f11ddab1f005056ba19f0#Thread[ConfigurationEventDispatcher,5,SAPEngine_Application_Thread[impl:3]_Group]##0#0#Fatal##Plain###Could not create renderer with alias KenG_CollectionListRenderer and classname be.kindengezin.wcm.rendering.collection.cm.CollectionListRenderer:java.lang.NoClassDefFoundError at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:219) at com.sapportals.wcm.crt.CrtClassLoaderRegistry.forName(CrtClassLoaderRegistry.java:349) at com.sapportals.wcm.rendering.base.AbstractFactory.createLayoutObject(AbstractFactory.java:204) at com.sapportals.wcm.rendering.base.AbstractFactory.initialize(AbstractFactory.java:271) at com.sapportals.wcm.rendering.base.AbstractFactory.configEvent(AbstractFactory.java:471) at com.sapportals.config.event.ConfigEventService.dispatchEvent(ConfigEventService.java:227) at com.sapportals.config.event.ConfigEventService.configEvent(ConfigEventService.java:112) at com.sapportals.config.event.ConfigEventDispatcher.callConfigListeners(ConfigEventDispatcher.java:308) at com.sapportals.config.event.ConfigEventDispatcher.flushEvents(ConfigEventDispatcher.java:251) at com.sapportals.config.event.ConfigEventDispatcher.run(ConfigEventDispatcher.java:110)
I have a portalapp.xml:
<?xml version="1.0" encoding="utf-8"?><application><application-config> <property name="SharingReference" value="usermanagement, knowledgemanagement, landscape, htmlb, exportalJCOclient, exportal"></property></application-config> <components></components><services> <service name="RFServiceWrapper"> <service-config> <property name="className" value="com.sap.netweaver.rf.wrapper.RFServiceWrapper"></property> <property name="startup" value="true"></property> </service-config> </service></services></application>
And My service wrapper:
- IRFServiceWrapper
package com.sap.netweaver.rf.wrapper; import com.sapportals.portal.prt.service.IService; public interface IRFServiceWrapper extends IService{ public static final String KEY = "be.kindengezin.CollectionRenderer.CollectionListRenderer"; }
- RFServiceWrapper
package com.sap.netweaver.rf.wrapper; import com.sapportals.portal.prt.service.IServiceContext; import com.sapportals.portal.prt.service.IServiceConfiguration; import com.sapportals.portal.prt.service.IService; import com.sapportals.wcm.crt.CrtClassLoaderRegistry; public class RFServiceWrapper implements IRFServiceWrapper{ private IServiceContext mm_serviceContext; /** * Generic init method of the service. Will be called by the portal runtime. * @param serviceContext */ public void init(IServiceContext serviceContext){ mm_serviceContext = serviceContext; CrtClassLoaderRegistry.addClassLoader(this.getKey(), this.getClass().getClassLoader()); } /** * This method is called after all services in the portal runtime have already been initialized. */ public void afterInit(){ } /** * configure the service : @param configuration */ public void configure(IServiceConfiguration configuration){ } /** * This method is called by the portal runtime when the service is destroyed. */ public void destroy(){ } /** * This method is called by the portal runtime when the service is released. */ public void release(){ } /** * @return the context of the service, which was previously set by the portal runtime */ public IServiceContext getContext(){ return mm_serviceContext; } /** * This method should return a string that is unique to this service amongst all * other services deployed in the portal runtime. * @return a unique key of the service */ public String getKey(){ return KEY; } }
And to finish my CollectionListRenderer (which was simply decompiled). Of course I added the needed jar files to the build path (through "add external JARs...").
package be.kindengezin.wcm.rendering.collection.cm; import com.sap.tc.logging.Location; import com.sap.tc.logging.LogController; import com.sapportals.htmlb.Component; import com.sapportals.htmlb.FormLayout; import com.sapportals.htmlb.FormLayoutCell; import com.sapportals.htmlb.FormLayoutRow; import com.sapportals.htmlb.HTMLFragment; import com.sapportals.htmlb.enum.CellVAlign; import com.sapportals.htmlb.page.DynPage; import com.sapportals.htmlb.rendering.IPageContext; import com.sapportals.wcm.WcmException; import com.sapportals.wcm.control.util.EmptyComponent; import com.sapportals.wcm.control.util.property.IPropertyColumn; import com.sapportals.wcm.control.util.property.IPropertyPosition; import com.sapportals.wcm.control.util.property.IPropertyWithModifiers; import com.sapportals.wcm.control.util.property.IPropertyWithModifiersList; import com.sapportals.wcm.control.util.property.PropertyColumnFactory; import com.sapportals.wcm.rendering.base.ILayoutObject; import com.sapportals.wcm.rendering.base.IProxy; import com.sapportals.wcm.rendering.base.IRendererStatus; import com.sapportals.wcm.rendering.collection.LightCollectionRenderer; import com.sapportals.wcm.rendering.collection.cm.PropertyColumnRenderer; import com.sapportals.wcm.rendering.collection.cm.PropertyHeaderRenderer; import com.sapportals.wcm.rendering.resource.IResourceRenderer; import com.sapportals.wcm.rendering.util.HtmlRendererUtil; import com.sapportals.wcm.repository.IPropertyName; import com.sapportals.wcm.repository.IPropertyNameList; import com.sapportals.wcm.repository.IResource; import com.sapportals.wcm.repository.IResourceContext; import com.sapportals.wcm.repository.IResourceFactory; import com.sapportals.wcm.repository.IResourceList; import com.sapportals.wcm.repository.PropertyName; import com.sapportals.wcm.repository.ResourceException; import com.sapportals.wcm.repository.ResourceFactory; import com.sapportals.wcm.repository.service.IRepositoryServiceFactory; import com.sapportals.wcm.repository.service.layout.customizing.ICollectionRendererParameterNameConst; import com.sapportals.wcm.repository.service.layout.customizing.IParameterName; import com.sapportals.wcm.repository.service.layout.customizing.IParameters; import com.sapportals.wcm.repository.service.layout.customizing.IResourceRendererParameterNameConst; import com.sapportals.wcm.service.propertyconfig.IMetaModel; import com.sapportals.wcm.service.propertyconfig.IMetaName; import com.sapportals.wcm.service.propertyconfig.IMetaNameList; import com.sapportals.wcm.service.propertyconfig.IPropertyConfigurationService; import com.sapportals.wcm.util.logging.LoggingFormatter; import com.sapportals.wcm.util.profiler.IProfiler; import com.sapportals.wcm.util.profiler.IProfiler.Level; import com.sapportals.wcm.util.profiler.Profiler; import com.sapportals.wdf.WdfException; import java.util.ArrayList; import java.util.Hashtable; import java.util.List; import java.util.Vector; public class CollectionListRenderer extends LightCollectionRenderer { private static final String PROFILER_PATH_UI_RENDER = "/KM/FLEXUI/RENDER/UI"; private static final String PROFILER_PATH_UI_RENDER_ROW = "/KM/FLEXUI/RENDER/UI/ROW "; private static final String PROFILER_PATH_UI_RENDER_GETPROPS = "/KM/FLEXUI/RENDER/UI/GETPROPS"; private static IProfiler s_profiler = Profiler.getInstance(); private static Location log = Location.getLocation(CollectionListRenderer.class.getName()); private static int PAGER_LINKS_DEFAULT = 5; private static final CellVAlign VERTICAL_ALIGN = HtmlRendererUtil.FLEXUI_VERTICAL_ALIGN; private int MaxNumberOfRows = 10; private int noOfColumns = 0; private static IPropertyName[] DEFAULT_PROP_NAMES = new PropertyName[3]; private IPropertyPosition[] propertiesPositions; private static final String NEXT_LINE_START_COLUMN = "col"; private static final String NEXT_LINE_METANAME = "metaName"; private static final String NEXT_LINE_METANAME_MODIFIERS = "metaNameModifiers"; private boolean debug = false; private boolean isManualOrdered = false; public CollectionListRenderer() { initParameterSettings(); super.set508enabled(true); } private void initParameterSettings() { IParameterName[] supportedParameters = { ICollectionRendererParameterNameConst.BREADCRUMBSTYLE, ICollectionRendererParameterNameConst.BREADCRUMBVISIBILITYSTYLE, ICollectionRendererParameterNameConst.SHOWFOLDERTITLE, ICollectionRendererParameterNameConst.SHOWFILESSTYLE, ICollectionRendererParameterNameConst.SORT_ENABLED, ICollectionRendererParameterNameConst.LINKSSTYLE, ICollectionRendererParameterNameConst.SHOWFOLDERSSTYLE, ICollectionRendererParameterNameConst.SHOW_HIDDEN, ICollectionRendererParameterNameConst.COLUMNS, IResourceRendererParameterNameConst.ICONSTYLE, ICollectionRendererParameterNameConst.ROWS, ICollectionRendererParameterNameConst.ROWSPACING, ICollectionRendererParameterNameConst.COLUMNSPACING, ICollectionRendererParameterNameConst.MASSACTIONSTYLE, ICollectionRendererParameterNameConst.UI_GROUP_MASS, IResourceRendererParameterNameConst.ITEMACTIONSTYLE, ICollectionRendererParameterNameConst.ITEMSELECTIONMODE, ICollectionRendererParameterNameConst.ROWBACKGROUNDSTYLE, ICollectionRendererParameterNameConst.PROPERTYCOLUMNS, ICollectionRendererParameterNameConst.BACKGROUNDIMAGEPATH, ICollectionRendererParameterNameConst.BACKGROUNDIMAGESTYLE, ICollectionRendererParameterNameConst.SORT_PROPERTY, ICollectionRendererParameterNameConst.COMPONENTS, ICollectionRendererParameterNameConst.PROPERTY_COLUMN_HEADER_STYLE, ICollectionRendererParameterNameConst.SORT_ORDER, ICollectionRendererParameterNameConst.COLLECTION_ACTIONSTYLE, ICollectionRendererParameterNameConst.UI_GROUP_COLLECTION, ICollectionRendererParameterNameConst.RESOURCE_LIST_FILTER, ICollectionRendererParameterNameConst.RESIZEHEIGHTSTYLE, ICollectionRendererParameterNameConst.RESIZEWIDHTSTYLE, ICollectionRendererParameterNameConst.FILTEREXTENSION, ICollectionRendererParameterNameConst.FILTERMIMETYPE, ICollectionRendererParameterNameConst.FILTERRESOURCETYPE, IResourceRendererParameterNameConst.UI_GROUP_RESOURCE, ICollectionRendererParameterNameConst.PAGER_LINK_COUNT, ICollectionRendererParameterNameConst.EMPTY_COLLECTION_FILE, ICollectionRendererParameterNameConst.EMPTY_COLLECTION_KEY, ICollectionRendererParameterNameConst.EMPTY_COLLECTION_STYLE }; super.setSupportedParameters(supportedParameters); IParameters parameters = super.getParameters(); parameters.setParameter(ICollectionRendererParameterNameConst.BREADCRUMBSTYLE, "horizontal"); parameters.setParameter(ICollectionRendererParameterNameConst.BREADCRUMBVISIBILITYSTYLE, "standard"); parameters.setParameter(ICollectionRendererParameterNameConst.SHOWFILESSTYLE, "all"); parameters.setParameter(ICollectionRendererParameterNameConst.LINKSSTYLE, "all"); parameters.setParameter(ICollectionRendererParameterNameConst.SHOWFOLDERSSTYLE, "all"); parameters.setParameter(ICollectionRendererParameterNameConst.MASSACTIONSTYLE, "off"); parameters.setParameter(IResourceRendererParameterNameConst.ITEMACTIONSTYLE, "hover"); parameters.setParameter(ICollectionRendererParameterNameConst.SHOWFOLDERTITLE, false); parameters.setParameter(ICollectionRendererParameterNameConst.GRIDORDERSTYLE, "columnmajor"); parameters.setParameter(ICollectionRendererParameterNameConst.ROWS, this.isManualOrdered); parameters.setParameter(ICollectionRendererParameterNameConst.ROWSPACING, 0); parameters.setParameter(ICollectionRendererParameterNameConst.SORT_ENABLED, true); parameters.setParameter(ICollectionRendererParameterNameConst.COLUMNSPACING, 0); parameters.setParameter(ICollectionRendererParameterNameConst.ITEMSELECTIONMODE, "off"); parameters.setParameter(ICollectionRendererParameterNameConst.ROWBACKGROUNDSTYLE, "TRANSPARENT"); parameters.setParameter(ICollectionRendererParameterNameConst.COLLECTION_ACTIONSTYLE, "hover"); parameters.setParameter(ICollectionRendererParameterNameConst.PROPERTYCOLUMNS, "rnd:icon(noTitle/noColumnSpacing),rnd:displayname(contentLink)"); parameters.setParameter(ICollectionRendererParameterNameConst.RESOURCE_LIST_FILTER, "default"); parameters.setParameter(ICollectionRendererParameterNameConst.SHOW_HIDDEN, false); parameters.setParameter(ICollectionRendererParameterNameConst.RESIZEHEIGHTSTYLE, "compact"); parameters.setParameter(ICollectionRendererParameterNameConst.RESIZEWIDHTSTYLE, "compact"); parameters.setParameter(ICollectionRendererParameterNameConst.PAGER_LINK_COUNT, PAGER_LINKS_DEFAULT); parameters.setParameter(ICollectionRendererParameterNameConst.EMPTY_COLLECTION_STYLE, "off"); } public int renderListHeader(FormLayout grid, int row) throws WcmException { if (super.isExactlyValue(ICollectionRendererParameterNameConst.PROPERTY_COLUMN_HEADER_STYLE, "off")) { return row; } IPropertyPosition position = null; IPropertyColumn[] iterColumns = getColumnsList(); boolean existsResource = super.getResourceList().size() != 0; String propertyHeaderColumnStyle = super.getParameters().getParameter(ICollectionRendererParameterNameConst.PROPERTY_COLUMN_HEADER_STYLE, "Table Title Color"); String headerClassStyle = HtmlRendererUtil.getHeaderClassStyle(propertyHeaderColumnStyle); if (headerClassStyle == null) { headerClassStyle = ""; } FormLayoutCell cell = null; if (existsResource) { cell = grid.addComponent(row, 1, new HTMLFragment("")); cell.setStyle(headerClassStyle); } int rowSpan = 0; int columnSpan = 0; int line = 1; int lineNew = 0; int column = 1; if (!(super.getParameters().getParameter(ICollectionRendererParameterNameConst.ITEMSELECTIONMODE, "multiple").equals("off"))) { ++column; } int startRow = row; boolean rowHasTitle = false; this.propertiesPositions = new IPropertyPosition[iterColumns.length]; PropertyHeaderRenderer sortHeader = new PropertyHeaderRenderer(super.getProxy(), this, super.getBundleHandler(), getChildCountMetaName(super.getParentCollection()), this.isManualOrdered, super.getIRS().getSortDefintion(), super.getResourceContext().getLocale()); IMetaName metaName = null; for (int i = 0;(i < iterColumns.length) && (existsResource); ++i) if (iterColumns<i> != null) { rowSpan = 0; columnSpan = 0; position = PropertyColumnFactory.getInstance().getPosition(iterColumns<i>); if (position != null) { lineNew = position.getRow(); if (line != lineNew) { column = position.getColumn(); if (!(super.getParameters().getParameter(ICollectionRendererParameterNameConst.ITEMSELECTIONMODE, "multiple").equals("off"))) ++column; line = lineNew; if (rowHasTitle) { row = row + 1; rowHasTitle = false; } } rowSpan = position.getSpanRow(); columnSpan = position.getSpanColumn(); } this.propertiesPositions<i> = PropertyColumnFactory.getInstance().getPropertyPosition(row, rowSpan, column, columnSpan); boolean is508Required = false; try { is508Required = super.getProxy().getDynamicPage().getPageContext().requiresSection508Rendering(); } catch (Exception ex) { log.errorT("Could not retrieve 508 mode for proxy <" + super.getProxy() + ">: " + LoggingFormatter.extractCallstack(ex)); } metaName = PropertyHeaderRenderer.getMetaNameForTitle(iterColumns<i>, is508Required); if (metaName != null) rowHasTitle = true; if (!(super.getParameters().getParameter(ICollectionRendererParameterNameConst.SORT_ENABLED, true))) { sortHeader.setSortEnabledParameter(false); } if (metaName != null) { if (columnSpan != 0) { cell = grid.addComponent(row, 1, sortHeader.createSortLink(metaName)); cell.setColspan(columnSpan); } else { cell = grid.addComponent(row, column, sortHeader.createSortLink(metaName)); } String[] padding = HtmlRendererUtil.getPropertyPaddingValues(iterColumns<i>, metaName); cell.setHorizontalAlignment(PropertyColumnFactory.getInstance().getHAlign(iterColumns<i>)); cell.setVerticalAlignment(PropertyColumnFactory.getInstance().getVAlign(iterColumns<i>)); if (padding != null) { cell.setPaddingTop(padding[0]); cell.setPaddingRight(padding[1]); cell.setPaddingBottom(padding[2]); cell.setPaddingLeft(padding[3]); } } ++column; if (columnSpan != 0) column = column + columnSpan; if ((!(iterColumns<i>.contains("noColumnSpacing"))) && (column < this.noOfColumns)) { cell = grid.addComponent(row, column, EmptyComponent.render()); if (!("0".equals(super.getColumnSpacing()))) cell.setWidth(super.getColumnSpacing()); cell.setVerticalAlignment(VERTICAL_ALIGN); ++column; } } if (!(rowHasTitle)); setClassStyleForm(headerClassStyle, grid, startRow, --row, this.noOfColumns); return (++row); } public int renderListFooter(FormLayout grid, int row) throws WcmException { FormLayoutCell cell; boolean existsResource = super.getResourceList().size() != 0; if (!(super.isExactlyValue(ICollectionRendererParameterNameConst.PROPERTY_COLUMN_HEADER_STYLE, "off"))) { String propertyHeaderColumnStyle = super.getParameters().getParameter(ICollectionRendererParameterNameConst.PROPERTY_COLUMN_HEADER_STYLE, "Table Title Color"); String headerClassStyle = HtmlRendererUtil.getHeaderClassStyle(propertyHeaderColumnStyle); if (headerClassStyle == null) { headerClassStyle = ""; } cell = null; } return row; } public ILayoutObject getNewInstance() { return super.initNewInstance(new CollectionListRenderer()); } private String getChildCountMetaName(IResource res) throws WcmException { if (res == null) { return null; } IResourceRenderer resourceRenderer = super.getRenderer(res); String par = resourceRenderer.getParameters().getParameter(IResourceRendererParameterNameConst.SHOWCHILDCOUNTSTYLE); if (par == null) { return null; } String resultMetaNameID = null; if (par.equals("folders/files")) resultMetaNameID = "rnd:childcount_both"; else if (par.equals("sum")) resultMetaNameID = "rnd:childcount_sum"; else if (par.equals("only files")) resultMetaNameID = "rnd:childcount_files"; else if (par.equals("only folders")) resultMetaNameID = "rnd:childcount_folders"; if (resultMetaNameID != null) { IMetaName metaName = getPropertyConfigurationService().getMetaModel().searchById(resultMetaNameID); if (metaName != null) return getEncodedSortProperty(metaName); } return null; } private String getEncodedSortProperty(IMetaName metaName) { if (metaName.getComposedOfMetaNames() != null) { IMetaNameList metaList = metaName.getComposedOfMetaNames(); if (metaList.contains(metaName)) return metaName.getId(); if (metaList.size() == 1) { IMetaName composedMetaName = metaList.get(0); return composedMetaName.getId(); } return metaName.getId(); } return metaName.getId(); } public static Vector getIMetaNameTypeText(IPropertyColumn propertyColumn, int col) { Hashtable metaNameHash = null; Vector metaNameVector = null; IMetaName currentMetaName = null; IPropertyWithModifiersList propertyWithModifiers = propertyColumn.getPropertyWithModifier(); for (int i = 0; i < propertyWithModifiers.size(); ++i) { currentMetaName = propertyWithModifiers.get(i).getMetaName(); if ((currentMetaName != null) && ("Text".equals(currentMetaName.getType())) && (propertyWithModifiers.size() != 1)) { metaNameHash = new Hashtable(); metaNameHash.put("metaName", currentMetaName); metaNameHash.put("col", Integer.toString(col)); if (propertyWithModifiers.get(i).getConfigModifierList() != null) metaNameHash.put("metaNameModifiers", propertyWithModifiers.get(i)); if (metaNameVector == null) metaNameVector = new Vector(); metaNameVector.add(metaNameHash); } } return metaNameVector; } private static boolean[] isNextLineColumnNeeded(IPropertyColumn[] propertyColumns) { boolean[] result = new boolean[propertyColumns.length]; IMetaName currentMetaName = null; for (int j = 0; j < propertyColumns.length; ++j) { IPropertyColumn propertyColumn = propertyColumns[j]; result[j] = false; IPropertyWithModifiersList propertyWithModifiers = propertyColumn.getPropertyWithModifier(); for (int i = 0; i < propertyWithModifiers.size(); ++i) { currentMetaName = propertyWithModifiers.get(i).getMetaName(); if ((currentMetaName != null) && ("Text".equals(currentMetaName.getType())) && (propertyWithModifiers.size() != 1)) { if (log.beDebug()) log.debugT("Found meta name <" + currentMetaName + "> in property column <" + propertyColumn + "> that defines we need a new line column"); result[j] = true; } } } return result; } private IPropertyConfigurationService getPropertyConfigurationService() throws WcmException { return ((IPropertyConfigurationService) ResourceFactory.getInstance().getServiceFactory().getService("PropertyConfigurationService")); } public final void setColumnsList(IPropertyColumn[] list) throws WcmException { super.getIRS().setPropertyColumns(list); } public IPropertyColumn[] getColumnsList() throws WcmException { return super.getIRS().getPropertyColumns(); } private IPropertyColumn[] createCollectionColumns() { String columnsString = super.getParameters().getParameter(ICollectionRendererParameterNameConst.PROPERTYCOLUMNS, "rnd:icon(noTitle/noColumnSpacing),rnd:displayname(contentLink)"); return PropertyColumnFactory.getInstance().parseProperty(columnsString); } // ERROR //public Component renderUI() throws WcmException { // Byte code: // 0: getstatic 192 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:s_profiler Lcom/sapportals/wcm/util/profiler/IProfiler; // 3: ldc 193 // 5: getstatic 194 com/sapportals/wcm/util/profiler/IProfiler$Level:MEDIUM Lcom/sapportals/wcm/util/profiler/IProfiler$Level; // 8: invokeinterface 195 3 0 // 13: aload_0 // 14: invokevirtual 86 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:getProxy ()Lcom/sapportals/wcm/rendering/base/IProxy; // 17: invokeinterface 196 1 0 // 22: ifeq +7 -> 29 // 25: aload_0 // 26: invokevirtual 197 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:writeDebugInformation ()V // 29: aload_0 // 30: aload_0 // 31: invokespecial 198 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:createCollectionColumns ()[Lcom/sapportals/wcm/control/util/property/IPropertyColumn; // 34: invokevirtual 199 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:setColumnsList ([Lcom/sapportals/wcm/control/util/property/IPropertyColumn;)V // 37: new 200 com/sapportals/htmlb/FormLayout // 40: dup // 41: invokespecial 201 com/sapportals/htmlb/FormLayout:<init> ()V // 44: astore_1 // 45: aload_1 // 46: ldc 133 // 48: ldc 133 // 50: ldc 133 // 52: ldc 133 // 54: invokevirtual 202 com/sapportals/htmlb/FormLayout:setMargin (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V // 57: aload_1 // 58: ldc 76 // 60: invokevirtual 203 com/sapportals/htmlb/FormLayout:setWidth (Ljava/lang/String;)V // 63: aconst_null // 64: astore_2 // 65: aload_1 // 66: aload_0 // 67: getfield 9 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:debug Z // 70: invokevirtual 204 com/sapportals/htmlb/FormLayout:setDebugMode (Z)V // 73: iconst_1 // 74: istore_3 // 75: aload_0 // 76: invokevirtual 205 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:isVisible ()Z // 79: ifne +12 -> 91 // 82: aload_1 // 83: astore 4 // 85: jsr +733 -> 818 // 88: aload 4 // 90: areturn // 91: aload_0 // 92: getstatic 16 com/sapportals/wcm/repository/service/layout/customizing/ICollectionRendererParameterNameConst:SHOWFOLDERTITLE Lcom/sapportals/wcm/repository/service/layout/customizing/IParameterName; // 95: iconst_0 // 96: invokevirtual 206 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:getParameter (Lcom/sapportals/wcm/repository/service/layout/customizing/IParameterName;Z)Z // 99: ifeq +35 -> 134 // 102: aload_1 // 103: iload_3 // 104: iconst_1 // 105: aload_0 // 106: invokevirtual 207 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:renderFolderTitle ()Lcom/sapportals/htmlb/Component; // 109: invokevirtual 79 com/sapportals/htmlb/FormLayout:addComponent (IILcom/sapportals/htmlb/Component;)Lcom/sapportals/htmlb/FormLayoutCell; // 112: astore_2 // 113: aload_2 // 114: bipush 10 // 116: invokevirtual 120 com/sapportals/htmlb/FormLayoutCell:setColspan (I)V // 119: aload_2 // 120: ldc 208 // 122: invokevirtual 126 com/sapportals/htmlb/FormLayoutCell:setPaddingTop (Ljava/lang/String;)V // 125: aload_2 // 126: ldc 209 // 128: invokevirtual 128 com/sapportals/htmlb/FormLayoutCell:setPaddingBottom (Ljava/lang/String;)V // 131: iinc 3 1 // 134: aload_0 // 135: invokevirtual 71 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:getResourceList ()Lcom/sapportals/wcm/repository/IResourceList; // 138: astore 4 // 140: aload_0 // 141: invokevirtual 53 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:getParameters ()Lcom/sapportals/wcm/repository/service/layout/customizing/IParameters; // 144: getstatic 51 com/sapportals/wcm/repository/service/layout/customizing/ICollectionRendererParameterNameConst:EMPTY_COLLECTION_STYLE Lcom/sapportals/wcm/repository/service/layout/customizing/IParameterName; // 147: ldc 58 // 149: invokeinterface 210 3 0 // 154: ifne +56 -> 210 // 157: aload 4 // 159: ifnull +51 -> 210 // 162: aload 4 // 164: invokeinterface 72 1 0 // 169: ifne +41 -> 210 // 172: aload_1 // 173: iload_3 // 174: iconst_1 // 175: new 211 com/sapportals/wcm/rendering/readymades/EmptyCollectionInfo // 178: dup // 179: aload_0 // 180: invokevirtual 86 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:getProxy ()Lcom/sapportals/wcm/rendering/base/IProxy; // 183: aload_0 // 184: invokevirtual 53 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:getParameters ()Lcom/sapportals/wcm/repository/service/layout/customizing/IParameters; // 187: invokespecial 212 com/sapportals/wcm/rendering/readymades/EmptyCollectionInfo:<init> (Lcom/sapportals/wcm/rendering/base/IProxy;Lcom/sapportals/wcm/repository/service/layout/customizing/IParameters;)V // 190: invokevirtual 79 com/sapportals/htmlb/FormLayout:addComponent (IILcom/sapportals/htmlb/Component;)Lcom/sapportals/htmlb/FormLayoutCell; // 193: astore_2 // 194: aload_2 // 195: bipush 10 // 197: invokevirtual 120 com/sapportals/htmlb/FormLayoutCell:setColspan (I)V // 200: aload_2 // 201: getstatic 213 com/sapportals/htmlb/enum/CellHAlign:LEFT Lcom/sapportals/htmlb/enum/CellHAlign; // 204: invokevirtual 123 com/sapportals/htmlb/FormLayoutCell:setHorizontalAlignment (Lcom/sapportals/htmlb/enum/CellHAlign;)V // 207: iinc 3 1 // 210: aload_0 // 211: aload_0 // 212: invokevirtual 70 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:getColumnsList ()[Lcom/sapportals/wcm/control/util/property/IPropertyColumn; // 215: aload_0 // 216: getfield 7 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:isManualOrdered Z // 219: invokestatic 214 com/sapportals/wcm/control/util/property/PropertyColumnFactory:getNoOfColumn ([Lcom/sapportals/wcm/control/util/property/IPropertyColumn;I)I // 222: putfield 8 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:noOfColumns I // 225: iconst_1 // 226: istore 5 // 228: aload_0 // 229: invokevirtual 53 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:getParameters ()Lcom/sapportals/wcm/repository/service/layout/customizing/IParameters; // 232: getstatic 30 com/sapportals/wcm/repository/service/layout/customizing/ICollectionRendererParameterNameConst:ITEMSELECTIONMODE Lcom/sapportals/wcm/repository/service/layout/customizing/IParameterName; // 235: ldc 81 // 237: invokeinterface 74 3 0 // 242: ldc 58 // 244: invokevirtual 82 java/lang/String:equals (Ljava/lang/Object;)Z // 247: ifne +16 -> 263 // 250: iinc 5 1 // 253: aload_0 // 254: dup // 255: getfield 8 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:noOfColumns I // 258: iconst_1 // 259: iadd // 260: putfield 8 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:noOfColumns I // 263: aload_0 // 264: invokevirtual 88 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:getParentCollection ()Lcom/sapportals/wcm/repository/ICollection; // 267: ifnull +25 -> 292 // 270: new 215 com/sapportals/wcm/control/util/FolderSettings // 273: dup // 274: aload_0 // 275: invokevirtual 88 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:getParentCollection ()Lcom/sapportals/wcm/repository/ICollection; // 278: invokespecial 216 com/sapportals/wcm/control/util/FolderSettings:<init> (Lcom/sapportals/wcm/repository/ICollection;)V // 281: astore 6 // 283: aload_0 // 284: aload 6 // 286: invokevirtual 217 com/sapportals/wcm/control/util/FolderSettings:getOrderedFlag ()Z // 289: putfield 10 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:isManualOrdered Z // 292: aload_0 // 293: aload_1 // 294: iload_3 // 295: invokevirtual 218 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:renderListHeader (Lcom/sapportals/htmlb/FormLayout;I)I // 298: istore_3 // 299: aload_0 // 300: invokevirtual 53 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:getParameters ()Lcom/sapportals/wcm/repository/service/layout/customizing/IParameters; // 303: getstatic 43 com/sapportals/wcm/repository/service/layout/customizing/ICollectionRendererParameterNameConst:RESIZEWIDHTSTYLE Lcom/sapportals/wcm/repository/service/layout/customizing/IParameterName; // 306: ldc 67 // 308: invokeinterface 74 3 0 // 313: ldc 219 // 315: invokevirtual 82 java/lang/String:equals (Ljava/lang/Object;)Z // 318: istore 6 // 320: aload_0 // 321: invokevirtual 53 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:getParameters ()Lcom/sapportals/wcm/repository/service/layout/customizing/IParameters; // 324: getstatic 42 com/sapportals/wcm/repository/service/layout/customizing/ICollectionRendererParameterNameConst:RESIZEHEIGHTSTYLE Lcom/sapportals/wcm/repository/service/layout/customizing/IParameterName; // 327: ldc 67 // 329: invokeinterface 74 3 0 // 334: ldc 219 // 336: invokevirtual 82 java/lang/String:equals (Ljava/lang/Object;)Z // 339: istore 7 // 341: aload_0 // 342: invokevirtual 220 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:getStartRow ()I // 345: aload_0 // 346: invokevirtual 53 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:getParameters ()Lcom/sapportals/wcm/repository/service/layout/customizing/IParameters; // 349: getstatic 24 com/sapportals/wcm/repository/service/layout/customizing/ICollectionRendererParameterNameConst:ROWS Lcom/sapportals/wcm/repository/service/layout/customizing/IParameterName; // 352: aload_0 // 353: getfield 7 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:isManualOrdered Z // 356: invokeinterface 221 3 0 // 361: iadd // 362: istore 8 // 364: iload 8 // 366: aload 4 // 368: invokeinterface 72 1 0 // 373: if_icmple +12 -> 385 // 376: aload 4 // 378: invokeinterface 72 1 0 // 383: istore 8 // 385: iconst_0 // 386: istore 9 // 388: iload 7 // 390: ifeq +15 -> 405 // 393: iload 8 // 395: ifeq +10 -> 405 // 398: bipush 100 // 400: iload 8 // 402: idiv // 403: istore 9 // 405: aload 4 // 407: aload_0 // 408: invokevirtual 220 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:getStartRow ()I // 411: iload 8 // 413: invokeinterface 222 3 0 // 418: astore 10 // 420: aload 10 // 422: invokeinterface 223 1 0 // 427: astore 11 // 429: aconst_null // 430: astore 12 // 432: iconst_1 // 433: istore 13 // 435: ldc 76 // 437: astore 14 // 439: aload_0 // 440: getstatic 31 com/sapportals/wcm/repository/service/layout/customizing/ICollectionRendererParameterNameConst:ROWBACKGROUNDSTYLE Lcom/sapportals/wcm/repository/service/layout/customizing/IParameterName; // 443: ldc 224 // 445: invokevirtual 69 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:isExactlyValue (Lcom/sapportals/wcm/repository/service/layout/customizing/IParameterName;Ljava/lang/Object;)Z // 448: istore 15 // 450: aload_0 // 451: getstatic 31 com/sapportals/wcm/repository/service/layout/customizing/ICollectionRendererParameterNameConst:ROWBACKGROUNDSTYLE Lcom/sapportals/wcm/repository/service/layout/customizing/IParameterName; // 454: ldc 225 // 456: invokevirtual 69 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:isExactlyValue (Lcom/sapportals/wcm/repository/service/layout/customizing/IParameterName;Ljava/lang/Object;)Z // 459: istore 16 // 461: iload 15 // 463: ifne +8 -> 471 // 466: iload 16 // 468: ifeq +16 -> 484 // 471: aload_1 // 472: iload_3 // 473: iconst_1 // 474: invokestatic 226 com/sapportals/wcm/rendering/util/HtmlRendererUtil:importStyles ()Lcom/sapportals/htmlb/HTMLFragment; // 477: invokevirtual 79 com/sapportals/htmlb/FormLayout:addComponent (IILcom/sapportals/htmlb/Component;)Lcom/sapportals/htmlb/FormLayoutCell; // 480: pop // 481: iinc 3 1 // 484: aload_0 // 485: invokevirtual 70 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:getColumnsList ()[Lcom/sapportals/wcm/control/util/property/IPropertyColumn; // 488: ifnull +285 -> 773 // 491: invokestatic 95 com/sapportals/wcm/control/util/property/PropertyColumnFactory:getInstance ()Lcom/sapportals/wcm/control/util/property/PropertyColumnFactory; // 494: aload_0 // 495: invokevirtual 70 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:getColumnsList ()[Lcom/sapportals/wcm/control/util/property/IPropertyColumn; // 498: invokevirtual 227 com/sapportals/wcm/control/util/property/PropertyColumnFactory:getPropertyNameList ([Lcom/sapportals/wcm/control/util/property/IPropertyColumn;)Lcom/sapportals/wcm/repository/IPropertyNameList; // 501: astore 17 // 503: iconst_0 // 504: istore 18 // 506: goto +29 -> 535 // 509: getstatic 228 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:DEFAULT_PROP_NAMES [Lcom/sapportals/wcm/repository/IPropertyName; // 512: iload 18 // 514: aaload // 515: ifnull +17 -> 532 // 518: aload 17 // 520: getstatic 228 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:DEFAULT_PROP_NAMES [Lcom/sapportals/wcm/repository/IPropertyName; // 523: iload 18 // 525: aaload // 526: invokeinterface 229 2 0 // 531: pop // 532: iinc 18 1 // 535: iload 18 // 537: getstatic 228 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:DEFAULT_PROP_NAMES [Lcom/sapportals/wcm/repository/IPropertyName; // 540: arraylength // 541: if_icmplt -32 -> 509 // 544: getstatic 192 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:s_profiler Lcom/sapportals/wcm/util/profiler/IProfiler; // 547: ldc 230 // 549: getstatic 194 com/sapportals/wcm/util/profiler/IProfiler$Level:MEDIUM Lcom/sapportals/wcm/util/profiler/IProfiler$Level; // 552: invokeinterface 195 3 0 // 557: aload_0 // 558: invokevirtual 86 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:getProxy ()Lcom/sapportals/wcm/rendering/base/IProxy; // 561: invokeinterface 231 1 0 // 566: aload 10 // 568: aload 17 // 570: invokevirtual 232 com/sapportals/wcm/rendering/base/ResourcePropertyAmalgamation:readProperties (Lcom/sapportals/wcm/repository/IResourceList;Lcom/sapportals/wcm/repository/IPropertyNameList;)V // 573: jsr +14 -> 587 // 576: goto +26 -> 602 // 579: astore 19 // 581: jsr +6 -> 587 // 584: aload 19 // 586: athrow // 587: astore 20 // 589: getstatic 192 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:s_profiler Lcom/sapportals/wcm/util/profiler/IProfiler; // 592: ldc 230 // 594: invokeinterface 233 2 0 // 599: pop2 // 600: ret 20 // 602: aload_0 // 603: invokevirtual 70 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:getColumnsList ()[Lcom/sapportals/wcm/control/util/property/IPropertyColumn; // 606: invokestatic 234 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:getPositionArray ([Lcom/sapportals/wcm/control/util/property/IPropertyColumn;)[Lcom/sapportals/wcm/control/util/property/IPropertyPosition; // 609: astore 19 // 611: aload_0 // 612: invokevirtual 70 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:getColumnsList ()[Lcom/sapportals/wcm/control/util/property/IPropertyColumn; // 615: invokestatic 235 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:isNextLineColumnNeeded ([Lcom/sapportals/wcm/control/util/property/IPropertyColumn;)[Z // 618: astore 20 // 620: aload_0 // 621: invokevirtual 53 com/sapportals/wcm/rendering/collection/LightCollectionRenderer:getParameters ()Lcom/sapportals/wcm/repository/service/layout/customizing/IParameters; // 624: getstatic 30 com/sapportals/wcm/repository/service/layout/customizing/ICollectionRendererParameterNameConst:ITEMSELECTIONMODE Lcom/sapportals/wcm/repository/service/layout/customizing/IParameterName; // 627: ldc 81 // 629: invokeinterface 74 3 0 // 634: ldc 58 // 636: invokevirtual 82 java/lang/String:equals (Ljava/lang/Object;)Z // 639: ifne +7 -> 646 // 642: iconst_1 // 643: goto +4 -> 647 // 646: iconst_0 // 647: istore 21 // 649: aload_0 // 650: invokevirtual 70 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:getColumnsList ()[Lcom/sapportals/wcm/control/util/property/IPropertyColumn; // 653: iload 21 // 655: invokestatic 236 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:getPaddingList ([Lcom/sapportals/wcm/control/util/property/IPropertyColumn;Z)Ljava/util/List; // 658: astore 22 // 660: goto +103 -> 763 // 663: aload 11 // 665: invokeinterface 237 1 0 // 670: astore 12 // 672: iload 15 // 674: ifeq +16 -> 690 // 677: ldc 238 // 679: astore 14 // 681: iload 13 // 683: ifne +7 -> 690 // 686: ldc 239 // 688: astore 14 // 690: aload_0 // 691: aload_1 // 692: iload_3 // 693: iconst_1 // 694: aload 12 // 696: aload 14 // 698: iload 9 // 700: aload 17 // 702: aload 19 // 704: aload 20 // 706: aload 22 // 708: invokespecial 240 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:renderFormRow (Lcom/sapportals/htmlb/FormLayout;IILcom/sapportals/wcm/repository/IResource;Ljava/lang/String;ILcom/sapportals/wcm/repository/IPropertyNameList;[Lcom/sapportals/wcm/control/util/property/IPropertyPosition;[ZLjava/util/List;)I // 711: istore_3 // 712: iload 16 // 714: ifeq +37 -> 751 // 717: aload 11 // 719: invokeinterface 241 1 0 // 724: ifeq +27 -> 751 // 727: aload_1 // 728: iload_3 // 729: iconst_1 // 730: ldc 238 // 732: iconst_1 // 733: invokestatic 242 com/sapportals/wcm/rendering/util/HtmlRendererUtil:renderLineSeparator (Ljava/lang/String;I)Lcom/sapportals/htmlb/Component; // 736: invokevirtual 79 com/sapportals/htmlb/FormLayout:addComponent (IILcom/sapportals/htmlb/Component;)Lcom/sapportals/htmlb/FormLayoutCell; // 739: astore_2 // 740: aload_2 // 741: aload_0 // 742: getfield 8 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:noOfColumns I // 745: invokevirtual 120 com/sapportals/htmlb/FormLayoutCell:setColspan (I)V // 748: iinc 3 1 // 751: iload 13 // 753: ifne +7 -> 760 // 756: iconst_1 // 757: goto +4 -> 761 // 760: iconst_0 // 761: istore 13 // 763: aload 11 // 765: invokeinterface 241 1 0 // 770: ifne -107 -> 663 // 773: aload_0 // 774: aload_1 // 775: iload_3 // 776: invokevirtual 243 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:renderListFooter (Lcom/sapportals/htmlb/FormLayout;I)I // 779: istore_3 // 780: iload 6 // 782: ifeq +9 -> 791 // 785: aload_1 // 786: ldc 244 // 788: invokevirtual 203 com/sapportals/htmlb/FormLayout:setWidth (Ljava/lang/String;)V // 791: aload_1 // 792: astore 17 // 794: jsr +24 -> 818 // 797: aload 17 // 799: areturn // 800: astore_1 // 801: new 245 WcmException // 804: dup // 805: aload_1 // 806: invokespecial 246 WcmException:<init> (Ljava/lang/Throwable;)V // 809: athrow // 810: astore 23 // 812: jsr +6 -> 818 // 815: aload 23 // 817: athrow // 818: astore 24 // 820: getstatic 192 com/sapportals/wcm/rendering/collection/cm/ST_CollectionListRenderer:s_profiler Lcom/sapportals/wcm/util/profiler/IProfiler; // 823: ldc 193 // 825: invokeinterface 233 2 0 // 830: pop2 // 831: ret 24 // // Exception table: // from to target type // 557 579 579 finally // 13 800 800 java/lang/Exception // 13 810 810 finally } private static List getPaddingList(IPropertyColumn[] columnsList, boolean selectionActive) { List result = new ArrayList(); for (int i = 0; i < columnsList.length; ++i) { String[] padding = null; try { padding = PropertyColumnRenderer.getPropertyColumnArrayPadding(columnsList<i>, selectionActive); } catch (WdfException e) { log.errorT("Could not parse padding for column <" + columnsList<i> + "> " + LoggingFormatter.beautify(e)); String[] paddingHulp = { "0", "0", "0", "0" }; padding = paddingHulp; } result.add(padding); } return result; } private static IPropertyPosition[] getPositionArray(IPropertyColumn[] columns) { IPropertyPosition[] result = new IPropertyPosition[columns.length]; for (int i = 0; i < columns.length; ++i) result<i> = PropertyColumnFactory.getInstance().getPosition(columns<i>); if (log.beDebug()) log.debugT("Calculated property position array <" + result + "> for property column array <" + columns + ">"); return result; } private int renderFormRow(FormLayout grid, int row, int column, IResource res, String classStyle, int rowHeightPercent, IPropertyNameList propertynamelist, IPropertyPosition[] positions, boolean[] nextColumns, List paddings) throws WcmException { s_profiler.start("/KM/FLEXUI/RENDER/UI/ROW ", IProfiler.Level.MEDIUM); try { boolean emptyRow = true; try { Vector nextLine = new Vector(); Vector nextLineColumn = new Vector(); Hashtable nextLineElement = new Hashtable(); FormLayoutCell cell = null; int nextLineCol = 0; int line = 1; int startRow = row; boolean selectionActive = false; IPropertyPosition position = null; IResourceRenderer renderer = super.getRenderer(res); renderer.setPropertyNameList(propertynamelist); String[] padding = null; Component comp = new HTMLFragment(" "); if (!(super.getParameters().getParameter(ICollectionRendererParameterNameConst.ITEMSELECTIONMODE, "multiple").equals("off"))) { comp = super.renderItemSelectionMode(res); cell = grid.addComponent(row, column, comp); cell.setVerticalAlignment(VERTICAL_ALIGN); cell.setPaddingRight("2"); cell.setPaddingLeft("3"); selectionActive = true; ++column; } int columnSpan = 0; int rowSpan = 0; IMetaName metaName = null; for (int i = 0; i < getColumnsList().length; ++i) { try { columnSpan = 0; position = positions<i>; if (position != null) { int lineNew = position.getRow(); if (line != lineNew) { column = position.getColumn(); if (!(super.getParameters().getParameter(ICollectionRendererParameterNameConst.ITEMSELECTIONMODE, "multiple").equals("off"))) ++column; line = lineNew; if (!(emptyRow)) ++row; emptyRow = true; } columnSpan = position.getSpanColumn(); rowSpan = position.getSpanRow(); } comp = PropertyColumnRenderer.renderPropertyColumn(renderer, res, getColumnsList()<i>, false, super.getProxy()); emptyRow = (emptyRow) && (((comp == null) || (comp instanceof EmptyComponent))); if (comp != null) { if (columnSpan != 0) { cell = grid.addComponent(row, column, comp); cell.setColspan(columnSpan); } else cell = grid.addComponent(row, column, comp); if (rowSpan != 0) { cell.setRowspan(rowSpan); } cell.setVerticalAlignment(PropertyColumnFactory.getInstance().getVAlign(getColumnsList()<i>)); cell.setHorizontalAlignment(PropertyColumnFactory.getInstance().getHAlign(getColumnsList()<i>)); padding = (String[]) paddings.get(i); if (padding != null) { cell.setPaddingTop(padding[0]); cell.setPaddingRight(padding[1]); cell.setPaddingBottom(padding[2]); cell.setPaddingLeft(padding[3]); } selectionActive = false; } if (nextColumns<i> != false) { nextLineColumn = getIMetaNameTypeText(getColumnsList()<i>, column); nextLine.addAll(nextLineColumn); } ++column; } catch (WcmException wcmEx) { log.debugT("Could not rendere row for resource <" + res + "> & columns <" + getColumnsList()<i> + ">" + LoggingFormatter.extractCallstack(wcmEx)); if (columnSpan != 0) { cell = grid.addComponent(row, column, EmptyComponent.render()); cell.setColspan(columnSpan); } else cell = grid.addComponent(row, column, EmptyComponent.render()); ++column; } if (columnSpan != 0) { column = column + columnSpan; } if ((!(getColumnsList()<i>.contains("noColumnSpacing"))) && (column < this.noOfColumns)) { cell = grid.addComponent(row, column, EmptyComponent.render()); if (!("0".equals(super.getColumnSpacing()))) { cell.setWidth(super.getColumnSpacing()); } ++column; } } boolean emptyComponent = true; for (int k = 0; k < nextLine.size(); ++k) { nextLineElement = (Hashtable) nextLine.elementAt(k); if (nextLineElement != null) { IPropertyWithModifiers currProp = (IPropertyWithModifiers) nextLineElement.get("metaNameModifiers"); nextLineCol = Integer.parseInt((String) nextLineElement.get("col")); metaName = (IMetaName) nextLineElement.get("metaName"); renderer.getParameters().setParameter(IResourceRendererParameterNameConst.PROPERTY_MODIFIERS, PropertyColumnFactory.getInstance().getModifierString(currProp.getModifierList())); comp = PropertyColumnRenderer.renderMetaProperty(renderer, metaName, false, true); emptyComponent = false; if ((comp != null) && (comp instanceof EmptyComponent)) emptyComponent = true; if (!(emptyComponent)) { if (!(emptyRow)); cell = grid.addComponent(++row, nextLineCol, comp); cell.setColspan(column); emptyRow = false; } } } int rowSpace = 0; try { rowSpace = Integer.parseInt(super.getRowSpacing()); } catch (NumberFormatException nfEx) { log.debugT("Could not get an Integer from <" + super.getRowSpacing() + ">; " + LoggingFormatter.extractCallstack(nfEx)); rowSpace = 0; } int endRow = row; if (emptyRow) endRow = row - 1; if (rowSpace != 0) { String paddingStyle = String.valueOf(rowSpace); if (startRow != endRow) { setHeightPercentageForm(rowHeightPercent, paddingStyle, 1, grid, startRow, this.noOfColumns); setHeightPercentageForm(rowHeightPercent, paddingStyle, 1, grid, endRow, this.noOfColumns); } else { setHeightPercentageForm(rowHeightPercent, paddingStyle, 0, grid, endRow, this.noOfColumns); } } if (!("".equals(classStyle))) { setClassStyleForm(classStyle, grid, startRow, row, this.noOfColumns); } } catch (Exception e) { throw new WcmException(e); } if (!(emptyRow)) ++row; } finally { s_profiler.stop("/KM/FLEXUI/RENDER/UI/ROW "); } return row; } private void setHeightPercentageForm(int rowHeightPercent, String padding, int paddingStyle, FormLayout grid, int row, int col) { FormLayoutCell cell = null; FormLayoutRow rows = grid.getRow(row); for (int j = 1; j <= col; ++j) { cell = rows.getCell(j); if (cell != null) { if (rowHeightPercent != 0) cell.setWidth(""";height="" + String.valueOf(rowHeightPercent) + "%""); if (paddingStyle == 1) cell.setPaddingTop(padding); else if (paddingStyle == -1) cell.setPaddingBottom(padding); else { cell.setPaddingTop(padding); cell.setPaddingBottom(padding); } } } } private void setClassStyleForm(String classStyle, FormLayout grid, int startRow, int endRow, int col) { FormLayoutCell cell = null; FormLayoutRow currentRow = null; int rowSpan = 0; int noCol = col; boolean hasRowSpan = false; for (int i = startRow; i <= endRow; ++i) { currentRow = grid.getRow(i); if (currentRow != null) { if (hasRowSpan) { noCol = col - 1; hasRowSpan = --rowSpan > 0; } else noCol = col; for (int j = 1; j <= noCol; ++j) { cell = currentRow.getCell(j); if ((cell != null) && (cell.getRowspan() > 1)) { hasRowSpan = true; rowSpan = cell.getRowspan() - 1; } if (cell != null) cell.setStyle(classStyle); else { cell = grid.addComponent(i, j, EmptyComponent.render()); cell.setStyle(classStyle); } } } } } public HeaderItem[][] genetateMatrixHeader() throws WcmException { if (super.isExactlyValue(ICollectionRendererParameterNameConst.PROPERTY_COLUMN_HEADER_STYLE, "off")) { return null; } IPropertyPosition position = null; IPropertyColumn[] iterColumns = getColumnsList(); boolean existsResource = super.getResourceList().size() != 0; if (!(existsResource)) { return null; } HeaderItem[][] headerMatrix = new HeaderItem[10][20]; int currentRow = 0; int currentColumn = 0; int currentRowSpan = 0; int currentColumnSpan = 0; int nextCol = 0; int maxRow = 0; int maxCol = 0; boolean is508Required = false; try { is508Required = super.getProxy().getDynamicPage().getPageContext().requiresSection508Rendering(); } catch (Exception ex) { log.errorT("Could not retrieve 508 mode for proxy <" + super.getProxy() + ">: " + LoggingFormatter.extractCallstack(ex)); } IMetaName metaName = null; for (int i = 0;(i < iterColumns.length) && (existsResource); ++i) { if (iterColumns<i> != null) { position = PropertyColumnFactory.getInstance().getPosition(iterColumns<i>); if (position != null) { if (currentRow != position.getRow() - 1) nextCol = 0; currentRow = position.getRow() - 1; currentColumn = position.getColumn() - 1 + nextCol; currentRowSpan = position.getSpanRow(); currentColumnSpan = position.getSpanColumn(); } else { currentRowSpan = 0; currentColumnSpan = 0; } } metaName = PropertyHeaderRenderer.getMetaNameForTitle(iterColumns<i>, is508Required); if (metaName != null) { headerMatrix[currentRow][currentColumn] = new HeaderItem(this, currentRowSpan, currentColumnSpan, metaName, iterColumns<i>); nextCol = 1; maxRow = (maxRow > currentRow) ? maxRow : currentRow; maxCol = (maxCol > currentColumn) ? maxCol : currentColumn; } ++currentColumn; if (currentColumnSpan != 0) currentColumn = currentColumn + currentColumnSpan; if (!(iterColumns<i>.contains("noColumnSpacing"))) ++currentColumn; } ++maxRow; ++maxCol; if ((maxRow > 0) || (maxCol > 0)) { HeaderItem[][] resultMatrix = new HeaderItem[maxRow][maxCol]; for (int i = 0; i < maxRow; ++i) for (int k = 0; k < maxCol; ++k) resultMatrix<i>[k] = headerMatrix<i>[k]; return resultMatrix; } return null; } public int renderListHeader1(FormLayout grid, int row) throws WcmException { if (super.isExactlyValue(ICollectionRendererParameterNameConst.PROPERTY_COLUMN_HEADER_STYLE, "off")) return row; HeaderItem[][] header = genetateMatrixHeader(); if (header == null) { return row; } String propertyHeaderColumnStyle = super.getParameters().getParameter(ICollectionRendererParameterNameConst.PROPERTY_COLUMN_HEADER_STYLE, "Table Title Color"); String headerClassStyle = HtmlRendererUtil.getHeaderClassStyle(propertyHeaderColumnStyle); if (headerClassStyle == null) { headerClassStyle = ""; } FormLayoutCell cell = null; int columnSpan = 0; int column = 1; if (!(super.getParameters().getParameter(ICollectionRendererParameterNameConst.ITEMSELECTIONMODE, "multiple").equals("off"))) { ++column; } int startRow = row; HeaderItem headerItem = null; PropertyHeaderRenderer sortHeader = new PropertyHeaderRenderer(super.getProxy(), this, super.getBundleHandler(), getChildCountMetaName(super.getParentCollection()), this.isManualOrdered, super.getIRS().getSortDefintion(), super.getResourceContext().getLocale()); IMetaName metaName = null; int colHeader = 0; for (int i = 0; i < header.length; ++i) { row = row + i; if (!(super.getParameters().getParameter(ICollectionRendererParameterNameConst.ITEMSELECTIONMODE, "multiple").equals("off"))) colHeader = 1; else { colHeader = 0; } for (int k = 0; k < header[0].length; ++k) { headerItem = header<i>[k]; if (headerItem != null) { boolean is508Required = false; try { is508Required = super.getProxy().getDynamicPage().getPageContext().requiresSection508Rendering(); } catch (Exception ex) { log.errorT("Could not retrieve 508 mode for proxy <" + super.getProxy() + ">: " + LoggingFormatter.extractCallstack(ex)); } metaName = headerItem.getLabelMetaName(); if (headerItem.getColSpan() != 0) { cell = grid.addComponent(row, k + colHeader + 1, sortHeader.createSortLink(metaName)); cell.setColspan(headerItem.getColSpan()); } else { cell = grid.addComponent(row, k + colHeader + 1, sortHeader.createSortLink(metaName)); } String[] padding = HtmlRendererUtil.getPropertyPaddingValues(headerItem.getPropertyColumn(), metaName); cell.setHorizontalAlignment(PropertyColumnFactory.getInstance().getHAlign(headerItem.getPropertyColumn())); cell.setVerticalAlignment(PropertyColumnFactory.getInstance().getVAlign(headerItem.getPropertyColumn())); if (padding != null) { cell.setPaddingTop(padding[0]); cell.setPaddingRight(padding[1]); cell.setPaddingBottom(padding[2]); cell.setPaddingLeft(padding[3]); } if (columnSpan != 0) colHeader = colHeader + columnSpan; } } } setClassStyleForm(headerClassStyle, grid, startRow, row, this.noOfColumns); return (++row); } static { try { DEFAULT_PROP_NAMES[0] = PropertyName.getPN("http://sapportals.com/xmlns/cm", "readonly"); DEFAULT_PROP_NAMES[1] = PropertyName.createCreatedBy(); DEFAULT_PROP_NAMES[2] = PropertyName.createLastModifiedBy(); } catch (ResourceException e) { log.errorT("Could not set default property name" + LoggingFormatter.beautify(e)); } } protected class HeaderItem { private int rowSpan; private int colSpan; private IMetaName labelMetaName; private IPropertyColumn column; private boolean processed; private final CollectionListRenderer mythis; public HeaderItem(CollectionListRenderer this$0) { this.mythis = this$0; this.rowSpan = 0; this.colSpan = 0; this.labelMetaName = null; this.column = null; this.processed = false; } public HeaderItem(CollectionListRenderer this$0, int rowSpan, int colSpan, IMetaName metaName, IPropertyColumn column) { this.mythis = this$0; this.rowSpan = 0; this.colSpan = 0; this.labelMetaName = null; this.column = null; this.processed = false; this.rowSpan = rowSpan; this.colSpan = colSpan; this.labelMetaName = metaName; this.column = column; } public void setRowSpan(int row) { this.rowSpan = row; } public int getRowSpan() { return this.rowSpan; } public void setColSpan(int col) { this.colSpan = col; } public int getColSpan() { return this.colSpan; } public void setLabelMetaName(IMetaName column) { this.labelMetaName = column; } public IMetaName getLabelMetaName() { return this.labelMetaName; } public void setPropertyColumn(IPropertyColumn column) { this.column = column; } public IPropertyColumn getPropertyColumn() { return this.column; } public String toString() { return "Item: RowSpan=" + this.rowSpan + "; ColSpan=" + this.colSpan + "; PropertyColumn=" + getLabelMetaName(); } } }
Thanks for help!
Christof