| /******************************************************************************* |
| * Copyright (c) 2006 Sybase, Inc. and others. |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Sybase, Inc. - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jst.pagedesigner.properties.internal; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import org.eclipse.core.runtime.IConfigurationElement; |
| import org.eclipse.core.runtime.IExtensionPoint; |
| import org.eclipse.core.runtime.Platform; |
| import org.eclipse.jst.pagedesigner.editors.HTMLEditor; |
| import org.eclipse.ui.views.properties.tabbed.ISectionDescriptor; |
| import org.eclipse.ui.views.properties.tabbed.ISectionDescriptorProvider; |
| |
| /** |
| * Provides sections registered for the Web Page Editor whose contributor ID is, |
| * "org.eclipse.jst.pagedesigner.tabPropertyContributor" using the |
| * org.eclipse.ui.views.properties.tabbed.propertyTabs extension-points. |
| * |
| * The sections declared using the org.eclipse.ui.views.properties.tabbed.propertySections extension-point |
| * for the WPE will only be displayed by the Quick Edit tab is the selected tag has metadata to choose |
| * the section. TypeMappers/filters, etc. are ignored by this sectionDescriptorProvider. |
| * |
| * See jsf_html.xml in the org.eclipse.jst.jsf.standard.tagsupport plugin for examples on how to use. |
| */ |
| public class WPETabPropertySectionDescriptorProvider implements |
| ISectionDescriptorProvider { |
| |
| private static final String EXTPT_SECTIONS = "propertySections"; //$NON-NLS-1$ |
| private static final String ELEMENT_SECTION = "propertySection"; //$NON-NLS-1$ |
| private ISectionDescriptor[] _descriptors = null; |
| |
| /** |
| * Constructor |
| */ |
| public WPETabPropertySectionDescriptorProvider() { |
| super(); |
| } |
| |
| public ISectionDescriptor[] getSectionDescriptors() { |
| if (_descriptors == null) { |
| List result = new ArrayList(); |
| List contributedSections = readSectionDescriptors(); |
| result.addAll(contributedSections); |
| |
| // if (1 == 0){ //disabled for now... do we want to allow other mechanisms to add sections? |
| // List providers = readAdditionalSectionDescriptorProviders(); |
| // for (int i = 0, size = providers.size(); i < size; i++) { |
| // try { |
| // ISectionDescriptorProvider provider = (ISectionDescriptorProvider) providers |
| // .get(i); |
| // ISectionDescriptor[] sections = provider |
| // .getSectionDescriptors(); |
| // if (sections != null) { |
| // result.addAll(Arrays.asList(sections)); |
| // } |
| // } catch (Exception ex) { |
| // // ignore |
| // ex.printStackTrace(); |
| // } |
| // } |
| // } |
| _descriptors = new ISectionDescriptor[result.size()]; |
| result.toArray(_descriptors); |
| } |
| return _descriptors; |
| } |
| |
| /** |
| * @return registered section descriptors for the WPE QuickEdit tab |
| */ |
| protected List<QuickEditTabSectionDescriptor> readSectionDescriptors() { |
| List result = new ArrayList(); |
| |
| IConfigurationElement[] extensions = getConfigurationElements(EXTPT_SECTIONS); |
| for (int i = 0; i < extensions.length; i++) { |
| IConfigurationElement extension = extensions[i]; |
| if (extension.getAttribute("contributorId").equals(HTMLEditor.TABBED_PROPERTIES_CONTRIBUTOR_ID)){ //$NON-NLS-1$ |
| IConfigurationElement[] sections = extension |
| .getChildren(ELEMENT_SECTION); |
| for (int j = 0; j < sections.length; j++) { |
| IConfigurationElement section = sections[j]; |
| ISectionDescriptor descriptor = new QuickEditTabSectionDescriptor( |
| section, null);//ITypeMapper set to null |
| result.add(descriptor); |
| } |
| } |
| } |
| return result; |
| } |
| |
| /** |
| * @param extensionPointId |
| * @return IConfigurationElement[] |
| */ |
| private static IConfigurationElement[] getConfigurationElements( |
| String extensionPointId) { |
| IExtensionPoint extensionPoint = Platform.getExtensionRegistry() |
| .getExtensionPoint("org.eclipse.ui.views.properties.tabbed", extensionPointId); //$NON-NLS-1$ |
| if (extensionPoint == null) { |
| return null; |
| } |
| return extensionPoint.getConfigurationElements(); |
| } |
| |
| /** |
| * @param name of section |
| * @return {@link QuickEditTabSectionDescriptor} or null if not located |
| */ |
| public QuickEditTabSectionDescriptor getNamedSectionDescriptor(String name) { |
| for (int i=0;i<getSectionDescriptors().length;i++){ |
| QuickEditTabSectionDescriptor sd = (QuickEditTabSectionDescriptor)getSectionDescriptors()[i]; |
| if (name.equals(sd.getId())) |
| return sd; |
| } |
| return null; |
| } |
| } |