/*****************************************************************************
* 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 net.bioclipse.bibtex.wizards.FolderLabelProvider;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.jface.viewers.DecoratingLabelProvider;
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.IWizardPage;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.PlatformUI;
public class ChooseBibtexWizardPage extends WizardPage {
private IFile selectedRes;
protected ChooseBibtexWizardPage() {
super("Choose Bibtex File");
setTitle("Assgin Bibtex entries wizard");
setDescription("This wizard lets you choose a bibtex file to add one of its entries to the molecule or spectrum open in SpecMol editor");
}
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;
final TreeViewer treeViewer = new TreeViewer(container);
treeViewer.setContentProvider(new BibtexContentProvider());
treeViewer.setLabelProvider(new DecoratingLabelProvider(
new FolderLabelProvider(), PlatformUI
.getWorkbench().getDecoratorManager()
.getLabelDecorator()));
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.setInput(ResourcesPlugin.getWorkspace().getRoot().findMember("."));
treeViewer.expandToLevel(2);
treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
ISelection sel = event.getSelection();
if (sel instanceof IStructuredSelection && ((IStructuredSelection) sel).getFirstElement() instanceof IFile) {
selectedRes = (IFile)((IStructuredSelection) sel).getFirstElement();
getWizard().getContainer().updateButtons();
}
}
});
treeViewer.setSelection(new StructuredSelection(ResourcesPlugin.getWorkspace().getRoot().findMember(".")));
setControl(container);
}
public boolean canFlipToNextPage(){
if(selectedRes==null)
return false;
else
return true;
}
public IWizardPage getNextPage() {
ChooseIdWizardPage page = ((AssignBibtexWizard)this.getWizard()).getEntryPage();
page.initUi();
return page;
}
public IFile getSelectedRes() {
return this.selectedRes;
}
}