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

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

Introduction

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

Prototype

public TreeViewer(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:com.bdaum.zoom.ui.internal.dialogs.EditMetaDialog.java

License:Open Source License

@SuppressWarnings("unused")
private void createCategoriesGroup(final Composite parent, final CTabFolder folder) {
    final Composite catComposite = createTabPage(folder, Messages.EditMetaDialog_categories,
            Messages.EditMetaDialog_category_tooltip, 2, 0);
    ExpandCollapseGroup expandCollapseGroup = new ExpandCollapseGroup(catComposite, SWT.NONE);
    new Label(catComposite, SWT.NONE);
    catTreeViewer = new TreeViewer(catComposite, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.SINGLE);
    expandCollapseGroup.setViewer(catTreeViewer);
    setViewerLayout(catTreeViewer, 200, 1);
    catTreeViewer.setContentProvider(new CategoryContentProvider());
    catTreeViewer.setComparator(ZViewerComparator.INSTANCE);
    catTreeViewer.setLabelProvider(new CategoryLabelProvider());
    UiUtilities.installDoubleClickExpansion(catTreeViewer);
    final Composite buttonGroup = new Composite(catComposite, SWT.NONE);
    buttonGroup.setLayout(new GridLayout());
    buttonGroup.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false));
    categoryAddButton = createPushButton(buttonGroup, Messages.EditMetaDialog_add,
            Messages.EditMetaDialog_add_category);
    categoryAddButton.addSelectionListener(new SelectionAdapter() {
        @Override//from w ww .ja va 2 s  .  c o m
        public void widgetSelected(SelectionEvent e) {
            EditCategoryDialog inputDialog = new EditCategoryDialog(parent.getShell(), null, categories, null,
                    null, false);
            if (inputDialog.open() == Window.OK) {
                String label = inputDialog.getLabel();
                Category category = new CategoryImpl(label);
                category.setSynonyms(inputDialog.getSynonyms());
                categories.put(label, category);
                catTreeViewer.setInput(categories);
            }
        }
    });
    categoryRefineButton = createPushButton(buttonGroup, Messages.EditMetaDialog_refine,
            Messages.EditMetaDialog_refine_category);
    categoryRefineButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            Category firstElement = (Category) ((IStructuredSelection) catTreeViewer.getSelection())
                    .getFirstElement();
            EditCategoryDialog inputDialog = new EditCategoryDialog(parent.getShell(), null, categories, null,
                    firstElement, false);
            if (inputDialog.open() == Window.OK) {
                Category subCategory = new CategoryImpl(inputDialog.getLabel());
                subCategory.setSynonyms(inputDialog.getSynonyms());
                firstElement.putSubCategory(subCategory);
                catTreeViewer.add(firstElement, subCategory);
                catTreeViewer.expandToLevel(firstElement, 2);
            }
        }
    });

    categoryEditButton = createPushButton(buttonGroup, Messages.EditMetaDialog_edit,
            Messages.EditMetaDialog_edit_selected_category);
    categoryEditButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            editCategory(parent);
        }
    });
    catTreeViewer.getControl().addKeyListener(keyListener);
    catTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(final SelectionChangedEvent event) {
            updateButtons();
            if (cntrlDwn) {
                if (categoryEditButton.isEnabled())
                    editCategory(parent);
                cntrlDwn = false;
            }
        }
    });
    categoryRemoveButton = createPushButton(buttonGroup, Messages.EditMetaDialog_remove,
            Messages.EditMetaDialog_remove_category);
    categoryRemoveButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            CategoryImpl firstElement = (CategoryImpl) ((IStructuredSelection) catTreeViewer.getSelection())
                    .getFirstElement();
            Category subCategory_parent = firstElement.getCategory_subCategory_parent();
            if (subCategory_parent != null)
                subCategory_parent.removeSubCategory(firstElement.getLabel());
            else
                categories.remove(firstElement.getLabel());
            catTreeViewer.remove(firstElement);
        }
    });

    new Label(buttonGroup, SWT.HORIZONTAL | SWT.SEPARATOR).setText(Messages.EditMetaDialog_label);
    final String[] catExtensions = new String[] { "*" //$NON-NLS-1$
            + Constants.CATEGORYFILEEXTENSION + ";*" //$NON-NLS-1$
            + Constants.CATEGORYFILEEXTENSION.toUpperCase() };
    loadCatButton = createPushButton(buttonGroup, Messages.EditMetaDialog_load,
            NLS.bind(Messages.EditMetaDialog_load_category, Constants.CATEGORYFILEEXTENSION));
    loadCatButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            FileDialog dialog = new FileDialog(getShell(), SWT.OPEN);
            dialog.setFilterExtensions(catExtensions);
            dialog.setFilterNames(new String[] { Constants.APPNAME + Messages.EditMetaDialog_zoom_cat_file
                    + Constants.CATEGORYFILEEXTENSION + ")" }); //$NON-NLS-1$
            String filename = dialog.open();
            if (filename != null)
                try (InputStream in = new BufferedInputStream(new FileInputStream(filename))) {
                    Utilities.loadCategories(dbManager, categories, in, null);
                } catch (IOException e1) {
                    // ignore
                }
        }
    });

    saveCatButton = createPushButton(buttonGroup, Messages.EditMetaDialog_save,
            NLS.bind(Messages.EditMetaDialog_save_category, Constants.CATEGORYFILEEXTENSION));
    saveCatButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            FileDialog dialog = new FileDialog(getShell(), SWT.SAVE);
            dialog.setFilterExtensions(catExtensions);
            dialog.setFilterNames(new String[] { Constants.APPNAME + Messages.EditMetaDialog_zoom_cat_file
                    + Constants.CATEGORYFILEEXTENSION + ")" }); //$NON-NLS-1$
            dialog.setFileName("*" + Constants.CATEGORYFILEEXTENSION); //$NON-NLS-1$
            dialog.setOverwrite(true);
            String filename = dialog.open();
            if (filename != null)
                Utilities.saveCategories(meta, new File(filename));
        }
    });
}

