eu.esdihumboldt.hale.ui.io.action.wizard.ActionUIWizardNode.java Source code

Java tutorial

Introduction

Here is the source code for eu.esdihumboldt.hale.ui.io.action.wizard.ActionUIWizardNode.java

Source

/*
 * Copyright (c) 2012 Data Harmonisation Panel
 * 
 * All rights reserved. This program and the accompanying materials are made
 * available under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation, either version 3 of the License,
 * or (at your option) any later version.
 * 
 * You should have received a copy of the GNU Lesser General Public License
 * along with this distribution. If not, see <http://www.gnu.org/licenses/>.
 * 
 * Contributors:
 *     HUMBOLDT EU Integrated Project #030962
 *     Data Harmonisation Panel <http://www.dhpanel.eu>
 */

package eu.esdihumboldt.hale.ui.io.action.wizard;

import java.net.URL;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jface.wizard.IWizardContainer;
import org.eclipse.swt.graphics.Image;

import eu.esdihumboldt.hale.common.core.io.IOAdvisor;
import eu.esdihumboldt.hale.common.core.io.extension.IOAdvisorExtension;
import eu.esdihumboldt.hale.ui.HaleUI;
import eu.esdihumboldt.hale.ui.io.IOWizard;
import eu.esdihumboldt.hale.ui.io.action.ActionUI;
import eu.esdihumboldt.hale.ui.util.wizard.AbstractWizardNode;
import eu.esdihumboldt.hale.ui.util.wizard.ExtendedWizardNode;

/**
 * Wizard node based on {@link ActionUI}
 * 
 * @author Simon Templer
 */
public class ActionUIWizardNode extends AbstractWizardNode {

    private final ActionUI actionUI;

    private Image image;

    /**
     * Create a wizard node
     * 
     * @param actionUI the action UI
     * @param container the wizard container
     */
    public ActionUIWizardNode(ActionUI actionUI, IWizardContainer container) {
        super(container);
        this.actionUI = actionUI;
    }

    /**
     * @see ExtendedWizardNode#getDescription()
     */
    @Override
    public String getDescription() {
        // XXX description?
        return null;
    }

    /**
     * @see AbstractWizardNode#createWizard()
     */
    @SuppressWarnings({ "rawtypes", "unchecked" })
    @Override
    protected IWizard createWizard() {
        try {
            IOWizard<?> wizard = actionUI.createExtensionObject();
            IOAdvisor<?> advisor = IOAdvisorExtension.getInstance().findAdvisor(actionUI.getActionID(),
                    HaleUI.getServiceProvider());
            ((IOWizard) wizard).setAdvisor(advisor, actionUI.getActionID());
            return wizard;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * @return the actionUI
     */
    public ActionUI getActionUI() {
        return actionUI;
    }

    /**
     * Get the wizard image
     * 
     * @return the image
     */
    public Image getImage() {
        if (image == null) {
            URL iconURL = actionUI.getIconURL();
            if (iconURL != null) {
                image = ImageDescriptor.createFromURL(iconURL).createImage();
            }
        }

        return image;
    }

    /**
     * @see AbstractWizardNode#dispose()
     */
    @Override
    public void dispose() {
        if (image != null) {
            image.dispose();
        }

        super.dispose();
    }

}