/***************************************************************************** * Copyright (c) 2008 Bioclipse Project * 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 * *****************************************************************************/ package net.bioclipse.specmol.wizards; import java.util.ArrayList; import java.util.Iterator; import net.bioclipse.spectrum.filecontentprovider.SpectrumFileContentProvider; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; 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.Label; import org.eclipse.swt.widgets.List; import org.eclipse.ui.model.WorkbenchLabelProvider; public class AddSpectrumWizardPage extends WizardPage { private List text; private ArrayList<IFile> spectra = new ArrayList<IFile>(); protected AddSpectrumWizardPage(String text) { super("Add Spectra"); setTitle("Add Spectra"); setDescription(text); } public void createControl(Composite parent) { Composite container = new Composite(parent, SWT.NULL); GridLayout layout = new GridLayout(); container.setLayout(layout); layout.numColumns = 2; layout.verticalSpacing = 9; TreeViewer treeViewer = new TreeViewer(container); treeViewer.setContentProvider(new SpectrumFileContentProvider()); treeViewer.setUseHashlookup(true); //Layout the tree viewer below the text field GridData layoutData = new GridData(); layoutData.grabExcessHorizontalSpace = true; layoutData.grabExcessVerticalSpace = true; layoutData.horizontalAlignment = GridData.FILL; // layoutData.verticalAlignment = GridData.FILL; layoutData.horizontalSpan = 3; treeViewer.getControl().setLayoutData(layoutData); treeViewer.setLabelProvider(WorkbenchLabelProvider.getDecoratingWorkbenchLabelProvider()); treeViewer.setInput(ResourcesPlugin.getWorkspace().getRoot().findMember(".")); treeViewer.expandToLevel(2); treeViewer.setSelection(new StructuredSelection(ResourcesPlugin.getWorkspace().getRoot().findMember("."))); treeViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent e) { ISelection sel = e.getSelection(); if (sel instanceof IStructuredSelection) { Iterator it = ((IStructuredSelection) sel).iterator(); while (it.hasNext()) { Object element = it.next(); if (element instanceof IFile) { IFile bioRes = (IFile) element; if(!spectra.contains(bioRes)){ text.add(bioRes.getName()); text.redraw(); spectra.add(bioRes); } else { setErrorMessage("Please select a Spectrum file!"); } } } } } }); Label listLabel = new Label(container, SWT.NULL); listLabel.setText("List of spectra to be added to the new Resource:"); GridData gd = new GridData(); gd.horizontalSpan = 2; listLabel.setLayoutData(gd); text = new List(container, SWT.BORDER | SWT.MULTI |SWT.V_SCROLL); gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING); gd.horizontalSpan = 2; gd.heightHint = 150; gd.widthHint = 250; text.setLayoutData(gd); final Button addButton = new Button(container, SWT.PUSH); addButton.setText("Remove Spectrum"); addButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { int[] selection = text.getSelectionIndices(); for (int i=selection.length-1;i>-1;i--) { IFile bioRes = (IFile) spectra.get(selection[i]); spectra.remove(bioRes); text.remove(bioRes.getName()); text.redraw(); } } }); setControl(container); } public ArrayList<IFile> getSpectra() { return spectra; } }