home *** CD-ROM | disk | FTP | other *** search
/ Australian PC Authority 1999 May / may1999.iso / May / JBUILDER / JSAMPLES.Z / TreeCombo$TreeToListModel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-30  |  2.6 KB  |  97 lines

  1. import com.sun.java.swing.AbstractListModel;
  2. import com.sun.java.swing.ComboBoxModel;
  3. import com.sun.java.swing.JComboBox;
  4. import com.sun.java.swing.event.TreeModelEvent;
  5. import com.sun.java.swing.event.TreeModelListener;
  6. import com.sun.java.swing.tree.TreeModel;
  7. import java.util.Vector;
  8.  
  9. class TreeCombo$TreeToListModel extends AbstractListModel implements ComboBoxModel, TreeModelListener {
  10.    // $FF: synthetic field
  11.    private final TreeCombo this$0;
  12.    TreeModel source;
  13.    boolean invalid;
  14.    Object currentValue;
  15.    Vector cache;
  16.  
  17.    public TreeCombo$TreeToListModel(TreeCombo var1, TreeModel var2) {
  18.       this.this$0 = var1;
  19.       this.this$0 = var1;
  20.       this.invalid = true;
  21.       this.cache = new Vector();
  22.       this.source = var2;
  23.       var2.addTreeModelListener(this);
  24.       var1.getClass();
  25.       ((JComboBox)var1).setRenderer(new TreeCombo$ListEntryRenderer(var1));
  26.    }
  27.  
  28.    public void setSelectedItem(Object var1) {
  29.       this.currentValue = var1;
  30.       ((AbstractListModel)this).fireContentsChanged(this, -1, -1);
  31.    }
  32.  
  33.    public Object getSelectedItem() {
  34.       return this.currentValue;
  35.    }
  36.  
  37.    public int getSize() {
  38.       this.validate();
  39.       return this.cache.size();
  40.    }
  41.  
  42.    public Object getElementAt(int var1) {
  43.       return this.cache.elementAt(var1);
  44.    }
  45.  
  46.    public void treeNodesChanged(TreeModelEvent var1) {
  47.       this.invalid = true;
  48.    }
  49.  
  50.    public void treeNodesInserted(TreeModelEvent var1) {
  51.       this.invalid = true;
  52.    }
  53.  
  54.    public void treeNodesRemoved(TreeModelEvent var1) {
  55.       this.invalid = true;
  56.    }
  57.  
  58.    public void treeStructureChanged(TreeModelEvent var1) {
  59.       this.invalid = true;
  60.    }
  61.  
  62.    void validate() {
  63.       if (this.invalid) {
  64.          this.cache = new Vector();
  65.          this.cacheTree(this.source.getRoot(), 0);
  66.          if (this.cache.size() > 0) {
  67.             this.currentValue = this.cache.elementAt(0);
  68.          }
  69.  
  70.          this.invalid = false;
  71.          ((AbstractListModel)this).fireContentsChanged(this, 0, 0);
  72.       }
  73.  
  74.    }
  75.  
  76.    void cacheTree(Object var1, int var2) {
  77.       if (this.source.isLeaf(var1)) {
  78.          this.addListEntry(var1, var2, false);
  79.       } else {
  80.          int var3 = this.source.getChildCount(var1);
  81.          this.addListEntry(var1, var2, true);
  82.          ++var2;
  83.  
  84.          for(int var4 = 0; var4 < var3; ++var4) {
  85.             Object var5 = this.source.getChild(var1, var4);
  86.             this.cacheTree(var5, var2);
  87.          }
  88.  
  89.          --var2;
  90.       }
  91.    }
  92.  
  93.    void addListEntry(Object var1, int var2, boolean var3) {
  94.       this.cache.addElement(new TreeCombo$ListEntry(this.this$0, var1, var2, var3));
  95.    }
  96. }
  97.