blob: 964bcdccca2a684e51febe47e6656c5bf33ca58f [file] [log] [blame]
package org.eclipse.ui.internal.wizards.datatransfer;
import java.lang.reflect.InvocationTargetException;
import java.util.Set;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.osgi.util.NLS;
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.swt.widgets.Label;
import org.eclipse.ui.IWorkingSet;
public class ImportReportWizardPage extends WizardPage {
private boolean nestedProjectsLoaded;
protected ImportReportWizardPage(EasymportWizard wizard) {
super(ImportReportWizardPage.class.getName());
setWizard(wizard);
}
@Override
public EasymportWizard getWizard() {
return (EasymportWizard)super.getWizard();
}
@Override
public void createControl(Composite parent) {
setTitle("Nested Projects");
setDescription("Look for nested projects");
Composite res = new Composite(parent, SWT.NONE);
res.setLayout(new GridLayout(1, false));
Label introLabel = new Label(res, SWT.WRAP);
introLabel.setText(NLS.bind(Messages.EasymportWizardPage_nestedProjects, this.getWizard().getProject().getLocation()));
introLabel.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, false, false));
new Label(res, SWT.NONE).setText(Messages.EasymportWizardPage_availableDetectors);
ListViewer detectorsList = new ListViewer(res);
detectorsList.setContentProvider(new ArrayContentProvider());
detectorsList.setLabelProvider(new LabelProvider());
detectorsList.setInput(ProjectConfiguratorExtensionManager.getAllExtensionLabels());
detectorsList.getControl().setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, false, false));
new Label(res, SWT.NONE).setText(Messages.EasymportWizardPage_importedProjects);
TableViewer nestedProject = new TableViewer(res);
nestedProject.getControl().setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, false, false));
setControl(res);
}
@Override
public boolean canFlipToNextPage() {
return !this.nestedProjectsLoaded;
}
@Override
public ImportReportWizardPage getNextPage() {
if (!this.nestedProjectsLoaded) {
final Set<IWorkingSet> workingSets = getWizard().getSelectedWorkingSets();
try {
getContainer().run(false, false, new IRunnableWithProgress() {
@Override
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
try {
new OpenFolderCommand().importProjectAndChildrenRecursively(getWizard().getProject(), true, workingSets, monitor);
} catch (Exception ex) {
throw new InvocationTargetException(ex);
}
}
});
this.nestedProjectsLoaded = true;
} catch (Exception ex) {
Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, ex.getMessage(), ex));
}
getWizard().getContainer().updateButtons();
return this;
} else {
return null;
}
}
}