eu.geclipse.ui.internal.actions.SimpleTestAction.java Source code

Java tutorial

Introduction

Here is the source code for eu.geclipse.ui.internal.actions.SimpleTestAction.java

Source

/******************************************************************************
 * Copyright (c) 2007 g-Eclipse consortium
 * 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
 *
 * Initial development of the original code was made for
 * project g-Eclipse founded by European Union
 * project number: FP6-IST-034327  http://www.geclipse.eu/
 *
 * Contributor(s):
 *     UCY (http://www.cs.ucy.ac.cy)
 *      - Harald Gjermundrod (harald@cs.ucy.ac.cy)
 *
 *****************************************************************************/
package eu.geclipse.ui.internal.actions;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IWorkbenchSite;
import org.eclipse.ui.actions.SelectionListenerAction;

import eu.geclipse.core.model.IGridComputing;
import eu.geclipse.core.model.IGridResource;
import eu.geclipse.core.model.IGridService;
import eu.geclipse.core.model.IGridStorage;
import eu.geclipse.core.simpleTest.ISimpleTest;
import eu.geclipse.core.simpleTest.ISimpleTestDescription;
import eu.geclipse.ui.ISimpleTestUIFactory;
import eu.geclipse.ui.dialogs.AbstractSimpleTestDialog;

/**
 * @author harald
 *
 */
public class SimpleTestAction extends SelectionListenerAction {

    private List<IGridResource> resources;

    private ISimpleTestUIFactory factory;

    /**
     * The workbench site this action belongs to.
     */
    private IWorkbenchSite site;

    protected SimpleTestAction(final IWorkbenchSite site, final ISimpleTestUIFactory factory) {
        super(factory.getSupportedDescription().getSimpleTestTypeName());

        this.site = site;
        this.factory = factory;
    }

    /* (non-Javadoc)
     * @see org.eclipse.jface.action.Action#run()
     */
    @Override
    public void run() {
        if (this.factory != null) {
            ISimpleTestDescription description = this.factory.getSupportedDescription();
            ISimpleTest test = description.createSimpleTest();

            AbstractSimpleTestDialog infoDialog = this.factory.getSimpleTestDialog(test, this.resources,
                    this.site.getShell());
            infoDialog.open();
        }
    }

    /* (non-Javadoc)
     * @see org.eclipse.ui.actions.BaseSelectionListenerAction#updateSelection(org.eclipse.jface.viewers.IStructuredSelection)
     */
    @Override
    protected boolean updateSelection(final IStructuredSelection selection) {
        this.resources = new ArrayList<IGridResource>();
        boolean enabled = super.updateSelection(selection);
        Iterator<?> iter = selection.iterator();
        while (iter.hasNext() && enabled) {
            Object element = iter.next();
            boolean isResource = isResourcePhysical(element);
            enabled &= isResource;
            if (isResource) {
                this.resources.add((IGridResource) element);
            }
        }
        return enabled && !this.resources.isEmpty();
    }

    protected boolean isResourcePhysical(final Object element) {
        boolean ret = false;

        if (element instanceof IGridService || element instanceof IGridComputing
                || element instanceof IGridStorage) {
            ret = ((eu.geclipse.core.model.IGridResource) element).isVirtual();
        }

        return ret;
    }
}