Example usage for org.eclipse.jface.viewers CheckboxTreeViewer CheckboxTreeViewer

List of usage examples for org.eclipse.jface.viewers CheckboxTreeViewer CheckboxTreeViewer

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers CheckboxTreeViewer CheckboxTreeViewer.

Prototype

public CheckboxTreeViewer(Composite parent, int style) 

Source Link

Document

Creates a tree viewer on a newly-created tree control under the given parent.

Usage

From source file:at.medevit.elexis.inbox.ui.part.InboxView.java

License:Open Source License

@Override
public void createPartControl(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayout(new GridLayout(1, false));

    Composite filterComposite = new Composite(composite, SWT.NONE);
    GridData data = new GridData(GridData.FILL_HORIZONTAL);
    filterComposite.setLayoutData(data);
    filterComposite.setLayout(new GridLayout(2, false));

    filterText = new Text(filterComposite, SWT.SEARCH);
    filterText.setMessage("Filter");
    data = new GridData(GridData.FILL_HORIZONTAL);
    filterText.setLayoutData(data);/*from  w w  w .  ja  va 2  s .  co  m*/
    filterText.addModifyListener(new ModifyListener() {
        public void modifyText(ModifyEvent e) {
            if (filterText.getText().length() > 1) {
                filter.setSearchText(filterText.getText());
                viewer.refresh();
            } else {
                filter.setSearchText("");
                viewer.refresh();
            }
        }
    });

    ToolBarManager menuManager = new ToolBarManager(SWT.FLAT | SWT.HORIZONTAL | SWT.WRAP);
    menuManager.createControl(filterComposite);

    viewer = new CheckboxTreeViewer(composite, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
    viewer.getControl().setLayoutData(gd);

    ViewerFilter[] filters = new ViewerFilter[1];
    filters[0] = filter;
    viewer.setFilters(filters);

    contentProvider = new InboxElementContentProvider();
    viewer.setContentProvider(contentProvider);

    viewer.setLabelProvider(new InboxElementLabelProvider());

    viewer.addCheckStateListener(new ICheckStateListener() {

        public void checkStateChanged(CheckStateChangedEvent event) {
            if (event.getElement() instanceof PatientInboxElements) {
                PatientInboxElements patientInbox = (PatientInboxElements) event.getElement();
                for (InboxElement inboxElement : patientInbox.getElements()) {
                    if (!filter.isActive() || filter.isSelect(inboxElement)) {
                        State newState = toggleInboxElementState(inboxElement);
                        if (newState == State.NEW) {
                            viewer.setChecked(inboxElement, false);
                        } else {
                            viewer.setChecked(inboxElement, true);
                        }
                        contentProvider.refreshElement(inboxElement);
                    }
                }
                contentProvider.refreshElement(patientInbox);
            } else if (event.getElement() instanceof InboxElement) {
                InboxElement inboxElement = (InboxElement) event.getElement();
                if (!filter.isActive() || filter.isSelect(inboxElement)) {
                    toggleInboxElementState(inboxElement);
                    contentProvider.refreshElement(inboxElement);
                }
            }
            viewer.refresh(false);
        }
    });

    viewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(DoubleClickEvent event) {
            StructuredSelection selection = (StructuredSelection) viewer.getSelection();
            if (!selection.isEmpty()) {
                Object selectedObj = selection.getFirstElement();
                if (selectedObj instanceof InboxElement) {
                    InboxElementUiExtension extension = new InboxElementUiExtension();
                    extension.fireDoubleClicked((InboxElement) selectedObj);
                }
            }
        }
    });

    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            ISelection selection = event.getSelection();
            if (selection instanceof StructuredSelection && !selection.isEmpty()) {
                if (setAutoSelectPatient) {
                    Object selectedElement = ((StructuredSelection) selection).getFirstElement();
                    if (selectedElement instanceof InboxElement) {
                        ElexisEventDispatcher.fireSelectionEvent(((InboxElement) selectedElement).getPatient());
                    } else if (selectedElement instanceof PatientInboxElements) {
                        ElexisEventDispatcher
                                .fireSelectionEvent(((PatientInboxElements) selectedElement).getPatient());
                    }
                }
            }
        }
    });

    final Transfer[] dropTransferTypes = new Transfer[] { FileTransfer.getInstance() };
    viewer.addDropSupport(DND.DROP_COPY, dropTransferTypes, new DropTargetAdapter() {

        @Override
        public void dragEnter(DropTargetEvent event) {
            event.detail = DND.DROP_COPY;
        }

        @Override
        public void drop(DropTargetEvent event) {
            if (dropTransferTypes[0].isSupportedType(event.currentDataType)) {
                String[] files = (String[]) event.data;
                Patient patient = null;

                if (event.item != null) {
                    Object data = event.item.getData();
                    if (data instanceof InboxElement) {
                        patient = ((InboxElement) data).getPatient();
                    } else if (data instanceof PatientInboxElements) {
                        patient = ((PatientInboxElements) data).getPatient();
                    }
                }

                if (patient == null) {
                    // fallback
                    patient = ElexisEventDispatcher.getSelectedPatient();
                }
                if (patient != null) {
                    if (files != null) {
                        for (String file : files) {
                            try {
                                InboxServiceComponent.getService().createInboxElement(patient,
                                        ElexisEventDispatcher.getSelectedMandator(), file, true);
                            } catch (Exception e) {
                                LoggerFactory.getLogger(InboxView.class).warn("drop error", e);
                            }
                        }
                    }

                    viewer.refresh();
                } else {
                    MessageDialog.openWarning(Display.getCurrent().getActiveShell(), "Warnung",
                            "Bitte whlen Sie zuerst einen Patienten aus.");
                }

            }
        }

    });

    addFilterActions(menuManager);

    InboxServiceComponent.getService().addUpdateListener(new IInboxUpdateListener() {
        public void update(final InboxElement element) {
            Display.getDefault().asyncExec(new Runnable() {
                public void run() {
                    contentProvider.refreshElement(element);
                    viewer.refresh();
                }
            });
        }
    });

    reload();

    MenuManager ctxtMenuManager = new MenuManager();
    Menu menu = ctxtMenuManager.createContextMenu(viewer.getTree());
    viewer.getTree().setMenu(menu);
    getSite().registerContextMenu(ctxtMenuManager, viewer);

    ElexisEventDispatcher.getInstance().addListeners(mandantChanged);
    getSite().setSelectionProvider(viewer);

    setAutoSelectPatientState(CoreHub.userCfg.get(Preferences.INBOX_PATIENT_AUTOSELECT, false));
}

From source file:au.gov.ga.earthsci.application.parts.layer.LayerTreePart.java

License:Apache License

