/** Save project. */ private void saveProject() { // validate that description is present if (description.getText() == null || description.getText().equals("")) { Errmsg.getErrorHandler().notice(Resource.getResourceString("empty_desc")); return; } try { String num = projectIdText.getText(); Project p = new Project(); if (!num.equals("NEW") && !num.equals("CLONE")) { p.setKey(Integer.parseInt(num)); } // fill in the fields from the screen Calendar cal = startDateChooser.getCalendar(); if (cal == null) cal = new GregorianCalendar(); p.setStartDate(cal.getTime()); // start date cal = dueDateChooser.getCalendar(); if (cal != null) { p.setDueDate(cal.getTime()); // due date // validate due date if (DateUtil.isAfter(p.getStartDate(), p.getDueDate())) { throw new Warning(Resource.getResourceString("sd_dd_warn")); } } p.setDescription(description.getText()); p.setStatus((String) statusComboBox.getSelectedItem()); String cat = (String) categoryBox.getSelectedItem(); if (cat.equals("") || cat.equals(CategoryModel.UNCATEGORIZED)) { p.setCategory(null); } else { p.setCategory(cat); } p.setParent(null); String proj = (String) parentProjectComboBox.getSelectedItem(); try { p.setParent(getProjectId(proj)); } catch (Exception e) { // no project selected } TaskModel.getReference().saveProject(p); p.setKey(p.getKey()); showProject(Action.CHANGE, p, null); } catch (Warning w) { Errmsg.getErrorHandler().notice(w.getMessage()); } catch (Exception e) { Errmsg.getErrorHandler().errmsg(e); } }