LinkedObjectType on a Cell in Grid

Hello
How can I define a LinkedObjectType in a Grid Cell?
Which changes I have to made in my code?
I need a Grid with diffrent LinkedObjectTypes in the cells.
//Order
oGrid.DataTable.Columns.Item(0).Cells.Item(i).Value = "Order";
SAPbouiCOM.EditTextColumn col = SAPbouiCOM.EditTextColumn)oDocGrid.DataTable.Columns.Item(0).Cells.Item(i);
col.LinkedObjectType = "17";
//Offer
oGrid.DataTable.Columns.Item(0).Cells.Item(y).Value = "Offer";
SAPbouiCOM.EditTextColumn col = SAPbouiCOM.EditTextColumn)oDocGrid.DataTable.Columns.Item(0).Cells.Item(y);
col.LinkedObjectType = "23";
Thanks

Hi Adele
I now solved it in such a way.  it functions perfectly.
if( ((pVal.ItemUID.Equals("id") && pVal.EventType == SAPbouiCOM.BoEventTypes.et_MATRIX_LINK_PRESSED && pVal.Before_Action == true) ) )
     BubbleEvent = false;
     string ObjectLinkType = (string)oGrid.DataTable.Columns.Item(3).Cells.Item(pVal.Row).Value;
     SAPbouiCOM.EditTextColumn col = (SAPbouiCOM.EditTextColumn)oGrid.Columns.Item(1);
     switch (ObjectLinkType)
          case "17":
               col.LinkedObjectType = "17";
               break;
          case "23":
               col.LinkedObjectType = "23";
               break;
     BubbleEvent = true;
Now I have however still the problem because of the collapsed rows...
My table is collapsed. Now naturally the line numbers do not agree with the DataSource
You have an idea

