org.eclipse.help.ui.internal.views.ScopePreferenceManager.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.help.ui.internal.views.ScopePreferenceManager.java

Source

/*******************************************************************************
 * Copyright (c) 2000, 2007 IBM 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:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.help.ui.internal.views;

import org.eclipse.core.runtime.*;
import org.eclipse.help.ui.internal.HelpUIPlugin;
import org.eclipse.help.ui.internal.IHelpUIConstants;
import org.eclipse.jface.preference.*;

public class ScopePreferenceManager extends PreferenceManager implements IHelpUIConstants {
    private ScopeSet set;

    class SubpagePreferenceNode extends PreferenceNode {
        private IConfigurationElement config;

        public SubpagePreferenceNode(String id, String label, IConfigurationElement config) {
            super(id, label, null, null);
            this.config = config;
        }

        public void createPage() {
            try {
                Object obj = config.createExecutableExtension(IHelpUIConstants.ATT_CLASS);
                IPreferencePage page = (IPreferencePage) obj;
                setPage(page);
                page.setTitle(getLabelText());
            } catch (CoreException e) {
                HelpUIPlugin.logError("Unable to create executable extension", e); //$NON-NLS-1$
            }
        }
    }

    class EnginePreferenceNode extends PreferenceNode {
        private EngineDescriptor desc;

        public EnginePreferenceNode(EngineDescriptor desc) {
            super(desc.getId(), desc.getLabel(), desc.getImageDescriptor(), null);
            this.desc = desc;
        }

        public EngineDescriptor getDescriptor() {
            return desc;
        }

        public void createPage() {
            IPreferencePage page = desc.createRootPage(set.getName());
            setPage(page);
            page.setTitle(desc.getLabel());
            page.setImageDescriptor(desc.getImageDescriptor());
            page.setDescription(desc.getDescription());
        }
    }

    /**
     * 
     */
    public ScopePreferenceManager(EngineDescriptorManager descManager, ScopeSet set) {
        this.set = set;
        load(descManager.getDescriptors());
    }

    private void load(EngineDescriptor[] descriptors) {
        for (int i = 0; i < descriptors.length; i++) {
            EngineDescriptor desc = descriptors[i];
            addNode(desc);
            IConfigurationElement[] pages = desc.getPages();
            for (int j = 0; j < pages.length; j++) {
                String category = pages[i].getAttribute(ATT_CATEGORY);
                addNode(category, pages[i].getAttribute(ATT_ID), pages[i].getAttribute(ATT_LABEL), pages[i]);
            }
        }
    }

    public IPreferenceNode addNode(EngineDescriptor desc) {
        PreferenceNode node = new EnginePreferenceNode(desc);
        addToRoot(node);
        return node;
    }

    private IPreferenceNode addNode(String category, String id, String name, IConfigurationElement config) {
        IPreferenceNode parent = find(category);
        PreferenceNode node = new SubpagePreferenceNode(id, name, config);
        if (parent != null)
            parent.add(node);
        return node;
    }
}