@PostConstruct
public void init(Composite parent, EMenuService menuService) {
    LayerOpacityToolControl.setPartContext(context);

    viewer = new CheckboxTreeViewer(parent, SWT.MULTI);
    viewer.getTree().setBackgroundImage(ImageRegistry.getInstance().get(ImageRegistry.ICON_TRANSPARENT));
    context.set(TreeViewer.class, viewer);

    clipboard = new Clipboard(shell.getDisplay());
    context.set(Clipboard.class, clipboard);

    IListProperty childrenProperty = new MultiListProperty(
            new IListProperty[] { BeanProperties.list("children") }); //$NON-NLS-1$

    ObservableListTreeContentProvider contentProvider = new ObservableListTreeContentProvider(
            childrenProperty.listFactory(), null);
    viewer.setContentProvider(contentProvider);

    //TreeViewerEditor.create(viewer, new SecondClickColumnViewerEditorActivationStrategy(viewer), ColumnViewerEditor.DEFAULT);

    IObservableSet knownElements = contentProvider.getKnownElements();
    IObservableMap enabledMap = BeanProperties.value("enabled").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap opacityMap = BeanProperties.value("opacity").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap nameMap = BeanProperties.value("name").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap labelMap = BeanProperties.value("label").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap statusMap = BeanProperties.value("status").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap anyChildrenEnabledMap = BeanProperties.value("anyChildrenEnabled") //$NON-NLS-1$
            .observeDetail(knownElements);
    IObservableMap allChildrenEnabledMap = BeanProperties.value("allChildrenEnabled") //$NON-NLS-1$
            .observeDetail(knownElements);
    IObservableMap childrenMap = BeanProperties.value("children").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap expandedMap = BeanProperties.value("expanded").observeDetail(knownElements); //$NON-NLS-1$

    IObservableMap[] labelAttributeMaps = new IObservableMap[] { enabledMap, opacityMap, nameMap, labelMap,
            anyChildrenEnabledMap, allChildrenEnabledMap, statusMap };

    labelProvider = new LayerTreeLabelProvider(labelAttributeMaps);
    viewer.setLabelProvider(labelProvider);
    viewer.setCheckStateProvider(new LayerTreeCheckStateProvider());

    viewer.setInput(model.getRootNode());
    viewer.setExpandedElements(getExpandedNodes());

    IMapChangeListener childrenListener = new IMapChangeListener() {
        @Override/*from   ww  w .j av a2 s . co  m*/
        public void handleMapChange(MapChangeEvent event) {
            //for any children added, expand the nodes
            Set<?> addedKeys = event.diff.getAddedKeys();
            for (Object o : addedKeys) {
                if (o instanceof ILayerTreeNode) {
                    ((ILayerTreeNode) o).getParent().getValue().setExpanded(true);
                }
            }
        }
    };
    IMapChangeListener expandedListener = new IMapChangeListener() {
        @Override
        public void handleMapChange(MapChangeEvent event) {
            //ensure the expanded elements are kept in sync with the model
            viewer.getTree().getDisplay().asyncExec(new Runnable() {
                @Override
                public void run() {
                    if (!viewer.getTree().isDisposed()) {
                        viewer.setExpandedElements(getExpandedNodes());
                    }
                }
            });
        }
    };
    childrenMap.addMapChangeListener(childrenListener);
    childrenMap.addMapChangeListener(expandedListener);
    expandedMap.addMapChangeListener(expandedListener);

    viewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            Object element = event.getElement();
            if (element instanceof ILayerTreeNode) {
                ILayerTreeNode node = (ILayerTreeNode) element;
                node.enableChildren(event.getChecked());
            }
        }
    });

    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
            List<?> list = selection.toList();
            ILayerTreeNode[] array = list.toArray(new ILayerTreeNode[list.size()]);
            selectionService.setSelection(array.length == 1 ? array[0] : array);
        }
    });

    viewer.addTreeListener(new ITreeViewerListener() {
        @Override
        public void treeExpanded(TreeExpansionEvent event) {
            ILayerTreeNode layerNode = (ILayerTreeNode) event.getElement();
            layerNode.setExpanded(true);
        }

        @Override
        public void treeCollapsed(TreeExpansionEvent event) {
            ILayerTreeNode layerNode = (ILayerTreeNode) event.getElement();
            layerNode.setExpanded(false);
        }
    });

    viewer.getTree().addMouseListener(new MouseAdapter() {
        @Override
        public void mouseDoubleClick(MouseEvent e) {
            ViewerCell cell = viewer.getCell(new Point(e.x, e.y));
            if (cell == null)
                return;

            ILayerTreeNode layer = (ILayerTreeNode) cell.getElement();
            selectLayer(layer);
        }

        @Override
        public void mouseDown(MouseEvent e) {
            ViewerCell cell = viewer.getCell(new Point(e.x, e.y));
            if (cell == null) {
                viewer.setSelection(StructuredSelection.EMPTY);
            }
        }
    });

    viewer.getTree().addTraverseListener(new TraverseListener() {
        @Override
        public void keyTraversed(TraverseEvent e) {
            if (e.detail == SWT.TRAVERSE_RETURN) {
                IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
                if (selection.size() == 1) {
                    ILayerTreeNode layer = (ILayerTreeNode) selection.getFirstElement();
                    selectLayer(layer);
                }
            }
        }
    });

    viewer.setCellEditors(new CellEditor[] { new TextCellEditor(viewer.getTree(), SWT.BORDER) });
    viewer.setColumnProperties(new String[] { "layer" }); //$NON-NLS-1$

    viewer.setCellModifier(new ICellModifier() {
        @Override
        public void modify(Object element, String property, Object value) {
            if (element instanceof Item) {
                element = ((Item) element).getData();
            }
            ((ILayerTreeNode) element).setLabel((String) value);
        }

        @Override
        public Object getValue(Object element, String property) {
            if (element instanceof Item) {
                element = ((Item) element).getData();
            }
            return ((ILayerTreeNode) element).getLabelOrName();
        }

        @Override
        public boolean canModify(Object element, String property) {
            return true;
        }
    });

    ColumnViewerEditorActivationStrategy activationStrategy = new ColumnViewerEditorActivationStrategy(viewer) {
        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    TreeViewerEditor.create(viewer, activationStrategy, ColumnViewerEditor.KEYBOARD_ACTIVATION);

    //add drag and drop support
    int ops = DND.DROP_COPY | DND.DROP_MOVE;
    viewer.addDragSupport(ops, new Transfer[] { LayerTransfer.getInstance() },
            new LayerTreeDragSourceListener(viewer));
    viewer.addDropSupport(ops, new Transfer[] { LayerTransfer.getInstance(), FileTransfer.getInstance() },
            new LayerTreeDropAdapter(viewer, model, context));

    //add context menu
    menuService.registerContextMenu(viewer.getTree(), "au.gov.ga.earthsci.application.layertree.popupmenu"); //$NON-NLS-1$
}

From source file:au.gov.ga.earthsci.layer.ui.LayerTreePart.java

License:Apache License

