mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
restored API of CheckboxTreeBase
This commit is contained in:
@@ -28,6 +28,9 @@ import javax.swing.tree.TreeNode;
|
||||
import java.awt.*;
|
||||
|
||||
public class CheckboxTreeBase extends Tree {
|
||||
private final CheckboxTreeHelper myHelper;
|
||||
private final EventDispatcher<CheckboxTreeListener> myEventDispatcher;
|
||||
|
||||
public CheckboxTreeBase() {
|
||||
this(new CheckboxTreeCellRendererBase(), null);
|
||||
}
|
||||
@@ -37,8 +40,8 @@ public class CheckboxTreeBase extends Tree {
|
||||
}
|
||||
|
||||
public CheckboxTreeBase(CheckboxTreeCellRendererBase cellRenderer, @Nullable CheckedTreeNode root, CheckPolicy checkPolicy) {
|
||||
EventDispatcher<CheckboxTreeListener> eventDispatcher = EventDispatcher.create(CheckboxTreeListener.class);
|
||||
eventDispatcher.addListener(new CheckboxTreeListener() {
|
||||
myEventDispatcher = EventDispatcher.create(CheckboxTreeListener.class);
|
||||
myEventDispatcher.addListener(new CheckboxTreeListener() {
|
||||
@Override
|
||||
public void mouseDoubleClicked(@NotNull CheckedTreeNode node) {
|
||||
onDoubleClick(node);
|
||||
@@ -54,8 +57,8 @@ public class CheckboxTreeBase extends Tree {
|
||||
CheckboxTreeBase.this.nodeStateWillChange(node);
|
||||
}
|
||||
});
|
||||
CheckboxTreeHelper helper = new CheckboxTreeHelper(checkPolicy, eventDispatcher);
|
||||
helper.initTree(this, this, cellRenderer);
|
||||
myHelper = new CheckboxTreeHelper(checkPolicy, myEventDispatcher);
|
||||
myHelper.initTree(this, this, cellRenderer);
|
||||
|
||||
setSelectionRow(0);
|
||||
if (root != null) {
|
||||
@@ -68,6 +71,31 @@ public class CheckboxTreeBase extends Tree {
|
||||
setCellRenderer(cellRenderer);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated use {@link #setNodeState} to change node state or subscribe to {@link #addCheckboxTreeListener} to get notifications about state changes
|
||||
*/
|
||||
@Deprecated
|
||||
protected boolean toggleNode(CheckedTreeNode node) {
|
||||
setNodeState(node, !node.isChecked());
|
||||
return node.isChecked();
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated use {@link #setNodeState} to change node state or subscribe to {@link #addCheckboxTreeListener} to get notifications about state changes
|
||||
*/
|
||||
@Deprecated
|
||||
protected void checkNode(CheckedTreeNode node, boolean checked) {
|
||||
setNodeState(node, checked);
|
||||
}
|
||||
|
||||
public void setNodeState(@NotNull CheckedTreeNode node, boolean checked) {
|
||||
myHelper.setNodeState(this, node, checked);
|
||||
}
|
||||
|
||||
public void addCheckboxTreeListener(@NotNull CheckboxTreeListener listener) {
|
||||
myEventDispatcher.addListener(listener);
|
||||
}
|
||||
|
||||
protected void onDoubleClick(final CheckedTreeNode node) {
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.tree.DefaultTreeModel;
|
||||
import javax.swing.tree.TreeModel;
|
||||
import javax.swing.tree.TreeNode;
|
||||
import javax.swing.tree.TreePath;
|
||||
@@ -59,24 +58,21 @@ class CheckboxTreeHelper {
|
||||
setupMouseListener(tree, mainComponent, cellRenderer);
|
||||
}
|
||||
|
||||
private boolean toggleNode(Tree tree, CheckedTreeNode node) {
|
||||
boolean checked = !node.isChecked();
|
||||
checkNode(tree, node, checked);
|
||||
public void setNodeState(Tree tree, CheckedTreeNode node, boolean checked) {
|
||||
changeNodeState(node, checked);
|
||||
adjustParentsAndChildren(node, checked);
|
||||
tree.repaint();
|
||||
|
||||
// notify model listeners about model change
|
||||
final TreeModel model = tree.getModel();
|
||||
model.valueForPathChanged(new TreePath(node.getPath()), node.getUserObject());
|
||||
|
||||
return checked;
|
||||
}
|
||||
|
||||
private void checkNode(Tree tree, CheckedTreeNode node, boolean checked) {
|
||||
adjustParentsAndChildren(node, checked);
|
||||
tree.repaint();
|
||||
private void toggleNode(Tree tree, CheckedTreeNode node) {
|
||||
setNodeState(tree, node, !node.isChecked());
|
||||
}
|
||||
|
||||
private void adjustParentsAndChildren(final CheckedTreeNode node, final boolean checked) {
|
||||
changeNodeState(node, checked);
|
||||
if (!checked) {
|
||||
if (myCheckPolicy.uncheckParentWithUncheckedChild) {
|
||||
TreeNode parent = node.getParent();
|
||||
@@ -147,7 +143,8 @@ class CheckboxTreeHelper {
|
||||
final Object o = treePath.getLastPathComponent();
|
||||
if (!(o instanceof CheckedTreeNode)) return;
|
||||
CheckedTreeNode firstNode = (CheckedTreeNode)o;
|
||||
boolean checked = toggleNode(tree, firstNode);
|
||||
toggleNode(tree, firstNode);
|
||||
boolean checked = firstNode.isChecked();
|
||||
|
||||
TreePath[] selectionPaths = tree.getSelectionPaths();
|
||||
for (int i = 0; selectionPaths != null && i < selectionPaths.length; i++) {
|
||||
@@ -155,8 +152,7 @@ class CheckboxTreeHelper {
|
||||
final Object o1 = selectionPath.getLastPathComponent();
|
||||
if (!(o1 instanceof CheckedTreeNode)) continue;
|
||||
CheckedTreeNode node = (CheckedTreeNode)o1;
|
||||
checkNode(tree, node, checked);
|
||||
((DefaultTreeModel)tree.getModel()).nodeChanged(node);
|
||||
setNodeState(tree, node, checked);
|
||||
}
|
||||
|
||||
e.consume();
|
||||
|
||||
Reference in New Issue
Block a user