List of usage examples for org.eclipse.jface.viewers CheckboxTreeViewer getGrayed
public boolean getGrayed(Object element)
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; }