/****************************************************************************** * Copyright (c) 2007, 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 * project g-Eclipse founded by European Union * project number: FP6-IST-034327 http://www.geclipse.eu/ * * Contributor(s): * Mariusz Wojtysiak - initial API and implementation * *****************************************************************************/ package eu.geclipse.ui.internal.dialogs.configureFilters; import java.util.ArrayList; import java.util.List; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import eu.geclipse.core.model.IGridJobStatus; import eu.geclipse.ui.views.filters.IGridFilterConfiguration; import eu.geclipse.ui.views.filters.JobStatusFilter; import eu.geclipse.ui.views.filters.JobViewFilterConfiguration; /** * Composite to edit {@link JobStatusFilter} */ public class JobStatusComposite implements IFilterComposite { private JobStatusFilter filter; private List<StatusOption> optionsList = new ArrayList<StatusOption>(); private Group topGroup; private boolean enabled = true; /** * @param filter edited filter * @param parent */ public JobStatusComposite( final JobStatusFilter filter, final Composite parent ) { this.filter = filter; this.topGroup = new Group( parent, SWT.NONE ); GridLayout layout = new GridLayout( 1, false ); this.topGroup.setLayout( layout ); this.topGroup.setLayoutData( new GridData( SWT.FILL, SWT.TOP, false, false ) ); Label label = new Label( this.topGroup, SWT.NONE ); label.setText( Messages.getString( "JobStatusComposite.Description" ) ); //$NON-NLS-1$ this.optionsList.add( new StatusOption( this.topGroup, Messages.getString( "JobStatusComposite.submitted" ), IGridJobStatus.SUBMITTED ) ); //$NON-NLS-1$ this.optionsList.add( new StatusOption( this.topGroup, Messages.getString( "JobStatusComposite.waiting" ), IGridJobStatus.WAITING ) ); //$NON-NLS-1$ this.optionsList.add( new StatusOption( this.topGroup, Messages.getString( "JobStatusComposite.running" ), IGridJobStatus.RUNNING ) ); //$NON-NLS-1$ this.optionsList.add( new StatusOption( this.topGroup, Messages.getString( "JobStatusComposite.done" ), IGridJobStatus.DONE ) ); //$NON-NLS-1$ this.optionsList.add( new StatusOption( this.topGroup, Messages.getString( "JobStatusComposite.aborted" ), IGridJobStatus.ABORTED ) ); //$NON-NLS-1$ this.optionsList.add( new StatusOption( this.topGroup, Messages.getString( "JobStatusComposite.purged" ), IGridJobStatus.PURGED ) ); //$NON-NLS-1$ this.optionsList.add( new StatusOption( this.topGroup, Messages.getString( "JobStatusComposite.others" ), IGridJobStatus.UNKNOWN ) ); //$NON-NLS-1$ refresh(); } private static class StatusOption { private int statusValue; private Button checkbox; StatusOption( final Composite parent, final String descriptionString, final int statusValue ) { this.statusValue = statusValue; this.checkbox = new Button( parent, SWT.CHECK ); this.checkbox.setText( descriptionString ); } void setSelected( final boolean selected ) { this.checkbox.setSelection( selected ); } boolean isSelected() { return this.checkbox.getSelection(); } void enable( final boolean enable ) { this.checkbox.setEnabled( enable ); } int getStatusValue() { return this.statusValue; } void setEnabled( final boolean enabled ) { this.checkbox.setEnabled( enabled ); } } public boolean saveToFilter() { if( this.filter != null ) { for( StatusOption option : this.optionsList ) { this.filter.setStatusState( option.getStatusValue(), option.isSelected() ); } } return true; } public void setFilter( final IGridFilterConfiguration filterConfiguration ) { this.filter = filterConfiguration == null ? null : ( ( JobViewFilterConfiguration )filterConfiguration ).getJobStatusFilter(); refresh(); } private void refresh() { if( this.filter != null ) { for( StatusOption option : this.optionsList ) { option.setSelected( this.filter.getStatusState( option.getStatusValue() ) ); } onChangeEnabledState(); } } public void setEnabled( final boolean enabled ) { this.enabled = enabled; onChangeEnabledState(); } void onChangeEnabledState() { for( StatusOption option : this.optionsList ) { option.setEnabled( this.enabled ); } } }