/*******************************************************************************
* Copyright (c) 2013 AKSW Xturtle Project, itemis AG (http://www.itemis.eu).
* 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 de.itemis.tooling.xturtle.ui.wizard;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.ControlAdapter;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
public class TurtleReferencedProjectsSelectionPage extends WizardPage {
private Button[] checkBoxButtons;
private IProject[] projects;
protected TurtleReferencedProjectsSelectionPage(String pageName) {
super(pageName);
IWorkspaceRoot workspaceroot = ResourcesPlugin.getWorkspace().getRoot();
projects = workspaceroot.getProjects();
checkBoxButtons = new Button[projects.length];
setPageComplete(true);
}
public List<IProject> getReferencedProjects() {
List<IProject> result = new ArrayList<IProject>();
for (Button button : checkBoxButtons) {
if (button.getSelection()) {
result.add((IProject) button.getData());
}
}
return result;
}
public void createControl(final Composite parent) {
initializeDialogUnits(parent);
final ScrolledComposite sc = new ScrolledComposite(parent, SWT.V_SCROLL);
final Composite composite = new Composite(sc, SWT.NONE);
composite.setLayout(new GridLayout());
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
sc.setContent(composite);
sc.addControlListener(new ControlAdapter() {
public void controlResized(ControlEvent e) {
Rectangle r = sc.getClientArea();
sc.setMinSize(composite.computeSize(r.width, SWT.DEFAULT));
}
});
createCheckboxes(composite);
sc.setExpandVertical(true);
sc.setExpandHorizontal(true);
setControl(sc);
parent.pack();
setErrorMessage(null);
setMessage(null);
Dialog.applyDialogFont(composite);
}
private void createCheckboxes(final Composite parent) {
Font font = parent.getFont();
for (int i = 0; i < projects.length; i++) {
Button checkBox = new Button(parent, SWT.CHECK | SWT.LEFT);
checkBoxButtons[i] = checkBox;
checkBox.setText(projects[i].getName());
checkBox.setData(projects[i]);
checkBox.setFont(font);
}
}
}