@Override protected Control createDialogArea(Composite top) { top.getShell().setText(Messages.EventTreeDialog_PapiEventSelection); final Composite parent = (Composite) super.createDialogArea(top); final GridLayout gl = new GridLayout(); parent.setLayout(gl); final GridData gd = new GridData(GridData.FILL_BOTH); gd.heightHint = 500; gd.widthHint = 350; treeV = new CheckboxTreeViewer(parent, SWT.BORDER); ColumnViewerToolTipSupport.enableFor(treeV); // et=new EventTree(); cSelect = new PapiCSelect(toolPath, utilBlob); // "E:\\PAPIProject\\ptest2.xml");// et = cSelect.getEventTree(); treeV.setContentProvider(et); // tree=treeV.getTree(); treeV.getTree().setLayoutData(gd); // tree.setLayoutData(gd); treeV.setLabelProvider(new ETreeCellLabelProvider()); treeV.setInput(et); treeV.setGrayedElements(new Object[0]); treeV.expandToLevel(3); treeV.addCheckStateListener( new ICheckStateListener() { public void checkStateChanged(CheckStateChangedEvent event) { final Object element = event.getElement(); if (treeV.getGrayed(element)) { treeV.setChecked(element, true); return; } if (element instanceof ETItem) { doCheck((ETItem) element, event.getChecked()); } } }); return parent; }
private void doCheck(ETItem element, boolean checked) { if (element instanceof EventTree || element instanceof Component || element instanceof EventSet) { final ETItem eti = element; ETItem toCheck = null; eti.setCheck(checked); for (int i = 0; i < eti.children.size(); i++) { toCheck = eti.children.get(i); if (treeV.getGrayed(toCheck) || (treeV.getChecked(toCheck) == checked)) { continue; } treeV.setChecked(toCheck, checked); doCheck(toCheck, checked); } } else { if (element instanceof Modifier) { if (!treeV.getGrayed(element)) { (element).checked = checked; // event.getChecked(); } } else { if (element instanceof Event) { if (!treeV.getGrayed(element)) { final Event e = (Event) element; e.setCheck(checked); // event.getChecked()); final Component c = (Component) e.parent.parent; // ((ETItem)element).checked=event.getChecked(); final Set<Integer>[] av = cSelect.getAvailable(c.index, c.eNames); if (av == null) { return; } Set<Integer> grey = new HashSet<Integer>(((EventSet) c.children.get(0)).fullSet); // Object[]test=((EventSet)c.children.get(0)).fullSet.toArray(); // for(int i=0;i<test.length;i++) // { // System.out.println("All: "+test[i]); // } // // test=av[0].toArray(); // for(int i=0;i<test.length;i++) // { // System.out.println("Av: "+test[i]); // } grey.removeAll(av[0]); // test=grey.toArray(); // for(int i=0;i<test.length;i++) // { // System.out.println("Grey: "+test[i]); // } // boolean isGrey; ArrayList<ETItem> all = ((EventSet) c.children.get(0)).children; checkGray(all, grey); // for(int i=0;i<all.size();i++){ // isGrey=!((Event)all.get(i)).checked&&grey.contains(new // Integer(((Event)all.get(i)).index)); // treeV.setGrayed(all.get(i), isGrey); // //System.out.println(all.get(i).label+" "+ // isGrey);//grey.contains(new // Integer(((Event)all.get(i)).index))); // } grey = new HashSet<Integer>(((EventSet) c.children.get(1)).fullSet); grey.removeAll(av[1]); all = ((EventSet) c.children.get(1)).children; checkGray(all, grey); // treeV.setChecked(element, checked); // for(int i=0;i<all.size();i++){ // isGrey=(!((Event)all.get(i)).checked)&&grey.contains(new // Integer(((Event)all.get(i)).index)); // treeV.setGrayed(all.get(i),isGrey);// // grey.contains(new // Integer(((Event)all.get(i)).index))); // if(isGrey)treeV.setChecked(all.get(i),isGrey); // } } else { treeV.setChecked(element, true); } // treeV.refresh(); } } } }