public void setGene(AnnotatedFeatureI g) {
    this.gene = g;
    if (g == null) return;

    if (!g.isProteinCodingGene()) {
      setText("NOT A PEPTIDE");
      setEnabled(false);
    } else {
      setEnabled(true);

      Hashtable curator_values = Config.getPeptideStates();

      String pep_status = g.getProperty("sp_status");
      PeptideStatus this_status = Config.getPeptideStatus(pep_status);

      JMenuItem item;

      /* these are the computed values that cannot be over-ridden
         by a curator
      */
      item = new JMenuItem(this_status.getText());
      add(item);
      item.addActionListener(this);
      /* these are the possible values to be selected
      by a curator */
      Enumeration e = curator_values.keys();
      while (e.hasMoreElements()) {
        String key = (String) e.nextElement();
        PeptideStatus a_status = (PeptideStatus) curator_values.get(key);
        if (a_status.getPrecedence() >= this_status.getPrecedence()
            && !a_status.getText().equals(this_status.getText())
            && a_status.getCurated()) {
          item = new JMenuItem(a_status.getText());
          add(item);
          item.addActionListener(this);
        }
      }
      setText(this_status.getText());
    }
  }