/***************************************************************************** * 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; } }