Package org.eclipse.ui.internal.intro.impl.model

Source Code of org.eclipse.ui.internal.intro.impl.model.IntroLaunchBarElement

/*******************************************************************************
* Copyright (c) 2004, 2006 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.ui.internal.intro.impl.model;

import java.util.ArrayList;

import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.SWT;
import org.eclipse.ui.IWorkbenchPreferenceConstants;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.intro.impl.util.ImageUtil;
import org.eclipse.ui.intro.config.IntroConfigurer;
import org.eclipse.ui.intro.config.IntroElement;

/**
* An Intro Config component captures launch bar information. It can have
* shortcuts and one handle. <br>
* ps: Handles are not modeled in a dedicated class, but are handled here.
*
* @since 3.1
*/
public class IntroLaunchBarElement extends AbstractIntroElement {
    private ArrayList shortcuts;

    IntroLaunchBarElement(IConfigurationElement element) {
        super(element);
    }


    /**
     * Returns LAUNCH_BAR.
     */
    public int getType() {
        return AbstractIntroElement.LAUNCH_BAR;
    }

    /**
     * Returns the desired launch bar orientation that results from the desired
     * location. Valid values are <code>SWT.VERTICAL</code> and
     * <code>SWT.HORIZONTAL</code>.
     *
     * @return
     */
    public int getOrientation() {
        int location = getLocation();
        return (location == SWT.RIGHT || location == SWT.LEFT) ? SWT.VERTICAL
                : SWT.HORIZONTAL;
    }

    /**
     * Returns the location of the launch bar in the workbench window. Valid
     * values are <code>SWT.RIGHT</code>,<code>SWT.LEFT</code> and
     * <code>SWT.BOTTOM</code>.
     *
     * @return
     */
    public int getLocation() {
        String location = getCfgElement().getAttribute("location"); //$NON-NLS-1$

        if (location != null) {
            if (location.equals("left")) //$NON-NLS-1$
                return SWT.LEFT;
            if (location.equals("bottom")) //$NON-NLS-1$
                return SWT.BOTTOM;
            if (location.equals("right")) //$NON-NLS-1$
                return SWT.RIGHT;
        }
        // default to the initial fast view location
        String fastviewLocation = PlatformUI.getPreferenceStore().getString(
            IWorkbenchPreferenceConstants.INITIAL_FAST_VIEW_BAR_LOCATION);
        if (fastviewLocation.equals(IWorkbenchPreferenceConstants.LEFT))
            return SWT.LEFT;
        if (fastviewLocation.equals(IWorkbenchPreferenceConstants.RIGHT))
            return SWT.RIGHT;
        if (fastviewLocation.equals(IWorkbenchPreferenceConstants.BOTTOM))
            return SWT.BOTTOM;
        // just in case
        return SWT.RIGHT;
    }

    public String getBackground() {
        return getCfgElement().getAttribute("bg"); //$NON-NLS-1$
    }

    public String getForeground() {
        return getCfgElement().getAttribute("fg"); //$NON-NLS-1$
    }

    public boolean getCreateHandle() {
        return getHandleElement() != null;
    }

    public boolean getClose() {
        IConfigurationElement handle = getHandleElement();
        if (handle != null) {
            String value = handle.getAttribute("close"); //$NON-NLS-1$
            return value == null || value.equals("true"); //$NON-NLS-1$
        }
        return true;
    }

    /**
     * Returns the relative icon path of the handle image.
     *
     * @return
     */
    private String getHandleImage() {
        IConfigurationElement handle = getHandleElement();
        if (handle == null)
            return null;
        return handle.getAttribute("image"); //$NON-NLS-1$
    }

    /**
     * Returns the icon image of the handle, or <code>null</code> if not
     * defined or found.
     *
     * @return
     */
    public ImageDescriptor getHandleImageDescriptor() {
        String path = getHandleImage();
        if (path == null)
            return null;
        return ImageUtil.createImageDescriptor(getBundle(), path);
    }

    private IConfigurationElement getHandleElement() {
        IConfigurationElement[] children = getCfgElement().getChildren(
            "handle"); //$NON-NLS-1$
        if (children.length > 0)
            return children[0];
        return null;
    }

    /**
     * Returns an array of shorcut elements.
     *
     * @return
     */
    public IntroLaunchBarShortcut[] getShortcuts() {
        if (shortcuts == null) {
            createShortcuts();
        }
        return (IntroLaunchBarShortcut[]) shortcuts
            .toArray(new IntroLaunchBarShortcut[shortcuts.size()]);
    }

    /**
     * Creates an array of shortcut elements
     *
     */
    private void createShortcuts() {
        shortcuts = new ArrayList();
        IntroModelRoot model = getModelRoot();
        IntroConfigurer configurer = model!=null?model.getConfigurer():null;
       
        String cvalue = getCfgElement().getAttribute("computed"); //$NON-NLS-1$
        boolean computed = cvalue!=null && cvalue.equalsIgnoreCase("true"); //$NON-NLS-1$
       
        if (computed && configurer!=null) {
          IntroElement [] children = configurer.getLaunchBarShortcuts();
          for (int i=0; i<children.length; i++) {
            IntroLaunchBarShortcut shortcut = new IntroLaunchBarShortcut(getCfgElement(), children[i]);
            shortcuts.add(shortcut);
          }
        }
        else {
            IConfigurationElement[] children = getCfgElement().getChildren(
                    IntroLaunchBarShortcut.TAG_SHORTCUT);
          for (int i = 0; i < children.length; i++) {
            IConfigurationElement child = children[i];
            IntroLaunchBarShortcut shortcut = new IntroLaunchBarShortcut(child);
            shortcuts.add(shortcut);
          }
        }
    }
}
TOP

Related Classes of org.eclipse.ui.internal.intro.impl.model.IntroLaunchBarElement

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.