protected void createStructureViewer(Composite parent, EMenuService menuService, CTabItem tabItem) {
    structureViewer = new CheckboxTreeViewer(parent, SWT.MULTI);
    tabItem.setControl(structureViewer.getControl());
    structureViewer.getTree()/*from   ww w  .j a va2  s .  c  o  m*/
            .setBackgroundImage(ImageRegistry.getInstance().get(ImageRegistry.ICON_TRANSPARENT));
    context.set(TreeViewer.class, structureViewer);

    clipboard = new Clipboard(parent.getDisplay());
    context.set(Clipboard.class, clipboard);

    //create a property change listener for updating the labels whenever a property
    //changes on an ILayerTreeNode instance
    final PropertyChangeListener anyChangeListener = new PropertyChangeListener() {
        @Override
        public void propertyChange(final PropertyChangeEvent evt) {
            updateElementLabel(evt.getSource());
        }
    };
    //create a property change listener that ensures the expanded state of the tree
    //is kept in sync with the value of the expanded property for each node
    final PropertyChangeListener expandedChangeListener = new PropertyChangeListener() {
        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            syncExpandedNodes();
        }
    };

    //setup the label provider
    labelProvider = new LayerTreeLabelProvider();

    //create a bean list property associated with ILayerTreeNode's children property
    IBeanListProperty<ILayerTreeNode, ILayerTreeNode> childrenProperty = BeanProperties
            .list(ILayerTreeNode.class, "children", ILayerTreeNode.class); //$NON-NLS-1$
    //setup a factory for creating observables observing ILayerTreeNodes
    IObservableFactory<ILayerTreeNode, IObservableList<ILayerTreeNode>> observableFactory = childrenProperty
            .listFactory();

    //listen for any changes (additions/removals) to any of the children in the tree
    observableListTreeSupport = new ObservableListTreeSupport<ILayerTreeNode>(observableFactory);
    observableListTreeSupport.addListener(new ITreeChangeListener<ILayerTreeNode>() {
        @Override
        public void elementAdded(ILayerTreeNode element) {
            element.addPropertyChangeListener(anyChangeListener);
            element.addPropertyChangeListener("expanded", expandedChangeListener); //$NON-NLS-1$
        }

        @Override
        public void elementRemoved(ILayerTreeNode element) {
            element.removePropertyChangeListener(anyChangeListener);
            element.removePropertyChangeListener("expanded", expandedChangeListener); //$NON-NLS-1$
        }
    });

    //create a content provider that listens for changes to any children in the tree
    ObservableListTreeContentProvider<ILayerTreeNode> contentProvider = new ObservableListTreeContentProvider<ILayerTreeNode>(
            observableFactory, null);

    //set the viewer's providers
    structureViewer.setContentProvider(contentProvider);
    structureViewer.setLabelProvider(labelProvider);
    structureViewer.setCheckStateProvider(new LayerTreeCheckStateProvider());

    //set the viewer and listener inputs
    structureViewer.setInput(model.getRootNode());
    observableListTreeSupport.setInput(model.getRootNode());

    //Listen for any additions to the tree, and expand added node's parent, so that
    //added nodes are always visible. This is done after the input is set up, so that
    //we don't expand all the nodes that are already in the tree.
    observableListTreeSupport.addListener(new TreeChangeAdapter<ILayerTreeNode>() {
        @Override
        public void elementAdded(ILayerTreeNode element) {
            //for any children added, expand the nodes
            if (!element.isRoot()) {
                element.getParent().setExpanded(true);
            }

            //if the nodes were already expanded, the expanded property change event
            //is not fired, so we need to sync the expanded state anyway
            syncExpandedNodes();

            //when a layer is added, we should activate this part and select the added element
            activateAndSelectElement(element);
        }
    });

    //expand any nodes that should be expanded after unpersisting
    syncExpandedNodes();

    //enable/disable any nodes that are checked/unchecked
    structureViewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            Object element = event.getElement();
            if (element instanceof ILayerTreeNode) {
                ILayerTreeNode node = (ILayerTreeNode) element;
                node.enableChildren(event.getChecked());
            }
        }
    });

    //setup the selection tracking
    structureViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) structureViewer.getSelection();
            List<?> list = selection.toList();
            ILayerTreeNode[] array = list.toArray(new ILayerTreeNode[list.size()]);
            settingSelection = true;
            selectionService.setSelection(array.length == 1 ? array[0] : array);
            settingSelection = false;
        }
    });
    structureViewer.getTree().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
            IStructuredSelection selection = (IStructuredSelection) structureViewer.getSelection();
            ILayerTreeNode firstElement = (ILayerTreeNode) selection.getFirstElement();
            if (firstElement != null) {
                selectLayer(firstElement);
            }
        }
    });

    //setup tree expansion/collapse listening
    structureViewer.addTreeListener(new ITreeViewerListener() {
        @Override
        public void treeExpanded(TreeExpansionEvent event) {
            ILayerTreeNode layerNode = (ILayerTreeNode) event.getElement();
            layerNode.setExpanded(true);
        }

        @Override
        public void treeCollapsed(TreeExpansionEvent event) {
            ILayerTreeNode layerNode = (ILayerTreeNode) event.getElement();
            layerNode.setExpanded(false);
        }
    });

    //make tree cells unselectable by selecting outside
    structureViewer.getTree().addMouseListener(new MouseAdapter() {
        @Override
        public void mouseDown(MouseEvent e) {
            ViewerCell cell = structureViewer.getCell(new Point(e.x, e.y));
            if (cell == null) {
                structureViewer.setSelection(StructuredSelection.EMPTY);
            }
        }
    });

    //setup cell editing
    structureViewer
            .setCellEditors(new CellEditor[] { new TextCellEditor(structureViewer.getTree(), SWT.BORDER) });
    structureViewer.setColumnProperties(new String[] { "layer" }); //$NON-NLS-1$
    structureViewer.setCellModifier(new ICellModifier() {
        @Override
        public void modify(Object element, String property, Object value) {
            if (element instanceof Item) {
                element = ((Item) element).getData();
            }
            ((ILayerTreeNode) element).setLabel((String) value);
        }

        @Override
        public Object getValue(Object element, String property) {
            if (element instanceof Item) {
                element = ((Item) element).getData();
            }
            return ((ILayerTreeNode) element).getLabelOrName();
        }

        @Override
        public boolean canModify(Object element, String property) {
            return true;
        }
    });

    ColumnViewerEditorActivationStrategy activationStrategy = new ColumnViewerEditorActivationStrategy(
            structureViewer) {
        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    TreeViewerEditor.create(structureViewer, activationStrategy, ColumnViewerEditor.KEYBOARD_ACTIVATION);

    //add drag and drop support
    int ops = DND.DROP_COPY | DND.DROP_MOVE;
    structureViewer.addDragSupport(ops,
            new Transfer[] { LocalLayerTransfer.getInstance(), LayerTransfer.getInstance() },
            new LayerTreeDragSourceListener(structureViewer));
    structureViewer
            .addDropSupport(ops,
                    new Transfer[] { LocalLayerTransfer.getInstance(), LayerTransfer.getInstance(),
                            FileTransfer.getInstance() },
                    new LayerTreeDropAdapter(structureViewer, model, context));

    //add context menu
    menuService.registerContextMenu(structureViewer.getTree(),
            "au.gov.ga.earthsci.application.layertree.popupmenu"); //$NON-NLS-1$
}

