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

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

Introduction

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

Prototype

public boolean getGrayed(Object element) 

Source Link

Document

Returns the grayed state of the given element.

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  w ww.  j a  v a 2 s .c om
                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);
                }//from  w  w  w  .  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 setChecked(final CheckboxTreeViewer tv, Object element) {
    // When user checks a checkbox in the tree, check all its children and mark parent as greyed
    // When a user uncheck a checkbox, mark the subtree as unchecked and ungrayed and if unique
    // sibling parent as grayed.
    DirectoryTreeContentProvider provider = (DirectoryTreeContentProvider) tv.getContentProvider();

    boolean isChecked = tv.getChecked(element);
    if (tv.getGrayed(element)) {
        isChecked = !isChecked;//from  www  .  ja v  a2s.  co  m
    }
    tv.setChecked(element, isChecked);
    tv.setGrayed(element, false);
    if (isChecked) {
        tv.setSubtreeChecked(element, true);
    } else {
        tv.setSubtreeChecked(element, false);
    }
    setGrayed(tv, provider.getParent(element));
}

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;//ww  w  . ja  v  a 2s  .c  om
    }
    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:com.github.caofangkun.bazelipse.wizard.DirectoryTreeContentProvider.java

License:Open Source License

/**
 * Returns the list of path selected in <code>tv</code>. It returns the list of checked path
 * without the children of the checked path. Each path is returned as a string giving the relative
 * path from the root of the tree./*  www  .  ja v  a 2 s  . co  m*/
 */
static ImmutableList<String> getSelectPathsRelativeToRoot(CheckboxTreeViewer tv) {
    DirectoryTreeContentProvider provider = (DirectoryTreeContentProvider) tv.getContentProvider();
    String root = provider.root.getAbsolutePath();
    ImmutableList.Builder<String> builder = ImmutableList.builder();
    for (Object element : tv.getCheckedElements()) {
        if (!tv.getGrayed(element)) {
            Object parent = provider.getParent(element);
            if (parent == null || tv.getGrayed(parent)) {
                // Only add this element if its parent is not selected (so it's the root).
                String path = ((File) element).getAbsolutePath();
                // Strip root from path
                if (path.startsWith(root)) {
                    path = path.substring(root.length());
                    if (path.startsWith("/")) {
                        path = path.substring(1);
                    }
                    builder.add(path);
                }
            }
        }
    }
    return builder.build();
}

From source file:com.nokia.tools.screen.ui.wizards.AbstractNewPackagePage.java

License:Open Source License

protected CheckboxTreeViewer createTaskViewer(Composite composite) {
    final CheckboxTreeViewer taskViewer = new CheckboxTreeViewer(composite, SWT.CHECK | SWT.NONE);
    taskViewer.setContentProvider(new TaskContentProvider());
    taskViewer.setLabelProvider(new TaskLabelProvider());
    taskViewer.setSorter(new TaskViewerSorter());
    taskViewer.setInput(getContents());/*from w  ww.  j  a  va  2  s  . co m*/
    taskViewer.expandToLevel(2);
    taskViewer.addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(CheckStateChangedEvent event) {
            if (event.getElement() instanceof ContentGroup) {
                ContentGroup group = (ContentGroup) event.getElement();
                for (IContent content : group.getContents()) {
                    taskViewer.setChecked(content, event.getChecked());
                    // this method call internally sets PACKAGING's
                    // attribute value for corresponding ancestors and
                    // children
                    content.setAttribute(ContentAttribute.PACKAGING.name(),
                            new Boolean(event.getChecked()).toString());

                }
            } else {
                IContentData data = (IContentData) event.getElement();
                if (taskViewer.getGrayed(data)) {
                    taskViewer.setChecked(data, false);
                    return;
                }
                // this method call internally sets PACKAGING's attribute
                // value for corresponding ancestors and children
                data.setAttribute(ContentAttribute.PACKAGING.name(),
                        new Boolean(event.getChecked()).toString());
                if (!event.getChecked()) {
                    // unchecks the parent if necessary
                    IContentData work = data.getParent();
                    while (work != null) {
                        boolean nonSelected = true;
                        for (IContentData child : work.getChildren()) {
                            if (new Boolean((String) child.getAttribute(ContentAttribute.PACKAGING.name()))
                                    && new Boolean(
                                            (String) child.getAttribute(ContentAttribute.MODIFIED.name()))) {
                                nonSelected = false;
                                break;
                            }
                        }
                        if (nonSelected) {
                            // this method call internally sets PACKAGING's
                            // attribute value for corresponding ancestors
                            // and children
                            work.setAttribute(ContentAttribute.PACKAGING.name(), "false");
                        } else {
                            break;
                        }

                        work = work.getParent();
                    }
                }
            }
            updateTree(taskViewer);
            pageChanged();
        }
    });
    taskViewer.addTreeListener(new ITreeViewerListener() {
        public void treeCollapsed(TreeExpansionEvent event) {
        }

        /**
         * Notifies that a node in the tree has been expanded.
         * 
         * @param event
         *            event object describing details
         */
        public void treeExpanded(TreeExpansionEvent event) {
            updateTree(taskViewer);
        }
    });
    return taskViewer;
}

