/* * @(#)XObject.java 2.5.0 23 August 2006 * * Copyright 2006 * College of Computer and Information Science * Northeastern University * Boston, MA 02115 * * The Java Power Tools software may be used for educational * purposes as long as this copyright notice is retained intact * at the top of all source files. * * To discuss possible commercial use of this software, * contact Richard Rasala at Northeastern University, * College of Computer and Information Science, * 617-373-2462 or rasala@ccs.neu.edu. * * The Java Power Tools software has been designed and built * in collaboration with Viera Proulx and Jeff Raab. * * Should this software be modified, the words "Modified from * Original" must be included as a comment below this notice. * * All publication rights are retained. This software or its * documentation may not be published in any media either * in whole or in part without explicit permission. * * This software was created with support from Northeastern * University and from NSF grant DUE-9950829. */ package edu.neu.ccs; import edu.neu.ccs.util.*; import java.beans.*; import java.io.Serializable; import java.text.ParseException; import javax.swing.event.SwingPropertyChangeSupport; /** *
Abstract superclass for
* {@link Stringable Stringable} objects.
Strings
* containing the encapsulated states of the given array
* of Stringable objects.
*
* @param obj an array of Stringable objects
* @return the resulting array of Strings
* @since 1.0
*/
public static String[] toStringArray(Stringable[] obj) {
// return null array if appropriate
if (obj == null)
return null;
// otherwise perform the type translation
String[] temp = new String[obj.length];
for (int i = 0; i < temp.length; i++)
if (obj[i] != null)
temp[i] = obj[i].toStringData();
return temp;
}
/**
* Registers the given object to listen for
* property change events generated by this object.
*
* @param listener the listener to be registered
* @since 1.0
*/
public void addPropertyChangeListener(
PropertyChangeListener listener)
{
changeAdapter.addPropertyChangeListener(listener);
}
/**
* Registers the given object to listen for
* property change events with the provided name
* generated by this object.
*
* @param propertyName the name of the desired property
* @param listener the listener to be registered
* @since 1.0
*/
public void addPropertyChangeListener(
String propertyName,
PropertyChangeListener listener)
{
changeAdapter.addPropertyChangeListener(
propertyName,
listener);
}
/**
* Deregisters the given object from listening for
* property change events generated by this object.
*
* @param listener the listener to be deregistered
* @since 1.0
*/
public void removePropertyChangeListener(
PropertyChangeListener listener)
{
changeAdapter.removePropertyChangeListener(listener);
}
/**
* Deregisters the given object from listening for
* property change events with the provided name
* generated by this object.
*
* @param propertyName the name of the desired property
* @param listener the listener to be deregistered
* @since 1.0
*/
public void removePropertyChangeListener(
String propertyName,
PropertyChangeListener listener)
{
changeAdapter.removePropertyChangeListener(
propertyName,
listener);
}
////////////////////
// Static methods //
////////////////////
/**
* Returns a neatly formatted String * representation of the given exception and the * data that generated the exception, for use * in user error messages.
* *As of 2.5.0, this method has been simplified
* to return ex.getMessage() since
* the formatting is now handled automatically via
* code in the class BaseParser. The
* data parameter is now ignored.
This method was left in place rather than * edit numerous JPT classes that used the method.
* * @param ex theParseException to be reported
* @param data the input String that generated the exception
* @since 1.0
*/
public static String formatErrorMessage(
ParseException ex,
String data)
{
// Formatting error messages is now built into BaseParser
// The original code for this method is commented out
/*
String message =
ex.getMessage() +
SystemUtilities.getLineSeparator();
// show location of error if appropriate
if (ex.getErrorOffset() > -1) {
message += data + "\n";
for (int i = 0; i < ex.getErrorOffset(); i++)
message += " ";
message += "^";
}
return message;
*/
return ex.getMessage();
}
}