package org.nightlabs.jfire.department.admin.ui;
import javax.jdo.FetchPlan;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.nightlabs.base.ui.composite.XComposite;
import org.nightlabs.base.ui.composite.XComposite.LayoutMode;
import org.nightlabs.eclipse.ui.dialog.ResizableTitleAreaDialog;
import org.nightlabs.jdo.NLJDOHelper;
import org.nightlabs.jfire.department.Department;
import org.nightlabs.jfire.department.dao.DepartmentDAO;
import org.nightlabs.progress.NullProgressMonitor;
public class CreateDepartmentDialog
extends ResizableTitleAreaDialog
{
public CreateDepartmentDialog(Shell shell) {
super(shell, null);
}
private CreateDepartmentComposite createDepartmentComposite;
@Override
protected Control createDialogArea(Composite parent) {
setTitle("Create Department");
setMessage("Create a Department");
Composite wrapper = new XComposite(parent, SWT.NONE, LayoutMode.ORDINARY_WRAPPER);
createDepartmentComposite = new CreateDepartmentComposite(null, wrapper, SWT.NONE);
GridData gridData = new GridData(GridData.FILL_BOTH);
createDepartmentComposite.setLayoutData(gridData);
return wrapper;
}
/* (non-Javadoc)
* @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
*/
@Override
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setText("Title");
}
private static String[] FETCH_GROUP_ISSUE = new String[]{
FetchPlan.DEFAULT,
Department.FETCH_GROUP_NAME
};
@Override
protected void okPressed() {
final Department newDepartment = createDepartmentComposite.getCreatingDepartment();
try {
Job job = new Job("Setting the default values....") {
@Override
protected IStatus run(IProgressMonitor monitor) {
final Department department = DepartmentDAO.sharedInstance().storeDepartment(newDepartment, true, FETCH_GROUP_ISSUE, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, new NullProgressMonitor());
// Display.getDefault().asyncExec(new Runnable() {
// @Override
// public void run() {
// DepartmentEditorInput editorInput = new DepartmentEditorInput((DepartmentID)JDOHelper.getObjectId(department));
// try {
// Editor2PerspectiveRegistry.sharedInstance().openEditor(editorInput, DepartmentEditor.EDITOR_ID);
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
// }
// });
return Status.OK_STATUS;
}
};
job.setPriority(Job.SHORT);
job.schedule();
} catch (Exception e) {
throw new RuntimeException(e);
}
super.okPressed();
}
}