blob: 3b0197935550d27a97b506bdbd1f7e28d75f05fe [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;
/**
* PropertySource containing street information pertenant to Address
*/
public class StreetAddress implements IPropertySource {
//properties
private Integer buildNo;
private String aptBox;
private String streetName;
//default property values
private static final Integer BUILD_NO_DEFAULT = new Integer(0);
private static final String APTBOX_DEFAULT = MessageUtil
.getString("unspecified"); //$NON-NLS-1$
private static final String STREETNAME_DEFAULT = MessageUtil
.getString("unspecified"); //$NON-NLS-1$
//property unique keys
public static final String P_ID_BUILD_NO = "Street.buildingNo"; //$NON-NLS-1$
public static final String P_ID_APTBOX = "Street.aptNo"; //$NON-NLS-1$
public static final String P_ID_STREET = "Street.street"; //$NON-NLS-1$
//property display keys
public static final String P_BUILD_NO = MessageUtil
.getString("building_number"); //$NON-NLS-1$
public static final String P_APTBOX = MessageUtil
.getString("apt.no_or_box.no"); //$NON-NLS-1$
public static final String P_STREET = MessageUtil.getString("street"); //$NON-NLS-1$
//
private static Vector descriptors;
static {
descriptors = new Vector();
descriptors.addElement(new TextPropertyDescriptor(P_ID_BUILD_NO,
P_BUILD_NO));
descriptors
.addElement(new TextPropertyDescriptor(P_ID_APTBOX, P_APTBOX));
descriptors
.addElement(new TextPropertyDescriptor(P_ID_STREET, P_STREET));
}
/**
* Street Default Constructor.
*/
public StreetAddress() {
super();
}
/**
* Convenience Street constructor. AptBox set to default
*/
public StreetAddress(int buildNo, String streetName) {
super();
setBuildNo(new Integer(buildNo));
setStreetName(streetName);
}
/**
* Convenience Street constructor.
*/
public StreetAddress(int buildNo, String aptBox, String streetName) {
super();
setBuildNo(new Integer(buildNo));
setAptBox(aptBox);
setStreetName(streetName);
}
/* (non-Javadoc)
* Method declared on Object
*/
public boolean equals(Object ob) {
return toString().equals(ob.toString());
}
/**
* the appartment number
*/
private String getAptBox() {
if (aptBox == null)
aptBox = APTBOX_DEFAULT;
return aptBox;
}
/**
* Returns the building number
*/
private Integer getBuildNo() {
if (buildNo == null)
buildNo = BUILD_NO_DEFAULT;
return buildNo;
}
/**
* Returns the descriptors
*/
private static Vector getDescriptors() {
return descriptors;
}
/* (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>Name</code> implementation of this
* <code>IPropertySource</code> method returns the following properties
*
* 1) P_BUILD_NO returns java.lang.Integer
* 2) P_APTBOX returns java.lang.String
* 3) P_STREET returns java.lang.String
*/
public Object getPropertyValue(Object propKey) {
if (propKey.equals(P_ID_BUILD_NO))
return getBuildNo().toString();
if (propKey.equals(P_ID_APTBOX))
return getAptBox();
if (propKey.equals(P_ID_STREET))
return getStreetName();
return null;
}
/**
* Returns the street name
*/
private String getStreetName() {
if (streetName == null)
streetName = STREETNAME_DEFAULT;
return streetName;
}
/* (non-Javadoc)
* Method declared on Object
*/
public int hashCode() {
return toString().hashCode();
}
/* (non-Javadoc)
* Method declared on IPropertySource
*/
public boolean isPropertySet(Object property) {
if (property.equals(P_ID_BUILD_NO))
return getBuildNo() != BUILD_NO_DEFAULT;
if (property.equals(P_ID_APTBOX))
return getAptBox() != APTBOX_DEFAULT;
if (property.equals(P_ID_STREET))
return getStreetName() != STREETNAME_DEFAULT;
return false;
}
/* (non-Javadoc)
* Method declared on IPropertySource
*/
public void resetPropertyValue(Object property) {
if (property.equals(P_ID_BUILD_NO)) {
setBuildNo(BUILD_NO_DEFAULT);
return;
}
if (property.equals(P_ID_APTBOX)) {
setAptBox(APTBOX_DEFAULT);
return;
}
if (property.equals(P_ID_STREET)) {
setStreetName(STREETNAME_DEFAULT);
return;
}
}
/**
* Sets the appartment number
*/
private void setAptBox(String newAptBox) {
aptBox = newAptBox;
}
/**
* Sets the building number
*/
private void setBuildNo(Integer newBuildNo) {
buildNo = newBuildNo;
}
/**
* The <code>Name</code> implementation of this
* <code>IPropertySource</code> method
* defines the following Setable properties
*
* 1) P_BUILD_NO expects java.lang.Integer
* 2) P_APTBOX expects java.lang.String
* 3) P_STREET expects java.lang.String
*/
public void setPropertyValue(Object name, Object value) {
if (name.equals(P_ID_BUILD_NO)) {
try {
setBuildNo(new Integer(Integer.parseInt((String) value)));
} catch (NumberFormatException e) {
setBuildNo(BUILD_NO_DEFAULT);
}
return;
}
if (name.equals(P_ID_APTBOX)) {
setAptBox((String) value);
return;
}
if (name.equals(P_ID_STREET)) {
setStreetName((String) value);
return;
}
}
/**
* Sets the street name
*/
private void setStreetName(String newStreetName) {
streetName = newStreetName;
}
/**
* 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 (!getAptBox().equals(APTBOX_DEFAULT)) {
outStringBuffer.append(getAptBox());
outStringBuffer.append(", "); //$NON-NLS-1$
}
if (!getBuildNo().equals(BUILD_NO_DEFAULT)) {
outStringBuffer.append(getBuildNo());
outStringBuffer.append(" "); //$NON-NLS-1$
}
if (!getStreetName().equals(STREETNAME_DEFAULT)) {
outStringBuffer.append(getStreetName());
}
return outStringBuffer.toString();
}
}