Large set of changes mostly related to: [206100]  Enhancements to the WPE Property pages.   This is the first checkin.   Cleanup and other improvements to come.

   - tabbed property page changes
   - MDChanges
   - temporary translation of old sybase MD to current form
   - new AttrValueRuntimeTypes
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ComboDialogField.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ComboDialogField.java
index 1182816..582634e 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ComboDialogField.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ComboDialogField.java
@@ -130,7 +130,7 @@
 	 * @return the custom combo control
 	 */
 	public CCombo getComboControl(FormToolkit toolkit, Composite parent) {
-		if (_comboControl == null) {
+		if (_comboControl == null || _comboControl.isDisposed()) {
 			assertCompositeNotNull(parent);
 			_modifyListener = new ModifyListener() {
 				public void modifyText(ModifyEvent e) {
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogField.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogField.java
index 379e0a7..0ff86f7 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogField.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogField.java
@@ -25,7 +25,7 @@
 	/**
 	 * this method must be called directly after constructor, in this case,
 	 * system will create a hyper link label, and when the hyper link is
-	 * clicked, the corresponding method on the listene will be called. A
+	 * clicked, the corresponding method on the listener will be called. A
 	 * RuntimeException will throw out if this method is called after the label
 	 * has been created.
 	 * 
@@ -58,7 +58,7 @@
 	// ------- focus management
 	/**
 	 * Tries to set the focus to the dialog field. Returns <code>true</code>
-	 * if the dialog field can take focus. To be reimplemented by dialog field
+	 * if the dialog field can take focus. To be re-implemented by dialog field
 	 * implementors.
 	 * @return true if dialog field can take focus
 	 */
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldBase.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldBase.java
index f6e2de8..431dae4 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldBase.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldBase.java
@@ -282,7 +282,7 @@
 	 */
 	public Control getLabelControl(FormToolkit _formToolkit, Composite parent) {
 		Control control = null;
-		if (_label == null && _hyperlink == null) {
+		if ((_label == null || _label.isDisposed()) && (_hyperlink == null  || _hyperlink.isDisposed())) {
 			assertCompositeNotNull(parent);
 
 			String label = null;
@@ -330,7 +330,7 @@
 	 */
 	public Control getRequiredLabelControl(FormToolkit _formToolkit,
 			Composite parent) {
-		if (_requiredLabel == null) {
+		if (_requiredLabel == null || _requiredLabel.isDisposed()) {
 			if (_formToolkit == null) {
 				_requiredLabel = new Label(parent, SWT.LEFT | SWT.WRAP);
 			} else {
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldGroup.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldGroup.java
index 2e4c5bc..0ed7b3a 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldGroup.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldGroup.java
@@ -103,4 +103,11 @@
 	 * @return could return null. or an array containing null elements.
 	 */
 	public abstract IStatus[] validateDialogFields();
+	
+	/**
+	 * Intended to allow subclasses to recreate controls.  Default implementation does nothing.
+	 */
+	public void reset(){
+		//do nothing by default	
+	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/RadiosDialogField.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/RadiosDialogField.java
index 1d2ef3e..3a6aa5c 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/RadiosDialogField.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/RadiosDialogField.java
@@ -121,7 +121,7 @@
 	 * @return the group composite
 	 */
 	public Composite getGroup(FormToolkit toolkit, Composite parent) {
-		if (_group == null) {
+		if (_group == null || _group.isDisposed()) {
 			assertCompositeNotNull(parent);
 			if (toolkit != null) {
 				_group = toolkit.createComposite(parent);
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/Separator.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/Separator.java
index caf5352..f54722a 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/Separator.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/Separator.java
@@ -106,7 +106,7 @@
 	 * @return  the separator
 	 */
 	private Control getSeparator(FormToolkit toolkit, Composite parent) {
-		if (_separator == null) {
+		if (_separator == null || _separator.isDisposed()) {
 			assertCompositeNotNull(parent);
 			if (toolkit != null) {
 				_separator = toolkit.createSeparator(parent, _style);
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StringButtonDialogField.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StringButtonDialogField.java
index f750daf..4ff9eda 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StringButtonDialogField.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StringButtonDialogField.java
@@ -122,7 +122,7 @@
 	 * @return the button
 	 */
 	public Button getChangeControl(FormToolkit toolkit, Composite parent) {
-		if (_browseButton == null) {
+		if (_browseButton == null || _browseButton.isDisposed()) {
 			assertCompositeNotNull(parent);
 			if (toolkit != null) {
 				_browseButton = toolkit.createButton(parent,
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StringDialogField.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StringDialogField.java
index c38ddb7..c00f3c6 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StringDialogField.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StringDialogField.java
@@ -149,7 +149,7 @@
 	 * @return the text control
 	 */
 	public Text getTextControl(FormToolkit toolkit, Composite parent) {
-		if (_textControl == null) {
+		if (_textControl == null || _textControl.isDisposed()) {
 			assertCompositeNotNull(parent);
 			_modifyListener = new ModifyListener() {
 				public void modifyText(ModifyEvent e) {
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StyleComboDialogField.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StyleComboDialogField.java
index f549b71..93c9332 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StyleComboDialogField.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StyleComboDialogField.java
@@ -68,6 +68,8 @@
 	 */
 	public void setDefaultValue(String defaultValue) {
 		this._defaultValue = defaultValue;
+		if (_comboControl != null && ! _comboControl.isDisposed())
+			_comboControl.setDefaultValue(_defaultValue);
 	}
 
 	/**
@@ -83,6 +85,7 @@
 
 	// ------- layout helpers
 
+
 	/*
 	 * @see DialogField#doFillIntoGrid
 	 */
@@ -147,7 +150,7 @@
 	 */
 	public StyleCombo getComboControl(FormToolkit toolkit,
 			final Composite parent) {
-		if (_comboControl == null) {
+		if (_comboControl == null || _comboControl.isDisposed()) {
 			assertCompositeNotNull(parent);
 			_modifyListener = new ModifyListener() {
 				public void modifyText(ModifyEvent e) {
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/AbstractTagLibDomainContentModelMetaDataTranslator.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/AbstractTagLibDomainContentModelMetaDataTranslator.java
index c1f2f9e..99a06bb 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/AbstractTagLibDomainContentModelMetaDataTranslator.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/AbstractTagLibDomainContentModelMetaDataTranslator.java
@@ -20,6 +20,7 @@
 import org.eclipse.jst.jsf.common.metadata.MetadataPackage;
 import org.eclipse.jst.jsf.common.metadata.Model;
 import org.eclipse.jst.jsf.common.metadata.Trait;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
 
@@ -134,6 +135,19 @@
 	}
 
 	/**
+	 * @param tag
+	 * @param attributeName
+	 * @return Attribute entity for supplied attribute name and given Tag entity.  Will return null if not found.
+	 */
+	protected Entity findAttributeEntityForTagEntity(final Entity tag, final String attributeName) {
+		for (Iterator it=tag.getChildEntities().iterator();it.hasNext();){
+			Entity attr = (Entity)it.next();
+			if (attributeName.equals(attr.getId()))
+				return attr;
+		}
+		return null;
+	}
+	/**
 	 * Create entities for tags
 	 * @param doc
 	 */
@@ -143,7 +157,7 @@
 			Entity entity = findTagEntity(tag.getNodeName());
 			if (entity == null){
 				entity = MetadataFactory.eINSTANCE.createEntity();
-				entity.setId(tag.getNodeName());
+				entity.setId(getTagNodeName(tag));
 				entity.setType("tag");
 				getMergedModel().getChildEntities().add(entity);
 			}
@@ -153,6 +167,14 @@
 	}
 	
 	/**
+	 * @param tag
+	 * @return tag node name
+	 */
+	protected String getTagNodeName(CMElementDeclaration tag) {
+		return tag.getNodeName();
+	}
+
+	/**
 	 * Sets the standard traits for a tag entity from the element declaration
 	 * @param tag
 	 * @param entity
@@ -165,10 +187,61 @@
 		createSimpleBooleanObjectEntityTraitIfNecessary(entity, "expert", getTagIsExpert(tag));
 		createSimpleBooleanObjectEntityTraitIfNecessary(entity, "hidden", getTagIsHidden(tag));
 		
-//		createRequiredAttrTraits(entity, tag);
+		createAttributeEntities(entity, tag);
 	}
 	
 	/**
+	 * @param tagEntity
+	 * @param tag
+	 */
+	protected void createAttributeEntities(Entity tagEntity,
+			CMElementDeclaration tag) {
+		
+		for (Iterator it=tag.getAttributes().iterator();it.hasNext();){
+			CMAttributeDeclaration cmAttr = (CMAttributeDeclaration)it.next();			
+			Entity attr = findAttributeEntityForTagEntity(tagEntity, cmAttr.getAttrName());
+			if (attr == null) {
+				attr = MetadataFactory.eINSTANCE.createEntity();
+				attr.setId(cmAttr.getAttrName());
+				tagEntity.getChildEntities().add(attr);
+			}
+			createAttributeTraits(attr, cmAttr);
+		}
+			
+		
+	}
+
+	/**
+	 * @param attr
+	 * @param cmAttr
+	 */
+	protected void createAttributeTraits(Entity attr,
+			CMAttributeDeclaration cmAttr) {
+		
+		createSimpleStringEntityTraitIfNecessary(attr, "description", getTagAttributeDescription(cmAttr));	
+		createSimpleBooleanObjectEntityTraitIfNecessary(attr, "required", getTagAttributeIsRequired(cmAttr));
+		createSimpleStringEntityTraitIfNecessary(attr, "default-value", getTagAttributeDefaultValue(cmAttr));
+	}
+	
+	/**
+	 * @param cmAttr
+	 * @return null.   subclass should override if CMAttributeDeclaration has the metadata.
+	 */
+	protected String getTagAttributeDescription(CMAttributeDeclaration cmAttr) {return null;}
+	
+	/**
+	 * @param cmAttr
+	 * @return false.   subclass should override if CMAttributeDeclaration has the metadata.
+	 */
+	protected boolean getTagAttributeIsRequired(CMAttributeDeclaration cmAttr) {return cmAttr.getUsage() == CMAttributeDeclaration.REQUIRED;}
+
+	/**
+	 * @param cmAttr
+	 * @return null.   subclass should override if CMAttributeDeclaration has the metadata.
+	 */
+	protected String getTagAttributeDefaultValue(CMAttributeDeclaration cmAttr) {return null;}
+
+	/**
 	 * @param tag
 	 * @return false.   subclass should override if CMElementDeclaration has the metadata.
 	 */
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/DomainLoadingStrategy.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/DomainLoadingStrategy.java
index ad81c3d..2e7f31e 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/DomainLoadingStrategy.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/DomainLoadingStrategy.java
@@ -75,13 +75,14 @@
 	protected void mergeModel(MetaDataModel model, List/*<IMetaDataSourceModelProvider>*/ sources) {		
 		IMetaDataModelMergeAssistant assistant = createModelMergeAssistant(model);
 		for (Iterator/*<IMetaDataSourceModelProvider>*/ it = sources.iterator();it.hasNext();){
-			IMetaDataSourceModelProvider mds = (IMetaDataSourceModelProvider)it.next();
-//			assistant.setSourceModel(mds.getSourceModel());
-			assistant.setSourceModelProvider(mds);
+			IMetaDataSourceModelProvider mds = (IMetaDataSourceModelProvider)it.next();		
 			Iterator translators = mds.getLocator().getDomainSourceModelType().getTranslators().iterator();
 			while (translators.hasNext()){
 				IMetaDataTranslator translator = (IMetaDataTranslator)translators.next();
-				translator.translate(assistant);
+				if (translator.canTranslate(mds)){
+					assistant.setSourceModelProvider(mds);
+					translator.translate(assistant);
+				}				
 			}
 		}
 		assistant.setMergeComplete();
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/IMetaDataModelMergeAssistant.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/IMetaDataModelMergeAssistant.java
index d5744f4..d579a63 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/IMetaDataModelMergeAssistant.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/IMetaDataModelMergeAssistant.java
@@ -62,6 +62,12 @@
 	 * @return {@link IMetaDataSourceModelProvider} for current operation
 	 */
 	public IMetaDataSourceModelProvider getSourceModelProvider();
-	
 
+	/**
+	 * @param queryRoot
+	 * @param entityKey - key relative to queryRoot
+	 * @return entity - will return null if not found
+	 */
+	public Entity getMergedEntity(Entity queryRoot, String entityKey);
+	
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/IMetaDataTranslator.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/IMetaDataTranslator.java
index eaa159b..b6a15a8 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/IMetaDataTranslator.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/IMetaDataTranslator.java
@@ -20,4 +20,9 @@
 	 * @param assistant perform translation using the IMetaDataModelMergeAssistant
 	 */
 	public void translate(IMetaDataModelMergeAssistant assistant);
+	/**
+	 * @param modelProvider
+	 * @return true if this translator can translate this model source
+	 */
+	public boolean canTranslate(IMetaDataSourceModelProvider modelProvider);
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataModelMergeAssistantImpl.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataModelMergeAssistantImpl.java
index df3c715..16577d3 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataModelMergeAssistantImpl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataModelMergeAssistantImpl.java
@@ -102,6 +102,18 @@
 		return false;
 	}
 
+	public Entity getMergedEntity(Entity queryRoot, String entityKey){		
+		Entity ret = null;
+		SimpleResultSet rs = (SimpleResultSet)entityVisitor.findEntities(queryRoot, entityKey);
+		try {
+			if (! rs.getResults().isEmpty()) 
+				ret = (Entity)rs.getResults().get(0);				
+			rs.close();
+		} catch (MetaDataException e) {
+			JSFCommonPlugin.log(IStatus.ERROR, "Error in getMergedEntity()", e);
+		}
+		return ret;
+	}
 	private void addIncludeGroupsAsNecessary(final Entity mmEntity, final Entity entity) {
 		for (Iterator it=entity.getIncludeGroups().iterator();it.hasNext();){
 			IncludeEntityGroup grp = (IncludeEntityGroup)it.next();
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFileRegistry.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFileRegistry.java
index e49ca1a..e20a2be 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFileRegistry.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFileRegistry.java
@@ -153,18 +153,22 @@
 		} catch (FileNotFoundException e){
 			JSFCommonPlugin.log(IStatus.ERROR, e.getLocalizedMessage());
 		} catch (IOException e) {
-			JSFCommonPlugin.log(IStatus.ERROR,"IOException(1): StandardMetaDataFilesProvider.getSourceModel()", e); //$NON-NLS-1$
+			JSFCommonPlugin.log(IStatus.ERROR,"IOException(1): StandardMetaDataFilesProvider.getSourceModel():"+getModelName(), e); //$NON-NLS-1$
 		} finally {
 			if (inputStream != null){
 				try {
 					inputStream.close();
 				} catch (IOException e) {
-					JSFCommonPlugin.log( IStatus.ERROR,"IOException (2): StandardMetaDataFilesProvider.getSourceModel()", e); //$NON-NLS-1$
+					JSFCommonPlugin.log( IStatus.ERROR,"IOException (2): StandardMetaDataFilesProvider.getSourceModel():"+getModelName(), e); //$NON-NLS-1$
 				}
 			}
 		}
 		return model;
 	}
+	
+	private String getModelName() {
+		return info.toString();
+	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.jst.jsf.common.metadata.internal.IMetaDataSourceModelProvider#getLocator()
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFilesTranslator.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFilesTranslator.java
index 261f24e..92ae691 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFilesTranslator.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFilesTranslator.java
@@ -17,6 +17,7 @@
 import org.eclipse.jst.jsf.common.metadata.EntityGroup;
 import org.eclipse.jst.jsf.common.metadata.Model;
 import org.eclipse.jst.jsf.common.metadata.Trait;
+import org.eclipse.jst.jsf.common.metadata.internal.StandardMetaDataFileRegistry.StandardMetaDataFilesProvider;
 
 
 /**
@@ -25,6 +26,12 @@
  */
 public class StandardMetaDataFilesTranslator implements IMetaDataTranslator {
 
+	public boolean canTranslate(IMetaDataSourceModelProvider modelProvider) {
+		if (modelProvider instanceof StandardMetaDataFilesProvider)
+			return true;
+		return false;
+	}
+	
 	public void translate(IMetaDataModelMergeAssistant assistant) {//TODO: throw proper errors
 		//null translate - sourceModel object are already Entities and traits
 		//traverse the tree and add to model
@@ -70,4 +77,5 @@
 		}
 		
 	}
+
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/query/TaglibDomainMetaDataQueryHelper.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/query/TaglibDomainMetaDataQueryHelper.java
index 582db6d..341e4c8 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/query/TaglibDomainMetaDataQueryHelper.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/query/TaglibDomainMetaDataQueryHelper.java
@@ -11,7 +11,10 @@
  ********************************************************************************/
 package org.eclipse.jst.jsf.common.metadata.query;
 
+import javax.xml.namespace.QName;
+
 import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.jst.jsf.common.JSFCommonPlugin;
 import org.eclipse.jst.jsf.common.metadata.Entity;
@@ -208,4 +211,13 @@
 		}
 		return t;
 	}	
+	
+	/**
+	 * @param tagEntity
+	 * @return QName for tag entity
+	 */
+	public static QName getQNameForTagEntity(Entity tagEntity) {
+		Assert.isTrue(tagEntity != null);
+		return new QName(tagEntity.getModel().getCurrentModelContext().getUri(), tagEntity.getId());
+	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/query/internal/SimpleEntityQueryVisitorImpl.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/query/internal/SimpleEntityQueryVisitorImpl.java
index df909d9..3fbac5b 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/query/internal/SimpleEntityQueryVisitorImpl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/query/internal/SimpleEntityQueryVisitorImpl.java
@@ -113,7 +113,9 @@
 	}
 
 	/**
-	 * Simple comparator that compares that an entity's id for with another
+	 * Simple comparator that compares that an entity's id for with another.
+	 * Case-insensitive compare
+	 *
 	 */
 	private class EntityQueryComparator implements Comparable/*<Entity>*/{
 
@@ -125,13 +127,13 @@
 		 * @param entityKey
 		 */
 		public EntityQueryComparator(String entityKey){
-			this.entityKey = entityKey;		
+			this.entityKey = entityKey.toUpperCase();		
 			stack = new EntityStack();
 		}
 		
 		public int compareTo(Object entity) {			
 			stack.push(entity);
-			return entityKey.compareTo(getRelativeId());			
+			return entityKey.compareTo(getRelativeId().toUpperCase());			
 		}
 		
 		/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/plugin.xml b/jsf/plugins/org.eclipse.jst.jsf.core/plugin.xml
index 8fd3920..fd9b992 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/plugin.xml
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/plugin.xml
@@ -161,6 +161,9 @@
          point="org.eclipse.jst.jsf.core.AttributeValueRuntimeTypes">
 
       <attributeValueRuntimeType
+            class="org.eclipse.jst.jsf.metadataprocessors.AbstractRootTypeDescriptor"
+            id="attributevalues.BaseType"/>
+      <attributeValueRuntimeType
             class="org.eclipse.jst.jsf.taglibprocessing.attributevalues.StringType"
             id="attributevalues.StringType"/>
       <attributeValueRuntimeType
@@ -214,6 +217,45 @@
       <attributeValueRuntimeType
             class="org.eclipse.jst.jsf.taglibprocessing.attributevalues.ResourceBundleType"
             id="attributevalues.ResourceBundleType"/>         
+      <attributeValueRuntimeType
+            class="org.eclipse.jst.jsf.taglibprocessing.attributevalues.LanguageCodeType"
+            id="attributevalues.LanguageCodeType"/>
+      <attributeValueRuntimeType
+            class="org.eclipse.jst.jsf.taglibprocessing.attributevalues.RelativePathType"
+            id="attributevalues.RelativePathType"/>    
+      <attributeValueRuntimeType
+            class="org.eclipse.jst.jsf.taglibprocessing.attributevalues.WebPathType"
+            id="attributevalues.WebPathType"/>                                    
+      <attributeValueRuntimeType
+            class="org.eclipse.jst.jsf.taglibprocessing.attributevalues.CurrencyCodeType"
+            id="attributevalues.CurrencyCodeType"/>
+      <attributeValueRuntimeType
+            class="org.eclipse.jst.jsf.taglibprocessing.attributevalues.LocaleType"
+            id="attributevalues.LocaleType"/>                                         
+      <attributeValueRuntimeType
+            class="org.eclipse.jst.jsf.taglibprocessing.attributevalues.TimeZoneType"
+            id="attributevalues.TimeZoneType"/>
+      <attributeValueRuntimeType
+            class="org.eclipse.jst.jsf.taglibprocessing.attributevalues.DateTimePatternType"
+            id="attributevalues.DateTimePatternType"/>  
+      <attributeValueRuntimeType
+            class="org.eclipse.jst.jsf.taglibprocessing.attributevalues.NumberPatternType"
+            id="attributevalues.NumberPatternType"/>                 
+      <attributeValueRuntimeType
+            class="org.eclipse.jst.jsf.taglibprocessing.attributevalues.ScriptType"
+            id="attributevalues.ScriptType"/>  
+      <attributeValueRuntimeType
+            class="org.eclipse.jst.jsf.taglibprocessing.attributevalues.CharacterType"
+            id="attributevalues.CharacterType"/>        
+      <attributeValueRuntimeType
+            class="org.eclipse.jst.jsf.taglibprocessing.attributevalues.LinkType"
+            id="attributevalues.LinkType"/> 
+      <attributeValueRuntimeType
+            class="org.eclipse.jst.jsf.taglibprocessing.attributevalues.ContentType"
+            id="attributevalues.ContentType"/>                  
+      <attributeValueRuntimeType
+            class="org.eclipse.jst.jsf.taglibprocessing.attributevalues.URIType"
+            id="attributevalues.URIType"/>                                 
    </extension>
    
    <extension
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/AbstractMetaDataEnabledFeature.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/AbstractMetaDataEnabledFeature.java
index e6f65ab..f87b0ba 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/AbstractMetaDataEnabledFeature.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/AbstractMetaDataEnabledFeature.java
@@ -12,7 +12,7 @@
 
 package org.eclipse.jst.jsf.metadataprocessors;
 
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -27,17 +27,13 @@
 
 /**
  * Simple abstract class that implementers of {@link IMetaDataEnabledFeature} can subclass in the <b>TagLibDomain</b> of metadata
- * <p><b>Provisional API - subject to change</b></p>
- * @author Gerry Kessler - Oracle
- * 
- *
+ * <p><b>Provisional API - subject to change</b></p>*
  */
 public abstract class AbstractMetaDataEnabledFeature implements IMetaDataEnabledFeature{
 	
 	private MetaDataContext mdContext;
 	private IStructuredDocumentContext sdContext;
-	
-	private static final List EMPTY_LIST = new ArrayList(0);
+
 	
 	/* (non-Javadoc)
 	 * @see org.eclipse.jst.jsf.metadataprocessors.IMetaDataEnabledFeature#setMetaDataContext(org.eclipse.jst.jsf.metadataprocessors.MetaDataContext)
@@ -79,11 +75,6 @@
 	/**
 	 * Return the single expected String value for a given property.
 	 * 
-	 * Since the MetaDataContext, where the type-id was found, 
-	 * may have come from a wild card, or the property being looked up now is,
-	 * we should first look for the named property on the specific element and
-	 * only if not found, look for it on the * element.
-	 * 
 	 * @param traitName property name
 	 * @return String value
 	 */
@@ -100,11 +91,6 @@
 	/**
 	 * Return the List of values for a given property.
 	 * 
-	 * Since the MetaDataContext, where the type-id was found, 
-	 * may have come from a wild card, or the property being looked up now is,
-	 * we should first look for the named property on the specific element and
-	 * only if not found, look for it on the * element.
-	 * 
 	 * @param traitName trait name
 	 * @return List of String values
 	 */
@@ -114,9 +100,24 @@
 			return TraitValueHelper.getValueAsListOfStrings(t);
 		}
 			
-		return EMPTY_LIST;
+		return Collections.EMPTY_LIST;
 	}
 
+	/**
+	 * Return a boolean value for the given named trait .
+	 * 
+	 * @param traitName property name
+	 * @return boolean value.  Returns false if trait was not located.
+	 */
+	protected boolean getTraitValueAsBoolean(final String traitName){	
+		Trait t = getTraitForEntityUsingContext(traitName);
+		if (t != null){
+			return TraitValueHelper.getValueAsBoolean(t);
+		}
+				
+		return false;
+
+	}
 	private Trait getTraitForEntityUsingContext(final String traitName) {
 		//look for trait on given entity
 		final Entity entity = ((TaglibMetadataContext)getMetaDataContext()).getEntity();
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/AbstractRootTypeDescriptor.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/AbstractRootTypeDescriptor.java
index 4a22c20..00b1ed8 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/AbstractRootTypeDescriptor.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/AbstractRootTypeDescriptor.java
@@ -13,7 +13,9 @@
 package org.eclipse.jst.jsf.metadataprocessors;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.jst.jsf.metadataprocessors.internal.IMetaDataEnabledFeatureExtension;
@@ -65,8 +67,8 @@
 	 * @param processingFeature
 	 * @return list of <code>IMetaDataEnabledFeature</code>s
 	 */
-	protected final List findMetaDataEnabledFeaturesForThisType(Class processingFeature) {
-		List ret = new ArrayList(3); 
+	protected final List<IMetaDataEnabledFeature> findMetaDataEnabledFeaturesForThisType(Class processingFeature) {
+		Map <String, IMetaDataEnabledFeature> mapOfFeatures = new HashMap<String, IMetaDataEnabledFeature>(); 
 		List extensions = MetaDataEnabledFeatureRegistry.getInstance()
 							.getFeatures(getTypeExtension().getTypeID());
 
@@ -74,10 +76,15 @@
 			for (int i=0;i<extensions.size();i++){
 				IMetaDataEnabledFeatureExtension aFeature = (IMetaDataEnabledFeatureExtension)extensions.get(i);
 				IMetaDataEnabledFeature feature = MetaDataEnabledFeatureAdapterFactory.getInstance().getFeatureAdapter(aFeature, processingFeature);
-				if (feature != null && processingFeature.isInstance(feature)){
-					ret.add(feature);				
+				if (feature != null && processingFeature.isInstance(feature)
+						&& ! mapOfFeatures.containsKey(aFeature.getClassName())){
+					mapOfFeatures.put(aFeature.getClassName(),feature);				
 				}
 			}
+		} 
+		List<IMetaDataEnabledFeature> ret = new ArrayList<IMetaDataEnabledFeature>(mapOfFeatures.size());
+		for (IMetaDataEnabledFeature feature: mapOfFeatures.values()){
+			ret.add(feature);
 		}
 		return ret;
 	}	
@@ -89,13 +96,13 @@
 		return type;
 	}
 
+
 	/* (non-Javadoc)
 	 * @see org.eclipse.jst.jsf.metadataprocessors.ITypeDescriptor#setRuntimeType(org.eclipse.jst.jsf.metadataprocessors.internal.AbstractMetaDataEnabledType)
 	 */
 	public void setTypeExtension(IType type) {
 		this.type = type;
 	}
-
 	
 
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/ITypeDescriptor.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/ITypeDescriptor.java
index bbf8aa9..0031ebb 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/ITypeDescriptor.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/ITypeDescriptor.java
@@ -44,6 +44,6 @@
 	 * @return List of <code>IMetaDataEnabledFeature</code>s that support the
 	 * specified processingFeature interface.  
 	 */
-	public List getFeatureAdapters(Class processingFeature);
+	public List<IMetaDataEnabledFeature> getFeatureAdapters(Class processingFeature);
 
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/MetaDataEnabledProcessingFactory.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/MetaDataEnabledProcessingFactory.java
index fca3105..08cc067 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/MetaDataEnabledProcessingFactory.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/MetaDataEnabledProcessingFactory.java
@@ -13,6 +13,7 @@
 package org.eclipse.jst.jsf.metadataprocessors;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.eclipse.core.resources.IProject;
@@ -26,91 +27,130 @@
 import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext;
 import org.eclipse.jst.jsf.metadataprocessors.internal.AttributeValueRuntimeTypeFactory;
 
-
 /**
- * Singleton class that will produce <code>IMetaDataEnabledFeature</code>s that the
- * caller can use for processing.
- * <p><b>Provisional API - subject to change</b></p>
+ * Singleton class that will produce <code>IMetaDataEnabledFeature</code>s
+ * that the caller can use for processing.
+ * <p>
+ * <b>Provisional API - subject to change</b>
+ * </p>
+ * 
  * @author Gerry Kessler - Oracle
- *
+ * 
  */
 public final class MetaDataEnabledProcessingFactory {
 	private static MetaDataEnabledProcessingFactory INSTANCE;
-	
+
 	/**
-	 * Name of property in annotation file to use when applying a runtime type to an attribute value 
+	 * Name of property in annotation file to use when applying a runtime type
+	 * to an attribute value
 	 */
 	public static final String ATTRIBUTE_VALUE_RUNTIME_TYPE_PROP_NAME = "attribute-value-runtime-type";
-	
+
 	/**
 	 * @return singleton instance
 	 */
-	public static MetaDataEnabledProcessingFactory getInstance(){
-		if (INSTANCE == null){
-			INSTANCE = new MetaDataEnabledProcessingFactory();	
+	public static MetaDataEnabledProcessingFactory getInstance() {
+		if (INSTANCE == null) {
+			INSTANCE = new MetaDataEnabledProcessingFactory();
 		}
 		return INSTANCE;
 	}
-	
-	private MetaDataEnabledProcessingFactory(){
+
+	private MetaDataEnabledProcessingFactory() {
 		super();
 	}
-	
+
 	/**
-	 * Returns list of <code>IMetaDataEnabledFeature</code> adapters for the given Taglibrary attribute.  
+	 * Returns list of <code>IMetaDataEnabledFeature</code> adapters for the
+	 * given Taglibrary attribute.
 	 * 
-	 * Adapters will be scanned for first by uri, element, attribute and if not found,
-	 * 	uri, "*", attribute and if still not found by "*", "*", attribute.
-	 * @param featureType feature type.  eg. <code>IPossibleValues</code>, <code>IValidValues</code>, etc.  Must be subclass of IMetaDataEnabledFeature. 
-	 * @param sdContext 
-	 * @param uri annotation file uri
+	 * Adapters will be scanned for first by uri, element, attribute and if not
+	 * found, uri, "*", attribute and if still not found by "*", "*", attribute.
+	 * 
+	 * @param featureType
+	 *            feature type. eg. <code>IPossibleValues</code>,
+	 *            <code>IValidValues</code>, etc. Must be subclass of
+	 *            IMetaDataEnabledFeature.
+	 * @param sdContext
+	 * @param uri
+	 *            annotation file uri
 	 * @param elementName
 	 * @param attributeName
-	 * @return	returns null - if the metadata was not found 
-	 * 			<br>returns empty list - if not a <code>IMetaDataEnabledFeature</code> proccessor or is not valid or does not support the specified feature
+	 * @return returns null - if the metadata was not found <br>
+	 *         returns empty list - if not a
+	 *         <code>IMetaDataEnabledFeature</code> proccessor or is not valid
+	 *         or does not support the specified feature
 	 * 
 	 * @see MetaDataEnabledProcessingFactory#ATTRIBUTE_VALUE_RUNTIME_TYPE_PROP_NAME
 	 */
-	public List getAttributeValueRuntimeTypeFeatureProcessors(Class featureType, IStructuredDocumentContext sdContext, String uri, String elementName, String attributeName){
-		List retList = new ArrayList(2);		
-		//look up the attribute's runtime type from MD
-		IProject _project = null; 
-		if (sdContext !=null){
-			IWorkspaceContextResolver resolver = IStructuredDocumentContextResolverFactory.INSTANCE.getWorkspaceContextResolver(sdContext);
-			_project = resolver != null ? resolver.getProject() : null; 
+	public List<IMetaDataEnabledFeature> getAttributeValueRuntimeTypeFeatureProcessors(
+			Class featureType, IStructuredDocumentContext sdContext,
+			String uri, String elementName, String attributeName) {
+		
+		// look up the attribute's runtime type from MD
+		IProject _project = null;
+		if (sdContext != null) {
+			IWorkspaceContextResolver resolver = IStructuredDocumentContextResolverFactory.INSTANCE
+					.getWorkspaceContextResolver(sdContext);
+			_project = resolver != null ? resolver.getProject() : null;
 		}
 		String _elem = elementName + "/" + attributeName;
 		String _uri = uri;
-		ITaglibDomainMetaDataModelContext modelContext = TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(_project, _uri);
-		Entity entity = TaglibDomainMetaDataQueryHelper.getEntity(modelContext, _elem);
-		Trait trait = null;
-		if (entity != null){
-			trait = TaglibDomainMetaDataQueryHelper.getTrait(entity, ATTRIBUTE_VALUE_RUNTIME_TYPE_PROP_NAME);
-		}
+		ITaglibDomainMetaDataModelContext modelContext = TaglibDomainMetaDataQueryHelper
+				.createMetaDataModelContext(_project, _uri);
+		Entity attrEntity = TaglibDomainMetaDataQueryHelper.getEntity(modelContext,
+				_elem);
+
+		if (attrEntity != null) 
+			return getAttributeValueRuntimeTypeFeatureProcessors(featureType, sdContext, attrEntity);
 		
-		if (trait==null){
+		return Collections.EMPTY_LIST;
+
+	}
+
+	/**
+	 * @param featureType
+	 * @param sdContext
+	 * @param attrEntity
+	 * @return returns null - if the metadata was not found <br>
+	 *         returns empty list - if not a
+	 *         <code>IMetaDataEnabledFeature</code> proccessor or is not valid
+	 *         or does not support the specified feature
+	 */
+	public List<IMetaDataEnabledFeature> getAttributeValueRuntimeTypeFeatureProcessors(
+			Class featureType, IStructuredDocumentContext sdContext,
+			Entity attrEntity) {
+		
+		List<IMetaDataEnabledFeature> retList = new ArrayList<IMetaDataEnabledFeature>(2);
+		Trait trait = TaglibDomainMetaDataQueryHelper.getTrait(attrEntity,
+				ATTRIBUTE_VALUE_RUNTIME_TYPE_PROP_NAME);
+
+		if (trait == null) {
 			return retList;
 		}
-		
+
 		String typeId = TraitValueHelper.getValueAsString(trait);
-		
-		//get the implementing class for the type
-		ITypeDescriptor type = AttributeValueRuntimeTypeFactory.getInstance().getType(typeId);
-		if (type != null){
-			TaglibMetadataContext context = new TaglibMetadataContext(uri, elementName, attributeName, entity, trait);
-			//get all the feature adapters (IMetaDataEnabledFeature) for this type
-			List aList = type.getFeatureAdapters(featureType);
-			for (int j=0;j<aList.size();j++){
-				//set the context in the feature
-				((IMetaDataEnabledFeature)aList.get(j)).setMetaDataContext(context);
-				((IMetaDataEnabledFeature)aList.get(j)).setStructuredDocumentContext(sdContext);
+
+		// get the implementing class for the type
+		ITypeDescriptor type = AttributeValueRuntimeTypeFactory.getInstance()
+				.getType(typeId);
+		if (type != null) {
+			TaglibMetadataContext context = new TaglibMetadataContext(attrEntity, trait);
+			// get all the feature adapters (IMetaDataEnabledFeature) for this
+			// type
+			List<IMetaDataEnabledFeature> aList = type.getFeatureAdapters(featureType);
+			for (int j = 0; j < aList.size(); j++) {
+				// set the context in the feature
+				((IMetaDataEnabledFeature) aList.get(j))
+						.setMetaDataContext(context);
+				((IMetaDataEnabledFeature) aList.get(j))
+						.setStructuredDocumentContext(sdContext);
 				retList.add(aList.get(j));
 			}
 
 		}
-		//return list of IMetaDataEnabledFeatures for this type
+		// return list of IMetaDataEnabledFeatures for this type
 		return retList;
-
 	}
 
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/TaglibMetadataContext.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/TaglibMetadataContext.java
index 89978e6..cc91c5b 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/TaglibMetadataContext.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/TaglibMetadataContext.java
@@ -38,6 +38,19 @@
 		this.tagName = tagName;
 		this.attributeName = attributeName;
 	}
+	
+	/**
+	 * Constructor
+	 * 
+	 * @param tagAttrEntity - must be tag attribute entity
+	 * @param trait
+	 */
+	public TaglibMetadataContext(Entity tagAttrEntity, Trait trait){
+		super(tagAttrEntity, trait);
+		this.uri = tagAttrEntity.getModel().getCurrentModelContext().getUri();
+		this.tagName = ((Entity)tagAttrEntity.eContainer()).getId();
+		this.attributeName = tagAttrEntity.getId();
+	}
 
 	/**
 	 * @return URI
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/internal/AbstractMetaDataEnabledTypeFactory.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/internal/AbstractMetaDataEnabledTypeFactory.java
index b03b522..6e2d1f4 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/internal/AbstractMetaDataEnabledTypeFactory.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/internal/AbstractMetaDataEnabledTypeFactory.java
@@ -50,7 +50,7 @@
 	
 	/**
 	 * @param type 
-	 * @return list of instances identified by the type id
+	 * @return instance of ITypeDescriptor identified by the type id
 	 */
 	public ITypeDescriptor getType(AbstractMetaDataEnabledType type){ 
 		
@@ -59,6 +59,15 @@
 	}
 
 	/**
+	 * @param type 
+	 * @return class identified by the type id
+	 */
+	public Class getClassForType(IType type){ 
+		return createTypeClass(type);
+
+	}
+	
+	/**
 	 * Creates instances of <code>ITypeDescriptor</code>s from 
 	 * <code>AbstractMetaDataEnabledType</code>s
 	 * 
@@ -67,7 +76,7 @@
 	 */
 	protected ITypeDescriptor createType(IType atype){
 		if (atype != null){
-			ITypeDescriptor desc = createDescriptor(atype);
+			ITypeDescriptor desc = createDescriptorInstance(atype);
 			if (desc != null){
 				desc.setTypeExtension(atype);
 				return desc;
@@ -77,7 +86,7 @@
 	}
 
 	
-	private ITypeDescriptor createDescriptor(IType type){
+	private Class createTypeClass(IType type){
 		String className = type.getClassName();
 		try {
 			Bundle bundle =Platform.getBundle(type.getBundleID());
@@ -90,12 +99,23 @@
 				//make sure the class can support the feature/extended interface
 				if (ITypeDescriptor.class.isAssignableFrom(klass))
                 {
-					return (ITypeDescriptor)klass.newInstance();
+					return klass;
                 }
                 JSFCorePlugin.log(IStatus.INFO, className + " was not found in " + type.getBundleID() +" for " + type.getTypeID());
 			}
 		} catch (ClassNotFoundException e) {
 			JSFCorePlugin.log(IStatus.ERROR, className + " was not found in " + type.getBundleID() +" for " + type.getTypeID());
+		}
+		return null;
+	}
+	
+	private ITypeDescriptor createDescriptorInstance(IType type){
+		String className = type.getClassName();
+		try {
+			Class klass = createTypeClass(type);
+			if (klass != null){
+				return (ITypeDescriptor)klass.newInstance();
+ 			}
 		} catch (InstantiationException e) {
 			JSFCorePlugin.log(IStatus.ERROR, "InstantiationException: " + className + " in " + type.getBundleID() +" for " + type.getTypeID());
 		} catch (IllegalAccessException e) {
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/internal/MetaDataEnabledFeatureAdapterFactory.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/internal/MetaDataEnabledFeatureAdapterFactory.java
index e821ec1..9cb0303 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/internal/MetaDataEnabledFeatureAdapterFactory.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/internal/MetaDataEnabledFeatureAdapterFactory.java
@@ -12,10 +12,15 @@
 
 package org.eclipse.jst.jsf.metadataprocessors.internal;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.jst.jsf.core.internal.JSFCorePlugin;
 import org.eclipse.jst.jsf.metadataprocessors.IMetaDataEnabledFeature;
+import org.eclipse.jst.jsf.metadataprocessors.IType;
+import org.eclipse.jst.jsf.metadataprocessors.ITypeDescriptor;
 import org.osgi.framework.Bundle;
 
 /**
@@ -27,7 +32,7 @@
  */
 public final class MetaDataEnabledFeatureAdapterFactory {
 	private static MetaDataEnabledFeatureAdapterFactory INSTANCE;
-	
+	private Map<String, Class> typesCache;
 	/**
 	 * @return singleton instance
 	 */
@@ -40,8 +45,10 @@
 	
 	private MetaDataEnabledFeatureAdapterFactory(){
 		super();
+		typesCache = new HashMap<String, Class>();
 	}
 	
+
 	/**
 	 * Given the feature extension, create and return the {@link IMetaDataEnabledFeature} for a given processing feature
 	 * @param feature
@@ -55,25 +62,89 @@
 		return null;
 	}
 
+	/**
+	 * Given the feature extension, create and return the {@link IMetaDataEnabledFeature} for a given processing feature if
+	 * that the type that the feature is bound to is a subclass of the the type
+	 * @param feature
+	 * @param processingFeature class
+	 * @param type
+	 * @return IMetaDataEnabledFeature.  <br>Will return null if the type that the feature extension is bound to, 
+	 * is not a subclass of the supplied type
+	 */
+	public IMetaDataEnabledFeature getFeatureAdapterForSubclass(IMetaDataEnabledFeatureExtension feature, Class processingFeature, IType type){ 
+		if (feature != null ){
+			ITypeDescriptor aType = AttributeValueRuntimeTypeFactory.getInstance().getType(feature.getTypeID());
+			Class klass = aType.getTypeExtension().getClass();
+			if (klass.asSubclass(type.getClass()) != null)
+				return createFeature(feature, processingFeature);			
+		}
+		return null;
+	}
+	
+//	private Class getOrCreateTypeClassFor(IMetaDataEnabledFeatureExtension featureExt){
+//		Class klass = null;
+//		String className;
+//		ITypeDescriptor type = AttributeValueRuntimeTypeFactory.getInstance().getType(featureExt.getTypeID());
+//		try {
+//			if (! typesCache.containsKey(featureExt.getTypeID())){
+//				Bundle bundle =Platform.getBundle(featureExt.getBundleID());
+//				if (bundle == null){
+//					JSFCorePlugin.log(IStatus.ERROR, featureExt.getBundleID() + " could not be created to load " + className);
+//					return null;
+//				}
+//				klass = bundle.loadClass(className);
+//				if (klass != null){
+//					typesCache.put(featureExt.getTypeID(), klass);
+//				}
+//			}
+//			else 
+//				klass = typesCache.get(featureExt.getTypeID());
+//			
+//			return klass;
+//			if (!IMetaDataEnabledFeature.class.isAssignableFrom(klass)){
+//				JSFCorePlugin.log(IStatus.INFO, className + " is not a IMetaDataEnabledFeature. " + featureExt.getBundleID() +" : " + featureExt.getTypeID());
+//			} 
+//			else if (klass != null && processingFeature.isAssignableFrom(klass)){
+//				IMetaDataEnabledFeature obj = (IMetaDataEnabledFeature)klass.newInstance();
+//				return obj;
+//			}
+//						
+//		} catch (ClassNotFoundException e) {
+//			JSFCorePlugin.log(IStatus.ERROR, className + " was not found in " + featureExt.getBundleID() +" for " + featureExt.getTypeID());
+//		} catch (InstantiationException e) {
+//			JSFCorePlugin.log(IStatus.ERROR, "InstantiationException: " + className + " in " + featureExt.getBundleID() +" for " + featureExt.getTypeID());
+//		} catch (IllegalAccessException e) {
+//			JSFCorePlugin.log(IStatus.ERROR,  "IllegalAccessException: " + className + " in " + featureExt.getBundleID() +" for " + featureExt.getTypeID());
+//		}
+//		return null;
+//	}
+	
 	private IMetaDataEnabledFeature createFeature(IMetaDataEnabledFeatureExtension featureExt, Class processingFeature){
 		String className = featureExt.getClassName();
+		Class klass = null;
 		try {
-			Bundle bundle =Platform.getBundle(featureExt.getBundleID());
-			if (bundle == null){
-				JSFCorePlugin.log(IStatus.ERROR, featureExt.getBundleID() + " could not be created to load " + className);
-				return null;
-			}
-			Class klass = bundle.loadClass(className);
-			if (klass != null){
-				if (!IMetaDataEnabledFeature.class.isAssignableFrom(klass)){
-					JSFCorePlugin.log(IStatus.INFO, className + " is not a IMetaDataEnabledFeature. " + featureExt.getBundleID() +" : " + featureExt.getTypeID());
-				} 
-				else if (processingFeature.isAssignableFrom(klass)){
-					IMetaDataEnabledFeature obj = (IMetaDataEnabledFeature)klass.newInstance();
-//					obj.setBundleID(featureExt.getBundleID());
-					return obj;
+			if (! typesCache.containsKey(featureExt.getTypeID())){
+				Bundle bundle =Platform.getBundle(featureExt.getBundleID());
+				if (bundle == null){
+					JSFCorePlugin.log(IStatus.ERROR, featureExt.getBundleID() + " could not be created to load " + className);
+					return null;
+				}
+				klass = bundle.loadClass(className);
+				if (klass != null){
+					typesCache.put(featureExt.getTypeID(), klass);
 				}
 			}
+			else 
+				klass = typesCache.get(featureExt.getTypeID());
+			
+			if (!IMetaDataEnabledFeature.class.isAssignableFrom(klass)){
+				JSFCorePlugin.log(IStatus.INFO, className + " is not a IMetaDataEnabledFeature. " + featureExt.getBundleID() +" : " + featureExt.getTypeID());
+			} 
+			else if (klass != null && processingFeature.isAssignableFrom(klass)){
+				IMetaDataEnabledFeature obj = (IMetaDataEnabledFeature)klass.newInstance();
+				return obj;
+			}
+						
 		} catch (ClassNotFoundException e) {
 			JSFCorePlugin.log(IStatus.ERROR, className + " was not found in " + featureExt.getBundleID() +" for " + featureExt.getTypeID());
 		} catch (InstantiationException e) {
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/internal/MetaDataEnabledFeatureRegistry.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/internal/MetaDataEnabledFeatureRegistry.java
index 47bb44b..adf895d 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/internal/MetaDataEnabledFeatureRegistry.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/internal/MetaDataEnabledFeatureRegistry.java
@@ -14,6 +14,7 @@
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -22,21 +23,19 @@
 import org.eclipse.core.runtime.InvalidRegistryObjectException;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.jst.jsf.core.internal.JSFCorePlugin;
+import org.eclipse.jst.jsf.metadataprocessors.IType;
 
 /**
  * Registry of <code>AbstractMetaDataEnabledType</code>s loaded from 
  * the <code>MetaDataEnabledFeatures</code> extension point
  * 
  * A map of features keyed by type id
- * 
- * @author Gerry Kessler - Oracle
  *
  */
 public class MetaDataEnabledFeatureRegistry{
 	private static final String EXTPTID = "MetaDataEnabledFeatures";
-	private Map featuresMap;
-	private List EMPTY_LIST = new ArrayList(0);
-	
+	private Map<String, List<IMetaDataEnabledFeatureExtension>> featuresMap;
+	private Map<String, Class> typeCacheMap;
 	private static MetaDataEnabledFeatureRegistry INSTANCE;
 	
 	/**
@@ -50,7 +49,8 @@
 	}
 	
 	private MetaDataEnabledFeatureRegistry(){
-		featuresMap = new HashMap();
+		featuresMap = new HashMap<String, List<IMetaDataEnabledFeatureExtension>>();
+		typeCacheMap = new HashMap<String, Class>();
 		readRegistry();		
 	}
 	
@@ -83,27 +83,91 @@
 	 */
 	protected void registerFeature(String bundleID, String typeId, String klass){
 		IMetaDataEnabledFeatureExtension aFeature = new MetaDataEnabledFeatureExtension(bundleID, typeId, klass);
-		if (!featuresMap.containsKey(typeId)){
-			List list = new ArrayList();
-			list.add(aFeature);
-			featuresMap.put(typeId, list);
+		if (canCreateTypeForFeatureExtension(aFeature)){
+			if (!featuresMap.containsKey(typeId)){
+				List list = new ArrayList();
+				list.add(aFeature);
+				featuresMap.put(typeId, list);
+			}
+			else {
+				List list = (List)featuresMap.get(typeId);
+				list.add(aFeature);
+			}
 		}
-		else {
-			List list = (List)featuresMap.get(typeId);
-			list.add(aFeature);
+	}
+
+
+	private boolean canCreateTypeForFeatureExtension(IMetaDataEnabledFeatureExtension feature) {
+		if (! typeCacheMap.containsKey(feature.getTypeID())){
+			IType type = AttributeValueRuntimeTypeRegistry.getInstance().getType(feature.getTypeID());
+			Class typeClass = AttributeValueRuntimeTypeFactory.getInstance().getClassForType(type);
+			typeCacheMap.put(feature.getTypeID(), typeClass);
 		}
+		return typeCacheMap.get(feature.getTypeID()) != null;
 	}
 
 	/**
 	 * @param typeId
 	 * @return List of <code>AbstractMetaDataEnabledRuntimeTypeExtensions</code>
 	 * for a given by type id
+	 * 
+	 * TODO: make more efficient... no need to keep calculating features for subtypes. 
 	 */
-	public List getFeatures(String typeId) {
-		if (featuresMap.containsKey(typeId))
-        {
-			return (List)featuresMap.get(typeId);			
-        }
-		return EMPTY_LIST;
+	public List<IMetaDataEnabledFeatureExtension> getFeatures(String typeId) {
+		
+		if (!featuresMap.containsKey(typeId))
+			featuresMap.put(typeId,new ArrayList());
+		
+		//copy current featuresMapped to typeId into return list
+		List<IMetaDataEnabledFeatureExtension> srcList = featuresMap.get(typeId);
+		List<IMetaDataEnabledFeatureExtension> ret = new ArrayList<IMetaDataEnabledFeatureExtension>(srcList.size());
+		copy(ret, srcList);	
+		
+		List subs = getFeatureExtensionsForMatchingSubclass(typeId);
+		for (Iterator<IMetaDataEnabledFeatureExtension> it=subs.iterator();it.hasNext();){
+			IMetaDataEnabledFeatureExtension featureExt = it.next();
+			if (!ret.contains(featureExt))
+				ret.add(featureExt);
+		}
+		return ret;
+		
 	}
+	
+	private void copy(List<IMetaDataEnabledFeatureExtension> destList,
+			List<IMetaDataEnabledFeatureExtension> srcList) {
+		for (Iterator<IMetaDataEnabledFeatureExtension> it=srcList.iterator();it.hasNext();){
+			destList.add(it.next());
+		}
+	}
+
+	/**
+	 * If the feature adapter is mapped to a type which is a superclass of the type of interest, then the feature adapter is an extension of that type
+	 * @param typeId
+	 * @return list of IMetaDataEnabledFeatureExtension
+	 */
+	private List<IMetaDataEnabledFeatureExtension> getFeatureExtensionsForMatchingSubclass(String typeId) {	
+		IType type = AttributeValueRuntimeTypeRegistry.getInstance().getType(typeId);
+		Class typeClass = AttributeValueRuntimeTypeFactory.getInstance().getClassForType(type);
+
+		List<IMetaDataEnabledFeatureExtension> ret = new ArrayList<IMetaDataEnabledFeatureExtension>();
+		// loop thru all of the type classes mapped to feature adapters that are subclasses of the type
+		for (Iterator it=typeCacheMap.keySet().iterator();it.hasNext();){
+			String featureTypeId = (String)it.next();
+			Class featureTypeClass = typeCacheMap.get(featureTypeId);
+			try {
+//				if (featureTypeClass.equals(typeClass)){
+//					ret.add(featureTypeClass);
+//				}
+//				else 
+					if (typeClass.asSubclass(featureTypeClass) != null)	{	
+					ret.addAll(featuresMap.get(featureTypeId));
+				}						
+			} catch (ClassCastException e) {//
+			}
+			
+		}
+		return ret;
+	}
+	
+
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ActionType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ActionType.java
index 7723b6d..08d7820 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ActionType.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ActionType.java
@@ -90,6 +90,9 @@
 	 */
 	public List getPossibleValues() {
 		List ret = new ArrayList();
+		if (getStructuredDocumentContext() == null)
+			return ret;
+		
 		IWorkspaceContextResolver wr = IStructuredDocumentContextResolverFactory.INSTANCE.getWorkspaceContextResolver(getStructuredDocumentContext());
 		if (wr != null && JSFAppConfigManager.getInstance(wr.getProject()) != null) {//may not be JSF faceted project or know faces-config){			
 			IFile jsp = (IFile)wr.getResource();
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/CharacterType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/CharacterType.java
new file mode 100644
index 0000000..d821c78
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/CharacterType.java
@@ -0,0 +1,41 @@
+package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jst.jsf.metadataprocessors.AbstractRootTypeDescriptor;
+import org.eclipse.jst.jsf.metadataprocessors.IMetaDataEnabledFeature;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidationMessage;
+import org.eclipse.jst.jsf.metadataprocessors.features.ValidationMessage;
+
+/**
+ * Represents a single unicode character
+ */
+public class CharacterType extends AbstractRootTypeDescriptor implements
+		IMetaDataEnabledFeature, IValidValues{
+
+	private List _msgs;
+
+	/**
+	 * Constructor
+	 */
+	public CharacterType() {
+		super();
+	}
+
+	public List<IValidationMessage> getValidationMessages() {
+		if (_msgs == null){
+			_msgs = new ArrayList<IValidationMessage>(1);
+		}
+		return _msgs;
+	}
+
+	public boolean isValidValue(String value) {
+		if (value.length() != 1)
+			getValidationMessages().add(new ValidationMessage(Messages.CharacterType_0));
+			
+		return getValidationMessages().size() == 0;
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ColorType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ColorType.java
index 916b277..897a399 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ColorType.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ColorType.java
@@ -36,8 +36,8 @@
 	 * List of standard colors
 	 * See http://www.w3.org/TR/html4/types.html#type-color
 	 */
-	private final static String[] COLORS = {"Black", "Silver", "Gray", "White", "Maroon", "Red", "Purple",
-				"Fuchsia", "Green", "Lime", "Olive", "Yellow", "Navy", "Blue", "Teal","Aqua"};
+	private final static String[] COLORS = {"Black", "Silver", "Gray", "White", "Maroon", "Red", "Purple", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
+				"Fuchsia", "Green", "Lime", "Olive", "Yellow", "Navy", "Blue", "Teal","Aqua"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$
 		//if ordering changes, must change RGB[] ordering
 
 	private RGB[] _rgb;
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ComponentIDType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ComponentIDType.java
index 016d21b..82c9957 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ComponentIDType.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ComponentIDType.java
@@ -1,12 +1,12 @@
 /*******************************************************************************
- * Copyright (c) 2006 Oracle Corporation.
+ * Copyright (c) 2006, 2007 Oracle Corporation.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *    Gerry Kessler/Oracle - initial API and implementation
+ *    Oracle - initial API and implementation
  *    
  ********************************************************************************/
 package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
@@ -21,13 +21,22 @@
 
 /**
  * Meta-data processing type representing an "id" attribute
+ * Represents an ID or NAME HTML attribute type.
+ * <br>
+ * Attribute values of type ID and NAME must begin with a letter in the range A-Z or a-z or underscore ("_") and 
+ * may be followed by letters (A-Z, a-z), digits (0-9), hyphens ("-"), underscores ("_"), colons (":"),
+ * and periods ("."). 
  * 
  * <p><b>Provisional API - subject to change</b></p>
  * @author Gerry Kessler - Oracle
+ * TODO: finish regex validation
  */
 public class ComponentIDType extends ValueBindingType implements
 		IValidValues, IValidELValues {
 
+//	private static Pattern idPattern1 = Pattern.compile("[A-Za-z_]");;
+//	private static Pattern idPattern2 = Pattern.compile("^[:\\w\\.\\-]*");
+	
 	/* (non-Javadoc)
 	 * @see org.eclipse.jst.jsf.taglibprocessing.attributevalues.ValueBindingType#getExpectedRuntimeType()
 	 */
@@ -49,5 +58,23 @@
 		}			
 		getValidationMessages().add(msg);
 		return false;
+
+//		if (value != null && value.trim().length() == 0)
+//			msg = new ValidationMessage(Messages.ComponentIDType_invalid_value);
+//
+////		else if (!idPattern.matcher(value.trim()).find())
+////			fail = true;
+//		else if (!idPattern1.matcher(value.trim().substring(0, 1)).find())
+//			msg = new ValidationMessage("id must begin with alpha character");
+//		else if ((value.trim().length() > 1) && (!( idPattern2.matcher(value.trim().substring(1)).find())))
+//			msg = new ValidationMessage("illegal characters in id: must be alphanum, period, colon, and hyphen only");
+//		else {
+//			//we could validate uniqueness, but will not for the time being.  This would require a DT FacesContext.
+//			//any other coercion rules apply here?		
+//		}
+//		if (msg != null)
+//			getValidationMessages().add(msg);
+//			
+//		return getValidationMessages().size() == 0;
 	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ContentType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ContentType.java
new file mode 100644
index 0000000..4fb9ec4
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ContentType.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation., and others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Yury Kats/Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.PossibleValue;
+
+/**
+ * Meta-data processing type representing a content (MIME) type.
+ * A ContentType is defined as in 4.0 html spec http://www.w3.org/TR/html401/types.html#h-6.7
+ * 
+ * <p><b>Provisional API - subject to change</b></p>
+ */
+
+public class ContentType extends EnumerationType implements IPossibleValues {
+	
+	/**
+	 * List of some of the more common content (MIME) types
+	 * See http://www.w3.org/TR/html4/types.html#type-color
+	 */
+	private final static String[] commontypes = {
+		"text/html",  //$NON-NLS-1$
+		"text/css",  //$NON-NLS-1$
+		"image/jpeg",  //$NON-NLS-1$
+		"image/gif",  //$NON-NLS-1$
+		"audio/mpeg",  //$NON-NLS-1$
+		"video/mpeg", //$NON-NLS-1$
+		"video/quicktime",  //$NON-NLS-1$
+		"text/javascript" //$NON-NLS-1$
+	};
+
+	protected String getReturnType(){ return "java.lang.String";} //$NON-NLS-1$
+
+	public boolean isValidValue(String value) {	
+		boolean bValid = true;
+		if (value == null || value.trim().length() == 0)
+			bValid = false;
+		
+		if(!bValid) {
+			addNewValidationMessage(Messages.ContentType_MIME_not_empty);
+		}
+		
+		return getValidationMessages().isEmpty();
+	}
+
+	public List getPossibleValues() {
+		List ret = new ArrayList(commontypes.length);
+		for (int i=0;i < commontypes.length;i++){
+			PossibleValue pv = new PossibleValue(commontypes[i]);
+			ret.add(pv);
+		}
+		return ret;
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/CurrencyCodeType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/CurrencyCodeType.java
new file mode 100644
index 0000000..1dd639f
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/CurrencyCodeType.java
@@ -0,0 +1,229 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation., and others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.PossibleValue;
+
+/**
+ * ISO-4217 Currency codes 
+ */
+public class CurrencyCodeType extends EnumerationType implements IPossibleValues {
+	private static final CurrencyCodeMap _map = new CurrencyCodeMap();
+
+	@Override
+	protected String getReturnType() {
+		return "java.lang.String"; //$NON-NLS-1$
+	}
+
+	public List getPossibleValues() {
+		List ret = new ArrayList();
+		for(Iterator it = _map.keySet().iterator();it.hasNext();){
+			String key = (String)it.next();
+			String value = _map.get(key);
+			PossibleValue pv = new PossibleValue(key, value);
+			ret.add(pv);
+		}
+		return ret;
+	}
+
+	public boolean isValidValue(String value) {
+		if(!_map.containsKey(value.toUpperCase())) {
+			addNewValidationMessage(Messages.CurrencyCodeType_invalid);
+		}
+
+		return getValidationMessages().isEmpty();
+	}
+
+	private static class CurrencyCodeMap extends HashMap<String, String> {
+		CurrencyCodeMap(){
+			put("AED",Messages.CurrencyCodeType_2); //$NON-NLS-1$ 
+			put("AFA",Messages.CurrencyCodeType_3); //$NON-NLS-1$ 
+			put("ALL",Messages.CurrencyCodeType_4); //$NON-NLS-1$ 
+			put("AMD",Messages.CurrencyCodeType_5); //$NON-NLS-1$ 
+			put("ANG",Messages.CurrencyCodeType_6); //$NON-NLS-1$ 
+			put("AOA",Messages.CurrencyCodeType_7); //$NON-NLS-1$ 
+			put("ARS",Messages.CurrencyCodeType_8); //$NON-NLS-1$ 
+			put("AUD",Messages.CurrencyCodeType_9); //$NON-NLS-1$ 
+			put("AWG",Messages.CurrencyCodeType_10); //$NON-NLS-1$ 
+			put("AZM",Messages.CurrencyCodeType_11); //$NON-NLS-1$ 
+			put("BAM",Messages.CurrencyCodeType_12); //$NON-NLS-1$ 
+			put("BBD",Messages.CurrencyCodeType_13); //$NON-NLS-1$ 
+			put("BDT",Messages.CurrencyCodeType_14); //$NON-NLS-1$ 
+			put("BGN",Messages.CurrencyCodeType_15); //$NON-NLS-1$ 
+			put("BHD",Messages.CurrencyCodeType_16); //$NON-NLS-1$ 
+			put("BIF",Messages.CurrencyCodeType_17); //$NON-NLS-1$ 
+			put("BMD",Messages.CurrencyCodeType_18); //$NON-NLS-1$ 
+			put("BND",Messages.CurrencyCodeType_19); //$NON-NLS-1$ 
+			put("BOB",Messages.CurrencyCodeType_20); //$NON-NLS-1$ 
+			put("BRL",Messages.CurrencyCodeType_21); //$NON-NLS-1$ 
+			put("BSD",Messages.CurrencyCodeType_22); //$NON-NLS-1$ 
+			put("BTN",Messages.CurrencyCodeType_23); //$NON-NLS-1$ 
+			put("BWP",Messages.CurrencyCodeType_24); //$NON-NLS-1$ 
+			put("BYR",Messages.CurrencyCodeType_25); //$NON-NLS-1$ 
+			put("BZD",Messages.CurrencyCodeType_26); //$NON-NLS-1$ 
+			put("CAD",Messages.CurrencyCodeType_27); //$NON-NLS-1$ 
+			put("CDF",Messages.CurrencyCodeType_28); //$NON-NLS-1$ 
+			put("CHF",Messages.CurrencyCodeType_29); //$NON-NLS-1$ 
+			put("CLP",Messages.CurrencyCodeType_30); //$NON-NLS-1$ 
+			put("CNY",Messages.CurrencyCodeType_31); //$NON-NLS-1$ 
+			put("COP",Messages.CurrencyCodeType_32); //$NON-NLS-1$ 
+			put("CRC",Messages.CurrencyCodeType_33); //$NON-NLS-1$ 
+			put("CSD",Messages.CurrencyCodeType_34); //$NON-NLS-1$ 
+			put("CUP",Messages.CurrencyCodeType_35); //$NON-NLS-1$ 
+			put("CVE",Messages.CurrencyCodeType_36); //$NON-NLS-1$ 
+			put("CYP",Messages.CurrencyCodeType_37); //$NON-NLS-1$ 
+			put("CZK",Messages.CurrencyCodeType_38); //$NON-NLS-1$ 
+			put("DJF",Messages.CurrencyCodeType_39); //$NON-NLS-1$ 
+			put("DKK",Messages.CurrencyCodeType_40); //$NON-NLS-1$ 
+			put("DOP",Messages.CurrencyCodeType_41); //$NON-NLS-1$ 
+			put("DZD",Messages.CurrencyCodeType_42); //$NON-NLS-1$ 
+			put("EEK",Messages.CurrencyCodeType_43); //$NON-NLS-1$ 
+			put("EGP",Messages.CurrencyCodeType_44); //$NON-NLS-1$ 
+			put("ERN",Messages.CurrencyCodeType_45); //$NON-NLS-1$ 
+			put("ETB",Messages.CurrencyCodeType_46); //$NON-NLS-1$ 
+			put("EUR",Messages.CurrencyCodeType_47); //$NON-NLS-1$ 
+			put("FJD",Messages.CurrencyCodeType_48); //$NON-NLS-1$ 
+			put("FKP",Messages.CurrencyCodeType_49); //$NON-NLS-1$ 
+			put("GBP",Messages.CurrencyCodeType_50); //$NON-NLS-1$ 
+			put("GEL",Messages.CurrencyCodeType_51); //$NON-NLS-1$ 
+			put("GGP",Messages.CurrencyCodeType_52); //$NON-NLS-1$ 
+			put("GHC",Messages.CurrencyCodeType_53); //$NON-NLS-1$ 
+			put("GIP",Messages.CurrencyCodeType_54); //$NON-NLS-1$ 
+			put("GMD",Messages.CurrencyCodeType_55); //$NON-NLS-1$ 
+			put("GNF",Messages.CurrencyCodeType_56); //$NON-NLS-1$ 
+			put("GTQ",Messages.CurrencyCodeType_57); //$NON-NLS-1$ 
+			put("GYD",Messages.CurrencyCodeType_58); //$NON-NLS-1$ 
+			put("HKD",Messages.CurrencyCodeType_59); //$NON-NLS-1$ 
+			put("HNL",Messages.CurrencyCodeType_60); //$NON-NLS-1$ 
+			put("HRK",Messages.CurrencyCodeType_61); //$NON-NLS-1$ 
+			put("HTG",Messages.CurrencyCodeType_62); //$NON-NLS-1$ 
+			put("HUF",Messages.CurrencyCodeType_63); //$NON-NLS-1$ 
+			put("IDR",Messages.CurrencyCodeType_64); //$NON-NLS-1$ 
+			put("ILS",Messages.CurrencyCodeType_65); //$NON-NLS-1$ 
+			put("IMP",Messages.CurrencyCodeType_66); //$NON-NLS-1$ 
+			put("INR",Messages.CurrencyCodeType_67); //$NON-NLS-1$ 
+			put("IQD",Messages.CurrencyCodeType_68); //$NON-NLS-1$ 
+			put("IRR",Messages.CurrencyCodeType_69); //$NON-NLS-1$ 
+			put("ISK",Messages.CurrencyCodeType_70); //$NON-NLS-1$ 
+			put("JEP",Messages.CurrencyCodeType_71); //$NON-NLS-1$ 
+			put("JMD",Messages.CurrencyCodeType_72); //$NON-NLS-1$ 
+			put("JOD",Messages.CurrencyCodeType_73); //$NON-NLS-1$ 
+			put("JPY",Messages.CurrencyCodeType_74); //$NON-NLS-1$ 
+			put("KES",Messages.CurrencyCodeType_75); //$NON-NLS-1$ 
+			put("KGS",Messages.CurrencyCodeType_76); //$NON-NLS-1$ 
+			put("KHR",Messages.CurrencyCodeType_77); //$NON-NLS-1$ 
+			put("KMF",Messages.CurrencyCodeType_78); //$NON-NLS-1$ 
+			put("KPW",Messages.CurrencyCodeType_79); //$NON-NLS-1$ 
+			put("KRW",Messages.CurrencyCodeType_80); //$NON-NLS-1$ 
+			put("KWD",Messages.CurrencyCodeType_81); //$NON-NLS-1$ 
+			put("KYD",Messages.CurrencyCodeType_82); //$NON-NLS-1$ 
+			put("KZT",Messages.CurrencyCodeType_83); //$NON-NLS-1$ 
+			put("LAK",Messages.CurrencyCodeType_84); //$NON-NLS-1$ 
+			put("LBP",Messages.CurrencyCodeType_85); //$NON-NLS-1$ 
+			put("LKR",Messages.CurrencyCodeType_86); //$NON-NLS-1$ 
+			put("LRD",Messages.CurrencyCodeType_87); //$NON-NLS-1$ 
+			put("LSL",Messages.CurrencyCodeType_88); //$NON-NLS-1$ 
+			put("LTL",Messages.CurrencyCodeType_89); //$NON-NLS-1$ 
+			put("LVL",Messages.CurrencyCodeType_90); //$NON-NLS-1$ 
+			put("LYD",Messages.CurrencyCodeType_91); //$NON-NLS-1$ 
+			put("MAD",Messages.CurrencyCodeType_92); //$NON-NLS-1$ 
+			put("MDL",Messages.CurrencyCodeType_93); //$NON-NLS-1$ 
+			put("MGA",Messages.CurrencyCodeType_94); //$NON-NLS-1$ 
+			put("MKD",Messages.CurrencyCodeType_95); //$NON-NLS-1$ 
+			put("MMK",Messages.CurrencyCodeType_96); //$NON-NLS-1$ 
+			put("MNT",Messages.CurrencyCodeType_97); //$NON-NLS-1$ 
+			put("MOP",Messages.CurrencyCodeType_98); //$NON-NLS-1$ 
+			put("MRO",Messages.CurrencyCodeType_99); //$NON-NLS-1$ 
+			put("MTL",Messages.CurrencyCodeType_100); //$NON-NLS-1$ 
+			put("MUR",Messages.CurrencyCodeType_101); //$NON-NLS-1$ 
+			put("MVR",Messages.CurrencyCodeType_102); //$NON-NLS-1$ 
+			put("MWK",Messages.CurrencyCodeType_103); //$NON-NLS-1$ 
+			put("MXN",Messages.CurrencyCodeType_104); //$NON-NLS-1$ 
+			put("MYR",Messages.CurrencyCodeType_105); //$NON-NLS-1$ 
+			put("MZM",Messages.CurrencyCodeType_106); //$NON-NLS-1$ 
+			put("NAD",Messages.CurrencyCodeType_107); //$NON-NLS-1$ 
+			put("NGN",Messages.CurrencyCodeType_108); //$NON-NLS-1$ 
+			put("NIO",Messages.CurrencyCodeType_109); //$NON-NLS-1$ 
+			put("NOK",Messages.CurrencyCodeType_110); //$NON-NLS-1$ 
+			put("NPR",Messages.CurrencyCodeType_111); //$NON-NLS-1$ 
+			put("NZD",Messages.CurrencyCodeType_112); //$NON-NLS-1$ 
+			put("OMR",Messages.CurrencyCodeType_113); //$NON-NLS-1$ 
+			put("PAB",Messages.CurrencyCodeType_114); //$NON-NLS-1$ 
+			put("PEN",Messages.CurrencyCodeType_115); //$NON-NLS-1$ 
+			put("PGK",Messages.CurrencyCodeType_116); //$NON-NLS-1$ 
+			put("PHP",Messages.CurrencyCodeType_117); //$NON-NLS-1$ 
+			put("PKR",Messages.CurrencyCodeType_118); //$NON-NLS-1$ 
+			put("PLN",Messages.CurrencyCodeType_119); //$NON-NLS-1$ 
+			put("PYG",Messages.CurrencyCodeType_120); //$NON-NLS-1$ 
+			put("QAR",Messages.CurrencyCodeType_121); //$NON-NLS-1$ 
+			put("ROL",Messages.CurrencyCodeType_122); //$NON-NLS-1$ 
+			put("RUB",Messages.CurrencyCodeType_123); //$NON-NLS-1$ 
+			put("RWF",Messages.CurrencyCodeType_124); //$NON-NLS-1$ 
+			put("SAR",Messages.CurrencyCodeType_125); //$NON-NLS-1$ 
+			put("SBD",Messages.CurrencyCodeType_126); //$NON-NLS-1$ 
+			put("SCR",Messages.CurrencyCodeType_127); //$NON-NLS-1$ 
+			put("SDD",Messages.CurrencyCodeType_128); //$NON-NLS-1$ 
+			put("SEK",Messages.CurrencyCodeType_129); //$NON-NLS-1$ 
+			put("SGD",Messages.CurrencyCodeType_130); //$NON-NLS-1$ 
+			put("SHP",Messages.CurrencyCodeType_131); //$NON-NLS-1$ 
+			put("SIT",Messages.CurrencyCodeType_132); //$NON-NLS-1$ 
+			put("SKK",Messages.CurrencyCodeType_133); //$NON-NLS-1$ 
+			put("SLL",Messages.CurrencyCodeType_134); //$NON-NLS-1$ 
+			put("SOS",Messages.CurrencyCodeType_135); //$NON-NLS-1$ 
+			put("SPL",Messages.CurrencyCodeType_136); //$NON-NLS-1$ 
+			put("SRD",Messages.CurrencyCodeType_137); //$NON-NLS-1$ 
+			put("STD",Messages.CurrencyCodeType_138); //$NON-NLS-1$ 
+			put("SVC",Messages.CurrencyCodeType_139); //$NON-NLS-1$ 
+			put("SYP",Messages.CurrencyCodeType_140); //$NON-NLS-1$ 
+			put("SZL",Messages.CurrencyCodeType_141); //$NON-NLS-1$ 
+			put("THB",Messages.CurrencyCodeType_142); //$NON-NLS-1$ 
+			put("TJS",Messages.CurrencyCodeType_143); //$NON-NLS-1$ 
+			put("TMM",Messages.CurrencyCodeType_144); //$NON-NLS-1$ 
+			put("TND",Messages.CurrencyCodeType_145); //$NON-NLS-1$ 
+			put("TOP",Messages.CurrencyCodeType_146); //$NON-NLS-1$ 
+			put("TRL",Messages.CurrencyCodeType_147); //$NON-NLS-1$ 
+			put("TRY",Messages.CurrencyCodeType_148); //$NON-NLS-1$ 
+			put("TTD",Messages.CurrencyCodeType_149); //$NON-NLS-1$ 
+			put("TVD",Messages.CurrencyCodeType_150); //$NON-NLS-1$ 
+			put("TWD",Messages.CurrencyCodeType_151); //$NON-NLS-1$ 
+			put("TZS",Messages.CurrencyCodeType_152); //$NON-NLS-1$ 
+			put("UAH",Messages.CurrencyCodeType_153); //$NON-NLS-1$ 
+			put("UGX",Messages.CurrencyCodeType_154); //$NON-NLS-1$ 
+			put("USD",Messages.CurrencyCodeType_155); //$NON-NLS-1$ 
+			put("UYU",Messages.CurrencyCodeType_156); //$NON-NLS-1$ 
+			put("UZS",Messages.CurrencyCodeType_157); //$NON-NLS-1$ 
+			put("VEB",Messages.CurrencyCodeType_158); //$NON-NLS-1$ 
+			put("VND",Messages.CurrencyCodeType_159); //$NON-NLS-1$ 
+			put("VUV",Messages.CurrencyCodeType_160); //$NON-NLS-1$ 
+			put("WST",Messages.CurrencyCodeType_161); //$NON-NLS-1$ 
+			put("XAF",Messages.CurrencyCodeType_162); //$NON-NLS-1$ 
+			put("XAG",Messages.CurrencyCodeType_163); //$NON-NLS-1$ 
+			put("XAU",Messages.CurrencyCodeType_164); //$NON-NLS-1$ 
+			put("XCD",Messages.CurrencyCodeType_165); //$NON-NLS-1$ 
+			put("XDR",Messages.CurrencyCodeType_166); //$NON-NLS-1$ 
+			put("XOF",Messages.CurrencyCodeType_167); //$NON-NLS-1$ 
+			put("XPD",Messages.CurrencyCodeType_168); //$NON-NLS-1$ 
+			put("XPF",Messages.CurrencyCodeType_169); //$NON-NLS-1$ 
+			put("XPT",Messages.CurrencyCodeType_170); //$NON-NLS-1$ 
+			put("YER",Messages.CurrencyCodeType_171); //$NON-NLS-1$ 
+			put("ZAR",Messages.CurrencyCodeType_172); //$NON-NLS-1$ 
+			put("ZMK",Messages.CurrencyCodeType_173); //$NON-NLS-1$ 
+			put("ZWD",Messages.CurrencyCodeType_174); //$NON-NLS-1$ 
+		}
+	}
+}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/DateTimePatternType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/DateTimePatternType.java
new file mode 100644
index 0000000..42eaf82
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/DateTimePatternType.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation., and others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jst.jsf.context.resolver.structureddocument.IDOMContextResolver;
+import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
+import org.eclipse.jst.jsf.metadataprocessors.AbstractRootTypeDescriptor;
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.PossibleValue;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Node;
+
+/**
+ * Meta-data processing type representing a Date, Time and DateTime Pattern types.
+ * 
+ * <p><b>Provisional API - subject to change</b></p>
+ * 
+ */
+
+public class DateTimePatternType extends AbstractRootTypeDescriptor implements IPossibleValues{
+	//should we ever validate the patterns, extend EnumerationType
+	final private static String[] DATEPATTERNS = {"M/d/yy", "EEE, M/d/yy", "MM/dd/yyyy", "EEE, MM/dd/yyyy", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
+        "MMM d, yyyy", "EEE, MMM d, yyyy", "MMMM d, yyyy", "EEEE, MMMM d, yyyy", "MMMM yyyy" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ };
+	};
+	
+	final private static String[] TIMEPATTERNS     = {"hh:mm", "hh:mm z", "HH:mm z", "HH:mm:ss z" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
+	};
+	  
+	final private static String[] DATETIMEPATTERNS = {"M/d/yy hh:mm", "EEE, M/d/yy hh:mm", "MM/dd/yyyy HH:mm:ss z", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+		"EEE, MM/dd/yyyy HH:mm:ss z", "MMM d, yyyy HH:mm z", "EEE, MMM d, yyyy HH:mm z", "MMMM d, yyyy HH:mm z", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+		"EEEE, MMMM d, yyyy HH:mm z" //$NON-NLS-1$
+	};
+
+	public List getPossibleValues() {
+		List ret = new ArrayList();		
+		String typeVal = getTypeValue();
+		if ("date".equalsIgnoreCase(typeVal)){ //$NON-NLS-1$
+			for (int i=0;i<DATEPATTERNS.length;i++){
+				ret.add(new PossibleValue(DATEPATTERNS[i]));
+			}
+		}
+		else if ("time".equalsIgnoreCase(typeVal)){ //$NON-NLS-1$
+			for (int i=0;i<TIMEPATTERNS.length;i++){
+				ret.add(new PossibleValue(TIMEPATTERNS[i]));
+			}
+		}
+		else {	
+			for (int i=0;i<DATETIMEPATTERNS.length;i++){
+				ret.add(new PossibleValue(DATETIMEPATTERNS[i]));
+			}
+		}
+		return ret;
+	}
+
+	private String getTypeValue() {
+		if (getStructuredDocumentContext() != null){
+			IDOMContextResolver resolver = IStructuredDocumentContextResolverFactory.INSTANCE.getDOMContextResolver(getStructuredDocumentContext());
+			if (resolver != null){
+				Node tagNode = resolver.getNode();
+				Attr typeNode = (Attr)tagNode.getAttributes().getNamedItem("type"); //$NON-NLS-1$
+				if (typeNode != null)
+					return typeNode.getValue();
+				
+			}
+		}
+		return ""; //$NON-NLS-1$
+	}
+
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/LanguageCodeType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/LanguageCodeType.java
new file mode 100644
index 0000000..5fd4cb5
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/LanguageCodeType.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation., and others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.PossibleValue;
+
+/**
+ * Meta-data processing type representing a Language Code type.
+ * A Language code is defined as in html spec http://www.w3.org/TR/html4/types.html#h-6.8
+ * 
+ * <p><b>Provisional API - subject to change</b></p>
+ * 
+ */
+
+public class LanguageCodeType extends EnumerationType implements IPossibleValues {
+	private static final LanguageCodeMap _map = new LanguageCodeMap();
+	
+	@Override
+	protected String getReturnType() {
+		return "java.lang.String"; //$NON-NLS-1$
+	}
+
+	public List getPossibleValues() {
+		List ret = new ArrayList();		
+		for(Iterator it = _map.keySet().iterator();it.hasNext();){
+			String key = (String)it.next();
+			String value = _map.get(key);
+			PossibleValue pv = new PossibleValue(key, value);
+			ret.add(pv);
+		}
+		return ret;
+	}
+
+	public boolean isValidValue(String value) {
+		if(!_map.containsKey(value)) {
+			addNewValidationMessage(Messages.LanguageCodeType_1);
+		}
+		
+		return getValidationMessages().isEmpty();
+	}
+	
+	/**
+	 * Defines language code map
+	 *
+	 */
+	private static class LanguageCodeMap extends HashMap<String, String> {
+		LanguageCodeMap() {
+			put("af", Messages.LanguageCodeType_118); //$NON-NLS-1$
+			put("ar", Messages.LanguageCodeType_0); //$NON-NLS-1$
+			put("be", Messages.LanguageCodeType_7); //$NON-NLS-1$
+			put("bg", Messages.LanguageCodeType_9); //$NON-NLS-1$
+			put("br", Messages.LanguageCodeType_11); //$NON-NLS-1$
+			put("ca", Messages.LanguageCodeType_13); //$NON-NLS-1$
+			put("cs", Messages.LanguageCodeType_15); //$NON-NLS-1$
+			put("da", Messages.LanguageCodeType_17); //$NON-NLS-1$
+			put("de", Messages.LanguageCodeType_19); //$NON-NLS-1$
+			put("el", Messages.LanguageCodeType_21); //$NON-NLS-1$
+			put("en", Messages.LanguageCodeType_23); //$NON-NLS-1$
+			put("es", Messages.LanguageCodeType_25); //$NON-NLS-1$
+			put("et", Messages.LanguageCodeType_27); //$NON-NLS-1$
+			put("eu", Messages.LanguageCodeType_29); //$NON-NLS-1$
+			put("fa", Messages.LanguageCodeType_31); //$NON-NLS-1$
+			put("fi", Messages.LanguageCodeType_33); //$NON-NLS-1$
+			put("fo", Messages.LanguageCodeType_35); //$NON-NLS-1$
+			put("fr", Messages.LanguageCodeType_37); //$NON-NLS-1$
+			put("gd", Messages.LanguageCodeType_39); //$NON-NLS-1$
+			put("he", Messages.LanguageCodeType_41); //$NON-NLS-1$
+			put("hi", Messages.LanguageCodeType_43); //$NON-NLS-1$
+			put("hr", Messages.LanguageCodeType_45); //$NON-NLS-1$
+			put("hu", Messages.LanguageCodeType_47); //$NON-NLS-1$
+			put("id", Messages.LanguageCodeType_49); //$NON-NLS-1$
+			put("is", Messages.LanguageCodeType_51); //$NON-NLS-1$
+			put("it", Messages.LanguageCodeType_53); //$NON-NLS-1$
+			put("ja", Messages.LanguageCodeType_55); //$NON-NLS-1$
+			put("ko", Messages.LanguageCodeType_57); //$NON-NLS-1$
+			put("lt", Messages.LanguageCodeType_59); //$NON-NLS-1$
+			put("lv", Messages.LanguageCodeType_61); //$NON-NLS-1$
+			put("mk", Messages.LanguageCodeType_63); //$NON-NLS-1$
+			put("ms", Messages.LanguageCodeType_65); //$NON-NLS-1$
+			put("mt", Messages.LanguageCodeType_67); //$NON-NLS-1$
+			put("nl", Messages.LanguageCodeType_69); //$NON-NLS-1$
+			put("no", Messages.LanguageCodeType_71); //$NON-NLS-1$
+			put("pl", Messages.LanguageCodeType_73); //$NON-NLS-1$
+			put("pt", Messages.LanguageCodeType_75); //$NON-NLS-1$
+			put("rm", Messages.LanguageCodeType_77); //$NON-NLS-1$
+			put("ro", Messages.LanguageCodeType_79); //$NON-NLS-1$
+			put("ru", Messages.LanguageCodeType_81); //$NON-NLS-1$
+			put("sk", Messages.LanguageCodeType_83); //$NON-NLS-1$
+			put("sl", Messages.LanguageCodeType_85); //$NON-NLS-1$
+			put("sq", Messages.LanguageCodeType_87); //$NON-NLS-1$
+			put("sr", Messages.LanguageCodeType_89); //$NON-NLS-1$
+			put("sv", Messages.LanguageCodeType_91); //$NON-NLS-1$
+			put("sx", Messages.LanguageCodeType_93); //$NON-NLS-1$
+			put("sz", Messages.LanguageCodeType_95); //$NON-NLS-1$
+			put("th", Messages.LanguageCodeType_97); //$NON-NLS-1$
+			put("tn", Messages.LanguageCodeType_99); //$NON-NLS-1$
+			put("tr", Messages.LanguageCodeType_101); //$NON-NLS-1$
+			put("ts", Messages.LanguageCodeType_103); //$NON-NLS-1$
+			put("uk", Messages.LanguageCodeType_105); //$NON-NLS-1$
+			put("ur", Messages.LanguageCodeType_107); //$NON-NLS-1$
+			put("vi", Messages.LanguageCodeType_109); //$NON-NLS-1$
+			put("xh", Messages.LanguageCodeType_111); //$NON-NLS-1$
+			put("yi", Messages.LanguageCodeType_113); //$NON-NLS-1$
+			put("zh", Messages.LanguageCodeType_115); //$NON-NLS-1$
+			put("zu", Messages.LanguageCodeType_117);			 //$NON-NLS-1$
+		}
+		
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/LengthType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/LengthType.java
index bad4083..70c5069 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/LengthType.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/LengthType.java
@@ -25,6 +25,8 @@
 	 * @see org.eclipse.jst.jsf.metadataprocessors.features.IValidValues#isValidValue(java.lang.String)
 	 **/
 	public boolean isValidValue(String value) {	
+		//FIXME:  this is not right... px, em, etc. are also valid... and spaces between # and units are not
+		//see http://www.w3.org/TR/html401/types.html#h-6.6
 		if (value == null) return true;
 		String aValue = stripPercentIfPresent(value);		
 		try {
@@ -44,7 +46,7 @@
 		//"%" is allowed at end
 		if (value.length() > 0
 			&& value.lastIndexOf('%') == value.length() - 1)
-				return value.replaceFirst("%","");
+				return value.replaceFirst("%",""); //$NON-NLS-1$ //$NON-NLS-2$
 		
 		return value;
 	}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/LinkType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/LinkType.java
new file mode 100644
index 0000000..ead9b79
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/LinkType.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation., and others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.PossibleValue;
+
+/**
+ * Meta-data processing type representing a Link type.
+ * 
+ * Possible values are only common types; not all
+ * Valid values just checks for a non-empty value, and not against known link types
+ * 
+ * <p><b>Provisional API - subject to change</b></p>
+ * 
+ */
+
+public class LinkType extends EnumerationType implements IPossibleValues{
+	//common link types
+	private String[] _linkTypes = new String[]{
+			"Alternate", //$NON-NLS-1$
+			"Stylesheet", //$NON-NLS-1$
+			"Start", //$NON-NLS-1$
+			"Next", //$NON-NLS-1$
+			"Prev", //$NON-NLS-1$
+			"Contents", //$NON-NLS-1$
+			"Index", //$NON-NLS-1$
+			"Glossary", //$NON-NLS-1$
+			"Copyright", //$NON-NLS-1$
+			"Chapter", //$NON-NLS-1$
+			"Section", //$NON-NLS-1$
+			"Subsection", //$NON-NLS-1$
+			"Appendix", //$NON-NLS-1$
+			"Help", //$NON-NLS-1$
+			"Bookmark" //$NON-NLS-1$
+		};
+	
+	
+	@Override
+	protected String getReturnType() {
+		return "java.lang.String"; //$NON-NLS-1$
+	}
+
+	public List getPossibleValues() {
+		List ret = new ArrayList();		
+		for(int i=0;i<_linkTypes.length;i++){
+			PossibleValue pv = new PossibleValue(_linkTypes[i].toString(), _linkTypes[i].toString());
+			ret.add(pv);
+		}
+		return ret;
+	}
+
+	public boolean isValidValue(String value) {
+		if (value == null || value.trim().length() == 0){
+			addNewValidationMessage(Messages.LinkType_16);
+			return false;
+		}
+		return true;
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/LocaleType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/LocaleType.java
new file mode 100644
index 0000000..09ebaf0
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/LocaleType.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation., and others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Locale;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValue;
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidELValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.PossibleValue;
+import org.eclipse.jst.jsf.metadataprocessors.features.ValidationMessage;
+
+/**
+ * Meta-data processing type representing a Locale Code type.
+ * 
+ * <p><b>Provisional API - subject to change</b></p>
+ * 
+ */
+
+public class LocaleType extends EnumerationType implements IPossibleValues, IValidValues, IValidELValues{
+	private List<IPossibleValue> _pvs;
+	@Override
+	protected String getReturnType() {
+		return "java.util.Locale"; //$NON-NLS-1$
+	}
+
+	public List getPossibleValues() {
+		if (_pvs == null){
+			_pvs = new ArrayList();	
+			Locale[]_locales = getLocales();
+			for(int i=0;i<_locales.length;i++){
+				PossibleValue pv = new PossibleValue(_locales[i].toString(), _locales[i].getDisplayName());
+				_pvs.add(pv);
+			}
+			Collections.sort(_pvs, new Comparator(){
+				public int compare(Object o1, Object o2) {
+					PossibleValue pv1 = (PossibleValue)o1;
+					PossibleValue pv2 = (PossibleValue)o2;
+					return (pv1.getDisplayValue().compareTo(pv2.getDisplayValue()));
+				}
+			
+			});
+		}
+		return _pvs;
+	}
+
+	private Locale[] getLocales() {
+		return Locale.getAvailableLocales();
+	}
+
+	public boolean isValidValue(String value) {
+		Locale[]_locales = getLocales();
+		for(int i=0;i<_locales.length;i++){
+			Locale local = getLocales()[i];
+			if (local.toString().equals(value))
+				return true;
+		}
+		getValidationMessages().add(new ValidationMessage(Messages.LocaleType_1));
+		return false;
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/Messages.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/Messages.java
index 9e58827..cdb4d53 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/Messages.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/Messages.java
@@ -39,6 +39,7 @@
      * see messages.properties
      */
 	public static String BooleanType_invalid_values;
+	public static String ContentType_MIME_not_empty;
     /**
      * see messages.properties
      */
@@ -103,7 +104,245 @@
      * see messages.properties
      */
 	public static String MethodBindingType_invalid_value;
-    /**
+    public static String CurrencyCodeType_invalid;
+	public static String CurrencyCodeType_10;
+	public static String CurrencyCodeType_100;
+	public static String CurrencyCodeType_101;
+	public static String CurrencyCodeType_102;
+	public static String CurrencyCodeType_103;
+	public static String CurrencyCodeType_104;
+	public static String CurrencyCodeType_105;
+	public static String CurrencyCodeType_106;
+	public static String CurrencyCodeType_107;
+	public static String CurrencyCodeType_108;
+	public static String CurrencyCodeType_109;
+	public static String CurrencyCodeType_11;
+	public static String CurrencyCodeType_110;
+	public static String CurrencyCodeType_111;
+	public static String CurrencyCodeType_112;
+	public static String CurrencyCodeType_113;
+	public static String CurrencyCodeType_114;
+	public static String CurrencyCodeType_115;
+	public static String CurrencyCodeType_116;
+	public static String CurrencyCodeType_117;
+	public static String CurrencyCodeType_118;
+	public static String CurrencyCodeType_119;
+	public static String CurrencyCodeType_12;
+	public static String CurrencyCodeType_120;
+	public static String CurrencyCodeType_121;
+	public static String CurrencyCodeType_122;
+	public static String CurrencyCodeType_123;
+	public static String CurrencyCodeType_124;
+	public static String CurrencyCodeType_125;
+	public static String CurrencyCodeType_126;
+	public static String CurrencyCodeType_127;
+	public static String CurrencyCodeType_128;
+	public static String CurrencyCodeType_129;
+	public static String CurrencyCodeType_13;
+	public static String CurrencyCodeType_130;
+	public static String CurrencyCodeType_131;
+	public static String CurrencyCodeType_132;
+	public static String CurrencyCodeType_133;
+	public static String CurrencyCodeType_134;
+	public static String CurrencyCodeType_135;
+	public static String CurrencyCodeType_136;
+	public static String CurrencyCodeType_137;
+	public static String CurrencyCodeType_138;
+	public static String CurrencyCodeType_139;
+	public static String CurrencyCodeType_14;
+	public static String CurrencyCodeType_140;
+	public static String CurrencyCodeType_141;
+	public static String CurrencyCodeType_142;
+	public static String CurrencyCodeType_143;
+	public static String CurrencyCodeType_144;
+	public static String CurrencyCodeType_145;
+	public static String CurrencyCodeType_146;
+	public static String CurrencyCodeType_147;
+	public static String CurrencyCodeType_148;
+	public static String CurrencyCodeType_149;
+	public static String CurrencyCodeType_15;
+	public static String CurrencyCodeType_150;
+	public static String CurrencyCodeType_151;
+	public static String CurrencyCodeType_152;
+	public static String CurrencyCodeType_153;
+	public static String CurrencyCodeType_154;
+	public static String CurrencyCodeType_155;
+	public static String CurrencyCodeType_156;
+	public static String CurrencyCodeType_157;
+	public static String CurrencyCodeType_158;
+	public static String CurrencyCodeType_159;
+	public static String CurrencyCodeType_16;
+	public static String CurrencyCodeType_160;
+	public static String CurrencyCodeType_161;
+	public static String CurrencyCodeType_162;
+	public static String CurrencyCodeType_163;
+	public static String CurrencyCodeType_164;
+	public static String CurrencyCodeType_165;
+	public static String CurrencyCodeType_166;
+	public static String CurrencyCodeType_167;
+	public static String CurrencyCodeType_168;
+	public static String CurrencyCodeType_169;
+	public static String CurrencyCodeType_17;
+	public static String CurrencyCodeType_170;
+	public static String CurrencyCodeType_171;
+	public static String CurrencyCodeType_172;
+	public static String CurrencyCodeType_173;
+	public static String CurrencyCodeType_174;
+	public static String CurrencyCodeType_18;
+	public static String CurrencyCodeType_19;
+	public static String CharacterType_0;
+	public static String CurrencyCodeType_2;
+	public static String CurrencyCodeType_20;
+	public static String CurrencyCodeType_21;
+	public static String CurrencyCodeType_22;
+	public static String CurrencyCodeType_23;
+	public static String CurrencyCodeType_24;
+	public static String CurrencyCodeType_25;
+	public static String CurrencyCodeType_26;
+	public static String CurrencyCodeType_27;
+	public static String CurrencyCodeType_28;
+	public static String CurrencyCodeType_29;
+	public static String CurrencyCodeType_3;
+	public static String CurrencyCodeType_30;
+	public static String CurrencyCodeType_31;
+	public static String CurrencyCodeType_32;
+	public static String CurrencyCodeType_33;
+	public static String CurrencyCodeType_34;
+	public static String CurrencyCodeType_35;
+	public static String CurrencyCodeType_36;
+	public static String CurrencyCodeType_37;
+	public static String CurrencyCodeType_38;
+	public static String CurrencyCodeType_39;
+	public static String CurrencyCodeType_4;
+	public static String CurrencyCodeType_40;
+	public static String CurrencyCodeType_41;
+	public static String CurrencyCodeType_42;
+	public static String CurrencyCodeType_43;
+	public static String CurrencyCodeType_44;
+	public static String CurrencyCodeType_45;
+	public static String CurrencyCodeType_46;
+	public static String CurrencyCodeType_47;
+	public static String CurrencyCodeType_48;
+	public static String CurrencyCodeType_49;
+	public static String CurrencyCodeType_5;
+	public static String CurrencyCodeType_50;
+	public static String CurrencyCodeType_51;
+	public static String CurrencyCodeType_52;
+	public static String CurrencyCodeType_53;
+	public static String CurrencyCodeType_54;
+	public static String CurrencyCodeType_55;
+	public static String CurrencyCodeType_56;
+	public static String CurrencyCodeType_57;
+	public static String CurrencyCodeType_58;
+	public static String CurrencyCodeType_59;
+	public static String CurrencyCodeType_6;
+	public static String CurrencyCodeType_60;
+	public static String CurrencyCodeType_61;
+	public static String CurrencyCodeType_62;
+	public static String CurrencyCodeType_63;
+	public static String CurrencyCodeType_64;
+	public static String CurrencyCodeType_65;
+	public static String CurrencyCodeType_66;
+	public static String CurrencyCodeType_67;
+	public static String CurrencyCodeType_68;
+	public static String CurrencyCodeType_69;
+	public static String CurrencyCodeType_7;
+	public static String CurrencyCodeType_70;
+	public static String CurrencyCodeType_71;
+	public static String CurrencyCodeType_72;
+	public static String CurrencyCodeType_73;
+	public static String CurrencyCodeType_74;
+	public static String CurrencyCodeType_75;
+	public static String CurrencyCodeType_76;
+	public static String CurrencyCodeType_77;
+	public static String CurrencyCodeType_78;
+	public static String CurrencyCodeType_79;
+	public static String CurrencyCodeType_8;
+	public static String CurrencyCodeType_80;
+	public static String CurrencyCodeType_81;
+	public static String CurrencyCodeType_82;
+	public static String CurrencyCodeType_83;
+	public static String CurrencyCodeType_84;
+	public static String CurrencyCodeType_85;
+	public static String CurrencyCodeType_86;
+	public static String CurrencyCodeType_87;
+	public static String CurrencyCodeType_88;
+	public static String CurrencyCodeType_89;
+	public static String CurrencyCodeType_9;
+	public static String LanguageCodeType_0;
+	public static String LanguageCodeType_1;
+	public static String LanguageCodeType_7;
+	public static String LanguageCodeType_9;
+	public static String LinkType_16;
+	public static String LocaleType_1;
+	public static String WebPathType_1;
+	public static String WebPathType_2;
+	public static String LanguageCodeType_11;
+	public static String LanguageCodeType_13;
+	public static String LanguageCodeType_15;
+	public static String LanguageCodeType_17;
+	public static String LanguageCodeType_19;
+	public static String LanguageCodeType_21;
+	public static String LanguageCodeType_23;
+	public static String LanguageCodeType_25;
+	public static String LanguageCodeType_27;
+	public static String LanguageCodeType_29;
+	public static String LanguageCodeType_31;
+	public static String LanguageCodeType_33;
+	public static String LanguageCodeType_35;
+	public static String LanguageCodeType_37;
+	public static String LanguageCodeType_39;
+	public static String LanguageCodeType_41;
+	public static String LanguageCodeType_43;
+	public static String LanguageCodeType_45;
+	public static String LanguageCodeType_47;
+	public static String LanguageCodeType_49;
+	public static String LanguageCodeType_51;
+	public static String LanguageCodeType_53;
+	public static String LanguageCodeType_55;
+	public static String LanguageCodeType_57;
+	public static String LanguageCodeType_59;
+	public static String LanguageCodeType_61;
+	public static String LanguageCodeType_63;
+	public static String LanguageCodeType_65;
+	public static String LanguageCodeType_67;
+	public static String LanguageCodeType_69;
+	public static String LanguageCodeType_71;
+	public static String LanguageCodeType_73;
+	public static String LanguageCodeType_75;
+	public static String LanguageCodeType_77;
+	public static String LanguageCodeType_79;
+	public static String LanguageCodeType_81;
+	public static String LanguageCodeType_83;
+	public static String LanguageCodeType_85;
+	public static String LanguageCodeType_87;
+	public static String LanguageCodeType_89;
+	public static String LanguageCodeType_91;
+	public static String LanguageCodeType_93;
+	public static String LanguageCodeType_95;
+	public static String LanguageCodeType_97;
+	public static String LanguageCodeType_99;
+	public static String LanguageCodeType_101;
+	public static String LanguageCodeType_103;
+	public static String LanguageCodeType_105;
+	public static String LanguageCodeType_107;
+	public static String LanguageCodeType_109;
+	public static String LanguageCodeType_111;
+	public static String LanguageCodeType_113;
+	public static String LanguageCodeType_115;
+	public static String LanguageCodeType_117;
+	public static String LanguageCodeType_118;
+	public static String CurrencyCodeType_90;
+	public static String CurrencyCodeType_91;
+	public static String CurrencyCodeType_92;
+	public static String CurrencyCodeType_93;
+	public static String CurrencyCodeType_94;
+	public static String CurrencyCodeType_95;
+	public static String CurrencyCodeType_96;
+	public static String CurrencyCodeType_97;
+	public static String CurrencyCodeType_98;
+	public static String CurrencyCodeType_99;
+	/**
      * see messages.properties
      */
 	public static String NumberType_max_val;
@@ -111,6 +350,7 @@
      * see messages.properties
      */
 	public static String NumberType_min_val;
+	public static String RelativePathType_0;
     /**
      * see messages.properties
      */
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/NumberPatternType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/NumberPatternType.java
new file mode 100644
index 0000000..b5add42
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/NumberPatternType.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation., and others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jst.jsf.metadataprocessors.AbstractRootTypeDescriptor;
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.PossibleValue;
+
+/**
+ * Meta-data processing type representing a numeric pattern type.
+ * 
+ * <p><b>Provisional API - subject to change</b></p>
+ * 
+ */
+
+public class NumberPatternType extends AbstractRootTypeDescriptor implements IPossibleValues{
+	//should we ever decide to validate the patterns, extend EnumerationType
+	final private static String[] PATTERNS = {					
+			"0.00", //$NON-NLS-1$
+			"#,##0", //$NON-NLS-1$
+			"#,##0.00", //$NON-NLS-1$
+			"#,##0;(#,##0)", //$NON-NLS-1$
+			"#,##0.00;(#,##0.00)", //$NON-NLS-1$
+			"0.##E0", //$NON-NLS-1$
+			"0%", //$NON-NLS-1$
+			"0.00%" //$NON-NLS-1$
+	};
+
+	public List getPossibleValues() {
+		List ret = new ArrayList();		
+		for (int i=0;i<PATTERNS.length;i++){
+			ret.add(new PossibleValue(PATTERNS[i]));
+		}
+		return ret;
+	}
+
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/PathType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/PathType.java
new file mode 100644
index 0000000..f686fcb
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/PathType.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
+import org.eclipse.jst.jsf.context.resolver.structureddocument.IWorkspaceContextResolver;
+import org.eclipse.jst.jsf.metadataprocessors.AbstractRootTypeDescriptor;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidationMessage;
+
+/**
+ * EXPERIMENTAL - may change or dissappear
+ *
+ */
+public abstract class PathType extends AbstractRootTypeDescriptor {
+
+	private IProject _project = null;
+	private final List<IValidationMessage> _validationMsgs = new ArrayList<IValidationMessage>(1);
+
+	public PathType() {
+		super();
+	}
+
+	protected IProject getProject() {
+		if( _project == null )
+		{
+	        final IWorkspaceContextResolver wkspaceResolver =
+	            IStructuredDocumentContextResolverFactory.INSTANCE.getWorkspaceContextResolver( getStructuredDocumentContext() );
+	        _project = wkspaceResolver.getProject();
+		}
+		
+		return _project;
+	}
+
+	public List<IValidationMessage> getValidationMessages() {
+		return _validationMsgs;
+	}
+
+}
\ No newline at end of file
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/RelativePathType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/RelativePathType.java
new file mode 100644
index 0000000..82dd380
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/RelativePathType.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jst.jsf.metadataprocessors.IMetaDataEnabledFeature;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.ValidationMessage;
+
+/**
+ * Path is relative to project
+ * <b>EXPERIMENTAL</b> - may change or dissappear
+ * 
+ */
+public class RelativePathType extends PathType implements
+		IMetaDataEnabledFeature, IValidValues{
+
+	public boolean isValidValue(String value) {
+		//is this a relative path, or absolute url?
+		try {
+			new URL(value);			
+			//not much else we what to do for now
+			return true;
+		} catch (MalformedURLException e) {
+			//is this a valid path relative to the 			
+			IProject project = getProject();
+			IFile  file= project.getFile(new Path(value));
+			if (! file.exists())
+				getValidationMessages().add(new ValidationMessage( value+Messages.RelativePathType_0));
+			
+			return getValidationMessages().size() == 0;
+		}
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ResourceBundleType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ResourceBundleType.java
index 08ead16..65f2fc9 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ResourceBundleType.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ResourceBundleType.java
@@ -1,44 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Vadim Dmitriev - initial API and implementation
+ *    
+ ********************************************************************************/
 package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
 
 import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.List;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IStorage;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
-import org.eclipse.jst.jsf.context.resolver.structureddocument.IWorkspaceContextResolver;
 import org.eclipse.jst.jsf.core.internal.tld.LoadBundleUtil;
-import org.eclipse.jst.jsf.metadataprocessors.AbstractRootTypeDescriptor;
 import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
-import org.eclipse.jst.jsf.metadataprocessors.features.IValidationMessage;
 import org.eclipse.jst.jsf.metadataprocessors.features.ValidationMessage;
 
 /**
  * Meta-data processing type representing a path to resource bundle on classpath
  * Patch by Vadim Dmitriev.  See https://bugs.eclipse.org/bugs/show_bug.cgi?id=203307.
  * 
+ * <p><b>Provisional API - subject to change</b></p>
+ * 
  * @author Vadim Dmitriev
+ * 
+ * 
  */
-public class ResourceBundleType extends AbstractRootTypeDescriptor implements IValidValues 
+public class ResourceBundleType extends PathType implements IValidValues 
 {
-	private IProject _project 								= null;
-	private final List<IValidationMessage> _validationMsgs 	= new ArrayList<IValidationMessage>(1);
-	
-	private IProject getProject()
-	{
-		if( _project == null )
-		{
-            final IWorkspaceContextResolver wkspaceResolver =
-                IStructuredDocumentContextResolverFactory.INSTANCE.getWorkspaceContextResolver( getStructuredDocumentContext() );
-            _project = wkspaceResolver.getProject();
-		}
-		
-		return _project;
-	}
-
 	public boolean isValidValue( String value )
 	{
 		try
@@ -57,12 +51,7 @@
 		
 		final String message = 
 			MessageFormat.format(Messages.Bundle_not_found_rb, value); 
-		_validationMsgs.add(new ValidationMessage(message, "", IStatus.ERROR));
+		getValidationMessages().add(new ValidationMessage(message, "", IStatus.ERROR)); //$NON-NLS-1$
 		return false;
 	}
-	
-	public List getValidationMessages() 
-	{
-		return _validationMsgs;
-	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ScriptType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ScriptType.java
new file mode 100644
index 0000000..9df83d4
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/ScriptType.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
+
+import org.eclipse.jst.jsf.metadataprocessors.AbstractRootTypeDescriptor;
+
+/**
+ * Represents script type
+ * <p><b>Provisional API - subject to change</b></p>
+ */
+public class ScriptType extends AbstractRootTypeDescriptor {
+//
+}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/StringType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/StringType.java
index 709497d..fa8f3af 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/StringType.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/StringType.java
@@ -44,7 +44,7 @@
 			return true;
 		
 		//if the value is empty but there is a default value, consider it valid		
-		if (getDefaultValue() != null  && (value == null || value.trim().equals("")))
+		if (getDefaultValue() != null  && (value == null || value.trim().equals(""))) //$NON-NLS-1$
 			return true;
 		
 		if(! vals.contains(value)){
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/TimeZoneType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/TimeZoneType.java
new file mode 100644
index 0000000..56af13d
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/TimeZoneType.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation., and others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.TimeZone;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.PossibleValue;
+
+/**
+ * Meta-data processing type representing a TimeZone Code type.
+ * 
+ * <p><b>Provisional API - subject to change</b></p>
+ * 
+ */
+
+public class TimeZoneType extends EnumerationType implements IPossibleValues, IValidValues{
+	private String[] _timezones;
+	
+	@Override
+	protected String getReturnType() {
+		return "java.lang.String"; //$NON-NLS-1$
+	}
+
+	public List getPossibleValues() {
+		List ret = new ArrayList();		
+		for(int i=0;i<getTimeZones().length;i++){
+			PossibleValue pv = new PossibleValue(_timezones[i], _timezones[i]);
+			ret.add(pv);
+		}
+		return ret;
+	}
+
+	private String[] getTimeZones() {
+		if (_timezones == null)
+			_timezones = TimeZone.getAvailableIDs();
+		return _timezones;
+	}
+
+	public boolean isValidValue(String value) {
+		for(int i=0;i<getTimeZones().length;i++){
+			if (getTimeZones()[i].equals(value))
+				return true;
+		}
+		return false;
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/URIType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/URIType.java
new file mode 100644
index 0000000..5a358df
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/URIType.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
+
+import org.eclipse.jst.jsf.metadataprocessors.IMetaDataEnabledFeature;
+
+/**
+ * URI Type: attribute values are Uniform Resource Identifiers (URIs), as defined in RFC 2396.
+ * URI attribute values may include full URIs such as http://www.foobar.com/ as well as relative URIs such as foo.html and ../foo/.
+ * EXPERIMENTAL - will change or dissappear
+ */
+public class URIType extends PathType implements IMetaDataEnabledFeature{
+	//TODO: add validation... refactor or WebPath, RelativePath, etc.
+	
+	public URIType() {
+		//
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/WebPathType.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/WebPathType.java
new file mode 100644
index 0000000..c1c8c0d
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/WebPathType.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 		Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jst.jsf.metadataprocessors.IMetaDataEnabledFeature;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.ValidationMessage;
+import org.eclipse.wst.common.componentcore.ComponentCore;
+import org.eclipse.wst.common.componentcore.resources.IVirtualContainer;
+import org.eclipse.wst.common.componentcore.resources.IVirtualFile;
+
+/**
+ * Path relative to web root
+ * <b>EXPERIMENTAL</b> - may change or dissappear
+ *
+ */
+public class WebPathType extends PathType implements
+	IMetaDataEnabledFeature, IValidValues{
+
+	public boolean isValidValue(String value) {
+		//is this a relative path, or absolute url?
+		try {
+			URL url = new URL(value);			
+			//if file protocol, see if it is valid?  Otherwise assume ok.
+			if (url.getProtocol().equals("file")){ //$NON-NLS-1$
+				validateFileRelativeToWebRoot(url.getPath());
+			} 
+		} catch (MalformedURLException e) {
+			//is this a valid path relative to the 			
+			validateFileRelativeToWebRoot(value);						
+		}
+		return getValidationMessages().size() == 0;
+
+	}
+
+    private void validateFileRelativeToWebRoot(String value) {
+		IVirtualContainer webRoot = getWebRoot();
+		if (! webRoot.exists()){
+			getValidationMessages().add(new ValidationMessage( Messages.WebPathType_1));
+		} 
+		else {
+			IVirtualFile file = webRoot.getFile(new Path(value));
+			if (!file.exists()) {
+				//was this a valid file path string, or bogus url?
+				getValidationMessages().add(new ValidationMessage(Messages.WebPathType_2));
+			}									
+			//we could also validate the expected file-extensions from meta data
+		}
+		
+	}
+
+	private IVirtualContainer getWebRoot()
+    {
+        IVirtualContainer webRoot =
+            ComponentCore.createComponent(getProject()).getRootFolder();
+        	       
+        return webRoot;
+    }
+}
\ No newline at end of file
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/messages.properties b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/messages.properties
index 533eca5..22ddc87 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/messages.properties
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/taglibprocessing/attributevalues/messages.properties
@@ -14,8 +14,247 @@
 LongType_invalid_long=Value is not a valid Long.
 LongType_invalid_member=Value is not a member of the provided valid values
 BooleanType_invalid_values=Valid values are "true" or "false"
+CurrencyCodeType_invalid=Invalid currency code
+CurrencyCodeType_10=Aruba, Guilders (also called Florins)
+CurrencyCodeType_100=Malta, Liri
+CurrencyCodeType_101=Mauritius, Rupees
+CurrencyCodeType_102=Maldives (Maldive Islands), Rufiyaa
+CurrencyCodeType_103=Malawi, Kwachas
+CurrencyCodeType_104=Mexico, Pesos
+CurrencyCodeType_105=Malaysia, Ringgits
+CurrencyCodeType_106=Mozambique, Meticais
+CurrencyCodeType_107=Namibia, Dollars
+CurrencyCodeType_108=Nigeria, Nairas
+CurrencyCodeType_109=Nicaragua, Cordobas
+CurrencyCodeType_11=Azerbaijan, Manats
+CurrencyCodeType_110=Norway, Krone
+CurrencyCodeType_111=Nepal, Nepal Rupees
+CurrencyCodeType_112=New Zealand, Dollars
+CurrencyCodeType_113=Oman, Rials
+CurrencyCodeType_114=Panama, Balboa
+CurrencyCodeType_115=Peru, Nuevos Soles
+CurrencyCodeType_116=Papua New Guinea, Kina
+CurrencyCodeType_117=Philippines, Pesos
+CurrencyCodeType_118=Pakistan, Rupees
+CurrencyCodeType_119=Poland, Zlotych
+CurrencyCodeType_12=Bosnia and Herzegovina, Convertible Marka
+CurrencyCodeType_120=Paraguay, Guarani
+CurrencyCodeType_121=Qatar, Rials
+CurrencyCodeType_122=Romania, Lei
+CurrencyCodeType_123=Russia, Rubles
+CurrencyCodeType_124=Rwanda, Rwanda Francs
+CurrencyCodeType_125=Saudi Arabia, Riyals
+CurrencyCodeType_126=Solomon Islands, Dollars
+CurrencyCodeType_127=Seychelles, Rupees
+CurrencyCodeType_128=Sudan, Dinars
+CurrencyCodeType_129=Sweden, Kronor
+CurrencyCodeType_13=Barbados, Dollars
+CurrencyCodeType_130=Singapore, Dollars
+CurrencyCodeType_131=Saint Helena, Pounds
+CurrencyCodeType_132=Slovenia, Tolars
+CurrencyCodeType_133=Slovakia, Koruny
+CurrencyCodeType_134=Sierra Leone, Leones
+CurrencyCodeType_135=Somalia, Shillings
+CurrencyCodeType_136=Seborga, Luigini
+CurrencyCodeType_137=Suriname, Dollars
+CurrencyCodeType_138=Principe and S\u00E3o Tome, Dobras
+CurrencyCodeType_139=El Salvador, Colones
+CurrencyCodeType_14=Bangladesh, Taka
+CurrencyCodeType_140=Syria, Pounds
+CurrencyCodeType_141=Swaziland, Emalangeni
+CurrencyCodeType_142=Thailand, Baht
+CurrencyCodeType_143=Tajikistan, Somoni
+CurrencyCodeType_144=Turkmenistan, Manats
+CurrencyCodeType_145=Tunisia, Dinars
+CurrencyCodeType_146=Tonga, Pa'anga
+CurrencyCodeType_147=Turkey, Liras [being phased out]
+CurrencyCodeType_148=Turkey, New Lira
+CurrencyCodeType_149=Trinidad and Tobago, Dollars
+CurrencyCodeType_15=Bulgaria, Leva
+CurrencyCodeType_150=Tuvalu, Tuvalu Dollars
+CurrencyCodeType_151=Taiwan, New Dollars
+CurrencyCodeType_152=Tanzania, Shillings
+CurrencyCodeType_153=Ukraine, Hryvnia
+CurrencyCodeType_154=Uganda, Shillings
+CurrencyCodeType_155=United States of America, Dollars
+CurrencyCodeType_156=Uruguay, Pesos
+CurrencyCodeType_157=Uzbekistan, Sums
+CurrencyCodeType_158=Venezuela, Bolivares
+CurrencyCodeType_159=Viet Nam, Dong
+CurrencyCodeType_16=Bahrain, Dinars
+CurrencyCodeType_160=Vanuatu, Vatu
+CurrencyCodeType_161=Samoa, Tala
+CurrencyCodeType_162=Communaut\u00E9 Financi\u00E8re Africaine BEAC Franc , Francs
+CurrencyCodeType_163=Silver, Ounces
+CurrencyCodeType_164=Gold, Ounces
+CurrencyCodeType_165=East Caribbean Dollars
+CurrencyCodeType_166=International Monetary Fund (IMF) Special Drawing Rights
+CurrencyCodeType_167=Communaut\u00E9 Financi\u00E8re Africaine BCEAO, Francs
+CurrencyCodeType_168=Palladium Ounces
+CurrencyCodeType_169=Comptoirs Francais du Pacifique, Francs
+CurrencyCodeType_17=Burundi, Francs
+CurrencyCodeType_170=Platinum, Ounces
+CurrencyCodeType_171=Yemen, Rials
+CurrencyCodeType_172=South Africa, Rand
+CurrencyCodeType_173=Zambia, Kwacha
+CurrencyCodeType_174=Zimbabwe, Zimbabwe Dollars
+CurrencyCodeType_18=Bermuda, Dollars
+CurrencyCodeType_19=Brunei Darussalam, Dollars
+CharacterType_0=Single unicode character is required
+CurrencyCodeType_2=United Arab Emirates, Dirhams
+CurrencyCodeType_20=Bolivia, Bolivianos
+CurrencyCodeType_21=Brazil, Brazil Real
+CurrencyCodeType_22=Bahamas, Dollars
+CurrencyCodeType_23=Bhutan, Ngultrum
+CurrencyCodeType_24=Botswana, Pulas
+CurrencyCodeType_25=Belarus, Rubles
+CurrencyCodeType_26=Belize, Dollars
+CurrencyCodeType_27=Canada, Dollars
+CurrencyCodeType_28=Congo/Kinshasa, Congolese Francs
+CurrencyCodeType_29=Switzerland, Francs
+CurrencyCodeType_3=Afghanistan, Afghanis
+CurrencyCodeType_30=Chile, Pesos
+CurrencyCodeType_31=China, Yuan Renminbi
+CurrencyCodeType_32=Colombia, Pesos
+CurrencyCodeType_33=Costa Rica, Colones
+CurrencyCodeType_34=Serbia, Dinars
+CurrencyCodeType_35=Cuba, Pesos
+CurrencyCodeType_36=Cape Verde, Escudos
+CurrencyCodeType_37=Cyprus, Pounds
+CurrencyCodeType_38=Czech Republic, Koruny
+CurrencyCodeType_39=Djibouti, Francs
+CurrencyCodeType_4=Albania, Leke
+CurrencyCodeType_40=Denmark, Kroner
+CurrencyCodeType_41=Dominican Republic, Pesos
+CurrencyCodeType_42=Algeria, Algeria Dinars
+CurrencyCodeType_43=Estonia, Krooni
+CurrencyCodeType_44=Egypt, Pounds
+CurrencyCodeType_45=Eritrea, Nakfa
+CurrencyCodeType_46=Ethiopia, Birr
+CurrencyCodeType_47=Euro Member Countries, Euro
+CurrencyCodeType_48=Fiji, Dollars
+CurrencyCodeType_49=Falkland Islands (Malvinas), Pounds
+CurrencyCodeType_5=Armenia, Drams
+CurrencyCodeType_50=United Kingdom, Pounds
+CurrencyCodeType_51=Georgia, Lari
+CurrencyCodeType_52=Guernsey, Pounds
+CurrencyCodeType_53=Ghana, Cedis
+CurrencyCodeType_54=Gibraltar, Pounds
+CurrencyCodeType_55=Gambia, Dalasi
+CurrencyCodeType_56=Guinea, Francs
+CurrencyCodeType_57=Guatemala, Quetzales
+CurrencyCodeType_58=Guyana, Dollars
+CurrencyCodeType_59=Hong Kong, Dollars
+CurrencyCodeType_6=Netherlands Antilles, Guilders (also called Florins)
+CurrencyCodeType_60=Honduras, Lempiras
+CurrencyCodeType_61=Croatia, Kuna
+CurrencyCodeType_62=Haiti, Gourdes
+CurrencyCodeType_63=Hungary, Forint
+CurrencyCodeType_64=Indonesia, Rupiahs
+CurrencyCodeType_65=Israel, New Shekels
+CurrencyCodeType_66=Isle of Man, Pounds
+CurrencyCodeType_67=India, Rupees
+CurrencyCodeType_68=Iraq, Dinars
+CurrencyCodeType_69=Iran, Rials
+CurrencyCodeType_7=Angola, Kwanza
+CurrencyCodeType_70=Iceland, Kronur
+CurrencyCodeType_71=Jersey, Pounds
+CurrencyCodeType_72=Jamaica, Dollars
+CurrencyCodeType_73=Jordan, Dinars
+CurrencyCodeType_74=Japan, Yen
+CurrencyCodeType_75=Kenya, Shillings
+CurrencyCodeType_76=Kyrgyzstan, Soms
+CurrencyCodeType_77=Cambodia, Riels
+CurrencyCodeType_78=Comoros, Francs
+CurrencyCodeType_79=Korea (North), Won
+CurrencyCodeType_8=Argentina, Pesos
+CurrencyCodeType_80=Korea (South), Won
+CurrencyCodeType_81=Kuwait, Dinars
+CurrencyCodeType_82=Cayman Islands, Dollars
+CurrencyCodeType_83=Kazakhstan, Tenge
+CurrencyCodeType_84=Laos, Kips
+CurrencyCodeType_85=Lebanon, Pounds
+CurrencyCodeType_86=Sri Lanka, Rupees
+CurrencyCodeType_87=Liberia, Dollars
+CurrencyCodeType_88=Lesotho, Maloti
+CurrencyCodeType_89=Lithuania, Litai
+CurrencyCodeType_9=Australia, Dollars
+LanguageCodeType_0=ar Arabic (needs subtype)
+LanguageCodeType_1=Invalid language code
+LanguageCodeType_101=tr Turkish
+LanguageCodeType_103=ts Tsonga
+LanguageCodeType_105=uk Ukrainian
+LanguageCodeType_107=ur Urdu
+LanguageCodeType_109=vi Vietnamese
+LanguageCodeType_11=br Breton
+LanguageCodeType_111=xh Xhosa
+LanguageCodeType_113=yi Yiddish
+LanguageCodeType_115=zh Chinese (needs subtype)
+LanguageCodeType_117=zu Zulu
+LanguageCodeType_118=af Afrikaans
+LanguageCodeType_13=ca Catalan
+LanguageCodeType_15=cs Czech
+LanguageCodeType_17=da Danish
+LanguageCodeType_19=de German (Standard)
+LanguageCodeType_21=el Greek
+LanguageCodeType_23=en English
+LanguageCodeType_25=es Spanish (Spain)
+LanguageCodeType_27=et Estonian
+LanguageCodeType_29=eu Basque
+LanguageCodeType_31=fa Farsi
+LanguageCodeType_33=fi Finnish
+LanguageCodeType_35=fo Faeroese
+LanguageCodeType_37=fr French (Standard)
+LanguageCodeType_39=gd Gaelic (Scotland)
+LanguageCodeType_41=he Hebrew
+LanguageCodeType_43=hi Hindi
+LanguageCodeType_45=hr Croatian
+LanguageCodeType_47=hu Hungarian
+LanguageCodeType_49=id Indonesian
+LanguageCodeType_51=is Icelandic
+LanguageCodeType_53=it Italian (Standard)
+LanguageCodeType_55=ja Japanese
+LanguageCodeType_57=ko Korean
+LanguageCodeType_59=lt Lithuanian
+LanguageCodeType_61=lv Latvian
+LanguageCodeType_63=mk Macedonian
+LanguageCodeType_65=ms Malaysian
+LanguageCodeType_67=mt Maltese
+LanguageCodeType_69=nl Dutch (Standard)
+LanguageCodeType_7=be Belarusian
+LanguageCodeType_71=no Norwegian (Bokmal/Nynorsk)
+LanguageCodeType_73=pl Polish
+LanguageCodeType_75=pt Portuguese (Standard)
+LanguageCodeType_77=rm Rhaeto-Romanic
+LanguageCodeType_79=ro Romanian
+LanguageCodeType_81=ru Russian
+LanguageCodeType_83=sk Slovak
+LanguageCodeType_85=sl Slovenian
+LanguageCodeType_87=sq Albanian
+LanguageCodeType_89=sr Serbian (Cyrillic/Latin)
+LanguageCodeType_9=bg Bulgarian
+LinkType_16=Link type value must not be empty
+LocaleType_1=Invalid locale value
+WebPathType_1=Web root path not found
+WebPathType_2=Invalid value
+LanguageCodeType_91=sv Swedish
+LanguageCodeType_93=sx Sutu
+LanguageCodeType_95=sz Sami (Lappish)
+LanguageCodeType_97=th Thai
+LanguageCodeType_99=tn Setswana
+CurrencyCodeType_90=Latvia, Lati
+CurrencyCodeType_91=Libya, Dinars
+CurrencyCodeType_92=Morocco, Dirhams
+CurrencyCodeType_93=Moldova, Lei
+CurrencyCodeType_94=Madagascar, Ariary
+CurrencyCodeType_95=Macedonia, Denars
+CurrencyCodeType_96=Myanmar (Burma), Kyats
+CurrencyCodeType_97=Mongolia, Tugriks
+CurrencyCodeType_98=Macau, Patacas
+CurrencyCodeType_99=Mauritania, Ouguiyas
 NumberType_max_val=Value exceeds maximum of {0}
 NumberType_min_val=Value is less than minimum of {0}
+RelativePathType_0=: path not found
 DoubleType_invalid_double=Value is not a valid double.
 DoubleType_invalid_member=Value is not a member of the provided valid values
 StringType_invalid_value=Value is not valid.
@@ -31,6 +270,7 @@
 ActionType_invalid_value=The action value does not match a navigation case outcome.
 ActionType_invalid_empty_value=The action attribute must be a non-zero length String or a method binding matching a navigation case outcome.
 ActionType_navcase_display={0}: goto {1} 
+ContentType_MIME_not_empty=Content (MIME) type must not be empty
 MethodBindingType_invalid_value=MethodBinding attribute values must be EL expressions.
 JavaClassType_invalid_type=Value for type attribute must be valid Java class and not empty.
 JavaClassType_not_found=Java type not found, not instantiable, or does implement correct interfaces or extend correct superclass.
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/META-INF/MANIFEST.MF b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/META-INF/MANIFEST.MF
index b5d5f6e..e8a1004 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/META-INF/MANIFEST.MF
+++ b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/META-INF/MANIFEST.MF
@@ -18,7 +18,6 @@
  org.eclipse.emf.ecore.xmi;bundle-version="[2.2.0,3.0.0)",
  org.eclipse.jst.jsp.core;bundle-version="[1.1.0,1.3.0)",
  org.eclipse.wst.sse.ui;bundle-version="[1.0.101,1.2.0)",
- org.eclipse.wst.common.ui.properties;bundle-version="[1.0.101,1.2.0)",
  org.eclipse.jface.text;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.wst.common.emf;bundle-version="[1.1.103,2.0.0)",
  org.eclipse.jst.jsf.facesconfig;bundle-version="[1.0.0,1.1.0)",
@@ -28,7 +27,8 @@
  org.eclipse.jdt.ui;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.jst.jsf.core;bundle-version="[1.0.0,1.1.0)",
  org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.wst.common.modulecore;bundle-version="[1.1.0,1.2.0)"
+ org.eclipse.wst.common.modulecore;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.ui.views.properties.tabbed;bundle-version="[3.2.0,4.0.0)"
 Eclipse-LazyStart: true
 Export-Package: org.eclipse.jst.jsf.facesconfig.ui;x-internal:=true,
  org.eclipse.jst.jsf.facesconfig.ui.dialog;x-internal:=true,
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/plugin.xml b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/plugin.xml
index 19845ce..7503515 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/plugin.xml
+++ b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/plugin.xml
@@ -54,8 +54,8 @@
 	</extension>
 	<!-- ********** End Introduction Page ************** -->
 		<!-- ************* properties view ************** -->
-	<extension point="org.eclipse.wst.common.ui.properties.propertyTabs">
-		<propertyTabs
+	<extension point="org.eclipse.ui.views.properties.tabbed.propertyTabs"> 
+		<propertyTabs 
 			contributorId="org.eclipse.jst.jsf.facesconfig.ui.FacesConfigEditor">
 			<propertyTab label="%propertyTab.attribute" category="attribute"
 				id="org.eclipse.jst.jsf.facesconfig.ui.pageflow.properties.attribute"/>
@@ -63,12 +63,12 @@
 				id="org.eclipse.jst.jsf.facesconfig.ui.pageflow.properties.general"/>
 		</propertyTabs>
 	</extension>
-		<extension point="org.eclipse.wst.common.ui.properties.propertyContributor">
+		<extension point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
 		<propertyContributor
 			sectionDescriptorProvider="org.eclipse.jst.jsf.facesconfig.ui.pageflow.properties.PageflowSectionDescriptorProvider"
 			contributorId="org.eclipse.jst.jsf.facesconfig.ui.FacesConfigEditor"
 			labelProvider="org.eclipse.jst.jsf.facesconfig.ui.pageflow.properties.PageflowSectionLabelProvider">
-			<propertyCategory category="attribute"/>
+			<propertyCategory category="attribute" />
 			<propertyCategory category="general"/>
 		</propertyContributor>
 	</extension>
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/FacesConfigEditor.java b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/FacesConfigEditor.java
index 1fcdca0..3a80bdc 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/FacesConfigEditor.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/FacesConfigEditor.java
@@ -99,12 +99,12 @@
 import org.eclipse.ui.part.FileEditorInput;
 import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
 import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
 import org.eclipse.wst.common.project.facet.core.IFacetedProject;
 import org.eclipse.wst.common.project.facet.core.IProjectFacet;
 import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
 import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySheetPageContributor;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
 import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/EditorSectionDescriptor.java b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/EditorSectionDescriptor.java
index f35da5a..6628690 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/EditorSectionDescriptor.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/EditorSectionDescriptor.java
@@ -13,14 +13,14 @@
 
 import java.util.List;
 
+import org.eclipse.jface.viewers.IFilter;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jst.jsf.facesconfig.ui.pageflow.editpart.PageflowEditPart;
 import org.eclipse.jst.jsf.facesconfig.ui.pageflow.properties.section.EditorSection;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITypeMapper;
+import org.eclipse.ui.views.properties.tabbed.ISection;
+import org.eclipse.ui.views.properties.tabbed.ISectionDescriptor;
 
 
 
@@ -47,15 +47,6 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getFilter()
-	 */
-	public ITypeMapper getFilter() {
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
 	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
 	 */
 	public List getInputTypes() {
@@ -112,4 +103,8 @@
 	public int getEnablesFor() {
 		return ENABLES_FOR_ANY;
 	}
+
+	public IFilter getFilter() {
+		return null;
+	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/GeneralViewSection.java b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/GeneralViewSection.java
index 5bb5a15..85884e3 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/GeneralViewSection.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/GeneralViewSection.java
@@ -29,9 +29,9 @@
 import org.eclipse.ui.part.PageBook;
 import org.eclipse.ui.views.properties.IPropertySheetPage;
 import org.eclipse.ui.views.properties.PropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.ISection;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
 import org.eclipse.wst.sse.ui.StructuredTextEditor;
 
 /**
@@ -175,7 +175,9 @@
 		return rec;
 	}
 
-
+	/*
+	 * (non-Javadoc) Method declared on PageBookView.
+	 */
 	/**
 	 * @param part
 	 * @return PageRec for part
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/GeneralViewSectionDescriptor.java b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/GeneralViewSectionDescriptor.java
index 51e4253..dd4786f 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/GeneralViewSectionDescriptor.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/GeneralViewSectionDescriptor.java
@@ -15,6 +15,7 @@
 import java.util.List;
 
 import org.eclipse.jface.text.ITextSelection;
+import org.eclipse.jface.viewers.IFilter;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jst.jsf.facesconfig.ui.pageflow.editpart.PageflowElementEditPart;
@@ -23,9 +24,8 @@
 import org.eclipse.jst.jsf.facesconfig.ui.pageflow.model.PageflowLink;
 import org.eclipse.jst.jsf.facesconfig.ui.pageflow.util.PageflowValidation;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITypeMapper;
+import org.eclipse.ui.views.properties.tabbed.ISection;
+import org.eclipse.ui.views.properties.tabbed.ISectionDescriptor;
 
 /**
  * This class defines the section descriptor for pageflow attributes. Following
@@ -49,14 +49,6 @@
 		return ITabbedPropertiesConstants.GENERAL_TAB_ID;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see ISectionDescriptor#getFilter()
-	 */
-	public ITypeMapper getFilter() {
-		return null;
-	}
 
 	/*
 	 * (non-Javadoc)
@@ -131,4 +123,10 @@
 	public int getEnablesFor() {
 		return ENABLES_FOR_ANY;
 	}
+
+
+	public IFilter getFilter() {
+		// TODO Auto-generated method stub
+		return null;
+	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/LinkSectionDescriptor.java b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/LinkSectionDescriptor.java
index 1886a69..d0cc430 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/LinkSectionDescriptor.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/LinkSectionDescriptor.java
@@ -13,6 +13,7 @@
 
 import java.util.List;
 
+import org.eclipse.jface.viewers.IFilter;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jst.jsf.facesconfig.ui.pageflow.editpart.PageflowLinkEditPart;
@@ -20,9 +21,8 @@
 import org.eclipse.jst.jsf.facesconfig.ui.pageflow.properties.section.LinkSection;
 import org.eclipse.jst.jsf.facesconfig.ui.pageflow.util.PageflowValidation;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITypeMapper;
+import org.eclipse.ui.views.properties.tabbed.ISection;
+import org.eclipse.ui.views.properties.tabbed.ISectionDescriptor;
 
 /**
  * @author jchoi
@@ -42,15 +42,6 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getFilter()
-	 */
-	public ITypeMapper getFilter() {
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
 	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
 	 */
 	public List getInputTypes() {
@@ -112,4 +103,9 @@
 		return ENABLES_FOR_ANY;
 	}
 
+	public IFilter getFilter() {
+		return null;
+	}
+
+
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/PageSectionDescriptor.java b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/PageSectionDescriptor.java
index 4426158..4e7fc80 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/PageSectionDescriptor.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/PageSectionDescriptor.java
@@ -13,15 +13,15 @@
 
 import java.util.List;
 
+import org.eclipse.jface.viewers.IFilter;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jst.jsf.facesconfig.ui.pageflow.editpart.PageflowNodeEditPart;
 import org.eclipse.jst.jsf.facesconfig.ui.pageflow.model.impl.PageflowPageImpl;
 import org.eclipse.jst.jsf.facesconfig.ui.pageflow.properties.section.PageSection;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITypeMapper;
+import org.eclipse.ui.views.properties.tabbed.ISection;
+import org.eclipse.ui.views.properties.tabbed.ISectionDescriptor;
 
 /**
  * @author jchoi
@@ -41,15 +41,6 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getFilter()
-	 */
-	public ITypeMapper getFilter() {
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
 	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
 	 */
 	public List getInputTypes() {
@@ -109,4 +100,9 @@
 		return ENABLES_FOR_ANY;
 	}
 
+
+	public IFilter getFilter() {
+		return null;
+	}
+
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/PageflowSectionDescriptorProvider.java b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/PageflowSectionDescriptorProvider.java
index 54067cb..e36d282 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/PageflowSectionDescriptorProvider.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/PageflowSectionDescriptorProvider.java
@@ -12,8 +12,8 @@
 
 package org.eclipse.jst.jsf.facesconfig.ui.pageflow.properties;
 
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptorProvider;
+import org.eclipse.ui.views.properties.tabbed.ISectionDescriptor;
+import org.eclipse.ui.views.properties.tabbed.ISectionDescriptorProvider;
 
 /**
  * this class defines all section descriptors for pageflow. Similar with
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/section/AbstractEditPartSection.java b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/section/AbstractEditPartSection.java
index e444135..00dcfca 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/section/AbstractEditPartSection.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/section/AbstractEditPartSection.java
@@ -29,7 +29,7 @@
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.IDialogFieldChangeListener;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.wst.common.ui.properties.internal.provisional.AbstractPropertySection;
+import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
 
 /**
  * This is base section, which support GEF command stack to redo/undo setting
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/section/EditorSection.java b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/section/EditorSection.java
index 5f1d9c4..1b9d62c 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/section/EditorSection.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/section/EditorSection.java
@@ -19,8 +19,8 @@
 import org.eclipse.jst.jsf.facesconfig.ui.pageflow.model.impl.PageflowPackageImpl;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 
 /**
  * Edit section for Pagflow (EditPart)
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/section/LinkSection.java b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/section/LinkSection.java
index e223a74..c6b0dce 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/section/LinkSection.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/section/LinkSection.java
@@ -20,8 +20,8 @@
 import org.eclipse.jst.jsf.facesconfig.ui.pageflow.util.PageflowValidation;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 
 /**
  * Edit section for Pagflow Link element (EditPart)
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/section/PageSection.java b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/section/PageSection.java
index 6593174..00b214a 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/section/PageSection.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/pageflow/properties/section/PageSection.java
@@ -21,8 +21,8 @@
 import org.eclipse.jst.jsf.facesconfig.ui.pageflow.util.PageflowValidation;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 
 /**
  * Edit section for Pagflow Page Element (EditPart)
diff --git a/jsf/plugins/org.eclipse.jst.jsf.standard.tagsupport/metadata/jsf_core.xml b/jsf/plugins/org.eclipse.jst.jsf.standard.tagsupport/metadata/jsf_core.xml
index 7f6eda8..ee85f8c 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.standard.tagsupport/metadata/jsf_core.xml
+++ b/jsf/plugins/org.eclipse.jst.jsf.standard.tagsupport/metadata/jsf_core.xml
@@ -4,11 +4,17 @@
 	xmlns:md="http://org.eclipse.jst.jsf.common.metadata/metadata.ecore"
 	xmlns:mdt="http://org.eclipse.jst.jsf.common.metadata/metadataTraitTypes.ecore"  
 	xmlns:cnst="http://org.eclipse.jst.jsf.core/constraints.ecore" 
+	xmlns:qe="http://org.eclipse.jsf.pagedesigner/QuickEditTabSections.ecore"
 	id="http://java.sun.com/jsf/core"
 	type="tagFile">
 
 	<entity id="actionListener" type="tag">
 		<include-entity-group id="common-core-attributes"/>
+	    <trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="type"/>
+			</value>
+		</trait>
 		<entity id="type">
 			<trait id="attribute-value-runtime-type">
 				<value>
@@ -22,9 +28,20 @@
 	</entity>
 	<entity id="attribute" type="tag">
 		<include-entity-group id="common-core-attributes"/>
+				<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="name"/>
+				<section id="value"/>
+			</value>
+		</trait>
 	</entity>	
 	<entity id="convertDateTime" type="tag">
 		<include-entity-group id="common-core-attributes"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="section.general.convertDateTime" type="SECTION"/>
+			</value>
+		</trait>	
 		<entity id="dateStyle">
 			<trait id="attribute-value-runtime-type">
 				<value>
@@ -80,9 +97,28 @@
 				<value>both</value>
 			</trait>
 		</entity>
+		<entity id="pattern">
+			<trait id="attribute-value-runtime-type">
+				<value>
+					org.eclipse.jst.jsf.core.attributevalues.DateTimePatternType
+				</value>
+			</trait>
+		</entity>
+		<entity id="locale">
+			<trait id="attribute-value-runtime-type">
+				<value>
+					org.eclipse.jst.jsf.core.attributevalues.LocaleType
+				</value>
+			</trait>
+		</entity>		
 	</entity>
 	<entity id="convertNumber" type="tag">
 		<include-entity-group id="common-core-attributes"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="section.general.convertNumber" type="SECTION"/>
+			</value>
+		</trait>		
 		<entity id="groupingUsed">
 			<trait id="attribute-value-runtime-type">
 				<value>
@@ -152,9 +188,35 @@
 				<value>number</value>
 			</trait>
 		</entity>
+		<entity id="locale">
+			<trait id="attribute-value-runtime-type">
+				<value>
+					org.eclipse.jst.jsf.core.attributevalues.LocaleType
+				</value>
+			</trait>
+		</entity>
+		<entity id="pattern">
+			<trait id="attribute-value-runtime-type">
+				<value>
+					org.eclipse.jst.jsf.core.attributevalues.NumberPatternType
+				</value>
+			</trait>
+		</entity>	
+		<entity id="currencyCode">
+			<trait id="attribute-value-runtime-type">
+				<value>
+					org.eclipse.jst.jsf.core.attributevalues.CurrencyCodeType
+				</value>
+			</trait>
+		</entity>	
 	</entity>
 	<entity id="converter" type="tag">
 		<include-entity-group id="common-core-attributes"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="converterId"/>
+			</value>
+		</trait>		
 		<entity id="converterId">
 			<trait id="attribute-value-runtime-type">
 				<value>
@@ -166,7 +228,20 @@
 			</trait>
 		</entity>
 	</entity>
+	<entity id="facet" type="tag">
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="name"/>
+			</value>
+		</trait>
+	</entity>
 	<entity id="loadBundle" type="tag">
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="basename"/>
+				<section id="var"/>
+			</value>
+		</trait>
 		<trait id="containment-constraint">
 			<value xsi:type="cnst:ContainsTagConstraint">
 				<set-generator>
@@ -200,9 +275,26 @@
 			</trait>
 		</entity>
 	</entity>
-	<entity id="param" type="tag"><include-entity-group id="common-core-attributes"/></entity>
+	<entity id="param" type="tag">
+		<include-entity-group id="common-core-attributes"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="name"/>
+				<section id="value"/>
+				<section id="binding"/>
+			</value>
+		</trait>	
+	</entity>
 	<entity id="selectItem" type="tag">
 		<include-entity-group id="common-core-attributes"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="itemLabel"/>
+				<section id="itemValue"/>
+			</value>
+		</trait>		
 		<entity id="itemDisabled">
 			<trait id="attribute-value-runtime-type">
 				<value>
@@ -212,7 +304,7 @@
 			<trait id="default-value">
 				<value>false</value>
 			</trait>
-		</entity>
+		</entity>		
 		<entity id="value">
 			<trait id="attribute-value-runtime-type">
 				<value>
@@ -226,9 +318,21 @@
 	</entity>
 	<entity id="selectItems" type="tag">	
 		<include-entity-group id="common-core-attributes"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="binding"/>
+			</value>
+		</trait>			
 	</entity>
 	<entity id="subview" type="tag">
 		<include-entity-group id="common-core-attributes"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+			</value>
+		</trait>			
 		<entity id="rendered">
 			<trait id="attribute-value-runtime-type">
 				<value>
@@ -239,6 +343,12 @@
 	</entity>
 	<entity id="validateDoubleRange" type="tag">
 		<include-entity-group id="common-core-attributes"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="minimum"/>
+				<section id="maximum"/>
+			</value>
+		</trait>			
 		<entity id="maximum">
 			<trait id="attribute-value-runtime-type">
 				<value>
@@ -256,6 +366,12 @@
 	</entity>
 	<entity id="validateLength" type="tag">
 		<include-entity-group id="common-core-attributes"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="minimum"/>
+				<section id="maximum"/>
+			</value>
+		</trait>			
 		<entity id="maximum">
 			<trait id="attribute-value-runtime-type">
 				<value>
@@ -275,6 +391,12 @@
 	</entity>
 	<entity id="validateLongRange" type="tag">
 		<include-entity-group id="common-core-attributes"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="minimum"/>
+				<section id="maximum"/>
+			</value>
+		</trait>		
 		<entity id="maximum">
 			<trait id="attribute-value-runtime-type">
 				<value>
@@ -292,6 +414,11 @@
 	</entity>
 	<entity id="validator" type="tag">
 		<include-entity-group id="common-core-attributes"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="validatorId"/>
+			</value>
+		</trait>		
 		<entity id="validatorId">
 			<trait id="attribute-value-runtime-type">
 				<value>
@@ -305,6 +432,11 @@
 	</entity>
 	<entity id="valueChangeListener" type="tag">
 		<include-entity-group id="common-core-attributes"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="type"/>
+			</value>
+		</trait>		
 		<entity id="type">
 			<trait id="attribute-value-runtime-type">
 				<value>
@@ -318,6 +450,11 @@
 	</entity>
 	<entity id="verbatim" type="tag">
 		<include-entity-group id="common-core-attributes"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="escape"/>
+			</value>
+		</trait>		
 		<entity id="escape">
 			<trait id="attribute-value-runtime-type">
 				<value>
@@ -329,7 +466,19 @@
 			</trait>
 		</entity>
 	</entity>
-	<entity id="view" type="tag"><include-entity-group id="common-core-attributes"/></entity>
+	<entity id="view" type="tag">
+		<include-entity-group id="common-core-attributes"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="locale"/>
+			</value>
+		</trait>		
+		<entity id="locale">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.LocaleType	</value>
+			</trait>
+		</entity>	
+	</entity>
 
 	<entityGroup id="common-core-attributes" type="tag">
 		<entity id="binding">
diff --git a/jsf/plugins/org.eclipse.jst.jsf.standard.tagsupport/metadata/jsf_html.properties b/jsf/plugins/org.eclipse.jst.jsf.standard.tagsupport/metadata/jsf_html.properties
index d96dce0..c06d783 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.standard.tagsupport/metadata/jsf_html.properties
+++ b/jsf/plugins/org.eclipse.jst.jsf.standard.tagsupport/metadata/jsf_html.properties
@@ -17,26 +17,18 @@
 selectOneRadio.layout.displayed-values.pageDirection=pageDirection (list is laid out vertically)
 selectOneRadio.layout.displayed-values.lineDirection=lineDirection (list is laid out horizontally)
 
-any.dir.displayed-values.ltr=ltr (left-to-right)
-any.dir.displayed-values.rtl=rtl (right-to-left)
-
-any.frame.displayed-values.none=none (no sides, default value)
-any.frame.displayed-values.above=above (top side only)
-any.frame.displayed-values.below=below (bottom side only)
-any.frame.displayed-values.hsides=hsides (top and bottom sides only)
-any.frame.displayed-values.vsides=vsides (right and left sides only)
-any.frame.displayed-values.lhs=lhs (left hand side only)
-any.frame.displayed-values.rhs=rhs (right hand side only)
-any.frame.displayed-values.box=box (all four sides)
-any.frame.displayed-values.border=border (all four sides)
-
-any.rules.displayed-values.none=none (no rules, default value)
-any.rules.displayed-values.groups=groups (between row groups)
-any.rules.displayed-values.rows=rows (between rows only)
-any.rules.displayed-values.cols=cols (between columns only)
-any.rules.displayed-values.all=all (between all rows and columns)
-
-any.shape.displayed-values.default=default (entire region)
-any.shape.displayed-values.rect=rect (rectangular region)
-any.shape.displayed-values.circle=circle (circular region)
-any.shape.displayed-values.poly=poly (polygonal region)
+property.category.event=Event
+property.category.language=Language
+property.category.html=HTML
+property.category.css=CSS
+property.category.jsf=JSF
+property.category.general=General
+property.category.accessibility=Accessibility
+property.category.visualProperty=VisualProperty
+property.category.browser.specific=Browser Specific
+property.category.core=Core
+property.category.content=Content
+property.category.data.binding=Data Binding
+property.category.dynamic=Dynamic
+property.category.file=File
+property.category.image=Image
diff --git a/jsf/plugins/org.eclipse.jst.jsf.standard.tagsupport/metadata/jsf_html.xml b/jsf/plugins/org.eclipse.jst.jsf.standard.tagsupport/metadata/jsf_html.xml
index e963c13..41a3b89 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.standard.tagsupport/metadata/jsf_html.xml
+++ b/jsf/plugins/org.eclipse.jst.jsf.standard.tagsupport/metadata/jsf_html.xml
@@ -5,11 +5,36 @@
 	xmlns:md="http://org.eclipse.jst.jsf.common.metadata/metadata.ecore"
 	xmlns:mdt="http://org.eclipse.jst.jsf.common.metadata/metadataTraitTypes.ecore"
 	xmlns:cnst="http://org.eclipse.jst.jsf.core/constraints.ecore"  
+	xmlns:qe="http://org.eclipse.jsf.pagedesigner/QuickEditTabSections.ecore"
 	id="http://java.sun.com/jsf/html"
 	type="tagFile">
 	
+	<entity id="column" type="tag">
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+			</value>
+		</trait>		
+	</entity>
 	<entity id="commandButton" type="tag">	
-		<include-entity-group id="common-attributes"/>
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="common-event-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="action"/>
+				<section id="actionListener"/>
+				<section id="type"/>
+				<section id="style"/>
+				<section id="section.general.commandButton.listener" type="SECTION"/>
+			</value>
+		</trait>
 		<trait id="containment-constraint">
 			<value xsi:type="cnst:ContainsTagConstraint">
 				<set-generator>
@@ -42,10 +67,36 @@
 			<trait id="default-value">
 				<value>submit</value>
 			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>
+		</entity>
+		<entity id="image">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.WebPathType</value>
+			</trait>		
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>
 		</entity>
 	</entity>
 	<entity id="commandLink" type="tag">		
-		<include-entity-group id="common-attributes"/>
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="common-event-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="action"/>
+				<section id="actionListener"/>
+				<section id="style"/>	
+				<section id="section.general.commandLink.listener" type="SECTION"/>			
+			</value>
+		</trait>
 		<trait id="containment-constraint">
 			<value xsi:type="cnst:ContainsTagConstraint">
 				<set-generator>
@@ -66,8 +117,34 @@
 		</trait>
 	</entity>
 	<entity id="dataTable" type="tag">
-		<include-entity-group id="common-attributes"/>
-				<entity id="var">
+		<include-entity-group id="jsf-table-attributes"/>
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="common-event-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="var"/>
+				<section id="width"/>
+				<section id="border"/>
+				<section id="bgcolor"/>
+				<section id="style"/>	
+				<section id="section.general.dataTable.columns" type="SECTION"/>		
+			</value>
+		</trait>
+		<entity id="bgcolor">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ColorType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>
+		</entity>
+		<entity id="var">
 			<trait id="contributes-value-binding">
 				<value>true</value>
 			</trait>
@@ -77,15 +154,63 @@
 			<trait id="value-binding-symbol-factory">
 				<value>org.eclipse.jst.jsf.designtime.core.loadBundle</value>
 			</trait>
+			<trait id="category"><value>%property.category.jsf</value></trait>			
 		</entity>
 	</entity>
-	<entity id="form" type="tag"><include-entity-group id="common-attributes"/></entity>
+	<entity id="form" type="tag">
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="common-event-attributes" uri="HTML"/>
+		<include-entity-group id="form-event-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="style"/>			
+			</value>
+		</trait>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="action"/>
+				<section id="actionListener"/>
+				<section id="style"/>				
+			</value>
+		</trait>		
+	</entity>
 	<entity id="graphicImage" type="tag">
-		<include-entity-group id="common-attributes"/>
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="common-event-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="url"/>
+				<section id="binding"/>
+				<section id="style"/>			
+			</value>
+		</trait>
 	</entity>
 	<entity id="inputHidden" type="tag">
-		<include-entity-group id="common-attributes"/>
-				<trait id="containment-constraint">
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="common-event-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>	
+				<!--  <section id="section.general.inputHidden.type" type="SECTION"/>	-->
+			</value>
+		</trait>
+		<trait id="containment-constraint">
 			<value xsi:type="cnst:ContainsTagConstraint">
 				<set-generator>
 					<algorithm>xpath</algorithm>
@@ -109,7 +234,21 @@
 		</entity>
 	</entity>
 	<entity id="inputSecret" type="tag">
-		<include-entity-group id="common-attributes"/>
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="common-event-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="style"/>	
+				<!-- <section id="section.general.inputSecret.type" type="SECTION"/> -->
+				<section id="section.general.inputText.others" type="SECTION"/>				
+			</value>
+		</trait>		
 		<entity id="value">
 			<trait id="attribute-value-runtime-type">
 				<value>org.eclipse.jst.jsf.core.attributevalues.ValueType</value>
@@ -120,7 +259,21 @@
 		</entity>	
 	</entity>
 	<entity id="inputText" type="tag">
-		<include-entity-group id="common-attributes"/>
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="common-event-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="style"/>	
+				<!--  <section id="section.general.inputText.type" type="SECTION"/> -->
+				<section id="section.general.inputText.others" type="SECTION"/>							
+			</value>
+		</trait>
 		<trait id="containment-constraint">
 			<value xsi:type="cnst:ContainsTagConstraint">
 				<set-generator>
@@ -145,7 +298,21 @@
 		</entity>	
 	</entity>
 	<entity id="inputTextarea" type="tag">
-		<include-entity-group id="common-attributes"/>
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="common-event-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="style"/>		
+				<!-- <section id="section.general.inputTextarea.type" type="SECTION"/> -->
+				<section id="section.general.inputTextarea.others" type="SECTION"/>	
+			</value>
+		</trait>		
 		<entity id="value">
 			<trait id="attribute-value-runtime-type">
 				<value>org.eclipse.jst.jsf.core.attributevalues.ValueType</value>
@@ -155,9 +322,33 @@
 			</trait>
 		</entity>	
 	</entity>
-	<entity id="message" type="tag"><include-entity-group id="common-attributes"/></entity>
+	<entity id="message" type="tag">
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="for-entity"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="for"/>			
+			</value>
+		</trait>
+	</entity>
 	<entity id="messages" type="tag">
-		<include-entity-group id="common-attributes"/>
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="layout"/>
+				<section id="style"/>			
+			</value>
+		</trait>		
 		<entity id="layout">
 			<trait id="attribute-value-runtime-type">
 				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
@@ -179,14 +370,110 @@
 			</trait>				
 		</entity>	
 	</entity>
-	<entity id="outputFormat" type="tag"><include-entity-group id="common-attributes"/></entity>
-	<entity id="outputLabel" type="tag"><include-entity-group id="common-attributes"/></entity>
-	<entity id="outputLink" type="tag"><include-entity-group id="common-attributes"/></entity>
-	<entity id="outputText" type="tag"><include-entity-group id="common-attributes"/></entity>
-	<entity id="panelGrid" type="tag"><include-entity-group id="common-attributes"/></entity>
-	<entity id="panelGroup" type="tag"><include-entity-group id="common-attributes"/></entity>
+	<entity id="outputFormat" type="tag">
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="style"/>		
+				<section id="section.general.outputFormat.params" type="SECTION"/>	
+			</value>
+		</trait>		
+	</entity>
+	<entity id="outputLabel" type="tag">		
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="common-event-attributes" uri="HTML"/>
+		<include-entity-group id="for-entity"/>		
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="for"/>
+				<section id="style"/>			
+			</value>
+		</trait>		
+	</entity>
+	<entity id="outputLink" type="tag">
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="common-event-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="style"/>			
+			</value>
+		</trait>		
+	</entity>
+	<entity id="outputText" type="tag">
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="binding"/>
+				<section id="style"/>	
+				<section id="section.general.outputText.converter" type="SECTION"/>	
+			</value>
+		</trait>		
+	</entity>
+	<entity id="panelGrid" type="tag">
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="jsf-table-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="common-event-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="columns"/>
+				<section id="border"/>
+				<section id="style"/>			
+			</value>
+		</trait>		
+	</entity>
+	<entity id="panelGroup" type="tag">
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>		
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="style"/>			
+			</value>
+		</trait>		
+	</entity>
 	<entity id="selectBooleanCheckbox" type="tag">
-		<include-entity-group id="common-attributes"/>
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="common-event-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="style"/>			
+			</value>
+		</trait>		
 		<trait id="containment-constraint">
 			<value xsi:type="cnst:ContainsTagConstraint">
 				<set-generator>
@@ -211,7 +498,21 @@
 		</entity>
 	</entity>
 	<entity id="selectManyCheckbox" type="tag">
-		<include-entity-group id="common-attributes"/>
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="common-event-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="layout"/>
+				<section id="style"/>	
+				<section id="section.general.selectManyCheckbox.choices" type="SECTION"/>			
+			</value>
+		</trait>
 		<trait id="containment-constraint">
 			<value xsi:type="cnst:ContainsTagConstraint">
 				<set-generator>
@@ -248,7 +549,21 @@
 		</entity>		
 	</entity>
 	<entity id="selectManyListbox" type="tag">
-		<include-entity-group id="common-attributes"/>
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="common-event-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="size"/>
+				<section id="style"/>	
+				<section id="section.general.selectManyListbox.choices" type="SECTION"/>		
+			</value>
+		</trait>		
 		<trait id="containment-constraint">
 			<value xsi:type="cnst:ContainsTagConstraint">
 				<set-generator>
@@ -265,7 +580,20 @@
 		</trait>
 	</entity>
 	<entity id="selectManyMenu" type="tag">
-		<include-entity-group id="common-attributes"/>
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="common-event-attributes" uri="HTML"/>		
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="style"/>	
+				<section id="section.general.selectManyMenu.choices" type="SECTION"/>		
+			</value>
+		</trait>
 		<trait id="containment-constraint">
 			<value xsi:type="cnst:ContainsTagConstraint">
 				<set-generator>
@@ -282,7 +610,21 @@
 		</trait>
 	</entity>
 	<entity id="selectOneListbox" type="tag">
-		<include-entity-group id="common-attributes"/>
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="common-event-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="size"/>
+				<section id="style"/>			
+				<section id="section.general.selectOneListbox.choices" type="SECTION"/>
+			</value>
+		</trait>
 		<trait id="containment-constraint">
 			<value xsi:type="cnst:ContainsTagConstraint">
 				<set-generator>
@@ -307,7 +649,20 @@
 		</entity>
 	</entity>
 	<entity id="selectOneMenu" type="tag">
-		<include-entity-group id="common-attributes"/>
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="common-event-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="style"/>	
+				<section id="section.general.selectOneMenu.choices" type="SECTION"/>		
+			</value>
+		</trait>
 		<trait id="containment-constraint">
 			<value xsi:type="cnst:ContainsTagConstraint">
 				<set-generator>
@@ -332,7 +687,21 @@
 		</entity>
 	</entity>
 	<entity id="selectOneRadio" type="tag">
-		<include-entity-group id="common-attributes"/>
+		<include-entity-group id="basic-jsf-html-attributes"/>
+		<include-entity-group id="common-jsf-html-attributes"/>
+		<include-entity-group id="common-html-attributes" uri="HTML"/>
+		<include-entity-group id="common-language-attributes" uri="HTML"/>
+		<include-entity-group id="common-core-attributes" uri="HTML"/>
+		<include-entity-group id="common-event-attributes" uri="HTML"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections">
+				<section id="id"/>
+				<section id="value"/>
+				<section id="layout"/>
+				<section id="style"/>
+				<section id="section.general.selectOneRadio.choices" type="SECTION"/>			
+			</value>
+		</trait>
 		<trait id="containment-constraint">
 			<value xsi:type="cnst:ContainsTagConstraint">
 				<set-generator>
@@ -377,8 +746,106 @@
 			</trait>				
 		</entity>			
 	</entity>
-	<entity id="column" type="tag"><include-entity-group id="common-attributes"/></entity>
-	<entityGroup id="common-attributes">
+	<entityGroup id="basic-jsf-html-attributes">
+		<entity id="id">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ComponentIDType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>			
+		</entity>
+		<entity id="binding">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ComponentBindingType</value>
+			</trait>
+			<trait id="runtime-return-type">
+				<value>javax.faces.component.UIComponent</value>
+			</trait>	
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>					
+		</entity>	
+		<entity id="converter">			
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.FacesConfigConverterIDType</value>
+			</trait>			
+			<trait id="config-type">
+				<value>javax.faces.convert.Converter</value>
+			</trait>	
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>
+		</entity>		
+		<entity id="rendered">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>				
+		</entity>	
+		<entity id="required">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>
+		</entity>		
+		<entity id="styleClass">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.pagedesigner.attributevalues.CSSClassType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>				
+		</entity>
+		<entity id="value">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ValueBindingType</value>
+			</trait>
+			<trait id="runtime-return-type">
+				<value>java.lang.String</value>
+			</trait>			
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>	
+		</entity>
+		<entity id="valueChangeListener">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.MethodBindingType</value>
+			</trait>
+			<trait id="runtime-return-type">
+				<value>void</value>
+			</trait>			
+			<trait id="runtime-param-types">
+				<value>javax.faces.event.ValueChangeEvent</value>
+			</trait>	
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>	
+		</entity>	
+		<entity id="validator">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.MethodBindingType</value>
+			</trait>	
+			<trait id="runtime-return-type">
+				<value>void</value>
+			</trait>			
+			<trait id="runtime-param-types">
+				<value xsi:type="mdt:ListOfValues">
+					<item>javax.faces.context.FacesContext</item>
+					<item>javax.faces.component.UIComponent</item>
+					<item>java.lang.Object</item>		
+				</value>						
+			</trait>	
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>			
+		</entity>	
+	</entityGroup>
+	<entityGroup id="common-jsf-html-attributes">
 		<!-- This group will be refactored -->
 		<entity id="action">
 			<trait id="attribute-value-runtime-type">
@@ -386,7 +853,10 @@
 			</trait>
 			<trait id="runtime-return-type">
 				<value>java.lang.String</value>
-			</trait>				
+			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>							
 		</entity>
 		<entity id="actionListener">
 			<trait id="attribute-value-runtime-type">
@@ -397,47 +867,19 @@
 			</trait>			
 			<trait id="runtime-param-types">
 				<value>javax.faces.event.ActionEvent</value>
-			</trait>			
-		</entity>
-		<entity id="binding">
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.ComponentBindingType</value>
+			</trait>	
+			<trait id="category">
+				<value>%property.category.jsf</value>
 			</trait>
-			<trait id="runtime-return-type">
-				<value>javax.faces.component.UIComponent</value>
-			</trait>					
-		</entity>		
-		<entity id="border">
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.IntegerType</value>
-			</trait>
-			<trait id="valid-minimum"><value>0</value></trait>
-		</entity>
-		<entity id="cellpadding">
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.IntegerType</value>
-			</trait>
-			<trait id="valid-minimum"><value>0</value></trait>
-		</entity>
-		<entity id="cellspacing">
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.IntegerType</value>
-			</trait>
-			<trait id="valid-minimum"><value>0</value></trait>
 		</entity>
 		<entity id="cols">
 			<trait id="attribute-value-runtime-type">
 				<value>org.eclipse.jst.jsf.core.attributevalues.IntegerType</value>
 			</trait>
 			<trait id="valid-minimum"><value>0</value></trait>
-		</entity>
-		<entity id="converter">			
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.FacesConfigConverterIDType</value>
+			<trait id="category">
+				<value>%property.category.jsf</value>
 			</trait>			
-			<trait id="config-type">
-				<value>javax.faces.convert.Converter</value>
-			</trait>				
 		</entity>
 		<entity id="escape">
 			<trait id="attribute-value-runtime-type">
@@ -446,7 +888,214 @@
 			<trait id="default-value">
 				<value>true</value>
 			</trait>			
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>			
 		</entity>
+		<entity id="globalOnly">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
+			</trait>
+			<trait id="default-value">
+				<value>false</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>			
+		</entity>
+		<entity id="immediate">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>				
+		</entity>
+		<entity id="readonly">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
+			</trait>
+			<trait id="default-value">
+				<value>false</value>
+			</trait>			
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>			
+		</entity>		
+		<entity id="redisplay">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>				
+		</entity>
+
+		<entity id="showDetail">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
+			</trait>
+			<trait id="default-value">
+				<value>true</value>
+			</trait>		
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>			
+		</entity>
+		<entity id="dalign">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+			</trait>
+			<trait id="valid-values">
+				<value xsi:type="mdt:ListOfValues">
+					<item>right</item>					
+					<item>left</item>
+					<item>center</item>
+					<item>justify</item>					
+				</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>
+		</entity>	
+		<entity id="ialign">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+			</trait>
+			<trait id="valid-values">
+				<value xsi:type="mdt:ListOfValues">
+					<item>bottom</item>
+					<item>middle</item>
+					<item>top</item>
+					<item>right</item>
+					<item>left</item>					
+				</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>
+		</entity>			
+		<entity id="linktype">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.LinkType</value>
+			</trait>
+			<trait id="valid-values">
+				<value xsi:type="mdt:ListOfValues">
+					<item>index</item>
+					<item>subsection</item>
+					<item>bookmark</item>
+					<item>start</item>
+					<item>next</item>					
+					<item>stylesheet</item>
+					<item>chapter</item>
+					<item>help</item>
+					<item>alternate</item>
+					<item>appendix</item>	
+					<item>contents</item>
+					<item>section</item>					
+					<item>prev</item>
+					<item>previous</item>
+					<item>glossary</item>
+					<item>copyright</item>				
+				</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>
+		</entity>
+		<entity id="media">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+			</trait>
+			<trait id="valid-values">
+				<value xsi:type="mdt:ListOfValues">
+					<item>tv</item>
+					<item>braille</item>
+					<item>tty</item>
+					<item>print</item>
+					<item>all</item>					
+					<item>projection</item>
+					<item>handheld</item>
+					<item>screen</item>
+					<item>aural</item>
+				</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>
+		</entity>	
+		<entity id="scope">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+			</trait>
+			<trait id="valid-values">
+				<value xsi:type="mdt:ListOfValues">
+					<item>row</item>
+					<item>col</item>
+					<item>rowgroup</item>
+					<item>colgroup</item>				
+				</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>
+		</entity>	
+	</entityGroup>
+	<entityGroup id="jsf-table-attributes">
+		<entity id="bgcolor">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+			</trait>	
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>		
+		</entity>	
+		<entity id="border">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.IntegerType</value>
+			</trait>
+			<trait id="valid-minimum"><value>0</value></trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>
+		</entity>
+		<entity id="cellpadding">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.IntegerType</value>
+			</trait>
+			<trait id="valid-minimum"><value>0</value></trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>
+		</entity>
+		<entity id="cellspacing">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.IntegerType</value>
+			</trait>
+			<trait id="valid-minimum"><value>0</value></trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>
+		</entity>
+		<entity id="columns">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.IntegerType</value>
+			</trait>
+			<trait id="valid-minimum">
+				<value>0</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>
+		</entity>
+		<entity id="columnClasses">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.pagedesigner.attributevalues.CSSClassType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>
+		</entity>		
 		<entity id="first">
 			<trait id="attribute-value-runtime-type">
 				<value>org.eclipse.jst.jsf.core.attributevalues.IntegerType</value>
@@ -454,7 +1103,18 @@
 			<trait id="valid-minimum">
 				<value>0</value>
 			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>
 		</entity>
+		<entity id="footerClass">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.pagedesigner.attributevalues.CSSClassType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>
+		</entity>	
 		<entity id="frame">
 			<trait id="attribute-value-runtime-type">
 				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
@@ -487,63 +1147,27 @@
 			</trait>
 			<trait id="default-value">
 				<value>none</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
 			</trait>			
-		</entity>
-		<entity id="globalOnly">
+		</entity>			
+		<entity id="headerClass">
 			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
+				<value>org.eclipse.jst.pagedesigner.attributevalues.CSSClassType</value>
 			</trait>
-			<trait id="default-value">
-				<value>false</value>
-			</trait>			
-		</entity>
-		<entity id="height">
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.LengthType</value>
+			<trait id="category">
+				<value>%property.category.jsf</value>
 			</trait>
 		</entity>
-		<entity id="id">
+		<entity id="rowClasses">
 			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.ComponentIDType</value>
+				<value>org.eclipse.jst.pagedesigner.attributevalues.CSSClassType</value>
 			</trait>
-		</entity>
-		<entity id="immediate">
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
+			<trait id="category">
+				<value>%property.category.jsf</value>
 			</trait>
 		</entity>
-		<entity id="ismap">
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
-			</trait>
-		</entity>
-		<entity id="maxlength">
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.IntegerType</value>
-			</trait>
-			<trait id="valid-minimum"><value>0</value></trait>
-		</entity>
-		<entity id="readonly">
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
-			</trait>
-		</entity>
-		<entity id="redisplay">
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
-			</trait>
-		</entity>
-		<entity id="rendered">
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
-			</trait>
-		</entity>
-		<entity id="rows">
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.IntegerType</value>
-			</trait>
-			<trait id="valid-minimum"><value>0</value></trait>
-		</entity>
 		<entity id="rules">
 			<trait id="attribute-value-runtime-type">
 				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
@@ -568,39 +1192,10 @@
 			</trait>
 			<trait id="default-value">
 				<value>none</value>
-			</trait>			
-		</entity>
-		<entity id="shape">
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
 			</trait>
-			<trait id="valid-values">
-				<value xsi:type="mdt:ListOfValues">
-					<item>default</item>
-					<item>rect</item>
-					<item>circle</item>
-					<item>poly</item>	
-				</value>			
-			</trait>
-			<trait id="displayed-values">
-				<value xsi:type="mdt:ListOfValues">
-					<item>%any.shape.displayed-values.default</item>
-					<item>%any.shape.displayed-values.rect</item>
-					<item>%any.shape.displayed-values.circle</item>
-					<item>%any.shape.displayed-values.poly</item>		
-				</value>		
-			</trait>
-			<trait id="default-value">
-				<value>default</value>
-			</trait>		
-		</entity>
-		<entity id="showDetail">
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
-			</trait>
-			<trait id="default-value">
-				<value>true</value>
-			</trait>				
+			<trait id="category">
+				<value>%property.category.jsf</value>
+			</trait>							
 		</entity>
 		<entity id="showSummary">
 			<trait id="attribute-value-runtime-type">
@@ -609,74 +1204,26 @@
 			<trait id="default-value">
 				<value>false</value>
 			</trait>
-		</entity>
-		<entity id="size">
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.IntegerType</value>
+			<trait id="category">
+				<value>%property.category.jsf</value>
 			</trait>
-			<trait id="valid-minimum"><value>0</value></trait>
 		</entity>
-		<entity id="tabindex">
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.IntegerType</value>
-			</trait>
-			<trait id="valid-minimum"><value>0</value></trait>
-			<trait id="valid-maximum"><value>32767</value></trait>
-		</entity>
-		<entity id="validator">
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.MethodBindingType</value>
-			</trait>	
-			<trait id="runtime-return-type">
-				<value>void</value>
-			</trait>			
-			<trait id="runtime-param-types">
-				<value xsi:type="mdt:ListOfValues">
-					<item>javax.faces.context.FacesContext</item>
-					<item>javax.faces.component.UIComponent</item>
-					<item>java.lang.Object</item>		
-				</value>						
-			</trait>	
-		</entity>
-		<entity id="value">
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.ValueBindingType</value>
-			</trait>
-			<trait id="runtime-return-type">
-				<value>java.lang.String</value>
-			</trait>				
-		</entity>
-		<entity id="valueChangeListener">
-			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.MethodBindingType</value>
-			</trait>
-			<trait id="runtime-return-type">
-				<value>void</value>
-			</trait>			
-			<trait id="runtime-param-types">
-				<value>javax.faces.event.ValueChangeEvent</value>
-			</trait>			
-		</entity>
-		<entity id="dir">
+		<entity id="summary">
 			<trait id="attribute-value-runtime-type">
 				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
 			</trait>
-			<trait id="valid-values">
-				<value xsi:type="mdt:ListOfValues">
-					<item>ltr</item>
-					<item>rtl</item>
-				</value>
+			<trait id="category">
+				<value>%property.category.jsf</value>
 			</trait>
-			<trait id="displayed-values">
-				<value xsi:type="mdt:ListOfValues">
-					<item>%any.dir.displayed-values.ltr</item>
-					<item>%any.dir.displayed-values.rtl</item>
-				</value>
-			</trait>			
 		</entity>
-		<entity id="width">
+	</entityGroup>
+	<entityGroup id="for-entity">
+		<entity id="for">
 			<trait id="attribute-value-runtime-type">
-				<value>org.eclipse.jst.jsf.core.attributevalues.LengthType</value>
+				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.jsf</value>
 			</trait>
 		</entity>
 	</entityGroup>
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/META-INF/MANIFEST.MF b/jsf/plugins/org.eclipse.jst.jsf.ui/META-INF/MANIFEST.MF
index f953fb2..f9bd2ca 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/META-INF/MANIFEST.MF
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/META-INF/MANIFEST.MF
@@ -21,7 +21,7 @@
  org.eclipse.wst.sse.ui;bundle-version="[1.0.101,1.2.0)",
  org.eclipse.emf.ecore;bundle-version="[2.2.0,3.0.0)",
  org.eclipse.jst.jsp.ui;bundle-version="[1.1.0,1.3.0)",
- org.eclipse.ui.forms
+ org.eclipse.ui.forms;bundle-version="[3.2.0,4.0.0)"
 Eclipse-LazyStart: true
 Export-Package: org.eclipse.jst.jsf.ui.internal;x-friends:="org.eclipse.jst.jsf.ui.tests",
  org.eclipse.jst.jsf.ui.internal.classpath;x-friends:="org.eclipse.jst.jsf.ui.tests",
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/META-INF/MANIFEST.MF b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/META-INF/MANIFEST.MF
index e70dc37..1ee5378 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/META-INF/MANIFEST.MF
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/META-INF/MANIFEST.MF
@@ -9,7 +9,6 @@
  org.eclipse.jst.pagedesigner;bundle-version="[1.0.0,1.1.0)",
  org.eclipse.jst.pagedesigner.jsp.core;bundle-version="[1.0.0,1.1.0)",
  org.eclipse.wst.common.modulecore;bundle-version="[1.1.0,1.2.0)",
- org.eclipse.wst.common.ui.properties;bundle-version="[1.0.101,1.2.0)",
  org.eclipse.jst.jsf.common.ui;bundle-version="[1.0.0,1.1.0)",
  org.eclipse.jst.jsf.core;bundle-version="[1.0.0,1.1.0)",
  org.eclipse.jst.jsf.common;bundle-version="[1.0.0,1.1.0)",
@@ -19,7 +18,8 @@
  org.eclipse.gef;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.jdt.core;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)"
+ org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui.views.properties.tabbed;bundle-version="[3.2.0,4.0.0)"
 Eclipse-LazyStart: true
 Bundle-ManifestVersion: 2
 Export-Package: org.eclipse.jst.pagedesigner.jsf.core.dom;x-internal:=true,
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/plugin.xml b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/plugin.xml
index 6e9b378..d1294e6 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/plugin.xml
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/plugin.xml
@@ -1,693 +1,469 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.2"?>
 <plugin>
-   <extension
-         point="org.eclipse.jst.pagedesigner.pageDesignerExtension">
-      <tagConverterFactory class="org.eclipse.jst.pagedesigner.jsf.ui.converter.jsfcore.JSFCoreConverterFactory"/>
-	  <attributeCellEditorFactory class="org.eclipse.jst.pagedesigner.jsf.ui.celleditors.JSFAttributeCellEditorFactory"/>
-      <tagConverterFactory class="org.eclipse.jst.pagedesigner.jsf.ui.converter.jsfhtml.JSFHTMLConverterFactory"/>
-      <elementEditFactory class="org.eclipse.jst.pagedesigner.jsf.ui.elementedit.jsfhtml.JSFHTMLElementEditFactory"/>
-      <elementEditFactory class="org.eclipse.jst.pagedesigner.jsf.ui.elementedit.jsfcore.JSFCoreElementEditFactory"/>
-      <linkCreator
-            class="org.eclipse.jst.pagedesigner.jsf.ui.actions.JSFCommandLinkCreator"
-            linkIdentifier="JSF CommandLink"/>
-      <linkCreator
-            class="org.eclipse.jst.pagedesigner.jsf.ui.actions.JSFOutputLinkCreator"
-            linkIdentifier="JSF OutputLink"/>
-   </extension>
-   
-   <extension point="org.eclipse.jst.pagedesigner.popupMenuContributor">
-	<menuItemContributor class="org.eclipse.jst.pagedesigner.jsf.ui.actions.PageFlowContributor" 
-	URI="http://java.sun.com/jsf/core"/>
-	</extension> 
-   
-   <!-- page variables -->
-   <extension
-         point="org.eclipse.jst.pagedesigner.jsp.core.pageVar">
-      <taglib uri="http://java.sun.com/jsf/html">
-            
-      	<tag
-            varTypeStringIsAttr="true"
-            varNameIsAttr="true"
-            varTypeMode="EXPRESSION_COLLECTION_ITEM"
-            varTypeString="value"
-            varName="var"
-            tagName="dataTable"/>
-       </taglib>
-       <taglib uri="http://java.sun.com/jsf/core">
-       	<tag
-            varTypeStringIsAttr="true"
-            varNameIsAttr="true"
-            varTypeMode="BUNDLE"
-            varTypeString="basename"
-            varName="var"
-            tagName="loadBundle"/>
-       </taglib>
-   </extension>
 
-   <!-- element and attribute meta data -->
-   <extension
-         point="org.eclipse.jst.pagedesigner.cmRegistry">
-      <registry
-            configFile="configs/cm/jsfcore.xml"
-            uri="http://java.sun.com/jsf/core"/>
-      <registry
-            configFile="configs/cm/jsfhtml.xml"
-            uri="http://java.sun.com/jsf/html"/>
-   </extension>
-   <extension
-         point="org.eclipse.jst.pagedesigner.propertySections">
-      <propertySections>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreActionListenerSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.actionListener">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/core"
-                  tagName="actionListener"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreAttributeSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.attribute">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/core"
-                  tagName="attribute"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreConverterSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.converter">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/core"
-                  tagName="converter"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreFacetSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.facet">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/core"
-                  tagName="facet"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreLoadBundleSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.loadBundle">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/core"
-                  tagName="loadBundle"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreParamSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.param">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/core"
-                  tagName="param"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreSelectItemSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.selectItem">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/core"
-                  tagName="selectItem"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreSelectItemsSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.selectItems">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/core"
-                  tagName="selectItems"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreSubviewSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.subview">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/core"
-                  tagName="subview"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreValidateDoubleRangeSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.validateDoubleRange">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/core"
-                  tagName="validateDoubleRange"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreValidateLengthSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.validateLength">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/core"
-                  tagName="validateLength"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreValidateLongRangeSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.validateLongRange">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/core"
-                  tagName="validateLongRange"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreValidatorSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.validator">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/core"
-                  tagName="validator"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreValueChangeListenerSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.valueChangeListener">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/core"
-                  tagName="valueChangeListener"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreVerbatimSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.verbatim">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/core"
-                  tagName="verbatim"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreViewSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.view">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/core"
-                  tagName="view"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlColumnSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.column">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="column"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlCommandButtonSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.commandButton">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="commandButton"/>
-         </propertySection>
-         <propertySection
-               afterSection="section.general.commandButton"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlActionListenerSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.commandButton.listener">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="commandButton"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlCommandLinkSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.commandLink">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="commandLink"/>
-         </propertySection>
-         <propertySection
-               afterSection="section.general.commandLink"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlActionListenerSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.commandLink.listener">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="commandLink"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlDataTableSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.dataTable">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="dataTable"/>
-         </propertySection>
-         <propertySection
-               afterSection="section.general.dataTable"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlDataTableColumnsSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.dataTable.columns">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="dataTable"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlFormSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.form">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="form"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlGraphicImageSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.graphicImage">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="graphicImage"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputHiddenSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.inputHidden">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="inputHidden"/>
-         </propertySection>
-         <propertySection
-               afterSection="section.general.inputHidden"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputHiddenTypeSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.inputHidden.type">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="inputHidden"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputSecretSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.inputSecret">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="inputSecret"/>
-         </propertySection>
-         <propertySection
-               afterSection="section.general.inputSecret"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputSecretTypeSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.inputSecret.type">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="inputSecret"/>
-         </propertySection>
-         <propertySection
-               afterSection="section.general.inputSecret.type"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputOthersSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.inputText.others">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="inputSecret"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputTextSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.inputText">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="inputText"/>
-         </propertySection>
-         <propertySection
-               afterSection="section.general.inputText"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputTextTypeSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.inputText.type">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="inputText"/>
-         </propertySection>
-         <propertySection
-               afterSection="section.general.inputText.type"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputOthersSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.inputText.others">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="inputText"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputTextareaSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.inputTextarea">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="inputTextarea"/>
-         </propertySection>
-         <propertySection
-               afterSection="section.general.inputTextarea"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputTextareaTypeSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.inputTextarea.type">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="inputTextarea"/>
-         </propertySection>
-         <propertySection
-               afterSection="section.general.inputTextarea.type"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputOthersSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.inputTextarea.others">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="inputTextarea"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlMessageSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.message">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="message"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlMessagesSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.messages">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="messages"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlOutputFormatSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.outputFormat">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="outputFormat"/>
-         </propertySection>
-         <propertySection
-               afterSection="section.general.outputFormat"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlOutputFormatParamsSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.outputFormat.params">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="outputFormat"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlOutputLabelSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.outputLabel">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="outputLabel"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlOutputLinkSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.outputLink">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="outputLink"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlOutputTextSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.outputText">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="outputText"/>
-         </propertySection>
-         <propertySection
-               afterSection="section.general.outputText"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlOutputTextConverterSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.outputText.converter">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="outputText"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlPanelGridSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.panelGrid">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="panelGrid"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlPanelGroupSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.panelGroup">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="panelGroup"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectBooleanCheckboxSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.selectBooleanCheckbox">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="selectBooleanCheckbox"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectManyCheckboxSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.selectManyCheckbox">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="selectManyCheckbox"/>
-         </propertySection>
-         <propertySection
-               afterSection="section.general.selectManyCheckbox"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectChoicesSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.selectManyCheckbox.choices">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="selectManyCheckbox"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectManyListboxSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.selectManyListbox">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="selectManyListbox"/>
-         </propertySection>
-         <propertySection
-               afterSection="section.general.selectManyListbox"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectChoicesSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.selectManyListbox.choices">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="selectManyListbox"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectManyMenuSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.selectManyMenu">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="selectManyMenu"/>
-         </propertySection>
-         <propertySection
-               afterSection="section.general.selectManyMenu"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectChoicesSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.selectManyMenu.choices">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="selectManyMenu"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectOneListboxSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.selectOneListbox">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="selectOneListbox"/>
-         </propertySection>
-         <propertySection
-               afterSection="section.general.selectOneListbox"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectChoicesSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.selectOneListbox.choices">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="selectOneListbox"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectOneMenuSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.selectOneMenu">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="selectOneMenu"/>
-         </propertySection>
-         <propertySection
-               afterSection="section.general.selectOneMenu"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectChoicesSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.selectOneMenu.choices">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="selectOneMenu"/>
-         </propertySection>
-         <propertySection
-               afterSection="top"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectOneRadioSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.selectOneRadio">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="selectOneRadio"/>
-         </propertySection>
-         <propertySection
-               afterSection="section.general.selectOneRadio"
-               class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectChoicesSection"
-               tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-               id="section.general.selectOneRadio.choices">
-            <tagFilter
-                  caseSensitive="true"
-                  uri="http://java.sun.com/jsf/html"
-                  tagName="selectOneRadio"/>
-         </propertySection>
-                   <propertySection
-                afterSection="top"
-                class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreConvertDateTimeGroup"
-                tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-                id="section.general.convertDateTime">
-             <tagFilter
-                   caseSensitive="true"
-                   uri="http://java.sun.com/jsf/core"
-                   tagName="convertDateTime"/>
-          </propertySection>
-         <propertySection
-                afterSection="top"
-                class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreConvertNumberGroup"
-                tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
-                id="section.general.convertNumber">
-             <tagFilter
-                   caseSensitive="true"
-                   uri="http://java.sun.com/jsf/core"
-                   tagName="convertNumber"/>
-          </propertySection>
-      </propertySections>
-   </extension>
-   
-   <extension
-         point="org.eclipse.jst.jsf.common.standardMetaDataFiles">
-      <standardMetaDataFile
-            location="/metadata/jsf_html.xml"
-            uri="http://java.sun.com/jsf/html">
-      </standardMetaDataFile>
-      <standardMetaDataFile
-            location="/metadata/jsf_core.xml"
-            uri="http://java.sun.com/jsf/core">
-      </standardMetaDataFile>
-            <standardMetaDataFile
-            location="/metadata/jsf_core_dti.xml"
-            uri="http://java.sun.com/jsf/core">
-      </standardMetaDataFile>
-      <standardMetaDataFile
-            location="/metadata/jsf_html_dti.xml"
-            uri="http://java.sun.com/jsf/html">
-      </standardMetaDataFile>      
-   </extension>
+	<!-- page variables -->
+	<extension point="org.eclipse.jst.pagedesigner.jsp.core.pageVar">
+		<taglib uri="http://java.sun.com/jsf/html">
+
+			<tag varTypeStringIsAttr="true" varNameIsAttr="true"
+				varTypeMode="EXPRESSION_COLLECTION_ITEM" varTypeString="value"
+				varName="var" tagName="dataTable" />
+		</taglib>
+		<taglib uri="http://java.sun.com/jsf/core">
+			<tag varTypeStringIsAttr="true" varNameIsAttr="true"
+				varTypeMode="BUNDLE" varTypeString="basename" varName="var"
+				tagName="loadBundle" />
+		</taglib>
+	</extension>
+
+	<!-- element and attribute meta data -->
+	<!-- DISABLE CMREGISTRY ITEMS
+	<extension point="org.eclipse.jst.pagedesigner.cmRegistry">
+		<registry configFile="configs/cm/jsfcore.xml"
+			uri="http://java.sun.com/jsf/core" />
+		<registry configFile="configs/cm/jsfhtml.xml"
+			uri="http://java.sun.com/jsf/html" />
+	</extension>
+	-->
+	
+	<extension point="org.eclipse.ui.views.properties.tabbed.propertySections">
+		<propertySections
+        contributorId="org.eclipse.jst.pagedesigner.tabPropertyContributor">
+        	<!-- Disable sections /delete later
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreActionListenerSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.actionListener">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/core" tagName="actionListener" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreAttributeSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.attribute">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/core" tagName="attribute" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreConverterSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.converter">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/core" tagName="converter" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreFacetSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.facet">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/core" tagName="facet" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreLoadBundleSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.loadBundle">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/core" tagName="loadBundle" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreParamSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.param">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/core" tagName="param" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreSelectItemSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.selectItem">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/core" tagName="selectItem" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreSelectItemsSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.selectItems">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/core" tagName="selectItems" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreSubviewSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.subview">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/core" tagName="subview" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreValidateDoubleRangeSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.validateDoubleRange">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/core" tagName="validateDoubleRange" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreValidateLengthSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.validateLength">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/core" tagName="validateLength" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreValidateLongRangeSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.validateLongRange">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/core" tagName="validateLongRange" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreValidatorSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.validator">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/core" tagName="validator" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreValueChangeListenerSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.valueChangeListener">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/core" tagName="valueChangeListener" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreVerbatimSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.verbatim">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/core" tagName="verbatim" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreViewSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.view">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/core" tagName="view" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlColumnSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.column">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="column" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlCommandButtonSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.commandButton">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="commandButton" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlCommandLinkSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.commandLink">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="commandLink" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlDataTableSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.dataTable">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="dataTable" />
+			</propertySection>			
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlFormSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.form">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="form" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlGraphicImageSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.graphicImage">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="graphicImage" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputHiddenSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.inputHidden">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="inputHidden" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlMessageSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.message">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="message" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlMessagesSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.messages">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="messages" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlOutputFormatSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.outputFormat">
+				<input
+          			type="org.eclipse.jst.pagedesigner.jsf.ui.Input1">
+				</input>
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="outputFormat" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputTextSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.inputText">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="inputText" />
+			</propertySection>			
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlOutputLabelSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.outputLabel">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="outputLabel" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlOutputLinkSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.outputLink">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="outputLink" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlOutputTextSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.outputText">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="outputText" />
+			</propertySection>
+			<propertySection
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputTextareaSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.inputTextarea">
+			</propertySection>
+			
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlPanelGridSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.panelGrid">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="panelGrid" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlPanelGroupSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.panelGroup">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="panelGroup" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectBooleanCheckboxSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.selectBooleanCheckbox">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="selectBooleanCheckbox" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectManyCheckboxSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.selectManyCheckbox">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="selectManyCheckbox" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectManyListboxSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.selectManyListbox">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="selectManyListbox" />
+			</propertySection>			
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectManyMenuSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.selectManyMenu">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="selectManyMenu" />
+			</propertySection>			
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputSecretSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.inputSecret">
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectOneListboxSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.selectOneListbox">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="selectOneListbox" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectOneMenuSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.selectOneMenu">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="selectOneMenu" />
+			</propertySection>
+			<propertySection afterSection="top"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectOneRadioSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.selectOneRadio">
+				<tagFilter caseSensitive="true"
+					uri="http://java.sun.com/jsf/html" tagName="selectOneRadio" />
+			</propertySection>	
+			-->
+			<propertySection
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreConvertDateTimeGroup"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.convertDateTime">
+			</propertySection>				
+			<propertySection
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFCoreConvertNumberGroup"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.convertNumber">
+			</propertySection>	
+			<propertySection
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlActionListenerSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.commandButton.listener">
+			</propertySection>
+			<propertySection
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlActionListenerSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.commandLink.listener">
+			</propertySection>
+			<propertySection 
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlDataTableColumnsSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.dataTable.columns">
+			</propertySection>
+			<propertySection 
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputHiddenTypeSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.inputHidden.type">
+			</propertySection>
+
+			<propertySection 
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputSecretTypeSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.inputSecret.type">
+			</propertySection>
+			<propertySection				
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputOthersSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.inputText.others">
+			</propertySection>
+			<propertySection 
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputTextTypeSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.inputText.type">
+			</propertySection>
+			<propertySection				
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputOthersSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.inputText.others">
+			</propertySection>
+			<propertySection
+				afterSection="section.general.inputTextarea"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputTextareaTypeSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.inputTextarea.type">
+			</propertySection>
+			<propertySection
+				afterSection="section.general.inputTextarea.type"
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlInputOthersSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.inputTextarea.others">
+			</propertySection>
+			<propertySection
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlOutputFormatParamsSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.outputFormat.params">
+			</propertySection>
+			<propertySection
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlOutputTextConverterSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.outputText.converter">
+			</propertySection>
+			<propertySection				
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectChoicesSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.selectManyCheckbox.choices">
+			</propertySection>
+			<propertySection				
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectChoicesSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.selectManyListbox.choices">
+			</propertySection>
+			<propertySection				
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectChoicesSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.selectManyMenu.choices">
+			</propertySection>			
+			<propertySection				
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectChoicesSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.selectOneListbox.choices">
+			</propertySection>			
+			<propertySection				
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectChoicesSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.selectOneMenu.choices">
+			</propertySection>
+			<propertySection				
+				class="org.eclipse.jst.pagedesigner.jsf.ui.sections.JSFHtmlSelectChoicesSection"
+				tab="org.eclipse.jst.pagedesigner.tabQuickEdit"
+				id="section.general.selectOneRadio.choices">
+			</propertySection>			 
+		</propertySections>
+	</extension>
+
+	<extension
+		point="org.eclipse.jst.jsf.common.standardMetaDataFiles">
+		<standardMetaDataFile location="/metadata/jsf_html.xml"
+			uri="http://java.sun.com/jsf/html">
+		</standardMetaDataFile>
+		<standardMetaDataFile location="/metadata/jsf_core.xml"
+			uri="http://java.sun.com/jsf/core">
+		</standardMetaDataFile>
+		<standardMetaDataFile location="/metadata/jsf_core_dti.xml"
+			uri="http://java.sun.com/jsf/core">
+		</standardMetaDataFile>
+		<standardMetaDataFile location="/metadata/jsf_html_dti.xml"
+			uri="http://java.sun.com/jsf/html">
+		</standardMetaDataFile>
+	</extension>
+	<extension
+		point="org.eclipse.jst.pagedesigner.pageDesignerExtension">
+		<tagConverterFactory
+			class="org.eclipse.jst.pagedesigner.jsf.ui.converter.jsfcore.JSFCoreConverterFactory" />
+		<attributeCellEditorFactory
+			class="org.eclipse.jst.pagedesigner.jsf.ui.celleditors.JSFAttributeCellEditorFactory" />
+		<tagConverterFactory
+			class="org.eclipse.jst.pagedesigner.jsf.ui.converter.jsfhtml.JSFHTMLConverterFactory" />
+		<elementEditFactory
+			class="org.eclipse.jst.pagedesigner.jsf.ui.elementedit.jsfhtml.JSFHTMLElementEditFactory" />
+		<elementEditFactory
+			class="org.eclipse.jst.pagedesigner.jsf.ui.elementedit.jsfcore.JSFCoreElementEditFactory" />
+		<linkCreator
+			class="org.eclipse.jst.pagedesigner.jsf.ui.actions.JSFCommandLinkCreator"
+			linkIdentifier="JSF CommandLink" />
+		<linkCreator
+			class="org.eclipse.jst.pagedesigner.jsf.ui.actions.JSFOutputLinkCreator"
+			linkIdentifier="JSF OutputLink" />
+	</extension>
+
+	<extension
+		point="org.eclipse.jst.pagedesigner.popupMenuContributor">
+		<menuItemContributor
+			class="org.eclipse.jst.pagedesigner.jsf.ui.actions.PageFlowContributor"
+			URI="http://java.sun.com/jsf/core" />
+	</extension>
 </plugin>
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/attributegroup/AttributeData.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/attributegroup/AttributeData.java
index 9cdae9b..b13fa30 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/attributegroup/AttributeData.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/attributegroup/AttributeData.java
@@ -14,6 +14,7 @@
 import java.util.HashMap;
 
 /**
+ * Information and value about a tag attribute
  * @author mengbo
  * @version 1.5
  */
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/attributegroup/CommonDialogFieldGroup.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/attributegroup/CommonDialogFieldGroup.java
index 29ca67a..8065c7b 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/attributegroup/CommonDialogFieldGroup.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/attributegroup/CommonDialogFieldGroup.java
@@ -26,6 +26,7 @@
 /**
  * @author mengbo
  * @version 1.5
+ * @TODO - unused now?
  */
 public class CommonDialogFieldGroup extends DialogFieldGroup
 {
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/attributegroup/DialogFieldFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/attributegroup/DialogFieldFactory.java
index 0afbd8a..4aab15e 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/attributegroup/DialogFieldFactory.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/attributegroup/DialogFieldFactory.java
@@ -12,20 +12,22 @@
 package org.eclipse.jst.pagedesigner.jsf.ui.attributegroup;
 
 import org.eclipse.core.resources.IProject;
+import org.eclipse.jst.jsf.common.metadata.Entity;
+import org.eclipse.jst.jsf.common.metadata.Trait;
+import org.eclipse.jst.jsf.common.metadata.internal.TraitValueHelper;
+import org.eclipse.jst.jsf.common.metadata.query.TaglibDomainMetaDataQueryHelper;
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.ClassButtonDialogField;
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.ComboDialogField;
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField;
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.RadiosDialogField;
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.StringDialogField;
-import org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor;
-import org.eclipse.jst.pagedesigner.meta.ICMRegistry;
-import org.eclipse.jst.pagedesigner.meta.IElementDescriptor;
-import org.eclipse.jst.pagedesigner.meta.IValueType;
-import org.eclipse.jst.pagedesigner.meta.internal.CMRegistry;
+import org.eclipse.jst.jsf.metadataprocessors.MetaDataEnabledProcessingFactory;
+import org.eclipse.jst.pagedesigner.meta.IAttributeRuntimeValueType;
 
 /**
  * @author mengbo
  * @version 1.5
+ * @TODO - unused now
  */
 public class DialogFieldFactory
 {
@@ -35,14 +37,21 @@
      */
     public static DialogField getDialogField(AttributeData data)
     {
-        IAttributeDescriptor descriptor = getAttributeDescriptor(data.getUri(), data.getElementName(), data.getAttributeName());
-        if(descriptor != null)
+    	Object project = data.getParamMap().get(AttributeData.Project);
+    	Entity attrEntity = null;
+    	if (project != null && project instanceof IProject){
+    		attrEntity = TaglibDomainMetaDataQueryHelper.getEntity(TaglibDomainMetaDataQueryHelper.createMetaDataModelContext((IProject)project, data.getUri()), data.getElementName()+"/"+data.getAttributeName());
+    	}
+//    	IAttributeDescriptor descriptor = getAttributeDescriptor(data.getUri(), data.getElementName(), data.getAttributeName());
+        if(attrEntity != null)
         {
-            String type = descriptor.getValueType();
-            if (IValueType.CLASSNAME.equalsIgnoreCase(type))
+        	Trait t = TaglibDomainMetaDataQueryHelper.getTrait(attrEntity, MetaDataEnabledProcessingFactory.ATTRIBUTE_VALUE_RUNTIME_TYPE_PROP_NAME);
+            String type = TraitValueHelper.getValueAsString(t);
+            if (IAttributeRuntimeValueType.JAVACLASS.equals(type)) 
+        	//if (OLDIValueType.CLASSNAME.equalsIgnoreCase(type))
             {
                 ClassButtonDialogField field = new ClassButtonDialogField(null);
-                Object project = data.getParamMap().get(AttributeData.Project);
+//                Object project = data.getParamMap().get(AttributeData.Project);
                 if (project instanceof IProject)
                 {
                     field.setProject((IProject) project);
@@ -54,20 +63,22 @@
         }
         return new StringDialogField();
     }
-
-    private static IAttributeDescriptor getAttributeDescriptor(String uri, String elementName, String attributeName)
-    {
-        ICMRegistry registry = CMRegistry.getInstance();
-        IElementDescriptor elementDescriptor = registry.getElementDescriptor(uri, elementName);
-        return elementDescriptor.getAttributeDescriptor(attributeName);
-    }
-
+    
+ 
+//    private static IAttributeDescriptor getAttributeDescriptor(String uri, String elementName, String attributeName)
+//    {
+//        ICMRegistry registry = CMRegistry.getInstance();
+//        IElementDescriptor elementDescriptor = registry.getElementDescriptor(uri, elementName);
+//        return elementDescriptor.getAttributeDescriptor(attributeName);
+//    }
+    
+    
     /**
+     * Sets the initial value of dialog field
      * @param field
      * @param value
      */
-    public static void setDialogFiledValue(DialogField field, Object value)
-    {
+    public static void setDialogFieldValue(DialogField field, Object value){
         if (field instanceof StringDialogField)
         {
             ((StringDialogField) field).setTextWithoutUpdate(value == null ? "" : value.toString());//$NON-NLS-1$
@@ -84,12 +95,23 @@
             }
         }
     }
+    
+    /**
+     * @param field
+     * @param value
+     * @deprecated - use setDialogField method
+     */
+    public static void setDialogFiledValue(DialogField field, Object value)
+    {
+    	setDialogFieldValue(field, value);
+    }
 
     /**
+     * Sets value of field into AttributeData if it was a StringDialogField
      * @param field
      * @param pair
      */
-    public static void prepareDialogFiledValue(DialogField field, AttributeData pair)
+    public static void prepareDialogFieldValue(DialogField field, AttributeData pair)
     {
         if (field instanceof StringDialogField)
         {
@@ -98,6 +120,15 @@
     }
 
     /**
+     * @param field
+     * @param pair
+     * @deprecated - use prepareDialogFieldValue
+     */
+    public static void prepareDialogFiledValue(DialogField field, AttributeData pair)
+    {
+    	prepareDialogFieldValue(field, pair);
+    }
+    /**
      * @param data
      * @return the dialog field label for data
      */
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreActionListenerSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreActionListenerSection.java
index 0995808..f70e472 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreActionListenerSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreActionListenerSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFCoreActionListenerSection extends AttributeGroupSection
+public class JSFCoreActionListenerSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreAttributeSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreAttributeSection.java
index 2767db4..7a616d8 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreAttributeSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreAttributeSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFCoreAttributeSection extends AttributeGroupSection
+public class JSFCoreAttributeSection extends OLDAttributeGroupSection
 {    
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreConvertDateTimeGroup.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreConvertDateTimeGroup.java
index 891975f..2a2a389 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreConvertDateTimeGroup.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreConvertDateTimeGroup.java
@@ -20,9 +20,9 @@
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
 import org.eclipse.jst.pagedesigner.commands.single.ChangeAttributeCommand;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
 import org.eclipse.jst.pagedesigner.meta.EditorCreator;
-import org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroup;
+import org.eclipse.jst.pagedesigner.properties.internal.QuickEditAttributeGroup;
 import org.eclipse.jst.pagedesigner.ui.dialogfields.DialogFieldWrapper;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
 
@@ -32,7 +32,7 @@
  * @author mengbo
  * @version 1.5
  */
-public class JSFCoreConvertDateTimeGroup extends AttributeGroup
+public class JSFCoreConvertDateTimeGroup extends QuickEditAttributeGroup//AttributeGroup
 {
     private StyleComboDialogField      _typeField;
     private StyleComboDialogField      _dateStyleField;
@@ -65,48 +65,47 @@
                 IJSFConstants.ATTR_DATESTYLE, IJSFConstants.ATTR_TIMESTYLE, IJSFConstants.ATTR_PATTERN});
     }
 
-    protected DialogField createDialogField(String uri, String tag, IAttributeDescriptor attr)
-    {
-        EditorCreator creator = EditorCreator.getInstance();
-        if (attr.getAttributeName().equals(IJSFConstants.ATTR_TYPE))
+    protected DialogField createDialogField(IPropertyPageDescriptor ppd) {
+        EditorCreator creator = EditorCreator.getInstance();        
+        if (ppd.getAttributeName().equals(IJSFConstants.ATTR_TYPE))
         {
             DialogFieldWrapper wrapper = (DialogFieldWrapper) creator
-                    .createDialogFieldWithWrapper(uri, tag, attr, null);
+                    .createDialogFieldWithWrapper(getURI(), getTagName(), ppd, null);
             _typeField = (StyleComboDialogField) wrapper.getWrappedDialogField();
             return wrapper;
         }
-        else if (attr.getAttributeName().equals(IJSFConstants.ATTR_DATESTYLE))
+        else if (ppd.getAttributeName().equals(IJSFConstants.ATTR_DATESTYLE))
         {
             DialogFieldWrapper wrapper = (DialogFieldWrapper) creator
-                    .createDialogFieldWithWrapper(uri, tag, attr, null);
+            	.createDialogFieldWithWrapper(getURI(), getTagName(), ppd, null);
             _dateStyleField = (StyleComboDialogField) wrapper.getWrappedDialogField();
             _dateStyleField.setItems(DATESTYLES);
             return wrapper;
         }
-        else if (attr.getAttributeName().equals(IJSFConstants.ATTR_TIMESTYLE))
+        else if (ppd.getAttributeName().equals(IJSFConstants.ATTR_TIMESTYLE))
         {
             DialogFieldWrapper wrapper = (DialogFieldWrapper) creator
-                    .createDialogFieldWithWrapper(uri, tag, attr, null);
+            	.createDialogFieldWithWrapper(getURI(), getTagName(), ppd, null);
             _timeStyleField = (StyleComboDialogField) wrapper.getWrappedDialogField();
             _timeStyleField.setItems(TIMESTYLES);
             return wrapper;
         }
-        else if (attr.getAttributeName().equals(IJSFConstants.ATTR_PATTERN))
+        else if (ppd.getAttributeName().equals(IJSFConstants.ATTR_PATTERN))
         {
             DialogFieldWrapper wrapper = (DialogFieldWrapper) creator
-                    .createDialogFieldWithWrapper(uri, tag, attr, null);
+            	.createDialogFieldWithWrapper(getURI(), getTagName(), ppd, null);
             _patternField = (StyleComboDialogField) wrapper.getWrappedDialogField();
             return wrapper;
         }
         else
         {
             return null;
-        }
+        }    	
     }
-
-    public IDialogFieldApplyListener getDialogFieldApplyListener(String uri, String tag, IAttributeDescriptor attr)
+    
+    protected IDialogFieldApplyListener getDialogFieldApplyListener(IPropertyPageDescriptor ppd)
     {
-        String attribute = attr.getAttributeName();
+        String attribute = ppd.getAttributeName();
         if (attribute.equals(IJSFConstants.ATTR_TYPE) || attribute.equals(IJSFConstants.ATTR_DATESTYLE)
                 || attribute.equals(IJSFConstants.ATTR_TIMESTYLE))
         {
@@ -162,7 +161,8 @@
             _timeStyleField.setTextWithoutUpdate(timeStyle);
         }
 
-        String pattern = element.getAttribute(IJSFConstants.ATTR_PATTERN);
+        updatePatternItems();
+        String pattern = element.getAttribute(IJSFConstants.ATTR_PATTERN);       
         _patternField.setTextWithoutUpdate(pattern);
 
         updateFieldStatus();
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreConvertNumberGroup.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreConvertNumberGroup.java
index 760847b..eb83cb3 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreConvertNumberGroup.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreConvertNumberGroup.java
@@ -14,7 +14,6 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.eclipse.jst.jsf.common.ui.internal.dialogfield.ComboDialogField;
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField;
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.IDialogFieldApplyListener;
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.StringDialogField;
@@ -22,20 +21,20 @@
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
 import org.eclipse.jst.pagedesigner.commands.single.ChangeAttributeCommand;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
 import org.eclipse.jst.pagedesigner.meta.EditorCreator;
-import org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroup;
+import org.eclipse.jst.pagedesigner.properties.internal.QuickEditAttributeGroup;
 import org.eclipse.jst.pagedesigner.ui.dialogfields.DialogFieldWrapper;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
 
 /**
  * @author mengbo
  */
-public class JSFCoreConvertNumberGroup extends AttributeGroup
+public class JSFCoreConvertNumberGroup extends QuickEditAttributeGroup
 {
     private StyleComboDialogField _typeField;
     private StyleComboDialogField _patternField;
-    private ComboDialogField      _currencyCodeField;
+    private StyleComboDialogField _currencyCodeField;
     private StringDialogField     _currencySymbolField;
 
     final private static String[] TYPES = { "number", "currency", "percentage", "custom" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
@@ -50,35 +49,35 @@
                 IJSFConstants.ATTR_CURRENCYCODE, IJSFConstants.ATTR_CURRENCYSYMBOL, IJSFConstants.ATTR_PATTERN});
     }
 
-    protected DialogField createDialogField(String uri, String tag, IAttributeDescriptor attr)
+    protected DialogField createDialogField(IPropertyPageDescriptor ppd)
     {
-        EditorCreator creator = EditorCreator.getInstance();
-        if (attr.getAttributeName().equals(IJSFConstants.ATTR_TYPE))
+    	EditorCreator creator = EditorCreator.getInstance();
+        if (ppd.getAttributeName().equals(IJSFConstants.ATTR_TYPE))
         {
             DialogFieldWrapper wrapper = (DialogFieldWrapper) creator
-                    .createDialogFieldWithWrapper(uri, tag, attr, null);
+            	.createDialogFieldWithWrapper(getURI(), getTagName(), ppd, null);
             _typeField = (StyleComboDialogField) wrapper.getWrappedDialogField();
                     _typeField.setItems(TYPES);
             return wrapper;
         }
-        else if (attr.getAttributeName().equals(IJSFConstants.ATTR_CURRENCYCODE))
+        else if (ppd.getAttributeName().equals(IJSFConstants.ATTR_CURRENCYCODE))
         {
             DialogFieldWrapper wrapper = (DialogFieldWrapper) creator
-                    .createDialogFieldWithWrapper(uri, tag, attr, null);
-            _currencyCodeField = (ComboDialogField) wrapper.getWrappedDialogField();
+            	.createDialogFieldWithWrapper(getURI(), getTagName(), ppd, null);
+            _currencyCodeField = (StyleComboDialogField) wrapper.getWrappedDialogField();
             return wrapper;
         }
-        else if (attr.getAttributeName().equals(IJSFConstants.ATTR_CURRENCYSYMBOL))
+        else if (ppd.getAttributeName().equals(IJSFConstants.ATTR_CURRENCYSYMBOL))
         {
             DialogFieldWrapper wrapper = (DialogFieldWrapper) creator
-                    .createDialogFieldWithWrapper(uri, tag, attr, null);
+            		.createDialogFieldWithWrapper(getURI(), getTagName(), ppd, null);
             _currencySymbolField = (StringDialogField) wrapper.getWrappedDialogField();
             return wrapper;
         }
-        else if (attr.getAttributeName().equals(IJSFConstants.ATTR_PATTERN))
+        else if (ppd.getAttributeName().equals(IJSFConstants.ATTR_PATTERN))
         {
             DialogFieldWrapper wrapper = (DialogFieldWrapper) creator
-                    .createDialogFieldWithWrapper(uri, tag, attr, null);
+            	.createDialogFieldWithWrapper(getURI(), getTagName(), ppd, null);
             _patternField = (StyleComboDialogField) wrapper.getWrappedDialogField();
             return wrapper;
         }
@@ -88,9 +87,9 @@
         }
     }
 
-    public IDialogFieldApplyListener getDialogFieldApplyListener(String uri, String tag, IAttributeDescriptor attr)
+    public IDialogFieldApplyListener getDialogFieldApplyListener(IPropertyPageDescriptor ppd)
     {
-        String attribute = attr.getAttributeName();
+        String attribute = ppd.getAttributeName();
         if (attribute.equals(IJSFConstants.ATTR_CURRENCYCODE) || attribute.equals(IJSFConstants.ATTR_CURRENCYSYMBOL)
                 || attribute.equals(IJSFConstants.ATTR_PATTERN))
         {
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreConverterSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreConverterSection.java
index d4eac78..9cb32c8 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreConverterSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreConverterSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFCoreConverterSection extends AttributeGroupSection
+public class JSFCoreConverterSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreFacetSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreFacetSection.java
index cb840d1..b09c509 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreFacetSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreFacetSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFCoreFacetSection extends AttributeGroupSection
+public class JSFCoreFacetSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreLoadBundleSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreLoadBundleSection.java
index 769060c..9989861 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreLoadBundleSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreLoadBundleSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFCoreLoadBundleSection extends AttributeGroupSection
+public class JSFCoreLoadBundleSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreParamSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreParamSection.java
index 5794d92..d0b03c5 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreParamSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreParamSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFCoreParamSection extends AttributeGroupSection
+public class JSFCoreParamSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreSelectItemSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreSelectItemSection.java
index e5801c9..0e4fa4a 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreSelectItemSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreSelectItemSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFCoreSelectItemSection extends AttributeGroupSection
+public class JSFCoreSelectItemSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreSelectItemsSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreSelectItemsSection.java
index a2390c2..ee2ae9e 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreSelectItemsSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreSelectItemsSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * 
  */
-public class JSFCoreSelectItemsSection extends AttributeGroupSection
+public class JSFCoreSelectItemsSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreSubviewSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreSubviewSection.java
index af1880e..97bc6fc 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreSubviewSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreSubviewSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFCoreSubviewSection extends AttributeGroupSection
+public class JSFCoreSubviewSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValidateDoubleRangeSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValidateDoubleRangeSection.java
index 747a343..1573a9b 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValidateDoubleRangeSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValidateDoubleRangeSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFCoreValidateDoubleRangeSection extends AttributeGroupSection
+public class JSFCoreValidateDoubleRangeSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValidateLengthSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValidateLengthSection.java
index 6c60c9d..bec7d74 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValidateLengthSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValidateLengthSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFCoreValidateLengthSection extends AttributeGroupSection
+public class JSFCoreValidateLengthSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValidateLongRangeSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValidateLongRangeSection.java
index 7933d9c..10feb1c 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValidateLongRangeSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValidateLongRangeSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFCoreValidateLongRangeSection extends AttributeGroupSection
+public class JSFCoreValidateLongRangeSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValidatorSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValidatorSection.java
index aa9d9bf..c2c0897 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValidatorSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValidatorSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFCoreValidatorSection extends AttributeGroupSection
+public class JSFCoreValidatorSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValueChangeListenerSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValueChangeListenerSection.java
index 0db0344..28ca25a 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValueChangeListenerSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreValueChangeListenerSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFCoreValueChangeListenerSection extends AttributeGroupSection
+public class JSFCoreValueChangeListenerSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreVerbatimSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreVerbatimSection.java
index ec0eea5..7775e6e 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreVerbatimSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreVerbatimSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFCoreVerbatimSection extends AttributeGroupSection
+public class JSFCoreVerbatimSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreViewSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreViewSection.java
index d08a2f7..1be5f66 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreViewSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFCoreViewSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFCoreViewSection extends AttributeGroupSection
+public class JSFCoreViewSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlActionListenerSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlActionListenerSection.java
index 17b8281..3e3626c 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlActionListenerSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlActionListenerSection.java
@@ -45,8 +45,8 @@
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
 import org.w3c.dom.Node;
@@ -66,7 +66,7 @@
     private CCombo                _listenTypeCombo;
     private Button                _listenAddButton, _listenRemoveButton;
 
-    private class ListenerCotentLabelProvider implements IStructuredContentProvider, ITableLabelProvider
+    private class ListenerContentLabelProvider implements IStructuredContentProvider, ITableLabelProvider
     {
 
         /* (non-Javadoc)
@@ -111,10 +111,10 @@
         public String getColumnText(Object element, int columnIndex)
         {
             String result = null;
-            if (element instanceof IDOMElement)
+            if (element instanceof Node)
             {
-                IDOMElement node = (IDOMElement) element;
-                String nodeName = node.getNodeName();
+                Node node = (Node) element;
+                String nodeName = getTableNodeName(node, "type");
                 switch (columnIndex)
                 {
                     case 0:
@@ -131,7 +131,17 @@
          * @see org.eclipse.jface.viewers.IContentProvider#dispose()
          */
 
-        public void dispose()
+        private String getTableNodeName(Node node, String ... attrNames) {
+        	for (String attrName : attrNames) {
+        		Node attr = node.getAttributes().getNamedItem(attrName);
+        		if (attr != null && attr.getNodeValue()!= null && 
+        				! attr.getNodeValue().trim().equals(""))
+        			return attr.getNodeValue().trim();
+        	}
+			return node.getNodeName();
+		}
+
+		public void dispose()
         {
             // nothing to dispose
         }
@@ -169,7 +179,7 @@
         }
     }
 
-    /**
+     /**
      * Default constructor
      */
     public JSFHtmlActionListenerSection()
@@ -209,11 +219,11 @@
 
         TableColumn listenColumn = new TableColumn(_listenersTable, SWT.NONE);
         listenColumn.setText(SectionResources.getString("JSFHtmlCommandButtonSection.Listeners")); //$NON-NLS-1$
-        listenColumn.setWidth(100);
+        listenColumn.setWidth(500);
 
         _listenersViewer = new TableViewer(_listenersTable);
-        _listenersViewer.setContentProvider(new ListenerCotentLabelProvider());
-        _listenersViewer.setLabelProvider(new ListenerCotentLabelProvider());
+        _listenersViewer.setContentProvider(new ListenerContentLabelProvider());
+        _listenersViewer.setLabelProvider(new ListenerContentLabelProvider());
         _listenersViewer.addDoubleClickListener(new IDoubleClickListener()
         {
             public void doubleClick(DoubleClickEvent event)
@@ -301,7 +311,8 @@
     {
         super.setInput(part, selection);
         _element = (IDOMElement) DesignerPropertyTool.getElement(part, selection);
-        _listenersViewer.setInput(_element);
+        if (_listenersViewer != null)
+        	_listenersViewer.setInput(_element);
     }
 
     protected void notifyChanged(INodeNotifier notifier, int eventType, Object changedFeature, Object oldValue, Object newValue, int pos)
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlColumnSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlColumnSection.java
index 6791f46..95ddc5b 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlColumnSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlColumnSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlColumnSection extends AttributeGroupSection
+public class JSFHtmlColumnSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlCommandButtonSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlCommandButtonSection.java
index 9abaf11..09187bd 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlCommandButtonSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlCommandButtonSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlCommandButtonSection extends AttributeGroupSection
+public class JSFHtmlCommandButtonSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlCommandLinkSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlCommandLinkSection.java
index 320c4bf..867c929 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlCommandLinkSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlCommandLinkSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlCommandLinkSection extends AttributeGroupSection
+public class JSFHtmlCommandLinkSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlDataTableColumnsSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlDataTableColumnsSection.java
index 1aad0e6..92bd788 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlDataTableColumnsSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlDataTableColumnsSection.java
@@ -45,8 +45,8 @@
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
 import org.w3c.dom.Node;
@@ -334,7 +334,7 @@
         }
         );
     }
-
+    
     /**
      * Update the button status
      */
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlDataTableSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlDataTableSection.java
index 89bbeb3..1156666 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlDataTableSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlDataTableSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlDataTableSection extends AttributeGroupSection
+public class JSFHtmlDataTableSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlFormSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlFormSection.java
index 1fe391d..f8e69b0 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlFormSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlFormSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlFormSection extends AttributeGroupSection
+public class JSFHtmlFormSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlGraphicImageSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlGraphicImageSection.java
index 3475f7b..0a3c4b1 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlGraphicImageSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlGraphicImageSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlGraphicImageSection extends AttributeGroupSection
+public class JSFHtmlGraphicImageSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputHiddenSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputHiddenSection.java
index 04c47b2..e7d273a 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputHiddenSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputHiddenSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlInputHiddenSection extends AttributeGroupSection
+public class JSFHtmlInputHiddenSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputHiddenTypeSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputHiddenTypeSection.java
index e5bba5f..77c1be1 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputHiddenTypeSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputHiddenTypeSection.java
@@ -25,8 +25,8 @@
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 
 /**
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputOthersSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputOthersSection.java
index 55a7efa..2da1a53 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputOthersSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputOthersSection.java
@@ -51,8 +51,8 @@
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.swt.widgets.TableItem;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
 import org.w3c.dom.Node;
@@ -80,7 +80,7 @@
     final private static String[] VALIDATORS_COLUMN_NAMES = { IJSFConstants.TAG_VALIDATOR, IJSFConstants.ATTR_MINIMUM,
             IJSFConstants.ATTR_MAXIMUM                    };
 
-    private class ValidateCotentLabelProvider implements IStructuredContentProvider, ITableLabelProvider
+    private class ValidateContentLabelProvider implements IStructuredContentProvider, ITableLabelProvider
     {
 
         /* (non-Javadoc)
@@ -259,12 +259,13 @@
                 default:
                     break;
             }
-            _validatorsViewer.setInput(_element);
+            _validatorsViewer.refresh();
+//            _validatorsViewer.setInput(_element);
             updateValidateButtonStatus();
         }
     }
 
-    private class ConvertCotentLabelProvider implements IStructuredContentProvider, ITableLabelProvider
+    private class ConvertContentLabelProvider implements IStructuredContentProvider, ITableLabelProvider
     {
 
         /* (non-Javadoc)
@@ -367,7 +368,7 @@
         }
     }
 
-    private class ListenerCotentLabelProvider implements IStructuredContentProvider, ITableLabelProvider
+    private class ListenerContentLabelProvider implements IStructuredContentProvider, ITableLabelProvider
     {
 
         /* (non-Javadoc)
@@ -513,11 +514,11 @@
 
         TableColumn convertColumn = new TableColumn(_convertorsTable, SWT.NONE);
         convertColumn.setText(SectionResources.getString("JSFHtmlInputTextSection.Converter")); //$NON-NLS-1$
-        convertColumn.setWidth(100);
+        convertColumn.setWidth(150);
 
         _convertorsViewer = new TableViewer(_convertorsTable);
-        _convertorsViewer.setContentProvider(new ConvertCotentLabelProvider());
-        _convertorsViewer.setLabelProvider(new ConvertCotentLabelProvider());
+        _convertorsViewer.setContentProvider(new ConvertContentLabelProvider());
+        _convertorsViewer.setLabelProvider(new ConvertContentLabelProvider());
         _convertorsViewer.addDoubleClickListener(new IDoubleClickListener()
         {
             public void doubleClick(DoubleClickEvent event)
@@ -604,11 +605,11 @@
 
         TableColumn listenColumn = new TableColumn(_listenersTable, SWT.NONE);
         listenColumn.setText(SectionResources.getString("JSFHtmlInputTextSection.Listeners")); //$NON-NLS-1$
-        listenColumn.setWidth(100);
+        listenColumn.setWidth(150);
 
         _listenersViewer = new TableViewer(_listenersTable);
-        _listenersViewer.setContentProvider(new ListenerCotentLabelProvider());
-        _listenersViewer.setLabelProvider(new ListenerCotentLabelProvider());
+        _listenersViewer.setContentProvider(new ListenerContentLabelProvider());
+        _listenersViewer.setLabelProvider(new ListenerContentLabelProvider());
         _listenersViewer.addDoubleClickListener(new IDoubleClickListener()
         {
             public void doubleClick(DoubleClickEvent event)
@@ -696,15 +697,15 @@
 
         TableColumn validateColumn = new TableColumn(_validatorsTable, SWT.NONE);
         validateColumn.setText(SectionResources.getString("JSFHtmlInputTextSection.Validators")); //$NON-NLS-1$
-        validateColumn.setWidth(50);
+        validateColumn.setWidth(150);
 
         TableColumn minColumn = new TableColumn(_validatorsTable, SWT.NONE);
         minColumn.setText(SectionResources.getString("JSFHtmlInputTextSection.Minimum")); //$NON-NLS-1$
-        minColumn.setWidth(50);
+        minColumn.setWidth(100);
 
         TableColumn maxColumn = new TableColumn(_validatorsTable, SWT.NONE);
         maxColumn.setText(SectionResources.getString("JSFHtmlInputTextSection.Maximum")); //$NON-NLS-1$
-        maxColumn.setWidth(50);
+        maxColumn.setWidth(100);
 
         _validatorsViewer = new TableViewer(_validatorsTable);
         _validatorsViewer.setColumnProperties(VALIDATORS_COLUMN_NAMES);
@@ -719,8 +720,8 @@
 
         _validatorsViewer.setCellEditors(editors);
         _validatorsViewer.setCellModifier(new ValidateCellModifier());
-        _validatorsViewer.setContentProvider(new ValidateCotentLabelProvider());
-        _validatorsViewer.setLabelProvider(new ValidateCotentLabelProvider());
+        _validatorsViewer.setContentProvider(new ValidateContentLabelProvider());
+        _validatorsViewer.setLabelProvider(new ValidateContentLabelProvider());
         _validatorsViewer.addDoubleClickListener(new IDoubleClickListener()
         {
             public void doubleClick(DoubleClickEvent event)
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputSecretSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputSecretSection.java
index 7f7b212..9eb191e 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputSecretSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputSecretSection.java
@@ -13,12 +13,12 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
  */
-public class JSFHtmlInputSecretSection extends AttributeGroupSection
+public class JSFHtmlInputSecretSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputSecretTypeSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputSecretTypeSection.java
index e1eda9f..76b49ea 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputSecretTypeSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputSecretTypeSection.java
@@ -25,8 +25,8 @@
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 
 /**
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputTextSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputTextSection.java
index 2360ee2..3307655 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputTextSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputTextSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlInputTextSection extends AttributeGroupSection
+public class JSFHtmlInputTextSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputTextTypeSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputTextTypeSection.java
index d757e07..26befdf 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputTextTypeSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputTextTypeSection.java
@@ -25,8 +25,8 @@
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 
 /**
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputTextareaSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputTextareaSection.java
index bb4f5c9..ed104b6 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputTextareaSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputTextareaSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlInputTextareaSection extends AttributeGroupSection
+public class JSFHtmlInputTextareaSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputTextareaTypeSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputTextareaTypeSection.java
index dab7f97..8c70c1a 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputTextareaTypeSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlInputTextareaTypeSection.java
@@ -25,8 +25,8 @@
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 
 /**
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlMessageSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlMessageSection.java
index 8476673..bcc6b7b 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlMessageSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlMessageSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlMessageSection extends AttributeGroupSection
+public class JSFHtmlMessageSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlMessagesSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlMessagesSection.java
index 14cdabc..a45f690 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlMessagesSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlMessagesSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlMessagesSection extends AttributeGroupSection
+public class JSFHtmlMessagesSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputFormatParamsSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputFormatParamsSection.java
index ec1ad7c..1d307cf 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputFormatParamsSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputFormatParamsSection.java
@@ -51,8 +51,8 @@
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.swt.widgets.TableItem;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
 import org.w3c.dom.Node;
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputFormatSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputFormatSection.java
index 5011d60..3320612 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputFormatSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputFormatSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlOutputFormatSection extends AttributeGroupSection
+public class JSFHtmlOutputFormatSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputLabelSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputLabelSection.java
index 17fb072..9a48e10 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputLabelSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputLabelSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlOutputLabelSection extends AttributeGroupSection
+public class JSFHtmlOutputLabelSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputLinkSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputLinkSection.java
index 338b7ad..6114101 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputLinkSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputLinkSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlOutputLinkSection extends AttributeGroupSection
+public class JSFHtmlOutputLinkSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputTextConverterSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputTextConverterSection.java
index 9a6a0fc..718dddc 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputTextConverterSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputTextConverterSection.java
@@ -44,8 +44,8 @@
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
 import org.w3c.dom.Node;
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputTextSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputTextSection.java
index e46317c..5212234 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputTextSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlOutputTextSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlOutputTextSection extends AttributeGroupSection
+public class JSFHtmlOutputTextSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlPanelGridSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlPanelGridSection.java
index 1c92da3..2f493d6 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlPanelGridSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlPanelGridSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlPanelGridSection extends AttributeGroupSection
+public class JSFHtmlPanelGridSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlPanelGroupSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlPanelGroupSection.java
index a997931..71b29f4 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlPanelGroupSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlPanelGroupSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlPanelGroupSection extends AttributeGroupSection
+public class JSFHtmlPanelGroupSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectBooleanCheckboxSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectBooleanCheckboxSection.java
index 28c358d..e59c49d 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectBooleanCheckboxSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectBooleanCheckboxSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlSelectBooleanCheckboxSection extends AttributeGroupSection
+public class JSFHtmlSelectBooleanCheckboxSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectChoicesSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectChoicesSection.java
index a2940c8..0ec2a67 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectChoicesSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectChoicesSection.java
@@ -46,8 +46,8 @@
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
 import org.w3c.dom.Node;
@@ -110,58 +110,54 @@
         public String getColumnText(Object element, int columnIndex)
         {
             String result = null;
-            if (element instanceof IDOMElement)
-            {
-                IDOMElement node = (IDOMElement) element;
-                String nodeName = node.getNodeName();
+            if (element instanceof Node)
+            {            	
+                Node node = (Node) element; 
+                Node attrNode = null;
+                String attrName = null;
+                if (columnIndex == 1)
+                	attrName = "itemLabel";
+                else if (columnIndex == 2)
+                	attrName = "itemValue";
+                else if (columnIndex == 3)
+                	attrName = "id";
+                
                 switch (columnIndex)
                 {
                     case 0:
-                        result = nodeName;
+                        result = node.getNodeName();
                         break;
                     default:
-                        break;
-                }
+                    	attrNode = node.getAttributes().getNamedItem(attrName);
+                    	if (attrNode != null)
+                    		result = attrNode.getNodeValue()!=null ? attrNode.getNodeValue() : " - ";
+                    	else
+                    		result = " - ";
+                 }
             }
             return result != null ? result : ""; //$NON-NLS-1$
         }
 
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-         */
-
         public void dispose()
         {
             // do nothing
         }
 
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
-         */
         public Image getColumnImage(Object element, int columnIndex)
         {
             return null;
         }
 
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
-         */
         public void addListener(ILabelProviderListener listener)
         {
             // TODO: no support for listeners?
         }
 
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
-         */
         public boolean isLabelProperty(Object element, String property)
         {
             return false;
         }
 
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
-         */
         public void removeListener(ILabelProviderListener listener)
         {
             // TODO: no support for listeners?
@@ -208,6 +204,18 @@
         TableColumn choiceColumn = new TableColumn(_choiceTable, SWT.NONE);
         choiceColumn.setText(SectionResources.getString("JSFHtmlSelectManyCheckboxSection.Choices")); //$NON-NLS-1$
         choiceColumn.setWidth(100);
+        
+        TableColumn labelColumn = new TableColumn(_choiceTable, SWT.NONE);
+        labelColumn.setText("itemLabel");
+        labelColumn.setWidth(100);
+        
+        TableColumn valueColumn = new TableColumn(_choiceTable, SWT.NONE);
+        valueColumn.setText("itemValue");
+        valueColumn.setWidth(100);
+        
+        TableColumn idColumn = new TableColumn(_choiceTable, SWT.NONE);
+        idColumn.setText("id");
+        idColumn.setWidth(100);
 
         _choiceViewer = new TableViewer(_choiceTable);
         _choiceViewer.setContentProvider(new ChoiceCotentLabelProvider());
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectManyCheckboxSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectManyCheckboxSection.java
index add7c7e..a9891b2 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectManyCheckboxSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectManyCheckboxSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlSelectManyCheckboxSection extends AttributeGroupSection
+public class JSFHtmlSelectManyCheckboxSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectManyListboxSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectManyListboxSection.java
index 8ab6d1c..e173080 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectManyListboxSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectManyListboxSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlSelectManyListboxSection extends AttributeGroupSection
+public class JSFHtmlSelectManyListboxSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectManyMenuSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectManyMenuSection.java
index be99523..15fa17b 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectManyMenuSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectManyMenuSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlSelectManyMenuSection extends AttributeGroupSection
+public class JSFHtmlSelectManyMenuSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectOneListboxSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectOneListboxSection.java
index 47ae386..c8b9c4a 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectOneListboxSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectOneListboxSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlSelectOneListboxSection extends AttributeGroupSection
+public class JSFHtmlSelectOneListboxSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectOneMenuSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectOneMenuSection.java
index 1d4965e..0c2c911 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectOneMenuSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectOneMenuSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlSelectOneMenuSection extends AttributeGroupSection
+public class JSFHtmlSelectOneMenuSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectOneRadioSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectOneRadioSection.java
index d6b8362..02b7ea3 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectOneRadioSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/sections/JSFHtmlSelectOneRadioSection.java
@@ -13,12 +13,13 @@
 
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.OLDAttributeGroupSection;
 
 /**
  * @author mengbo
+ * @deprecated
  */
-public class JSFHtmlSelectOneRadioSection extends AttributeGroupSection
+public class JSFHtmlSelectOneRadioSection extends OLDAttributeGroupSection
 {
     /**
      * The default constructor 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsp.core/metadata/jsp11.xml b/jsf/plugins/org.eclipse.jst.pagedesigner.jsp.core/metadata/jsp11.xml
index 1cd7345..f39c7c9 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsp.core/metadata/jsp11.xml
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsp.core/metadata/jsp11.xml
@@ -2,29 +2,30 @@
 <md:metadatamodel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" 
 	xmlns:md="http://org.eclipse.jst.jsf.common.metadata/metadata.ecore"
+	xmlns:mdt="http://org.eclipse.jst.jsf.common.metadata/metadataTraitTypes.ecore"
 	xmlns:pi="http://org.eclipse.jsf.pagedesigner/paletteInfos.ecore"
 	id="jsp11"
 	type="tagFile">
 	
 	<trait id="paletteInfos">
 		<value xsi:type="pi:PaletteInfos">
-			<item id="jsp:directive.include"/>
-			<item id="jsp:directive.taglib"/>
-			<item id="jsp:expression"/>
-			<item id="jsp:declaration"/>
-			<item id="jsp:useBean"/>
-			<item id="jsp:getProperty"/>
-			<item id="jsp:setProperty"/>
-			<item id="jsp:include"/>
-			<item id="jsp:text"/>
-			<item id="jsp:root"/>
-			<item id="jsp:forward"/>
-			<item id="jsp:param"/>
-			<item id="jsp:params"/>
-			<item id="jsp:plugin"/>
-			<item id="jsp:fallback"/>
-			<item id="jsp:scriptlet"/>
-			<item id="jsp:directive.page"/>			
+			<item id="directive.include"/>
+			<item id="directive.taglib"/>
+			<item id="expression"/>
+			<item id="declaration"/>
+			<item id="useBean"/>
+			<item id="getProperty"/>
+			<item id="setProperty"/>
+			<item id="include"/>
+			<item id="text"/>
+			<item id="root"/>
+			<item id="forward"/>
+			<item id="param"/>
+			<item id="params"/>
+			<item id="plugin"/>
+			<item id="fallback"/>
+			<item id="scriptlet"/>
+			<item id="directive.page"/>			
 		</value>
 	</trait>
 
@@ -36,7 +37,7 @@
 		<value>JSP</value>
 	</trait>
 	
-	<entity id="jsp:directive.include">
+	<entity id="directive.include">
 		<trait id="display-label">
 			<value>%directive.include.display-label</value>
 		</trait>
@@ -50,7 +51,7 @@
 			<value>large/JSP_DIRECTIVE.INCLUDE.gif</value>
 		</trait>
 	</entity>
-	<entity id="jsp:directive.page">
+	<entity id="directive.page">
 		<trait id="display-label">
 			<value>%directive.page.display-label</value>
 		</trait>
@@ -65,7 +66,7 @@
 		</trait>
 	</entity>	
 
-	<entity id="jsp:directive.taglib">
+	<entity id="directive.taglib">
 		<trait id="display-label">
 			<value>%directive.taglib.display-label</value>
 		</trait>
@@ -79,7 +80,7 @@
 			<value>large/JSP_DIRECTIVE.TAGLIB.gif</value>
 		</trait>
 	</entity>	
-	<entity id="jsp:expression">
+	<entity id="expression">
 		<trait id="display-label">
 			<value>%expression.display-label</value>
 		</trait>
@@ -93,7 +94,7 @@
 			<value>large/JSP_EXPRESSION.gif</value>
 		</trait>
 	</entity>	
-	<entity id="jsp:declaration">
+	<entity id="declaration">
 		<trait id="display-label">
 			<value>%declaration.display-label</value>
 		</trait>
@@ -107,7 +108,7 @@
 			<value>large/JSP_DECLARATION.gif</value>
 		</trait>
 	</entity>	
-	<entity id="jsp:useBean">
+	<entity id="useBean">
 		<trait id="display-label">
 			<value>%useBean.display-label</value>
 		</trait>
@@ -122,7 +123,7 @@
 		</trait>
 	</entity>	
 		
-	<entity id="jsp:getProperty">
+	<entity id="getProperty">
 		<trait id="display-label">
 			<value>%getProperty.display-label</value>
 		</trait>
@@ -137,7 +138,7 @@
 		</trait>
 	</entity>	
 
-	<entity id="jsp:setProperty">
+	<entity id="setProperty">
 		<trait id="display-label">
 			<value>%setProperty.display-label</value>
 		</trait>
@@ -151,7 +152,8 @@
 			<value>large/JSP_SETPROPERTY.gif</value>
 		</trait>
 	</entity>	
-	<entity id="jsp:include">
+	<entity id="include">
+		<include-entity-group id="page-attribute"/>
 		<trait id="display-label">
 			<value>%include.display-label</value>
 		</trait>
@@ -166,7 +168,7 @@
 		</trait>
 	</entity>	
 	
-	<entity id="jsp:text">
+	<entity id="text">
 		<trait id="display-label">
 			<value>%text.display-label</value>
 		</trait>
@@ -180,7 +182,7 @@
 			<value>large/JSP_TEXT.gif</value>
 		</trait>
 	</entity>	
-	<entity id="jsp:root">
+	<entity id="root">
 		<trait id="display-label">
 			<value>%root.display-label</value>
 		</trait>
@@ -194,7 +196,8 @@
 			<value>large/JSP_ROOT.gif</value>
 		</trait>
 	</entity>	
-	<entity id="jsp:forward">
+	<entity id="forward">
+		<include-entity-group id="page-attribute"/>
 		<trait id="display-label">
 			<value>%forward.display-label</value>
 		</trait>
@@ -207,9 +210,8 @@
 		<trait id="large-icon">
 			<value>large/JSP_FORWARD.gif</value>
 		</trait>
-	</entity>	
-	
-	<entity id="jsp:param">
+	</entity>		
+	<entity id="param">
 		<trait id="display-label">
 			<value>%param.display-label</value>
 		</trait>
@@ -223,7 +225,7 @@
 			<value>large/JSP_PARAM.gif</value>
 		</trait>
 	</entity>	
-	<entity id="jsp:params">
+	<entity id="params">
 		<trait id="display-label">
 			<value>%params.display-label</value>
 		</trait>
@@ -237,7 +239,7 @@
 			<value>large/JSP_PARAMS.gif</value>
 		</trait>
 	</entity>		
-	<entity id="jsp:plugin">
+	<entity id="plugin">
 		<trait id="display-label">
 			<value>%plugin.display-label</value>
 		</trait>
@@ -251,7 +253,7 @@
 			<value>large/JSP_PLUGIN.gif</value>
 		</trait>
 	</entity>	
-	<entity id="jsp:fallback">
+	<entity id="fallback">
 		<trait id="display-label">
 			<value>%fallback.display-label</value>
 		</trait>
@@ -265,7 +267,7 @@
 			<value>large/JSP_FALLBACK.gif</value>
 		</trait>
 	</entity>
-	<entity id="jsp:scriptlet">
+	<entity id="scriptlet">
 		<trait id="display-label">
 			<value>%scriptlet.display-label</value>
 		</trait>
@@ -279,4 +281,19 @@
 			<value>large/JSP_SCRIPTLET.gif</value>
 		</trait>
 	</entity>	
+	<entityGroup id="page-attribute">
+		<entity id="page">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.WebPathType</value>
+			</trait>
+			<trait id="file-extensions" >
+				<value xsi:type="mdt:ListOfValues">
+					<item>jsp</item>
+					<item>jspx</item>
+					<item>html</item>
+					<item>xhtml</item>								
+				</value>
+			</trait>
+		</entity>
+	</entityGroup>
 </md:metadatamodel>
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsp.core/src/org/eclipse/jst/pagedesigner/jsp/core/internal/metadata/JSPContentModelMetaDataTranslator.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsp.core/src/org/eclipse/jst/pagedesigner/jsp/core/internal/metadata/JSPContentModelMetaDataTranslator.java
index d3b9c8d..2db14e2 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsp.core/src/org/eclipse/jst/pagedesigner/jsp/core/internal/metadata/JSPContentModelMetaDataTranslator.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsp.core/src/org/eclipse/jst/pagedesigner/jsp/core/internal/metadata/JSPContentModelMetaDataTranslator.java
@@ -13,15 +13,24 @@
 
 import org.eclipse.jst.jsf.common.metadata.internal.AbstractTagLibDomainContentModelMetaDataTranslator;
 import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataModelMergeAssistant;
+import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataSourceModelProvider;
 import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataTranslator;
 import org.eclipse.wst.html.core.internal.contentmodel.JSPCMDocument;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
 
 /**
  * Translates the JSP CMDocument to standard metadata model entities and traits
  */
 public class JSPContentModelMetaDataTranslator extends AbstractTagLibDomainContentModelMetaDataTranslator implements IMetaDataTranslator {
 
+	public boolean canTranslate(IMetaDataSourceModelProvider modelProvider) {		
+		if (modelProvider.getSourceModel() != null && 
+				modelProvider.getSourceModel() instanceof JSPCMDocument)
+			return true;
+		return false;
+	}
+	
 	public void translate(final IMetaDataModelMergeAssistant assistant) {
 		setAssistant(assistant);
 		CMDocument doc = getSourceModel();
@@ -37,11 +46,15 @@
 		return "JSP Tags";
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jst.jsf.common.metadata.internal.AbstractTagLibDomainContentModelMetaDataTranslator#getURIDisplayLabel()
-	 */
+	@Override
 	protected String getURIDisplayLabel() {		
 		return "JSP";
 	}
 
+	@Override
+	protected String getTagNodeName(CMElementDeclaration tag) {
+		//strip "jsp:"
+		return tag.getNodeName().substring(4);
+	}
+
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsp.core/src/org/eclipse/jst/pagedesigner/jsp/core/internal/metadata/TaglibMetaDataTLDTranslator.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsp.core/src/org/eclipse/jst/pagedesigner/jsp/core/internal/metadata/TaglibMetaDataTLDTranslator.java
index a438b3e..5068d0a 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsp.core/src/org/eclipse/jst/pagedesigner/jsp/core/internal/metadata/TaglibMetaDataTLDTranslator.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsp.core/src/org/eclipse/jst/pagedesigner/jsp/core/internal/metadata/TaglibMetaDataTLDTranslator.java
@@ -13,9 +13,12 @@
 
 import org.eclipse.jst.jsf.common.metadata.internal.AbstractTagLibDomainContentModelMetaDataTranslator;
 import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataModelMergeAssistant;
+import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataSourceModelProvider;
 import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataTranslator;
+import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDAttributeDeclaration;
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDDocument;
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDElementDeclaration;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
 
@@ -25,6 +28,13 @@
  */
 public class TaglibMetaDataTLDTranslator extends AbstractTagLibDomainContentModelMetaDataTranslator implements IMetaDataTranslator {
 
+	public boolean canTranslate(IMetaDataSourceModelProvider modelProvider) {		
+		if (modelProvider.getSourceModel() != null && 
+				modelProvider.getSourceModel() instanceof TLDDocument)
+			return true;
+		return false;
+	}
+	
 	/* (non-Javadoc)
 	 * @see org.eclipse.jst.jsf.common.metadata.internal.IMetaDataTranslator#translate(org.eclipse.jst.jsf.common.metadata.internal.IMetaDataModelMergeAssistant)
 	 */
@@ -109,4 +119,25 @@
 		return (TLDDocument)getSourceModel();
 	}
 
+	@Override
+	protected String getTagAttributeDescription(CMAttributeDeclaration cmAttr) {
+		String desc = ((TLDAttributeDeclaration)cmAttr).getDescription();
+		if (desc == null)
+			desc = super.getTagAttributeDescription(cmAttr);
+		return desc;
+	}
+
+	@Override
+	protected boolean getTagAttributeIsRequired(CMAttributeDeclaration cmAttr) {
+		// TODO Auto-generated method stub
+		return super.getTagAttributeIsRequired(cmAttr);
+	}
+	
+	@Override
+	protected String getTagAttributeDefaultValue(CMAttributeDeclaration cmAttr) {
+		String val = ((TLDAttributeDeclaration)cmAttr).getAttrType().generateInstanceValue();
+		if (val == null)
+			val = super.getTagAttributeDefaultValue(cmAttr);
+		return val;
+	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/META-INF/MANIFEST.MF b/jsf/plugins/org.eclipse.jst.pagedesigner/META-INF/MANIFEST.MF
index 62ba1b1..1e879b8 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/META-INF/MANIFEST.MF
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/META-INF/MANIFEST.MF
@@ -19,7 +19,6 @@
  org.eclipse.jst.jsp.ui;bundle-version="[1.1.0,1.3.0)",
  org.eclipse.jst.j2ee.web;bundle-version="[1.1.0,1.2.0)",
  org.eclipse.jst.pagedesigner.jsp.core;bundle-version="[1.0.0,1.1.0)",
- org.eclipse.wst.common.ui.properties;bundle-version="[1.0.101,1.2.0)",
  org.eclipse.jst.jsf.common.ui;bundle-version="[1.0.0,1.1.0)",
  org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.jdt.ui;bundle-version="[3.2.0,4.0.0)",
@@ -34,7 +33,8 @@
  org.eclipse.wst.sse.core;bundle-version="[1.1.0,1.2.0)",
  javax.servlet;bundle-version="[2.4.0,3.0.0)",
  org.apache.commons.el;bundle-version="[1.0.0,2.0.0)",
- javax.servlet.jsp;bundle-version="[2.0.0,3.0.0)"
+ javax.servlet.jsp;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.ui.views.properties.tabbed;bundle-version="[3.2.0,4.0.0)"
 Eclipse-LazyStart: true
 Bundle-ManifestVersion: 2
 Export-Package: org.eclipse.jst.pagedesigner;x-internal:=true,
@@ -88,6 +88,11 @@
  org.eclipse.jst.pagedesigner.editors.palette.paletteinfos;x-friends:="org.eclipse.jst.jsf.metadata.tests",
  org.eclipse.jst.pagedesigner.editors.palette.paletteinfos.internal.impl;x-internal:=true,
  org.eclipse.jst.pagedesigner.editors.palette.paletteinfos.internal.util;x-internal:=true,
+ org.eclipse.jst.pagedesigner.editors.properties,
+ org.eclipse.jst.pagedesigner.editors.properties.internal;x-internal:=true,
+ org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections,
+ org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl;x-internal:=true,
+ org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.util;x-internal:=true,
  org.eclipse.jst.pagedesigner.editpolicies;x-internal:=true,
  org.eclipse.jst.pagedesigner.elementedit;x-internal:=true,
  org.eclipse.jst.pagedesigner.elementedit.html;x-internal:=true,
@@ -95,9 +100,9 @@
  org.eclipse.jst.pagedesigner.extensionpoint;x-internal:=true,
  org.eclipse.jst.pagedesigner.figurehandler;x-internal:=true,
  org.eclipse.jst.pagedesigner.itemcreation;x-internal:=true,
- org.eclipse.jst.pagedesigner.itemcreation.internal;x-internal:=true,
  org.eclipse.jst.pagedesigner.itemcreation.command;x-internal:=true,
  org.eclipse.jst.pagedesigner.itemcreation.customizer;x-internal:=true,
+ org.eclipse.jst.pagedesigner.itemcreation.internal;x-internal:=true,
  org.eclipse.jst.pagedesigner.meta;x-internal:=true,
  org.eclipse.jst.pagedesigner.meta.internal;x-internal:=true,
  org.eclipse.jst.pagedesigner.parts;x-internal:=true,
@@ -109,6 +114,7 @@
  org.eclipse.jst.pagedesigner.range;x-internal:=true,
  org.eclipse.jst.pagedesigner.requests;x-internal:=true,
  org.eclipse.jst.pagedesigner.tableedit;x-internal:=true,
+ org.eclipse.jst.pagedesigner.taglibprocessing,
  org.eclipse.jst.pagedesigner.tools;x-internal:=true,
  org.eclipse.jst.pagedesigner.ui.common;x-internal:=true,
  org.eclipse.jst.pagedesigner.ui.common.sash;x-internal:=true,
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/configs/cm/html.properties b/jsf/plugins/org.eclipse.jst.pagedesigner/configs/cm/html.properties
deleted file mode 100644
index c762a49..0000000
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/configs/cm/html.properties
+++ /dev/null
@@ -1,156 +0,0 @@
-###############################################################################
-# Copyright (c) 2001, 2006 Oracle Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     Oracle Corporation - initial API and implementation
-###############################################################################
-Attribute.Label.abbr=Abbr
-Attribute.Label.accept=Accept
-Attribute.Label.accesskey=Accesskey
-Attribute.Label.action=Action
-Attribute.Label.align=Align
-Attribute.Label.alink=Alink
-Attribute.Label.alt=Alt
-Attribute.Label.archive=Archive
-Attribute.Label.autostart=Autostart
-Attribute.Label.axis=Axis
-Attribute.Label.background=Background
-Attribute.Label.balance=Balance
-Attribute.Label.bgcolor=Bgcolor
-Attribute.Label.border=Border
-Attribute.Label.bordercolor=Bordercolor
-Attribute.Label.bordercolordark=Bordercolordark
-Attribute.Label.bordercolorlight=Bordercolorlight
-Attribute.Label.bottommargin=Bottommargin
-Attribute.Label.cellpadding=Cellpadding
-Attribute.Label.cellspacing=Cellspacing
-Attribute.Label.checked=Checked
-Attribute.Label.cite=Cite
-Attribute.Label.class=Class
-Attribute.Label.classid=Classid
-Attribute.Label.clear=Clear
-Attribute.Label.code=Code
-Attribute.Label.codebase=Codebase
-Attribute.Label.codetype=Codetype
-Attribute.Label.color=Color
-Attribute.Label.cols=Cols
-Attribute.Label.colspan=Colspan
-Attribute.Label.compact=Compact
-Attribute.Label.content=Content
-Attribute.Label.controls=Controls
-Attribute.Label.coords=Coords
-Attribute.Label.data=Data
-Attribute.Label.datapagesize=Datapagesize
-Attribute.Label.datetime=Datetime
-Attribute.Label.declare=Declare
-Attribute.Label.defer=Defer
-Attribute.Label.delay=Delay
-Attribute.Label.dir=Dir
-Attribute.Label.disabled=Disabled
-Attribute.Label.dynsrc=Dynsrc
-Attribute.Label.enctype=Enctype
-Attribute.Label.face=Face
-Attribute.Label.for=For
-Attribute.Label.frame=Frame
-Attribute.Label.frameborder=Frameborder
-Attribute.Label.framespacing=Framespacing
-Attribute.Label.headers=Headers
-Attribute.Label.height=Height
-Attribute.Label.hidden=Hidden
-Attribute.Label.href=Href
-Attribute.Label.hreflang=Hreflang
-Attribute.Label.hspace=Hspace
-Attribute.Label.http-equiv=http-equiv
-Attribute.Label.id=ID
-Attribute.Label.ismap=Ismap
-Attribute.Label.label=Label
-Attribute.Label.lang=Lang
-Attribute.Label.language=Language
-Attribute.Label.leftmargin=Leftmargin
-Attribute.Label.link=Link
-Attribute.Label.longdesc=Longdesc
-Attribute.Label.loop=Loop
-Attribute.Label.lowsrc=Lowsrc
-Attribute.Label.marginheight=Marginheight
-Attribute.Label.marginwidth=Marginwidth
-Attribute.Label.maxlength=Maxlength
-Attribute.Label.mayscript=Mayscript
-Attribute.Label.media=Media
-Attribute.Label.method=Method
-Attribute.Label.multiple=Multiple
-Attribute.Label.name=Name
-Attribute.Label.noresize=Noresize
-Attribute.Label.noshade=Noshade
-Attribute.Label.nowrap=Nowrap
-Attribute.Label.onblur=Onblur
-Attribute.Label.onchange=Onchange
-Attribute.Label.onclick=Onclick
-Attribute.Label.ondblclick=Ondblclick
-Attribute.Label.onfocus=Onfocus
-Attribute.Label.onkeydown=Onkeydown
-Attribute.Label.onkeypress=Onkeypress
-Attribute.Label.onkeyup=Onkeyup
-Attribute.Label.onload=Onload
-Attribute.Label.onmousedown=Onmousedown
-Attribute.Label.onmousemove=Onmousemove
-Attribute.Label.onmouseout=Onmouseout
-Attribute.Label.onmouseover=Onmouseover
-Attribute.Label.onmouseup=Onmouseup
-Attribute.Label.onreset=Onreset
-Attribute.Label.onselect=Onselect
-Attribute.Label.onsubmit=Onsubmit
-Attribute.Label.onunload=Onunload
-Attribute.Label.prompt=Prompt
-Attribute.Label.readonly=Readonly
-Attribute.Label.rel=Rel
-Attribute.Label.rev=Rev
-Attribute.Label.rightmargin=Rightmargin
-Attribute.Label.rows=Rows
-Attribute.Label.rowspan=Rowspan
-Attribute.Label.rules=Rules
-Attribute.Label.scope=Scope
-Attribute.Label.scrolling=Scrolling
-Attribute.Label.selected=Selected
-Attribute.Label.shape=Shape
-Attribute.Label.size=Size
-Attribute.Label.span=Span
-Attribute.Label.src=Src
-Attribute.Label.standby=Standby
-Attribute.Label.start=Start
-Attribute.Label.style=Style
-Attribute.Label.summary=Summary
-Attribute.Label.tabindex=Tabindex
-Attribute.Label.target=Target
-Attribute.Label.text=Text
-Attribute.Label.title=Title
-Attribute.Label.topmargin=Topmargin
-Attribute.Label.type=Type
-Attribute.Label.usemap=Usemap
-Attribute.Label.valign=Valign
-Attribute.Label.value=Value
-Attribute.Label.valuetype=Valuetype
-Attribute.Label.vlink=Vlink
-Attribute.Label.volume=Volume
-Attribute.Label.vspace=Vspace
-Attribute.Label.width=Width
-Attribute.Label.wrap=Wrap
-Attribute.Label.xmlns=Xmlns
-Category.Label.Accessibility=Accessibility
-Category.Label.VisualProperty=VisualProperty
-Category.Label.Browser.Specific=Browser Specific
-Category.Label.CSS/Accessibility=CSS/Accessibility
-Category.Label.Content=Content
-Category.Label.Data.Binding=Data Binding
-Category.Label.Dynamic=Dynamic
-Category.Label.Event=Event
-Category.Label.File=File
-Category.Label.General=General
-Category.Label.HTML4.0=HTML 4.0
-Category.Label.Image=Image
-Category.Label.Language=Language
-Category.Label.Radio/Checkbox=Radio/Checkbox
-Category.Label.Text/Password=Text/Password
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/configs/cm/html.xml b/jsf/plugins/org.eclipse.jst.pagedesigner/configs/cm/html.xml
deleted file mode 100644
index c3a29a6..0000000
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/configs/cm/html.xml
+++ /dev/null
@@ -1,1559 +0,0 @@
-<?xml version="1.0" ?>
-<taglib uri="html">
-	<tag name="a">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="href" type="RELATIVEPATH"
-				displaylabel="%Attribute.Label.href" />
-			<attribute name="name" displaylabel="%Attribute.Label.name" />
-			<referedattribute ref="lang" overridename="hreflang"
-				displaylabel="%Attribute.Label.hreflang" />
-			<referedattribute ref="linktype" overridename="rel"
-				displaylabel="%Attribute.Label.rel" />
-			<referedattribute ref="linktype" overridename="rev"
-				displaylabel="%Attribute.Label.rev" />
-			<referedattribute ref="target" />
-			<attribute name="shape" type="ENUMERATED"
-				displaylabel="%Attribute.Label.shape">
-				<option key="circle" value="circle" />
-				<option key="default" value="default" />
-				<option key="rect" value="rect" default="default" />
-				<option key="poly" value="poly" />
-			</attribute>
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<includeattrs>
-				<attribute name="accesskey"
-					displaylabel="%Attribute.Label.accesskey" />
-				<attribute name="tabindex"
-					displaylabel="%Attribute.Label.tabindex" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Event">
-			<includeattrs>
-				<attribute name="onblur"
-					displaylabel="%Attribute.Label.onblur" />
-				<attribute name="onfocus"
-					displaylabel="%Attribute.Label.onfocus" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="abbr">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="acronym">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="address">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="applet">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="code" displaylabel="%Attribute.Label.code" />
-			<attribute name="codebase"
-				displaylabel="%Attribute.Label.codebase" />
-			<attribute name="width" required="required"
-				displaylabel="%Attribute.Label.width" />
-			<attribute name="height" required="required"
-				displaylabel="%Attribute.Label.height" />
-			<attribute name="hspace"
-				displaylabel="%Attribute.Label.hspace" />
-			<attribute name="vspace"
-				displaylabel="%Attribute.Label.vspace" />
-			<referedattribute ref="ialign" overridename="align" />
-			<attribute name="archive"
-				displaylabel="%Attribute.Label.archive" />
-			<attribute name="name" displaylabel="%Attribute.Label.name" />
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<includeattrs>
-				<attribute name="alt"
-					displaylabel="%Attribute.Label.alt" />
-			</includeattrs>
-		</referedcategory>
-	</tag>
-	<tag name="area">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="shape" type="ENUMERATED"
-				displaylabel="%Attribute.Label.shape">
-				<option key="circle" value="circle" />
-				<option key="default" value="default" />
-				<option key="rect" value="rect" default="default" />
-				<option key="poly" value="poly" />
-			</attribute>
-			<attribute name="coords"
-				displaylabel="%Attribute.Label.coords" />
-			<attribute name="href" type="RELATIVEPATH"
-				displaylabel="%Attribute.Label.href" />
-			<referedattribute ref="target" />
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<includeattrs>
-				<attribute name="alt" required="required"
-					displaylabel="%Attribute.Label.alt" />
-				<attribute name="accesskey"
-					displaylabel="%Attribute.Label.accesskey" />
-				<attribute name="tabindex"
-					displaylabel="%Attribute.Label.tabindex" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Event">
-			<includeattrs>
-				<attribute name="onblur"
-					displaylabel="%Attribute.Label.onblur" />
-				<attribute name="onfocus"
-					displaylabel="%Attribute.Label.onfocus" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="b">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="base">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="href" type="RELATIVEPATH"
-				displaylabel="%Attribute.Label.href" />
-			<referedattribute ref="target" />
-		</category>
-	</tag>
-	<tag name="basefont">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="size" type="ENUMERATED" required="required"
-				displaylabel="%Attribute.Label.size">
-				<option key="1" value="1" />
-				<option key="2" value="2" />
-				<option key="3" value="3" />
-				<option key="4" value="4" />
-				<option key="5" value="5" />
-				<option key="6" value="6" />
-				<option key="7" value="7" />
-			</attribute>
-			<attribute name="face" displaylabel="%Attribute.Label.face" />
-			<attribute name="color" type="COLOR"
-				displaylabel="%Attribute.Label.color" />
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<excludeattrs refs="class,style,title" />
-		</referedcategory>
-	</tag>
-	<tag name="bdo">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="big">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="blockquote">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="cite" type="RELATIVEPATH"
-				displaylabel="%Attribute.Label.cite" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="body">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="bgcolor" type="COLOR"
-				displaylabel="%Attribute.Label.bgcolor" />
-			<attribute name="background" type="RELATIVEPATH"
-				typeparam="suffix=jpg;gif;png"
-				displaylabel="%Attribute.Label.background" />
-			<attribute name="text" type="COLOR"
-				displaylabel="%Attribute.Label.text" />
-			<attribute name="link" type="COLOR"
-				displaylabel="%Attribute.Label.link" />
-			<attribute name="vlink" type="COLOR"
-				displaylabel="%Attribute.Label.vlink" />
-			<attribute name="alink" type="COLOR"
-				displaylabel="%Attribute.Label.alink" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event">
-			<includeattrs>
-				<attribute name="onload"
-					displaylabel="%Attribute.Label.onload" />
-				<attribute name="onunload"
-					displaylabel="%Attribute.Label.onunload" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="br">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="clear" type="ENUMERATED"
-				displaylabel="%Attribute.Label.clear">
-				<option key="right" value="right" />
-				<option key="none" value="none" default="default" />
-				<option key="left" value="left" />
-				<option key="all" value="all" />
-			</attribute>
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-	</tag>
-	<tag name="button">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="value"
-				displaylabel="%Attribute.Label.value" />
-			<attribute name="type" type="ENUMERATED"
-				displaylabel="%Attribute.Label.type">
-				<option key="submit" value="submit" default="default" />
-				<option key="reset" value="reset" />
-				<option key="button" value="button" />
-			</attribute>
-			<attribute name="disabled" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.disabled" />
-			<attribute name="name" displaylabel="%Attribute.Label.name" />
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<includeattrs>
-				<attribute name="accesskey"
-					displaylabel="%Attribute.Label.accesskey" />
-				<attribute name="tabindex"
-					displaylabel="%Attribute.Label.tabindex" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Event">
-			<includeattrs>
-				<attribute name="onblur"
-					displaylabel="%Attribute.Label.onblur" />
-				<attribute name="onfocus"
-					displaylabel="%Attribute.Label.onfocus" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="caption">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="align" type="ENUMERATED"
-				displaylabel="%Attribute.Label.align">
-				<option key="right" value="right" />
-				<option key="top" value="top" />
-				<option key="left" value="left" />
-				<option key="bottom" value="bottom" />
-			</attribute>
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="center">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="cite">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="code">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="col">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<referedattribute ref="align" />
-			<attribute name="span" displaylabel="%Attribute.Label.span" />
-			<referedattribute ref="valign" />
-			<attribute name="width"
-				displaylabel="%Attribute.Label.width" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="colgroup">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<referedattribute ref="align" />
-			<attribute name="span" displaylabel="%Attribute.Label.span" />
-			<referedattribute ref="valign" />
-			<attribute name="width"
-				displaylabel="%Attribute.Label.width" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="dd">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="del">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="cite" type="RELATIVEPATH"
-				displaylabel="%Attribute.Label.cite" />
-			<attribute name="datetime"
-				displaylabel="%Attribute.Label.datetime" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="dfn">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="dir">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="compact" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.compact" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="div">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<referedattribute ref="dalign" overridename="align" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="dl">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="compact" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.compact" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="dt">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="em">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="fieldset">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="font">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="color" type="COLOR"
-				displaylabel="%Attribute.Label.color" />
-			<attribute name="size" type="ENUMERATED"
-				displaylabel="%Attribute.Label.size">
-				<option key="1" value="1" />
-				<option key="2" value="2" />
-				<option key="3" value="3" />
-				<option key="4" value="4" />
-				<option key="5" value="5" />
-				<option key="6" value="6" />
-				<option key="7" value="7" />
-				<option key="-1" value="-1" />
-				<option key="-2" value="-2" />
-				<option key="-3" value="-3" />
-				<option key="-4" value="-4" />
-				<option key="-5" value="-5" />
-				<option key="-6" value="-6" />
-				<option key="-7" value="-7" />
-				<option key="+1" value="+1" />
-				<option key="+2" value="+2" />
-				<option key="+3" value="+3" />
-				<option key="+4" value="+4" />
-				<option key="+5" value="+5" />
-				<option key="+6" value="+6" />
-				<option key="+7" value="+7" />
-			</attribute>
-			<attribute name="face" displaylabel="%Attribute.Label.face" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="form">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="action" required="required" type="RELATIVEPATH"
-				displaylabel="%Attribute.Label.action" />
-			<attribute name="method" type="ENUMERATED"
-				displaylabel="%Attribute.Label.method">
-				<option key="get" value="get" default="default" />
-				<option key="post" value="post" />
-			</attribute>
-			<attribute name="enctype" type="ENUMERATED"
-				displaylabel="%Attribute.Label.enctype">
-				<option key="application/x-www-form-urlencoded"
-					value="application/x-www-form-urlencoded" default="default" />
-				<option key="text/plain" value="text/plain" />
-				<option key="multipart/form-data"
-					value="multipart/form-data" />
-			</attribute>
-			<attribute name="name" displaylabel="%Attribute.Label.name" />
-			<referedattribute ref="target" />
-		</category>
-		<referedcategory ref="CSS/Accessibility"></referedcategory>
-		<referedcategory ref="Language" />
-		<referedcategory ref="Event">
-			<includeattrs>
-				<attribute name="onreset"
-					displaylabel="%Attribute.Label.onreset" />
-				<attribute name="onsubmit"
-					displaylabel="%Attribute.Label.onsubmit" />
-			</includeattrs>
-		</referedcategory>
-	</tag>
-	<tag name="frame">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="src" type="RELATIVEPATH"
-				displaylabel="%Attribute.Label.src" />
-			<attribute name="frameborder" type="ENUMERATED"
-				displaylabel="%Attribute.Label.frameborder">
-				<option key="0" value="0" />
-				<option key="1" value="1" default="default" />
-			</attribute>
-			<attribute name="scrolling" type="ENUMERATED"
-				displaylabel="%Attribute.Label.scrolling">
-				<option key="yes" value="Yes" />
-				<option key="no" value="No" />
-				<option key="auto" value="Auto" default="default" />
-			</attribute>
-			<attribute name="noresize" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.noresize" />
-			<attribute name="marginwidth"
-				displaylabel="%Attribute.Label.marginwidth" />
-			<attribute name="marginheight"
-				displaylabel="%Attribute.Label.marginheight" />
-			<attribute name="name" displaylabel="%Attribute.Label.name" />
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<includeattrs>
-				<attribute name="longdesc"
-					displaylabel="%Attribute.Label.longdesc" />
-			</includeattrs>
-		</referedcategory>
-	</tag>
-	<tag name="frameset">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="rows" displaylabel="%Attribute.Label.rows" />
-			<attribute name="cols" displaylabel="%Attribute.Label.cols" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<category name="Event" displaylabel="%Category.Label.Event">
-			<attribute name="onload"
-				displaylabel="%Attribute.Label.onload" />
-			<attribute name="onunload"
-				displaylabel="%Attribute.Label.onunload" />
-		</category>
-	</tag>
-	<tag name="h1">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<referedattribute ref="dalign" overridename="align" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="h2">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<referedattribute ref="dalign" overridename="align" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="h3">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<referedattribute ref="dalign" overridename="align" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="h4">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<referedattribute ref="dalign" overridename="align" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="h5">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<referedattribute ref="dalign" overridename="align" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="h6">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<referedattribute ref="dalign" overridename="align" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="head">
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="hr">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="align" type="ENUMERATED"
-				displaylabel="%Attribute.Label.align">
-				<option key="right" value="right" />
-				<option key="left" value="left" />
-				<option key="center" value="center" />
-			</attribute>
-			<attribute name="width"
-				displaylabel="%Attribute.Label.width" />
-			<attribute name="size" displaylabel="%Attribute.Label.size" />
-			<attribute name="noshade" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.noshade" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="html">
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="i">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="iframe">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="src" type="RELATIVEPATH"
-				displaylabel="%Attribute.Label.src" />
-			<attribute name="width"
-				displaylabel="%Attribute.Label.width" />
-			<attribute name="marginwidth"
-				displaylabel="%Attribute.Label.marginwidth" />
-			<attribute name="height"
-				displaylabel="%Attribute.Label.height" />
-			<attribute name="marginheight"
-				displaylabel="%Attribute.Label.marginheight" />
-			<referedattribute ref="ialign" overridename="align" />
-			<attribute name="scrolling" type="ENUMERATED"
-				displaylabel="%Attribute.Label.scrolling">
-				<option key="Yes" value="Yes" />
-				<option key="No" value="No" />
-				<option key="Auto" value="Auto" />
-			</attribute>
-			<attribute name="frameborder" type="ENUMERATED"
-				displaylabel="%Attribute.Label.frameborder">
-				<option key="0" value="0" />
-				<option key="1" value="1" default="default" />
-			</attribute>
-			<attribute name="name" displaylabel="%Attribute.Label.name" />
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<includeattrs>
-				<attribute name="longdesc"
-					displaylabel="%Attribute.Label.longdesc" />
-			</includeattrs>
-		</referedcategory>
-	</tag>
-	<tag name="img">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="src" type="RELATIVEPATH" required="required"
-				typeparam="suffix=jpg;gif;png" displaylabel="%Attribute.Label.src" />
-			<attribute name="width"
-				displaylabel="%Attribute.Label.width" />
-			<attribute name="height"
-				displaylabel="%Attribute.Label.height" />
-			<attribute name="hspace"
-				displaylabel="%Attribute.Label.hspace" />
-			<attribute name="vspace"
-				displaylabel="%Attribute.Label.vspace" />
-			<attribute name="border"
-				displaylabel="%Attribute.Label.border" />
-			<referedattribute ref="ialign" overridename="align" />
-			<attribute name="usemap"
-				displaylabel="%Attribute.Label.usemap" />
-			<attribute name="ismap" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.ismap" />
-			<attribute name="name" displaylabel="%Attribute.Label.name" />
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<includeattrs>
-				<attribute name="alt" required="required"
-					displaylabel="%Attribute.Label.alt" />
-				<attribute name="longdesc" type="RELATIVEPATH"
-					displaylabel="%Attribute.Label.longdesc" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="input">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="checked" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.checked" />
-			<attribute name="maxlength"
-				displaylabel="%Attribute.Label.maxlength" />
-			<attribute name="readonly" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.readonly" />
-			<attribute name="type" type="ENUMERATED"
-				displaylabel="%Attribute.Label.type">
-				<option key="password" value="Password" />
-				<option key="checkbox" value="Checkbox" />
-				<option key="text" value="Text" default="default" />
-				<option key="submit" value="Submit" />
-				<option key="hidden" value="Hidden" />
-				<option key="file" value="File" />
-				<option key="reset" value="Reset" />
-				<option key="radio" value="Radio" />
-				<option key="image" value="Image" />
-				<option key="button" value="Button" />
-			</attribute>
-			<attribute name="disabled" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.disabled" />
-			<attribute name="value"
-				displaylabel="%Attribute.Label.value" />
-			<attribute name="size" displaylabel="%Attribute.Label.size" />
-			<attribute name="accept" type="ENUMERATED"
-				displaylabel="%Attribute.Label.accept">
-				<option key="application/msword"
-					value="application/msword" />
-				<option key="image/jpeg" value="image/jpeg" />
-				<option key="image/x-MS-bmp" value="image/x-MS-bmp" />
-				<option key="image/x-portable-greymap"
-					value="image/x-portable-greymap" />
-				<option key="video/x-msvideo" value="video/x-msvideo" />
-				<option key="video/x-mpeg2" value="video/x-mpeg2" />
-				<option key="audio/x-aiff" value="audio/x-aiff" />
-				<option key="image/x-photo-cd" value="image/x-photo-cd" />
-				<option key="audio/x-waw" value="audio/x-waw" />
-				<option key="image/tiff" value="image/tiff" />
-				<option key="audio/basic" value="audio/basic" />
-				<option key="video/quicktime" value="video/quicktime" />
-				<option key="application/msexcel"
-					value="application/msexcel" />
-				<option key="image/gif" value="image/gif" />
-				<option key="audio/x-pn/realaudio"
-					value="audio/x-pn/realaudio" />
-				<option key="application/pdf" value="application/pdf" />
-				<option key="image/x-portablebitmap"
-					value="image/x-portablebitmap" />
-				<option key="application/rtf" value="application/rtf" />
-				<option key="text/html" value="text/html" />
-				<option key="image/x-portable-pixmap"
-					value="image/x-portable-pixmap" />
-				<option key="text/plain" value="text/plain" />
-				<option key="application/x-zip-compressed"
-					value="application/x-zip-compressed" />
-				<option key="audio/x-mpeg" value="audio/x-mpeg" />
-				<option key="application/postscript"
-					value="application/postscript" />
-				<option key="image/x-png" value="image/x-png" />
-				<option key="image/x-rgb" value="image/x-rgb" />
-			</attribute>
-			<attribute name="name" displaylabel="%Attribute.Label.name" />
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<includeattrs>
-				<attribute name="accesskey"
-					displaylabel="%Attribute.Label.accesskey" />
-				<attribute name="alt"
-					displaylabel="%Attribute.Label.alt" />
-				<attribute name="tabindex"
-					displaylabel="%Attribute.Label.tabindex" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Event">
-			<includeattrs>
-				<attribute name="onblur"
-					displaylabel="%Attribute.Label.onblur" />
-				<attribute name="onchange"
-					displaylabel="%Attribute.Label.onchange" />
-				<attribute name="onfocus"
-					displaylabel="%Attribute.Label.onfocus" />
-				<attribute name="onselect"
-					displaylabel="%Attribute.Label.onselect" />
-			</includeattrs>
-		</referedcategory>
-		<category name="Image" displaylabel="%Category.Label.Image">
-			<attribute name="src" type="RELATIVEPATH"
-				typeparam="suffix=jpg;gif;png" displaylabel="%Attribute.Label.src" />
-			<referedattribute ref="ialign" overridename="align" />
-			<attribute name="usemap"
-				displaylabel="%Attribute.Label.usemap" />
-			<attribute name="ismap" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.ismap" />
-		</category>
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="ins">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="cite" type="RELATIVEPATH"
-				displaylabel="%Attribute.Label.cite" />
-			<attribute name="datetime"
-				displaylabel="%Attribute.Label.datetime" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="isindex">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="prompt"
-				displaylabel="%Attribute.Label.prompt" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="kbd">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="label">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="for" displaylabel="%Attribute.Label.for" />
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<includeattrs>
-				<attribute name="accesskey"
-					displaylabel="%Attribute.Label.accesskey" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Event">
-			<includeattrs>
-				<attribute name="onblur"
-					displaylabel="%Attribute.Label.onblur" />
-				<attribute name="onfocus"
-					displaylabel="%Attribute.Label.onfocus" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="legend">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="align" type="ENUMERATED"
-				displaylabel="%Attribute.Label.align">
-				<option key="right" value="right" />
-				<option key="top" value="top - not supported by MSIE4" />
-				<option key="left" value="left" />
-				<option key="bottom" value="bottom" />
-			</attribute>
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<includeattrs>
-				<attribute name="accesskey"
-					displaylabel="%Attribute.Label.accesskey" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="li">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="type" type="ENUMERATED"
-				displaylabel="%Attribute.Label.type">
-				<option key="i" value="i lower roman" />
-				<option key="I" value="I upper roman" />
-				<option key="a" value="a lower alpha" />
-				<option key="A" value="A upper alpha" />
-				<option key="1" value="1 arabic numbers" />
-				<option key="square" value="square" />
-				<option key="circle" value="circle" />
-				<option key="disc" value="disc" />
-			</attribute>
-			<attribute name="value"
-				displaylabel="%Attribute.Label.value" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="link">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="href" type="RELATIVEPATH"
-				displaylabel="%Attribute.Label.href" />
-			<referedattribute ref="linktype" overridename="rel"
-				displaylabel="%Attribute.Label.rel" />
-			<referedattribute ref="linktype" overridename="rev"
-				displaylabel="%Attribute.Label.rev" />
-			<referedattribute ref="lang" overridename="hreflang"
-				displaylabel="%Attribute.Label.hreflang" />
-			<referedattribute ref="media" />
-			<referedattribute ref="target" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="map">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="name" displaylabel="%Attribute.Label.name" required="required" />
-		</category>
-		<referedcategory ref="CSS/Accessibility"></referedcategory>
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="menu">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="compact" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.compact" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="meta">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="http-equiv"
-				displaylabel="%Attribute.Label.http-equiv" />
-			<attribute name="content" required="required"
-				displaylabel="%Attribute.Label.content" />
-			<attribute name="name" displaylabel="%Attribute.Label.name" />
-		</category>
-		<category name="CSS/Accessibility"
-			displaylabel="%Category.Label.CSS/Accessibility">
-		</category>
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="noframes">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="noscript">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="object">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="usemap"
-				displaylabel="%Attribute.Label.usemap" />
-			<attribute name="standby"
-				displaylabel="%Attribute.Label.standby" />
-			<attribute name="width"
-				displaylabel="%Attribute.Label.width" />
-			<attribute name="height"
-				displaylabel="%Attribute.Label.height" />
-			<attribute name="hspace"
-				displaylabel="%Attribute.Label.hspace" />
-			<attribute name="vspace"
-				displaylabel="%Attribute.Label.vspace" />
-			<referedattribute ref="ialign" overridename="align" />
-			<attribute name="border"
-				displaylabel="%Attribute.Label.border" />
-			<attribute name="name" displaylabel="%Attribute.Label.name" />
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<includeattrs>
-				<attribute name="tabindex"
-					displaylabel="%Attribute.Label.tabindex" />
-			</includeattrs>
-		</referedcategory>
-		<category name="Content"
-			displaylabel="%Category.Label.Content">
-			<attribute name="classid" type="RELATIVEPATH"
-				displaylabel="%Attribute.Label.classid" />
-			<attribute name="codebase" type="RELATIVEPATH"
-				displaylabel="%Attribute.Label.codebase" />
-			<attribute name="codetype"
-				displaylabel="%Attribute.Label.codetype" />
-			<attribute name="data" type="RELATIVEPATH"
-				displaylabel="%Attribute.Label.data" />
-			<attribute name="archive"
-				displaylabel="%Attribute.Label.archive" />
-			<attribute name="declare" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.declare" />
-		</category>
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="ol">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="start"
-				displaylabel="%Attribute.Label.start" />
-			<attribute name="type" type="ENUMERATED"
-				displaylabel="%Attribute.Label.type">
-				<option key="i" value="i lower roman" />
-				<option key="I" value="I upper roman" />
-				<option key="a" value="a lower alpha" />
-				<option key="A" value="A upper alpha" />
-				<option key="1" value="1 arabic numbers" />
-			</attribute>
-			<attribute name="compact" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.compact" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="optgroup">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="disabled" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.disabled" />
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<includeattrs>
-				<attribute name="label" required="required"
-					displaylabel="%Attribute.Label.label" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Event">
-			<includeattrs>
-				<attribute name="onblur"
-					displaylabel="%Attribute.Label.onblur" />
-				<attribute name="onchange"
-					displaylabel="%Attribute.Label.onchange" />
-				<attribute name="onfocus"
-					displaylabel="%Attribute.Label.onfocus" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="option">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="value"
-				displaylabel="%Attribute.Label.value" />
-			<attribute name="selected" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.selected" />
-			<attribute name="disabled" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.disabled" />
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<includeattrs>
-				<attribute name="label"
-					displaylabel="%Attribute.Label.label" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Event">
-			<includeattrs>
-				<attribute name="onblur"
-					displaylabel="%Attribute.Label.onblur" />
-				<attribute name="onchange"
-					displaylabel="%Attribute.Label.onchange" />
-				<attribute name="onfocus"
-					displaylabel="%Attribute.Label.onfocus" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="p">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<referedattribute ref="dalign" overridename="align" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Language" />
-		<referedcategory ref="Event" />
-	</tag>
-	<tag name="param">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="value"
-				displaylabel="%Attribute.Label.value" />
-			<attribute name="valuetype" type="ENUMERATED"
-				displaylabel="%Attribute.Label.valuetype">
-				<option key="object" value="object" />
-				<option key="ref" value="ref" />
-				<option key="data" value="data" default="default" />
-			</attribute>
-			<attribute name="name" displaylabel="%Attribute.Label.name" required="required" />
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<excludeattrs refs="class,style,title" />
-		</referedcategory>
-	</tag>
-	<tag name="pre">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="q">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="cite" type="RELATIVEPATH"
-				displaylabel="%Attribute.Label.cite" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="s">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="samp">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="script">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="src" type="RELATIVEPATH"
-				displaylabel="%Attribute.Label.src" />
-			<attribute name="type" type="ENUMERATED" required="required"
-				displaylabel="%Attribute.Label.type">
-				<option key="text/php" value="text/php" />
-				<option key="text/tcl" value="text/tcl" />
-				<option key="text/livescript" value="text/livescript" />
-				<option key="text/vbscript" value="text/vbscript" />
-				<option key="text/jscript" value="text/jscript" />
-				<option key="text/javascript" value="text/javascript" />
-			</attribute>
-			<attribute name="defer" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.defer" />
-		</category>
-	</tag>
-	<tag name="select">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="size" displaylabel="%Attribute.Label.size" />
-			<attribute name="multiple" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.multiple" />
-			<attribute name="disabled" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.disabled" />
-			<attribute name="name" displaylabel="%Attribute.Label.name" />
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<includeattrs>
-				<attribute name="tabindex"
-					displaylabel="%Attribute.Label.tabindex" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Event">
-			<includeattrs>
-				<attribute name="onblur"
-					displaylabel="%Attribute.Label.onblur" />
-				<attribute name="onchange"
-					displaylabel="%Attribute.Label.onchange" />
-				<attribute name="onfocus"
-					displaylabel="%Attribute.Label.onfocus" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="small">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="span">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="strike">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="strong">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="style">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="type" type="ENUMERATED" required="required"
-				displaylabel="%Attribute.Label.type">
-				<option key="text/css" value="text/css" />
-				<option key="text/javascript" value="text/javascript" />
-			</attribute>
-			<referedattribute ref="media" />
-		</category>
-		<category name="CSS/Accessibility"
-			displaylabel="%Category.Label.CSS/Accessibility">
-			<attribute name="title"
-				displaylabel="%Attribute.Label.title" />
-		</category>
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="sub">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="sup">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="table">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="width"
-				displaylabel="%Attribute.Label.width" />
-			<attribute name="border"
-				displaylabel="%Attribute.Label.border" />
-			<attribute name="align" type="ENUMERATED"
-				displaylabel="%Attribute.Label.align">
-				<option key="right" value="right" />
-				<option key="left" value="left" />
-				<option key="center" value="center" />
-			</attribute>
-			<attribute name="cellpadding"
-				displaylabel="%Attribute.Label.cellpadding" />
-			<attribute name="cellspacing"
-				displaylabel="%Attribute.Label.cellspacing" />
-			<attribute name="bgcolor" type="COLOR"
-				displaylabel="%Attribute.Label.bgcolor" />
-			<attribute name="frame" type="ENUMERATED"
-				displaylabel="%Attribute.Label.frame">
-				<option key="lhs"
-					value="Lhs - Border on the left-hand side of the table frame" />
-				<option key="above"
-					value="Above - Border on the top side of the table frame" />
-				<option key="void"
-					value="Void - Removes all outside table borders (default)" />
-				<option key="box"
-					value="Box - Border on all sides of the table frame" />
-				<option key="vsides"
-					value="Vsides - Border on the left and right sides of the table frame" />
-				<option key="below"
-					value="Below - Border on the bottom side of the table frame" />
-				<option key="border"
-					value="Border - Border on all sides of the table frame" />
-				<option key="rhs"
-					value="Rhs - Border on the right-hand side of the table frame" />
-				<option key="hsides"
-					value="Hsides - Border on the top and bottom sides of the table frame" />
-			</attribute>
-			<attribute name="rules" type="ENUMERATED"
-				displaylabel="%Attribute.Label.rules">
-				<option key="cols"
-					value="Cols - Displays vertical borders between all table columns" />
-				<option key="groups"
-					value="Groups - Displays horizontal borders between all table groups" />
-				<option key="rows"
-					value="Rows - Displays horizontal borders between all table rows" />
-				<option key="none"
-					value="None - Removes all interior table borders (default)" />
-				<option key="all"
-					value="All - Displays a border on all rows and columns" />
-			</attribute>
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<includeattrs>
-				<attribute name="summary"
-					displaylabel="%Attribute.Label.summary" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="tbody">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<referedattribute ref="align" />
-			<referedattribute ref="valign" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="td">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="width"
-				displaylabel="%Attribute.Label.width" />
-			<attribute name="height"
-				displaylabel="%Attribute.Label.height" />
-			<attribute name="colspan"
-				displaylabel="%Attribute.Label.colspan" />
-			<attribute name="rowspan"
-				displaylabel="%Attribute.Label.rowspan" />
-			<referedattribute ref="align" />
-			<attribute name="nowrap" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.nowrap" />
-			<attribute name="bgcolor" type="COLOR"
-				displaylabel="%Attribute.Label.bgcolor" />
-			<referedattribute ref="scope" />
-			<referedattribute ref="valign" />
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<includeattrs>
-				<attribute name="abbr"
-					displaylabel="%Attribute.Label.abbr" />
-				<attribute name="axis"
-					displaylabel="%Attribute.Label.axis" />
-				<attribute name="headers"
-					displaylabel="%Attribute.Label.headers" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="textarea">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="cols" required="required" displaylabel="%Attribute.Label.cols" />
-			<attribute name="rows" required="required" displaylabel="%Attribute.Label.rows" />
-			<attribute name="disabled" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.disabled" />
-			<attribute name="readonly" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.readonly" />
-			<attribute name="name" displaylabel="%Attribute.Label.name" />
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<includeattrs>
-				<attribute name="accesskey"
-					displaylabel="%Attribute.Label.accesskey" />
-				<attribute name="tabindex"
-					displaylabel="%Attribute.Label.tabindex" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Event">
-			<includeattrs>
-				<attribute name="onblur"
-					displaylabel="%Attribute.Label.onblur" />
-				<attribute name="onchange"
-					displaylabel="%Attribute.Label.onchange" />
-				<attribute name="onfocus"
-					displaylabel="%Attribute.Label.onfocus" />
-				<attribute name="onselect"
-					displaylabel="%Attribute.Label.onselect" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="tfoot">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<referedattribute ref="align" />
-			<referedattribute ref="valign" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="th">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="width"
-				displaylabel="%Attribute.Label.width" />
-			<attribute name="height"
-				displaylabel="%Attribute.Label.height" />
-			<attribute name="colspan"
-				displaylabel="%Attribute.Label.colspan" />
-			<attribute name="rowspan"
-				displaylabel="%Attribute.Label.rowspan" />
-			<referedattribute ref="align" />
-			<attribute name="nowrap" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.nowrap" />
-			<attribute name="bgcolor" type="COLOR"
-				displaylabel="%Attribute.Label.bgcolor" />
-			<referedattribute ref="scope" />
-			<referedattribute ref="valign" />
-		</category>
-		<referedcategory ref="CSS/Accessibility">
-			<includeattrs>
-				<attribute name="abbr"
-					displaylabel="%Attribute.Label.abbr" />
-				<attribute name="axis"
-					displaylabel="%Attribute.Label.axis" />
-				<attribute name="headers"
-					displaylabel="%Attribute.Label.headers" />
-			</includeattrs>
-		</referedcategory>
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="thead">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<referedattribute ref="align" />
-			<referedattribute ref="valign" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="title">
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="tr">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<referedattribute ref="align" />
-			<referedattribute ref="valign" />
-			<attribute name="bgcolor" type="COLOR"
-				displaylabel="%Attribute.Label.bgcolor" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="tt">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="u">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="ul">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="type" type="ENUMERATED"
-				displaylabel="%Attribute.Label.type">
-				<option key="square" value="square" />
-				<option key="circle" value="circle" />
-				<option key="disc" value="disc" />
-			</attribute>
-			<attribute name="compact" type="NAMED-BOOLEAN"
-				displaylabel="%Attribute.Label.compact" />
-		</category>
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<tag name="var">
-		<referedcategory ref="CSS/Accessibility" />
-		<referedcategory ref="Event" />
-		<referedcategory ref="Language" />
-	</tag>
-	<definition>
-		<categories>
-			<category name="CSS/Accessibility"
-				displaylabel="%Category.Label.CSS/Accessibility">
-				<attribute name="class" type="CSSCLASS"
-					displaylabel="%Attribute.Label.class" />
-				<attribute name="id" type="CSSID"
-					displaylabel="%Attribute.Label.id" />
-				<attribute name="style" type="CSSSTYLE"
-					typeparam="style=STYLE" displaylabel="%Attribute.Label.style" />
-				<attribute name="title"
-					displaylabel="%Attribute.Label.title" />
-			</category>
-			<category name="Event"
-				displaylabel="%Category.Label.Event">
-				<attribute name="onclick" type="JAVASCRIPT"
-					displaylabel="%Attribute.Label.onclick" />
-				<attribute name="ondblclick" type="JAVASCRIPT"
-					displaylabel="%Attribute.Label.ondblclick" />
-				<attribute name="onmousedown" type="JAVASCRIPT"
-					displaylabel="%Attribute.Label.onmousedown" />
-				<attribute name="onmousemove" type="JAVASCRIPT"
-					displaylabel="%Attribute.Label.onmousemove" />
-				<attribute name="onmouseout" type="JAVASCRIPT"
-					displaylabel="%Attribute.Label.onmouseout" />
-				<attribute name="onmouseover" type="JAVASCRIPT"
-					displaylabel="%Attribute.Label.onmouseover" />
-				<attribute name="onmouseup" type="JAVASCRIPT"
-					displaylabel="%Attribute.Label.onmouseup" />
-				<attribute name="onkeydown" type="JAVASCRIPT"
-					displaylabel="%Attribute.Label.onkeydown" />
-				<attribute name="onkeypress" type="JAVASCRIPT"
-					displaylabel="%Attribute.Label.onkeypress" />
-				<attribute name="onkeyup" type="JAVASCRIPT"
-					displaylabel="%Attribute.Label.onkeyup" />
-			</category>
-			<category name="Language"
-				displaylabel="%Category.Label.Language">
-				<attribute name="dir" type="ENUMERATED"
-					displaylabel="%Attribute.Label.dir">
-					<option key="ltr" value="left-to-right" />
-					<option key="rtl" value="right-to-left" />
-				</attribute>
-				<referedattribute ref="lang" />
-			</category>
-		</categories>
-		<attributes>
-			<attribute name="align" type="ENUMERATED"
-				displaylabel="%Attribute.Label.align">
-				<option key="right" value="right" />
-				<option key="char" value="char" />
-				<option key="left" value="left" />
-				<option key="center" value="center" />
-				<option key="justify" value="justify" />
-			</attribute>
-			<attribute name="dalign" type="ENUMERATED"
-				displaylabel="%Attribute.Label.align">
-				<option key="right" value="right" />
-				<option key="left" value="left" />
-				<option key="center" value="center" />
-				<option key="justify" value="justify" />
-			</attribute>
-			<attribute name="ialign" type="ENUMERATED"
-				displaylabel="%Attribute.Label.align">
-				<option key="bottom" value="bottom" />
-				<option key="middle" value="middle" />
-				<option key="top" value="top" />
-				<option key="right" value="right" />
-				<option key="left" value="left" />
-			</attribute>
-			<attribute name="lang" type="ENUMERATED"
-				displaylabel="%Attribute.Label.lang">
-				<option key="af" value="af Afrikaans" />
-				<option key="ar" value="ar Arabic (needs subtype)" />
-				<option key="be" value="be Belarusian" />
-				<option key="bg" value="bg Bulgarian" />
-				<option key="br" value="br Breton" />
-				<option key="ca" value="ca Catalan" />
-				<option key="cs" value="cs Czech" />
-				<option key="da" value="da Danish" />
-				<option key="de" value="de German (Standard)" />
-				<option key="el" value="el Greek" />
-				<option key="en" value="en English" />
-				<option key="es" value="es Spanish (Spain)" />
-				<option key="et" value="et Estonian" />
-				<option key="eu" value="eu Basque" />
-				<option key="fa" value="fa Farsi" />
-				<option key="fi" value="fi Finnish" />
-				<option key="fo" value="fo Faeroese" />
-				<option key="fr" value="fr French (Standard)" />
-				<option key="gd" value="gd Gaelic (Scotland)" />
-				<option key="he" value="he Hebrew" />
-				<option key="hi" value="hi Hindi" />
-				<option key="hr" value="hr Croatian" />
-				<option key="hu" value="hu Hungarian" />
-				<option key="id" value="id Indonesian" />
-				<option key="is" value="is Icelandic" />
-				<option key="it" value="it Italian (Standard)" />
-				<option key="ja" value="ja Japanese" />
-				<option key="ko" value="ko Korean" />
-				<option key="lt" value="lt Lithuanian" />
-				<option key="lv" value="lv Latvian" />
-				<option key="mk" value="mk Macedonian" />
-				<option key="ms" value="ms Malaysian" />
-				<option key="mt" value="mt Maltese" />
-				<option key="nl" value="nl Dutch (Standard)" />
-				<option key="no" value="no Norwegian (Bokmal/Nynorsk)" />
-				<option key="pl" value="pl Polish" />
-				<option key="pt" value="pt Portuguese (Standard)" />
-				<option key="rm" value="rm Rhaeto-Romanic" />
-				<option key="ro" value="ro Romanian" />
-				<option key="ru" value="ru Russian" />
-				<option key="sk" value="sk Slovak" />
-				<option key="sl" value="sl Slovenian" />
-				<option key="sq" value="sq Albanian" />
-				<option key="sr" value="sr Serbian (Cyrillic/Latin)" />
-				<option key="sv" value="sv Swedish" />
-				<option key="sx" value="sx Sutu" />
-				<option key="sz" value="sz Sami (Lappish)" />
-				<option key="th" value="th Thai" />
-				<option key="tn" value="tn Setswana" />
-				<option key="tr" value="tr Turkish" />
-				<option key="ts" value="ts Tsonga" />
-				<option key="uk" value="uk Ukrainian" />
-				<option key="ur" value="ur Urdu" />
-				<option key="vi" value="vi Vietnamese" />
-				<option key="xh" value="xh Xhosa" />
-				<option key="yi" value="yi Yiddish" />
-				<option key="zh" value="zh Chinese (needs subtype)" />
-				<option key="zu" value="zu Zulu" />
-			</attribute>
-			<attribute name="linktype">
-				<option key="index" value="index" />
-				<option key="subsection" value="subsection" />
-				<option key="bookmark" value="bookmark" />
-				<option key="start" value="start" />
-				<option key="next" value="next" />
-				<option key="stylesheet" value="stylesheet" />
-				<option key="chapter" value="chapter" />
-				<option key="help" value="help" />
-				<option key="alternate" value="alternate" />
-				<option key="appendix" value="appendix" />
-				<option key="contents" value="contents" />
-				<option key="section" value="section" />
-				<option key="prev" value="prev" />
-				<option key="previous" value="previous" />
-				<option key="glossary" value="glossary" />
-				<option key="copyright" value="copyright" />
-			</attribute>
-			<attribute name="media" type="ENUMERATED"
-				displaylabel="%Attribute.Label.media">
-				<option key="tv" value="tv" />
-				<option key="braille" value="braille" />
-				<option key="tty" value="tty" />
-				<option key="print" value="print" />
-				<option key="all" value="all" />
-				<option key="projection" value="projection" />
-				<option key="handheld" value="handheld" />
-				<option key="screen" value="screen" />
-				<option key="aural" value="aural" />
-			</attribute>
-			<attribute name="scope" type="ENUMERATED"
-				displaylabel="%Attribute.Label.scope">
-				<option key="row" value="row" />
-				<option key="col" value="col" />
-				<option key="rowgroup" value="rowgroup" />
-				<option key="colgroup" value="colgroup" />
-			</attribute>
-			<attribute name="target" type="ENUMERATED"
-				displaylabel="%Attribute.Label.target">
-				<option key="_self" value="_self" />
-				<option key="_blank" value="_blank" />
-				<option key="_parent" value="_parent" />
-				<option key="_top" value="_top" />
-			</attribute>
-			<attribute name="valign" type="ENUMERATED"
-				displaylabel="%Attribute.Label.valign">
-				<option key="middle" value="middle" />
-				<option key="top" value="top" />
-				<option key="baseline" value="baseline" />
-				<option key="bottom" value="bottom" />
-			</attribute>
-		</attributes>
-	</definition>
-</taglib>
\ No newline at end of file
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/configs/cm/jsp.properties b/jsf/plugins/org.eclipse.jst.pagedesigner/configs/cm/jsp.properties
deleted file mode 100644
index f07afa0..0000000
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/configs/cm/jsp.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-###############################################################################
-# Copyright (c) 2001, 2006 Oracle Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     Oracle Corporation - initial API and implementation
-###############################################################################
-Attribute.Label.align=Align
-Attribute.Label.beanName=BeanName
-Attribute.Label.class=Class
-Attribute.Label.code=Code
-Attribute.Label.codebase=Codebase
-Attribute.Label.contentType=ContentType
-Attribute.Label.flush=Flush
-Attribute.Label.file=File
-Attribute.Label.height=Height
-Attribute.Label.hspace=Hspace
-Attribute.Label.id=ID
-Attribute.Label.iepluginurl=Eepluginurl
-Attribute.Label.import=Import
-Attribute.Label.jreversion=Jreversion
-Attribute.Label.name=Name
-Attribute.Label.nspluginurl=Nspluginurl
-Attribute.Label.page=Page
-Attribute.Label.param=Param
-Attribute.Label.property=Property
-Attribute.Label.scope=Scope
-Attribute.Label.type=Type
-Attribute.Label.value=Value
-Attribute.Label.version=Version
-Attribute.Label.vspace=Vspace
-Attribute.Label.width=Width
-Attribute.Label.xmlnsjsp=xmlns:jsp
-Category.Label.General=General
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/configs/cm/jsp.xml b/jsf/plugins/org.eclipse.jst.pagedesigner/configs/cm/jsp.xml
deleted file mode 100644
index 6736eef..0000000
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/configs/cm/jsp.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" ?>
-<taglib uri="jsp">
-	<tag name="declaration" />
-	<tag name="expression" />
-	<tag name="fallback" />
-	<tag name="forward">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="page" type="RELATIVEPATH"
-				typeparam="suffix=jsp;htm;html" displaylabel="%Attribute.Label.page" />
-		</category>
-	</tag>
-	<tag name="getproperty">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="name" displaylabel="%Attribute.Label.name" />
-			<attribute name="property"
-				displaylabel="%Attribute.Label.property" />
-		</category>
-	</tag>
-	<tag name="include">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="page" type="RELATIVEPATH"
-				typeparam="suffix=jsp;htm;html" displaylabel="%Attribute.Label.page" />
-			<attribute name="flush" type="BOOLEAN"
-				displaylabel="%Attribute.Label.flush" />
-		</category>
-	</tag>
-	<tag name="directive.include">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="file" type="RELATIVEPATH"
-				typeparam="suffix=jsp;htm;html" displaylabel="%Attribute.Label.file" />
-		</category>
-	</tag>
-	<tag name="directive.page">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="import"
-				displaylabel="%Attribute.Label.import" />
-			<attribute name="contentType"
-				displaylabel="%Attribute.Label.contentType" />
-		</category>
-	</tag>
-	<tag name="param">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="name" displaylabel="%Attribute.Label.name" />
-			<attribute name="value"
-				displaylabel="%Attribute.Label.value" />
-		</category>
-	</tag>
-	<tag name="params" />
-	<tag name="plugin">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="type" type="ENUMERATED"
-				displaylabel="%Attribute.Label.type">
-				<option key="applet" value="applet" />
-				<option key="bean" value="bean" />
-			</attribute>
-			<attribute name="jreversion"
-				displaylabel="%Attribute.Label.jreversion" type="ENUMERATED">
-				<option key="1.2" value="1.2" />
-			</attribute>
-			<attribute name="nspluginurl"
-				displaylabel="%Attribute.Label.nspluginurl" />
-			<attribute name="iepluginurl"
-				displaylabel="%Attribute.Label.iepluginurl" />
-		</category>
-	</tag>
-	<tag name="root">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="version" type="ENUMERATED"
-				displaylabel="%Attribute.Label.version">
-				<option key="1.2" value="1.2" />
-				<option key="2.0" value="2.0" />
-			</attribute>
-			<attribute name="xmlns:jsp" type="ENUMERATED"
-				displaylabel="%Attribute.Label.xmlnsjsp">
-				<option key="http://java.sun.com/JSP/Page" value="http://java.sun.com/JSP/Page" />
-			</attribute>
-		</category>
-	</tag>
-	<tag name="scriptlet" />
-	<tag name="setproperty">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="name" displaylabel="%Attribute.Label.name" />
-			<attribute name="property"
-				displaylabel="%Attribute.Label.property" />
-			<attribute name="param"
-				displaylabel="%Attribute.Label.param" />
-			<attribute name="value"
-				displaylabel="%Attribute.Label.value" />
-		</category>
-	</tag>
-	<tag name="directive.taglib" />
-	<tag name="usebean">
-		<category name="General"
-			displaylabel="%Category.Label.General">
-			<attribute name="id" displaylabel="%Attribute.Label.id" />
-			<attribute name="scope" type="ENUMERATED"
-				displaylabel="%Attribute.Label.scope">
-				<option key="page" value="page" />
-				<option key="session" value="session" />
-				<option key="request" value="request" />
-				<option key="application" value="application" />
-			</attribute>
-			<attribute name="class" type="CLASSNAME"
-				displaylabel="%Attribute.Label.class" />
-			<attribute name="type" displaylabel="%Attribute.Label.type" />
-			<attribute name="beanName"
-				displaylabel="%Attribute.Label.beanName" />
-		</category>
-	</tag>
-</taglib>
\ No newline at end of file
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/metadata/html.properties b/jsf/plugins/org.eclipse.jst.pagedesigner/metadata/html.properties
index 7f19286..c55c220 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/metadata/html.properties
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/metadata/html.properties
@@ -52,3 +52,45 @@
 
 TEXTAREA.display-label=Text Area
 TEXTAREA.description=The TEXTAREA element represents a multi-line text field
+
+
+any.dir.displayed-values.ltr=ltr (left-to-right)
+any.dir.displayed-values.rtl=rtl (right-to-left)
+
+any.frame.displayed-values.none=none (no sides, default value)
+any.frame.displayed-values.above=above (top side only)
+any.frame.displayed-values.below=below (bottom side only)
+any.frame.displayed-values.hsides=hsides (top and bottom sides only)
+any.frame.displayed-values.vsides=vsides (right and left sides only)
+any.frame.displayed-values.lhs=lhs (left hand side only)
+any.frame.displayed-values.rhs=rhs (right hand side only)
+any.frame.displayed-values.box=box (all four sides)
+any.frame.displayed-values.border=border (all four sides)
+
+any.rules.displayed-values.none=none (no rules, default value)
+any.rules.displayed-values.groups=groups (between row groups)
+any.rules.displayed-values.rows=rows (between rows only)
+any.rules.displayed-values.cols=cols (between columns only)
+any.rules.displayed-values.all=all (between all rows and columns)
+
+any.shape.displayed-values.default=default (entire region)
+any.shape.displayed-values.rect=rect (rectangular region)
+any.shape.displayed-values.circle=circle (circular region)
+any.shape.displayed-values.poly=poly (polygonal region)
+
+#categories
+property.category.event=Event
+property.category.language=Language
+property.category.html=HTML
+property.category.css=CSS
+property.category.general=General
+property.category.accessibility=Accessibility
+property.category.visualProperty=VisualProperty
+property.category.browser.specific=Browser Specific
+property.category.core=Core
+property.category.content=Content
+property.category.data.binding=Data Binding
+property.category.dynamic=Dynamic
+property.category.file=File
+property.category.image=Image
+
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/metadata/html.xml b/jsf/plugins/org.eclipse.jst.pagedesigner/metadata/html.xml
index 0266b15..e68391f 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/metadata/html.xml
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/metadata/html.xml
@@ -2,10 +2,11 @@
 <md:metadatamodel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" 
 	xmlns:md="http://org.eclipse.jst.jsf.common.metadata/metadata.ecore"
+	xmlns:mdt="http://org.eclipse.jst.jsf.common.metadata/metadataTraitTypes.ecore"  	
 	xmlns:pi="http://org.eclipse.jsf.pagedesigner/paletteInfos.ecore"
+	xmlns:qe="http://org.eclipse.jsf.pagedesigner/quickEditTabSections.ecore"
 	id="HTML"
 	type="tagFile">
-	
 	<trait id="paletteInfos" >
 		<value xsi:type="pi:PaletteInfos">
 			<item id="BR"/>
@@ -83,6 +84,9 @@
 	</trait>
 	
 	<entity id="A">
+		<include-entity-group id="common-core-attributes"/>
+		<include-entity-group id="common-language-attributes"/>
+		<include-entity-group id="common-event-attributes"/>
 		<trait id="display-label">
 			<value>%A.display-label</value>
 		</trait>
@@ -96,7 +100,14 @@
 			<value>large/HTML_A.gif</value>
 		</trait>
 	</entity>
+	<entity id="BODY">
+		<include-entity-group id="common-core-attributes"/>
+		<include-entity-group id="common-language-attributes"/>
+		<include-entity-group id="common-event-attributes"/>	
+		<include-entity-group id="common-html-attributes"/>	
+	</entity>		
 	<entity id="BR">
+		<include-entity-group id="common-core-attributes"/>
 		<trait id="display-label">
 			<value>%BR.display-label</value>
 		</trait>
@@ -114,6 +125,9 @@
 		</trait>
 	</entity>
 	<entity id="INPUT">
+		<include-entity-group id="common-core-attributes"/>
+		<include-entity-group id="common-language-attributes"/>
+		<include-entity-group id="common-event-attributes"/>	
 		<trait id="display-label">
 			<value>%INPUT.TEXT.display-label</value>
 		</trait>					
@@ -128,9 +142,13 @@
 		</trait>
 		<trait id="requires-html-form">
 			<value>true</value>
-		</trait>	
+		</trait>			
 	</entity>
 	<entity id="FORM">
+		<include-entity-group id="common-core-attributes"/>
+		<include-entity-group id="common-language-attributes"/>
+		<include-entity-group id="common-event-attributes"/>	
+		<include-entity-group id="form-event-attributes"/>
 		<trait id="display-label">
 			<value>%FORM.display-label</value>
 		</trait>					
@@ -144,7 +162,11 @@
 			<value>large/HTML_FORM.gif</value>
 		</trait>
 	</entity>
+	<entity id="HEAD">
+		<include-entity-group id="common-language-attributes"/>
+	</entity>	
 	<entity id="HR">
+		<include-entity-group id="common-core-attributes"/>
 		<trait id="display-label">
 			<value>%HR.display-label</value>
 		</trait>					
@@ -158,7 +180,13 @@
 			<value>large/HTML_HR.gif</value>
 		</trait>
 	</entity>	
+	<entity id="HTML">
+		<include-entity-group id="common-language-attributes"/>
+	</entity>	
 	<entity id="IMG">
+		<include-entity-group id="common-core-attributes"/>
+		<include-entity-group id="common-language-attributes"/>
+		<include-entity-group id="common-event-attributes"/>	
 		<trait id="display-label">
 			<value>%IMG.display-label</value>
 		</trait>					
@@ -172,7 +200,28 @@
 			<value>large/HTML_IMG.gif</value>
 		</trait>
 	</entity>	
+	<entity id="LINK">
+		<include-entity-group id="common-core-attributes"/>
+		<include-entity-group id="common-language-attributes"/>
+		<include-entity-group id="common-event-attributes"/>		
+		<entity id="type">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.LinkType</value>
+			</trait>
+		</entity>	
+	</entity>
+	<entity id="META">
+		<include-entity-group id="common-language-attributes"/>
+		<entity id="content">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ContentType</value>
+			</trait>
+		</entity>
+	</entity>		
 	<entity id="SELECT">
+		<include-entity-group id="common-core-attributes"/>
+		<include-entity-group id="common-language-attributes"/>
+		<include-entity-group id="common-event-attributes"/>	
 		<trait id="display-label">
 			<value>%SELECT.display-label</value>
 		</trait>					
@@ -190,6 +239,9 @@
 		</trait>			
 	</entity>		
 	<entity id="TABLE">
+		<include-entity-group id="common-core-attributes"/>
+		<include-entity-group id="common-language-attributes"/>
+		<include-entity-group id="common-event-attributes"/>	
 		<trait id="display-label">
 			<value>%TABLE.display-label</value>
 		</trait>					
@@ -204,6 +256,9 @@
 		</trait>
 	</entity>
 	<entity id="TEXTAREA">
+		<include-entity-group id="common-core-attributes"/>
+		<include-entity-group id="common-language-attributes"/>
+		<include-entity-group id="common-event-attributes"/>	
 		<trait id="display-label">
 			<value>%TEXTAREA.display-label</value>
 		</trait>					
@@ -219,5 +274,448 @@
 		<trait id="requires-html-form">
 			<value>true</value>
 		</trait>
+	</entity>	
+	<entity id="TITLE">
+		<include-entity-group id="common-language-attributes"/>
 	</entity>		
+	<entityGroup id="common-html-attributes">
+		<entity id="align">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+			</trait>
+			<trait id="valid-values">
+				<value xsi:type="mdt:ListOfValues">
+					<item>right</item>
+					<item>char</item>
+					<item>left</item>
+					<item>center</item>
+					<item>justify</item>					
+				</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>
+		</entity>
+	
+		<entity id="alt">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>
+		<entity id="src">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>
+		<entity id="accesskey">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.CharacterType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>
+		<entity id="accept">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>
+		<entity id="accept-charset">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>
+		<entity id="border">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.IntegerType</value>
+			</trait>
+			<trait id="valid-minimum"><value>0</value></trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>
+		<entity id="disabled">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>
+		<entity id="height">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.LengthType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>		
+		<entity id="ismap">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>
+		<entity id="longdesc">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.URIType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>	
+		<entity id="maxlength">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.IntegerType</value>
+			</trait>
+			<trait id="valid-minimum"><value>0</value></trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>
+		<entity id="readonly">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
+			</trait>
+		</entity>
+		<entity id="rel">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.LinkType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>
+		<entity id="rev">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.LinkType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>	
+		<entity id="rows">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.IntegerType</value>
+			</trait>
+			<trait id="valid-minimum"><value>0</value></trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>
+		<entity id="shape">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+			</trait>
+			<trait id="valid-values">
+				<value xsi:type="mdt:ListOfValues">
+					<item>default</item>
+					<item>rect</item>
+					<item>circle</item>
+					<item>poly</item>	
+				</value>			
+			</trait>
+			<trait id="displayed-values">
+				<value xsi:type="mdt:ListOfValues">
+					<item>%any.shape.displayed-values.default</item>
+					<item>%any.shape.displayed-values.rect</item>
+					<item>%any.shape.displayed-values.circle</item>
+					<item>%any.shape.displayed-values.poly</item>		
+				</value>		
+			</trait>
+			<trait id="default-value">
+				<value>default</value>
+			</trait>		
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>
+		<entity id="size">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.IntegerType</value>
+			</trait>
+			<trait id="valid-minimum"><value>0</value></trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>
+		<entity id="tabindex">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.IntegerType</value>
+			</trait>
+			<trait id="valid-minimum"><value>0</value></trait>
+			<trait id="valid-maximum"><value>32767</value></trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>
+		<entity id="target">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+			</trait>
+			<trait id="valid-values">
+				<value xsi:type="mdt:ListOfValues">
+					<item>_self</item>
+					<item>_blank</item>
+					<item>_parent</item>
+					<item>_top</item>				
+				</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>
+		<entity id="type">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>	
+		<entity id="usemap">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>		
+		<entity id="valign">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+			</trait>
+			<trait id="valid-values">
+				<value xsi:type="mdt:ListOfValues">
+					<item>middle</item>
+					<item>top</item>
+					<item>baseline</item>
+					<item>bottom</item>				
+				</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>
+		</entity>			
+		<entity id="width">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.LengthType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.html</value>
+			</trait>			
+		</entity>
+							
+	</entityGroup>
+	<entityGroup id="common-core-attributes">
+		<entity id="id">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.core</value>
+			</trait>			
+		</entity>
+		<entity id="class">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.pagedesigner.attributevalues.CSSClassType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.core</value>
+			</trait>			
+		</entity>
+		<entity id="style">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.pagedesigner.attributevalues.CSSStyleType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.core</value>
+			</trait>			
+		</entity>
+		<entity id="title">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.core</value>
+			</trait>			
+		</entity>		
+	</entityGroup>
+	<entityGroup id="common-event-attributes"> 
+		<entity id="onclick">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ScriptType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.event</value>
+			</trait>			
+		</entity>
+		<entity id="ondblclick">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ScriptType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.event</value>
+			</trait>			
+		</entity>
+		<entity id="onmousedown">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ScriptType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.event</value>
+			</trait>			
+		</entity>
+		<entity id="onmouseup">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ScriptType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.event</value>
+			</trait>			
+		</entity>
+		<entity id="onmouseover">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ScriptType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.event</value>
+			</trait>			
+		</entity>
+		<entity id="onmousemove">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ScriptType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.event</value>
+			</trait>			
+		</entity>
+		<entity id="onmouseout">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ScriptType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.event</value>
+			</trait>			
+		</entity>
+		<entity id="onkeypress">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ScriptType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.event</value>
+			</trait>			
+		</entity>
+		<entity id="onkeydown">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ScriptType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.event</value>
+			</trait>			
+		</entity>
+		<entity id="onkeyup">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ScriptType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.event</value>
+			</trait>			
+		</entity>
+		<!--almost common events - should be refactored-->
+		<entity id="onblur">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ScriptType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.event</value>
+			</trait>			
+		</entity>
+		<entity id="onchange">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ScriptType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.event</value>
+			</trait>			
+		</entity>
+		<entity id="onfocus">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ScriptType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.event</value>
+			</trait>			
+		</entity>
+		<entity id="onselect">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ScriptType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.event</value>
+			</trait>			
+		</entity>					
+	</entityGroup>
+	<entityGroup id="form-event-attributes">
+		<entity id="onsubmit">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ScriptType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.event</value>
+			</trait>			
+		</entity>	
+		<entity id="onreset">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.ScriptType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.event</value>
+			</trait>			
+		</entity>			
+	</entityGroup>
+	<entityGroup id="common-language-attributes" >
+		<entity id="dir">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+			</trait>
+			<trait id="valid-values">
+				<value xsi:type="mdt:ListOfValues">
+					<item>ltr</item>
+					<item>rtl</item>
+				</value>
+			</trait>
+			<trait id="displayed-values">
+				<value xsi:type="mdt:ListOfValues">
+					<item>%any.dir.displayed-values.ltr</item>
+					<item>%any.dir.displayed-values.rtl</item>
+				</value>
+			</trait>	
+			<trait id="category">
+				<value>%property.category.language</value>
+			</trait>					
+		</entity>
+		<entity id="lang">
+			<trait id="attribute-value-runtime-type">
+				<value>org.eclipse.jst.jsf.core.attributevalues.LanguageCodeType</value>
+			</trait>
+			<trait id="category">
+				<value>%property.category.language</value>
+			</trait>					
+		</entity>		
+	</entityGroup>	
 </md:metadatamodel>
\ No newline at end of file
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/metadata/jsp11.properties b/jsf/plugins/org.eclipse.jst.pagedesigner/metadata/jsp11.properties
deleted file mode 100644
index 747235a..0000000
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/metadata/jsp11.properties
+++ /dev/null
@@ -1,60 +0,0 @@
-###############################################################################
-# Copyright (c) 2001, 2007 Oracle Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     Oracle Corporation - initial API and implementation
-###############################################################################
-plugin.display-label=Plugin
-plugin.description=Causes the execution of an applet or bean. The applet or bean executes in the specified plugin. If the plugin is not available, displays a dialog to initiate the download of the plugin software
-
-fallback.display-label=Fallback
-fallback.description=The element provides a message for the user if the plugin does not start
-
-root.display-label=Root
-root.description=Defines standard elements and namespace attributes of tag libraries
-
-text.display-label=Text
-text.description=Encloses template data
-
-expression.display-label=Expression
-expression.description=Contains an expression valid in the scripting language used in the page
-
-scriptlet.display-label=Scriptlet
-scriptlet.description=Contains a code fragment valid in the scripting language used in the page
-
-declaration.display-label=Declaration
-declaration.description=Declares a variable or method valid in the scripting language used in the page
-
-forward.display-label=Forward
-forward.description=Forwards a request to an HTML file, JSP page, or servlet
-
-param.display-label=Param
-param.description=The element passes the name and value of a parameter to the resource
-
-params.display-label=Params
-params.description=The element sends parameter names and values to an applet or Bean at startup
-
-include.display-label=Include
-include.description=Includes a static resource or the result from another web component
-
-useBean.display-label=UseBean
-useBean.description=Instantiates or references a bean with a specific name and scope
-
-getProperty.display-label=GetProperty
-getProperty.description=Inserts the value of a bean property into the response
-
-setProperty.display-label=SetProperty
-setProperty.description=Sets a bean property value or values
-
-directive.include.display-label=Directive.Include
-directive.include.description=Includes a resource of text or code when the JSP page is translated
-
-directive.page.display-label=Directive.Page
-directive.page.description=Defines attributes that apply to an entire JSP page
-
-directive.taglib.display-label=Directive.Taglib
-directive.taglib.description=Defines a tag library and prefix for the custom tags used in the JSP page
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/metadata/jsp11.xml b/jsf/plugins/org.eclipse.jst.pagedesigner/metadata/jsp11.xml
deleted file mode 100644
index df0690e..0000000
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/metadata/jsp11.xml
+++ /dev/null
@@ -1,282 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<md:metadatamodel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" 
-	xmlns:md="http://org.eclipse.jst.jsf.common.metadata/metadata.ecore"
-	xmlns:pi="http://org.eclipse.jsf.pagedesigner/paletteInfos.ecore"
-	id="jsp11"
-	type="tagFile">
-	
-	<trait id="paletteInfos">
-		<value xsi:type="pi:PaletteInfos">
-			<item id="jsp:directive.include"/>
-			<item id="jsp:directive.taglib"/>
-			<item id="jsp:expression"/>
-			<item id="jsp:declaration"/>
-			<item id="jsp:useBean"/>
-			<item id="jsp:getProperty"/>
-			<item id="jsp:setProperty"/>
-			<item id="jsp:include"/>
-			<item id="jsp:text"/>
-			<item id="jsp:root"/>
-			<item id="jsp:forward"/>
-			<item id="jsp:param"/>
-			<item id="jsp:params"/>
-			<item id="jsp:plugin"/>
-			<item id="jsp:fallback"/>
-			<item id="jsp:scriptlet"/>
-			<item id="jsp:directive.page"/>			
-		</value>
-	</trait>
-
-	<trait id="images-base-path">
-		<value>icons/palette/JSP</value>
-	</trait>
-
-	<trait id="display-label">
-		<value>JSP</value>
-	</trait>
-	
-	<entity id="jsp:directive.include">
-		<trait id="display-label">
-			<value>%directive.include.display-label</value>
-		</trait>
-		<trait id="description">
-			<value>%directive.include.description</value>
-		</trait>		
-		<trait id="small-icon">
-			<value>small/JSP_DIRECTIVE.INCLUDE.gif</value>
-		</trait>
-		<trait id="large-icon">
-			<value>large/JSP_DIRECTIVE.INCLUDE.gif</value>
-		</trait>
-	</entity>
-	<entity id="jsp:directive.page">
-		<trait id="display-label">
-			<value>%directive.page.display-label</value>
-		</trait>
-		<trait id="description">
-			<value>%directive.page.description</value>
-		</trait>		
-		<trait id="small-icon">
-			<value>small/JSP_DIRECTIVE.PAGE.gif</value>
-		</trait>
-		<trait id="large-icon">
-			<value>large/JSP_DIRECTIVE.PAGE.gif</value>
-		</trait>
-	</entity>	
-
-	<entity id="jsp:directive.taglib">
-		<trait id="display-label">
-			<value>%directive.taglib.display-label</value>
-		</trait>
-		<trait id="description">
-			<value>%directive.taglib.description</value>
-		</trait>		
-		<trait id="small-icon">
-			<value>small/JSP_DIRECTIVE.TAGLIB.gif</value>
-		</trait>
-		<trait id="large-icon">
-			<value>large/JSP_DIRECTIVE.TAGLIB.gif</value>
-		</trait>
-	</entity>	
-	<entity id="jsp:expression">
-		<trait id="display-label">
-			<value>%expression.display-label</value>
-		</trait>
-		<trait id="description">
-			<value>%expression.description</value>
-		</trait>		
-		<trait id="small-icon">
-			<value>small/JSP_EXPRESSION.gif</value>
-		</trait>
-		<trait id="large-icon">
-			<value>large/JSP_EXPRESSION.gif</value>
-		</trait>
-	</entity>	
-	<entity id="jsp:declaration">
-		<trait id="display-label">
-			<value>%declaration.display-label</value>
-		</trait>
-		<trait id="description">
-			<value>%declaration.description</value>
-		</trait>		
-		<trait id="small-icon">
-			<value>small/JSP_DECLARATION.gif</value>
-		</trait>
-		<trait id="large-icon">
-			<value>large/JSP_DECLARATION.gif</value>
-		</trait>
-	</entity>	
-	<entity id="jsp:useBean">
-		<trait id="display-label">
-			<value>%useBean.display-label</value>
-		</trait>
-		<trait id="description">
-			<value>%useBean.description</value>
-		</trait>		
-		<trait id="small-icon">
-			<value>small/JSP_USEBEAN.gif</value>
-		</trait>
-		<trait id="large-icon">
-			<value>large/JSP_USEBEAN.gif</value>
-		</trait>
-	</entity>	
-		
-	<entity id="jsp:getProperty">
-		<trait id="display-label">
-			<value>%getProperty.display-label</value>
-		</trait>
-		<trait id="description">
-			<value>%getProperty.description</value>
-		</trait>		
-		<trait id="small-icon">
-			<value>small/JSP_GETPROPERTY.gif</value>
-		</trait>
-		<trait id="large-icon">
-			<value>large/JSP_GETPROPERTY.gif</value>
-		</trait>
-	</entity>	
-
-	<entity id="jsp:setProperty">
-		<trait id="display-label">
-			<value>%setProperty.display-label</value>
-		</trait>
-		<trait id="description">
-			<value>%setProperty.description</value>
-		</trait>		
-		<trait id="small-icon">
-			<value>small/JSP_SETPROPERTY.gif</value>
-		</trait>
-		<trait id="large-icon">
-			<value>large/JSP_SETPROPERTY.gif</value>
-		</trait>
-	</entity>	
-	<entity id="jsp:include">
-		<trait id="display-label">
-			<value>%include.display-label</value>
-		</trait>
-		<trait id="description">
-			<value>%include.description</value>
-		</trait>		
-		<trait id="small-icon">
-			<value>small/JSP_INCLUDE.gif</value>
-		</trait>
-		<trait id="large-icon">
-			<value>large/JSP_INCLUDE.gif</value>
-		</trait>
-	</entity>	
-	
-	<entity id="jsp:text">
-		<trait id="display-label">
-			<value>%text.display-label</value>
-		</trait>
-		<trait id="description">
-			<value>%text.description</value>
-		</trait>		
-		<trait id="small-icon">
-			<value>small/JSP_TEXT.gif</value>
-		</trait>
-		<trait id="large-icon">
-			<value>large/JSP_TEXT.gif</value>
-		</trait>
-	</entity>	
-	<entity id="jsp:root">
-		<trait id="display-label">
-			<value>%root.display-label</value>
-		</trait>
-		<trait id="description">
-			<value>%root.description</value>
-		</trait>		
-		<trait id="small-icon">
-			<value>small/JSP_ROOT.gif</value>
-		</trait>
-		<trait id="large-icon">
-			<value>large/JSP_ROOT.gif</value>
-		</trait>
-	</entity>	
-	<entity id="jsp:forward">
-		<trait id="display-label">
-			<value>%forward.display-label</value>
-		</trait>
-		<trait id="description">
-			<value>%forward.description</value>
-		</trait>		
-		<trait id="small-icon">
-			<value>small/JSP_FORWARD.gif</value>
-		</trait>
-		<trait id="large-icon">
-			<value>large/JSP_FORWARD.gif</value>
-		</trait>
-	</entity>	
-	
-	<entity id="jsp:param">
-		<trait id="display-label">
-			<value>%param.display-label</value>
-		</trait>
-		<trait id="description">
-			<value>%param.description</value>
-		</trait>		
-		<trait id="small-icon">
-			<value>small/JSP_PARAM.gif</value>
-		</trait>
-		<trait id="large-icon">
-			<value>large/JSP_PARAM.gif</value>
-		</trait>
-	</entity>	
-	<entity id="jsp:params">
-		<trait id="display-label">
-			<value>%params.display-label</value>
-		</trait>
-		<trait id="description">
-			<value>%params.description</value>
-		</trait>		
-		<trait id="small-icon">
-			<value>small/JSP_PARAMS.gif</value>
-		</trait>
-		<trait id="large-icon">
-			<value>large/JSP_PARAMS.gif</value>
-		</trait>
-	</entity>		
-	<entity id="jsp:plugin">
-		<trait id="display-label">
-			<value>%plugin.display-label</value>
-		</trait>
-		<trait id="description">
-			<value>%plugin.description</value>
-		</trait>		
-		<trait id="small-icon">
-			<value>small/JSP_PLUGIN.gif</value>
-		</trait>
-		<trait id="large-icon">
-			<value>large/JSP_PLUGIN.gif</value>
-		</trait>
-	</entity>	
-	<entity id="jsp:fallback">
-		<trait id="display-label">
-			<value>%fallback.display-label</value>
-		</trait>
-		<trait id="description">
-			<value>%fallback.description</value>
-		</trait>		
-		<trait id="small-icon">
-			<value>small/JSP_FALLBACK.gif</value>
-		</trait>
-		<trait id="large-icon">
-			<value>large/JSP_FALLBACK.gif</value>
-		</trait>
-	</entity>
-	<entity id="jsp:scriptlet">
-		<trait id="display-label">
-			<value>%scriptlet.display-label</value>
-		</trait>
-		<trait id="description">
-			<value>%scriptlet.description</value>
-		</trait>		
-		<trait id="small-icon">
-			<value>small/JSP_SCRIPTLET.gif</value>
-		</trait>
-		<trait id="large-icon">
-			<value>large/JSP_SCRIPTLET.gif</value>
-		</trait>
-	</entity>	
-</md:metadatamodel>
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/model/QuickEditTabSections.ecore b/jsf/plugins/org.eclipse.jst.pagedesigner/model/QuickEditTabSections.ecore
new file mode 100644
index 0000000..5b3c237
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/model/QuickEditTabSections.ecore
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="quickedittabsections"
+    nsURI="http://org.eclipse.jsf.pagedesigner/QuickEditTabSections.ecore" nsPrefix="qe">
+  <eClassifiers xsi:type="ecore:EClass" name="QuickEditTabSections">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="sections" upperBound="-1"
+        eType="#//SectionInfo" containment="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="section"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="SectionInfo">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" unique="false" eType="#//SECTION_TYPE"
+        defaultValueLiteral="ATTRIBUTE"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="SECTION_TYPE">
+    <eLiterals name="ATTRIBUTE"/>
+    <eLiterals name="SECTION" value="1"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/model/QuickEditTabSections.genmodel b/jsf/plugins/org.eclipse.jst.pagedesigner/model/QuickEditTabSections.genmodel
new file mode 100644
index 0000000..4aed6be
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/model/QuickEditTabSections.genmodel
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="Copyright (c) 2007 Oracle Corporation"
+    modelDirectory="/org.eclipse.jst.pagedesigner/src" editDirectory="/org.eclipse.jst.pagedesigner/src"
+    editorDirectory="/org.eclipse.jst.pagedesigner/src" modelPluginID="org.eclipse.jst.pagedesigner"
+    modelName="QuickEditTabSections" editPluginClass="org.eclipse.jst.pagedesigner.PDPlugin"
+    editorPluginClass="/org.eclipse.jst.pagedesigner.PDPlugin" importerID="org.eclipse.emf.importer.ecore"
+    complianceLevel="5.0" providerRootExtendsClass="">
+  <foreignModel>QuickEditTabSections.ecore</foreignModel>
+  <genPackages prefix="QuickEditTabSections" basePackage="org.eclipse.jst.pagedesigner.editors.properties"
+      disposableProviderFactory="true" classPackageSuffix="internal.impl" utilityPackageSuffix="internal.util"
+      providerPackageSuffix="internal.provider" presentationPackageSuffix="internal.presentation"
+      testsPackageSuffix="internal.tests" generateExampleClass="false" multipleEditorPages="false"
+      generateModelWizard="false" ecorePackage="QuickEditTabSections.ecore#/">
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="QuickEditTabSections.ecore#//SECTION_TYPE">
+      <genEnumLiterals ecoreEnumLiteral="QuickEditTabSections.ecore#//SECTION_TYPE/ATTRIBUTE"/>
+      <genEnumLiterals ecoreEnumLiteral="QuickEditTabSections.ecore#//SECTION_TYPE/GROUP"/>
+    </genEnums>
+    <genClasses ecoreClass="QuickEditTabSections.ecore#//QuickEditTabSections">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QuickEditTabSections.ecore#//QuickEditTabSections/sections"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="QuickEditTabSections.ecore#//Section">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QuickEditTabSections.ecore#//Section/id"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QuickEditTabSections.ecore#//Section/type"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.properties b/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.properties
index 8329c1c..06eb37f 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.properties
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.properties
@@ -24,4 +24,4 @@
 command.name.0 = vertical Layout
 command.name.1 = horizontal Layout
 command.name.2 = graphical designer
-command.name.3 = source code
\ No newline at end of file
+command.name.3 = source code
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.xml b/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.xml
index 40e2e83..4e79871 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.xml
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.xml
@@ -11,7 +11,7 @@
 		<editor class="org.eclipse.jst.pagedesigner.editors.HTMLEditor"
 			contributorClass="org.eclipse.jst.pagedesigner.editors.actions.PageDesignerActionBarContributor2"
 			default="false"
-			extensions="jsp,jsf,html,htm,xhtml"
+			extensions="jsp,jspx,jsf,html,htm,xhtml"
 			icon="icons/PD_Plugin.gif"
 			id="org.eclipse.jst.pagedesigner.PageDesignerEditor"
 			name="%editor.name.0">
@@ -32,34 +32,28 @@
 		</factory>
 	</extension>
 
-	<extension point="org.eclipse.wst.common.ui.properties.propertyTabs">
+	 <extension
+       point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
 		<propertyTabs
-			contributorId="org.eclipse.jst.pagedesigner.pageDesigner.tabPropertyContributor">
+			contributorId="org.eclipse.jst.pagedesigner.tabPropertyContributor">
 			<propertyTab label="Quick Edit" category="Quick Edit" id="org.eclipse.jst.pagedesigner.tabQuickEdit" />
 			<propertyTab label="Attributes" category="Attributes" id="org.eclipse.jst.pagedesigner.tabAttributes" />
 		</propertyTabs>
-	</extension>
-
-	<extension
-		point="org.eclipse.wst.common.ui.properties.propertyContributor">
-		<propertyContributor
-			sectionDescriptorProvider="org.eclipse.jst.pagedesigner.properties.internal.DesignerTabPropertySectionDescriptorProvider"
-			contributorId="org.eclipse.jst.pagedesigner.pageDesigner.tabPropertyContributor">
-			<propertyCategory category="Quick Edit" />
-			<propertyCategory category="Attributes" />
-		</propertyContributor>
-	</extension>
-
-	<extension
-		point="org.eclipse.jst.pagedesigner.propertySections">
-		<propertySections>
-			<propertySection afterSection="top"
-				class="org.eclipse.jst.pagedesigner.properties.AllPropertySection"
-				tab="org.eclipse.jst.pagedesigner.tabAttributes"
-				id="section.allproperty" />
+ 	</extension>
+ 	
+  	<extension
+        point="org.eclipse.ui.views.properties.tabbed.propertySections">
+		<propertySections 
+			contributorId="org.eclipse.jst.pagedesigner.tabPropertyContributor">
+			<propertySection
+         		afterSection="top"
+         		class="org.eclipse.jst.pagedesigner.properties.AllPropertySection"
+         		id="section.allproperty"
+        	 	tab="org.eclipse.jst.pagedesigner.tabAttributes">
+  			 </propertySection>
 		</propertySections>
 	</extension>
-	
+
 	<extension point="org.eclipse.jst.pagedesigner.pageDesignerExtension">
 		<linkCreator class="org.eclipse.jst.pagedesigner.actions.link.HtmlLinkCreator" linkIdentifier="Html Link"/>
 	</extension>
@@ -115,6 +109,11 @@
           genModel="model/DTInfo.genmodel"
           uri="http://org.eclipse.jsf.pagedesigner/dtinfo.ecore">
     </package>
+    <package
+          class="org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSectionsPackage"
+          genModel="model/QuickEditTabSections.genmodel"
+          uri="http://org.eclipse.jsf.pagedesigner/QuickEditTabSections.ecore">
+    </package>
    </extension>
  <extension
        point="org.eclipse.jst.jsf.common.standardMetaDataFiles">
@@ -131,6 +130,22 @@
     </domainSourceModelTypeTranslator>
  </extension>
  <extension
+         point="org.eclipse.jst.jsf.common.domainSourceModelTypes">
+      <domainSourceModelTypes
+            domainId="TagLibraryDomain"
+            domainSourceModelTypeId="SybaseCMConfigContentModelHandler"
+            locator="org.eclipse.jst.pagedesigner.internal.metadata.SybaseCMConfigMetaDataLocator"
+            ordinal="0">
+     </domainSourceModelTypes>
+ </extension>
+ <extension
+       point="org.eclipse.jst.jsf.common.domainSourceModelTypeTranslators">
+    <domainSourceModelTypeTranslator
+          domainSourceModelTypeId="SybaseCMConfigContentModelHandler"
+          translatorClass="org.eclipse.jst.pagedesigner.internal.metadata.SybaseCMConfigMetaDataTranslator">
+    </domainSourceModelTypeTranslator>
+ </extension>
+ <extension
        point="org.eclipse.ui.contexts">
     <context
           description="%editor.binding.context.description"
@@ -139,4 +154,31 @@
           parentId="org.eclipse.ui.textEditorScope">
     </context>
  </extension>
+ <extension
+       point="org.eclipse.jst.jsf.core.MetaDataEnabledFeatures">
+    <MetaDataEnabledFeature
+          class="org.eclipse.jst.pagedesigner.editors.properties.internal.PropertyDescriptor"
+          typeid="org.eclipse.jst.jsf.core.attributevalues.BaseType">
+    </MetaDataEnabledFeature>
+ </extension>
+ <extension
+       point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
+    <propertyContributor
+          contributorId="org.eclipse.jst.pagedesigner.tabPropertyContributor"
+          tabDescriptorProvider="org.eclipse.jst.pagedesigner.properties.internal.WPETabDescriptorProvider">
+       <propertyCategory></propertyCategory>
+    </propertyContributor>
+ </extension>
+ <extension
+       point="org.eclipse.jst.jsf.core.AttributeValueRuntimeTypes">
+     <attributeValueRuntimeType
+            class="org.eclipse.jst.pagedesigner.taglibprocessing.CSSClassType"
+            id="attributevalues.CSSClassType"/> 
+      <attributeValueRuntimeType
+            class="org.eclipse.jst.pagedesigner.taglibprocessing.CSSIdType"
+            id="attributevalues.CSSIdType"/>    
+      <attributeValueRuntimeType
+            class="org.eclipse.jst.pagedesigner.taglibprocessing.CSSStyleType"
+            id="attributevalues.CSSStyleType"/>   
+ </extension>
 </plugin>
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/schema/pageDesignerExtension.exsd b/jsf/plugins/org.eclipse.jst.pagedesigner/schema/pageDesignerExtension.exsd
index 9b45509..4a5b2e9 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/schema/pageDesignerExtension.exsd
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/schema/pageDesignerExtension.exsd
@@ -59,6 +59,11 @@
    </element>
 
    <element name="attributeCellEditorFactory">
+      <annotation>
+         <documentation>
+            deprecated - use tagAttributeCellEditorFactory
+         </documentation>
+      </annotation>
       <complexType>
          <attribute name="class" type="string">
             <annotation>
@@ -66,7 +71,27 @@
                   
                </documentation>
                <appInfo>
-                  <meta.attribute kind="java"/>
+                  <meta.attribute kind="java" deprecated="true"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="tagAttributeCellEditorFactory">
+      <annotation>
+         <documentation>
+            provides ability for 3rd parties to supply their own cell and dialog field editors for MD enabled tag library attributes in the WPE tabbed property sheets
+         </documentation>
+      </annotation>
+      <complexType>
+         <attribute name="class" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appInfo>
+                  <meta.attribute kind="java" basedOn=":org.eclipse.jst.pagedesigner.meta.ITagAttributeCellEditorFactory"/>
                </appInfo>
             </annotation>
          </attribute>
@@ -134,6 +159,9 @@
       </documentation>
    </annotation>
 
+
+
+
    <annotation>
       <appInfo>
          <meta.section type="copyright"/>
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/IJMTConstants.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/IJMTConstants.java
index 595df0a..2cce71e 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/IJMTConstants.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/IJMTConstants.java
@@ -69,11 +69,16 @@
 	public static final String TAG_CONVERTER_FACTORY = "tagConverterFactory"; //$NON-NLS-1$
 
 	/**
-	 * local name of attribute celleditor factory extension
+	 * local name of attribute cell editor factory extension
+	 * @deprecated and unused
 	 */
 	public static final String ATTRIBUTE_CELLEDITOR_FACTORY = "attributeCellEditorFactory"; //$NON-NLS-1$
 
 	/**
+	 * local name of tag attribute cell editor factory extension
+	 */
+	public static final String TAG_ATTRIBUTE_CELLEDITOR_FACTORY = "tagAttributeCellEditorFactory"; //$NON-NLS-1$
+	/**
 	 * local name of element edit factory extension
 	 */
 	public static final String ELEMENT_EDIT_FACTORY = "elementEditFactory"; //$NON-NLS-1$
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/JMTResources.properties b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/JMTResources.properties
index fdf992d..697eafb 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/JMTResources.properties
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/JMTResources.properties
@@ -238,4 +238,7 @@
 Error.TagCreatorMustBeOfType=ITagCreator instances must be of type {0}.
 Error.ProblemLoadingExtensionPoint=Problem loading ITagCreatorFactory extension Point
 Error.ProblemLoadingTagCreatorFactory=Problem loading tag creator factory: {0}
-Error.ProblemLoadingExecutingTagCreator=Problem executing tag creator: {0}
\ No newline at end of file
+Error.ProblemLoadingExecutingTagCreator=Problem executing tag creator: {0}
+
+#Property Sheet
+QuickEditTab.no_quick_edit_md=No quick edit properties are available for the current selection
\ No newline at end of file
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/HTMLEditor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/HTMLEditor.java
index e517d3a..264a745 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/HTMLEditor.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/HTMLEditor.java
@@ -29,6 +29,7 @@
 import org.eclipse.gef.ui.palette.PaletteViewerProvider;
 import org.eclipse.gef.ui.views.palette.PalettePage;
 import org.eclipse.gef.ui.views.palette.PaletteViewerPage;
+import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.TextSelection;
 import org.eclipse.jface.viewers.IPostSelectionProvider;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
@@ -68,7 +69,7 @@
 import org.eclipse.ui.part.MultiPageSelectionProvider;
 import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
 import org.eclipse.ui.views.properties.IPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySheetPageContributor;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;
 import org.eclipse.wst.common.ui.provisional.editors.PostMultiPageEditorSite;
 import org.eclipse.wst.common.ui.provisional.editors.PostMultiPageSelectionProvider;
 import org.eclipse.wst.common.ui.provisional.editors.PostSelectionMultiPageEditorPart;
@@ -89,11 +90,11 @@
 		IPropertyListener, ITabbedPropertySheetPageContributor {
 	// private static final String PAGE_NAME_DESIGN = "Design"; //$NON-NLS-1$
 	// private static final String PAGE_NAME_SOURCE = "Source"; //$NON-NLS-1$
-	private final static String CONTRIBUTOR_ID = "org.eclipse.jst.pagedesigner.pageDesigner.tabPropertyContributor"; //$NON-NLS-1$
+	public final static String TABBED_PROPERTIES_CONTRIBUTOR_ID = "org.eclipse.jst.pagedesigner.tabPropertyContributor"; //$NON-NLS-1$
 
 	// four different modes for the designer when displayed in a sash editor.
 	/**
-	 * editor split is veritical
+	 * editor split is vertical
 	 */
 	public static final int MODE_SASH_VERTICAL = 0;
 
@@ -172,7 +173,7 @@
 	 * @see com.ibm.xtools.common.ui.properties.ITabbedPropertySheetPageContributor#getContributorId()
 	 */
 	public String getContributorId() {
-		return CONTRIBUTOR_ID;
+		return TABBED_PROPERTIES_CONTRIBUTOR_ID;
 	}
 
 	private void connectSashPage() {
@@ -581,6 +582,22 @@
 
 
 	/**
+	 * IExtendedSimpleEditor method
+	 */
+	public IDocument getDocument() {
+		if (getTextEditor() == null) {
+			return null;
+		}
+
+		Object apapter = _textEditor.getAdapter(ISourceEditingTextTools.class);
+		if (apapter != null) {
+			return ((ISourceEditingTextTools) apapter).getDocument();
+		}
+
+		return null;
+	}
+
+	/**
 	 * IExtendedMarkupEditor method
 	 * @return the dom document
 	 */
@@ -814,7 +831,7 @@
 	}
 
 	private IPropertySheetPage getPropertySheetPage() {
-		return new org.eclipse.jst.pagedesigner.properties.DesignerTabbedPropertySheetPage(
+		return new org.eclipse.jst.pagedesigner.properties.WPETabbedPropertySheetPage(
 				this, this);
 	}
 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/internal/metadata/HTMLContentModelMetaDataTranslator.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/internal/metadata/HTMLContentModelMetaDataTranslator.java
index 2c24cec..de78365 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/internal/metadata/HTMLContentModelMetaDataTranslator.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/internal/metadata/HTMLContentModelMetaDataTranslator.java
@@ -13,6 +13,7 @@
 
 import org.eclipse.jst.jsf.common.metadata.internal.AbstractTagLibDomainContentModelMetaDataTranslator;
 import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataModelMergeAssistant;
+import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataSourceModelProvider;
 import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataTranslator;
 import org.eclipse.wst.html.core.internal.contentmodel.HTMLCMDocument;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
@@ -22,6 +23,13 @@
  */
 public class HTMLContentModelMetaDataTranslator extends AbstractTagLibDomainContentModelMetaDataTranslator implements IMetaDataTranslator {
 
+	public boolean canTranslate(IMetaDataSourceModelProvider modelProvider) {		
+		if (modelProvider.getSourceModel() != null && 
+				modelProvider.getSourceModel() instanceof HTMLCMDocument)
+			return true;
+		return false;
+	}
+	
 	/* (non-Javadoc)
 	 * @see org.eclipse.jst.jsf.common.metadata.internal.IMetaDataTranslator#translate(org.eclipse.jst.jsf.common.metadata.internal.IMetaDataModelMergeAssistant)
 	 */
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/IPropertyPageDescriptor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/IPropertyPageDescriptor.java
new file mode 100644
index 0000000..3000893
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/IPropertyPageDescriptor.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.editors.properties;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField;
+import org.eclipse.jst.jsf.metadataprocessors.IMetaDataEnabledFeature;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * Property descriptor for metadata enabled tag attributes in the WPE property pages
+ */
+public interface IPropertyPageDescriptor extends IMetaDataEnabledFeature, IAdaptable{
+	/**
+	 * Trait id for defining quick edit tab sections.   Value must be of type qe:QuickEditTabSections
+	 * eg. <value xsi:type="qe:QuickEditTabSections">
+	 */
+	public static final String QUICK_EDIT_TAB = "quick-edit-tab";
+	/**
+	 * Trait id for category name value
+	 */
+	public static final String PROP_DESC_CATEGORY = "category";
+	
+//	/**
+//	 * Trait id for fully qualified cell editor class name
+//	 */
+//	public static final String PROP_DESC_CELL_EDITOR = "cell-editor";
+//	/**
+//	 * Trait id for fully qualified dialog field editor name
+//	 */
+//	public static final String PROP_DESC_DIALOG_FIELD_EDITOR = "dialog-field-editor";
+	
+	/**
+	 * @return name of attribute.  Must not be null.
+	 */
+	public String getAttributeName();
+	/**
+	 * @return category name.  Must not be null.
+	 */
+	public String getCategory();
+	/**
+	 * @return label to use.  Must not be null.
+	 */
+	public String getLabel();
+	/**
+	 * @return description.   May return null.
+	 */
+	public String getDescription();
+	/**
+	 * @return whether this is a required property.   Default false.
+	 */
+	public boolean isRequired();
+	/**
+	 * @param parent
+	 * @return cell editor to use.   May be null.
+	 */
+	public CellEditor getCellEditor(Composite parent);
+	/**
+	 * @return dialog field editor to use.   May be null.
+	 */
+	public DialogField getDialogFieldEditor();
+	/**
+	 * @return uri. Must not be null.
+	 */
+	public String getUri();
+	/**
+	 * @return tag name.  Must not be null.
+	 */
+	public String getTagName();
+	/**
+	 * @return fully qualified attribute-value-runtime-type as String
+	 */
+	public String getValueType();
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/internal/EditorValidatorAdapter.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/internal/EditorValidatorAdapter.java
new file mode 100644
index 0000000..a2f6304
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/internal/EditorValidatorAdapter.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.editors.properties.internal;
+
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.jface.viewers.ICellEditorValidator;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidationMessage;
+
+/**
+ * Adapts IValidValues to ICellEditorValidator
+ *
+ */
+public class EditorValidatorAdapter implements ICellEditorValidator, IInputValidator {
+
+	private IValidValues _vvs;
+
+	/**
+	 * Constructor
+	 * @param vvs
+	 */
+	public EditorValidatorAdapter(IValidValues vvs) {
+		_vvs = vvs;
+	}
+
+	public String isValid(Object value) {
+		//for now, if value is not a string, return true
+		if (value instanceof String)
+			return isValid((String)value);
+		return null;
+	}
+	
+	public String isValid(String value) {
+		_vvs.getValidationMessages().clear();
+		if (_vvs.isValidValue(value))
+			return null;//is valid
+
+		return ((IValidationMessage)_vvs.getValidationMessages().get(0)).getMessage();
+
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/internal/PropertyDescriptor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/internal/PropertyDescriptor.java
new file mode 100644
index 0000000..e01d91d
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/internal/PropertyDescriptor.java
@@ -0,0 +1,195 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.editors.properties.internal;
+
+import java.util.List;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ICellEditorValidator;
+import org.eclipse.jst.jsf.common.metadata.Entity;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField;
+import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
+import org.eclipse.jst.jsf.metadataprocessors.AbstractMetaDataEnabledFeature;
+import org.eclipse.jst.jsf.metadataprocessors.IMetaDataEnabledFeature;
+import org.eclipse.jst.jsf.metadataprocessors.MetaDataEnabledProcessingFactory;
+import org.eclipse.jst.jsf.metadataprocessors.TaglibMetadataContext;
+import org.eclipse.jst.jsf.metadataprocessors.features.IDefaultValue;
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+import org.eclipse.jst.pagedesigner.meta.EditorCreator;
+import org.eclipse.jst.pagedesigner.meta.internal.CellEditorFactoryRegistry;
+import org.eclipse.jst.pagedesigner.properties.ITabbedPropertiesConstants;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.views.properties.IPropertyDescriptor;
+import org.w3c.dom.Element;
+
+/**
+ * MD enabled feature of an attribute value runtime type allowing for the tabbed property
+ * page to work
+ *
+ */
+public class PropertyDescriptor extends AbstractMetaDataEnabledFeature
+		implements IMetaDataEnabledFeature, IPropertyPageDescriptor, IAdaptable {
+
+	/**
+	 * Constructor
+	 */
+	public PropertyDescriptor() {
+		// TODO Auto-generated constructor stub
+	}
+
+	//IPropertyPageDescriptor 
+	public String getCategory() {		
+		String cat = getTraitValueAsString(IPropertyPageDescriptor.PROP_DESC_CATEGORY);
+		return cat != null ? cat : ITabbedPropertiesConstants.OTHER_CATEGORY;
+	}
+
+	public CellEditor getCellEditor(Composite parent) {
+//		TODO: allow for override of the factory by using MD
+//		Trait trait = TaglibDomainMetaDataQueryHelper.getTrait(
+//				getMetaDataContext().getEntity(),
+//				IPropertyPageDescriptor.PROP_DESC_CELL_EDITOR);
+//		
+//		if (trait != null) {
+//			String classname = TraitValueHelper.getValueAsString(trait);
+//			if (classname != null && ! classname.equals("")){
+//				try {
+//					Class klass = PDPlugin.getDefault().getBundle().loadClass(classname);
+//					if (klass != null){
+//						//
+//					}
+//				} catch (ClassNotFoundException e) {//
+//					String msg = "Unable to locate cell editor:"+classname+ " for "+toString();
+//					PDPlugin.getDefault().getLog().log(new Status(IStatus.ERROR, PDPlugin.getPluginId(), msg));
+//				}
+//			}
+//		}
+		//otherwise use factory
+		Element element = (Element)IStructuredDocumentContextResolverFactory.INSTANCE.getDOMContextResolver(getStructuredDocumentContext()).getNode();		
+		return CellEditorFactoryRegistry.getInstance().createCellEditor(parent, this, element);
+	}
+
+	public String getDescription() {
+		return getTraitValueAsString("description");
+	}
+
+	public String getLabel() {
+		String label = getTraitValueAsString("display-label");
+		if (label == null) {
+			label = getMetaDataContext().getEntity().getId();
+		}
+		return label;
+	}
+
+	public boolean isRequired() {
+		return getTraitValueAsBoolean("required");
+	}
+
+	public DialogField getDialogFieldEditor() {
+		//TODO: allow for override of the factory by using MD
+//		Trait trait = TaglibDomainMetaDataQueryHelper.getTrait(
+//				getMetaDataContext().getEntity(),
+//				IPropertyPageDescriptor.PROP_DESC_DIALOG_FIELD_EDITOR);
+//		
+//		if (trait != null) {
+//			String classname = TraitValueHelper.getValueAsString(trait);
+//			if (classname != null && ! classname.equals("")){
+//				try {
+//					Class klass = PDPlugin.getDefault().getBundle().loadClass(classname);
+//					if (klass != null){
+//						//
+//					}
+//				} catch (ClassNotFoundException e) {//
+//					String msg = "Unable to locate cell editor:"+classname+ " for "+toString();
+//					PDPlugin.getDefault().getLog().log(new Status(IStatus.ERROR, PDPlugin.getPluginId(), msg));
+//				}
+//			}
+//		}
+		//otherwise use factory
+		EditorCreator creator = EditorCreator.getInstance();
+		return creator.createDialogFieldWithWrapper(getUri(),
+				getTagName(),this, null);
+	}
+
+	public String getTagName() {
+		return getTagEntity().getId();
+	}
+
+	public String getUri() {
+		return ((TaglibMetadataContext)getMetaDataContext()).getUri();
+	}
+	
+	public String getValueType() {
+		return getTraitValueAsString(MetaDataEnabledProcessingFactory.ATTRIBUTE_VALUE_RUNTIME_TYPE_PROP_NAME);
+	}
+
+	public String getAttributeName() {
+		return ((TaglibMetadataContext)getMetaDataContext()).getAttributeName();
+	}
+
+	public Object getAdapter(Class adapter) {
+		if (IPropertyDescriptor.class == adapter) {
+			return new PropertyDescriptorAdapter(this);
+		}
+		else if (IPossibleValues.class == adapter) {
+			List pvs = MetaDataEnabledProcessingFactory.getInstance().getAttributeValueRuntimeTypeFeatureProcessors(
+						IPossibleValues.class, 
+						getStructuredDocumentContext(), 
+						getAttributeEntity());
+			if (!pvs.isEmpty())
+				return pvs.get(0);
+		}
+		else if (IDefaultValue.class == adapter) {
+			List dvs = MetaDataEnabledProcessingFactory.getInstance().getAttributeValueRuntimeTypeFeatureProcessors(
+						IDefaultValue.class, 
+						getStructuredDocumentContext(), 
+						getAttributeEntity());
+			if (!dvs.isEmpty())
+				return dvs.get(0);
+		}
+		else if (ICellEditorValidator.class == adapter) {
+			IValidValues vvs = (IValidValues)getAdapter(IValidValues.class);
+			if (vvs != null)
+				return new EditorValidatorAdapter(vvs);			
+		
+		}
+		else if (IInputValidator.class == adapter) {
+				IValidValues vvs = (IValidValues)getAdapter(IValidValues.class);
+				if (vvs != null)	
+					return new EditorValidatorAdapter(vvs);				
+		}
+		else if (IValidValues.class == adapter) {
+			List vvs = MetaDataEnabledProcessingFactory.getInstance().getAttributeValueRuntimeTypeFeatureProcessors(
+						IValidValues.class, 
+						getStructuredDocumentContext(), 
+						getAttributeEntity());
+			if (!vvs.isEmpty())
+				return vvs.get(0);
+		}
+		return null;
+	}
+	
+	private Entity getTagEntity() {
+		return (Entity)getAttributeEntity().eContainer();
+	}
+	
+	private Entity getAttributeEntity() {
+		return getMetaDataContext().getEntity();
+	}
+	
+	public String toString() {
+		return getUri()+"/"+getTagName()+"/"+getAttributeName();
+	}
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/internal/PropertyDescriptorAdapter.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/internal/PropertyDescriptorAdapter.java
new file mode 100644
index 0000000..a946b29
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/internal/PropertyDescriptorAdapter.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.editors.properties.internal;
+
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.views.properties.IPropertyDescriptor;
+
+/**
+ * Adapts the MetadataEnabledFeature <code>org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor</code>, to a <code>org.eclipse.ui.views.properties.IPropertyDescriptor</code> 
+ *
+ */
+public class PropertyDescriptorAdapter implements IPropertyDescriptor{
+
+	private IPropertyPageDescriptor _ppd;
+
+	/**
+	 * Constructor
+	 * @param propertyPageDescriptor
+	 */
+	public PropertyDescriptorAdapter(IPropertyPageDescriptor propertyPageDescriptor) {
+		_ppd = propertyPageDescriptor;
+	}
+
+	public CellEditor createPropertyEditor(Composite parent) {
+		return _ppd.getCellEditor(parent);
+	}
+
+	public String getCategory() {
+		return _ppd.getCategory();
+	}
+
+	public String getDescription() {
+		return _ppd.getDescription();
+	}
+
+	public String getDisplayName() {
+		return _ppd.getAttributeName();
+	}
+
+	public String[] getFilterFlags() {
+		return null;
+	}
+
+	public Object getHelpContextIds() {
+		return null;//FIXME
+	}
+
+	public Object getId() {
+		return _ppd.getAttributeName();
+	}
+
+	public ILabelProvider getLabelProvider() {	
+		return null;//FIXME: do better?  Used to supply labels for attribute property sheet (not quick edit)
+	}
+
+	public boolean isCompatibleWith(IPropertyDescriptor anotherProperty) {
+		return false;
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/QuickEditTabSections.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/QuickEditTabSections.java
new file mode 100644
index 0000000..f0cfad4
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/QuickEditTabSections.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2007 Oracle Corporation
+ *
+ * $Id: QuickEditTabSections.java,v 1.1 2007/12/07 23:43:40 gkessler Exp $
+ */
+package org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Quick Edit Tab Sections</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSections#getSections <em>Sections</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSectionsPackage#getQuickEditTabSections()
+ * @model
+ * @generated
+ */
+public interface QuickEditTabSections extends EObject {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String copyright = "Copyright (c) 2007 Oracle Corporation";
+	
+	/**
+	 * trait id to use
+	 * @generated NOT
+	 */
+	String TRAIT_ID = "quick-edit-tab";
+	
+	/**
+	 * Returns the value of the '<em><b>Sections</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SectionInfo}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Sections</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Sections</em>' containment reference list.
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSectionsPackage#getQuickEditTabSections_Sections()
+	 * @model containment="true"
+	 *        extendedMetaData="kind='element' name='section'"
+	 * @generated
+	 */
+	EList<SectionInfo> getSections();
+
+} // QuickEditTabSections
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/QuickEditTabSectionsFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/QuickEditTabSectionsFactory.java
new file mode 100644
index 0000000..3484b03
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/QuickEditTabSectionsFactory.java
@@ -0,0 +1,61 @@
+/**
+ * Copyright (c) 2007 Oracle Corporation
+ *
+ * $Id: QuickEditTabSectionsFactory.java,v 1.1 2007/12/07 23:43:40 gkessler Exp $
+ */
+package org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSectionsPackage
+ * @generated
+ */
+public interface QuickEditTabSectionsFactory extends EFactory {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String copyright = "Copyright (c) 2007 Oracle Corporation";
+
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	QuickEditTabSectionsFactory eINSTANCE = org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl.QuickEditTabSectionsFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Quick Edit Tab Sections</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Quick Edit Tab Sections</em>'.
+	 * @generated
+	 */
+	QuickEditTabSections createQuickEditTabSections();
+
+	/**
+	 * Returns a new object of class '<em>Section Info</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Section Info</em>'.
+	 * @generated
+	 */
+	SectionInfo createSectionInfo();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	QuickEditTabSectionsPackage getQuickEditTabSectionsPackage();
+
+} //QuickEditTabSectionsFactory
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/QuickEditTabSectionsPackage.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/QuickEditTabSectionsPackage.java
new file mode 100644
index 0000000..b153bd4
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/QuickEditTabSectionsPackage.java
@@ -0,0 +1,286 @@
+/**
+ * Copyright (c) 2007 Oracle Corporation
+ *
+ * $Id: QuickEditTabSectionsPackage.java,v 1.1 2007/12/07 23:43:40 gkessler Exp $
+ */
+package org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSectionsFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface QuickEditTabSectionsPackage extends EPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String copyright = "Copyright (c) 2007 Oracle Corporation";
+
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "quickedittabsections";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://org.eclipse.jsf.pagedesigner/QuickEditTabSections.ecore";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "qe";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	QuickEditTabSectionsPackage eINSTANCE = org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl.QuickEditTabSectionsPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl.QuickEditTabSectionsImpl <em>Quick Edit Tab Sections</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl.QuickEditTabSectionsImpl
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl.QuickEditTabSectionsPackageImpl#getQuickEditTabSections()
+	 * @generated
+	 */
+	int QUICK_EDIT_TAB_SECTIONS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Sections</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int QUICK_EDIT_TAB_SECTIONS__SECTIONS = 0;
+
+	/**
+	 * The number of structural features of the '<em>Quick Edit Tab Sections</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int QUICK_EDIT_TAB_SECTIONS_FEATURE_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl.SectionInfoImpl <em>Section Info</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl.SectionInfoImpl
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl.QuickEditTabSectionsPackageImpl#getSectionInfo()
+	 * @generated
+	 */
+	int SECTION_INFO = 1;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SECTION_INFO__ID = 0;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SECTION_INFO__TYPE = 1;
+
+	/**
+	 * The number of structural features of the '<em>Section Info</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SECTION_INFO_FEATURE_COUNT = 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SECTION_TYPE <em>SECTION TYPE</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SECTION_TYPE
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl.QuickEditTabSectionsPackageImpl#getSECTION_TYPE()
+	 * @generated
+	 */
+	int SECTION_TYPE = 2;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSections <em>Quick Edit Tab Sections</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Quick Edit Tab Sections</em>'.
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSections
+	 * @generated
+	 */
+	EClass getQuickEditTabSections();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSections#getSections <em>Sections</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Sections</em>'.
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSections#getSections()
+	 * @see #getQuickEditTabSections()
+	 * @generated
+	 */
+	EReference getQuickEditTabSections_Sections();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SectionInfo <em>Section Info</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Section Info</em>'.
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SectionInfo
+	 * @generated
+	 */
+	EClass getSectionInfo();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SectionInfo#getId <em>Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Id</em>'.
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SectionInfo#getId()
+	 * @see #getSectionInfo()
+	 * @generated
+	 */
+	EAttribute getSectionInfo_Id();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SectionInfo#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Type</em>'.
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SectionInfo#getType()
+	 * @see #getSectionInfo()
+	 * @generated
+	 */
+	EAttribute getSectionInfo_Type();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SECTION_TYPE <em>SECTION TYPE</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>SECTION TYPE</em>'.
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SECTION_TYPE
+	 * @generated
+	 */
+	EEnum getSECTION_TYPE();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	QuickEditTabSectionsFactory getQuickEditTabSectionsFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl.QuickEditTabSectionsImpl <em>Quick Edit Tab Sections</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl.QuickEditTabSectionsImpl
+		 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl.QuickEditTabSectionsPackageImpl#getQuickEditTabSections()
+		 * @generated
+		 */
+		EClass QUICK_EDIT_TAB_SECTIONS = eINSTANCE.getQuickEditTabSections();
+
+		/**
+		 * The meta object literal for the '<em><b>Sections</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference QUICK_EDIT_TAB_SECTIONS__SECTIONS = eINSTANCE.getQuickEditTabSections_Sections();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl.SectionInfoImpl <em>Section Info</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl.SectionInfoImpl
+		 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl.QuickEditTabSectionsPackageImpl#getSectionInfo()
+		 * @generated
+		 */
+		EClass SECTION_INFO = eINSTANCE.getSectionInfo();
+
+		/**
+		 * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SECTION_INFO__ID = eINSTANCE.getSectionInfo_Id();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SECTION_INFO__TYPE = eINSTANCE.getSectionInfo_Type();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SECTION_TYPE <em>SECTION TYPE</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SECTION_TYPE
+		 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl.QuickEditTabSectionsPackageImpl#getSECTION_TYPE()
+		 * @generated
+		 */
+		EEnum SECTION_TYPE = eINSTANCE.getSECTION_TYPE();
+
+	}
+
+} //QuickEditTabSectionsPackage
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/SECTION_TYPE.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/SECTION_TYPE.java
new file mode 100644
index 0000000..396e578
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/SECTION_TYPE.java
@@ -0,0 +1,218 @@
+/**
+ * Copyright (c) 2007 Oracle Corporation
+ *
+ * $Id: SECTION_TYPE.java,v 1.1 2007/12/07 23:43:40 gkessler Exp $
+ */
+package org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>SECTION TYPE</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSectionsPackage#getSECTION_TYPE()
+ * @model
+ * @generated
+ */
+public enum SECTION_TYPE implements Enumerator {
+	/**
+	 * The '<em><b>ATTRIBUTE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ATTRIBUTE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ATTRIBUTE(0, "ATTRIBUTE", "ATTRIBUTE"),
+
+	/**
+	 * The '<em><b>SECTION</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SECTION_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SECTION(1, "SECTION", "SECTION");
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright (c) 2007 Oracle Corporation";
+
+	/**
+	 * The '<em><b>ATTRIBUTE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>ATTRIBUTE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #ATTRIBUTE
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ATTRIBUTE_VALUE = 0;
+
+	/**
+	 * The '<em><b>SECTION</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>SECTION</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SECTION
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SECTION_VALUE = 1;
+
+	/**
+	 * An array of all the '<em><b>SECTION TYPE</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final SECTION_TYPE[] VALUES_ARRAY =
+		new SECTION_TYPE[] {
+			ATTRIBUTE,
+			SECTION,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>SECTION TYPE</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<SECTION_TYPE> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>SECTION TYPE</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static SECTION_TYPE get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SECTION_TYPE result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>SECTION TYPE</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static SECTION_TYPE getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SECTION_TYPE result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>SECTION TYPE</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static SECTION_TYPE get(int value) {
+		switch (value) {
+			case ATTRIBUTE_VALUE: return ATTRIBUTE;
+			case SECTION_VALUE: return SECTION;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private SECTION_TYPE(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //SECTION_TYPE
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/SectionInfo.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/SectionInfo.java
new file mode 100644
index 0000000..fcb9161
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/SectionInfo.java
@@ -0,0 +1,91 @@
+/**
+ * Copyright (c) 2007 Oracle Corporation
+ *
+ * $Id: SectionInfo.java,v 1.1 2007/12/07 23:43:40 gkessler Exp $
+ */
+package org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Section Info</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SectionInfo#getId <em>Id</em>}</li>
+ *   <li>{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SectionInfo#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSectionsPackage#getSectionInfo()
+ * @model
+ * @generated
+ */
+public interface SectionInfo extends EObject {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String copyright = "Copyright (c) 2007 Oracle Corporation";
+
+	/**
+	 * Returns the value of the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Id</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Id</em>' attribute.
+	 * @see #setId(String)
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSectionsPackage#getSectionInfo_Id()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getId();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SectionInfo#getId <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Id</em>' attribute.
+	 * @see #getId()
+	 * @generated
+	 */
+	void setId(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' attribute.
+	 * The default value is <code>"ATTRIBUTE"</code>.
+	 * The literals are from the enumeration {@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SECTION_TYPE}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type</em>' attribute.
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SECTION_TYPE
+	 * @see #setType(SECTION_TYPE)
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSectionsPackage#getSectionInfo_Type()
+	 * @model default="ATTRIBUTE" unique="false"
+	 * @generated
+	 */
+	SECTION_TYPE getType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SectionInfo#getType <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type</em>' attribute.
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SECTION_TYPE
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(SECTION_TYPE value);
+
+} // SectionInfo
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/internal/impl/QuickEditTabSectionsFactoryImpl.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/internal/impl/QuickEditTabSectionsFactoryImpl.java
new file mode 100644
index 0000000..c70c7c6
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/internal/impl/QuickEditTabSectionsFactoryImpl.java
@@ -0,0 +1,168 @@
+/**
+ * Copyright (c) 2007 Oracle Corporation
+ *
+ * $Id: QuickEditTabSectionsFactoryImpl.java,v 1.1 2007/12/07 23:43:47 gkessler Exp $
+ */
+package org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSections;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSectionsFactory;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSectionsPackage;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SECTION_TYPE;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SectionInfo;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class QuickEditTabSectionsFactoryImpl extends EFactoryImpl implements QuickEditTabSectionsFactory {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright (c) 2007 Oracle Corporation";
+
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static QuickEditTabSectionsFactory init() {
+		try {
+			QuickEditTabSectionsFactory theQuickEditTabSectionsFactory = (QuickEditTabSectionsFactory)EPackage.Registry.INSTANCE.getEFactory("http://org.eclipse.jsf.pagedesigner/QuickEditTabSections.ecore"); 
+			if (theQuickEditTabSectionsFactory != null) {
+				return theQuickEditTabSectionsFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new QuickEditTabSectionsFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public QuickEditTabSectionsFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case QuickEditTabSectionsPackage.QUICK_EDIT_TAB_SECTIONS: return createQuickEditTabSections();
+			case QuickEditTabSectionsPackage.SECTION_INFO: return createSectionInfo();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case QuickEditTabSectionsPackage.SECTION_TYPE:
+				return createSECTION_TYPEFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case QuickEditTabSectionsPackage.SECTION_TYPE:
+				return convertSECTION_TYPEToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public QuickEditTabSections createQuickEditTabSections() {
+		QuickEditTabSectionsImpl quickEditTabSections = new QuickEditTabSectionsImpl();
+		return quickEditTabSections;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SectionInfo createSectionInfo() {
+		SectionInfoImpl sectionInfo = new SectionInfoImpl();
+		return sectionInfo;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SECTION_TYPE createSECTION_TYPEFromString(EDataType eDataType, String initialValue) {
+		SECTION_TYPE result = SECTION_TYPE.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertSECTION_TYPEToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public QuickEditTabSectionsPackage getQuickEditTabSectionsPackage() {
+		return (QuickEditTabSectionsPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static QuickEditTabSectionsPackage getPackage() {
+		return QuickEditTabSectionsPackage.eINSTANCE;
+	}
+
+} //QuickEditTabSectionsFactoryImpl
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/internal/impl/QuickEditTabSectionsImpl.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/internal/impl/QuickEditTabSectionsImpl.java
new file mode 100644
index 0000000..b433d65
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/internal/impl/QuickEditTabSectionsImpl.java
@@ -0,0 +1,157 @@
+/**
+ * Copyright (c) 2007 Oracle Corporation
+ *
+ * $Id: QuickEditTabSectionsImpl.java,v 1.1 2007/12/07 23:43:47 gkessler Exp $
+ */
+package org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSections;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSectionsPackage;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SectionInfo;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Quick Edit Tab Sections</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl.QuickEditTabSectionsImpl#getSections <em>Sections</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class QuickEditTabSectionsImpl extends EObjectImpl implements QuickEditTabSections {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright (c) 2007 Oracle Corporation";
+
+	/**
+	 * The cached value of the '{@link #getSections() <em>Sections</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSections()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<SectionInfo> sections;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected QuickEditTabSectionsImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return QuickEditTabSectionsPackage.Literals.QUICK_EDIT_TAB_SECTIONS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<SectionInfo> getSections() {
+		if (sections == null) {
+			sections = new EObjectContainmentEList<SectionInfo>(SectionInfo.class, this, QuickEditTabSectionsPackage.QUICK_EDIT_TAB_SECTIONS__SECTIONS);
+		}
+		return sections;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case QuickEditTabSectionsPackage.QUICK_EDIT_TAB_SECTIONS__SECTIONS:
+				return ((InternalEList<?>)getSections()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case QuickEditTabSectionsPackage.QUICK_EDIT_TAB_SECTIONS__SECTIONS:
+				return getSections();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case QuickEditTabSectionsPackage.QUICK_EDIT_TAB_SECTIONS__SECTIONS:
+				getSections().clear();
+				getSections().addAll((Collection<? extends SectionInfo>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case QuickEditTabSectionsPackage.QUICK_EDIT_TAB_SECTIONS__SECTIONS:
+				getSections().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case QuickEditTabSectionsPackage.QUICK_EDIT_TAB_SECTIONS__SECTIONS:
+				return sections != null && !sections.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //QuickEditTabSectionsImpl
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/internal/impl/QuickEditTabSectionsPackageImpl.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/internal/impl/QuickEditTabSectionsPackageImpl.java
new file mode 100644
index 0000000..6605341
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/internal/impl/QuickEditTabSectionsPackageImpl.java
@@ -0,0 +1,282 @@
+/**
+ * Copyright (c) 2007 Oracle Corporation
+ *
+ * $Id: QuickEditTabSectionsPackageImpl.java,v 1.1 2007/12/07 23:43:47 gkessler Exp $
+ */
+package org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSections;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSectionsFactory;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSectionsPackage;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SectionInfo;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class QuickEditTabSectionsPackageImpl extends EPackageImpl implements QuickEditTabSectionsPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright (c) 2007 Oracle Corporation";
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass quickEditTabSectionsEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass sectionInfoEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum sectioN_TYPEEEnum = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSectionsPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private QuickEditTabSectionsPackageImpl() {
+		super(eNS_URI, QuickEditTabSectionsFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this
+	 * model, and for any others upon which it depends.  Simple
+	 * dependencies are satisfied by calling this method on all
+	 * dependent packages before doing anything else.  This method drives
+	 * initialization for interdependent packages directly, in parallel
+	 * with this package, itself.
+	 * <p>Of this package and its interdependencies, all packages which
+	 * have not yet been registered by their URI values are first created
+	 * and registered.  The packages are then initialized in two steps:
+	 * meta-model objects for all of the packages are created before any
+	 * are initialized, since one package's meta-model objects may refer to
+	 * those of another.
+	 * <p>Invocation of this method will not affect any packages that have
+	 * already been initialized.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static QuickEditTabSectionsPackage init() {
+		if (isInited) return (QuickEditTabSectionsPackage)EPackage.Registry.INSTANCE.getEPackage(QuickEditTabSectionsPackage.eNS_URI);
+
+		// Obtain or create and register package
+		QuickEditTabSectionsPackageImpl theQuickEditTabSectionsPackage = (QuickEditTabSectionsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof QuickEditTabSectionsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new QuickEditTabSectionsPackageImpl());
+
+		isInited = true;
+
+		// Create package meta-data objects
+		theQuickEditTabSectionsPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theQuickEditTabSectionsPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theQuickEditTabSectionsPackage.freeze();
+
+		return theQuickEditTabSectionsPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getQuickEditTabSections() {
+		return quickEditTabSectionsEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getQuickEditTabSections_Sections() {
+		return (EReference)quickEditTabSectionsEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getSectionInfo() {
+		return sectionInfoEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getSectionInfo_Id() {
+		return (EAttribute)sectionInfoEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getSectionInfo_Type() {
+		return (EAttribute)sectionInfoEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getSECTION_TYPE() {
+		return sectioN_TYPEEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public QuickEditTabSectionsFactory getQuickEditTabSectionsFactory() {
+		return (QuickEditTabSectionsFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		quickEditTabSectionsEClass = createEClass(QUICK_EDIT_TAB_SECTIONS);
+		createEReference(quickEditTabSectionsEClass, QUICK_EDIT_TAB_SECTIONS__SECTIONS);
+
+		sectionInfoEClass = createEClass(SECTION_INFO);
+		createEAttribute(sectionInfoEClass, SECTION_INFO__ID);
+		createEAttribute(sectionInfoEClass, SECTION_INFO__TYPE);
+
+		// Create enums
+		sectioN_TYPEEEnum = createEEnum(SECTION_TYPE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+
+		// Initialize classes and features; add operations and parameters
+		initEClass(quickEditTabSectionsEClass, QuickEditTabSections.class, "QuickEditTabSections", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getQuickEditTabSections_Sections(), this.getSectionInfo(), null, "sections", null, 0, -1, QuickEditTabSections.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(sectionInfoEClass, SectionInfo.class, "SectionInfo", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getSectionInfo_Id(), ecorePackage.getEString(), "id", null, 1, 1, SectionInfo.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getSectionInfo_Type(), this.getSECTION_TYPE(), "type", "ATTRIBUTE", 0, 1, SectionInfo.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(sectioN_TYPEEEnum, org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SECTION_TYPE.class, "SECTION_TYPE");
+		addEEnumLiteral(sectioN_TYPEEEnum, org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SECTION_TYPE.ATTRIBUTE);
+		addEEnumLiteral(sectioN_TYPEEEnum, org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SECTION_TYPE.SECTION);
+
+		// Create resource
+		createResource(eNS_URI);
+
+		// Create annotations
+		// http:///org/eclipse/emf/ecore/util/ExtendedMetaData
+		createExtendedMetaDataAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createExtendedMetaDataAnnotations() {
+		String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";		
+		addAnnotation
+		  (getQuickEditTabSections_Sections(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "section"
+		   });
+	}
+
+} //QuickEditTabSectionsPackageImpl
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/internal/impl/SectionInfoImpl.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/internal/impl/SectionInfoImpl.java
new file mode 100644
index 0000000..b3c7298
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/internal/impl/SectionInfoImpl.java
@@ -0,0 +1,225 @@
+/**
+ * Copyright (c) 2007 Oracle Corporation
+ *
+ * $Id: SectionInfoImpl.java,v 1.1 2007/12/07 23:43:47 gkessler Exp $
+ */
+package org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSectionsPackage;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SECTION_TYPE;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SectionInfo;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Section Info</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl.SectionInfoImpl#getId <em>Id</em>}</li>
+ *   <li>{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.impl.SectionInfoImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SectionInfoImpl extends EObjectImpl implements SectionInfo {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright (c) 2007 Oracle Corporation";
+
+	/**
+	 * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getId()
+	 * @generated
+	 * @ordered
+	 */
+	protected String id = ID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final SECTION_TYPE TYPE_EDEFAULT = SECTION_TYPE.ATTRIBUTE;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected SECTION_TYPE type = TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SectionInfoImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return QuickEditTabSectionsPackage.Literals.SECTION_INFO;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getId() {
+		return id;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setId(String newId) {
+		String oldId = id;
+		id = newId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, QuickEditTabSectionsPackage.SECTION_INFO__ID, oldId, id));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SECTION_TYPE getType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setType(SECTION_TYPE newType) {
+		SECTION_TYPE oldType = type;
+		type = newType == null ? TYPE_EDEFAULT : newType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, QuickEditTabSectionsPackage.SECTION_INFO__TYPE, oldType, type));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case QuickEditTabSectionsPackage.SECTION_INFO__ID:
+				return getId();
+			case QuickEditTabSectionsPackage.SECTION_INFO__TYPE:
+				return getType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case QuickEditTabSectionsPackage.SECTION_INFO__ID:
+				setId((String)newValue);
+				return;
+			case QuickEditTabSectionsPackage.SECTION_INFO__TYPE:
+				setType((SECTION_TYPE)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case QuickEditTabSectionsPackage.SECTION_INFO__ID:
+				setId(ID_EDEFAULT);
+				return;
+			case QuickEditTabSectionsPackage.SECTION_INFO__TYPE:
+				setType(TYPE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case QuickEditTabSectionsPackage.SECTION_INFO__ID:
+				return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
+			case QuickEditTabSectionsPackage.SECTION_INFO__TYPE:
+				return type != TYPE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (id: ");
+		result.append(id);
+		result.append(", type: ");
+		result.append(type);
+		result.append(')');
+		return result.toString();
+	}
+
+} //SectionInfoImpl
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/internal/util/QuickEditTabSectionsAdapterFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/internal/util/QuickEditTabSectionsAdapterFactory.java
new file mode 100644
index 0000000..59994fd
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/internal/util/QuickEditTabSectionsAdapterFactory.java
@@ -0,0 +1,148 @@
+/**
+ * Copyright (c) 2007 Oracle Corporation
+ *
+ * $Id: QuickEditTabSectionsAdapterFactory.java,v 1.1 2007/12/07 23:43:50 gkessler Exp $
+ */
+package org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSectionsPackage
+ * @generated
+ */
+public class QuickEditTabSectionsAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright (c) 2007 Oracle Corporation";
+
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static QuickEditTabSectionsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public QuickEditTabSectionsAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = QuickEditTabSectionsPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch the delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected QuickEditTabSectionsSwitch<Adapter> modelSwitch =
+		new QuickEditTabSectionsSwitch<Adapter>() {
+			@Override
+			public Adapter caseQuickEditTabSections(QuickEditTabSections object) {
+				return createQuickEditTabSectionsAdapter();
+			}
+			@Override
+			public Adapter caseSectionInfo(SectionInfo object) {
+				return createSectionInfoAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSections <em>Quick Edit Tab Sections</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSections
+	 * @generated
+	 */
+	public Adapter createQuickEditTabSectionsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SectionInfo <em>Section Info</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SectionInfo
+	 * @generated
+	 */
+	public Adapter createSectionInfoAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //QuickEditTabSectionsAdapterFactory
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/internal/util/QuickEditTabSectionsSwitch.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/internal/util/QuickEditTabSectionsSwitch.java
new file mode 100644
index 0000000..615e346
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/properties/quickedittabsections/internal/util/QuickEditTabSectionsSwitch.java
@@ -0,0 +1,157 @@
+/**
+ * Copyright (c) 2007 Oracle Corporation
+ *
+ * $Id: QuickEditTabSectionsSwitch.java,v 1.1 2007/12/07 23:43:50 gkessler Exp $
+ */
+package org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.internal.util;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSectionsPackage
+ * @generated
+ */
+public class QuickEditTabSectionsSwitch<T> {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright (c) 2007 Oracle Corporation";
+
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static QuickEditTabSectionsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public QuickEditTabSectionsSwitch() {
+		if (modelPackage == null) {
+			modelPackage = QuickEditTabSectionsPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	public T doSwitch(EObject theEObject) {
+		return doSwitch(theEObject.eClass(), theEObject);
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	protected T doSwitch(EClass theEClass, EObject theEObject) {
+		if (theEClass.eContainer() == modelPackage) {
+			return doSwitch(theEClass.getClassifierID(), theEObject);
+		}
+		else {
+			List<EClass> eSuperTypes = theEClass.getESuperTypes();
+			return
+				eSuperTypes.isEmpty() ?
+					defaultCase(theEObject) :
+					doSwitch(eSuperTypes.get(0), theEObject);
+		}
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case QuickEditTabSectionsPackage.QUICK_EDIT_TAB_SECTIONS: {
+				QuickEditTabSections quickEditTabSections = (QuickEditTabSections)theEObject;
+				T result = caseQuickEditTabSections(quickEditTabSections);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case QuickEditTabSectionsPackage.SECTION_INFO: {
+				SectionInfo sectionInfo = (SectionInfo)theEObject;
+				T result = caseSectionInfo(sectionInfo);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Quick Edit Tab Sections</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Quick Edit Tab Sections</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseQuickEditTabSections(QuickEditTabSections object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Section Info</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Section Info</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSectionInfo(SectionInfo object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //QuickEditTabSectionsSwitch
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/figurehandler/FigureFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/figurehandler/FigureFactory.java
index 0b68f67..eb38068 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/figurehandler/FigureFactory.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/figurehandler/FigureFactory.java
@@ -194,10 +194,12 @@
 	private static Image getSharedHTMLImage(String tag) {
 		Image image = PDPlugin.getDefault().getImage(
 				"palette/HTML/small/HTML_" + tag.toUpperCase() + ".gif");
-		ImageData imageData = image.getImageData();
-		if (imageData.width < 16 || imageData.height < 16) {
-			return PDPlugin.getDefault().getImage(
-					"palette/GENERIC/small/PD_Palette_Default.gif");
+		if (image != null){
+			ImageData imageData = image.getImageData();
+			if (imageData.width < 16 || imageData.height < 16) {
+				return PDPlugin.getDefault().getImage(
+						"palette/GENERIC/small/PD_Palette_Default.gif");
+			}
 		}
 		return image;
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/internal/metadata/SybaseCMConfigMetaDataLocator.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/internal/metadata/SybaseCMConfigMetaDataLocator.java
new file mode 100644
index 0000000..6c259f5
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/internal/metadata/SybaseCMConfigMetaDataLocator.java
@@ -0,0 +1,169 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.internal.metadata;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.parsers.FactoryConfigurationError;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jst.jsf.common.metadata.internal.AbstractMetaDataLocator;
+import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataLocator;
+import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataSourceModelProvider;
+import org.eclipse.jst.pagedesigner.IJMTConstants;
+import org.eclipse.jst.pagedesigner.PDPlugin;
+import org.eclipse.jst.pagedesigner.meta.ICMRegistry;
+import org.eclipse.jst.pagedesigner.meta.internal.SimpleCMRegistry;
+import org.osgi.framework.Bundle;
+import org.xml.sax.SAXException;
+
+/**
+ * Locates Sybase CM config metadata files. 
+ * 
+ * Supplied to ease migration to JSF Common meta data by allowing current MD into JSF common md format.
+ * 
+ * @deprecated this will be disappearing along with all of the Sybase meta data 
+ * and supporting classes before Ganymede release
+ *
+ */
+public class SybaseCMConfigMetaDataLocator extends AbstractMetaDataLocator {
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.jsf.common.metadata.internal.IMetaDataLocator#locateMetaDataModelProviders(java.lang.String)
+	 */
+	public List locateMetaDataModelProviders(String uri) {
+//		if (1==1)
+//			return null; //temp... turn off translation!
+		
+		List <ICMRegistry> registries = findCMRegistries(uri);
+		if (! registries.isEmpty()) {
+			List <IMetaDataSourceModelProvider> providers = new ArrayList<IMetaDataSourceModelProvider>(registries.size());
+			for (ICMRegistry reg : registries) {
+				if (reg.getSupportedURI().equals(uri)) {
+					providers.add(createMetaDataSourceProvider(reg));
+				}
+			}
+			return providers;
+		}
+		return null;
+	}
+
+	private List<ICMRegistry> findCMRegistries(String uri) {
+		List<ICMRegistry> contributedRegistries = new ArrayList<ICMRegistry>();
+		IExtensionPoint extensionPoint = Platform.getExtensionRegistry()
+				.getExtensionPoint(PDPlugin.getPluginId(),
+						IJMTConstants.EXTENSION_POINT_CMREGISTRY);
+		IConfigurationElement[] eles = extensionPoint
+				.getConfigurationElements();
+
+		for (int i = 0; i < eles.length; i++) {
+			if (eles[i].getName().equals("registry")) {
+				String cmUri = eles[i].getAttribute("uri");
+				if (cmUri != null && cmUri.equals(uri)) {
+					String configFile = eles[i].getAttribute("configFile");
+					if (configFile != null && configFile.length() > 0) {
+						String bundleName = eles[i].getDeclaringExtension()
+								.getContributor().getName();
+						try {
+							Bundle bundle = Platform.getBundle(bundleName);
+							URL cmFileUrl = bundle.getEntry(configFile);
+							SimpleCMRegistry reg = new SimpleCMRegistry(uri,
+									cmFileUrl);
+							contributedRegistries.add(reg);
+						} catch (ParserConfigurationException e) {
+			                PDPlugin.getLogger(getClass()).error(new Throwable(e));
+			            } catch (FactoryConfigurationError e) {
+			                PDPlugin.getLogger(getClass()).error(new Throwable(e));                    
+			            } catch (SAXException e) {
+			                PDPlugin.getLogger(getClass()).error(new Throwable(e));
+			            } catch (IOException e) {
+			                PDPlugin.getLogger(getClass()).error(new Throwable(e));
+			            }
+					}
+					String className = eles[i].getAttribute("class");
+					if (className != null && className.length() > 0) {
+						try {
+							Object obj = eles[i].createExecutableExtension("class");
+							
+							if (obj instanceof ICMRegistry) {
+								contributedRegistries.add((ICMRegistry)obj);
+							}
+						} catch (CoreException e) {
+						    PDPlugin.getLogger(getClass()).error(new Throwable(e));
+						}
+					}
+				}
+			}
+		}
+		return contributedRegistries;
+	}
+	
+	private IMetaDataSourceModelProvider createMetaDataSourceProvider(ICMRegistry reg) {		
+		IMetaDataSourceModelProvider provider = new SybaseCMConfigMetadataProvider(reg);
+		provider.setLocator(this);
+		return provider;
+	}
+
+	/* 
+	 * Does nothing.
+	 */
+	public void startLocating() {
+		//do nothing
+	}
+
+	/* 
+	 * Does nothing.
+	 */
+	public void stopLocating() {
+		//do nothing
+	}
+
+	/**
+	 *
+	 */
+	public class SybaseCMConfigMetadataProvider implements IMetaDataSourceModelProvider {
+		private IMetaDataLocator _locator;
+		private ICMRegistry _reg;
+		/**
+		 * Construct from ICMRegsistry
+		 * @param reg
+		 */
+		public SybaseCMConfigMetadataProvider(ICMRegistry reg) {
+			_reg = reg;
+		}
+
+		public Object getSourceModel() {
+			return _reg;
+		}
+		
+		public IMetaDataLocator getLocator() {
+			return _locator;
+		}
+
+		public void setLocator(IMetaDataLocator locator) {
+			_locator = locator;
+		}
+		
+		public Object getAdapter(Class adapter) {
+			// TODO Auto-generated method stub
+			return null;
+		}
+	}	
+}
+
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/internal/metadata/SybaseCMConfigMetaDataTranslator.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/internal/metadata/SybaseCMConfigMetaDataTranslator.java
new file mode 100644
index 0000000..4ff0a8a
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/internal/metadata/SybaseCMConfigMetaDataTranslator.java
@@ -0,0 +1,376 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.internal.metadata;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.ecore.xml.type.SimpleAnyType;
+import org.eclipse.emf.ecore.xml.type.XMLTypeFactory;
+import org.eclipse.jst.jsf.common.metadata.Entity;
+import org.eclipse.jst.jsf.common.metadata.MetadataFactory;
+import org.eclipse.jst.jsf.common.metadata.Model;
+import org.eclipse.jst.jsf.common.metadata.Trait;
+import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataModelMergeAssistant;
+import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataSourceModelProvider;
+import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataTranslator;
+import org.eclipse.jst.jsf.common.metadata.traittypes.traittypes.ListOfValues;
+import org.eclipse.jst.jsf.common.metadata.traittypes.traittypes.TraitTypesFactory;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+import org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor;
+import org.eclipse.jst.pagedesigner.meta.IAttributeRuntimeValueType;
+import org.eclipse.jst.pagedesigner.meta.IElementDescriptor;
+import org.eclipse.jst.pagedesigner.meta.OLDIValueType;
+import org.eclipse.jst.pagedesigner.meta.internal.SimpleCMRegistry;
+
+/**
+ * Translates Sybase MD into JSF common MD and attribute value type system.
+ * 
+ * Supplied to ease migration to JSF Common meta data by allowing current MD into JSF common md format.
+ * 
+ * @deprecated this will be disappearing along with all of the Sybase meta data 
+ * and supporting classes before Ganymede release
+ *
+ */
+public class SybaseCMConfigMetaDataTranslator implements IMetaDataTranslator {
+	private static final String ATTR_VAL_RUNTIME_TYPE = "attribute-value-runtime-type";
+	private IMetaDataModelMergeAssistant _assistant;
+
+	public boolean canTranslate(IMetaDataSourceModelProvider modelProvider) {		
+		if (modelProvider.getSourceModel() != null && 
+				modelProvider.getSourceModel() instanceof SimpleCMRegistry)
+			return true;
+		return false;
+	}
+	
+	public void translate(IMetaDataModelMergeAssistant assistant) {
+		_assistant = assistant;
+		SimpleCMRegistry reg = (SimpleCMRegistry)assistant.getSourceModelProvider().getSourceModel();
+		traverseCMRegistryModel(reg);
+	}
+
+	private void traverseCMRegistryModel(SimpleCMRegistry reg){
+		for (Iterator it=reg.getMap().entrySet().iterator(); it.hasNext();){
+		    Map.Entry entry = (Map.Entry)it.next();			
+			IElementDescriptor tagElem = (IElementDescriptor)entry.getValue();
+			findOrCreateTag(tagElem);
+		}
+	}
+	
+	private void findOrCreateTag(IElementDescriptor tagElem) {
+		Entity tag =_assistant.getMergedEntity(getMergedModel(), tagElem.getTagName());
+		if (tag == null){
+			tag = internalCreateTagEntity(tagElem);
+			getMergedModel().getChildEntities().add(tag);
+		}
+		createTagTraits(tag, tagElem);
+		createAttributeEntities(tag, tagElem);
+	}
+
+	private void createAttributeEntities(Entity tag, IElementDescriptor tagElem) {
+		for (IAttributeDescriptor attrDesc : tagElem.getAttributeDescriptors()){
+			Entity attr =_assistant.getMergedEntity(tag, attrDesc.getAttributeName());
+			if (attr == null) {
+				attr = internalCreateAttributeEntity(attrDesc);
+				tag.getChildEntities().add(attr);
+			}
+			createAttributeTraits(attr, attrDesc);
+		}
+		if (tagElem.getReference() != null) {
+			//create attributes from referenced tag
+			createAttributeEntities(tag,tagElem.getReference());
+		}
+	}
+
+	private void createAttributeTraits(Entity attr,
+			IAttributeDescriptor attrDesc) {
+		
+		//convert ValueType to runtime-attrib-values
+		convertValueType(attr, attrDesc);
+
+		createTraitAndSimpleAnyTypeValue(attr, "display-label", attrDesc.getLabelString());
+		createTraitAndSimpleAnyTypeValue(attr, "description", attrDesc.getDescription());
+		createTraitAndSimpleAnyTypeValue(attr, "default-value", attrDesc.getDefaultValue());
+		createTraitAndSimpleAnyTypeValue(attr, IPropertyPageDescriptor.PROP_DESC_CATEGORY, attrDesc.getCategory());
+		createTraitAndSimpleAnyTypeValue(attr, "required", String.valueOf(attrDesc.isRequired()));
+		
+		
+		
+	}
+
+	private void createTraitAndSimpleAnyTypeValue(Entity attr, String traitKey,
+			String traitValue) {
+		
+		if (traitValue != null && traitValue.trim().length() > 0) {
+			Trait trait = createTrait(attr, traitKey);
+			setTraitValueUsingSimpleAnyType(trait, traitValue);	
+			attr.getTraits().add(trait);
+		}
+	}
+
+	private void convertValueType(Entity attr, IAttributeDescriptor attrDesc) {
+		if (hasTrait(attr, ATTR_VAL_RUNTIME_TYPE)){
+			return;
+		}
+		String rtType = null;
+		String valType = attrDesc.getValueType();
+		Trait trait = createTrait(attr, ATTR_VAL_RUNTIME_TYPE);
+		if (OLDIValueType.ENUMERATED.equals(valType)){
+			if ("lang".equalsIgnoreCase(attrDesc.getAttributeName()))
+				rtType = IAttributeRuntimeValueType.LANGUAGECODE;
+//			else if ()
+			else {
+				rtType = IAttributeRuntimeValueType.STRING;
+				createPossibleValuesAndValidValueTraits(attr, attrDesc);
+			}
+		}
+		else if (OLDIValueType.BOOLEAN.equals(valType)) {
+			rtType = IAttributeRuntimeValueType.BOOLEAN;
+		}
+		else if (OLDIValueType.CLASSNAME.equals(valType)) {
+			rtType = IAttributeRuntimeValueType.JAVACLASS;
+			//"superType=I:javax.faces.event.ActionListener" 
+			int colonIndex = attrDesc.getTypeParameter().lastIndexOf(":");
+			String superTypeValue= attrDesc.getTypeParameter().substring(colonIndex+1);
+			String superTypeType= attrDesc.getTypeParameter().substring(colonIndex-1,colonIndex);
+			if (superTypeType.equalsIgnoreCase("I"))
+				createTraitAndSimpleAnyTypeValue(attr, "valid-interfaces", superTypeValue);
+			else
+				createTraitAndSimpleAnyTypeValue(attr, "valid-superclass", superTypeValue);
+		}
+		else if (OLDIValueType.CLASSPATH_RESOURCE.equals(valType)) {
+			rtType = IAttributeRuntimeValueType.RESOURCEBUNDLE;
+		}
+		else if (OLDIValueType.COLOR.equals(valType)) {
+			rtType = IAttributeRuntimeValueType.COLOR;
+		}
+		else if (OLDIValueType.CSSCLASS.equals(valType)) {
+			rtType = IAttributeRuntimeValueType.CSSCLASS;
+		}
+		else if (OLDIValueType.CSSID.equals(valType)) {
+			rtType = IAttributeRuntimeValueType.CSSID;
+		}
+		else if (OLDIValueType.CSSSTYLE.equals(valType)) {
+			rtType = IAttributeRuntimeValueType.CSSSTYLE;
+		}
+		else if (OLDIValueType.CURRENCYCODE.equals(valType)) {
+			rtType = IAttributeRuntimeValueType.CURRENCYCODE;
+		}
+		else if (OLDIValueType.JAVASCRIPT.equals(valType)) {
+			rtType = IAttributeRuntimeValueType.SCRIPT;
+		}
+		else if (OLDIValueType.LINK.equals(valType)) {
+			rtType = IAttributeRuntimeValueType.LINK;
+		}
+		else if (OLDIValueType.LOCALE.equals(valType)) {
+			rtType = IAttributeRuntimeValueType.LOCALE;
+		}
+		else if (OLDIValueType.METHODBINDING.equals(valType)) {
+			rtType = IAttributeRuntimeValueType.METHODBINDING;
+			if (attr.getId().equals("validator"))			
+				createValidatorParams(attr);
+			else if (attr.getId().equals("actionListener")){
+				Trait t = createTrait(attr, "runtime-param-types");
+				t.setValue(createAndSetSimpleAnyTypeValue("javax.faces.event.ActionEvent"));
+				attr.getTraits().add(t);
+			}
+			else if (attr.getId().equals("valueChangeListener")){
+				Trait t = createTrait(attr, "runtime-param-types");
+				t.setValue(createAndSetSimpleAnyTypeValue("javax.faces.event.ValueChangeEvent"));
+				attr.getTraits().add(t);
+			}
+			Trait t2 = createTrait(attr, "runtime-return-type");
+			t2.setValue(createAndSetSimpleAnyTypeValue("void"));	
+			attr.getTraits().add(t2);
+		}
+		else if (OLDIValueType.MULTICHOICE.equals(valType)) {
+			rtType = IAttributeRuntimeValueType.STRING;
+		}
+		else if (OLDIValueType.NAMED_BOOLEAN.equals(valType)) {
+			rtType = IAttributeRuntimeValueType.BOOLEAN;
+		}
+		else if (OLDIValueType.PROPERTYBINDING.equals(valType)) {
+			rtType = IAttributeRuntimeValueType.VALUEBINDING;
+		}
+		else if (OLDIValueType.RELATIVEPATH.equals(valType)) {
+			rtType = IAttributeRuntimeValueType.RELATIVEPATH;
+		}
+		else if (OLDIValueType.TIMEZONE.equals(valType)) {
+			rtType = IAttributeRuntimeValueType.TIMEZONE;
+		}
+		else if (OLDIValueType.WEBPATH.equals(valType)) {
+			rtType = IAttributeRuntimeValueType.WEBPATH;
+//			createWebPathValidExtensionsTrait(attr, attrDesc);
+		}
+		else
+			rtType = IAttributeRuntimeValueType.STRING;
+		
+		setTraitValueUsingSimpleAnyType(trait, rtType.toString());		
+		setTypeParamsIfAny(attr, attrDesc);
+		attr.getTraits().add(trait);
+	}
+
+	private void setTypeParamsIfAny(Entity attr, IAttributeDescriptor attrDesc) {
+		//this method is relying on the fact that only one typeParam is being set.   this is all that was ever done by the Sybase config
+		if (attrDesc.getTypeParameter()!= null){
+			String typeParam = attrDesc.getTypeParameter(); 
+			if (typeParam.indexOf(IAttributeDescriptor.PARAMETER_SUFFIX) > -1){
+				int i = typeParam.indexOf(IAttributeDescriptor.PARAMETER_SUFFIX);
+				String suffixes = typeParam.substring(i+IAttributeDescriptor.PARAMETER_SUFFIX.length()+1);
+				Trait trait = createTrait(attr, "file-extensions");
+				StringTokenizer st = new StringTokenizer(suffixes, ";");
+				ListOfValues exts = TraitTypesFactory.eINSTANCE.createListOfValues();
+				while (st.hasMoreElements()){
+					String ext = st.nextToken();
+					exts.getEntries().add(createAndSetSimpleAnyTypeValue(ext));
+				}
+				trait.setValue(exts);
+				attr.getTraits().add(trait);
+			}
+			else if (typeParam.indexOf(IAttributeDescriptor.PARAMETER_DEFAULT) > -1){
+				int i = typeParam.indexOf(IAttributeDescriptor.PARAMETER_DEFAULT);
+				String defaultVal = typeParam.substring(i+IAttributeDescriptor.PARAMETER_DEFAULT.length()+1);
+				createTraitAndSimpleAnyTypeValue(attr, "default-value", defaultVal);
+			}
+			else if (typeParam.indexOf(IAttributeDescriptor.PARAMETER_SEPARATOR) > -1){
+				int i = typeParam.indexOf(IAttributeDescriptor.PARAMETER_SEPARATOR);
+				String sep = typeParam.substring(i+IAttributeDescriptor.PARAMETER_SEPARATOR.length()+1);
+				createTraitAndSimpleAnyTypeValue(attr, "multi-choice-seperator", sep);
+			}
+			else if (typeParam.indexOf(IAttributeDescriptor.PARAMETER_STYLE) > -1){
+				int i = typeParam.indexOf(IAttributeDescriptor.PARAMETER_STYLE);
+				String style = typeParam.substring(i+IAttributeDescriptor.PARAMETER_STYLE.length()+1);
+				createTraitAndSimpleAnyTypeValue(attr, "style", style);
+			}
+			else if (typeParam.indexOf(IAttributeDescriptor.PARAMETER_SUPER_TYPE) > -1){
+				//do nothing; handled by JavaClassType translation
+			}
+			else if (typeParam.length() > 0){
+				//what to do?  CSSClass seems to require 'empty' type param
+				System.out.println(typeParam);
+			}
+		}
+	}
+
+//	private void createWebPathValidExtensionsTrait(Entity attr, IAttributeDescriptor attrDesc) {
+//		List<String> exts = new ArrayList<String>();
+//		if (attrDesc.getTypeParameter().indexOf("=") > 0){
+//			String extS = attrDesc.getTypeParameter().substring(attrDesc.getTypeParameter().indexOf("=")+1);//remove "suffix="
+//			StringTokenizer st = new StringTokenizer(extS, ";");
+//			while (st.hasMoreElements()){
+//				exts.add((String)st.nextElement());
+//			}
+//			Trait trait = createTrait(attr, "file-extension-filters");
+//			ListOfValues list =  TraitTypesFactory.eINSTANCE.createListOfValues();
+//			for (String ext : exts){
+//				list.getEntries().add(createAndSetSimpleAnyTypeValue(ext));
+//			}
+//			trait.setValue(list);
+//			attr.getTraits().add(trait);
+//		}
+//	}
+
+	private void createValidatorParams(Entity attr) {
+		Trait t = createTrait(attr, "runtime-param-types");
+		ListOfValues list =  TraitTypesFactory.eINSTANCE.createListOfValues();
+		list.getEntries().add(createAndSetSimpleAnyTypeValue("javax.faces.context.FacesContext"));
+		list.getEntries().add(createAndSetSimpleAnyTypeValue("javax.faces.component.UIComponent"));
+		list.getEntries().add(createAndSetSimpleAnyTypeValue("java.lang.Object"));
+	
+		t.setValue(list);
+		attr.getTraits().add(t);
+	}
+	
+	private SimpleAnyType createAndSetSimpleAnyTypeValue(String rawVal){
+		SimpleAnyType item = XMLTypeFactory.eINSTANCE.createSimpleAnyType();
+		item.setRawValue(rawVal);
+		return item;
+	}
+
+	private void createPossibleValuesAndValidValueTraits(Entity attr,
+			IAttributeDescriptor attrDesc) {
+		if (attrDesc.getOptions() != null){
+			Trait validVals = MetadataFactory.eINSTANCE.createTrait();
+			validVals.setId("valid-values");
+			validVals.setSourceModelProvider(_assistant.getSourceModelProvider());
+			
+			Trait displayVals = MetadataFactory.eINSTANCE.createTrait();
+			displayVals.setId("displayed-values");
+			displayVals.setSourceModelProvider(_assistant.getSourceModelProvider());
+			
+			Map options = attrDesc.getOptions();
+			ListOfValues validVs = TraitTypesFactory.eINSTANCE.createListOfValues();
+			ListOfValues displayVs = TraitTypesFactory.eINSTANCE.createListOfValues();
+			for (Iterator it=options.entrySet().iterator();it.hasNext();){
+				Map.Entry entry = (Map.Entry)it.next();
+				validVs.getEntries().add(createAndSetSimpleAnyTypeValue((String)entry.getKey()));
+				displayVs.getEntries().add(createAndSetSimpleAnyTypeValue((String)entry.getValue()));
+			}
+			if (validVs.getEntries().size() > 0) {
+				validVals.setValue(validVs);
+				displayVals.setValue(displayVs);
+				attr.getTraits().add(validVals);
+				attr.getTraits().add(displayVals);
+			}
+		}		
+	}
+
+	private void setTraitValueUsingSimpleAnyType(Trait trait, String type) {
+		SimpleAnyType value = XMLTypeFactory.eINSTANCE.createSimpleAnyType();
+		value.setRawValue(type);
+		trait.setValue(value);
+	}
+	
+	private Trait createTrait(Entity entity, String id){
+		Trait trait = MetadataFactory.eINSTANCE.createTrait();
+		trait.setId(id);
+		trait.setSourceModelProvider(_assistant.getSourceModelProvider());
+		return trait;
+	}
+	
+	private boolean hasTrait(Entity attr, String traitKey) {
+		
+		return false;
+	}
+
+	private void createTagTraits(Entity tag, IElementDescriptor tagElem) {
+		if (tagElem.getHelpContextID() != null && !tagElem.getHelpContextID().equals("")){
+			//create help-topic-id trait...
+			//not bothering at the moment as we are not providing tooling at the moment
+		}
+	}
+
+	private Entity internalCreateTagEntity(IElementDescriptor tagElem) {
+		Entity tag = MetadataFactory.eINSTANCE.createEntity();
+		tag.setId(tagElem.getTagName());
+		return tag;
+	}
+	
+	private Entity internalCreateAttributeEntity(IAttributeDescriptor attrDesc) {
+		Entity attr = MetadataFactory.eINSTANCE.createEntity();
+		attr.setId(attrDesc.getAttributeName());
+		return attr;
+	}
+
+	private Model getMergedModel(){
+		if ((Model)_assistant.getMergedModel().getRoot() != null)
+			return (Model)_assistant.getMergedModel().getRoot();
+		
+		Model model = MetadataFactory.eINSTANCE.createModel();
+		model.setId(_assistant.getMergedModel().getModelKey().getUri());
+		model.setSourceModelProvider(_assistant.getSourceModelProvider());
+		_assistant.getMergedModel().setRoot(model);
+		return model;
+		
+	}
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/AttributeDescriptor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/AttributeDescriptor.java
index ecfa642..c05f6f1 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/AttributeDescriptor.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/AttributeDescriptor.java
@@ -19,6 +19,7 @@
 
 /**
  * @author mengbo
+ * @deprecated
  */
 public class AttributeDescriptor implements IAttributeDescriptor {
 	private String _attributeName;
@@ -226,4 +227,10 @@
 	public void setRequired(boolean required) {
 		this._required = required;
 	}
+	
+	public String toString(){
+		StringBuffer buf = new StringBuffer("AttributeDescriptor: ");
+		buf.append(this.getAttributeName());
+		return buf.toString();
+	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/BindingHandlerDelegate.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/BindingHandlerDelegate.java
index ec88bcf..9a75e8d 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/BindingHandlerDelegate.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/BindingHandlerDelegate.java
@@ -23,6 +23,7 @@
 /**
  * @author mengbo
  * @version 1.5
+ * @deprecated
  */
 public class BindingHandlerDelegate implements IBindingHandler {
 	/*
@@ -69,6 +70,14 @@
 				uri, tagName, attr);
 	}
 
+//	public boolean isEnabled(IDOMNode ancester, IDOMElement element,
+//			IPropertyPageDescriptor attr) {
+//		IBindingHandler handler = getDelegatedHandler(ancester, element);
+//		return (handler == null) ? false : handler.isEnabled(ancester, element,
+//				attr);
+//	}
+	
+	
 	/*
 	 * (non-Javadoc)
 	 * 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/DefaultEditorCreator.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/DefaultEditorCreator.java
new file mode 100644
index 0000000..b952354
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/DefaultEditorCreator.java
@@ -0,0 +1,252 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Sybase, Inc. and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Sybase, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.meta;
+
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+import org.eclipse.jst.pagedesigner.meta.internal.CellEditorFactoryRegistry;
+import org.eclipse.jst.pagedesigner.ui.dialogfields.DialogFieldWrapper;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
+
+/**
+ * @author mengbo
+ * @version 1.5
+ */
+public class DefaultEditorCreator extends EditorCreator {
+	static IPropertyPageDescriptor _staticAttr;
+
+	static IDOMElement _staticElement;
+
+	static IBindingHandler _staticHandler;
+
+	static CellEditorHolder _staticHolder;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jst.pagedesigner.meta.EditorCreator#createCellEditor(org.eclipse.swt.widgets.Composite,
+	 *      org.eclipse.jst.pagedesigner.meta.IPropertyPageDescriptor,
+	 *      org.w3c.dom.Element)
+	 */
+	public CellEditor createCellEditor(Composite parent,
+			IPropertyPageDescriptor attr, IDOMElement element) {
+		return CellEditorFactoryRegistry.getInstance().createCellEditor(parent,
+				attr, element);
+	}
+
+//	/*
+//	 * (non-Javadoc)
+//	 * 
+//	 * @see org.eclipse.jst.pagedesigner.meta.EditorCreator#createDialogField(org.eclipse.jst.pagedesigner.meta.IPropertyPageDescriptor)
+//	 */
+//	public DialogField createDialogField(IPropertyPageDescriptor attr) {
+//		return CellEditorFactoryRegistry.getInstance().createDialogField(attr);
+//	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jst.pagedesigner.meta.EditorCreator#createCellEditorWithWrapper(org.eclipse.swt.widgets.Composite,
+	 *      org.eclipse.jst.pagedesigner.meta.IPropertyPageDescriptor,
+	 *      org.w3c.dom.Element,
+	 *      org.eclipse.jst.pagedesigner.meta.IBindingHandler,
+	 *      org.eclipse.swt.graphics.Image)
+	 */
+	public CellEditor createCellEditorWithWrapper(Composite parent,
+			IPropertyPageDescriptor attr, final IDOMElement element,
+			IBindingHandler handler1) {
+//		final IBindingHandler handler = (handler1 == null ? getSystemDefaultBindingHandler()
+//				: handler1);
+//		String uri = CMUtil.getElementNamespaceURI(element);
+//		String tagName = element.getLocalName();
+		
+		return createCellEditor(parent, attr, element);
+//		
+//		if (!handler.isEnabled(element, element, uri, tagName, attr)) {
+//			// should not enabled, so directly return original cell editor
+//			return createCellEditor(parent, attr, element);
+//		}
+//		try {
+//			// since "createWrappedCellEditor()" and "getBindingImage()" is
+//			// called from the constructor of CellEditorWrapper, at that time,
+//			// can't reference this DefaultEditorCreator and final fields yet,
+//			// so use static variable for it.
+//			_staticAttr = attr;
+//			_staticElement = element;
+//			_staticHandler = handler;
+//
+//			return new CellEditorWrapper(parent) {
+//				/*
+//				 * (non-Javadoc)
+//				 * 
+//				 * @see org.eclipse.jst.pagedesigner.properties.celleditors.CellEditorWrapper#createWrappedCellEditor(org.eclipse.swt.widgets.Composite)
+//				 */
+//				protected CellEditor createWrappedCellEditor(Composite cell) {
+//					return EditorCreator.getInstance().createCellEditor(cell,
+//							_staticAttr, _staticElement);
+//				}
+//
+//				/*
+//				 * (non-Javadoc)
+//				 * 
+//				 * @see org.eclipse.jst.pagedesigner.properties.celleditors.CellEditorWrapper#openDialogBox(org.eclipse.swt.widgets.Control)
+//				 */
+//				protected Object openDialogBox(Control cellEditorWindow) {
+//					return handler.handleBinding(cellEditorWindow.getShell(),
+//							element, element, convertToString(this.getValue()));
+//				}
+//
+//				/*
+//				 * (non-Javadoc)
+//				 * 
+//				 * @see org.eclipse.jst.pagedesigner.properties.celleditors.CellEditorWrapper#getBindingImage()
+//				 */
+//				protected Image getBindingImage() {
+//					return _staticHandler.getImage();
+//				}
+//			};
+//		} finally {
+//			_staticAttr = null;
+//			_staticElement = null;
+//			_staticHandler = null;
+//			_staticHolder = null;
+//		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jst.pagedesigner.meta.EditorCreator#createCellEditorWithWrapper(org.eclipse.swt.widgets.Composite,
+	 *      org.eclipse.jst.pagedesigner.meta.IPropertyPageDescriptor,
+	 *      org.eclipse.jst.pagedesigner.meta.EditorCreator.CellEditorHolder,
+	 *      org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement,
+	 *      org.eclipse.jst.pagedesigner.meta.IBindingHandler)
+	 */
+	public CellEditor createCellEditorWithWrapper(Composite parent,
+			IPropertyPageDescriptor attr, CellEditorHolder holder,
+			final IDOMElement element, IBindingHandler handler1) {
+//		final IBindingHandler handler = (handler1 == null ? getSystemDefaultBindingHandler()
+//				: handler1);
+//		String uri = CMUtil.getElementNamespaceURI(element);
+//		String tagName = element.getLocalName();
+		
+		return holder.createCellEditor(parent);
+		
+//		if (!handler.isEnabled(element, element, uri, tagName, attr)) {
+//			// should not enabled, so directly return original cell editor
+//			return holder.createCellEditor(parent);
+//		}
+//		try {
+//			// since "createWrappedCellEditor()" and "getBindingImage()" is
+//			// called from the constructor of CellEditorWrapper, at that time,
+//			// can't reference this DefaultEditorCreator and final fields yet,
+//			// so use static variable for it.
+//			_staticElement = element;
+//			_staticHandler = handler;
+//			_staticHolder = holder;
+//
+//			return new CellEditorWrapper(parent) {
+//				/*
+//				 * (non-Javadoc)
+//				 * 
+//				 * @see org.eclipse.jst.pagedesigner.properties.celleditors.CellEditorWrapper#createWrappedCellEditor(org.eclipse.swt.widgets.Composite)
+//				 */
+//				protected CellEditor createWrappedCellEditor(Composite cell) {
+//					return _staticHolder.createCellEditor(cell);
+//				}
+//
+//				/*
+//				 * (non-Javadoc)
+//				 * 
+//				 * @see org.eclipse.jst.pagedesigner.properties.celleditors.CellEditorWrapper#openDialogBox(org.eclipse.swt.widgets.Control)
+//				 */
+//				protected Object openDialogBox(Control cellEditorWindow) {
+//					return handler.handleBinding(cellEditorWindow.getShell(),
+//							element, element, convertToString(this.getValue()));
+//				}
+//
+//				/*
+//				 * (non-Javadoc)
+//				 * 
+//				 * @see org.eclipse.jst.pagedesigner.properties.celleditors.CellEditorWrapper#getBindingImage()
+//				 */
+//				protected Image getBindingImage() {
+//					return _staticHandler.getImage();
+//				}
+//			};
+//		} finally {
+//			_staticAttr = null;
+//			_staticElement = null;
+//			_staticHandler = null;
+//			_staticHolder = null;
+//		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jst.pagedesigner.meta.EditorCreator#createDialogFieldWithWrapper(java.lang.String,
+	 *      java.lang.String,
+	 *      org.eclipse.jst.pagedesigner.meta.IPropertyPageDescriptor,
+	 *      org.eclipse.jst.pagedesigner.meta.IBindingHandler)
+	 */
+	public DialogField createDialogFieldWithWrapper(String uri, String tagName,
+			IPropertyPageDescriptor attr, IBindingHandler handler1) {
+		final IBindingHandler handler = (handler1 == null ? getSystemDefaultBindingHandler()
+				: handler1);
+		DialogField field = createDialogField(attr);
+		// if (field instanceof StringButtonDialogField)
+		// {
+		// ((StringButtonDialogField) field).setButtonLabel("...");
+		// }
+		DialogFieldWrapper wrapper = new DialogFieldWrapper(field, handler
+				.getImage(), handler.getDisabledImage(), uri, tagName, attr,
+				handler);
+		wrapper.setDatabindingEnabled(true);
+
+		return wrapper;
+	}
+
+
+//	private String convertToString(Object value) {
+//		if (value == null) {
+//			return null;
+//		}
+//        return value.toString();
+//	}
+
+	@Override
+	public DialogField createDialogFieldWithWrapper(
+			IPropertyPageDescriptor attr, IBindingHandler handler1) {
+		final IBindingHandler handler = (handler1 == null ? getSystemDefaultBindingHandler()
+				: handler1);
+		DialogField field = createDialogField(attr);
+		// if (field instanceof StringButtonDialogField)
+		// {
+		// ((StringButtonDialogField) field).setButtonLabel("...");
+		// }
+		DialogFieldWrapper wrapper = new DialogFieldWrapper(field, handler
+				.getImage(), handler.getDisabledImage(), attr.getUri(), attr.getTagName(), attr,
+				handler);
+		wrapper.setDatabindingEnabled(true);
+
+		return wrapper;
+	}
+
+	@Override
+	public DialogField createDialogField(IPropertyPageDescriptor attr) {
+		return CellEditorFactoryRegistry.getInstance().createDialogField(attr);		
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/EditorCreator.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/EditorCreator.java
index df21a0e..91d2dc3 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/EditorCreator.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/EditorCreator.java
@@ -13,7 +13,7 @@
 
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField;
-import org.eclipse.jst.pagedesigner.meta.internal.DefaultEditorCreator;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
 
@@ -28,13 +28,8 @@
 
 	/**
 	 * 
-	 *
 	 */
-	public interface CellEditorHolder {
-		/**
-		 * @param parent
-		 * @return the new cell editor
-		 */
+	public static interface CellEditorHolder {
 		public CellEditor createCellEditor(Composite parent);
 	}
 
@@ -43,9 +38,9 @@
 	 * descriptor.
 	 * 
 	 * @param attr
-	 * @return the dialog field
+	 * @return DialogField
 	 */
-	public abstract DialogField createDialogField(IAttributeDescriptor attr);
+	public abstract DialogField createDialogField(IPropertyPageDescriptor attr);
 
 	/**
 	 * Create a dialog field that will have databinding support. Basically, this
@@ -59,21 +54,40 @@
 	 * @param attr
 	 * @param handler
 	 *            if null, system default mechanism will be used.
-	 * @return the dialog field
+	 * @return DialogField
 	 */
 	public abstract DialogField createDialogFieldWithWrapper(String uri,
-			String tagName, IAttributeDescriptor attr, IBindingHandler handler);
+			String tagName, IPropertyPageDescriptor attr, IBindingHandler handler);
 
+
+	public abstract DialogField createDialogFieldWithWrapper(IPropertyPageDescriptor descriptor, IBindingHandler handler);
+//	
+//	/**
+//	 * Create a dialog field that will have databinding support. Basically, this
+//	 * method will create a normal dialog field using the attribute descriptor,
+//	 * then make a wrapper on it.
+//	 * 
+//	 * @param uri
+//	 *            the namespace uri
+//	 * @param tagName
+//	 *            the local tag name
+//	 * @param attrName
+//	 * @param handler
+//	 *            if null, system default mechanism will be used.
+//	 * @return DialogField
+//	 */
+//	public abstract DialogField createDialogFieldWithWrapper(String uri,
+//			String tagName, String attrName, IBindingHandler handler);
 	/**
 	 * Create a cell editor.
 	 * 
 	 * @param parent
 	 * @param attr
 	 * @param element
-	 * @return the cell editor
+	 * @return CellEditor
 	 */
 	public abstract CellEditor createCellEditor(Composite parent,
-			IAttributeDescriptor attr, IDOMElement element);
+			IPropertyPageDescriptor attr, IDOMElement element);
 
 	/**
 	 * Create a cell editor that will have databinding support.
@@ -83,10 +97,10 @@
 	 * @param element
 	 * @param handler
 	 *            if null, system default mechanism will be used.
-	 * @return the cell editor
+	 * @return CellEditor
 	 */
 	public abstract CellEditor createCellEditorWithWrapper(Composite parent,
-			IAttributeDescriptor attr, IDOMElement element,
+			IPropertyPageDescriptor attr, IDOMElement element,
 			IBindingHandler handler);
 
 	/**
@@ -101,15 +115,12 @@
 	 * @param element
 	 * @param handler
 	 *            if null, system default mechanism will be used.
-	 * @return the cell editor
+	 * @return CellEditor
 	 */
 	public abstract CellEditor createCellEditorWithWrapper(Composite parent,
-			IAttributeDescriptor attr, CellEditorHolder holder,
+			IPropertyPageDescriptor attr, CellEditorHolder holder,
 			IDOMElement element, IBindingHandler handler);
 
-	/**
-	 * @return the singleton instance
-	 */
 	public static EditorCreator getInstance() {
 		if (_instance == null) {
 			_instance = new DefaultEditorCreator();
@@ -117,9 +128,6 @@
 		return _instance;
 	}
 
-	/**
-	 * @return the binding handler
-	 */
 	public IBindingHandler getSystemDefaultBindingHandler() {
 		return _defaultHandler;
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IAttributeCellEditorFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IAttributeCellEditorFactory.java
index 105395a..f3d53c1 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IAttributeCellEditorFactory.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IAttributeCellEditorFactory.java
@@ -20,6 +20,7 @@
  * Factory for creating CellEditors to edit element attributes.
  * 
  * @author mengbo
+ * @deprecated - not to be used.   use ITagAttributeCellEditorFactory
  */
 public interface IAttributeCellEditorFactory {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IAttributeDescriptor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IAttributeDescriptor.java
index b0991c9..2953efe 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IAttributeDescriptor.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IAttributeDescriptor.java
@@ -16,6 +16,7 @@
 /**
  * 
  * @author mengbo
+ * @deprecated
  */
 public interface IAttributeDescriptor {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IAttributeRuntimeValueType.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IAttributeRuntimeValueType.java
new file mode 100644
index 0000000..6ef312b
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IAttributeRuntimeValueType.java
@@ -0,0 +1,189 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Sybase, Inc. and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Sybase, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.meta;
+
+/**
+ * Enumeration of core attribute-value-runtime-types.
+ * Not to be implemented by clients.
+ */
+public interface IAttributeRuntimeValueType {
+	// shared for html and jsf
+	/**
+	 * 
+	 */
+	static final String prefix1 = "org.eclipse.jst.jsf.core.attributevalues.";
+	/**
+	 * 
+	 */
+	static final String prefix2 = "org.eclipse.jst.pagedesigner.attributevalues.";
+	
+	/**
+	 * 
+	 */
+	public static final String BASE = prefix1+"BaseType";
+	
+	/**
+	 * 
+	 */
+	public static final String CSSSTYLE = prefix2+"CSSStyleType";
+
+	/**
+	 * 
+	 */
+	public static final String CSSCLASS = prefix2+"CSSClassType";
+
+	/**
+	 * 
+	 */
+	public static final String CSSID = prefix2+"CSSIdType";
+
+	/**
+	 * 
+	 */
+	public static final String STRING = prefix1+"StringType";
+
+	/**
+	 * 
+	 */
+	public static final String BOOLEAN = prefix1+"BooleanType";
+
+	/**
+	 * 
+	 */
+	public static final String RELATIVEPATH = prefix1+"RelativePathType";
+
+	/**
+	 * 
+	 */
+	public static final String WEBPATH = prefix1+"WebPathType"; //FIXME
+
+	/**
+	 * 
+	 */
+	public static final String COLOR = prefix1+"ColorType";
+
+//	public static final String NAMED_BOOLEAN = prefix1+"NAMED-BOOLEAN";
+	
+	/**
+	 * 
+	 */
+	public static final String LONG = prefix1+"LongType";
+	
+	/**
+	 * 
+	 */
+	public static final String INTEGER = prefix1+"IntegerType";
+	
+	/**
+	 * 
+	 */
+	public static final String DOUBLE = prefix1+"DoubleType";
+
+	/**
+	 * 
+	 */
+	public static final String METHODBINDING = prefix1+"MethodBindingType";
+
+	/**
+	 * 
+	 */
+	public static final String JAVACLASS = prefix1+"JavaClassType";
+
+	/**
+	 * 
+	 */
+	public static final String SCRIPT = prefix1+"ScriptType";
+
+//	public static final String PROPERTYBINDING = prefix1+"PROPERTYBINDING";
+	
+	/**
+	 * 
+	 */
+	public static final String VALUE = prefix1+"ValueType";
+	
+	/**
+	 * 
+	 */
+	public static final String VALUEBINDING = prefix1+"ValueBindingType";
+
+	/**
+	 * 
+	 */
+	public static final String TIMEZONE = prefix1+"TimeZoneType";
+	
+	/**
+	 * 
+	 */
+	public static final String ACTION = prefix1+"ActionType";
+
+	/**
+	 * 
+	 */
+	public static final String CLASSPATH_RESOURCE = prefix1+"CLASSPATH_RESOURCE";
+
+	/**
+	 * 
+	 */
+	public static final String CURRENCYCODE = prefix1+"CurrencyCodeType";
+
+	/**
+	 * 
+	 */
+	public static final String LINK = prefix1+"LinkType";
+	
+	/**
+	 * 
+	 */
+	public static final String LOCALE = prefix1+"LocaleType";
+
+//	public static final String MULTICHOICE = prefix1+"MULTICHOICE";
+	
+	/**
+	 * 
+	 */
+	public static final String FACESCONFIGIDENTIFIER = prefix1+"FacesConfigIdentifierType";
+	
+	/**
+	 * 
+	 */
+	public static final String FACESCONFIGVALIDATOR = prefix1+"FacesConfigValidatorType";
+	
+	/**
+	 * 
+	 */
+	public static final String FACESCONFIGCONVERTER = prefix1+"FacesConfigConverterType";
+	
+	/**
+	 * 
+	 */
+	public static final String COMPONENTBINDING = prefix1+"ComponentBindingType";
+	
+	/**
+	 * 
+	 */
+	public static final String COMPONENTID = prefix1+"ComponentIDType";
+	
+	/**
+	 * 
+	 */
+	public static final String LENGTH = prefix1+"LengthType";
+	
+	/**
+	 * 
+	 */
+	public static final String RESOURCEBUNDLE = prefix1+"ResourceBundleType";
+	
+	/**
+	 * 
+	 */
+	public static final String LANGUAGECODE = prefix1+"LanguageCodeType";
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IBindingHandler.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IBindingHandler.java
index 5b8bae5..514cb41 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IBindingHandler.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IBindingHandler.java
@@ -19,6 +19,7 @@
 /**
  * @author mengbo
  * @version 1.5
+ * @deprecated
  */
 public interface IBindingHandler {
 	/**
@@ -48,6 +49,10 @@
 	public boolean isEnabled(IDOMNode ancester, IDOMElement element,
 			String uri, String tagName, IAttributeDescriptor attr);
 
+	
+//	public boolean isEnabled(IDOMNode ancester, IDOMElement element,
+//			IPropertyPageDescriptor attr);
+	
 	/**
 	 * given the meta data of an attribute, to see whether should enable binding
 	 * handler for it.
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/ICMRegistry.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/ICMRegistry.java
index 6816561..5c047fe 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/ICMRegistry.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/ICMRegistry.java
@@ -14,6 +14,7 @@
 /**
  * 
  * @author mengbo
+ * @deprecated
  */
 public interface ICMRegistry {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IElementDescriptor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IElementDescriptor.java
index 6285ae7..e16246c 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IElementDescriptor.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IElementDescriptor.java
@@ -14,6 +14,7 @@
 /**
  * 
  * @author mengbo
+ *  * @deprecated
  */
 public interface IElementDescriptor {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/ITagAttributeCellEditorFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/ITagAttributeCellEditorFactory.java
new file mode 100644
index 0000000..cacb1fc
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/ITagAttributeCellEditorFactory.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.meta;
+
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+import org.eclipse.swt.widgets.Composite;
+import org.w3c.dom.Element;
+
+/**
+ * Factory for creating CellEditors to edit element attributes.
+ */
+public interface ITagAttributeCellEditorFactory {
+	/**
+	 * create cell editor
+	 * 
+	 * @param parent
+	 * @param attr
+	 * @param ele
+	 * @return null means failed to create cell editor
+	 */
+	public CellEditor createCellEditor(Composite parent,
+			IPropertyPageDescriptor attr, Element ele);
+
+	/**
+	 * Normally, the DialogField for an attribute may appear in the following
+	 * places.
+	 * <ol>
+	 * <li>In the Quick Editor properties view, used to edit an element.
+	 * <li>In a dialog to edit an element
+	 * <li>In a dialog, to create an element
+	 * </ol>
+	 * 
+	 * It is the caller's responsibility to add valueChanged listener to the
+	 * dialog field to decide how to apply the value.
+	 * 
+	 * It is also the caller's responsibility to set the initial value of the
+	 * field.
+	 * 
+	 * The field should always be an instanceof <code>ISupportTextValue</code>,
+	 * it could also optionally implement <code>IElementContextable</code>
+	 * 
+	 * @param attr
+	 *            the attribute descriptor, meta data
+	 * @return A dialog field. null means this factory can't create one.
+	 * 
+	 * @see org.eclipse.jst.jsf.common.ui.internal.dialogfield.ISupportTextValue
+	 */
+	public DialogField createDialogField(IPropertyPageDescriptor attr);
+
+	/**
+	 * The value types supported by this factory.
+	 * 
+	 * @return null means this factory can behave as default factory.
+	 */
+	public String[] getSupportedValueTypes();
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IValueType.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/OLDIValueType.java
similarity index 97%
rename from jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IValueType.java
rename to jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/OLDIValueType.java
index cfa4e1e..e702a15 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/IValueType.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/OLDIValueType.java
@@ -15,8 +15,9 @@
  * All value types will be upcased.
  * 
  * @author mengbo
+ * @deprecated
  */
-public interface IValueType {
+public interface OLDIValueType {
 	// shared for html and jsf
 	/**
 	 * 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/XXXEditorCreator.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/XXXEditorCreator.java
new file mode 100644
index 0000000..627652f
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/XXXEditorCreator.java
@@ -0,0 +1,133 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Sybase, Inc. and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Sybase, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.meta;
+
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+import org.eclipse.jst.pagedesigner.meta.internal.XXXDefaultEditorCreator;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
+
+/**
+ * @author mengbo
+ * @version 1.5
+ * @deprecated 
+ * will be deleted  (was EditorCreator)
+ */
+public abstract class XXXEditorCreator {
+	static XXXEditorCreator _instance;
+
+	static IBindingHandler _defaultHandler = new BindingHandlerDelegate();
+
+	public static interface CellEditorHolder {
+		public CellEditor createCellEditor(Composite parent);
+	}
+
+	/**
+	 * Create a dialog field without databinding using the specified attribute
+	 * descriptor.
+	 * 
+	 * @param attr
+	 * @return DialogField
+	 */
+	public abstract DialogField createDialogField(IAttributeDescriptor attr);
+
+	/**
+	 * Create a dialog field that will have databinding support. Basically, this
+	 * method will create a normal dialog field using the attribute descriptor,
+	 * then make a wrapper on it.
+	 * 
+	 * @param uri
+	 *            the namespace uri
+	 * @param tagName
+	 *            the local tag name
+	 * @param attr
+	 * @param handler
+	 *            if null, system default mechanism will be used.
+	 * @return DialogField
+	 */
+	public abstract DialogField createDialogFieldWithWrapper(String uri,
+			String tagName, IAttributeDescriptor attr, IBindingHandler handler);
+
+	public abstract DialogField createDialogFieldWithWrapper(IPropertyPageDescriptor descriptor, IBindingHandler handler);
+//	
+//	/**
+//	 * Create a dialog field that will have databinding support. Basically, this
+//	 * method will create a normal dialog field using the attribute descriptor,
+//	 * then make a wrapper on it.
+//	 * 
+//	 * @param uri
+//	 *            the namespace uri
+//	 * @param tagName
+//	 *            the local tag name
+//	 * @param attrName
+//	 * @param handler
+//	 *            if null, system default mechanism will be used.
+//	 * @return DialogField
+//	 */
+//	public abstract DialogField createDialogFieldWithWrapper(String uri,
+//			String tagName, String attrName, IBindingHandler handler);
+	/**
+	 * Create a cell editor.
+	 * 
+	 * @param parent
+	 * @param attr
+	 * @param element
+	 * @return CellEditor
+	 */
+	public abstract CellEditor createCellEditor(Composite parent,
+			IAttributeDescriptor attr, IDOMElement element);
+
+	/**
+	 * Create a cell editor that will have databinding support.
+	 * 
+	 * @param parent
+	 * @param attr
+	 * @param element
+	 * @param handler
+	 *            if null, system default mechanism will be used.
+	 * @return CellEditor
+	 */
+	public abstract CellEditor createCellEditorWithWrapper(Composite parent,
+			IAttributeDescriptor attr, IDOMElement element,
+			IBindingHandler handler);
+
+	/**
+	 * Create a cell edtior that will have databinding support. This method
+	 * don't provide an attribute descriptor, but it provide a CellEditorHolder
+	 * to create whatever normal cell editor it wants.
+	 * 
+	 * @param parent
+	 * @param attr
+	 *            could be null
+	 * @param holder
+	 * @param element
+	 * @param handler
+	 *            if null, system default mechanism will be used.
+	 * @return CellEditor
+	 */
+	public abstract CellEditor createCellEditorWithWrapper(Composite parent,
+			IAttributeDescriptor attr, CellEditorHolder holder,
+			IDOMElement element, IBindingHandler handler);
+
+	public static XXXEditorCreator getInstance() {
+		if (_instance == null) {
+			_instance = new XXXDefaultEditorCreator();
+		}
+		return _instance;
+	}
+
+	public IBindingHandler getSystemDefaultBindingHandler() {
+		return _defaultHandler;
+	}
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/CMRegistry.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/CMRegistry.java
index d886133..caf4725 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/CMRegistry.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/CMRegistry.java
@@ -43,6 +43,7 @@
  * other plugins to contribute things.
  * 
  * @author mengbo
+ * @deprecated
  */
 public class CMRegistry implements ICMRegistry {
 	static Logger _log = PDPlugin.getLogger(CMRegistry.class);
@@ -58,7 +59,7 @@
 	/**
 	 * @return the singleton instance
 	 */
-	public static ICMRegistry getInstance() {
+	public static CMRegistry getInstance() {
 		if (_instance == null) {
 			_instance = new CMRegistry();
 		}
@@ -172,7 +173,7 @@
 			ElementDescReader reader = new ElementDescReader(url);
 			reader.readElements(map);
 		} catch (Exception e) {
-			_log.error("Error loading: "+fileName, e);
+			_log.error("Error loading " + fileName + ": " + e.getMessage());
 		}
 	}
 
@@ -215,4 +216,17 @@
 	private IElementDescriptor getJSPElementDescriptor(String tagname) {
 		return (IElementDescriptor) _jspMap.get(tagname.toLowerCase());
 	}
+	
+	public List<ICMRegistry> getRegistries() {
+		List<ICMRegistry> ret = new ArrayList<ICMRegistry>(_contributedRegistries);
+		ret.add(this);
+		return ret;
+	}
+	
+	/**
+	 * call to free up memory used
+	 */
+	public void unloadRegistry(){
+		_instance = null;
+	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/CategoryNameComparator.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/CategoryNameComparator.java
index 58599e9..87db9cf 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/CategoryNameComparator.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/CategoryNameComparator.java
@@ -17,6 +17,7 @@
 import org.eclipse.jst.pagedesigner.properties.ITabbedPropertiesConstants;
 
 /**
+ * Sorts categories and ensures that @see{ITabbedPropertiesConstants.OTHER_CATEGORY} comes last
  * @author mengbo
  */
 public class CategoryNameComparator implements Comparator {
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/CellEditorFacRegistryReader.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/CellEditorFacRegistryReader.java
index ed7d2d6..5349752 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/CellEditorFacRegistryReader.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/CellEditorFacRegistryReader.java
@@ -21,7 +21,7 @@
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.jst.pagedesigner.IJMTConstants;
 import org.eclipse.jst.pagedesigner.PDPlugin;
-import org.eclipse.jst.pagedesigner.meta.IAttributeCellEditorFactory;
+import org.eclipse.jst.pagedesigner.meta.ITagAttributeCellEditorFactory;
 
 /**
  * Read the registry to find out all the CellEditorFactory.
@@ -29,12 +29,9 @@
  * @author mengbo
  */
 public class CellEditorFacRegistryReader {
-	static IAttributeCellEditorFactory[] _factories = null;
+	static ITagAttributeCellEditorFactory[] _factories = null;
 
-	/**
-	 * @return the factories
-	 */
-	public static synchronized IAttributeCellEditorFactory[] getAllFactories() {
+	public static synchronized ITagAttributeCellEditorFactory[] getAllFactories() {
 		if (_factories == null) {
 			_factories = readAllFactories();
 		}
@@ -42,7 +39,7 @@
 
 	}
 
-	private static IAttributeCellEditorFactory[] readAllFactories() {
+	private static ITagAttributeCellEditorFactory[] readAllFactories() {
 		List result = new ArrayList();
 		IExtensionPoint extensionPoint = Platform.getExtensionRegistry()
 				.getExtensionPoint(PDPlugin.getPluginId(),
@@ -55,13 +52,12 @@
 
 			for (int j = 0; j < facs.length; j++) {
 				if (facs[j].getName().equals(
-						IJMTConstants.ATTRIBUTE_CELLEDITOR_FACTORY)) {
-					facs[j].getAttribute("class");
+						IJMTConstants.TAG_ATTRIBUTE_CELLEDITOR_FACTORY)) {
 					Object obj;
 					try {
 						obj = facs[j].createExecutableExtension("class");
 
-						if (obj instanceof IAttributeCellEditorFactory) {
+						if (obj instanceof ITagAttributeCellEditorFactory) {
 							result.add(obj);
 						}
 					} catch (CoreException e) {
@@ -71,7 +67,7 @@
 				}
 			}
 		}
-		IAttributeCellEditorFactory[] ret = new IAttributeCellEditorFactory[result
+		ITagAttributeCellEditorFactory[] ret = new ITagAttributeCellEditorFactory[result
 				.size()];
 		result.toArray(ret);
 		return ret;
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/CellEditorFactoryRegistry.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/CellEditorFactoryRegistry.java
index dc80d03..eb235bc 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/CellEditorFactoryRegistry.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/CellEditorFactoryRegistry.java
@@ -27,9 +27,9 @@
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.StringDialogField;
 import org.eclipse.jst.jsf.common.ui.internal.logging.Logger;
 import org.eclipse.jst.pagedesigner.PDPlugin;
-import org.eclipse.jst.pagedesigner.meta.IAttributeCellEditorFactory;
-import org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor;
-import org.eclipse.jst.pagedesigner.meta.IValueType;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+import org.eclipse.jst.pagedesigner.meta.OLDIValueType;
+import org.eclipse.jst.pagedesigner.meta.ITagAttributeCellEditorFactory;
 import org.eclipse.jst.pagedesigner.properties.celleditors.CellEditorFactory;
 import org.eclipse.swt.widgets.Composite;
 import org.w3c.dom.Element;
@@ -38,7 +38,6 @@
  * CellEditorFactoryRegistry also read information from plugin.xml extension to
  * allow other plugins to contribute new kinds of cell editors.
  * 
- * @author mengbo
  */
 public class CellEditorFactoryRegistry {
 	private static final Logger _log = PDPlugin
@@ -50,9 +49,6 @@
 
 	private List _defaultFactories = new ArrayList();
 
-	/**
-	 * @return the singleton factory instance
-	 */
 	public static CellEditorFactoryRegistry getInstance() {
 		if (_instance == null) {
 			_instance = new CellEditorFactoryRegistry();
@@ -61,7 +57,7 @@
 	}
 
 	private CellEditorFactoryRegistry() {
-		IAttributeCellEditorFactory[] facs = CellEditorFacRegistryReader
+		ITagAttributeCellEditorFactory[] facs = CellEditorFacRegistryReader
 				.getAllFactories();
 		if (facs != null) {
 			for (int i = 0; i < facs.length; i++) {
@@ -74,7 +70,7 @@
 	/**
 	 * @param fac
 	 */
-	public void addCellEditorFactory(IAttributeCellEditorFactory fac) {
+	public void addCellEditorFactory(ITagAttributeCellEditorFactory fac) {
 		String[] types = fac.getSupportedValueTypes();
 		if (types == null || types.length == 0) {
 			_defaultFactories.add(fac);
@@ -85,28 +81,22 @@
 		}
 	}
 
-	/**
-	 * @param parent
-	 * @param attr
-	 * @param element
-	 * @return the cell editor
-	 */
 	public CellEditor createCellEditor(Composite parent,
-			IAttributeDescriptor attr, Element element) {
+			IPropertyPageDescriptor attr, Element element) {
 		String type = attr.getValueType();
 		if (type == null || type.length() == 0)
 			return null;
-		type = type.toUpperCase();
+//		type = type.toUpperCase();
 
 		CellEditor result = null;
-		IAttributeCellEditorFactory fac = (IAttributeCellEditorFactory) _factoryMap
+		ITagAttributeCellEditorFactory fac = (ITagAttributeCellEditorFactory) _factoryMap
 				.get(type);
 		if (fac != null) {
 			result = fac.createCellEditor(parent, attr, element);
 		}
 		if (result == null) {
 			for (int i = 0, size = _defaultFactories.size(); i < size; i++) {
-				result = ((IAttributeCellEditorFactory) _defaultFactories
+				result = ((ITagAttributeCellEditorFactory) _defaultFactories
 						.get(i)).createCellEditor(parent, attr, element);
 				if (result != null)
 					break;
@@ -116,28 +106,27 @@
 	}
 
 	/**
-	 * 
 	 * @param attr
-	 * @return will never be null
+	 * @return DialogField
 	 */
-	public DialogField createDialogField(IAttributeDescriptor attr) {
+	public DialogField createDialogField(IPropertyPageDescriptor attr) {
 		String type = attr.getValueType();
 		if (type == null || type.length() == 0) {
 			DialogField result = createTextDialogField(attr);
-			result.setLabelText(attr.getLabelString() + ":"); //$NON-NLS-1$
+			result.setLabelText(attr.getLabel()); //labelProvider???
 			return result;
 		}
-		type = type.toUpperCase();
+//		type = type.toUpperCase();
 
 		DialogField result = null;
-		IAttributeCellEditorFactory fac = (IAttributeCellEditorFactory) _factoryMap
+		ITagAttributeCellEditorFactory fac = (ITagAttributeCellEditorFactory) _factoryMap
 				.get(type);
 		if (fac != null) {
 			result = fac.createDialogField(attr);
 		}
 		if (result == null) {
 			for (int i = 0, size = _defaultFactories.size(); i < size; i++) {
-				result = ((IAttributeCellEditorFactory) _defaultFactories
+				result = ((ITagAttributeCellEditorFactory) _defaultFactories
 						.get(i)).createDialogField(attr);
 				if (result != null) {
 					break;
@@ -150,31 +139,31 @@
 		if (!(result instanceof ISupportTextValue)) {
 			result = createTextDialogField(attr);
 		}
-		result.setLabelText(attr.getLabelString() + ":"); //$NON-NLS-1$
+//		result.setLabelText(attr.getLabel() + ":"); //$NON-NLS-1$
 		return result;
 	}
 
 	/**
 	 * @param attr
-	 * @return the dialog field
+	 * @return DialogField
 	 */
-	public DialogField createTextDialogField(IAttributeDescriptor attr) {
+	public DialogField createTextDialogField(IPropertyPageDescriptor attr) {
 		StringDialogField field = new StringDialogField();
-		field.setLabelText(attr.getLabelString());
+		field.setLabelText(attr.getLabel());
 		field.setRequired(attr.isRequired());
 		field.setToolTip(attr.getDescription());
 		return field;
 	}
-
 	/**
 	 * This is NOT a product method. It should only be used by testing code.
 	 * 
-	 * @return the list of all value types
+	 * @return String[] of value types
 	 */
 	public String[] getAllValueTypes() {
+		//FIXME
 		Set valueTypes = new HashSet();
 		for (Iterator iter = _factoryMap.values().iterator(); iter.hasNext();) {
-			IAttributeCellEditorFactory fac = (IAttributeCellEditorFactory) iter
+			ITagAttributeCellEditorFactory fac = (ITagAttributeCellEditorFactory) iter
 					.next();
 			String[] supportedTypes = fac.getSupportedValueTypes();
 
@@ -185,7 +174,7 @@
 			}
 		}
 		// add those default ones.
-		Field[] fields = IValueType.class.getFields();
+		Field[] fields = OLDIValueType.class.getFields();
 		for (int i = 0; i < fields.length; i++) {
 			int modifiers = fields[i].getModifiers();
 			if (Modifier.isStatic(modifiers) && Modifier.isFinal(modifiers)) {
@@ -206,4 +195,6 @@
 		valueTypes.toArray(ret);
 		return ret;
 	}
+
+
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/ElementDescReader.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/ElementDescReader.java
index 800b3a8..b0c970a 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/ElementDescReader.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/ElementDescReader.java
@@ -42,7 +42,9 @@
 import org.xml.sax.SAXException;
 
 /**
+ * Used by Sybase CMConfig model loader
  * @author mengbo
+ * @deprecated
  */
 public class ElementDescReader {
 	private static Logger _log = PDPlugin.getLogger(ElementDescReader.class);
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/ElementDescriptor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/ElementDescriptor.java
index 8f4afb4..91dd59c 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/ElementDescriptor.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/ElementDescriptor.java
@@ -18,6 +18,7 @@
 
 /**
  * @author mengbo
+ * @deprecated 
  */
 public class ElementDescriptor implements IElementDescriptor {
 	String _tagName;
@@ -131,4 +132,10 @@
 	public void setHelpContextID(String contextid) {
 		_helpContextID = contextid;
 	}
+	
+	public String toString(){
+		StringBuffer buf = new StringBuffer("ElementDescriptor: ");
+		buf.append(this.getTagName()).append("(").append(this.getNamespaceURI()).append(")");
+		return buf.toString();
+	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/LocaleFallback.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/LocaleFallback.java
index 7e16317..d99b6d5 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/LocaleFallback.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/LocaleFallback.java
@@ -20,6 +20,7 @@
 /**
  * @author mengbo
  * @version 1.5
+ * @deprecated 
  */
 public class LocaleFallback {
 	private static Map map = new HashMap();
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/SimpleCMRegistry.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/SimpleCMRegistry.java
index 44df1bb..d1b22ec 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/SimpleCMRegistry.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/SimpleCMRegistry.java
@@ -70,5 +70,9 @@
 		}
 		return null;
 	}
+	
+	public Map getMap(){
+		return _map;
+	}
 
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/XXXCellEditorFacRegistryReader.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/XXXCellEditorFacRegistryReader.java
new file mode 100644
index 0000000..e2e82dc
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/XXXCellEditorFacRegistryReader.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Sybase, Inc. and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Sybase, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.meta.internal;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jst.pagedesigner.IJMTConstants;
+import org.eclipse.jst.pagedesigner.PDPlugin;
+import org.eclipse.jst.pagedesigner.meta.IAttributeCellEditorFactory;
+
+/**
+ * Read the registry to find out all the CellEditorFactory.
+ * 
+ * @author mengbo
+ * will be deleted
+ */
+public class XXXCellEditorFacRegistryReader {
+	static IAttributeCellEditorFactory[] _factories = null;
+
+	/**
+	 * @return the factories
+	 */
+	public static synchronized IAttributeCellEditorFactory[] getAllFactories() {
+		if (_factories == null) {
+			_factories = readAllFactories();
+		}
+		return _factories;
+
+	}
+
+	private static IAttributeCellEditorFactory[] readAllFactories() {
+		List result = new ArrayList();
+		IExtensionPoint extensionPoint = Platform.getExtensionRegistry()
+				.getExtensionPoint(PDPlugin.getPluginId(),
+						IJMTConstants.EXTENSION_POINT_PAGEDESIGNER);
+		IExtension[] extensions = extensionPoint.getExtensions();
+
+		for (int i = 0; i < extensions.length; i++) {
+			IExtension ext = extensions[i];
+			IConfigurationElement[] facs = ext.getConfigurationElements();
+
+			for (int j = 0; j < facs.length; j++) {
+				if (facs[j].getName().equals(
+						IJMTConstants.ATTRIBUTE_CELLEDITOR_FACTORY)) {
+//					facs[j].getAttribute("class");
+					Object obj;
+					try {
+						obj = facs[j].createExecutableExtension("class");
+
+						if (obj instanceof IAttributeCellEditorFactory) {
+							result.add(obj);
+						}
+					} catch (CoreException e) {
+						// ignore the exception
+						e.printStackTrace();
+					}
+				}
+			}
+		}
+		IAttributeCellEditorFactory[] ret = new IAttributeCellEditorFactory[result
+				.size()];
+		result.toArray(ret);
+		return ret;
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/XXXCellEditorFactoryRegistry.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/XXXCellEditorFactoryRegistry.java
new file mode 100644
index 0000000..393c65f
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/XXXCellEditorFactoryRegistry.java
@@ -0,0 +1,273 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Sybase, Inc. and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Sybase, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.meta.internal;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.ISupportTextValue;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.StringDialogField;
+import org.eclipse.jst.jsf.common.ui.internal.logging.Logger;
+import org.eclipse.jst.pagedesigner.PDPlugin;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+import org.eclipse.jst.pagedesigner.meta.IAttributeCellEditorFactory;
+import org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor;
+import org.eclipse.jst.pagedesigner.meta.OLDIValueType;
+import org.eclipse.jst.pagedesigner.properties.celleditors.OLDCellEditorFactory;
+import org.eclipse.swt.widgets.Composite;
+import org.w3c.dom.Element;
+
+/**
+ * CellEditorFactoryRegistry also read information from plugin.xml extension to
+ * allow other plugins to contribute new kinds of cell editors.
+ * 
+ * @author mengbo
+ * will be deleted
+ */
+public class XXXCellEditorFactoryRegistry {
+	private static final Logger _log = PDPlugin
+			.getLogger(XXXCellEditorFactoryRegistry.class);
+
+	private static XXXCellEditorFactoryRegistry _instance;
+
+	private Map _factoryMap = new HashMap();
+
+	private List _defaultFactories = new ArrayList();
+
+	public static XXXCellEditorFactoryRegistry getInstance() {
+		if (_instance == null) {
+			_instance = new XXXCellEditorFactoryRegistry();
+		}
+		return _instance;
+	}
+
+	private XXXCellEditorFactoryRegistry() {
+		IAttributeCellEditorFactory[] facs = XXXCellEditorFacRegistryReader
+				.getAllFactories();
+		if (facs != null) {
+			for (int i = 0; i < facs.length; i++) {
+				addCellEditorFactory(facs[i]);
+			}
+		}
+		addCellEditorFactory(new OLDCellEditorFactory());
+	}
+
+	/**
+	 * @param fac
+	 */
+	public void addCellEditorFactory(IAttributeCellEditorFactory fac) {
+		String[] types = fac.getSupportedValueTypes();
+		if (types == null || types.length == 0) {
+			_defaultFactories.add(fac);
+		} else {
+			for (int i = 0; i < types.length; i++) {
+				_factoryMap.put(types[i].toUpperCase(), fac);
+			}
+		}
+	}
+
+	public CellEditor createCellEditor(Composite parent,
+			IAttributeDescriptor attr, Element element) {
+		String type = attr.getValueType();
+		if (type == null || type.length() == 0)
+			return null;
+		type = type.toUpperCase();
+
+		CellEditor result = null;
+		IAttributeCellEditorFactory fac = (IAttributeCellEditorFactory) _factoryMap
+				.get(type);
+		if (fac != null) {
+			result = fac.createCellEditor(parent, attr, element);
+		}
+		if (result == null) {
+			for (int i = 0, size = _defaultFactories.size(); i < size; i++) {
+				result = ((IAttributeCellEditorFactory) _defaultFactories
+						.get(i)).createCellEditor(parent, attr, element);
+				if (result != null)
+					break;
+			}
+		}
+		return result;
+	}
+	
+	public CellEditor createCellEditor(Composite parent,
+			IPropertyPageDescriptor attr, Element element) {
+//		String type = attr.getValueType();
+//		if (type == null || type.length() == 0)
+//			return null;
+//		type = type.toUpperCase();
+
+		CellEditor result = null;
+	result = new TextCellEditor(parent);
+//		IAttributeCellEditorFactory fac = (IAttributeCellEditorFactory) _factoryMap
+//				.get(type);
+//		if (fac != null) {
+//			result = fac.createCellEditor(parent, attr, element);
+//		}
+//		if (result == null) {
+//			for (int i = 0, size = _defaultFactories.size(); i < size; i++) {
+//				result = ((IAttributeCellEditorFactory) _defaultFactories
+//						.get(i)).createCellEditor(parent, attr, element);
+//				if (result != null)
+//					break;
+//			}
+//		}
+		return result;
+	}
+
+	/**
+	 * @param attr
+	 * @return DialogField
+	 */
+	public DialogField createDialogField(IAttributeDescriptor attr) {
+		String type = attr.getValueType();
+		if (type == null || type.length() == 0) {
+			DialogField result = createTextDialogField(attr);
+			result.setLabelText(attr.getLabelString() + ":"); //$NON-NLS-1$
+			return result;
+		}
+		type = type.toUpperCase();
+
+		DialogField result = null;
+		IAttributeCellEditorFactory fac = (IAttributeCellEditorFactory) _factoryMap
+				.get(type);
+		if (fac != null) {
+			result = fac.createDialogField(attr);
+		}
+		if (result == null) {
+			for (int i = 0, size = _defaultFactories.size(); i < size; i++) {
+				result = ((IAttributeCellEditorFactory) _defaultFactories
+						.get(i)).createDialogField(attr);
+				if (result != null) {
+					break;
+				}
+			}
+		}
+		if (result == null) {
+			result = createTextDialogField(attr);
+		}
+		if (!(result instanceof ISupportTextValue)) {
+			result = createTextDialogField(attr);
+		}
+		result.setLabelText(attr.getLabelString() + ":"); //$NON-NLS-1$
+		return result;
+	}
+
+	public DialogField createDialogField(IPropertyPageDescriptor attr) {
+		String type = attr.getValueType();
+		if (type == null || type.length() == 0) {
+			DialogField result = createTextDialogField(attr);
+			result.setLabelText(attr.getLabel()); //labelProvider???
+			return result;
+		}
+		type = type.toUpperCase();
+
+		DialogField result = null;
+//		IAttributeCellEditorFactory fac = (IAttributeCellEditorFactory) _factoryMap
+//				.get(type);
+//		if (fac != null) {
+//			result = fac.createDialogField(attr);
+//		}
+//		if (result == null) {
+//			for (int i = 0, size = _defaultFactories.size(); i < size; i++) {
+//				result = ((IAttributeCellEditorFactory) _defaultFactories
+//						.get(i)).createDialogField(attr);
+//				if (result != null) {
+//					break;
+//				}
+//			}
+//		}
+//		if (result == null) {
+			result = createTextDialogField(attr);
+//		}
+		if (!(result instanceof ISupportTextValue)) {
+			result = createTextDialogField(attr);
+		}
+//		result.setLabelText(attr.getLabel() + ":"); //$NON-NLS-1$
+		return result;
+	}
+	/**
+	 * @param attr
+	 * @return DialogField
+	 */
+	public DialogField createTextDialogField(IAttributeDescriptor attr) {
+		StringDialogField field = new StringDialogField();
+		field.setLabelText(attr.getLabelString());
+		field.setRequired(attr.isRequired());
+		field.setToolTip(attr.getDescription());
+		return field;
+	}
+
+	/**
+	 * @param attr
+	 * @return DialogField
+	 */
+	public DialogField createTextDialogField(IPropertyPageDescriptor attr) {
+		StringDialogField field = new StringDialogField();
+		field.setLabelText(attr.getLabel());
+		field.setRequired(attr.isRequired());
+		field.setToolTip(attr.getDescription());
+		return field;
+	}
+	/**
+	 * This is NOT a product method. It should only be used by testing code.
+	 * 
+	 * @return String[] of value types
+	 */
+	public String[] getAllValueTypes() {
+		Set valueTypes = new HashSet();
+		for (Iterator iter = _factoryMap.values().iterator(); iter.hasNext();) {
+			IAttributeCellEditorFactory fac = (IAttributeCellEditorFactory) iter
+					.next();
+			String[] supportedTypes = fac.getSupportedValueTypes();
+
+			if (supportedTypes != null) {
+				for (int i = 0; i < supportedTypes.length; i++) {
+					valueTypes.add(supportedTypes[i]);
+				}
+			}
+		}
+		// add those default ones.
+		Field[] fields = OLDIValueType.class.getFields();
+		for (int i = 0; i < fields.length; i++) {
+			int modifiers = fields[i].getModifiers();
+			if (Modifier.isStatic(modifiers) && Modifier.isFinal(modifiers)) {
+				if (fields[i].getType() == String.class) {
+					try {
+						valueTypes.add(fields[i].get(null));
+					} catch (IllegalArgumentException ex) {
+						// "Error in fields retrieving:"
+						_log.info("CellEditorFactoryRegistry.Info.2", ex); //$NON-NLS-1$
+					} catch (IllegalAccessException ex) {
+						// "Error in fields retrieving:"
+						_log.info("CellEditorFactoryRegistry.Info.3", ex); //$NON-NLS-1$
+					}
+				}
+			}
+		}
+		String[] ret = new String[valueTypes.size()];
+		valueTypes.toArray(ret);
+		return ret;
+	}
+
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/DefaultEditorCreator.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/XXXDefaultEditorCreator.java
similarity index 81%
rename from jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/DefaultEditorCreator.java
rename to jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/XXXDefaultEditorCreator.java
index 71fbc24..930f961 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/DefaultEditorCreator.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/meta/internal/XXXDefaultEditorCreator.java
@@ -14,9 +14,10 @@
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField;
 import org.eclipse.jst.jsf.core.internal.tld.CMUtil;
-import org.eclipse.jst.pagedesigner.meta.EditorCreator;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
 import org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor;
 import org.eclipse.jst.pagedesigner.meta.IBindingHandler;
+import org.eclipse.jst.pagedesigner.meta.XXXEditorCreator;
 import org.eclipse.jst.pagedesigner.properties.celleditors.CellEditorWrapper;
 import org.eclipse.jst.pagedesigner.ui.dialogfields.DialogFieldWrapper;
 import org.eclipse.swt.graphics.Image;
@@ -27,8 +28,9 @@
 /**
  * @author mengbo
  * @version 1.5
+ * will be deleted
  */
-public class DefaultEditorCreator extends EditorCreator {
+public class XXXDefaultEditorCreator extends XXXEditorCreator {
 	static IAttributeDescriptor _staticAttr;
 
 	static IDOMElement _staticElement;
@@ -46,7 +48,7 @@
 	 */
 	public CellEditor createCellEditor(Composite parent,
 			IAttributeDescriptor attr, IDOMElement element) {
-		return CellEditorFactoryRegistry.getInstance().createCellEditor(parent,
+		return XXXCellEditorFactoryRegistry.getInstance().createCellEditor(parent,
 				attr, element);
 	}
 
@@ -56,8 +58,23 @@
 	 * @see org.eclipse.jst.pagedesigner.meta.EditorCreator#createDialogField(org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor)
 	 */
 	public DialogField createDialogField(IAttributeDescriptor attr) {
-		return CellEditorFactoryRegistry.getInstance().createDialogField(attr);
+		return XXXCellEditorFactoryRegistry.getInstance().createDialogField(attr);
 	}
+	
+	public DialogField createDialogField(IPropertyPageDescriptor attr) {
+		return XXXCellEditorFactoryRegistry.getInstance().createDialogField(attr);
+	}
+	
+	
+
+//	/*
+//	 * (non-Javadoc)
+//	 * 
+//	 * @see org.eclipse.jst.pagedesigner.meta.EditorCreator#createDialogField(org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor)
+//	 */
+//	public DialogField createDialogField(IAttributeDescriptor attr) {
+//		return XXXCellEditorFactoryRegistry.getInstance().createDialogField(attr);
+//	}
 
 	/*
 	 * (non-Javadoc)
@@ -82,7 +99,7 @@
 		try {
 			// since "createWrappedCellEditor()" and "getBindingImage()" is
 			// called from the constructor of CellEditorWrapper, at that time,
-			// can't reference this DefaultEditorCreator and final fields yet,
+			// can't reference this XXXDefaultEditorCreator and final fields yet,
 			// so use static variable for it.
 			_staticAttr = attr;
 			_staticElement = element;
@@ -95,7 +112,7 @@
 				 * @see org.eclipse.jst.pagedesigner.properties.celleditors.CellEditorWrapper#createWrappedCellEditor(org.eclipse.swt.widgets.Composite)
 				 */
 				protected CellEditor createWrappedCellEditor(Composite cell) {
-					return EditorCreator.getInstance().createCellEditor(cell,
+					return XXXEditorCreator.getInstance().createCellEditor(cell,
 							_staticAttr, _staticElement);
 				}
 
@@ -149,7 +166,7 @@
 		try {
 			// since "createWrappedCellEditor()" and "getBindingImage()" is
 			// called from the constructor of CellEditorWrapper, at that time,
-			// can't reference this DefaultEditorCreator and final fields yet,
+			// can't reference this XXXDefaultEditorCreator and final fields yet,
 			// so use static variable for it.
 			_staticElement = element;
 			_staticHandler = handler;
@@ -217,10 +234,29 @@
 		return wrapper;
 	}
 
+
 	private String convertToString(Object value) {
 		if (value == null) {
 			return null;
 		}
         return value.toString();
 	}
+
+	@Override
+	public DialogField createDialogFieldWithWrapper(
+			IPropertyPageDescriptor attr, IBindingHandler handler1) {
+		final IBindingHandler handler = (handler1 == null ? getSystemDefaultBindingHandler()
+				: handler1);
+		DialogField field = createDialogField(attr);
+		// if (field instanceof StringButtonDialogField)
+		// {
+		// ((StringButtonDialogField) field).setButtonLabel("...");
+		// }
+		DialogFieldWrapper wrapper = new DialogFieldWrapper(field, handler
+				.getImage(), handler.getDisabledImage(), attr.getUri(), attr.getTagName(), attr,
+				handler);
+		wrapper.setDatabindingEnabled(true);
+
+		return wrapper;
+	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AllPropertySection.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AllPropertySection.java
index f2b76b5..de3441a 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AllPropertySection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AllPropertySection.java
@@ -17,14 +17,14 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.views.properties.IPropertySourceProvider;
-import org.eclipse.wst.common.ui.properties.internal.provisional.AbstractPropertySection;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
 import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
 
 /**
- * mainly copied from AdvancedPropertySection. But extend it to allow setting
+ * Mainly copied from AdvancedPropertySection. But extend it to allow setting
  * PropertySourceProvider.
  * 
  * @author mengbo
@@ -32,14 +32,20 @@
 public class AllPropertySection extends AbstractPropertySection {
 	// FIXME: workaround the eclipse properties view limitation of sorting
 	// category.
-	private MyPropertySheetPage page;
-
-	private IPropertySourceProvider _provider;
-
-	private IDOMElement _element;
+	private AttributePropertySheetPage page;
 
 	/**
-	 * the adapter
+	 * IPropertySourceProvider for this section
+	 */
+	protected IPropertySourceProvider _provider;
+
+	/**
+	 * selected tag IDOMElement 
+	 */
+	protected IDOMElement _element;
+
+	/**
+	 * The INodeAdapter to use for notification of model change
 	 */
 	protected INodeAdapter _adapter = new INodeAdapter() {
 		public boolean isAdapterForType(Object type) {
@@ -53,22 +59,21 @@
 	};
 
 	/**
-	 * 
+	 * Constructor
 	 */
 	public AllPropertySection() {
 		this.setPropertySourceProvider(new AttributePropertySourceProvider());
 	}
 
-	/**
-	 * see org.eclipse.wst.common.ui.properties.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite,
-	 *      org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage)
-	 */
+	@Override
 	public void createControls(Composite parent,
 			TabbedPropertySheetPage tabbedPropertySheetPage) {
 		super.createControls(parent, tabbedPropertySheetPage);
+		
+	
 		Composite composite = getWidgetFactory()
 				.createFlatFormComposite(parent);
-		page = new MyPropertySheetPage();
+		page = new AttributePropertySheetPage();
 		page.init(tabbedPropertySheetPage.getSite());
 
 		if (_provider != null) {
@@ -86,17 +91,14 @@
 		page.getControl().setLayoutData(data);
 	}
 
-	/**
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#setInput(org.eclipse.ui.IWorkbenchPart,
-	 *      org.eclipse.jface.viewers.ISelection)
-	 */
+	@Override
 	public void setInput(IWorkbenchPart part, ISelection selection) {
-		super.setInput(part, selection);
-		page.selectionChanged(part, selection);
-
 		IDOMElement newEle = (IDOMElement) DesignerPropertyTool.getElement(
 				part, selection);
+
 		if (_element != newEle) {
+			super.setInput(part, selection);
+			page.selectionChanged(part, selection);
 			if (_element != null) {
 				_element.removeAdapter(_adapter);
 			}
@@ -107,9 +109,7 @@
 		}
 	}
 
-	/**
-	 * see org.eclipse.wst.common.ui.properties.view.ISection#dispose()
-	 */
+	@Override
 	public void dispose() {
 		super.dispose();
 
@@ -122,27 +122,26 @@
 		}
 	}
 
-	/**
-	 * see org.eclipse.wst.common.ui.properties.view.ISection#refresh()
-	 */
+	@Override
 	public void refresh() {
 		page.refresh();
 	}
 
-	/**
-	 * see org.eclipse.wst.common.ui.properties.view.ISection#shouldUseExtraSpace()
-	 */
+	@Override
 	public boolean shouldUseExtraSpace() {
 		return true;
 	}
 
 	/**
+	 * Set provider into tabbedPropertiesPage
 	 * @param provider
 	 */
 	public void setPropertySourceProvider(IPropertySourceProvider provider) {
 		_provider = provider;
-		if (page != null)
+		if (page != null){
 			page.setPropertySourceProvider(_provider);
+
+		}
 	}
 
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/MyPropertySheetPage.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AttributePropertySheetPage.java
similarity index 67%
rename from jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/MyPropertySheetPage.java
rename to jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AttributePropertySheetPage.java
index 7e1f290..9b236f9 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/MyPropertySheetPage.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AttributePropertySheetPage.java
@@ -11,10 +11,7 @@
  *******************************************************************************/
 package org.eclipse.jst.pagedesigner.properties;
 
-import org.eclipse.jst.pagedesigner.PDPlugin;
 import org.eclipse.jst.pagedesigner.meta.internal.CategoryNameComparator;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.views.properties.PropertySheetPage;
 import org.eclipse.ui.views.properties.PropertySheetSorter;
 
@@ -25,7 +22,17 @@
  * @author mengbo
  * @version 1.5
  */
-public class MyPropertySheetPage extends PropertySheetPage {
+public class AttributePropertySheetPage extends PropertySheetPage {
+//	TODO: add actions
+//	public void makeContributions(IMenuManager menuManager,
+//			IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+//		super.makeContributions(menuManager, toolBarManager, statusLineManager);
+//		//add actions here
+//			hide/show all categories
+//			collapse
+//			remove
+//	}
+
 	/**
 	 * Use my sorter to sort the category name. Only override the
 	 * compareCategories method.
@@ -41,16 +48,16 @@
 	}
 
 	/**
-	 * Default constructor
+	 * Constructor
 	 */
-	public MyPropertySheetPage() {
+	public AttributePropertySheetPage() {
 		super();
 		setSorter(new MySorter());
 	}
 
-	public void createControl(Composite parent) {
-		super.createControl(parent);
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
-				PDPlugin.getResourceString("MyPropertySheetPage.help.id"));
-	}
+//	public void createControl(Composite parent) {
+//		super.createControl(parent);
+////		PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
+////				PDPlugin.getResourceString("MyPropertySheetPage.help.id"));
+//	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AttributePropertySource.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AttributePropertySource.java
index 2137d98..4d92d51 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AttributePropertySource.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AttributePropertySource.java
@@ -12,21 +12,24 @@
 package org.eclipse.jst.pagedesigner.properties;
 
 import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 
 import org.eclipse.gef.commands.Command;
-import org.eclipse.jst.jsf.core.internal.tld.CMUtil;
+import org.eclipse.jst.jsf.common.metadata.Entity;
+import org.eclipse.jst.jsf.common.metadata.query.ITaglibDomainMetaDataModelContext;
+import org.eclipse.jst.jsf.common.metadata.query.TaglibDomainMetaDataQueryHelper;
+import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
+import org.eclipse.jst.jsf.context.resolver.structureddocument.ITaglibContextResolver;
+import org.eclipse.jst.jsf.context.resolver.structureddocument.IWorkspaceContextResolver;
+import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext;
+import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContextFactory;
+import org.eclipse.jst.jsf.metadataprocessors.MetaDataEnabledProcessingFactory;
 import org.eclipse.jst.pagedesigner.PDPlugin;
 import org.eclipse.jst.pagedesigner.commands.single.ChangeAttributeCommand;
-import org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor;
-import org.eclipse.jst.pagedesigner.meta.ICMRegistry;
-import org.eclipse.jst.pagedesigner.meta.IElementDescriptor;
-import org.eclipse.jst.pagedesigner.meta.internal.CMRegistry;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
 import org.eclipse.ui.views.properties.IPropertyDescriptor;
 import org.eclipse.ui.views.properties.IPropertySource;
+import org.eclipse.ui.views.properties.PropertyDescriptor;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
 import org.w3c.dom.Element;
 
@@ -39,13 +42,50 @@
 
 	private IPropertySource _innerSource;
 
+	private Entity _tagEntity;
+
+	private IStructuredDocumentContext _context;
+
+	private IPropertyDescriptor[] _descriptors;
+
 	/**
+	 * Constructor
 	 * @param ele
 	 * @param source
 	 */
 	public AttributePropertySource(Element ele, IPropertySource source) {
 		_element = (IDOMElement) ele;
 		_innerSource = source;
+		_tagEntity = getTagEntity();
+	}
+
+	private Entity getTagEntity() {
+		_context = 
+				IStructuredDocumentContextFactory.INSTANCE.getContext(_element.getStructuredDocument(), _element);
+		if (_context == null) 
+			return null;
+		
+		IWorkspaceContextResolver wsresolver = 
+				IStructuredDocumentContextResolverFactory.INSTANCE.getWorkspaceContextResolver(_context);
+		if (wsresolver == null) 
+			return null;
+		
+		ITaglibContextResolver resolver = 
+				IStructuredDocumentContextResolverFactory.INSTANCE.getTaglibContextResolver(_context);
+		if (resolver == null) return null;
+		
+		String uri = resolver.getTagURIForNodeName(_element);
+		
+		//TODO: make below better
+		if (uri == null){
+			if (_element.getNamespaceURI() != null && _element.getNamespaceURI().equals("http://java.sun.com/JSP/Page"))
+				uri = "JSP11";
+			else
+				uri = "HTML";
+		}
+		ITaglibDomainMetaDataModelContext domainContext = 
+				TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(wsresolver.getProject(), uri);
+		return TaglibDomainMetaDataQueryHelper.getEntity(domainContext, _element.getLocalName());		
 	}
 
 	/*
@@ -120,66 +160,59 @@
 	 * the major job of this wrapper is to provide
 	 */
 	public IPropertyDescriptor[] getPropertyDescriptors() {
-		IElementDescriptor elementDescriptor = getElementDescriptor();
-		List result = new ArrayList();
-
-		if (elementDescriptor == null) {
-			IPropertyDescriptor[] original = _innerSource
-					.getPropertyDescriptors();
-			for (int i = 0; i < original.length; i++) {
-				result
-						.add(new PropertyDescriptorWrapper(_element,
-								original[i]));
-			}
-		} else {
-			// put the inner property descriptors into a map.
-			Map map = new HashMap();
-			IPropertyDescriptor[] descs = _innerSource.getPropertyDescriptors();
-			if (descs != null) {
-				for (int i = 0; i < descs.length; i++) {
-					map.put(descs[i].getId(), descs[i]);
+		if (_descriptors == null) {
+			List result = new ArrayList();
+	
+				IPropertyDescriptor[] descs = _innerSource.getPropertyDescriptors();
+				if (descs != null) {
+					for (int i = 0; i < descs.length; i++) {
+						IPropertyDescriptor pd = getAttrPropertyDescriptor((String)descs[i].getId());
+						if (pd != null)
+							result.add(new PropertyDescriptorWrapper(
+									_element,
+									pd));//, 
+									//getStatusLineManager()));
+						else {
+							if (descs[i] instanceof PropertyDescriptor)
+								((PropertyDescriptor)descs[i]).setCategory(ITabbedPropertiesConstants.OTHER_CATEGORY);
+							result.add(new PropertyDescriptorWrapper(
+									_element, 
+									descs[i]));//, 
+									//getStatusLineManager()));
+						}
+							
+					}
 				}
-			}
-
-			IAttributeDescriptor[] attrs = elementDescriptor
-					.getAttributeDescriptors();
-			if (attrs != null) {
-				for (int i = 0; i < attrs.length; i++) {
-					IPropertyDescriptor desc = (IPropertyDescriptor) map
-							.remove(attrs[i].getAttributeName());
-					result.add(new AttributePropertyDescriptor(_element,
-							attrs[i], desc));
-				}
-			}
-			// ok, we have handled all attributes declared in ElementDescriptor,
-			// let's see the remaining
-			for (Iterator iter = map.values().iterator(); iter.hasNext();) {
-				IPropertyDescriptor desc = (IPropertyDescriptor) iter.next();
-				IAttributeDescriptor attr = findReferencedAttribute(
-						elementDescriptor, desc);
-				if (attr != null) {
-					result.add(new AttributePropertyDescriptor(_element, attr,
-							desc));
-				} else {
-					result.add(new PropertyDescriptorWrapper(
-							_element, desc));
-				}
-			}
+	
+			_descriptors = new IPropertyDescriptor[result.size()];
+			result.toArray(_descriptors);
+			
 		}
-		IPropertyDescriptor[] ret = new IPropertyDescriptor[result.size()];
-		result.toArray(ret);
-		return ret;
+		return _descriptors;
 	}
 
-	private IAttributeDescriptor findReferencedAttribute(
-			IElementDescriptor elementDescriptor, IPropertyDescriptor desc) {
+//	private IAttributeDescriptor findReferencedAttribute(
+//			IElementDescriptor elementDescriptor, IPropertyDescriptor desc) {
+//		return null;
+//	}
+
+//	private IElementDescriptor getElementDescriptor() {
+//		ICMRegistry registry = CMRegistry.getInstance();
+//		String uri = CMUtil.getElementNamespaceURI(_element);
+//		return registry.getElementDescriptor(uri, _element.getLocalName());
+//	}
+
+	private IPropertyDescriptor getAttrPropertyDescriptor(String attrName){
+		Entity attrEntity = TaglibDomainMetaDataQueryHelper.getEntity(_tagEntity, attrName);
+		List ppds = MetaDataEnabledProcessingFactory.getInstance().getAttributeValueRuntimeTypeFeatureProcessors(IPropertyPageDescriptor.class, _context, attrEntity);
+		if (ppds.size() > 0)
+			return (IPropertyDescriptor)((IPropertyPageDescriptor)ppds.get(0)).getAdapter(IPropertyDescriptor.class);
+		
 		return null;
+			
 	}
-
-	private IElementDescriptor getElementDescriptor() {
-		ICMRegistry registry = CMRegistry.getInstance();
-		String uri = CMUtil.getElementNamespaceURI(_element);
-		return registry.getElementDescriptor(uri, _element.getLocalName());
-	}
-
+	
+//	private IStatusLineManager getStatusLineManager() {
+//		_page.getSite().getActionBars().getStatusLineManager();
+//	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AttributePropertySourceProvider.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AttributePropertySourceProvider.java
index d86af28..086072b 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AttributePropertySourceProvider.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AttributePropertySourceProvider.java
@@ -21,18 +21,14 @@
  * @author mengbo
  */
 public class AttributePropertySourceProvider implements IPropertySourceProvider {
+
 	/**
-	 * Default constructor
+	 * Constructor
 	 */
 	public AttributePropertySourceProvider() {
-        // do nothing?
+		//
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.views.properties.IPropertySourceProvider#getPropertySource(java.lang.Object)
-	 */
 	public IPropertySource getPropertySource(Object object) {
 		Element model = null;
 		IPropertySource source = null;
@@ -45,7 +41,7 @@
 			}
 		}
 		if (source != null) {
-			return new AttributePropertySource(model, source);
+			return new AttributePropertySource( model, source);
 		}
 		return source;
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/BaseCustomSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/BaseCustomSection.java
index 57e8908..c5d94de 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/BaseCustomSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/BaseCustomSection.java
@@ -24,8 +24,8 @@
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IFileEditorInput;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.AbstractPropertySection;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
 import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
@@ -37,22 +37,22 @@
 public abstract class BaseCustomSection extends AbstractPropertySection {
 
 	/**
-	 * A ok status instance
+	 * Status that all is OK
 	 */
-	public static final Status OKSTATUS = new Status(IStatus.OK, PDPlugin
+	protected static final Status OKSTATUS = new Status(IStatus.OK, PDPlugin
 			.getPluginId(), 0, "", null);
 
-	private DesignerTabbedPropertySheetPage _propertySheetPage;
+	private WPETabbedPropertySheetPage _propertySheetPage;
 
 	private boolean _visible = false;
 
 	/**
-	 * the dom element
+	 * the tag IDOMElement
 	 */
 	protected IDOMElement _element;
 
 	/**
-	 * the adapter
+	 * the INodeAdapter used to receive notifications of model updates
 	 */
 	protected INodeAdapter _adapter = new INodeAdapter() {
 		public boolean isAdapterForType(Object type) {
@@ -82,6 +82,8 @@
 	}
 
 	/**
+	 * Method adapter will call when element has changed
+	 * 
 	 * @param notifier
 	 * @param eventType
 	 * @param changedFeature
@@ -96,7 +98,7 @@
 	public void createControls(Composite parent,
 			TabbedPropertySheetPage aTabbedPropertySheetPage) {
 		super.createControls(parent, aTabbedPropertySheetPage);
-		_propertySheetPage = (DesignerTabbedPropertySheetPage) aTabbedPropertySheetPage;
+		_propertySheetPage = (WPETabbedPropertySheetPage) aTabbedPropertySheetPage;
 	}
 
 	/**
@@ -105,7 +107,7 @@
 	 * case, we need do a total refresh.
 	 * 
 	 */
-	public void refreshPropertySheetPage() {
+	protected void refreshPropertySheetPage() {
 		if (_propertySheetPage != null) {
 			IWorkbenchPart part = getPart();
 			if (part != null) {
@@ -120,16 +122,17 @@
 	}
 
 	/**
+	 * Change selection
 	 * @param node
 	 */
-	public void gotoNode(Node node) {
+	protected void gotoNode(Node node) {
 		_propertySheetPage.internalChangeSelection(node, node);
 	}
 
 	/**
-	 * @return the status  line manager
+	 * @return IStatusLineManager to use for the property sheet page
 	 */
-	public IStatusLineManager getStatusLineManager() {
+	protected IStatusLineManager getStatusLineManager() {
 		if (_propertySheetPage != null) {
 			IActionBars bar = _propertySheetPage.getSite().getActionBars();
 			if (bar != null) {
@@ -140,9 +143,9 @@
 	}
 
 	/**
-	 * @param status
+	 * @param status to display on status line
 	 */
-	public void applyStatus(IStatus[] status) {
+	protected void applyStatus(IStatus[] status) {
 		if (!_visible) {
 			return;
 		}
@@ -169,7 +172,7 @@
 	/**
 	 * @param message
 	 */
-	public void setErrorMessage(String message) {
+	protected void setErrorMessage(String message) {
 		IStatusLineManager s = getStatusLineManager();
 		if (s != null) {
 			s.setErrorMessage(message);
@@ -178,9 +181,9 @@
 
 	/**
 	 * @param message
-	 * @return the error status
+	 * @return Status
 	 */
-	public Status createErrorStatus(String message) {
+	protected Status createErrorStatus(String message) {
 		return new Status(IStatus.ERROR, PDPlugin.getPluginId(), 0, message,
 				null);
 	}
@@ -188,18 +191,40 @@
 	public void aboutToBeHidden() {
 		applyStatus(null);
 		_visible = false;
+//		IDOMElement newEle = (IDOMElement) DesignerPropertyTool.getElement(
+//				part, selection);
+//		if (_element != newEle) {
+			if (_element != null) {
+				_element.removeAdapter(_adapter);
+			}
+//			_element = newEle;
+//			if (_element != null) {
+//				_element.addAdapter(_adapter);
+//			}
+//		}
 		super.aboutToBeHidden();
 	}
 
 	public void aboutToBeShown() {
 		super.aboutToBeShown();
+//		IDOMElement newEle = (IDOMElement) DesignerPropertyTool.getElement(
+//				part, selection);
+//		if (_element != newEle) {
+//			if (_element != null) {
+//				_element.removeAdapter(_adapter);
+//			}
+//			_element = newEle;
+			if (_element != null) {
+				_element.addAdapter(_adapter);
+			}
+//		}
 		_visible = true;
 	}
 
 	/**
-	 * @return the project
+	 * @return IProject for the WPE editing instance
 	 */
-	public IProject getProject() {
+	protected IProject getProject() {
 		if (_propertySheetPage != null) {
 			IEditorInput input = _propertySheetPage.getEditor()
 					.getEditorInput();
@@ -218,9 +243,9 @@
 	}
 
 	/**
-	 * @return the file
+	 * @return IFile for WPE editing instance
 	 */
-	public IFile getFile() {
+	protected IFile getFile() {
 		if (_propertySheetPage != null) {
 			IEditorInput input = _propertySheetPage.getEditor()
 					.getEditorInput();
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/DesignerPropertyTool.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/DesignerPropertyTool.java
index 2d8898e..d32d534 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/DesignerPropertyTool.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/DesignerPropertyTool.java
@@ -40,7 +40,6 @@
 import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
 import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery;
-import org.eclipse.wst.xml.core.internal.document.ElementImpl;
 import org.eclipse.wst.xml.core.internal.modelquery.ModelQueryUtil;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
 import org.w3c.dom.Attr;
@@ -56,10 +55,11 @@
  * @author mengbo
  */
 public class DesignerPropertyTool {
+	
 	/**
 	 * @param fNode
 	 * @param attributeDesc
-	 * @return the attribute values
+	 * @return attribute value
 	 */
 	public static String getAttributeValue(Element fNode, CMNode attributeDesc) {
 		if (attributeDesc == null) {
@@ -80,27 +80,28 @@
 		return returnedValue;
 	}
 
-	/**
-	 * @param fNode
-	 * @param filter
-	 * @return the attributes
-	 */
-	public static Object[] getElementReferedAttributes(Element fNode,
-			String[] filter) {
-		List result = new ArrayList();
-		CMNamedNodeMap cmnnm = getElementDeclaredAttributes(fNode);
-		for (int i = 0, n = cmnnm.getLength(); i < n; i++) {
-			String name = cmnnm.item(i).getNodeName();
-			if (Arrays.asList(filter).contains(name)) {
-				result.add(cmnnm.item(i));
-			}
-		}
-		return result.toArray(new CMNode[result.size()]);
-	}
+//	/**
+//	 * @param fNode
+//	 * @param filter
+//	 * @return array of attributes as objects
+//   * (unused)	
+//	 */
+//	public static Object[] getElementReferedAttributes(Element fNode,
+//			String[] filter) {
+//		List result = new ArrayList();
+//		CMNamedNodeMap cmnnm = getElementDeclaredAttributes(fNode);
+//		for (int i = 0, n = cmnnm.getLength(); i < n; i++) {
+//			String name = cmnnm.item(i).getNodeName();
+//			if (Arrays.asList(filter).contains(name)) {
+//				result.add(cmnnm.item(i));
+//			}
+//		}
+//		return result.toArray(new CMNode[result.size()]);
+//	}
 
 	/**
 	 * @param fNode
-	 * @return the declared attributes
+	 * @return CMNamedNodeMap
 	 */
 	public static CMNamedNodeMap getElementDeclaredAttributes(Node fNode) {
 		IStructuredModel structModel = null;
@@ -131,15 +132,16 @@
 	 * ITextSelection 2. IStructuredSelection (Node) 3. IStructuredSelection
 	 * (EditPart) 4. DesignRange we want to normalize it to only #2. If the node
 	 * is ATTR or TEXT/CDATA_SECTION, will use it's parent node.
-	 * @param selectingPart 
 	 * 
+	 * @param selectingPart
 	 * @param selection
-	 * @param _htmlEditor 
+	 * @param htmlEditor
 	 * @return null if can't normalize.
 	 */
 	public static Node normalizeSelectionToElement(
 			IWorkbenchPart selectingPart, ISelection selection,
-			HTMLEditor _htmlEditor) {
+			HTMLEditor htmlEditor) {
+		
 		Node node = null;
 		if (selectingPart instanceof HTMLEditor) {
 			IEditorPart part = ((HTMLEditor) selectingPart).getActiveEditor();
@@ -170,7 +172,7 @@
 							.getControl().isFocusControl()) {
 				node = SelectionHelper.toNode((IStructuredSelection) selection);
 				if (node == null) {
-					node = _htmlEditor.getDOMDocument();
+					node = htmlEditor.getDOMDocument();
 				}
 			}
 		}
@@ -178,107 +180,9 @@
 		return node;
 	}
 
-	// /**
-	// * the selection could be different kinds of selection, including:
-	// * 1. ITextSelection
-	// * 2. IStructuredSelection (Node)
-	// * 3. IStructuredSelection (EditPart)
-	// * 4. DesignRange
-	// * we want to normalize it to only #2 and #4.
-	// *
-	// * @param part
-	// * @param selection
-	// * @return null if can't normalize.
-	// */
-	// public static ISelection normalizeSelection(IWorkbenchPart selectingPart,
-	// ISelection selection)
-	// {
-	// // On Attr nodes, select the owner Element. On Text nodes, select the
-	// parent Element.
-	// ISelection preferredSelection = null;
-	// if (selection instanceof ITextSelection)
-	// {
-	// // FIXME: currently always normalize to a single node. should also
-	// consider change into DesignRange
-	// // on text selection, find the appropriate Node
-	// ITextSelection textSel = (ITextSelection) selection;
-	// IStructuredModel model = null;
-	// if (selectingPart instanceof HTMLEditor)
-	// {
-	// model = ((HTMLEditor) selectingPart).getModel();
-	//
-	// Object inode = model.getIndexedRegion(textSel.getOffset());
-	// if (inode instanceof Node)
-	// {
-	// Node node = (Node) inode;
-	// // replace Attribute Node with its owner
-	// if (node.getNodeType() == Node.ATTRIBUTE_NODE)
-	// inode = ((Attr) node).getOwnerElement();
-	// // replace Text Node with its parent
-	// else if ((node.getNodeType() == Node.TEXT_NODE || (node.getNodeType() ==
-	// Node.CDATA_SECTION_NODE)) && node.getParentNode() != null)
-	// {
-	// inode = node.getParentNode();
-	// }
-	// }
-	// if (inode != null)
-	// {
-	// return new StructuredSelection(inode);
-	// }
-	// else
-	// {
-	// return null;
-	// }
-	// }
-	// else
-	// {
-	// return null;
-	// }
-	// }
-	// else if (selection instanceof IStructuredSelection)
-	// {
-	// if (((IStructuredSelection) selection).isEmpty())
-	// {
-	// return null;
-	// }
-	//
-	// IStructuredSelection structuredSel = (IStructuredSelection) selection;
-	// List inputList = new ArrayList(structuredSel.size());
-	// for (Iterator iter = structuredSel.iterator(); iter.hasNext();)
-	// {
-	// Object inode = iter.next();
-	// if (inode instanceof NodeEditPart)
-	// {
-	// inode = ((NodeEditPart) inode).getModel();
-	// }
-	//
-	// if (inode instanceof Node)
-	// {
-	// inputList.add(inode);
-	// }
-	// }
-	// if (inputList.isEmpty())
-	// {
-	// return null;
-	// }
-	// else
-	// {
-	// return new StructuredSelection(inputList);
-	// }
-	// }
-	// else if (selection instanceof DesignRange)
-	// {
-	// return selection;
-	// }
-	// else
-	// {
-	// return null;
-	// }
-	// }
-
 	/**
-	 * @param node
-	 * @return the element node
+	 * @param node as Object
+	 * @return element 
 	 */
 	public static Element getElementNode(Object node) {
 		Object model;
@@ -303,7 +207,7 @@
 	/**
 	 * @param element
 	 * @param filter
-	 * @return the name list
+	 * @return list of attribute names
 	 */
 	public static List getNameList(Element element, String[] filter) {
 		List result = new ArrayList();
@@ -321,7 +225,7 @@
 	/**
 	 * @param selection
 	 *            should be a normalized selection
-	 * @return the common parent of selection
+	 * @return node
 	 */
 	public static Node getCommonParent(ISelection selection) {
 		if (selection instanceof IStructuredSelection) {
@@ -343,7 +247,7 @@
 	 * 
 	 * @param selectingPart
 	 * @param selection
-	 * @return the element
+	 * @return element
 	 */
 	public static Element getElement(IWorkbenchPart selectingPart,
 			ISelection selection) {
@@ -381,7 +285,8 @@
 
 	/**
 	 * @param element
-	 * @return true if element is a multi selection
+	 * @return bool
+	 *  (unused)
 	 */
 	public static boolean isMultiSelection(Element element) {
 		if (element.getNodeName().equalsIgnoreCase(IHTMLConstants.TAG_OPTION)) {
@@ -390,23 +295,24 @@
 		return false;
 	}
 
-	/**
-	 * @param element
-	 * @return the text source
-	 */
-	public static String getElementTextSource(Element element) {
-		if (element == null) {
-			return null;
-		}
-		if (element instanceof ElementImpl) {
-			return ((ElementImpl) element).getSource();
-		}
-		return null;
-	}
+//	/**
+//	 * @param element
+//	 * @return if elementImpl, return source, else null
+//	 * (unused)
+//	 */
+//	public static String getElementTextSource(Element element) {
+//		if (element == null) {
+//			return null;
+//		}
+//		if (element instanceof ElementImpl) {
+//			return ((ElementImpl) element).getSource();
+//		}
+//		return null;
+//	}
 
 	/**
 	 * @param project
-	 * @return the java project for project
+	 * @return IJavaProject
 	 */
 	public static IJavaProject getJavaProject(Object project) {
 		if (project == null) {
@@ -433,18 +339,18 @@
 		}
 		return null;
 	}
-
-	/**
-	 * @param project
-	 * @return the project
-	 */ 
-	public static IProject getProject(Object project) {
-		if (project instanceof IProject) {
-			return (IProject) project;
-		} else if (project instanceof IJavaProject) {
-			return ((IJavaProject) project).getProject();
-		}
-		return null;
-	}
+//
+//	/**
+//	 * @param project as Object
+//	 * @return IProject or null
+//	 */
+//	public static IProject getProject(Object project) {
+//		if (project instanceof IProject) {
+//			return (IProject) project;
+//		} else if (project instanceof IJavaProject) {
+//			return ((IJavaProject) project).getProject();
+//		}
+//		return null;
+//	}
 
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/ISectionFilter.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/ISectionFilter.java
index 99f10b4..95591e8 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/ISectionFilter.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/ISectionFilter.java
@@ -16,12 +16,13 @@
 /**
  * @author mengbo
  * @version 1.5
+ * @deprecated  unused
  */
 public interface ISectionFilter {
 
 	/**
 	 * @param node
-	 * @return true if the filter applies to node
+	 * @return true if node applies
 	 */
 	boolean appliesTo(Element node);
 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/ITabbedPropertiesConstants.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/ITabbedPropertiesConstants.java
index 690b0fc..c33c421 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/ITabbedPropertiesConstants.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/ITabbedPropertiesConstants.java
@@ -17,12 +17,12 @@
  */
 public interface ITabbedPropertiesConstants {
 
-	// FIXME: when return null, will in fact using "Misc". This may not garantee
+	// FIXME: when return null, will in fact using "Misc". This may not guarantee
 	// it be the
 	// last category, since is sorted by string order.
 	/**
 	 * the other category
 	 */
-	static final String OTHER_CATEGORY = "Other";
+	static final String OTHER_CATEGORY = "Attributes";
 
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/NavigationHiearchyAction.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/NavigationHiearchyAction.java
index 567156f..e7d25ab 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/NavigationHiearchyAction.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/NavigationHiearchyAction.java
@@ -39,7 +39,7 @@
 
 	private Node _currentNode;
 
-	private DesignerTabbedPropertySheetPage _propertyPage;
+	private WPETabbedPropertySheetPage _propertyPage;
 
 	private class MenuCreator implements IMenuCreator {
 		public void dispose() {
@@ -94,7 +94,7 @@
 	/**
 	 * @param propertyPage
 	 */
-	public NavigationHiearchyAction(DesignerTabbedPropertySheetPage propertyPage) {
+	public NavigationHiearchyAction(WPETabbedPropertySheetPage propertyPage) {
 		super("");
 		setEnabled(true);
 		setMenuCreator(new MenuCreator());
@@ -129,9 +129,7 @@
 		}
 	}
 
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
+	@Override
 	public void run() {
 		this._propertyPage.internalChangeSelection(_currentNode, _startNode);
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AttributePropertyDescriptor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/OLDAttributePropertyDescriptor.java
similarity index 90%
rename from jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AttributePropertyDescriptor.java
rename to jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/OLDAttributePropertyDescriptor.java
index 8a5f9c2..75f7ec6 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/AttributePropertyDescriptor.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/OLDAttributePropertyDescriptor.java
@@ -14,8 +14,8 @@
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.jface.viewers.TextCellEditor;
-import org.eclipse.jst.pagedesigner.meta.EditorCreator;
 import org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor;
+import org.eclipse.jst.pagedesigner.meta.XXXEditorCreator;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.views.properties.IPropertyDescriptor;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
@@ -26,8 +26,9 @@
  * IAttributeDescriptor and an IPropertyDescriptor.
  * 
  * @author mengbo
+ * @deprecated
  */
-public class AttributePropertyDescriptor implements IPropertyDescriptor {
+public class OLDAttributePropertyDescriptor implements IPropertyDescriptor {
 	private IAttributeDescriptor _attr;
 
 	private IPropertyDescriptor _inner; // this could be null
@@ -42,7 +43,7 @@
 	 * @param desc
 	 *            could be null
 	 */
-	public AttributePropertyDescriptor(Element element,
+	public OLDAttributePropertyDescriptor(Element element,
 			IAttributeDescriptor descriptor, IPropertyDescriptor desc) {
 		_element = element;
 		_attr = descriptor;
@@ -56,13 +57,13 @@
 	 */
 	public CellEditor createPropertyEditor(Composite parent) {
 		CellEditor editor;
-		editor = EditorCreator.getInstance().createCellEditorWithWrapper(
+		editor = XXXEditorCreator.getInstance().createCellEditorWithWrapper(
 				parent, _attr, (IDOMElement) _element, null);
 
 		if (editor != null) {
 			return editor;
 		}
-        EditorCreator.CellEditorHolder holder = new EditorCreator.CellEditorHolder() {
+        XXXEditorCreator.CellEditorHolder holder = new XXXEditorCreator.CellEditorHolder() {
         	/*
         	 * (non-Javadoc)
         	 * 
@@ -75,7 +76,7 @@
                 return new TextCellEditor(parent1);
         	}
         };
-        return EditorCreator.getInstance().createCellEditorWithWrapper(
+        return XXXEditorCreator.getInstance().createCellEditorWithWrapper(
         		parent, _attr, holder, (IDOMElement) _element, null);
 
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/PropertyDescriptorWrapper.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/PropertyDescriptorWrapper.java
index 8aae951..6503bf1 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/PropertyDescriptorWrapper.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/PropertyDescriptorWrapper.java
@@ -11,7 +11,9 @@
  *******************************************************************************/
 package org.eclipse.jst.pagedesigner.properties;
 
+import org.eclipse.jface.action.IStatusLineManager;
 import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ICellEditorListener;
 import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.jface.viewers.TextCellEditor;
 import org.eclipse.jst.pagedesigner.meta.EditorCreator;
@@ -32,16 +34,32 @@
 
 	private IDOMElement _element;
 
+	private IStatusLineManager _statusLineManager;
+
+//	/**
+//	 * Constructor
+//	 * @param element 
+//	 * @param innerDescriptor 
+//	 * @param statusLineManager 
+//	 * 
+//	 */
+//	public PropertyDescriptorWrapper(IDOMElement element,
+//			IPropertyDescriptor innerDescriptor, IStatusLineManager statusLineManager) {
+//		this._element = element;
+//		this._inner = innerDescriptor;
+//		this._statusLineManager = statusLineManager;
+//	}
+
 	/**
-	 * @param element 
-	 * @param innerDescriptor 
+	 * Constructor
+	 * @param element
+	 * @param innerDescriptor
 	 */
 	public PropertyDescriptorWrapper(IDOMElement element,
 			IPropertyDescriptor innerDescriptor) {
 		this._element = element;
 		this._inner = innerDescriptor;
 	}
-
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -55,10 +73,15 @@
 			 * @see org.eclipse.jst.pagedesigner.meta.EditorCreator.CellEditorHolder#createCellEditor(org.eclipse.swt.widgets.Composite)
 			 */
 			public CellEditor createCellEditor(Composite parent1) {
-				if (_inner != null) {
-					return _inner.createPropertyEditor(parent1);
-				}
-                return new TextCellEditor(parent1);
+				CellEditor ed = null;
+				if (_inner != null) 
+					ed = _inner.createPropertyEditor(parent1);
+				else
+					ed = new TextCellEditor(parent1);
+				
+				if (_statusLineManager != null)
+					ed.addListener(new StatusBarUpdater(ed));
+				return ed;
 			}
 		};
 		return EditorCreator.getInstance().createCellEditorWithWrapper(parent,
@@ -71,7 +94,8 @@
 	 * @see org.eclipse.ui.views.properties.IPropertyDescriptor#getCategory()
 	 */
 	public String getCategory() {
-		return ITabbedPropertiesConstants.OTHER_CATEGORY;
+		String cat = _inner.getCategory();
+		return cat != null ? cat : ITabbedPropertiesConstants.OTHER_CATEGORY;
 	}
 
 	/*
@@ -143,10 +167,31 @@
 	}
 
 	/**
-	 * @return the inner property descriptor
+	 * @return IPropertyDescriptor
 	 */
 	public IPropertyDescriptor getInner() {
 		return _inner;
 	}
 
+	private class StatusBarUpdater implements ICellEditorListener {
+		private CellEditor ed;
+	
+		StatusBarUpdater(CellEditor ed) {
+			this.ed = ed;
+		}
+		public void applyEditorValue() {//
+		}
+		public void cancelEditor() {//
+		}
+
+		public void editorValueChanged(boolean oldValidState,
+				boolean newValidState) {
+			if (!newValidState)
+				_statusLineManager.setErrorMessage(ed.getErrorMessage());				
+			else
+				_statusLineManager.setErrorMessage(null);
+				
+		}
+		
+	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/DesignerTabbedPropertySheetPage.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/WPETabbedPropertySheetPage.java
similarity index 80%
rename from jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/DesignerTabbedPropertySheetPage.java
rename to jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/WPETabbedPropertySheetPage.java
index d70ce38..71b7360 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/DesignerTabbedPropertySheetPage.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/WPETabbedPropertySheetPage.java
@@ -18,6 +18,7 @@
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jst.pagedesigner.PDPlugin;
 import org.eclipse.jst.pagedesigner.editors.HTMLEditor;
+import org.eclipse.jst.pagedesigner.properties.internal.QuickEditTabManager;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.ISelectionListener;
 import org.eclipse.ui.IWorkbenchPart;
@@ -25,39 +26,36 @@
 import org.eclipse.ui.part.EditorPart;
 import org.eclipse.ui.part.IPageSite;
 import org.eclipse.ui.views.contentoutline.ContentOutline;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySheetPageContributor;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
 import org.w3c.dom.Node;
 
 /**
  * @author mengbo
- * @author mengbo
  */
-public class DesignerTabbedPropertySheetPage extends TabbedPropertySheetPage {
+public class WPETabbedPropertySheetPage extends TabbedPropertySheetPage {
+
 	// TODO: when we want to extend this page, HTMLEditor would not be the sole
 	// type of editor part.
 	private HTMLEditor _htmlEditor;
 
 	private NavigationHiearchyAction _hiearchAction = new NavigationHiearchyAction(
 			this);
+	
+	private QuickEditTabManager manager;
 
 	/**
+	 * Constructor
 	 * @param tabbedPropertySheetPageContributor
 	 * @param editor 
 	 */
-	public DesignerTabbedPropertySheetPage(
+	public WPETabbedPropertySheetPage(
 			ITabbedPropertySheetPageContributor tabbedPropertySheetPageContributor,
 			HTMLEditor editor) {
 		super(tabbedPropertySheetPageContributor);
 		_htmlEditor = editor;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart,
-	 *      org.eclipse.jface.viewers.ISelection)
-	 */
 	public void selectionChanged(IWorkbenchPart part, ISelection selection) {
 		if (part == null) {
 			part = _htmlEditor;
@@ -70,6 +68,7 @@
 					_hiearchAction.refresh(node, node);
 					this.getSite().getActionBars().getToolBarManager().update(
 							true);
+					//setInput(part, node);
 					super.selectionChanged(part, new StructuredSelection(node));
 				} catch (Exception e) {
 					// Some synchronization would cause this, it does not damage
@@ -78,7 +77,7 @@
 			}
 		}
 	}
-
+	
 	/**
 	 * This method should be called from internal of the property page. Normally
 	 * means user did some action inside the property sheet to change current
@@ -95,23 +94,18 @@
 	}
 
 	/**
-	 * @return the editor part
+	 * @return EditorPart instance that this property sheet is for.   Will return instance of WPE (htmlEditor)
 	 */
 	public EditorPart getEditor() {
 		return this._htmlEditor;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.part.Page#init(org.eclipse.ui.part.IPageSite)
-	 */
 	public void init(IPageSite pageSite) {
 		super.init(pageSite);
 		setSelectionProvider();
 		setSelectionListener();
 		IToolBarManager toolbar = pageSite.getActionBars().getToolBarManager();
-		toolbar.add(_hiearchAction);
+		toolbar.add(_hiearchAction);		
 		_hiearchAction.refresh(null, null);
 	}
 
@@ -120,7 +114,8 @@
 				.addPostSelectionListener(new ISelectionListener() {
 					public void selectionChanged(IWorkbenchPart part,
 							ISelection selection) {
-						DesignerTabbedPropertySheetPage.this.selectionChanged(
+						if (getEditor() == part)//only fire if the selection applies to this tabbed prop sheet instance
+							WPETabbedPropertySheetPage.this.selectionChanged(
 								part, selection);
 					}
 				});
@@ -178,6 +173,25 @@
 				.setHelp(
 						getControl(),
 						PDPlugin
-								.getResourceString("DesignerTabbedPropertySheetPage.help.id"));
+								.getResourceString("WPETabbedPropertySheetPage.help.id"));
 	}
+
+	/**
+	 * @return acquires an instance of QuickEditTabManager
+	 */
+	public QuickEditTabManager getTabManager() {
+		if (manager == null) {
+			manager = QuickEditTabManager.acquireInstance(this);
+		}
+		return manager;
+	}
+
+	@Override
+	public void dispose() {
+		manager.releaseInstance();
+		manager = null;
+		super.dispose();
+	}
+	
+	
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/attrgroup/DialogUtil.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/attrgroup/DialogUtil.java
index a4dfb6c..c797148 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/attrgroup/DialogUtil.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/attrgroup/DialogUtil.java
@@ -45,7 +45,7 @@
 	 * @return true if success, false if user canceled.
 	 */
 	public static boolean createSubElement(Shell shell,
-			final IDOMElement parent, final AttributeGroup group) {
+			final IDOMElement parent, final OLDAttributeGroup group) {
 		group.setElementContext(parent, null);
 		final DialogFieldGroupPage page = new DialogFieldGroupPage("", group); //$NON-NLS-1$
 		page.setTitle(AttributeGroupMessages.getString(
@@ -114,7 +114,7 @@
 	public static boolean createSubElement(Shell shell,
 			final IDOMElement parent, final String uri, final String tagName,
 			final String[] attributes) {
-		final AttributeGroup group = new AttributeGroup(uri, tagName,
+		final OLDAttributeGroup group = new OLDAttributeGroup(uri, tagName,
 				attributes);
 		return createSubElement(shell, parent, group);
 	}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/attrgroup/AttributeGroup.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/attrgroup/OLDAttributeGroup.java
similarity index 95%
rename from jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/attrgroup/AttributeGroup.java
rename to jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/attrgroup/OLDAttributeGroup.java
index d165136..8322e1f 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/attrgroup/AttributeGroup.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/attrgroup/OLDAttributeGroup.java
@@ -21,12 +21,11 @@
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.IDialogFieldChangeListener;
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.ISupportTextValue;
 import org.eclipse.jst.pagedesigner.meta.AttributeDescriptor;
-import org.eclipse.jst.pagedesigner.meta.EditorCreator;
 import org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor;
 import org.eclipse.jst.pagedesigner.meta.IElementDescriptor;
+import org.eclipse.jst.pagedesigner.meta.XXXEditorCreator;
 import org.eclipse.jst.pagedesigner.meta.internal.CMRegistry;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.PlatformUI;
@@ -37,8 +36,12 @@
 /**
  * @author mengbo
  * @version 1.5
+ * 
+ * TODO:   no longer used????
+ * @deprecated
+ * 
  */
-public class AttributeGroup extends DialogFieldGroup {
+public class OLDAttributeGroup extends DialogFieldGroup {
 	private static final Object KEY_ATTR = "KEY_ATTR"; //$NON-NLS-1$
 
 	private String _uri;
@@ -58,7 +61,7 @@
 	 * @param tagName 
 	 * @param attrNames 
 	 */
-	public AttributeGroup(String uri, String tagName, String[] attrNames) {
+	public OLDAttributeGroup(String uri, String tagName, String[] attrNames) {
 		this._uri = uri;
 		this._tagName = tagName;
 		this._attrs = prepareAttributeDescriptors(uri, tagName, attrNames);
@@ -156,7 +159,7 @@
 				field = createDialogField(this._uri, this._tagName,
 						descriptors[i]);
 				if (field == null) {
-					EditorCreator creator = EditorCreator.getInstance();
+					XXXEditorCreator creator = XXXEditorCreator.getInstance();
 					field = creator.createDialogFieldWithWrapper(this._uri,
 							this._tagName, descriptors[i], null);
 				}
@@ -268,8 +271,8 @@
 		} else {
 			top = toolkit.createComposite(parent);
 		}
-		FillLayout fillLayout = new FillLayout(SWT.VERTICAL);
-		parent.setLayout(fillLayout);
+//		FillLayout fillLayout = new FillLayout(SWT.VERTICAL);
+//		parent.setLayout(fillLayout);
 
 		if (this._helpContextId != null && this._helpContextId.length() > 0) {
 			PlatformUI.getWorkbench().getHelpSystem().setHelp(top,
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/attrgroup/AttributeGroupSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/attrgroup/OLDAttributeGroupSection.java
similarity index 85%
rename from jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/attrgroup/AttributeGroupSection.java
rename to jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/attrgroup/OLDAttributeGroupSection.java
index 2d93aa4..b41a1ed 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/attrgroup/AttributeGroupSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/attrgroup/OLDAttributeGroupSection.java
@@ -20,8 +20,8 @@
 import org.eclipse.jst.pagedesigner.properties.BaseCustomSection;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 
 /**
@@ -29,8 +29,10 @@
  * 
  * @author mengbo
  * @version 1.5
+ * @deprecated
+ * 
  */
-public class AttributeGroupSection extends BaseCustomSection {
+public class OLDAttributeGroupSection extends BaseCustomSection {
 	private static final Object KEY_ATTR = "KEY_ATTR"; //$NON-NLS-1$
 
 	private IDialogFieldApplyListener _fieldApplyListener = new IDialogFieldApplyListener() {
@@ -45,7 +47,7 @@
 				ISupportTextValue textValue = (ISupportTextValue) field;
 				ChangeAttributeCommand c = new ChangeAttributeCommand(
 						AttributeGroupMessages
-								.getString("AttributeGroupSection.changeAttribute"), _element, ((IAttributeDescriptor) attr).getAttributeName(), textValue.getText()); //$NON-NLS-1$
+								.getString("OLDAttributeGroupSection.changeAttribute"), _element, ((IAttributeDescriptor) attr).getAttributeName(), textValue.getText()); //$NON-NLS-1$
 				c.execute();
 			}
 		}
@@ -54,7 +56,7 @@
 	/**
 	 * the attribute group
 	 */
-	protected AttributeGroup _group;
+	protected OLDAttributeGroup _group;
 
 	/**
 	 * create the section with a default AttributeGroup. In default
@@ -64,8 +66,8 @@
 	 * @param tagName
 	 * @param attrNames
 	 */
-	public AttributeGroupSection(String uri, String tagName, String[] attrNames) {
-		this(new AttributeGroup(uri, tagName, attrNames));
+	public OLDAttributeGroupSection(String uri, String tagName, String[] attrNames) {
+		this(new OLDAttributeGroup(uri, tagName, attrNames));
 	}
 
 	/**
@@ -74,7 +76,7 @@
 	 * 
 	 * @param group
 	 */
-	public AttributeGroupSection(AttributeGroup group) {
+	public OLDAttributeGroupSection(OLDAttributeGroup group) {
 		_group = group;
 		_group.setDefaultApplyListener(_fieldApplyListener);
 		_group.initialize();
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/CellEditorFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/CellEditorFactory.java
index 0546447..60159e3 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/CellEditorFactory.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/CellEditorFactory.java
@@ -1,33 +1,32 @@
 /*******************************************************************************
- * Copyright (c) 2006 Sybase, Inc. and others.
- *
+ * Copyright (c) 2007 Oracle Corporation.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *     Sybase, Inc. - initial API and implementation
- *******************************************************************************/
+ *    Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
 package org.eclipse.jst.pagedesigner.properties.celleditors;
 
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-import java.util.TimeZone;
-import java.util.TreeMap;
+import java.util.List;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jst.jsf.common.ui.internal.dialogfield.ComboDialogField;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.jst.jsf.common.metadata.Trait;
+import org.eclipse.jst.jsf.common.metadata.internal.TraitValueHelper;
+import org.eclipse.jst.jsf.common.metadata.query.TaglibDomainMetaDataQueryHelper;
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField;
-import org.eclipse.jst.jsf.common.ui.internal.dialogfield.StyleComboDialogField;
-import org.eclipse.jst.pagedesigner.css2.CSSUtil;
+import org.eclipse.jst.jsf.metadataprocessors.features.IDefaultValue;
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
 import org.eclipse.jst.pagedesigner.jsp.core.IJSPCoreConstants;
-import org.eclipse.jst.pagedesigner.meta.IAttributeCellEditorFactory;
-import org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor;
-import org.eclipse.jst.pagedesigner.meta.IValueType;
+import org.eclipse.jst.pagedesigner.meta.ITagAttributeCellEditorFactory;
+import org.eclipse.jst.pagedesigner.meta.IAttributeRuntimeValueType;
 import org.eclipse.jst.pagedesigner.ui.dialogfields.ClasspathResourceButtonDialogField;
 import org.eclipse.jst.pagedesigner.ui.dialogfields.ContextableResourceButtonDialogField;
 import org.eclipse.jst.pagedesigner.ui.dialogfields.StyleButtonDialogField;
@@ -42,235 +41,43 @@
  * 
  * @author mengbo
  */
-public class CellEditorFactory implements IAttributeCellEditorFactory {
-	private static String[] CURRENCYCODES = { "AED", // United Arab Emirates,
-			// Dirhams //$NON-NLS-1$
-			"AFA", // Afghanistan, Afghanis //$NON-NLS-1$
-			"ALL", // Albania, Leke //$NON-NLS-1$
-			"AMD", // Armenia, Drams //$NON-NLS-1$
-			"ANG", // Netherlands Antilles, Guilders (also called Florins)
-			// //$NON-NLS-1$
-			"AOA", // Angola, Kwanza //$NON-NLS-1$
-			"ARS", // Argentina, Pesos //$NON-NLS-1$
-			"AUD", // Australia, Dollars //$NON-NLS-1$
-			"AWG", // Aruba, Guilders (also called Florins) //$NON-NLS-1$
-			"AZM", // Azerbaijan, Manats //$NON-NLS-1$
-			"BAM", // Bosnia and Herzegovina, Convertible Marka //$NON-NLS-1$
-			"BBD", // Barbados, Dollars //$NON-NLS-1$
-			"BDT", // Bangladesh, Taka //$NON-NLS-1$
-			"BGN", // Bulgaria, Leva //$NON-NLS-1$
-			"BHD", // Bahrain, Dinars //$NON-NLS-1$
-			"BIF", // Burundi, Francs //$NON-NLS-1$
-			"BMD", // Bermuda, Dollars //$NON-NLS-1$
-			"BND", // Brunei Darussalam, Dollars //$NON-NLS-1$
-			"BOB", // Bolivia, Bolivianos //$NON-NLS-1$
-			"BRL", // Brazil, Brazil Real //$NON-NLS-1$
-			"BSD", // Bahamas, Dollars //$NON-NLS-1$
-			"BTN", // Bhutan, Ngultrum //$NON-NLS-1$
-			"BWP", // Botswana, Pulas //$NON-NLS-1$
-			"BYR", // Belarus, Rubles //$NON-NLS-1$
-			"BZD", // Belize, Dollars //$NON-NLS-1$
-			"CAD", // Canada, Dollars //$NON-NLS-1$
-			"CDF", // Congo/Kinshasa, Congolese Francs //$NON-NLS-1$
-			"CHF", // Switzerland, Francs //$NON-NLS-1$
-			"CLP", // Chile, Pesos //$NON-NLS-1$
-			"CNY", // China, Yuan Renminbi //$NON-NLS-1$
-			"COP", // Colombia, Pesos //$NON-NLS-1$
-			"CRC", // Costa Rica, Colones //$NON-NLS-1$
-			"CSD", // Serbia, Dinars //$NON-NLS-1$
-			"CUP", // Cuba, Pesos //$NON-NLS-1$
-			"CVE", // Cape Verde, Escudos //$NON-NLS-1$
-			"CYP", // Cyprus, Pounds //$NON-NLS-1$
-			"CZK", // Czech Republic, Koruny //$NON-NLS-1$
-			"DJF", // Djibouti, Francs //$NON-NLS-1$
-			"DKK", // Denmark, Kroner //$NON-NLS-1$
-			"DOP", // Dominican Republic, Pesos //$NON-NLS-1$
-			"DZD", // Algeria, Algeria Dinars //$NON-NLS-1$
-			"EEK", // Estonia, Krooni //$NON-NLS-1$
-			"EGP", // Egypt, Pounds //$NON-NLS-1$
-			"ERN", // Eritrea, Nakfa //$NON-NLS-1$
-			"ETB", // Ethiopia, Birr //$NON-NLS-1$
-			"EUR", // Euro Member Countries, Euro //$NON-NLS-1$
-			"FJD", // Fiji, Dollars //$NON-NLS-1$
-			"FKP", // Falkland Islands (Malvinas), Pounds //$NON-NLS-1$
-			"GBP", // United Kingdom, Pounds //$NON-NLS-1$
-			"GEL", // Georgia, Lari //$NON-NLS-1$
-			"GGP", // Guernsey, Pounds //$NON-NLS-1$
-			"GHC", // Ghana, Cedis //$NON-NLS-1$
-			"GIP", // Gibraltar, Pounds //$NON-NLS-1$
-			"GMD", // Gambia, Dalasi //$NON-NLS-1$
-			"GNF", // Guinea, Francs //$NON-NLS-1$
-			"GTQ", // Guatemala, Quetzales //$NON-NLS-1$
-			"GYD", // Guyana, Dollars //$NON-NLS-1$
-			"HKD", // Hong Kong, Dollars //$NON-NLS-1$
-			"HNL", // Honduras, Lempiras //$NON-NLS-1$
-			"HRK", // Croatia, Kuna //$NON-NLS-1$
-			"HTG", // Haiti, Gourdes //$NON-NLS-1$
-			"HUF", // Hungary, Forint //$NON-NLS-1$
-			"IDR", // Indonesia, Rupiahs //$NON-NLS-1$
-			"ILS", // Israel, New Shekels //$NON-NLS-1$
-			"IMP", // Isle of Man, Pounds //$NON-NLS-1$
-			"INR", // India, Rupees //$NON-NLS-1$
-			"IQD", // Iraq, Dinars //$NON-NLS-1$
-			"IRR", // Iran, Rials //$NON-NLS-1$
-			"ISK", // Iceland, Kronur //$NON-NLS-1$
-			"JEP", // Jersey, Pounds //$NON-NLS-1$
-			"JMD", // Jamaica, Dollars //$NON-NLS-1$
-			"JOD", // Jordan, Dinars //$NON-NLS-1$
-			"JPY", // Japan, Yen //$NON-NLS-1$
-			"KES", // Kenya, Shillings //$NON-NLS-1$
-			"KGS", // Kyrgyzstan, Soms //$NON-NLS-1$
-			"KHR", // Cambodia, Riels //$NON-NLS-1$
-			"KMF", // Comoros, Francs //$NON-NLS-1$
-			"KPW", // Korea (North), Won //$NON-NLS-1$
-			"KRW", // Korea (South), Won //$NON-NLS-1$
-			"KWD", // Kuwait, Dinars //$NON-NLS-1$
-			"KYD", // Cayman Islands, Dollars //$NON-NLS-1$
-			"KZT", // Kazakhstan, Tenge //$NON-NLS-1$
-			"LAK", // Laos, Kips //$NON-NLS-1$
-			"LBP", // Lebanon, Pounds //$NON-NLS-1$
-			"LKR", // Sri Lanka, Rupees //$NON-NLS-1$
-			"LRD", // Liberia, Dollars //$NON-NLS-1$
-			"LSL", // Lesotho, Maloti //$NON-NLS-1$
-			"LTL", // Lithuania, Litai //$NON-NLS-1$
-			"LVL", // Latvia, Lati //$NON-NLS-1$
-			"LYD", // Libya, Dinars //$NON-NLS-1$
-			"MAD", // Morocco, Dirhams //$NON-NLS-1$
-			"MDL", // Moldova, Lei //$NON-NLS-1$
-			"MGA", // Madagascar, Ariary //$NON-NLS-1$
-			"MKD", // Macedonia, Denars //$NON-NLS-1$
-			"MMK", // Myanmar (Burma), Kyats //$NON-NLS-1$
-			"MNT", // Mongolia, Tugriks //$NON-NLS-1$
-			"MOP", // Macau, Patacas //$NON-NLS-1$
-			"MRO", // Mauritania, Ouguiyas //$NON-NLS-1$
-			"MTL", // Malta, Liri //$NON-NLS-1$
-			"MUR", // Mauritius, Rupees //$NON-NLS-1$
-			"MVR", // Maldives (Maldive Islands), Rufiyaa //$NON-NLS-1$
-			"MWK", // Malawi, Kwachas //$NON-NLS-1$
-			"MXN", // Mexico, Pesos //$NON-NLS-1$
-			"MYR", // Malaysia, Ringgits //$NON-NLS-1$
-			"MZM", // Mozambique, Meticais //$NON-NLS-1$
-			"NAD", // Namibia, Dollars //$NON-NLS-1$
-			"NGN", // Nigeria, Nairas //$NON-NLS-1$
-			"NIO", // Nicaragua, Cordobas //$NON-NLS-1$
-			"NOK", // Norway, Krone //$NON-NLS-1$
-			"NPR", // Nepal, Nepal Rupees //$NON-NLS-1$
-			"NZD", // New Zealand, Dollars //$NON-NLS-1$
-			"OMR", // Oman, Rials //$NON-NLS-1$
-			"PAB", // Panama, Balboa //$NON-NLS-1$
-			"PEN", // Peru, Nuevos Soles //$NON-NLS-1$
-			"PGK", // Papua New Guinea, Kina //$NON-NLS-1$
-			"PHP", // Philippines, Pesos //$NON-NLS-1$
-			"PKR", // Pakistan, Rupees //$NON-NLS-1$
-			"PLN", // Poland, Zlotych //$NON-NLS-1$
-			"PYG", // Paraguay, Guarani //$NON-NLS-1$
-			"QAR", // Qatar, Rials //$NON-NLS-1$
-			"ROL", // Romania, Lei //$NON-NLS-1$
-			"RUB", // Russia, Rubles //$NON-NLS-1$
-			"RWF", // Rwanda, Rwanda Francs //$NON-NLS-1$
-			"SAR", // Saudi Arabia, Riyals //$NON-NLS-1$
-			"SBD", // Solomon Islands, Dollars //$NON-NLS-1$
-			"SCR", // Seychelles, Rupees //$NON-NLS-1$
-			"SDD", // Sudan, Dinars //$NON-NLS-1$
-			"SEK", // Sweden, Kronor //$NON-NLS-1$
-			"SGD", // Singapore, Dollars //$NON-NLS-1$
-			"SHP", // Saint Helena, Pounds //$NON-NLS-1$
-			"SIT", // Slovenia, Tolars //$NON-NLS-1$
-			"SKK", // Slovakia, Koruny //$NON-NLS-1$
-			"SLL", // Sierra Leone, Leones //$NON-NLS-1$
-			"SOS", // Somalia, Shillings //$NON-NLS-1$
-			"SPL", // Seborga, Luigini //$NON-NLS-1$
-			"SRD", // Suriname, Dollars //$NON-NLS-1$
-			"STD", // S?o Tome and Principe, Dobras //$NON-NLS-1$
-			"SVC", // El Salvador, Colones //$NON-NLS-1$
-			"SYP", // Syria, Pounds //$NON-NLS-1$
-			"SZL", // Swaziland, Emalangeni //$NON-NLS-1$
-			"THB", // Thailand, Baht //$NON-NLS-1$
-			"TJS", // Tajikistan, Somoni //$NON-NLS-1$
-			"TMM", // Turkmenistan, Manats //$NON-NLS-1$
-			"TND", // Tunisia, Dinars //$NON-NLS-1$
-			"TOP", // Tonga, Pa'anga //$NON-NLS-1$
-			"TRL", // Turkey, Liras [being phased out] //$NON-NLS-1$
-			"TRY", // Turkey, New Lira //$NON-NLS-1$
-			"TTD", // Trinidad and Tobago, Dollars //$NON-NLS-1$
-			"TVD", // Tuvalu, Tuvalu Dollars //$NON-NLS-1$
-			"TWD", // Taiwan, New Dollars //$NON-NLS-1$
-			"TZS", // Tanzania, Shillings //$NON-NLS-1$
-			"UAH", // Ukraine, Hryvnia //$NON-NLS-1$
-			"UGX", // Uganda, Shillings //$NON-NLS-1$
-			"USD", // United States of America, Dollars //$NON-NLS-1$
-			"UYU", // Uruguay, Pesos //$NON-NLS-1$
-			"UZS", // Uzbekistan, Sums //$NON-NLS-1$
-			"VEB", // Venezuela, Bolivares //$NON-NLS-1$
-			"VND", // Viet Nam, Dong //$NON-NLS-1$
-			"VUV", // Vanuatu, Vatu //$NON-NLS-1$
-			"WST", // Samoa, Tala //$NON-NLS-1$
-			"XAF", // Communaut�� Financi��re Africaine BEAC, Francs
-			// //$NON-NLS-1$
-			"XAG", // Silver, Ounces //$NON-NLS-1$
-			"XAU", // Gold, Ounces //$NON-NLS-1$
-			"XCD", // East Caribbean Dollars //$NON-NLS-1$
-			"XDR", // International Monetary Fund (IMF) Special Drawing Rights
-			// //$NON-NLS-1$
-			"XOF", // Communaut�� Financi��re Africaine BCEAO, Francs
-			// //$NON-NLS-1$
-			"XPD", // Palladium Ounces //$NON-NLS-1$
-			"XPF", // Comptoirs Fran?ais du Pacifique Francs //$NON-NLS-1$
-			"XPT", // Platinum, Ounces //$NON-NLS-1$
-			"YER", // Yemen, Rials //$NON-NLS-1$
-			"ZAR", // South Africa, Rand //$NON-NLS-1$
-			"ZMK", // Zambia, Kwacha //$NON-NLS-1$
-			"ZWD" // Zimbabwe, Zimbabwe Dollars //$NON-NLS-1$
-	};
-
+public class CellEditorFactory implements ITagAttributeCellEditorFactory {
 	public CellEditor createCellEditor(Composite parent,
-			IAttributeDescriptor attr, Element element) {
+			IPropertyPageDescriptor attr, Element element) {
+		
 		String type = attr.getValueType();
-
-		if (IValueType.ENUMERATED.equalsIgnoreCase(type)) {
-			Map map = new HashMap(attr.getOptions());
-			String defaultValue = attr.getDefaultValue();
-			if (defaultValue == null) {
-				return LabeledComboBoxCellEditor.newInstance(parent, map,
-						SWT.NONE);
-			}
-            return LabeledStyleComboCellEditor.newInstance(parent, map,
-            		defaultValue, SWT.NONE);
-		} else if (IValueType.LOCALE.equalsIgnoreCase(type)) {
-			Map map = new HashMap();
-			Locale[] locales = Locale.getAvailableLocales();
-			for (int i = 0, size = locales.length; i < size; i++) {
-				map.put(locales[i].toString(), locales[i].toString());
-			}
-			return LabeledComboBoxCellEditor.newInstance(parent, map, SWT.NONE);
-		} else if (IValueType.TIMEZONE.equalsIgnoreCase(type)) {
-			Map map = new HashMap();
-			String[] ids = TimeZone.getAvailableIDs();
-			for (int i = 0, size = ids.length; i < size; i++) {
-				map.put(ids[i], ids[i]);
-			}
-			return LabeledComboBoxCellEditor.newInstance(parent, map, SWT.NONE);
-		} else if (IValueType.RELATIVEPATH.equalsIgnoreCase(type)
-				|| IValueType.WEBPATH.equalsIgnoreCase(type)) {
+		
+		IPossibleValues pvs = (IPossibleValues)attr.getAdapter(IPossibleValues.class);
+		IDefaultValue defaultValue = (IDefaultValue)attr.getAdapter(IDefaultValue.class);
+//		ICellEditorValidator validator = (ICellEditorValidator)attr.getAdapter(ICellEditorValidator.class);
+		CellEditor ed = null;
+		if (IAttributeRuntimeValueType.RELATIVEPATH.equalsIgnoreCase(type)|| IAttributeRuntimeValueType.WEBPATH.equalsIgnoreCase(type)) {
 			IProject project = getProject(element);
 			if (project != null) {
+//				String typeParam = TraitValueHelper.getValueAsString(TaglibDomainMetaDataQueryHelper.getTrait(attr.getMetaDataContext().getEntity(),"type-param"));
 				ResourceDialogCellEditor cellEditor = new ResourceDialogCellEditor(
 						parent);
-				cellEditor.setSuffixs(attr.getParameterByName(
-						IAttributeDescriptor.PARAMETER_SUFFIX).split(";"));
-				cellEditor
-						.setSeparator(attr
-								.getParameterByName(IAttributeDescriptor.PARAMETER_SEPARATOR));
+				Trait fileExt = TaglibDomainMetaDataQueryHelper.getTrait(attr.getMetaDataContext().getEntity(), "file-extensions");
+				Trait separator = TaglibDomainMetaDataQueryHelper.getTrait(attr.getMetaDataContext().getEntity(), "separator");
+				String[] fileExts = null;
+				if (fileExt != null){
+					List exts = TraitValueHelper.getValueAsListOfStrings(fileExt);
+					fileExts = (String[])exts.toArray(new String[exts.size()]);
+				} 
+				
+				String sep = null;
+				if (separator != null)
+					sep = TraitValueHelper.getValueAsString(separator);
+				
+				if (fileExts != null)
+					cellEditor.setSuffixs(fileExts);
+				if (sep != null)
+					cellEditor.setSeparator(sep);
+
 				cellEditor.setProject(project);
 				cellEditor.setReferredFile(getFile(element));
-				if ("".equalsIgnoreCase(cellEditor.getSeparator())) {
-					cellEditor.setResourceDescription(ResourceBoundle
-							.getString("FileCellEditor.Msg"));
-				} else {
-					cellEditor.setResourceDescription(ResourceBoundle
-							.getString("FileCellEditor.Msg1"));
-				}
-				if (IValueType.WEBPATH.equalsIgnoreCase(type)) {
+
+				if (IAttributeRuntimeValueType.WEBPATH.equalsIgnoreCase(type)) {
 					cellEditor.setWebPath(true);
 				}
 
@@ -280,128 +87,97 @@
 								.getLocalName())) {
 					cellEditor.setTransformJSPURL(false);
 				}
-				return cellEditor;
+				ed = cellEditor;
 			}
-		} else if (IValueType.CLASSPATH_RESOURCE.equalsIgnoreCase(type)) {
-			return new LoadbundleSelectionCellEditor(parent,
+		} 
+		else if (IAttributeRuntimeValueType.RESOURCEBUNDLE.equals(type)) {
+			ed = new LoadbundleSelectionCellEditor(parent,
 					getProject(element));
-		} else if (IValueType.CSSID.equalsIgnoreCase(type)) {
-		    // TODO: missing case?
-		} else if (IValueType.CSSCLASS.equalsIgnoreCase(type)) {
-			String cssclasses[] = CSSUtil.getCSSClasses(element
-					.getOwnerDocument());
-			Map map = new HashMap();
-			if (cssclasses != null) {
-				for (int i = 0; i < cssclasses.length; i++) {
-					map.put(cssclasses[i], cssclasses[i]);
-				}
-			}
-			return LabeledComboBoxCellEditor.newInstance(parent, map, SWT.NONE);
-		} else if (IValueType.BOOLEAN.equalsIgnoreCase(type)) {
-			String defaultValue = attr
-					.getParameterByName(IAttributeDescriptor.PARAMETER_DEFAULT);
-			Map booleanMap = new HashMap();
-			booleanMap.put(Boolean.TRUE.toString(), Boolean.TRUE.toString());
-			booleanMap.put(Boolean.FALSE.toString(), Boolean.FALSE.toString());
-			if (defaultValue == null) {
-				return LabeledComboBoxCellEditor.newInstance(parent,
-						booleanMap, SWT.NONE);
-			}
-            return LabeledStyleComboCellEditor.newInstance(parent,
-            		booleanMap, defaultValue, SWT.NONE);
-		} else if (IValueType.CSSSTYLE.equalsIgnoreCase(type)) {
-			String param = attr
-					.getParameterByName(IAttributeDescriptor.PARAMETER_STYLE);
-			if (!param.equalsIgnoreCase("STYLE")) {
-				return null;
-			}
-			CSSDialogCellEditor cellEditor = new CSSDialogCellEditor(parent,
-					(IDOMElement) element);
-			return cellEditor;
-		} else if (IValueType.NAMED_BOOLEAN.equalsIgnoreCase(type)) {
-			return NamedBooleanCellEditor.newInstance(parent, SWT.NONE,
-					(IDOMElement) element, attr);
-		} else if (IValueType.CURRENCYCODE.equalsIgnoreCase(type)) {
-			Map map = new HashMap();
-			for (int i = 0, n = CURRENCYCODES.length; i < n; i++) {
-				map.put(CURRENCYCODES[i], CURRENCYCODES[i]);
-			}
-
-			return LabeledComboBoxCellEditor.newInstance(parent, map, SWT.NONE);
 		}
+		else if (IAttributeRuntimeValueType.CSSSTYLE.equalsIgnoreCase(type)) {
+//				String param = getParamterValue(attr, "style");
+////							.getParameterByName(IAttributeDescriptor.PARAMETER_STYLE);
+//				if (!param.equalsIgnoreCase("STYLE")) {
+//					return null;
+//				}
+				CSSDialogCellEditor cellEditor = new CSSDialogCellEditor(parent,
+						(IDOMElement) element);
+				ed = cellEditor;
+		}
+		else if (pvs != null && pvs.getPossibleValues().size() > 0) {
+//			if (validator != null) 
+//				ed = LabeledStyleComboCellEditor.newInstance(parent, pvs,
+//	            		defaultValue, SWT.DROP_DOWN | SWT.READ_ONLY);
+//			else 
+				ed = LabeledStyleComboCellEditor.newInstance(parent, pvs,
+            		defaultValue, SWT.NONE);
+	
+		}
+		
+//		} else if (IAttributeRuntimeValueType.CSSID.equalsIgnoreCase(type)) {
+//		    // TODO: missing case?
 
-		// if there is no type or type unknonw, then we just return null. and
-		// system will
-		// create default (text cell editor).
-		return null;
+		else {
+			ed = new TextCellEditor(parent);
+		}
+//		if (validator != null){
+//			ed.setValidator(validator);
+//		}
+		
+		return ed;
 	}
 
+
+//	private String getParamterValue(IPropertyPageDescriptor attr, String traitKey) {
+//		Trait trait = TaglibDomainMetaDataQueryHelper.getTrait(attr.getMetaDataContext().getEntity(), traitKey);
+//		if (trait != null){
+//			return TraitValueHelper.getValueAsString(trait);
+//		}
+//		return null;
+//	}
+
+
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.jst.pagedesigner.meta.IAttributeCellEditorFactory#createDialogField(org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor,
+	 * @see org.eclipse.jst.pagedesigner.meta.NEWMDIAttributeCellEditorFactory#createDialogField(org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor,
 	 *      org.w3c.dom.Element, org.w3c.dom.Element)
 	 */
-	public DialogField createDialogField(IAttributeDescriptor attr) {
-		String type = attr.getValueType();
+	public DialogField createDialogField(IPropertyPageDescriptor attr) {
 
-		if (IValueType.ENUMERATED.equalsIgnoreCase(type)
-				|| IValueType.LOCALE.equalsIgnoreCase(type)
-				|| IValueType.TIMEZONE.equalsIgnoreCase(type)) {
-			Map map = new HashMap();
-			if (IValueType.ENUMERATED.equalsIgnoreCase(type)) {
-				map = attr.getOptions();
-			} else if (IValueType.LOCALE.equalsIgnoreCase(type)) {
-				Locale[] locales = Locale.getAvailableLocales();
-				for (int i = 0, size = locales.length; i < size; i++) {
-					map.put(locales[i].toString(), locales[i].toString());
-				}
-			} else {
-				String[] ids = TimeZone.getAvailableIDs();
-				for (int i = 0, size = ids.length; i < size; i++) {
-					map.put(ids[i], ids[i]);
-				}
-			}
-			if (map != null && !map.isEmpty()) {
-				String defaultValue = attr.getDefaultValue();
-				if (defaultValue == null || "".equals(defaultValue)) {
-					attr
-							.getParameterByName(IAttributeDescriptor.PARAMETER_DEFAULT);
-				}
-				StyleComboDialogField field = new StyleComboDialogField(
-						SWT.NONE);
-				field.setDefaultValue(defaultValue);
-				field.setLabelText(attr.getLabelString());
-				field.setEntryMap(new TreeMap(map));
-				field.setRequired(attr.isRequired());
-				field.setToolTip(attr.getDescription());
-				return field;
-			}
-			// eles the config is incorrect. fall through, will return null.
-		} else if (IValueType.RELATIVEPATH.equalsIgnoreCase(type)) {
-			String param = attr.getTypeParameter();
+		String type = attr.getValueType();
+		
+		IPossibleValues pvs = (IPossibleValues)attr.getAdapter(IPossibleValues.class);
+//		IDefaultValue defaultValue = (IDefaultValue)attr.getAdapter(IDefaultValue.class);
+//		ICellEditorValidator validator = (ICellEditorValidator)attr.getAdapter(ICellEditorValidator.class);
+		
+		
+
+		if (IAttributeRuntimeValueType.RELATIVEPATH.equals(type) ||
+				IAttributeRuntimeValueType.WEBPATH.equals(type)) {
+			Trait fileExt = TaglibDomainMetaDataQueryHelper.getTrait(attr.getMetaDataContext().getEntity(), "file-extensions");
+			Trait seperator = TaglibDomainMetaDataQueryHelper.getTrait(attr.getMetaDataContext().getEntity(), "separator");
+			
+			String[] fileExts = null;
+			if (fileExt != null){
+				List exts = TraitValueHelper.getValueAsListOfStrings(fileExt);
+				fileExts = (String[])exts.toArray(new String[exts.size()]);
+			} 
+			
+			String sep = null;
+			if (seperator != null)
+				sep = TraitValueHelper.getValueAsString(seperator);
+		
 			ContextableResourceButtonDialogField field = new ContextableResourceButtonDialogField();
-			field.setLabelText(attr.getLabelString());
-			if (param != null) {
-				field.setSuffixs(attr.getParameterByName(
-						IAttributeDescriptor.PARAMETER_SUFFIX).split(";"));
+			field.setLabelText(attr.getLabel());
+			if (fileExts != null) {
+				field.setSuffixs(fileExts);
 			}
-			field.setResourceDescription(ResourceBoundle
-					.getString("FileCellEditor.Msg"));
-			field.setRequired(attr.isRequired());
-			field.setToolTip(attr.getDescription());
-			return field;
-		} else if (IValueType.WEBPATH.equalsIgnoreCase(type)) {
-			String param = attr.getTypeParameter();
-			ContextableResourceButtonDialogField field = new ContextableResourceButtonDialogField();
-			field.setLabelText(attr.getLabelString());
-			if (param != null) {
-				field.setSuffixs(attr.getParameterByName(
-						IAttributeDescriptor.PARAMETER_SUFFIX).split(";"));
-				field
-						.setSeparator(attr
-								.getParameterByName(IAttributeDescriptor.PARAMETER_SEPARATOR));
+			
+			if (sep != null) {
+				field.setSeparator(sep);
 			}
+			
 			if ("".equalsIgnoreCase(field.getSeparator())) {
 				field.setResourceDescription(ResourceBoundle
 						.getString("FileCellEditor.Msg"));
@@ -409,51 +185,37 @@
 				field.setResourceDescription(ResourceBoundle
 						.getString("FileCellEditor.Msg1"));
 			}
-			field.setWebPath(true);
+			field.setWebPath(IAttributeRuntimeValueType.WEBPATH.equals(type));
 			field.setRequired(attr.isRequired());
 			field.setToolTip(attr.getDescription());
 			return field;
-		} else if (IValueType.CLASSPATH_RESOURCE.equals(type)) {
+
+		} else if (IAttributeRuntimeValueType.CLASSPATH_RESOURCE.equals(type)) {
 			ClasspathResourceButtonDialogField field = new ClasspathResourceButtonDialogField();
 			field.setRequired(attr.isRequired());
 			field.setToolTip(attr.getDescription());
 			return field;
-		} else if (IValueType.BOOLEAN.equalsIgnoreCase(type)) {
-			String defaultValue = attr
-					.getParameterByName(IAttributeDescriptor.PARAMETER_DEFAULT);
-			StyleComboDialogField field = new StyleComboDialogField(SWT.NONE);
-			TreeMap map = new TreeMap();
-			map.put("", "");
-			map.put(Boolean.FALSE.toString(), Boolean.FALSE.toString());
-			map.put(Boolean.TRUE.toString(), Boolean.TRUE.toString());
-			field.setEntryMap(map);
-			field.setDefaultValue(defaultValue);
-			field.setLabelText(attr.getLabelString());
-			field.setRequired(attr.isRequired());
-			field.setToolTip(attr.getDescription());
-			return field;
-		} else if (IValueType.CSSSTYLE.equalsIgnoreCase(type)) {
-			String param = attr
-					.getParameterByName(IAttributeDescriptor.PARAMETER_STYLE);
-			if (!"STYLE".equalsIgnoreCase(param)) {
-				return null;
-			}
+		} else if (IAttributeRuntimeValueType.CSSSTYLE.equalsIgnoreCase(type)) {
+//			String param = getParamterValue(attr, "style");
+//			if (!"STYLE".equalsIgnoreCase(param)) {
+//				return null;
+//			}
 			StyleButtonDialogField field = new StyleButtonDialogField();
 			field.setRequired(attr.isRequired());
 			field.setToolTip(attr.getDescription());
+			field.setLabelText(attr.getLabel());
 			return field;
-		} else if (IValueType.CURRENCYCODE.equalsIgnoreCase(type)) {
-			ComboDialogField field = new ComboDialogField(SWT.NONE);
-			field.setLabelText(attr.getLabelString());
-			field.setItems(CURRENCYCODES);
-			field.setRequired(attr.isRequired());
+		
+//		// if there is no type or type unknown, then we just return null. and
+//		// system will
+//		// create default (text cell editor).
+		} else if (pvs != null) {
+			MDEnabledComboDialogField field = new MDEnabledComboDialogField(SWT.None);
+			field.setLabelText(attr.getLabel());
 			field.setToolTip(attr.getDescription());
+			field.setRequired(attr.isRequired());
 			return field;
 		}
-
-		// if there is no type or type unknonw, then we just return null. and
-		// system will
-		// create default (text cell editor).
 		return null;
 	}
 
@@ -469,7 +231,7 @@
 	}
 
 	public String[] getSupportedValueTypes() {
-		return null;
+		return null;//default - all!
 	}
 
 	private IFile getFile(Element element) {
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/CellEditorWrapper.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/CellEditorWrapper.java
index 90f9589..011ff99 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/CellEditorWrapper.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/CellEditorWrapper.java
@@ -157,7 +157,7 @@
 	 * class override this method to provide image. Rather than setting as
 	 * property.
 	 * 
-	 * @return the binding image
+	 * @return image
 	 */
 	protected abstract Image getBindingImage();
 
@@ -168,13 +168,13 @@
 	 * widget, using the same font and background color as the parent control.
 	 * </p>
 	 * <p>
-	 * Subclasses may reimplement. If you reimplement this method, you should
-	 * also reimplement <code>updateContents</code>.
+	 * Subclasses may re-implement. If you re-implement this method, you should
+	 * also re-implement <code>updateContents</code>.
 	 * </p>
 	 * 
 	 * @param cell
 	 *            the control for this cell editor
-	 * @return the control
+	 * @return control
 	 */
 	protected Control createContents(Composite cell) {
 		_wrapped = createWrappedCellEditor(cell);
@@ -222,7 +222,7 @@
 
 	/**
 	 * @param cell
-	 * @return the cell editor
+	 * @return CellEditor
 	 */
 	protected abstract CellEditor createWrappedCellEditor(Composite cell);
 
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/LabeledComboBoxCellEditor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/LabeledComboBoxCellEditor.java
index 6d8d335..efd1df0 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/LabeledComboBoxCellEditor.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/LabeledComboBoxCellEditor.java
@@ -36,10 +36,11 @@
 	private Object[] _values;
 
 	/**
+	 * Create LabeledComboBoxCellEditor
 	 * @param parent
 	 * @param valueLabelMap
 	 * @param style
-	 * @return the new instance
+	 * @return LabeledComboBoxCellEditor
 	 */
 	public static LabeledComboBoxCellEditor newInstance(Composite parent,
 			Map valueLabelMap, int style) {
@@ -68,9 +69,11 @@
 	}
 
 	/**
+	 * Constructor
+	 * 
 	 * @param parent
-	 * @param values 
-	 * @param labels 
+	 * @param values
+	 * @param labels
 	 */
 	public LabeledComboBoxCellEditor(Composite parent, Object[] values,
 			String[] labels) {
@@ -78,9 +81,11 @@
 	}
 
 	/**
+	 * Constructor
+	 * 
 	 * @param parent
-	 * @param values 
-	 * @param labels 
+	 * @param values
+	 * @param labels
 	 * @param style
 	 */
 	public LabeledComboBoxCellEditor(Composite parent, Object[] values,
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/LabeledStyleComboCellEditor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/LabeledStyleComboCellEditor.java
index 04da086..e8a47d5 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/LabeledStyleComboCellEditor.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/LabeledStyleComboCellEditor.java
@@ -14,11 +14,16 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
+import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jst.jsf.common.ui.internal.utils.StyleCombo;
+import org.eclipse.jst.jsf.metadataprocessors.features.IDefaultValue;
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValue;
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.wst.sse.ui.internal.Logger;
 
@@ -66,9 +71,11 @@
 	}
 
 	/**
+	 * Constructor
+	 * 
 	 * @param parent
-	 * @param values 
-	 * @param labels 
+	 * @param values
+	 * @param labels
 	 * @param defaultValue 
 	 * @param style
 	 */
@@ -76,7 +83,8 @@
 			String[] labels, String defaultValue, int style) {
 		super(parent, labels, style);
 		StyleCombo combo = (StyleCombo) getControl();
-		combo.setDefaultValue(defaultValue);
+		if (defaultValue != null)
+			combo.setDefaultValue(defaultValue);
 		_values = values;
 	}
 
@@ -145,4 +153,33 @@
 			}
 		}
 	}
+
+	/**
+	 * Create CellEditor
+	 * @param parent
+	 * @param pvs
+	 * @param defaultValue
+	 * @param style
+	 * @return CellEditor
+	 */
+	public static CellEditor newInstance(Composite parent, IPossibleValues pvs,
+			IDefaultValue defaultValue, int style) {
+	
+		CellEditor ed = null;
+		if (pvs != null) {
+			Map map = getPossibleValueMap(pvs);
+			ed = newInstance(parent, map, defaultValue != null ? defaultValue.getDefaultValue() : null, style);
+		}
+		
+		return ed;
+	}
+
+	private static Map getPossibleValueMap(IPossibleValues pvs) {
+		Map<String, String> map = new HashMap<String, String>(pvs.getPossibleValues().size());
+		for (Iterator it = pvs.getPossibleValues().iterator();it.hasNext();){
+			IPossibleValue pv = (IPossibleValue)it.next();
+			map.put(pv.getValue(), pv.getDisplayValue());
+		}
+		return map;
+	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/MDEnabledComboDialogField.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/MDEnabledComboDialogField.java
new file mode 100644
index 0000000..a7f7d8d
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/MDEnabledComboDialogField.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Oracle - initial API and implementation
+ *
+ ********************************************************************************/
+package org.eclipse.jst.pagedesigner.properties.celleditors;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.StyleComboDialogField;
+import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext;
+import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContextFactory;
+import org.eclipse.jst.jsf.metadataprocessors.features.IDefaultValue;
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValue;
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.IElementContextable;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+
+/**
+ * This combo dialog field defers loading the combos until the element context has been set
+ *
+ */
+public class MDEnabledComboDialogField extends StyleComboDialogField implements IElementContextable {
+
+	/**
+	 * Constructor
+	 * @param flags
+	 */
+	public MDEnabledComboDialogField(int flags) {
+		super(flags);
+	}
+
+	public void setElementContext(IDOMNode ancester, IDOMElement element) {
+		IStructuredDocumentContext sdContext =IStructuredDocumentContextFactory.INSTANCE.getContext(element.getStructuredDocument(), element);
+		IPropertyPageDescriptor ppd = (IPropertyPageDescriptor)getAttachedData("KEY_ATTR");//FIXME use constant
+		ppd.setStructuredDocumentContext(sdContext);
+		IPossibleValues pvs = (IPossibleValues)ppd.getAdapter(IPossibleValues.class);
+		IDefaultValue def = (IDefaultValue)ppd.getAdapter(IDefaultValue.class);
+		if (def != null)
+			setDefaultValue(def.getDefaultValue());
+		if (pvs.getPossibleValues() != null)
+			setEntryMap(getMapOfPossibleValues(pvs));
+	}
+
+	private Map getMapOfPossibleValues(IPossibleValues pvs) {
+		Map map = new TreeMap<String, String>();
+		for (Iterator<IPossibleValue> it=pvs.getPossibleValues().iterator();it.hasNext();){
+			IPossibleValue pv = it.next();
+			map.put(pv.getValue(), pv.getDisplayValue());
+		}
+		return map;
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/NamedBooleanCellEditor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/NamedBooleanCellEditor.java
index 23929eb..d2cd08d 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/NamedBooleanCellEditor.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/NamedBooleanCellEditor.java
@@ -18,6 +18,7 @@
 /**
  * @author mengbo
  * @version 1.5
+ * Unused???
  */
 public class NamedBooleanCellEditor extends LabeledComboBoxCellEditor {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/OLDCellEditorFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/OLDCellEditorFactory.java
new file mode 100644
index 0000000..3c5bf72
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/OLDCellEditorFactory.java
@@ -0,0 +1,483 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Sybase, Inc. and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Sybase, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.properties.celleditors;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.TimeZone;
+import java.util.TreeMap;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.ComboDialogField;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.StyleComboDialogField;
+import org.eclipse.jst.pagedesigner.css2.CSSUtil;
+import org.eclipse.jst.pagedesigner.jsp.core.IJSPCoreConstants;
+import org.eclipse.jst.pagedesigner.meta.IAttributeCellEditorFactory;
+import org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor;
+import org.eclipse.jst.pagedesigner.meta.OLDIValueType;
+import org.eclipse.jst.pagedesigner.ui.dialogfields.ClasspathResourceButtonDialogField;
+import org.eclipse.jst.pagedesigner.ui.dialogfields.ContextableResourceButtonDialogField;
+import org.eclipse.jst.pagedesigner.ui.dialogfields.StyleButtonDialogField;
+import org.eclipse.jst.pagedesigner.utils.StructuredModelUtil;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.w3c.dom.Element;
+
+/**
+ * 
+ * @author mengbo
+ * @deprecated
+ */
+public class OLDCellEditorFactory implements IAttributeCellEditorFactory {
+	private static String[] CURRENCYCODES = { "AED", // United Arab Emirates,
+			// Dirhams //$NON-NLS-1$
+			"AFA", // Afghanistan, Afghanis //$NON-NLS-1$
+			"ALL", // Albania, Leke //$NON-NLS-1$
+			"AMD", // Armenia, Drams //$NON-NLS-1$
+			"ANG", // Netherlands Antilles, Guilders (also called Florins)//$NON-NLS-1$
+			"AOA", // Angola, Kwanza //$NON-NLS-1$
+			"ARS", // Argentina, Pesos //$NON-NLS-1$
+			"AUD", // Australia, Dollars //$NON-NLS-1$
+			"AWG", // Aruba, Guilders (also called Florins) //$NON-NLS-1$
+			"AZM", // Azerbaijan, Manats //$NON-NLS-1$
+			"BAM", // Bosnia and Herzegovina, Convertible Marka //$NON-NLS-1$
+			"BBD", // Barbados, Dollars //$NON-NLS-1$
+			"BDT", // Bangladesh, Taka //$NON-NLS-1$
+			"BGN", // Bulgaria, Leva //$NON-NLS-1$
+			"BHD", // Bahrain, Dinars //$NON-NLS-1$
+			"BIF", // Burundi, Francs //$NON-NLS-1$
+			"BMD", // Bermuda, Dollars //$NON-NLS-1$
+			"BND", // Brunei Darussalam, Dollars //$NON-NLS-1$
+			"BOB", // Bolivia, Bolivianos //$NON-NLS-1$
+			"BRL", // Brazil, Brazil Real //$NON-NLS-1$
+			"BSD", // Bahamas, Dollars //$NON-NLS-1$
+			"BTN", // Bhutan, Ngultrum //$NON-NLS-1$
+			"BWP", // Botswana, Pulas //$NON-NLS-1$
+			"BYR", // Belarus, Rubles //$NON-NLS-1$
+			"BZD", // Belize, Dollars //$NON-NLS-1$
+			"CAD", // Canada, Dollars //$NON-NLS-1$
+			"CDF", // Congo/Kinshasa, Congolese Francs //$NON-NLS-1$
+			"CHF", // Switzerland, Francs //$NON-NLS-1$
+			"CLP", // Chile, Pesos //$NON-NLS-1$
+			"CNY", // China, Yuan Renminbi //$NON-NLS-1$
+			"COP", // Colombia, Pesos //$NON-NLS-1$
+			"CRC", // Costa Rica, Colones //$NON-NLS-1$
+			"CSD", // Serbia, Dinars //$NON-NLS-1$
+			"CUP", // Cuba, Pesos //$NON-NLS-1$
+			"CVE", // Cape Verde, Escudos //$NON-NLS-1$
+			"CYP", // Cyprus, Pounds //$NON-NLS-1$
+			"CZK", // Czech Republic, Koruny //$NON-NLS-1$
+			"DJF", // Djibouti, Francs //$NON-NLS-1$
+			"DKK", // Denmark, Kroner //$NON-NLS-1$
+			"DOP", // Dominican Republic, Pesos //$NON-NLS-1$
+			"DZD", // Algeria, Algeria Dinars //$NON-NLS-1$
+			"EEK", // Estonia, Krooni //$NON-NLS-1$
+			"EGP", // Egypt, Pounds //$NON-NLS-1$
+			"ERN", // Eritrea, Nakfa //$NON-NLS-1$
+			"ETB", // Ethiopia, Birr //$NON-NLS-1$
+			"EUR", // Euro Member Countries, Euro //$NON-NLS-1$
+			"FJD", // Fiji, Dollars //$NON-NLS-1$
+			"FKP", // Falkland Islands (Malvinas), Pounds //$NON-NLS-1$
+			"GBP", // United Kingdom, Pounds //$NON-NLS-1$
+			"GEL", // Georgia, Lari //$NON-NLS-1$
+			"GGP", // Guernsey, Pounds //$NON-NLS-1$
+			"GHC", // Ghana, Cedis //$NON-NLS-1$
+			"GIP", // Gibraltar, Pounds //$NON-NLS-1$
+			"GMD", // Gambia, Dalasi //$NON-NLS-1$
+			"GNF", // Guinea, Francs //$NON-NLS-1$
+			"GTQ", // Guatemala, Quetzales //$NON-NLS-1$
+			"GYD", // Guyana, Dollars //$NON-NLS-1$
+			"HKD", // Hong Kong, Dollars //$NON-NLS-1$
+			"HNL", // Honduras, Lempiras //$NON-NLS-1$
+			"HRK", // Croatia, Kuna //$NON-NLS-1$
+			"HTG", // Haiti, Gourdes //$NON-NLS-1$
+			"HUF", // Hungary, Forint //$NON-NLS-1$
+			"IDR", // Indonesia, Rupiahs //$NON-NLS-1$
+			"ILS", // Israel, New Shekels //$NON-NLS-1$
+			"IMP", // Isle of Man, Pounds //$NON-NLS-1$
+			"INR", // India, Rupees //$NON-NLS-1$
+			"IQD", // Iraq, Dinars //$NON-NLS-1$
+			"IRR", // Iran, Rials //$NON-NLS-1$
+			"ISK", // Iceland, Kronur //$NON-NLS-1$
+			"JEP", // Jersey, Pounds //$NON-NLS-1$
+			"JMD", // Jamaica, Dollars //$NON-NLS-1$
+			"JOD", // Jordan, Dinars //$NON-NLS-1$
+			"JPY", // Japan, Yen //$NON-NLS-1$
+			"KES", // Kenya, Shillings //$NON-NLS-1$
+			"KGS", // Kyrgyzstan, Soms //$NON-NLS-1$
+			"KHR", // Cambodia, Riels //$NON-NLS-1$
+			"KMF", // Comoros, Francs //$NON-NLS-1$
+			"KPW", // Korea (North), Won //$NON-NLS-1$
+			"KRW", // Korea (South), Won //$NON-NLS-1$
+			"KWD", // Kuwait, Dinars //$NON-NLS-1$
+			"KYD", // Cayman Islands, Dollars //$NON-NLS-1$
+			"KZT", // Kazakhstan, Tenge //$NON-NLS-1$
+			"LAK", // Laos, Kips //$NON-NLS-1$
+			"LBP", // Lebanon, Pounds //$NON-NLS-1$
+			"LKR", // Sri Lanka, Rupees //$NON-NLS-1$
+			"LRD", // Liberia, Dollars //$NON-NLS-1$
+			"LSL", // Lesotho, Maloti //$NON-NLS-1$
+			"LTL", // Lithuania, Litai //$NON-NLS-1$
+			"LVL", // Latvia, Lati //$NON-NLS-1$
+			"LYD", // Libya, Dinars //$NON-NLS-1$
+			"MAD", // Morocco, Dirhams //$NON-NLS-1$
+			"MDL", // Moldova, Lei //$NON-NLS-1$
+			"MGA", // Madagascar, Ariary //$NON-NLS-1$
+			"MKD", // Macedonia, Denars //$NON-NLS-1$
+			"MMK", // Myanmar (Burma), Kyats //$NON-NLS-1$
+			"MNT", // Mongolia, Tugriks //$NON-NLS-1$
+			"MOP", // Macau, Patacas //$NON-NLS-1$
+			"MRO", // Mauritania, Ouguiyas //$NON-NLS-1$
+			"MTL", // Malta, Liri //$NON-NLS-1$
+			"MUR", // Mauritius, Rupees //$NON-NLS-1$
+			"MVR", // Maldives (Maldive Islands), Rufiyaa //$NON-NLS-1$
+			"MWK", // Malawi, Kwachas //$NON-NLS-1$
+			"MXN", // Mexico, Pesos //$NON-NLS-1$
+			"MYR", // Malaysia, Ringgits //$NON-NLS-1$
+			"MZM", // Mozambique, Meticais //$NON-NLS-1$
+			"NAD", // Namibia, Dollars //$NON-NLS-1$
+			"NGN", // Nigeria, Nairas //$NON-NLS-1$
+			"NIO", // Nicaragua, Cordobas //$NON-NLS-1$
+			"NOK", // Norway, Krone //$NON-NLS-1$
+			"NPR", // Nepal, Nepal Rupees //$NON-NLS-1$
+			"NZD", // New Zealand, Dollars //$NON-NLS-1$
+			"OMR", // Oman, Rials //$NON-NLS-1$
+			"PAB", // Panama, Balboa //$NON-NLS-1$
+			"PEN", // Peru, Nuevos Soles //$NON-NLS-1$
+			"PGK", // Papua New Guinea, Kina //$NON-NLS-1$
+			"PHP", // Philippines, Pesos //$NON-NLS-1$
+			"PKR", // Pakistan, Rupees //$NON-NLS-1$
+			"PLN", // Poland, Zlotych //$NON-NLS-1$
+			"PYG", // Paraguay, Guarani //$NON-NLS-1$
+			"QAR", // Qatar, Rials //$NON-NLS-1$
+			"ROL", // Romania, Lei //$NON-NLS-1$
+			"RUB", // Russia, Rubles //$NON-NLS-1$
+			"RWF", // Rwanda, Rwanda Francs //$NON-NLS-1$
+			"SAR", // Saudi Arabia, Riyals //$NON-NLS-1$
+			"SBD", // Solomon Islands, Dollars //$NON-NLS-1$
+			"SCR", // Seychelles, Rupees //$NON-NLS-1$
+			"SDD", // Sudan, Dinars //$NON-NLS-1$
+			"SEK", // Sweden, Kronor //$NON-NLS-1$
+			"SGD", // Singapore, Dollars //$NON-NLS-1$
+			"SHP", // Saint Helena, Pounds //$NON-NLS-1$
+			"SIT", // Slovenia, Tolars //$NON-NLS-1$
+			"SKK", // Slovakia, Koruny //$NON-NLS-1$
+			"SLL", // Sierra Leone, Leones //$NON-NLS-1$
+			"SOS", // Somalia, Shillings //$NON-NLS-1$
+			"SPL", // Seborga, Luigini //$NON-NLS-1$
+			"SRD", // Suriname, Dollars //$NON-NLS-1$
+			"STD", // S?o Tome and Principe, Dobras //$NON-NLS-1$
+			"SVC", // El Salvador, Colones //$NON-NLS-1$
+			"SYP", // Syria, Pounds //$NON-NLS-1$
+			"SZL", // Swaziland, Emalangeni //$NON-NLS-1$
+			"THB", // Thailand, Baht //$NON-NLS-1$
+			"TJS", // Tajikistan, Somoni //$NON-NLS-1$
+			"TMM", // Turkmenistan, Manats //$NON-NLS-1$
+			"TND", // Tunisia, Dinars //$NON-NLS-1$
+			"TOP", // Tonga, Pa'anga //$NON-NLS-1$
+			"TRL", // Turkey, Liras [being phased out] //$NON-NLS-1$
+			"TRY", // Turkey, New Lira //$NON-NLS-1$
+			"TTD", // Trinidad and Tobago, Dollars //$NON-NLS-1$
+			"TVD", // Tuvalu, Tuvalu Dollars //$NON-NLS-1$
+			"TWD", // Taiwan, New Dollars //$NON-NLS-1$
+			"TZS", // Tanzania, Shillings //$NON-NLS-1$
+			"UAH", // Ukraine, Hryvnia //$NON-NLS-1$
+			"UGX", // Uganda, Shillings //$NON-NLS-1$
+			"USD", // United States of America, Dollars //$NON-NLS-1$
+			"UYU", // Uruguay, Pesos //$NON-NLS-1$
+			"UZS", // Uzbekistan, Sums //$NON-NLS-1$
+			"VEB", // Venezuela, Bolivares //$NON-NLS-1$
+			"VND", // Viet Nam, Dong //$NON-NLS-1$
+			"VUV", // Vanuatu, Vatu //$NON-NLS-1$
+			"WST", // Samoa, Tala //$NON-NLS-1$
+			"XAF", // Communaut�� Financi��re Africaine BEAC, Francs
+			// //$NON-NLS-1$
+			"XAG", // Silver, Ounces //$NON-NLS-1$
+			"XAU", // Gold, Ounces //$NON-NLS-1$
+			"XCD", // East Caribbean Dollars //$NON-NLS-1$
+			"XDR", // International Monetary Fund (IMF) Special Drawing Rights
+			// //$NON-NLS-1$
+			"XOF", // Communaut�� Financi��re Africaine BCEAO, Francs
+			// //$NON-NLS-1$
+			"XPD", // Palladium Ounces //$NON-NLS-1$
+			"XPF", // Comptoirs Fran?ais du Pacifique Francs //$NON-NLS-1$
+			"XPT", // Platinum, Ounces //$NON-NLS-1$
+			"YER", // Yemen, Rials //$NON-NLS-1$
+			"ZAR", // South Africa, Rand //$NON-NLS-1$
+			"ZMK", // Zambia, Kwacha //$NON-NLS-1$
+			"ZWD" // Zimbabwe, Zimbabwe Dollars //$NON-NLS-1$
+	};
+
+	public CellEditor createCellEditor(Composite parent,
+			IAttributeDescriptor attr, Element element) {
+		String type = attr.getValueType();
+
+		if (OLDIValueType.ENUMERATED.equalsIgnoreCase(type)) {
+			Map map = new HashMap(attr.getOptions());
+			String defaultValue = attr.getDefaultValue();
+			if (defaultValue == null) {
+				return LabeledComboBoxCellEditor.newInstance(parent, map,
+						SWT.NONE);
+			}
+            return LabeledStyleComboCellEditor.newInstance(parent, map,
+            		defaultValue, SWT.NONE);
+		} else if (OLDIValueType.LOCALE.equalsIgnoreCase(type)) {
+			Map map = new HashMap();
+			Locale[] locales = Locale.getAvailableLocales();
+			for (int i = 0, size = locales.length; i < size; i++) {
+				map.put(locales[i].toString(), locales[i].toString());
+			}
+			return LabeledComboBoxCellEditor.newInstance(parent, map, SWT.NONE);
+		} else if (OLDIValueType.TIMEZONE.equalsIgnoreCase(type)) {
+			Map map = new HashMap();
+			String[] ids = TimeZone.getAvailableIDs();
+			for (int i = 0, size = ids.length; i < size; i++) {
+				map.put(ids[i], ids[i]);
+			}
+			return LabeledComboBoxCellEditor.newInstance(parent, map, SWT.NONE);
+		} else if (OLDIValueType.RELATIVEPATH.equalsIgnoreCase(type)
+				|| OLDIValueType.WEBPATH.equalsIgnoreCase(type)) {
+			IProject project = getProject(element);
+			if (project != null) {
+				ResourceDialogCellEditor cellEditor = new ResourceDialogCellEditor(
+						parent);
+				cellEditor.setSuffixs(attr.getParameterByName(
+						IAttributeDescriptor.PARAMETER_SUFFIX).split(";"));
+				cellEditor
+						.setSeparator(attr
+								.getParameterByName(IAttributeDescriptor.PARAMETER_SEPARATOR));
+				cellEditor.setProject(project);
+				cellEditor.setReferredFile(getFile(element));
+				if ("".equalsIgnoreCase(cellEditor.getSeparator())) {
+					cellEditor.setResourceDescription(ResourceBoundle
+							.getString("FileCellEditor.Msg"));
+				} else {
+					cellEditor.setResourceDescription(ResourceBoundle
+							.getString("FileCellEditor.Msg1"));
+				}
+				if (OLDIValueType.WEBPATH.equalsIgnoreCase(type)) {
+					cellEditor.setWebPath(true);
+				}
+
+				if (IJSPCoreConstants.TAG_DIRECTIVE_INCLUDE.equals(element
+						.getLocalName())
+						|| IJSPCoreConstants.TAG_INCLUDE.equals(element
+								.getLocalName())) {
+					cellEditor.setTransformJSPURL(false);
+				}
+				return cellEditor;
+			}
+		} else if (OLDIValueType.CLASSPATH_RESOURCE.equalsIgnoreCase(type)) {
+			return new LoadbundleSelectionCellEditor(parent,
+					getProject(element));
+		} else if (OLDIValueType.CSSID.equalsIgnoreCase(type)) {
+		    // TODO: missing case?
+		} else if (OLDIValueType.CSSCLASS.equalsIgnoreCase(type)) {
+			String cssclasses[] = CSSUtil.getCSSClasses(element
+					.getOwnerDocument());
+			Map map = new HashMap();
+			if (cssclasses != null) {
+				for (int i = 0; i < cssclasses.length; i++) {
+					map.put(cssclasses[i], cssclasses[i]);
+				}
+			}
+			return LabeledComboBoxCellEditor.newInstance(parent, map, SWT.NONE);
+		} else if (OLDIValueType.BOOLEAN.equalsIgnoreCase(type)) {
+			String defaultValue = attr
+					.getParameterByName(IAttributeDescriptor.PARAMETER_DEFAULT);
+			Map booleanMap = new HashMap();
+			booleanMap.put(Boolean.TRUE.toString(), Boolean.TRUE.toString());
+			booleanMap.put(Boolean.FALSE.toString(), Boolean.FALSE.toString());
+			if (defaultValue == null) {
+				return LabeledComboBoxCellEditor.newInstance(parent,
+						booleanMap, SWT.NONE);
+			}
+            return LabeledStyleComboCellEditor.newInstance(parent,
+            		booleanMap, defaultValue, SWT.NONE);
+		} else if (OLDIValueType.CSSSTYLE.equalsIgnoreCase(type)) {
+			String param = attr
+					.getParameterByName(IAttributeDescriptor.PARAMETER_STYLE);
+			if (!param.equalsIgnoreCase("STYLE")) {
+				return null;
+			}
+			CSSDialogCellEditor cellEditor = new CSSDialogCellEditor(parent,
+					(IDOMElement) element);
+			return cellEditor;
+		} else if (OLDIValueType.NAMED_BOOLEAN.equalsIgnoreCase(type)) {
+			return NamedBooleanCellEditor.newInstance(parent, SWT.NONE,
+					(IDOMElement) element, attr);
+		} else if (OLDIValueType.CURRENCYCODE.equalsIgnoreCase(type)) {
+			Map map = new HashMap();
+			for (int i = 0, n = CURRENCYCODES.length; i < n; i++) {
+				map.put(CURRENCYCODES[i], CURRENCYCODES[i]);
+			}
+
+			return LabeledComboBoxCellEditor.newInstance(parent, map, SWT.NONE);
+		}
+
+		// if there is no type or type unknonw, then we just return null. and
+		// system will
+		// create default (text cell editor).
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jst.pagedesigner.meta.IAttributeCellEditorFactory#createDialogField(org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor,
+	 *      org.w3c.dom.Element, org.w3c.dom.Element)
+	 */
+	public DialogField createDialogField(IAttributeDescriptor attr) {
+		String type = attr.getValueType();
+
+		if (OLDIValueType.ENUMERATED.equalsIgnoreCase(type)
+				|| OLDIValueType.LOCALE.equalsIgnoreCase(type)
+				|| OLDIValueType.TIMEZONE.equalsIgnoreCase(type)) {
+			Map map = new HashMap();
+			if (OLDIValueType.ENUMERATED.equalsIgnoreCase(type)) {
+				map = attr.getOptions();
+			} else if (OLDIValueType.LOCALE.equalsIgnoreCase(type)) {
+				Locale[] locales = Locale.getAvailableLocales();
+				for (int i = 0, size = locales.length; i < size; i++) {
+					map.put(locales[i].toString(), locales[i].toString());
+				}
+			} else {
+				String[] ids = TimeZone.getAvailableIDs();
+				for (int i = 0, size = ids.length; i < size; i++) {
+					map.put(ids[i], ids[i]);
+				}
+			}
+			if (map != null && !map.isEmpty()) {
+				String defaultValue = attr.getDefaultValue();
+				if (defaultValue == null || "".equals(defaultValue)) {
+					attr
+							.getParameterByName(IAttributeDescriptor.PARAMETER_DEFAULT);
+				}
+				StyleComboDialogField field = new StyleComboDialogField(
+						SWT.NONE);
+				field.setDefaultValue(defaultValue);
+				field.setLabelText(attr.getLabelString());
+				field.setEntryMap(new TreeMap(map));
+				field.setRequired(attr.isRequired());
+				field.setToolTip(attr.getDescription());
+				return field;
+			}
+			// eles the config is incorrect. fall through, will return null.
+		} else if (OLDIValueType.RELATIVEPATH.equalsIgnoreCase(type)) {
+			String param = attr.getTypeParameter();
+			ContextableResourceButtonDialogField field = new ContextableResourceButtonDialogField();
+			field.setLabelText(attr.getLabelString());
+			if (param != null) {
+				field.setSuffixs(attr.getParameterByName(
+						IAttributeDescriptor.PARAMETER_SUFFIX).split(";"));
+			}
+			field.setResourceDescription(ResourceBoundle
+					.getString("FileCellEditor.Msg"));
+			field.setRequired(attr.isRequired());
+			field.setToolTip(attr.getDescription());
+			return field;
+		} else if (OLDIValueType.WEBPATH.equalsIgnoreCase(type)) {
+			String param = attr.getTypeParameter();
+			ContextableResourceButtonDialogField field = new ContextableResourceButtonDialogField();
+			field.setLabelText(attr.getLabelString());
+			if (param != null) {
+				field.setSuffixs(attr.getParameterByName(
+						IAttributeDescriptor.PARAMETER_SUFFIX).split(";"));
+				field
+						.setSeparator(attr
+								.getParameterByName(IAttributeDescriptor.PARAMETER_SEPARATOR));
+			}
+			if ("".equalsIgnoreCase(field.getSeparator())) {
+				field.setResourceDescription(ResourceBoundle
+						.getString("FileCellEditor.Msg"));
+			} else {
+				field.setResourceDescription(ResourceBoundle
+						.getString("FileCellEditor.Msg1"));
+			}
+			field.setWebPath(true);
+			field.setRequired(attr.isRequired());
+			field.setToolTip(attr.getDescription());
+			return field;
+		} else if (OLDIValueType.CLASSPATH_RESOURCE.equals(type)) {
+			ClasspathResourceButtonDialogField field = new ClasspathResourceButtonDialogField();
+			field.setRequired(attr.isRequired());
+			field.setToolTip(attr.getDescription());
+			return field;
+		} else if (OLDIValueType.BOOLEAN.equalsIgnoreCase(type)) {
+			String defaultValue = attr
+					.getParameterByName(IAttributeDescriptor.PARAMETER_DEFAULT);
+			StyleComboDialogField field = new StyleComboDialogField(SWT.NONE);
+			TreeMap map = new TreeMap();
+			map.put("", "");
+			map.put(Boolean.FALSE.toString(), Boolean.FALSE.toString());
+			map.put(Boolean.TRUE.toString(), Boolean.TRUE.toString());
+			field.setEntryMap(map);
+			field.setDefaultValue(defaultValue);
+			field.setLabelText(attr.getLabelString());
+			field.setRequired(attr.isRequired());
+			field.setToolTip(attr.getDescription());
+			return field;
+		} else if (OLDIValueType.CSSSTYLE.equalsIgnoreCase(type)) {
+			String param = attr
+					.getParameterByName(IAttributeDescriptor.PARAMETER_STYLE);
+			if (!"STYLE".equalsIgnoreCase(param)) {
+				return null;
+			}
+			StyleButtonDialogField field = new StyleButtonDialogField();
+			field.setRequired(attr.isRequired());
+			field.setToolTip(attr.getDescription());
+			return field;
+		} else if (OLDIValueType.CURRENCYCODE.equalsIgnoreCase(type)) {
+			ComboDialogField field = new ComboDialogField(SWT.NONE);
+			field.setLabelText(attr.getLabelString());
+			field.setItems(CURRENCYCODES);
+			field.setRequired(attr.isRequired());
+			field.setToolTip(attr.getDescription());
+			return field;
+		}
+
+		// if there is no type or type unknonw, then we just return null. and
+		// system will
+		// create default (text cell editor).
+		return null;
+	}
+
+	private IProject getProject(Element element) {
+		if (element instanceof IDOMElement) {
+			IDOMModel model = ((IDOMElement) element).getModel();
+			IFile file = StructuredModelUtil.getFileFor(model);
+			if (file != null) {
+				return file.getProject();
+			}
+		}
+		return null;
+	}
+
+	public String[] getSupportedValueTypes() {
+		return null;
+	}
+
+	private IFile getFile(Element element) {
+		if (element instanceof IDOMElement) {
+			IDOMModel model = ((IDOMElement) element).getModel();
+			IFile file = StructuredModelUtil.getFileFor(model);
+			return file;
+		}
+		return null;
+	}
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/ResourceDialogCellEditor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/ResourceDialogCellEditor.java
index 32ad7b6..47f2864 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/ResourceDialogCellEditor.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/celleditors/ResourceDialogCellEditor.java
@@ -44,32 +44,29 @@
 
 
 	/**
-	 * 
+	 * Constructor
 	 */
 	public ResourceDialogCellEditor() {
 		super();
 	}
-
-    /**
-     * @param parent
-     */
-    public ResourceDialogCellEditor(Composite parent) {
+	
+	/**
+	 * Constructor
+	 * @param parent 
+	 */
+	public ResourceDialogCellEditor(Composite parent) {
 		super(parent);
 	}
-
+	
 	/**
-	 * @param parent
-	 * @param style
+	 * Constructor
+	 * @param parent 
+	 * @param style 
 	 */
 	public ResourceDialogCellEditor(Composite parent, int style) {
 		super(parent, style);
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.DialogCellEditor#openDialogBox(org.eclipse.swt.widgets.Control)
-	 */
 	protected Object openDialogBox(Control cellEditorWindow) {
 		Shell shell = cellEditorWindow.getShell();
 		int style = "".equals(_separator) ? SWT.NONE : SWT.MULTI | SWT.H_SCROLL
@@ -149,6 +146,15 @@
 	 * @return Returns the resourceDescription.
 	 */
 	public String getResourceDescription() {
+		if (_resourceDescription == null) {
+			if ("".equalsIgnoreCase(getSeparator())) {
+				_resourceDescription = ResourceBoundle
+						.getString("FileCellEditor.Msg");
+			} else {
+				_resourceDescription = ResourceBoundle
+						.getString("FileCellEditor.Msg1");
+			}			
+		}
 		return _resourceDescription;
 	}
 
@@ -161,7 +167,7 @@
 	}
 
 	/**
-	 * @return Returns the suffixs.
+	 * @return Returns the suffixes.
 	 */
 	public String[] getSuffixs() {
 		return _suffixs;
@@ -169,7 +175,7 @@
 
 	/**
 	 * @param suffixs
-	 *            The suffixs to set.
+	 *            The suffixes to set.
 	 */
 	public void setSuffixs(String[] suffixs) {
 		this._suffixs = suffixs;
@@ -192,14 +198,14 @@
 	}
 
 	/**
-	 * @return the separator
+	 * @return separator to use for between values
 	 */
 	public String getSeparator() {
 		return _separator;
 	}
 
 	/**
-	 * @param separator
+	 * @param separator to use for between values
 	 */
 	public void setSeparator(String separator) {
 		this._separator = separator;
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/AllPropertySectionDescriptor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/AllPropertySectionDescriptor.java
new file mode 100644
index 0000000..c6dcced
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/AllPropertySectionDescriptor.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.properties.internal;
+
+import org.eclipse.jst.pagedesigner.properties.AllPropertySection;
+import org.eclipse.ui.views.properties.tabbed.AbstractSectionDescriptor;
+import org.eclipse.ui.views.properties.tabbed.ISection;
+
+/**
+ * SectionDescriptor for the WPE Attributes tab
+ */
+public class AllPropertySectionDescriptor extends AbstractSectionDescriptor {
+	/**
+	 * Id for the WPE AllPropertySectionDescriptor
+	 */
+	public static final String ID = "AllPropertySectionDescriptor";
+
+	private ISection section;
+
+	public String getId() {
+		return ID;
+	}
+
+	public ISection getSectionClass() {
+		if (section == null){
+			section = new AllPropertySection();
+		}
+		return section;
+	}
+
+	public String getTargetTab() {
+		return AttributesTabDescriptor.TAB_ID;
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/AttributesTabDescriptor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/AttributesTabDescriptor.java
new file mode 100644
index 0000000..ea13c77
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/AttributesTabDescriptor.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.properties.internal;
+
+import java.util.List;
+import java.util.Vector;
+
+import org.eclipse.ui.views.properties.tabbed.AbstractTabDescriptor;
+import org.eclipse.ui.views.properties.tabbed.ISectionDescriptor;
+
+/**
+ * Attributes tab descriptor
+ *
+ */
+public class AttributesTabDescriptor extends AbstractTabDescriptor {
+	
+	/**
+	 * Attributes tab id 
+	 */
+	public static final String TAB_ID = "jst.pagedesigner.tabbed.properties.attributes";
+
+	private Vector<ISectionDescriptor> descriptors;
+	
+	/**
+	 * Constructor
+	 */
+	public AttributesTabDescriptor(){
+		super();
+		descriptors = new Vector<ISectionDescriptor>(1);
+		descriptors.add(new AllPropertySectionDescriptor());
+	}
+	
+	@Override
+	public List getSectionDescriptors() {		
+		return descriptors;
+	}
+
+	public String getCategory() {
+		return "attributes";
+	}
+
+	public String getId() {
+		return TAB_ID;
+	}
+
+	public String getLabel() {
+		return "Attributes";
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/DefaultPropertyPageDescriptor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/DefaultPropertyPageDescriptor.java
new file mode 100644
index 0000000..227da3d
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/DefaultPropertyPageDescriptor.java
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.properties.internal;
+
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jst.jsf.common.metadata.Entity;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField;
+import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
+import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext;
+import org.eclipse.jst.jsf.metadataprocessors.MetaDataContext;
+import org.eclipse.jst.jsf.taglibprocessing.attributevalues.StringType;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+import org.eclipse.jst.pagedesigner.meta.EditorCreator;
+import org.eclipse.jst.pagedesigner.meta.IAttributeRuntimeValueType;
+import org.eclipse.jst.pagedesigner.meta.internal.CellEditorFactoryRegistry;
+import org.eclipse.jst.pagedesigner.properties.ITabbedPropertiesConstants;
+import org.eclipse.swt.widgets.Composite;
+import org.w3c.dom.Element;
+
+/**
+ * Property descriptor implementation for when meta data is available,
+ * but the meta data type is not adaptable to a {@link IPropertyPageDescriptor}.
+ * 
+ * It is assumed that the  value type is {@link StringType}.
+ */
+public class DefaultPropertyPageDescriptor implements IPropertyPageDescriptor {
+	private Entity _tagEntity;
+	private Entity _attrEntity;
+	
+	private IStructuredDocumentContext 	_sdContext;
+	private MetaDataContext 			_mdContext;
+	
+	/**
+	 * Constructor
+	 * @param tagEntity
+	 * @param attrEntity
+	 */
+	public DefaultPropertyPageDescriptor(Entity tagEntity, Entity attrEntity) {
+		_tagEntity 	= tagEntity;
+		_attrEntity = attrEntity;
+	}
+
+	public String getAttributeName() {
+		return _attrEntity.getId();
+	}
+
+	public String getCategory() {
+		return ITabbedPropertiesConstants.OTHER_CATEGORY;
+	}
+
+	public CellEditor getCellEditor(Composite parent) {
+		Element element = (Element)IStructuredDocumentContextResolverFactory.INSTANCE.getDOMContextResolver(getStructuredDocumentContext()).getNode();		
+		return CellEditorFactoryRegistry.getInstance().createCellEditor(parent, this, element);
+	}
+
+	public String getDescription() {
+		return null;
+	}
+
+	public DialogField getDialogFieldEditor() {
+		EditorCreator creator = EditorCreator.getInstance();
+		return creator.createDialogFieldWithWrapper(getUri(),
+				getTagName(),this, null);
+	}
+
+	public String getLabel() {
+		return getAttributeName();
+	}
+
+	public String getTagName() {
+		return _tagEntity.getId();
+	}
+
+	public String getUri() {
+		return _tagEntity.getModel().getCurrentModelContext().getUri();
+	}
+
+	public String getValueType() {
+		return IAttributeRuntimeValueType.STRING;
+	}
+
+	public boolean isRequired() {
+		return false;
+	}
+
+	public MetaDataContext getMetaDataContext() {
+		return _mdContext;
+	}
+
+	public IStructuredDocumentContext getStructuredDocumentContext() {
+		return _sdContext;
+	}
+
+	public void setMetaDataContext(MetaDataContext context) {
+		_mdContext = context;
+	}
+
+	public void setStructuredDocumentContext(IStructuredDocumentContext context) {
+		_sdContext = context;
+	}
+
+	public Object getAdapter(Class adapter) {
+		return null;
+	}
+
+	public String toString() {
+		return getUri()+"/"+getTagName()+"/"+getAttributeName()+" (Default Descriptor)";
+	}
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/DesignerSectionDescriptor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/DesignerSectionDescriptor.java
deleted file mode 100644
index 1c2d730..0000000
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/DesignerSectionDescriptor.java
+++ /dev/null
@@ -1,273 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Sybase, Inc. and others.
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Sybase, Inc. - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.pagedesigner.properties.internal;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jst.jsf.common.ui.internal.utils.StringUtil;
-import org.eclipse.jst.jsf.core.internal.tld.CMUtil;
-import org.eclipse.jst.pagedesigner.PDPlugin;
-import org.eclipse.jst.pagedesigner.properties.DesignerPropertyTool;
-import org.eclipse.jst.pagedesigner.properties.ISectionFilter;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroup;
-import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupSection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITypeMapper;
-import org.w3c.dom.Element;
-
-/**
- * @author mengbo
- * @version 1.5
- */
-public class DesignerSectionDescriptor implements ISectionDescriptor {
-	private static final String ATT_ID = "id"; //$NON-NLS-1$
-
-	private static final String ATT_TARGET_TAB = "tab"; //$NON-NLS-1$
-
-	private static final String ATT_AFTER_SECTION = "afterSection"; //$NON-NLS-1$  
-
-	private static final String ATT_CLASS = "class"; //$NON-NLS-1$ 
-
-	private static final String ATT_FILTER = "filter"; //$NON-NLS-1$
-
-	private static final String TOP = "top"; //$NON-NLS-1$
-
-	private static final String TAGFILTER = "tagFilter";
-
-	private static final String CASESENSITIVE = "caseSensitive";
-
-	private static final String TAGNAME = "tagName";
-
-	private static final String URI = "uri";
-
-	private String _id;
-
-	private String _targetTab;
-
-	private String _afterSection;
-
-	private ISectionFilter _sectionFilter;
-
-	private IConfigurationElement _configurationElement;
-
-	private TagFilter[] _tagFilters;
-
-	private static class TagFilter {
-		private String uri;
-
-		private String tag;
-
-		private boolean caseSensitive = false;
-	}
-
-	/**
-	 * Constructor for the section descriptor.
-	 * 
-	 * @param configurationElement
-	 *            the configuration element for the section descriptor.
-	 */
-	public DesignerSectionDescriptor(IConfigurationElement configurationElement) {
-		_configurationElement = configurationElement;
-
-		_id = getConfigurationElement().getAttribute(ATT_ID);
-		_targetTab = getConfigurationElement().getAttribute(ATT_TARGET_TAB);
-		_afterSection = getConfigurationElement().getAttribute(
-				ATT_AFTER_SECTION);
-
-		if (_id == null || _targetTab == null) {
-			// the section id and tab are mandatory - log error
-			handleSectionError(null);
-		}
-		if (getAfterSection() == null) {
-			_afterSection = TOP;
-		}
-
-		String filterClass = getConfigurationElement().getAttribute(ATT_FILTER);
-		if (filterClass != null) {
-			try {
-				Object obj = getConfigurationElement()
-						.createExecutableExtension(ATT_FILTER);
-				if (obj instanceof ISectionFilter) {
-					_sectionFilter = (ISectionFilter) obj;
-				}
-			} catch (CoreException ex) {
-				handleSectionError(ex);
-			}
-		}
-
-		IConfigurationElement[] elements = getConfigurationElement()
-				.getChildren(TAGFILTER);
-		if (elements != null && elements.length > 0) {
-			_tagFilters = new TagFilter[elements.length];
-			for (int i = 0; i < _tagFilters.length; i++) {
-				_tagFilters[i] = new TagFilter();
-				_tagFilters[i].uri = elements[i].getAttribute(URI);
-				_tagFilters[i].tag = elements[i].getAttribute(TAGNAME);
-				_tagFilters[i].caseSensitive = Boolean.TRUE.toString()
-						.equalsIgnoreCase(
-								elements[i].getAttribute(CASESENSITIVE));
-			}
-		}
-	}
-
-	/**
-	 * Handle the section error when an issue is found loading from the
-	 * configuration element.
-	 * 
-	 * @param _configurationElement
-	 *            the configuration element
-	 * @param exception
-	 *            an optional CoreException
-	 */
-	private void handleSectionError(CoreException exception) {
-		PDPlugin.getLogger(DesignerSectionDescriptor.class).error("error",
-				exception);
-		exception.printStackTrace();
-		// String pluginId = PDPlugin.getPluginId();
-		// String message = MessageFormat.format(SECTION_ERROR, new Object[] {
-		// pluginId});
-		// IStatus status = new Status(IStatus.ERROR, pluginId,
-		// CommonUIPropertiesStatusCodes.GENERAL_UI_FAILURE, message,
-		// exception);
-		// CommonUIPropertiesPlugin.getPlugin().getLog().log(status);
-	}
-
-	/**
-	 * see org.eclipse.wst.common.ui.properties.ITabbedPropertySectionDescriptor#getId()
-	 */
-	public String getId() {
-		return _id;
-	}
-
-	/**
-	 * see org.eclipse.wst.common.ui.properties.ITabbedPropertySectionDescriptor#getTargetTab()
-	 */
-	public String getTargetTab() {
-		return _targetTab;
-	}
-
-	/**
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart,
-	 *      org.eclipse.jface.viewers.ISelection)
-	 */
-	public boolean appliesTo(IWorkbenchPart part, ISelection selection) {
-		Element node = DesignerPropertyTool.getElement(part, selection);
-		if (node == null) {
-			return false;
-		}
-		if (_tagFilters != null) {
-			String uri = CMUtil.getElementNamespaceURI(node);
-			String tag = node.getLocalName();
-			for (int i = 0; i < _tagFilters.length; i++) {
-				if (!match(uri, tag, _tagFilters[i])) {
-					return false;
-				}
-			}
-		}
-		if (_sectionFilter != null) {
-			if (!_sectionFilter.appliesTo(node)) {
-				return false;
-			}
-		}
-		return true;
-	}
-
-	/**
-	 * @param uri2
-	 * @param tag
-	 * @param filter
-	 * @return
-	 */
-	private boolean match(String uri, String tag, TagFilter filter) {
-		if (!StringUtil.isSameString(uri, filter.uri)) {
-			return false;
-		}
-		if (uri != null && filter.uri != null && !uri.equals(filter.uri)) {
-			return false;
-		}
-		if (filter.caseSensitive) {
-			return tag.equals(filter.tag);
-		}
-        return tag.equalsIgnoreCase(filter.tag);
-	}
-
-	/**
-	 * see org.eclipse.wst.common.ui.properties.ITabbedPropertySectionDescriptor#getAfterSection()
-	 */
-	public String getAfterSection() {
-		return _afterSection;
-	}
-
-	/**
-	 * Creates an instance of a section described by this descriptor
-	 * 
-	 * see org.eclipse.wst.common.ui.properties.ITabbedPropertySectionDescriptor#getSectionClass()
-	 */
-	public ISection getSectionClass() {
-		ISection section = null;
-		try {
-			Object secOrGroup = getConfigurationElement()
-					.createExecutableExtension(ATT_CLASS);
-			if (secOrGroup instanceof ISection) {
-				section = (ISection) secOrGroup;
-			} else if (secOrGroup instanceof AttributeGroup) {
-				section = new AttributeGroupSection((AttributeGroup) secOrGroup);
-			}
-		} catch (CoreException exception) {
-			handleSectionError(exception);
-		}
-
-		return section;
-	}
-
-	/**
-	 * Gets the input types that are valid for this section.
-	 * 
-	 * see org.eclipse.wst.common.ui.properties.ITabbedPropertySectionDescriptor#getInputTypes()
-	 */
-	public List getInputTypes() {
-		return Collections.EMPTY_LIST;
-	}
-
-	/**
-	 * @see java.lang.Object#toString()
-	 */
-	public String toString() {
-		return getId();
-	}
-
-	/**
-	 * @return Returns the configurationElement.
-	 */
-	private IConfigurationElement getConfigurationElement() {
-		return _configurationElement;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getFilter()
-	 */
-	public ITypeMapper getFilter() {
-		return null;
-	}
-
-	public int getEnablesFor() {
-		return 1;
-	}
-}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/DesignerTabPropertySectionDescriptorProvider.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/DesignerTabPropertySectionDescriptorProvider.java
deleted file mode 100644
index dbbec78..0000000
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/DesignerTabPropertySectionDescriptorProvider.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Sybase, Inc. and others.
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Sybase, Inc. - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.pagedesigner.properties.internal;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jst.pagedesigner.PDPlugin;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptorProvider;
-
-/**
- * The DesignerTagPropertySectionDescriptorProvider will provide the section
- * descriptiors. Now section descriptor come from two sources.
- * 
- * One is reading from the "org.eclipse.jst.pagedesigner.propertyContributor"
- * extension point. This extension point will contribute additional section
- * providers, which provides a set of sections.
- * 
- * One is reading from the "org.eclipse.jst.pagedesigner.propertySections"
- * extension point. This extension provide a single section.
- * 
- * @author mengbo
- * @version 1.5
- */
-public class DesignerTabPropertySectionDescriptorProvider implements
-		ISectionDescriptorProvider {
-	private static final String EXTPT_SECTIONS = "propertySections"; //$NON-NLS-1$
-
-	private static final String ELEMENT_SECTION = "propertySection"; //$NON-NLS-1$
-
-	private static final String EXTPT_SECTIONDESCRIPTORPROVIDER = "propertyContributor";
-
-	private static final String ELEMENT_PROPERTYCONTRIBUTOR = "propertyContributor";
-
-	private static final String ATTR_SECTIONDESCRIPTORPROVIDER = "sectionDescriptorProvider";
-
-	ISectionDescriptor[] _descriptors = null;
-
-	/**
-	 * 
-	 */
-	public DesignerTabPropertySectionDescriptorProvider() {
-		super();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptorProvider#getSectionDescriptors()
-	 */
-	public ISectionDescriptor[] getSectionDescriptors() {
-		if (_descriptors == null) {
-			List result = new ArrayList();
-			List contributedSections = readSectionDescriptors();
-			result.addAll(contributedSections);
-
-			List providers = readAdditionalSectionDescriptorProviders();
-			for (int i = 0, size = providers.size(); i < size; i++) {
-				try {
-					ISectionDescriptorProvider provider = (ISectionDescriptorProvider) providers
-							.get(i);
-					ISectionDescriptor[] sections = provider
-							.getSectionDescriptors();
-					if (sections != null) {
-						result.addAll(Arrays.asList(sections));
-					}
-				} catch (Exception ex) {
-					// ignore
-					ex.printStackTrace();
-				}
-			}
-			_descriptors = new ISectionDescriptor[result.size()];
-			result.toArray(_descriptors);
-		}
-		return _descriptors;
-	}
-
-	/**
-	 * @return the providers
-	 */
-	protected List readAdditionalSectionDescriptorProviders() {
-		List result = new ArrayList();
-		IConfigurationElement[] extensions = getConfigurationElements(EXTPT_SECTIONDESCRIPTORPROVIDER);
-		for (int i = 0; i < extensions.length; i++) {
-			IConfigurationElement extension = extensions[i];
-			if (ELEMENT_PROPERTYCONTRIBUTOR.equals(extension.getName())) {
-				IConfigurationElement contributor = extension;
-				try {
-					Object obj = contributor
-							.createExecutableExtension(ATTR_SECTIONDESCRIPTORPROVIDER);
-					if (obj instanceof ISectionDescriptorProvider) {
-						result.add(obj);
-					}
-				} catch (CoreException ex) {
-					ex.printStackTrace();
-				}
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * @return the descriptors
-	 */
-	protected List readSectionDescriptors() {
-		List result = new ArrayList();
-		IConfigurationElement[] extensions = getConfigurationElements(EXTPT_SECTIONS);
-		for (int i = 0; i < extensions.length; i++) {
-			IConfigurationElement extension = extensions[i];
-			IConfigurationElement[] sections = extension
-					.getChildren(ELEMENT_SECTION);
-			for (int j = 0; j < sections.length; j++) {
-				IConfigurationElement section = sections[j];
-				ISectionDescriptor descriptor = new DesignerSectionDescriptor(
-						section);
-				result.add(descriptor);
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * @param extensionPointId
-	 * @return the configuration element
-	 */
-	public static IConfigurationElement[] getConfigurationElements(
-			String extensionPointId) {
-		IExtensionPoint extensionPoint = Platform.getExtensionRegistry()
-				.getExtensionPoint(PDPlugin.getPluginId(), extensionPointId);
-
-		if (extensionPoint == null) {
-			return null;
-		}
-		return extensionPoint.getConfigurationElements();
-	}
-}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/MDQuickEditTabSectionDescriptor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/MDQuickEditTabSectionDescriptor.java
new file mode 100644
index 0000000..c4fa9b2
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/MDQuickEditTabSectionDescriptor.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.properties.internal;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.tabbed.AbstractSectionDescriptor;
+import org.eclipse.ui.views.properties.tabbed.ISection;
+
+/**
+ * Quick Edit section descriptor that uses the quickEditSection trait meta data for the tag entity of the selection
+ * to determine the sections to display
+ *
+ */
+public class MDQuickEditTabSectionDescriptor extends AbstractSectionDescriptor {
+	
+	/**
+	 * Default constructor
+	 */
+	public MDQuickEditTabSectionDescriptor() {
+		super();
+	}
+	
+	@Override
+	public boolean appliesTo(IWorkbenchPart part, ISelection selection) {
+		return true;// we will always display tab, but will show text that no quick edit properties are available when they aren't
+	}
+	
+	public ISection getSectionClass() {
+		return new  QuickEditTabSection();
+	}
+
+	public String getTargetTab() {
+		return QuickEditTabDescriptor.TAB_ID;
+	}
+
+	public String getId() {
+		return "mdQuickEditTabSections";
+	}
+	
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/NullQuickEditTabGroupDescriptor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/NullQuickEditTabGroupDescriptor.java
new file mode 100644
index 0000000..893b6ab
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/NullQuickEditTabGroupDescriptor.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.properties.internal;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.ui.views.properties.tabbed.ISection;
+
+/**
+ * QuickEdit Tab section when quick edit section info is not available.
+ * 
+ * Ideally we should not be displaying the tab in the absence of MD, but due to current 
+ * issues with the tabbed-properties framework, it is easier to simply display a "null"
+ * section. 
+ *
+ */
+public class NullQuickEditTabGroupDescriptor extends
+		QuickEditTabSectionsDescriptor {
+
+	private List<ISection> nullQuickEditSection;
+	
+	/**
+	 * Constructor
+	 */
+	public NullQuickEditTabGroupDescriptor() {
+		super();
+	}
+
+	@Override
+	public List<ISection> getSections() {
+		return nullQuickEditSection;
+	}
+	
+	@Override
+	public void calculateSections() {
+		nullQuickEditSection = new ArrayList<ISection>(1);
+		nullQuickEditSection.add(new NullQuickEditTabSection());
+	}
+	
+	
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/NullQuickEditTabSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/NullQuickEditTabSection.java
new file mode 100644
index 0000000..11712bf
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/NullQuickEditTabSection.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.properties.internal;
+
+import org.eclipse.jst.pagedesigner.PDPlugin;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+
+/**
+ * Section that displays text that no quick edit properties are available for the input
+ */
+public class NullQuickEditTabSection extends AbstractPropertySection {
+
+	@Override
+	public void createControls(Composite parent,
+			TabbedPropertySheetPage tabbedPropertySheetPage) {
+		super.createControls(parent, tabbedPropertySheetPage);
+		TabbedPropertySheetWidgetFactory factory = tabbedPropertySheetPage.getWidgetFactory();
+		
+		Composite cont = factory.createComposite(parent, SWT.NO_FOCUS);
+		GridLayout layout = new GridLayout(1, false);
+		cont.setLayout(layout);
+
+		CLabel lbl = 
+			factory.createCLabel(cont, PDPlugin.getResourceString("QuickEditTab.no_quick_edit_md"));//$NON-NLS-1$
+		lbl.setLayoutData(new GridData());		
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditAttributeGroup.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditAttributeGroup.java
new file mode 100644
index 0000000..88bd899
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditAttributeGroup.java
@@ -0,0 +1,417 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Sybase, Inc. and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Sybase, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.properties.internal;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jst.jsf.common.metadata.Entity;
+import org.eclipse.jst.jsf.common.metadata.query.TaglibDomainMetaDataQueryHelper;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogFieldGroup;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.IDialogFieldApplyListener;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.IDialogFieldChangeListener;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.ISupportTextValue;
+import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
+import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext;
+import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContextFactory;
+import org.eclipse.jst.jsf.metadataprocessors.MetaDataEnabledProcessingFactory;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.IElementContextable;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+
+/**
+ * @author mengbo
+ * @version 1.5
+ * 
+ * TODO: cleanup up constructors
+ */
+public class QuickEditAttributeGroup extends DialogFieldGroup {
+	private static final Object KEY_ATTR = "KEY_ATTR"; //$NON-NLS-1$
+
+//	private String _helpContextId;
+
+	private List<DialogField> _dialogFields = null;  //consider using Map
+	private IDOMElement _ownerElement;
+	private Entity _tagEntity;
+	private List<String> _attrNames;
+	private List<IPropertyPageDescriptor> _attrPDs;
+
+	private String _uri;
+	private String _tagName;
+	
+	/**
+	 * Constructor
+	 * @param tagEntity - may not be null
+	 * @param attrNames - may not be null.  Attribute names must be valid for the tag, and have attribute-value-runtime-type trait info
+	 */
+	public QuickEditAttributeGroup(Entity tagEntity, List<String> attrNames) {
+		_tagEntity = tagEntity;
+		_attrNames = attrNames;		
+	}
+	
+	/**
+	 * Constructor where tagEntity is determined later or set later
+	 * @param uri - may be null
+	 * @param tagName - may be null
+	 * @param attributeNames - may not be null.  Attribute names must be valid for the tag, and have attribute-value-runtime-type trait info
+	 */
+	public QuickEditAttributeGroup(String uri,
+			String tagName, String[] attributeNames) {
+		_uri = uri;
+		_tagName = tagName;
+		_attrNames = Arrays.asList(attributeNames);
+	}
+	
+	private List<IPropertyPageDescriptor> prepareDescriptors(Entity tagEntity,
+			List<String> names) {
+		
+		List pds = new ArrayList();
+		for (String attrName : names) {
+			IPropertyPageDescriptor pd = getPD(tagEntity, attrName);
+			if (pd != null)
+				pds.add(pd);
+		}
+		return pds;
+	}
+
+	private IPropertyPageDescriptor getPD(Entity tagEntity, String attrName) {		
+		IPropertyPageDescriptor pd = null;
+		Entity attrEntity = TaglibDomainMetaDataQueryHelper.getEntity(tagEntity, attrName);
+		if (attrEntity != null){
+			List pds = MetaDataEnabledProcessingFactory.getInstance().getAttributeValueRuntimeTypeFeatureProcessors(
+							IPropertyPageDescriptor.class, null/* can we get this null info?   do we need/want it? */, attrEntity);					
+			if (pds != null && !pds.isEmpty())
+				pd = (IPropertyPageDescriptor)pds.get(0);
+			else 
+				pd = new DefaultPropertyPageDescriptor(tagEntity, attrEntity);
+		}
+		return pd;
+	}
+
+//	/**
+//	 * Constructor
+//	 */
+//	public QuickEditAttributeGroup() {
+//		//
+//	}
+
+
+	/**
+	 * @return tag entity for this attribute group
+	 */
+	protected Entity getTagEntity() {
+		if (_tagEntity == null) {
+			if (_ownerElement != null){
+				IStructuredDocumentContext context = IStructuredDocumentContextFactory.INSTANCE.getContext(_ownerElement.getStructuredDocument(), 0);
+				if (context != null){
+					String uri = _uri != null ? _uri : IStructuredDocumentContextResolverFactory.INSTANCE.getDOMContextResolver(context).getNode().getBaseURI();
+					String tagName = _tagName != null ? _tagName :  IStructuredDocumentContextResolverFactory.INSTANCE.getDOMContextResolver(context).getNode().getNodeName();
+					if (uri != null){
+						IProject project = IStructuredDocumentContextResolverFactory.INSTANCE.getWorkspaceContextResolver(context).getProject();
+						_tagEntity = TaglibDomainMetaDataQueryHelper.getEntity(TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(project, uri), tagName);
+					}
+				}
+			}
+		}
+		return _tagEntity;
+	}
+	/**
+	 * @return tag name
+	 */
+	public String getTagName() {
+		if (getTagEntity() == null)
+			return _tagName;
+		return getTagEntity().getId();
+	}
+
+	/**
+	 * @return tag URI
+	 */
+	public String getURI() {
+		if (getTagEntity() == null)
+			return _uri;
+		return getTagEntity().getModel().getCurrentModelContext().getUri();
+	}
+
+
+	/**
+	 * Empty implementation. Subclasses should override to override default dialogField creation
+	 * @param ppd
+	 * @return DialogField
+	 */
+	protected DialogField createDialogField(IPropertyPageDescriptor ppd) {
+		return null;
+	}
+	
+//	protected DialogField createDialogField(String uri, String tag,
+//			String attr) {
+//		
+//		return null;
+//	}
+	
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogFieldGroup#initialize()
+	 */
+	public void initialize() {
+		if (_dialogFields == null) {
+			_dialogFields = new ArrayList();
+
+			for (IPropertyPageDescriptor pd : getAttributePDs()) {
+				DialogField field;			
+				field = createDialogField(pd);
+				
+				if (field == null) {
+					field = pd.getDialogFieldEditor();
+				}
+
+				field.putAttachedData(KEY_ATTR, pd);//descriptors[i]);
+
+				IDialogFieldApplyListener applyListener = getDialogFieldApplyListener(pd);
+//						getURI(), getTagName(), pd.getAttributeName());//descriptors[i]);
+				if (applyListener == null) {
+					applyListener = getDefaultApplyListener();
+				}
+				field.setDialogFieldApplyListener(applyListener);
+
+				IDialogFieldChangeListener changeListener = getDialogFieldChangeListener(pd);
+//						getURI(), getTagName(), pd.getAttributeName());//descriptors[i]);
+				if (changeListener == null) {
+					changeListener = getDefaultChangeListener();
+				}
+				field.setDialogFieldChangeListener(changeListener);
+				_dialogFields.add(field);
+			}
+		}
+	}
+
+	private List<IPropertyPageDescriptor> getAttributePDs() {
+		if (_attrPDs == null){
+			_attrPDs = prepareDescriptors(getTagEntity(), _attrNames);
+		}
+		return _attrPDs;
+	}
+
+	/**
+	 * Child class can override the method to provide listener implementation
+	 * 
+	 * @param ppd
+	 * @return IDialogFieldApplyListener
+	 */
+	protected IDialogFieldApplyListener getDialogFieldApplyListener(IPropertyPageDescriptor ppd) {
+		return null;
+	}
+
+	/**
+	 * Child class can override the method to provide listener implementation
+	 * 
+	 * @param ppd
+	 * @return IDialogFieldChangeListener
+	 */
+	protected IDialogFieldChangeListener getDialogFieldChangeListener(IPropertyPageDescriptor ppd){
+			return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogFieldGroup#refreshData()
+	 */
+	public void refreshData() {
+		if (_ownerElement == null) {
+			return;
+		}
+		initialize();
+		for (int i = 0, size = _dialogFields.size(); i < size; i++) {
+			DialogField field = _dialogFields.get(i);
+
+			ISupportTextValue textValue = (ISupportTextValue) field;
+			IPropertyPageDescriptor attr = (IPropertyPageDescriptor) field
+					.getAttachedData(KEY_ATTR);
+			String attrName = attr.getAttributeName();
+			String attrValue = _ownerElement.getAttribute(attrName);
+			textValue.setTextWithoutUpdate(attrValue);
+		}
+	}
+
+	/**
+	 * @return IDOMElement
+	 */
+	public IDOMElement getElement() {
+		return _ownerElement;
+	}
+
+	/**
+	 * Sets the context in each of the dialogFields in the Group
+	 * @param context
+	 * @param owner
+	 */
+	public void setElementContext(IDOMNode context, IDOMElement owner) {
+		this._ownerElement = owner;
+		initialize();
+		if (context != null) {
+			for (int i = 0, size = _dialogFields.size(); i < size; i++) {
+				DialogField field = _dialogFields.get(i);
+				if (field instanceof IElementContextable) {
+					((IElementContextable) field).setElementContext(context,
+							owner);
+				}
+			}
+		}
+		refreshData();
+	}
+
+	public void layoutDialogFields(FormToolkit toolkit, Composite parent) {
+		Composite top;
+		if (toolkit == null) {
+			top = new Composite(parent, SWT.NONE);
+		} else {
+			top = toolkit.createComposite(parent, SWT.NONE);
+		}
+//		FillLayout fillLayout = new FillLayout(SWT.VERTICAL);
+//		parent.setLayout(fillLayout);
+
+//		if (this._helpContextId != null && this._helpContextId.length() > 0) {
+//			PlatformUI.getWorkbench().getHelpSystem().setHelp(top,
+//					_helpContextId);
+//		}
+
+		GridLayout layout = new GridLayout();
+		int numColumns = getNumColumns();
+		layout.numColumns = numColumns;
+		top.setLayout(layout);
+//		top.setLayoutData(new RowData());
+		
+		initialize();
+		for (int i = 0, size = _dialogFields.size(); i < size; i++) {
+			DialogField field = _dialogFields.get(i);
+			field.doFillIntoGrid(toolkit, top, numColumns);
+		}
+
+		DialogField maxColumnField = null;
+		int maxColumn = 0;
+		for (int i = 0, size = _dialogFields.size(); i < size; i++) {
+			DialogField field = _dialogFields.get(i);
+			int c = field.getNumberOfControls();
+			if (c > maxColumn) {
+				maxColumn = c;
+				maxColumnField = field;
+			}
+		}
+		if (maxColumnField != null) {
+			maxColumnField.handleGrabHorizontal();
+		}
+	}
+
+	/**
+	 * @return number of columns in for composite grid layout
+	 */
+	public int getNumColumns() {
+		int columns = 1;
+		initialize();
+		for (int i = 0, size = _dialogFields.size(); i < size; i++) {
+			DialogField field = _dialogFields.get(i);
+			columns = Math.max(columns, field.getNumberOfControls());
+		}
+		return columns;
+	}
+	
+	@Override
+	public IStatus[] validateDialogFields() {
+		return null;
+	}
+
+	/**
+	 * @return DialogField[]
+	 */
+	public DialogField[] getDialogFields() {
+		initialize();
+		DialogField[] ret = new DialogField[_dialogFields.size()];
+		_dialogFields.toArray(ret);
+		return ret;
+	}
+
+	/**
+	 * get the dialogfield for the corresponding attribute.
+	 * 
+	 * @param attrName
+	 *            case sensitive attribute name.
+	 * @return null if fail to find.
+	 */
+	public DialogField getDialogField(String attrName) {
+		initialize();
+		for (int i = 0, size = _dialogFields.size(); i < size; i++) {
+			DialogField field = _dialogFields.get(i);
+			IPropertyPageDescriptor attr = this.getPropertyDescriptor(field);
+			if (attr != null && attr.getAttributeName().equals(attrName)) {
+				return field;
+			}
+		}
+		return null;
+	}
+	
+	/**
+	 * @param field
+	 * @return IPropertyPageDescriptor
+	 */
+	public IPropertyPageDescriptor getPropertyDescriptor(DialogField field) {
+		Object obj = field.getAttachedData(KEY_ATTR);
+		if (obj instanceof IPropertyPageDescriptor) {
+			return (IPropertyPageDescriptor) obj;
+		}
+	    return null;
+	}
+	
+	@Override
+	public void reset(){
+		if (_dialogFields != null){
+			for (DialogField field : _dialogFields){
+				field.setDialogFieldApplyListener(null);
+				field.setDialogFieldChangeListener(null);
+			}
+			_dialogFields = null;
+		}
+	}
+
+	/**
+	 * Set the tag entity
+	 * @param tagEntity
+	 */
+	/*package*/ void setTagEntity(Entity tagEntity) {
+		_tagEntity = tagEntity;		
+	}
+
+	public String toString(){
+		StringBuffer buf = new StringBuffer("QuickEditAttributeGroup: uri=");
+		buf.append("\r\r").append(getURI()).append("\r\rtag=").append(getTagName());
+		buf.append("\r\rAttrs: ");
+		for (int i=0;i<_attrNames.size();i++) {
+			String attr = _attrNames.get(i);
+			buf.append(attr);
+			if (i<_attrNames.size())
+				buf.append(", ");
+		}
+		return buf.toString();
+	}
+	
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/attrgroup/AttributeGroupSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditAttributeGroupSection.java
similarity index 66%
copy from jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/attrgroup/AttributeGroupSection.java
copy to jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditAttributeGroupSection.java
index 2d93aa4..b647635 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/attrgroup/AttributeGroupSection.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditAttributeGroupSection.java
@@ -9,19 +9,23 @@
  * Contributors:
  *     Sybase, Inc. - initial API and implementation
  *******************************************************************************/
-package org.eclipse.jst.pagedesigner.properties.attrgroup;
+package org.eclipse.jst.pagedesigner.properties.internal;
+
+import java.util.List;
 
 import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jst.jsf.common.metadata.Entity;
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField;
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.IDialogFieldApplyListener;
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.ISupportTextValue;
 import org.eclipse.jst.pagedesigner.commands.single.ChangeAttributeCommand;
-import org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
 import org.eclipse.jst.pagedesigner.properties.BaseCustomSection;
+import org.eclipse.jst.pagedesigner.properties.attrgroup.AttributeGroupMessages;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 
 /**
@@ -30,7 +34,7 @@
  * @author mengbo
  * @version 1.5
  */
-public class AttributeGroupSection extends BaseCustomSection {
+public class QuickEditAttributeGroupSection extends BaseCustomSection {
 	private static final Object KEY_ATTR = "KEY_ATTR"; //$NON-NLS-1$
 
 	private IDialogFieldApplyListener _fieldApplyListener = new IDialogFieldApplyListener() {
@@ -41,62 +45,46 @@
 		 */
 		public void dialogFieldApplied(DialogField field) {
 			Object attr = field.getAttachedData(KEY_ATTR);
-			if (attr instanceof IAttributeDescriptor && _element != null) {
+			if (attr instanceof IPropertyPageDescriptor && _element != null) {
 				ISupportTextValue textValue = (ISupportTextValue) field;
 				ChangeAttributeCommand c = new ChangeAttributeCommand(
 						AttributeGroupMessages
-								.getString("AttributeGroupSection.changeAttribute"), _element, ((IAttributeDescriptor) attr).getAttributeName(), textValue.getText()); //$NON-NLS-1$
+								.getString("AttributeGroupSection.changeAttribute"), _element, ((IPropertyPageDescriptor) attr).getAttributeName(), textValue.getText()); //$NON-NLS-1$
 				c.execute();
 			}
 		}
 	};
 
-	/**
-	 * the attribute group
-	 */
-	protected AttributeGroup _group;
+	private QuickEditAttributeGroup _group;
 
 	/**
-	 * create the section with a default AttributeGroup. In default
+	 * Constructor.  Create the section with a default AttributeGroup. In default
 	 * AttributeGroup, there is no relationship between fields.
 	 * 
-	 * @param uri
-	 * @param tagName
+	 * @param tagEntity
 	 * @param attrNames
 	 */
-	public AttributeGroupSection(String uri, String tagName, String[] attrNames) {
-		this(new AttributeGroup(uri, tagName, attrNames));
+	public QuickEditAttributeGroupSection(Entity tagEntity, List<String> attrNames) {
+		this(new QuickEditAttributeGroup(tagEntity, attrNames));
 	}
 
 	/**
-	 * In case the group is not a default group (e.g. you may add some
+	 * Constructor.  In case the group is not a default group (e.g. you may add some
 	 * customized relationship between the fields).
 	 * 
 	 * @param group
 	 */
-	public AttributeGroupSection(AttributeGroup group) {
+	public QuickEditAttributeGroupSection(QuickEditAttributeGroup group) {
 		_group = group;
 		_group.setDefaultApplyListener(_fieldApplyListener);
-		_group.initialize();
+//		_group.initialize();
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.AbstractPropertySection#setInput(org.eclipse.ui.IWorkbenchPart,
-	 *      org.eclipse.jface.viewers.ISelection)
-	 */
 	public void setInput(IWorkbenchPart part, ISelection selection) {
 		super.setInput(part, selection);
 		_group.setElementContext(_element, _element);
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jst.pagedesigner.integration.properties.section.AbstractCustomSection#createControls(org.eclipse.swt.widgets.Composite,
-	 *      org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage)
-	 */
 	public void createControls(Composite parent,
 			TabbedPropertySheetPage aTabbedPropertySheetPage) {
 		super.createControls(parent, aTabbedPropertySheetPage);
@@ -111,4 +99,10 @@
 			_group.refreshData();
 		}
 	}
+
+	@Override
+	public void dispose() {
+		super.dispose();
+		_group.reset();
+	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabDescriptor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabDescriptor.java
new file mode 100644
index 0000000..d74b006
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabDescriptor.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.properties.internal;
+
+import org.eclipse.ui.views.properties.tabbed.AbstractTabDescriptor;
+
+/**
+ * Quick Edit Tab Descriptor
+ */
+public class QuickEditTabDescriptor extends AbstractTabDescriptor {
+
+	/**
+	 * Quick Edit tab id
+	 */
+	public static final String TAB_ID = "jst.pagedesigner.tabbed.properties.quickedit";
+	
+	/**
+	 * Constructor
+	 */
+	public QuickEditTabDescriptor(){
+		super();
+		getSectionDescriptors().add(new MDQuickEditTabSectionDescriptor());
+	}
+	
+	public String getCategory() {
+		return "quickedit";
+	}
+
+	public String getId() {
+		return TAB_ID;
+	}
+
+	public String getLabel() {
+		return "Quick Edit";
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabManager.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabManager.java
new file mode 100644
index 0000000..594bd66
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabManager.java
@@ -0,0 +1,207 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.properties.internal;
+
+import javax.xml.namespace.QName;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jst.jsf.common.metadata.Entity;
+import org.eclipse.jst.jsf.common.metadata.Trait;
+import org.eclipse.jst.jsf.common.metadata.query.ITaglibDomainMetaDataModelContext;
+import org.eclipse.jst.jsf.common.metadata.query.TaglibDomainMetaDataQueryHelper;
+import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
+import org.eclipse.jst.jsf.context.resolver.structureddocument.ITaglibContextResolver;
+import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext;
+import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContextFactory;
+import org.eclipse.jst.pagedesigner.editors.HTMLEditor;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSections;
+import org.eclipse.jst.pagedesigner.properties.DesignerPropertyTool;
+import org.eclipse.jst.pagedesigner.properties.WPETabbedPropertySheetPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.part.FileEditorInput;
+import org.w3c.dom.Element;
+
+/**
+ * One-to-one with {@link WPETabbedPropertySheetPage} that manages the current sections for the current selection.
+ * <br>
+ * The QuickEditTabManager has a shared instance of a {@link QuickEditTabSectionsManager} for the project.
+ * <br>
+ * When a WPETabbedPropertySheetPage is created, it must acquire a QuickEditTabManager using the static acquireInstance method,
+ * and then release the instance when it is disposed.  This ensures that the QuickEditTabSectionsManager shared instance (per project) is released appropriately.
+ * 
+ * selectionChanged must be called prior to calling createControls on the sections for this tab group call
+ */
+public class QuickEditTabManager {
+	private QuickEditTabSectionsManager _groupsManager;
+	private QuickEditTabSections _quickEditTabSections;
+	private Entity _tagEntity;
+	private QName _lastTagID;
+	private QuickEditTabSectionsDescriptor _lastQuickEditTabGroup;
+	private QuickEditTabSectionsDescriptor _nullQuickEditTabGroup;
+	private Element _lastElement;
+	
+	private QuickEditTabSectionsManager getRegistry() {
+		return _groupsManager;
+	}
+
+	/**
+	 * Must only be called once per tabbed property sheet as ref count is kept.  
+	 * Callers must call releaseInstance when the page is disposed
+	 * @param page 
+	 * @return instance for this property sheet
+	 */
+	public static synchronized QuickEditTabManager acquireInstance(WPETabbedPropertySheetPage page) {
+		IProject project = getProject(page);	
+		QuickEditTabManager instance = new QuickEditTabManager();
+		instance._groupsManager = QuickEditTabSectionsManager.acquireInstance(project);
+		return instance;		
+	}
+
+	/**
+	 * Releases this instance, but does not dispose.  Ensures that the {@link QuickEditTabSectionsManager} is released.
+	 */
+	public void releaseInstance() {
+		this._groupsManager.releaseInstance();				
+	}
+	
+	/**
+	 * Private constructor
+	 */
+	private QuickEditTabManager(){
+		//
+	}
+	
+	private static IProject getProject(WPETabbedPropertySheetPage page) {
+		IProject proj = null;
+		IDocument doc = ((HTMLEditor)page.getEditor()).getDocument();
+		IStructuredDocumentContext context = IStructuredDocumentContextFactory.INSTANCE.getContext(doc, 0);
+		if (context != null){
+			proj = IStructuredDocumentContextResolverFactory.INSTANCE.getWorkspaceContextResolver(context).getProject();
+		}
+		return proj;
+		 
+	}
+	/**
+	 * Must be called so that the sections for the input can be calculated. 
+	 * 
+	 * @param part
+	 * @param selection
+	 * @return true if current selection is different than during the last call
+	 */
+	public boolean selectionChanged(IWorkbenchPart part, ISelection selection) {
+		boolean hasChanged = false;
+		QuickEditTabSections qets = getQuickTabSectionsMetaData(part, selection); 
+		if (qets == null) {//use null quick edit tab			
+			hasChanged = (_quickEditTabSections != null);
+			_quickEditTabSections = qets;
+			_lastQuickEditTabGroup = getNullQuickEditTab();
+			_lastTagID = null;
+		}
+		else {
+			QName tagId = getTagId();
+			if (_lastTagID == null || !_lastTagID.equals(tagId)){
+				_quickEditTabSections = qets;
+				QuickEditTabSectionsDescriptor group = getRegistry().getQuickEditTabSectionsFor(tagId);
+				if (group == null){
+					group = createQuickEditTabGroup(tagId, _quickEditTabSections);
+					if (group != null){					
+						group.calculateSections();
+						getRegistry().addQuickEditTabGroupDescriptor(group);
+					}
+				}
+				_lastQuickEditTabGroup = group;
+				_lastTagID = tagId;
+			}
+		} 
+
+		return hasChanged;
+	}
+	
+	/**
+	 * @return current QuickEditTabSectionsDescriptor
+	 */
+	public QuickEditTabSectionsDescriptor getCurrentTabGroupDescriptor() {
+		return _lastQuickEditTabGroup;
+	}
+	
+	private QuickEditTabSections getQuickTabSectionsMetaData(IWorkbenchPart part,
+			ISelection selection) {
+
+		Element node = DesignerPropertyTool.getElement(part, selection);
+		if (node == null) {
+			return null;
+		}
+		if (_lastElement != node){
+			_lastElement = node;
+			_quickEditTabSections = null;
+			_tagEntity = getTagEntity(part, selection, node);
+			if (_tagEntity != null) {
+				Trait pds = TaglibDomainMetaDataQueryHelper.getTrait(_tagEntity, QuickEditTabSections.TRAIT_ID);
+				if (pds != null){
+					_quickEditTabSections = (QuickEditTabSections)pds.getValue();
+				}		
+			}			
+		}
+		return _quickEditTabSections;
+	}
+
+	private QuickEditTabSectionsDescriptor createQuickEditTabGroup(QName tagId,
+			QuickEditTabSections tabSections) {
+		return new QuickEditTabSectionsDescriptor(_tagEntity, tagId, tabSections);
+	}
+
+	private QName getTagId() {
+		return TaglibDomainMetaDataQueryHelper.getQNameForTagEntity(_tagEntity);
+	}
+
+	/**
+	 * Dispose
+	 */
+	public void dispose() {		
+		_lastQuickEditTabGroup= null;
+		_lastElement = null;
+		_lastTagID = null;		
+		_nullQuickEditTabGroup = null;
+		_quickEditTabSections = null;
+		_groupsManager = null;
+	}
+	
+	private Entity getTagEntity(IWorkbenchPart part, ISelection selection, Element node){
+		HTMLEditor ed = null;
+		if (part instanceof HTMLEditor)
+			ed = (HTMLEditor)part;
+		if (ed == null)
+			return null;
+		
+		FileEditorInput input = (FileEditorInput)ed.getEditorInput();
+		IStructuredDocumentContext context = IStructuredDocumentContextFactory.INSTANCE.getContext(ed.getDocument(), node);
+		if (context != null){
+			ITaglibContextResolver resolver = IStructuredDocumentContextResolverFactory.INSTANCE.getTaglibContextResolver(context);
+			if (resolver != null){
+				ITaglibDomainMetaDataModelContext mdContext = TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(input.getFile().getProject(),resolver.getTagURIForNodeName(node));
+				return TaglibDomainMetaDataQueryHelper.getEntity(mdContext, node.getLocalName());
+			}
+		}
+		return null;		
+	}
+	
+	private QuickEditTabSectionsDescriptor getNullQuickEditTab() {
+		if (_nullQuickEditTabGroup == null) {
+			_nullQuickEditTabGroup = new NullQuickEditTabGroupDescriptor();
+			_nullQuickEditTabGroup.calculateSections();
+		}
+		return _nullQuickEditTabGroup;
+	}
+
+	
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabSection.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabSection.java
new file mode 100644
index 0000000..172626c
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabSection.java
@@ -0,0 +1,209 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.properties.internal;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jst.pagedesigner.properties.WPETabbedPropertySheetPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Layout;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
+import org.eclipse.ui.views.properties.tabbed.ISection;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+
+/**
+ * Using the tag entity's QuickEditTabSections meta-data, this section reacts to changes in selection,
+ * and will dynamically create a QuickEditTabGroup.   The QuickEditTabGroup is cached and reused.
+ * <br><br>
+ * This section delegates construction to the sections discovered thru meta data.   
+ * Because this section is not disposed of until the tab is disposed, this section will enforce the expected section lifecycle
+ * on the sections loaded from meta data.   This occurs during setInput.  But will pass on all section lifecycle events as 
+ * this section receives them.
+ * <br><br>
+ * The lifecycle that this section enforces on it's child sections in the setInput call on this section are (in order):
+ * 	<li>createControls
+ * 	<li>setInput
+ *  <li>aboutToBeShown
+ *  <li>refresh
+ *  
+ * When tab section lifecycle events occur to this section, they are passed on to all child sections also. 
+ * 	
+ */
+public class QuickEditTabSection extends AbstractPropertySection {
+	
+	private QuickEditTabManager manager;
+	private Composite _composite;
+	private Composite _qeGroupComposite;
+	private WPETabbedPropertySheetPage _tabbedPropertySheetPage;
+
+	private QuickEditTabManager getTabManager() {
+		if (manager == null) {
+			manager = _tabbedPropertySheetPage.getTabManager();
+		}
+		return manager;
+	}
+
+	@Override
+	public void createControls(Composite parent,
+			TabbedPropertySheetPage tabbedPropertySheetPage) {
+		super.createControls(parent, tabbedPropertySheetPage);
+		_composite = parent;
+		_tabbedPropertySheetPage = (WPETabbedPropertySheetPage)tabbedPropertySheetPage;
+	}
+
+	@Override
+	public void setInput(IWorkbenchPart part, ISelection selection) {
+		super.setInput(part, selection);
+		if (getTabManager() != null){
+			aboutToBeHidden();
+			createOrResetQuickEditGroupComposite();//disposes of old and recreates new topComp
+			getTabManager().selectionChanged(part, selection);
+			for (ISection section : getSections()){
+				section.createControls(_qeGroupComposite, _tabbedPropertySheetPage);
+				section.setInput(part, selection);
+			}
+			_composite.getParent().layout(true, true);
+			
+			aboutToBeShown();
+			refresh();
+		}			
+	}
+
+	@Override
+	public void aboutToBeHidden() {
+		super.aboutToBeHidden();
+		for (ISection section : getSections()){
+			section.aboutToBeHidden();
+		}
+	}
+
+	@Override
+	public void aboutToBeShown() {
+		super.aboutToBeShown();
+		for (ISection section : getSections()){
+			section.aboutToBeShown();
+		}
+	}
+	
+	@Override
+	public void refresh() {
+		super.refresh();
+		for (ISection section : getSections()){
+			section.refresh();
+		}
+	}
+
+	private void createOrResetQuickEditGroupComposite() {
+		if (_qeGroupComposite != null && !_qeGroupComposite.isDisposed()){
+			//dispose of current sections
+			disposeCurrentQuickEditTabSections();
+			_qeGroupComposite.dispose();
+		}			
+		
+		_qeGroupComposite = _tabbedPropertySheetPage.getWidgetFactory().createComposite(_composite, SWT.NO_FOCUS);
+		QuickEditTabLayout layout = new QuickEditTabLayout();
+		_qeGroupComposite.setLayout(layout);
+		
+	}
+
+	private void disposeCurrentQuickEditTabSections() {		
+		for (ISection section : getSections()){
+			section.dispose();
+		}
+	}
+
+	private List<ISection> getSections(){
+		if (getTabManager().getCurrentTabGroupDescriptor() != null)
+			return getTabManager().getCurrentTabGroupDescriptor().getSections();
+		
+		return Collections.EMPTY_LIST;
+	}
+	
+	public void dispose() {
+		super.dispose();
+		disposeCurrentQuickEditTabSections();
+		manager.dispose();
+		manager = null;
+		_composite = null;
+		_qeGroupComposite = null;
+		_tabbedPropertySheetPage = null;
+	}	
+
+	public boolean shouldUseExtraSpace() {
+		return false;
+	}
+
+	private class QuickEditTabLayout extends Layout {
+
+		// allow for adjustments
+		private static final int MARGIN = 0;
+		private static final int SPACING = 0;
+
+		// cache
+		Point[] sizes;
+		int maxWidth, totalHeight;
+
+		protected Point computeSize(Composite composite, int wHint, int hHint,
+				boolean flushCache) {
+
+			Control children[] = composite.getChildren();
+			if (flushCache || sizes == null || sizes.length != children.length) {
+				initialize(children);
+			}
+
+			int width = wHint, height = hHint;
+			if (wHint == SWT.DEFAULT)
+				width = maxWidth;
+
+			if (hHint == SWT.DEFAULT)
+				height = totalHeight;
+
+			return new Point(width + 2 * MARGIN, height + 2 * MARGIN);
+		}
+
+		protected void layout(Composite composite, boolean flushCache) {
+			Control children[] = composite.getChildren();
+			if (flushCache || sizes == null || sizes.length != children.length) {
+				initialize(children);
+			}
+			Rectangle rect = composite.getClientArea();
+			int x = MARGIN, y = MARGIN;
+			int width = Math.max(rect.width - 2 * MARGIN, maxWidth);
+//			System.out.println("--- Comp id: "+composite.toString()+ "[#Children: "+ composite.getChildren().length +"] -------");
+			for (int i = 0; i < children.length; i++) {
+				int height = sizes[i].y;
+				children[i].setBounds(x, y, width, height);
+				y += height + SPACING;
+//				System.out.println("h="+height+", y="+y);
+			}
+		    composite.setRedraw(true);
+		}
+
+		void initialize(Control children[]) {
+			maxWidth = 0;
+			totalHeight = 0;
+			sizes = new Point[children.length];
+			for (int i = 0; i < children.length; i++) {
+				sizes[i] = children[i].computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
+				maxWidth = Math.max(maxWidth, sizes[i].x);
+				totalHeight += sizes[i].y;
+			}
+			totalHeight += (children.length - 1) * SPACING;
+		}
+	}
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabSectionDescriptor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabSectionDescriptor.java
new file mode 100644
index 0000000..3f2748b
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabSectionDescriptor.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Sybase, Inc. and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Sybase, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.properties.internal;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jst.jsf.common.metadata.Entity;
+import org.eclipse.jst.pagedesigner.PDPlugin;
+import org.eclipse.jst.pagedesigner.properties.DesignerPropertyTool;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.internal.views.properties.tabbed.view.SectionDescriptor;
+import org.eclipse.ui.views.properties.tabbed.ISection;
+import org.eclipse.ui.views.properties.tabbed.ITypeMapper;
+import org.w3c.dom.Element;
+
+/**
+ * A SectionDescriptor from org.eclipse.ui.views.properties.tabbed.propertySections extension-point 
+ * for use by the QuickEdit tab in the Web Page Editor.
+ */
+public class QuickEditTabSectionDescriptor extends SectionDescriptor {
+
+	private static final String ATT_CLASS = "class"; //$NON-NLS-1$ 
+	private IConfigurationElement _configurationElement;
+	private Entity _tagEntity;
+
+	/**
+	 * Constructor for the section descriptor.
+	 * 
+	 * @param configurationElement
+	 *            the configuration element for the section descriptor.
+	 * @param typeMapper 
+	 */
+	public QuickEditTabSectionDescriptor(IConfigurationElement configurationElement, ITypeMapper typeMapper) {
+		super(configurationElement, typeMapper);
+		_configurationElement = configurationElement;
+	}
+
+	@Override
+	public boolean appliesTo(IWorkbenchPart part, ISelection selection) {
+		Element node = DesignerPropertyTool.getElement(part, selection);
+		if (node == null) {
+			return false;
+		}
+		return true;
+	}
+
+	@Override
+	public ISection getSectionClass() {
+		ISection section = null;
+		try {
+			Object secOrGroup = _configurationElement
+					.createExecutableExtension(ATT_CLASS);
+			if (secOrGroup instanceof ISection) {
+				section = (ISection) secOrGroup;
+			} else if (secOrGroup instanceof QuickEditAttributeGroup) {
+				((QuickEditAttributeGroup) secOrGroup).setTagEntity(_tagEntity);
+				section = new QuickEditAttributeGroupSection((QuickEditAttributeGroup) secOrGroup);		
+			}
+		} catch (CoreException exception) {
+			handleSectionError(exception);
+		}
+		return section;
+	}
+	
+	/**
+	 * Handle the section error when an issue is found loading from the
+	 * configuration element.
+	 * 
+	 * @param _configurationElement
+	 *            the configuration element
+	 * @param exception
+	 *            an optional CoreException
+	 */
+	private void handleSectionError(CoreException exception) {
+		PDPlugin.getLogger(QuickEditTabSectionDescriptor.class).error("error",
+				exception);
+		exception.printStackTrace();
+	}
+
+	/**
+	 * @param tagEntity
+	 * @return ISection for the tagEntity
+	 */
+	/*package*/ ISection getSectionClass(Entity tagEntity) {
+		_tagEntity = tagEntity;
+		return getSectionClass();
+	}
+		
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabSectionsDescriptor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabSectionsDescriptor.java
new file mode 100644
index 0000000..098e006
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabSectionsDescriptor.java
@@ -0,0 +1,112 @@
+package org.eclipse.jst.pagedesigner.properties.internal;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.eclipse.jst.jsf.common.metadata.Entity;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSections;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SECTION_TYPE;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SectionInfo;
+import org.eclipse.ui.views.properties.tabbed.ISection;
+
+/**
+ * Represents all of the section classes that make up the Quick Edit tab for a given tag input.   
+ * Uses QuickEditTabSections meta data from tag entity
+ */
+public class QuickEditTabSectionsDescriptor {
+
+	private QuickEditTabSections _sections;
+	private QName _tagId;
+	private List<ISection> _sectionClasses;
+	private Entity _tagEntity;
+	private WPETabPropertySectionDescriptorProvider sectionProvider;
+
+	/**
+	 * Constructor
+	 * @param tagEntity
+	 * @param tagId
+	 * @param sections
+	 */
+	public QuickEditTabSectionsDescriptor (Entity tagEntity, QName tagId, QuickEditTabSections sections) {
+		_tagEntity = tagEntity;
+		_tagId = tagId;
+		_sections = sections;
+	}	
+
+	/*package*/ QuickEditTabSectionsDescriptor () {
+		_tagEntity = null;
+		_tagId = null;
+		_sections = null;
+	}
+	
+	/**
+	 * Determines section classes for the group from the available meta data
+	 */
+	public void calculateSections() {
+		if (_sectionClasses == null || _sectionClasses.isEmpty()) {
+			_sectionClasses = new ArrayList();
+			List<String> attrIds = new ArrayList();
+			for (SectionInfo secInfo : _sections.getSections()) {
+				if (secInfo.getType() == SECTION_TYPE.ATTRIBUTE){
+					//collect attrSecs and process as a group so that layout will be best
+					if (secInfo.getId() != null) 
+						attrIds.add(secInfo.getId());
+				}
+				else if (secInfo.getType() == SECTION_TYPE.SECTION) {
+					//if there are any attribute sections not processed, do that now
+					if (attrIds.size() > 0){
+						createAttributeGroup(attrIds);
+						attrIds = new ArrayList();
+					}
+					createSectionGroup(secInfo);
+				}
+			}
+			if (attrIds.size() > 0){
+				createAttributeGroup(attrIds);
+			}
+		}		
+	}
+
+	private void createSectionGroup(SectionInfo secInfo) {
+		QuickEditTabSectionDescriptor sd = getSectionProvider().getNamedSectionDescriptor(secInfo.getId());
+		if (sd != null) {
+			ISection section = sd.getSectionClass(_tagEntity);
+			if (section != null){
+				_sectionClasses.add(section);
+			}
+		}
+		
+	}
+
+	private void createAttributeGroup(List<String> attrNames) {
+		ISection section = new QuickEditAttributeGroupSection(_tagEntity, attrNames);
+		if (section != null){		
+			_sectionClasses.add(section);
+		}
+	}
+
+	/**
+	 * @return QName of tag that this tab descriptor is for
+	 */
+	public QName getTagId() {
+		return _tagId;
+	}
+
+	/**
+	 * @return List of current ISection classes set after calculateSections() has been called
+	 */
+	public List<ISection> getSections() {
+		return _sectionClasses;
+	}
+
+	private WPETabPropertySectionDescriptorProvider getSectionProvider() {
+		if (sectionProvider == null){
+			sectionProvider = new WPETabPropertySectionDescriptorProvider();
+		}
+		return sectionProvider;
+	}
+	
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabSectionsManager.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabSectionsManager.java
new file mode 100644
index 0000000..59d91b0
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/QuickEditTabSectionsManager.java
@@ -0,0 +1,125 @@
+package org.eclipse.jst.pagedesigner.properties.internal;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import org.eclipse.core.resources.IProject;
+
+/**
+ * Cache of quickEditTabGroupDescriptors keyed by tagID as QName.  
+ */
+public class QuickEditTabSectionsManager {
+	
+	private static QuickEditTabSectionsManagerMgr _mgrInstance = new QuickEditTabSectionsManagerMgr();
+	private Map<QName, QuickEditTabSectionsDescriptor> map = new HashMap<QName, QuickEditTabSectionsDescriptor>(5);
+	private IProject _project;
+	private int clientCount = 0;
+	
+	/**
+	 * Returns instance of QuickEditTabSectionsManager for the given project.   Caller must release the instance when caller is being disposed.
+	 * @param project
+	 * @return instance of QuickEditTabSectionsManager
+	 */
+	public static QuickEditTabSectionsManager acquireInstance(IProject project){
+		QuickEditTabSectionsManager instance = _mgrInstance.getSectionsManager(project);
+		instance.clientCount++;
+		instance._project = project;
+		return instance;	
+	}
+	
+	/**
+	 * Releases instance of QuickEditTabSectionsManager and removes from the QuickEditSectionGroupsManagerMgr if it is the last reference
+	 */
+	public void releaseInstance(){
+		int refCount = --clientCount;
+		if (refCount == 0){
+			_mgrInstance.removeSectionsManager(_project);
+		}	
+	}
+
+	/**
+	 * private constructor
+	 */
+	private QuickEditTabSectionsManager(){
+		//
+	}
+	
+	/**
+	 * @return IProject that this section manager applies to
+	 */
+	public IProject getProject(){
+		return _project;
+	}
+	
+	/**
+	 * Get QuickEditTabSectionsDescriptor for passed tag
+	 * 
+	 * @param tagId
+	 * @return QuickEditTabSectionsDescriptor
+	 */
+	public QuickEditTabSectionsDescriptor getQuickEditTabSectionsFor(QName tagId) {
+		return map.get(tagId);
+	}
+
+	/**
+	 * Adds QuickEditTabSectionsDescriptor to managed registry keyed by the tagId
+	 * QName
+	 * 
+	 * @param group
+	 */
+	public void addQuickEditTabGroupDescriptor(QuickEditTabSectionsDescriptor group) {
+		map.put(group.getTagId(), group);
+	}
+
+	/**
+	 * Removes and disposes a cached {@link QuickEditTabSectionsDescriptor}
+	 * 
+	 * @param tagId
+	 */
+	public void removeQuickEditTabGroup(QName tagId) {
+		QuickEditTabSectionsDescriptor grp = map.get(tagId);
+		if (grp != null) {
+			map.remove(tagId);
+		}
+	}
+
+	/**
+	 * Dispose of manager
+	 */
+	public void dispose() {
+		map.clear();
+		map = null;
+	}
+
+	/**
+	 * Manages the QuickEditTabSectionsManager instances.  Ensures one per project.	 *
+	 */
+	@SuppressWarnings("serial")
+	private static class QuickEditTabSectionsManagerMgr {		
+		private Map <IProject,QuickEditTabSectionsManager>_map = new HashMap<IProject,QuickEditTabSectionsManager>();
+		/**
+		 * @param project - may be null
+		 * @return QuickEditTabManager for project
+		 */
+		public QuickEditTabSectionsManager getSectionsManager(IProject project){
+			if (_map.containsKey(project))
+				return _map.get(project);
+
+			QuickEditTabSectionsManager instance = new QuickEditTabSectionsManager();
+			_map.put(project, instance);
+			return instance;
+		}
+		
+		/**
+		 * Removes QuickEditTabManager from mgr for given project
+		 * @param project
+		 */
+		public void removeSectionsManager(IProject project){
+			if (_map.containsKey(project))
+				_map.remove(project);
+		}
+		
+	}
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/WPETabDescriptorProvider.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/WPETabDescriptorProvider.java
new file mode 100644
index 0000000..5003d40
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/WPETabDescriptorProvider.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.properties.internal;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.tabbed.ITabDescriptor;
+import org.eclipse.ui.views.properties.tabbed.ITabDescriptorProvider;
+
+/**
+ * Class that provides the default tabs for the Web Page Editor
+ */
+public class WPETabDescriptorProvider implements ITabDescriptorProvider {
+
+	private AttributesTabDescriptor _attributesTabDescriptor;
+	private QuickEditTabDescriptor _quickTabDescriptor;
+
+	/**
+	 * Constructor
+	 */
+	public WPETabDescriptorProvider() {
+		_quickTabDescriptor = new QuickEditTabDescriptor();
+		_attributesTabDescriptor = new AttributesTabDescriptor();
+	}
+	
+	/**
+	 * Provides a QuickTabDescriptor and the AttributesTabDescriptor
+	 */
+	public ITabDescriptor[] getTabDescriptors(IWorkbenchPart part,
+			ISelection selection) {
+
+		return new ITabDescriptor[]{_quickTabDescriptor, 
+									_attributesTabDescriptor};
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/WPETabPropertySectionDescriptorProvider.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/WPETabPropertySectionDescriptorProvider.java
new file mode 100644
index 0000000..258eb46
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/properties/internal/WPETabPropertySectionDescriptorProvider.java
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Sybase, Inc. and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Sybase, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.properties.internal;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jst.pagedesigner.editors.HTMLEditor;
+import org.eclipse.ui.views.properties.tabbed.ISectionDescriptor;
+import org.eclipse.ui.views.properties.tabbed.ISectionDescriptorProvider;
+
+/**
+ * Provides sections registered for the Web Page Editor whose contributor ID is,
+ * "org.eclipse.jst.pagedesigner.tabPropertyContributor" using the
+ * org.eclipse.ui.views.properties.tabbed.propertyTabs extension-points.  
+ * 
+ * The sections declared using the org.eclipse.ui.views.properties.tabbed.propertySections extension-point 
+ * for the WPE will only be displayed by the Quick Edit tab is the selected tag has metadata to choose 
+ * the section.  TypeMappers/filters, etc. are ignored by this sectionDescriptorProvider.
+ * 
+ * See jsf_html.xml in the org.eclipse.jst.jsf.standard.tagsupport plugin for examples on how to use.  
+ */
+public class WPETabPropertySectionDescriptorProvider implements
+		ISectionDescriptorProvider {
+	
+	private static final String EXTPT_SECTIONS = "propertySections"; //$NON-NLS-1$
+	private static final String ELEMENT_SECTION = "propertySection"; //$NON-NLS-1$
+	private ISectionDescriptor[] _descriptors = null;
+
+	/**
+	 * Constructor
+	 */
+	public WPETabPropertySectionDescriptorProvider() {
+		super();
+	}
+
+	public ISectionDescriptor[] getSectionDescriptors() {
+		if (_descriptors == null) {
+			List result = new ArrayList();
+			List contributedSections = readSectionDescriptors();
+			result.addAll(contributedSections);
+
+//			if (1 == 0){ //disabled for now... do we want to allow other mechanisms to add sections?
+//				List providers = readAdditionalSectionDescriptorProviders();
+//				for (int i = 0, size = providers.size(); i < size; i++) {
+//					try {
+//						ISectionDescriptorProvider provider = (ISectionDescriptorProvider) providers
+//								.get(i);
+//						ISectionDescriptor[] sections = provider
+//								.getSectionDescriptors();
+//						if (sections != null) {
+//							result.addAll(Arrays.asList(sections));
+//						}
+//					} catch (Exception ex) {
+//						// ignore
+//						ex.printStackTrace();
+//					}
+//				}
+//			}
+			_descriptors = new ISectionDescriptor[result.size()];
+			result.toArray(_descriptors);
+		}
+		return _descriptors;
+	}
+
+	/**
+	 * @return registered section descriptors for the WPE QuickEdit tab
+	 */
+	protected List<QuickEditTabSectionDescriptor> readSectionDescriptors() {
+		List result = new ArrayList();
+			
+		IConfigurationElement[] extensions = getConfigurationElements(EXTPT_SECTIONS);
+		for (int i = 0; i < extensions.length; i++) {
+			IConfigurationElement extension = extensions[i];
+			if (extension.getAttribute("contributorId").equals(HTMLEditor.TABBED_PROPERTIES_CONTRIBUTOR_ID)){
+				IConfigurationElement[] sections = extension
+						.getChildren(ELEMENT_SECTION);
+				for (int j = 0; j < sections.length; j++) {
+					IConfigurationElement section = sections[j];
+					ISectionDescriptor descriptor = new QuickEditTabSectionDescriptor(
+							section, null);//ITypeMapper set to null
+					result.add(descriptor);
+				}
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * @param extensionPointId
+	 * @return IConfigurationElement[] 
+	 */
+	private static IConfigurationElement[] getConfigurationElements(
+			String extensionPointId) {
+		IExtensionPoint extensionPoint = Platform.getExtensionRegistry()
+				.getExtensionPoint("org.eclipse.ui.views.properties.tabbed", extensionPointId);
+		if (extensionPoint == null) {
+			return null;
+		}
+		return extensionPoint.getConfigurationElements();
+	}
+	
+	/**
+	 * @param name of section
+	 * @return {@link QuickEditTabSectionDescriptor} or null if not located
+	 */
+	public QuickEditTabSectionDescriptor getNamedSectionDescriptor(String name) {
+		for (int i=0;i<getSectionDescriptors().length;i++){
+			QuickEditTabSectionDescriptor sd = (QuickEditTabSectionDescriptor)getSectionDescriptors()[i];
+			if (name.equals(sd.getId()))
+				return sd;
+		}
+		return null;
+	}
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/taglibprocessing/CSSClassType.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/taglibprocessing/CSSClassType.java
new file mode 100644
index 0000000..df7b36c
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/taglibprocessing/CSSClassType.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.taglibprocessing;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jst.jsf.context.resolver.structureddocument.IDOMContextResolver;
+import org.eclipse.jst.jsf.context.resolver.structureddocument.internal.impl.StructuredDocumentContextResolverFactory;
+import org.eclipse.jst.jsf.metadataprocessors.AbstractRootTypeDescriptor;
+import org.eclipse.jst.jsf.metadataprocessors.IMetaDataEnabledFeature;
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValue;
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.PossibleValue;
+import org.eclipse.jst.pagedesigner.css2.CSSUtil;
+import org.w3c.dom.Document;
+
+/**
+ * Represents a style class attribute type
+ *
+ */
+public class CSSClassType extends AbstractRootTypeDescriptor implements
+		IMetaDataEnabledFeature, IPossibleValues {
+
+	private List<IPossibleValue> _pvs;
+	
+	public List<IPossibleValue> getPossibleValues() {
+		if (_pvs == null){
+			IDOMContextResolver resolver = StructuredDocumentContextResolverFactory.getInstance().getDOMContextResolver(getStructuredDocumentContext());
+			_pvs = getCSSClasses(resolver.getDOMDocument());
+		}
+		return _pvs;
+	}
+
+	private List<IPossibleValue> getCSSClasses(Document doc) {
+		List result = new ArrayList();
+		String [] names = CSSUtil.getCSSClasses(doc);
+		for (int i=0;i<names.length;i++){
+			IPossibleValue pv = new PossibleValue(names[i]);
+			result.add(pv);
+		}
+		return result;
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/taglibprocessing/CSSIdType.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/taglibprocessing/CSSIdType.java
new file mode 100644
index 0000000..bf6c760
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/taglibprocessing/CSSIdType.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.taglibprocessing;
+
+import org.eclipse.jst.jsf.metadataprocessors.AbstractRootTypeDescriptor;
+import org.eclipse.jst.jsf.metadataprocessors.IMetaDataEnabledFeature;
+
+/**
+ * Represents CSS id attribute type
+ * EXPERIMENTAL - may change or disappear
+ *
+ */
+public class CSSIdType extends AbstractRootTypeDescriptor implements
+		IMetaDataEnabledFeature {
+
+	/**
+	 * Constructor
+	 */
+	public CSSIdType() {
+		// TODO Auto-generated constructor stub
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/taglibprocessing/CSSStyleType.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/taglibprocessing/CSSStyleType.java
new file mode 100644
index 0000000..614f988
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/taglibprocessing/CSSStyleType.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.taglibprocessing;
+
+import org.eclipse.jst.jsf.metadataprocessors.AbstractRootTypeDescriptor;
+import org.eclipse.jst.jsf.metadataprocessors.IMetaDataEnabledFeature;
+
+/**
+ * Represents CSS style attribute
+ *
+ */
+public class CSSStyleType extends AbstractRootTypeDescriptor implements
+		IMetaDataEnabledFeature {
+
+	/**
+	 * Constructor
+	 */
+	public CSSStyleType() {
+		// TODO Auto-generated constructor stub
+	}
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/dialogfields/DialogFieldWrapper.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/dialogfields/DialogFieldWrapper.java
index 1bb72f7..9812c4e 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/dialogfields/DialogFieldWrapper.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/dialogfields/DialogFieldWrapper.java
@@ -17,6 +17,7 @@
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.IDialogFieldChangeListener;
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.IStringButtonAdapter;
 import org.eclipse.jst.jsf.common.ui.internal.dialogfield.ISupportTextValue;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
 import org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor;
 import org.eclipse.jst.pagedesigner.meta.IBindingHandler;
 import org.eclipse.jst.pagedesigner.properties.attrgroup.IElementContextable;
@@ -75,6 +76,8 @@
 
 	private IBindingHandler _handler;
 
+	private IPropertyPageDescriptor _pdattr;
+
 	/**
 	 * @param field 
 	 * @param image 
@@ -119,6 +122,51 @@
 			}
 		});
 	}
+	
+	/**
+	 * @param field 
+	 * @param image 
+	 * @param disabledImage 
+	 * @param uri 
+	 * @param tagName 
+	 * @param attr 
+	 * @param handler 
+	 * 
+	 */
+	public DialogFieldWrapper(DialogField field, Image image,
+			Image disabledImage, String uri, String tagName,
+			IPropertyPageDescriptor attr, IBindingHandler handler) {
+		super();
+		if (!(field instanceof ISupportTextValue)) {
+			throw new IllegalArgumentException(
+					"Field must be ISupportTextValue");
+		}
+		_wrapped = field;
+		this._image = image;
+		this._disabledImage = disabledImage;
+		this._uri = uri;
+		this._tagName = tagName;
+		this._pdattr = attr;
+		this._handler = handler;
+
+		setDatabindingPressedHandler(new IStringButtonAdapter() {
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see org.eclipse.jst.jsf.common.ui.internal.dialogfield.IStringButtonAdapter#changeControlPressed(org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField)
+			 */
+			public void changeControlPressed(DialogField field1) {
+				Shell shell = field1.getLabelControl(null, null).getShell();
+				DialogFieldWrapper wrapper = (DialogFieldWrapper) field1;
+				String result = _handler
+						.handleBinding(shell, wrapper.getAncester(), wrapper
+								.getElement(), wrapper.getText());
+				if (result != null) {
+					wrapper.setText(result);
+				}
+			}
+		});
+	}
 
 	private void setDatabindingPressedHandler(IStringButtonAdapter adapter) {
 		this._adapter = adapter;
@@ -166,8 +214,14 @@
 		this._ancester = ancester;
 		this._element = element;
 
-		boolean bindingEnabled = _handler.isEnabled(_ancester, _element, _uri,
+		boolean bindingEnabled = false;
+		
+		if (_attr != null)
+			bindingEnabled = _handler.isEnabled(_ancester, _element, _uri,
 				_tagName, _attr);
+		else if (_pdattr != null)
+			bindingEnabled = false;//_handler.isEnabled(_ancester, _element, _pdattr);
+		
 		this.setDatabindingEnabled(bindingEnabled);
 	}
 
@@ -211,7 +265,7 @@
 	 * @return
 	 */
 	private Control getDatabingingButton(FormToolkit toolkit, Composite parent) {
-		if (_databindingButton == null) {
+		if (_databindingButton == null || _databindingButton.isDisposed()) {
 			Assert.isNotNull(parent,
 					"uncreated control requested with composite null"); //$NON-NLS-1$
 			if (toolkit != null) {