Workflow to close Parent Task if all Children Tasks are Marked as Complete

Hi All,
I am struggling in creating a workflow which would mark my parent task as complete once all children tasks(I have subgrid in parent task where I add children tasks) have been marked as complete. I would assume it would be on a wait condition but
I could have many children tasks and I guess I am little unsure how to create this wait condition to check whether all children tasks are complete and then complete parent task...
Any help would be much appreciated!
Thanks so much!

You can't do this out of the box.  There's no easy way to check all child records on a parent record and then close the parent record.  You'll either have to find another approach, or do some custom development to create a workflow that can do
what you want. 
I'd start looking here: https://msdn.microsoft.com/en-us/library/gg309745.aspx?f=255&MSPPError=-2147217396
The postings on this site are solely my own and do not represent or constitute Hitachi Solutions' positions, views, strategies or opinions.

Similar Messages

  • Itunes has lost my purchase song list but all the albums are list as complete my albums. The ones i have purchased are tell me i have to buy them again. Not happy Itunes not Happy Apple

    Itunes has lost my purchase song list but all the albums are list as complete my albums. The ones i have purchased are tell me i have to buy them again. Not happy Itunes not Happy Apple.
    How do i fix it or does apple have to fix it on there end?

    If the single songs are no longer available in Itunes, that would also explain why you aren't able to see your purchases.
    If the songs are on your phone you can transfer purchases to iTunes app on your computer.   You wouldn't be able to download them again though.

  • Hi I am having problems with my itunes app. It seems to want to open but then closes straight away. All other apps are working fine

    Hi I am having problems with my itunes app. It seems to want to open but then it wont

    restart
    http://support.apple.com/kb/ht1430

  • Almost all my songs are marked 'Exceeded limit' when i only have 13k songs. what does this mean?

    I only have 13,ooo songs. only about 40 matched. most say Exceeded Limit and have a little dotted cloud.
    does this mean they're not in the could? i have the song title listed in my phone with match on, but there is no cloud there to download it.
    how do i get these songs to upload and or match?

    Hi,
    Try signing out of iTunes Store / match. Close iTunes. Reboot computer. Open iTunes, sign into iTunes Store the match. You will be asked to add this computer. Select this and let match go through the complete match process.
    If this does not work, close iTunes and find cookie for iTunes which you will find it in safari's cookie. Delete this cookie and close safari. Reopen iTunes and turn on / update matched. You will be asked to sign in.
    If this does not work, try creating a new library by holding ctrl key whilst launching iTunes. You will get a pop up box - select create new library. This will be blank. Sign into iTunes Store then match, you will be asked to add this computer.
    This will now display all your music in the cloud. If you see any track with cloud status limited exceeded, delete tracks.
    Now sign out and try step one again.
    Jim

  • All email messages are marked as read with imap account automatically.

    I have a imap account pointing to an exchange 2007 server. The messages are being marked as read automatically. I removed any settings on a computer accessing the same account with outlook, that might be causing this.

    Let me clarify what I said across all the responses in this topic. If you are operating a PC with say Outlook Express or Windows Mail, and a Mac with Mail, and furthermore if both are able to download a message from a POP server, and on both computers it is marked as Unread, then reading the message on one of the computers will not cause it to then be marked as Read on the other, operating in POP.
    But if the server makes the assumption that the first computer to download a message from it means that it is also then Read, then of course taking away one of the computers will alter things. This is what I said in:
    http://discussions.apple.com/message.jspa?messageID=10506769#10506769
    If you can disprove this, then lay out your facts in detail, but don't mix looking at the server with Firefox on one computer, and Mail on still another. Firefox is not an email client, but a browser. Using Thunderbird on the PC, and Mail on the Mac would be an equivalent test.
    Ernie

  • Update parent status based on all children status and sum of children amount.

    Hi,
    I need to write sql query for the following scenarios.
    We have 3 financial systems (sys1, sys2, sys3) where a same transaction gets entered independently into each system OR entered into one and exported to the other system. Transaction need not be in all 3 systems.
    We need to create reconcile report to see the status of transaction and display if it is reconciled or not. For this, in our stored procedure we are pulling data from 3 systems into temp tables and using CTE and other logic marking each transaction status
    in each system temp table. One of the systems (eg sys1), we made it as source.
    Sys1 temp table has both parent and child records and are distinguished using type. Sys2 and sys3 has only children records.  When report is created, we are showing parent  from sys1 temp table and
    children from new temp table where children status is updated based on availability of it in all 3 systems.
    DECLARE
    @sys1 TABLE
    ID int,
    childID varchar(20),
    ParentID varchar(20),
    RecType decimal(3,0),
    SettleDate smalldatetime,
    Principal money,
    Sys3ID varchar(16)
    NULL,
    Sys2ID int
    NULL,
                            Status varchar(25) NULL
    DECLARE
    @sys2 TABLE
    TxID int
    PRIMARY KEY NOT
    NULL,
    CommonTransactionID varchar(16),
    SettleDate smalldatetime,
    Par money,
    Sys3ID varchar(16) NULL,
    Sys1ChildID,
    Sys1ParentID bigint
    DECLARE
    @sys3 TABLE
    Sys3ID varchar(16),
    REFERENCE
    varchar(16),
    VALUE_DATE datetime,
    DIRECTION char(1),
    AMOUNT money,
    RecSource varchar(2)
    Insert Into @sys1 (ID, childID, ParentID, RecType, SettleDate, Principal)
    Select 172876, 217955, 217954, 100, ‘2015-03-01’, 100.00
    Union
    Select 172877, 217956, 217955, 50, ‘2015-03-01’, 15.00
    Union
    Select 172878, 217957, 217955, 50, ‘2015-03-01’, 25.00
    union
    Select 172879, 217958, 217955, 50, ‘2015-03-01’, 10.00
    Union
    Select 172880, 217959, 217955, 50, ‘2015-03-01’, 10.00
    union
    Select 172881, 217960, 217955, 50, ‘2015-03-01’, 40.00
    Insert Into @sys2(TxID, Sys1ID, settleDate, Par)
    Select 4336620, 217956, ‘2015-03-01’, 15.00
    Union
    Select 4336621, 217957, ‘2015-03-01’, 25.00
    union
    Select 4336613, 217958, ‘2015-03-01’, 10.00
    Union
    Select 4336614, 217959, ‘2015-03-01’, 10.00
    union
    Select 4336615, 217960, ‘2015-03-01’, 40.00
    Insert into @sys3(Sys3ID, Reference, Value_Date, Direction, Amount)
    Select 1, ‘5654471 4336620’, ‘2015-03-01’, ‘O’, 15.00
    Union
    Select 2, ‘5654481 4336621’, ‘2015-03-01’, 'O',25.00
    Union
    Select 3, ‘5654491 4336613’, ‘2015-03-01’, 'O',10.00
    Union
    Select 4, ‘5654501 4336614’, ‘2015-03-01’, 'O',10.00
    Union
    Select 5, ‘5654511 4336615’, ‘2015-03-01’, 'O', 40.00
    After going thru lot of other logic, final temp table will have only children with status assigned. The above temp table data is only for 1 scenario.
    The following are status of children.
    This is how status of children is determined:
    Not Settled – All child records start as Not settled in temp tables.
    Settled – when record exists in sys3 and other criteria is met.
    Partially settled – record exists in sys3 and either in sys1 or sys2 or other criteria is not met.
    Reconciled – child record should exist in all 3 systems and all criteria is match
    Mismatched – record has wrong amount when compared in any of 2 systems.
    **************** My Part below*******************
    My part is to update the status of parent based on children status and parent amount must match sum of child amounts. If amounts don’t match, then leave the status of parent as null.
    Determining the status of parent:
    Not Settled – None of children has yet settled.
    Settled – All children are settled.
    Partially settled – some of children are as settled OR 1+ children are partially settled.
    Reconciled – All children are reconciled.
    Partially Reconciled – some children are partially reconciled.
    Null – 1 or more childen has a status of mismatched.
    AND sum of children amount should match parent amount
    How can I update the status of parent based on all children and sum of amount of children equal to parent amount.
    Thanks,
    Spunny

    >> We have 3 financial systems (sys1, sys2, sys3) where the same transaction gets entered independently into each system OR entered into one and exported to the other system. Transaction need not be in all 3 systems. <<
    Your design is fundamentally wrong. In RDBMS, we want to have one fact, one way, in one place in the schema. The goal of all databases is to remove redundancy, not increase it. This not just SQL; this was true for hierarchical and network databases before them! 
    >> We need to create reconcile report to see the status of transaction and display if it is reconciled or not. For this, in our stored procedure we are pulling data from 3 systems into temp tables and using CTE and other logic marking each transaction
    status in each system temp table. One of the systems (eg sys1), we made it as source. <<
    You have re-invent the worst of 1970's file processing, but you want to use a temp table instead of scratch tape. This is not RDBMS or good SQL. 
    >> Sys1 temp table has both parent [sic] and child [sic] records [sic] and are distinguished using type. Sys2 and sys3 has only children [sic] records [sic]. When report is created, we are showing parent from sys1 temp table and children from new temp
    table where children [sic] status is updated based on availability of it in all 3 systems. <, 
    The terms “child” and “parent” are not part of RDBMS. They come from network databases. You are building fake pointer chains we do have referenced and referencing tables. Or do you mean to model weak and strong entities? Where is the DRI actions?
    These things are not tables! They have no keys, so they are called (garbage) piles. But even the garbage is wrong. There is no generic “id” in RDBMS; it has to be “<something in particular>_id” to be valid. Since you do not do math on it, it should not
    be a numeric. 
    A “rec_type” is a nominal scale, so it cannot be a numeric either! Likewise, we have no generic “status”, but a status is state of being so it has to have a temporal dimension. And did you know that “reference” is a reserved word in SQL as well as another ISO-11179
    violation. 
    The MONEY data type does not do correct math. Google it! It is another Sybase left-over that nobody should ever use. 
    Finally, you used the old Sybase INSERT INTO ..SELECT..), .. disaster instead of the ANSI/ISO Standard VALUES table constructor. 
    >> This is how status of children [sic] is determined: ..
    My part is to update the status of parent [sic] based on children [sic] status and parent [sic] amount must match sum of child [sic] amounts.<<
    Your narrative describes what Tom Johnston called a Non-Normal Form Redundancy. We do not put summary data in the strong entity; another basic data modeling principle. We build a VIEW that gives us the current summary. Your mindset is still in punch cards and
    magnetic tape files. 
    "No matter how far you have gone down the wrong road, turn around!" -- Turkish proverb. 
    Can you start over and do it right? 
    --CELKO-- Books in Celko Series for Morgan-Kaufmann Publishing: Analytics and OLAP in SQL / Data and Databases: Concepts in Practice Data / Measurements and Standards in SQL SQL for Smarties / SQL Programming Style / SQL Puzzles and Answers / Thinking
    in Sets / Trees and Hierarchies in SQL

  • Workflow process changed to admin for all entities

    Hi, We are working in Hyperion 9.3.3. Today morning we saw that the current owners for all the entities are changed to admin for few commbinations of scenario and version members.
    We sneaked into the audit tables and we can see the changes in those table for all the planning units but inside the application, it is all admin.
    All the process workflow history is wiped off and all the names are replaced with admin. This has happened for all the entities for monthly cycles for all the previous and current year.
    Can anybody help me to resolve or help me with some pointers to look into the tables to get that resolved.
    Regards,
    CM

    Hi,
    We have not restarted the planning services, but checked in few tables namely "HSP_PLANNING_UNIT_LOGS"
    which shows the current owners ids set to 50001 which I believe is admin for all the possible combinations for the scenario and versions...
    It is a production application, we can get the schema backup which will have the original states and the owner Ids but how can we populate the
    existing tables to get the states back in the current application, rather than restoring all in a separate application...
    Regards,
    CM

  • How to update task status from custom task in state machine workflow

    i m using custom task for state machine workflow
    i am using
    if(this.onTaskChangedSupervisorAction_AfterProperties.ExtendedProperties["Workflowstatus"].ToString().Contains("Approved"))
    if above is true moving forward its working fine but i want to update the status field of task as i can update the title and due date for the task but how can i change the status once approved it
    should show the status as approved it's only showing in progress
    this.CreateTaskSupervisorAction_TaskProperties.Title="supervisor task"
    MCTS,ITIL

    If your task shows In Progress state then I think you need to look at your workflow and make sure you are using Complete Task activity and if you are already using Complete Task Activity then verify the Correlation ID. Ideally you are not required to set
    this value in workflow. You simply use the Complete Task Activity.
    If you are running into issue where your workflow is staying in In Progress state even after the task is complete then you can look at the following blog post.
    How to programmatically complete Approval workflow task
    Amit

  • Difference between Due Date for All Tasks and Duration per task in an approval workflow

    Hello,
    I'm starting to read up and learn about approval workflows in Designer 2010.  I am confused by the fields "Due Date for all Tasks" and the "Duration per task".  I understand that the Due date for all Tasks is the date that all
    of the tasks in the workflow must be completed by.  And I understand that the duration means each task has x number of days to complete.
    But I dont know whey we need them both.  If I have the task duration set to two days and there are 3 tasks involved, then wouldn't the due date be 6 days from the start?  Why would I have a due date for all tasks that is completely different than
    the sum of the duration of days for each task? 
    Please help shed some light!

    Hi Michelle,
    Due date for all tasks, this setting specifies the date by which all tasks are due. It’s used for serial and parallel
    task.
    Duration per tasks, this setting specifies the date by which an individual
     task is due, it’s used for serial workflow participants.
    Note, when you create an approval workflow, select task process participants(approvers oob approval workflow), we can also
    select once at a time(serial) or all at once(parallel).
    For more information, see
    http://office.microsoft.com/en-us/sharepoint-server-help/use-an-approval-workflow-HA101793831.aspx
    Best Regards.
    Kelly Chen
    TechNet Community Support

  • SOA/BPM/Human Tasks 11g -- add new task participant through Workflow API

    Heya folks. Got a question that's been driving me nuts, hope you can help.
    I have a bunch of Human Tasks in a BPMN process. Each task is pretty simple -- for assignment a single stage only; parallel approval; list of participants is passed in -- via the task payload -- as a comma-delimited list. When the task is initiated it produces a root task, and one child task for each participant. So, say we have participants "fgolfer,atreyvaud" we get three task objects: the "master" or root task and one each for fgolfer and atreyvaud.
    Now what I want to do is add another approver (let's say "gfrog") -- i.e. create a new task for gfrog which is a child of the master task and leaves the tasks for fgolfer and atreyvaud as they are. As far as I can figure, this is NOT a Reassign nor an Ad-Hoc Route. Applying either of those to an existing task effectively removes the existing user from the task and assigns it to the new user.
    On another track, if I programmatically create a new task (with initiateTask() from the Task service, using the values from an existing task), I seem to get a NEW master task with attendant child tasks, while leaving the existing master task and children.
    Make sense? Neither of these outcomes is what I want.
    Seems like this should be pretty simple but for the life of me I can't figure it out. I could create an FYI task or a todo task or a subtask but again this isn't what I want -- need to create a task with all the custom outcomes and such.

    In case folks are playing along at home, I've yet to find a solution for this. Because I need to move forward with my project, I've decided I can't do it through the Workflow API and I'm taking a different route -- basically, triggering a custom task outcome which returns to the same Human Task in the BPMN flow, thus starting the task again. Before doing that I update the task's payload, which contains the task assignees.
    I'm not happy with this, it seems like a nasty hack to overcome a limitation with the Workflow API.
    Understand, though, I'm not saying this is impossible through the Workflow API, just that I haven't found a way to do it. I've spent 2-3 person weeks on this and it's time to move on.

  • HT201304 It would be tremendously helpful to be able to access, set restrictions, and make changes from the parents device to all devices under the same iTunes account, so that I could make changes to my kids devices without physical access.

    Please help!
    It would be tremendously helpful to be able to access, set restrictions, and make changes from the parents device, to all devices under the same iTunes account, so that I could make changes to my kids devices without physical access.
    I understand that I can set up a different Apple ID for the kids devices, or take physical control of the device and make the changes myself. However, my teenage son is technically savvy enough to have a job in Silicon Valley, as are most young people these days. However, in order to access his devices the current way, I first have to bypass the four digit pass code. This starts a fight of why I need in the device and continues to escalate. The argument that I am the parent will gain access but the fight is simply exhausting, and quite frankly shouldn't have to happen at all. He is not yet an adult, he did not pay for his iPad or iPhone and I, as a parent, should have not only have the right to change options at will, and from anywhere, but look at history or current activity when I feel like it.
    I currently have the settings where app and in-app purchases require my password to be put in, and he must come to me to type it in, but I need more control and would like, and should be able to access any of our six devices and make individual changes simply by logging in to my account, with my password.
    If I can see all my devices on the "Lost My iPhone" app, this technology should be easy to make happen.
    C'mon parents! I have a pretty good kid, given all things that they can get into, but I am not stupid. For everything I see has been done, there is much more I haven't seen. I want my children to be kept safe and be able to know what they are looking at or listening to. We parents are the only ones who know our beliefs and what our kids can handle and when.
    Thanks for any support or information that I may be missing in order to fulfill my request.

    There are mobile device management solutions that can do this, including in Apple's OS X Server system, but most parents generally find that setting this up is more work than it's worth. If you're interested, though, there are a couple that at least purport to be free (I don't know if there are any hidden "gotchas"):
    http://www.unwireddevicelink.com/features/
    https://meraki.cisco.com/products/systems-manager
    and Apple's system:
    http://www.apple.com/osx/server/features/#profile-manager
    I don't think any, however, allow you to see current activity or browser history. iOS doesn't expose those to access from MDM solutions, to the best of my knowledge.
    Regards.

  • How to show My Tasks from all sites in site collection

    I have a site collection with several sub sites
    Each site has multiple lists and on those lists, Publishing workflow is enabled.
    For each workflow I have a SharePoint group named "Approver" in which I have added two persons:
    Person1
    Person2
    All workflows are setup like this:
    1. In workflow where it asks for Approvers I have given that group name "Approver"
    2. In "Order" I have selected "All at once (parallel)" because I want any one of the approver to approve tasks
    3. Below in "Expand Groups" option I have de-selected the checkbox
    The workflow is working fine as it shows pending tasks in Workflow Tasks lists as well as each approver gets an email alert.
    BUT
    I am displaying each Workflow Tasks list in each site which is not user friendly. I want to show all pending tasks in a single list to user.
    For that I added CQWP but problem is you can filter by "Assigned To = Approver" where approver is group name here as described above. CQWP only accepts USER NAME and not GROUP NAME in "Assigned To" field.
    If in step 1 above I give each user name instead of group name "Approver" then unless all users have approved/rejected tasks, workflow doesn't ends which I don't want. I want any one of the user to end workflow by approving/rejecting.
    What should I do now?
    TLDR
    If somehow I can filter by user group name in CQWP then my problem will be solved.

    Thanks.  It's a very detail-oriented process, tedious if you will. (Which is why I posted, hoping someone doesn't have to spend 3 weeks like I did.)
    As far as security trimming it, I think you have to ask yourself how you would security trim info within any web part? Unfortunately, I don't think it's very straightforward to do. 
    My best guess would be to solve with jQuery / JavaScript.  So, you would have a webpart to display the content, then code to determine what CAN be displayed, I don't see how you could do both without creating a custom webpart via VS.
    Steve Clark, MCTS |
    Twin-Soft Corporation
    Easy Bins Roll-off Dumpster Rentals in Northern VA
    Specializing in:
    Driveway-sized, roll-off dumpster rentals in Fairfax VA |
    Dumpster Rentals for Junk Hauling in Springfield VA
    Roll-off Rental Dumpsters in Annandale, VA |
    Dumpster Rentals for Estate Cleanout in Alexandria VA

  • How to show only all children of selected node in JTree??

    Dear friends:
    I have Two Panels, PA and PB,
    PA has a Jtree as code below, and PB listens to PA,
    I hope to do following,
    If I select a node called A in PA, then Node A's all children such as A1, A2, A3 will be displayed in PB, but not display A1, A2, A3's children such as A3 has C1, C2, C3, C4 & C5, until I select A3 then PB will display only all A3's children: C1, C2, C3, C4 & C5;
    i.e, only populate each ONE level of children of Node A or any node I select, not its grandchildren and its grand-grand children;
    Please help how to do it??
    I tried amny times, failed.
    Thanks
    [1]. PA panel code:
    package com.atest;
         import java.awt.BorderLayout;
         import java.awt.event.MouseAdapter;
         import java.awt.event.MouseEvent;
         import java.util.Enumeration;
         import java.awt.Dimension;
         import javax.swing.JFrame;
         import javax.swing.JPanel;
         import javax.swing.JScrollPane;
         import javax.swing.JTextField;
         import javax.swing.JTree;
         import javax.swing.tree.DefaultMutableTreeNode;
         import javax.swing.tree.TreeModel;
         import javax.swing.tree.TreePath;
         public class DefaultMutableTreeMain extends JPanel {
         protected DefaultMutableTreeNode    top = new DefaultMutableTreeNode("Options");
         protected DefaultMutableTreeNode      selectedNode = null;
         protected final JTree tree;
         protected final JTextField jtf;
        protected Enumeration      vEnum = null;
         private      TreeModel                m;
         protected  DefaultMutableTreeNode      getDefaultMutableTreeNode()  {
              //textArea.getText();
                   return selectedNode;
         protected  DefaultMutableTreeNode setDefaultMutableTreeNode(DefaultMutableTreeNode tt)  {
              //textArea.getText();
                   selectedNode = tt;
                   return selectedNode;
         protected  TreeModel getJTModel()  {
              //textArea.getText();
                   return m;
         protected  TreeModel setJTModel(TreeModel ta)  {
                   m = ta;
                   return m;
           public DefaultMutableTreeMain() {
             setSize(300,300);
             setLayout(new BorderLayout());
             DefaultMutableTreeNode a = new DefaultMutableTreeNode("A");
             top.add(a);
             DefaultMutableTreeNode a1 = new DefaultMutableTreeNode("A1");
             a.add(a1);
             DefaultMutableTreeNode a2 = new DefaultMutableTreeNode("A2");
             a.add(a2);
             DefaultMutableTreeNode a3 = new DefaultMutableTreeNode("A3");
             a.add(a3);
             DefaultMutableTreeNode b = new DefaultMutableTreeNode("B");
             top.add(b);
             DefaultMutableTreeNode b1 = new DefaultMutableTreeNode("B1");
             b.add(b1);
             DefaultMutableTreeNode b2 = new DefaultMutableTreeNode("B2");
             b.add(b2);
             DefaultMutableTreeNode b3 = new DefaultMutableTreeNode("B3");
             b.add(b3);
             DefaultMutableTreeNode c = new DefaultMutableTreeNode("C");
             a3.add(c);
             DefaultMutableTreeNode c1 = new DefaultMutableTreeNode("C1");
             c.add(c1);
             DefaultMutableTreeNode c2 = new DefaultMutableTreeNode("C2");
             c.add(c2);
             DefaultMutableTreeNode c3 = new DefaultMutableTreeNode("C3");
             c.add(c3);
             DefaultMutableTreeNode c4 = new DefaultMutableTreeNode("C4");
             c.add(c4);
             DefaultMutableTreeNode c5 = new DefaultMutableTreeNode("C5");
             c.add(c5);
             tree = new JTree(top);
             JScrollPane jsp = new JScrollPane(tree);
             jsp.setPreferredSize(new Dimension(400,300));
             add(jsp, BorderLayout.CENTER);
             jtf = new JTextField("", 20);
             add(jtf, BorderLayout.SOUTH);
               tree.addMouseListener(new MouseAdapter() {
               public void mouseClicked(MouseEvent me) {
                  TreePath   path = tree.getSelectionPath();
                  DefaultMutableTreeNode      selectedNode = (DefaultMutableTreeNode)path.getLastPathComponent();
                 TreePath tp = tree.getPathForLocation(me.getX(), me.getY());
                 setDefaultMutableTreeNode(selectedNode);
                     System.out.println("Current node selected is (tp.toString()=" + tp.toString());
                     System.out.println("Current node selected is getDefaultMutableTreeNode()=" + getDefaultMutableTreeNode());
                 if (tp != null){
                     jtf.setText(tp.toString());
                      System.out.println("It Has Children as selectedNode.getChildCount()= " + selectedNode.getChildCount());
                            Enumeration vEnum = selectedNode.children();
                                int i = 0;
                                while(vEnum.hasMoreElements()){
                                    System.out.println("2 selectedNode = " +  path.toString() + "  has " + i++ + " Children in vEnum.nextElement(" + i + ") = " + vEnum.nextElement());
                 else
                   jtf.setText("");
           public static void main(String[] args) {
             JFrame frame = new JFrame();
             frame.getContentPane().add(new DefaultMutableTreeMain());
             frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
             frame.setSize(400, 400);
             frame.setVisible(true);
         }[2]. PB Panel code
    package com.atest;
    import java.awt.BorderLayout;
    import javax.swing.JScrollPane;
    import javax.swing.JTree;
    import javax.swing.JPanel;
    import javax.swing.event.TreeSelectionEvent;
    import javax.swing.event.TreeSelectionListener;
    import javax.swing.tree.*;
    import javax.swing.JButton;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.DefaultTreeModel;
    import javax.swing.tree.TreePath;
    public class DefaultMutableTreeSub extends JPanel implements java.io.Serializable{
      private JButton removeButton;
      private JButton addButton;
      JTree tree;
      private TreeModel      m;
      protected TreeDragSource ds;
      protected TreeDropTarget dt;
    protected  TreeModel getJTModel()  {
              //textArea.getText();
                   return m;
    protected  TreeModel setJTModel(TreeModel ta)  {
                   m = ta;
                   return m;
    protected DefaultTreeModel model;
    protected DefaultMutableTreeNode rootNode;
    DefaultMutableTreeMain dmm = null;
    JPanel inputPanel  = new JPanel();
      public JPanel SLTreeDNDEditableDynamic(DefaultMutableTreeMain tdnd ) {
        //super("Rearrangeable Tree");
        setSize(400,450);
        dmm = tdnd;
             setLayout(new BorderLayout());
             inputPanel.setLayout(new BorderLayout());
             JPanel outputPanel = new JPanel();
             System.out.println("Sub selectedNode tdnd= " + tdnd);
             tdnd.tree.addTreeSelectionListener(new TreeSelectionListener(){
                  public void valueChanged(TreeSelectionEvent evt){
                  TreePath[] paths = evt.getPaths();
                  TreePath   path = dmm.tree.getSelectionPath();
                  DefaultMutableTreeNode      selectedNode = (DefaultMutableTreeNode)path.getLastPathComponent();
                 DefaultMutableTreeNode itemNode = dmm.getDefaultMutableTreeNode();
                     System.out.println("Sub node selected is dmm.getDefaultMutableTreeNode()=" + dmm.getDefaultMutableTreeNode());
                  model = new DefaultTreeModel(itemNode);
                  tree = new JTree(model);
                  System.out.println("Sub selectedNode paths= " + paths);
                  System.out.println("Sub selectedNode path= " + path);
                  System.out.println("Sub selectedNode = " + selectedNode);
                  System.out.println("Sub itemNode = " + itemNode);
                  tree.putClientProperty("JTree.lineStyle", "Angled");
                  tree.setRootVisible(true);
                   inputPanel.add(new JScrollPane(tree),BorderLayout.CENTER);
             return inputPanel;
         public DefaultMutableTreeSub() {
              super();
    }thanks
    sunny

    Thanks so much, I use your code and import followig:
    import java.util.ArrayList;
    import java.awt.List;
    but
    private static List<Object> getChildNodes(JTree j) {
         Object parent = j.getLastSelectedPathComponent();
         int childNodeCount = j.getModel().getChildCount(parent);
         List<Object> results = new ArrayList()<Object>;
         for (i = 0; i < childNodeCount; i++) {
              results.add(parent, i);
         return results;
    here List<Object> and ArrayList()<Object> show red,
    Is my JDK version problem??
    my one is JKD
    C:\temp\swing>java -version
    java version "1.4.2_08"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_08-b03)
    Java HotSpot(TM) Client VM (build 1.4.2_08-b03, mixed mode)
    Error as follows:
    C:\temp\swing>javac DefaultMutableTreeSub.java
    DefaultMutableTreeSub.java:38: <identifier> expected
    private static List<Object> getChildNodes(JTree j) {
    ^
    1 error
    any idea??
    Thanks

  • Filteredtreemodel, how to hide parent nodes if no children

    hi. i have surfed and read a lot of posts and topics here regarding filteredtreemodel. some i found hard to understand so i chose to use NiceGuy1's code from long ago since it's the easiest to understand.
    package test;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.DefaultTreeModel;
    import javax.swing.tree.TreeNode;
    import java.util.ArrayList;
    import java.util.Enumeration;
    public class FilteredTreeModel extends DefaultTreeModel {
        // this hashmap gets the list of pdf files and the filter status
        private String filterText;
        private DefaultMutableTreeNode orig_root;
        public FilteredTreeModel(DefaultMutableTreeNode root) {
            super(root);
            orig_root = root;
        public void setFilterText(String s) {
            this.filterText = s;
            reload();
        public String getFilterText() {
            return this.filterText;
        @Override
        public Object getChild(Object parent, int index) {
            return getFilteredChildren(parent).get(index);
        @Override
        public int getChildCount(Object parent) {
            return getFilteredChildCount(parent);
        @Override
        public int getIndexOfChild(Object parent, Object child) {
            return getFilteredChildren(parent).indexOf(child);
        private int getFilteredChildCount(Object parent) {
            return getFilteredChildren(parent).size();
        private ArrayList<TreeNode> getFilteredChildren(Object parent) {
            ArrayList<TreeNode> filteredChildren = new ArrayList<TreeNode>();
            DefaultMutableTreeNode parentNode = null;
            parentNode = (DefaultMutableTreeNode)parent;
            for (Enumeration e=parentNode.children(); e.hasMoreElements();) {
                DefaultMutableTreeNode nextNode = (DefaultMutableTreeNode) e.nextElement();
                DefaultMutableTreeNode dummy = null;
                  if (nextNode.children().hasMoreElements()) {
                      filteredChildren.add(nextNode);
                } else {
                    // if node is leaf node
                    if (filterText == null ) {
                        // add right away if no filter
                        filteredChildren.add(nextNode);
                    } else {
                        // if filter matches this leaf node, add it. if not, how to check if
                        // parent nodes have empty children and remove it.
            return filteredChildren;
    }i havent had luck the whole day trying to make this work. it seemed that once the filteredChildren.add() is called, it gets rendered to the treecellrenreder right away so if i wnat to remove the parents (in case it has no children based on the filter),the parent nodes will stay put in the jtree. any workaround? or ideas? i dont want to use a different defaulttreemodel for this. i want to avoid that because i have lots of nodes in my jtree.

    Looks like you need this:
    for (Enumeration e=parentNode.getFilteredChildren(); e.hasMoreElements();) Edit: okay, that was just a quick guess. Actually you're going to get into trouble if you try to recursively suppress nodes with no children. First you suppress all the leaf nodes (because they naturally don't have any children). Then you suppress all of their parents, because now they don't have any unsuppressed children. Then you suppress all of the parents' parents, because now they don't have any unsuppressed children... and so on until you only have the root left. So you need to refine that requirement.
    But I get what you're saying. I had to do a similar thing, only I didn't use a FilteredTreeModel, I just built the TreeModel based on a selection from another tree. It's ridiculously hard to do when you don't get the nodes in order from the database, too, but that's a different problem.

  • Parental controls blocks all https websites

    When I enabled parental controls for my 9-year old, I didn't expect her not to be able to use Google, Gmail and just about every single other website that requires logging in. The reason? Those websites are all https websites and parental controls blocks *ALL* https websites.
    With https becoming more and more prevalent on the web, adding an exception is not really an option anymore. I don't want to add an exception for half of the internet. It's gotten so bad that she's encountering a popup several times per minute when just doing a little research for her homework. Web filtering is apparently a whilelist only solution, suitable only for the smallest of children - the ones that you sit next to because they can't type a web address themselves, 5 years or younger.
    The only solution I could find was to turn off web filtering completely and use OpenDNS instead. Does anyone else know of a better solution?

    Hello,
    A alternative application as a option that is very worthy,
    <http://www.netnanny.com/mac>
    Randy Mac
    RMACS, LLC

Maybe you are looking for