From 978baa6f0cb1d3f556c4a47910a87e7c76e957d2 Mon Sep 17 00:00:00 2001 From: itrimble Date: Fri, 27 Feb 2009 23:31:19 +0000 Subject: DT Skinning Support - initial check-in. --- .../META-INF/MANIFEST.MF | 1 + .../build.properties | 3 +- .../metadata/trinidad_dti.xml | 5 +- .../plugin.xml | 8 + .../skinning/images/close.gif | Bin 0 -> 844 bytes .../skinning/images/list-bullet.gif | Bin 0 -> 286 bytes .../skinning/images/logo-dark.gif | Bin 0 -> 1559 bytes .../skinning/images/tab3-bot-deselected.gif | Bin 0 -> 115 bytes .../skinning/images/tab3-bot-end-selected.gif | Bin 0 -> 112 bytes .../skinning/images/tab3-bot-mid-selected.gif | Bin 0 -> 49 bytes .../skinning/images/tab3-bot-start-selected.gif | Bin 0 -> 170 bytes .../skinning/images/tab3-end-deselected.gif | Bin 0 -> 238 bytes .../tab3-end-join-deselected-to-deselected.gif | Bin 0 -> 195 bytes .../tab3-end-join-selected-to-deselected.gif | Bin 0 -> 480 bytes .../skinning/images/tab3-end-selected.gif | Bin 0 -> 528 bytes .../skinning/images/tab3-mid-deselected.gif | Bin 0 -> 85 bytes .../skinning/images/tab3-mid-selected.gif | Bin 0 -> 432 bytes .../skinning/images/tab3-start-deselected.gif | Bin 0 -> 427 bytes .../tab3-start-join-deselected-to-deselected.gif | Bin 0 -> 156 bytes .../tab3-start-join-selected-to-deselected.gif | Bin 0 -> 156 bytes .../skinning/images/tab3-start-join-selected.gif | Bin 0 -> 1050 bytes .../skinning/images/tab3-start-selected.gif | Bin 0 -> 998 bytes .../skinning/minimal.css | 241 +++++++++++++++++++++ .../skinning/simple.css | 224 +++++++++++++++++++ .../jsf/apache/trinidad/tagsupport/Messages.java | 5 + .../tagsupport/TrinidadTagSupportActivator.java | 17 ++ .../operations/AbstractLabelAndHelpOperation.java | 66 ++++-- .../operations/CreateClassAttributeOperation.java | 50 +++++ .../converter/operations/InputFileOperation.java | 8 +- .../converter/operations/InputTextOperation.java | 7 +- .../operations/InputTextWithIconOperation.java | 8 +- .../operations/SelectBooleanOperation.java | 8 +- .../operations/SelectListboxChoiceOperation.java | 9 +- .../SelectManyCheckboxOneRadioOperation.java | 8 +- .../TrinidadDTResourceProvider.java | 60 +++++ .../apache/trinidad/tagsupport/messages.properties | 3 +- .../META-INF/MANIFEST.MF | 1 + .../schema/pageDesignerExtension.exsd | 28 +++ .../eclipse/jst/pagedesigner/IJMTConstants.java | 5 + .../jst/pagedesigner/JMTResources.properties | 9 + .../eclipse/jst/pagedesigner/css2/CSSTempUtil.java | 15 ++ .../jst/pagedesigner/css2/layout/CSSFigure.java | 9 + .../css2/property/BackgroundImageMeta.java | 182 ++++++++++++++++ .../css2/property/CSSMetaRegistry.java | 31 +-- .../pagedesigner/css2/property/ICSSPropertyID.java | 5 + .../AbstractDTResourceProvider.java | 54 +++++ .../dtresourceprovider/AbstractDTSkin.java | 88 ++++++++ .../DTResourceProviderFactory.java | 172 +++++++++++++++ .../dtresourceprovider/DTSkinManager.java | 185 ++++++++++++++++ .../DefaultDTResourceProvider.java | 78 +++++++ .../dtresourceprovider/DefaultDTSkin.java | 135 ++++++++++++ .../dtresourceprovider/IDTResourceProvider.java | 41 ++++ .../pagedesigner/dtresourceprovider/IDTSkin.java | 66 ++++++ .../dtresourceprovider/ProviderClassMap.java | 113 ++++++++++ 54 files changed, 1886 insertions(+), 62 deletions(-) create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/close.gif create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/list-bullet.gif create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/logo-dark.gif create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-bot-deselected.gif create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-bot-end-selected.gif create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-bot-mid-selected.gif create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-bot-start-selected.gif create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-end-deselected.gif create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-end-join-deselected-to-deselected.gif create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-end-join-selected-to-deselected.gif create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-end-selected.gif create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-mid-deselected.gif create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-mid-selected.gif create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-deselected.gif create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-join-deselected-to-deselected.gif create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-join-selected-to-deselected.gif create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-join-selected.gif create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-selected.gif create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/minimal.css create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/simple.css create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/CreateClassAttributeOperation.java create mode 100644 jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/dtresourceprovider/TrinidadDTResourceProvider.java create mode 100644 jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/BackgroundImageMeta.java create mode 100644 jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/AbstractDTResourceProvider.java create mode 100644 jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/AbstractDTSkin.java create mode 100644 jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/DTResourceProviderFactory.java create mode 100644 jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/DTSkinManager.java create mode 100644 jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/DefaultDTResourceProvider.java create mode 100644 jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/DefaultDTSkin.java create mode 100644 jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/IDTResourceProvider.java create mode 100644 jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/IDTSkin.java create mode 100644 jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/ProviderClassMap.java diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/META-INF/MANIFEST.MF b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/META-INF/MANIFEST.MF index e80b2b660..c36c73ee5 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/META-INF/MANIFEST.MF +++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/META-INF/MANIFEST.MF @@ -21,6 +21,7 @@ Bundle-RequiredExecutionEnvironment: J2SE-1.5 Bundle-ActivationPolicy: lazy Export-Package: org.eclipse.jst.jsf.apache.trinidad.tagsupport;x-internal:=true, org.eclipse.jst.jsf.apache.trinidad.tagsupport.converter.operations;x-internal:=true, + org.eclipse.jst.jsf.apache.trinidad.tagsupport.dtresourceprovider;x-internal:=true, org.eclipse.jst.jsf.apache.trinidad.tagsupport.el;x-internal:=true, org.eclipse.jst.jsf.apache.trinidad.tagsupport.elementedit;x-internal:=true, org.eclipse.jst.jsf.apache.trinidad.tagsupport.model;x-internal:=true diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/build.properties b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/build.properties index aa99bac66..a7ed8163a 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/build.properties +++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/build.properties @@ -16,6 +16,7 @@ bin.includes = META-INF/,\ metadata/,\ plugin.properties,\ about.html,\ - icons/ + icons/,\ + skinning/ javacSource=1.5 javacTarget=1.5 diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/metadata/trinidad_dti.xml b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/metadata/trinidad_dti.xml index 1fa8aea6d..a05ff2839 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/metadata/trinidad_dti.xml +++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/metadata/trinidad_dti.xml @@ -352,9 +352,10 @@ - - + + + diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/plugin.xml b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/plugin.xml index 53c935305..6d5e12fb3 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/plugin.xml +++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/plugin.xml @@ -41,6 +41,10 @@ + + @@ -97,6 +101,10 @@ class="org.eclipse.jst.jsf.apache.trinidad.tagsupport.converter.operations.ShowDetailItemOperation" id="ShowDetailItemOperation"> + + diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/close.gif b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/close.gif new file mode 100644 index 000000000..e792e2871 Binary files /dev/null and b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/close.gif differ diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/list-bullet.gif b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/list-bullet.gif new file mode 100644 index 000000000..8c0cf4fef Binary files /dev/null and b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/list-bullet.gif differ diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/logo-dark.gif b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/logo-dark.gif new file mode 100644 index 000000000..8f450e1d0 Binary files /dev/null and b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/logo-dark.gif differ diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-bot-deselected.gif b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-bot-deselected.gif new file mode 100644 index 000000000..e0ec834ef Binary files /dev/null and b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-bot-deselected.gif differ diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-bot-end-selected.gif b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-bot-end-selected.gif new file mode 100644 index 000000000..adc9eeaef Binary files /dev/null and b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-bot-end-selected.gif differ diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-bot-mid-selected.gif b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-bot-mid-selected.gif new file mode 100644 index 000000000..0db0c96ad Binary files /dev/null and b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-bot-mid-selected.gif differ diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-bot-start-selected.gif b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-bot-start-selected.gif new file mode 100644 index 000000000..72463ce37 Binary files /dev/null and b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-bot-start-selected.gif differ diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-end-deselected.gif b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-end-deselected.gif new file mode 100644 index 000000000..d7417e164 Binary files /dev/null and b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-end-deselected.gif differ diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-end-join-deselected-to-deselected.gif b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-end-join-deselected-to-deselected.gif new file mode 100644 index 000000000..54162993c Binary files /dev/null and b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-end-join-deselected-to-deselected.gif differ diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-end-join-selected-to-deselected.gif b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-end-join-selected-to-deselected.gif new file mode 100644 index 000000000..29f33e0a4 Binary files /dev/null and b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-end-join-selected-to-deselected.gif differ diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-end-selected.gif b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-end-selected.gif new file mode 100644 index 000000000..d36b395e2 Binary files /dev/null and b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-end-selected.gif differ diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-mid-deselected.gif b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-mid-deselected.gif new file mode 100644 index 000000000..263955841 Binary files /dev/null and b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-mid-deselected.gif differ diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-mid-selected.gif b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-mid-selected.gif new file mode 100644 index 000000000..248de98e1 Binary files /dev/null and b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-mid-selected.gif differ diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-deselected.gif b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-deselected.gif new file mode 100644 index 000000000..2c904c3d8 Binary files /dev/null and b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-deselected.gif differ diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-join-deselected-to-deselected.gif b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-join-deselected-to-deselected.gif new file mode 100644 index 000000000..1ec2d3f80 Binary files /dev/null and b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-join-deselected-to-deselected.gif differ diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-join-selected-to-deselected.gif b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-join-selected-to-deselected.gif new file mode 100644 index 000000000..1ec2d3f80 Binary files /dev/null and b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-join-selected-to-deselected.gif differ diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-join-selected.gif b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-join-selected.gif new file mode 100644 index 000000000..f8ebc728a Binary files /dev/null and b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-join-selected.gif differ diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-selected.gif b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-selected.gif new file mode 100644 index 000000000..f4a260b0c Binary files /dev/null and b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/images/tab3-start-selected.gif differ diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/minimal.css b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/minimal.css new file mode 100644 index 000000000..cf2ac39ee --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/minimal.css @@ -0,0 +1,241 @@ +.AFInstructionText,.x0,.AFFieldText,.x6,.xk,.xl,.xm,.x23,.x24,.x25,.x26,.x2a,.x2b,.x2c,.x2d,.x2e,.x2f,.x2g,.x2h,.x1u.x2n .x25,.x1u.p_AFDisabled.x2n .x25,.x1u.x2p .x25,.x1u.x2q .x25,.x1u.x2r .x25,.x1u.x2s .x25,.x22.x2n .x24,.x22.p_AFDisabled.x2n .x24,.x22.x2p .x24,.x22.x2q .x24,.x22.x2r .x24,.x22.x2s .x24,.x1t.x2n .x26,.x1t.p_AFDisabled.x2n .x26,.x1t.x2p .x26,.AFFieldTextLTR,.x94,.AFPhoneFieldText,.x96,.AFPostalCodeFieldText,.x98,.AFAddressFieldText,.x9a,.PortletText1,.xc0,.PortletText2,.xc1,.PortletText3,.xc2,.PortletText4,.xc3,.portlet-form-input-field,.xcn,.portlet-form-field,.xcs {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000} +.AFInstructionTextDisabled,.x1,.AFFieldTextDisabled,.x7,.x1u.p_AFDisabled.x2p .x25,.x1u.p_AFDisabled.x2q .x25,.x1u.p_AFDisabled.x2r .x25,.x1u.p_AFDisabled.x2s .x25,.x22.p_AFDisabled.x2p .x24,.x22.p_AFDisabled.x2q .x24,.x22.p_AFDisabled.x2r .x24,.x22.p_AFDisabled.x2s .x24,.x1t.p_AFDisabled.x2p .x26,.p_InContextBrandingText,.x8r,.AFFieldTextLTRDisabled,.x95,.AFPhoneFieldTextDisabled,.x97,.AFPostalCodeFieldTextDisabled,.x99,.AFAddressFieldTextDisabled,.x9b,.OraHGridNavRowInactiveLink,.xa5,.OraNavBarInactiveLink,.xac,.portlet-font-dim,.xc5 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#999999} +.AFDataText,.x2 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;color:#000000} +.AFDataTextDisabled,.x3 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;color:#999999} +.AFDataNumber,.x4 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;color:#000000;text-align:right} +.AFDataNumberDisabled,.x5 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;color:#999999;text-align:right} +.AFFieldNumber,.x8,.x1u.x2o .x25,.x22.x2o .x24,.x1t.x2o .x26 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;text-align:right;color:#000000} +.AFFieldNumberDisabled,.x9,.x1u.p_AFDisabled.x2o .x25,.x22.p_AFDisabled.x2o .x24,.x1t.p_AFDisabled.x2o .x26 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;text-align:right;color:#999999} +.AFLabelText,.xa,.xq,.xr,.xs,.xt,.xu,.xv,.xw,.xx,.xy,.xz,.x10,.x11,.x12,.x13,.x14,.x15,.x4z,.portlet-form-label,.xcm,.portlet-icon-label,.xcp,.portlet-dlg-icon-label,.xcq,.portlet-form-field-label,.xcr {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;text-align:right;color:#000000;padding:0px 8px 0px 0px;font-weight:normal} +.AFLabelCell,.xb {padding:0px 8px 0px 0px} +.AFErrorIconStyle,.xc {color:#cc0000;font-family:monospace;font-weight:bold} +.AFInfoIconStyle,.xd,.AFWarningIconStyle,.xe,.AFQuickSelectIconStyle,.xg {color:#669966;font-family:monospace;font-weight:bold} +.AFRequiredIconStyle,.xf {color:#669966;font-family:Courier,sans-serif} +.AFQuickSelectDisabledIconStyle,.xh {color:#999999;font-family:monospace;font-weight:bold} +.OraLink:link,.xi:link,.x3k,.x3n,.x3q A,.x5r,.OraLinkText,.x91,.OraHGridNavRowActiveLink,.xa4,.OraNavBarActiveLink,.xab {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#003333} +.OraLink:active,.xi:active,.OraALinkText,.x93 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#006666} +.OraLink:visited,.xi:visited,.OraVLinkText,.x92 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#336666} +.OraLinkDisabled,.xj,.x2t,.x2u,.x2v,.x2w,.x2x,.x2y,.x2z,.x30,.x31,.x32,.x33,.x34,.x35,.x36,.x37,.x38,.x39,.x3a,.x3b,.x3c,.x3d,.x3e,.x3f,.x3g,.x3i,.x45,.x46,.x47,.x4v,.x5i,.x5j,.x6t,.x76,.x77,.x78,.p_OraDisabled,.x9e,.OraNav3,.xan,.p_OraTreeRow,.xbi,.portlet-form-button,.xco {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal} +.xn,.AFHeaderLevelOne,.x6g,H1.x6j,H1.x6k,.PortletHeaderText,.xbs,.PortletHeading1,.xbt,.PortletSubHeaderText,.xbz,.portlet-section-header,.xc8,.portlet-section-subheader,.xcc,.portlet-table-header,.xcf,.portlet-table-subheader,.xcj {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:13pt;color:#669966;font-weight:bold;padding:0px;margin:0px} +.xo {text-align:justify;padding:0px;margin:0px} +.xp {text-align:center;padding:0px;margin:0px} +.x16,.OraPageStampText,.x8s,.xaa,.OraNavBarViewOnly,.xad {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#669966} +.x17 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold} +.x1i,.p_OraContentFooterChildren,.x9y {float:right} +.x1k,.x5t {border-color:#336633;border:1px solid;background-color:white} +.x1l,.x5u {background-color:#CCCCCC;border-color:#336633;border-bottom:1px solid;padding:2px 2px 2px 2px} +.x1m,.x5v {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:11pt;font-weight:normal;white-space:nowrap;overflow:hidden} +.x1n {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:11pt;font-weight:normal;margin-left:5px;background-image:url(images/close.gif);background-position:center;background-repeat:no-repeat;height:13px;width:13px} +.x1o,.x5x {background-color:#e9e8e8;border:0px} +.x22.p_AFDisabled .xr,.x1t.p_AFDisabled .xt,.x1u.p_AFDisabled .xu,.x1v.p_AFDisabled .xv,.x1w.p_AFDisabled .xw,.x1p.p_AFDisabled .xx,.x1q.p_AFDisabled .xy,.x1s.p_AFDisabled .xz,.x1x.p_AFDisabled .x10,.x1y.p_AFDisabled .x11,.x1z.p_AFDisabled .x12,.x20.p_AFDisabled .x13,.x21.p_AFDisabled .x14,.x3w .x3x,.x3u .x3x a,.x3w .x3x a,.x4g .x4l A {color:#000000} +.x27,.x28 {background-color:#e9e8e8;border-color:#999999;border-width:1px;border-style:solid;width:11px;height:8px} +.x29 {padding-left:1px} +.x3h,.OraNav3Selected,.xam {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;background-color:#ccffcc} +.x3j,.portlet-font,.xc4 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:8pt;font-weight:normal} +BODY,.portlet-section-body,.xc9,.portlet-table-body,.xcg {background-color:#ffffff;font-family:Arial,Helvetica,Geneva,sans-serif} +.x3l,.x3o,.x3p {color:#003333;font-size:9pt} +.x3m {font-size:9pt;color:#000000} +.x3q UL {margin-top:4px;margin-bottom:4px} +button {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;background-color:#e9e8e8;padding:0px;margin:1px} +.x3r {position:relative;left:-7px;top:5px} +.x3s {background-color:#EFEFEF;padding-left:6px;padding-right:6px} +.x3t,.x3v,.x3z,.x41,.x48,.x4a {cursor:default} +.x3u,.x3w,.x40,.x42,.x49,.x4b,.x4f,.x4g {cursor:pointer} +.x3u .x3x {color:#000000;font-weight:bold} +.x3u .x3x a:hover,.x3w .x3x a:hover,.x40 .x43 a:hover,.x42 .x43 a:hover,.x49 .x4c a:hover,.x4b .x4c a:hover,.AFAccessKeyStyle,.x9c {text-decoration:underline} +.x3t .x3x,.x3z .x43,.x48 .x4c {color:gray;font-weight:bold} +.x3v .x3x,.x3t .x3x a,.x3v .x3x a,.x41 .x43,.x3z .x43 a,.x41 .x43 a,.x4a .x4c,.x48 .x4c a,.x4a .x4c a,.x4f.p_AFDisabled .x4l,.x4g.p_AFDisabled .x4l {color:gray} +.x3x,.x43,.x4c {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;padding-top:3px;padding-bottom:3px} +.x3x a,.x43 a,.x4c a {text-decoration:none} +.x3y {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;padding-left:6px;padding-right:6px;color:gray} +.x40 .x43,.x49 .x4c,.x4f .x4l A,.AFLinkAccessKeyStyle,.x9d,.x9n,.x9s {font-weight:bold} +.x44 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;padding-left:6px;padding-right:6px} +.x4d {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;vertical-align:middle;width:17px;background-image:url(images/list-bullet.gif);background-position:center;background-repeat:no-repeat} +.x4e {height:26px;overflow:hidden} +.x4f.p_AFDisabled,.x4g.p_AFDisabled {cursor:default;color:gray} +.x4h,.x4i {height:22px;width:26px;background-position:top right} +.x4j,.x4k {height:22px;width:14px;background-repeat:no-repeat} +.x4l {height:22px;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;padding-left:3px;white-space:nowrap} +.x4m {height:22px;width:12px;background-repeat:no-repeat} +.x4n {height:22px;width:15px} +.x4o,.x4q,.x4s {height:4px;background-repeat:repeat-x} +.x4p {height:4px;width:17px;background-repeat:no-repeat} +.x4r {height:4px} +.x4t {height:4px;width:100%;background-repeat:no-repeat} +.x4l A {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;text-decoration:none} +.x4u {background-repeat:repeat-x} +.x4f .x4h {background-image:url(images/tab3-start-selected.gif)} +.x4f .x4i {background-image:url(images/tab3-start-join-selected.gif)} +.x4f .x4o,.x4f .x4q,.x4f .x4s {background-image:url(images/tab3-bot-mid-selected.gif)} +.x4f .x4p {background-image:url(images/tab3-bot-start-selected.gif)} +.x4f .x4l {background-image:url(images/tab3-mid-selected.gif);font-weight:bold} +.x4f .x4m {background-image:url(images/tab3-end-join-selected-to-deselected.gif)} +.x4f .x4n {background-image:url(images/tab3-end-selected.gif)} +.x4f .x4u,.x4g .x4o,.x4g .x4q,.x4g .x4s,.x4g .x4u {background-image:url(images/tab3-bot-deselected.gif)} +.x4f .x4t {background-image:url(images/tab3-bot-end-selected.gif)} +.x4g .x4h {background-image:url(images/tab3-start-deselected.gif)} +.x4g .x4p,.x4g .x4t {background-image:none} +.x4g .x4j {background-image:url(images/tab3-start-join-selected-to-deselected.gif)} +.x4g .x4k {background-image:url(images/tab3-start-join-deselected-to-deselected.gif)} +.x4g .x4l {color:#000000;background-image:url(images/tab3-mid-deselected.gif)} +.x4g .x4m {background-image:url(images/tab3-end-join-deselected-to-deselected.gif)} +.x4g .x4n {background-image:url(images/tab3-end-deselected.gif)} +.x4w,.p_OraTreeIcon,.xbg {vertical-align:top} +.x4x {background-color:gray;height:1px;font-size:1px;margin-top:3px;margin-bottom:3px} +.x4y,.x51,.x52 {padding:1px 0px} +.x50 {padding:1px 0px;text-align:left} +.x53,.x54,.x55 {border-color:#99cc99;border-style:solid;border-width:1px;margin:2px} +.x56 {border-style:solid;border-width:1px;margin:2px;border-color:#669966} +.x53 img,.x54 img,.x55 img,.x56 img,.x5i img,.x5j img,.x62 img,.x6o img,.x6t img {vertical-align:bottom} +.x5f {padding:5px;height:20px} +.x54 .x5f,.x5i .x5k,.x5j .x5l,.x6r,.OraBGAccentLight,.x8q,.PortletBodyColor,.xbo,.PortletSubHeaderColor,.xbx,.xcw {background-color:#e9e8e8} +.x55 .x5f,.OraBGAccentMedium,.x8p {background-color:#ffffcc} +.x56 .x5f,.OraBGAccentDark,.x8o {background-color:#CCCCCC} +.x5g,.PortletHeaderColor,.xbp {width:100%;background-repeat:repeat-x;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:11pt;padding:0px 3px;font-weight:bold} +.x54 .x5g {background-color:#99cc99;color:#ffffff} +.x5m,.x5n,.x5o {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:8pt;font-weight:normal;color:#000000;white-space:nowrap;padding:5px} +.x5m A,.x5n A,.x5o A,.x8b,.xar A,.p_OraTreeRow A:link,.xbi A:link,.p_OraTreeRow A:active,.xbi A:active,.p_OraTreeRow A:visited,.xbi A:visited {color:#003333} +.x5p {border-color:#e9e8e8} +.x5q,.OraPageStampLabel,.x8t,.OraTableControlBarText,.xba,.p_OraTreeRowSelected,.xbj {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;color:#669966} +.x5s {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#003333;text-decoration:none;white-space:nowrap} +.x5w {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:11pt;font-weight:normal;text-align:right;padding-left:5px} +.x5y {color:#003333;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;padding:0px 2px 2px 2px} +.x60 {color:#669966;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;padding:0px 2px 2px 2px} +.x61 {color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;padding:0px 2px 2px 2px} +.x62 {background-color:#669966;color:#ffffff;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;min-height:4px;padding:0px} +.x63,.x64 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;padding:0px 0px 0px 5px;white-space:nowrap} +.x63 A,.x64 A,.PortletHeaderLink,.xbq,.PortletSubHeaderLink,.xby {color:#ffffff;text-decoration:none} +.x65 {color:#ffffff;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal} +.x66 {color:#669966;position:absolute;top:0px;left:-18px;text-decoration:none} +.x67 {font-size:10pt;font-weight:normal;color:#669966;font-family:monospace;text-decoration:none} +.x68 {font-size:10pt;font-weight:normal;color:#999999;font-family:monospace} +.x69 {border-color:#999999;border-width:0px 1px 1px 1px;border-style:solid} +.x6a {border-color:#999999;height:21px;text-decoration:none;white-space:nowrap;padding-right:5px;border-width:1px 0px 0px 0px;border-style:solid;cursor:pointer;padding-left:5px} +.x6b {border-color:#999999;height:21px;text-decoration:none;white-space:nowrap;padding-right:5px;border-style:solid;border-width:1px 0px 1px 0px;padding-left:2px} +.x6c {border-color:#999999;height:21px;text-decoration:none;white-space:nowrap;padding-right:5px;border-style:solid;border-width:1px 0px 0px 0px;padding-left:18px} +.x6d {vertical-align:top;margin:5px} +.x6e {background:transparent;color:#669966;display:block;padding-top:2px;text-decoration:none;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold} +.x6f {color:#999999;display:block;padding-top:2px;text-decoration:none;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold} +.AFHeaderLevelTwo,.x6h,H2.x6j,H2.x6k,.PortletHeading2,.xbu {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:11pt;color:#669966;font-weight:bold;padding:0px;margin:0px} +.AFHeaderLevelThreePlus,.x6i,H3.x6j,H4.x6j,H5.x6j,H6.x6j,H3.x6k,H4.x6k,H5.x6k,H6.x6k,.PortletHeading3,.xbv,.PortletHeading4,.xbw {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;color:#669966;font-weight:bold;padding:0px;margin:0px} +.x6l,.x6m,.portlet-msg-error,.xc7 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:13pt;font-weight:bold;padding:0px;margin:0px;color:#cc0000} +.x6n {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:13pt;color:#669966;font-weight:bold;margin:0px;border-color:#CCCCCC;border-width:0px 0px 1px 0px;border-style:solid;vertical-align:bottom;margin-bottom:3px;padding:0px 3px} +.x6o {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#336633;width:100%;border-color:#999999;background-color:#ffffcc;border-style:solid;border-width:1px;padding:0px;margin:5px 0px 0px} +.x6p,.xa7,.portlet-msg-info,.xc6 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#669966;margin:0px 0px 0px 0px;padding:5px 30px 5px 30px} +.x6q {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#336633;border-color:#999999;border-width:0px 1px 1px;border-style:solid;padding:0px;margin:0px 5px 0px 0px} +.AFSortableHeaderSortIcon,.x6s {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:9pt;font-weight:normal;color:#669966;padding-left:4px;text-decoration:none} +.x6u {background-color:#e9e8e8;white-space:nowrap;border-color:#999999;border-style:solid;border-width:1px 1px 0px 1px;padding:2px 6px} +.x6v {background-color:#669966;white-space:nowrap;border-color:#999999;border-style:solid;border-width:1px 1px 0px 1px;padding:2px 6px} +.x6w {background-color:#e9e8e8;color:#999999;white-space:nowrap;border-color:#999999;border-style:solid;border-width:1px 1px 0px 1px;padding:2px 6px} +.x6u A {text-decoration:none;color:#336633} +.x6v A {text-decoration:none;color:#ccffcc;font-weight:bold} +.x6x {width:0px} +.x6y,.x6z {border-collapse:collapse;border-color:#999999;border-style:solid;border-width:1px} +.x70,.x72 {background-color:#e9e8e8;border-color:#999999;border-style:solid;border-width:1px 1px 0px;padding:1px 2px} +.x71,.x73 {background-color:#e9e8e8;border-color:#999999;border-style:solid;border-width:0px 1px 1px;padding:1px 2px} +.x74,.x75 {border-color:#999999;border-style:solid;border-width:1px 1px 0px;padding:1px 2px} +.x79,.portlet-section-selected,.xcb,.portlet-table-selected,.xci {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;vertical-align:baseline;background-color:#e9e8e8;border-color:#999999} +.x7a,.portlet-section-alternate,.xca,.portlet-table-alternate,.xch {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;vertical-align:baseline;background-color:#ffffff;border-color:#999999} +.x7b {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;vertical-align:baseline;background-color:#e9e8e8;border-color:#999999;text-align:right;padding-right:2px} +.x7c {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;vertical-align:baseline;background-color:#ffffff;border-color:#999999;text-align:right;padding-right:2px} +.x7d,.x7e,.x7f,.OraTableCellSelect,.xbd,.portlet-section-text,.xce,.portlet-table-text,.xcl {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;vertical-align:baseline;background-color:#e9e8e8;border-color:#999999;text-align:center} +.x7g,.x7h,.x7i,.OraTableCellSelectBand,.xbe {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;vertical-align:baseline;background-color:#ffffff;border-color:#999999;text-align:center} +.x7j {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;text-align:left;background-color:#CCCCCC;color:#669966;vertical-align:bottom} +.x7k {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;background-color:#CCCCCC;color:#669966;vertical-align:bottom;text-align:right} +.x7l {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;background-color:#CCCCCC;color:#669966;vertical-align:bottom;text-align:center} +.x7m {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;text-align:right;background-color:#CCCCCC;color:#669966} +.x7n {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;border-color:#999999;background-color:#ffffff} +.x7o,.portlet-section-footer,.xcd,.portlet-table-footer,.xck {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;text-align:left;background-color:#CCCCCC;color:#669966} +.OraTableTotal,.x7p {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;text-align:right;background-color:#CCCCCC;color:#669966} +.x7q {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;text-align:right;background-color:#CCCCCC;color:#000000;vertical-align:baseline} +.x7r {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;text-align:left;background-color:#CCCCCC;color:#000000;vertical-align:baseline} +.x7s {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;text-align:left;background-color:#CCCCCC;color:#669966;vertical-align:bottom;cursor:pointer;border-width:2px;border-style:outset} +.x7t {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;background-color:#CCCCCC;color:#669966;vertical-align:bottom;cursor:pointer;border-width:2px;border-style:outset;text-align:right} +.x7u {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;background-color:#CCCCCC;color:#669966;vertical-align:bottom;cursor:pointer;border-width:2px;border-style:outset;text-align:center} +.x7y,.x81,.x84,.x87,.x8a {border-top-style:solid;border-top-width:2px;} +.x7w.p_AFSelected {color:#669966;font-weight:bold;border-color:#669966} +.x7w:visited,.x7w:visited .x8b {color:#666666} +.x7w.p_AFDisabled {color:#999999;border-color:#cccccc} +.x7w.p_AFUnvisited {color:#669966;border-color:#669966} +.x7w.p_AFDisabled .x8b {color:#669999} +.OraBGColorVeryDark,.x8f {background-color:#336633} +.OraBGColorDark,.x8g,.xct,.xcu,.xcv {background-color:#669966} +.OraBGColorMedium,.x8h {background-color:#99cc99} +.OraBGColorLight,.x8i {background-color:#ccffcc} +.OraBGGrayVeryDark,.x8j {background-color:#333333} +.OraBGGrayDark,.x8k {background-color:#666666} +.OraBGGrayMedium,.x8l,.OraBGAccentVeryDark,.x8n,.OraTable,.xbc {background-color:#999999} +.OraBGGrayLight,.x8m {background-color:#cccccc} +.OraInlineInfoText,.x8u {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:8pt;font-weight:normal;color:#669966} +.OraTextInline,.x8v {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:8pt;font-weight:normal;color:#99cc99} +.OraMessageBoxErrorText,.x8w,.AFErrorText,.x8x {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#cc0000} +.OraErrorNameText,.x8y {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;color:#cc0000} +.OraInlineErrorText,.x8z {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:8pt;font-weight:normal;color:#cc0000} +.OraGlobalPageTitle,.x90 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:13pt;color:#ffffff;font-weight:bold} +.p_OraSelected,.x9f {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;background-color:#ccffcc;text-decoration:none} +.p_OraHiddenLabel,.x9g {position:absolute;top:-999px;left:0px;font-size:0px} +.p_OraColorFieldSwatch,.x9h {border-color:#000000;border-style:solid;border-width:1px} +.p_OraColorPalette,.x9i {background-color:#000000} +.p_OraColorPaletteEmptyCell,.x9j {background-color:#ffffff} +.x9k A,.x9o A {color:#003333;text-decoration:none} +.x9l,.x9p {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:13pt;font-weight:normal;text-align:center;background-color:#ffffff;color:#669966;padding:2px} +.x9m,.x9q {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;text-align:center;color:#669966;padding:2px} +.x2b A,.x9r A {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;text-align:center;color:#003333} +.x9r {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;text-align:center;color:#999999;text-decoration:none;border-width:1px;border-style:solid;padding:2px} +.p_OraContentFooterRule,.x9w {color:#669966} +.p_OraContentFooterStart,.x9x {float:left} +.p_OraContentFooterBottom,.x9z {clear:both;margin-bottom:5px} +.p_OraFooter,.xa0 {text-align:center} +.p_OraFooterBottom,.xa1 {padding-top:5px} +.p_OraHeaderNest,.xa2 {margin:5px 0px 0px 12px} +.OraHGridLocatorHeader,.xa3 {border-color:#999999;background-color:#e9e8e8} +.p_OraHideShowDisclosedSymbol,.xa6,.xas A,.p_OraTreeDisclosedSymbol A:link,.xbf A:link,.p_OraTreeDisclosedSymbol A:active,.xbf A:active,.p_OraTreeDisclosedSymbol A:visited,.xbf A:visited,.p_OraTreeRowSelected A:link,.xbj A:link,.p_OraTreeRowSelected A:active,.xbj A:active,.p_OraTreeRowSelected A:visited,.xbj A:visited {color:#669966;text-decoration:none} +.xa8 {list-style-type:none} +.p_OraQuickSearchBox,.xae {background-color:#e9e8e8;border-color:#CCCCCC;border-style:solid;padding:0pt 5pt 5pt 5pt;border-width:0px 0px 1px 1px} +.p_OraGlobalQuick,.xaf {border-color:#CCCCCC;border-style:solid;border-width:0px 0px 0px 1px} +.p_OraProcessingStatus,.xag {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;color:#669966;border-color:#99cc99;border-style:solid;border-width:1px} +.p_OraProductBrandingText,.xah {color:#669966;position:relative;font-family:Garamond, Times, Times New Roman, Serif;font-weight:normal;font-size:24pt;line-height:28.8pt;top:-4.8pt} +.p_OraProductBrandingCompactText,.xai {color:#669966;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:13pt;margin-bottom:0px;margin-top:0px;font-weight:bold} +.OraShuttleHeader,.xaj {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:9pt;color:#669966;font-weight:bold;padding:0px 0px 0px 18px} +.OraShuttleLinkText,.xak {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:9pt;font-weight:normal;color:#003333} +.p_OraSideBarMinWidth,.xal {width:140px} +.OraStyledList,.xao {list-style-position:inside;padding:0px;margin:0px} +.OraStyledList .OraStyledList,.xao .xao {padding:0pt 0pt 0pt 10pt} +.xap {background-color:#e9e8e8;border-color:#99cc99;text-align:center;border-style:solid;padding:2px 0px;margin:4px 0px;border-width:1px 0px 0px} +.xaq {background-color:#e9e8e8;border-color:#99cc99;text-align:center;border-style:solid;padding:2px 0px;margin:4px 0px;border-width:0px 0px 1px} +.xar {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;padding:0px 8px} +.xar .x9e {color:#999999} +.xas {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;padding:0px 8px} +.xat {width:0%} +.xau {width:100%} +.OraTableBorder0001,.xav {border-style:solid;border-width:0px 0px 0px 1px} +.OraTableBorder0010,.xaw {border-style:solid;border-width:0px 0px 1px} +.OraTableBorder0011,.xax {border-style:solid;border-width:0px 0px 1px 1px} +.OraTableBorder0100,.xay {border-style:solid;border-width:0px 1px 0px 0px} +.OraTableBorder0101,.xaz {border-style:solid;border-width:0px 1px} +.OraTableBorder0110,.xb0 {border-style:solid;border-width:0px 1px 1px 0px} +.OraTableBorder0111,.xb1 {border-style:solid;border-width:0px 1px 1px} +.OraTableBorder1000,.xb2 {border-style:solid;border-width:1px 0px 0px} +.OraTableBorder1001,.xb3 {border-style:solid;border-width:1px 0px 0px 1px} +.OraTableBorder1010,.xb4 {border-style:solid;border-width:1px 0px} +.OraTableBorder1011,.xb5 {border-style:solid;border-width:1px 0px 1px 1px} +.OraTableBorder1100,.xb6 {border-style:solid;border-width:1px 1px 0px 0px} +.OraTableBorder1101,.xb7 {border-style:solid;border-width:1px 1px 0px} +.OraTableBorder1110,.xb8 {border-style:solid;border-width:1px 1px 1px 0px} +.OraTableBorder1111,.xb9 {border-style:solid;border-width:1px} +.OraTableTitle,.xbb {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:13pt;font-weight:normal;background-color:#ffffff;color:#669966} +.p_OraTreeDisclosedSymbol,.xbf {color:#669966;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;text-align:right} +.p_OraTreeNodeAdjust,.xbh {padding-bottom:2px} +.xbk {width:400px;height:300px;background-color:white} +.p_OraOnePixelLine,.xbl {background-color:#CCCCCC;font-size:0pt;overflow:hidden;height:1px;width:100%} +.p_OraDisplayBlock,.xbm {display:block} +.p_OraHideSkipNaviText,.xbn {font-size:0pt;margin-top:0px;margin-left:-999px} +.AFLogo,.xcx {width:103px;height:13px;background-repeat:no-repeat;background-position:center;vertical-align:middle;background-image:url(images/logo-dark.gif)} +.xcy {border-color:#669966} +.x7w.p_AFVisited {border-color:#999999} +.x6j,.x6k {border-color:#CCCCCC;border-width:0px 0px 1px 0px;border-style:solid;vertical-align:bottom;margin-bottom:3px;padding:0px 3px} +.xcz {margin-right:3px} +.xd0 {border-color:#669966;border-style:dashed none none;border-width:1px 0px 0px;height:1px;margin:-3px 0px -3px 0px;padding:0px} +body {margin-top:8px} +.p_OraNav2,.xd1 {border-color:#99cc99} +.xd2 {height:25px} diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/simple.css b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/simple.css new file mode 100644 index 000000000..c7ddf6732 --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/skinning/simple.css @@ -0,0 +1,224 @@ +.AFInstructionText,.x0,.AFFieldText,.x6,.xk,.xl,.xm,.x23,.x24,.x25,.x26,.x2a,.x2b,.x2c,.x2d,.x2e,.x2f,.x2g,.x2h,.x1u.x2n .x25,.x1u.p_AFDisabled.x2n .x25,.x1u.x2p .x25,.x1u.x2q .x25,.x1u.x2r .x25,.x1u.x2s .x25,.x22.x2n .x24,.x22.p_AFDisabled.x2n .x24,.x22.x2p .x24,.x22.x2q .x24,.x22.x2r .x24,.x22.x2s .x24,.x1t.x2n .x26,.x1t.p_AFDisabled.x2n .x26,.x1t.x2p .x26,.AFFieldTextLTR,.x94,.AFPhoneFieldText,.x96,.AFPostalCodeFieldText,.x98,.AFAddressFieldText,.x9a,.PortletText1,.xc0,.PortletText2,.xc1,.PortletText3,.xc2,.PortletText4,.xc3,.portlet-form-input-field,.xcn,.portlet-form-field,.xcs {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000} +.AFInstructionTextDisabled,.x1,.AFFieldTextDisabled,.x7,.x1u.p_AFDisabled.x2p .x25,.x1u.p_AFDisabled.x2q .x25,.x1u.p_AFDisabled.x2r .x25,.x1u.p_AFDisabled.x2s .x25,.x22.p_AFDisabled.x2p .x24,.x22.p_AFDisabled.x2q .x24,.x22.p_AFDisabled.x2r .x24,.x22.p_AFDisabled.x2s .x24,.x1t.p_AFDisabled.x2p .x26,.x61,.p_InContextBrandingText,.x8r,.AFFieldTextLTRDisabled,.x95,.AFPhoneFieldTextDisabled,.x97,.AFPostalCodeFieldTextDisabled,.x99,.AFAddressFieldTextDisabled,.x9b,.OraHGridNavRowInactiveLink,.xa5,.OraNavBarInactiveLink,.xac,.portlet-font-dim,.xc5 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#999999} +.AFDataText,.x2 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;color:#000000} +.AFDataTextDisabled,.x3 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;color:#999999} +.AFDataNumber,.x4 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;color:#000000;text-align:right} +.AFDataNumberDisabled,.x5 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;color:#999999;text-align:right} +.AFFieldNumber,.x8,.x1u.x2o .x25,.x22.x2o .x24,.x1t.x2o .x26 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;text-align:right;color:#000000} +.AFFieldNumberDisabled,.x9,.x1u.p_AFDisabled.x2o .x25,.x22.p_AFDisabled.x2o .x24,.x1t.p_AFDisabled.x2o .x26 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;text-align:right;color:#999999} +.AFLabelText,.xa,.xq,.xr,.xs,.xt,.xu,.xv,.xw,.xx,.xy,.xz,.x10,.x11,.x12,.x13,.x14,.x15,.x4z,.portlet-form-label,.xcm,.portlet-icon-label,.xcp,.portlet-dlg-icon-label,.xcq,.portlet-form-field-label,.xcr {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;text-align:right;color:#000000;padding:0px 8px 0px 0px;font-weight:normal} +.AFLabelCell,.xb {padding:0px 8px 0px 0px} +.AFErrorIconStyle,.xc {color:#cc0000;font-family:monospace;font-weight:bold} +.AFInfoIconStyle,.xd,.AFWarningIconStyle,.xe,.AFQuickSelectIconStyle,.xg {color:#669966;font-family:monospace;font-weight:bold} +.AFRequiredIconStyle,.xf {color:#669966;font-family:Courier,sans-serif} +.AFQuickSelectDisabledIconStyle,.xh {color:#999999;font-family:monospace;font-weight:bold} +.OraLink:link,.xi:link,.x3k,.x3n,.x3q A,.x5r,.x5y,.OraLinkText,.x91,.OraHGridNavRowActiveLink,.xa4,.OraNavBarActiveLink,.xab {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#003333} +.OraLink:active,.xi:active,.OraALinkText,.x93 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#006666} +.OraLink:visited,.xi:visited,.OraVLinkText,.x92 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#336666} +.OraLinkDisabled,.xj,.x2t,.x2u,.x2v,.x2w,.x2x,.x2y,.x2z,.x30,.x31,.x32,.x33,.x34,.x35,.x36,.x37,.x38,.x39,.x3a,.x3b,.x3c,.x3d,.x3e,.x3f,.x3g,.x3i,button,.x45,.x46,.x47,.x4v,.x5i,.x5j,.x6t,.x76,.x77,.x78,.p_OraDisabled,.x9e,.OraNav3,.xan,.p_OraTreeRow,.xbi,.portlet-form-button,.xco {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal} +.xn {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:13pt;font-weight:normal;color:#669966;padding:0px;margin:0px} +.xo {text-align:justify;padding:0px;margin:0px} +.xp {text-align:center;padding:0px;margin:0px} +.x16,.x60,.AFHeaderLevelThreePlus,.x6i,H3.x6j,H4.x6j,H5.x6j,H6.x6j,H3.x6k,H4.x6k,H5.x6k,H6.x6k,.OraPageStampText,.x8s,.xaa,.OraNavBarViewOnly,.xad,.PortletHeading3,.xbv,.PortletHeading4,.xbw {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#669966} +.x17 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold} +.x1i,.p_OraContentFooterChildren,.x9y {float:right} +.x1k,.x5t {border-color:#336633;border:1px solid;background-color:white} +.x1l,.x5u {background-color:#CCCCCC;border-color:#336633;border-bottom:1px solid;padding:2px 2px 2px 2px} +.x1m,.x5v {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:11pt;font-weight:normal;white-space:nowrap;overflow:hidden} +.x1n {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:11pt;font-weight:normal;margin-left:5px;background-image:url(images/close.gif);background-position:center;background-repeat:no-repeat;height:13px;width:13px} +.x1o,.x5x {background-color:#e9e8e8;border:0px} +.x22.p_AFDisabled .xr,.x1t.p_AFDisabled .xt,.x1u.p_AFDisabled .xu,.x1v.p_AFDisabled .xv,.x1w.p_AFDisabled .xw,.x1p.p_AFDisabled .xx,.x1q.p_AFDisabled .xy,.x1s.p_AFDisabled .xz,.x1x.p_AFDisabled .x10,.x1y.p_AFDisabled .x11,.x1z.p_AFDisabled .x12,.x20.p_AFDisabled .x13,.x21.p_AFDisabled .x14,.x3w .x3x,.x3u .x3x a,.x3w .x3x a,.x4g .x4l A {color:#000000} +.x27,.x28 {background-color:#e9e8e8;border-color:#999999;border-width:1px;border-style:solid;width:11px;height:8px} +.x29 {padding-left:1px} +.x3h,.OraNav3Selected,.xam {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;background-color:#ccffcc} +.x3j,.portlet-font,.xc4 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:8pt;font-weight:normal} +BODY,.portlet-section-body,.xc9,.portlet-table-body,.xcg {background-color:#ffffff;font-family:Arial,Helvetica,Geneva,sans-serif} +.x3l,.x3o,.x3p {color:#003333;font-size:9pt} +.x3m {font-size:9pt;color:#000000} +.x3q UL {margin-top:4px;margin-bottom:4px} +.x3r {position:relative;left:-7px;top:5px} +.x3s {background-color:#EFEFEF;padding-left:6px;padding-right:6px} +.x3t,.x3v,.x3z,.x41,.x48,.x4a {cursor:default} +.x3u,.x3w,.x40,.x42,.x49,.x4b,.x4f,.x4g {cursor:pointer} +.x3u .x3x {color:#000000;font-weight:bold} +.x3u .x3x a:hover,.x3w .x3x a:hover,.x40 .x43 a:hover,.x42 .x43 a:hover,.x49 .x4c a:hover,.x4b .x4c a:hover,.AFAccessKeyStyle,.x9c {text-decoration:underline} +.x3t .x3x,.x3z .x43,.x48 .x4c {color:gray;font-weight:bold} +.x3v .x3x,.x3t .x3x a,.x3v .x3x a,.x41 .x43,.x3z .x43 a,.x41 .x43 a,.x4a .x4c,.x48 .x4c a,.x4a .x4c a,.x4f.p_AFDisabled .x4l,.x4g.p_AFDisabled .x4l {color:gray} +.x3x,.x43,.x4c {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;padding-top:3px;padding-bottom:3px} +.x3x a,.x43 a,.x4c a {text-decoration:none} +.x3y {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;padding-left:6px;padding-right:6px;color:gray} +.x40 .x43,.x49 .x4c,.x4f .x4l A,.AFLinkAccessKeyStyle,.x9d,.x9n,.x9s {font-weight:bold} +.x44 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;padding-left:6px;padding-right:6px} +.x4d {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;vertical-align:middle;width:17px;background-image:url(images/list-bullet.gif);background-position:center;background-repeat:no-repeat} +.x4e {height:26px;overflow:hidden} +.x4f.p_AFDisabled,.x4g.p_AFDisabled {cursor:default;color:gray} +.x4h,.x4i {height:22px;width:26px;background-position:top right} +.x4j,.x4k {height:22px;width:14px;background-repeat:no-repeat} +.x4l {height:22px;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;padding-left:3px;white-space:nowrap} +.x4m {height:22px;width:12px;background-repeat:no-repeat} +.x4n {height:22px;width:15px} +.x4o,.x4q,.x4s {height:4px;background-repeat:repeat-x} +.x4p {height:4px;width:17px;background-repeat:no-repeat} +.x4r {height:4px} +.x4t {height:4px;width:100%;background-repeat:no-repeat} +.x4l A {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;text-decoration:none} +.x4u {background-repeat:repeat-x} +.x4f .x4h {background-image:url(images/tab3-start-selected.gif)} +.x4f .x4i {background-image:url(images/tab3-start-join-selected.gif)} +.x4f .x4o,.x4f .x4q,.x4f .x4s {background-image:url(images/tab3-bot-mid-selected.gif)} +.x4f .x4p {background-image:url(images/tab3-bot-start-selected.gif)} +.x4f .x4l {background-image:url(images/tab3-mid-selected.gif);font-weight:bold} +.x4f .x4m {background-image:url(images/tab3-end-join-selected-to-deselected.gif)} +.x4f .x4n {background-image:url(images/tab3-end-selected.gif)} +.x4f .x4u,.x4g .x4o,.x4g .x4q,.x4g .x4s,.x4g .x4u {background-image:url(images/tab3-bot-deselected.gif)} +.x4f .x4t {background-image:url(images/tab3-bot-end-selected.gif)} +.x4g .x4h {background-image:url(images/tab3-start-deselected.gif)} +.x4g .x4p,.x4g .x4t {background-image:none} +.x4g .x4j {background-image:url(images/tab3-start-join-selected-to-deselected.gif)} +.x4g .x4k {background-image:url(images/tab3-start-join-deselected-to-deselected.gif)} +.x4g .x4l {color:#000000;background-image:url(images/tab3-mid-deselected.gif)} +.x4g .x4m {background-image:url(images/tab3-end-join-deselected-to-deselected.gif)} +.x4g .x4n {background-image:url(images/tab3-end-deselected.gif)} +.x4w,.p_OraTreeIcon,.xbg {vertical-align:top} +.x4x {background-color:gray;height:1px;font-size:1px;margin-top:3px;margin-bottom:3px} +.x4y,.x51,.x52 {padding:0px} +.x50 {padding:0px;text-align:left} +.x53 img,.x54 img,.x55 img,.x56 img,.x5i img,.x5j img,.x62 img,.x6o img,.x6t img {vertical-align:bottom} +.x54 .x5f,.x5i .x5k,.x5j .x5l,.x6r,.OraBGAccentLight,.x8q,.PortletBodyColor,.xbo,.PortletSubHeaderColor,.xbx,.xcw {background-color:#e9e8e8} +.x55 .x5f,.OraBGAccentMedium,.x8p {background-color:#ffffcc} +.x56 .x5f,.OraBGAccentDark,.x8o {background-color:#CCCCCC} +.x5g,.PortletHeaderColor,.xbp {width:100%;background-repeat:repeat-x} +.x54 .x5g {background-color:#99cc99;color:#ffffff} +.x5m,.x5n,.x5o {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:8pt;font-weight:normal;color:#000000;white-space:nowrap} +.x5m A,.x5n A,.x5o A,.x8b,.xar A,.p_OraTreeRow A:link,.xbi A:link,.p_OraTreeRow A:active,.xbi A:active,.p_OraTreeRow A:visited,.xbi A:visited {color:#003333} +.x5p {border-color:#e9e8e8} +.x5q,.OraPageStampLabel,.x8t,.OraTableControlBarText,.xba,.p_OraTreeRowSelected,.xbj {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;color:#669966} +.x5s {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#003333;text-decoration:none;white-space:nowrap} +.x5w {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:11pt;font-weight:normal;text-align:right;padding-left:5px} +.x62 {background-color:#669966;color:#ffffff;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;min-height:4px} +.x63,.x64 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;white-space:nowrap} +.x63 A,.x64 A {color:#ffffff} +.x65 {color:#ffffff;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal} +.x66 {color:#669966;position:absolute;top:0px;left:-18px} +.x67 {font-size:10pt;font-weight:normal;color:#669966;font-family:monospace} +.x68 {font-size:10pt;font-weight:normal;color:#999999;font-family:monospace} +.x69 {border-color:#999999;border-width:0px 1px 1px 1px;border-style:solid} +.x6a {border-color:#999999;height:21px;text-decoration:none;white-space:nowrap;padding-right:5px;border-width:1px 0px 0px 0px;border-style:solid;cursor:pointer;padding-left:5px} +.x6b {border-color:#999999;height:21px;text-decoration:none;white-space:nowrap;padding-right:5px;border-style:solid;border-width:1px 0px 1px 0px;padding-left:2px} +.x6c {border-color:#999999;height:21px;text-decoration:none;white-space:nowrap;padding-right:5px;border-style:solid;border-width:1px 0px 0px 0px;padding-left:18px} +.x6d {vertical-align:top;margin:5px} +.x6e {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;background:transparent;color:#669966;display:block;padding-top:2px;text-decoration:none} +.x6f {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#999999;display:block;padding-top:2px;text-decoration:none} +.AFHeaderLevelOne,.x6g,H1.x6j,H1.x6k,.x6n,.PortletHeaderText,.xbs,.PortletHeading1,.xbt,.PortletSubHeaderText,.xbz,.portlet-section-header,.xc8,.portlet-section-subheader,.xcc,.portlet-table-header,.xcf,.portlet-table-subheader,.xcj {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:13pt;font-weight:normal;color:#669966} +.AFHeaderLevelTwo,.x6h,H2.x6j,H2.x6k,.PortletHeading2,.xbu {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:11pt;font-weight:normal;color:#669966} +.x6l,.x6m,.portlet-msg-error,.xc7 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:13pt;font-weight:normal;color:#cc0000} +.x6o {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#336633;width:100%} +.x6p,.xa7,.portlet-msg-info,.xc6 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#669966;margin:0px 0px 0px 0px;padding:5px 30px 5px 30px} +.x6q {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#336633;border-color:#999999} +.AFSortableHeaderSortIcon,.x6s {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:9pt;font-weight:normal;color:#669966} +.x6u {background-color:#e9e8e8;white-space:nowrap} +.x6v {background-color:#669966;white-space:nowrap} +.x6w {background-color:#e9e8e8;color:#999999;white-space:nowrap} +.x6u A {color:#336633} +.x6v A {color:#ccffcc} +.x6x {width:0px} +.x6y,.x6z {border-collapse:collapse;border-color:#999999;border-style:solid;border-width:1px} +.x70,.x72 {background-color:#e9e8e8;border-color:#999999;border-style:solid;border-width:1px 1px 0px;padding:1px 2px} +.x71,.x73 {background-color:#e9e8e8;border-color:#999999;border-style:solid;border-width:0px 1px 1px;padding:1px 2px} +.x74,.x75 {border-color:#999999;border-style:solid;border-width:1px 1px 0px;padding:1px 2px} +.x79,.portlet-section-selected,.xcb,.portlet-table-selected,.xci {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;vertical-align:baseline;background-color:#e9e8e8;border-color:#999999} +.x7a,.portlet-section-alternate,.xca,.portlet-table-alternate,.xch {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;vertical-align:baseline;background-color:#ffffff;border-color:#999999} +.x7b {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;vertical-align:baseline;background-color:#e9e8e8;border-color:#999999;text-align:right;padding-right:2px} +.x7c {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;vertical-align:baseline;background-color:#ffffff;border-color:#999999;text-align:right;padding-right:2px} +.x7d,.x7e,.x7f,.OraTableCellSelect,.xbd,.portlet-section-text,.xce,.portlet-table-text,.xcl {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;vertical-align:baseline;background-color:#e9e8e8;border-color:#999999;text-align:center} +.x7g,.x7h,.x7i,.OraTableCellSelectBand,.xbe {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;vertical-align:baseline;background-color:#ffffff;border-color:#999999;text-align:center} +.x7j {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;text-align:left;background-color:#CCCCCC;color:#669966;vertical-align:bottom} +.x7k {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;background-color:#CCCCCC;color:#669966;vertical-align:bottom;text-align:right} +.x7l {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;background-color:#CCCCCC;color:#669966;vertical-align:bottom;text-align:center} +.x7m {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;text-align:right;background-color:#CCCCCC;color:#669966} +.x7n {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;border-color:#999999;background-color:#ffffff} +.x7o,.portlet-section-footer,.xcd,.portlet-table-footer,.xck {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;text-align:left;background-color:#CCCCCC;color:#669966} +.OraTableTotal,.x7p {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;text-align:right;background-color:#CCCCCC;color:#669966} +.x7q {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;text-align:right;background-color:#CCCCCC;color:#000000;vertical-align:baseline} +.x7r {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;text-align:left;background-color:#CCCCCC;color:#000000;vertical-align:baseline} +.x7s {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;text-align:left;background-color:#CCCCCC;color:#669966;vertical-align:bottom;cursor:pointer;border-width:2px;border-style:outset} +.x7t {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;background-color:#CCCCCC;color:#669966;vertical-align:bottom;cursor:pointer;border-width:2px;border-style:outset;text-align:right} +.x7u {border-color:#999999;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;background-color:#CCCCCC;color:#669966;vertical-align:bottom;cursor:pointer;border-width:2px;border-style:outset;text-align:center} +.x7w.p_AFSelected {color:#669966;font-weight:bold} +.x7w:visited,.x7w:visited .x8b {color:#666666} +.x7w.p_AFDisabled,.xar .x9e {color:#999999} +.x7w.p_AFUnvisited,.p_OraContentFooterRule,.x9w {color:#669966} +.x7w.p_AFDisabled .x8b {color:#669999} +.OraBGColorVeryDark,.x8f {background-color:#336633} +.OraBGColorDark,.x8g,.xct,.xcu,.xcv {background-color:#669966} +.OraBGColorMedium,.x8h {background-color:#99cc99} +.OraBGColorLight,.x8i {background-color:#ccffcc} +.OraBGGrayVeryDark,.x8j {background-color:#333333} +.OraBGGrayDark,.x8k {background-color:#666666} +.OraBGGrayMedium,.x8l,.OraBGAccentVeryDark,.x8n,.OraTable,.xbc {background-color:#999999} +.OraBGGrayLight,.x8m {background-color:#cccccc} +.OraInlineInfoText,.x8u {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:8pt;font-weight:normal;color:#669966} +.OraTextInline,.x8v {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:8pt;font-weight:normal;color:#99cc99} +.OraMessageBoxErrorText,.x8w,.AFErrorText,.x8x {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#cc0000} +.OraErrorNameText,.x8y {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;color:#cc0000} +.OraInlineErrorText,.x8z {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:8pt;font-weight:normal;color:#cc0000} +.OraGlobalPageTitle,.x90 {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:13pt;color:#ffffff;font-weight:bold} +.p_OraSelected,.x9f {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;background-color:#ccffcc;text-decoration:none} +.p_OraHiddenLabel,.x9g {position:absolute;top:-999px;left:0px;font-size:0px} +.p_OraColorFieldSwatch,.x9h {border-color:#000000;border-style:solid;border-width:1px} +.p_OraColorPalette,.x9i {background-color:#000000} +.p_OraColorPaletteEmptyCell,.x9j {background-color:#ffffff} +.x9k A,.x9o A {color:#003333;text-decoration:none} +.x9l,.x9p {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:13pt;font-weight:normal;text-align:center;background-color:#ffffff;color:#669966;padding:2px} +.x9m,.x9q {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;text-align:center;color:#669966;padding:2px} +.x2b A,.x9r A {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;text-align:center;color:#003333} +.x9r {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;text-align:center;color:#999999;text-decoration:none;border-width:1px;border-style:solid;padding:2px} +.p_OraContentFooterStart,.x9x {float:left} +.p_OraContentFooterBottom,.x9z {clear:both;margin-bottom:5px} +.p_OraFooter,.xa0 {text-align:center} +.p_OraFooterBottom,.xa1 {padding-top:5px} +.p_OraHeaderNest,.xa2 {margin:5px 0px 0px 12px} +.OraHGridLocatorHeader,.xa3 {border-color:#999999;background-color:#e9e8e8} +.p_OraHideShowDisclosedSymbol,.xa6,.xas A,.p_OraTreeDisclosedSymbol A:link,.xbf A:link,.p_OraTreeDisclosedSymbol A:active,.xbf A:active,.p_OraTreeDisclosedSymbol A:visited,.xbf A:visited,.p_OraTreeRowSelected A:link,.xbj A:link,.p_OraTreeRowSelected A:active,.xbj A:active,.p_OraTreeRowSelected A:visited,.xbj A:visited {color:#669966;text-decoration:none} +.xa8 {list-style-type:none} +.p_OraQuickSearchBox,.xae {background-color:#e9e8e8;border-color:#CCCCCC;border-style:solid;padding:0pt 5pt 5pt 5pt;border-width:0px 0px 1px 1px} +.p_OraGlobalQuick,.xaf {border-color:#CCCCCC;border-style:solid;border-width:0px 0px 0px 1px} +.p_OraProcessingStatus,.xag {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;color:#669966;border-color:#99cc99;border-style:solid;border-width:1px} +.p_OraProductBrandingText,.xah {color:#669966;position:relative;font-family:Garamond, Times, Times New Roman, Serif;font-weight:normal;font-size:24pt;line-height:28.8pt;top:-4.8pt} +.p_OraProductBrandingCompactText,.xai {color:#669966;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:13pt;margin-bottom:0px;margin-top:0px;font-weight:bold} +.OraShuttleHeader,.xaj {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:9pt;color:#669966;font-weight:bold;padding:0px 0px 0px 18px} +.OraShuttleLinkText,.xak {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:9pt;font-weight:normal;color:#003333} +.p_OraSideBarMinWidth,.xal {width:140px} +.OraStyledList,.xao {list-style-position:inside;padding:0px;margin:0px} +.OraStyledList .OraStyledList,.xao .xao {padding:0pt 0pt 0pt 10pt} +.xar {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;padding:0px 8px} +.xas {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:bold;padding:0px 8px} +.xat {width:0%} +.xau {width:100%} +.OraTableBorder0001,.xav {border-style:solid;border-width:0px 0px 0px 1px} +.OraTableBorder0010,.xaw {border-style:solid;border-width:0px 0px 1px} +.OraTableBorder0011,.xax {border-style:solid;border-width:0px 0px 1px 1px} +.OraTableBorder0100,.xay {border-style:solid;border-width:0px 1px 0px 0px} +.OraTableBorder0101,.xaz {border-style:solid;border-width:0px 1px} +.OraTableBorder0110,.xb0 {border-style:solid;border-width:0px 1px 1px 0px} +.OraTableBorder0111,.xb1 {border-style:solid;border-width:0px 1px 1px} +.OraTableBorder1000,.xb2 {border-style:solid;border-width:1px 0px 0px} +.OraTableBorder1001,.xb3 {border-style:solid;border-width:1px 0px 0px 1px} +.OraTableBorder1010,.xb4 {border-style:solid;border-width:1px 0px} +.OraTableBorder1011,.xb5 {border-style:solid;border-width:1px 0px 1px 1px} +.OraTableBorder1100,.xb6 {border-style:solid;border-width:1px 1px 0px 0px} +.OraTableBorder1101,.xb7 {border-style:solid;border-width:1px 1px 0px} +.OraTableBorder1110,.xb8 {border-style:solid;border-width:1px 1px 1px 0px} +.OraTableBorder1111,.xb9 {border-style:solid;border-width:1px} +.OraTableTitle,.xbb {font-family:Arial,Helvetica,Geneva,sans-serif;font-size:13pt;font-weight:normal;background-color:#ffffff;color:#669966} +.p_OraTreeDisclosedSymbol,.xbf {color:#669966;font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;text-align:right} +.p_OraTreeNodeAdjust,.xbh {padding-bottom:2px} +.xbk {width:400px;height:300px;background-color:white} +.p_OraOnePixelLine,.xbl {background-color:#CCCCCC;font-size:0pt;overflow:hidden;height:1px;width:100%} +.p_OraDisplayBlock,.xbm {display:block} +.p_OraHideSkipNaviText,.xbn {font-size:0pt;margin-top:0px;margin-left:-999px} +.PortletHeaderLink,.xbq,.PortletSubHeaderLink,.xby {color:#ffffff;text-decoration:none} +.AFLogo,.xcx {width:103px;height:13px;background-repeat:no-repeat;background-position:center;vertical-align:middle;background-image:url(images/logo-dark.gif)} +body {margin-top:8px} +.p_OraNav2,.xcy {border-color:#99cc99} +.xcz {height:25px} diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/Messages.java b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/Messages.java index 02407b16b..65372c1a0 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/Messages.java +++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/Messages.java @@ -111,4 +111,9 @@ public class Messages extends NLS { */ public static String SelectShuttleOperation_LinkBottom; + /** + * See messages.properties. + */ + public static String TrinidadDTResourceProvider_StyleSheetNotLocated; + } diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/TrinidadTagSupportActivator.java b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/TrinidadTagSupportActivator.java index a276157f8..3f42bb639 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/TrinidadTagSupportActivator.java +++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/TrinidadTagSupportActivator.java @@ -73,4 +73,21 @@ public class TrinidadTagSupportActivator extends AbstractUIPlugin { log.log(new Status(IStatus.INFO, PLUGIN_ID, message)); } + /** + * Writes an error message to this plug-in's log. + * + * @param message Error message to be written. + * @param ex Throwable instance. + */ + public static void logError(String message, Throwable ex) { + ILog log = getDefault().getLog(); + IStatus status; + if (ex != null) { + status = new Status(IStatus.ERROR, PLUGIN_ID, message, ex); + } else { + status = new Status(IStatus.ERROR, PLUGIN_ID, message); + } + log.log(status); + } + } diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/AbstractLabelAndHelpOperation.java b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/AbstractLabelAndHelpOperation.java index 4232cc356..6aed3eb03 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/AbstractLabelAndHelpOperation.java +++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/AbstractLabelAndHelpOperation.java @@ -19,8 +19,6 @@ import org.eclipse.jst.jsf.common.dom.TagIdentifier; import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants; import org.eclipse.jst.jsf.core.internal.tld.TagIdentifierFactory; import org.eclipse.jst.pagedesigner.converter.ConvertPosition; -import org.eclipse.jst.pagedesigner.dtmanager.converter.ITransformOperation; -import org.eclipse.jst.pagedesigner.dtmanager.converter.operations.TransformOperationFactory; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.Text; @@ -37,12 +35,14 @@ import org.w3c.dom.Text; */ public abstract class AbstractLabelAndHelpOperation extends AbstractTrinidadTransformOperation { - private static final String STYLE_OUTERELEMENT = "font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;"; //$NON-NLS-1$ - private static final String STYLE_LABELTD = "font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;text-align:right;color:#000000;padding:0px 8px 0px 0px;font-weight:normal;"; //$NON-NLS-1$ - private static final String STYLE_REQUIREDSPAN = "color:#669966;font-family:Courier,sans-serif;"; //$NON-NLS-1$ - protected static final String STYLE_CONTROLELEMENT = "font-family:Arial,Helvetica,Geneva,sans-serif;font-size:10pt;font-weight:normal;color:#000000;"; //$NON-NLS-1$ - private static final String STYLE_HELPSPAN = "font-family:Arial,Helvetica,Geneva,sans-serif;font-size:8pt;font-weight:normal;color:#669966;"; //$NON-NLS-1$ - + private static final String STYLECLASS_OUTERELEMENT = "x1u p_AFRequired"; //$NON-NLS-1$ + private static final String STYLECLASS_LABELTD = "xu"; //$NON-NLS-1$ + private static final String STYLECLASS_REQUIREDSPAN = "xf"; //$NON-NLS-1$ + private static final String STYLECLASS_CONTROLTD = "AFContentCell"; //$NON-NLS-1$ + protected static final String STYLECLASS_CONTROLELEMENT = "x25"; //$NON-NLS-1$ + private static final String STYLECLASS_HELPTD = "AFComponentMessageCell"; //$NON-NLS-1$ + private static final String STYLECLASS_HELPSPAN = "x8u"; //$NON-NLS-1$ + /** * Subclasses must implement this method to append the desired DOM structure * that represents the HTML control(s) to parentElement. @@ -72,13 +72,12 @@ public abstract class AbstractLabelAndHelpOperation extends AbstractTrinidadTran } //append common attributes - ITransformOperation operation = - TransformOperationFactory.getInstance().getTransformOperation( - TransformOperationFactory.OP_CopyAttributeWithRenameOperation, - new String[]{"styleClass", "class"}); //$NON-NLS-1$ //$NON-NLS-2$ - operation.transform(srcElement, outerElement); - appendAttribute(outerElement, "style", //$NON-NLS-1$ - calculateStyle(STYLE_OUTERELEMENT, srcElement, "inlineStyle")); //$NON-NLS-1$ + appendAttribute(outerElement, "class", //$NON-NLS-1$ + calculateStyleClass(STYLECLASS_OUTERELEMENT, srcElement, "styleClass")); //$NON-NLS-1$ + String inlineStyle = calculateStyle(null, srcElement, "inlineStyle"); //$NON-NLS-1$ + if (inlineStyle != null) { + appendAttribute(outerElement, "style", inlineStyle); //$NON-NLS-1$ + } if (Boolean.valueOf(simple)) { //continue building simple variant @@ -90,14 +89,14 @@ public abstract class AbstractLabelAndHelpOperation extends AbstractTrinidadTran if (isRequired(srcElement) || getLabel(srcElement) != null) { //if either required or has label, build top-left table cell Element tdElement = appendChildElement("td", trElement); //$NON-NLS-1$ - appendAttribute(tdElement, "style", STYLE_LABELTD); //$NON-NLS-1$ + appendAttribute(tdElement, "class", STYLECLASS_LABELTD); //$NON-NLS-1$ appendAttribute(tdElement, "valign", "top"); //$NON-NLS-1$ //$NON-NLS-2$ appendAttribute(tdElement, "nowrap", ""); //$NON-NLS-1$ //$NON-NLS-2$ if (isRequired(srcElement)) { Element spanElement = appendChildElement("span", tdElement); //$NON-NLS-1$ appendAttribute(spanElement, "title", "Required"); //$NON-NLS-1$ //$NON-NLS-2$ - appendAttribute(spanElement, "style", STYLE_REQUIREDSPAN); //$NON-NLS-1$ + appendAttribute(spanElement, "class", STYLECLASS_REQUIREDSPAN); //$NON-NLS-1$ appendChildText("* ", spanElement); //$NON-NLS-1$ } @@ -109,6 +108,7 @@ public abstract class AbstractLabelAndHelpOperation extends AbstractTrinidadTran //build content table cell Element tdElement = appendChildElement("td", trElement); //$NON-NLS-1$ + appendAttribute(tdElement, "class", STYLECLASS_CONTROLTD); //$NON-NLS-1$ appendAttribute(tdElement, "valign", "top"); //$NON-NLS-1$ //$NON-NLS-2$ appendAttribute(tdElement, "nowrap", ""); //$NON-NLS-1$ //$NON-NLS-2$ appendControl(srcElement, tdElement); @@ -121,14 +121,13 @@ public abstract class AbstractLabelAndHelpOperation extends AbstractTrinidadTran tdElement = appendChildElement("td", trElement); //$NON-NLS-1$ } tdElement = appendChildElement("td", trElement); //$NON-NLS-1$ + appendAttribute(tdElement, "class", STYLECLASS_HELPTD); //$NON-NLS-1$ Element spanElement = appendChildElement("span", tdElement); //$NON-NLS-1$ - operation = - TransformOperationFactory.getInstance().getTransformOperation( - TransformOperationFactory.OP_CopyAttributeWithRenameOperation, - new String[]{"styleClass", "class"}); //$NON-NLS-1$ //$NON-NLS-2$ - operation.transform(srcElement, spanElement); - appendAttribute(spanElement, "style", //$NON-NLS-1$ - calculateStyle(STYLE_HELPSPAN, srcElement, "inlineStyle")); //$NON-NLS-1$ + appendAttribute(spanElement, "class", //$NON-NLS-1$ + calculateStyle(STYLECLASS_HELPSPAN, srcElement, "styleClass")); //$NON-NLS-1$ + if (inlineStyle != null) { + appendAttribute(spanElement, "style", inlineStyle); //$NON-NLS-1$ + } Iterator itHelpFacetChildNodes = helpFacetChildNodes.iterator(); int curPos = 0; while (itHelpFacetChildNodes.hasNext()) { @@ -171,6 +170,25 @@ public abstract class AbstractLabelAndHelpOperation extends AbstractTrinidadTran return style; } + protected String calculateStyleClass( + String baseStyleClass, Element srcElement, String styleClassAttributeName) { + String styleClass = baseStyleClass; + if (srcElement != null && styleClassAttributeName != null) { + String srcElementStyleClass = srcElement.getAttribute(styleClassAttributeName); + if (srcElementStyleClass != null && srcElementStyleClass.length() > 0) { + if (styleClass != null) { + if (!styleClass.endsWith(",")) { //$NON-NLS-1$ + styleClass += ","; //$NON-NLS-1$ + } + styleClass += srcElementStyleClass; + } else { + styleClass = srcElementStyleClass; + } + } + } + return styleClass; + } + protected boolean isRequired(Element srcElement) { boolean required = false; if (!isChildOfPanelFormLayout(srcElement)) { diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/CreateClassAttributeOperation.java b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/CreateClassAttributeOperation.java new file mode 100644 index 000000000..aff243b78 --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/CreateClassAttributeOperation.java @@ -0,0 +1,50 @@ +/** + * Copyright (c) 2009 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.apache.trinidad.tagsupport.converter.operations; + +import org.w3c.dom.Element; + +/** + * ITransformOperation implementation to handle merging of an Element's optional + * default style class with a specified "styleClass" as the current Element's + * "class" attribute. + * + * @author Ian Trimble - Oracle + */ +public class CreateClassAttributeOperation extends AbstractTrinidadTransformOperation { + + /* (non-Javadoc) + * @see org.eclipse.jst.pagedesigner.dtmanager.converter.operations.AbstractTransformOperation#transform(org.w3c.dom.Element, org.w3c.dom.Element) + */ + @Override + public Element transform(Element srcElement, Element curElement) { + String classValue = null; + if (getParameters().length > 0) { + classValue = getParameters()[0]; + } + String styleClass = srcElement.getAttribute("styleClass"); //$NON-NLS-1$ + if (styleClass != null && styleClass.length() > 0) { + if (classValue == null) { + classValue = styleClass; + } else { + if (classValue.length() > 0 && !classValue.endsWith(",")) { //$NON-NLS-1$ + classValue += ","; //$NON-NLS-1$ + } + classValue += styleClass; + } + } + if (classValue != null && curElement != null) { + curElement.setAttribute("class", classValue); //$NON-NLS-1$ + } + return curElement; + } + +} diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/InputFileOperation.java b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/InputFileOperation.java index a3ce1d328..f3e2e97e7 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/InputFileOperation.java +++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/InputFileOperation.java @@ -37,8 +37,12 @@ public class InputFileOperation extends AbstractLabelAndHelpOperation { if (value != null) { appendAttribute(controlElement, "value", value); //$NON-NLS-1$ } - appendAttribute(controlElement, "style", //$NON-NLS-1$ - calculateStyle(STYLE_CONTROLELEMENT, srcElement, "contentStyle")); //$NON-NLS-1$ + //append common attributes + appendAttribute(controlElement, "class", STYLECLASS_CONTROLELEMENT); //$NON-NLS-1$ + String contentStyle = calculateStyle(null, srcElement, "contentStyle"); //$NON-NLS-1$ + if (contentStyle != null) { + appendAttribute(controlElement, "style", contentStyle); //$NON-NLS-1$ + } } } diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/InputTextOperation.java b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/InputTextOperation.java index 585fda34d..47f7ab46f 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/InputTextOperation.java +++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/InputTextOperation.java @@ -54,8 +54,11 @@ public class InputTextOperation extends AbstractLabelAndHelpOperation { } } //append common attributes - appendAttribute(controlElement, "style", //$NON-NLS-1$ - calculateStyle(STYLE_CONTROLELEMENT, srcElement, "contentStyle")); //$NON-NLS-1$ + appendAttribute(controlElement, "class", STYLECLASS_CONTROLELEMENT); //$NON-NLS-1$ + String contentStyle = calculateStyle(null, srcElement, "contentStyle"); //$NON-NLS-1$ + if (contentStyle != null) { + appendAttribute(controlElement, "style", contentStyle); //$NON-NLS-1$ + } } private int getRows(Element srcElement) { diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/InputTextWithIconOperation.java b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/InputTextWithIconOperation.java index f412a7dae..d425db04e 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/InputTextWithIconOperation.java +++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/InputTextWithIconOperation.java @@ -54,8 +54,12 @@ public class InputTextWithIconOperation extends AbstractLabelAndHelpOperation { if (value != null) { appendAttribute(inputElement, "value", value); //$NON-NLS-1$ } - appendAttribute(inputElement, "style", //$NON-NLS-1$ - calculateStyle(STYLE_CONTROLELEMENT, srcElement, "contentStyle")); //$NON-NLS-1$ + //append common attributes + appendAttribute(inputElement, "class", STYLECLASS_CONTROLELEMENT); //$NON-NLS-1$ + String contentStyle = calculateStyle(null, srcElement, "contentStyle"); //$NON-NLS-1$ + if (contentStyle != null) { + appendAttribute(inputElement, "style", contentStyle); //$NON-NLS-1$ + } //append anchor with child image Element aElement = appendChildElement("a", parentElement); //$NON-NLS-1$ diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/SelectBooleanOperation.java b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/SelectBooleanOperation.java index 15c31d7aa..55ee08ee8 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/SelectBooleanOperation.java +++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/SelectBooleanOperation.java @@ -58,8 +58,12 @@ public class SelectBooleanOperation extends AbstractLabelAndHelpOperation { appendChildText(text, labelElement); } } - appendAttribute(spanElement, "style", //$NON-NLS-1$ - calculateStyle(STYLE_CONTROLELEMENT, srcElement, "contentStyle")); //$NON-NLS-1$ + //append common attributes + appendAttribute(inputElement, "class", STYLECLASS_CONTROLELEMENT); //$NON-NLS-1$ + String contentStyle = calculateStyle(null, srcElement, "contentStyle"); //$NON-NLS-1$ + if (contentStyle != null) { + appendAttribute(inputElement, "style", contentStyle); //$NON-NLS-1$ + } } } diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/SelectListboxChoiceOperation.java b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/SelectListboxChoiceOperation.java index b69db5fd9..1e507698a 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/SelectListboxChoiceOperation.java +++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/SelectListboxChoiceOperation.java @@ -83,9 +83,12 @@ public class SelectListboxChoiceOperation extends AbstractLabelAndHelpOperation } appendChildText(selectItem.getLabel(), optionElement); } - //TODO: append option elements - appendAttribute(selectElement, "style", //$NON-NLS-1$ - calculateStyle(STYLE_CONTROLELEMENT, srcElement, "contentStyle")); //$NON-NLS-1$ + //append common attributes + appendAttribute(selectElement, "class", STYLECLASS_CONTROLELEMENT); //$NON-NLS-1$ + String contentStyle = calculateStyle(null, srcElement, "contentStyle"); //$NON-NLS-1$ + if (contentStyle != null) { + appendAttribute(selectElement, "style", contentStyle); //$NON-NLS-1$ + } } } diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/SelectManyCheckboxOneRadioOperation.java b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/SelectManyCheckboxOneRadioOperation.java index d28008c15..a06a48cb8 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/SelectManyCheckboxOneRadioOperation.java +++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/SelectManyCheckboxOneRadioOperation.java @@ -66,8 +66,12 @@ public class SelectManyCheckboxOneRadioOperation extends AbstractLabelAndHelpOpe } } } - appendAttribute(spanElement, "style", //$NON-NLS-1$ - calculateStyle(STYLE_CONTROLELEMENT, srcElement, "contentStyle")); //$NON-NLS-1$ + //append common attributes + appendAttribute(spanElement, "class", STYLECLASS_CONTROLELEMENT); //$NON-NLS-1$ + String contentStyle = calculateStyle(null, srcElement, "contentStyle"); //$NON-NLS-1$ + if (contentStyle != null) { + appendAttribute(spanElement, "style", contentStyle); //$NON-NLS-1$ + } } } diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/dtresourceprovider/TrinidadDTResourceProvider.java b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/dtresourceprovider/TrinidadDTResourceProvider.java new file mode 100644 index 000000000..2e414c0ea --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/dtresourceprovider/TrinidadDTResourceProvider.java @@ -0,0 +1,60 @@ +/** + * Copyright (c) 2009 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: + * Ian Trimble - initial API and implementation + */ +package org.eclipse.jst.jsf.apache.trinidad.tagsupport.dtresourceprovider; + +import java.io.IOException; +import java.net.URL; +import java.text.MessageFormat; +import java.util.Collections; + +import org.eclipse.core.runtime.FileLocator; +import org.eclipse.jst.jsf.apache.trinidad.tagsupport.Messages; +import org.eclipse.jst.jsf.apache.trinidad.tagsupport.TrinidadTagSupportActivator; +import org.eclipse.jst.pagedesigner.dtresourceprovider.DefaultDTResourceProvider; +import org.eclipse.jst.pagedesigner.dtresourceprovider.DefaultDTSkin; + +public class TrinidadDTResourceProvider extends DefaultDTResourceProvider { + + private static final String ID = "http://myfaces.apache.org/trinidad"; //$NON-NLS-1$ + + private static final String SKIN_MINIMAL = "minimal"; //$NON-NLS-1$ + private static final String SKIN_SIMPLE = "simple"; //$NON-NLS-1$ + + private static final String STYLESHEET_MINIMAL = "/skinning/minimal.css"; //$NON-NLS-1$ + private static final String STYLESHEET_SIMPLE = "/skinning/simple.css"; //$NON-NLS-1$ + + /** + * Constructs an instance. + */ + public TrinidadDTResourceProvider() { + super(ID); + addSkin(createSkin(SKIN_MINIMAL, STYLESHEET_MINIMAL, true)); + addSkin(createSkin(SKIN_SIMPLE, STYLESHEET_SIMPLE, false)); + } + + private DefaultDTSkin createSkin(String name, String relativePath, boolean isDefault) { + DefaultDTSkin skin = null; + URL url = this.getClass().getResource(relativePath); + try { + url = FileLocator.toFileURL(url); + skin = new DefaultDTSkin(name, Collections.singletonList(url)); + skin.setDefault(isDefault); + } catch(IOException ioe) { + TrinidadTagSupportActivator.logError( + MessageFormat.format( + Messages.TrinidadDTResourceProvider_StyleSheetNotLocated, + relativePath), + ioe); + } + return skin; + } + +} diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/messages.properties b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/messages.properties index 41e07169f..f54e567e1 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/messages.properties +++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/messages.properties @@ -25,4 +25,5 @@ SelectShuttleOperation_LinkRemoveAll=Remove All SelectShuttleOperation_LinkTop=Top SelectShuttleOperation_LinkUp=Up SelectShuttleOperation_LinkDown=Down -SelectShuttleOperation_LinkBottom=Bottom \ No newline at end of file +SelectShuttleOperation_LinkBottom=Bottom +TrinidadDTResourceProvider_StyleSheetNotLocated=StyleSheet at relative path "{0}" could not be located \ No newline at end of file diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/META-INF/MANIFEST.MF b/jsf/plugins/org.eclipse.jst.pagedesigner/META-INF/MANIFEST.MF index 01abaf0f5..99098bcfc 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/META-INF/MANIFEST.MF +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/META-INF/MANIFEST.MF @@ -80,6 +80,7 @@ Export-Package: org.eclipse.jst.pagedesigner;x-internal:=true, org.eclipse.jst.pagedesigner.dtmanager.dtinfo, org.eclipse.jst.pagedesigner.dtmanager.dtinfo.internal.impl;x-internal:=true, org.eclipse.jst.pagedesigner.dtmanager.dtinfo.internal.util;x-internal:=true, + org.eclipse.jst.pagedesigner.dtresourceprovider, org.eclipse.jst.pagedesigner.editors;x-internal:=true, org.eclipse.jst.pagedesigner.editors.actions;x-internal:=true, org.eclipse.jst.pagedesigner.editors.pagedesigner;x-internal:=true, diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/schema/pageDesignerExtension.exsd b/jsf/plugins/org.eclipse.jst.pagedesigner/schema/pageDesignerExtension.exsd index 7096161f0..a3ddcd40a 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/schema/pageDesignerExtension.exsd +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/schema/pageDesignerExtension.exsd @@ -25,6 +25,7 @@ + @@ -191,6 +192,33 @@ The exception to this rule is that if the reference is not plugin-qualified, the + + + + Defines a Design-Time Resource Provider class for a specific ID. + + + + + + + The ID of the Design-Time Resource Provider class. This is used to map usage of each DT Resource Provider class to a specific page neing edited, and so is typically the NS URI of the tag library for which the class provides resources. + + + + + + + Class extending <code>org.eclipse.jst.pagedesigner.dtresourceprovider.AbstractDTResourceProvider</code>. + + + + + + + + + diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/IJMTConstants.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/IJMTConstants.java index 6b6acb6ed..7dbd5b84c 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/IJMTConstants.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/IJMTConstants.java @@ -58,6 +58,11 @@ public interface IJMTConstants { */ public static final String EXTENSION_POINT_CMREGISTRY = "cmRegistry"; //$NON-NLS-1$ + /** + * local name of DT resource provider extension + */ + public static final String DT_RESOURCE_PROVIDER = "dtResourceProvider"; //$NON-NLS-1$ + /** * local name of local drop handler extension */ diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/JMTResources.properties b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/JMTResources.properties index 33b4fef7b..b8262cb8c 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/JMTResources.properties +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/JMTResources.properties @@ -237,6 +237,15 @@ Warning.TransformOperationFactory.UnknownOperationID=Unknown operation ID specif Warning.TransformOperationFactory.TooFewParameters=Too few parameters specified in metadata for operation ("{0}") Warning.TransformOperationFactory.RegistryError=Unable to read "{0}" extension registry +Warning.DTResourceProviderFactory.RegistryError=Unable to read "{0}" extension registry +Warning.DTResourceProviderFactory.ClassNotFound=DT resource provider class "{0}" specified for id "{1}" could not be found + +Warning.ProviderClassMap.IllegalAccess=DT resource provider class "{0}" specified for id "{1}" could not be legally accessed +Warning.ProviderClassMap.Instantiation=DT resource provider class "{0}" specified for id "{1}" could not be instantiated +Warning.ProviderClassMap.NotIDTResourceProvider=DT resource provider class "{0}" is not correct type (must be IDTResourceProvider) + +Warning.DefaultDTSkin.FailureLoadingStyleSheet=DefaultDTSkin "{0}" failed to load a StyleSheet for the URL "{1}" + #Errors relating to ITagCreator et al. Error.TagCreatorMustBeOfType=ITagCreator instances must be of type {0}. Error.ProblemLoadingExtensionPoint=Problem loading ITagCreatorFactory extension Point diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/CSSTempUtil.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/CSSTempUtil.java index 09fee0efc..34ef43248 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/CSSTempUtil.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/CSSTempUtil.java @@ -15,12 +15,15 @@ import java.util.ArrayList; import java.util.List; import org.eclipse.jst.pagedesigner.IHTMLConstants; +import org.eclipse.jst.pagedesigner.dtresourceprovider.DTSkinManager; +import org.eclipse.jst.pagedesigner.dtresourceprovider.IDTSkin; import org.eclipse.wst.css.core.internal.provisional.adapters.IStyleSheetAdapter; import org.eclipse.wst.css.core.internal.provisional.adapters.IStyleSheetListAdapter; import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace; import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter; import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement; +import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.stylesheets.StyleSheet; @@ -72,6 +75,18 @@ public final class CSSTempUtil { parent = parent.getParentNode(); } addStyleSheet(rootEle, styleSheets); + + //add stylesheets from any active IDTSkin instances + if (element instanceof IDOMNode) { + List dtSkins = + DTSkinManager.getInstance((IDOMNode)element).getCurrentSkins(); + for (IDTSkin dtSkin: dtSkins) { + if (dtSkin != null) { + styleSheets.addAll(dtSkin.getStyleSheets()); + } + } + } + return styleSheets; } diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/layout/CSSFigure.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/layout/CSSFigure.java index a6c5289e0..580b34726 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/layout/CSSFigure.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/layout/CSSFigure.java @@ -28,6 +28,7 @@ import org.eclipse.jst.pagedesigner.css2.style.DefaultStyle; import org.eclipse.jst.pagedesigner.css2.style.ITagEditInfo; import org.eclipse.jst.pagedesigner.css2.widget.BorderUtil; import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.RGB; /** @@ -332,6 +333,14 @@ public class CSSFigure extends FlowFigure implements ICSSFigure { } g.restoreState(); + //handle background-image + Object bgImage = getCSSStyle().getStyleProperty(ICSSPropertyID.ATTR_BACKGROUND_IMAGE); + if (bgImage instanceof Image) { + g.setClip(bounds); + g.drawImage((Image)bgImage, bounds.x, bounds.y); + g.restoreState(); + } + LayoutManager layout = getLayoutManager(); if (layout instanceof ICSSPainter) { if (useLocalCoordinates()) { diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/BackgroundImageMeta.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/BackgroundImageMeta.java new file mode 100644 index 000000000..7c205c24e --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/BackgroundImageMeta.java @@ -0,0 +1,182 @@ +/******************************************************************************* + * Copyright (c) 2008 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: + * Ian Trimble - initial API and implementation + *******************************************************************************/ +package org.eclipse.jst.pagedesigner.css2.property; + +import java.net.MalformedURLException; +import java.net.URI; +import java.net.URL; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.resource.ImageRegistry; +import org.eclipse.jst.pagedesigner.IHTMLConstants; +import org.eclipse.jst.pagedesigner.PDPlugin; +import org.eclipse.jst.pagedesigner.css2.ICSSStyle; +import org.eclipse.jst.pagedesigner.utils.DOMUtil; +import org.eclipse.swt.graphics.Image; +import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; +import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; +import org.w3c.dom.Element; +import org.w3c.dom.css.CSSValue; + +/** + * Provides metadata for the "background-image" CSS property. + * + * @author Ian Trimble - Oracle + */ +public class BackgroundImageMeta extends CSSPropertyMeta { + + private static final String[] _keywords = {ICSSPropertyID.VAL_NONE}; + + /** + * Construct an instance. + */ + public BackgroundImageMeta() { + super(false, ICSSPropertyID.VAL_NONE); + } + + /* (non-Javadoc) + * @see org.eclipse.jst.pagedesigner.css2.property.CSSPropertyMeta#calculateCSSValueResult(org.w3c.dom.css.CSSValue, java.lang.String, org.eclipse.jst.pagedesigner.css2.ICSSStyle) + */ + @Override + public Object calculateCSSValueResult(CSSValue value, String propertyName, + ICSSStyle style) { + Object ret = null; + String valueText = value.getCssText(); + if (valueText != null && valueText.length() > 0) { + valueText = stripURLSyntax(valueText); + ret = getImage(valueText, null); + } + if (ret == null) { + ret = getInitialValue(propertyName, style); + } + return ret; + } + + /* (non-Javadoc) + * @see org.eclipse.jst.pagedesigner.css2.property.CSSPropertyMeta#calculateHTMLAttributeOverride(org.w3c.dom.Element, java.lang.String, java.lang.String, org.eclipse.jst.pagedesigner.css2.ICSSStyle) + */ + @Override + public Object calculateHTMLAttributeOverride(Element element, + String htmltag, String propertyName, ICSSStyle style) { + Image image = null; + if ( + element != null && + element.getNodeName() != null && + element.getNodeName().equalsIgnoreCase(IHTMLConstants.TAG_BODY)) { + if (ICSSPropertyID.ATTR_BACKGROUND_IMAGE.equalsIgnoreCase(propertyName)) { + String attrValue = DOMUtil.getAttributeIgnoreCase(element, IHTMLConstants.ATTR_BACKGROUND); + if (attrValue != null && attrValue.trim().length() > 0) { + image = getImage(attrValue.trim(), element); + } + } + } + return image; + } + + /* (non-Javadoc) + * @see org.eclipse.jst.pagedesigner.css2.property.CSSPropertyMeta#getKeywordValues() + */ + @Override + protected String[] getKeywordValues() { + return _keywords; + } + + private String stripURLSyntax(String input) { + String output = null; + if (input != null) { + //strip "url(...)" + int startPos = input.indexOf("url(") + 4; //$NON-NLS-1 + if (startPos > -1 && startPos < input.length() - 1) { + int endPos = input.indexOf(')', startPos); + if (endPos > startPos) { + String insideURL = input.substring(startPos, endPos).trim(); + //strip double-quotes + if (insideURL.startsWith("\"") && insideURL.endsWith("\"")) { //$NON-NLS-1 //$NON-NLS-2 + output = insideURL.substring(1, insideURL.length() - 1); + //strip single-quotes + } else if (insideURL.startsWith("'") && insideURL.endsWith("'")) { //$NON-NLS-1 //$NON-NLS-2 + output = insideURL.substring(1, insideURL.length() - 1); + } else { + output = insideURL; + } + } + } + } + return output != null ? output : input; + } + + /* Image instances returned from this method should not be disposed because + * they are cached in the plug-in's ImageRegistry and will be disposed of + * by the registry. + */ + private Image getImage(String imagePath, Element element) { + Image image = null; + if (imagePath != null && imagePath.length() > 0) { + ImageRegistry registry = PDPlugin.getDefault().getImageRegistry(); + image = registry.get(imagePath); + if (image == null) { + try { + URL imageURL = new URL(imagePath); + ImageDescriptor imageDescriptor = ImageDescriptor.createFromURL(imageURL); + image = imageDescriptor.createImage(); + if (image != null) { + registry.put(imagePath, image); + } + } catch(MalformedURLException mue) { + //attempt to resolve as relative to document + if (element instanceof IDOMNode) { + IDOMModel model = ((IDOMNode)element).getModel(); + if (model != null) { + String baseLocation = model.getBaseLocation(); + if (baseLocation != null && baseLocation.length() > 0) { + IWorkspaceRoot wsRoot = ResourcesPlugin.getWorkspace().getRoot(); + if (wsRoot != null) { + IResource jspRes = wsRoot.findMember(baseLocation); + if (jspRes != null) { + IContainer jspFolder = jspRes.getParent(); + if (jspFolder != null) { + IResource imageRes = jspFolder.findMember(imagePath); + if (imageRes != null) { + URI imageURI = imageRes.getLocationURI(); + if (imageURI != null) { + try { + URL imageURL = imageURI.toURL(); + ImageDescriptor imageDescriptor = ImageDescriptor.createFromURL(imageURL); + image = imageDescriptor.createImage(); + if (image != null) { + registry.put(imagePath, image); + } + } catch(MalformedURLException mue2) { + //ignore - what else can be done? + } + } + } + } + } + } + } + } + } + } + } else if (image.isDisposed()) { + //shouldn't be able to get here from there, but...just in case + registry.remove(imagePath); + image = getImage(imagePath, element); + } + } + return image; + } + +} diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/CSSMetaRegistry.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/CSSMetaRegistry.java index 670f3ddc2..e6582bf1f 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/CSSMetaRegistry.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/CSSMetaRegistry.java @@ -27,13 +27,12 @@ public class CSSMetaRegistry { } /** - * class initiallizer + * class initializer */ private void initialize() { _map.put(ICSSPropertyID.ATTR_DISPLAY, new DisplayMeta()); _map.put(ICSSPropertyID.ATTR_TEXTALIGN, new TextAlignMeta()); - _map.put(ICSSPropertyID.ATTR_HORIZONTAL_ALIGN, - new HorizontalAlignMeta()); + _map.put(ICSSPropertyID.ATTR_HORIZONTAL_ALIGN, new HorizontalAlignMeta()); _map.put(ICSSPropertyID.ATTR_TEXTDECORATION, new TextDecorationMeta()); _map.put(ICSSPropertyID.ATTR_WHITESPACE, new WhiteSpaceMeta()); _map.put(ICSSPropertyID.ATTR_WIDTH, new WidthMeta()); @@ -43,23 +42,17 @@ public class CSSMetaRegistry { _map.put(ICSSPropertyID.ATTR_BORDER_LEFT_WIDTH, new BorderWidthMeta()); _map.put(ICSSPropertyID.ATTR_BORDER_RIGHT_WIDTH, new BorderWidthMeta()); - _map - .put(ICSSPropertyID.ATTR_BORDER_BOTTOM_WIDTH, - new BorderWidthMeta()); + _map.put(ICSSPropertyID.ATTR_BORDER_BOTTOM_WIDTH, new BorderWidthMeta()); _map.put(ICSSPropertyID.ATTR_BORDER_TOP_WIDTH, new BorderWidthMeta()); _map.put(ICSSPropertyID.ATTR_BORDER_LEFT_STYLE, new BorderStyleMeta()); _map.put(ICSSPropertyID.ATTR_BORDER_RIGHT_STYLE, new BorderStyleMeta()); - _map - .put(ICSSPropertyID.ATTR_BORDER_BOTTOM_STYLE, - new BorderStyleMeta()); + _map.put(ICSSPropertyID.ATTR_BORDER_BOTTOM_STYLE, new BorderStyleMeta()); _map.put(ICSSPropertyID.ATTR_BORDER_TOP_STYLE, new BorderStyleMeta()); _map.put(ICSSPropertyID.ATTR_BORDER_LEFT_COLOR, new BorderColorMeta()); _map.put(ICSSPropertyID.ATTR_BORDER_RIGHT_COLOR, new BorderColorMeta()); - _map - .put(ICSSPropertyID.ATTR_BORDER_BOTTOM_COLOR, - new BorderColorMeta()); + _map.put(ICSSPropertyID.ATTR_BORDER_BOTTOM_COLOR, new BorderColorMeta()); _map.put(ICSSPropertyID.ATTR_BORDER_TOP_COLOR, new BorderColorMeta()); _map.put(ICSSPropertyID.ATTR_PADDING_LEFT, new PaddingWidthMeta()); @@ -77,8 +70,8 @@ public class CSSMetaRegistry { _map.put(ICSSPropertyID.ATTR_FONT_STYLE, new FontStyleMeta()); _map.put(ICSSPropertyID.ATTR_FONT_WEIGHT, new FontWeightMeta()); - _map.put(ICSSPropertyID.ATTR_BACKGROUND_COLOR, - new BackgroundColorMeta()); + _map.put(ICSSPropertyID.ATTR_BACKGROUND_COLOR, new BackgroundColorMeta()); + _map.put(ICSSPropertyID.ATTR_BACKGROUND_IMAGE, new BackgroundImageMeta()); _map.put(ICSSPropertyID.ATTR_COLOR, new ColorPropertyMeta()); _map.put(ICSSPropertyID.ATTR_TEXTCOLOR, new ColorPropertyMeta()); @@ -86,14 +79,10 @@ public class CSSMetaRegistry { _map.put(ICSSPropertyID.ATTR_BORDER_SPACING, new BorderSpacingMeta()); _map.put(ICSSPropertyID.ATTR_LIST_STYLE_TYPE, new ListStyleTypeMeta()); - _map - .put(ICSSPropertyID.ATTR_LIST_STYLE_IMAGE, - new ListStyleImageMeta()); - _map.put(ICSSPropertyID.ATTR_LIST_STYLE_POSITION, - new ListStylePositionMeta()); + _map.put(ICSSPropertyID.ATTR_LIST_STYLE_IMAGE, new ListStyleImageMeta()); + _map.put(ICSSPropertyID.ATTR_LIST_STYLE_POSITION, new ListStylePositionMeta()); _map.put(ICSSPropertyID.ATTR_COUNTER_RESET, new CounterResetMeta()); - _map.put(ICSSPropertyID.ATTR_COUNTER_INCREMENT, - new CounterIncrementMeta()); + _map.put(ICSSPropertyID.ATTR_COUNTER_INCREMENT, new CounterIncrementMeta()); _map.put(ICSSPropertyID.ATTR_TOP, new PositionOffsetMeta()); _map.put(ICSSPropertyID.ATTR_RIGHT, new PositionOffsetMeta()); diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/ICSSPropertyID.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/ICSSPropertyID.java index f12d5b595..4930fabf1 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/ICSSPropertyID.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/ICSSPropertyID.java @@ -180,6 +180,11 @@ public interface ICSSPropertyID { */ public static final String ATTR_BACKGROUND_COLOR = "background-color"; //$NON-NLS-1$ + /** + * css style attribute + */ + public static final String ATTR_BACKGROUND_IMAGE = "background-image"; //$NON-NLS-1$ + /** * css style attribute */ diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/AbstractDTResourceProvider.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/AbstractDTResourceProvider.java new file mode 100644 index 000000000..125b07787 --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/AbstractDTResourceProvider.java @@ -0,0 +1,54 @@ +/******************************************************************************* + * Copyright (c) 2009 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: + * Ian Trimble - initial API and implementation + *******************************************************************************/ +package org.eclipse.jst.pagedesigner.dtresourceprovider; + +/** + * Abstract implementation of IDTResourceProvider that is intended for client + * extension. + *
+ *

