package LinGUIne.wizards;
import java.util.TreeSet;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
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.swt.widgets.List;
import LinGUIne.model.Project;
import LinGUIne.model.ProjectGroup;
import LinGUIne.model.ProjectManager;
import LinGUIne.model.RootProjectGroup;
/**
* Page for the user to select the Project into which the new ProjectGroup will
* be placed.
*
* @author Kyle Mullins
*/
public class NewGroupWizardSelectProjectPage extends WizardPage {
private List lstProjects;
private List lstGroups;
private ProjectManager projectMan;
private NewGroupData wizardData;
public NewGroupWizardSelectProjectPage(ProjectManager projects,
NewGroupData data){
super("New Folder Wizard");
setTitle("New Folder Wizard");
setDescription("Select where the new Folder should go.");
projectMan = projects;
wizardData = data;
}
@Override
public void createControl(Composite parent) {
Composite container = new Composite(parent, SWT.NONE);
container.setLayout(new GridLayout(2, true));
Label lblProjects = new Label(container, SWT.NONE);
lblProjects.setText("Select the Project to put the Folder in:");
Label lblGroups = new Label(container, SWT.NONE);
lblGroups.setText("Select the new Folder's parent Folder:");
lstProjects = new List(container, SWT.BORDER | SWT.V_SCROLL |
SWT.H_SCROLL);
lstProjects.setLayoutData(new GridData(GridData.FILL_BOTH));
lstProjects.addSelectionListener(new SelectionListener(){
@Override
public void widgetSelected(SelectionEvent e) {
if(lstProjects.getSelectionCount() != 0){
String projName = lstProjects.getSelection()[0];
wizardData.setDestProject(projectMan.getProject(projName));
populateGroupList();
setPageComplete(false);
}
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {}
});
for(Project proj: projectMan.getProjects()){
lstProjects.add(proj.getName());
}
lstGroups = new List(container, SWT.BORDER | SWT.V_SCROLL |
SWT.H_SCROLL);
lstGroups.setLayoutData(new GridData(GridData.FILL_BOTH));
lstGroups.addSelectionListener(new SelectionListener(){
@Override
public void widgetSelected(SelectionEvent e) {
if(lstGroups.getSelectionCount() != 0){
Project destProject = wizardData.getDestProject();
String groupName = lstGroups.getSelection()[0];
if(groupName.contains("/")){
groupName = groupName.substring(
groupName.lastIndexOf("/") + 1);
}
wizardData.setParentGroup(destProject.getGroup(groupName));
setPageComplete(true);
}
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {}
});
setControl(container);
setPageComplete(false);
//If there is a Project already selected (in wizardData), select it
if(wizardData.getDestProject() != null){
lstProjects.setSelection(
new String[]{wizardData.getDestProject().getName()});
populateGroupList();
}
}
/**
* Updates the list of ProjectGroups.
*/
private void populateGroupList(){
TreeSet<String> sortedGroups = new TreeSet<String>();
for(ProjectGroup group: wizardData.getDestProject().getGroups()){
if(group instanceof RootProjectGroup){
if(((RootProjectGroup)group).isHidden()){
continue;
}
}
sortedGroups.add(group.getDisplayGroupPath());
}
lstGroups.removeAll();
for(String groupPath: sortedGroups){
lstGroups.add(groupPath);
}
}
}