on 09-25-2008 3:32 PM
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
Hello
I think I did what you told me to do.
I just referenced the jars in my build path to be able to compile. (so kicked them out of my project)
So I added the referneces to my portalapp.xml:
<?xml version="1.0" encoding="utf-8"?>
<application>
<application-config>
<property name="SharingReference" value="usermanagement, knowledgemanagement, landscape, htmlb, exportalJCOclient, exportal, com.sap.km.cm.ui.flex, com.sap.portal.htmlb, com.sap.km.cm.ui, com.sap.km.cm.service.base, com.sap.km.cm.repository.service.base, com.sap.portal.runtime.config, com.sap.netweaver.bc.rf, com.sap.netweaver.bc.sf, com.sap.netweaver.bc.util, com.sap.km.bs.ui.wdf"/>
<property name="PrivateSharingReference" value="be.kindengezin.CollectionRenderer"/>
</application-config>
<components/>
<services>
<service name="RFServiceWrapper">
<service-config>
<property name="className" value="com.sap.netweaver.rf.wrapper.RFServiceWrapper"/>
<property name="startup" value="true"/>
</service-config>
</service>
</services>
</application>
As we need a PrivateSharingReference, I needed to add km.appl.ui.flex.collection_core.jar to dist -> PORTAL-INF -> private -> lib. In the portalapp.xml, I need to reference to this file through PrivateSharingReference. So I used the name of my par file (be.kindengezin.CollectionRenderer.par) to be able to use the jar in private lib.
The result in the logs is still the same (severity=fatal):
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)
and the error message from debug still says:
The given configuration was not used, because the alias is not defined or points to an invalid java class
Thanks for helping me!
Christof
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
Please dont add km.appl.ui.flex.collection_core.jar to private lib of your project.
Even the way you set PrivateSharingReference to add km.appl.ui.flex.collection_core.jar is wrong.
So decompile the classes that you want to refer in km.appl.ui.flex.collection_core.jar and add them directly to your project (Use different java package names for these copied classes).
Regards,
Praveen Gudapati
Hello
Sorry, I don't think I get your point. As far as my knowledge reaches, I think it should work by adding the libs directly to the project.
So I added the libs to the folder private -> lib. The application should find these jars normally itself in these maps? Or am I mistaken?
And could you give me a concrete exemple of an portalapp.xml, because you are talking about adding these references. But as far as I know, these won't add something usefull. :$
And these references, should they reference the original files or the files I added in my project or .. ?
Christof
(I did something similar with the search component, added some public jars to the buildpath to compile locally. But I didn't need to use these sharingreferences. So I think, this makes me a bit confused)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
You can add jar files to your projects build path so that you can compile your source in NWDS but you should not add them to private -> lib.
You should always use SharingReference if you are using any classes from other portal applications, this will ensure that the classes are found at runtime on the server.
To know what SharingReferences should be added use classlocator to know which application name should be added to SharingReference
https://forums.sdn.sap.com/thread.jspa?threadID=714739
http://help.sap.com/saphelp_nw70/helpdata/EN/53/c8af42a6f6cb6ae10000000a155106/frameset.htm
If you think you can use the classes of other application just by adding their jars to buildpath, then it is wrong, check this for example:
https://forums.sdn.sap.com/thread.jspa?threadID=112324
Regards,
Praveen Gudapati
Hi,
I advice to check 2 points:
1. Check that all the classes you are using in your custom collectionrenderer that they are not from private part of the KM.
For example: Classes com.sapportals.wcm.rendering.collection.cm.PropertyColumnRenderer & com.sapportals.wcm.rendering.collection.cm.PropertyHeaderRenderer which you use are from jar files which are in private lib part. So you cannot use them like the way you do here. One solution is to copy these classes into your projects and copy all depedencies. The other thing you can try is to change the class loading policy for the par where the PropertyColumnRenderer & PropertyHeaderRenderer are present.
Search for CoreAccessInAPI in the below document:
2. You mostly forgot to add SharingReferences to application in your portalapp.xml, so check this and add necessary applications there.
Regards,
Praveen Gudapati
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hey Praveen,
First of all thanks for the quick response.
To try your first solution, I added all the libs I used to the folder: dist -> PORTAL-INF -> private -> lib. And deployed the par file.
This gives still the same error message: "The given configuration was not used, because the alias is not defined or points to an invalid java class".
About your second solution, I don't know what you mean with 'you forgot to add SharingReferences to applications'. Could you explain this a bit more? Cause this java class ain't using an other application.
Christof
Hi,
Point 2: You are using LightCollectionRenderer in your class, but I did not see a SharingReference to com.sap.km.cm.ui.flex application in your portalapp.xml.
The basic mistake you do is to add jars where the classes are present to your private lib. The steps you should follow are:
1. If the class you are referenceing is in api part (PORTAL-INF -> Lib) then reference it through SharingReference.
2. If the class is in private part (PORTAL-INF -> private -> lib), then only copy the class into your project and not add the whole jar to your private -> lib folder.
Or you can also try the CoreAccessInAPI trick.
Regards,
Praveen Gudapati
User | Count |
---|---|
87 | |
10 | |
10 | |
10 | |
7 | |
6 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.