Example usage for org.eclipse.jface.viewers CheckboxTreeViewer setGrayChecked

List of usage examples for org.eclipse.jface.viewers CheckboxTreeViewer setGrayChecked

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers CheckboxTreeViewer setGrayChecked.

Prototype

public boolean setGrayChecked(Object element, boolean state) 

Source Link

Document

Check and gray the selection rather than calling both setGrayed and setChecked as an optimization.

Usage

From source file:backup.gui.CheckStateListener.java

License:Open Source License

public void checkStateChanged(CheckStateChangedEvent event) {
    CheckboxTreeViewer ctv = (CheckboxTreeViewer) event.getSource();
    File startFile = (File) event.getElement();
    // If the item is checked . . .
    if (event.getChecked()) {
        //run through the checked Items - and see if any of them are children of 
        //this item.  If Yes - they don't need to be checked anymore - since the new 
        //parent check will encompass this.
        for (int i = 0; i < checkedItems_.size(); i++) {
            File current = checkedItems_.get(i);
            while (true) {
                current = current.getParentFile();
                if (current == null) {
                    break;
                }//from   ww  w.  j  av  a2s . co m
                if (current.equals(startFile)) {
                    ctv.setChecked(checkedItems_.get(i), false);
                    checkedItems_.remove(i);
                    i--; //array is one smaller now - need to backup.
                    break;
                }
            }
        }

        //if a parent is checked, make this a grey check.
        //if a parent is gray checked - this is unneeded - cancel the check
        File parent = startFile;
        boolean parentChecked = false;
        boolean parentGrayed = false;

        while (true) {
            parent = parent.getParentFile();
            if (parent == null) {
                break;
            }
            if (ctv.getChecked(parent)) {
                parentChecked = true;
            }
            if (ctv.getGrayed(parent)) {
                parentGrayed = true;
            }
            if (parentChecked || parentGrayed) {
                break;
            }
        }

        if (parentChecked) {
            ctv.setChecked(startFile, false);
            ctv.setGrayChecked(startFile, true);
            greyItems_.add(startFile);

            //run through the grey checked Items - and see if any of them are children of 
            //this item.  If Yes - they don't need to be checked anymore - since the new 
            //parent check will encompass this.
            for (int i = 0; i < greyItems_.size(); i++) {
                File current = greyItems_.get(i);
                while (true) {
                    current = current.getParentFile();
                    if (current == null) {
                        break;
                    }
                    if (current.equals(startFile)) {
                        ctv.setChecked(greyItems_.get(i), false);
                        greyItems_.remove(i);
                        i--; //array is one smaller now - need to backup.
                        break;
                    }
                }
            }
        }
        if (parentGrayed) {
            ctv.setChecked(startFile, false);
            ctv.setGrayChecked(startFile, false);
        }

        //If I didn't decide to uncheck it - it was left checked.
        if (!parentChecked && !parentGrayed) {
            checkedItems_.add(startFile);
        }
    } else {
        //item was unchecked.
        //need to uncheck any gray items under the check box.  Should be impossible to have checked items 
        //under a checked item.

        checkedItems_.remove(startFile);
        greyItems_.remove(startFile);
        ctv.setGrayChecked(startFile, false);

        for (int i = 0; i < greyItems_.size(); i++) {
            File current = greyItems_.get(i);
            while (true) {
                if (current == null) {
                    break;
                }
                if (current.equals(startFile)) {
                    ctv.setGrayChecked(greyItems_.get(i), false);
                    ctv.setChecked(greyItems_.get(i), false);
                    checkedItems_.remove(greyItems_.get(i));
                    greyItems_.remove(i);
                    i--;
                    break;
                }
                current = current.getParentFile();
            }
        }
    }
    backupTool_.update(checkedItems_, greyItems_);
}

From source file:com.bdaum.zoom.ui.internal.wizards.ImportFileSelectionPage.java

License:Open Source License

private void visualizeDiff(ImportNode[] nodes, CheckboxTreeViewer viewer) {
    for (ImportNode node : nodes) {
        if (node.type == Calendar.DAY_OF_MONTH) {
            StorageObject[] memberFiles = node.memberFiles;
            if (memberFiles != null) {
                int mCount = node.missing == null ? 0 : node.missing.size();
                if (mCount == 0)
                    viewer.setGrayChecked(node, false);
                else if (mCount != memberFiles.length)
                    viewer.setGrayChecked(node, true);
                else {
                    viewer.setGrayed(node, false);
                    viewer.setChecked(node, true);
                }// w  ww.  j a  v  a 2s.  co m
            }
        } else if (node.type == FILE) {
            int mCount = node.missing == null ? 0 : node.missing.size();
            viewer.setChecked(node, mCount != 1);
        } else if (node.children != null && !node.children.isEmpty()) {
            ImportNode[] children = node.children.toArray(new ImportNode[node.children.size()]);
            visualizeDiff(children, viewer);
            int checked = 0;
            int grayed = 0;
            for (ImportNode child : children)
                if (viewer.getChecked(child)) {
                    ++checked;
                    if (viewer.getGrayed(child))
                        ++grayed;
                }
            if (checked == 0)
                viewer.setGrayChecked(node, false);
            else if (checked < children.length || grayed != 0)
                viewer.setGrayChecked(node, true);
            else {
                viewer.setChecked(node, true);
                viewer.setGrayed(node, false);
            }
        }
        progressbar.setSelection(++progress);
    }
}