From source file:ch.elexis.impfplan.view.EditVaccinationDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    DisplayPanel panel = new DisplayPanel(parent, fields, 2, 2, new IAction[0]);
    panel.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
    panel.setAutosave(true);//ww w . j  a  v  a 2  s . c  o  m
    panel.setObject(vt);

    Composite treeComposite = new Composite(parent, SWT.NONE);
    GridLayout gridLayout = new GridLayout(1, false);
    gridLayout.marginLeft = 5;
    treeComposite.setLayout(gridLayout);
    treeComposite.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true));

    treeViewer = new CheckboxTreeViewer(treeComposite, SWT.FULL_SELECTION | SWT.BORDER | SWT.V_SCROLL);
    Tree tree = treeViewer.getTree();
    tree.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, true, true));
    tree.setHeaderVisible(true);
    tree.setLinesVisible(true);

    TreeViewerColumn col = new TreeViewerColumn(treeViewer, SWT.NONE);
    col.getColumn().setWidth(225);
    col.getColumn().setText("Impfung gegen Krankheit(en)");

    treeViewer.setContentProvider(new DiseaseTreeContentProvider());
    treeViewer.setLabelProvider(new DiseaseTreeLabelProvider());
    treeViewer.setInput(DiseaseDefinitionModel.getDiseaseDefinitions());
    treeViewer.setCheckedElements(loadSelected().toArray());

    return panel;
}

From source file:com.android.sdkuilib.internal.repository.RemotePackagesPage.java

License:Apache License

private void createContents(Composite parent) {
    parent.setLayout(new GridLayout(5, false));

    mSdkLocLabel = new Label(parent, SWT.NONE);
    mSdkLocLabel.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, true, false, 5, 1));
    mSdkLocLabel.setText("SDK Location: "
            + (mUpdaterData.getOsSdkRoot() != null ? mUpdaterData.getOsSdkRoot() : "<unknown>"));

    mTreeViewerSources = new CheckboxTreeViewer(parent, SWT.BORDER);
    mTreeViewerSources.addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(CheckStateChangedEvent event) {
            onTreeCheckStateChanged(event); //$hide$
        }//w w w  .j a va2 s  .c  o m
    });
    mTreeSources = mTreeViewerSources.getTree();
    mTreeSources.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            onTreeSelected(); //$hide$
        }
    });
    mTreeSources.setHeaderVisible(true);
    mTreeSources.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 5, 1));

    mColumnSource = new TreeColumn(mTreeSources, SWT.NONE);
    mColumnSource.setWidth(289);
    mColumnSource.setText("Packages available for download");

    mDescriptionContainer = new Group(parent, SWT.NONE);
    mDescriptionContainer.setLayout(new GridLayout(1, false));
    mDescriptionContainer.setText("Description");
    mDescriptionContainer.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 5, 1));

    mDescriptionLabel = new Label(mDescriptionContainer, SWT.NONE);
    mDescriptionLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    mDescriptionLabel.setText("Line1\nLine2\nLine3"); //$NON-NLS-1$

    mAddSiteButton = new Button(parent, SWT.NONE);
    mAddSiteButton.setText("Add Add-on Site...");
    mAddSiteButton.setToolTipText("Allows you to enter a new add-on site. "
            + "Such site can only contribute add-ons and extra packages.");
    mAddSiteButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            onAddSiteSelected(); //$hide$
        }
    });

    mDeleteSiteButton = new Button(parent, SWT.NONE);
    mDeleteSiteButton.setText("Delete Add-on Site...");
    mDeleteSiteButton.setToolTipText(
            "Allows you to remove an add-on site. " + "Built-in default sites cannot be removed.");
    mDeleteSiteButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            onRemoveSiteSelected(); //$hide$
        }
    });

    mUpdateOnlyCheckBox = new Button(parent, SWT.CHECK);
    mUpdateOnlyCheckBox.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, false, 1, 1));
    mUpdateOnlyCheckBox.setText("Display updates only");
    mUpdateOnlyCheckBox.setToolTipText(
            "When selected, only compatible non-obsolete update packages are shown in the list above.");
    mUpdateOnlyCheckBox.setSelection(mUpdaterData.getSettingsController().getShowUpdateOnly());
    mUpdateOnlyCheckBox.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent arg0) {
            onShowUpdateOnly(); //$hide$
        }
    });

    mRefreshButton = new Button(parent, SWT.NONE);
    mRefreshButton.setText("Refresh");
    mRefreshButton.setToolTipText("Refreshes the list of packages from open sites.");
    mRefreshButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            onRefreshSelected(); //$hide$
        }
    });

    mInstallSelectedButton = new Button(parent, SWT.NONE);
    mInstallSelectedButton.setText("Install Selected");
    mInstallSelectedButton.setToolTipText("Allows you to review all selected packages " + "and install them.");
    mInstallSelectedButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            onInstallSelectedArchives(); //$hide$
        }
    });
}

From source file:com.android.sdkuilib.internal.repository.sdkman2.PackagesPage.java

License:Apache License