From source file:com.bdaum.zoom.ui.internal.dialogs.ExhibitionEditDialog.java

License:Open Source License

private TreeViewer createDetailViewer(Composite parent, boolean frame) {
    TreeViewer viewer = new TreeViewer(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    Tree tree = viewer.getTree();/*from w ww  . java2s  .co m*/
    GridData gd_tree = new GridData(SWT.FILL, SWT.FILL, true, true);
    gd_tree.heightHint = 300;
    tree.setLayoutData(gd_tree);
    tree.setLinesVisible(true);
    tree.setHeaderVisible(true);
    createColumn(viewer, 0, 210, Messages.ExhibitionEditDialog_item, SWT.LEFT, frame);
    createColumn(viewer, 1, 60, Messages.ExhibitionEditDialog_x, SWT.RIGHT, frame);
    createColumn(viewer, 2, 60, Messages.ExhibitionEditDialog_y, SWT.RIGHT, frame);
    createColumn(viewer, 3, 60, Messages.ExhibitionEditDialog_w, SWT.RIGHT, frame);
    createColumn(viewer, 4, 60, Messages.ExhibitionEditDialog_h, SWT.RIGHT, frame);
    createColumn(viewer, 5, 40, Messages.ExhibitionEditDialog_dpi, SWT.RIGHT, frame);
    createColumn(viewer, 6, 100, "", SWT.LEFT, frame); //$NON-NLS-1$
    viewer.setContentProvider(new ITreeContentProvider() {

        public void inputChanged(Viewer aViewer, Object oldInput, Object newInput) {
            // do nothing
        }

        public void dispose() {
            // do nothing
        }

        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof Exhibition)
                return ((Exhibition) inputElement).getWall().toArray();
            return EKPTY;
        }

        public boolean hasChildren(Object element) {
            if (element instanceof Wall)
                return !((Wall) element).getExhibit().isEmpty();
            return false;
        }

        public Object getParent(Object element) {
            if (element instanceof Exhibit)
                return dbManager.obtainById(WallImpl.class, ((Exhibit) element).getWall_exhibit_parent());
            return null;
        }

        public Object[] getChildren(Object parentElement) {
            if (parentElement instanceof Wall) {
                List<String> ids = ((Wall) parentElement).getExhibit();
                List<ExhibitImpl> list = new ArrayList<ExhibitImpl>(ids.size());
                for (String id : ids) {
                    ExhibitImpl obj = dbManager.obtainById(ExhibitImpl.class, id);
                    if (obj != null)
                        list.add(obj);
                }
                return list.toArray();
            }
            return EKPTY;
        }
    });
    viewer.setComparator(new ZViewerComparator() {
        @Override
        public int compare(Viewer aViewer, Object e1, Object e2) {
            if (e1 instanceof Wall && e2 instanceof Wall) {
                return UiUtilities.stringComparator.compare(((Wall) e1).getLocation(),
                        ((Wall) e2).getLocation());
            } else if (e1 instanceof Exhibit && e2 instanceof Exhibit) {
                int x1 = ((Exhibit) e1).getX();
                int x2 = ((Exhibit) e2).getX();
                return x1 == x2 ? 0 : x1 < x2 ? -1 : 1;
            }
            return super.compare(aViewer, e1, e2);
        }
    });
    UiUtilities.installDoubleClickExpansion(viewer);
    return viewer;
}

