Package net.sourceforge.squirrel_sql.plugins.hibernate.viewobjects

Source Code of net.sourceforge.squirrel_sql.plugins.hibernate.viewobjects.TupelResultController

package net.sourceforge.squirrel_sql.plugins.hibernate.viewobjects;

import net.sourceforge.squirrel_sql.plugins.hibernate.mapping.MappedClassInfo;

import javax.swing.*;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import java.util.ArrayList;

public class TupelResultController
{
   private JTree _resultTree;
   private Class _persistenCollectionClass;
   private ArrayList<MappedClassInfo> _allMappedClassInfos;

   public TupelResultController(TupelType tupelType, JPanel pnlResults, Class persistenCollectionClass, ArrayList<MappedClassInfo> allMappedClassInfos)
   {
      _persistenCollectionClass = persistenCollectionClass;
      _allMappedClassInfos = allMappedClassInfos;
      _resultTree = new JTree();

      DefaultMutableTreeNode root = new DefaultMutableTreeNode("DumyNode");
      DefaultTreeModel model = new DefaultTreeModel(root);
      _resultTree.setModel(model);
      _resultTree.setRootVisible(false);

      initRoot(tupelType, root);


      _resultTree.addTreeExpansionListener(new TreeExpansionListener()
      {
         @Override
         public void treeExpanded(TreeExpansionEvent event)
         {
            onTreeExpanded(event);
         }

         @Override
         public void treeCollapsed(TreeExpansionEvent event) {}
      });

      pnlResults.removeAll();
      pnlResults.add(new JScrollPane(_resultTree));


   }

   private void onTreeExpanded(TreeExpansionEvent event)
   {
      DefaultMutableTreeNode node = (DefaultMutableTreeNode) event.getPath().getLastPathComponent();

      for (int i = 0; i < node.getChildCount(); i++)
      {
         DefaultMutableTreeNode kidNode = (DefaultMutableTreeNode) node.getChildAt(i);

         if(0 < kidNode.getChildCount())
         {
            continue;
         }

         if(kidNode.getUserObject() instanceof PersistentCollectionResult)
         {
            ViewObjectsUtil.addPersistentCollectionKids(kidNode);
         }
         else if(kidNode.getUserObject() instanceof SingleResult)
         {
            ViewObjectsUtil.addSingleResultKids(kidNode, (SingleResult) kidNode.getUserObject(), _persistenCollectionClass, _allMappedClassInfos);
         }
      }
      ViewObjectsUtil.nodeStructurChanged(node, _resultTree);
   }


   private void initRoot(TupelType tupelType, DefaultMutableTreeNode root)
   {
      for (TupelResult tupelResult : tupelType.getResults())
      {
         DefaultMutableTreeNode tupelNode = new DefaultMutableTreeNode(tupelResult);
         root.add(tupelNode);

         for (SingleResult singleResult : tupelResult.getSingleResults())
         {
            tupelNode.add(new DefaultMutableTreeNode(singleResult));
         }
      }


      ViewObjectsUtil.nodeStructurChanged(root, _resultTree);
   }
}
TOP

Related Classes of net.sourceforge.squirrel_sql.plugins.hibernate.viewobjects.TupelResultController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.