@SuppressWarnings("unused")
private void createContents(Composite parent) {
    GridLayoutBuilder.create(parent).noMargins().columns(2);

    mGroupSdk = new Composite(parent, SWT.NONE);
    GridDataBuilder.create(mGroupSdk).hFill().vCenter().hGrab().hSpan(2);
    GridLayoutBuilder.create(mGroupSdk).columns(2);

    Label label1 = new Label(mGroupSdk, SWT.NONE);
    label1.setText("SDK Path:");

    mTextSdkOsPath = new Text(mGroupSdk, SWT.NONE);
    GridDataBuilder.create(mTextSdkOsPath).hFill().vCenter().hGrab();
    mTextSdkOsPath.setEnabled(false);//  w w  w . ja  va 2s.  c  o m

    mGroupPackages = new Group(parent, SWT.NONE);
    GridDataBuilder.create(mGroupPackages).fill().grab().hSpan(2);
    mGroupPackages.setText("Packages");
    GridLayoutBuilder.create(mGroupPackages).columns(1);

    mTreeViewer = new CheckboxTreeViewer(mGroupPackages, SWT.BORDER);
    mTreeViewer.addFilter(new ViewerFilter() {
        @Override
        public boolean select(Viewer viewer, Object parentElement, Object element) {
            return filterViewerItem(element);
        }
    });

    mTreeViewer.addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(CheckStateChangedEvent event) {
            onTreeCheckStateChanged(event); //$hide$
        }
    });

    mTreeViewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            onTreeDoubleClick(event); //$hide$
        }
    });

    mTree = mTreeViewer.getTree();
    mTree.setLinesVisible(true);
    mTree.setHeaderVisible(true);
    GridDataBuilder.create(mTree).fill().grab();

    // column name icon is set when loading depending on the current filter type
    // (e.g. API level or source)
    mColumnName = new TreeViewerColumn(mTreeViewer, SWT.NONE);
    mTreeColumnName = mColumnName.getColumn();
    mTreeColumnName.setText("Name");
    mTreeColumnName.setWidth(340);

    mColumnApi = new TreeViewerColumn(mTreeViewer, SWT.NONE);
    TreeColumn treeColumn2 = mColumnApi.getColumn();
    treeColumn2.setText("API");
    treeColumn2.setAlignment(SWT.CENTER);
    treeColumn2.setWidth(50);

    mColumnRevision = new TreeViewerColumn(mTreeViewer, SWT.NONE);
    TreeColumn treeColumn3 = mColumnRevision.getColumn();
    treeColumn3.setText("Rev.");
    treeColumn3.setToolTipText("Revision currently installed");
    treeColumn3.setAlignment(SWT.CENTER);
    treeColumn3.setWidth(50);

    mColumnStatus = new TreeViewerColumn(mTreeViewer, SWT.NONE);
    TreeColumn treeColumn4 = mColumnStatus.getColumn();
    treeColumn4.setText("Status");
    treeColumn4.setAlignment(SWT.LEAD);
    treeColumn4.setWidth(190);

    mGroupOptions = new Composite(mGroupPackages, SWT.NONE);
    GridDataBuilder.create(mGroupOptions).hFill().vCenter().hGrab();
    GridLayoutBuilder.create(mGroupOptions).columns(6).noMargins();

    // Options line 1, 6 columns

    Label label3 = new Label(mGroupOptions, SWT.NONE);
    label3.setText("Show:");

    mCheckFilterNew = new Button(mGroupOptions, SWT.CHECK);
    mCheckFilterNew.setText("Updates/New");
    mCheckFilterNew.setToolTipText("Show Updates and New");
    mCheckFilterNew.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            refreshViewerInput();
        }
    });
    mCheckFilterNew.setSelection(true);

    mCheckFilterInstalled = new Button(mGroupOptions, SWT.CHECK);
    mCheckFilterInstalled.setToolTipText("Show Installed");
    mCheckFilterInstalled.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            refreshViewerInput();
        }
    });
    mCheckFilterInstalled.setSelection(true);
    mCheckFilterInstalled.setText("Installed");

    mCheckFilterObsolete = new Button(mGroupOptions, SWT.CHECK);
    mCheckFilterObsolete.setText("Obsolete");
    mCheckFilterObsolete.setToolTipText("Also show obsolete packages");
    mCheckFilterObsolete.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            refreshViewerInput();
        }
    });
    mCheckFilterObsolete.setSelection(false);

    Link linkSelectNew = new Link(mGroupOptions, SWT.NONE);
    // Note for i18n: we need to identify which link is used, and this is done by using the
    // text itself so for translation purposes we want to keep the <a> link strings separate.
    final String strLinkNew = "New";
    final String strLinkUpdates = "Updates";
    linkSelectNew.setText(String.format("Select <a>%1$s</a> or <a>%2$s</a>", strLinkNew, strLinkUpdates));
    linkSelectNew.setToolTipText("Selects all items that are either new or updates.");
    GridDataBuilder.create(linkSelectNew).hFill().hGrab();
    linkSelectNew.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            super.widgetSelected(e);
            boolean selectNew = e.text == null || e.text.equals(strLinkNew);
            onSelectNewUpdates(selectNew, !selectNew, false/*selectTop*/);
        }
    });

    mButtonInstall = new Button(mGroupOptions, SWT.NONE);
    mButtonInstall.setText(""); //$NON-NLS-1$  placeholder, filled in updateButtonsState()
    mButtonInstall.setToolTipText("Install one or more packages");
    GridDataBuilder.create(mButtonInstall).hFill().vCenter().hGrab();
    mButtonInstall.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            onButtonInstall(); //$hide$
        }
    });

    // Options line 2, 6 columns

    Label label2 = new Label(mGroupOptions, SWT.NONE);
    label2.setText("Sort by:");

    mCheckSortApi = new Button(mGroupOptions, SWT.RADIO);
    mCheckSortApi.setToolTipText("Sort by API level");
    mCheckSortApi.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (mCheckSortApi.getSelection()) {
                refreshViewerInput();
                copySelection(true /*toApi*/);
                syncViewerSelection();
            }
        }
    });
    mCheckSortApi.setText("API level");
    mCheckSortApi.setSelection(true);

    mCheckSortSource = new Button(mGroupOptions, SWT.RADIO);
    mCheckSortSource.setText("Repository");
    mCheckSortSource.setToolTipText("Sort by Repository");
    mCheckSortSource.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (mCheckSortSource.getSelection()) {
                refreshViewerInput();
                copySelection(false /*toApi*/);
                syncViewerSelection();
            }
        }
    });

    new Label(mGroupOptions, SWT.NONE);

    Link linkDeselect = new Link(mGroupOptions, SWT.NONE);
    linkDeselect.setText("<a>Deselect All</a>");
    linkDeselect.setToolTipText("Deselects all the currently selected items");
    GridDataBuilder.create(linkDeselect).hFill().hGrab();
    linkDeselect.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            super.widgetSelected(e);
            onDeselectAll();
        }
    });

    mButtonDelete = new Button(mGroupOptions, SWT.NONE);
    mButtonDelete.setText(""); //$NON-NLS-1$  placeholder, filled in updateButtonsState()
    mButtonDelete.setToolTipText("Delete one ore more installed packages");
    GridDataBuilder.create(mButtonDelete).hFill().vCenter().hGrab();
    mButtonDelete.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            onButtonDelete(); //$hide$
        }
    });
}

From source file:com.android.sdkuilib.internal.repository.ui.PackagesPage.java

License:Apache License