From source file:com.github.caofangkun.bazelipse.wizard.DirectoryTreeContentProvider.java

License:Open Source License

private static void setGrayed(CheckboxTreeViewer tv, Object element) {
    if (element == null) {
        return;//from www .  j  av a  2s .c  o  m
    }
    DirectoryTreeContentProvider provider = (DirectoryTreeContentProvider) tv.getContentProvider();
    boolean checked = tv.getChecked(element);
    boolean grayed = false;
    for (Object object : provider.getChildren(element)) {
        grayed = grayed || tv.getGrayed(object) || tv.getChecked(object);
        checked = checked && tv.getChecked(object) && !tv.getGrayed(element);
    }
    if (checked) {
        tv.setChecked(element, true);
        tv.setGrayed(element, false);
    } else if (grayed) {
        tv.setGrayChecked(element, true);
    } else {
        tv.setChecked(element, false);
        tv.setGrayed(element, false);
    }
    setGrayed(tv, provider.getParent(element));
}

From source file:dynamicrefactoring.interfaz.wizard.classificationscombo.ClassificationsCheckBoxTreeListener.java

License:Open Source License

/**
 * Oscurece el padre si alguno de sus hijos esta marcado. Es decir
 * oscurece la clasificacion si alguna de sus categorias esta marcada.
 * /*from   w  ww . j a  v  a2s  .c om*/
 * @param classification
 *            elemento padre
 * @param viewer visor
 */

protected static void grayParentIfNeeded(Classification classification, CheckboxTreeViewer viewer) {
    // Si alguno de los hijos de la clasificacion tiene algun hijo marcado
    if (!Sets.intersection(classification.getCategories(),
            Sets.newHashSet(Arrays.asList(viewer.getCheckedElements()))).isEmpty()) {
        // El padre se oscurecera
        viewer.setGrayChecked(classification, true);
    } else {
        viewer.setGrayChecked(classification, false);
    }
}

From source file:net.refractions.udig.project.ui.internal.LegendViewCheckboxUtils.java

License:Open Source License

/**
 * Sets the checkbox status of the folder on the viewer. This method checks the child layers of
 * the folder to determine the status.//from   w ww.  j a  va2 s  .c o  m
 * 
 * @param viewer
 * @param folder
 */
private static void setFolderCheckbox(final CheckboxTreeViewer viewer, final Folder folder) {

    switch (getFolderCheckboxDisplay(viewer, folder)) {
    case CHECKED:
        viewer.setChecked(folder, true);
        viewer.setGrayed(folder, false);
        break;
    case BLOCKED:
        viewer.setGrayChecked(folder, true);
        break;
    case UNCHECKED:
        viewer.setChecked(folder, false);
        viewer.setGrayed(folder, false);
        break;
    default:
        break;
    }

}

From source file:org.eclipse.help.ui.internal.search.LocalHelpPage.java

License:Open Source License

void setSubtreeChecked(Object parent, boolean state, boolean checkExpandedState, CheckboxTreeViewer tree,
        ITreeContentProvider contentProvider) {

    Object[] children = contentProvider.getChildren(parent);
    for (int i = children.length - 1; i >= 0; i--) {
        Object element = children[i];
        if (state) {
            tree.setChecked(element, true);
            tree.setGrayed(element, false);
        } else//from w  w  w .  j  a v  a 2 s.  c  o m
            tree.setGrayChecked(element, false);
        if (isExpandable(element, contentProvider))
            setSubtreeChecked(element, state, checkExpandedState, tree, contentProvider);
    }
}

From source file:org.erlide.ui.launch.DebugTab.java

License:Open Source License

private static void checkParent(final DebugTreeItem parent, final CheckboxTreeViewer ctv) {
    int nChecked = 0, nUnchecked = 0;
    for (final DebugTreeItem i : parent.getChildren()) {
        if (ctv.getChecked(i)) {
            ++nChecked;//  ww w .  j  a  va 2s  .  c  om
        } else {
            ++nUnchecked;
        }
    }
    final boolean gray = nChecked > 0 && nUnchecked > 0;
    final boolean check = !gray && nUnchecked == 0;
    ctv.setGrayChecked(parent, gray);
    if (check) {
        ctv.setChecked(parent, true);
    }
}

From source file:webx.studio.projectcreation.ui.pages.ProjectStructureWizardPage.java

License:Open Source License

private void calcCheckBox(CheckboxTreeViewer viewer, IStructureRootNode parent) {
    boolean origChecked = viewer.getChecked(parent);
    ChildNode[] children = parent.getChildren();
    if (children == null || children.length == 0) {
        viewer.setGrayChecked(parent, false);
        viewer.setChecked(parent, false);
    }//from w  ww.  j  av a2 s . c o m
    boolean childChecked = false;
    boolean isBegin = false;
    for (ChildNode child : children) {
        if (!isBegin) {
            isBegin = true;
            childChecked = viewer.getChecked(child);
        } else {
            if (childChecked != viewer.getChecked(child)) {
                viewer.setGrayChecked(parent, true);
                return;
            }
        }
    }
    viewer.setGrayChecked(parent, false);
    viewer.setChecked(parent, childChecked);
}