mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2024-11-24 13:11:47 +00:00
Merge remote-tracking branch 'origin/drgaonmacher-GT-2716' into Ghidra_9.0.2
This commit is contained in:
commit
8dd29af64b
@ -1,6 +1,5 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@ -16,6 +15,7 @@
|
||||
*/
|
||||
package ghidra.app.util.viewer.field;
|
||||
|
||||
import docking.widgets.fieldpanel.field.Field;
|
||||
import docking.widgets.fieldpanel.support.Highlight;
|
||||
import docking.widgets.fieldpanel.support.HighlightFactory;
|
||||
import ghidra.app.util.HighlightProvider;
|
||||
@ -30,26 +30,22 @@ public class FieldHighlightFactory implements HighlightFactory {
|
||||
private HighlightProvider provider;
|
||||
private Class<? extends FieldFactory> fieldFactoryClass;
|
||||
private Object obj;
|
||||
|
||||
|
||||
/**
|
||||
* Constructs a new FieldHighlightFactory.
|
||||
* @param provider the HighlightProvider that will actually compute the highlights.
|
||||
* @param fieldFactoryClass the class of the field factory that generated the field to be rendered.
|
||||
* @param obj the object that holds the information that will be rendered (usually a code unit)
|
||||
*/
|
||||
public FieldHighlightFactory(HighlightProvider provider, Class<? extends FieldFactory> fieldFactoryClass, Object obj) {
|
||||
public FieldHighlightFactory(HighlightProvider provider,
|
||||
Class<? extends FieldFactory> fieldFactoryClass, Object obj) {
|
||||
this.provider = provider;
|
||||
this.fieldFactoryClass = fieldFactoryClass;
|
||||
this.obj = obj;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the highlights for the given text.
|
||||
* @param text the text to be considered for highlighting.
|
||||
* @return an array of highlights to be rendered.
|
||||
*/
|
||||
public Highlight[] getHighlights(String text, int cursorTextOffset) {
|
||||
|
||||
@Override
|
||||
public Highlight[] getHighlights(Field field, String text, int cursorTextOffset) {
|
||||
return provider.getHighlights(text, obj, fieldFactoryClass, cursorTextOffset);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -51,7 +51,8 @@ public class OptionsGui extends JPanel {
|
||||
private static final Color DARK_ORANGE = new Color(255, 128, 0);
|
||||
private static final Color DARK_RED = new Color(130, 0, 75);
|
||||
private static final Highlight[] NO_HIGHLIGHTS = new Highlight[0];
|
||||
private static final HighlightFactory hlFactory = (text, cursorTextOffset) -> NO_HIGHLIGHTS;
|
||||
private static final HighlightFactory hlFactory =
|
||||
(field, text, cursorTextOffset) -> NO_HIGHLIGHTS;
|
||||
|
||||
public static final ScreenElement COMMENT_AUTO =
|
||||
new ScreenElement("Comment, Automatic", Color.LIGHT_GRAY);
|
||||
|
@ -15,8 +15,6 @@
|
||||
*/
|
||||
package ghidra.app.plugin.core.byteviewer;
|
||||
|
||||
import ghidra.util.ColorUtils;
|
||||
|
||||
import java.awt.*;
|
||||
import java.math.BigInteger;
|
||||
|
||||
@ -28,6 +26,7 @@ import docking.widgets.fieldpanel.internal.FieldBackgroundColorManager;
|
||||
import docking.widgets.fieldpanel.internal.PaintContext;
|
||||
import docking.widgets.fieldpanel.support.HighlightFactory;
|
||||
import docking.widgets.fieldpanel.support.RowColLocation;
|
||||
import ghidra.util.ColorUtils;
|
||||
|
||||
/**
|
||||
* Fields for the ByteViewer. This class extends the SimpleTextField to include
|
||||
@ -52,7 +51,8 @@ public class ByteField extends SimpleTextField {
|
||||
* @param hlFactory the factory used to create highlights
|
||||
*/
|
||||
public ByteField(String text, FontMetrics fontMetrics, int startX, int width,
|
||||
boolean allowCursorAtEnd, int fieldOffset, BigInteger index, HighlightFactory hlFactory) {
|
||||
boolean allowCursorAtEnd, int fieldOffset, BigInteger index,
|
||||
HighlightFactory hlFactory) {
|
||||
|
||||
super(text, fontMetrics, startX, width, allowCursorAtEnd, hlFactory);
|
||||
this.fieldOffset = fieldOffset;
|
||||
@ -64,7 +64,7 @@ public class ByteField extends SimpleTextField {
|
||||
public void paint(JComponent c, Graphics g, PaintContext context,
|
||||
FieldBackgroundColorManager colorManager, RowColLocation cursorLoc, int rowHeight) {
|
||||
paintSelection(g, colorManager, 0);
|
||||
paintHighlights(g, hlFactory.getHighlights(text, -1));
|
||||
paintHighlights(g, hlFactory.getHighlights(this, text, -1));
|
||||
g.setFont(metrics.getFont());
|
||||
if (foregroundColor == null) {
|
||||
foregroundColor = context.getForeground();
|
||||
|
@ -213,7 +213,7 @@ class FieldFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Highlight[] getHighlights(String text, int cursorTextOffset) {
|
||||
public Highlight[] getHighlights(Field field, String text, int cursorTextOffset) {
|
||||
return provider.getHighlights(text, null, null, -1);
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@ -16,8 +15,6 @@
|
||||
*/
|
||||
package ghidra.app.plugin.core.byteviewer;
|
||||
|
||||
import ghidra.app.plugin.core.format.ByteBlockInfo;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.FontMetrics;
|
||||
import java.math.BigInteger;
|
||||
@ -26,6 +23,7 @@ import docking.widgets.fieldpanel.field.Field;
|
||||
import docking.widgets.fieldpanel.field.SimpleTextField;
|
||||
import docking.widgets.fieldpanel.support.Highlight;
|
||||
import docking.widgets.fieldpanel.support.HighlightFactory;
|
||||
import ghidra.app.plugin.core.format.ByteBlockInfo;
|
||||
|
||||
/**
|
||||
* Implementation for the index/address field.
|
||||
@ -145,7 +143,7 @@ class IndexFieldFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Highlight[] getHighlights(String text, int cursorTextOffset) {
|
||||
public Highlight[] getHighlights(Field field, String text, int cursorTextOffset) {
|
||||
return NO_HIGHLIGHTS;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@ -197,4 +198,8 @@ public class ClangTextField extends WrappingVerticalLayoutTextField {
|
||||
return lineNumberFieldElement.getStringWidth();
|
||||
}
|
||||
|
||||
public int getLineNumber() {
|
||||
String text = lineNumberFieldElement.getText().trim();
|
||||
return Integer.parseInt(text);
|
||||
}
|
||||
}
|
||||
|
@ -37,6 +37,7 @@ import docking.widgets.indexedscrollpane.IndexedScrollPane;
|
||||
import ghidra.app.decompiler.*;
|
||||
import ghidra.app.decompiler.component.hover.DecompilerHoverService;
|
||||
import ghidra.app.plugin.core.decompile.DecompileClipboardProvider;
|
||||
import ghidra.app.plugin.core.decompile.actions.FieldBasedSearchLocation;
|
||||
import ghidra.program.model.address.*;
|
||||
import ghidra.program.model.listing.Function;
|
||||
import ghidra.program.model.listing.Program;
|
||||
@ -174,6 +175,9 @@ public class DecompilerPanel extends JPanel implements FieldMouseListener, Field
|
||||
if (clipboard != null) {
|
||||
clipboard.selectionChanged(null);
|
||||
}
|
||||
|
||||
// don't highlight search results across functions
|
||||
currentSearchLocation = null;
|
||||
}
|
||||
|
||||
private void setLocation(DecompileData oldData, DecompileData newData) {
|
||||
@ -699,9 +703,21 @@ public class DecompilerPanel extends JPanel implements FieldMouseListener, Field
|
||||
}
|
||||
|
||||
class SearchHighlightFactory implements HighlightFactory {
|
||||
|
||||
@Override
|
||||
public Highlight[] getHighlights(String text, int cursorTextOffset) {
|
||||
if (currentSearchLocation == null || cursorTextOffset == -1) {
|
||||
public Highlight[] getHighlights(Field field, String text, int cursorTextOffset) {
|
||||
if (currentSearchLocation == null) {
|
||||
return new Highlight[0];
|
||||
}
|
||||
|
||||
ClangTextField cField = (ClangTextField) field;
|
||||
int highlightLine = cField.getLineNumber();
|
||||
|
||||
FieldLocation searchCursorLocation =
|
||||
((FieldBasedSearchLocation) currentSearchLocation).getFieldLocation();
|
||||
int searchLineNumber = searchCursorLocation.getIndex().intValue() + 1;
|
||||
if (highlightLine != searchLineNumber) {
|
||||
// only highlight the match on the actual line
|
||||
return new Highlight[0];
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@ -39,4 +38,9 @@ public class FieldBasedSearchLocation extends SearchLocation {
|
||||
public CursorPosition getCursorPosition() {
|
||||
return new DecompilerCursorPosition(fieldLocation);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String fieldsToString() {
|
||||
return super.fieldsToString() + ", fieldLocation=" + fieldLocation;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@ -77,13 +78,20 @@ public class FindAction extends DockingAction {
|
||||
if (text != null) {
|
||||
dialog.setSearchText(text);
|
||||
}
|
||||
|
||||
// show over the root frame, so the user can still see the Decompiler window
|
||||
tool.showDialog(dialog);
|
||||
}
|
||||
|
||||
protected FindDialog getFindDialog() {
|
||||
if (findDialog == null) {
|
||||
findDialog = new FindDialog("Decompiler Find Text", new DecompilerSearcher());
|
||||
findDialog = new FindDialog("Decompiler Find Text", new DecompilerSearcher()) {
|
||||
@Override
|
||||
protected void dialogClosed() {
|
||||
// clear the search results when the dialog is closed
|
||||
decompilerPanel.setSearchResults(null);
|
||||
}
|
||||
};
|
||||
findDialog.setHelpLocation(new HelpLocation("DecompilePlugin", "Find"));
|
||||
}
|
||||
return findDialog;
|
||||
|
@ -1,6 +1,5 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@ -60,6 +59,10 @@ public class SearchLocation {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return searchText + "[start=" + startIndexInclusive + ", end=" + endIndexInclusive + "]";
|
||||
return searchText + "[" + fieldsToString() + "]";
|
||||
}
|
||||
|
||||
protected String fieldsToString() {
|
||||
return startIndexInclusive + ", end=" + endIndexInclusive;
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@ -129,8 +128,8 @@ public class ClippingTextField implements TextField {
|
||||
|
||||
int x = findX(col) + startX;
|
||||
|
||||
return new Rectangle(x, -textElement.getHeightAbove(), 2, textElement.getHeightAbove() +
|
||||
textElement.getHeightBelow());
|
||||
return new Rectangle(x, -textElement.getHeightAbove(), 2,
|
||||
textElement.getHeightAbove() + textElement.getHeightBelow());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -315,7 +314,7 @@ public class ClippingTextField implements TextField {
|
||||
if (cursorLoc != null) {
|
||||
cursorTextOffset = screenLocationToTextOffset(cursorLoc.row(), cursorLoc.col());
|
||||
}
|
||||
paintHighlights(g, hlFactory.getHighlights(getString(), cursorTextOffset));
|
||||
paintHighlights(g, hlFactory.getHighlights(this, getString(), cursorTextOffset));
|
||||
}
|
||||
|
||||
protected void paintSelection(Graphics g, FieldBackgroundColorManager colorManager, int row,
|
||||
@ -344,10 +343,10 @@ public class ClippingTextField implements TextField {
|
||||
}
|
||||
|
||||
protected void paintHighlights(Graphics g, Highlight[] highlights) {
|
||||
for (int i = 0; i < highlights.length; i++) {
|
||||
int startCol = Math.max(highlights[i].getStart(), 0);
|
||||
int endCol = Math.min(highlights[i].getEnd(), getString().length());
|
||||
Color c = highlights[i].getColor();
|
||||
for (Highlight highlight : highlights) {
|
||||
int startCol = Math.max(highlight.getStart(), 0);
|
||||
int endCol = Math.min(highlight.getEnd(), getString().length());
|
||||
Color c = highlight.getColor();
|
||||
if (endCol >= startCol) {
|
||||
int start = findX(startCol);
|
||||
int end = findX(endCol + 1);
|
||||
|
@ -1,6 +1,5 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@ -142,8 +141,8 @@ public class ReverseClippingTextField implements TextField {
|
||||
|
||||
int x = findX(col) + textStartX;
|
||||
|
||||
return new Rectangle(x, -textElement.getHeightAbove(), 2, textElement.getHeightAbove() +
|
||||
textElement.getHeightBelow());
|
||||
return new Rectangle(x, -textElement.getHeightAbove(), 2,
|
||||
textElement.getHeightAbove() + textElement.getHeightBelow());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -336,8 +335,7 @@ public class ReverseClippingTextField implements TextField {
|
||||
private void paintDots(Graphics g, int x) {
|
||||
int pos = 1; // skip one pixel
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (pos < DOT_DOT_DOT_WIDTH - 2) { // don't paint too close to next
|
||||
// field.
|
||||
if (pos < DOT_DOT_DOT_WIDTH - 2) { // don't paint too close to next field
|
||||
g.drawRect(x + pos, -2, 1, 1);
|
||||
pos += 4; // add in size of dot and padding
|
||||
}
|
||||
@ -349,14 +347,14 @@ public class ReverseClippingTextField implements TextField {
|
||||
if (cursorLoc != null) {
|
||||
cursorTextOffset = screenLocationToTextOffset(cursorLoc.row(), cursorLoc.col());
|
||||
}
|
||||
paintHighlights(g, hlFactory.getHighlights(getString(), cursorTextOffset));
|
||||
paintHighlights(g, hlFactory.getHighlights(this, getString(), cursorTextOffset));
|
||||
}
|
||||
|
||||
protected void paintHighlights(Graphics g, Highlight[] highlights) {
|
||||
for (int i = 0; i < highlights.length; i++) {
|
||||
int startCol = Math.max(highlights[i].getStart() - startingCharIndex, 0);
|
||||
int endCol = Math.min(highlights[i].getEnd() - startingCharIndex, getString().length());
|
||||
Color c = highlights[i].getColor();
|
||||
for (Highlight highlight : highlights) {
|
||||
int startCol = Math.max(highlight.getStart() - startingCharIndex, 0);
|
||||
int endCol = Math.min(highlight.getEnd() - startingCharIndex, getString().length());
|
||||
Color c = highlight.getColor();
|
||||
if (endCol >= startCol) {
|
||||
int start = findX(startCol);
|
||||
int end = findX(endCol + 1);
|
||||
|
@ -1,6 +1,5 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@ -202,7 +201,7 @@ public class SimpleTextField implements Field {
|
||||
public void paint(JComponent c, Graphics g, PaintContext context,
|
||||
FieldBackgroundColorManager colorManager, RowColLocation cursorLoc, int rowHeight) {
|
||||
paintSelection(g, colorManager, 0);
|
||||
paintHighlights(g, hlFactory.getHighlights(text, -1));
|
||||
paintHighlights(g, hlFactory.getHighlights(this, text, -1));
|
||||
g.setFont(metrics.getFont());
|
||||
if (foregroundColor == null) {
|
||||
foregroundColor = context.getForeground();
|
||||
@ -226,10 +225,10 @@ public class SimpleTextField implements Field {
|
||||
}
|
||||
|
||||
protected void paintHighlights(Graphics g, Highlight[] highlights) {
|
||||
for (int i = 0; i < highlights.length; i++) {
|
||||
int startCol = Math.max(highlights[i].getStart(), 0);
|
||||
int endCol = Math.min(highlights[i].getEnd(), text.length());
|
||||
Color c = highlights[i].getColor();
|
||||
for (Highlight highlight : highlights) {
|
||||
int startCol = Math.max(highlight.getStart(), 0);
|
||||
int endCol = Math.min(highlight.getEnd(), text.length());
|
||||
Color c = highlight.getColor();
|
||||
if (endCol >= startCol) {
|
||||
int start = findX(startCol);
|
||||
int end = findX(endCol + 1);
|
||||
|
@ -268,7 +268,7 @@ public class VerticalLayoutTextField implements TextField {
|
||||
cursorRow = cursorLoc.row();
|
||||
}
|
||||
|
||||
Highlight[] highlights = hlFactory.getHighlights(getText(), cursorTextOffset);
|
||||
Highlight[] highlights = hlFactory.getHighlights(this, getText(), cursorTextOffset);
|
||||
int columns = 0;
|
||||
int n = subFields.size();
|
||||
Color fieldBackgroundColor = colorManager.getBackgroundColor();
|
||||
|
@ -1,6 +1,5 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@ -17,8 +16,6 @@
|
||||
package docking.widgets.fieldpanel.internal;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.math.BigInteger;
|
||||
import java.util.ArrayList;
|
||||
|
||||
@ -33,11 +30,8 @@ import docking.widgets.indexedscrollpane.IndexedScrollPane;
|
||||
|
||||
public class TestBigLayoutModel implements LayoutModel {
|
||||
private static final Highlight[] NO_HIGHLIGHTS = new Highlight[0];
|
||||
private static final HighlightFactory hlFactory = new HighlightFactory() {
|
||||
public Highlight[] getHighlights(String text, int cursorTextOffset) {
|
||||
return NO_HIGHLIGHTS;
|
||||
}
|
||||
};
|
||||
private static final HighlightFactory hlFactory =
|
||||
(field, text, cursorTextOffset) -> NO_HIGHLIGHTS;
|
||||
ArrayList<LayoutModelListener> listeners = new ArrayList<LayoutModelListener>();
|
||||
|
||||
FontMetrics fm;
|
||||
@ -86,15 +80,13 @@ public class TestBigLayoutModel implements LayoutModel {
|
||||
if (index.compareTo(numIndexes) >= 0) {
|
||||
return null;
|
||||
}
|
||||
String text =
|
||||
name + ": This is line " + index +
|
||||
" More text to make line longer abcdefghijklmnopqrstuvwxyzabcdefghijk";
|
||||
String text = name + ": This is line " + index +
|
||||
" More text to make line longer abcdefghijklmnopqrstuvwxyzabcdefghijk";
|
||||
FieldElement fe1 = new TextFieldElement(new AttributedString(text, Color.BLACK, fm), 0, 0);
|
||||
FieldElement fe2 =
|
||||
new TextFieldElement(new AttributedString("More text", Color.BLACK, fm), 0, 0);
|
||||
SingleRowLayout layout =
|
||||
new SingleRowLayout(new ClippingTextField(20, 300, fe1, hlFactory),
|
||||
new ClippingTextField(330, 100, fe2, hlFactory));
|
||||
SingleRowLayout layout = new SingleRowLayout(new ClippingTextField(20, 300, fe1, hlFactory),
|
||||
new ClippingTextField(330, 100, fe2, hlFactory));
|
||||
|
||||
if (index.intValue() >= startBigSizes && index.intValue() <= endBigSizes) {
|
||||
layout.insertSpaceAbove(30);
|
||||
@ -143,12 +135,7 @@ public class TestBigLayoutModel implements LayoutModel {
|
||||
contentPane.setLayout(new BorderLayout());
|
||||
contentPane.add(scrollPanel);
|
||||
JButton button = new JButton("Hit Me");
|
||||
button.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
model.updateData(1000, 2000);
|
||||
}
|
||||
});
|
||||
button.addActionListener(e -> model.updateData(1000, 2000));
|
||||
contentPane.add(button, BorderLayout.SOUTH);
|
||||
frame.pack();
|
||||
frame.setVisible(true);
|
||||
|
@ -1,6 +1,5 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@ -16,13 +15,18 @@
|
||||
*/
|
||||
package docking.widgets.fieldpanel.support;
|
||||
|
||||
import docking.widgets.fieldpanel.field.Field;
|
||||
|
||||
public interface HighlightFactory {
|
||||
|
||||
/**
|
||||
* Returns the highlights for the given text.
|
||||
* @param text the text to be considered for highlighting.
|
||||
* Returns the highlights for the given text
|
||||
*
|
||||
* @param field the field that is requesting the highlight
|
||||
* @param text the text to be considered for highlighting
|
||||
* @param cursorTextOffset the position in the given text of the cursor. A -1 indicates the
|
||||
* cursor is not in this field.
|
||||
* @return an array of highlights to be rendered.
|
||||
* cursor is not in this field.
|
||||
* @return an array of highlights to be rendered
|
||||
*/
|
||||
public Highlight[] getHighlights(String text, int cursorTextOffset);
|
||||
public Highlight[] getHighlights(Field field, String text, int cursorTextOffset);
|
||||
}
|
||||
|
@ -15,7 +15,7 @@
|
||||
*/
|
||||
package docking.widgets.fieldpanel;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
@ -40,11 +40,8 @@ public class FlowLayoutTextFieldTest extends AbstractGenericTest {
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
|
||||
HighlightFactory factory = new HighlightFactory() {
|
||||
@Override
|
||||
public Highlight[] getHighlights(String text, int cursorTextOffset) {
|
||||
return new Highlight[] { new Highlight(4, 4, Color.YELLOW) };
|
||||
}
|
||||
HighlightFactory factory = (field, text, cursorTextOffset) -> {
|
||||
return new Highlight[] { new Highlight(4, 4, Color.YELLOW) };
|
||||
};
|
||||
|
||||
Font font = new Font("Times New Roman", 0, 14);
|
||||
|
@ -15,7 +15,7 @@
|
||||
*/
|
||||
package docking.widgets.fieldpanel;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
@ -40,11 +40,8 @@ public class VerticalLayoutTextFieldTest extends AbstractGenericTest {
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
|
||||
HighlightFactory factory = new HighlightFactory() {
|
||||
@Override
|
||||
public Highlight[] getHighlights(String text, int cursorTextOffset) {
|
||||
return new Highlight[] { new Highlight(4, 4, Color.YELLOW) };
|
||||
}
|
||||
HighlightFactory factory = (field, text, cursorTextOffset) -> {
|
||||
return new Highlight[] { new Highlight(4, 4, Color.YELLOW) };
|
||||
};
|
||||
|
||||
Font font = new Font("Times New Roman", 0, 14);
|
||||
|
Loading…
Reference in New Issue
Block a user