blob: 647558a231625fa2055933c1e3d48a632bab876f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2003 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-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.*;
/**
* 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();
}
}