package it.cnr.imaa.essi.lablib.gui.checkboxtree; import javax.swing.tree.TreePath; public class TreeCheckingSynchronizer implements TreeCheckingListener { protected TreeCheckingModel model1; protected TreeCheckingModel model2; public TreeCheckingSynchronizer(CheckboxTree tree1, CheckboxTree tree2) { this.model1 = tree1.getCheckingModel(); this.model2 = tree2.getCheckingModel(); tree1.addTreeCheckingListener(this); tree2.addTreeCheckingListener(this); } @Override public void valueChanged(TreeCheckingEvent e) { Object source = e.getSource(); TreePath leadingPath = e.getPath(); boolean checked = e.isCheckedPath(); TreeCheckingModel dest = source.equals(this.model1) ? this.model2 : this.model1; if (checked) { if (!dest.isPathChecked(leadingPath)) dest.addCheckingPath(leadingPath); } else { if (dest.isPathChecked(leadingPath)) dest.removeCheckingPath(leadingPath); } } }