eu.geclipse.ui.views.GridProjectView.java Source code

Java tutorial

Introduction

Here is the source code for eu.geclipse.ui.views.GridProjectView.java

Source

/*****************************************************************************
 * Copyright (c) 2006-2008 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 the
 * g-Eclipse project founded by European Union
 * project number: FP6-IST-034327  http://www.geclipse.eu/
 *
 * Contributors:
 *    Mathias Stuempert - initial API and implementation
 *****************************************************************************/

package eu.geclipse.ui.views;

import org.eclipse.jface.viewers.DecoratingStyledCellLabelProvider;
import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.ILabelDecorator;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IPartListener2;
import org.eclipse.ui.IWorkbenchPartSite;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;

import eu.geclipse.core.model.GridModel;
import eu.geclipse.core.model.IGridElement;
import eu.geclipse.core.model.IGridJob;
import eu.geclipse.core.model.IGridJobStatusListener;
import eu.geclipse.ui.decorators.GridJobDecorator;
import eu.geclipse.ui.internal.actions.ActionGroupManager;
import eu.geclipse.ui.internal.actions.BuildActions;
import eu.geclipse.ui.internal.actions.EditorActions;
import eu.geclipse.ui.internal.actions.NewWizardActions;
import eu.geclipse.ui.internal.actions.ProjectActions;
import eu.geclipse.ui.internal.actions.SimpleTestActions;
import eu.geclipse.ui.internal.actions.SubmitJobActions;
import eu.geclipse.ui.internal.actions.TransformActions;
import eu.geclipse.ui.internal.actions.VisualisationActions;
import eu.geclipse.ui.providers.GridModelContentProvider;
import eu.geclipse.ui.providers.GridModelLabelProvider;

/**
 * The grid project view is the central view of the g-Eclipse
 * framework. With its help the user may manage his projects,
 * especially his grid projects that are contained in the grid model.
 * Therefore the root element of the grid project view is the
 * {@link eu.geclipse.core.model.IGridRoot} itself.
 */
public class GridProjectView extends TreeControlViewPart implements IGridJobStatusListener {

    private EditorActions editorActions;

    private IPartListener2 partListener;

    /* (non-Javadoc)
     * @see eu.geclipse.ui.views.GridModelViewPart#createPartControl(org.eclipse.swt.widgets.Composite)
     */
    @Override
    public void createPartControl(final Composite parent) {

        super.createPartControl(parent);

        this.partListener = new GridProjectPartListener(this.editorActions);
        getSite().getPage().addPartListener(this.partListener);

        GridModel.getJobManager().addJobStatusListener(this);

    }

    /* (non-Javadoc)
     * @see eu.geclipse.ui.views.GridModelViewPart#dispose()
     */
    @Override
    public void dispose() {
        getSite().getPage().removePartListener(this.partListener);
        GridModel.getJobManager().removeJobStatusListener(this);
    }

    /* (non-Javadoc)
     * @see eu.geclipse.ui.views.GridModelViewPart#isDragSource(eu.geclipse.core.model.IGridElement)
     */
    @Override
    public boolean isDragSource(final IGridElement element) {
        return super.isDragSource(element);
    }

    public void statusChanged(final IGridJob job) {
        GridJobDecorator decorator = GridJobDecorator.getDecorator();
        if (decorator != null) {
            decorator.refresh(job);
        }
    }

    public void statusUpdated(final IGridJob job) {
        // react only if status changed. See statusChanged()    
    }

    /* (non-Javadoc)
     * @see eu.geclipse.ui.views.GridModelViewPart#contributeAdditionalActions(eu.geclipse.ui.internal.actions.ActionGroupManager)
     */
    @Override
    protected void contributeAdditionalActions(final ActionGroupManager groups) {

        super.contributeAdditionalActions(groups);

        IWorkbenchPartSite site = getSite();
        IWorkbenchWindow window = site.getWorkbenchWindow();

        NewWizardActions newWizardActions = new NewWizardActions(window);
        groups.addGroup(newWizardActions);

        SubmitJobActions submitJobActions = new SubmitJobActions(site);
        groups.addGroup(submitJobActions);

        TransformActions transformActions = new TransformActions(site);
        groups.addGroup(transformActions);

        ProjectActions projectActions = new ProjectActions(site);
        groups.addGroup(projectActions);

        BuildActions buildActions = new BuildActions(site);
        groups.addGroup(buildActions);

        VisualisationActions visualizationActions = new VisualisationActions(site);
        groups.addGroup(visualizationActions);

        SimpleTestActions simpleTestActions = new SimpleTestActions(site);
        groups.addGroup(simpleTestActions);

        this.editorActions = new EditorActions(this);
        groups.addGroup(this.editorActions);

    }

    /* (non-Javadoc)
     * @see eu.geclipse.ui.views.GridModelViewPart#createContentProvider()
     */
    @Override
    protected IContentProvider createContentProvider() {
        IContentProvider contentProvider = new GridModelContentProvider();
        return contentProvider;
    }

    /* (non-Javadoc)
     * @see eu.geclipse.ui.views.GridModelViewPart#createLabelProvider()
     */
    @Override
    protected IBaseLabelProvider createLabelProvider() {
        GridModelLabelProvider provider = new GridModelLabelProvider();
        ILabelDecorator decorator = PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator();
        DecoratingStyledCellLabelProvider result = new DecoratingStyledCellLabelProvider(provider, decorator, null);
        return result;
    }

    /* (non-Javadoc)
     * @see eu.geclipse.ui.views.GridModelViewPart#createViewer(org.eclipse.swt.widgets.Composite)
     */
    @Override
    protected StructuredViewer createViewer(final Composite parent) {
        StructuredViewer sViewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
        return sViewer;
    }

    /* (non-Javadoc)
     * @see eu.geclipse.ui.views.GridModelViewPart#getRootElement()
     */
    @Override
    protected IGridElement getRootElement() {
        IGridElement rootElement = GridModel.getRoot();
        return rootElement;
    }

}