|
AbstractContainer |
|
/* ** Luxor - XML User Interface Language (XUL) Toolkit ** Copyright (c) 2001, 2002 by Gerald Bauer ** ** This program is free software. ** ** You may redistribute it and/or modify it under the terms of the GNU ** General Public License as published by the Free Software Foundation. ** Version 2 of the license should be included with this distribution in ** the file LICENSE, as well as License.html. If the license is not ** included with this distribution, you may find a copy at the FSF web ** site at 'www.gnu.org' or 'www.fsf.org', or you may write to the ** Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139 USA. ** ** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND, ** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR ** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY ** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR ** REDISTRIBUTION OF THIS SOFTWARE. ** */ package luxor.swing; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.util.*; import javax.swing.*; import javax.swing.border.*; import luxor.core.*; import luxor.spi.*; import luxor.status.*; public abstract class AbstractContainer extends AbstractComponent implements NContainer, NComponentResolver { /** * holds all components (order preserved) */ protected ArrayList _component = new ArrayList(); /** * lookup index for all components (including input controls and containers) */ protected HashMap _componentIndex = new HashMap(); /** * holds containers only */ protected ArrayList _container = new ArrayList(); /** * lookup index for input controls only */ protected HashMap _inputIndex = new HashMap(); static Logger T = Logger.getLogger( AbstractContainer.class ); public AbstractContainer( XulNode def ) { super( def ); } public NComponent lookupNComponent( String id ) { // for now check only our own children/components // don't query subcontainers recursively // if there is a need, I add it later return ( NComponent ) _componentIndex.get( id ); } public NInput lookupNInput( String id ) { NInput input = ( NInput ) _inputIndex.get( id ); if( input != null ) return input; // check embedded containers Iterator it = _container.iterator(); while( it.hasNext() ) { NContainer cont = ( NContainer ) it.next(); input = ( NInput ) cont.lookupNInput( id ); if( input != null ) return input; } return null; // input control not found } public void resolveReferences( NComponentResolver resolver ) { // do nothing; container resolves references after creation // for now only our own direct children // can be referenced for resolution // if there is a need, // to query subcontainers recursively, I add it later } protected void addComponent( NComponent comp ) { _componentIndex.put( comp.getId(), comp ); _component.add( comp ); if( comp instanceof NInput ) { _inputIndex.put( comp.getId(), ( NInput ) comp ); } else if( comp instanceof NContainer ) { _container.add( ( NContainer ) comp ); } } protected void resolveReferences() { for( Iterator it = _component.iterator(); it.hasNext(); ) { NComponent comp = ( NComponent ) it.next(); comp.resolveReferences( this ); } } }
|
AbstractContainer |
|