- Implementing TreeModel
- public class PMEntry implements TreeModel{
- private String title;
- private List<PMEntry> pmEntryCollection;
- private String pmId;
- private String href;
- private PMEntry root;
- private ModuleType type;
- public PMEntry (PMEntry root){
- this.root = root;
- }
- @Override
- public Object getRoot() {
- return ((PMEntry)this.root);
- }
- @Override
- public Object getChild(Object o, int i) {
- if(getPmEntryCollection().isEmpty()){
- return null;
- }else {
- return (PMEntry) getPmEntryCollection().get(i);
- }
- }
- @Override
- public int getChildCount(Object o) {
- if(getPmEntryCollection().isEmpty()){
- return 0;
- }else {
- return getPmEntryCollection().size();
- }
- }
- @Override
- public boolean isLeaf(Object o) {
- PMEntry pmentry = (PMEntry)o;
- return (pmentry.getType() == ModuleType.DM) ? true : false;
- }
- @Override
- public void valueForPathChanged(TreePath tp, Object o) {
- //todo
- }
- @Override
- public int getIndexOfChild(Object parent, Object child) {
- if (!(parent instanceof PMEntry)){
- System.out.println("Returning -1");
- return -1;
- }
- PMEntry pParent = (PMEntry) parent;
- List<PMEntry> children = pParent.getPmEntryCollection();
- if (children == null) {
- System.out.println("children = null, Returning -1");
- return -1;
- }
- for (int i = 0; i < children.size(); i++) {
- System.out.println("Child:" + child);
- if (children.get(i) == child) {
- return i;
- }
- }
- return -1;
- }
- @Override
- public void addTreeModelListener(TreeModelListener tl) {
- //todo
- }
- @Override
- public void removeTreeModelListener(TreeModelListener tl) {
- //todo
- }
- @Override
- public String toString(){
- return this.getTitle();
- }
- public enum ModuleType {
- PM,
- DM
- }
- // getters and setters here....
- PMEntry tm = new PMEntry(null);
- tm.setTitle("Root");
- PMEntry pmRoot = new PMEntry((PMEntry)(tm));
- pmRoot.setTitle("Project");
- PMEntry pm1 = new PMEntry(pmRoot);
- pm1.setType(PMEntry.ModuleType.DM);
- pm1.setTitle("Publication Module");
- PMEntry pm2 = new PMEntry(pmRoot);
- pm2.setType(PMEntry.ModuleType.PM);
- pm2.setTitle("Chapter");
- List<PMEntry> pmCollection = new ArrayList<PMEntry>();
- List<PMEntry> pmCollection1 = new ArrayList<PMEntry>();
- PMEntry pm3 = new PMEntry(null);
- pm3.setType(PMEntry.ModuleType.DM);
- pm3.setTitle("Data Module");
- PMEntry pm4 = new PMEntry(null);
- pm4.setType(PMEntry.ModuleType.DM);
- pm4.setTitle("Data Module");
- pmCollection1.add(pm3);
- pmCollection1.add(pm4);
- pm2.setPmEntryCollection(pmCollection1);
- pmCollection.add(pm1);
- pmCollection.add(pm2);
- pmRoot.setPmEntryCollection(pmCollection);
- this.jTree1.setModel(pmRoot);