001 package ui.model;
002
003 import java.util.*;
004 import javax.swing.tree.*;
005 import javax.swing.event.*;
006 import astronomy.data.spectra.*;
007
008 public class SpectraTreeModel implements TreeModel {
009
010 protected Spectradatabase _sd;
011
012 private EventListenerList listenerList = new EventListenerList();
013
014 public SpectraTreeModel(Spectradatabase sd) {
015 _sd = sd;
016 }
017
018 protected java.util.List getChildren(Object aParent) {
019 if (aParent instanceof Spectradatabase) {
020 Spectradatabase sd = (Spectradatabase) aParent;
021 return sd.getType();
022
023 } else if (aParent instanceof SpectradatabaseType.TypeType) {
024 SpectradatabaseType.TypeType type = (SpectradatabaseType.TypeType) aParent;
025 return type.getSource();
026
027 } else if (aParent instanceof SpectradatabaseType.TypeType.SourceType) {
028 SpectradatabaseType.TypeType.SourceType source = (SpectradatabaseType.TypeType.SourceType) aParent;
029 return source.getSpectra();
030
031 } else if (aParent instanceof SpectraType) {
032 SpectraType spectraType = (SpectraType) aParent;
033 List list = new ArrayList(spectraType.getPlot());
034 list.addAll(spectraType.getAbsorptionline());
035 list.addAll(spectraType.getEmissionline());
036 list.addAll(spectraType.getDiscontinuity());
037 return list;
038
039 } else if (aParent instanceof PlotType) {
040 PlotType plot = (PlotType) aParent;
041 PlotType.PlotdataType data = plot.getPlotdata();
042 List list = new ArrayList(1);
043 list.add(data);
044 return list;
045
046 } else if (aParent instanceof PlotType.PlotdataType) {
047 PlotType.PlotdataType data = (PlotType.PlotdataType) aParent;
048 List list = new ArrayList();
049 if (data.getImagefile() != null) list.add(data.getImagefile());
050 if (data.getPlotfile() != null) list.add(data.getPlotfile());
051 return list;
052
053 } else if (aParent instanceof LineType) {
054 LineType line = (LineType) aParent;
055 return line.getTransition();
056
057 } else {
058 return new ArrayList();
059 }
060 }
061
062 public Object getChild(Object aParent, int anIndex) {
063 return getChildren(aParent).get(anIndex);
064 }
065
066 public int getIndexOfChild(Object aParent, Object aChild) {
067 return getChildren(aParent).indexOf(aChild);
068 }
069
070 public int getChildCount(Object aParent) {
071 return getChildren(aParent).size();
072 }
073
074 public boolean isLeaf(Object aNode) {
075 return getChildCount(aNode) == 0;
076 }
077
078 public Object getRoot() {
079 return _sd;
080 }
081
082 public void valueForPathChanged(TreePath aPath, Object newValue) {
083 Object _treeObject = aPath.getLastPathComponent();
084 //if (_treeObject != null && _treeObject instanceof KBObject)
085 }
086
087 public void addTreeModelListener(TreeModelListener l) {
088 listenerList.add(TreeModelListener.class, l);
089 }
090
091 public void removeTreeModelListener(TreeModelListener l) {
092 listenerList.remove(TreeModelListener.class, l);
093 }
094
095 }
096