From source file:com.bdaum.zoom.ui.internal.dialogs.PresentationSelectDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite area = (Composite) super.createDialogArea(parent);
    Composite comp = new Composite(area, SWT.NONE);
    comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    comp.setLayout(new GridLayout());
    ExpandCollapseGroup expandCollapseGroup = new ExpandCollapseGroup(comp, SWT.NONE);
    viewer = new TreeViewer(comp, SWT.BORDER | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
    expandCollapseGroup.setViewer(viewer);
    GridData layoutData = new GridData(SWT.FILL, SWT.BEGINNING, true, true);
    layoutData.widthHint = 500;//from   w w w .  j a  va  2 s.  c om
    viewer.getControl().setLayoutData(layoutData);
    viewer.setContentProvider(new ITreeContentProvider() {

        public void inputChanged(Viewer aViewer, Object oldInput, Object newInput) {
            // do nothing
        }

        public void dispose() {
            // do nothing
        }

        public Object[] getElements(Object inputElement) {
            return (Object[]) inputElement;
        }

        public boolean hasChildren(Object element) {
            if (element instanceof String)
                return !obtainChildren(element).isEmpty();
            return false;
        }

        public Object getParent(Object element) {
            if (element instanceof SlideShowImpl)
                return SLIDESHOWS;
            if (element instanceof ExhibitionImpl)
                return EXHIBITIONS;
            if (element instanceof WebGalleryImpl)
                return WEBGALLERIES;
            if (element instanceof SmartCollectionImpl) {
                if (((SmartCollectionImpl) element).getAlbum())
                    return ((SmartCollectionImpl) element).getSystem() ? PERSONS : ALBUMS;
                if (((SmartCollectionImpl) element).getSystem())
                    return USERDEFINED;
            }
            return null;
        }

        public Object[] getChildren(Object parentElement) {
            if (parentElement instanceof String)
                return obtainChildren(parentElement).toArray();
            return null;
        }

        private List<IIdentifiableObject> obtainChildren(Object parentElement) {
            List<IIdentifiableObject> children = new ArrayList<IIdentifiableObject>();
            if (parentElement == SLIDESHOWS)
                children.addAll(dbManager.obtainObjects(SlideShowImpl.class));
            else if (parentElement == EXHIBITIONS)
                children.addAll(dbManager.obtainObjects(ExhibitionImpl.class));
            else if (parentElement == WEBGALLERIES)
                children.addAll(
                        dbManager.obtainObjects(WebGalleryImpl.class, "template", false, QueryField.EQUALS)); //$NON-NLS-1$
            else if (parentElement == ALBUMS)
                children.addAll(dbManager.obtainObjects(SmartCollectionImpl.class, false, "album", true, //$NON-NLS-1$
                        QueryField.EQUALS, "system", false, //$NON-NLS-1$
                        QueryField.EQUALS));
            else if (parentElement == PERSONS)
                children.addAll(dbManager.obtainObjects(SmartCollectionImpl.class, false, "album", true, //$NON-NLS-1$
                        QueryField.EQUALS, "system", true, //$NON-NLS-1$
                        QueryField.EQUALS));
            else if (parentElement == USERDEFINED) {
                children.addAll(dbManager.obtainObjects(SmartCollectionImpl.class, false, "album", false, //$NON-NLS-1$
                        QueryField.EQUALS, "system", false, //$NON-NLS-1$
                        QueryField.EQUALS, "group_rootCollection_parent", //$NON-NLS-1$
                        Constants.GROUP_ID_IMPORTS, QueryField.NOTEQUAL));
            }
            return children;
        }
    });
    viewer.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof SlideShowImpl)
                return ((SlideShowImpl) element).getName();
            if (element instanceof ExhibitionImpl)
                return ((ExhibitionImpl) element).getName();
            if (element instanceof WebGalleryImpl)
                return ((WebGalleryImpl) element).getName();
            if (element instanceof SmartCollectionImpl)
                return ((SmartCollectionImpl) element).getName();
            return element.toString();
        }
    });
    viewer.setComparator(ZViewerComparator.INSTANCE);
    UiUtilities.installDoubleClickExpansion(viewer);
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            Object firstElement = ((IStructuredSelection) viewer.getSelection()).getFirstElement();
            if (firstElement instanceof IdentifiableObject)
                selectedItem = (IdentifiableObject) firstElement;
            updateButtons();
        }
    });
    viewer.setInput(ALL);
    return area;
}

From source file:com.bdaum.zoom.ui.internal.dialogs.StructComponent.java

License:Open Source License

@SuppressWarnings("unused")
public StructComponent(IDbManager dbManager, Composite comp, Object value, int type, boolean linesVisible,
        final Map<String, Map<QueryField, Object>> structOverlayMap, FlatGroup radioGroup,
        Set<String> usedObjects, int spareColumns, IDialogSettings settings) {
    this.dbManager = dbManager;
    this.value = value;
    this.type = type;
    this.settings = settings;
    comp.addDisposeListener(this);
    this.structOverlayMap = structOverlayMap;
    this.radioGroup = radioGroup;
    Composite headerGroup = new Composite(comp, SWT.NONE);
    int span = ((GridLayout) comp.getLayout()).numColumns - spareColumns;
    GridData layoutData = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
    layoutData.horizontalSpan = span;/*w w w .  java 2 s  .  c  o  m*/
    headerGroup.setLayoutData(layoutData);
    GridLayout headerLayout = new GridLayout(2, false);
    headerLayout.marginHeight = headerLayout.marginWidth = 0;
    headerGroup.setLayout(headerLayout);
    for (int i = 0; i < spareColumns; i++)
        new Label(comp, SWT.NONE);
    final FilterField filterField = new FilterField(headerGroup);
    filterField.setLayoutData(new GridData(300, SWT.DEFAULT));
    filterField.addModifyListener(new ModifyListener() {
        public void modifyText(ModifyEvent e) {
            update();
        }
    });
    expandCollapseGroup = new ExpandCollapseGroup(headerGroup, SWT.NONE);
    viewer = new TreeViewer(comp, SWT.BORDER | SWT.V_SCROLL | SWT.SINGLE);
    expandCollapseGroup.setViewer(viewer);
    expandCollapseGroup.setVisible(!isFlat());
    viewer.setContentProvider(new StructContentProvider());
    labelProvider = new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof Character)
                return element.toString();
            String structText = getStructText(element, structOverlayMap);
            return (structText != null) ? structText : element.toString();
        }

        @Override
        protected Color getForeground(Object element) {
            if (element instanceof IIdentifiableObject && usedObjects != null
                    && !usedObjects.contains(((IIdentifiableObject) element).getStringId()))
                return viewer.getControl().getDisplay().getSystemColor(SWT.COLOR_RED);
            return super.getForeground(element);
        }
    };
    viewer.setLabelProvider(labelProvider);
    viewer.setComparator(ZViewerComparator.INSTANCE);
    UiUtilities.installDoubleClickExpansion(viewer);
    viewer.setFilters(new ViewerFilter[] { new ViewerFilter() {
        @Override
        public boolean select(Viewer aViewer, Object parentElement, Object element) {
            if (element instanceof Character)
                return true;
            WildCardFilter filter = filterField.getFilter();
            return filter == null || filter.accept(labelProvider.getText(element));
        }
    } });
    layoutData = new GridData(GridData.FILL_BOTH);
    layoutData.heightHint = 200;
    layoutData.horizontalSpan = span;
    viewer.getControl().setLayoutData(layoutData);
    viewer.getTree().setLinesVisible(linesVisible);
}

