List of usage examples for org.eclipse.jface.viewers CheckboxTreeViewer CheckboxTreeViewer
public CheckboxTreeViewer(Composite parent, int style)
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(); }