/* * Copyright 2010 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.gwt.sample.showcase.client.content.cell; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat; import com.google.gwt.sample.showcase.client.content.cell.ContactDatabase.Category; import com.google.gwt.sample.showcase.client.content.cell.ContactDatabase.ContactInfo; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.ListBox; import com.google.gwt.user.client.ui.TextArea; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.user.datepicker.client.DateBox; /** * A form used for editing contacts. */ public class ContactInfoForm extends Composite { private static Binder uiBinder = GWT.create(Binder.class); interface Binder extends UiBinder<Widget, ContactInfoForm> { } @UiField TextArea addressBox; @UiField DateBox birthdayBox; @UiField ListBox categoryBox; @UiField Button createButton; @UiField TextBox firstNameBox; @UiField TextBox lastNameBox; @UiField Button updateButton; private ContactInfo contactInfo; public ContactInfoForm() { initWidget(uiBinder.createAndBindUi(this)); DateTimeFormat dateFormat = DateTimeFormat.getFormat( PredefinedFormat.DATE_LONG); birthdayBox.setFormat(new DateBox.DefaultFormat(dateFormat)); // Add the categories to the category box. final Category[] categories = ContactDatabase.get().queryCategories(); for (Category category : categories) { categoryBox.addItem(category.getDisplayName()); } // Initialize the contact to null. setContact(null); // Handle events. updateButton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { if (contactInfo == null) { return; } // Update the contact. contactInfo.setFirstName(firstNameBox.getText()); contactInfo.setLastName(lastNameBox.getText()); contactInfo.setAddress(addressBox.getText()); contactInfo.setBirthday(birthdayBox.getValue()); int categoryIndex = categoryBox.getSelectedIndex(); contactInfo.setCategory(categories[categoryIndex]); // Update the views. ContactDatabase.get().refreshDisplays(); } }); createButton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { int categoryIndex = categoryBox.getSelectedIndex(); Category category = categories[categoryIndex]; contactInfo = new ContactInfo(category); contactInfo.setFirstName(firstNameBox.getText()); contactInfo.setLastName(lastNameBox.getText()); contactInfo.setAddress(addressBox.getText()); contactInfo.setBirthday(birthdayBox.getValue()); ContactDatabase.get().addContact(contactInfo); setContact(contactInfo); } }); } public void setContact(ContactInfo contact) { this.contactInfo = contact; updateButton.setEnabled(contact != null); if (contact != null) { firstNameBox.setText(contact.getFirstName()); lastNameBox.setText(contact.getLastName()); addressBox.setText(contact.getAddress()); birthdayBox.setValue(contact.getBirthday()); Category category = contact.getCategory(); Category[] categories = ContactDatabase.get().queryCategories(); for (int i = 0; i < categories.length; i++) { if (category == categories[i]) { categoryBox.setSelectedIndex(i); break; } } } } }