blob: 3dc2210c2819a10d538f63d9dc1b078f8038c7a0 [file] [log] [blame]
/*
* 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;
}
}
}
}
}