@SuppressWarnings("unused")
private void createContents(Composite parent) {
    GridLayoutBuilder.create(parent).noMargins().columns(2);

    mGroupSdk = new Composite(parent, SWT.NONE);
    GridDataBuilder.create(mGroupSdk).hFill().vCenter().hGrab().hSpan(2);
    GridLayoutBuilder.create(mGroupSdk).columns(2);

    Label label1 = new Label(mGroupSdk, SWT.NONE);
    label1.setText("SDK Path:");

    mTextSdkOsPath = new Text(mGroupSdk, SWT.NONE);
    GridDataBuilder.create(mTextSdkOsPath).hFill().vCenter().hGrab();
    mTextSdkOsPath.setEnabled(false);//from www  .j a  v a  2 s.  c o  m

    Group groupPackages = new Group(parent, SWT.NONE);
    mGroupPackages = groupPackages;
    GridDataBuilder.create(mGroupPackages).fill().grab().hSpan(2);
    groupPackages.setText("Packages");
    GridLayoutBuilder.create(groupPackages).columns(1);

    mTreeViewer = new CheckboxTreeViewer(groupPackages, SWT.BORDER);
    mImpl.setITreeViewer(new PackagesPageImpl.ICheckboxTreeViewer() {
        @Override
        public Object getInput() {
            return mTreeViewer.getInput();
        }

        @Override
        public void setInput(List<PkgCategory> cats) {
            mTreeViewer.setInput(cats);
        }

        @Override
        public void setContentProvider(PkgContentProvider pkgContentProvider) {
            mTreeViewer.setContentProvider(pkgContentProvider);
        }

        @Override
        public void refresh() {
            mTreeViewer.refresh();
        }

        @Override
        public Object[] getCheckedElements() {
            return mTreeViewer.getCheckedElements();
        }
    });
    mTreeViewer.addFilter(new ViewerFilter() {
        @Override
        public boolean select(Viewer viewer, Object parentElement, Object element) {
            return filterViewerItem(element);
        }
    });

    mTreeViewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            onTreeCheckStateChanged(event); //$hide$
        }
    });

    mTreeViewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(DoubleClickEvent event) {
            onTreeDoubleClick(event); //$hide$
        }
    });

    Tree tree = mTreeViewer.getTree();
    tree.setLinesVisible(true);
    tree.setHeaderVisible(true);
    GridDataBuilder.create(tree).fill().grab();

    // column name icon is set when loading depending on the current filter type
    // (e.g. API level or source)
    TreeViewerColumn columnName = new TreeViewerColumn(mTreeViewer, SWT.NONE);
    mTreeColumnName = columnName.getColumn();
    mTreeColumnName.setText("Name");
    mTreeColumnName.setWidth(340);

    TreeViewerColumn columnApi = new TreeViewerColumn(mTreeViewer, SWT.NONE);
    TreeColumn treeColumn2 = columnApi.getColumn();
    treeColumn2.setText("API");
    treeColumn2.setAlignment(SWT.CENTER);
    treeColumn2.setWidth(50);

    TreeViewerColumn columnRevision = new TreeViewerColumn(mTreeViewer, SWT.NONE);
    TreeColumn treeColumn3 = columnRevision.getColumn();
    treeColumn3.setText("Rev.");
    treeColumn3.setToolTipText("Revision currently installed");
    treeColumn3.setAlignment(SWT.CENTER);
    treeColumn3.setWidth(50);

    TreeViewerColumn columnStatus = new TreeViewerColumn(mTreeViewer, SWT.NONE);
    TreeColumn treeColumn4 = columnStatus.getColumn();
    treeColumn4.setText("Status");
    treeColumn4.setAlignment(SWT.LEAD);
    treeColumn4.setWidth(190);

    mImpl.setIColumns(wrapColumn(columnName), wrapColumn(columnApi), wrapColumn(columnRevision),
            wrapColumn(columnStatus));

    mGroupOptions = new Composite(groupPackages, SWT.NONE);
    GridDataBuilder.create(mGroupOptions).hFill().vCenter().hGrab();
    GridLayoutBuilder.create(mGroupOptions).columns(7).noMargins();

    // Options line 1, 7 columns

    Label label3 = new Label(mGroupOptions, SWT.NONE);
    label3.setText("Show:");

    mCheckFilterNew = new Button(mGroupOptions, SWT.CHECK);
    mCheckFilterNew.setText("Updates/New");
    mCheckFilterNew.setToolTipText("Show Updates and New");
    mCheckFilterNew.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            refreshViewerInput();
        }
    });
    mCheckFilterNew.setSelection(true);

    mCheckFilterInstalled = new Button(mGroupOptions, SWT.CHECK);
    mCheckFilterInstalled.setToolTipText("Show Installed");
    mCheckFilterInstalled.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            refreshViewerInput();
        }
    });
    mCheckFilterInstalled.setSelection(true);
    mCheckFilterInstalled.setText("Installed");

    new Label(mGroupOptions, SWT.NONE);

    Link linkSelectNew = new Link(mGroupOptions, SWT.NONE);
    // Note for i18n: we need to identify which link is used, and this is done by using the
    // text itself so for translation purposes we want to keep the <a> link strings separate.
    final String strLinkNew = "New";
    final String strLinkUpdates = "Updates";
    linkSelectNew.setText(String.format("Select <a>%1$s</a> or <a>%2$s</a>", strLinkNew, strLinkUpdates));
    linkSelectNew.setToolTipText("Selects all items that are either new or updates.");
    GridDataBuilder.create(linkSelectNew).hFill();
    linkSelectNew.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            super.widgetSelected(e);
            boolean selectNew = e.text == null || e.text.equals(strLinkNew);
            onSelectNewUpdates(selectNew, !selectNew, false/*selectTop*/);
        }
    });

    // placeholder between "select all" and "install"
    Label placeholder = new Label(mGroupOptions, SWT.NONE);
    GridDataBuilder.create(placeholder).hFill().hGrab();

    mButtonInstall = new Button(mGroupOptions, SWT.NONE);
    mButtonInstall.setText(""); //$NON-NLS-1$  placeholder, filled in updateButtonsState()
    mButtonInstall.setToolTipText("Install one or more packages");
    GridDataBuilder.create(mButtonInstall).vCenter().wHint(150);
    mButtonInstall.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            onButtonInstall(); //$hide$
        }
    });

    // Options line 2, 7 columns

    new Label(mGroupOptions, SWT.NONE);

    mCheckFilterObsolete = new Button(mGroupOptions, SWT.CHECK);
    mCheckFilterObsolete.setText("Obsolete");
    mCheckFilterObsolete.setToolTipText("Also show obsolete packages");
    mCheckFilterObsolete.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            refreshViewerInput();
        }
    });
    mCheckFilterObsolete.setSelection(false);

    // placeholder before "deselect"
    new Label(mGroupOptions, SWT.NONE);
    new Label(mGroupOptions, SWT.NONE);

    Link linkDeselect = new Link(mGroupOptions, SWT.NONE);
    linkDeselect.setText("<a>Deselect All</a>");
    linkDeselect.setToolTipText("Deselects all the currently selected items");
    GridDataBuilder.create(linkDeselect).hFill();
    linkDeselect.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            super.widgetSelected(e);
            onDeselectAll();
        }
    });

    // placeholder between "deselect" and "delete"
    placeholder = new Label(mGroupOptions, SWT.NONE);
    GridDataBuilder.create(placeholder).hFill().hGrab();

    mButtonDelete = new Button(mGroupOptions, SWT.NONE);
    mButtonDelete.setText(""); //$NON-NLS-1$  placeholder, filled in updateButtonsState()
    mButtonDelete.setToolTipText("Delete one ore more installed packages");
    GridDataBuilder.create(mButtonDelete).vCenter().wHint(150);
    mButtonDelete.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            onButtonDelete(); //$hide$
        }
    });
}

From source file:com.arcbees.gwtp.plugin.core.project.AddFeaturesPage.java

License:Apache License

