package org.gcube.portlets.admin.vredefinition.client.view; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Map; import org.gcube.portlets.admin.vredefinition.client.presenter.VREDescriptionPresenter; import org.gcube.portlets.admin.vredefinition.shared.VREDescriptionBean; import com.extjs.gxt.ui.client.Style.HorizontalAlignment; import com.extjs.gxt.ui.client.Style.VerticalAlignment; import com.extjs.gxt.ui.client.data.BaseModel; import com.extjs.gxt.ui.client.store.ListStore; import com.extjs.gxt.ui.client.widget.Composite; import com.extjs.gxt.ui.client.widget.ContentPanel; import com.extjs.gxt.ui.client.widget.Label; import com.extjs.gxt.ui.client.widget.LayoutContainer; import com.extjs.gxt.ui.client.widget.VerticalPanel; import com.extjs.gxt.ui.client.widget.form.ComboBox; import com.extjs.gxt.ui.client.widget.form.DateField; import com.extjs.gxt.ui.client.widget.form.Field; import com.extjs.gxt.ui.client.widget.form.FieldSet; import com.extjs.gxt.ui.client.widget.form.FormPanel; import com.extjs.gxt.ui.client.widget.form.TextArea; import com.extjs.gxt.ui.client.widget.form.TextField; import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction; import com.extjs.gxt.ui.client.widget.form.Validator; import com.extjs.gxt.ui.client.widget.layout.FillLayout; import com.extjs.gxt.ui.client.widget.layout.FitLayout; import com.extjs.gxt.ui.client.widget.layout.FlowLayout; import com.extjs.gxt.ui.client.widget.layout.FormData; import com.extjs.gxt.ui.client.widget.layout.FormLayout; import com.extjs.gxt.ui.client.widget.layout.TableData; import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.user.client.ui.Widget; public class VREDescriptionView extends Composite implements VREDescriptionPresenter.Display{ private TextField vrename; private TextField vredesigner; private DateField fromDate; private DateField toDate; private ComboBox vremanager; private TextArea vredescription; public VREDescriptionView() { FormData formData = new FormData("-20"); VerticalPanel panel = new VerticalPanel(); panel.setSize("100%", "100%"); panel.setStyleAttribute("padding", "10px"); panel.setTableWidth("100%"); FieldSet fieldSet = new FieldSet(); fieldSet.setWidth("95%"); fieldSet.setHeading("VRE Information"); FormLayout layout = new FormLayout(); layout.setLabelWidth(100); fieldSet.setLayout(layout); vrename = new TextField(); vrename.setFieldLabel("Name"); vrename.setAllowBlank(false); vrename.setValidator(new Validator() { public String validate (Field ticketField, String value){ if (vrename.getRawValue().contains(" ")) return "No blanks allowed, a VRE name must be a single word"; else return null; } }); fieldSet.add(vrename,formData); vredesigner = new TextField(); vredesigner.setFieldLabel("Designer"); vredesigner.setAllowBlank(false); fieldSet.add(vredesigner,formData); ListStore store = new ListStore(); BaseModel managerModel = new BaseModel(); managerModel.set("name", "Manager"); store.add(managerModel); vremanager = new ComboBox(); vremanager.setFieldLabel("VRE Manager"); vremanager.setDisplayField("name"); vremanager.setTriggerAction(TriggerAction.ALL); vremanager.setStore(store); vremanager.setAllowBlank(false); vremanager.setEditable(false); fieldSet.add(vremanager,formData); vredescription = new TextArea(); vredescription.setFieldLabel("Description"); vredescription.setValue("Write the Virtual Research Environment description here"); vredescription.setAllowBlank(false); fieldSet.add(vredescription,formData); panel.add(fieldSet); fieldSet = new FieldSet(); fieldSet.setWidth("95%"); fieldSet.setHeading("Life time"); layout = new FormLayout(); layout.setLabelWidth(100); fieldSet.setLayout(layout); DateTimeFormat fmt = DateTimeFormat.getFormat("MMMM dd, yyyy"); fromDate = new DateField(); fromDate.setName("date"); fromDate.setFieldLabel("From"); fromDate.getPropertyEditor().setFormat(fmt); fromDate.setValue(new Date()); fromDate.setAllowBlank(false); fromDate.setAutoValidate(true); fieldSet.add(fromDate,formData); toDate = new DateField(); toDate.setName("date"); toDate.setFieldLabel("To"); Date date = new Date(); date.setYear(date.getYear() + 1); toDate.setValue(date); toDate.getPropertyEditor().setFormat(fmt); toDate.setAllowBlank(false); toDate.setAutoValidate(true); fieldSet.add(toDate,formData); panel.add(fieldSet); initComponent(panel); } public void setData(Map result, VREDescriptionBean bean) { ListStore store = new ListStore(); vremanager.setStore(store); if (result != null && result.get("Manager")!= null) { for(String value : (List)result.get("Manager")){ BaseModel managerModel = new BaseModel(); managerModel.set("name", value); store.add(managerModel); vremanager.setValue(managerModel); } } if(result != null && result.get("Designer") != null) vredesigner.setValue((String)result.get("Designer")); if(bean == null) return; ListStore list = vremanager.getStore(); for(int i = 0; i < list.getCount(); i++) { BaseModel manager = list.getAt(i); if(manager.get("name").equals(bean.getManager())) { vremanager.setValue(manager); } } vrename.setValue(bean.getName()); vredesigner.setValue(bean.getDesigner()); vredescription.setValue(bean.getDescription()); fromDate.setValue(bean.getStartTime()); toDate.setValue(bean.getEndTime()); } public TextField getVREName() { return vrename; } public TextField getVREDesigner() { return vredesigner; } public ComboBox getVREManager() { return vremanager; } public TextArea getVREDescription() { return vredescription; } public Widget asWidget() { return this; } public DateField getFromDate() { return fromDate; } public DateField getToDate() { return toDate; } }