From source file:com.nomagic.magicdraw.classpath.MDClasspathContainerPage.java

License:Open Source License

protected void handleSelectButtonPressed() {
    final IPath fRootPath = MDVariableInitializer.getMDInstallRootPath().addTrailingSeparator();
    final File fRoot = fRootPath.toFile();
    final List<File> initialSelection = new ArrayList<File>();
    final List<String> checkedPrefixes = new ArrayList<String>();
    final List<File> checkedSummary = new ArrayList<File>();
    for (IPath mdLibPath : fMDClasspathEntries) {
        File mdLib = mdLibPath.toFile();
        initialSelection.add(mdLib);//from w w  w  . ja v a2  s. co m
    }
    CheckedTreeSelectionDialog dialog = new CheckedTreeSelectionDialog(getContainer().getShell(),
            new FileLabelProvider(), new FileContentProvider()) {

        @Override
        public void create() {
            super.create();
            CheckboxTreeViewer treeViewer = getTreeViewer();
            for (File f : initialSelection) {
                IPath fp = fRootPath.append(f.getPath());
                File af = fp.toFile();
                treeViewer.reveal(af);
                treeViewer.setChecked(af, true);
            }
            treeViewer.collapseAll();
        }

        @Override
        protected void computeResult() {
            checkedSummary.clear();
            CheckboxTreeViewer treeViewer = getTreeViewer();
            for (Object checkedElement : treeViewer.getCheckedElements()) {
                if (treeViewer.getGrayed(checkedElement))
                    continue;

                if (checkedElement instanceof File) {
                    File checkedFile = (File) checkedElement;

                    String checkedFilepath = checkedFile.getAbsolutePath();
                    boolean isCheckedDirectory = checkedFile.isDirectory();
                    if (isCheckedDirectory && !checkedFilepath.endsWith(File.separator))
                        checkedFilepath += File.separator;

                    boolean addToSummary = true;
                    for (String checkedPrefix : checkedPrefixes) {
                        if (checkedPrefix.equals(checkedFilepath)
                                || (!isCheckedDirectory && checkedFilepath.startsWith(checkedPrefix)))
                            addToSummary = false;
                    }

                    if (addToSummary) {
                        checkedSummary.add(checkedFile);
                        if (checkedFile.isDirectory())
                            checkedPrefixes.add(checkedFilepath);
                    }
                }
            }
        }
    };
    dialog.setTitle("MagicDraw Library Classpath Selection");
    dialog.setMessage("Select the libraries from the MagicDraw installation root:");
    dialog.setInput(fRoot);
    dialog.setContainerMode(true);

    dialog.open();
    int code = dialog.getReturnCode();
    if (Dialog.OK == code) {
        String root = MDVariableInitializer.getMDInstallRootPath().toString();
        int rootPrefix = root.length() + 1;
        fMDClasspathEntries.clear();
        for (File file : checkedSummary) {
            String path = file.getAbsolutePath();
            String lib = path.substring(rootPrefix);
            IPath mdLibpath = new Path(lib);
            fMDClasspathEntries.add(mdLibpath);
        }
        fMDClasspathEntryViewer.setInput(fMDClasspathEntries);
    }

}

