// Created on 30.09.2007
package org.eclipse.rap.rms.ui.internal.datamodel;
import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.osgi.util.NLS;
import org.eclipse.rap.rms.ui.internal.Activator;
import org.eclipse.rap.rms.ui.internal.RMSMessages;
import org.eclipse.rap.rms.ui.internal.datamodel.PageUtil.Container;
import org.eclipse.rap.rms.ui.internal.datamodel.PageUtil.EMailValidator;
import org.eclipse.rap.rms.ui.internal.datamodel.PageUtil.PhoneNumberValidator;
import org.eclipse.swt.custom.CCombo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.editor.FormPage;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
public class PrincipalOverviewPage extends FormPage {
private static final String OVERVIEW = "Overview"; //$NON-NLS-1$
private final PrincipalCopy principal;
private PhoneNumberValidator faxValidator;
private PhoneNumberValidator mobileValidator;
private PhoneNumberValidator phoneValidator;
private EMailValidator eMailValidator;
private Text txtPhone;
private Text txtMobile;
private Text txtFax;
private Text txtEMail;
public PrincipalOverviewPage( final FormEditor editor,
final PrincipalCopy principal ) {
super( editor, OVERVIEW, RMSMessages.get().PrincipalOverviewPage_Title );
this.principal = principal;
this.principal.setDirtyNotificator( new Runnable() {
public void run() {
PrincipalOverviewPage.this.firePropertyChange( PROP_DIRTY );
}
} );
}
public void init( final IEditorSite site, final IEditorInput input ) {
super.init( site, input );
setTitleToolTip( RMSMessages.get().PrincipalOverviewPage_ToolTip );
}
protected void createFormContent( final IManagedForm managedForm ) {
ScrolledForm scrolledForm = managedForm.getForm();
FormToolkit toolkit = managedForm.getToolkit();
Composite body
= PageUtil.createBody( scrolledForm, Activator.IMG_FORM_HEAD_OVERVIEW );
DataBindingContext ctx = PageUtil.createBindingContext();
// general info section
Composite info
= PageUtil.createGeneralInfoSection( scrolledForm,
toolkit,
body,
principal.getName() );
Container cInfo = new Container( toolkit, info );
PageUtil.createLabelText( cInfo, RMSMessages.get().PrincipalOverviewPage_Name, principal.getName(), true );
Text txtStreet = PageUtil.createLabelText( cInfo,
RMSMessages.get().PrincipalOverviewPage_Street,
principal.getStreet(),
false );
PageUtil.bindText( ctx, principal, txtStreet, PrincipalCopy.STREET );
Text txtCity = PageUtil.createLabelText( cInfo,
RMSMessages.get().PrincipalOverviewPage_City,
principal.getCity(),
false );
PageUtil.bindText( ctx, principal, txtCity, PrincipalCopy.CITY );
Text txtPostCode = PageUtil.createLabelText( cInfo,
RMSMessages.get().PrincipalOverviewPage_ZIPPostalCode,
principal.getPostCode(),
false );
PageUtil.bindText( ctx, principal, txtPostCode, PrincipalCopy.POST_CODE );
CCombo cboCountry = PageUtil.createLabelCombo( cInfo,
RMSMessages.get().PrincipalOverviewPage_Country,
principal.getCountry(),
Activator.COUNTRIES );
PageUtil.bindCombo( ctx, principal, cboCountry, PrincipalCopy.COUNTRY );
// contact person section
Composite contact
= PageUtil.createSection( scrolledForm,
toolkit,
body,
RMSMessages.get().PrincipalOverviewPage_ContactPerson,
RMSMessages.get().PrincipalOverviewPage_EditContactInfo,
3,
false );
Container cContact = new Container( toolkit, contact );
Text txtLastName = PageUtil.createLabelText( cContact,
RMSMessages.get().PrincipalOverviewPage_Lastname,
principal.getLastName(),
false );
PageUtil.bindText( ctx, principal, txtLastName, PrincipalCopy.LAST_NAME );
Text txtFirstName = PageUtil.createLabelText( cContact,
RMSMessages.get().PrincipalOverviewPage_Firstname,
principal.getFirstName(),
false );
PageUtil.bindText( ctx, principal, txtFirstName, PrincipalCopy.FIRST_NAME );
txtEMail = PageUtil.createLabelText( cContact,
RMSMessages.get().PrincipalOverviewPage_EMail,
principal.getEMail(),
false );
eMailValidator = new EMailValidator( txtEMail );
PageUtil.bindText( ctx,
principal,
txtEMail,
PrincipalCopy.EMAIL,
eMailValidator );
txtPhone = PageUtil.createLabelText( cContact,
RMSMessages.get().PrincipalOverviewPage_Phone,
principal.getPhoneNumber(),
false );
phoneValidator = new PhoneNumberValidator( txtPhone );
PageUtil.bindText( ctx,
principal,
txtPhone,
PrincipalCopy.PHONE_NUMBER,
phoneValidator );
txtMobile = PageUtil.createLabelText( cContact,
RMSMessages.get().PrincipalOverviewPage_Mobile,
principal.getMobileNumber(),
false );
mobileValidator = new PhoneNumberValidator( txtMobile );
PageUtil.bindText( ctx,
principal,
txtMobile,
PrincipalCopy.MOBILE_NUMBER,
mobileValidator );
txtFax = PageUtil.createLabelText( cContact,
RMSMessages.get().PrincipalOverviewPage_Fax,
principal.getFaxNumber(),
false );
faxValidator = new PhoneNumberValidator( txtFax );
PageUtil.bindText( ctx,
principal,
txtFax,
PrincipalCopy.FAX_NUMBER,
faxValidator );
}
@Override
public boolean isDirty() {
return principal.isDirty();
}
@Override
public void doSave( final IProgressMonitor monitor ) {
if( faxValidator.validate( txtFax.getText() ).isOK()
&& mobileValidator.validate( txtMobile.getText() ).isOK()
&& phoneValidator.validate( txtPhone.getText() ).isOK()
&& eMailValidator.validate( txtEMail.getText() ).isOK() )
{
principal.save();
} else {
//TODO : [yao]NLS#
Object[] param = new Object[] { principal.getName() };
String msg
= NLS.bind( RMSMessages.get().PrincipalOverviewPage_CouldNotChange,
param );
MessageDialog.openInformation( getSite().getShell(),
RMSMessages.get().PrincipalOverviewPage_SaveAborted,
msg );
}
}
}