/*******************************************************************************
* Copyright (c) 2011 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.e4.demo.contacts.swing.views;
import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import com.toedter.e4.demo.contacts.generic.model.Contact;
import java.awt.BorderLayout;
import javax.inject.Inject;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.eclipse.e4.core.di.annotations.Optional;
import org.eclipse.osgi.internal.signedcontent.Base64;
@SuppressWarnings("restriction")
public class DetailsView {
private final DefaultFormBuilder builder;
private JTextField titleField;
private JTextField nameField;
private JTextField companyField;
private JTextField jobTitleField;
private JTextField noteField;
private JTextField streetField;
private JTextField cityField;
private JTextField zipField;
private JTextField countryField;
private JTextField phoneField;
private JTextField mobileField;
private JTextField emailField;
private JTextField webSiteField;
private JLabel imageLabel;
@Inject
public DetailsView(JPanel parent) {
FormLayout layout = new FormLayout(
"right:max(50dlu;p), 4dlu, pref:grow, 3dlu, 40dlu",
"p, 1dlu, p, 1dlu, p, 1dlu, p, 1dlu, p, 1dlu, p, 4dlu, p, 1dlu, p, 1dlu, p, 1dlu, p, 1dlu, p, 4dlu, p, 1dlu, p, 1dlu, p, 4dlu, p, 1dlu, p, 1dlu, p, 1dlu, p, 1dlu, p, 1dlu, p, 1dlu, p");
// "");
builder = new DefaultFormBuilder(layout);
builder.setDefaultDialogBorder();
CellConstraints cc = new CellConstraints();
builder.addSeparator("General", cc.xyw(1, 1, 5));
builder.addLabel("Title:", cc.xy(1, 3));
builder.add(titleField = new JTextField(), cc.xy(3, 3));
builder.addLabel("Name:", cc.xy(1, 5));
builder.add(nameField = new JTextField(), cc.xy(3, 5));
builder.addLabel("Company:", cc.xy(1, 7));
builder.add(companyField = new JTextField(), cc.xy(3, 7));
builder.addLabel("Job Title:", cc.xy(1, 9));
builder.add(jobTitleField = new JTextField(), cc.xyw(3, 9, 3));
builder.add(imageLabel = new JLabel(), cc.xywh(5, 3, 1, 5));
builder.addLabel("Note:", cc.xy(1, 11));
builder.add(noteField = new JTextField(), cc.xyw(3, 11, 3));
builder.addSeparator("Business Address", cc.xyw(1, 13, 5));
builder.addLabel("Street:", cc.xy(1, 15));
builder.add(streetField = new JTextField(), cc.xyw(3, 15, 3));
builder.addLabel("City:", cc.xy(1, 17));
builder.add(cityField = new JTextField(), cc.xyw(3, 17, 3));
builder.addLabel("Zip:", cc.xy(1, 19));
builder.add(zipField = new JTextField(), cc.xyw(3, 19, 3));
builder.addLabel("Country:", cc.xy(1, 21));
builder.add(countryField = new JTextField(), cc.xyw(3, 21, 3));
builder.addSeparator("Business Phones", cc.xyw(1, 23, 5));
builder.addLabel("Phone:", cc.xy(1, 25));
builder.add(phoneField = new JTextField(), cc.xyw(3, 25, 3));
builder.addLabel("Mobile:", cc.xy(1, 27));
builder.add(mobileField = new JTextField(), cc.xyw(3, 27, 3));
builder.addSeparator("Business Internet", cc.xyw(1, 29, 5));
builder.addLabel("E-Mail:", cc.xy(1, 31));
builder.add(emailField = new JTextField(), cc.xyw(3, 31, 3));
builder.addLabel("Web Site:", cc.xy(1, 33));
builder.add(webSiteField = new JTextField(), cc.xyw(3, 33, 3));
JPanel panel = builder.getPanel();
parent.add(panel, BorderLayout.CENTER);
}
@Inject
public void setSelection(@Optional final Contact contact) {
if (contact != null) {
titleField.setText(contact.getTitle());
nameField.setText(contact.getFirstName() + " " + contact.getLastName());
companyField.setText(contact.getCompany());
jobTitleField.setText(contact.getJobTitle());
noteField.setText(contact.getNote());
streetField.setText(contact.getStreet());
cityField.setText(contact.getCity());
zipField.setText(contact.getZip());
countryField.setText(contact.getCountry());
phoneField.setText(contact.getPhone());
mobileField.setText(contact.getMobile());
emailField.setText(contact.getEmail());
webSiteField.setText(contact.getWebPage());
String jpegString = contact.getJpegString();
byte[] imageBytes = Base64.decode(jpegString.getBytes());
ImageIcon icon = new ImageIcon(imageBytes);
imageLabel.setIcon(icon);
}
}
}