127 lines
3.8 KiB
Java
127 lines
3.8 KiB
Java
|
package pyUML.backend;
|
||
|
|
||
|
import java.util.Vector;
|
||
|
|
||
|
import org.eclipse.core.resources.IProject;
|
||
|
import org.eclipse.jface.dialogs.Dialog;
|
||
|
import org.eclipse.jface.dialogs.IDialogConstants;
|
||
|
import org.eclipse.swt.SWT;
|
||
|
import org.eclipse.swt.events.SelectionEvent;
|
||
|
import org.eclipse.swt.layout.GridData;
|
||
|
import org.eclipse.swt.layout.GridLayout;
|
||
|
import org.eclipse.swt.widgets.Composite;
|
||
|
import org.eclipse.swt.widgets.Control;
|
||
|
import org.eclipse.swt.widgets.Group;
|
||
|
import org.eclipse.swt.widgets.List;
|
||
|
import org.eclipse.swt.widgets.Shell;
|
||
|
|
||
|
/**
|
||
|
* This is a SWT dialog the lets the user choose one of
|
||
|
* the given projects.
|
||
|
* By the next run, the lately selected project in preselected
|
||
|
*/
|
||
|
public class ChooseProjectDialog extends Dialog{
|
||
|
public static IProject preSelectedProject = null;
|
||
|
|
||
|
private java.util.List<IProject> projects;
|
||
|
private List selectProjectBox;
|
||
|
private IProject selectedProject = null;
|
||
|
private java.util.List<String> projectsList;
|
||
|
|
||
|
public ChooseProjectDialog(Shell parent, java.util.List<IProject> projects) {
|
||
|
super(parent);
|
||
|
this.projects = projects;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Initializes a ChooseProjectDialog and lets the user choose
|
||
|
* one of the given projects.
|
||
|
* After "Use" or "Cancel" is pressed, the selected
|
||
|
* Project is returned, or null if cancel was pressed.
|
||
|
* @param parent
|
||
|
* @param projects
|
||
|
* @return
|
||
|
*/
|
||
|
public static IProject runChooseProject(Shell parent, java.util.List<IProject> projects) {
|
||
|
if (preSelectedProject != null && (! preSelectedProject.isOpen()))
|
||
|
preSelectedProject = null;
|
||
|
|
||
|
// Create dialog
|
||
|
ChooseProjectDialog dialog = new ChooseProjectDialog(parent, projects);
|
||
|
dialog.create();
|
||
|
|
||
|
// Pre-select project that was selected before
|
||
|
if (ChooseProjectDialog.preSelectedProject != null) {
|
||
|
String preSelectedProjectName = ChooseProjectDialog.preSelectedProject.getName();
|
||
|
if (dialog.getProjectsList().contains(preSelectedProjectName)) {
|
||
|
int index = dialog.getProjectsList().indexOf(preSelectedProjectName);
|
||
|
dialog.selectProjectBox.setSelection(index);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
dialog.open();
|
||
|
|
||
|
ChooseProjectDialog.preSelectedProject = dialog.selectedProject;
|
||
|
|
||
|
return dialog.selectedProject;
|
||
|
}
|
||
|
|
||
|
protected Control createDialogArea(Composite parent) {
|
||
|
Composite composite = (Composite) super.createDialogArea(parent);
|
||
|
setShellStyle(SWT.DIALOG_TRIM | SWT.RESIZE | SWT.MAX);
|
||
|
createControls(composite);
|
||
|
//add controls to composite as necessary
|
||
|
return composite;
|
||
|
}
|
||
|
|
||
|
public void createControls (Composite composite) {
|
||
|
// create graphical components
|
||
|
Shell shell = composite.getShell();
|
||
|
shell.setText("Select Python Project To Use");
|
||
|
|
||
|
Group selectBoxGroup = new Group(composite, SWT.None);
|
||
|
selectBoxGroup.setText("Please select a project to be used by PyUML:");
|
||
|
|
||
|
selectBoxGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
|
||
|
selectBoxGroup.setLayout(new GridLayout(1, true));
|
||
|
|
||
|
this.selectProjectBox = new List( selectBoxGroup, SWT.BORDER|SWT.SINGLE|SWT.V_SCROLL|SWT.H_SCROLL );
|
||
|
selectProjectBox.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
|
||
|
|
||
|
this.projectsList = new Vector<String>();
|
||
|
for (IProject project : this.projects) {
|
||
|
this.selectProjectBox.add(project.getName());
|
||
|
projectsList.add(project.getName());
|
||
|
}
|
||
|
|
||
|
selectProjectBox.setSize(300,300);
|
||
|
|
||
|
//buttonGroup.pack();
|
||
|
selectBoxGroup.pack();
|
||
|
|
||
|
composite.pack();
|
||
|
|
||
|
}
|
||
|
|
||
|
public void widgetDefaultSelected(SelectionEvent e) {
|
||
|
// Not needed in this dialog
|
||
|
}
|
||
|
|
||
|
protected void buttonPressed(int buttonId) {
|
||
|
if (IDialogConstants.OK_ID == buttonId) {
|
||
|
int selectedIndex = this.selectProjectBox.getSelectionIndex();
|
||
|
if (selectedIndex < 0)
|
||
|
return;
|
||
|
|
||
|
this.selectedProject = this.projects.get(selectedIndex);
|
||
|
this.close();
|
||
|
} else if (IDialogConstants.CANCEL_ID == buttonId) {
|
||
|
cancelPressed();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public java.util.List<String> getProjectsList() {
|
||
|
return projectsList;
|
||
|
}
|
||
|
}
|