String[] standardCategories, String[] customCategories,
String[] categories, String[] customKeys,String[] customCategories,
	public static IPropertyTabUI buildGeneralPage( Composite parent,			String[] standardCategories, String[] customCategories,			PageWrapper[] customPageWrappers, Object input )	{		BaseAttributePage basicPage = new BaseAttributePage( );		List categoryList = new ArrayList( );		List paneClassList = new ArrayList( );		if ( standardCategories == null )		{			if ( customCategories != null && customPageWrappers != null )			{				for ( int i = 0; i < customCategories.length; i++ )				{					categoryList.add( customCategories[i] );					paneClassList.add( customPageWrappers[i] );				}			}		}		else		{			int customIndex = 0;			for ( int i = 0; i < standardCategories.length; i++ )			{				if ( standardCategories[i] == null )				{					if ( customCategories != null							&& customPageWrappers != null							&& customCategories.length > customIndex )					{						categoryList.add( customCategories[customIndex] );						paneClassList.add( customPageWrappers[customIndex] );						customIndex++;					}				}				else				{					Object cat = categoryMap.get( standardCategories[i] );					if ( cat instanceof String )					{						categoryList.add( cat );						paneClassList.add( paneClassMap.get( standardCategories[i] ) );					}				}			}			if ( customCategories != null					&& customPageWrappers != null					&& customCategories.length > customIndex )			{				for ( int i = customIndex; i < customCategories.length; i++ )				{					categoryList.add( customCategories[customIndex] );					paneClassList.add( customPageWrappers[customIndex] );					customIndex++;				}			}		}		String[] cats = (String[]) categoryList.toArray( new String[0] );		Object[] clss = paneClassList.toArray( new Object[0] );		basicPage.setCategoryProvider( new ExtendedCategoryProvider( cats, clss ) );		basicPage.setInput( input );		basicPage.buildUI( parent );		return basicPage;	}