| /******************************************************************************* |
| * Copyright (c) 2000, 2004 IBM Corporation 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: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.ui.examples.propertysheet; |
| |
| import java.util.Vector; |
| |
| import org.eclipse.ui.views.properties.IPropertyDescriptor; |
| import org.eclipse.ui.views.properties.IPropertySource; |
| import org.eclipse.ui.views.properties.PropertyDescriptor; |
| |
| /** |
| * Example IPropertySource is editable and whose childern properties are itself not editable. |
| * The values of "userid" and "mailserver" are parsed from setting "email" |
| */ |
| public class EmailAddress implements IPropertySource { |
| |
| //Property-Value |
| private String userid; |
| |
| private String domain; |
| |
| //Default Property-Value |
| private static final String USERID_DEFAULT = MessageUtil |
| .getString("unknownUser"); //$NON-NLS-1$ |
| |
| private static final String DOMAIN_DEFAULT = MessageUtil |
| .getString("unknownDomain"); //$NON-NLS-1$ |
| |
| //Property unique keys |
| public static final String P_ID_USERID = "EmailAddress.userid"; //$NON-NLS-1$ |
| |
| public static final String P_ID_DOMAIN = "EmailAddress.domain"; //$NON-NLS-1$ |
| |
| //Property display keys |
| public static final String P_USERID = MessageUtil.getString("userid"); //$NON-NLS-1$ |
| |
| public static final String P_DOMAIN = MessageUtil.getString("domain"); //$NON-NLS-1$ |
| |
| //Property-Descriptors |
| private static Vector descriptors; |
| |
| static { |
| descriptors = new Vector(2, 2); |
| //non-editable child properties --> provide no editors |
| descriptors.addElement(new PropertyDescriptor(P_ID_USERID, P_USERID)); |
| descriptors.addElement(new PropertyDescriptor(P_ID_DOMAIN, P_DOMAIN)); |
| } |
| |
| /** |
| * EmailAddress Default Constructor |
| */ |
| public EmailAddress() { |
| super(); |
| } |
| |
| /** |
| * Convience EmailAddress constructor. |
| * Calls setEmailAddress() to parse emailAddress |
| * @param emailAddress java.lang.String, in the form userid@domain |
| * @throws java.lang.IllegalArgumentException, if does not subscribe to form |
| */ |
| public EmailAddress(String emailAddress) throws IllegalArgumentException { |
| super(); |
| setEmailAddress(emailAddress); |
| |
| } |
| |
| /** |
| * Returns the descriptors |
| */ |
| private static Vector getDescriptors() { |
| return descriptors; |
| } |
| |
| /** |
| * Returns the domain |
| */ |
| private String getDomain() { |
| if (domain == null) |
| domain = DOMAIN_DEFAULT; |
| return domain; |
| } |
| |
| /* (non-Javadoc) |
| * Method declared on IPropertySource |
| */ |
| public Object getEditableValue() { |
| return this.toString(); |
| } |
| |
| /* (non-Javadoc) |
| * Method declared on IPropertySource |
| */ |
| public IPropertyDescriptor[] getPropertyDescriptors() { |
| return (IPropertyDescriptor[]) getDescriptors().toArray( |
| new IPropertyDescriptor[getDescriptors().size()]); |
| } |
| |
| /** |
| * The <code>EmailAddress</code> implementation of this |
| * <code>IPropertySource</code> method returns the following properties |
| * |
| * 1) P_USERID returns String, values before "@" |
| * 2) P_DOMAIN returns String, values after "@" |
| * |
| * Observe the available properties must always equal those listed |
| * in the property descriptors |
| */ |
| public Object getPropertyValue(Object propKey) { |
| if (propKey.equals(P_ID_USERID)) |
| return getUserid(); |
| if (propKey.equals(P_ID_DOMAIN)) |
| return getDomain(); |
| return null; |
| } |
| |
| /** |
| * Returns the userid |
| */ |
| private String getUserid() { |
| if (userid == null) |
| userid = USERID_DEFAULT; |
| return userid; |
| } |
| |
| /* (non-Javadoc) |
| * Method declared on IPropertySource |
| */ |
| public boolean isPropertySet(Object property) { |
| return false; |
| } |
| |
| /* (non-Javadoc) |
| * Method declared on IPropertySource |
| */ |
| public void resetPropertyValue(Object property) { |
| return; |
| } |
| |
| /** |
| * Sets the domain |
| */ |
| private void setDomain(java.lang.String newDomain) { |
| domain = newDomain; |
| } |
| |
| /** |
| * Parses emailAddress into domain and userid. Throws SetPropertyVetoException |
| * if emailAddress does not contain an userid and domain seperated by '@'. |
| * |
| * @param emailAddress the email address |
| * @throws IllegalArgumentException |
| */ |
| private void setEmailAddress(String emailAddress) |
| throws IllegalArgumentException { |
| if (emailAddress == null) |
| throw new IllegalArgumentException(MessageUtil |
| .getString("emailaddress_cannot_be_set_to_null")); //$NON-NLS-1$ |
| int index = emailAddress.indexOf('@'); |
| int length = emailAddress.length(); |
| if (index > 0 && index < length) { |
| setUserid(emailAddress.substring(0, index)); |
| setDomain(emailAddress.substring(index + 1)); |
| return; |
| } |
| throw new IllegalArgumentException( |
| MessageUtil |
| .getString("invalid_email_address_format_should_have_been_validated")); //$NON-NLS-1$ |
| } |
| |
| /** |
| * The <code>Address</code> implementation of this |
| * <code>IPropertySource</code> method |
| * defines the following Setable properties |
| * |
| * 1) P_USERID, expects String |
| * 2) P_DOMAIN, expects String |
| */ |
| public void setPropertyValue(Object name, Object value) { |
| if (name.equals(P_ID_USERID)) { |
| setUserid((String) value); |
| return; |
| } |
| if (name.equals(P_ID_DOMAIN)) { |
| setDomain((String) value); |
| return; |
| } |
| } |
| |
| /** |
| * Sets the userid |
| */ |
| private void setUserid(String newUserid) { |
| userid = newUserid; |
| } |
| |
| /** |
| * The value as displayed in the Property Sheet. |
| * @return java.lang.String |
| */ |
| public String toString() { |
| StringBuffer strbuffer = new StringBuffer(getUserid()); |
| strbuffer.append('@'); |
| strbuffer.append(getDomain()); |
| return strbuffer.toString(); |
| } |
| } |