Imported Classpath 0.18.

* sources.am, Makefile.in: Updated.
	* Makefile.am (nat_source_files): Removed natProxy.cc.
	* java/lang/reflect/natProxy.cc: Removed.
	* gnu/classpath/jdwp/VMFrame.java,
	gnu/classpath/jdwp/VMIdManager.java,
	gnu/classpath/jdwp/VMVirtualMachine.java,
	java/lang/reflect/VMProxy.java: New files.

2005-09-23  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* scripts/makemake.tcl (verbose): Add gnu/java/awt/peer/qt to BC
	list.

2005-09-23  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* gnu/java/net/DefaultContentHandlerFactory.java (getContent):
	Remove ClasspathToolkit references.

2005-09-23  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* gnu/awt/xlib/XCanvasPeer.java: Add new peer methods.
	* gnu/awt/xlib/XFramePeer.java: Likewise.
	* gnu/awt/xlib/XGraphicsConfiguration.java: Likewise.

2005-09-23  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* Makefile.am (libgcjawt_la_SOURCES): Remove jawt.c.  Add
	classpath/native/jawt/jawt.c.
	* Makefile.in: Regenerate.
	* jawt.c: Remove file.
	* include/Makefile.am (tool_include__HEADERS): Remove jawt.h and
	jawt_md.h.  Add ../classpath/include/jawt.h and
	../classpath/include/jawt_md.h.
	* include/Makefile.in: Regenerate.
	* include/jawt.h: Regenerate.
	* include/jawt_md.h: Regenerate.

From-SVN: r104586
This commit is contained in:
Tom Tromey 2005-09-23 21:31:04 +00:00
parent 9b044d1951
commit 1ea63ef8be
544 changed files with 34724 additions and 14512 deletions

View file