Provisional API - subject to change

+ * + * @author Ian Trimble - Oracle + */ +public abstract class AbstractDTResourceProvider implements IDTResourceProvider { + + /** + * The ID of this provider. + */ + protected String id; + + /** + * Constructs an instance. + * + * @param id The ID of this provider. + */ + public AbstractDTResourceProvider(String id) { + setId(id); + } + + /* + * (non-Javadoc) + * @see org.eclipse.jst.pagedesigner.dtresourceprovider.IDTResourceProvider#getId() + */ + public String getId() { + return id; + } + + /** + * Sets the ID of this provider. + * + * @param id The ID of this provider. + */ + public void setId(String id) { + this.id = id; + } + +} diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/AbstractDTSkin.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/AbstractDTSkin.java new file mode 100644 index 000000000..ef53c157c --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/AbstractDTSkin.java @@ -0,0 +1,88 @@ +/******************************************************************************* + * Copyright (c) 2009 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: + * Ian Trimble - initial API and implementation + *******************************************************************************/ +package org.eclipse.jst.pagedesigner.dtresourceprovider; + +/** + * Abstract implementation of IDTSkin that is intended for client extension. + *
+ *

Provisional API - subject to change

+ * + * @author Ian Trimble - Oracle + */ +public abstract class AbstractDTSkin implements IDTSkin { + + /** + * The human-readable name of the skin. + */ + protected String name; + + /** + * true if this instance is considered the default for its provider. + */ + protected boolean isDefault; + + /** + * Constructs an instance. + * + * @param name The human-readable name of the skin. + */ + public AbstractDTSkin(String name) { + this(name, false); + } + + /** + * Constructs an instance. + * + * @param name The human-readable name of the skin. + * @param isDefault true if this instance is considered the default for its + * provider. + */ + public AbstractDTSkin(String name, boolean isDefault) { + setName(name); + setDefault(isDefault); + } + + /* + * (non-Javadoc) + * @see org.eclipse.jst.pagedesigner.dtresourceprovider.IDTSkin#getName() + */ + public String getName() { + return name; + } + + /** + * Sets the human-readable name of the skin. + * + * @param name The human-readable name of the skin. + */ + public void setName(String name) { + this.name = name; + } + + /* + * (non-Javadoc) + * @see org.eclipse.jst.pagedesigner.dtresourceprovider.IDTSkin#isDefault() + */ + public boolean isDefault() { + return isDefault; + } + + /** + * Sets if this instance is considered the default for its provider. + * + * @param isDefault true if this instance is considered the default for its + * provider. + */ + public void setDefault(boolean isDefault) { + this.isDefault = isDefault; + } + +} diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/DTResourceProviderFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/DTResourceProviderFactory.java new file mode 100644 index 000000000..6dccfd102 --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/DTResourceProviderFactory.java @@ -0,0 +1,172 @@ +/******************************************************************************* + * Copyright (c) 2009 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: + * Ian Trimble - initial API and implementation + *******************************************************************************/ +package org.eclipse.jst.pagedesigner.dtresourceprovider; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IExtension; +import org.eclipse.core.runtime.IExtensionPoint; +import org.eclipse.core.runtime.InvalidRegistryObjectException; +import org.eclipse.core.runtime.Platform; +import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; +import org.eclipse.jst.jsp.core.taglib.ITaglibDescriptor; +import org.eclipse.jst.jsp.core.taglib.ITaglibRecord; +import org.eclipse.jst.jsp.core.taglib.TaglibIndex; +import org.eclipse.jst.pagedesigner.IJMTConstants; +import org.eclipse.jst.pagedesigner.PDPlugin; +import org.eclipse.jst.pagedesigner.utils.StructuredModelUtil; +import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; +import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; +import org.osgi.framework.Bundle; + +/** + * Factory responsible for producing {@link IDTResourceProvider} instances from + * org.eclipse.jst.pagedesigner.pageDesignerExtension.dtResourceProvider + * extensions. + *
+ *

Provisional API - subject to change

+ * + * @author Ian Trimble - Oracle + */ +public class DTResourceProviderFactory { + + private static DTResourceProviderFactory instance; + private ProviderClassMap providerClassMap; + private Map> providerMap; + private Logger log = PDPlugin.getLogger(DTResourceProviderFactory.class); + + private DTResourceProviderFactory() { + //singleton - no external instantiation + providerClassMap = new ProviderClassMap(); + loadExtensions(); + providerMap = new HashMap>(); + } + + /** + * Gets the singleton instance. + * + * @return The singleton instance. + */ + public static synchronized DTResourceProviderFactory getInstance() { + if (instance == null) { + instance = new DTResourceProviderFactory(); + } + return instance; + } + + /** + * Returns a List of IDTResourceProvider instances that are active for the + * specified IProject instance. + * + * @param project IProject instance for which to get the active + * IDTResourceProvider instances. + * @return A List of IDTResourceProvider instances that are active for the + * specified IProject instance. List may be empty, but will not be null. + */ + public List getActiveDTResourceProviders(IProject project) { + List activeProviders = new ArrayList(); + if (project != null) { + ITaglibRecord[] taglibRecords = TaglibIndex.getAvailableTaglibRecords(project.getFullPath()); + if (taglibRecords != null && taglibRecords.length > 0) { + for (ITaglibRecord taglibRecord: taglibRecords) { + ITaglibDescriptor taglibDescriptor = taglibRecord.getDescriptor(); + if (taglibDescriptor != null) { + String taglibURI = taglibDescriptor.getURI(); + if (taglibURI != null) { + activeProviders.addAll(getDTResourceProviders(project, taglibURI)); + } + } + } + } + } + return Collections.unmodifiableList(activeProviders); + } + + /** + * Convenience method to determine IProject instance from the specified + * IDOMNode instance and then call {@link #getActiveDTResourceProviders(IProject)}. + * + * @param domNode IDOMNode instance from which to determine IProject + * instance. + * @return A List of IDTResourceProvider instances that are active for the + * specified IDOMNode instance's IProject instance. List may be empty, but + * will not be null. + */ + public List getActiveDTResourceProviders(IDOMNode domNode) { + IDOMModel domModel = domNode.getModel(); + IProject project = null; + if (domModel != null) { + project = StructuredModelUtil.getProjectFor(domModel); + } + return getActiveDTResourceProviders(project); + } + + /** + * Returns a List of IDTResourceProvider instances for the specified + * IProject instance and id. + * + * @param project IProject instance for which a List of IDTResourceProviders + * is being requested. + * @param id Identifier for which a List of IDTResourceProvider instances is + * being requested. + * @return A List of IDTResourceProvider instances for the specified + * IProject instance and id. List may be empty, but will not be null. + */ + public synchronized List getDTResourceProviders(IProject project, String id) { + List providers = new ArrayList(); + List projectProviders = providerMap.get(project); + if (projectProviders == null) { + projectProviders = providerClassMap.createInstances(); + providerMap.put(project, projectProviders); + } + for (IDTResourceProvider curProvider: projectProviders) { + if (curProvider.getId().equals(id)) { + providers.add(curProvider); + } + } + return providers; + } + + private void loadExtensions() { + try { + final IExtensionPoint extPoint = Platform.getExtensionRegistry().getExtensionPoint(PDPlugin.getPluginId(), IJMTConstants.EXTENSION_POINT_PAGEDESIGNER); + final IExtension[] extensions = extPoint.getExtensions(); + for (int i = 0; i < extensions.length; i++) { + final IExtension extension = extensions[i]; + final IConfigurationElement[] confElements = extension.getConfigurationElements(); + for (int j = 0; j < confElements.length; j++) { + final IConfigurationElement confElement = confElements[j]; + if (confElement.getName().equals(IJMTConstants.DT_RESOURCE_PROVIDER)) { + final String id = confElement.getAttribute("id"); //$NON-NLS-1$ + final String providerClassName = confElement.getAttribute("class"); //$NON-NLS-1$ + final Bundle bundle = Platform.getBundle(confElement.getContributor().getName()); + if (bundle != null) { + try { + providerClassMap.add(id, bundle.loadClass(providerClassName)); + } catch(ClassNotFoundException cnfe) { + log.error("Warning.DTResourceProviderFactory.ClassNotFound", providerClassName, id, cnfe); //$NON-NLS-1$ + } + } + } + } + } + } catch(InvalidRegistryObjectException iroe) { + log.error("Warning.DTResourceProviderFactory.RegistryError", PDPlugin.getPluginId() + IJMTConstants.EXTENSION_POINT_PAGEDESIGNER + "." + IJMTConstants.DT_RESOURCE_PROVIDER, iroe); //$NON-NLS-1$ //$NON-NLS-2$ + } + } + +} diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/DTSkinManager.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/DTSkinManager.java new file mode 100644 index 000000000..77131cac4 --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/DTSkinManager.java @@ -0,0 +1,185 @@ +/******************************************************************************* + * Copyright (c) 2009 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: + * Ian Trimble - initial API and implementation + *******************************************************************************/ +package org.eclipse.jst.pagedesigner.dtresourceprovider; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IProject; +import org.eclipse.jst.pagedesigner.utils.StructuredModelUtil; +import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; +import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; + +/** + * Manages IDTSkin instances and provides skin-related services. + *
+ *

Provisional API - subject to change

+ * + * @author Ian Trimble - Oracle + */ +public class DTSkinManager { + + private static Map dtSkinManagerMap = + new HashMap(); + + private Map currentDTSkinMap; + + private IProject project; + + /** + * Constructs an instance (no public instantiation). + * + * @param project IProject instance for which this instance applies. + */ + private DTSkinManager(IProject project) { + this.project = project; + currentDTSkinMap = new HashMap(); + } + + /** + * Gets a DTSkinManager instance for the specified project instance. + * + * @param aProject IProject instance for which a DTSkinManager is being + * requested. + * @return A DTSkinManager instance for the specified project instance. + */ + public static synchronized DTSkinManager getInstance(IProject aProject) { + DTSkinManager dtSkinManager = dtSkinManagerMap.get(aProject); + if (dtSkinManager == null) { + dtSkinManager = new DTSkinManager(aProject); + dtSkinManagerMap.put(aProject, dtSkinManager); + } + return dtSkinManager; + } + + /** + * Gets a DTSkinManager instance for the IProject instance associated with + * the specified IDOMNode instance. + * + * @param domNode IDOMNode instance for which a DTSkinManager is being + * requested. + * @return A DTSkinManager instance for the IProject instance associated + * with the specified IDOMNode instance. + */ + public static DTSkinManager getInstance(IDOMNode domNode) { + IDOMModel domModel = domNode.getModel(); + IProject aProject = null; + if (domModel != null) { + aProject = StructuredModelUtil.getProjectFor(domModel); + } + return getInstance(aProject); + } + + /** + * Returns a List of available IDTSkin instances. + * + * @param id ID for which to get skins. + * @return A List of available IDTSkin instances. List may be empty, but + * will not be null. + */ + public List getSkins(String id) { + List dtSkins = new ArrayList(); + List dtResourceProviders = + DTResourceProviderFactory.getInstance().getActiveDTResourceProviders(project); + for (IDTResourceProvider dtResourceProvider: dtResourceProviders) { + if (dtResourceProvider.getId().equals(id)) { + dtSkins.addAll(dtResourceProvider.getSkins()); + } + } + return dtSkins; + } + + /** + * Returns the current IDTSkin instance for the specified ID. + * + * @param id The ID (typically nsURI) for which the current IDTSkin instance + * is being requested. + * @return The current IDTSkin instance for the specified ID. May return + * null if there is no current IDTSkin instance for the specified ID. + */ + public IDTSkin getCurrentSkin(String id) { + IDTSkin dtSkin = currentDTSkinMap.get(id); + if (dtSkin == null) { + dtSkin = getDefaultSkin(id); + setCurrentSkin(id, dtSkin); + } + return dtSkin; + } + + /** + * Sets the current IDTSkin instance for the specified ID. + * + * @param id The ID (typically nsURI) for which the current IDTSkin instance + * is being set. + * @param dtSkin The current IDTSkin instance to be set for the specified ID. + */ + public void setCurrentSkin(String id, IDTSkin dtSkin) { + if (id != null) { + IDTSkin existingDTSkin = currentDTSkinMap.get(id); + if (existingDTSkin != null) { + existingDTSkin.releaseResources(); + } + if (dtSkin != null) { + currentDTSkinMap.put(id, dtSkin); + } else { + currentDTSkinMap.remove(id); + } + } + } + + /** + * Returns a List of all current DTSkin instances (one per id). + * + * @return A List of all current DTSkin instances (one per id). + */ + public List getCurrentSkins() { + List currentDTSkins = new ArrayList(); + List dtResourceProviders = + DTResourceProviderFactory.getInstance().getActiveDTResourceProviders(project); + for (IDTResourceProvider dtResourceProvider: dtResourceProviders) { + IDTSkin dtSkin = getCurrentSkin(dtResourceProvider.getId()); + if (dtSkin != null && !currentDTSkins.contains(dtSkin)) { + currentDTSkins.add(dtSkin); + } + } + return Collections.unmodifiableList(currentDTSkins); + } + + /** + * Returns the default IDTSkin instance for the specified ID. + * + * @param id The ID (typically nsURI) for which the default IDTSkin instance + * is being requested. + * @return The default IDTSkin instance for the specified ID. May return + * null if there is no default IDTSkin instance for the specified ID. + */ + public IDTSkin getDefaultSkin(String id) { + IDTSkin firstDTSkin = null; + IDTSkin defaultDTSkin = null; + for (IDTSkin dtSkin: getSkins(id)) { + if (firstDTSkin == null) { + firstDTSkin = dtSkin; + } + if (dtSkin.isDefault()) { + defaultDTSkin = dtSkin; + break; + } + } + if (defaultDTSkin == null) { + defaultDTSkin = firstDTSkin; + } + return defaultDTSkin; + } + +} diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/DefaultDTResourceProvider.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/DefaultDTResourceProvider.java new file mode 100644 index 000000000..8d0a54bd3 --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/DefaultDTResourceProvider.java @@ -0,0 +1,78 @@ +/******************************************************************************* + * Copyright (c) 2009 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: + * Ian Trimble - initial API and implementation + *******************************************************************************/ +package org.eclipse.jst.pagedesigner.dtresourceprovider; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * Concrete implementation of IDTResourceProvider. + *
+ *

Provisional API - subject to change

+ * + * @author Ian Trimble - Oracle + */ +public class DefaultDTResourceProvider extends AbstractDTResourceProvider { + + /** + * List of IDTSkin instances. + */ + protected List skins; + + /** + * Constructs an instance. + * + * @param id The ID of this provider. + */ + public DefaultDTResourceProvider(String id) { + super(id); + skins = new ArrayList(); + } + + /** + * Constructs an instance. + * + * @param id The ID of this provider. + * @param skins The List of IDTSkin instances. + */ + public DefaultDTResourceProvider(String id, List skins) { + super(id); + if (skins != null) { + this.skins = skins; + } else { + this.skins = new ArrayList(); + } + } + + /* + * (non-Javadoc) + * @see org.eclipse.jst.pagedesigner.dtresourceprovider.IDTResourceProvider#getSkins() + */ + public List getSkins() { + return Collections.unmodifiableList(skins); + } + + /** + * Adds the specified IDTSkin instance to the List of IDTSkin instances. + * + * @param skin IDTSkin instance to be added. + * @return true (as per the general contract of the Collection.add method). + */ + public boolean addSkin(IDTSkin skin) { + boolean ret = false; + if (skin != null) { + ret = skins.add(skin); + } + return ret; + } + +} diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/DefaultDTSkin.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/DefaultDTSkin.java new file mode 100644 index 000000000..e6baa46e8 --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/DefaultDTSkin.java @@ -0,0 +1,135 @@ +/******************************************************************************* + * Copyright (c) 2009 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: + * Ian Trimble - initial API and implementation + *******************************************************************************/ +package org.eclipse.jst.pagedesigner.dtresourceprovider; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; +import org.eclipse.jst.jsf.common.ui.internal.utils.ResourceUtils; +import org.eclipse.jst.pagedesigner.PDPlugin; +import org.eclipse.wst.css.core.internal.provisional.document.ICSSModel; +import org.eclipse.wst.sse.core.StructuredModelManager; +import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; +import org.w3c.dom.stylesheets.StyleSheet; + +/** + * Concrete implementation of AbstractDTSkin. + * + * @author Ian Trimble - Oracle + */ +public class DefaultDTSkin extends AbstractDTSkin { + + private List styleSheetURLs; + private List styleSheets; + private List models; + private Logger log = PDPlugin.getLogger(DefaultDTSkin.class); + + /** + * Constructs an instance. + * + * @param name The human-readable name of the skin. + */ + public DefaultDTSkin(String name) { + super(name); + } + + /** + * Constructs an instance. + * + * @param name The human-readable name of the skin. + * @param isDefault true if this instance is considered the default for its + * provider. + */ + public DefaultDTSkin(String name, boolean isDefault) { + super(name, isDefault); + } + + /** + * Constructs an instance. + * + * @param name The human-readable name of the skin. + * @param styleSheetURLs The List of URL instances that provide an absolute + * reference to the stylesheets. + */ + public DefaultDTSkin(String name, List styleSheetURLs) { + this(name); + this.styleSheetURLs = styleSheetURLs; + } + + /* + * (non-Javadoc) + * @see org.eclipse.jst.pagedesigner.dtresourceprovider.IDTSkin#getStyleSheets() + */ + public List getStyleSheets() { + if (styleSheets == null) { + styleSheets = new ArrayList(); + if (styleSheetURLs != null) { + for (URL currentURL: styleSheetURLs) { + InputStream in = null; + try { + in = currentURL.openStream(); + if (in != null) { + IStructuredModel model = StructuredModelManager.getModelManager().getModelForRead(currentURL.toExternalForm(), in, null); + if (model instanceof ICSSModel) { + styleSheets.add((StyleSheet)((ICSSModel)model).getDocument()); + if (models == null) { + models = new ArrayList(); + } + models.add(model); + } else { + model.releaseFromRead(); + } + } + } catch(IOException ioe) { + log.error("Warning.DefaultDTSkin.FailureLoadingStyleSheet", name, currentURL.toExternalForm(), ioe); //$NON-NLS-1$ + } finally { + ResourceUtils.ensureClosed(in); + } + } + } + } + return Collections.unmodifiableList(styleSheets); + } + + /* + * (non-Javadoc) + * @see org.eclipse.jst.pagedesigner.dtresourceprovider.IDTSkin#getStyleSheetLocations() + */ + public List getStyleSheetLocations() { + List locations = new ArrayList(); + if (styleSheetURLs != null) { + for (URL currentURL: styleSheetURLs) { + locations.add(currentURL.toExternalForm()); + } + } + return Collections.unmodifiableList(locations); + } + + /* + * (non-Javadoc) + * @see org.eclipse.jst.pagedesigner.dtresourceprovider.IDTSkin#releaseResources() + */ + public void releaseResources() { + if (models != null) { + for (IStructuredModel model: models) { + model.releaseFromRead(); + } + models = null; + } + styleSheets = null; + } + +} diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/IDTResourceProvider.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/IDTResourceProvider.java new file mode 100644 index 000000000..6a5033fbf --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/IDTResourceProvider.java @@ -0,0 +1,41 @@ +/******************************************************************************* + * Copyright (c) 2009 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: + * Ian Trimble - initial API and implementation + *******************************************************************************/ +package org.eclipse.jst.pagedesigner.dtresourceprovider; + +import java.util.List; + +/** + * Defines the interface for a Design-Time (DT) "Resource Provider", which + * offers such services as might be expected to be provided at runtime by, for + * example, a resource servlet. + *
+ *

Provisional API - subject to change

+ * + * @author Ian Trimble - Oracle + */ +public interface IDTResourceProvider { + + /** + * Returns this instance's ID. + * + * @return This instance's ID. + */ + public String getId(); + + /** + * Returns a List of IDTSkin instances. + * + * @return A List of IDTSkin instances. May return an empty List, but should + * not return null. + */ + public List getSkins(); + +} diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/IDTSkin.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/IDTSkin.java new file mode 100644 index 000000000..04623da84 --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/IDTSkin.java @@ -0,0 +1,66 @@ +/******************************************************************************* + * Copyright (c) 2009 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: + * Ian Trimble - initial API and implementation + *******************************************************************************/ +package org.eclipse.jst.pagedesigner.dtresourceprovider; + +import java.util.List; + +import org.w3c.dom.stylesheets.StyleSheet; + +/** + * Interface that a design-time (DT) "skin" must implement. + *
+ *

Provisional API - subject to change

+ * + * @author Ian Trimble - Oracle + */ +public interface IDTSkin { + + /** + * Returns the human-readable name of the skin. + * + * @return The human-readable name of the skin. + */ + public String getName(); + + /** + * Returns a List of StyleSheet instances. + * + * @return A List of StyleSheet instances. May return an empty List, but + * should not return null. + */ + public List getStyleSheets(); + + /** + * Returns a List of Strings representing locations (typically URIs) of + * stylesheets. + * + * @return List of Strings representing locations (typically URIs) of + * stylesheets. May return an empty List, but should not return null. + */ + public List getStyleSheetLocations(); + + /** + * This will be called before an instance goes out of scope, allowing it to + * clean up any necessary resources. The instance should still be usable, + * recreating any released resources as necessary on subsequent calls to its + * methods. + */ + public void releaseResources(); + + /** + * Returns true if this skin is considered the default for its provider. + * + * @return true if this skin is considered the default for its provider, + * else false. + */ + public boolean isDefault(); + +} diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/ProviderClassMap.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/ProviderClassMap.java new file mode 100644 index 000000000..f0ba4d6df --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dtresourceprovider/ProviderClassMap.java @@ -0,0 +1,113 @@ +/******************************************************************************* + * Copyright (c) 2009 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: + * Ian Trimble - initial API and implementation + *******************************************************************************/ +package org.eclipse.jst.pagedesigner.dtresourceprovider; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; +import org.eclipse.jst.pagedesigner.PDPlugin; + +/** + * Used to Map a String ID to a List of Classes and provide convenient access. + *
+ *

Provisional API - subject to change

+ * + * @author Ian Trimble - Oracle + */ +public class ProviderClassMap { + + private Map> idToClassListMap; + private Logger log = PDPlugin.getLogger(ProviderClassMap.class); + + /** + * Creates an instance. + */ + public ProviderClassMap() { + idToClassListMap = new HashMap>(); + } + + /** + * Gets the List of Classes associated with the specified ID. + * + * @param id ID for which to get the List. + * @return The List of Classes associated with the specified ID. List may be + * empty but will not be null. + */ + public List get(String id) { + List classList = idToClassListMap.get(id); + if (classList == null) { + classList = new ArrayList(); + idToClassListMap.put(id, classList); + } + return classList; + } + + /** + * Adds the specified Class to the List associated with the specified ID. + * + * @param id ID for which to associate the specified Class. + * @param clazz Class to add to the List associated with the specified ID. + * @return true (as per the general contract of the Collection.add method). + */ + public boolean add(String id, Class clazz) { + List classList = get(id); + return classList.add(clazz); + } + + /** + * Instantiates all classes associated with the specified ID and returns a + * List of IDTResourceProvider instances. + * + * @param id ID for which to instantiate all Classes. + * @return a List of IDTResourceProvider instances associated with the + * specified ID. List may be empty but will not be null. + */ + public List createInstances(String id) { + List providers = new ArrayList(); + List classList = get(id); + for (Class providerClass: classList) { + try { + Object objProvider = providerClass.newInstance(); + if (objProvider instanceof IDTResourceProvider) { + providers.add((IDTResourceProvider)objProvider); + } else { + log.error("Warning.ProviderClassMap.NotIDTResourceProvider", providerClass.getName()); //$NON-NLS-1$ + } + } catch(IllegalAccessException iae) { + log.error("Warning.ProviderClassMap.IllegalAccess", providerClass.getName(), id, iae); //$NON-NLS-1$ + } catch(InstantiationException ie) { + log.error("Warning.ProviderClassMap.Instantiation", providerClass.getName(), id, ie); //$NON-NLS-1$ + } + } + return providers; + } + + /** + * Instantiates all registered IDTResourceProviders and returns as a List. + * + * @return List of all registered IDTResourceProviders. List may be empty + * but will not be null. + */ + public List createInstances() { + List providers = new ArrayList(); + Set idSet = idToClassListMap.keySet(); + for (String curId: idSet) { + List providersForCurId = createInstances(curId); + providers.addAll(providersForCurId); + } + return providers; + } + +} -- cgit v1.2.3