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/tests/org.eclipse.jst.jsf.facesconfig.tests/plugin.xml b/jsf/tests/org.eclipse.jst.jsf.facesconfig.tests/plugin.xml
index 071b965..4d8a631 100644
--- a/jsf/tests/org.eclipse.jst.jsf.facesconfig.tests/plugin.xml
+++ b/jsf/tests/org.eclipse.jst.jsf.facesconfig.tests/plugin.xml
@@ -1,11 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>
- <extension
- point="org.eclipse.wst.common.tests.collector.suites">
- <suite
- class="org.eclipse.jst.jsf.facesconfig.tests.AllFacesConfigTests"
- name="org.eclipse.jst.jsf.facesconfig.tests">
- </suite>
- </extension>
</plugin>
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/META-INF/MANIFEST.MF b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/META-INF/MANIFEST.MF
index 9ba3265..735fbae 100644
--- a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/META-INF/MANIFEST.MF
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/META-INF/MANIFEST.MF
@@ -20,12 +20,13 @@
org.eclipse.wst.html.core;bundle-version="[1.1.0,1.2.0)",
org.eclipse.wst.xml.core;bundle-version="[1.1.0,1.2.0)",
org.eclipse.jface.text;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.jdt.core,
- org.eclipse.wst.common.project.facet.core,
- org.eclipse.jst.common.frameworks,
+ org.eclipse.jdt.core;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.wst.common.project.facet.core;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.jst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
org.eclipse.jst.jsf.core.tests,
org.eclipse.wst.validation,
- org.eclipse.jst.pagedesigner.jsf.ui
+ org.eclipse.jst.pagedesigner.jsf.ui,
+ org.eclipse.ui.views.properties.tabbed;bundle-version="[3.2.0,4.0.0)"
Eclipse-LazyStart: true
Export-Package: com.foobar;x-internal:=true,
org.eclipse.jst.jsf.common.metadata.tests;x-internal:=true,
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/plugin.xml b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/plugin.xml
index beb4a8c..49740c6 100644
--- a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/plugin.xml
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/plugin.xml
@@ -40,7 +40,18 @@
location="/testfiles/metadata/traithelpertest.xml"
locator="org.eclipse.jst.jsf.common.metadata.tests.MyMDLocator"
uri="http://org.eclipse.jsf/traithelpertest"/>
+ <standardMetaDataFile
+ location="/testfiles/metadata/quickEditSectionTest.xml"
+ uri="http://org.eclipse.jsf/quickEditSectionTest"/>
+ <standardMetaDataFile
+ location="/testfiles/metadata/propertyDescriptorTest.xml"
+ uri="http://org.eclipse.jsf/propertyDescriptorTest"/>
+
</extension>
+ <extension point="org.eclipse.jst.pagedesigner.cmRegistry">
+ <registry configFile="/testfiles/metadata/sybasejsfhtml.xml"
+ uri="http://SybaseMD.test.jsfhtml" />
+ </extension>
<extension
point="org.eclipse.jst.jsf.core.AttributeValueRuntimeTypes">
<attributeValueRuntimeType
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/AllTests.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/AllTests.java
index 9b5316b..63f6bb5 100644
--- a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/AllTests.java
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/AllTests.java
@@ -35,11 +35,19 @@
import org.eclipse.jst.jsf.metadata.tests.metadataprocessing.AttributeValueRuntimeTypeFactoryTests;
import org.eclipse.jst.jsf.metadata.tests.metadataprocessing.AttributeValueRuntimeTypesRegistryTests;
import org.eclipse.jst.jsf.metadata.tests.metadataprocessing.MetaDataProcessorsFactoryTests;
+import org.eclipse.jst.jsf.metadata.tests.pagedesigner.PropertyDescriptorTests;
+import org.eclipse.jst.jsf.metadata.tests.pagedesigner.QuickEditSectionsTests;
+import org.eclipse.jst.jsf.metadata.tests.sybaseMDTranslations.SybaseCMTranslationTests;
import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.ActionTypeTests;
import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.BooleanTypeTest;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.CSSClassTypeTests;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.CSSStyleTypeTests;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.CharacterTypeTest;
import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.ColorTypeTest;
import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.ComponentBindingTypeTests;
import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.ComponentIDTypeTests;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.ContentTypeTest;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.CurrencyCodeTypeTest;
import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.DoubleTypeTest;
import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.EnumeratedDoubleTypeTest;
import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.EnumeratedIntegerTypeTest;
@@ -49,10 +57,15 @@
import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.IntegerTypeTest;
import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.JSFHTMLTestCase;
import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.JavaClassTypeTest;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.LanguageCodeTypeTest;
import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.LengthTypeTest;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.LinkTypeTest;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.LocaleTypeTest;
import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.LongTypeTest;
import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.MethodBindingTypeTests;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.NumberPatternTypeTest;
import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.StringTypeTest;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.TimeZoneTypeTest;
import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.ValueBindingTypeTests;
import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.ValueTypeTests;
import org.eclipse.jst.jsf.metadata.tests.util.IJSFRuntimeRequiredV11;
@@ -96,7 +109,15 @@
addTestSuite(suite, AttributeValueRuntimeTypesRegistryTests.class);
addTestSuite(suite, AttributeValueRuntimeTypeFactoryTests.class);
+ //Sybase config translation test
+ addTestSuite(suite, SybaseCMTranslationTests.class);
+
+ //PageDesigner Metadata tests
+ addTestSuite(suite, PropertyDescriptorTests.class);
+ addTestSuite(suite, QuickEditSectionsTests.class);
+
// //taglib processing
+ //Tests NOT requiring JSF Implementation
addTestSuite(suite, StringTypeTest.class);
addTestSuite(suite, BooleanTypeTest.class);
addTestSuite(suite, IntegerTypeTest.class);
@@ -105,6 +126,23 @@
addTestSuite(suite, EnumeratedLongTypeTest.class);
addTestSuite(suite, DoubleTypeTest.class);
addTestSuite(suite, EnumeratedDoubleTypeTest.class);
+
+ addTestSuite(suite, ColorTypeTest.class);
+ addTestSuite(suite, LanguageCodeTypeTest.class);
+ addTestSuite(suite, LocaleTypeTest.class);
+ addTestSuite(suite, CurrencyCodeTypeTest.class);
+ addTestSuite(suite, TimeZoneTypeTest.class);
+ addTestSuite(suite, LengthTypeTest.class);
+ addTestSuite(suite, NumberPatternTypeTest.class);
+// addTestSuite(suite, RelativePathTypeTest.class);
+// addTestSuite(suite, WebPathTypeTest.class);
+ addTestSuite(suite, CharacterTypeTest.class);
+// addTestSuite(suite, ScriptTypeTest.class);
+ addTestSuite(suite, LinkTypeTest.class);
+ addTestSuite(suite, ContentTypeTest.class);
+// addTestSuite(suite, URITypeTest.class);
+
+ //Tests requiring JSF Implementation
addTestSuite(suite, JavaClassTypeTest.class);
addTestSuite(suite, FacesConfigConverterIDTypeTests.class);
addTestSuite(suite, FacesConfigValidatorIDTypeTests.class);
@@ -114,11 +152,14 @@
addTestSuite(suite, ValueBindingTypeTests.class);
addTestSuite(suite, ValueTypeTests.class);
addTestSuite(suite, ActionTypeTests.class);
- addTestSuite(suite, LengthTypeTest.class);
- addTestSuite(suite, ColorTypeTest.class);
+
+ addTestSuite(suite, CSSClassTypeTests.class);
+ addTestSuite(suite, CSSStyleTypeTests.class);
addTestSuite(suite, JSFHTMLTestCase.class);
// addTestSuite(suite, JSFCoreTestCase.class);
+
+
//$JUnit-END$
return suite;
}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/pagedesigner/PropertyDescriptorTests.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/pagedesigner/PropertyDescriptorTests.java
new file mode 100644
index 0000000..a5aae25
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/pagedesigner/PropertyDescriptorTests.java
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.metadata.tests.pagedesigner;
+
+import java.util.List;
+
+import org.eclipse.core.runtime.QualifiedName;
+import org.eclipse.jst.jsf.common.metadata.Entity;
+import org.eclipse.jst.jsf.common.metadata.Model;
+import org.eclipse.jst.jsf.common.metadata.query.ITaglibDomainMetaDataModelContext;
+import org.eclipse.jst.jsf.common.metadata.query.TaglibDomainMetaDataQueryHelper;
+import org.eclipse.jst.jsf.core.JSFVersion;
+import org.eclipse.jst.jsf.metadata.tests.util.SingleJSPTestCase;
+import org.eclipse.jst.jsf.metadataprocessors.IMetaDataEnabledFeature;
+import org.eclipse.jst.jsf.metadataprocessors.MetaDataEnabledProcessingFactory;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+import org.eclipse.jst.pagedesigner.properties.ITabbedPropertiesConstants;
+
+//TODO: can use beefing up
+public class PropertyDescriptorTests extends SingleJSPTestCase {
+
+ private static QualifiedName qn = new QualifiedName("test","model");
+ private String uri = "http://org.eclipse.jsf/propertyDescriptorTest";
+ private Model _model;
+ private int _offset = 423;
+
+
+ public PropertyDescriptorTests() {
+ super("/testfiles/jsps/propertyDescTests.jsp",
+ "/propertyDescTests.jsp",
+ JSFVersion.V1_1,
+ "/testfiles/web/faces-config_1_1.xml.data");
+ }
+
+ public void setUp() throws Exception {
+ if (_model == null) {
+ super.setUp();
+ getModel();
+ }
+ }
+
+ private Model getModel() {
+ if (_model == null) {
+ ITaglibDomainMetaDataModelContext modelContext = TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(null, uri);
+ _model = TaglibDomainMetaDataQueryHelper.getModel(modelContext);
+ }
+
+ return _model;
+ }
+
+ public void testBasics(){
+ assertNotNull(getModel());
+ assertEquals(1, getModel().getChildEntities().size());
+
+ Entity tag = TaglibDomainMetaDataQueryHelper.getEntity(getModel(), "Tag");
+ assertNotNull(tag);
+ assertTrue(tag.getChildEntities().size() == 3);
+
+ testAttr1(tag);
+ testDefaultAttr(tag);
+
+ }
+
+
+ private void testAttr1(Entity tag){
+ Entity attr1 = TaglibDomainMetaDataQueryHelper.getEntity(tag, "Attr1");
+ assertNotNull(attr1);
+ assertTrue(attr1.getTraits().size() > 2);
+
+ List<IMetaDataEnabledFeature> pds = MetaDataEnabledProcessingFactory.getInstance().getAttributeValueRuntimeTypeFeatureProcessors(IPropertyPageDescriptor.class, getStructuredDocumentContext(_structuredDocument, _offset), attr1);
+ assertNotNull(pds);
+ IPropertyPageDescriptor pd = (IPropertyPageDescriptor)pds.get(0);
+ assertNotNull(pd);
+ assertEquals("CategoryName", pd.getCategory());
+ assertEquals("This is a description.", pd.getDescription());
+ assertTrue(pd.isRequired());
+ assertEquals("MyAttr1", pd.getLabel());
+
+ }
+
+ private void testDefaultAttr(Entity tag){
+ Entity attr1 = TaglibDomainMetaDataQueryHelper.getEntity(tag, "DefaultAttr");
+ assertNotNull(attr1);
+
+ List<IMetaDataEnabledFeature> pds = MetaDataEnabledProcessingFactory.getInstance().getAttributeValueRuntimeTypeFeatureProcessors(IPropertyPageDescriptor.class, getStructuredDocumentContext(_structuredDocument, _offset), attr1);
+ assertNotNull(pds);
+ IPropertyPageDescriptor pd = (IPropertyPageDescriptor)pds.get(0);
+ assertNotNull(pd);
+ assertEquals(ITabbedPropertiesConstants.OTHER_CATEGORY, pd.getCategory());
+ assertNull(pd.getDescription());
+ assertFalse(pd.isRequired());
+ assertEquals("DefaultAttr", pd.getLabel());
+
+ }
+
+
+ public void testLocatePropertyPageDescForBooleanTagAttr() {
+ Entity boolAttr = TaglibDomainMetaDataQueryHelper.getEntity(getModel(), "Tag/boolAttr");
+ assertNotNull(boolAttr);
+
+ List<IMetaDataEnabledFeature> pds = MetaDataEnabledProcessingFactory.getInstance().getAttributeValueRuntimeTypeFeatureProcessors(IPropertyPageDescriptor.class, getStructuredDocumentContext(_structuredDocument, _offset), boolAttr);
+ assertNotNull(pds);
+ IPropertyPageDescriptor pd = (IPropertyPageDescriptor)pds.get(0);
+ assertNotNull(pd);
+
+ }
+
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/pagedesigner/QuickEditSectionsTests.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/pagedesigner/QuickEditSectionsTests.java
new file mode 100644
index 0000000..83faab6
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/pagedesigner/QuickEditSectionsTests.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.metadata.tests.pagedesigner;
+
+import org.eclipse.jst.jsf.common.metadata.Entity;
+import org.eclipse.jst.jsf.common.metadata.Model;
+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.core.JSFVersion;
+import org.eclipse.jst.jsf.metadata.tests.util.JSPTestCase;
+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;
+
+//TODO: can use beefing up
+public class QuickEditSectionsTests extends JSPTestCase {
+ private String _uri;
+ private ITaglibDomainMetaDataModelContext _context;
+
+ public QuickEditSectionsTests () {
+ super( JSFVersion.V1_1,
+ "/testfiles/web/faces-config_1_1.xml.data");
+
+ }
+ public void setUp() throws Exception{
+ super.setUp();
+
+ _uri = "http://org.eclipse.jsf/quickEditSectionTest";
+ _context = TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(_testEnv.getTestProject(), _uri);
+ }
+
+ public void testQuickEditTabSections(){
+ Model model = TaglibDomainMetaDataQueryHelper.getModel(_context);
+ assertNotNull(model);
+ Entity entity = TaglibDomainMetaDataQueryHelper.getEntity(model, "A");
+ assertNotNull(entity);
+ Trait trait = TaglibDomainMetaDataQueryHelper.getTrait(entity , QuickEditTabSections.TRAIT_ID);
+ assertNotNull(trait);
+ assertNotNull(trait.getValue());
+ assertTrue(trait.getValue() instanceof QuickEditTabSections);
+ QuickEditTabSections sections = (QuickEditTabSections)trait.getValue();
+ assertEquals(3, sections.getSections().size());
+
+ SectionInfo section = sections.getSections().get(0);
+ assertEquals("attr1", section.getId());
+ assertEquals(SECTION_TYPE.ATTRIBUTE, section.getType());
+
+ section = sections.getSections().get(1);
+ assertEquals("attr2", section.getId());
+ assertEquals(SECTION_TYPE.ATTRIBUTE, section.getType());
+
+ section = sections.getSections().get(2);
+ assertEquals("section1", section.getId());
+ assertEquals(SECTION_TYPE.SECTION, section.getType());
+
+ }
+
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/sybaseMDTranslations/SybaseCMTranslationTests.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/sybaseMDTranslations/SybaseCMTranslationTests.java
new file mode 100644
index 0000000..11b152f
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/sybaseMDTranslations/SybaseCMTranslationTests.java
@@ -0,0 +1,295 @@
+package org.eclipse.jst.jsf.metadata.tests.sybaseMDTranslations;
+
+import java.util.List;
+import java.util.Locale;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.QualifiedName;
+import org.eclipse.jst.jsf.common.metadata.Entity;
+import org.eclipse.jst.jsf.common.metadata.Model;
+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.ITaglibDomainMetaDataModelContext;
+import org.eclipse.jst.jsf.common.metadata.query.TaglibDomainMetaDataQueryHelper;
+import org.eclipse.jst.jsf.common.metadata.tests.AbstractBaseMetaDataTestCase;
+import org.eclipse.jst.jsf.common.metadata.traittypes.traittypes.ListOfValues;
+import org.eclipse.jst.jsf.metadata.tests.util.IJSFRuntimeRequiredV11;
+import org.eclipse.jst.jsf.metadataprocessors.MetaDataEnabledProcessingFactory;
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+import org.eclipse.jst.pagedesigner.meta.IAttributeRuntimeValueType;
+
+
+public class SybaseCMTranslationTests extends AbstractBaseMetaDataTestCase implements IJSFRuntimeRequiredV11 {
+ private static QualifiedName qn = new QualifiedName("test","model");
+ private String uri = "http://SybaseMD.test.jsfhtml";
+ private Model _model;
+
+ public void setUp() throws Exception {
+ if (_model == null) {
+ super.setUp();
+ getModel();
+ }
+ }
+
+ private Model getModel() {
+ try {
+ _model = (Model)project.getSessionProperty(qn);
+ if (_model == null) {
+ ITaglibDomainMetaDataModelContext modelContext = TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(project, uri);
+ _model = TaglibDomainMetaDataQueryHelper.getModel(modelContext);
+ assertNotNull(_model);
+ try {
+ project.setSessionProperty(qn, _model);
+ } catch (CoreException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ } catch (CoreException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
+ return _model;
+ }
+
+ public void testBasics(){
+ assertNotNull(getModel());
+ assertEquals(25, getModel().getChildEntities().size());
+
+ testSanity(getModel());
+ testAttributeTraits(getModel());
+ testPossibleValues(getModel());
+
+
+ }
+
+ private void testSanity(Model model){
+ Entity form = TaglibDomainMetaDataQueryHelper.getEntity(model, "form");
+ assertNotNull(form);
+ assertTrue(form.getChildEntities().size() >= 10);
+
+ Entity dir = TaglibDomainMetaDataQueryHelper.getEntity(form, "dir");
+ assertNotNull(dir);
+ assertTrue(dir.getTraits().size() > 2);
+
+ Trait validValues = TaglibDomainMetaDataQueryHelper.getTrait(dir, "valid-values");
+ assertNotNull(validValues);
+
+ Entity nullEntity = TaglibDomainMetaDataQueryHelper.getEntity(model, "commandButton/converter");//converter should be excluded
+ assertNull("commandButton/converter should not be present", nullEntity);
+ }
+
+ private void testAttributeTraits(Model model) {
+ if (Locale.getDefault().equals(Locale.US)) {
+ testProps(model, "message/for", "true", "For", null, null, "JSF", null);
+ testProps(model, "commandButton/action", "false", "Action", "action", null, "JSF", null);
+ testProps(model, "dataTable/frame", "false", "Frame", null, "No sides", "HTML", null);
+ }
+ }
+
+ public void testEnumeratedValueTypeTranslation() {
+ assertEquals(IAttributeRuntimeValueType.STRING, getAttrValRuntimeType(getModel(), "selectManyCheckbox/layout"));
+ assertEquals(IAttributeRuntimeValueType.LANGUAGECODE, getAttrValRuntimeType(getModel(), "form/lang"));
+ }
+
+ public void testBooleanValueTypeTranslation() {
+ assertEquals(IAttributeRuntimeValueType.BOOLEAN, getAttrValRuntimeType(getModel(), "inputText/immediate"));
+ Entity attr = TaglibDomainMetaDataQueryHelper.getEntity(getModel(), "commandButton/rendered");
+ List list = MetaDataEnabledProcessingFactory.getInstance().getAttributeValueRuntimeTypeFeatureProcessors(IPropertyPageDescriptor.class, null , attr);
+ assertNotNull(list);
+ assertTrue(list.size() > 0);
+ }
+
+ public void testJavaClassTypeTranslation() {
+ assertEquals(IAttributeRuntimeValueType.JAVACLASS, getAttrValRuntimeType(getModel(), "column/faketypeattr"));
+ Trait t = getTrait(getModel(), "column/faketypeattr", "valid-interfaces");
+ assertNotNull(t);
+ assertEquals("javax.faces.event.ActionListener", TraitValueHelper.getValueAsString(t));
+ }
+
+ public void testClasspathResourceTypeTranslation() {
+ assertEquals(IAttributeRuntimeValueType.RESOURCEBUNDLE, getAttrValRuntimeType(getModel(), "column/fakeBasename"));
+ }
+
+ public void testColorTypeTranslation() {
+ assertEquals(IAttributeRuntimeValueType.COLOR, getAttrValRuntimeType(getModel(), "column/fakeColor"));
+ }
+
+ public void testCSSClassTypeTranslation() {
+ assertEquals(IAttributeRuntimeValueType.CSSCLASS, getAttrValRuntimeType(getModel(), "selectBooleanCheckbox/styleClass"));
+ }
+ public void testCSSIdTypeTranslation() {
+ assertEquals(IAttributeRuntimeValueType.CSSID, getAttrValRuntimeType(getModel(), "column/fakecssid"));
+ }
+ public void testCSSStyleTypeTranslation() {
+ assertEquals(IAttributeRuntimeValueType.CSSSTYLE, getAttrValRuntimeType(getModel(), "selectBooleanCheckbox/style"));
+ }
+ public void testCurrencyCodeTypeTranslation() {
+ assertEquals(IAttributeRuntimeValueType.CURRENCYCODE, getAttrValRuntimeType(getModel(), "column/fakeCurrencyCode"));
+ }
+ public void testJavaScriptTypeTypeTranslation() {
+ assertEquals(IAttributeRuntimeValueType.SCRIPT, getAttrValRuntimeType(getModel(), "commandButton/onfocus"));
+ }
+ public void testLinkTypeTranslation() {
+ // none known usages
+ }
+ public void testLocaleTypeTranslation() {
+ assertEquals(IAttributeRuntimeValueType.LOCALE, getAttrValRuntimeType(getModel(), "column/fakeLocale"));
+ }
+
+ public void testMethodBindingTypeTranslation() {
+ //validator
+ assertEquals(IAttributeRuntimeValueType.METHODBINDING, getAttrValRuntimeType(getModel(), "inputText/validator"));
+ Trait t = getTrait(getModel(), "inputText/validator", "runtime-param-types");
+ assertNotNull(t);
+ assertTrue(t.getValue() instanceof ListOfValues);
+ List vals = TraitValueHelper.getValueAsListOfStrings(t);
+ assertEquals(3, vals.size());
+ assertEquals("java.lang.Object", vals.get(2));
+
+ t = getTrait(getModel(), "inputText/validator", "runtime-return-type");
+ assertNotNull(t);
+ assertEquals("void", TraitValueHelper.getValueAsString(t));
+
+ //actionListener
+ assertEquals(IAttributeRuntimeValueType.METHODBINDING, getAttrValRuntimeType(getModel(), "commandButton/actionListener"));
+ t = getTrait(getModel(), "commandButton/actionListener", "runtime-param-types");
+ assertNotNull(t);
+ assertEquals("javax.faces.event.ActionEvent", TraitValueHelper.getValueAsString(t));
+
+ assertEquals(IAttributeRuntimeValueType.METHODBINDING, getAttrValRuntimeType(getModel(), "inputText/valueChangeListener"));
+ t = getTrait(getModel(), "inputText/valueChangeListener", "runtime-param-types");
+ assertNotNull(t);
+ assertEquals("javax.faces.event.ValueChangeEvent", TraitValueHelper.getValueAsString(t));
+ }
+
+ public void testMultiChoiceTypeTypeTranslation() {
+ //i believe that this is a comma-delim enumerated type... noop for now
+ assertEquals(IAttributeRuntimeValueType.STRING, getAttrValRuntimeType(getModel(), "column/fakeMultiChoice"));
+ }
+ public void testNamedBooleanTypeTranslation() {
+ assertEquals(IAttributeRuntimeValueType.BOOLEAN, getAttrValRuntimeType(getModel(), "graphicImage/ismap"));
+ }
+
+ public void testPropertyBindingTypeTranslation() {
+ assertEquals(IAttributeRuntimeValueType.VALUEBINDING, getAttrValRuntimeType(getModel(), "message/binding"));
+ }
+
+ public void testRelativePathValueTypeTranslation() {
+ assertEquals(IAttributeRuntimeValueType.RELATIVEPATH, getAttrValRuntimeType(getModel(), "outputLink/value"));
+ }
+
+ public void testTimeZoneTypeTranslation() {
+ assertEquals(IAttributeRuntimeValueType.TIMEZONE, getAttrValRuntimeType(getModel(), "column/fakeTimeZone"));
+ }
+
+ public void testJavaScriptTypeTranslation() {
+ assertEquals(IAttributeRuntimeValueType.SCRIPT, getAttrValRuntimeType(getModel(), "commandButton/onclick"));
+ }
+ public void testWebPathTypeTranslation() {
+ assertEquals(IAttributeRuntimeValueType.WEBPATH, getAttrValRuntimeType(getModel(), "graphicImage/value"));
+ Trait trait = getTrait(getModel(), "graphicImage/value", "file-extensions");
+ assertNotNull(trait);
+ assertEquals(3, TraitValueHelper.getValueAsListOfStrings(trait).size());
+ }
+
+ private Trait getTrait(Model model, String entityKey, String traitKey) {
+ Entity attrEntity = TaglibDomainMetaDataQueryHelper.getEntity(model, entityKey);
+ assertNotNull(attrEntity);
+
+ return TaglibDomainMetaDataQueryHelper.getTrait(attrEntity, traitKey);
+ }
+
+ private String getAttrValRuntimeType(Model model, String entityKey) {
+ Trait t = getTrait(model, entityKey, MetaDataEnabledProcessingFactory.ATTRIBUTE_VALUE_RUNTIME_TYPE_PROP_NAME);
+ assertNotNull(t);
+ return TraitValueHelper.getValueAsString(t);
+ }
+
+ private void testProps(Model model, String entityKey, String requiredVal, String displayLabel, String description, String defaultValue, String cateagoryValue, String typeParam) {
+ Entity attrEntity = TaglibDomainMetaDataQueryHelper.getEntity(model, entityKey);
+ assertNotNull(attrEntity);
+ assertTrue(attrEntity.getChildEntities().size() == 0);
+
+ //required
+ Trait t = TaglibDomainMetaDataQueryHelper.getTrait(attrEntity, "required");
+ if (requiredVal != null){
+ assertNotNull(t);
+ assertEquals(requiredVal, TraitValueHelper.getValueAsString(t));
+ }
+ else
+ assertNull(t);
+
+ //display-label
+ t = TaglibDomainMetaDataQueryHelper.getTrait(attrEntity, "display-label");
+ if (displayLabel != null){
+ assertNotNull(t);
+ assertEquals(displayLabel, TraitValueHelper.getValueAsString(t));
+ }
+ else
+ assertNull(t);
+
+ //description
+ t = TaglibDomainMetaDataQueryHelper.getTrait(attrEntity, "description");
+ if (description != null){
+ assertNotNull(t);
+ assertEquals(description, TraitValueHelper.getValueAsString(t));
+ }
+ else
+ assertNull(t);
+
+ //description
+ t = TaglibDomainMetaDataQueryHelper.getTrait(attrEntity, "default-value");
+ if (defaultValue != null){
+ assertNotNull(t);
+ assertEquals(defaultValue, TraitValueHelper.getValueAsString(t));
+ }
+ else
+ assertNull(t);
+
+ //category
+ t = TaglibDomainMetaDataQueryHelper.getTrait(attrEntity, IPropertyPageDescriptor.PROP_DESC_CATEGORY);
+ if (cateagoryValue != null){
+ assertNotNull(t);
+ assertEquals(cateagoryValue, TraitValueHelper.getValueAsString(t));
+ }
+ else
+ assertNull(t);
+
+ //type-param
+ t = TaglibDomainMetaDataQueryHelper.getTrait(attrEntity, "type-param");
+ if (typeParam != null){
+ assertNotNull(t);
+ assertEquals(typeParam, TraitValueHelper.getValueAsString(t));
+ }
+ else
+ assertNull(t);
+
+ }
+
+ private void testPossibleValues(Model model){
+ //form/dir
+ List pvsList = MetaDataEnabledProcessingFactory.getInstance().getAttributeValueRuntimeTypeFeatureProcessors(IPossibleValues.class, null, uri, "form", "dir");
+ assertNotNull(pvsList);
+ assertEquals(1, pvsList.size());
+ assertTrue(pvsList.get(0) instanceof IPossibleValues);
+ IPossibleValues pvs = (IPossibleValues)pvsList.get(0);
+ assertEquals(2, pvs.getPossibleValues().size());
+
+ //form/lang
+ pvsList = MetaDataEnabledProcessingFactory.getInstance().getAttributeValueRuntimeTypeFeatureProcessors(IPossibleValues.class, null, uri, "form", "lang");
+ assertNotNull(pvsList);
+ assertEquals(1, pvsList.size());
+ assertTrue(pvsList.get(0) instanceof IPossibleValues);
+ pvs = (IPossibleValues)pvsList.get(0);
+ assertEquals(58, pvs.getPossibleValues().size());
+ }
+
+ private List getProcessorAdapters(Class featureClass, String tag, String attrName) {
+ return MetaDataEnabledProcessingFactory.getInstance().
+ getAttributeValueRuntimeTypeFeatureProcessors(featureClass, docContext,
+ uri, tag , attrName);
+ }
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/AllTests.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/AllTests.java
index ad426c2..ff153f0 100644
--- a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/AllTests.java
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/AllTests.java
@@ -39,15 +39,22 @@
addTestSuite(suite, DoubleTypeTest.class);
addTestSuite(suite, EnumeratedDoubleTypeTest.class);
+ addTestSuite(suite, ColorTypeTest.class);
+ addTestSuite(suite, LanguageCodeTypeTest.class);
+ addTestSuite(suite, LocaleTypeTest.class);
+ addTestSuite(suite, CurrencyCodeTypeTest.class);
+ addTestSuite(suite, TimeZoneTypeTest.class);
+ addTestSuite(suite, LengthTypeTest.class);
+ addTestSuite(suite, NumberPatternTypeTest.class);
+// addTestSuite(suite, RelativePathTypeTest.class);
+// addTestSuite(suite, WebPathTypeTest.class);
+ addTestSuite(suite, CharacterTypeTest.class);
+// addTestSuite(suite, ScriptTypeTest.class);
+ addTestSuite(suite, LinkTypeTest.class);
+ addTestSuite(suite, ContentTypeTest.class);
+// addTestSuite(suite, URITypeTest.class);
+
//Tests requiring JSF Implementation
- addTestSuite(suite, StringTypeTest.class);
- addTestSuite(suite, BooleanTypeTest.class);
- addTestSuite(suite, IntegerTypeTest.class);
- addTestSuite(suite, EnumeratedIntegerTypeTest.class);
- addTestSuite(suite, LongTypeTest.class);
- addTestSuite(suite, EnumeratedLongTypeTest.class);
- addTestSuite(suite, DoubleTypeTest.class);
- addTestSuite(suite, EnumeratedDoubleTypeTest.class);
addTestSuite(suite, JavaClassTypeTest.class);
addTestSuite(suite, FacesConfigConverterIDTypeTests.class);
addTestSuite(suite, FacesConfigValidatorIDTypeTests.class);
@@ -58,6 +65,9 @@
addTestSuite(suite, ValueTypeTests.class);
addTestSuite(suite, ActionTypeTests.class);
+ addTestSuite(suite, CSSClassTypeTests.class);
+ addTestSuite(suite, CSSStyleTypeTests.class);
+
addTestSuite(suite,JSFHTMLTestCase.class);
//$JUnit-END$
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CSSClassTypeTests.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CSSClassTypeTests.java
new file mode 100644
index 0000000..48dba3e
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CSSClassTypeTests.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.jsf.metadata.tests.taglibprocessing;
+
+import org.eclipse.jst.jsf.core.JSFVersion;
+import org.eclipse.jst.jsf.metadata.tests.util.SingleJSPTestCase;
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+
+public class CSSClassTypeTests extends SingleJSPTestCase {
+ private final String tagName = "commandButton";
+ private final String attrName = "class";
+
+ public CSSClassTypeTests(){
+ super( "/testfiles/jsps/cssTypesTest.jsp.data/",
+ "/cssTypesTest.jsp",
+ JSFVersion.V1_1,
+ "/testfiles/web/faces-config_1_1.xml.data");
+ }
+
+ public void testGetPossibleValues() {
+ IPossibleValues pv = (IPossibleValues)getProcessor(IPossibleValues.class, JSF_HTML_URI, tagName, attrName);
+ assertNotNull(pv);
+
+ //TODO: fill me in
+ }
+
+ public void testIsValidValue() {
+ IValidValues vv = (IValidValues)getProcessor(IValidValues.class, JSF_HTML_URI, tagName, attrName);
+ assertNull(vv);
+
+ }
+
+
+
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CSSStyleTypeTests.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CSSStyleTypeTests.java
new file mode 100644
index 0000000..3458269
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CSSStyleTypeTests.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.jsf.metadata.tests.taglibprocessing;
+
+import org.eclipse.jst.jsf.core.JSFVersion;
+import org.eclipse.jst.jsf.metadata.tests.util.SingleJSPTestCase;
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+
+public class CSSStyleTypeTests extends SingleJSPTestCase {
+ private final String tagName = "commandButton";
+ private final String attrName = "class";
+
+ public CSSStyleTypeTests(){
+ super( "/testfiles/jsps/cssTypesTest.jsp.data/",
+ "/cssTypesTest.jsp",
+ JSFVersion.V1_1,
+ "/testfiles/web/faces-config_1_1.xml.data");
+ }
+
+ public void testGetPossibleValues() {
+ IPossibleValues pv = (IPossibleValues)getProcessor(IPossibleValues.class, JSF_HTML_URI, tagName, attrName);
+ assertNotNull(pv);
+
+// TODO: fill me in
+ }
+
+ public void testIsValidValue() {
+ IValidValues vv = (IValidValues)getProcessor(IValidValues.class, JSF_HTML_URI, tagName, attrName);
+ assertNull(vv);
+
+
+ }
+
+
+
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CharacterTypeTest.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CharacterTypeTest.java
new file mode 100644
index 0000000..d67c58e
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CharacterTypeTest.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.metadata.tests.taglibprocessing;
+
+import junit.framework.Assert;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+
+public class CharacterTypeTest extends TaglibProcessingTestCase {
+ public void testPossibleValues() {
+ Assert.assertNotNull(possibleValueAdapters);
+ Assert.assertTrue(possibleValueAdapters.isEmpty());
+
+ }
+
+ public void testValidValuesValues() {
+ Assert.assertNotNull(validValuesAdapters);
+ Assert.assertFalse(validValuesAdapters.isEmpty());
+
+ IValidValues pvs = (IValidValues) validValuesAdapters.get(0);
+ Assert.assertTrue(pvs.isValidValue("a"));
+
+
+ //negative
+ Assert.assertFalse(pvs.isValidValue("ab"));
+ pvs.getValidationMessages().clear();
+ Assert.assertFalse(pvs.isValidValue("_a"));
+ pvs.getValidationMessages().clear();
+ Assert.assertFalse(pvs.isValidValue(""));
+ pvs.getValidationMessages().clear();
+ Assert.assertFalse(pvs.isValidValue(" a "));
+ pvs.getValidationMessages().clear();
+ }
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/ComponentIDTypeTests.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/ComponentIDTypeTests.java
index d49a87f..845e827 100644
--- a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/ComponentIDTypeTests.java
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/ComponentIDTypeTests.java
@@ -11,6 +11,8 @@
package org.eclipse.jst.jsf.metadata.tests.taglibprocessing;
+import junit.framework.Assert;
+
import org.eclipse.jst.jsf.core.JSFVersion;
import org.eclipse.jst.jsf.metadata.tests.util.SingleJSPTestCase;
import org.eclipse.jst.jsf.metadataprocessors.features.ELIsNotValidException;
@@ -19,7 +21,8 @@
import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
public class ComponentIDTypeTests extends SingleJSPTestCase {
- private final String tagName = "inputText";
+
+ private final String tagName = "commandButton";
private final String attrName = "id";
public ComponentIDTypeTests() {
@@ -55,12 +58,46 @@
public void testIsValidValue() {
IValidValues vv = (IValidValues)getProcessor(IValidValues.class, JSF_HTML_URI, tagName, attrName);
assertNotNull(vv);
-
- assertTrue(vv.isValidValue("every non zero length string is valid!"));
- assertNotNull(vv.getValidationMessages());
- assertEquals(0, vv.getValidationMessages().size());
- assertFalse(vv.isValidValue(""));
+//
+// assertTrue(vv.isValidValue("every non zero length string is valid!"));
+// assertNotNull(vv.getValidationMessages());
+// assertEquals(0, vv.getValidationMessages().size());
+// assertFalse(vv.isValidValue(""));
+ //positive tests
+ Assert.assertTrue(vv.isValidValue("A"));
+ Assert.assertTrue(vv.isValidValue("Aa"));
+ Assert.assertTrue(vv.isValidValue("z.abc"));
+ Assert.assertTrue(vv.isValidValue("A1"));
+ Assert.assertTrue(vv.isValidValue("A-1"));
+ Assert.assertTrue(vv.isValidValue("A_a"));
+ Assert.assertTrue(vv.isValidValue("A:a"));
+ Assert.assertTrue(vv.isValidValue("A_"));
+ Assert.assertTrue(vv.isValidValue("a."));
+ Assert.assertTrue(vv.isValidValue("Aa."));
+ Assert.assertTrue(vv.isValidValue("_Aa"));
+
+ //negative tests
+ Assert.assertFalse(vv.isValidValue(" "));
+ vv.getValidationMessages().clear();
+
+ //will fail when we have proper regex validation
+// Assert.assertFalse(vv.isValidValue("1Aa"));
+// vv.getValidationMessages().clear();
+// Assert.assertFalse(vv.isValidValue(":Aa"));
+// vv.getValidationMessages().clear();
+// Assert.assertFalse(vv.isValidValue("-Aa"));
+// vv.getValidationMessages().clear();
+// Assert.assertFalse(vv.isValidValue(".Aa"));
+// vv.getValidationMessages().clear();
+
+ // FIXME the below is currently failing and is commented out.
+// Assert.assertFalse(vv.isValidValue("A$!a"));
+// vv.getValidationMessages().clear();
+// Assert.assertFalse(vv.isValidValue("A:!a"));
+// vv.getValidationMessages().clear();
+// Assert.assertFalse(vv.isValidValue("A(a"));
+// vv.getValidationMessages().clear();
}
}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/ContentTypeTest.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/ContentTypeTest.java
new file mode 100644
index 0000000..0ff164b
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/ContentTypeTest.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.metadata.tests.taglibprocessing;
+
+import junit.framework.Assert;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+
+public class ContentTypeTest extends TaglibProcessingTestCase {
+ public void testPossibleValues() {
+ Assert.assertNotNull(possibleValueAdapters);
+ Assert.assertFalse(possibleValueAdapters.isEmpty());
+
+ IPossibleValues pvs = (IPossibleValues) possibleValueAdapters.get(0);
+ Assert.assertTrue(pvs.getPossibleValues().size() >= 8);
+ }
+
+ public void testValidValuesValues() {
+ Assert.assertNotNull(validValuesAdapters);
+ Assert.assertFalse(validValuesAdapters.isEmpty());
+
+ IValidValues pvs = (IValidValues) validValuesAdapters.get(0);
+ Assert.assertTrue(pvs.isValidValue("a"));
+ Assert.assertTrue(pvs.isValidValue("foo_bar"));
+
+ //negative
+ Assert.assertFalse(pvs.isValidValue(""));
+ pvs.getValidationMessages().clear();
+ Assert.assertFalse(pvs.isValidValue(" "));
+ pvs.getValidationMessages().clear();
+ Assert.assertFalse(pvs.isValidValue(null));
+ pvs.getValidationMessages().clear();
+ }
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CurrencyCodeTypeTest.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CurrencyCodeTypeTest.java
new file mode 100644
index 0000000..26baad8
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CurrencyCodeTypeTest.java
@@ -0,0 +1,41 @@
+package org.eclipse.jst.jsf.metadata.tests.taglibprocessing;
+
+import junit.framework.Assert;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+
+/**
+ *
+ *
+ */
+public class CurrencyCodeTypeTest extends TaglibProcessingTestCase {
+ public void testPossibleValues(){
+ Assert.assertNotNull(possibleValueAdapters);
+ IPossibleValues pvs = (IPossibleValues)possibleValueAdapters.get(0);
+ Assert.assertEquals(173, pvs.getPossibleValues().size());
+ }
+
+ public void testValidValues(){
+ Assert.assertNotNull(validValuesAdapters);
+ Assert.assertFalse(validValuesAdapters.isEmpty());
+
+ IValidValues vv =(IValidValues)validValuesAdapters.get(0);
+ //positive tests
+ assertTrue(vv.isValidValue("USD"));
+ assertTrue(vv.isValidValue("AOA"));
+ //negative tests
+ vv.getValidationMessages().clear();
+ assertFalse(vv.isValidValue("XXX"));
+ }
+
+ public void testPropertyPageDescriptor(){
+ Assert.assertNotNull(propertyPageDescriptorAdapters);
+ Assert.assertFalse(propertyPageDescriptorAdapters.isEmpty());
+
+ IPropertyPageDescriptor ppd =(IPropertyPageDescriptor)propertyPageDescriptorAdapters.get(0);
+ assertEquals(false, ppd.isRequired());
+
+ }
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/LanguageCodeTypeTest.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/LanguageCodeTypeTest.java
new file mode 100644
index 0000000..727f4f3
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/LanguageCodeTypeTest.java
@@ -0,0 +1,38 @@
+package org.eclipse.jst.jsf.metadata.tests.taglibprocessing;
+
+import junit.framework.Assert;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+
+public class LanguageCodeTypeTest extends TaglibProcessingTestCase {
+ public void testPossibleValues(){
+ Assert.assertNotNull(possibleValueAdapters);
+ IPossibleValues pvs = (IPossibleValues)possibleValueAdapters.get(0);
+ Assert.assertEquals(58, pvs.getPossibleValues().size());
+ }
+
+ public void testValidValues(){
+ Assert.assertNotNull(validValuesAdapters);
+ Assert.assertFalse(validValuesAdapters.isEmpty());
+
+ IValidValues vv =(IValidValues)validValuesAdapters.get(0);
+ //positive tests
+ assertTrue(vv.isValidValue("en"));
+ //negative tests
+ vv.getValidationMessages().clear();
+ assertFalse(vv.isValidValue("xxx"));
+ }
+
+ public void testPropertyPageDescriptor(){
+ Assert.assertNotNull(propertyPageDescriptorAdapters);
+ Assert.assertFalse(propertyPageDescriptorAdapters.isEmpty());
+
+ IPropertyPageDescriptor ppd =(IPropertyPageDescriptor)propertyPageDescriptorAdapters.get(0);
+ //positive tests
+ assertEquals("ACategory", ppd.getCategory());
+ assertEquals(false, ppd.isRequired());
+
+ }
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/LinkTypeTest.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/LinkTypeTest.java
new file mode 100644
index 0000000..e17a3bb
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/LinkTypeTest.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.metadata.tests.taglibprocessing;
+
+import junit.framework.Assert;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+
+public class LinkTypeTest extends TaglibProcessingTestCase {
+ public void testPossibleValues() {
+ Assert.assertNotNull(possibleValueAdapters);
+ Assert.assertFalse(possibleValueAdapters.isEmpty());
+
+ IPossibleValues pvs = (IPossibleValues) possibleValueAdapters.get(0);
+ Assert.assertTrue(pvs.getPossibleValues().size() >= 8);
+ }
+
+ public void testValidValuesValues() {
+ Assert.assertNotNull(validValuesAdapters);
+ Assert.assertFalse(validValuesAdapters.isEmpty());
+
+ IValidValues pvs = (IValidValues) validValuesAdapters.get(0);
+ Assert.assertTrue(pvs.isValidValue("a"));
+ Assert.assertTrue(pvs.isValidValue("Chapter"));
+
+ //negative
+ Assert.assertFalse(pvs.isValidValue(""));
+ pvs.getValidationMessages().clear();
+ Assert.assertFalse(pvs.isValidValue(" "));
+ pvs.getValidationMessages().clear();
+ Assert.assertFalse(pvs.isValidValue(null));
+ pvs.getValidationMessages().clear();
+ }
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/LocaleTypeTest.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/LocaleTypeTest.java
new file mode 100644
index 0000000..c01711f
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/LocaleTypeTest.java
@@ -0,0 +1,38 @@
+package org.eclipse.jst.jsf.metadata.tests.taglibprocessing;
+
+import junit.framework.Assert;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+
+public class LocaleTypeTest extends TaglibProcessingTestCase {
+ public void testPossibleValues(){
+ Assert.assertNotNull(possibleValueAdapters);
+ IPossibleValues pvs = (IPossibleValues)possibleValueAdapters.get(0);
+ Assert.assertEquals(135, pvs.getPossibleValues().size());
+ }
+
+ public void testValidValues(){
+ Assert.assertNotNull(validValuesAdapters);
+ Assert.assertFalse(validValuesAdapters.isEmpty());
+
+ IValidValues vv =(IValidValues)validValuesAdapters.get(0);
+ //positive tests
+ assertTrue(vv.isValidValue("en"));
+ //negative tests
+ vv.getValidationMessages().clear();
+ assertFalse(vv.isValidValue("xxx"));
+ }
+
+ public void testPropertyPageDescriptor(){
+ Assert.assertNotNull(propertyPageDescriptorAdapters);
+ Assert.assertFalse(propertyPageDescriptorAdapters.isEmpty());
+
+ IPropertyPageDescriptor ppd =(IPropertyPageDescriptor)propertyPageDescriptorAdapters.get(0);
+ //positive tests
+ assertEquals("ACategory", ppd.getCategory());
+ assertEquals(false, ppd.isRequired());
+
+ }
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/NumberPatternTypeTest.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/NumberPatternTypeTest.java
new file mode 100644
index 0000000..5e852a9
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/NumberPatternTypeTest.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.metadata.tests.taglibprocessing;
+
+import junit.framework.Assert;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+
+public class NumberPatternTypeTest extends TaglibProcessingTestCase {
+ public void testPossibleValues() {
+ Assert.assertNotNull(possibleValueAdapters);
+ Assert.assertFalse(possibleValueAdapters.isEmpty());
+
+ IPossibleValues pvs = (IPossibleValues) possibleValueAdapters.get(0);
+ Assert.assertTrue(pvs.getPossibleValues().size() >= 8);
+ }
+
+ public void testValidValuesValues() {
+ Assert.assertNotNull(validValuesAdapters);
+ Assert.assertTrue(validValuesAdapters.isEmpty());
+ }
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/TaglibProcessingTestCase.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/TaglibProcessingTestCase.java
index c64d60a..7bde25d 100644
--- a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/TaglibProcessingTestCase.java
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/TaglibProcessingTestCase.java
@@ -15,12 +15,14 @@
import org.eclipse.jst.jsf.common.metadata.tests.AbstractBaseMetaDataTestCase;
import org.eclipse.jst.jsf.metadata.tests.MetadataTestsPlugin;
+import org.eclipse.jst.jsf.metadataprocessors.IMetaDataEnabledFeature;
import org.eclipse.jst.jsf.metadataprocessors.MetaDataEnabledProcessingFactory;
import org.eclipse.jst.jsf.metadataprocessors.features.ICreateValues;
import org.eclipse.jst.jsf.metadataprocessors.features.IDefaultValue;
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.pagedesigner.editors.properties.IPropertyPageDescriptor;
public abstract class TaglibProcessingTestCase extends AbstractBaseMetaDataTestCase {
// protected IStructuredDocumentContext docContext;
@@ -35,6 +37,7 @@
protected List<?> defaultValueAdapters;
protected List<?> createValuesAdapters;
protected List<?> validELValuesAdapters;
+ protected List<?> propertyPageDescriptorAdapters;
public void setUp() throws Exception{
super.setUp();
@@ -44,6 +47,7 @@
defaultValueAdapters = getProcessorAdapters(IDefaultValue.class);
createValuesAdapters = getProcessorAdapters(ICreateValues.class);
validELValuesAdapters = getProcessorAdapters(IValidELValues.class);
+ propertyPageDescriptorAdapters = getProcessorAdapters(IPropertyPageDescriptor.class);
}
private String getAttributeNameFromTest(){
@@ -55,7 +59,7 @@
return attributeName;
}
- protected List<?> getProcessorAdapters(Class<?> featureClass) {
+ protected List<? extends IMetaDataEnabledFeature> getProcessorAdapters(Class<?> featureClass) {
return MetaDataEnabledProcessingFactory.getInstance().
getAttributeValueRuntimeTypeFeatureProcessors(featureClass, docContext,
uri, tag , getAttributeNameFromTest());
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/TimeZoneTypeTest.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/TimeZoneTypeTest.java
new file mode 100644
index 0000000..18afcb1
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/TimeZoneTypeTest.java
@@ -0,0 +1,27 @@
+package org.eclipse.jst.jsf.metadata.tests.taglibprocessing;
+
+import junit.framework.Assert;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+
+public class TimeZoneTypeTest extends TaglibProcessingTestCase {
+ public void testPossibleValues(){
+ Assert.assertNotNull(possibleValueAdapters);
+ IPossibleValues pvs = (IPossibleValues)possibleValueAdapters.get(0);
+ Assert.assertEquals(585, pvs.getPossibleValues().size());
+ }
+
+ public void testValidValues(){
+ Assert.assertNotNull(validValuesAdapters);
+ Assert.assertFalse(validValuesAdapters.isEmpty());
+
+ IValidValues vv =(IValidValues)validValuesAdapters.get(0);
+ //positive tests
+ assertTrue(vv.isValidValue("America/Edmonton"));
+ //negative tests
+ vv.getValidationMessages().clear();
+ assertFalse(vv.isValidValue("xxx"));
+ }
+
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/cssTypesTest.html b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/cssTypesTest.html
new file mode 100644
index 0000000..76e48b9
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/cssTypesTest.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<link rel="stylesheet" href="mystyle.css">
+<link rel="stylesheet" href="foo.css">
+<style type="text/css">
+ body {
+ color: purple;
+ background-color: red; }
+ </style>
+<title>Insert title here</title>
+</head>
+<body class="" style="">
+ <b style="color: green;">Hello</b>
+ <a id="a" class="" style="color: HoneyDew " href="Foo" /></output>
+</body>
+</html>
\ No newline at end of file
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/cssTypesTest.jsp.data b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/cssTypesTest.jsp.data
new file mode 100644
index 0000000..f2daed8
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/cssTypesTest.jsp.data
@@ -0,0 +1,14 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@taglib
+ uri="http://java.sun.com/jsf/html" prefix="h"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<link rel="stylesheet" href="mystyle.css">
+<title>Insert title here</title>
+</head>
+<body>
+ <input id="a" class=""/>
+</body>
+</html>
\ No newline at end of file
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/foo.css b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/foo.css
new file mode 100644
index 0000000..890fcd0
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/foo.css
@@ -0,0 +1,157 @@
+BODY, P, LI, UL, OL {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 97%;
+ color:#000000;
+ list-style-position: outside;
+}
+
+A:link {
+ font-family: Arial, Helvetica, sans-serif;
+ color:#663300;
+
+}
+
+A:active {
+ font-family: Arial, Helvetica, sans-serif;
+ color:#ff6600;
+
+}
+
+A:visited {
+ font-family: Arial, Helvetica, sans-serif;
+ color:#996633;
+
+}
+
+A.navigation:link
+{
+ font-family: Arial, Helvetica, sans-serif;
+ font-size:65%;
+ color:#996633;
+}
+
+A.navigation:active
+{
+ font-family: Arial, Helvetica, sans-serif;
+ font-size:65%;
+ color:#996633;
+}
+
+A.navigation:visited
+{
+ font-family: Arial, Helvetica, sans-serif;
+ font-size:65%;
+ color:#996633;
+}
+
+p.listpara
+{text-indent: 15%}
+
+H1 {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size:170%;
+ color:#336699;
+ border : solid #CCCC99;
+ width : 100%;
+ border-width : 0px 0px 2px 0px;
+}
+
+H2 {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size:130%;
+ color:#336699;
+ border : solid #cccc99;
+ border-width : 0px 0px 2px 0px;
+ width : 100%;
+}
+
+H3 {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size:110%;
+ color:#336699;
+ width : 100%;
+}
+
+H4 {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size:92%;
+ color:#000000;
+ font-weight: bold;
+ width : 100%;
+}
+
+.code_no_color {
+ color : #000000;
+ font-family : "Courier New", "Courier", "monospace";
+}
+
+code {
+ color : #336699;
+ font-family : "Courier New", "Courier", "monospace";
+}
+
+P.indent {
+ text-indent: 9%;
+}
+
+table.borders {
+ border : 1% solid #BDB76B;
+}
+
+TR {
+ text-align : left;
+ vertical-align : top;
+}
+
+TH {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 11pt;
+ color:#000000;
+ font-weight: bold;
+}
+
+TD {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 11pt%;
+ color:#000000;
+}
+
+.smalltext {
+ font-size:80%;
+}
+
+p.note {
+ display: block;
+ font-family: Arial, Helvetica, Geneva, sans-serif;
+ font-size: 95%;
+}
+
+p.warning {
+ display: block;
+ font-family: Arial, Helvetica, Geneva, sans-serif;
+ font-size: 95%;
+}
+
+pre {
+ font-family: "Courier New", Courier, mono;
+ font-size: 92%;
+ text-indent : 15%;
+}
+
+.GUITag {
+ font-family: Arial, Helvetica, Geneva, sans-serif;
+ font-size: 95%;
+ font-weight: bold;
+ font-style: normal;
+}
+
+.PropertyName {
+ font-family: "Courier New", Courier, mono;
+ font-style: normal;
+}
+
+.GlossaryItem {
+ color : #008080;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size : 95%;
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/mystyle.css b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/mystyle.css
new file mode 100644
index 0000000..97b7c22
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/mystyle.css
@@ -0,0 +1,31 @@
+body {
+ padding-left: 11em;
+ font-family: Georgia, "Times New Roman",
+ Times, serif;
+}
+ul.navbar {
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+ position: absolute;
+ top: 2em;
+ left: 1em;
+ width: 9em }
+h1 {
+ font-family: Helvetica, Geneva, Arial,
+ SunSans-Regular, sans-serif }
+ul.navbar li {
+ background: white;
+ margin: 0.5em 0;
+ padding: 0.3em;
+ border-right: 1em solid black }
+ul.navbar a {
+ text-decoration: none }
+a:link {
+ color: blue }
+a:visited {
+ color: purple }
+address {
+ margin-top: 1em;
+ padding-top: 1em;
+ border-top: thin dotted }
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/propertyDescTests.jsp b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/propertyDescTests.jsp
new file mode 100644
index 0000000..2da57b6
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/propertyDescTests.jsp
@@ -0,0 +1,13 @@
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"%>
+ <%@ taglib prefix="x" uri="http://org.eclipse.jsf/propertyDescriptorTest" %>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Insert title here</title>
+</head>
+<body>
+ <x:Tag Attr1="y" boolAttr="true" DeafultAttr="x"/>
+</body>
+</html>
\ No newline at end of file
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_tagprocessing.xml b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_tagprocessing.xml
index 0d0088f..390c16e 100644
--- a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_tagprocessing.xml
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_tagprocessing.xml
@@ -166,5 +166,86 @@
</trait>
<trait id="default-value"><value>Black</value></trait>
</entity>
+ <entity id="LanguageCodeType">
+ <trait id="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.core.attributevalues.LanguageCodeType</value>
+ </trait>
+ <trait id="category">
+ <value>ACategory</value>
+ </trait>
+ </entity>
+ <entity id="LocaleType">
+ <trait id="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.core.attributevalues.LocaleType</value>
+ </trait>
+ <trait id="category">
+ <value>ACategory</value>
+ </trait>
+ </entity>
+ <entity id="CurrencyCodeType">
+ <trait id="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.core.attributevalues.CurrencyCodeType</value>
+ </trait>
+ </entity>
+ <entity id="TimeZoneType">
+ <trait id="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.core.attributevalues.TimeZoneType</value>
+ </trait>
+ </entity>
+ <entity id="RelativePathType">
+ <trait id="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.core.attributevalues.RelativePathType</value>
+ </trait>
+ </entity>
+ <entity id="WebPathType">
+ <trait id="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.core.attributevalues.WebPathType</value>
+ </trait>
+ </entity>
+ <entity id="JavaScriptType">
+ <trait id="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.core.attributevalues.JavaScriptType</value>
+ </trait>
+ </entity>
+ <entity id="CSSClassType">
+ <trait id="attribute-value-runtime-type">
+ <value>org.eclipse.jst.pagedesigner.attributevalues.CSSClassType</value>
+ </trait>
+ </entity>
+ <entity id="CSSStyleType">
+ <trait id="attribute-value-runtime-type">
+ <value>org.eclipse.jst.pagedesigner.attributevalues.CSSStyleType</value>
+ </trait>
+ </entity>
+ <entity id="ComponentIDType">
+ <trait id="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.core.attributevalues.ComponentIDType</value>
+ </trait>
+ </entity>
+ <entity id="CharacterType">
+ <trait id="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.core.attributevalues.CharacterType</value>
+ </trait>
+ </entity>
+ <entity id="ScriptType">
+ <trait id="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.core.attributevalues.ScriptType</value>
+ </trait>
+ </entity>
+ <entity id="LinkType">
+ <trait id="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.core.attributevalues.LinkType</value>
+ </trait>
+ </entity>
+ <entity id="ContentType">
+ <trait id="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.core.attributevalues.ContentType</value>
+ </trait>
+ </entity>
+ <entity id="NumberPatternType">
+ <trait id="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.core.attributevalues.NumberPatternType</value>
+ </trait>
+ </entity>
</entity>
</md:metadatamodel>
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/propertyDescriptorTest.xml b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/propertyDescriptorTest.xml
new file mode 100644
index 0000000..cb87f4a
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/propertyDescriptorTest.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadatamodel
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:mdt="http://org.eclipse.jst.jsf.common.metadata/metadataTraitTypes.ecore"
+ xmlns:qe="http://org.eclipse.jsf.pagedesigner/QuickEditTabSections.ecore"
+ id="http://org.eclipse.jsf/propertyDescriptorTest"
+ type="tagFile">
+
+ <entity id="Tag">
+ <entity id="Attr1">
+ <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>A</item>
+ <item>B</item>
+ <item>C</item>
+ <item>D</item>
+ </value>
+ </trait>
+ <trait id="displayed-values">
+ <value xsi:type="mdt:ListOfValues">
+ <item>A FirstVal</item>
+ <item>B SecondVal</item>
+ <item>C ThirdVal</item>
+ <item>D FourthVal</item>
+ </value>
+ </trait>
+ <trait id="display-label">
+ <value>MyAttr1</value>
+ </trait>
+ <trait id="description">
+ <value>This is a description.</value>
+ </trait>
+ <trait id="category">
+ <value>CategoryName</value>
+ </trait>
+ <trait id="small-icon">
+ <value>/testfiles/icons/attr_val.gif</value>
+ </trait>
+ <trait id="default-value">
+ <value>A</value>
+ </trait>
+ <trait id="required">
+ <value>true</value>
+ </trait>
+ </entity>
+ <entity id="DefaultAttr">
+ <trait id="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+ </trait>
+ <trait id="cell-editor">
+ <value>org.eclipse.jface.viewers.TextCellEditor</value>
+ </trait>
+ </entity>
+ <entity id="boolAttr">
+ <trait id="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
+ </trait>
+ </entity>
+ </entity>
+</metadatamodel>
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/quickEditSectionTest.xml b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/quickEditSectionTest.xml
new file mode 100644
index 0000000..9567ffd
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/quickEditSectionTest.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadatamodel
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:mdt="http://org.eclipse.jst.jsf.common.metadata/metadataTraitTypes.ecore"
+ xmlns:qe="http://org.eclipse.jsf.pagedesigner/QuickEditTabSections.ecore"
+ id="http://org.eclipse.jsf/quickEditSectionTest"
+ type="tagFile">
+
+ <entity id="A">
+ <entity id="attr1"/>
+ <entity id="attr2"/>
+ <trait id="quick-edit-tab">
+ <value xsi:type="qe:QuickEditTabSections">
+ <section id="attr1" type="ATTRIBUTE" />
+ <section id="attr2"/> <!-- ATTRIBUTE type is default -->
+ <section id="section1" type="SECTION"/>
+ </value>
+ </trait>
+ </entity>
+</metadatamodel>
\ No newline at end of file
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/sybasejsfhtml.properties b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/sybasejsfhtml.properties
new file mode 100644
index 0000000..9b68fcd
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/sybasejsfhtml.properties
@@ -0,0 +1,112 @@
+###############################################################################
+# 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.accept=Accept
+Attribute.Label.acceptcharset=Accept Charset
+Attribute.Label.accesskey=Access Key
+Attribute.Label.action=Action
+Attribute.Label.actionListener=ActionListener
+Attribute.Label.alt=Alt
+Attribute.Label.bgcolor=BG Color
+Attribute.Label.binding=Binding
+Attribute.Label.border=Border
+Attribute.Label.cellpadding=Cell Padding
+Attribute.Label.cellspacing=Cell Spacing
+Attribute.Label.charset=Charset
+Attribute.Label.cols=Cols
+Attribute.Label.columnClasses=Column Classes
+Attribute.Label.columns=Columns
+Attribute.Label.converter=Converter
+Attribute.Label.coords=Coords
+Attribute.Label.dir=Dir
+Attribute.Label.disabled=Disabled
+Attribute.Label.disabledClass=Disabled Class
+Attribute.Label.enabledClass=Enabled Class
+Attribute.Label.enctype=Enctype
+Attribute.Label.errorClass=Error Class
+Attribute.Label.errorStyle=Error Style
+Attribute.Label.escape=Escape
+Attribute.Label.fatalClass=Fatal Class
+Attribute.Label.fatalStyle=Fatal Style
+Attribute.Label.first=First
+Attribute.Label.footerClass=Footer Class
+Attribute.Label.for=For
+Attribute.Label.frame=Frame
+Attribute.Label.globalOnly=Global Only
+Attribute.Label.headerClass=Header Class
+Attribute.Label.height=Height
+Attribute.Label.hreflang=Hreflang
+Attribute.Label.id=ID
+Attribute.Label.image=Image
+Attribute.Label.immediate=Immediate
+Attribute.Label.infoClass=Info Class
+Attribute.Label.infoStyle=Info Style
+Attribute.Label.ismap=Ismap
+Attribute.Label.lang=Lang
+Attribute.Label.layout=Layout
+Attribute.Label.link=Link
+Attribute.Label.longdesc=Longdesc
+Attribute.Label.maxlength=Max Length
+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.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.readonly=Read Only
+Attribute.Label.redisplay=Redisplay
+Attribute.Label.rel=Rel
+Attribute.Label.rendered=Rendered
+Attribute.Label.required=Required
+Attribute.Label.rev=Rev
+Attribute.Label.rowClasses=Row Classes
+Attribute.Label.rows=Rows
+Attribute.Label.rules=Rules
+Attribute.Label.shape=Shape
+Attribute.Label.showDetail=Show Detail
+Attribute.Label.showSummary=Show Summary
+Attribute.Label.size=Size
+Attribute.Label.style=Style
+Attribute.Label.styleClass=Style Class
+Attribute.Label.summary=Summary
+Attribute.Label.tabindex=Tab Index
+Attribute.Label.target=Target
+Attribute.Label.title=Title
+Attribute.Label.tooltip=Tooltip
+Attribute.Label.type=Type
+Attribute.Label.url=URL
+Attribute.Label.usemap=Usemap
+Attribute.Label.validator=Validator
+Attribute.Label.value=Value
+Attribute.Label.valueChangeListener=ValueChangeListener
+Attribute.Label.var=Var
+Attribute.Label.warnClass=Warn Class
+Attribute.Label.warnStyle=Warn Style
+Attribute.Label.width=Width
+Category.Label.CSS=CSS
+Category.Label.CSS2=CSS2
+Category.Label.CSS3=CSS3
+Category.Label.CSS4=CSS4
+Category.Label.Event=Event
+Category.Label.HTML=HTML
+Category.Label.JSF=JSF
+Category.Label.Language=Language
+Category.Label.Link=Link
+Category.Label.Table=Table
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/sybasejsfhtml.xml b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/sybasejsfhtml.xml
new file mode 100644
index 0000000..936a5b2
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/sybasejsfhtml.xml
@@ -0,0 +1,730 @@
+<?xml version="1.0" ?>
+<taglib uri="http://SybaseMD.test.jsfhtml">
+ <tag name="column">
+ <category name="JSF" displaylabel="%Category.Label.JSF">
+ <attribute name="id" displaylabel="%Attribute.Label.id" />
+ <attribute name="binding" type="PROPERTYBINDING"
+ displaylabel="%Attribute.Label.binding" />
+ <attribute name="rendered" type="BOOLEAN"
+ displaylabel="%Attribute.Label.rendered" />
+ <attribute name="faketypeattr" type="CLASSNAME" required="required"
+ typeparam="superType=I:javax.faces.event.ActionListener"
+ displaylabel="faketypeattr" />
+ <attribute name="fakeBasename" type="CLASSPATH_RESOURCE" required="required"
+ displaylabel="fakeBasename" />
+ <attribute name="fakeColor" type="COLOR"
+ displaylabel="fakeColor" />
+ <attribute name="fakecssid" type="CSSID"
+ displaylabel="fakecssid" />
+ <attribute name="fakeCurrencyCode"
+ displaylabel="fakeCurrencyCode" type="CURRENCYCODE" />
+ <attribute name="fakeLocale"
+ displaylabel="fakeLocale" type="LOCALE" />
+ <attribute name="fakeTimeZone"
+ displaylabel="fakeTimeZone" type="TIMEZONE" />
+ <attribute name="fakeMultiChoice"
+ displaylabel="fakeMultiChoice" type="MULTICHOICE" />
+ </category>
+ </tag>
+ <tag name="commandButton">
+ <referedcategory ref="JSF">
+ <includeattrs>
+ <attribute name="action"
+ displaylabel="%Attribute.Label.action" description="action"/>
+ <attribute name="actionListener" type="METHODBINDING"
+ displaylabel="%Attribute.Label.actionListener" />
+ </includeattrs>
+ <excludeattrs
+ refs="converter,validator,valueChangeListener,required" />
+ </referedcategory>
+ <referedcategory ref="Language" />
+ <referedcategory ref="CSS" />
+ <referedcategory ref="Event" />
+ <referedcategory ref="HTML">
+ <includeattrs>
+ <attribute name="type" type="ENUMERATED"
+ displaylabel="%Attribute.Label.type">
+ <option key="submit" value="submit" default="default"/>
+ <option key="reset" value="reset" />
+ </attribute>
+ <attribute name="image" type="RELATIVEPATH"
+ typeparam="suffix=jpg;gif;png"
+ displaylabel="%Attribute.Label.image" />
+ <attribute name="alt"
+ displaylabel="%Attribute.Label.alt" />
+ </includeattrs>
+ </referedcategory>
+ </tag>
+ <tag name="commandLink">
+ <referedcategory ref="JSF">
+ <includeattrs>
+ <attribute name="action"
+ displaylabel="%Attribute.Label.action" />
+ <attribute name="actionListener" type="METHODBINDING"
+ displaylabel="%Attribute.Label.actionListener" />
+ </includeattrs>
+ <excludeattrs
+ refs="converter,validator,valueChangeListener,required" />
+ </referedcategory>
+ <referedcategory ref="Language" />
+ <referedcategory ref="CSS" />
+ <referedcategory ref="Event">
+ <excludeattrs refs="onchange,onclick,onselect" />
+ </referedcategory>
+ <referedcategory ref="Link" displaylabel="%Category.Label.HTML" />
+ </tag>
+ <tag name="dataTable">
+ <category name="JSF" displaylabel="%Category.Label.JSF">
+ <attribute name="id" displaylabel="%Attribute.Label.id" />
+ <attribute name="value"
+ displaylabel="%Attribute.Label.value" />
+ <attribute name="binding" type="PROPERTYBINDING"
+ displaylabel="%Attribute.Label.binding" />
+ <attribute name="var" displaylabel="%Attribute.Label.var" />
+ <attribute name="rendered" type="BOOLEAN"
+ displaylabel="%Attribute.Label.rendered" />
+ <attribute name="rows" displaylabel="%Attribute.Label.rows" />
+ <attribute name="first"
+ displaylabel="%Attribute.Label.first" />
+ </category>
+ <referedcategory ref="Language" />
+ <referedcategory ref="CSS3" displaylabel="%Category.Label.CSS" />
+ <referedcategory ref="Event">
+ <excludeattrs refs="onblur,onchange,onfocus,onselect" />
+ </referedcategory>
+ <referedcategory ref="Table"
+ displaylabel="%Category.Label.HTML" />
+ </tag>
+ <tag name="form">
+ <category name="JSF" displaylabel="%Category.Label.JSF">
+ <attribute name="id" displaylabel="%Attribute.Label.id" />
+ <attribute name="binding" type="PROPERTYBINDING"
+ displaylabel="%Attribute.Label.binding" />
+ <attribute name="rendered" type="BOOLEAN"
+ displaylabel="%Attribute.Label.rendered" />
+ </category>
+ <referedcategory ref="Language" />
+ <referedcategory ref="CSS" />
+ <referedcategory ref="Event">
+ <includeattrs>
+ <attribute name="onreset"
+ displaylabel="%Attribute.Label.onreset" />
+ <attribute name="onsubmit"
+ displaylabel="%Attribute.Label.onsubmit" />
+ </includeattrs>
+ <excludeattrs refs="onblur,onchange,onfocus,onselect" />
+ </referedcategory>
+ <category name="HTML" displaylabel="%Category.Label.HTML">
+ <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="accept"
+ displaylabel="%Attribute.Label.accept" />
+ <attribute name="acceptcharset"
+ displaylabel="%Attribute.Label.acceptcharset" />
+ <attribute name="enctype"
+ displaylabel="%Attribute.Label.enctype" type="ENUMERATED">
+ <option key="application/x-www-form-urlencoded"
+ value="application/x-www-form-urlencoded" default="default"/>
+ </attribute>
+ <attribute name="title"
+ displaylabel="%Attribute.Label.title" />
+ </category>
+ </tag>
+ <tag name="graphicImage">
+ <category name="JSF" displaylabel="%Category.Label.JSF">
+ <attribute name="value" type="WEBPATH"
+ typeparam="suffix=jpg;gif;png"
+ displaylabel="%Attribute.Label.value" />
+ <attribute name="url" type="WEBPATH"
+ typeparam="suffix=jpg;gif;png" displaylabel="%Attribute.Label.url" />
+ <attribute name="binding" type="PROPERTYBINDING"
+ displaylabel="%Attribute.Label.binding" />
+ <attribute name="id" displaylabel="%Attribute.Label.id" />
+ <attribute name="rendered" type="BOOLEAN"
+ displaylabel="%Attribute.Label.rendered" />
+ </category>
+ <referedcategory ref="Language" />
+ <referedcategory ref="CSS" />
+ <referedcategory ref="Event">
+ <excludeattrs refs="onblur,onchange,onfocus,onselect" />
+ </referedcategory>
+ <category name="HTML" displaylabel="%Category.Label.HTML">
+ <attribute name="ismap" type="NAMED-BOOLEAN"
+ displaylabel="%Attribute.Label.ismap" />
+ <attribute name="longdesc" type="RELATIVEPATH"
+ displaylabel="%Attribute.Label.longdesc" />
+ <attribute name="alt" displaylabel="%Attribute.Label.alt" />
+ <attribute name="height"
+ displaylabel="%Attribute.Label.height" />
+ <attribute name="title"
+ displaylabel="%Attribute.Label.title" />
+ <attribute name="usemap"
+ displaylabel="%Attribute.Label.usemap" />
+ <attribute name="width"
+ displaylabel="%Attribute.Label.width" />
+ </category>
+ </tag>
+ <tag name="inputHidden">
+ <referedcategory ref="JSF" />
+ </tag>
+ <tag name="inputSecret">
+ <referedcategory ref="JSF" />
+ <referedcategory ref="Language" />
+ <referedcategory ref="CSS" />
+ <referedcategory ref="Event" />
+ <referedcategory ref="HTML">
+ <includeattrs>
+ <attribute name="maxlength"
+ displaylabel="%Attribute.Label.maxlength" />
+ <attribute name="redisplay" type="BOOLEAN"
+ displaylabel="%Attribute.Label.redisplay" />
+ <attribute name="alt"
+ displaylabel="%Attribute.Label.alt" />
+ <attribute name="size"
+ displaylabel="%Attribute.Label.size" />
+ </includeattrs>
+ </referedcategory>
+ </tag>
+ <tag name="inputText">
+ <referedcategory ref="JSF" />
+ <referedcategory ref="Language" />
+ <referedcategory ref="CSS" />
+ <referedcategory ref="Event" />
+ <referedcategory ref="HTML">
+ <includeattrs>
+ <attribute name="maxlength"
+ displaylabel="%Attribute.Label.maxlength" />
+ <attribute name="alt"
+ displaylabel="%Attribute.Label.alt" />
+ <attribute name="size"
+ displaylabel="%Attribute.Label.size" />
+ </includeattrs>
+ </referedcategory>
+ </tag>
+ <tag name="inputTextarea">
+ <referedcategory ref="JSF" />
+ <referedcategory ref="Language" />
+ <referedcategory ref="CSS" />
+ <referedcategory ref="Event" />
+ <referedcategory ref="HTML">
+ <includeattrs>
+ <attribute name="cols"
+ displaylabel="%Attribute.Label.cols" />
+ <attribute name="rows"
+ displaylabel="%Attribute.Label.rows" />
+ </includeattrs>
+ </referedcategory>
+ </tag>
+ <tag name="message">
+ <category name="JSF" displaylabel="%Category.Label.JSF">
+ <attribute name="id" displaylabel="%Attribute.Label.id" />
+ <attribute name="binding" type="PROPERTYBINDING"
+ displaylabel="%Attribute.Label.binding" />
+ <attribute name="for" displaylabel="%Attribute.Label.for" required="required"/>
+ <attribute name="rendered" type="BOOLEAN"
+ displaylabel="%Attribute.Label.rendered" />
+ <attribute name="showDetail" type="BOOLEAN"
+ typeparam="default=true" displaylabel="%Attribute.Label.showDetail" />
+ <attribute name="showSummary" type="BOOLEAN"
+ typeparam="default=false"
+ displaylabel="%Attribute.Label.showSummary" />
+ </category>
+ <referedcategory ref="CSS2" displaylabel="%Category.Label.CSS" />
+ <category name="HTML" displaylabel="%Category.Label.HTML">
+ <attribute name="tooltip" type="BOOLEAN"
+ displaylabel="%Attribute.Label.tooltip" />
+ <attribute name="title"
+ displaylabel="%Attribute.Label.title" />
+ </category>
+ </tag>
+ <tag name="messages">
+ <category name="JSF" displaylabel="%Category.Label.JSF">
+ <attribute name="id" displaylabel="%Attribute.Label.id" />
+ <attribute name="binding" type="PROPERTYBINDING"
+ displaylabel="%Attribute.Label.binding" />
+ <attribute name="globalOnly" type="BOOLEAN"
+ typeparam="default=false"
+ displaylabel="%Attribute.Label.globalOnly" />
+ <attribute name="rendered" type="BOOLEAN"
+ displaylabel="%Attribute.Label.rendered" />
+ <attribute name="showDetail" type="BOOLEAN"
+ typeparam="default=false"
+ displaylabel="%Attribute.Label.showDetail" />
+ <attribute name="showSummary" type="BOOLEAN"
+ typeparam="default=true"
+ displaylabel="%Attribute.Label.showSummary" />
+ </category>
+ <referedcategory ref="CSS2" displaylabel="%Category.Label.CSS" />
+ <category name="HTML" displaylabel="%Category.Label.HTML">
+ <attribute name="layout" type="ENUMERATED"
+ displaylabel="%Attribute.Label.layout">
+ <option key="list" value="list" default="default"/>
+ <option key="table" value="table" />
+ </attribute>
+ <attribute name="tooltip" type="BOOLEAN"
+ displaylabel="%Attribute.Label.tooltip" />
+ <attribute name="title"
+ displaylabel="%Attribute.Label.title" />
+ </category>
+ </tag>
+ <tag name="outputFormat">
+ <referedcategory ref="JSF">
+ <excludeattrs
+ refs="validator,valueChangeListener,immediate,required" />
+ </referedcategory>
+ <referedcategory ref="CSS" />
+ <category name="HTML" displaylabel="%Category.Label.HTML">
+ <attribute name="escape" type="BOOLEAN"
+ typeparam="default=true" displaylabel="%Attribute.Label.escape" />
+ <attribute name="title"
+ displaylabel="%Attribute.Label.title" />
+ </category>
+ </tag>
+ <tag name="outputLabel">
+ <referedcategory ref="JSF">
+ <excludeattrs
+ refs="validator,valueChangeListener,immediate,required" />
+ </referedcategory>
+ <referedcategory ref="Language" />
+ <referedcategory ref="CSS" />
+ <referedcategory ref="Event">
+ <excludeattrs refs="onchange,onselect" />
+ </referedcategory>
+ <referedcategory ref="HTML">
+ <includeattrs>
+ <attribute name="for"
+ displaylabel="%Attribute.Label.for" />
+ </includeattrs>
+ <excludeattrs refs="disabled,readonly" />
+ </referedcategory>
+ </tag>
+ <tag name="outputLink">
+ <referedcategory ref="JSF">
+ <includeattrs>
+ <attribute name="value" type="RELATIVEPATH"
+ displaylabel="%Attribute.Label.value" />
+ </includeattrs>
+ <excludeattrs
+ refs="validator,valueChangeListener,immediate,required" />
+ </referedcategory>
+ <referedcategory ref="Language" />
+ <referedcategory ref="CSS" />
+ <referedcategory ref="Event">
+ <excludeattrs refs="onchange,onselect" />
+ </referedcategory>
+ <referedcategory ref="Link" displaylabel="%Category.Label.HTML" />
+ </tag>
+ <tag name="outputText">
+ <referedcategory ref="JSF">
+ <excludeattrs
+ refs="validator,valueChangeListener,immediate,required" />
+ </referedcategory>
+ <referedcategory ref="CSS" />
+ <category name="HTML" displaylabel="%Category.Label.HTML">
+ <attribute name="escape" type="BOOLEAN"
+ typeparam="default=true" displaylabel="%Attribute.Label.escape" />
+ <attribute name="title"
+ displaylabel="%Attribute.Label.title" />
+ </category>
+ </tag>
+ <tag name="panelGrid">
+ <category name="JSF" displaylabel="%Category.Label.JSF">
+ <attribute name="id" displaylabel="%Attribute.Label.id" />
+ <attribute name="binding" type="PROPERTYBINDING"
+ displaylabel="%Attribute.Label.binding" />
+ <attribute name="rendered" type="BOOLEAN"
+ displaylabel="%Attribute.Label.rendered" />
+ </category>
+ <referedcategory ref="Language" />
+ <referedcategory ref="CSS3" displaylabel="%Category.Label.CSS" />
+ <referedcategory ref="Event">
+ <excludeattrs refs="onblur,onchange,onfocus,onselect" />
+ </referedcategory>
+ <referedcategory ref="Table"
+ displaylabel="%Category.Label.HTML">
+ <includeattrs>
+ <attribute name="columns"
+ displaylabel="%Attribute.Label.columns" />
+ </includeattrs>
+ </referedcategory>
+ </tag>
+ <tag name="panelGroup">
+ <category name="JSF" displaylabel="%Category.Label.JSF">
+ <attribute name="id" displaylabel="%Attribute.Label.id" />
+ <attribute name="binding" type="PROPERTYBINDING"
+ displaylabel="%Attribute.Label.binding" />
+ <attribute name="rendered" type="BOOLEAN"
+ displaylabel="%Attribute.Label.rendered" />
+ </category>
+ <referedcategory ref="CSS" />
+ </tag>
+ <tag name="selectBooleanCheckbox">
+ <referedcategory ref="JSF" />
+ <referedcategory ref="Language" />
+ <referedcategory ref="CSS" />
+ <referedcategory ref="Event" />
+ <referedcategory ref="HTML" />
+ </tag>
+ <tag name="selectManyCheckbox">
+ <referedcategory ref="JSF" />
+ <referedcategory ref="Language" />
+ <referedcategory ref="CSS4" displaylabel="%Category.Label.CSS" />
+ <referedcategory ref="Event" />
+ <referedcategory ref="HTML">
+ <includeattrs>
+ <attribute name="layout" type="ENUMERATED"
+ displaylabel="%Attribute.Label.layout">
+ <option key="lineDirection" value="lineDirection" default="default" />
+ <option key="pageDirection" value="pageDirection" />
+ </attribute>
+ <attribute name="border"
+ displaylabel="%Attribute.Label.border" />
+ </includeattrs>
+ </referedcategory>
+ </tag>
+ <tag name="selectManyListbox">
+ <referedcategory ref="JSF" />
+ <referedcategory ref="Language" />
+ <referedcategory ref="CSS4" displaylabel="%Category.Label.CSS" />
+ <referedcategory ref="Event" />
+ <referedcategory ref="HTML">
+ <includeattrs>
+ <attribute name="size"
+ displaylabel="%Attribute.Label.size" />
+ </includeattrs>
+ </referedcategory>
+ </tag>
+ <tag name="selectManyMenu">
+ <referedcategory ref="JSF" />
+ <referedcategory ref="Language" />
+ <referedcategory ref="CSS4" displaylabel="%Category.Label.CSS" />
+ <referedcategory ref="Event" />
+ <referedcategory ref="HTML" />
+ </tag>
+ <tag name="selectOneListbox">
+ <referedcategory ref="JSF" />
+ <referedcategory ref="Language" />
+ <referedcategory ref="CSS4" displaylabel="%Category.Label.CSS" />
+ <referedcategory ref="Event" />
+ <referedcategory ref="HTML">
+ <includeattrs>
+ <attribute name="size"
+ displaylabel="%Attribute.Label.size" />
+ </includeattrs>
+ </referedcategory>
+ </tag>
+ <tag name="selectOneMenu">
+ <referedcategory ref="JSF" />
+ <referedcategory ref="Language" />
+ <referedcategory ref="CSS4" displaylabel="%Category.Label.CSS" />
+ <referedcategory ref="Event" />
+ <referedcategory ref="HTML" />
+ </tag>
+ <tag name="selectOneRadio">
+ <referedcategory ref="JSF" />
+ <referedcategory ref="Language" />
+ <referedcategory ref="CSS4" displaylabel="%Category.Label.CSS" />
+ <referedcategory ref="Event" />
+ <referedcategory ref="HTML">
+ <includeattrs>
+ <attribute name="layout" type="ENUMERATED"
+ displaylabel="%Attribute.Label.layout">
+ <option key="lineDirection" value="lineDirection" default="default" />
+ <option key="pageDirection" value="pageDirection" />
+ </attribute>
+ <attribute name="border"
+ displaylabel="%Attribute.Label.border" />
+ </includeattrs>
+ </referedcategory>
+ </tag>
+ <definition>
+ <categories>
+ <category name="JSF" displaylabel="%Category.Label.JSF">
+ <attribute name="id" displaylabel="%Attribute.Label.id" />
+ <attribute name="value"
+ displaylabel="%Attribute.Label.value" />
+ <attribute name="binding" type="PROPERTYBINDING"
+ displaylabel="%Attribute.Label.binding" />
+ <attribute name="converter"
+ displaylabel="%Attribute.Label.converter" />
+ <attribute name="validator" type="METHODBINDING"
+ displaylabel="%Attribute.Label.validator" />
+ <attribute name="valueChangeListener"
+ type="METHODBINDING"
+ displaylabel="%Attribute.Label.valueChangeListener" />
+ <attribute name="immediate" type="BOOLEAN"
+ displaylabel="%Attribute.Label.immediate" />
+ <attribute name="rendered" type="BOOLEAN"
+ displaylabel="%Attribute.Label.rendered" />
+ <attribute name="required" type="BOOLEAN"
+ displaylabel="%Attribute.Label.required" />
+ </category>
+ <category name="Language"
+ displaylabel="%Category.Label.Language">
+ <referedattribute ref="lang" />
+ <attribute name="dir" type="ENUMERATED"
+ displaylabel="%Attribute.Label.dir">
+ <option key="RTL" value="RTL" />
+ <option key="LTR" value="LTR" />
+ </attribute>
+ </category>
+ <category name="CSS" displaylabel="%Category.Label.CSS">
+ <attribute name="style" type="CSSSTYLE"
+ typeparam="style=STYLE" displaylabel="%Attribute.Label.style" />
+ <attribute name="styleClass" type="CSSCLASS"
+ typeparam=" " displaylabel="%Attribute.Label.styleClass" />
+ </category>
+ <category name="Event"
+ displaylabel="%Category.Label.Event">
+ <attribute name="onblur" type="JAVASCRIPT"
+ displaylabel="%Attribute.Label.onblur" />
+ <attribute name="onchange" type="JAVASCRIPT"
+ displaylabel="%Attribute.Label.onchange" />
+ <attribute name="onclick" type="JAVASCRIPT"
+ displaylabel="%Attribute.Label.onclick" />
+ <attribute name="ondblclick" type="JAVASCRIPT"
+ displaylabel="%Attribute.Label.ondblclick" />
+ <attribute name="onfocus" type="JAVASCRIPT"
+ displaylabel="%Attribute.Label.onfocus" />
+ <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" />
+ <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="onselect" type="JAVASCRIPT"
+ displaylabel="%Attribute.Label.onselect" />
+ </category>
+ <category name="HTML" displaylabel="%Category.Label.HTML">
+ <attribute name="accesskey"
+ displaylabel="%Attribute.Label.accesskey" />
+ <attribute name="disabled" type="BOOLEAN"
+ displaylabel="%Attribute.Label.disabled" />
+ <attribute name="readonly" type="BOOLEAN"
+ displaylabel="%Attribute.Label.readonly" />
+ <attribute name="title"
+ displaylabel="%Attribute.Label.title" />
+ <attribute name="tabindex"
+ displaylabel="%Attribute.Label.tabindex" />
+ </category>
+ <category name="Link" displaylabel="%Category.Label.Link">
+ <attribute name="accesskey"
+ displaylabel="%Attribute.Label.accesskey" />
+ <attribute name="title"
+ displaylabel="%Attribute.Label.title" />
+ <attribute name="tabindex"
+ displaylabel="%Attribute.Label.tabindex" />
+ <attribute name="charset"
+ displaylabel="%Attribute.Label.charset" />
+ <referedattribute ref="lang" overridename="hreflang"
+ displaylabel="%Attribute.Label.hreflang" />
+ <referedattribute ref="link" overridename="rel"
+ displaylabel="%Attribute.Label.rel" />
+ <attribute name="shape" type="ENUMERATED"
+ displaylabel="%Attribute.Label.shape">
+ <option key="default"
+ value="Entire region" default="default"/>
+ <option key="circle" value="Circular region" />
+ <option key="rect" value="Rectangular region" />
+ <option key="poly" value="Polygonal region" />
+ </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="coords"
+ displaylabel="%Attribute.Label.coords" />
+ <referedattribute ref="link" overridename="rev"
+ displaylabel="%Attribute.Label.rev" />
+ <attribute name="type"
+ displaylabel="%Attribute.Label.type" />
+ </category>
+ <category name="CSS2" displaylabel="%Category.Label.CSS2">
+ <attribute name="style" type="CSSSTYLE"
+ typeparam="style=STYLE" displaylabel="%Attribute.Label.style" />
+ <attribute name="styleClass" type="CSSCLASS"
+ typeparam=" " displaylabel="%Attribute.Label.styleClass" />
+ <attribute name="infoStyle" type="CSSSTYLE"
+ displaylabel="%Attribute.Label.infoStyle" />
+ <attribute name="infoClass" type="CSSCLASS"
+ typeparam=" " displaylabel="%Attribute.Label.infoClass" />
+ <attribute name="warnStyle" type="CSSSTYLE"
+ displaylabel="%Attribute.Label.warnStyle" />
+ <attribute name="warnClass" type="CSSCLASS"
+ typeparam=" " displaylabel="%Attribute.Label.warnClass" />
+ <attribute name="errorStyle" type="CSSSTYLE"
+ displaylabel="%Attribute.Label.errorStyle" />
+ <attribute name="errorClass" type="CSSCLASS"
+ typeparam=" " displaylabel="%Attribute.Label.errorClass" />
+ <attribute name="fatalStyle" type="CSSSTYLE"
+ displaylabel="%Attribute.Label.fatalStyle" />
+ <attribute name="fatalClass" type="CSSCLASS"
+ typeparam=" " displaylabel="%Attribute.Label.fatalClass" />
+ </category>
+ <category name="CSS3" displaylabel="%Category.Label.CSS3">
+ <attribute name="style" type="CSSSTYLE"
+ typeparam="style=STYLE" displaylabel="%Attribute.Label.style" />
+ <attribute name="styleClass" type="CSSCLASS"
+ typeparam=" " displaylabel="%Attribute.Label.styleClass" />
+ <attribute name="columnClasses" type="CSSCLASS"
+ typeparam="," displaylabel="%Attribute.Label.columnClasses" />
+ <attribute name="footerClass" type="CSSCLASS"
+ typeparam=" " displaylabel="%Attribute.Label.footerClass" />
+ <attribute name="headerClass" type="CSSCLASS"
+ typeparam=" " displaylabel="%Attribute.Label.headerClass" />
+ <attribute name="rowClasses" type="CSSCLASS"
+ typeparam="separator=," displaylabel="%Attribute.Label.rowClasses" />
+ </category>
+ <category name="CSS4" displaylabel="%Category.Label.CSS4">
+ <attribute name="style" type="CSSSTYLE"
+ typeparam="style=STYLE" displaylabel="%Attribute.Label.style" />
+ <attribute name="styleClass" type="CSSCLASS"
+ typeparam=" " displaylabel="%Attribute.Label.styleClass" />
+ <attribute name="disabledClass" type="CSSCLASS"
+ typeparam="" displaylabel="%Attribute.Label.disabledClass" />
+ <attribute name="enabledClass" type="CSSCLASS"
+ typeparam="" displaylabel="%Attribute.Label.enabledClass" />
+ </category>
+ <category name="Table"
+ displaylabel="%Category.Label.Table">
+ <attribute name="bgcolor" type="COLOR"
+ displaylabel="%Attribute.Label.bgcolor" />
+ <attribute name="border"
+ displaylabel="%Attribute.Label.border" />
+ <attribute name="cellpadding"
+ displaylabel="%Attribute.Label.cellpadding" />
+ <attribute name="cellspacing"
+ displaylabel="%Attribute.Label.cellspacing" />
+ <attribute name="width"
+ displaylabel="%Attribute.Label.width" />
+ <attribute name="frame" type="ENUMERATED"
+ displaylabel="%Attribute.Label.frame">
+ <option key="lhs" value="Left hand side only" />
+ <option key="above" value="Top side only" />
+ <option key="none" value="No sides" default="default"/>
+ <option key="box" value="All four sides" />
+ <option key="vsides"
+ value="Right and left sides only" />
+ <option key="below" value="Bottom side only" />
+ <option key="border" value="All four sides" />
+ <option key="rhs" value="Right hand side only" />
+ <option key="hsides"
+ value="Top and bottom sides only" />
+ </attribute>
+ <attribute name="rules" type="ENUMERATED"
+ displaylabel="%Attribute.Label.rules">
+ <option key="cols" value="Between columns only" />
+ <option key="groups" value="Between row groups" />
+ <option key="rows" value="Between rows only" />
+ <option key="none" value="No rules" default="default"/>
+ <option key="all"
+ value="Between all rows and columns" />
+ </attribute>
+ <attribute name="summary"
+ displaylabel="%Attribute.Label.summary" />
+ <attribute name="title"
+ displaylabel="%Attribute.Label.title" />
+ </category>
+ </categories>
+ <attributes>
+ <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="link" type="MULTICHOICE" typeparam=" "
+ displaylabel="%Attribute.Label.link">
+ <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="glossary" value="glossary" />
+ <option key="copyright" value="copyright" />
+ </attribute>
+ </attributes>
+ </definition>
+
+</taglib>
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/META-INF/MANIFEST.MF b/jsf/tests/org.eclipse.jst.pagedesigner.tests/META-INF/MANIFEST.MF
index ccb0f59..eab3da4 100644
--- a/jsf/tests/org.eclipse.jst.pagedesigner.tests/META-INF/MANIFEST.MF
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/META-INF/MANIFEST.MF
@@ -21,7 +21,10 @@
org.eclipse.jface.text;bundle-version="[3.2.0,4.0.0)",
org.eclipse.jst.pagedesigner;bundle-version="[1.0.0,1.1.0)",
org.eclipse.emf.common;bundle-version="[2.2.0,3.0.0)",
- org.eclipse.gef;bundle-version="[3.2.0,4.0.0)"
+ org.eclipse.gef;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui.views.properties.tabbed;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jst.jsf.common.ui,
+ org.eclipse.jst.pagedesigner.jsf.ui
Export-Package: org.eclipse.jst.pagedesigner.tests;x-internal:=true
Bundle-ClassPath: pagedesignertests.jar
Bundle-Activator: org.eclipse.jst.pagedesigner.tests.PageDesignerTestsPlugin
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/plugin.xml b/jsf/tests/org.eclipse.jst.pagedesigner.tests/plugin.xml
index ce4218e..c06337c 100644
--- a/jsf/tests/org.eclipse.jst.pagedesigner.tests/plugin.xml
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/plugin.xml
@@ -13,5 +13,21 @@
<elementEditFactory
class="org.eclipse.jst.pagedesigner.tests.tagcreatorPlugin.TestCreationFactory"></elementEditFactory>
</extension>
+ <extension
+ point="org.eclipse.ui.views.properties.tabbed.propertySections">
+ <propertySections
+ contributorId="org.eclipse.jst.pagedesigner.tabPropertyContributor">
+ <propertySection
+ class="org.eclipse.jst.pagedesigner.tests.tabbed.properties.sections.FakePropertySection"
+ id="section.fake"
+ tab="sss">
+ </propertySection>
+ <propertySection
+ class="org.eclipse.jst.pagedesigner.tests.tabbed.properties.sections.FakePropertySectionUsingDialogField"
+ id="section.fake.dialogfield"
+ tab="sss">
+ </propertySection>
+ </propertySections>
+ </extension>
</plugin>
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tabbed/properties/sections/FakePropertySection.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tabbed/properties/sections/FakePropertySection.java
new file mode 100644
index 0000000..ece587e
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tabbed/properties/sections/FakePropertySection.java
@@ -0,0 +1,84 @@
+package org.eclipse.jst.pagedesigner.tests.tabbed.properties.sections;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jst.pagedesigner.properties.DesignerPropertyTool;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+
+/**
+ * Fake section for testing.... remove
+ * Binds to "type" attribute if present on an element
+ *
+ */
+public class FakePropertySection extends AbstractPropertySection {
+
+ private Text txt;
+ private Attr typeAttr;
+ /**
+ * Constructor
+ */
+ public FakePropertySection() {
+ // TODO Auto-generated constructor stub
+ }
+
+ @Override
+ public void createControls(final Composite parent,
+ TabbedPropertySheetPage tabbedPropertySheetPage) {
+
+ super.createControls(parent, tabbedPropertySheetPage);
+ TabbedPropertySheetWidgetFactory factory = tabbedPropertySheetPage.getWidgetFactory();
+
+ Composite outer = factory.createComposite(parent);
+ GridLayout gl = new GridLayout();
+ gl.numColumns = 2;
+ gl.marginTop = 0;
+ gl.marginBottom = 0;
+ outer.setLayout(gl);
+ //
+ CLabel lbl = factory.createCLabel(outer, "TYPE:", SWT.NONE);
+ lbl.setLayoutData(new GridData());
+
+ txt = factory.createText(outer, "");
+ GridData gd = new GridData();
+ gd.verticalAlignment = SWT.TOP;
+ gd.grabExcessHorizontalSpace = true;
+ txt.setLayoutData(gd);
+
+ }
+
+ @Override
+ public void setInput(IWorkbenchPart part, ISelection selection) {
+ super.setInput(part, selection);
+ Element node = DesignerPropertyTool.getElement(part, selection);
+ if (node != null){
+ typeAttr = node.getAttributeNode("type");
+ if (typeAttr != null){
+ txt.setText(typeAttr.getValue());
+ txt.addKeyListener(new KeyListener(){
+
+ public void keyPressed(KeyEvent e) {
+ //
+ }
+
+ public void keyReleased(KeyEvent e) {
+ typeAttr.setValue(typeAttr.getValue()+ new String(new char[]{e.character}));
+ }
+
+ });
+ }
+ }
+ }
+
+}
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tabbed/properties/sections/FakePropertySectionUsingDialogField.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tabbed/properties/sections/FakePropertySectionUsingDialogField.java
new file mode 100644
index 0000000..aa6cc94
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tabbed/properties/sections/FakePropertySectionUsingDialogField.java
@@ -0,0 +1,100 @@
+package org.eclipse.jst.pagedesigner.tests.tabbed.properties.sections;
+
+import org.eclipse.jface.viewers.ISelection;
+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.IDialogFieldChangeListener;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.ISupportTextValue;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.StringDialogField;
+import org.eclipse.jst.pagedesigner.jsf.ui.attributegroup.DialogFieldFactory;
+import org.eclipse.jst.pagedesigner.properties.BaseCustomSection;
+import org.eclipse.jst.pagedesigner.properties.DesignerPropertyTool;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IWorkbenchPart;
+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.w3c.dom.Attr;
+import org.w3c.dom.Element;
+
+/**
+ * Fake section for testing.... remove
+ * Binds to "type" attribute if present on element
+ *
+ */
+public class FakePropertySectionUsingDialogField extends BaseCustomSection {
+//
+// private Text txt;
+ private Attr typeAttr;
+ private DialogField field;
+ private TabbedPropertySheetWidgetFactory factory;
+ private Composite outer;
+ /**
+ * Constructor
+ */
+ public FakePropertySectionUsingDialogField() {
+ // TODO Auto-generated constructor stub
+ }
+
+ @Override
+ public void createControls(final Composite parent,
+ TabbedPropertySheetPage tabbedPropertySheetPage) {
+
+ super.createControls(parent, tabbedPropertySheetPage);
+ factory = tabbedPropertySheetPage.getWidgetFactory();
+
+ outer = factory.createComposite(parent, SWT.NONE);
+ GridLayout gl = new GridLayout();
+ gl.numColumns = 3;
+ gl.marginTop = 0;
+ gl.marginBottom = 0;
+ outer.setLayout(gl);
+
+ field = new StringDialogField();
+ GridData gd = new GridData();
+ gd.grabExcessHorizontalSpace = true;
+ gd.horizontalSpan = 2;
+ field.doFillIntoGrid(factory, outer, 3);
+ ((StringDialogField)field).getTextControl(factory, outer).setLayoutData(gd);
+ field.setLabelText("TYPETESTDIALOGFIELD:");
+
+ }
+
+ @Override
+ public void setInput(IWorkbenchPart part, ISelection selection) {
+ super.setInput(part, selection);
+ Element node = DesignerPropertyTool.getElement(part, selection);
+ if (node != null){
+ typeAttr = node.getAttributeNode("type");
+ if (typeAttr != null){
+ DialogFieldFactory.setDialogFieldValue(field, typeAttr.getValue());
+ field.setDialogFieldApplyListener(new IDialogFieldApplyListener(){
+
+ public void dialogFieldApplied(DialogField field) {
+ typeAttr.setValue(((ISupportTextValue)field).getText());
+ }
+ });
+ field.setDialogFieldChangeListener(new IDialogFieldChangeListener(){
+
+ public void dialogFieldChanged(DialogField field) {
+ //
+ }
+ });
+
+ };
+ }
+ }
+
+ @Override
+ protected void notifyChanged(INodeNotifier notifier, int eventType,
+ Object changedFeature, Object oldValue, Object newValue, int pos) {
+ if (field != null && changedFeature.toString().equalsIgnoreCase("type") ){
+ ((ISupportTextValue)field).setTextWithoutUpdate((String)newValue);
+ }
+
+ }
+
+}