예제 #1
0
  @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;
  }
예제 #2
0
  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();
        }
      }
    }
  }