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