# Class AbstractCodeMining

java.lang.Object
org.eclipse.jface.text.codemining.AbstractCodeMining

All Implemented Interfaces:
  `ICodeMining`

Direct Known Subclasses:
  `DocumentFooterCodeMining, LineContentCodeMining, LineHeaderCodeMining`

public abstract class AbstractCodeMining extends Object implements ICodeMining
Abstract class for `ICodeMining`.

Since:
  3.13

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`AbstractCodeMining(Position position, ICodeMiningProvider provider, Consumer<MouseEvent> action)`
CodeMining constructor to locate the code mining in a given position.

## Method Summary

Modifier and Type
Method
Description
`void`
`dispose()`
Dispose the mining.
`protected CompletableFuture<Void>`
`doResolve(ITextViewer viewer, IProgressMonitor monitor)`
Returns the future which resolved the content of mining and null otherwise.
`Point`
`draw(GC gc, StyledText textWidget, Color color, int x, int y)`
Draw the `getLabel()` of mining with gray color.
`Consumer<MouseEvent>`
`getAction()`
Returns the action to execute when mining is clicked and null otherwise.
`String`
`getLabel()`
Returns the label may be set early in the class lifecycle, or upon completion of the future provided by `ICodeMining.resolve(ITextViewer, IProgressMonitor)` operation.
`Position`
`getPosition()`
Returns the line position where code mining must be displayed in the line spacing area.
`ICodeMiningProvider`
`getProvider()`
Returns the owner provider which has created this mining.
`boolean`
`isResolved()`
Returns whether the content mining is resolved.
`final CompletableFuture<Void>`
`resolve(ITextViewer viewer, IProgressMonitor monitor)`
Returns the future to resolve the content of mining, or `CompletableFuture.completedFuture(Object)` if no such resolution is necessary (in which case {#isResolved()} is expected to return `true`).
`void`
`setLabel(String label)`
Set the label mining.

### Methods inherited from class Object

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

### Methods inherited from interface ICodeMining

`getMouseHover, getMouseMove, getMouseOut`

## Constructor Details

### AbstractCodeMining

protected AbstractCodeMining(Position position, ICodeMiningProvider provider, Consumer<MouseEvent> action)
CodeMining constructor to locate the code mining in a given position.

Parameters:
  `position` - the position where the mining must be drawn.
  `provider` - the owner codemining provider which creates this mining.
  `action` - the action to execute when mining is clicked and null otherwise.

## Method Details

### getPosition

public Position getPosition()
Description copied from interface: `ICodeMining`
Returns the line position where code mining must be displayed in the line spacing area.

Specified by:
  `getPosition` in interface `ICodeMining`
Returns:
  the line position where code mining must be displayed in the line spacing area.

### getProvider

public ICodeMiningProvider getProvider()
Description copied from interface: `ICodeMining`
Returns the owner provider which has created this mining.

Specified by:
  `getProvider` in interface `ICodeMining`
Returns:
  the owner provider which has created this mining.

### getLabel

public String getLabel()
Description copied from interface: `ICodeMining`
Returns the label may be set early in the class lifecycle, or upon completion of the future provided by `ICodeMining.resolve(ITextViewer, IProgressMonitor)` operation.

The returned label can have several values:

- `null` when mining is not resolved
- `null` when mining is resolved means that mining was resolved with an error and it will not be displayed.
- empty when mining is resolved means that mining will not be displayed
- non empty when mining must be displayed

Specified by:
  `getLabel` in interface `ICodeMining`
Returns:
  the label may be set early in the class lifecycle, or upon completion of the future provided by `ICodeMining.resolve(ITextViewer, IProgressMonitor)` operation.

### setLabel

public void setLabel(String label)
Set the label mining.

Parameters:
  `label` - the label mining.

### resolve

public final CompletableFuture<Void> resolve(ITextViewer viewer, IProgressMonitor monitor)
Description copied from interface: `ICodeMining`
Returns the future to resolve the content of mining, or `CompletableFuture.completedFuture(Object)` if no such resolution is necessary (in which case {#isResolved()} is expected to return `true`).

Specified by:
  `resolve` in interface `ICodeMining`
Parameters:
  `viewer` - the viewer, can be null
  `monitor` - the monitor.
Returns:
  the future to resolve the content of mining, or `CompletableFuture.completedFuture(Object)` if no such resolution is necessary (in which case {#isResolved()} is expected to return `true`).

### doResolve

protected CompletableFuture<Void> doResolve(ITextViewer viewer, IProgressMonitor monitor)
Returns the future which resolved the content of mining and null otherwise. By default, the resolve do nothing.

Parameters:
  `viewer` - the viewer
  `monitor` - the monitor
Returns:
  the future which resolved the content of mining and null otherwise.

### isResolved

public boolean isResolved()
Description copied from interface: `ICodeMining`
Returns whether the content mining is resolved. If it is not resolved, {`ICodeMining.resolve(ITextViewer, IProgressMonitor)`} will be invoked later, triggering the future to resolve content.

Specified by:
  `isResolved` in interface `ICodeMining`
Returns:
  whether the content mining is resolved. If it is not resolved, {`ICodeMining.resolve(ITextViewer, IProgressMonitor)`} will be invoked later, triggering the future to resolve content.

### dispose

public void dispose()
Description copied from interface: `ICodeMining`
Dispose the mining. Typically shuts down or cancels all related asynchronous operations.

Specified by:
  `dispose` in interface `ICodeMining`

### draw

public Point draw(GC gc, StyledText textWidget, Color color, int x, int y)
Draw the `getLabel()` of mining with gray color. User can override this method to draw anything.

Specified by:
  `draw` in interface `ICodeMining`
Parameters:
  `gc` - the graphics context
  `textWidget` - the text widget to draw on
  `color` - the color of the line
  `x` - the x position of the annotation
  `y` - the y position of the annotation
Returns:
  the size of the draw of mining.

### getAction

public Consumer<MouseEvent> getAction()
Description copied from interface: `ICodeMining`
Returns the action to execute when mining is clicked and null otherwise.

Specified by:
  `getAction` in interface `ICodeMining`
Returns:
  the action to execute when mining is clicked and null otherwise.