diff --git a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/TreePanel.java b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/TreePanel.java index 459d827fb3f9ea7a1beba5203c84e6b5fd0bb2f4..4d064ae433bac7816318ce30a74c33699a2252e8 100644 --- a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/TreePanel.java +++ b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/TreePanel.java @@ -103,6 +103,10 @@ public class TreePanel extends javax.swing.JPanel { jTree1.setSelectionPath(jTree1.getPathForLocation(evt.getX(),evt.getY())); } + public JTree getTree(){ + return jTree1; + } + /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is diff --git a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/bbs/BBSStrategyPanel.form b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/bbs/BBSStrategyPanel.form index 53d1af446365e71ddb59326a70c349fb6082dc69..682af37fbda570d62f3d434e5f3b1eeed39e088b 100644 --- a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/bbs/BBSStrategyPanel.form +++ b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/bbs/BBSStrategyPanel.form @@ -289,6 +289,9 @@ <Dimension value="[30, 25]"/> </Property> </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="addStepButtonActionPerformed"/> + </Events> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="2" insetsLeft="2" insetsBottom="2" insetsRight="2" anchor="10" weightX="0.0" weightY="0.0"/> @@ -300,6 +303,7 @@ <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> <Image iconType="3" name="/nl/astron/lofar/sas/otbcomponents/bbs/icons/general/Delete16.gif"/> </Property> + <Property name="enabled" type="boolean" value="false"/> <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> <Dimension value="[30, 25]"/> </Property> @@ -310,6 +314,9 @@ <Dimension value="[30, 25]"/> </Property> </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="removeStepButtonActionPerformed"/> + </Events> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> <GridBagConstraints gridX="2" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="2" insetsLeft="2" insetsBottom="2" insetsRight="2" anchor="10" weightX="0.0" weightY="0.0"/> @@ -321,6 +328,7 @@ <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> <Image iconType="3" name="/nl/astron/lofar/sas/otbcomponents/bbs/icons/general/Edit16.gif"/> </Property> + <Property name="enabled" type="boolean" value="false"/> <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> <Dimension value="[30, 25]"/> </Property> @@ -331,6 +339,9 @@ <Dimension value="[30, 25]"/> </Property> </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="modifyStepButtonActionPerformed"/> + </Events> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> <GridBagConstraints gridX="1" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="2" insetsLeft="2" insetsBottom="2" insetsRight="2" anchor="10" weightX="0.0" weightY="0.0"/> @@ -343,6 +354,7 @@ <Image iconType="3" name="/nl/astron/lofar/sas/otbcomponents/bbs/icons/general/Open16.gif"/> </Property> <Property name="text" type="java.lang.String" value="Template"/> + <Property name="enabled" type="boolean" value="false"/> </Properties> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> @@ -420,6 +432,9 @@ <Properties> <Property name="title" type="java.lang.String" value="Strategy Step Tree"/> </Properties> + <Events> + <EventHandler event="valueChanged" listener="javax.swing.event.TreeSelectionListener" parameters="javax.swing.event.TreeSelectionEvent" handler="stepsTreePanelValueChanged"/> + </Events> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> <BorderConstraints direction="Center"/> diff --git a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/bbs/BBSStrategyPanel.java b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/bbs/BBSStrategyPanel.java index 49a7389d811ca16648d4da50e8598cd5dff82cc8..8179a8353d21f76b74a1a6a998013d1b5651ccc7 100644 --- a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/bbs/BBSStrategyPanel.java +++ b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/bbs/BBSStrategyPanel.java @@ -33,6 +33,8 @@ import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.border.TitledBorder; +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; import nl.astron.lofar.lofarutils.LofarUtils; import nl.astron.lofar.sas.otb.MainFrame; import nl.astron.lofar.sas.otb.jotdb2.jOTDBnode; @@ -40,6 +42,8 @@ import nl.astron.lofar.sas.otb.jotdb2.jOTDBparam; import nl.astron.lofar.sas.otb.util.IViewPanel; import nl.astron.lofar.sas.otb.util.UserAccount; import nl.astron.lofar.sas.otb.util.treenodes.TreeNode; +import nl.astron.lofar.sas.otbcomponents.bbs.stepmanagement.BBSStep; +import nl.astron.lofar.sas.otbcomponents.bbs.stepmanagement.BBSStepNode; import nl.astron.lofar.sas.otbcomponents.bbs.stepmanagement.BBSStepTreeManager; import org.apache.log4j.Logger; @@ -116,8 +120,8 @@ public class BBSStrategyPanel extends javax.swing.JPanel implements IViewPanel{ } //Add steps that make up the strategy to the steps tree browser + // Vector steps = itsMainFrame.getSharedVars().getOTDBrmi().getRemoteMaintenance().getItemList(itsNode.treeID(), itsNode.parentID(), 1); - // get all the params per child Enumeration se = steps.elements(); while( se.hasMoreElements() ) { @@ -131,15 +135,16 @@ public class BBSStrategyPanel extends javax.swing.JPanel implements IViewPanel{ //we need to get all the childs from the following nodes as well. }else if (LofarUtils.keyName(aNode.name).equals("Step")) { //Add steps to tree - String[] rootNodeArgs = new String[3]; - rootNodeArgs[0]= "Strategy Steps"; - rootNodeArgs[1]=aNode.name; - rootNodeArgs[2]=""; + Object[] rootNodeArgs = new Object[3]; + rootNodeArgs[0]= new String("Strategy Steps"); + rootNodeArgs[1]=aNode; TreeNode newStepRootNode = BBSStepTreeManager.getInstance(itsMainFrame.getUserAccount()).getRootNode(rootNodeArgs); this.stepsTreePanel.newRootNode(newStepRootNode); } } + // + //End of code that handles step tree browser } catch (RemoteException ex) { logger.debug("Error during getComponentParam: "+ ex); @@ -760,14 +765,27 @@ public class BBSStrategyPanel extends javax.swing.JPanel implements IViewPanel{ addStepButton.setMaximumSize(new java.awt.Dimension(30, 25)); addStepButton.setMinimumSize(new java.awt.Dimension(30, 25)); addStepButton.setPreferredSize(new java.awt.Dimension(30, 25)); + addStepButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + addStepButtonActionPerformed(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); stepsModsPanel.add(addStepButton, gridBagConstraints); removeStepButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/nl/astron/lofar/sas/otbcomponents/bbs/icons/general/Delete16.gif"))); + removeStepButton.setEnabled(false); removeStepButton.setMaximumSize(new java.awt.Dimension(30, 25)); removeStepButton.setMinimumSize(new java.awt.Dimension(30, 25)); removeStepButton.setPreferredSize(new java.awt.Dimension(30, 25)); + removeStepButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + removeStepButtonActionPerformed(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 0; @@ -775,9 +793,16 @@ public class BBSStrategyPanel extends javax.swing.JPanel implements IViewPanel{ stepsModsPanel.add(removeStepButton, gridBagConstraints); modifyStepButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/nl/astron/lofar/sas/otbcomponents/bbs/icons/general/Edit16.gif"))); + modifyStepButton.setEnabled(false); modifyStepButton.setMaximumSize(new java.awt.Dimension(30, 25)); modifyStepButton.setMinimumSize(new java.awt.Dimension(30, 25)); modifyStepButton.setPreferredSize(new java.awt.Dimension(30, 25)); + modifyStepButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + modifyStepButtonActionPerformed(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; @@ -786,6 +811,7 @@ public class BBSStrategyPanel extends javax.swing.JPanel implements IViewPanel{ loadTemplateStepButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/nl/astron/lofar/sas/otbcomponents/bbs/icons/general/Open16.gif"))); loadTemplateStepButton.setText("Template"); + loadTemplateStepButton.setEnabled(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 0; @@ -824,6 +850,12 @@ public class BBSStrategyPanel extends javax.swing.JPanel implements IViewPanel{ stepsPanel.add(stepsMoveUpDownPanel, java.awt.BorderLayout.EAST); stepsTreePanel.setTitle("Strategy Step Tree"); + stepsTreePanel.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() { + public void valueChanged(javax.swing.event.TreeSelectionEvent evt) { + stepsTreePanelValueChanged(evt); + } + }); + stepsPanel.add(stepsTreePanel, java.awt.BorderLayout.CENTER); strategyPanel.add(stepsPanel, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 150, 400, 330)); @@ -904,6 +936,55 @@ public class BBSStrategyPanel extends javax.swing.JPanel implements IViewPanel{ add(strategyScrollPane, java.awt.BorderLayout.CENTER); }// </editor-fold>//GEN-END:initComponents + + private void removeStepButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeStepButtonActionPerformed + TreePath selectedPath = this.stepsTreePanel.getTree().getSelectionPath(); + if(selectedPath != null){ + + TreeNode someTreeNode = (TreeNode)selectedPath.getLastPathComponent(); + logger.trace("BBS Step Node to be deleted : "+someTreeNode.getName()); + + BBSStepNode bbsNode = (BBSStepNode)someTreeNode.getUserObject(); + BBSStep aBBSStep = bbsNode.getContainedStep(); + if(aBBSStep!=null && !bbsNode.isRootNode()){ + if(aBBSStep.getParentStep()!=null){ + aBBSStep.getParentStep().removeChildStep(aBBSStep); + } + DefaultTreeModel treeModel = (DefaultTreeModel)stepsTreePanel.getTree().getModel(); + treeModel.removeNodeFromParent(someTreeNode); + stepsTreePanel.getTree().removeSelectionPath(selectedPath); + stepsTreePanel.getTree().revalidate(); + } + + } + }//GEN-LAST:event_removeStepButtonActionPerformed + + private void modifyStepButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_modifyStepButtonActionPerformed + TreePath selectedPath = this.stepsTreePanel.getTree().getSelectionPath(); + if(selectedPath != null){ + TreeNode someBBSStepNode = (TreeNode)selectedPath.getLastPathComponent(); + logger.trace("BBS Step to be modified : "+someBBSStepNode.getName()); + } + }//GEN-LAST:event_modifyStepButtonActionPerformed + + private void stepsTreePanelValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_stepsTreePanelValueChanged + TreePath selectedPath = this.stepsTreePanel.getTree().getSelectionPath(); + if(selectedPath != null){ + this.modifyStepButton.setEnabled(true); + this.removeStepButton.setEnabled(true); + }else{ + this.modifyStepButton.setEnabled(false); + this.removeStepButton.setEnabled(false); + } + }//GEN-LAST:event_stepsTreePanelValueChanged + + private void addStepButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addStepButtonActionPerformed + TreePath selectedPath = this.stepsTreePanel.getTree().getSelectionPath(); + if(selectedPath != null){ + TreeNode someBBSStepNode = (TreeNode)selectedPath.getLastPathComponent(); + logger.trace("BBS Step Node to be supplied with child : "+someBBSStepNode.getName()); + } + }//GEN-LAST:event_addStepButtonActionPerformed private void modifyStationTextKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_modifyStationTextKeyReleased String toBeAddedStation = modifyStationText.getText(); diff --git a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/bbs/stepmanagement/BBSStep.java b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/bbs/stepmanagement/BBSStep.java new file mode 100644 index 0000000000000000000000000000000000000000..bc2460bd51a55ea5a85f110990ad1614cdb5dd0f --- /dev/null +++ b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/bbs/stepmanagement/BBSStep.java @@ -0,0 +1,140 @@ +/* + * BBSStep.java + * + * Copyright (C) 2002-2007 + * ASTRON (Netherlands Foundation for Research in Astronomy) + * P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, seg@astron.nl + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +package nl.astron.lofar.sas.otbcomponents.bbs.stepmanagement; + +import java.util.HashMap; +import java.util.Vector; + +/** + * @version $Id$ + * @created July 25, 2006, 10:08 AM + * @author pompert + */ +public class BBSStep{ + + //Possible parent step + private BBSStep parentStep; + //Contained substeps + private Vector<BBSStep> childSteps; + //Step Name + private String name; + //Step Baseline Selection + private String[] station1Selection; + private String[] station2Selection; + //Step Sources + private String[] peelSources; + private String[] predictSources; + //Step Instrument Model + private String[] instrumentModel; + //Step Integration + private double integrationFrequency; + private double integrationTime; + //Step Correlation + private String correlationSelection; + private String[] correlationType; + //Step Output Data Column + private String outputDataColumn; + + //TODO: Step Operation Types + /** Creates a new instance of BBSStep */ + public BBSStep(String name) { + this.name=name; + childSteps = new Vector<BBSStep>(); + parentStep = null; + } + + public String getName(){ + return name; + } + + public void setName(String name){ + this.name = name; + } + + public BBSStep getParentStep(){ + return parentStep; + } + + public void setParentStep(BBSStep parentStep){ + this.parentStep = parentStep; + } + + public boolean hasParentStep(){ + return parentStep == null; + } + + public Vector<BBSStep> getChildSteps(){ + return childSteps; + } + + public BBSStep getChildStep(String name) throws IllegalArgumentException{ + BBSStep returnStep = null; + for(BBSStep aStep : childSteps){ + if(aStep.name.equals(name)){ + returnStep = aStep; + } + } + if(returnStep==null){ + throw new IllegalArgumentException("No Child Step was found with name: "+name); + } + return returnStep; + } + + public BBSStep getChildStepAtIndex(int index) throws IllegalArgumentException{ + BBSStep returnStep = null; + + if(childSteps.elementAt(index)!=null){ + returnStep = childSteps.get(index); + }else{ + throw new IllegalArgumentException("No Child Step was found at index: "+index); + } + return returnStep; + } + public void addChildStep(BBSStep childStep){ + childStep.setParentStep(this); + childSteps.add(childStep); + } + public void setChildStepAtIndex(BBSStep childStep, int index){ + childStep.setParentStep(this); + childSteps.add(index,childStep); + } + public void removeChildStepAtIndex(int index){ + childSteps.get(index).setParentStep(null); + childSteps.remove(index); + childSteps.trimToSize(); + } + + public void removeChildStep(BBSStep childStep){ + if(childSteps.contains(childStep)){ + childStep.setParentStep(null); + childSteps.remove(childStep); + childSteps.trimToSize(); + } + } + + public boolean hasChildSteps(){ + return childSteps.size()>0; + } + +} diff --git a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/bbs/stepmanagement/BBSStepNode.java b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/bbs/stepmanagement/BBSStepNode.java index 500fec260be9c0e53a603f53bfd22dea5e574012..d58826e9ae96ab8692359cbddd235226dd9305f5 100644 --- a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/bbs/stepmanagement/BBSStepNode.java +++ b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/bbs/stepmanagement/BBSStepNode.java @@ -21,50 +21,56 @@ package nl.astron.lofar.sas.otbcomponents.bbs.stepmanagement; +import nl.astron.lofar.sas.otb.jotdb2.jOTDBnode; + public class BBSStepNode implements java.io.Serializable { // private members private String name; - private boolean leaf; private boolean rootNode; - private String itsNodeID; - private String itsParentID; - + protected boolean leaf; + private BBSStep containedStep; + private jOTDBnode representedOTDBnode; - public BBSStepNode(String nodeID, String parentID) { - leaf = false; - itsNodeID = nodeID; - itsParentID = parentID; + public BBSStepNode(BBSStep aBBSStep) { + containedStep = aBBSStep; rootNode = false; + leaf = true; } public String getName() { + if(containedStep!=null){ + return containedStep.getName(); + } return name; } public void setName(String name) { this.name = name; } public boolean isLeaf() { - return leaf; - } - public void setLeaf(boolean leaf) { - this.leaf = leaf; + boolean returnBool = true; + if(containedStep != null && !rootNode){ + returnBool = !containedStep.hasChildSteps(); + }else{ + returnBool = leaf; + } + return returnBool; } public boolean isRootNode() { return rootNode; } public void setRootNode(boolean isRootNode) { this.rootNode = isRootNode; - } - public String getNodeID() { - return (itsNodeID); + } + public BBSStep getContainedStep(){ + return containedStep; + } + public void setContainedStep(BBSStep containedStep){ + this.containedStep = containedStep; + } + public jOTDBnode getOTDBNode(){ + return representedOTDBnode; } - public void setNodeID(String nodeId) { - itsNodeID = nodeId; - } - public String getParentID() { - return (itsParentID); + public void setOTDBNode(jOTDBnode representedOTDBnode){ + this.representedOTDBnode = representedOTDBnode; } - public void setParentID(String parentID) { - itsParentID = parentID; - } } diff --git a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/bbs/stepmanagement/BBSStepTreeManager.java b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/bbs/stepmanagement/BBSStepTreeManager.java index df902452607182e9730997f82aa3f1affb8e0806..79c7ed94c3ebf68badfc7b177e2853313f380713 100644 --- a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/bbs/stepmanagement/BBSStepTreeManager.java +++ b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otbcomponents/bbs/stepmanagement/BBSStepTreeManager.java @@ -24,6 +24,9 @@ package nl.astron.lofar.sas.otbcomponents.bbs.stepmanagement; import java.util.Enumeration; import java.util.Vector; +import javax.swing.event.TreeModelEvent; +import nl.astron.lofar.sas.otb.SharedVars; +import nl.astron.lofar.sas.otb.jotdb2.jOTDBnode; import nl.astron.lofar.sas.otb.util.UserAccount; import nl.astron.lofar.sas.otb.util.treemanagers.GenericTreeManager; import nl.astron.lofar.sas.otb.util.treemanagers.ITreeManager; @@ -73,63 +76,68 @@ public class BBSStepTreeManager extends GenericTreeManager implements ITreeManag } public void defineChildsForNode(TreeNode aNode) { - /* - logger.trace("Entry - TreeManager BBSStepNode-defineChildNodes("+aNode.getName()+" ("+((BBSStepNode)aNode.getUserObject()).getNodeID()+"))"); - try { - // You must set the flag before defining children if you - // use "add" for the new children. Otherwise you get an infinite - // recursive loop, since add results in a call to getChildCount. - // However, you could use "insert" in such a case. - aNode.areChildrenDefined = true; - Vector childs = null; - BBSStepNode containedNode = (BBSStepNode)aNode.getUserObject(); + + if (aNode.getUserObject() == null) { + logger.debug("Error - TreeManager BBSStepNode-defineChildNodes("+aNode.getName()+" does not contain a user object)"); + return; + } + //BBS Node contained in the TreeNode + BBSStepNode containedBBSNode = (BBSStepNode)aNode.getUserObject(); + //jOTDB Node contained that is needed to fetch child nodes from OTDB + + jOTDBnode representedOTDBnode = containedBBSNode.getOTDBNode(); + logger.trace("Entry - TreeManager BBSStepNode-defineChildNodes("+aNode.getName()+" ("+containedBBSNode.getName()+"))"); + + // You must set the flag before defining children if you + // use "add" for the new children. Otherwise you get an infinite + // recursive loop, since add results in a call to getChildCount. + // However, you could use "insert" in such a case. + aNode.areChildrenDefined = true; + if(containedBBSNode.isRootNode()){ + //build the tree as a root node is detected + }else{ + //expand the first steps in the tree + BBSStep containedBBSStep = containedBBSNode.getContainedStep(); - if(((BBSStepNode)aNode.getUserObject()).isRootNode()){ - //childs = SharedVars.getJParmFacade().getNames(""+containedNode.getNodeID().substring(containedNode.getParmDBIdentifier().length())+"*"); - }else{ - //childs = SharedVars.getJParmFacade().getNames("*"+containedNode.getNodeID().substring(containedNode.getParmDBIdentifier().length()+1)+this.PARMDB_TREENODE_SEPARATOR_CHAR+"*"); - } - Vector<String> uniqueNames = new Vector<String>(); - Enumeration e = childs.elements(); - while( e.hasMoreElements() ) { - String aValue = (String)e.nextElement(); + for(BBSStep aStep : containedBBSStep.getChildSteps()){ + logger.trace("Child Node found for BBS Step Tree :"+aStep.getName()); - - BBSStepNode item = new BBSStepNode(containedNode.getNodeID()+this.BBSSTEP_TREENODE_SEPARATOR_CHAR+childName,((BBSStepNode)aNode.getUserObject()).getNodeID()); - //item.leaf=true; - item.setName(childName); - logger.trace("Node name selected : "+item.getName()); - ((jParmDBnode)aNode.getUserObject()).setLeaf(false); - TreeNode newNode = new TreeNode(this.instance,item,item.getNodeID()); + BBSStepNode newPNode = new BBSStepNode(aStep); + newPNode.setName(aStep.getName()); + newPNode.setRootNode(false); + TreeNode newNode = new TreeNode(this.instance,newPNode,newPNode.getName()); aNode.add(newNode); TreeModelEvent evt = new TreeModelEvent(newNode,newNode.getPath()); - fireTreeInsertionPerformed(evt); - - } - if(uniqueNames.size() == 0){ - ((BBSStepNode)aNode.getUserObject()).setLeaf(true); } - - } catch(Exception e) { - logger.fatal("Exception during TreeManager BBSStepNode-defineChildNodes: " + e); } + + logger.trace("Exit - TreeManager defineChildNodes("+toString()+")"); - */ + } public TreeNode getRootNode(Object arguments){ - String[] argumentArray = (String[])arguments; - BBSStepNode newPNode = new BBSStepNode(argumentArray[0],argumentArray[1]); - if(argumentArray.length==3){ - if(!argumentArray[2].equals("")){ - newPNode.setRootNode(true); - } - } - newPNode.setName(argumentArray[0]); + Object[] argumentArray = (Object[])arguments; + jOTDBnode userObject = (jOTDBnode)argumentArray[1]; + String title = (String)argumentArray[0]; + BBSStepNode newPNode = new BBSStepNode(null); + newPNode.setRootNode(true); + newPNode.setName(title); + newPNode.setOTDBNode(userObject); + newPNode.leaf=false; TreeNode bbsNode = new TreeNode(this.instance,newPNode,newPNode.getName()); + BBSStep aStep = new BBSStep("xyz"); + aStep.addChildStep(new BBSStep("sl1")); + aStep.addChildStep(new BBSStep("sl2")); + BBSStepNode newPNode2 = new BBSStepNode(aStep); + newPNode2.setName(aStep.getName()); + TreeNode newNode = new TreeNode(this.instance,newPNode2,newPNode2.getName()); + + bbsNode.add(newNode); + return bbsNode; }