From source file:com.bdaum.zoom.ui.internal.dialogs.SupplementalCategoryGroup.java

License:Open Source License

@SuppressWarnings("unused")
public SupplementalCategoryGroup(final Composite parent, String[] supplemental) {
    final Map<String, Category> categories = Core.getCore().getDbManager().getMeta(true).getCategory();
    this.supplemental = supplemental;
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    composite.setLayout(new GridLayout(2, false));
    ExpandCollapseGroup expandCollapseGroup = new ExpandCollapseGroup(composite, SWT.NONE);
    new Label(composite, SWT.NONE);
    treeViewer = new TreeViewer(composite, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.SINGLE);
    expandCollapseGroup.setViewer(treeViewer);
    treeViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    treeViewer.setContentProvider(new SupplementalCategoryContentProvider());
    treeViewer.setLabelProvider(new ZColumnLabelProvider() {
        @Override/*w  w  w . j  av a 2 s  .  co  m*/
        public String getText(Object element) {
            if (element instanceof Category)
                return ((Category) element).getLabel();
            return element.toString();
        }
    });
    UiUtilities.installDoubleClickExpansion(treeViewer);
    treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            updateButtons();
        }
    });
    final Composite buttonGroup = new Composite(composite, SWT.NONE);
    buttonGroup.setLayout(new GridLayout());
    buttonGroup.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false));

    addButton = new Button(buttonGroup, SWT.NONE);
    addButton.setText(Messages.SupplementalCategoryGroup_add);
    addButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            EditCategoryDialog inputDialog = new EditCategoryDialog(parent.getShell(), null, categories,
                    supCategories, null, false);
            if (inputDialog.open() == Window.OK) {
                String label = inputDialog.getLabel();
                Category category = new CategoryImpl(label);
                category.setSynonyms(inputDialog.getSynonyms());
                supCategories.add(category);
                treeViewer.setInput(supCategories);
                updateButtons();
            }
        }
    });
    refineButton = new Button(buttonGroup, SWT.NONE);
    refineButton.setText(Messages.SupplementalCategoryGroup_refine);
    refineButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            Category parentNode = (Category) ((IStructuredSelection) treeViewer.getSelection())
                    .getFirstElement();
            EditCategoryDialog inputDialog = new EditCategoryDialog(parent.getShell(), null, categories,
                    supCategories, parentNode, false);
            if (inputDialog.open() == Window.OK) {
                String label = inputDialog.getLabel();
                Category subCategory = new CategoryImpl(label);
                subCategory.setSynonyms(inputDialog.getSynonyms());
                subCategory.setCategory_subCategory_parent(parentNode);
                treeViewer.add(parentNode, subCategory);
                treeViewer.expandToLevel(parentNode, 2);
                updateButtons();
            }
        }
    });
    deleteButton = new Button(buttonGroup, SWT.NONE);
    deleteButton.setText(Messages.SupplementalCategoryGroup_delete);
    deleteButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            Category node = (Category) ((IStructuredSelection) treeViewer.getSelection()).getFirstElement();
            if (node.getCategory_subCategory_parent() == null)
                supCategories.remove(node);
            else
                node.getCategory_subCategory_parent().removeSubCategory(node.getLabel());
            treeViewer.remove(node);
            updateButtons();
        }
    });
    for (String supp : supplemental) {
        Category root = expandCategory(supp);
        if (root != null)
            supCategories.add(root);
    }
    treeViewer.setInput(supCategories);
    updateButtons();
}

