001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package org.netbeans.spi.palette;
043:
044: import javax.swing.Action;
045: import org.openide.util.Lookup;
046:
047: /**
048: * <p>An interface implemented by palette clients to provide custom actions
049: * for popup menus and actions for import of new items.</p>
050: *
051: * @author S. Aubrecht.
052: */
053: public abstract class PaletteActions {
054:
055: /**
056: * @return An array of action that will be used to construct buttons for import
057: * of new palette item in palette manager window.
058: *
059: */
060: public abstract Action[] getImportActions();
061:
062: /**
063: * @return Custom actions to be added to the top of palette's default popup menu.
064: */
065: public abstract Action[] getCustomPaletteActions();
066:
067: /**
068: * @param category Lookup representing palette's category.
069: *
070: * @return Custom actions to be added to the top of default popup menu for the given category.
071: */
072: public abstract Action[] getCustomCategoryActions(Lookup category);
073:
074: /**
075: * @param item Lookup representing palette's item.
076: *
077: * @return Custom actions to be added to the top of the default popup menu for the given palette item.
078: */
079: public abstract Action[] getCustomItemActions(Lookup item);
080:
081: /**
082: * @param item Lookup representing palette's item.
083: *
084: * @return An action to be invoked when user double-clicks the item in the
085: * palette (e.g. insert item at editor's default location).
086: * Return null to disable preferred action for this item.
087: */
088: public abstract Action getPreferredAction(Lookup item);
089:
090: /**
091: * An action that will be invoked as part of the palette refresh logic,
092: * for example when user chooses "Refresh" in palette's popup menu. Can be null.
093: * The action properties (label, icon) are not displayed to the user, the Palette module
094: * will provide its own.
095: * @return Custom refresh action or null.
096: * @since 1.9
097: */
098: public Action getRefreshAction() {
099: return null;
100: }
101:
102: /**
103: * An action that resets the palette content to its default state. The action can be
104: * invoked by the user from palette's popup menu for from the Palette Manager window.
105: * The action properties (label, icon) are not displayed to the user, the Palette module
106: * provides its own.
107: * @return Custom reset action or null to use the default one that removes all user's
108: * modifications to the XML layer files.
109: * @since 1.11
110: */
111: public Action getResetAction() {
112: return null;
113: }
114: }
|