blob: db59f96bdb4695ec76082249efce6c2758c18ca8 [file] [log] [blame]
/*******************************************************************************
* 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.TextPropertyDescriptor;
/**
* Example IPropertySource whose value as well as its children are editable.
*/
public class Name implements IPropertySource {
private String firstName = ""; //$NON-NLS-1$
private String lastName = ""; //$NON-NLS-1$
private String initial = ""; //$NON-NLS-1$
// property unique keys
public static String P_ID_FIRSTNAME = "Name.FirstName"; //$NON-NLS-1$
public static String P_ID_LASTNAME = "Name.LastName"; //$NON-NLS-1$
public static String P_ID_MIDDLENAME = "Name.Middle"; //$NON-NLS-1$
// property display keys
public static String P_FIRSTNAME = MessageUtil.getString("FirstName"); //$NON-NLS-1$
public static String P_LASTNAME = MessageUtil.getString("LastName"); //$NON-NLS-1$
public static String P_MIDDLENAME = MessageUtil.getString("Middle"); //$NON-NLS-1$
// default values
//
private static final String FIRSTNAME_DEFAULT = null;
private static final String LASTNAME_DEFAULT = null;
private static final String MIDDLENAME_DEFAULT = null;
public static final String P_DESCRIPTORS = "properties"; //$NON-NLS-1$
static private Vector descriptors;
static {
descriptors = new Vector();
descriptors.addElement(new TextPropertyDescriptor(P_ID_FIRSTNAME,
P_FIRSTNAME));
descriptors.addElement(new TextPropertyDescriptor(P_ID_LASTNAME,
P_LASTNAME));
descriptors.addElement(new TextPropertyDescriptor(P_ID_MIDDLENAME,
P_MIDDLENAME));
}
/**
* Creates a new Name.
* @param name String in the form "firstname initial lastname"
*/
public Name(String name) {
int index1, index2;
index1 = name.indexOf(' ');
if (index1 < 0)
index1 = name.length();
index2 = name.lastIndexOf(' ');
if (index2 > 0)
lastName = name.substring(index2 + 1);
firstName = name.substring(0, index1);
if (index1 < index2)
initial = name.substring(index1 + 1, index2);
}
/**
* Returns the descriptors
*/
private static Vector getDescriptors() {
return descriptors;
}
/* (non-Javadoc)
* Method declared on IPropertySource
*/
public Object getEditableValue() {
return this.toString();
}
/**
* Returns the first name
*/
private String getFirstName() {
return firstName;
}
/**
* Returns the initial
*/
private String getInitial() {
return initial;
}
/**
* Returns the last name
*/
private String getLastName() {
return lastName;
}
/* (non-Javadoc)
* Method declared on IPropertySource
*/
public IPropertyDescriptor[] getPropertyDescriptors() {
return (IPropertyDescriptor[]) getDescriptors().toArray(
new IPropertyDescriptor[getDescriptors().size()]);
}
/**
* The <code>Name</code> implementation of this
* <code>IPropertySource</code> method returns the following properties
*
* 1) P_FIRSTNAME returns String, firstname
* 2) P_LASTNAME returns String, lastname
* 3) P_MIDDLENAME returns String, middle
*/
public Object getPropertyValue(Object propKey) {
if (P_ID_FIRSTNAME.equals(propKey))
return getFirstName();
if (P_ID_LASTNAME.equals(propKey))
return getLastName();
if (P_ID_MIDDLENAME.equals(propKey))
return getInitial();
return null;
}
/* (non-Javadoc)
* Method declared on IPropertySource
*/
public boolean isPropertySet(Object key) {
if (key.equals(P_ID_FIRSTNAME))
return getFirstName() != FIRSTNAME_DEFAULT;
if (key.equals(P_ID_LASTNAME))
return getLastName() != LASTNAME_DEFAULT;
if (key.equals(P_ID_MIDDLENAME))
return getInitial() != MIDDLENAME_DEFAULT;
return false;
}
/**
* Implemented as part of IPropertySource framework. Sets the specified property
* to its default value.
*
* @see IPropertySource#resetPropertyValue(Object)
* @param property The property to reset.
*/
public void resetPropertyValue(Object property) {
if (P_ID_FIRSTNAME.equals(property)) {
setFirstName(FIRSTNAME_DEFAULT);
return;
}
if (P_ID_LASTNAME.equals(property)) {
setLastName(LASTNAME_DEFAULT);
return;
}
if (P_ID_MIDDLENAME.equals(property)) {
setInitial(MIDDLENAME_DEFAULT);
return;
}
}
/**
* Sets the first name
*/
private void setFirstName(String newFirstName) {
firstName = newFirstName;
}
/**
* Sets the initial
*/
private void setInitial(String newInitial) {
initial = newInitial;
}
/**
* Sets the last name
*/
private void setLastName(String newLastName) {
lastName = newLastName;
}
/**
* The <code>Name</code> implementation of this
* <code>IPropertySource</code> method
* defines the following Setable properties
*
* 1) P_FIRST, expects String, sets the firstname of this OrganizationElement
* 2) P_MIDDLENAME, expects String, sets middlename of this OrganizationElement
* 3) P_LASTNAME, expects String, sets lastname of this OrganizationElement
*/
public void setPropertyValue(Object propName, Object val) {
if (P_ID_FIRSTNAME.equals(propName)) {
setFirstName((String) val);
return;
}
if (P_ID_LASTNAME.equals(propName)) {
setLastName((String) val);
return;
}
if (P_ID_MIDDLENAME.equals(propName)) {
setInitial((String) val);
return;
}
}
/**
* The value as displayed in the Property Sheet. Will not print default values
* @return java.lang.String
*/
public String toString() {
StringBuffer outStringBuffer = new StringBuffer();
if (getFirstName() != FIRSTNAME_DEFAULT) {
outStringBuffer.append(getFirstName());
outStringBuffer.append(" "); //$NON-NLS-1$
}
if (getInitial() != MIDDLENAME_DEFAULT) {
outStringBuffer.append(getInitial());
outStringBuffer.append(" "); //$NON-NLS-1$
}
if (getLastName() != LASTNAME_DEFAULT) {
outStringBuffer.append(getLastName());
}
return outStringBuffer.toString();
}
}