From source file:com.bdaum.zoom.ui.internal.dialogs.ViewVocabDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite area = (Composite) super.createDialogArea(parent);
    Composite composite = new Composite(area, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    composite.setLayout(new GridLayout());
    expandCollapseGroup = new ExpandCollapseGroup(composite, SWT.NONE,
            new GridData(SWT.END, SWT.BEGINNING, true, false));
    viewer = new TreeViewer(composite, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
    expandCollapseGroup.setViewer(viewer);
    GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
    layoutData.heightHint = 440;//from  w  w  w  . java  2  s . com
    layoutData.widthHint = 550;
    viewer.getTree().setLayoutData(layoutData);
    viewer.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            return element.toString();
        }

        @Override
        public Image getImage(Object element) {
            if (element instanceof VocabNode && ((VocabNode) element).getCategory())
                return Icons.folder.getImage();
            return null;
        }
    });
    viewer.setContentProvider(new ITreeContentProvider() {
        @Override
        public boolean hasChildren(Object element) {
            if (element instanceof VocabNode)
                return ((VocabNode) element).hasChildren();
            return false;
        }

        @Override
        public Object getParent(Object element) {
            if (element instanceof VocabNode)
                return ((VocabNode) element).getParent();
            return null;
        }

        @Override
        public Object[] getElements(Object inputElement) {
            return getChildren(inputElement);
        }

        @Override
        public Object[] getChildren(Object parentElement) {
            if (parentElement instanceof VocabNode)
                return ((VocabNode) parentElement).getChildren();
            return null;
        }
    });
    viewer.setComparator(new ZViewerComparator() {
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            if (e1 instanceof VocabNode && e2 instanceof VocabNode)
                return UiUtilities.stringComparator.compare(((VocabNode) e1).getLabel(),
                        ((VocabNode) e2).getLabel());
            return super.compare(viewer, e1, e2);
        }
    });
    if (select) {
        viewer.addSelectionChangedListener(new ISelectionChangedListener() {
            @Override
            public void selectionChanged(SelectionChangedEvent event) {
                updateButtons();
            }
        });
        viewer.addDoubleClickListener(new IDoubleClickListener() {
            @Override
            public void doubleClick(DoubleClickEvent event) {
                if (!viewer.getSelection().isEmpty())
                    okPressed();
            }
        });
    } else
        UiUtilities.installDoubleClickExpansion(viewer);
    return area;
}

From source file:com.bdaum.zoom.ui.internal.preferences.HoverPreferencePage.java

License:Open Source License

@SuppressWarnings("unused")
private Composite createTemplatesPage(CTabFolder tabFolder) {
    Composite comp = new Composite(tabFolder, SWT.NONE);
    comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    comp.setLayout(new GridLayout());
    new Label(comp, SWT.WRAP).setText(Messages.getString("HoverPreferencePage.define")); //$NON-NLS-1$
    new Label(comp, SWT.NONE);
    Composite composite = new Composite(comp, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    composite.setLayout(new GridLayout(2, false));
    viewer = new TreeViewer(composite, SWT.BORDER | SWT.V_SCROLL | SWT.SINGLE | SWT.FULL_SELECTION);
    GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
    layoutData.heightHint = 250;//from   w  w w.ja  va  2  s  .c  om
    viewer.getTree().setLayoutData(layoutData);
    viewer.setContentProvider(new ITreeContentProvider() {
        @Override
        public boolean hasChildren(Object element) {
            return element instanceof Category;
        }

        @Override
        public Object getParent(Object element) {
            if (element instanceof HoverNode)
                return ((HoverNode) element).getParent();
            return null;
        }

        @Override
        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof Object[])
                return (Object[]) inputElement;
            return null;
        }

        @Override
        public Object[] getChildren(Object parentElement) {
            if (parentElement instanceof Category)
                return ((Category) parentElement).getChildren().toArray();
            return null;
        }
    });
    viewer.setComparator(new ViewerComparator());
    ZColumnViewerToolTipSupport.enableFor(viewer);
    TreeViewerColumn col1 = new TreeViewerColumn(viewer, SWT.NONE);
    col1.getColumn().setWidth(280);
    col1.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            return element.toString();
        }

        @Override
        public String getToolTipText(Object element) {
            if (element instanceof HoverNode && UiActivator.getDefault().getShowHover())
                return ((HoverNode) element).getContribution().getDescription();
            return super.getToolTipText(element);
        }
    });
    viewer.addDoubleClickListener(this);
    viewer.addSelectionChangedListener(this);
    TreeViewerColumn col2 = new TreeViewerColumn(viewer, SWT.NONE);
    col2.getColumn().setWidth(80);
    col2.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof HoverNode)
                return testForUnModified((HoverNode) element)
                        ? Messages.getString("HoverPreferencePage.default") //$NON-NLS-1$
                        : Messages.getString("HoverPreferencePage.modified"); //$NON-NLS-1$
            return ""; //$NON-NLS-1$
        }
    });
    viewer.addDoubleClickListener(this);
    viewer.addSelectionChangedListener(this);
    Composite buttonArea = new Composite(composite, SWT.NONE);
    buttonArea.setLayoutData(new GridData(SWT.END, SWT.FILL, false, true));
    buttonArea.setLayout(new GridLayout());
    editButton = new Button(buttonArea, SWT.PUSH);
    editButton.setText(Messages.getString("HoverPreferencePage.edit")); //$NON-NLS-1$
    editButton.addListener(SWT.Selection, this);
    resetButton = new Button(buttonArea, SWT.PUSH);
    resetButton.setText(Messages.getString("HoverPreferencePage.reset")); //$NON-NLS-1$
    resetButton.addListener(SWT.Selection, this);
    return comp;
}

