mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			281 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			281 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Java
		
	
	
	
| /* DefaultFormatterFactory.java -- FIXME: briefly describe file purpose
 | |
|    Copyright (C) 2005 Free Software Foundation, Inc.
 | |
| 
 | |
| This file is part of GNU Classpath.
 | |
| 
 | |
| GNU Classpath is free software; you can redistribute it and/or modify
 | |
| it under the terms of the GNU General Public License as published by
 | |
| the Free Software Foundation; either version 2, or (at your option)
 | |
| any later version.
 | |
| 
 | |
| GNU Classpath is distributed in the hope that it will be useful, but
 | |
| WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | |
| General Public License for more details.
 | |
| 
 | |
| You should have received a copy of the GNU General Public License
 | |
| along with GNU Classpath; see the file COPYING.  If not, write to the
 | |
| Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 | |
| 02110-1301 USA.
 | |
| 
 | |
| Linking this library statically or dynamically with other modules is
 | |
| making a combined work based on this library.  Thus, the terms and
 | |
| conditions of the GNU General Public License cover the whole
 | |
| combination.
 | |
| 
 | |
| As a special exception, the copyright holders of this library give you
 | |
| permission to link this library with independent modules to produce an
 | |
| executable, regardless of the license terms of these independent
 | |
| modules, and to copy and distribute the resulting executable under
 | |
| terms of your choice, provided that you also meet, for each linked
 | |
| independent module, the terms and conditions of the license of that
 | |
| module.  An independent module is a module which is not derived from
 | |
| or based on this library.  If you modify this library, you may extend
 | |
| this exception to your version of the library, but you are not
 | |
| obligated to do so.  If you do not wish to do so, delete this
 | |
| exception statement from your version. */
 | |
| 
 | |
| 
 | |
| package javax.swing.text;
 | |
| 
 | |
| import java.io.Serializable;
 | |
| 
 | |
| import javax.swing.JFormattedTextField;
 | |
| import javax.swing.JFormattedTextField.AbstractFormatter;
 | |
| import javax.swing.JFormattedTextField.AbstractFormatterFactory;
 | |
| 
 | |
| /**
 | |
|  * This class is Swing's only concrete implementation of
 | |
|  * JFormattedTextField.AbstractFormatterFactory.  It holds several
 | |
|  * formatters and determines the best one to be used based on the
 | |
|  * passed-in value from the text field.
 | |
|  *
 | |
|  * @author Anthony Balkissoon abalkiss at redhat dot com
 | |
|  * @since 1.4
 | |
|  */
 | |
| public class DefaultFormatterFactory extends AbstractFormatterFactory implements
 | |
|     Serializable
 | |
