GT-2716 - review fixes

This commit is contained in:
dragonmacher 2019-04-02 13:05:40 -04:00
parent 1626d2ee1b
commit 41f4e2cdde
9 changed files with 26 additions and 69 deletions

View file

@ -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;
@ -37,19 +37,15 @@ public class FieldHighlightFactory implements HighlightFactory {
* @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);
} }
} }

View file

@ -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);

View file

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

View file

@ -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;
} }
} }

View file

@ -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) {

View file

@ -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);

View file

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

View file

@ -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);

View file

@ -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);