From source file:com.bdaum.zoom.ui.internal.preferences.MetadataPreferencePage.java

License:Open Source License

private TreeViewer createTolerancesViewer(Composite comp) {
    ExpandCollapseGroup toleranceExpandCollapseGroup = new ExpandCollapseGroup(comp, SWT.NONE);
    final TreeViewer viewer = new TreeViewer(comp,
            SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
    viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    toleranceExpandCollapseGroup.setViewer(viewer);
    viewer.getTree().setLinesVisible(true);
    TreeViewerColumn col1 = new TreeViewerColumn(viewer, SWT.NONE);
    col1.getColumn().setWidth(250);//from   ww w .  j  a  va  2  s.c om
    col1.setLabelProvider(new MetadataLabelProvider());
    TreeViewerColumn col2 = new TreeViewerColumn(viewer, SWT.NONE);
    col2.getColumn().setWidth(80);
    final ToleranceLabelProvider labelProvider = new ToleranceLabelProvider();
    col2.setLabelProvider(labelProvider);
    col2.setEditingSupport(new EditingSupport(viewer) {
        @Override
        protected void setValue(Object element, Object value) {
            if (element instanceof QueryField) {
                QueryField qfield = (QueryField) element;
                String key = qfield.getKey();
                String s = String.valueOf(value);
                float v;
                if (s.endsWith("%")) //$NON-NLS-1$
                    v = Integer.parseInt(s.substring(0, s.length() - 1).trim());
                else
                    try {
                        af.setMaximumFractionDigits(8);
                        v = -af.parse(s.trim()).floatValue();
                        if (qfield.getType() == QueryField.T_DATE)
                            v = 1000 * v;
                    } catch (ParseException e) {
                        v = 0f;
                    }
                toleranceMap.put(key, v);
                viewer.update(element, null);
            }
        }

        @Override
        protected Object getValue(Object element) {
            String text = labelProvider.getText(element);
            if (text.endsWith(SEC))
                return text.substring(0, text.length() - SEC.length());
            return text;
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            if (element instanceof QueryField) {
                final int type = ((QueryField) element).getType();
                TextCellEditor editor = new TextCellEditor(viewer.getTree());
                editor.setValidator(new ICellEditorValidator() {
                    public String isValid(Object value) {
                        String s = String.valueOf(value);
                        if (s.endsWith("%")) { //$NON-NLS-1$
                            try {
                                if (Integer.parseInt(s.substring(0, s.length() - 1).trim()) < 0)
                                    return Messages.getString("MetadataPreferencePage.must_not_be_negative"); //$NON-NLS-1$
                                if (type == QueryField.T_DATE)
                                    return Messages
                                            .getString("MetadataPreferencePage.percent_not_allowed_for_date"); //$NON-NLS-1$
                                return null;
                            } catch (NumberFormatException e) {
                                return Messages.getString("MetadataPreferencePage.bad_integer"); //$NON-NLS-1$
                            }
                        }
                        if (type == QueryField.T_POSITIVEINTEGER || type == QueryField.T_INTEGER) {
                            try {
                                if (Integer.parseInt(s.substring(0, s.length() - 1).trim()) < 0)
                                    return Messages.getString("MetadataPreferencePage.must_not_be_negative"); //$NON-NLS-1$
                                return null;
                            } catch (NumberFormatException e) {
                                return Messages.getString("MetadataPreferencePage.bad_integer"); //$NON-NLS-1$
                            }
                        } else if (type == QueryField.T_POSITIVELONG || type == QueryField.T_LONG) {
                            try {
                                if (Long.parseLong(s.substring(0, s.length() - 1).trim()) < 0)
                                    return Messages.getString("MetadataPreferencePage.must_not_be_negative"); //$NON-NLS-1$
                                return null;
                            } catch (NumberFormatException e) {
                                return Messages.getString("MetadataPreferencePage.bad_integer"); //$NON-NLS-1$
                            }
                        }
                        try {
                            af.setMaximumFractionDigits(8);
                            if (af.parse(s.trim()).floatValue() < 0)
                                return Messages.getString("MetadataPreferencePage.must_not_be_negative"); //$NON-NLS-1$
                            return null;
                        } catch (ParseException e) {
                            return Messages.getString("MetadataPreferencePage.bad_floating_point"); //$NON-NLS-1$
                        }
                    }
                });
                return editor;
            }
            return null;
        }

        @Override
        protected boolean canEdit(Object element) {
            if (element instanceof QueryField)
                return ((QueryField) element).getTolerance() != 0f;
            return false;
        }
    });
    viewer.setContentProvider(new MetadataContentProvider());
    viewer.setComparator(ZViewerComparator.INSTANCE);
    UiUtilities.installDoubleClickExpansion(viewer);
    viewer.setFilters(new ViewerFilter[] { new ViewerFilter() {
        @Override
        public boolean select(Viewer aViewer, Object parentElement, Object element) {
            if (element instanceof QueryField) {
                QueryField qfield = (QueryField) element;
                return (qfield.hasChildren() || qfield.isUiField())
                        && hostsToleranceValue((QueryField) element);
            }
            return false;
        }

        private boolean hostsToleranceValue(QueryField qfield) {
            if (qfield.getTolerance() != 0f)
                return true;
            for (QueryField child : qfield.getChildren())
                if (hostsToleranceValue(child))
                    return true;
            return false;
        }
    } });
    return viewer;
}

From source file:com.bdaum.zoom.ui.internal.views.AbstractPropertiesView.java

License:Open Source License

/**
 * This is a callback that will allow us to create the viewer and initialize it.
 *//*  www  . j av a  2 s.  c  o  m*/

@SuppressWarnings("unused")
@Override
public void createPartControl(Composite parent) {
    computeFlags();
    if (essentials == null) {
        essentials = new HashSet<QueryField>(100);
        computeEssentials();
    }
    preferenceListener = new IPreferenceChangeListener() {
        public void preferenceChange(PreferenceChangeEvent event) {
            if (PreferenceConstants.ESSENTIALMETADATA.equals(event.getKey())) {
                computeEssentials();
                refreshInternal();
            }
        }
    };
    InstanceScope.INSTANCE.getNode(UiActivator.PLUGIN_ID).addPreferenceChangeListener(preferenceListener);
    viewer = new TreeViewer(parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
    int[] colWidth = getColumnWidths();
    TreeViewerColumn col1 = new TreeViewerColumn(viewer, SWT.NONE);
    final Tree tree = viewer.getTree();
    tree.setLinesVisible(true);
    tree.setHeaderVisible(true);
    final ViewEditingSupport editingSupport = new ViewEditingSupport(viewer);
    col1.getColumn().setWidth(colWidth[0]);
    col1.getColumn().setText(Messages.getString("AbstractPropertiesView.Name")); //$NON-NLS-1$
    col1.setLabelProvider(new MetadataLabelProvider() {
        @Override
        public String getText(Object element) {
            return (editingSupport.canEdit(element)) ? Format.EDITABLEINDICATOR + super.getText(element)
                    : super.getText(element);
        }
    });
    TreeViewerColumn col2 = new TreeViewerColumn(viewer, SWT.NONE);
    col2.getColumn().setWidth(colWidth[1]);
    col2.getColumn().setText(Messages.getString("AbstractPropertiesView.Value")); //$NON-NLS-1$
    col2.setLabelProvider(new ValueColumnLabelProvider());
    col2.setEditingSupport(editingSupport);
    TreeViewerColumn col3 = new TreeViewerColumn(viewer, SWT.NONE);
    col3.getColumn().setWidth(colWidth[2]);
    col3.setLabelProvider(new ActionColumnLabelProvider());
    viewer.setContentProvider(new MetadataContentProvider());
    viewer.setComparator(ZViewerComparator.INSTANCE);
    viewer.setFilters(new ViewerFilter[] { new DetailsViewerFilter(), new ContentTypeViewerFilter() });
    ZColumnViewerToolTipSupport.enableFor(viewer);
    viewer.setInput(getRootElement());
    parent.getDisplay().asyncExec(() -> {
        if (!parent.isDisposed()) {
            if (expandedElements != null) {
                List<QueryField> elements = new ArrayList<QueryField>();
                StringTokenizer st = new StringTokenizer(expandedElements);
                while (st.hasMoreTokens()) {
                    QueryField qf1 = QueryField.findQueryField(st.nextToken());
                    if (qf1 != null)
                        elements.add(qf1);
                }
                viewer.setExpandedElements(elements.toArray());
                expandedElements = null;
            } else
                viewer.expandToLevel(getExpandLevel());
            if (selectedElement != null) {
                QueryField qf2 = QueryField.findQueryField(selectedElement);
                if (qf2 != null)
                    viewer.setSelection(new StructuredSelection(qf2), true);
                selectedElement = null;
            }
        }
    });
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            updateActions(false);
        }
    });
    UiUtilities.installDoubleClickExpansion(viewer);
    tree.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseUp(MouseEvent e) {
            int col = -1;
            int x = e.x;
            for (int i = 0; i < 3; i++) {
                int w = tree.getColumn(i).getWidth();
                if (x < w) {
                    col = i;
                    break;
                }
                x -= w;
            }
            if (col == 2) {
                TreeItem item = tree.getItem(new Point(e.x, e.y));
                Object element = item.getData();
                if (element instanceof QueryField) {
                    QueryField qfield = (QueryField) element;
                    if (qfield.getAction() != QueryField.ACTION_NONE)
                        processAction(qfield, (e.stateMask & SWT.SHIFT) != 0);
                } else if (element instanceof TrackRecord) {
                    String visit = ((TrackRecord) element).getVisit();
                    if (visit != null)
                        showWebUrl(visit);
                }
            }
        }
    });
    new ColumnLayoutManager(viewer, getColumnWidths(), getColumnMaxWidths());
    addKeyListener();
    addGestureListener(tree);
    // Create the help context id for the viewer's control
    PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), HelpContextIds.METADATA_VIEW);
    makeActions();
    installListeners();
    hookContextMenu();
    contributeToActionBars();
    final QueryField.Visitor qfVisitor = new QueryField.Visitor() {
        @Override
        public void doVisitorWork(QueryField node) {
            viewer.refresh(node);
        }
    };
    Core.getCore().addCatalogListener(new CatalogAdapter() {
        @Override
        public void assetsModified(BagChange<Asset> changes, final QueryField node) {
            for (Asset asset : getNavigationHistory().getSelectedAssets()) {
                if (changes == null || changes.hasChanged(asset)) {
                    Shell shell = getSite().getShell();
                    if (shell != null && !shell.isDisposed())
                        shell.getDisplay().asyncExec(() -> {
                            if (!tree.isDisposed()) {
                                resetCaches();
                                if (node != null)
                                    viewer.expandToLevel(node, qfVisitor.visit(node));
                                else
                                    refresh();
                            }
                        });
                    break;
                }
            }
        }
    });
    updateActions(false);
}

