Save This Page
Home » openjdk-7 » net.sourceforge » jbird » [javadoc | source]
    1   /*
    2   	J-Bird net/sourceforge/jbird/CommonChooser.java
    3   
    4   	Copyright 2001, 2002, 2003  Dick Repasky
    5   */
    6   package net.sourceforge.jbird;
    7   
    8   import java.awt.GridBagConstraints;
    9   import java.text.DecimalFormat;
   10   import java.text.Collator;
   11   import java.text.CollationKey;
   12   import java.text.RuleBasedCollator;
   13   import java.text.ParseException;
   14   import java.util.ResourceBundle;
   15   
   16   import net.sourceforge.jbird.SpeciesNameIface;
   17   import net.sourceforge.jbird.awt.LoggingILC;
   18   import net.sourceforge.jbird.iface.IntarrayListener;
   19   import net.sourceforge.jbird.iface.IntegerListener;
   20   import net.sourceforge.jbird.iface.IntegerListenerList;
   21   import net.sourceforge.jbird.iface.LogListener;
   22   import net.sourceforge.jbird.iface.NullListener;
   23   import net.sourceforge.jbird.util.IntStringArrays;
   24   
   25   // FOR now grab default collator
   26   
   27   public class CommonChooser extends LoggingILC 
   28   				implements SpeciesNameIface {
   29   
   30      DecimalFormat nformatter = new DecimalFormat();
   31      RuleBasedCollator collator = null;
   32      InternalSpeciesListener internalspecieslistener = new 
   33   						InternalSpeciesListener();
   34      int currentspecies = -1;
   35   
   36      IntegerListenerList newspecieslisteners = new IntegerListenerList();
   37   
   38      boolean alphabeticorder;
   39   
   40      protected JbirdDB dbase;
   41      protected ResourceBundle progres;
   42      protected JBirdOptions jbirdoptions;
   43   
   44      public CommonChooser (JbirdDB db, ResourceBundle rb,
   45   			 JBirdOptions jo, LogListener logger) {
   46   	//super(logger, 6, false);
   47   	super(logger, 23, false);
   48   	dbase = db;
   49           progres = rb;
   50   	jbirdoptions = jo;
   51   	cccommon();
   52      }
   53   
   54      public CommonChooser (JbirdDB db, ResourceBundle rb,
   55   			 JBirdOptions jo, GridBagConstraints[] gbc,
   56   			 LogListener logger) {
   57   	//super(logger, 6, false);
   58   	super(logger, 23, false, gbc);
   59   	dbase = db;
   60           progres = rb;
   61   	jbirdoptions = jo;
   62   	cccommon();
   63      }
   64   
   65      protected final void cccommon() {
   66           alphabeticorder = jbirdoptions.alphabeticorder;
   67      	nformatter.setGroupingUsed(false);
   68   	title.setText(progres.getString("Species_colon"));
   69   	typefield.setColumns(40);
   70   	addArrayActionListener(internalspecieslistener);
   71   
   72   						// Make dash a a respectable
   73   						// character
   74   	collator = (RuleBasedCollator)Collator.getInstance();
   75   	String rule = collator.getRules();
   76   	int dashat = rule.indexOf("'-'");	// locate dash
   77   	if (dashat >= 0) {			// dash found
   78   		int leng = 4;			// find previous operator
   79   		dashat --;
   80   		while (rule.charAt(dashat) == ' ') {
   81   			dashat --;
   82   			leng ++;
   83   		}
   84   		StringBuffer workarea = new StringBuffer(rule);
   85   		workarea.delete(dashat, dashat + leng);
   86   		rule = workarea.toString();
   87   	        try {
   88   	           collator = new RuleBasedCollator(rule + "& 9 < ' ' < '-'");
   89   	        }
   90   	        catch (ParseException e1) {
   91   	           System.out.println("CommonChooser: RuleBasedCollator parse error " + 
   92   				e1.getMessage());
   93   	        }
   94   	}
   95   	buildSpeciesList();
   96   	setNameCompletion(jbirdoptions.namecompletion);
   97   	System.out.println("CommonChooser constructor returning");
   98      }
   99   
  100     private final void buildSpeciesList() {
  101   	System.out.println("buildSpeciesList: calling database");
  102   	IntStringArrays intstringlist = dbase.commonNamesNums
  103   			(jbirdoptions.commonnamelist, 
  104   			 jbirdoptions.alphabeticorder);
  105   	System.out.println("buildSpeciesList: returned from database");
  106           setEnabledChoices(true);
  107           setTypefieldTextNoNotice("");
  108   	if (jbirdoptions.alphabeticorder) {
  109   		// May be able to change boolean to true someday
  110   		// when commonNamesNums returns results using
  111   		// the Collator that counts.
  112              buildIndexedList(intstringlist.stringa, 
  113   			    intstringlist.inta, collator, false);
  114   	} else {
  115              buildIndexedList(intstringlist.stringa, 
  116   			    intstringlist.inta, collator, false);
  117   	}
  118           if (intstringlist.stringa.length == 1) {
  119              selectItem(0);
  120           }
  121   
  122     }
  123   
  124     public void addSpeciesListener(IntegerListener item) {
  125   	newspecieslisteners.addListener(item);
  126     }
  127   
  128     public void removeSpeciesListener(IntegerListener item) {
  129   	newspecieslisteners.removeListener(item);
  130     }
  131   
  132     private void notifySpeciesListeners(int intval) {
  133   	newspecieslisteners.alertListeners(intval);
  134     }
  135   
  136     class InternalSpeciesListener implements IntarrayListener {
  137   	public void receiveIntarray(int[] values) {
  138   		int value;
  139   		if (values == null || values.length == 0) {
  140   			value = -1;
  141   		} else {
  142   			value = values[0];
  143   		}
  144   		if (value != currentspecies) {
  145   			currentspecies = value;
  146   			newspecieslisteners.alertListeners(currentspecies);
  147   		}
  148   	}
  149     }
  150   
  151   			// listener not currently used, but
  152   			// I want it for possible future use.
  153     class ChangedOptionListener implements NullListener {
  154   	public void receiveNull() {
  155   		checkOptions();
  156   	}
  157     }
  158   
  159     public NullListener passOptionListener() {
  160   	ChangedOptionListener listener = new ChangedOptionListener();
  161   	return (listener);
  162     }
  163   			// WORK HERE - might be optimized to 
  164   			// rebuild from current objects rather than
  165   			// reading all that data again.  Reading
  166   			// everything again is very slow.
  167   
  168   			// Only one optionion is relevant
  169     public void checkOptions() {
  170   	if (jbirdoptions.alphabeticorder != alphabeticorder) {
  171   		alphabeticorder = jbirdoptions.alphabeticorder;
  172   		int currentselection = currentspecies;
  173   		buildSpeciesList();
  174   		if (currentselection != -1) {
  175   	   	selectDataIndex(currentselection);
  176   		}
  177   	}
  178   	setNameCompletion(jbirdoptions.namecompletion);
  179     }
  180   
  181   
  182     public final String[] getSpeciesName () {
  183   	return getSelectedNames();
  184     }
  185   }

Save This Page
Home » openjdk-7 » net.sourceforge » jbird » [javadoc | source]