/* * (non-Javadoc) * * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent) */ @Override public void widgetSelected(SelectionEvent arg0) { if ((arg0.detail & SWT.CHECK) == SWT.CHECK) { try { TreeItem tree = (TreeItem) arg0.item; ICPEType cpc = (ICPEType) tree.getData(); cpc.setEnabled(tree.getChecked()); System.out.println("Selection: " + arg0.item + " -> " + cpc.isEnabled()); TreeItem parentItem = tree.getParentItem(); if (!tree.getChecked()) { if (parentItem.getChecked()) { parentItem.setGrayed(true); } else { } } else { tree.setGrayed(false); } updateChildCheckboxes(tree); makeChecksConsistentWithChildren(); } catch (ClassCastException e) { e.printStackTrace(); } } }
/** * Update all the children TreeItems of the given parent to be the same check as the parent. * * @param parent the parent */ protected void updateChildCheckboxes(TreeItem parent) { for (TreeItem child : parent.getItems()) { child.setChecked(parent.getChecked()); child.setGrayed(false); updateChildCheckboxes(child); } }
/** * Invokes the appropriate asserts to verify the state of a TestElement's associated TreeItem * * @param te * @param item the item representing <code>te</code> * @param shift the shift parameter being used */ private void checkState(String comment, TestElement te, TreeItem item, int shift) { assertEquals( "Wrong checkstate: " + comment, CheckStateProviderTestsUtil.shouldBeChecked(te, shift), item.getChecked()); assertEquals( "Wrong checkstate: " + comment, CheckStateProviderTestsUtil.shouldBeGrayed(te, shift), item.getGrayed()); }
/** * Adds the view infos. * * @param root the root * @param infos the infos */ protected void addViewInfos(TreeItem root, Collection<Integer> infos) { for (TreeItem item : root.getItems()) { if (item.getChecked() == false) { Object data = item.getData(); if (data instanceof ViewInfo) { infos.add(((ViewInfo) data).getVisualID()); } } addViewInfos(item, infos); } }
protected void treeItemSelected(SelectionEvent e) { if (e.detail == SWT.CHECK && isChecking == false) { isChecking = true; try { Object data = e.item.getData(); ViewInfo viewInfo = (ViewInfo) Platform.getAdapterManager().getAdapter(data, ViewInfo.class); TreeItem item = (TreeItem) Platform.getAdapterManager().getAdapter(e.item, TreeItem.class); if (viewInfo != null && item != null && getTreeViewer().getTree().getItems() != null) { if (viewInfo.isSelectable()) { setAllVisualIDsChecked( getTreeViewer().getTree().getItems(), viewInfo.getVisualID(), item.getChecked()); } else { item.setChecked(!item.getChecked()); } } } finally { isChecking = false; } } }
/** * Make check marks consistent with children. * * @param item the item * @return null if checkbox should be gray, true if checked, false if unchecked */ private Boolean makeChecksConsistentWithChildren(TreeItem item) { Boolean ret = item.getChecked(); for (TreeItem child : item.getItems()) { Boolean current = makeChecksConsistentWithChildren(child); if (current != ret) { ret = null; } } item.setChecked(!Boolean.FALSE.equals(ret)); item.setGrayed(ret == null); return ret; }
/** * Sets the checked state of all items to correspond to the given set of checked elements. * * @param checkedElements the set (element type: <code>Object</code>) of elements which are * checked * @param widget the widget */ private void internalSetChecked(CustomHashtable checkedElements, Widget widget) { Item[] items = getChildren(widget); for (int i = 0; i < items.length; i++) { TreeItem item = (TreeItem) items[i]; Object data = item.getData(); if (data != null) { boolean checked = checkedElements.containsKey(data); if (checked != item.getChecked()) { item.setChecked(checked); } } internalSetChecked(checkedElements, item); } }
/* (non-Javadoc) * Method declared on StructuredViewer. */ protected void handleDoubleSelect(SelectionEvent event) { if (lastClickedItem != null) { TreeItem item = lastClickedItem; Object data = item.getData(); if (data != null) { boolean state = item.getChecked(); setChecked(data, !state); fireCheckStateChanged(new CheckStateChangedEvent(this, data, !state)); } lastClickedItem = null; } else { super.handleDoubleSelect(event); } }
/* (non-Javadoc) * Method declared on StructuredViewer. */ protected void handleSelect(SelectionEvent event) { lastClickedItem = null; if (event.detail == SWT.CHECK) { TreeItem item = (TreeItem) event.item; lastClickedItem = item; super.handleSelect(event); Object data = item.getData(); if (data != null) { fireCheckStateChanged(new CheckStateChangedEvent(this, data, item.getChecked())); } } else { super.handleSelect(event); } }
/** @param e */ private void checkSelection(final SelectionEvent e) { TreeItem selItem = null; TreeItem[] items = null; selItem = (TreeItem) e.item; if (selItem.getChecked()) { items = this.interfaceTree.getItems(); for (TreeItem element : items) { element.setChecked(false); } selItem.setChecked(true); } this.isComplete = true; this.updateStatus(null); }
/** Builds the selected. */ protected void buildSelected() { selected = new ArrayList<Integer>(); if (getTreeViewer() == null || getTreeViewer().getTree() == null || getTreeViewer().getTree().getItems().length <= 0) { return; } for (TreeItem item : getTreeViewer().getTree().getItems()) { if (item.getChecked() == false) { Object data = item.getData(); if (data instanceof ViewInfo) { selected.add(((ViewInfo) data).getVisualID()); } } addViewInfos(item, selected); } return; }
private void testSpecificState(final boolean isChecked, final boolean isGrayed) { CheckboxTreeViewer ctv = (CheckboxTreeViewer) fViewer; ctv.setCheckStateProvider( new ICheckStateProvider() { public boolean isChecked(Object element) { return isChecked; } public boolean isGrayed(Object element) { return isGrayed; } }); TreeItem item = ctv.getTree().getItem(0); assertEquals(item.getChecked(), isChecked); assertEquals(item.getGrayed(), isGrayed); }
/** * Gathers the checked and grayed states of the given widget and its descendents. * * @param checked a writable set of elements (element type: <code>Object</code>) * @param grayed a writable set of elements (element type: <code>Object</code>) * @param widget the widget */ private void gatherState(CustomHashtable checked, CustomHashtable grayed, Widget widget) { Item[] items = getChildren(widget); for (int i = 0; i < items.length; i++) { Item item = items[i]; if (item instanceof TreeItem) { Object data = item.getData(); if (data != null) { TreeItem ti = (TreeItem) item; if (ti.getChecked()) { checked.put(data, data); } if (ti.getGrayed()) { grayed.put(data, data); } } } gatherState(checked, grayed, item); } }