home *** CD-ROM | disk | FTP | other *** search
Java Source | 1998-04-08 | 3.7 KB | 96 lines |
- /* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * The contents of this file are subject to the Netscape Public License
- * Version 1.0 (the "NPL"); you may not use this file except in
- * compliance with the NPL. You may obtain a copy of the NPL at
- * http://www.mozilla.org/NPL/
- *
- * Software distributed under the NPL is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
- * for the specific language governing rights and limitations under the
- * NPL.
- *
- * The Initial Developer of this code under the NPL is Netscape
- * Communications Corporation. Portions created by Netscape are
- * Copyright (C) 1998 Netscape Communications Corporation. All Rights
- * Reserved.
- */
- /* ** */
-
- /*
- * PropertyChangeAdapter.java
- *
- */
-
- package netscape.javascript.adapters;
-
- import netscape.javascript.JSObject;
-
- import java.beans.PropertyChangeListener;
- import java.beans.PropertyChangeEvent;
-
- /**
- * PropertyChangeAdaptor allows PropertyChangeEvents to be handled in JavaScript.
- * It implements java.beans.PropertyChangeListener which is required in order to
- * order to catch PropertyChangeEvents, but impossible to do in JavaScript due to
- * Java's type safe implementation. Once the event is caught, it is passed along
- * to a JavaScript method on a JavaScript object (JSObject). This method is
- * "onChange" by default, or an arbitrary method name can be supplied.
- */
- public class PropertyChangeAdapter implements PropertyChangeListener {
-
- /**
- * Construct a PropertyChangeAdaptor for given JavaScript object.
- * propertyChange events will be relayed to a method called onChange on
- * the JavaScript object. This onChange method must have a single parameter,
- * which is a java.beans.PropertyChangeEvent object.
- */
- public PropertyChangeAdapter( JSObject oJS ) {
- moJSObject = oJS;
- }
-
- /**
- * Construct a PropertyChangeAdaptor for given JavaScript object.
- * propertyChange events will be relayed to a the specified method on
- * the JavaScript object. The method must have a single parameter, which
- * is a java.beans.PropertyChangeEvent object.
- */
- public PropertyChangeAdapter( JSObject oJS, String sJSMethodName ) {
- moJSObject = oJS;
- msJSMethodName = sJSMethodName;
- }
-
- /**
- * propertyChange() is called by a source component (bean) when any of
- * its "bound" properties are altered. We catch it and call a JavaScript
- * method so that handling code can occur using user's JavaScript.
- */
- public void propertyChange( PropertyChangeEvent oEvent ) {
- if ( null != moJSObject ) {
- // don't try to call mehtod which does not exist!
- Object oMethod = moJSObject.getMember( msJSMethodName );
- if ( null != oMethod ) {
- // pass oEvent as single parameter
- Object[] aArgs = new Object[1];
- aArgs[0] = oEvent;
- try {
- moJSObject.call( msJSMethodName, aArgs );
- } catch (Exception ex) {
- System.out.println("Exception: " + ex);
- ex.printStackTrace();
- }
- }
- }
- }
-
- //-------------------------------------------------------------
- // member variables
-
- // ---------- static variables --------------------------------
- public static final String gsDefaultJSMethodName = "onChange";
-
- // ---------- instance variables ------------------------------
- private String msJSMethodName = gsDefaultJSMethodName;
- private JSObject moJSObject = null;
- }
-