@Override
public void createControl(Composite parent) {
    Composite container = new Composite(parent, SWT.NULL);

    setControl(container);/*from   w  w w  .ja  va 2 s . c o  m*/
    container.setLayout(new GridLayout(1, false));

    final CheckboxTreeViewer checkboxTreeViewer = new CheckboxTreeViewer(container, SWT.BORDER);
    checkboxTreeViewer.setAutoExpandLevel(-1);
    checkboxTreeViewer.setExpandPreCheckFilters(false);
    Tree tree = checkboxTreeViewer.getTree();
    tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    checkboxTreeViewer.setContentProvider(new FeatureContentProvider());
    checkboxTreeViewer.setLabelProvider(new FeatureLabelProvider());
    checkboxTreeViewer.setCheckStateProvider(new FeatureCheckStateProvider());
    checkboxTreeViewer.setInput("init");

    checkboxTreeViewer.addCheckStateListener(new ICheckStateListener() {
        @SuppressWarnings("unchecked")
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            Node<Feature> featureNode = ((Node<Feature>) event.getElement());
            if (!event.getChecked()) {
                checkboxTreeViewer.setSubtreeChecked(event.getElement(), false);
                deselectFeatureNode(featureNode);
            } else {
                featureNode.getData().setSelected(true);
            }
            FeatureConfigPage.get().showSelectedFeatures();
        }
    });
}

From source file:com.atlassian.connector.eclipse.ui.commons.ResourceSelectionTree.java

License:Open Source License

private void createControls() {
    GridLayout layout = new GridLayout(2, false);
    layout.marginHeight = 0;/*ww w . j a  va 2s.  co m*/
    layout.marginWidth = 0;
    layout.horizontalSpacing = 0;
    layout.verticalSpacing = 0;
    setLayout(layout);
    GridData layoutData = new GridData(GridData.FILL_BOTH);
    layoutData.widthHint = 500;
    setLayoutData(layoutData);

    ViewForm viewerPane = new ViewForm(this, SWT.BORDER | SWT.FLAT);
    layoutData = new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1);
    layoutData.widthHint = 500;
    viewerPane.setLayoutData(layoutData);

    CLabel toolbarLabel = new CLabel(viewerPane, SWT.NONE) {
        @Override
        public Point computeSize(int wHint, int hHint, boolean changed) {
            return super.computeSize(wHint, Math.max(24, hHint), changed);
        }
    };

    if (label != null) {
        toolbarLabel.setText(label);
    }
    viewerPane.setTopLeft(toolbarLabel);

    int buttonGroupColumns = 1;
    if (toolbarControlCreator != null) {
        buttonGroupColumns = buttonGroupColumns + toolbarControlCreator.getControlCount();
    }

    ToolBar toolbar = new ToolBar(viewerPane, SWT.FLAT);
    viewerPane.setTopCenter(toolbar);

    ToolBarManager toolbarManager = new ToolBarManager(toolbar);

    if (toolbarControlCreator != null) {
        toolbarControlCreator.createToolbarControls(toolbarManager);
        toolbarManager.add(new Separator());
    }

    flatAction = new Action("Flat Mode", IAction.AS_RADIO_BUTTON) {
        @Override
        public void run() {
            mode = TreeViewMode.MODE_FLAT;
            settingsProvider.setTreeViewMode(mode);
            treeAction.setChecked(false);
            compressedAction.setChecked(false);
            refresh();
        }
    };
    //      flatAction.setImageDescriptor(AtlassianImages.IMG_FLAT_MODE);
    toolbarManager.add(flatAction);

    treeAction = new Action("Tree Mode", IAction.AS_RADIO_BUTTON) {
        @Override
        public void run() {
            mode = TreeViewMode.MODE_TREE;
            settingsProvider.setTreeViewMode(mode);
            flatAction.setChecked(false);
            compressedAction.setChecked(false);
            refresh();
        }
    };
    //      treeAction.setImageDescriptor(AtlassianImages.IMG_TREE_MODE);
    toolbarManager.add(treeAction);

    compressedAction = new Action("Compressed Folders Mode", IAction.AS_RADIO_BUTTON) {
        @Override
        public void run() {
            mode = TreeViewMode.MODE_COMPRESSED_FOLDERS;
            settingsProvider.setTreeViewMode(mode);
            treeAction.setChecked(false);
            flatAction.setChecked(false);
            refresh();
        }
    };
    //      compressedAction.setImageDescriptor(AtlassianImages.IMG_COMPRESSED_FOLDER_MODE);
    toolbarManager.add(compressedAction);

    toolbarManager.update(true);

    switch (mode) {
    case MODE_COMPRESSED_FOLDERS:
        compressedAction.setChecked(true);
        break;
    case MODE_FLAT:
        flatAction.setChecked(true);
        break;
    case MODE_TREE:
        treeAction.setChecked(true);
        break;
    default:
        compressedAction.setChecked(true);
        mode = TreeViewMode.MODE_COMPRESSED_FOLDERS;
        settingsProvider.setTreeViewMode(mode);
        break;
    }

    treeViewer = new CheckboxTreeViewer(viewerPane, SWT.SINGLE);

    tree = treeViewer.getTree();
    layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
    layoutData.widthHint = 500;
    tree.setLayoutData(layoutData);
    viewerPane.setContent(tree);

    final DelegatingStyledCellLabelProvider labelProvider = new DelegatingStyledCellLabelProvider(
            new ResourceSelectionLabelProvider());

    treeViewer.setLabelProvider(labelProvider);
    treeViewer.setContentProvider(resourceSelectionContentProvider);
    treeViewer.setUseHashlookup(true);
    layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
    layoutData.heightHint = 125;
    layoutData.widthHint = TREE_WIDTH;
    treeViewer.getControl().setLayoutData(layoutData);
    treeViewer.setInput(this);

    treeViewer.expandAll();

    setAllChecked(true);
    if (mode == TreeViewMode.MODE_TREE) {
        treeViewer.collapseAll();
    }
    treeViewer.addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(CheckStateChangedEvent event) {
            handleCheckStateChange(event);
        }
    });

    MenuManager menuMgr = new MenuManager();
    Menu menu = menuMgr.createContextMenu(treeViewer.getTree());
    menuMgr.addMenuListener(new IMenuListener() {
        public void menuAboutToShow(IMenuManager menuMgr) {
            fillTreeMenu(menuMgr);
        }
    });
    menuMgr.setRemoveAllWhenShown(true);
    treeViewer.getTree().setMenu(menu);
}

From source file:com.bdaum.zoom.net.communities.ui.EditCommunityAccountDialog.java

License:Open Source License

