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.*;
7 import javax.swing.tree.DefaultMutableTreeNode;
8 import javax.swing.tree.DefaultTreeModel;
9 import java.awt.event.ActionEvent;
10 import java.awt.event.ActionListener;
11
12
13
14
15 public class ActionCheckSingle implements ActionListener {
16
17 private final AbstractNodeModel nodeModel;
18 private final DefaultMutableTreeNode currentTableNode;
19
20 public ActionCheckSingle(AbstractNodeModel nodeModel, DefaultMutableTreeNode currentTableNode) {
21 this.nodeModel = nodeModel;
22 this.currentTableNode = currentTableNode;
23 }
24
25 @Override
26 public void actionPerformed(ActionEvent actionEvent) {
27 JCheckBox columnCheckBox = (JCheckBox) actionEvent.getSource();
28 this.nodeModel.setSelected(columnCheckBox.isSelected());
29
30 DefaultTreeModel treeModel = (DefaultTreeModel) MediatorHelper.treeDatabase().getModel();
31 DefaultMutableTreeNode tableNode = (DefaultMutableTreeNode) this.currentTableNode.getParent();
32
33 int tableChildCount = treeModel.getChildCount(tableNode);
34 var isOneChildSelected = false;
35
36 for (var i = 0 ; i < tableChildCount ; i++) {
37 DefaultMutableTreeNode currentChild = (DefaultMutableTreeNode) treeModel.getChild(tableNode, i);
38 if (currentChild.getUserObject() instanceof AbstractNodeModel) {
39 AbstractNodeModel columnTreeNodeModel = (AbstractNodeModel) currentChild.getUserObject();
40 if (columnTreeNodeModel.isSelected()) {
41 isOneChildSelected = true;
42 break;
43 }
44 }
45 }
46
47 AbstractNodeModel nodeUserObject = (AbstractNodeModel) tableNode.getUserObject();
48 nodeUserObject.setIsAnyCheckboxSelected(isOneChildSelected);
49 }
50 }