alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

/*
 *                 Sun Public License Notice
 *
 * The contents of this file are subject to the Sun Public License
 * Version 1.0 (the "License"). You may not use this file except in
 * compliance with the License. A copy of the License is available at
 * http://www.sun.com/
 *
 * The Original Code is NetBeans. The Initial Developer of the Original
 * Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun
 * Microsystems, Inc. All Rights Reserved.
 */

package org.netbeans.modules.cvsclient.actions;

import org.netbeans.modules.vcscore.actions.*;
import org.openide.filesystems.*;
import org.openide.nodes.*;
import org.netbeans.modules.cvsclient.*;
import org.openide.util.HelpCtx;



/**
 * A utility class to remove action's implementation details from 
 * the ActionSupporter
 * @author  Milos Kleint
 */
public class CallBackCommandAction extends GeneralCommandAction 
                                   implements ClusterItemVisualizer {

    private transient boolean ctrlSwitched;
 
    
    private static final String COMMAND_ACTION_DEF = "CommandActionDefinition";
    /**
     * Is called from XML layer when creating the right action for the command.
     * Expects the fileobject to have an attribute COMMAND_ACTION_DEF, with the string
     * that holds classname.
     */
   public static ClusterItemVisualizer createCommandActionInstance(FileObject inst) 
     throws java.io.IOException {
        String className = (String)inst.getAttribute(COMMAND_ACTION_DEF);
        if (className != null) {
            Class actionClass = null;
            try {
                actionClass = Class.forName(className);
            } catch (ClassNotFoundException exc) {
                return null;
            }
            return (ClusterItemVisualizer)org.openide.util.SharedClassObject.findObject(actionClass, true);
        }
        return null;
    }
    
    
    
    /** Creates new UpdateCommandAction */
    public CallBackCommandAction() {
    }

    public HelpCtx getHelpCtx() {
        HelpCtx retValue;
        
        retValue = super.getHelpCtx();
        return retValue;
    }

    /**
     * Is called from the ActionSupporter when it starts iterating the
     * collected filesystems and fileobjects..
     * Can be used for initial settings, eg. to create a common displayer for everyone.
     * 
     */
    public void initCallBack(JavaCvsActionSupporter supporter) {
        // does nothing by default..
    }
    
    /**
     * method is called from the ActionSupporter and executes the action on the fileobjects..
     *
     */
    public void performCallBack(NbJavaCvsFileSystem fs, FileObject[] fos) {
    }
    
    /**
     * Is called from the ActionSupporter when it stops iterating the
     * collected filesystems and fileobjects..
     * Can be used for clean up, etc.
     * 
     */
    public void finishCallBack() {
        // does nothing by default..
    }
    
    /**
     * can be called on the action to find out quickly if the action is enabled or
     * not. Is to be used in areas where a lot of actions are questioned for "enabled" state,
     * to avoid multiple time computing of same things..
     * @param fos an array of already converted fileobjects.
     * @param isDir if true, at least one of the fileobjects is a directory.
     */
    boolean isEnabledShortcut(FileObject[] fos, boolean isDir, boolean isRoot, boolean isFile) {
        return true;
    }
    
    
    /**
     * when included in the popup menu, this property denotes if the action has 
     * switchable customizer. if true and with the right user Interface mode,
     * such action will be appended the 3 dots if CTRL is pressed.
     * 
     */
    public boolean isSwitchable() {
        return false;
    }
    
    public void setSwitched(boolean CTRLSwitch) {
        ctrlSwitched = CTRLSwitch;
    }
    
    boolean isSwitched() {
        return ctrlSwitched;
    }
    
    public boolean isItemEnabled(ClusteringAction action) {
        return true;
    }
    
    public void performAction(Node[] nodes, ClusteringAction action) {
//        setSwitched(action.isSwitched());
        putValue(GeneralCommandAction.GROUP_NAME_PROP, 
                          action.getValue(GeneralCommandAction.GROUP_NAME_PROP));
        putValue(GeneralCommandAction.GROUP_DESCRIPTION_PROP, 
                          action.getValue(GeneralCommandAction.GROUP_DESCRIPTION_PROP));
        
        performAction();
    }
    
}
... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.