Skip to Content

Archived discussions are read-only. Learn more about SAP Q&A

Page number instead of number of entries

Hello

I have a requirement for changing the number of entries in KM to page numbers.

So I need to change:

1-10 11-20 21-24

to

1 2 3

I found a thread on sdn about this requirement, but there wasn't much information. It just said to write your own Collection Renderer.

I was able to add something between the breadcrumb (showing the map you are on the moment) and page numbers. So I still don't know where the 'page numbers' are added?

Is there anyone with experience? Or ideas?

Thanks!

Christof

The decompiled Collection Renderer:

package be.kindengezin.wcm.rendering.collection.cm;
// FrontEnd Plus GUI for JAD
// DeCompiled : CollectionListRenderer.class

import com.sap.tc.logging.Location;
import com.sap.tc.logging.LogController;
import com.sapportals.htmlb.*;
import com.sapportals.htmlb.enum.CellHAlign;
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.FolderSettings;
import com.sapportals.wcm.control.util.property.*;
import com.sapportals.wcm.rendering.base.*;
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.readymades.EmptyCollectionInfo;
import com.sapportals.wcm.rendering.resource.IResourceRenderer;
import com.sapportals.wcm.rendering.util.HtmlRendererUtil;
import com.sapportals.wcm.repository.*;
import com.sapportals.wcm.repository.service.IRepositoryServiceFactory;
import com.sapportals.wcm.repository.service.layout.IDebugContainer;
import com.sapportals.wcm.repository.service.layout.customizing.*;
import com.sapportals.wcm.service.propertyconfig.*;
import com.sapportals.wcm.util.logging.LoggingFormatter;
import com.sapportals.wcm.util.profiler.IProfiler;
import com.sapportals.wcm.util.profiler.Profiler;
import com.sapportals.wdf.WdfException;
import java.util.*;

import to.work.PropertyColumnRenderer;
import to.work.PropertyHeaderRenderer;

// Referenced classes of package com.sapportals.wcm.rendering.collection.cm:
//			  PropertyHeaderRenderer, PropertyColumnRenderer

public class CollectionListRenderer extends LightCollectionRenderer
{
	protected class HeaderItem
	{

		private int rowSpan;
		private int colSpan;
		private IMetaName labelMetaName;
		private IPropertyColumn column;
		private boolean processed;

		public void setRowSpan(int row)
		{
			rowSpan = row;
		}

		public int getRowSpan()
		{
			return rowSpan;
		}

		public void setColSpan(int col)
		{
			colSpan = col;
		}

		public int getColSpan()
		{
			return colSpan;
		}

		public void setLabelMetaName(IMetaName column)
		{
			labelMetaName = column;
		}

		public IMetaName getLabelMetaName()
		{
			return labelMetaName;
		}

		public void setPropertyColumn(IPropertyColumn column)
		{
			this.column = column;
		}

		public IPropertyColumn getPropertyColumn()
		{
			return column;
		}

		public String toString()
		{
			return "Item:  RowSpan=" + rowSpan + "; ColSpan=" + colSpan + "; PropertyColumn=" + getLabelMetaName();
		}

		public HeaderItem()
		{
			rowSpan = 0;
			colSpan = 0;
			labelMetaName = null;
			column = null;
			processed = false;
		}

		public HeaderItem(int rowSpan, int colSpan, IMetaName metaName, IPropertyColumn column)
		{
			this.rowSpan = 0;
			this.colSpan = 0;
			labelMetaName = null;
			this.column = null;
			processed = false;
			this.rowSpan = rowSpan;
			this.colSpan = colSpan;
			labelMetaName = metaName;
			this.column = column;
		}
	}


	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;
	private static int PAGER_LINKS_DEFAULT = 5;
	private static final CellVAlign VERTICAL_ALIGN;
	private int MaxNumberOfRows;
	private int noOfColumns;
	private static IPropertyName DEFAULT_PROP_NAMES[];
	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;
	private boolean isManualOrdered;

