/* * Copyright 2005 by Oracle USA * 500 Oracle Parkway, Redwood Shores, California, 94065, U.S.A. * All rights reserved. */ package javax.ide.view; import java.beans.PropertyChangeListener; import javax.ide.util.IconDescription; import javax.ide.view.Viewable; import javax.swing.event.SwingPropertyChangeSupport; /** * DefaultViewables are objects that map directly to visible * GUI elements that users can select such as a menu items, nodes in * the project explorer, etc.. */ public class DefaultViewable implements Viewable { private boolean _visible = true; private SwingPropertyChangeSupport _propertyChangeSupport; //---------------------------------------------------------------------------- // Public methods. //---------------------------------------------------------------------------- /** * Get a short descriptive label that can be shown to the user. * @return A short descriptive label. */ public String getLabel() { return "nolabel"; } /*- * Viewable method. */ public String getToolTip() { return getLabel(); } /*- * Viewable method. */ public IconDescription getIcon() { return null; } /*- * Viewable interface method. Returns true by default. */ public boolean isVisible() { return _visible; } /*- * Viewable interface method. */ public void setVisible( boolean visible ) { final Boolean oldVal = new Boolean( _visible ); _visible = visible; firePropertyChange( PROP_VISIBLE, oldVal, new Boolean( _visible ) ); } /*- * Viewable interface method. */ public void addPropertyChangeListener( PropertyChangeListener listener ) { if ( _propertyChangeSupport == null ) { _propertyChangeSupport = new SwingPropertyChangeSupport( this ); } _propertyChangeSupport.addPropertyChangeListener( listener ); } /*- * Viewable interface method. */ public void removePropertyChangeListener( PropertyChangeListener listener ) { if ( _propertyChangeSupport != null ) { _propertyChangeSupport.removePropertyChangeListener( listener ); } } //--------------------------------------------------------------------------- // Object methods. //--------------------------------------------------------------------------- public String toString() { return getLabel(); } //--------------------------------------------------------------------------- // Protected methods. //--------------------------------------------------------------------------- /** * Fire the property change event. Fires the event for property * name only if the oldVal is different from the * newVal. * @param name The property name. * @param oldVal The current value of the specified property. * @param newVal The new value of the specified property. */ protected void firePropertyChange( String name, Object oldVal, Object newVal ) { if ( _propertyChangeSupport != null ) { if ( oldVal == null || newVal == null || !oldVal.equals( newVal )) { _propertyChangeSupport.firePropertyChange( name, oldVal, newVal ); } } } }