protected Section createContents()

in CasViewerEclipsePlugin/uimaj-ep-casviewer-core/src/main/java/org/apache/uima/casviewer/ui/internal/style/ColoredTypeTreeSectionPart.java [365:608]


    protected Section createContents () 
    {
        FormToolkit toolkit = managedForm.getToolkit();
        Section section = getSection();
        section.addControlListener(new ControlAdapter() {
            public void controlResized(ControlEvent e) {
                // section.layout(true);
                managedForm.reflow(true);
            }
        });
        // Expand | Collapse
        section.addExpansionListener(new ExpansionAdapter() {
            public void expansionStateChanged(ExpansionEvent e) {
                // System.out.println("form.reflow");
                // managedForm.getForm().layout(true);
                // Point pt = __parent.getSize();
                // System.err.println("parent x: " + pt.x + " ; parent y: " + pt.y);
                //  pt = getSection().getSize();
                // System.err.println(" Section  x: " + pt.x + " ; y: " + pt.y);
//                if ( e.getState() ) {
//                    // Expand
//                    TableWrapData td = (TableWrapData) section.getLayoutData();
//                    td.maxHeight = 400;
//                }
//                __parent.layout(true);
                
//                ((Composite) getSection().getClient()).layout(true);
//                if (tree == null) {
//                    tree.layout(true);
//                }
//                __managedForm.getForm().layout(true);
                managedForm.reflow(true);
                // pt = getSection().getSize();
                // System.err.println(" Section  x: " + pt.x + " ; y: " + pt.y);
            }
        });        
        section.setExpanded(false);
        
        ///////////////////////////////////////////////////////////////////////
        
        // Create ToolBar
//        Composite sectionToolbarComposite = FormSection.createGridLayoutContainer (toolkit, section,
//                4, 0, 0);
//        section.setTextClient(sectionToolbarComposite);
        
        ///////////////////////////////////////////////////////////////////////
        
        // toolkit.createCompositeSeparator(section);
        
        // Create Composite
        Composite client = FormSection.createGridLayoutContainer (toolkit, section,
                1, 10, 10);        
        GridData gd = new GridData(GridData.FILL_BOTH|GridData.VERTICAL_ALIGN_BEGINNING);
        gd.grabExcessVerticalSpace   = true;
        gd.grabExcessHorizontalSpace = true;
        client.setLayoutData(gd);
        
        toolkit.paintBordersFor(client);        
        section.setClient(client);   
        
        /*********************************************************************/        
        
        // Create Tree for Type System
        tree = toolkit.createTree(client, SWT.CHECK);
        // final TableTree tree = new TableTree (client, SWT.NULL);
        gd = new GridData(GridData.FILL_BOTH|GridData.VERTICAL_ALIGN_BEGINNING);
        gd.grabExcessVerticalSpace   = true;
        gd.grabExcessHorizontalSpace = true;
        gd.heightHint = 160;
        tree.setLayoutData(gd);
        // tree.setVisible(false);
        tree.addSelectionListener(this);
//        tree.addListener (SWT.Selection, new Listener () {
//            public void handleEvent (Event event) {
//                String string = event.detail == SWT.CHECK ? "Checked" : "Selected";
//                System.out.println (tree.getSelection()[0] + " " + string);
//                if ( ! ((TreeItem)event.item).getGrayed() ) {
//                    ((TreeItem)event.item).setGrayed(true);
//                }
//                event.doit = false;
//                ((TreeItem)event.item).setChecked(false);
//            }
//        });
        
        // Create Viewer for Tree
        treeViewer = new CheckboxTreeViewer(tree);
        treeViewer.setUseHashlookup(true);
        treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
            public void selectionChanged(SelectionChangedEvent event) {
                // Trace.trace();
                if (_fireTreeSelection) {
                    setSelectedTreeNode (event);
                    managedForm.fireSelectionChanged(_instance, event.getSelection());
                }
            }
        });
        
        // For Table Tree Viewer
        tree.setLinesVisible(true);
        tree.setHeaderVisible(true);
        String headers[] = { "Type Name", "", "FG","", "BG", "Selected", "Hide" };
        final TreeColumn columns[] = new TreeColumn[headers.length];
        for (int i = 0; i < headers.length; i++) {
             TreeColumn tc = new TreeColumn(tree, SWT.NONE, i);
            tc.setResizable(true);
            tc.setText(headers[i]);
            if (i==0) {
                tc.setWidth(250);
            } else if (i==1 || i==3) {
                tc.setWidth(4);
            } else {
                tc.setWidth(60);
            }
            columns[i] = tc;
        }
        tree.pack(true);
        
        contentProvider = new ColoredTypeTreeContentProvider(false);
        treeViewer.setContentProvider(contentProvider);
        treeViewer.setLabelProvider(new ColoredTypeTreeLabelProvider(treeViewer, false));                      
//        _typeTreeViewer.addFilter(_typeTreeViewerFiler = new TypeSystemViewerFilter());
        treeViewer.setSorter(new TypeSystemSorter());
        
