org.eclipse.handly.ui.search

## Class AbstractHandlySearchResult

- java.lang.Object
- - org.eclipse.search.ui.text.AbstractTextSearchResult
  - - org.eclipse.handly.ui.search.AbstractHandlySearchResult

- All Implemented Interfaces:
    org.eclipse.search.ui.ISearchResult, org.eclipse.search.ui.text.IEditorMatchAdapter, org.eclipse.search.ui.text.IFileMatchAdapter

      public abstract class AbstractHandlySearchResult
      extends org.eclipse.search.ui.text.AbstractTextSearchResult
      implements org.eclipse.search.ui.text.IEditorMatchAdapter, org.eclipse.search.ui.text.IFileMatchAdapter

  A partial implementation of Handly-based search result. Assumes that `matches` are reported against `IElement`s (or elements that can be adapted to `IElement`s via a `content adapter`); also supports matches that are reported against `IResource`s. Implements `getEditorMatchAdapter()` and `getFileMatchAdapter()` methods of `AbstractTextSearchResult` by returning appropriate adapters. An `updater` can be provided at construction time that will update the content of the search result on element change events.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractHandlySearchResult(HandlySearchResultUpdater updater)` Constructs a new `AbstractHandlySearchResult`.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `org.eclipse.search.ui.text.Match[]` | `computeContainedMatches(org.eclipse.search.ui.text.AbstractTextSearchResult result, org.eclipse.ui.IEditorPart editor)`
    `org.eclipse.search.ui.text.Match[]` | `computeContainedMatches(org.eclipse.search.ui.text.AbstractTextSearchResult result, org.eclipse.core.resources.IFile file)`
    `IContentAdapter` | `getContentAdapter()` Returns the content adapter that defines a mapping between `IElement`s and elements of this search result.
    `org.eclipse.search.ui.text.IEditorMatchAdapter` | `getEditorMatchAdapter()`
    `org.eclipse.core.resources.IFile` | `getFile(java.lang.Object element)`
    `org.eclipse.search.ui.text.IFileMatchAdapter` | `getFileMatchAdapter()`
    `protected abstract IInputElementProvider` | `getInputElementProvider()` Returns the input element provider for this search result.
    `boolean` | `isShownInEditor(org.eclipse.search.ui.text.Match match, org.eclipse.ui.IEditorPart editor)`

    - ### Methods inherited from class org.eclipse.search.ui.text.AbstractTextSearchResult

      `addListener, addMatch, addMatches, fireChange, getActiveMatchFilters, getAllMatchFilters, getElements, getMatchCount, getMatchCount, getMatches, removeAll, removeListener, removeMatch, removeMatches, setActiveMatchFilters`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.eclipse.search.ui.ISearchResult

      `getImageDescriptor, getLabel, getQuery, getTooltip`

- - ### Constructor Detail

    - #### AbstractHandlySearchResult

          public AbstractHandlySearchResult(HandlySearchResultUpdater updater)

      Constructs a new `AbstractHandlySearchResult`.
      Parameters:
        `updater` - a search result updater, or `null` if updating is not desired

  - ### Method Detail

    - #### isShownInEditor

          public boolean isShownInEditor(org.eclipse.search.ui.text.Match match,
                                         org.eclipse.ui.IEditorPart editor)

      If the match element is not an `IResource` and could be adapted to an `IElement` through the `content adapter`, this implementation uses the `input element provider` to determine the corresponding `IElement` for the editor input and, if there is such an input `IElement`, returns `true` if and only if the input element `contains` the adapter element. Otherwise, this implementation returns `true` if and only if the corresponding `IResource` (if any) for the match element equals the resource `corresponding` to the editor input. The corresponding resource for the match element is determined as follows:

      - If the match element is an `IResource`, the corresponding resource is the element itself.
      - Otherwise, if the match element could be adapted to an `IElement` through the `content adapter`, the corresponding resource is obtained via `Elements.getResource(IElement)`.
      Specified by:
        `isShownInEditor` in interface `org.eclipse.search.ui.text.IEditorMatchAdapter`

    - #### computeContainedMatches

          public org.eclipse.search.ui.text.Match[] computeContainedMatches(org.eclipse.search.ui.text.AbstractTextSearchResult result,
                                                                            org.eclipse.ui.IEditorPart editor)

      If the editor input could be adapted to an `IFile`, this implementation collects all matches reported against the file, as returned by `AbstractTextSearchResult.getMatches(Object)`. In addition, this implementation uses the `input element provider` to determine the corresponding `IElement` for the editor input and collects all matches reported against elements that correspond to the `IElement` and any of its descendant elements (the corresponding elements are determined via the `getCorrespondingElement(IElement)` method of the `content adapter`).

      Specified by:
        `computeContainedMatches` in interface `org.eclipse.search.ui.text.IEditorMatchAdapter`

    - #### computeContainedMatches

          public org.eclipse.search.ui.text.Match[] computeContainedMatches(org.eclipse.search.ui.text.AbstractTextSearchResult result,
                                                                            org.eclipse.core.resources.IFile file)

      This implementation collects all matches reported against the given file itself, as returned by `AbstractTextSearchResult.getMatches(Object)`. In addition, this implementation uses the `input element provider` to determine the corresponding `IElement` for the given file and collects all matches reported against elements that correspond to the `IElement` and any of its descendant elements (the corresponding elements are determined via the `getCorrespondingElement(IElement)` method of the `content adapter`).

      Specified by:
        `computeContainedMatches` in interface `org.eclipse.search.ui.text.IFileMatchAdapter`

    - #### getFile

          public org.eclipse.core.resources.IFile getFile(java.lang.Object element)

      If the given element has a corresponding resource that is an `IFile`, this implementation returns the file. The corresponding resource is determined as follows:

      - If the given element is an `IResource`, the corresponding resource is the element itself.
      - Otherwise, if the given element could be adapted to an `IElement` through the `content adapter`, the corresponding resource is obtained via `Elements.getResource(IElement)`.
      Specified by:
        `getFile` in interface `org.eclipse.search.ui.text.IFileMatchAdapter`

    - #### getEditorMatchAdapter

          public org.eclipse.search.ui.text.IEditorMatchAdapter getEditorMatchAdapter()

      This implementation returns this search result, which implements `IEditorMatchAdapter`.

      Specified by:
        `getEditorMatchAdapter` in class `org.eclipse.search.ui.text.AbstractTextSearchResult`

    - #### getFileMatchAdapter

          public org.eclipse.search.ui.text.IFileMatchAdapter getFileMatchAdapter()

      This implementation returns this search result, which implements `IFileMatchAdapter`.

      Specified by:
        `getFileMatchAdapter` in class `org.eclipse.search.ui.text.AbstractTextSearchResult`

    - #### getContentAdapter

          public IContentAdapter getContentAdapter()

      Returns the content adapter that defines a mapping between `IElement`s and elements of this search result.

      Default implementation returns a `NullContentAdapter`. Subclasses may override.

      Returns:
        an `IContentAdapter` (never `null`)

    - #### getInputElementProvider

          protected abstract IInputElementProvider getInputElementProvider()

      Returns the input element provider for this search result.
      Returns:
        the input element provider

Copyright (c) 2014, 2020 1C-Soft LLC and others. Made available under the Eclipse Public License 2.0