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

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

Introduction

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

Prototype

IElementComparer

Source Link

Usage

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();
        }
    });
}