private void createCategoryGroup(Composite parent) {
    List<? extends org.scohen.juploadr.app.Category> categories = account.getCategories();
    IDbManager db = Core.getCore().getDbManager();
    final Meta meta = db.getMeta(true);
    Map<String, Category> localCategories = meta.getCategory();
    externalCategories = new HashSet<String>(categories.size() * 5 / 4 + 1);
    for (org.scohen.juploadr.app.Category cat : categories)
        externalCategories.add(cat.getTitle());
    externalCategories.removeAll(localCategories.keySet());
    parent.setLayout(new GridLayout());
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    composite.setLayout(new GridLayout());
    Label allCatLabel = new Label(composite, SWT.NONE);
    allCatLabel.setText(Messages.EditCommunityAccountDialog_all_categories);
    allCatViewer = CheckboxTableViewer.newCheckList(composite, SWT.BORDER | SWT.V_SCROLL);
    GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
    layoutData.heightHint = 150;//  www . j  a v  a 2s  .  c o m
    allCatViewer.getControl().setLayoutData(layoutData);
    allCatViewer.setContentProvider(ArrayContentProvider.getInstance());
    allCatViewer.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof org.scohen.juploadr.app.Category)
                return ((org.scohen.juploadr.app.Category) element).getTitle();
            return element.toString();
        }

        @Override
        public Font getFont(Object element) {
            if (element instanceof org.scohen.juploadr.app.Category
                    && externalCategories.contains(((org.scohen.juploadr.app.Category) element).getTitle()))
                return JFaceResources.getBannerFont();
            return super.getFont(element);
        }

    });
    allCatViewer.setComparator(ZViewerComparator.INSTANCE);
    allCatViewer.addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(CheckStateChangedEvent event) {
            Object element = event.getElement();
            if (!externalCategories.contains(((org.scohen.juploadr.app.Category) element).getTitle()))
                allCatViewer.setChecked(element, false);
            updateCatButtons();
        }
    });
    allCatViewer.setInput(categories);
    updateAllCatButton = new Button(composite, SWT.PUSH);
    updateAllCatButton.setLayoutData(new GridData(SWT.END, SWT.CENTER, false, false));
    updateAllCatButton.setText(Messages.EditCommunityAccountDialog_import_into_catalog);
    updateAllCatButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            BusyIndicator.showWhile(e.display, () -> importAllCats());
        }

        private void importAllCats() {
            Object[] checkedElements = allCatViewer.getCheckedElements();
            Map<String, Category> newCats = new HashMap<String, Category>(meta.getCategory());
            for (Object element : checkedElements) {
                org.scohen.juploadr.app.Category cat = (org.scohen.juploadr.app.Category) element;
                String label = cat.getTitle();
                CategoryImpl newCat = new CategoryImpl(label);
                newCats.put(label, newCat);
                allCatViewer.setChecked(element, false);
                externalCategories.remove(label);
            }
            updateMeta(meta, newCats);
            updateCatButtons();
        }

    });
    // Part 2
    Map<String, Category> usedCategories = new HashMap<String, Category>();
    externalUsedCat = new HashSet<Category>();
    List<PhotoSet> photosets = account.getPhotosets();
    for (PhotoSet photoSet : photosets) {
        org.scohen.juploadr.app.Category category = photoSet.getCategory();
        if (category != null) {
            String title = category.getTitle();
            Category usedCat = usedCategories.get(title);
            if (usedCat == null) {
                usedCat = new CategoryImpl(title);
                usedCategories.put(title, usedCat);
            }
            Category localCat = localCategories.get(title);
            if (localCat == null)
                externalUsedCat.add(usedCat);
            org.scohen.juploadr.app.Category subcategory = photoSet.getSubcategory();
            if (subcategory != null) {
                String stitle = subcategory.getTitle();
                Category usedSub = usedCat.getSubCategory(stitle);
                if (usedSub == null) {
                    usedSub = new CategoryImpl(stitle);
                    usedCat.putSubCategory(usedSub);
                }
                if (localCat == null || localCat.getSubCategory() == null
                        || !localCat.getSubCategory().containsKey(stitle))
                    externalUsedCat.add(usedSub);
            }
        }
    }
    Label usedCatLabel = new Label(composite, SWT.NONE);
    usedCatLabel.setText(Messages.EditCommunityAccountDialog_used_categories);
    ExpandCollapseGroup expandCollapseGroup = new ExpandCollapseGroup(composite, SWT.NONE);
    usedCatViewer = new CheckboxTreeViewer(composite, SWT.BORDER | SWT.V_SCROLL);
    expandCollapseGroup.setViewer(usedCatViewer);
    layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
    layoutData.heightHint = 100;
    usedCatViewer.getControl().setLayoutData(layoutData);
    usedCatViewer.setContentProvider(new ITreeContentProvider() {
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            // do nothing
        }

        public void dispose() {
            // do nothing
        }

        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof Map<?, ?>) {
                return ((Map<?, ?>) inputElement).values().toArray();
            }
            return EMPTY;
        }

        public boolean hasChildren(Object element) {
            return getChildren(element).length > 0;
        }

        public Object getParent(Object element) {
            if (element instanceof Category)
                return ((Category) element).getCategory_subCategory_parent();
            return null;
        }

        public Object[] getChildren(Object parentElement) {
            if (parentElement instanceof Category) {
                AomMap<String, Category> subCategories = ((Category) parentElement).getSubCategory();
                if (subCategories != null) {
                    List<Category> children = new ArrayList<>(subCategories.size());
                    for (Category cat : subCategories.values())
                        if (cat != null)
                            children.add(cat);
                    return children.toArray();
                }
            }
            return EMPTY;
        }
    });
    usedCatViewer.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof Category)
                return ((Category) element).getLabel();
            return element.toString();
        }

        @Override
        public Font getFont(Object element) {
            if (element instanceof Category && externalUsedCat.contains(element))
                return JFaceResources.getBannerFont();
            return super.getFont(element);
        }

    });
    usedCatViewer.setComparator(ZViewerComparator.INSTANCE);
    usedCatViewer.addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(CheckStateChangedEvent event) {
            Object element = event.getElement();
            if (element instanceof Category && event.getChecked()) {
                if (!externalUsedCat.contains(element))
                    usedCatViewer.setChecked(element, false);
                else {
                    Category pcat = ((Category) element).getCategory_subCategory_parent();
                    if (pcat != null && externalUsedCat.contains(pcat))
                        usedCatViewer.setChecked(pcat, true);
                }
            }
            updateCatButtons();
        }
    });
    UiUtilities.installDoubleClickExpansion(usedCatViewer);
    usedCatViewer.setInput(usedCategories);
    usedCatViewer.expandAll();
    updateUsedCatButton = new Button(composite, SWT.PUSH);
    updateUsedCatButton.setLayoutData(new GridData(SWT.END, SWT.CENTER, false, false));
    updateUsedCatButton.setText(Messages.EditCommunityAccountDialog_import_into_catalog);
    updateUsedCatButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            BusyIndicator.showWhile(e.display, () -> importAllUsedCats());
        }

        private void importAllUsedCats() {
            Object[] checkedElements = usedCatViewer.getCheckedElements();
            Map<String, Category> newCats = new HashMap<String, Category>(meta.getCategory());
            for (Object element : checkedElements) {
                Category cat = (Category) element;
                Category pcat = cat.getCategory_subCategory_parent();
                if (pcat != null) {
                    Category p2 = newCats.get(pcat.getLabel());
                    if (p2 != null) {
                        pcat.removeSubCategory(cat.getLabel());
                        p2.putSubCategory(cat);
                    } else
                        newCats.put(pcat.getLabel(), pcat);
                } else if (newCats.get(cat.getLabel()) == null)
                    newCats.put(cat.getLabel(), cat);
                externalUsedCat.remove(cat);
                usedCatViewer.setChecked(cat, false);
                if (pcat != null) {
                    externalUsedCat.remove(pcat);
                    usedCatViewer.setChecked(pcat, false);
                }
            }
            updateMeta(meta, newCats);
            updateCatButtons();
        }
    });
    updateCatButtons();
}