@ -1,5 +1,5 @@
/* SwingPropertyChangeSupport.java --
Copyright (C) 2002, 2004 Free Software Foundation, Inc.
Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@ -39,217 +39,299 @@ package javax.swing.event;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeListenerProxy;
import java.beans.PropertyChangeSupport;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.EventListener;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* SwingPropertyChangeSupport
* Provides a mechanism for registering {@link PropertyChangeListener}s and
* forwarding {@link PropertyChangeEvent}s to those listeners.
*
* @author Andrew Selkirk
*/
public final class SwingPropertyChangeSupport
extends PropertyChangeSupport {
*/
public final class SwingPropertyChangeSupport
extends PropertyChangeSupport
{
private static final long serialVersionUID = 7162625831330845068L;
//-------------------------------------------------------------
// Variables --------------------------------------------------
//-------------------------------------------------------------
/**
* Storage for the listeners that are not linked to a specific property.
*/
private transient EventListenerList listeners;
/**
* listeners
*/
private transient EventListenerList listeners;
/**
* Storage for the listeners that are linked (by name) to a specific property.
* The hash table maps <code>String</code> objects (the property names) to
* {@link EventListenerList} instances (which record the listener(s) for the
* given property).
*/
private Hashtable propertyListeners;
/**
* propertyListeners
*/
private Hashtable propertyListeners;
/**
* The object that is used as the default source for the
* {@link PropertyChangeEvent}s generated by this class.
*/
private Object source;
/**
* source
*/
private Object source;
/**
* Creates a new instance.
*
* @param source the source (<code>null</code> not permitted).
*
* @throws NullPointerException if <code>source</code> is <code>null</code>.
*/
public SwingPropertyChangeSupport(Object source)
{
super(source);
this.source = source;
this.listeners = new EventListenerList();
this.propertyListeners = new Hashtable();
}
/**
* Registers <code>listener</code> to receive notification of any future
* {@link PropertyChangeEvent}s generated by this instance.
*
* @param listener the listener (<code>null</code> is ignored).
*
* @see #removePropertyChangeListener(PropertyChangeListener)
*/
public synchronized void addPropertyChangeListener(PropertyChangeListener
listener)
{
listeners.add(PropertyChangeListener.class, listener);
}
//-------------------------------------------------------------
// Initialization ---------------------------------------------
//-------------------------------------------------------------
/**
* Registers <code>listener</code> to receive notification of any future
* {@link PropertyChangeEvent}s generated by this instance for the named
* property.
*
* @param propertyName the property name.
* @param listener the listener.
*
* @see #removePropertyChangeListener(String, PropertyChangeListener)
*/
public synchronized void addPropertyChangeListener(String propertyName,
PropertyChangeListener listener)
{
EventListenerList list;
list = (EventListenerList) propertyListeners.get(propertyName);
if (list == null)
{
list = new EventListenerList();
propertyListeners.put(propertyName, list);
}
list.add(PropertyChangeListener.class, listener);
}
/**
* Constructor SwingPropertyChangeSupport
* @param source TODO
*/
public SwingPropertyChangeSupport(Object source) {
super(source);
this.source = source;
this.listeners = new EventListenerList();
this.propertyListeners = new Hashtable();
} // SwingPropertyChangeSupport()
/**
* Removes <code>listener</code> from the list of registered listeners, so
* that it will no longer receive notification of property change events.
*
* @param listener the listener to remove.
*/
public synchronized void removePropertyChangeListener(PropertyChangeListener
listener)
{
listeners.remove(PropertyChangeListener.class, listener);
}
/**
* Removes <code>listener</code> from the list of registered listeners for
* the named property, so that it will no longer receive notification of
* property change events.
*
* @param propertyName the property name.
* @param listener the listener to remove.
*/
public synchronized void removePropertyChangeListener(String propertyName,
PropertyChangeListener listener)
{
EventListenerList list;
list = (EventListenerList) propertyListeners.get(propertyName);
if (list == null)
return;
list.remove(PropertyChangeListener.class, listener);
if (list.getListenerCount() == 0)
{
propertyListeners.remove(propertyName);
}
}
//-------------------------------------------------------------
// Methods ----------------------------------------------------
//-------------------------------------------------------------
/**
* Returns an array of the {@link PropertyChangeListener}s registered with
* this <code>SwingPropertyChangeSupport</code> instance.
*
* @return The array of listeners.
*
* @since 1.4
*/
public synchronized PropertyChangeListener[] getPropertyChangeListeners()
{
// fetch the named listeners first so we know how many there are
List namedListeners = new ArrayList();
Set namedListenerEntries = propertyListeners.entrySet();
Iterator iterator = namedListenerEntries.iterator();
while (iterator.hasNext())
{
Map.Entry e = (Map.Entry) iterator.next();
String propertyName = (String) e.getKey();
EventListenerList ell = (EventListenerList) e.getValue();
if (ell != null)
{
Object[] list = ell.getListenerList();
for (int i = 0; i < list.length; i += 2)
{
namedListeners.add(new PropertyChangeListenerProxy(propertyName,
(PropertyChangeListener) list[i + 1]));
}
}
}
// create an array that can hold everything
int size = listeners.getListenerCount() + namedListeners.size();
PropertyChangeListener[] result = new PropertyChangeListener[size];
// copy in the general listeners
Object[] list = listeners.getListenerList();
int index = 0;
for (int i = 0; i < list.length; i += 2)
result[index++] = (PropertyChangeListener) list[i + 1];
// ...and the named listeners
Iterator iterator2 = namedListeners.iterator();
while (iterator2.hasNext())
result[index++] = (PropertyChangeListenerProxy) iterator2.next();
return result;
}
/**
* Returns an array of all listeners that are registered to receive
* notification of changes to the named property. This includes the general
* listeners as well as those registered specifically for the named
* property.
*
* @param propertyName the property name.
*
* @return An array of all listeners for the named property.
*/
public synchronized PropertyChangeListener[] getPropertyChangeListeners(
String propertyName)
{
EventListenerList list
= (EventListenerList) propertyListeners.get(propertyName);
if (list == null)
return getPropertyChangeListeners();
int size = listeners.getListenerCount() + list.getListenerCount();
PropertyChangeListener[] result = new PropertyChangeListener[size];
// copy in the general listeners
int index = 0;
for (int i = 0; i < listeners.listenerList.length; i += 2)
{
result[index++]
= (PropertyChangeListener) listeners.listenerList[i + 1];
}
// copy in the specific listeners
Object[] specificListeners = list.getListenerList();
for (int i = 0; i < specificListeners.length; i += 2)
{
result[index++] = (PropertyChangeListener) specificListeners[i + 1];
}
return result;
}
/**
* writeObject
* @param stream TODO
* @exception IOException TODO
*/
private void writeObject(ObjectOutputStream stream) throws IOException {
// TODO
} // writeObject()
/**
* Creates a new {@link PropertyChangeEvent} using the given arguments (and
* the default <code>source</code> for this
* <code>SwingPropertyChangeSupport</code> instance) and forwards it to all
* registered listeners via the
* {@link PropertyChangeListener#propertyChange(PropertyChangeEvent)} method.
* <p>
* Note that if <code>oldValue</code> and <code>newValue</code> are non-null
* and equal, no listeners will be notified.
*
* @param propertyName the property name.
* @param oldValue the old value
* @param newValue the new value.
*/
public void firePropertyChange(String propertyName, Object oldValue,
Object newValue)
{
PropertyChangeEvent event;
event = new PropertyChangeEvent(source, propertyName, oldValue, newValue);
firePropertyChange(event);
}
/**
* readObject
* @param stream TODO
* @exception ClassNotFoundException TODO
* @exception IOException TODO
*/
private void readObject(ObjectInputStream stream) throws ClassNotFoundException, IOException {
// TODO
} // readObject()
/**
* Forwards <code>event</code> to registered listeners.
* <p>
* Note that if the event's <code>getOldValue()</code> and
* <code>getNewValue()</code> methods return non-null and equal values, no
* listeners will be notified.
*
* @param event the event.
*/
public void firePropertyChange(PropertyChangeEvent event)
{
EventListenerList list;
EventListener[] listenerList;
int index;
PropertyChangeListener listener;
/**
* addPropertyChangeListener
* @param listener TODO
*/
public synchronized void addPropertyChangeListener(PropertyChangeListener listener) {
listeners.add(PropertyChangeListener.class, listener);
} // addPropertyChangeListener()
// Check Values if they are equal
if (event.getOldValue() == null && event.getNewValue() == null ||
(event.getOldValue() != null && event.getNewValue() != null &&
event.getOldValue().equals(event.getNewValue())))
return;
/**
* addPropertyChangeListener
* @param propertyName TODO
* @param listener TODO
*/
public synchronized void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
// Process Main Listener List
listenerList = listeners.getListeners(PropertyChangeListener.class);
for (index = 0; index < listenerList.length; index++)
{
listener = (PropertyChangeListener) listenerList[index];
listener.propertyChange(event);
}
// Variables
EventListenerList list;
// Process Property Listener List
list = (EventListenerList) propertyListeners.get(event.getPropertyName());
if (list != null)
{
listenerList = list.getListeners(PropertyChangeListener.class);
for (index = 0; index < listenerList.length; index++)
{
listener = (PropertyChangeListener) listenerList[index];
listener.propertyChange(event);
}
}
// Get Listener list
list = (EventListenerList) propertyListeners.get(propertyName);
if (list == null) {
list = new EventListenerList();
propertyListeners.put(propertyName, list);
} // if
}
// Add Listeners
list.add(PropertyChangeListener.class, listener);
/**
* Tell whether the specified property is being listened on or not. This
* will only return <code>true</code> if there are listeners on all
* properties or if there is a listener specifically on this property.
*
* @param propertyName the property that may be listened on
* @return whether the property is being listened on
* @throws NullPointerException if propertyName is null
*/
public synchronized boolean hasListeners(String propertyName)
{
if (listeners.getListenerCount() > 0)
return true;
else
return (propertyListeners.get(propertyName) != null);
}
} // addPropertyChangeListener()
/**
* removePropertyChangeListener
* @param listener TODO
*/
public synchronized void removePropertyChangeListener(PropertyChangeListener listener) {
listeners.remove(PropertyChangeListener.class, listener);
} // removePropertyChangeListener()
/**
* removePropertyChangeListener
* @param propertyName TODO
* @param listener TODO
*/
public synchronized void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
// Variables
EventListenerList list;
// Get Listener list
list = (EventListenerList) propertyListeners.get(propertyName);
if (list == null) {
return;
} // if
// Remove Listeners
list.remove(PropertyChangeListener.class, listener);
// Clean up propertyListeners
if (list.getListenerCount() == 0) {
propertyListeners.remove(propertyName);
} // if
} // removePropertyChangeListener()
/**
* firePropertyChange
* @param propertyName TODO
* @param oldValue TODO
* @param newValue TODO
*/
public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
// Variables
PropertyChangeEvent event;
// Create Property Change Event
event = new PropertyChangeEvent(source, propertyName, oldValue, newValue);
// Fire Event
firePropertyChange(event);
} // firePropertyChange()
/**
* firePropertyChange
* @param event TODO
*/
public void firePropertyChange(PropertyChangeEvent event) {
// Variables
EventListenerList list;
EventListener[] listenerList;
int index;
PropertyChangeListener listener;
// Check Values if they are equal
if (event.getOldValue() == null && event.getNewValue() == null ||
(event.getOldValue() != null && event.getNewValue() != null &&
event.getOldValue().equals(event.getNewValue()))) {
return;
} // if
// Process Main Listener List
listenerList = listeners.getListeners(PropertyChangeListener.class);
for (index = 0; index < listenerList.length; index++) {
listener = (PropertyChangeListener) listenerList[index];
listener.propertyChange(event);
} // for
// Process Property Listener List
list = (EventListenerList) propertyListeners.get(event.getPropertyName());
if (list != null) {
listenerList = list.getListeners(PropertyChangeListener.class);
for (index = 0; index < listenerList.length; index++) {
listener = (PropertyChangeListener) listenerList[index];
listener.propertyChange(event);
} // for
} // if
} // firePropertyChange()
/**
* hasListeners
* @param propertyName TODO
* @returns boolean
*/
public synchronized boolean hasListeners(String propertyName) {
// Get Listener list
if (propertyListeners.get(propertyName) == null) {
return false;
} // if
return true;
} // hasListeners()
} // SwingPropertyChangeSupport
}