From source file:com.bdaum.zoom.ui.internal.views.CatalogView.java

License:Open Source License

@Override
public void createPartControl(final Composite parent) {
    undoContext = new UndoContext() {
        @Override//w w w. ja  v a  2 s . c o m
        public String getLabel() {
            return Messages.getString("CatalogView.catalog_undo_context"); //$NON-NLS-1$
        }
    };
    viewer = new TreeViewer(parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
    drillDownAdapter = new DrillDownAdapter((TreeViewer) viewer);
    viewer.setContentProvider(new CatalogContentProvider());
    viewer.setLabelProvider(new CatalogLabelProvider(this));
    viewer.setFilters(new ViewerFilter[] { colorCodeFilter, userFilter });
    viewer.setComparator(new CatalogComparator());
    viewer.setComparer(IdentifiedElementComparer.getInstance());
    UiUtilities.installDoubleClickExpansion((TreeViewer) viewer);
    ZColumnViewerToolTipSupport.enableFor(viewer);
    PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), HelpContextIds.CATALOG_VIEW);
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(final SelectionChangedEvent event) {
            selectionChanged = true;
            if (viewer.getStructuredSelection().getFirstElement() == WASTEBASKET) {
                try {
                    getSite().getPage().showView(TrashcanView.ID);
                } catch (PartInitException e) {
                    // shouldn't happen
                }
                return;
            }
            if (!settingSelection) {
                cancelJobs(CatalogView.this);
                new SelectionJob(viewer, event).schedule();
            }
            if (cntrlDwn && editItemAction.isEnabled()) {
                if (!settingSelection)
                    editItemAction.run();
                cntrlDwn = false;
            }
        }
    });
    addCtrlKeyListener();
    viewer.addDropSupport(OPERATIONS, allTypes, new CatalogDropTargetListener(viewer.getControl()));
    viewer.addDragSupport(DND.DROP_MOVE, new Transfer[] { selectionTransfer }, new CatalogDragSourceListener());
    addKeyListener();
    Tree tree = ((TreeViewer) viewer).getTree();
    addGestureListener(tree);
    makeActions();
    installListeners();
    hookContextMenu(viewer);
    contributeToActionBars();
    addDragDropClipboard(tree);
    getSite().getWorkbenchWindow().addPerspectiveListener(this);
    Core.getCore().addCatalogListener(new CatalogAdapter() {
        @Override
        public void structureModified() {
            Shell shell = getSite().getShell();
            if (shell != null && !shell.isDisposed())
                shell.getDisplay().asyncExec(() -> {
                    if (!shell.isDisposed())
                        refresh();
                });
        }

        @Override
        public void assetsModified(BagChange<Asset> changes, QueryField node) {
            forceSelectionUpdate();
        }

        @Override
        public void applyRules(Collection<? extends Asset> assets, QueryField node) {
            OperationJob.executeSlaveOperation(
                    new AutoRuleOperation(UiActivator.getDefault().obtainAutoRules(), assets, node),
                    CatalogView.this, false);
        }

        private void forceSelectionUpdate() {
            Shell shell = getSite().getShell();
            if (shell != null && !shell.isDisposed())
                shell.getDisplay().asyncExec(() -> {
                    if (!shell.isDisposed()) {
                        ISelection selection = viewer.getSelection();
                        viewer.setSelection(StructuredSelection.EMPTY);
                        setViewerSelection(selection, true);
                        fireSelection(new SelectionChangedEvent(CatalogView.this, selection));
                    }
                });
        }

        @Override
        public void setCatalogSelection(final ISelection selection, final boolean forceUpdate) {
            try {
                Job.getJobManager().join(CatalogView.this, null);
            } catch (Exception e) {
                // do nothing
            }
            Shell shell = getSite().getShell();
            if (shell != null && !shell.isDisposed())
                shell.getDisplay().asyncExec(() -> {
                    if (!shell.isDisposed())
                        setSelection(selection, forceUpdate);
                });
        }

        @Override
        public void catalogOpened(boolean newDb) {
            Display display = getSite().getShell().getDisplay();
            display.syncExec(() -> BusyIndicator.showWhile(display, () -> {
                structureModified();
                restoreLastSelection();
                catOpen = true;
            }));
        }

        @Override
        public void catalogClosed(int mode) {
            if (mode != CatalogListener.EMERGENCY) {
                saveLastSelection();
                catOpen = false;
            }
        }
    });
    updateActions(viewer.getStructuredSelection(), true);
}