	public CollectionListRenderer()
	{
		MaxNumberOfRows = 10;
		noOfColumns = 0;
		debug = false;
		isManualOrdered = false;
		initParameterSettings();
		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
		};
		setSupportedParameters(supportedParameters);
		IParameters parameters = 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, MaxNumberOfRows);
		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(isExactlyValue(ICollectionRendererParameterNameConst.PROPERTY_COLUMN_HEADER_STYLE, "off"))
			return row;
		IPropertyPosition position = null;
		IPropertyColumn iterColumns[] = getColumnsList();
		boolean existsResource = getResourceList().size() != 0;
		String propertyHeaderColumnStyle = 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(!getParameters().getParameter(ICollectionRendererParameterNameConst.ITEMSELECTIONMODE, "multiple").equals("off"))
			column++;
		int startRow = row;
		boolean rowHasTitle = false;
		propertiesPositions = new IPropertyPosition[iterColumns.length];
		PropertyHeaderRenderer sortHeader = new PropertyHeaderRenderer(getProxy(), this, getBundleHandler(), getChildCountMetaName(getParentCollection()), isManualOrdered, getIRS().getSortDefintion(), 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(!getParameters().getParameter(ICollectionRendererParameterNameConst.ITEMSELECTIONMODE, "multiple").equals("off"))
							column++;
						line = lineNew;
						if(rowHasTitle)
						{
							row++;
							rowHasTitle = false;
						}
					}
					rowSpan = position.getSpanRow();
					columnSpan = position.getSpanColumn();
				}
				propertiesPositions<i> = PropertyColumnFactory.getInstance().getPropertyPosition(row, rowSpan, column, columnSpan);
				boolean is508Required = false;
				try
				{
					is508Required = getProxy().getDynamicPage().getPageContext().requiresSection508Rendering();
				}
				catch(Exception ex)
				{
					log.errorT("Could not retrieve 508 mode for proxy <" + getProxy() + ">: " + LoggingFormatter.extractCallstack(ex));
				}
				metaName = PropertyHeaderRenderer.getMetaNameForTitle(iterColumns<i>, is508Required);
				if(metaName != null)
					rowHasTitle = true;
				if(!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 += columnSpan;
				if(!iterColumns<i>.contains("noColumnSpacing") && column < noOfColumns)
				{
					cell = grid.addComponent(row, column, EmptyComponent.render());
					if(!"0".equals(getColumnSpacing()))
						cell.setWidth(getColumnSpacing());
					cell.setVerticalAlignment(VERTICAL_ALIGN);
					column++;
				}
			}

		if(!rowHasTitle)
			row--;
		setClassStyleForm(headerClassStyle, grid, startRow, row, noOfColumns);
		return ++row;
	}

	public int renderListFooter(FormLayout grid, int row)
		throws WcmException
	{
		boolean existsResource = getResourceList().size() != 0;
		if(!isExactlyValue(ICollectionRendererParameterNameConst.PROPERTY_COLUMN_HEADER_STYLE, "off"))
		{
			String propertyHeaderColumnStyle = getParameters().getParameter(ICollectionRendererParameterNameConst.PROPERTY_COLUMN_HEADER_STYLE, "Table Title Color");
			String headerClassStyle = HtmlRendererUtil.getHeaderClassStyle(propertyHeaderColumnStyle);
			if(headerClassStyle == null)
				headerClassStyle = "";
			FormLayoutCell cell = null;
		}
		return row;
	}

	public ILayoutObject getNewInstance()
	{
		return initNewInstance(new CollectionListRenderer());
	}

	private String getChildCountMetaName(IResource res)
		throws WcmException
	{
		if(res == null)
			return null;
		IResourceRenderer resourceRenderer = 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();
			} else
			{
				return metaName.getId();
			}
		} else
		{
			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
	{
		getIRS().setPropertyColumns(list);
	}

	public IPropertyColumn[] getColumnsList()
		throws WcmException
	{
		return getIRS().getPropertyColumns();
	}

	private IPropertyColumn[] createCollectionColumns()
	{
		String columnsString = getParameters().getParameter(ICollectionRendererParameterNameConst.PROPERTYCOLUMNS, "rnd:icon(noTitle/noColumnSpacing),rnd:displayname(contentLink)");
		return PropertyColumnFactory.getInstance().parseProperty(columnsString);
	}

	public Component renderUI()
		throws WcmException
	{
		s_profiler.start("/KM/FLEXUI/RENDER/UI", com.sapportals.wcm.util.profiler.IProfiler.Level.MEDIUM);
		try
		{
			if(getProxy().isDebugEnabled())
				writeDebugInformation();
			setColumnsList(createCollectionColumns());
			FormLayout grid = new FormLayout();
			grid.setMargin("0", "0", "0", "0");
			grid.setWidth("");			
			FormLayoutCell cell = null;
			grid.setDebugMode(debug);
			int row = 1;
			
			grid.addComponent(++row, 1, new TextView("CH-BOVENALL"));
			
			if(!isVisible())
			{
				FormLayout formlayout = grid;
				return formlayout;
			}
			if(getParameter(ICollectionRendererParameterNameConst.SHOWFOLDERTITLE, false))
			{
				cell = grid.addComponent(row, 1, renderFolderTitle());
				cell.setColspan(10);
				cell.setPaddingTop("2");
				cell.setPaddingBottom("3");
				row++;
			}
			IResourceList resourcelist = getResourceList();
			if(!getParameters().isExactlyValue(ICollectionRendererParameterNameConst.EMPTY_COLLECTION_STYLE, "off") && resourcelist != null && resourcelist.size() == 0)
			{
				cell = grid.addComponent(row, 1, new EmptyCollectionInfo(getProxy(), getParameters()));
				cell.setColspan(10);
				cell.setHorizontalAlignment(CellHAlign.LEFT);
				row++;
			}
			noOfColumns = PropertyColumnFactory.getNoOfColumn(getColumnsList(), MaxNumberOfRows);
			int column = 1;
			if(!getParameters().getParameter(ICollectionRendererParameterNameConst.ITEMSELECTIONMODE, "multiple").equals("off"))
			{
				column++;
				noOfColumns++;
			}
			if(getParentCollection() != null)
			{
				FolderSettings currFolderSettings = new FolderSettings(getParentCollection());
				isManualOrdered = currFolderSettings.getOrderedFlag();
			}
			row = renderListHeader(grid, row);
			boolean widthStrech = getParameters().getParameter(ICollectionRendererParameterNameConst.RESIZEWIDHTSTYLE, "compact").equals("stretch");
			boolean heightStrech = getParameters().getParameter(ICollectionRendererParameterNameConst.RESIZEHEIGHTSTYLE, "compact").equals("stretch");
			int maxnumberOfElements = getStartRow() + getParameters().getParameter(ICollectionRendererParameterNameConst.ROWS, MaxNumberOfRows);
			if(maxnumberOfElements > resourcelist.size())
				maxnumberOfElements = resourcelist.size();
			int rowHeightPercent = 0;
			if(heightStrech && maxnumberOfElements != 0)
				rowHeightPercent = 100 / maxnumberOfElements;
			IResourceList renderlist = resourcelist.subList(getStartRow(), maxnumberOfElements);
			IResourceListIterator iter = renderlist.listIterator();
			IResource res = null;
			boolean lightStyleClass = true;
			String classStyle = "";
			boolean alternatingMode = isExactlyValue(ICollectionRendererParameterNameConst.ROWBACKGROUNDSTYLE, "ALTERNATING");
			boolean lineSeparatedMode = isExactlyValue(ICollectionRendererParameterNameConst.ROWBACKGROUNDSTYLE, "LINE_SEPARATED");
			if(alternatingMode || lineSeparatedMode)
			{
				grid.addComponent(row, 1, HtmlRendererUtil.importStyles());
				row++;
			}
			if(getColumnsList() != null)
			{
				IPropertyNameList propertynamelist = PropertyColumnFactory.getInstance().getPropertyNameList(getColumnsList());
				for(int i = 0; i < DEFAULT_PROP_NAMES.length; i++)
					if(DEFAULT_PROP_NAMES<i> != null)
						propertynamelist.add(DEFAULT_PROP_NAMES<i>);

				s_profiler.start("/KM/FLEXUI/RENDER/UI/GETPROPS", com.sapportals.wcm.util.profiler.IProfiler.Level.MEDIUM);
				try
				{
					getProxy().getAmalgamation().readProperties(renderlist, propertynamelist);
				}
				finally
				{
					s_profiler.stop("/KM/FLEXUI/RENDER/UI/GETPROPS");
				}
				IPropertyPosition positions[] = getPositionArray(getColumnsList());
				boolean nextColumns[] = isNextLineColumnNeeded(getColumnsList());
				boolean selectionActive = !getParameters().getParameter(ICollectionRendererParameterNameConst.ITEMSELECTIONMODE, "multiple").equals("off");
				List paddings = getPaddingList(getColumnsList(), selectionActive);
				while(iter.hasNext()) 
				{
					res = iter.next();
					if(alternatingMode)
					{
						classStyle = "urCellBgPlain";
						if(!lightStyleClass)
							classStyle = "urSTbvCellAlt";
					}
					row = renderFormRow(grid, row, 1, res, classStyle, rowHeightPercent, propertynamelist, positions, nextColumns, paddings);
					if(lineSeparatedMode && iter.hasNext())
					{
						cell = grid.addComponent(row, 1, HtmlRendererUtil.renderLineSeparator("urCellBgPlain", 1));
						cell.setColspan(noOfColumns);
						row++;
					}
					lightStyleClass = !lightStyleClass;
				}
			}
			row = renderListFooter(grid, row);
			if(widthStrech)
				grid.setWidth("100%");
			FormLayout formlayout1 = grid;
			
			IParameters parameters = getParameters();
			formlayout1.addComponent(++row, 1, new TextView("CH-BOVEN "+parameters.getParameter(IParameterName.PAGER_LINK_COUNT).toString()));
			
			return formlayout1;
		}
		catch(Exception ex)
		{
			throw new WcmException(ex);
		}
		finally
		{
			s_profiler.stop("/KM/FLEXUI/RENDER/UI");
		}
	}

	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));
				padding = (new String[] {
					"0", "0", "0", "0"
				});
			}
			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 ", com.sapportals.wcm.util.profiler.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 = getRenderer(res);
				renderer.setPropertyNameList(propertynamelist);
				String padding[] = null;
				Component comp = new HTMLFragment(" ");
				if(!getParameters().getParameter(ICollectionRendererParameterNameConst.ITEMSELECTIONMODE, "multiple").equals("off"))
				{
					comp = 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(!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, 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>)
						{
							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 += columnSpan;
					if(!getColumnsList()<i>.contains("noColumnSpacing") && column < noOfColumns)
					{
						cell = grid.addComponent(row, column, EmptyComponent.render());
						if(!"0".equals(getColumnSpacing()))
							cell.setWidth(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)
								row++;
							cell = grid.addComponent(row, nextLineCol, comp);
							cell.setColspan(column);
							emptyRow = false;
						}
					}
				}

				int rowSpace = 0;
				try
				{
					rowSpace = Integer.parseInt(getRowSpacing());
				}
				catch(NumberFormatException nfEx)
				{
					log.debugT("Could not get an Integer from <" + 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, noOfColumns);
						setHeightPercentageForm(rowHeightPercent, paddingStyle, 1, grid, endRow, noOfColumns);
					} else
					{
						setHeightPercentageForm(rowHeightPercent, paddingStyle, 0, grid, endRow, noOfColumns);
					}
				}
				if(!"".equals(classStyle))
					setClassStyleForm(classStyle, grid, startRow, row, 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(isExactlyValue(ICollectionRendererParameterNameConst.PROPERTY_COLUMN_HEADER_STYLE, "off"))
			return null;
		IPropertyPosition position = null;
		IPropertyColumn iterColumns[] = getColumnsList();
		boolean existsResource = 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 = getProxy().getDynamicPage().getPageContext().requiresSection508Rendering();
		}
		catch(Exception ex)
		{
			log.errorT("Could not retrieve 508 mode for proxy <" + 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(currentRowSpan, currentColumnSpan, metaName, iterColumns<i>);
				nextCol = 1;
				maxRow = maxRow <= currentRow ? currentRow : maxRow;
				maxCol = maxCol <= currentColumn ? currentColumn : maxCol;
			}
			currentColumn++;
			if(currentColumnSpan != 0)
				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;
		} else
		{
			return null;
		}
	}

	public int renderListHeader1(FormLayout grid, int row)
		throws WcmException
	{
		if(isExactlyValue(ICollectionRendererParameterNameConst.PROPERTY_COLUMN_HEADER_STYLE, "off"))
			return row;
		HeaderItem header[][] = genetateMatrixHeader();
		if(header == null)
			return row;
		String propertyHeaderColumnStyle = 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(!getParameters().getParameter(ICollectionRendererParameterNameConst.ITEMSELECTIONMODE, "multiple").equals("off"))
			column++;
		int startRow = row;
		HeaderItem headerItem = null;
		PropertyHeaderRenderer sortHeader = new PropertyHeaderRenderer(getProxy(), this, getBundleHandler(), getChildCountMetaName(getParentCollection()), isManualOrdered, getIRS().getSortDefintion(), getResourceContext().getLocale());
		IMetaName metaName = null;
		int colHeader = 0;
		for(int i = 0; i < header.length; i++)
		{
			row += i;
			if(!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 = getProxy().getDynamicPage().getPageContext().requiresSection508Rendering();
					}
					catch(Exception ex)
					{
						log.errorT("Could not retrieve 508 mode for proxy <" + 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 += columnSpan;
				}
			}

		}

		setClassStyleForm(headerClassStyle, grid, startRow, row, noOfColumns);
		return ++row;
	}

	static Class _mthclass$(String x0)
	{
		try
		{
			return Class.forName(x0);
		}
		catch(ClassNotFoundException x1)
		{
			throw new NoClassDefFoundError(x1.getMessage());
		}
	}

	static 
	{
		log = Location.getLocation((be.kindengezin.wcm.rendering.collection.cm.CollectionListRenderer.class).getName());
		VERTICAL_ALIGN = HtmlRendererUtil.FLEXUI_VERTICAL_ALIGN;
		DEFAULT_PROP_NAMES = new PropertyName[3];
		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));
		}
	}
}

Former Member

Helpful Answer

by
Not what you were looking for? View more on this topic or Ask a question