Package com.dci.intellij.dbn.code.common.completion.options.filter.ui

Source Code of com.dci.intellij.dbn.code.common.completion.options.filter.ui.CodeCompletionFilterTreeNode

package com.dci.intellij.dbn.code.common.completion.options.filter.ui;

import com.dci.intellij.dbn.code.common.completion.options.filter.CodeCompletionFilterOption;
import com.dci.intellij.dbn.code.common.completion.options.filter.CodeCompletionFilterOptionBundle;
import com.intellij.ui.CheckedTreeNode;

public class CodeCompletionFilterTreeNode extends CheckedTreeNode {
    public CodeCompletionFilterTreeNode(Object userObject, boolean checked) {
        super(userObject);
        super.setChecked(checked);
    }

/*    public boolean isModified() {
        if (isModified) {
            return true;
        } else {
            for (int i = 0; i < getChildCount(); i++) {
                CodeCompletionSchemeTreeNode childNode = (CodeCompletionSchemeTreeNode) getChildAt(i);
                if (childNode.isModified()) {
                    return true;
                }
            }
        }
        return false;
    }*/

    public void applyChanges() {
        Object userObject = getUserObject();
       
        if (userObject instanceof CodeCompletionFilterOption) {
            CodeCompletionFilterOption option = (CodeCompletionFilterOption) userObject;
            option.setSelected(isChecked());
        } else {
            for (int i = 0; i < getChildCount(); i++) {
                CodeCompletionFilterTreeNode childNode = (CodeCompletionFilterTreeNode) getChildAt(i);
                childNode.applyChanges();
            }
        }
    }

    public void resetChanges() {
        Object userObject = getUserObject();

        if (userObject instanceof CodeCompletionFilterOption) {
            CodeCompletionFilterOption option = (CodeCompletionFilterOption) userObject;
            setCheckedSilently(option.isSelected());
        } else {
            for (int i = 0; i < getChildCount(); i++) {
                CodeCompletionFilterTreeNode childNode = (CodeCompletionFilterTreeNode) getChildAt(i);
                childNode.resetChanges();
            }
        }
    }

    public void setChecked(boolean checked) {
        setCheckedPropagateDown(checked);
        setCheckedPropagateUp(checked);
        Object userObject = getUserObject();

        if (userObject instanceof CodeCompletionFilterOption) {
            CodeCompletionFilterOption option = (CodeCompletionFilterOption) userObject;
            option.getFilterSettings().setModified(true);
        } else if (userObject instanceof CodeCompletionFilterOptionBundle) {
            CodeCompletionFilterOptionBundle optionBundle = (CodeCompletionFilterOptionBundle) userObject;
            optionBundle.getFilterSettings().setModified(true);
        }
    }

    public void setCheckedSilently(boolean checked) {
        super.setChecked(checked);
    }

    private void setCheckedPropagateDown(boolean checked) {
        setCheckedSilently(checked);
        for (int i = 0; i < getChildCount(); i++) {
            CodeCompletionFilterTreeNode childNode = (CodeCompletionFilterTreeNode) getChildAt(i);
            childNode.setCheckedPropagateDown(isChecked());
        }
    }

    private void setCheckedPropagateUp(boolean checked) {
        setCheckedSilently(checked);
        CodeCompletionFilterTreeNode parent = (CodeCompletionFilterTreeNode) getParent();
        while (parent != null) {
            for (int i = 0; i < parent.getChildCount(); i++) {
                CheckedTreeNode treeNode = (CheckedTreeNode) parent.getChildAt(i);
                if (!treeNode.isChecked()) {
                    parent.setCheckedPropagateUp(false);
                    break;
                }
                if (i == parent.getChildCount() - 1) {
                    parent.setCheckedPropagateUp(true);
                }
            }
            parent = (CodeCompletionFilterTreeNode) parent.getParent();
        }
    }

    public void updateCheckedStatusFromChildren() {
        for (int i = 0; i < getChildCount(); i++) {
            CheckedTreeNode treeNode = (CheckedTreeNode) getChildAt(i);
            if (!treeNode.isChecked()) {
                setCheckedSilently(false);
                break;
            }
            if (i == getChildCount() - 1) {
                setCheckedPropagateUp(true);
            }
        }
    }

}
TOP

Related Classes of com.dci.intellij.dbn.code.common.completion.options.filter.ui.CodeCompletionFilterTreeNode

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.