protected Section createContents()

in CasViewerEclipsePlugin/uimaj-ep-casviewer-core/src/main/java/org/apache/uima/casviewer/ui/internal/type/TypesTreeSectionPart.java [387:643]


    protected Section createContents () 
    {
        FormToolkit toolkit = managedForm.getToolkit();
        Section section = getSection();
        section.addControlListener(new ControlAdapter() {
            public void controlResized(ControlEvent e) {
                // section.layout(true);
                // TODO Resize
                // 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,
                2, 0, 0);        
        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);   
        
//        immediateCreationButton = toolkit.createButton(client, 
//                "Immediately create annotation after highliting text", SWT.CHECK);
//        immediateCreationButton.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
//        gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
//        gd.horizontalSpan = 2;
//        gd.grabExcessHorizontalSpace = true;
//        immediateCreationButton.setLayoutData(gd);
//        
//        selectedTypesCombo = createLabelAndCombo (toolkit, client, 
//                "Type used for adding annotation:", SWT.READ_ONLY);
                
        /*********************************************************************/        
        
        // Create Tree for Type System
//        if (prefUseFilteredTree) {
//            // Create Filtered Tree
//            PatternFilter patternFilter = new PatternFilter();
//            patternFilter.setIncludeLeadingWildcard(true);
//            FilteredTree fFilteredTree = new FilteredTree(client, 
//                    SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL, 
//                    patternFilter);
//            fFilteredTree.setBackground(parent.getDisplay().getSystemColor(
//                    SWT.COLOR_LIST_BACKGROUND));
//            // Get Viewer
//            // viewer = fFilteredTree.getViewer();
//            
//        }
        Tree 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.horizontalSpan = 2;
        gd.grabExcessVerticalSpace   = true;
        gd.grabExcessHorizontalSpace = true;
        gd.heightHint = 160;
        tree.setLayoutData(gd);
        
        // Create Viewer for Tree
        treeViewer = new CustomCheckedTreeViewer(tree);
        treeViewer.setUseHashlookup(true);
//        treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
//            public void selectionChanged(SelectionChangedEvent event) {
//                // Trace.trace();
//                if (_fireTreeSelection) {
//                    setSelectedTreeNode (event);
//                    managedForm.fireSelectionChanged(_instance, event.getSelection());
//                }
//            }
//        });
        treeViewer.addCheckStateListener(new ICheckStateListener() {
            public void checkStateChanged(CheckStateChangedEvent event) {
                Object[] objs = treeViewer.getCheckedElements();
                // Collect type names that are checkedand have annotations
                List<String> checkedList = new ArrayList<String>();                
                for (Object obj: objs) {
                    if (obj instanceof TypeNode) {
                        if (((TypeNode) obj).getObjectType() == IItemTypeConstants.ITEM_TYPE_TYPE
                            && ((TypeNode) obj).getBgColor() != null) {
                            checkedList.add(((TypeDescription) ((TypeNode) obj).getObject()).getName());                           
                        }
                    }            
                }
                // Need to hide previous annotations even if checkedList.size()==0
                casViewControl.showAnnotationsByTypenameForView(checkedList, AnnotatedTextSectionPart.TAB_VIEW_ANNOTATIONS);
            }
        });

        contentProvider = new TypesTreeContentProvider(prefFlatLayout4Types);
        contentProvider.hideFeature(prefHideFeaturesInTypeSystem);
        treeViewer.setContentProvider(contentProvider);
        labelProvider = new TypesTreeLabelProvider(treeViewer, false, prefFlatLayout4Types);
        treeViewer.setLabelProvider(labelProvider);                      
//        _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 TypeNode) {
//                    if ( ((TypeNode) 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 ( ((TreeBaseNode) element).getBgColor() == null ) {
                    // && ! treeViewer.getGrayed(element)) { 
                    Trace.trace("Set gray: " + ((TreeBaseNode) 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 TreeBaseNode) {
//                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 ( ((TreeBaseNode) element).getBgColor() == null ) {
                         // && ! treeViewer.getGrayed(element)) { 
                        Trace.trace("Set gray: " + ((TreeBaseNode) 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 ( ((TreeBaseNode) 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 TreeBaseNode) {
//                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 ( ((TreeBaseNode) 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 ( ((TreeBaseNode) 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