| {
 | |
|   /**
 | |
|    * The default formatter.
 | |
|    **/
 | |
|   AbstractFormatter defaultFormatter;
 | |
| 
 | |
|   /**
 | |
|    * The formatter to use when the JFormattedTextField has focus and either the
 | |
|    * value isn't null or the value is null but no <code>nullFormatter</code>
 | |
|    * has been specified.
 | |
|    */
 | |
|   AbstractFormatter editFormatter;
 | |
| 
 | |
|   /**
 | |
|    * The formatter to use when the JFormattedTextField doesn't havefocus and
 | |
|    * either the value isn't null or the value is null but no
 | |
|    * <code>nullFormatter</code> has been specified.
 | |
|    */
 | |
|   AbstractFormatter displayFormatter;
 | |
| 
 | |
|   /**
 | |
|    * The formatter to use when the value of the JFormattedTextField is null.
 | |
|    */
 | |
|   AbstractFormatter nullFormatter;
 | |
| 
 | |
|   /**
 | |
|    * Creates a DefaultFormatterFactory with no formatters
 | |
|    */
 | |
|   public DefaultFormatterFactory()
 | |
|   {
 | |
|     // Nothing to be done here.
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Creates a new DefaultFormatterFactory with the specified formatters.
 | |
|    * @param defaultFormat the formatter to use if no other appropriate non-null
 | |
|    * formatted can be found.
 | |
|    */
 | |
|   public DefaultFormatterFactory(AbstractFormatter defaultFormat)
 | |
|   {
 | |
|     defaultFormatter = defaultFormat;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Creates a new DefaultFormatterFactory with the specified formatters.
 | |
|    * @param defaultFormat the formatter to use if no other appropriate non-null
 | |
|    * formatted can be found.
 | |
|    * @param displayFormat the formatter to use if the JFormattedTextField
 | |
|    * doesn't have focus and either the value is not null or the value is null
 | |
|    * but no <code>nullFormatter</code> has been specified.
 | |
|    */
 | |
|   public DefaultFormatterFactory(AbstractFormatter defaultFormat,
 | |
|                                  AbstractFormatter displayFormat)
 | |
|   {
 | |
|     defaultFormatter = defaultFormat;
 | |
|     displayFormatter = displayFormat;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Creates a new DefaultFormatterFactory with the specified formatters.
 | |
|    * @param defaultFormat the formatter to use if no other appropriate non-null
 | |
|    * formatted can be found.
 | |
|    * @param displayFormat the formatter to use if the JFormattedTextField
 | |
|    * doesn't have focus and either the value is not null or the value is null
 | |
|    * but no <code>nullFormatter</code> has been specified.
 | |
|    * @param editFormat the formatter to use if the JFormattedTextField has
 | |
|    * focus and either the value is not null or the value is null but not
 | |
|    * <code>nullFormatter</code> has been specified.
 | |
|    */
 | |
|   public DefaultFormatterFactory(AbstractFormatter defaultFormat,
 | |
|                                  AbstractFormatter displayFormat,
 | |
|                                  AbstractFormatter editFormat)
 | |
|   {
 | |
|     defaultFormatter = defaultFormat;
 | |
|     displayFormatter = displayFormat;
 | |
|     editFormatter = editFormat;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Creates a new DefaultFormatterFactory with the specified formatters.
 | |
|    * @param defaultFormat the formatter to use if no other appropriate non-null
 | |
|    * formatted can be found.
 | |
|    * @param displayFormat the formatter to use if the JFormattedTextField
 | |
|    * doesn't have focus and either the value is not null or the value is null
 | |
|    * but no <code>nullFormatter</code> has been specified.
 | |
|    * @param editFormat the formatter to use if the JFormattedTextField has
 | |
|    * focus and either the value is not null or the value is null but not
 | |
|    * <code>nullFormatter</code> has been specified.
 | |
|    * @param nullFormat the formatter to use when the value of the
 | |
|    * JFormattedTextField is null.
 | |
|    */
 | |
|   public DefaultFormatterFactory(AbstractFormatter defaultFormat,
 | |
|                                  AbstractFormatter displayFormat,
 | |
|                                  AbstractFormatter editFormat,
 | |
|                                  AbstractFormatter nullFormat)
 | |
|   {
 | |
|     defaultFormatter = defaultFormat;
 | |
|     displayFormatter = displayFormat;
 | |
|     editFormatter = editFormat;
 | |
|     nullFormatter = nullFormat;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Returns the formatted to be used if no other appropriate non-null
 | |
|    * formatter can be found.
 | |
|    * @return the formatted to be used if no other appropriate non-null
 | |
|    * formatter can be found.
 | |
|    */
 | |
|   public AbstractFormatter getDefaultFormatter()
 | |
|   {
 | |
|     return defaultFormatter;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Sets the formatted to be used if no other appropriate non-null formatter
 | |
|    * can be found.
 | |
|    * @param defaultFormatter the formatted to be used if no other appropriate
 | |
|    * non-null formatter can be found.
 | |
|    */
 | |
|   public void setDefaultFormatter(AbstractFormatter defaultFormatter)
 | |
|   {
 | |
|     this.defaultFormatter = defaultFormatter;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Gets the <code>displayFormatter</code>.  This is the formatter to use if
 | |
|    * the JFormattedTextField is not being edited and either the value is not
 | |
|    * null or the value is null and no <code>nullFormatter<code> has been
 | |
|    * specified.
 | |
|    * @return the formatter to use if
 | |
|    * the JFormattedTextField is not being edited and either the value is not
 | |
|    * null or the value is null and no <code>nullFormatter<code> has been
 | |
|    * specified.
 | |
|    */
 | |
|   public AbstractFormatter getDisplayFormatter()
 | |
|   {
 | |
|     return displayFormatter;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Sets the <code>displayFormatter</code>.  This is the formatter to use if
 | |
|    * the JFormattedTextField is not being edited and either the value is not
 | |
|    * null or the value is null and no <code>nullFormatter<code> has been
 | |
|    * specified.
 | |
|    * @param displayFormatter the formatter to use.
 | |
|    */
 | |
|   public void setDisplayFormatter(AbstractFormatter displayFormatter)
 | |
|   {
 | |
|     this.displayFormatter = displayFormatter;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Gets the <code>editFormatter</code>.  This is the formatter to use if the
 | |
|    * JFormattedTextField is being edited and either the value is not null or
 | |
|    * the value is null and no <code>nullFormatter<code> has been specified.
 | |
|    * @return the formatter to use if the JFormattedTextField is being edited
 | |
|    * and the value is not null or the value is null but no nullFormatted has
 | |
|    * been specified.
 | |
|    */
 | |
|   public AbstractFormatter getEditFormatter()
 | |
|   {
 | |
|     return editFormatter;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Sets the <code>editFormatter</code>.  This is the formatter to use if the
 | |
|    * JFormattedTextField is being edited and either the value is not null or
 | |
|    * the value is null and no <code>nullFormatter<code> has been specified.
 | |
|    * @param editFormatter the formatter to use.
 | |
|    */
 | |
|   public void setEditFormatter(AbstractFormatter editFormatter)
 | |
|   {
 | |
|     this.editFormatter = editFormatter;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Gets the formatter to use if the value of the JFormattedTextField is null.
 | |
|    * @return the formatter to use for null values.
 | |
|    */
 | |
|   public AbstractFormatter getNullFormatter()
 | |
|   {
 | |
|     return nullFormatter;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Sets the <code>nullFormatter</code>.  This is the formatter to use if the
 | |
|    * value of the JFormattedTextField is null.
 | |
|    * @param nullFormatter the formatter to use for null values.
 | |
|    */
 | |
|   public void setNullFormatter(AbstractFormatter nullFormatter)
 | |
|   {
 | |
|     this.nullFormatter = nullFormatter;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Returns the appropriate formatter based on the state of
 | |
|    * <code>tf</code>. If <code>tf<code> is null we return null, otherwise
 | |
|    * we return one of the following:
 | |
|    * 1. Returns <code>nullFormatter</code> if <code>tf.getValue()</code> is
 | |
|    * null and <code>nullFormatter</code> is not.
 | |
|    * 2. Returns <code>editFormatter</code> if <code>tf.hasFocus()</code> is
 | |
|    * true and <code>editFormatter</code> is not null.
 | |
|    * 3. Returns <code>displayFormatter</code> if <code>tf.hasFocus()</code> is
 | |
|    * false and <code>displayFormatter</code> is not null.
 | |
|    * 4. Otherwise returns <code>defaultFormatter</code>.
 | |
|    */
 | |
|   public AbstractFormatter getFormatter(JFormattedTextField tf)
 | |
|   {
 | |
|     if (tf == null)
 | |
|       return null;
 | |
| 
 | |
|     if (tf.getValue() == null && nullFormatter != null)
 | |
|       return nullFormatter;
 | |
| 
 | |
|     if (tf.hasFocus() && editFormatter != null)
 | |
|       return editFormatter;
 | |
| 
 | |
|     if (!tf.hasFocus() && displayFormatter != null)
 | |
|       return displayFormatter;
 | |
| 
 | |
|     return defaultFormatter;
 | |
|   }
 | |
| }
 |