net.rim.ejde.internal.ui.views.BasicAction.java Source code

Java tutorial

Introduction

Here is the source code for net.rim.ejde.internal.ui.views.BasicAction.java

Source

/*
* Copyright (c) 2010-2012 Research In Motion Limited. All rights reserved.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License, Version 1.0,
* which accompanies this distribution and is available at
*
* http://www.eclipse.org/legal/epl-v10.html
*
*/
package net.rim.ejde.internal.ui.views;

import net.rim.ejde.internal.core.IConstants;

import org.apache.log4j.Logger;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Image;

/**
 * This is the basic action class for all the actions used in debug views(profiler, memory states, objects etc.).
 */
public class BasicAction extends Action implements IConstants {
    private static final Logger _log = Logger.getLogger(BasicAction.class);
    BasicDebugView _view;
    Image _image;
    int _actionCode;

    /**
     * Constructs a new BasicAction instance.
     *
     * @param view
     *            the view this action belongs to.
     * @param text
     *            the string used as the text for the action, or <code>null</code> if there is no text
     * @param actionCode
     *            the code which indicates the type of the action (e.g. refresh action)
     * @param hint
     *            the hint string for the action.
     */
    public BasicAction(BasicDebugView view, String text, int actionCode, String hint) {
        this(view, text, actionCode, hint, AS_UNSPECIFIED);
    }

    /**
     * Constructs a new BasicAction instance.
     *
     * @param view
     *            the view this action belongs to.
     * @param text
     *            the string used as the text for the action, or <code>null</code> if there is no text
     * @param actionCode
     *            the code which indicates the type of the action (e.g. refresh action)
     * @param hint
     *            the hint string for the action.
     * @param style
     *            of the action.
     */
    public BasicAction(BasicDebugView view, String text, int actionCode, String hint, int style) {
        super(text, style);
        _view = view;
        _actionCode = actionCode;
        if (actionCode != 0) {
            _image = BasicDebugView.createImage(actionCode);
            if (_image != null)
                setImageDescriptor(ImageDescriptor.createFromImage(_image));
        }
        setToolTipText(hint);
        if (actionCode == BasicDebugView.OPTIONS_BUTTON || actionCode == BasicDebugView.FILTER_BUTTON)
            setEnabled(true);
        else
            setEnabled(false);
    }

    /**
     * Does the job of the action when it is clicked.
     */
    public void run() {
        if (_view != null)
            try {
                _view.run(this);
            } catch (CoreException e) {
                _log.error(e);
                MessageDialog.openError(_view.getSite().getShell(), _view.getTitle(), e.toString());
            }
    }

    /**
     * Disposes the resources used by the action.
     */
    public void dispose() {
        if (_image != null)
            _image.dispose();
    }

    /**
     * Get the code of the action.
     */
    public int getActionCode() {
        return _actionCode;
    }
}