//        TypeSystemToolTips treeListener = new TypeSystemToolTips (tree);
//        tree.addListener (SWT.Dispose, treeListener);
//        tree.addListener (SWT.KeyDown, treeListener);
//        tree.addListener (SWT.MouseMove, treeListener);
//        tree.addListener (SWT.MouseHover, treeListener);
        
//        treeViewer.addCheckStateListener(new ICheckStateListener () {
//            public void checkStateChanged(CheckStateChangedEvent event) {
//                Object element = event.getElement();
//                if (element instanceof TreeBaseNode) {
//                    if ( ((TreeBaseNode) element).getBgColor() == null ) {
//                        treeViewer.setGrayed(event.getElement(), true);
//                        treeViewer.setChecked(event.getElement(), true);
//                    }
//                }
//            }            
//        });       
        
        treeViewer.addTreeListener(new ITreeViewerListener() {
            public void treeCollapsed(TreeExpansionEvent event) 
            {
                Object element= event.getElement();
                if ( ((TypeNode) element).getBgColor() == null ) {
                    // && ! treeViewer.getGrayed(element)) { 
                    Trace.trace("Set gray: " + ((TypeNode) element).getLabel());
                    treeViewer.setChecked(element, true);
                    treeViewer.setGrayed(element, true);
               }
            }
            public void treeCollapsed_SAVE(TreeExpansionEvent event) 
            {
                Trace.trace();
                Object element= event.getElement();
                if (element instanceof TypeNode) {
//                if (_typeTreeViewer.getGrayed(element) == false)
//                    BusyIndicator.showWhile(getShell().getDisplay(), new Runnable() {
//                    public void run() {
//                        setSubtreeChecked(element, fTree.getChecked(element), false);
//                    }
//                });
//                    Widget item = _typeTreeViewer.testFindItem(element);
//                    _typeTreeViewer.getTree().
                    if ( ((TypeNode) element).getBgColor() == null ) {
                         // && ! treeViewer.getGrayed(element)) { 
                        Trace.trace("Set gray: " + ((TypeNode) element).getLabel());
//                        TreeItem treeItem = (TreeItem) treeViewer.testFindItem(element);
//                        treeItem.setChecked(true);
//                        treeItem.setGrayed(true);
                        // treeViewer.setChecked(element, true);
                        // treeViewer.setGrayed(element, true);
                    }
                    Object[] children = contentProvider.getChildren(element);
                    for (int i=0; i<children.length; ++i) {
                        if ( ((TypeNode) children[i]).getBgColor() == null ) {
                             //   && ! _typeTreeViewer.getGrayed(children[i])) {                            
                            treeViewer.setChecked(children[i], true);
                            treeViewer.setGrayed(children[i], true);
                        }
                    }
                    
                } else {
                    if (!treeViewer.getGrayed(element)) {
                        treeViewer.setChecked(element, true);
                        treeViewer.setGrayed(element, true);
                    }
                }
            }
            public void treeExpanded(TreeExpansionEvent event) {
                Object element= event.getElement();
                if (element instanceof TypeNode) {
//                if (_typeTreeViewer.getGrayed(element) == false)
//                    BusyIndicator.showWhile(getShell().getDisplay(), new Runnable() {
//                    public void run() {
//                        setSubtreeChecked(element, fTree.getChecked(element), false);
//                    }
//                });
//                    Widget item = _typeTreeViewer.testFindItem(element);
//                    _typeTreeViewer.getTree().
                    if ( ((TypeNode) element).getBgColor() == null ) {
                        //  && ! treeViewer.getGrayed(element)) {                            
                        treeViewer.setChecked(element, true);
                        treeViewer.setGrayed(element, true);
                    }
                    Object[] children = contentProvider.getChildren(element);
                    for (int i=0; i<children.length; ++i) {
                        if ( ((TypeNode) children[i]).getBgColor() == null ) {
                             //   && ! _typeTreeViewer.getGrayed(children[i])) {                            
                            treeViewer.setChecked(children[i], true);
                            treeViewer.setGrayed(children[i], true);
                        }
                    }
                    
                } else {
                    if (!treeViewer.getGrayed(element)) {
                        treeViewer.setChecked(element, true);
                        treeViewer.setGrayed(element, true);
                    }
                }
            }
        });
        
        // createSectionToolbar (toolkit, section, sectionToolbarComposite, treeViewer);
        
        /*********************************************************************/
//        DnDTreeViewer dnd = new DnDTreeViewer (this);
//        dnd.initDragAndDrop (_typeTreeViewer);
        
        /*********************************************************************/
        /*                      Set Selection Provider                       */
        /*********************************************************************/
/*        if (__workbenchPartSite != null) {
            __workbenchPartSite.setSelectionProvider(_typeTreeViewer);
        }
*/        
        createContextMenu(treeViewer.getControl());
        section.setExpanded(true);
        
        
        // Trace.trace();
        return section;
    } // createContents