Conference type new item builder and fxml
This commit is contained in:
parent
60ae2e2ef7
commit
50a700bb39
|
@ -0,0 +1,125 @@
|
||||||
|
package org.cutem.cutecalendar.presenter.newitems;
|
||||||
|
|
||||||
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.fxml.FXMLLoader;
|
||||||
|
import javafx.scene.control.TextField;
|
||||||
|
import org.cutem.cutecalendar.model.TodoItem;
|
||||||
|
import org.cutem.cutecalendar.model.TodoItemFactory;
|
||||||
|
import org.cutem.cutecalendar.model.TodoItemUtil;
|
||||||
|
import org.cutem.cutecalendar.util.CalendarUtil;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Calendar;
|
||||||
|
|
||||||
|
public class ConferenceTypeNewItemBuilder extends NewItemBuilder {
|
||||||
|
public static class Factory implements IFactory {
|
||||||
|
@Override
|
||||||
|
public String getTypeName() {
|
||||||
|
return TYPE_NAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public NewItemBuilder construct(@Nullable TodoItem parent) {
|
||||||
|
return new OtherTypeNewItemBuilder(parent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final String CONFERENCE_TYPE_LAYOUT = "fxml/newitem_layouts/conference_type_layout.fxml";
|
||||||
|
|
||||||
|
private static final int TYPE = TodoItem.CONFERENCE;
|
||||||
|
|
||||||
|
private static final String TYPE_NAME = TodoItem.typeName(TYPE);
|
||||||
|
|
||||||
|
private ClassLoader mClassLoader = getClass().getClassLoader();
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private TextField titleText;
|
||||||
|
@FXML
|
||||||
|
private TextField bgnTimeText;
|
||||||
|
@FXML
|
||||||
|
private TextField endTimeText;
|
||||||
|
@FXML
|
||||||
|
private TextField locationText;
|
||||||
|
@FXML
|
||||||
|
private TextField descriptionText;
|
||||||
|
|
||||||
|
protected ConferenceTypeNewItemBuilder(TodoItem parent) {
|
||||||
|
super(parent);
|
||||||
|
|
||||||
|
FXMLLoader loader = new FXMLLoader();
|
||||||
|
loader.setLocation(mClassLoader.getResource(CONFERENCE_TYPE_LAYOUT));
|
||||||
|
loader.setRoot(this);
|
||||||
|
loader.setController(this);
|
||||||
|
|
||||||
|
try {
|
||||||
|
loader.load();
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new IllegalStateException("cannot load " + CONFERENCE_TYPE_LAYOUT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable Object[] buildItem() {
|
||||||
|
|
||||||
|
String b = bgnTimeText.getText();
|
||||||
|
String e = endTimeText.getText();
|
||||||
|
String title = titleText.getText();
|
||||||
|
String location = locationText.getText();
|
||||||
|
String description = descriptionText.getText();
|
||||||
|
|
||||||
|
if (title.isEmpty()) { // fail
|
||||||
|
showAlert("议题还没有填");
|
||||||
|
return null;
|
||||||
|
} else if (location.isEmpty()) { // fail
|
||||||
|
showAlert("地点还没有填");
|
||||||
|
return null;
|
||||||
|
} else if (description.isEmpty()) { // fail
|
||||||
|
showAlert("内容还没有填");
|
||||||
|
return null;
|
||||||
|
} else if (b.trim().isEmpty() || e.trim().isEmpty()) {
|
||||||
|
showAlert("时间段还没有填");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// try build a TodoItem
|
||||||
|
// failed?
|
||||||
|
if (!CalendarUtil.isValidCalendarString(b) || !CalendarUtil.isValidCalendarString(e)) {
|
||||||
|
showAlert("give a valid time");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
Calendar c1 = CalendarUtil.constructCalendar(b);
|
||||||
|
Calendar c2 = CalendarUtil.constructCalendar(e);
|
||||||
|
|
||||||
|
// failed?
|
||||||
|
if (c2.before(c1)) {
|
||||||
|
showAlert("开始时间在结束时间后");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// build
|
||||||
|
TodoItemFactory fac = new TodoItemFactory();
|
||||||
|
fac.type(TYPE).beginTime(c1).endTime(c2).stringProperties(TodoItem.TITLE, title).stringProperties(TodoItem.LOCATION, location).stringProperties(TodoItem.DESCRIPTION, description);
|
||||||
|
TodoItem item = fac.build();
|
||||||
|
|
||||||
|
if (checkConflict(item)) {
|
||||||
|
if (mParent == null) {
|
||||||
|
return new Object[]{item};
|
||||||
|
} else {
|
||||||
|
TodoItem[] res = TodoItemUtil.bind(mParent, item);
|
||||||
|
return new Object[]{res[0], res[1]};
|
||||||
|
}
|
||||||
|
} else { // fail
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTypeName() {
|
||||||
|
return TYPE_NAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue