// ********************************************************************** // // <copyright> // // BBN Technologies // 10 Moulton Street // Cambridge, MA 02138 // (617) 873-8000 // // Copyright (C) BBNT Solutions LLC. All rights reserved. // // </copyright> // ********************************************************************** // // $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/OMComponent.java,v $ // $RCSfile: OMComponent.java,v $ // $Revision: 1.7 $ // $Date: 2004/10/14 18:05:39 $ // $Author: dietrick $ // // ********************************************************************** package com.bbn.openmap; import java.util.Properties; /** * A OMComponent is an OpenMap component that does two basic things: it is a * MapHandlerChild, so it knows how to use the MapHandler to find other * components it needs, and it is a PropertyConsumer, so it can be configured by * a set of Properties. An OMComponent is a perfect candidate to be created by * being listed in the openmap.components property of the openmap.properties * file. Override the findAndInit() and findAndUndo() methods to test for and * connect to other components added to the MapHandler. */ public class OMComponent extends MapHandlerChild implements PropertyConsumer { /** * All OMComponents have access to an I18n object, which is provided by the * Environment. */ protected I18n i18n = Environment.getI18n(); /** * Token uniquely identifying this component in the application properties. */ protected String propertyPrefix = null; /** * Sets the properties for the OMComponent. * * @param props the <code>Properties</code> object. */ public void setProperties(java.util.Properties props) { setProperties(getPropertyPrefix(), props); } /** * Sets the properties for the OMComponent. * * @param prefix the token to prefix the property names * @param props the <code>Properties</code> object */ public void setProperties(String prefix, java.util.Properties props) { setPropertyPrefix(prefix); // In a subclass, you can use this to get "" if the prefix // isn't defined, or "prefix." if it is. Either way, you can // then append the realPrefix with wild abandon... // String realPrefix = // PropUtils.getScopedPropertyPrefix(prefix); } /** * PropertyConsumer method, to fill in a Properties object, reflecting the * current values of the OMComponent. If the component has a propertyPrefix * set, the property keys should have that prefix plus a separating '.' * prepended to each property key it uses for configuration. * * @param props a Properties object to load the PropertyConsumer properties * into. If props equals null, then a new Properties object should be * created. * @return Properties object containing PropertyConsumer property values. If * getList was not null, this should equal getList. Otherwise, it * should be the Properties object created by the PropertyConsumer. */ public Properties getProperties(Properties props) { if (props == null) { props = new Properties(); } // String prefix = PropUtils.getScopedPropertyPrefix(this); return props; } /** * Method to fill in a Properties object with values reflecting the * properties able to be set on this PropertyConsumer. The key for each * property should be the raw property name (without a prefix) with a value * that is a String that describes what the property key represents, along * with any other information about the property that would be helpful * (range, default value, etc.). For Layer, this method should at least * return the 'prettyName' property. * * @param list a Properties object to load the PropertyConsumer properties * into. If getList equals null, then a new Properties object should * be created. * @return Properties object containing PropertyConsumer property values. If * getList was not null, this should equal getList. Otherwise, it * should be the Properties object created by the PropertyConsumer. */ public Properties getPropertyInfo(Properties list) { if (list == null) { list = new Properties(); } return list; } /** * Set the property key prefix that should be used by the PropertyConsumer. * The prefix, along with a '.', should be prepended to the property keys * known by the PropertyConsumer. * * @param prefix the prefix String. */ public void setPropertyPrefix(String prefix) { propertyPrefix = prefix; } /** * Get the property key prefix that is being used to prepend to the property * keys for Properties lookups. * * @return the property prefix string */ public String getPropertyPrefix() { return propertyPrefix; } }