Similar Messages

  • Maximum number of cells for grid

    Hi,
    I have users who wanted to view Income Statement by Entities which are about 200 over. There seems to be performance issue when they attempt to expand the top member of entities hierarchy, the system is requesting for data for hours. Does anyone know what is the maximum number of cells in a grid that can be displayed? I know this should not be the way to analyse data, but users insisted.

    By default grids are limited to 1024 rows this can be increased in Grid Setting > Display Options. I think your users by entity grids are slow because HFM has to open a sub cude for each entity which takes longer than a by account grid where all the accounts are in one subcube. I would expect your user's grid to take a one or two minutes to display. if it is taking longer you might need to look at your servers. If you want to know more about subcubes Google or search this forum.

  • Disable single cells in Grid

    Hi all
    It seems that it is not possible to disable (grey out) a single cell in the new Grid object?
    I would like to be able to do this. Any ideas?
    Marais

    Hi Marais,
    You cannot accomplish this with the SDK. A suggestion I could make is that you catch the key down event in the cells you want to block and then set the BubbleEvent to false so that the cells are not updated. Haven't tried it myself, but it should work. Might be a bit resource intense using the key down event though.
    Hope it helps,
    Adele

  • Focus Cell on Grid

    Hi all !
    I'm have some  problem that i don't solve .can you help me?
    1: What do me ,if i want to put point mouse on first cell of 1 new row?
    2:if i connect to database two times ,isn't it?
           I have 2 distinct class ,each class i connect to same database .
           What is correct,as i create addon package?
    Thank you!
    Edited by: Rui Pereira on Dec 23, 2008 4:01 PM

    Hi,
    Try to use
        call method cl_gui_control=>set_focus exporting control = grid1.

  • Show file size in Cell Extras? (Either Compact or Expanded, or anywhere in Grid for multiple images simultaneously)

    I've searched and seen several suggestions saying to change Metadata to Exif & IPTC to see the file size, but that's for only one image at a time. Under Cell Extras (both Compact and Expanded) I see options for Megapixeps, Cropped Dimensions, File Name, Extention, and a bunch of other options, but no file size. I suspect this is because file size isn't a metadata field and simply a file attribute (that may be incorrect, but regardless...) is there really no way to have file size visible in the thumbnail cells in Grid view in the Library? I'm trying to reduce redundancy and viewing file size of multiple images at a glance based on my Library Filter criteria would be a huge help. Thanks to anyone who can help sort me out!

    Sure. I have a catalog with 22,000 images indiscriminately imported from hundreds of folders and multiple drives from this year alone (partially lost a RAID array to a corrupt index and recovered a dump of the files so I'm terribly disorganized juggling emergency redundancy backups wherever I had 50 gigs here, 100 gigs there, and working to clean up and organize my photos one year at a time ), including raw, jpg, websized jpg, png, tiff and psd (flattened and with layers/adjustments) and am now trying to identify my keepers and delete unnecessary files. I have 22 terabytes of personal files and photography spread chaotically and while I now have proper discipline when saving variants, I didn't always and want to remove unneeded, rejected, and duplicate images. I don't expect to be caught up for months or longer depending on my free time and sanity. Unfortunately, it's not as simple as keep the raw delete the rest. Sometimes I have multiple PSD documents with different version names and edits, sometimes with multiple layers, and I have to use a variety of information to identify which one is indeed the correct one to keep...or open them all/both.
    Often, file size can be an indicator for me and aids in making the decision more quickly. For instance between 2 psd files with the same Megapixles I'm often able to identify the flattened version vs the layers intact version by file size if it wasn't properly noted in the filename, which unfortunately due to a combination of bad or evolving practices and being tired or rushed happens more often than I'd like to admit. One I just came across that brought me here searching was 3 similarly named and appearing PSD files of a panorama, all with the same MP/dimensions. One was flattened, one was the original stitch, and one was flattened with a few masks, adjustments, and an extra layer, and being the one I'd want to keep. Filesize helped me quickly identify which was which. Also sometimes dimensions are misleading, like when a panorama is first created and uncropped, its dimensions are larger, but a tighter cropped image with multiple layers and a larger file size indicates to me that it is newer and more finished, even though smaller dimensions typically indicates a crop and may not be a 'master' copy. Additionally, 2 images with different names but the exact same file size are very likely duplicates (at least in my workflow) but 2 similarly looking images with the same dimensions could be retouched/not, sharpened/not, have noise reduction/not, and I'd have to view them in detail to determine if they were in fact identical. For my purposes (since these are my personal fine art images & I have the raw files incase I occasionally mess up) I'm often willing to trade an educated guess for my time. Seeing identical file sizes on 2 apparently similar images is good enough for me to delete one.
    I can select them individually and check...it's not a horrific problem. But it would save me time so I was hoping I had simply missed how to view that. My reasoning is 'why not' have the option available with all the others? Me personally, I don't care about megapixels when I already have the dimensions, that's just redundant and honestly much less helpful than LxW. File size would be an additional tool I would use, though. There are other examples but the main thing is that I do spend time checking filesize, and specifically when comparing multiple images, so having it displayed in the cell would be a time saver for me.

  • How to select a row in Grid? no a cell

    Clict the grid, I want to select a whole row, not a cell
    and that the Cell of Grid  is readonly
    how to do? thanks

    Hi Tony,
    All you have to do to select a row in the grid is, after declaring the grid, add this line.
    objGrid.SelectionMode = SAPbouiCOM.BoMatrixSelect.ms_Single
    The above line will help you to select one row at a time in a grid.
    Satish.

  • Show html in Grid, Forms

    I want to show parts of web pages inside a table.
    How does one show html inside the cells of grids or forms?

    hi Patricio,
    In Content Management,I have created a folder "abc" under the repository "document".This folder will hold the xml files created for the news items.
    The document repository is predefined and has been assigned the Repository Service "tbp".
    i have enabled the time-bound publishing for the folder "abc" in its Detail section.
    For the news reader , I have made the folder "abc" as "read only".
    But the news reader is not able to see the news.
    My xml form for the news Author has fields for entering date and time for both "Valid from" and "Valid To".
    On saving the news item ,i can actually see these values in the property "LifeTime" of the news document that has been created.
    I even set these ValidTo and ValidFrom at the "LifeTime" property also.
    But nothing is working.
    Also could u pls elaborate on ur statement :
    "time-dependent publishing service requires the application property service."
    Nothing is working for  me.
    Pls help.
    Regards
    Saurabh

  • Modify grid size in dashboard view

    I have a dashboard that has a few dashboards within. I end up needing about 12 "grids", which I do by having a master two grid dashboard. The left side is two grids on top of one another showing some graphs (performance widget). The right side
    is two grids beside each other. Within the two on the right, I have 5 grids on top of each other for different performance object widgets. Now, the real estate obviously is a little (okay, a LOT) too tight. I have very little information in each grid, so I
    have a lot of extra white space and scroll bars to be able to see the other grids. Is there a way that I can change the height of the grid, so that I can get the five to show in a single window? I would have thought it would "auto adjust to fit"
    or some such thing, but there has to be a way to define the size so I can design my dashboard to be more effective?
    Thanks in advance!
    mpleaf

    Hi,
    As far as I know, we cannot define the size of each cell for grids. But we can re-configure those cell layout. Please right click the dashboard, and choose properties, and then choose the proper layout according to your requirements.
    Regards,
    Yan Li
    Regards, Yan Li

  • Help with grid lines please

    ive moved to numbers from excel recently and having some trouble getting used to it, id like to view the grid lines but i dont want them to print, i know how to show and remove them, but i want to see the lines and print without them, i dont want to manually do this, i have dozens of spreadsheets i work with.
    Thanks.

    Hello, s 2 tha b,
    Welcome to Numbers!
    The charm of Numbers is that it allows several small tables on a "canvas". For example, you could have a Work Table with cell borders (grid lines) and a Print Table with no cell borders (grid lines).
    The Print Table copies values from the Work Table with formulas such as =Work Table::A1
    You can move the Print Table to another sheet, and print only that sheet.
    Welcome to the Magic of Numbers!
    Regards,
    Ian.

  • ALV grid field editable/non editable at runtime

    Hi All,
    I am working on alv grid using containers. I have to make few cells in grid to editable and few othres to non editable which I did using styles by defining table type lvc_t_styl and updating my main internal table. Now once grid is displayed for first time (using set_table_for_first_display) it has required fields in editable and non editable as required. But now on triggering of data_changed event I have to change the editable cells to non editable and the non editable cells to editable. I tried doing this as same way as I have done before calling set_table_for_first_display method i.e. by  defining table of type lvc_t_styl in data_changed event and modifying my main internal table but this time the editable fields are changed to non editable and again becomes editable. Same problem with non editable cells also. They become editable and again becomes non ediatble of there own. Can anyone suggest any solution.
    <b>Note: Points awarded for helpful answers</b>
    null

    Hi,
    Check this link.I am explaining the steps for this.
    Kindly reward points by clicking the star on the left of reply,if it helps.<a href="https://wiki.sdn.sap.com/wiki/display/Snippets/ALV-Editingandsavingtheeditedvaluesin+Database(OOPS)">Editing OOPS ALV</a>

  • Color temp in cells

    Is there a way to view color temperature information in a cell in grid and loupe view in Lightroom 3?

    There are a fair number of attributes that you can display while in Loupe view, but Temp is not one of them. To see what options are available, go to View > View Options.

  • Is there any limit for Number of fields to be shown from grid dictionary in service?

    I am getting an error in service designer -> Dictionaries if i select more than 20 fields in grid dictionary. PSC is 10.0

    This is documented in the Service Designer guide.  
    Show in Grid
    Fields set to “Show in Grid” and “Use” in a dictionary will display as columns in the grid on a service form when the dictionary is set to “Display as Grid”. “Show in Grid” and Multivalue are mutually exclusive, as a grid does not have the capability for a multivalue cell. Grids cannot have more than 20 columns by default, which is defined by “dictionary.attributes.maximum.showingrid.count” property in the newscale.properties file.
    Note Fields in External dictionaries cannot be used in grids and hence do not have the “Show in Grid” column. Also, fields in Reserved dictionaries (Customer_Information and Initiator_Information) cannot be used in grids because those dictionaries inherently represent only one set of data. See Designing Grid Dictionaries for Fields with Multiple Data Instance for more information on grids.

  • 3.2; BC4J, Grid; requestFocus?

    Hi,
    Any idea to trap the cursor on a cell in Grid when the entered value is invalid. like requestFocus() property in textFieldControl?

    You can try a mouse clicked event. I do this on a mouseReleased event. I have a round button defined for a gridcell. Then test where the point is with something like the following:
    public void mouseReleased(MouseEvent e) {
    ShapeRoundButton releaseObj = (ShapeRoundButton)e.getComponent();
    JTable releaseTable = (JTable)releaseObj.getParent();
    valueWhenReleased = releaseTable.getValueAt(releaseTable.rowAtPoint(e.getPoint()),releaseTable.columnAtPoint(e.getPoint())).toString();
    Hope this helps.
    Linda

  • 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(PropertyColumnFacto

    Hello
    My problem is the following on the moment:
    In debug, I get the message the pager can't be created.
    Could not create command with alias KenGPager and classname be.kindengezin.wcm.rendering.component.cm.Pager:java.lang.ClassNotFoundException: be.kindengezin.wcm.rendering.component.cm.Pager
         at com.sapportals.wcm.crt.CrtClassLoaderRegistry.findClass(CrtClassLoaderRegistry.java:176)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
         at com.sapportals.wcm.rendering.collection.ComponentFactory.createComponent(ComponentFactory.java:447)
         at com.sapportals.wcm.rendering.collection.ComponentFactory.initialize(ComponentFactory.java:489)
         at com.sapportals.wcm.rendering.collection.ComponentFactory.configEvent(ComponentFactory.java:553)
         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)
    My java files start as following:
    package be.kindengezin.wcm.rendering.component.cm;
    import com.sap.tc.logging.Location;
    import com.sapportals.htmlb.*;
    import com.sapportals.htmlb.enum.TextViewDesign;
    import com.sapportals.htmlb.event.Event;
    import com.sapportals.wcm.WcmException;
    import com.sapportals.wcm.control.util.PropertyRendererString;
    import com.sapportals.wcm.rendering.base.*;
    import com.sapportals.wcm.rendering.collection.*;
    import com.sapportals.wcm.rendering.util.EmptyHtmlFragment;
    import com.sapportals.wcm.rendering.util.PagerData;
    import com.sapportals.wcm.repository.*;
    import com.sapportals.wcm.repository.service.IRepositoryServiceFactory;
    import com.sapportals.wcm.repository.service.layout.customizing.IParameterName;
    import com.sapportals.wcm.service.propertyconfig.*;
    import com.sapportals.wcm.util.logging.LoggingFormatter;
    import com.sapportals.wcm.util.name.IName;
    import com.sapportals.wcm.util.resource.ResourceBundles;
    import com.sapportals.wcm.util.uri.RID;
    import java.util.*;
    // Referenced classes of package com.sapportals.wcm.rendering.component.cm:
    //                 LightComponent, PagerComponent, PagerInterval
    public class Pager extends LightComponent
    Edited by: Christof Houben on Oct 6, 2008 3:44 PM

  • What is the best way of dealing with an "implicit coercion" of an array to a sprite?

    Hello everyone!
         With continued help from this forum I am getting closer to having a working program. I look forward to being able to help others like myself once I finish learning the AS3 ropes.
         I will briefly explain what I am trying to achieve and then follow it up with my question.
    Background
         I have created a 12 x 9 random number grid that populates each cell with a corresponding image based on each cell's numeric value. I have also created a shuffle button that randomizes the numbers in the grid. The problem I am running into is getting my button-click event to clear the current images off the grid in order to assign new ones (i.e. deleting the display stack objects in order to place news ones in the same locations).
    Question
         My question is this: what is the best way to handle an implicit coercion from an array to a sprite? I have pasted my entire code below so that you can see how the functions are supposed to work together. My trouble apparently lies with not being able to use an array value with a sprite (the sprite represents the actual arrangement of the grid on the display stack while the array starts out as a number than gets assigned an image which should be passed to the sprite).
    ============================================================================
    package 
    import flash.display.MovieClip;
    import flash.display.DisplayObject;
    import flash.events.MouseEvent;
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.text.TextFormat;
    import flash.utils.getDefinitionByName;
    public class Blanko extends MovieClip
          // Holds 12*9 grid of cells.
          var grid:Sprite;
          // Holds the shuffle button.
          var shuffleButton:Sprite;
          // Equals 12 columns, 9 rows.
          var cols:int = 12;
          var rows:int = 9;
          // Equals number of cells in grid (108).
          var cells:int = cols * rows;
          // Sets cell width and height to 40 pixels.
          var cellW:int = 40;
          var cellH:int = 40;
          // Holds 108 cell images.
          var imageArray:Array = [];
          // Holds 108 numerical values for the cells in the grid.
          var cellNumbers:Array = [];
          // Constructor calls "generateGrid" and "makeShuffleButton" functions.
          public function Blanko()
               generateGrid();
               makeShuffleButton();
      // Creates and displays the 12*9 grid.
      private function generateGrid():void
           grid = new Sprite;
           var i:int = 0;
           for (i = 0; i < cells; i++)
                cellNumbers.push(i % 9 + 1);
           trace("Before shuffle: ", cellNumbers);
           shuffleCells(cellNumbers);
           trace("After shuffle: ", cellNumbers);
           var _cell:Sprite;
           for (i = 0; i < cells; i++)
                // This next line is where the implicit coercion occurs. "_cell" is a sprite that tries
                   to temporarily equal an array value.
                _cell = drawCells(cellNumbers[i]);
                _cell.x = (i % cols) * cellW;
                _cell.y = (i / cols) * cellH;
                grid.addChild(_cell);
      // Creates a "shuffle" button and adds an on-click mouse event.
      private function makeShuffleButton():void
           var _label:TextField = new TextField();
           _label.autoSize = "center";
           TextField(_label).multiline = TextField(_label).wordWrap = false;
           TextField(_label).defaultTextFormat = new TextFormat("Arial", 11, 0xFFFFFF, "bold");
           _label.text = "SHUFFLE";
           _label.x = 4;
           _label.y = 2;
           shuffleButton = new Sprite();
           shuffleButton.graphics.beginFill(0x484848);
           shuffleButton.graphics.drawRoundRect(0, 0, _label.width + _label.x * 2, _label.height +
                                                _label.y * 2, 10);
           shuffleButton.addChild(_label);
           shuffleButton.buttonMode = shuffleButton.useHandCursor = true;
           shuffleButton.mouseChildren = false;
           shuffleButton.x = grid.x + 30 + grid.width - shuffleButton.width;
           shuffleButton.y = grid.y + grid.height + 10;
           this.addChild(shuffleButton);
           shuffleButton.addEventListener(MouseEvent.CLICK, onShuffleButtonClick);
      // Clears cell images, shuffles their numbers and then assigns them new images.
      private function onShuffleButtonClick():void
       eraseCells();
       shuffleCells(cellNumbers);
       trace("After shuffle: ", cellNumbers);
       for (var i:int = 0; i < cells; i++)
        drawCells(cellNumbers[i]);
      // Removes any existing cell images from the display stack.
      private function eraseCells(): void
       while (imageArray.numChildren > 0)
        imageArray.removeChildAt(0);
      // Shuffles cell numbers (randomizes array).
      private function shuffleCells(_array:Array):void
       var _number:int = 0;
       var _a:int = 0;
       var _b:int = 0;
       var _rand:int = 0;
       for (var i:int = _array.length - 1; i > 0; i--)
        _rand = Math.random() * (i - 1);
        _a = _array[i];
        _b = _array[_rand];
        _array[i] = _b;
        _array[_rand] = _a;
      // Retrieves and assigns a custom image to a cell based on its numerical value.
      private function drawCells(_numeral:int):Array
       var _classRef:Class = Class(getDefinitionByName("skin" + _numeral));
       _classRef.x = 30;
       imageArray.push(_classRef);
       imageArray.addChild(_classRef);
       return imageArray;
    ===========================================================================
         Any help with this is greatly appreciated. Thanks!

    Rothrock,
         Thank you for the reply. Let me address a few things here in the hopes of allowing you (and others) to better understand my reasoning for doing things in this manner (admittedly, there is probably a much better/easier approach to what I am trying to accomplish which is one of the things I hope to learn/discover from these posts).
         The elements inside my "imageArray" are all individual graphics that I had imported, changed their type to movie clips using .Sprite as their base class (instead of .MovieClip) and then saved as classes. The reason I did this was because the classes could then be referenced via "getDefinitionByName" by each cell value that was being passed to it. In this grid every number from 1 to 9 appears randomly 12 times each (making the 108 cells which populate the grid). I did not, at the time (nor do I now), know of a better method to implement for making sure that each image appears in the cell that has the corresponding value (i.e. every time a cell has the value of 8 then the custom graphic/class "skin8" will be assigned to it so that the viewer will be able to see a more aesthetically pleasing numerical representation, that is to say a slightly more fancy looking number with a picture behind it). I was advised to store these images in an array so that I could destroy them when I reshuffle the grid in order to make room for the new images (but I probably messed up the instructions).
         If the "drawCell" function only returns a sprite rather than the image array itself, doesn't that mean that my "eraseCells" function won't be able to delete the array's children as their values weren't first returned to the global variable which my erasing function is accessing?
         As for the function name "drawCells," you have to keep in mind that a) my program has been redesigned in stages as I add new functionality/remove old functionality (such as removing text labels and formatting which were originally in this function) and b) that my program is called "Blanko."
         I will try and attach an Illustrator exported JPG file that contains the image I am using as the class "skin7" just to give you an example of what I'm trying to use as labels (although it won't let me insert it here in this post, so I will try it in the next post).
    Thank you for your help!

Maybe you are looking for

  • My iPod touch doesn't have the apple store app anywhere. How do I install it on my iPod touch?

    I think it's a 3rd generation iPod touch. I am trying to download apps for my friend because she doesn't have any apps or games on her iPod. So I took her iPod home and tried to download apps but then I realized she doesn't have a apple App Store. So

  • DC not available in KMC-CM SC

    Hi I have added the SC KMC-CM to my Development Track so that i can use the KM API in my DC. Now i create a Webdynpro DC. and want to add the tc/km/frwk  dc as used DC. But nothing is avaiable under the KMC-CM  SC when i click on Add used DC. Why is

  • How to record desktop

    hi, everyone I want to capture screen to video with jmf what should i do

  • Windows simulation fast enough on mbp?

    hello, i use an old g4 pb, and a windows-laptop. now i want to get one laptop - running both: mainly mac, sometimes vista. is the windows (bootcamp, Parallels) with f.e. adobe cs2 fast enough for working? or is it too slow? i know, this is a difficul

  • New toy/sample demonstrating calling Java from CAL

    <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica">This is another toy sample that demonstrates CAL functions calling some Java code.  In particular, we have some CAL