From source file:de.ovgu.featureide.ui.statistics.ui.CheckBoxListener.java

License:Open Source License

public CheckBoxListener(final CheckboxTreeViewer viewer) {
    super();//  w  ww  .j ava 2  s . c o m
    this.viewer = viewer;
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {
            Object[] sources = ((TreeSelection) event.getSelection()).toArray();
            for (Object source : sources) {
                if (source instanceof Parent) {
                    Parent selected = (Parent) source;
                    if (selected.hasChildren()) {
                        if (selected instanceof LazyParent) {
                            ((LazyParent) selected).getChildren();
                        }
                        boolean allChecked = allChildrenChecked(selected);
                        viewer.setChecked(selected, !allChecked);
                        for (Parent child : selected.getChildren()) {
                            viewer.setChecked(child, !allChecked);
                        }
                        viewer.setExpandedState(selected, true);
                    } else {
                        viewer.setChecked(selected, viewer.getChecked(selected));
                    }
                }
            }
            refreshViewer();
        }
    });
    viewer.setCheckStateProvider(new ICheckStateProvider() {

        @Override
        public boolean isGrayed(Object element) {
            return viewer.getGrayed(element);
        }

        @Override
        public boolean isChecked(Object element) {
            return viewer.getChecked(element);
        }
    });
}

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

License:Open Source License

/**
 * Gestiona un evento en el que una clasificacion ha sido
 * marcada/desmarcada./*  w  ww.j  av  a 2s . co m*/
 * 
 * Si la clasificacion es multicategoria aplica a sus categorias el
 * mismo estado que se le ha aplicado a ella.
 * 
 * Si no es multicategoria se deja el arbol como estaba antes del
 * evento.
 * 
 * @param event
 *            evento
 * @param classification
 *            clasification objeto del evento
 * @param viewer visor
 */
private void dealWithParentCheckStateChange(CheckStateChangedEvent event, Classification classification,
        CheckboxTreeViewer viewer) {
    if (classification.isMultiCategory()) {
        viewer.setSubtreeChecked(classification, event.getChecked());
    } else if (viewer.getGrayed(classification)) {
        viewer.setSubtreeChecked(classification, false);
    }
}

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

License:Open Source License

/**
 * Returns what the status of the folder's checkbox should be with respect to its child layers.
 * /*  w ww .j a  va 2  s . com*/
 * @param viewer
 * @param folder
 * @return CHECKED - the folder should be checked, BLOCKED - folder should be blocked, UNCHECKED
 *         - folder should be unchecked
 */
private static FolderState getFolderCheckboxDisplay(CheckboxTreeViewer viewer, Folder folder) {

    final List<ILegendItem> items = folder.getItems();
    if (items.size() == 0) {

        final boolean isGrayed = viewer.getGrayed(folder);
        if (isGrayed) {
            return FolderState.BLOCKED;
        }
        final boolean isChecked = viewer.getChecked(folder);
        if (isChecked) {
            return FolderState.CHECKED;
        }

    } else {

        int checkedCnt = 0;
        int grayedCnt = 0;
        final List<Object> grayedElements = Arrays.asList(viewer.getGrayedElements());
        final List<Object> checkedElements = Arrays.asList(viewer.getCheckedElements());

        for (ILegendItem item : items) {
            if (grayedElements.contains(item)) {
                grayedCnt++;
            } else if (checkedElements.contains(item)) {
                checkedCnt++;
            }
        }
        if (checkedCnt > 0) {
            if (checkedCnt == items.size()) {
                return FolderState.CHECKED;
            } else {
                return FolderState.BLOCKED;
            }
        }
        if (grayedCnt > 0) {
            return FolderState.BLOCKED;
        }

    }

    return FolderState.UNCHECKED;

}