List of usage examples for org.eclipse.jface.viewers IElementComparer IElementComparer
IElementComparer
From source file:com.android.ide.eclipse.adt.internal.editors.layout.gle2.OutlinePage.java
License:Open Source License
private void createOutline(Composite parent) { if (AdtUtils.isEclipse4()) { // This is a workaround for the focus behavior in Eclipse 4 where // the framework ends up calling setFocus() on the first widget in the outline // AFTER a mouse click has been received. Specifically, if the user clicks in // the embedded property sheet to for example give a Text property editor focus, // then after the mouse click, the Outline window activation event is processed, // and this event causes setFocus() to be called first on the PageBookView (which // ends up calling setFocus on the first control, normally the TreeViewer), and // then on the Page itself. We're dealing with the page setFocus() in the override // of that method in the class, such that it does nothing. // However, we have to also disable the setFocus on the first control in the // outline page. To deal with that, we create our *own* first control in the // outline, and make its setFocus() a no-op. We also make it invisible, since we // don't actually want anything but the tree viewer showing in the outline. Text text = new Text(parent, SWT.NONE) { @Override//from www. j a v a2 s . c om public boolean setFocus() { // Focus no-op return true; } @Override protected void checkSubclass() { // Disable the check that prevents subclassing of SWT components } }; text.setVisible(false); } super.createControl(parent); TreeViewer tv = getTreeViewer(); tv.setAutoExpandLevel(2); tv.setContentProvider(new ContentProvider()); tv.setLabelProvider(new LabelProvider()); tv.setInput(mRootWrapper); tv.expandToLevel(mRootWrapper.getRoot(), 2); int supportedOperations = DND.DROP_COPY | DND.DROP_MOVE; Transfer[] transfers = new Transfer[] { SimpleXmlTransfer.getInstance() }; tv.addDropSupport(supportedOperations, transfers, new OutlineDropListener(this, tv)); tv.addDragSupport(supportedOperations, transfers, new OutlineDragListener(this, tv)); // The tree viewer will hold CanvasViewInfo instances, however these // change each time the canvas is reloaded. OTOH layoutlib gives us // constant UiView keys which we can use to perform tree item comparisons. tv.setComparer(new IElementComparer() { @Override public int hashCode(Object element) { if (element instanceof CanvasViewInfo) { UiViewElementNode key = ((CanvasViewInfo) element).getUiViewNode(); if (key != null) { return key.hashCode(); } } if (element != null) { return element.hashCode(); } return 0; } @Override public boolean equals(Object a, Object b) { if (a instanceof CanvasViewInfo && b instanceof CanvasViewInfo) { UiViewElementNode keyA = ((CanvasViewInfo) a).getUiViewNode(); UiViewElementNode keyB = ((CanvasViewInfo) b).getUiViewNode(); if (keyA != null) { return keyA.equals(keyB); } } if (a != null) { return a.equals(b); } return false; } }); tv.addDoubleClickListener(new IDoubleClickListener() { @Override public void doubleClick(DoubleClickEvent event) { // This used to open the property view, but now that properties are docked // let's use it for something else -- such as showing the editor source /* // Front properties panel; its selection is already linked IWorkbenchPage page = getSite().getPage(); try { page.showView(IPageLayout.ID_PROP_SHEET, null, IWorkbenchPage.VIEW_ACTIVATE); } catch (PartInitException e) { AdtPlugin.log(e, "Could not activate property sheet"); } */ TreeItem[] selection = getTreeViewer().getTree().getSelection(); if (selection.length > 0) { CanvasViewInfo vi = getViewInfo(selection[0].getData()); if (vi != null) { LayoutCanvas canvas = mGraphicalEditorPart.getCanvasControl(); canvas.show(vi); } } } }); setupContextMenu(); // Listen to selection changes from the layout editor getSite().getPage().addSelectionListener(this); getControl().addDisposeListener(new DisposeListener() { @Override public void widgetDisposed(DisposeEvent e) { dispose(); } }); Tree tree = tv.getTree(); tree.addKeyListener(new KeyListener() { @Override public void keyPressed(KeyEvent e) { if (e.character == '-') { if (mMoveUpAction.isEnabled()) { mMoveUpAction.run(); } } else if (e.character == '+') { if (mMoveDownAction.isEnabled()) { mMoveDownAction.run(); } } } @Override public void keyReleased(KeyEvent e) { } }); setupTooltip(); }
From source file:com.android.ide.eclipse.adt.internal.editors.layout.gle2.OutlinePage2.java
License:Open Source License
@Override public void createControl(Composite parent) { super.createControl(parent); TreeViewer tv = getTreeViewer();//from www . ja v a 2 s.co m tv.setAutoExpandLevel(2); tv.setContentProvider(new ContentProvider()); tv.setLabelProvider(new LabelProvider()); tv.setInput(mRootWrapper); // The tree viewer will hold CanvasViewInfo instances, however these // change each time the canvas is reloaded. OTOH liblayout gives us // constant UiView keys which we can use to perform tree item comparisons. tv.setComparer(new IElementComparer() { public int hashCode(Object element) { if (element instanceof CanvasViewInfo) { UiViewElementNode key = ((CanvasViewInfo) element).getUiViewKey(); if (key != null) { return key.hashCode(); } } if (element != null) { return element.hashCode(); } return 0; } public boolean equals(Object a, Object b) { if (a instanceof CanvasViewInfo && b instanceof CanvasViewInfo) { UiViewElementNode keyA = ((CanvasViewInfo) a).getUiViewKey(); UiViewElementNode keyB = ((CanvasViewInfo) b).getUiViewKey(); if (keyA != null) { return keyA.equals(keyB); } } if (a != null) { return a.equals(b); } return false; } }); // Listen to selection changes from the layout editor getSite().getPage().addSelectionListener(this); }
From source file:com.aptana.editor.common.outline.CommonQuickOutlinePage.java
License:Open Source License
/** * createTreeViewer/*from w ww . ja v a2s. c o m*/ * * @param parent * @return TreeViewer */ private TreeViewer createTreeViewer(Composite parent) { TreeViewer result = new TreeViewer(new Tree(parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL)); Tree tree = result.getTree(); GridData gd = new GridData(GridData.FILL_BOTH); gd.heightHint = tree.getItemHeight() * 12; tree.setLayoutData(gd); result.setLabelProvider(_editor.getOutlineLabelProvider()); result.setContentProvider(_editor.getOutlineContentProvider()); result.setInput(this._editor); result.setComparer(new IElementComparer() { /** * @see org.eclipse.jface.viewers.IElementComparer#equals(java.lang.Object, java.lang.Object) */ public boolean equals(Object a, Object b) { boolean result = false; if (a instanceof CommonOutlineItem && b instanceof CommonOutlineItem) { CommonOutlineItem item1 = (CommonOutlineItem) a; CommonOutlineItem item2 = (CommonOutlineItem) b; result = item1.equals(item2); } else if (a instanceof IParseNode && b instanceof IParseNode) { if (a == b) { result = true; } else { IParseNode node1 = (IParseNode) a; IParseNode node2 = (IParseNode) b; result = node1.equals(node2); } } else { result = (a == b); } return result; } /** * @see org.eclipse.jface.viewers.IElementComparer#hashCode(java.lang.Object) */ public int hashCode(Object element) { return 0; } }); return result; }
From source file:com.aptana.ide.views.model.ModelContributer.java
License:Open Source License
/** * @see com.aptana.ide.editors.unified.ContributedOutline#createControl(org.eclipse.swt.widgets.Composite) *///from w w w . j a va 2s . co m public void createControl(Composite parent) { this._treeViewer = new TreeViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.SINGLE); Tree tree = this._treeViewer.getTree(); tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); tree.setLayout(new GridLayout(1, true)); this._treeViewer.setLabelProvider(new ModelLabelProvider()); this._treeViewer.setAutoExpandLevel(1); this._treeViewer.setContentProvider(new ModelContentProvider()); this._treeViewer.setComparer(new IElementComparer() { public boolean equals(Object a, Object b) { boolean result = false; if (a instanceof Reference && b instanceof Reference) { Reference ref1 = (Reference) a; Reference ref2 = (Reference) b; result = ref1.getPropertyName().equals(ref2.getPropertyName()); } else { result = (a == b); } return result; } public int hashCode(Object element) { return 0; } }); TreeItem item = new TreeItem(tree, SWT.NONE); item.setText(Messages.getString("ModelContributer.Select_model_tab_to_load_outline")); //$NON-NLS-1$ refresh(); }
From source file:com.aptana.ide.views.outline.UnifiedOutlinePage.java
License:Open Source License
/** * createTreeViewer/*from ww w .j ava 2s . c o m*/ * * @param parent * @return TreeViewer */ private TreeViewer createTreeViewer(Composite parent, PatternFilter filter) { FilteredTree tree = null; try { // When available (3.5+) use new constructor Constructor<FilteredTree> cons = FilteredTree.class.getConstructor(Composite.class, int.class, PatternFilter.class, boolean.class); tree = cons.newInstance(parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL, filter, true); } catch (Exception e) { // fallback to deprecated old constructor when new one not available tree = new FilteredTree(parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL, filter); } TreeViewer result = tree.getViewer(); outlineProvider = UnifiedOutlineProvider.getInstance(); outlineProvider.setOutlinePage(this); result.setLabelProvider(outlineProvider); result.setContentProvider(outlineProvider); result.setInput(this._editor); // add selection changed listener result.addSelectionChangedListener(new ISelectionChangedListener() { /** * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent) */ public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); if (selection.size() == 1) { Object item = selection.getFirstElement(); if (item != null && item instanceof OutlineItem) { OutlineItem outlineItem = (OutlineItem) selection.getFirstElement(); // Only select and reveal in editor if the tree viewer is focused meaning the selection // originated from a user selection on the tree itself // move cursor to start of this item's text if (_treeViewer != null && _treeViewer.getTree() != null && !_treeViewer.getTree().isDisposed() && _treeViewer.getTree().isFocusControl()) { _editor.selectAndReveal(outlineItem.getStartingOffset(), 0); } // TODO: activate the editor window // Note this code works, but should only be called on mouse clicks so users can // navigate through outline items using the keyboard // IWorkbenchWindow window = JSPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow(); // // if (window != null) // { // IWorkbenchPage page = window.getActivePage(); // // page.activate(_editor); // } } } } }); result.setComparer(new IElementComparer() { /** * @see org.eclipse.jface.viewers.IElementComparer#equals(java.lang.Object, java.lang.Object) */ public boolean equals(Object a, Object b) { boolean result = false; if (a instanceof OutlineItem && b instanceof OutlineItem) { OutlineItem item1 = (OutlineItem) a; OutlineItem item2 = (OutlineItem) b; result = item1.equals(item2); } else if (a instanceof IParseNode && b instanceof IParseNode) { if (a == b) { result = true; } else { IParseNode node1 = (IParseNode) a; IParseNode node2 = (IParseNode) b; String path1 = node1.getUniquePath(); String path2 = node2.getUniquePath(); result = path1.equals(path2); } } else { result = (a == b); } return result; } /** * @see org.eclipse.jface.viewers.IElementComparer#hashCode(java.lang.Object) */ public int hashCode(Object element) { return 0; } }); return result; }
From source file:com.aptana.ide.views.outline.UnifiedQuickOutlinePage.java
License:Open Source License
/** * createTreeViewer//w ww. j a v a2 s . c om * * @param parent * @return TreeViewer */ private TreeViewer createTreeViewer(Composite parent) { TreeViewer result = new TreeViewer(new Tree(parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL)); //outlineProvider = UnifiedOutlineProvider.getInstance(); outlineProvider = createProvider(); result.setLabelProvider(outlineProvider); result.setContentProvider(outlineProvider); result.setInput(this._editor); // add selection changed listener result.addSelectionChangedListener(new ISelectionChangedListener() { /** * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent) */ public void selectionChanged(SelectionChangedEvent event) { // IStructuredSelection selection = (IStructuredSelection) event.getSelection(); // // if (selection.size() == 1) // { // Object item = selection.getFirstElement(); // // if (item != null && item instanceof OutlineItem) // { // OutlineItem outlineItem = (OutlineItem) selection.getFirstElement(); // // // Only select and reveal in editor if the tree viewer is focused meaning the selection // // originated from a user selection on the tree itself // // // move cursor to start of this item's text // if (_treeViewer != null && _treeViewer.getTree() != null && !_treeViewer.getTree().isDisposed() // && _treeViewer.getTree().isFocusControl()) // { // _editor.selectAndReveal(outlineItem.getStartingOffset(), 0); // } // } // } } }); result.setComparer(new IElementComparer() { /** * @see org.eclipse.jface.viewers.IElementComparer#equals(java.lang.Object, java.lang.Object) */ public boolean equals(Object a, Object b) { boolean result = false; if (a instanceof OutlineItem && b instanceof OutlineItem) { OutlineItem item1 = (OutlineItem) a; OutlineItem item2 = (OutlineItem) b; result = item1.equals(item2); } else if (a instanceof IParseNode && b instanceof IParseNode) { if (a == b) { result = true; } else { IParseNode node1 = (IParseNode) a; IParseNode node2 = (IParseNode) b; String path1 = node1.getUniquePath(); String path2 = node2.getUniquePath(); result = path1.equals(path2); } } else { result = (a == b); } return result; } /** * @see org.eclipse.jface.viewers.IElementComparer#hashCode(java.lang.Object) */ public int hashCode(Object element) { return 0; } }); return result; }
From source file:com.mentor.nucleus.bp.core.ui.tree.ModelCheckedTreeViewer.java
License:Open Source License
public void initialize() { setUseHashlookup(true);/*from w w w . j a va2s . c o m*/ setComparer(new IElementComparer() { public int hashCode(Object element) { return System.identityHashCode(element); } public boolean equals(Object a, Object b) { return a == b; } }); setInput(Ooaofooa.getDefaultInstance()); addCheckStateListener(new ICheckStateListener() { public void checkStateChanged(CheckStateChangedEvent event) { handleCheckStateChanged(event); } }); addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { handleSelectionChanged(event); } }); // store original selection fOriginalSelection = fSelection.getStructuredSelection(); fSelection.clear(); // initialize check marks if (linkedWithSelection) initializeCheckedObjects(); }
From source file:com.microsoft.tfs.client.common.ui.controls.connect.CrossCollectionProjectTable.java
License:Open Source License
public CrossCollectionProjectTable(final Composite parent, final int style, boolean showAccountColumn) { super(parent, (SWT.FULL_SELECTION | style), CrossCollectionProjectInfo.class, null); this.showAccountColumn = showAccountColumn; final TableColumnData[] columnData = new TableColumnData[2]; columnData[0] = new TableColumnData(Messages.getString("CrossCollectionProjectTable.ProjectColumnHeader"), //$NON-NLS-1$ -1, 0.50F, PROJECT_COLUMN);/* w w w . j a va 2 s. c o m*/ if (showAccountColumn) { columnData[1] = new TableColumnData( Messages.getString("CrossCollectionProjectTable.AccountColumnHeader"), //$NON-NLS-1$ -1, 0.50F, ACCOUNT_COLUMN); } else { columnData[1] = new TableColumnData( Messages.getString("CrossCollectionProjectTable.CollectionColumnHeader"), //$NON-NLS-1$ -1, 0.50F, COLLECTION_COLUMN); } setupTable(true, false, columnData); setUseDefaultContentProvider(); setUseDefaultLabelProvider(); setEnableTooltips(false); final TableViewerSorter sorter = new TableViewerSorter(getViewer()); sorter.setComparator(PROJECT_COLUMN, new Comparator<CrossCollectionProjectInfo>() { @Override public int compare(final CrossCollectionProjectInfo o1, final CrossCollectionProjectInfo o2) { return o1.getName().compareToIgnoreCase(o2.getName()); } }); getViewer().setSorter(sorter); getViewer().setComparer(new IElementComparer() { @Override public boolean equals(final Object a, final Object b) { if (a instanceof CrossCollectionProjectInfo && b instanceof CrossCollectionProjectInfo) { return ((CrossCollectionProjectInfo) a).getGUID() .equals(((CrossCollectionProjectInfo) b).getGUID()); } return a.equals(b); } @Override public int hashCode(final Object element) { if (element instanceof CrossCollectionProjectInfo) { return ((CrossCollectionProjectInfo) element).getGUID().hashCode(); } return element.hashCode(); } }); }
From source file:com.microsoft.tfs.client.common.ui.controls.TeamProjectTable.java
License:Open Source License
public TeamProjectTable(final Composite parent, final int style, final boolean showIcons) { super(parent, (SWT.CHECK | style), ProjectInfo.class, null); final TableColumnData[] columnData = new TableColumnData[] { new TableColumnData( Messages.getString("TeamProjectTable.ColumnNameProject"), 100, 1.00F, PROJECT_COLUMN), //$NON-NLS-1$ };//from w ww .ja v a 2s .co m setupTable(false, false, columnData); final TableViewerColumn projectColumnViewer = new TableViewerColumn(getViewer(), SWT.None, 0); projectColumnViewer.setLabelProvider(new ProjectColumnLabelProvider(showIcons)); setUseDefaultContentProvider(); setEnableTooltips(false); /* * Ensure the select all item sorts first. */ final TableViewerSorter sorter = new TableViewerSorter(getViewer()); sorter.setCategoryProvider(new CategoryProvider() { @Override public int getCategory(final Object element) { if (element == SELECT_ALL_SPECIAL_PROJECT_INFO) { return 0; } return 1; } }); sorter.setComparator(PROJECT_COLUMN, new Comparator<ProjectInfo>() { @Override public int compare(final ProjectInfo o1, final ProjectInfo o2) { if (o1 == SELECT_ALL_SPECIAL_PROJECT_INFO) { return -1; } if (o2 == SELECT_ALL_SPECIAL_PROJECT_INFO) { return 1; } return o1.getName().compareToIgnoreCase(o2.getName()); } }); getViewer().setSorter(sorter); getViewer().setComparer(new IElementComparer() { @Override public boolean equals(final Object a, final Object b) { if (a instanceof ProjectInfo && b instanceof ProjectInfo) { return ((ProjectInfo) a).getGUID().equals(((ProjectInfo) b).getGUID()); } return a.equals(b); } @Override public int hashCode(final Object element) { if (element instanceof ProjectInfo) { return ((ProjectInfo) element).getGUID().hashCode(); } return element.toString().hashCode(); } }); ((CheckboxTableViewer) getViewer()).addCheckStateListener(new ICheckStateListener() { @Override public void checkStateChanged(final CheckStateChangedEvent event) { final CheckboxTableViewer viewer = (CheckboxTableViewer) getViewer(); /* * "Select all" item was checked: apply check state to all the * other elements. */ if (event.getElement().equals(SELECT_ALL_SPECIAL_PROJECT_INFO)) { if (event.getChecked()) { setCheckedElements(removeNotValidVC(getProjects())); } else { setCheckedElements(new ProjectInfo[0]); } } else { if (!hasValidVC(event.getElement())) { viewer.setChecked(event.getElement(), false); setCheckedElements(removeNotValidVC(getCheckedElements())); } } updateSelectAllCheckState(); } }); }
From source file:com.microsoft.tfs.client.eclipse.ui.egit.importwizard.CrossCollectionRepositoryTable.java
License:Open Source License
public CrossCollectionRepositoryTable(final Composite parent, final int style) { super(parent, (SWT.FULL_SELECTION | style), CrossCollectionProjectInfo.class, null); final TableColumnData[] columnData = new TableColumnData[] { new TableColumnData(Messages.getString("CrossCollectionRepositoryTable.RepositoryColumnHeader"), //$NON-NLS-1$ -1, 0.25F, REPO_COLUMN), new TableColumnData(Messages.getString("CrossCollectionRepositoryTable.ProjectColumnHeader"), //$NON-NLS-1$ -1, 0.25F, PROJECT_COLUMN), new TableColumnData(Messages.getString("CrossCollectionRepositoryTable.UriColumnHeader"), //$NON-NLS-1$ -1, 0.50F, URI_COLUMN) }; setupTable(true, false, columnData); setUseDefaultContentProvider();/* w w w.j a va 2 s .c o m*/ setUseDefaultLabelProvider(); setEnableTooltips(false); /* * Ensure the select all item sorts first. */ final TableViewerSorter sorter = new TableViewerSorter(getViewer()); sorter.setComparator(REPO_COLUMN, new Comparator<CrossCollectionRepositoryInfo>() { @Override public int compare(final CrossCollectionRepositoryInfo o1, final CrossCollectionRepositoryInfo o2) { return o1.getRepositoryName().compareToIgnoreCase(o2.getRepositoryName()); } }); getViewer().setSorter(sorter); getViewer().setComparer(new IElementComparer() { @Override public boolean equals(final Object a, final Object b) { if (a instanceof CrossCollectionRepositoryInfo && b instanceof CrossCollectionRepositoryInfo) { return ((CrossCollectionRepositoryInfo) a).getRepositoryGUID() .equals(((CrossCollectionRepositoryInfo) b).getRepositoryGUID()); } return a.equals(b); } @Override public int hashCode(final Object element) { if (element instanceof CrossCollectionRepositoryInfo) { return ((CrossCollectionRepositoryInfo) element).getRepositoryGUID().hashCode(); } return element.hashCode(); } }); }