/*******************************************************************************
* Copyright (c) 2012 Kai Toedter and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html.
*
* Contributors:
* Kai Toedter - initial API and implementation
******************************************************************************/
package com.toedter.gwt.demo.contacts.client.ui;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
import com.toedter.gwt.demo.contacts.shared.Contact;
public class ContactDetailsView2 implements IContactDetailsView {
private final FlexTable flexTable;
private int row;
private int colSpan;
private final TextBox titleText;
private final TextBox nameText;
private final TextBox companyText;
private final TextBox jobTitleText;
private final TextBox streetText;
private final TextBox zipText;
private final TextBox cityText;
private final TextBox countryText;
private final TextBox emailText;
private final TextBox webText;
private final Image image;
private final Resources resources;
private Contact contact;
public ContactDetailsView2() {
resources = GWT.create(Resources.class);
colSpan = 2;
flexTable = new FlexTable();
// flexTable.setStyleName("greyBackground");
flexTable.setWidget(1, 4, new Image(resources.fiveXfive()));
flexTable.getFlexCellFormatter().setWidth(1, 4, "5px");
flexTable.setWidget(1, 6, new Image(resources.fiveXfive()));
flexTable.getFlexCellFormatter().setWidth(1, 6, "5px");
image = new Image(resources.dummyContact());
flexTable.setWidget(1, 5, image);
flexTable.getFlexCellFormatter().setRowSpan(1, 5, 4);
flexTable.getFlexCellFormatter().setVerticalAlignment(1, 5, HasVerticalAlignment.ALIGN_TOP);
createSeparator("General");
titleText = createTextBox("Title:");
nameText = createTextBox("Name:");
companyText = createTextBox("Company:");
jobTitleText = createTextBox("Job Title:");
colSpan = 4;
createSeparator("Business Address");
streetText = createTextBox("Street:");
cityText = createTextBox("City:");
zipText = createTextBox("Zip:");
countryText = createTextBox("Country:");
createSeparator("Business Internet");
emailText = createTextBox("Email:");
webText = createTextBox("Web:");
}
private TextBox createTextBox(String text) {
flexTable.setText(row, 2, text);
flexTable.getFlexCellFormatter().setHorizontalAlignment(row, 2, HasHorizontalAlignment.ALIGN_RIGHT);
TextBox textBox = new TextBox();
textBox.setWidth("100%");
flexTable.setWidget(row, 3, textBox);
flexTable.getFlexCellFormatter().setColSpan(row, 3, colSpan);
flexTable.getFlexCellFormatter().setWidth(row++, 3, "100%");
return textBox;
}
private void createSeparator(String text) {
flexTable.setText(row, 1, text);
flexTable.getFlexCellFormatter().setStyleName(row, 1, "separatorLabel");
flexTable.getFlexCellFormatter().setVerticalAlignment(row, 1, HasVerticalAlignment.ALIGN_BOTTOM);
flexTable.getFlexCellFormatter().setHeight(row, 1, "25px");
flexTable.getFlexCellFormatter().setColSpan(row++, 1, 3);
}
@Override
public Widget asWidget() {
return flexTable;
}
@Override
public void setContact(Contact contact) {
this.contact = contact;
if (contact == null) {
return;
}
titleText.setText(contact.getTitle());
nameText.setText(contact.getFirstName() + " " + contact.getLastName());
companyText.setText(contact.getCompany());
jobTitleText.setText(contact.getJobTitle());
streetText.setText(contact.getStreet());
cityText.setText(contact.getCity());
zipText.setText(contact.getZip());
countryText.setText(contact.getCountry());
emailText.setText(contact.getEmail());
webText.setText(contact.getWebPage());
Image image = new Image(contact.getJpegString());
flexTable.setWidget(1, 5, image);
}
@Override
public void setPresenter(Presenter listener) {
}
@Override
public String getContactEmail() {
return emailText.getText();
}
@Override
public void clear() {
contact = null;
titleText.setText("");
nameText.setText("");
companyText.setText("");
jobTitleText.setText("");
streetText.setText("");
cityText.setText("");
zipText.setText("");
countryText.setText("");
emailText.setText("");
webText.setText("");
Image image = new Image(resources.dummyContact());
flexTable.setWidget(1, 5, image);
}
@Override
public Contact getContact() {
if (contact == null) {
contact = new Contact();
}
contact.setTitle(titleText.getText());
String[] names = nameText.getText().split(" ");
if (names.length > 0) {
contact.setFirstName(names[0]);
}
if (names.length > 1) {
contact.setLastName(names[1]);
}
if (names.length > 2) {
contact.setMiddleName(names[1]);
contact.setLastName(names[2]);
}
contact.setCompany(companyText.getText());
contact.setJobTitle(jobTitleText.getText());
contact.setStreet(streetText.getText());
contact.setCity(cityText.getText());
contact.setZip(zipText.getText());
contact.setCountry(countryText.getText());
contact.setEmail(emailText.getText());
contact.setWebPage(webText.getText());
return contact;
}
}