mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 02:39:44 +02:00
GT-2716 - review fixes
This commit is contained in:
parent
1626d2ee1b
commit
41f4e2cdde
9 changed files with 26 additions and 69 deletions
|
@ -1,6 +1,5 @@
|
||||||
/* ###
|
/* ###
|
||||||
* IP: GHIDRA
|
* IP: GHIDRA
|
||||||
* REVIEWED: YES
|
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -16,6 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package ghidra.app.util.viewer.field;
|
package ghidra.app.util.viewer.field;
|
||||||
|
|
||||||
|
import docking.widgets.fieldpanel.field.Field;
|
||||||
import docking.widgets.fieldpanel.support.Highlight;
|
import docking.widgets.fieldpanel.support.Highlight;
|
||||||
import docking.widgets.fieldpanel.support.HighlightFactory;
|
import docking.widgets.fieldpanel.support.HighlightFactory;
|
||||||
import ghidra.app.util.HighlightProvider;
|
import ghidra.app.util.HighlightProvider;
|
||||||
|
@ -30,26 +30,22 @@ public class FieldHighlightFactory implements HighlightFactory {
|
||||||
private HighlightProvider provider;
|
private HighlightProvider provider;
|
||||||
private Class<? extends FieldFactory> fieldFactoryClass;
|
private Class<? extends FieldFactory> fieldFactoryClass;
|
||||||
private Object obj;
|
private Object obj;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new FieldHighlightFactory.
|
* Constructs a new FieldHighlightFactory.
|
||||||
* @param provider the HighlightProvider that will actually compute the highlights.
|
* @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 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)
|
* @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.provider = provider;
|
||||||
this.fieldFactoryClass = fieldFactoryClass;
|
this.fieldFactoryClass = fieldFactoryClass;
|
||||||
this.obj = obj;
|
this.obj = obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* Returns the highlights for the given text.
|
public Highlight[] getHighlights(Field field, String text, int cursorTextOffset) {
|
||||||
* @param text the text to be considered for highlighting.
|
|
||||||
* @return an array of highlights to be rendered.
|
|
||||||
*/
|
|
||||||
public Highlight[] getHighlights(String text, int cursorTextOffset) {
|
|
||||||
return provider.getHighlights(text, obj, fieldFactoryClass, 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_ORANGE = new Color(255, 128, 0);
|
||||||
private static final Color DARK_RED = new Color(130, 0, 75);
|
private static final Color DARK_RED = new Color(130, 0, 75);
|
||||||
private static final Highlight[] NO_HIGHLIGHTS = new Highlight[0];
|
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 =
|
public static final ScreenElement COMMENT_AUTO =
|
||||||
new ScreenElement("Comment, Automatic", Color.LIGHT_GRAY);
|
new ScreenElement("Comment, Automatic", Color.LIGHT_GRAY);
|
||||||
|
|
|
@ -213,7 +213,7 @@ class FieldFactory {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Highlight[] getHighlights(String text, int cursorTextOffset) {
|
public Highlight[] getHighlights(Field field, String text, int cursorTextOffset) {
|
||||||
return provider.getHighlights(text, null, null, -1);
|
return provider.getHighlights(text, null, null, -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
/* ###
|
/* ###
|
||||||
* IP: GHIDRA
|
* IP: GHIDRA
|
||||||
* REVIEWED: YES
|
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -16,8 +15,6 @@
|
||||||
*/
|
*/
|
||||||
package ghidra.app.plugin.core.byteviewer;
|
package ghidra.app.plugin.core.byteviewer;
|
||||||
|
|
||||||
import ghidra.app.plugin.core.format.ByteBlockInfo;
|
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
|
@ -26,6 +23,7 @@ import docking.widgets.fieldpanel.field.Field;
|
||||||
import docking.widgets.fieldpanel.field.SimpleTextField;
|
import docking.widgets.fieldpanel.field.SimpleTextField;
|
||||||
import docking.widgets.fieldpanel.support.Highlight;
|
import docking.widgets.fieldpanel.support.Highlight;
|
||||||
import docking.widgets.fieldpanel.support.HighlightFactory;
|
import docking.widgets.fieldpanel.support.HighlightFactory;
|
||||||
|
import ghidra.app.plugin.core.format.ByteBlockInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation for the index/address field.
|
* Implementation for the index/address field.
|
||||||
|
@ -145,7 +143,7 @@ class IndexFieldFactory {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Highlight[] getHighlights(String text, int cursorTextOffset) {
|
public Highlight[] getHighlights(Field field, String text, int cursorTextOffset) {
|
||||||
return NO_HIGHLIGHTS;
|
return NO_HIGHLIGHTS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
/* ###
|
/* ###
|
||||||
* IP: GHIDRA
|
* IP: GHIDRA
|
||||||
* REVIEWED: YES
|
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -702,12 +701,6 @@ public class DecompilerPanel extends JPanel implements FieldMouseListener, Field
|
||||||
|
|
||||||
class SearchHighlightFactory implements HighlightFactory {
|
class SearchHighlightFactory implements HighlightFactory {
|
||||||
|
|
||||||
@Override
|
|
||||||
public Highlight[] getHighlights(String text, int cursorTextOffset) {
|
|
||||||
// the search highlight needs the Field in order to work correctly
|
|
||||||
return new Highlight[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Highlight[] getHighlights(Field field, String text, int cursorTextOffset) {
|
public Highlight[] getHighlights(Field field, String text, int cursorTextOffset) {
|
||||||
if (currentSearchLocation == null) {
|
if (currentSearchLocation == null) {
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
/* ###
|
/* ###
|
||||||
* IP: GHIDRA
|
* IP: GHIDRA
|
||||||
* REVIEWED: YES
|
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -17,8 +16,6 @@
|
||||||
package docking.widgets.fieldpanel.internal;
|
package docking.widgets.fieldpanel.internal;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.event.ActionEvent;
|
|
||||||
import java.awt.event.ActionListener;
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
@ -33,11 +30,8 @@ import docking.widgets.indexedscrollpane.IndexedScrollPane;
|
||||||
|
|
||||||
public class TestBigLayoutModel implements LayoutModel {
|
public class TestBigLayoutModel implements LayoutModel {
|
||||||
private static final Highlight[] NO_HIGHLIGHTS = new Highlight[0];
|
private static final Highlight[] NO_HIGHLIGHTS = new Highlight[0];
|
||||||
private static final HighlightFactory hlFactory = new HighlightFactory() {
|
private static final HighlightFactory hlFactory =
|
||||||
public Highlight[] getHighlights(String text, int cursorTextOffset) {
|
(field, text, cursorTextOffset) -> NO_HIGHLIGHTS;
|
||||||
return NO_HIGHLIGHTS;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
ArrayList<LayoutModelListener> listeners = new ArrayList<LayoutModelListener>();
|
ArrayList<LayoutModelListener> listeners = new ArrayList<LayoutModelListener>();
|
||||||
|
|
||||||
FontMetrics fm;
|
FontMetrics fm;
|
||||||
|
@ -86,15 +80,13 @@ public class TestBigLayoutModel implements LayoutModel {
|
||||||
if (index.compareTo(numIndexes) >= 0) {
|
if (index.compareTo(numIndexes) >= 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
String text =
|
String text = name + ": This is line " + index +
|
||||||
name + ": This is line " + index +
|
" More text to make line longer abcdefghijklmnopqrstuvwxyzabcdefghijk";
|
||||||
" More text to make line longer abcdefghijklmnopqrstuvwxyzabcdefghijk";
|
|
||||||
FieldElement fe1 = new TextFieldElement(new AttributedString(text, Color.BLACK, fm), 0, 0);
|
FieldElement fe1 = new TextFieldElement(new AttributedString(text, Color.BLACK, fm), 0, 0);
|
||||||
FieldElement fe2 =
|
FieldElement fe2 =
|
||||||
new TextFieldElement(new AttributedString("More text", Color.BLACK, fm), 0, 0);
|
new TextFieldElement(new AttributedString("More text", Color.BLACK, fm), 0, 0);
|
||||||
SingleRowLayout layout =
|
SingleRowLayout layout = new SingleRowLayout(new ClippingTextField(20, 300, fe1, hlFactory),
|
||||||
new SingleRowLayout(new ClippingTextField(20, 300, fe1, hlFactory),
|
new ClippingTextField(330, 100, fe2, hlFactory));
|
||||||
new ClippingTextField(330, 100, fe2, hlFactory));
|
|
||||||
|
|
||||||
if (index.intValue() >= startBigSizes && index.intValue() <= endBigSizes) {
|
if (index.intValue() >= startBigSizes && index.intValue() <= endBigSizes) {
|
||||||
layout.insertSpaceAbove(30);
|
layout.insertSpaceAbove(30);
|
||||||
|
@ -143,12 +135,7 @@ public class TestBigLayoutModel implements LayoutModel {
|
||||||
contentPane.setLayout(new BorderLayout());
|
contentPane.setLayout(new BorderLayout());
|
||||||
contentPane.add(scrollPanel);
|
contentPane.add(scrollPanel);
|
||||||
JButton button = new JButton("Hit Me");
|
JButton button = new JButton("Hit Me");
|
||||||
button.addActionListener(new ActionListener() {
|
button.addActionListener(e -> model.updateData(1000, 2000));
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
model.updateData(1000, 2000);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
contentPane.add(button, BorderLayout.SOUTH);
|
contentPane.add(button, BorderLayout.SOUTH);
|
||||||
frame.pack();
|
frame.pack();
|
||||||
frame.setVisible(true);
|
frame.setVisible(true);
|
||||||
|
|
|
@ -19,16 +19,6 @@ import docking.widgets.fieldpanel.field.Field;
|
||||||
|
|
||||||
public interface HighlightFactory {
|
public interface HighlightFactory {
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the highlights for the given text
|
|
||||||
*
|
|
||||||
* @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
|
|
||||||
*/
|
|
||||||
public Highlight[] getHighlights(String text, int cursorTextOffset);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the highlights for the given text
|
* Returns the highlights for the given text
|
||||||
*
|
*
|
||||||
|
@ -38,7 +28,5 @@ public interface HighlightFactory {
|
||||||
* cursor is not in this field.
|
* cursor is not in this field.
|
||||||
* @return an array of highlights to be rendered
|
* @return an array of highlights to be rendered
|
||||||
*/
|
*/
|
||||||
public default Highlight[] getHighlights(Field field, String text, int cursorTextOffset) {
|
public Highlight[] getHighlights(Field field, String text, int cursorTextOffset);
|
||||||
return getHighlights(text, cursorTextOffset);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package docking.widgets.fieldpanel;
|
package docking.widgets.fieldpanel;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
|
@ -40,11 +40,8 @@ public class FlowLayoutTextFieldTest extends AbstractGenericTest {
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
|
|
||||||
HighlightFactory factory = new HighlightFactory() {
|
HighlightFactory factory = (field, text, cursorTextOffset) -> {
|
||||||
@Override
|
return new Highlight[] { new Highlight(4, 4, Color.YELLOW) };
|
||||||
public Highlight[] getHighlights(String text, int cursorTextOffset) {
|
|
||||||
return new Highlight[] { new Highlight(4, 4, Color.YELLOW) };
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Font font = new Font("Times New Roman", 0, 14);
|
Font font = new Font("Times New Roman", 0, 14);
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package docking.widgets.fieldpanel;
|
package docking.widgets.fieldpanel;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
|
@ -40,11 +40,8 @@ public class VerticalLayoutTextFieldTest extends AbstractGenericTest {
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
|
|
||||||
HighlightFactory factory = new HighlightFactory() {
|
HighlightFactory factory = (field, text, cursorTextOffset) -> {
|
||||||
@Override
|
return new Highlight[] { new Highlight(4, 4, Color.YELLOW) };
|
||||||
public Highlight[] getHighlights(String text, int cursorTextOffset) {
|
|
||||||
return new Highlight[] { new Highlight(4, 4, Color.YELLOW) };
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Font font = new Font("Times New Roman", 0, 14);
|
Font font = new Font("Times New Roman", 0, 14);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue