⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subcontributionmanager.java

📁 jfa2ce 源码帮助开发人员更好的理解运用
💻 JAVA
字号:
/******************************************************************************* * Copyright (c) 2000, 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.jface.action;import java.util.Enumeration;import java.util.HashMap;import java.util.Iterator;import java.util.Map;/** * A <code>SubContributionManager</code> is used to define a set of contribution * items within a parent manager.  Once defined, the visibility of the entire set can  * be changed as a unit. */public abstract class SubContributionManager implements IContributionManager {    /**     * The parent contribution manager.     */    private IContributionManager parentMgr;    /**     * Maps each item in the manager to a wrapper.  The wrapper is used to      * control the visibility of each item.     */    private Map mapItemToWrapper = new HashMap();    /**     * The visibility of the manager,     */    private boolean visible = false;    /**     * Constructs a new <code>SubContributionManager</code>     *     * @param mgr the parent contribution manager.  All contributions made to the     *      <code>SubContributionManager</code> are forwarded and appear in the     *      parent manager.     */    public SubContributionManager(IContributionManager mgr) {        super();        parentMgr = mgr;    }    /* (non-Javadoc)     * Method declared on IContributionManager.     */    public void add(IAction action) {        add(new ActionContributionItem(action));    }    /* (non-Javadoc)     * Method declared on IContributionManager.     */    public void add(IContributionItem item) {        item.setParent(this);        SubContributionItem wrap = wrap(item);        wrap.setVisible(visible);        parentMgr.add(wrap);        itemAdded(item, wrap);    }    /* (non-Javadoc)     * Method declared on IContributionManager.     */    public void appendToGroup(String groupName, IAction action) {        appendToGroup(groupName, new ActionContributionItem(action));    }    /* (non-Javadoc)     * Method declared on IContributionManager.     */    public void appendToGroup(String groupName, IContributionItem item) {        item.setParent(this);        SubContributionItem wrap = wrap(item);        wrap.setVisible(visible);        parentMgr.appendToGroup(groupName, wrap);        itemAdded(item, wrap);    }    /**     * Disposes this sub contribution manager, removing all its items     * and cleaning up any other resources allocated by it.     * This must leave no trace of this sub contribution manager     * in the parent manager.  Subclasses may extend.     *      * @since 3.0     */    public void disposeManager() {        Iterator it = mapItemToWrapper.values().iterator();        // Dispose items in addition to removing them.        // See bugs 64024 and 73715 for details.	    // Do not use getItems() here as subclasses can override that in bad ways.        while (it.hasNext()) {            IContributionItem item = (IContributionItem) it.next();            item.dispose();        }        removeAll();    }    /* (non-Javadoc)     * Method declared on IContributionManager.     *     * Returns the item passed to us, not the wrapper.     */    public IContributionItem find(String id) {        IContributionItem item = parentMgr.find(id);        // Return the item passed to us, not the wrapper.        item = unwrap(item);        return item;    }    /* (non-Javadoc)     * Method declared on IContributionManager.     *     * Returns the items passed to us, not the wrappers.     */    public IContributionItem[] getItems() {        IContributionItem[] result = new IContributionItem[mapItemToWrapper                .size()];        mapItemToWrapper.keySet().toArray(result);        return result;    }    /**     * Returns the parent manager.     *     * @return the parent manager     */    public IContributionManager getParent() {        return parentMgr;    }    /* (non-Javadoc)     * Method declared on IContributionManager.     */    public IContributionManagerOverrides getOverrides() {        return parentMgr.getOverrides();    }    /* (non-Javadoc)     * Method declared on IContributionManager.     */    public void insertAfter(String id, IAction action) {        insertAfter(id, new ActionContributionItem(action));    }    /* (non-Javadoc)     * Method declared on IContributionManager.     */    public void insertAfter(String id, IContributionItem item) {        item.setParent(this);        SubContributionItem wrap = wrap(item);        wrap.setVisible(visible);        parentMgr.insertAfter(id, wrap);        itemAdded(item, wrap);    }    /* (non-Javadoc)     * Method declared on IContributionManager.     */    public void insertBefore(String id, IAction action) {        insertBefore(id, new ActionContributionItem(action));    }    /* (non-Javadoc)     * Method declared on IContributionManager.     */    public void insertBefore(String id, IContributionItem item) {        item.setParent(this);        SubContributionItem wrap = wrap(item);        wrap.setVisible(visible);        parentMgr.insertBefore(id, wrap);        itemAdded(item, wrap);    }    /* (non-Javadoc)     * Method declared on IContributionManager.     */    public boolean isDirty() {        return parentMgr.isDirty();    }    /* (non-Javadoc)     * Method declared on IContributionManager.     */    public boolean isEmpty() {        return parentMgr.isEmpty();    }    /**     * Returns whether the contribution list is visible.     * If the visibility is <code>true</code> then each item within the manager      * appears within the parent manager.  Otherwise, the items are not visible.     *     * @return <code>true</code> if the manager is visible     */    public boolean isVisible() {        return visible;    }    /**     * Notifies that an item has been added.     * <p>     * Subclasses are not expected to override this method.     * </p>     *     * @param item the item contributed by the client     * @param wrap the item contributed to the parent manager as a proxy for the item     *      contributed by the client     */    protected void itemAdded(IContributionItem item, SubContributionItem wrap) {        mapItemToWrapper.put(item, wrap);    }    /**     * Notifies that an item has been removed.     * <p>     * Subclasses are not expected to override this method.     * </p>     *     * @param item the item contributed by the client     */    protected void itemRemoved(IContributionItem item) {        mapItemToWrapper.remove(item);    }    /**     * @deprecated Use getItems(String value) instead.     */    public Enumeration items() {        final Iterator i = mapItemToWrapper.values().iterator();        return new Enumeration() {            public boolean hasMoreElements() {                return i.hasNext();            }            public Object nextElement() {                return i.next();            }        };    }    /* (non-Javadoc)     * Method declared on IContributionManager.     */    public void markDirty() {        parentMgr.markDirty();    }    /* (non-Javadoc)     * Method declared on IContributionManager.     */    public void prependToGroup(String groupName, IAction action) {        prependToGroup(groupName, new ActionContributionItem(action));    }    /* (non-Javadoc)     * Method declared on IContributionManager.     */    public void prependToGroup(String groupName, IContributionItem item) {        item.setParent(this);        SubContributionItem wrap = wrap(item);        wrap.setVisible(visible);        parentMgr.prependToGroup(groupName, wrap);        itemAdded(item, wrap);    }    /* (non-Javadoc)     * Method declared on IContributionManager.     */    public IContributionItem remove(String id) {        IContributionItem result = parentMgr.remove(id);        if (result != null) {			itemRemoved(result);		}        return result;    }    /* (non-Javadoc)     * Method declared on IContributionManager.     */    public IContributionItem remove(IContributionItem item) {        SubContributionItem wrap = (SubContributionItem) mapItemToWrapper                .get(item);        if (wrap == null) {			return null;		}        IContributionItem result = parentMgr.remove(wrap);        if (result == null) {			return null;		}        itemRemoved(item);        return item;    }    /* (non-Javadoc)     * Method declared on IContributionManager.     */    public void removeAll() {        Iterator it = mapItemToWrapper.values().iterator();        while (it.hasNext()) {            IContributionItem item = (IContributionItem) it.next();            parentMgr.remove(item);        }        mapItemToWrapper.clear();    }    /**     * Sets the visibility of the manager.  If the visibility is <code>true</code>     * then each item within the manager appears within the parent manager.     * Otherwise, the items are not visible.     *     * @param visible the new visibility     */    public void setVisible(boolean visible) {        this.visible = visible;        if (mapItemToWrapper.size() > 0) {            Iterator it = mapItemToWrapper.values().iterator();            while (it.hasNext()) {                IContributionItem item = (IContributionItem) it.next();                item.setVisible(visible);            }            parentMgr.markDirty();        }    }    /**     * Wraps a contribution item in a sub contribution item, and returns the new wrapper.     */    protected SubContributionItem wrap(IContributionItem item) {        return new SubContributionItem(item);    }    /**     * Unwraps a nested contribution item. If the contribution item is an     * instance of <code>SubContributionItem</code>, then its inner item is     * returned. Otherwise, the item itself is returned.     *      * @param item     *            The item to unwrap; may be <code>null</code>.     * @return The inner item of <code>item</code>, if <code>item</code> is     *         a <code>SubContributionItem</code>;<code>item</code>     *         otherwise.     */    protected IContributionItem unwrap(IContributionItem item) {        if (item instanceof SubContributionItem) {            return ((SubContributionItem) item).getInnerItem();        }        return item;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -