View Javadoc
1   package com.jsql.view.swing.tree.action;
2   
3   import com.jsql.view.swing.tree.model.AbstractNodeModel;
4   import com.jsql.view.swing.util.MediatorHelper;
5   
6   import javax.swing.tree.DefaultMutableTreeNode;
7   import javax.swing.tree.DefaultTreeModel;
8   import javax.swing.tree.TreePath;
9   import java.awt.event.ActionEvent;
10  import java.awt.event.ActionListener;
11  
12  /**
13   * Listener to check or uncheck every children menu items.
14   * Usually required from a table node to un/check every column
15   */
16  public class ActionCheckAll implements ActionListener {
17      
18      private final boolean isCheckboxesSelected;
19      private final TreePath path;
20      
21      public ActionCheckAll(boolean isCheckboxesSelected, TreePath path) {
22          this.isCheckboxesSelected = isCheckboxesSelected;
23          this.path = path;
24      }
25  
26      @Override
27      public void actionPerformed(ActionEvent actionEvent) {
28          DefaultMutableTreeNode currentTableNode = (DefaultMutableTreeNode) this.path.getLastPathComponent();
29          AbstractNodeModel currentTableModel = (AbstractNodeModel) currentTableNode.getUserObject();
30          DefaultTreeModel treeModel = (DefaultTreeModel) MediatorHelper.treeDatabase().getModel();
31          int tableChildCount = treeModel.getChildCount(currentTableNode);
32          for (var i = 0 ; i < tableChildCount ; i++) {
33              DefaultMutableTreeNode currentChild = (DefaultMutableTreeNode) treeModel.getChild(currentTableNode, i);
34              if (currentChild.getUserObject() instanceof AbstractNodeModel) {
35                  AbstractNodeModel columnTreeNodeModel = (AbstractNodeModel) currentChild.getUserObject();
36                  columnTreeNodeModel.setSelected(this.isCheckboxesSelected);
37                  
38                  currentTableModel.setIsAnyCheckboxSelected(this.isCheckboxesSelected);
39              }
40          }
41  
42          treeModel.nodeChanged(currentTableNode);
43      }
44  }