/*******************************************************************************
* Copyright (c) 2009-2013 Vlad Dumitrescu and others.
* 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
*
* Contributors:
* Vlad Dumitrescu
*******************************************************************************/
package org.erlide.ui.wizards;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectNature;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.Text;
import org.erlide.core.ErlangCore;
import com.ericsson.otp.erlang.OtpErlangObject;
import com.ericsson.otp.erlang.OtpErlangString;
public class EdocExportWizardPage extends WizardPage {
private CheckboxTableViewer checkboxTableViewer;
static class TableLabelProvider extends LabelProvider implements ITableLabelProvider {
@Override
public String getColumnText(final Object element, final int columnIndex) {
return ((IProject) element).getName();
}
@Override
public Image getColumnImage(final Object element, final int columnIndex) {
return null;
}
}
static class TableContentProvider implements IStructuredContentProvider {
@Override
public Object[] getElements(final Object inputElement) {
final java.util.List<IProject> ps = new ArrayList<>();
final IProject[] projects = ResourcesPlugin.getWorkspace().getRoot()
.getProjects();
for (final IProject p : projects) {
if (p.isAccessible()) {
IProjectNature n = null;
try {
n = p.getNature(ErlangCore.NATURE_ID);
if (n != null) {
ps.add(p);
}
} catch (final CoreException e) {
}
}
}
return ps.toArray(new IProject[ps.size()]);
}
@Override
public void dispose() {
}
@Override
public void inputChanged(final Viewer viewer, final Object oldInput,
final Object newInput) {
}
}
private Text destination;
private Table table;
protected EdocExportWizardPage(final String pageName,
final IStructuredSelection selection) {
super(pageName);
setTitle("eDoc export (work in progress!)");
setDescription(
"Select the projects and files for which you want to generate eDoc documentation");
}
@Override
public void createControl(final Composite parent) {
final Composite composite = new Composite(parent, SWT.NONE);
final GridLayout gridLayout = new GridLayout();
composite.setLayout(gridLayout);
setControl(composite);
final Label selectProjectsForLabel = new Label(composite, SWT.NONE);
selectProjectsForLabel.setLayoutData(new GridData());
selectProjectsForLabel.setText(
"Select projects for which edoc documentation will be generated:");
checkboxTableViewer = CheckboxTableViewer.newCheckList(composite, SWT.BORDER);
checkboxTableViewer.setContentProvider(new TableContentProvider());
checkboxTableViewer.setLabelProvider(new TableLabelProvider());
table = checkboxTableViewer.getTable();
final GridData gd_table = new GridData(SWT.FILL, SWT.FILL, true, true);
gd_table.widthHint = 423;
table.setLayoutData(gd_table);
checkboxTableViewer.setInput(this);
final Group optionsGroup = new Group(composite, SWT.NONE);
optionsGroup.setText("Options");
final GridData gd_optionsGroup = new GridData(SWT.FILL, SWT.CENTER, false, false);
optionsGroup.setLayoutData(gd_optionsGroup);
final GridLayout gridLayout_1 = new GridLayout();
gridLayout_1.numColumns = 2;
optionsGroup.setLayout(gridLayout_1);
final Label selectLabel = new Label(optionsGroup, SWT.NONE);
selectLabel.setText("Destination (relative to each project):");
destination = new Text(optionsGroup, SWT.BORDER);
final GridData gd_destination = new GridData(SWT.FILL, SWT.CENTER, false, false);
gd_destination.widthHint = 179;
destination.setLayoutData(gd_destination);
destination.setText("doc");
}
public Collection<IProject> getSelectedResources() {
final ArrayList<IProject> result = new ArrayList<>();
final Object[] sel = checkboxTableViewer.getCheckedElements();
for (final Object o : sel) {
result.add((IProject) o);
}
return result;
}
public Map<String, OtpErlangObject> getOptions() {
final HashMap<String, OtpErlangObject> result = new HashMap<>();
result.put("dir", new OtpErlangString(destination.getText()));
// result.put("preprocess", new OtpErlangBoolean(false));
return result;
}
public String getDestination() {
return destination.getText();
}
}