001: /*******************************************************************************
002: * Copyright (c) 2000, 2006 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.ui;
011:
012: import org.eclipse.jface.action.ICoolBarManager;
013: import org.eclipse.jface.action.SubCoolBarManager;
014: import org.eclipse.ui.services.IServiceLocator;
015:
016: /**
017: * A implementation of the extended <code>IActionBars2</code> interface. This
018: * sub class provides a sub cool bar manager for plugins to contribute multiple
019: * cool items.
020: *
021: * @since 3.0
022: */
023: public class SubActionBars2 extends SubActionBars implements
024: IActionBars2 {
025: private SubCoolBarManager coolBarMgr = null;
026:
027: /**
028: * Constucts a sub action bars object using an IActionBars2 parent.
029: *
030: * @param parent
031: * the action bars to virtualize; must not be <code>null</code>.
032: */
033: public SubActionBars2(final IActionBars2 parent) {
034: this (parent, parent.getServiceLocator());
035: }
036:
037: /**
038: * Constucts a sub action bars object using an IActionBars2 parent.
039: *
040: * @param parent
041: * the action bars to virtualize; must not be <code>null</code>.
042: * @param serviceLocator
043: * The service locator for this action bar; must not be
044: * <code>null</code>.
045: *
046: * @since 3.2
047: */
048: public SubActionBars2(final IActionBars2 parent,
049: final IServiceLocator serviceLocator) {
050: super (parent, serviceLocator);
051: }
052:
053: /**
054: * Returns the casted parent of the sub action bars. This method can return
055: * an IActionBars2 since it can only accept IActionBars2 in the constructor.
056: *
057: * @return the casted parent.
058: */
059: protected IActionBars2 getCastedParent() {
060: return (IActionBars2) getParent();
061: }
062:
063: /**
064: * Returns a new sub coolbar manager.
065: *
066: * @param parent
067: * the parent coolbar manager
068: * @return the cool bar manager
069: */
070: protected SubCoolBarManager createSubCoolBarManager(
071: ICoolBarManager parent) {
072: return new SubCoolBarManager(parent);
073: }
074:
075: /*
076: * (non-Javadoc)
077: *
078: * @see org.eclipse.ui.IActionBars2#getCoolBarManager()
079: */
080: public ICoolBarManager getCoolBarManager() {
081: if (coolBarMgr == null) {
082: coolBarMgr = createSubCoolBarManager(getCastedParent()
083: .getCoolBarManager());
084: coolBarMgr.setVisible(getActive());
085: }
086: return coolBarMgr;
087: }
088:
089: /*
090: * (non-Javadoc)
091: *
092: * @see org.eclipse.ui.SubActionBars#setActive(boolean)
093: */
094: protected void setActive(boolean value) {
095: super .setActive(value);
096: if (coolBarMgr != null) {
097: coolBarMgr.setVisible(value);
098: }
099: }
100:
101: /*
102: * (non-Javadoc)
103: *
104: * @see org.eclipse.ui.SubActionBars#dispose()
105: */
106: public void dispose() {
107: super.dispose();
108: if (coolBarMgr != null) {
109: coolBarMgr.removeAll();
110: }
111: }
112: }
|