mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-01-09 14:08:03 -05:00
Merge remote-tracking branch 'origin/GP-6189-dragonmacher-byte-viewer-cursor-color'
This commit is contained in:
@@ -6,9 +6,12 @@ color.bg.byteviewer.highlight.middle.mouse = color.bg.highlight
|
||||
|
||||
color.fg.byteviewer.separator = color.palette.blue
|
||||
color.fg.byteviewer.changed = red
|
||||
color.cursor.byteviewer.focused.active = color.cursor.focused
|
||||
color.cursor.byteviewer.focused.not.active = black
|
||||
color.cursor.byteviewer.unfocused = color.cursor.unfocused
|
||||
|
||||
color.cursor.byteviewer.focused.edit = color.palette.red
|
||||
color.cursor.byteviewer.unfocused.edit = color.palette.pink
|
||||
color.cursor.byteviewer.focused.non.edit = color.palette.black
|
||||
color.cursor.byteviewer.unfocused.non.edit = color.palette.silver
|
||||
|
||||
|
||||
icon.plugin.byteviewer.provider = binaryData.gif
|
||||
icon.plugin.byteviewer.options = wrench.png
|
||||
@@ -20,5 +23,8 @@ font.byteviewer.status = SansSerif-PLAIN-11
|
||||
|
||||
color.bg.byteviewer.highlight = rgb(191, 191, 64) // olive
|
||||
color.fg.byteviewer.changed = indianRed
|
||||
color.cursor.byteviewer.focused.not.active = gray
|
||||
|
||||
|
||||
color.cursor.byteviewer.focused.edit = #FF6666
|
||||
color.cursor.byteviewer.unfocused.edit = #9900FF
|
||||
color.cursor.byteviewer.focused.non.edit = color.palette.white
|
||||
color.cursor.byteviewer.unfocused.non.edit = #97BCE2
|
||||
@@ -25,45 +25,44 @@
|
||||
<table border="1" width="82%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td width="31%"> Block Separator Color</td>
|
||||
<td width="69%"> Used to render gaps in memory, i.e., separators between memory blocks</td>
|
||||
<td width="40%" valign="top"> Block Separator Color</td>
|
||||
<td width="60%"> Used to render gaps in memory, i.e., separators between memory blocks</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="31%"> Current View Cursor Color</td>
|
||||
<td width="69%"> Used in the view that has focus</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="31%"> Cursor Color</td>
|
||||
<td width="69%"> Used in the views that do not have focus</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="31%"> Edit Cursor Color<a name="EditColor"></a></td>
|
||||
<td width="69%"> Used to indicate changed bytes in memory; this color is
|
||||
used as the cursor color in those views that support editing</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="31%"> Font</td>
|
||||
<td width="69%"> Font specified for all views</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td width="31%"> Highlight Cursor Line</td>
|
||||
<td width="69%"> Highlights the line containing the cursor</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td width="31%"> Highlight Cursor Line Color</td>
|
||||
<td width="69%"> The color of the highlight for the line containing the cursor</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td width="31%"> Non-Focus Cursor Color</td>
|
||||
<td width="69%"> The cursor color when the Byte Viewer is not focuses</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td width="31%"> Middle-Mouse Color</td>
|
||||
<td width="69%"> The color when the user middle-mouses in the Byte Viewer</td>
|
||||
<td width="40%" valign="top"> Edit Text Color<a name="EditColor"></a></td>
|
||||
<td width="60%"> Used to indicate changed bytes in memory.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%" valign="top"> Cursor Color Focused</td>
|
||||
<td width="60%"> Used in the view that has focus</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%" valign="top"> Cursor Color Unfocused</td>
|
||||
<td width="60%"> Used in the views that do not have focus</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%" valign="top"> Cursor Color Focused Edit</td>
|
||||
<td width="60%"> Used in the view that has focus when in edit mode</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%" valign="top"> Cursor Color Unfocused Edit</td>
|
||||
<td width="60%"> Used in the views that do not have focus when in edit mode</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%" valign="top"> Font</td>
|
||||
<td width="60%"> Font specified for all views</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%" valign="top"> Highlight Cursor Line</td>
|
||||
<td width="60%"> Highlights the line containing the cursor</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%" valign="top"> Highlight Cursor Line Color</td>
|
||||
<td width="60%"> The color of the highlight for the line containing the cursor</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%" valign="top"> Middle-Mouse Color</td>
|
||||
<td width="60%"> The color when the user middle-mouses in the Byte Viewer</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
<font color="#ff0000"> red</font> to denote the change.</p>
|
||||
</blockquote>
|
||||
|
||||
<h3><a name="Add_Byteviewer_HexLong_Panel"></a><a name="HexLongr"></a>Hex Long</h3>
|
||||
<h3><a name="Add_Byteviewer_HexLong_Panel"></a><a name="HexLong"></a>Hex Long</h3>
|
||||
<blockquote>
|
||||
<p>This format shows eight-byte numbers represented as an 16-digit hex number. </p>
|
||||
<p> This view supports <a href="#EditBytes">editing</a>. When a byte
|
||||
@@ -219,11 +219,11 @@
|
||||
<h2>Cursor Colors</h2>
|
||||
<blockquote>
|
||||
<p>The format view that currently has focus shows its cursor in <font
|
||||
color="#ff00ff">magenta</font>. (Cursor colors can be changed via the <a
|
||||
color="#000000"><B>black</B></font>. (Cursor colors can be changed via the <a
|
||||
href="ByteViewerOptions.htm#EditColorsAndFont">Options</a> dialog) If
|
||||
the byte editing is enabled and the view that is in focus supports
|
||||
editing,
|
||||
then the cursor is <font color="#ff0000">red</font>. </p>
|
||||
then the cursor is <font color="#ff0000"><B>red</B></font>. </p>
|
||||
</blockquote>
|
||||
<br>
|
||||
|
||||
|
||||
@@ -20,8 +20,6 @@ import java.awt.FontMetrics;
|
||||
import java.awt.event.*;
|
||||
import java.math.BigInteger;
|
||||
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
import docking.DockingUtils;
|
||||
import docking.widgets.EventTrigger;
|
||||
import docking.widgets.fieldpanel.FieldPanel;
|
||||
@@ -33,6 +31,7 @@ import generic.theme.GColor;
|
||||
import ghidra.app.plugin.core.format.*;
|
||||
import ghidra.program.model.address.*;
|
||||
import ghidra.util.Msg;
|
||||
import ghidra.util.Swing;
|
||||
import help.Help;
|
||||
import help.HelpService;
|
||||
|
||||
@@ -52,11 +51,17 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene
|
||||
private ProgramByteBlockSet blockSet;
|
||||
|
||||
private boolean consumeKeyStrokes;
|
||||
private boolean editMode; // true if this component is in edit mode;
|
||||
// cursor is different color.
|
||||
private Color editColor;
|
||||
private Color currentCursorColor;
|
||||
private Color currentCursorLineColor;
|
||||
private boolean editMode; // true if this component is in edit mode; cursor is different color.
|
||||
|
||||
//@formatter:off
|
||||
private Color editedTextColor = ByteViewerComponentProvider.EDITED_TEXT_COLOR;
|
||||
private Color focusedEditCursorColor = ByteViewerComponentProvider.CURSOR_COLOR_FOCUSED_EDIT;
|
||||
private Color unfocusedEditCursorColor = ByteViewerComponentProvider.CURSOR_COLOR_UNFOCUSED_EDIT;
|
||||
private Color focusedNonEditCursorColor = ByteViewerComponentProvider.CURSOR_COLOR_FOCUSED_NON_EDIT;
|
||||
private Color unfocusedNonEditCursorColor = ByteViewerComponentProvider.CURSOR_COLOR_UNFOCUSED_NON_EDIT;
|
||||
private Color currentCursorLineColor = ByteViewerComponentProvider.CURRENT_LINE_COLOR;
|
||||
//@formatter:on
|
||||
|
||||
private ByteViewerLayoutModel layoutModel;
|
||||
private boolean doingRefresh;
|
||||
private boolean doingEdit;
|
||||
@@ -151,9 +156,6 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called from the parent FieldPanel whenever the cursor position changes.
|
||||
*/
|
||||
@Override
|
||||
public void fieldLocationChanged(FieldLocation loc, Field field, EventTrigger trigger) {
|
||||
fieldLocationChanged(loc, field, false, trigger == EventTrigger.GUI_ACTION);
|
||||
@@ -174,10 +176,10 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene
|
||||
//Set this component as the current view in the panel
|
||||
panel.setCurrentView(ByteViewerComponent.this);
|
||||
}
|
||||
// do the color update later because the field panel
|
||||
// listener is called after this one, and sets the
|
||||
|
||||
// Update later because the field panel listener is called after this one, and sets the
|
||||
// colors incorrectly
|
||||
SwingUtilities.invokeLater(updateColorRunner);
|
||||
Swing.runLater(updateColorRunner);
|
||||
|
||||
lastFieldLoc = loc;
|
||||
|
||||
@@ -308,7 +310,7 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene
|
||||
getToolkit().beep();
|
||||
}
|
||||
}
|
||||
catch (ByteBlockAccessException exc) {
|
||||
catch (ByteBlockAccessException | NumberFormatException exc) {
|
||||
panel.setStatusMessage("Editing not allowed: " + exc.getMessage());
|
||||
getToolkit().beep();
|
||||
|
||||
@@ -358,19 +360,6 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene
|
||||
layoutModel.setIndexMap(indexMap);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the color used to denote changes in the byte block.
|
||||
* @param c the color for unsaved changed byte values
|
||||
*/
|
||||
void setEditColor(Color c) {
|
||||
editColor = c;
|
||||
for (FieldFactory fieldFactorie : fieldFactories) {
|
||||
fieldFactorie.setEditColor(c);
|
||||
}
|
||||
layoutModel.layoutChanged();
|
||||
updateColor();
|
||||
}
|
||||
|
||||
void setHighlightButton(int highlightButton) {
|
||||
this.highlightButton = highlightButton;
|
||||
}
|
||||
@@ -379,25 +368,6 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene
|
||||
highlightProvider.setHighlightColor(color);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the color for the component that has focus.
|
||||
*
|
||||
* @param c the color to set
|
||||
*/
|
||||
void setCurrentCursorColor(Color c) {
|
||||
currentCursorColor = c;
|
||||
updateColor();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the background color for the line containing the cursor.
|
||||
*
|
||||
* @param c the color to set
|
||||
*/
|
||||
void setCurrentCursorLineColor(Color c) {
|
||||
currentCursorLineColor = c;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the color for showing gaps in indexes.
|
||||
*
|
||||
@@ -414,8 +384,8 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene
|
||||
* Get the color of unsaved byte changes
|
||||
* @return the color of unsaved byte changes
|
||||
*/
|
||||
Color getEditColor() {
|
||||
return editColor;
|
||||
Color getEditedTextColor() {
|
||||
return editedTextColor;
|
||||
}
|
||||
|
||||
void setIndexMap(IndexMap map) {
|
||||
@@ -677,20 +647,26 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene
|
||||
return;
|
||||
}
|
||||
this.editMode = editMode;
|
||||
updateColor();
|
||||
updateFocusedColor();
|
||||
udpateNonFocusedColor();
|
||||
}
|
||||
|
||||
private void updateColor() {
|
||||
private void updateFocusedColor() {
|
||||
if (panel.getCurrentComponent() == this) {
|
||||
if (editMode) {
|
||||
setFocusedCursorColor(editColor);
|
||||
setFocusedCursorColor(focusedEditCursorColor);
|
||||
}
|
||||
else {
|
||||
setFocusedCursorColor(currentCursorColor);
|
||||
setFocusedCursorColor(focusedNonEditCursorColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void udpateNonFocusedColor() {
|
||||
Color c = editMode ? unfocusedEditCursorColor : unfocusedNonEditCursorColor;
|
||||
setNonFocusCursorColor(c);
|
||||
}
|
||||
|
||||
boolean getEditMode() {
|
||||
return editMode;
|
||||
}
|
||||
@@ -735,12 +711,12 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene
|
||||
createFields();
|
||||
|
||||
setCursorOn(true);
|
||||
editColor = ByteViewerComponentProvider.CHANGED_VALUE_COLOR;
|
||||
currentCursorColor = ByteViewerComponentProvider.CURSOR_ACTIVE_COLOR;
|
||||
setNonFocusCursorColor(ByteViewerComponentProvider.CURSOR_NOT_FOCUSED_COLOR);
|
||||
setFocusedCursorColor(currentCursorColor);
|
||||
editedTextColor = ByteViewerComponentProvider.EDITED_TEXT_COLOR;
|
||||
|
||||
updateColorRunner = () -> updateColor();
|
||||
setNonFocusCursorColor(ByteViewerComponentProvider.CURSOR_COLOR_UNFOCUSED_NON_EDIT);
|
||||
setFocusedCursorColor(ByteViewerComponentProvider.CURSOR_COLOR_FOCUSED_NON_EDIT);
|
||||
|
||||
updateColorRunner = () -> updateFocusedColor();
|
||||
|
||||
addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
@@ -779,7 +755,7 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene
|
||||
fieldFactories[i] =
|
||||
new FieldFactory(model, bytesPerLine, fieldOffset, fm, highlightProvider);
|
||||
fieldOffset += model.getUnitByteSize();
|
||||
fieldFactories[i].setEditColor(editColor);
|
||||
fieldFactories[i].setEditColor(editedTextColor);
|
||||
fieldFactories[i].setIndexMap(indexMap);
|
||||
}
|
||||
layoutModel.setFactorys(fieldFactories, model, charWidth);
|
||||
@@ -979,4 +955,5 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -25,7 +25,8 @@ import java.util.List;
|
||||
import javax.swing.JComponent;
|
||||
|
||||
import docking.action.ToggleDockingAction;
|
||||
import generic.theme.*;
|
||||
import generic.theme.GColor;
|
||||
import generic.theme.GIcon;
|
||||
import ghidra.GhidraOptions;
|
||||
import ghidra.GhidraOptions.CURSOR_MOUSE_BUTTON_NAMES;
|
||||
import ghidra.app.plugin.core.format.*;
|
||||
@@ -63,10 +64,12 @@ public abstract class ByteViewerComponentProvider extends ComponentProviderAdapt
|
||||
static final String CURSOR = "byteviewer.color.cursor";
|
||||
|
||||
static final GColor SEPARATOR_COLOR = new GColor("color.fg.byteviewer.separator");
|
||||
static final GColor CHANGED_VALUE_COLOR = new GColor("color.fg.byteviewer.changed");
|
||||
static final GColor CURSOR_ACTIVE_COLOR = new GColor("color.cursor.byteviewer.focused.active");
|
||||
static final GColor CURSOR_NON_ACTIVE_COLOR = new GColor("color.cursor.byteviewer.focused.not.active");
|
||||
static final GColor CURSOR_NOT_FOCUSED_COLOR = new GColor("color.cursor.byteviewer.unfocused");
|
||||
|
||||
static final GColor EDITED_TEXT_COLOR = new GColor("color.fg.byteviewer.changed");
|
||||
static final GColor CURSOR_COLOR_FOCUSED_EDIT = new GColor("color.cursor.byteviewer.focused.edit");
|
||||
static final GColor CURSOR_COLOR_UNFOCUSED_EDIT = new GColor("color.cursor.byteviewer.unfocused.edit");
|
||||
static final GColor CURSOR_COLOR_FOCUSED_NON_EDIT = new GColor("color.cursor.byteviewer.focused.non.edit");
|
||||
static final GColor CURSOR_COLOR_UNFOCUSED_NON_EDIT = new GColor("color.cursor.byteviewer.unfocused.non.edit");
|
||||
|
||||
static final GColor CURRENT_LINE_COLOR = GhidraOptions.DEFAULT_CURSOR_LINE_COLOR;
|
||||
//@formatter:on
|
||||
@@ -74,10 +77,11 @@ public abstract class ByteViewerComponentProvider extends ComponentProviderAdapt
|
||||
static final String INDEX_COLUMN_NAME = "Addresses";
|
||||
|
||||
static final String SEPARATOR_COLOR_OPTION_NAME = "Block Separator Color";
|
||||
static final String CHANGED_VALUE_COLOR_OPTION_NAME = "Changed Values Color";
|
||||
static final String CURSOR_ACTIVE_COLOR_OPTION_NAME = "Active Cursor Color";
|
||||
static final String CURSOR_NON_ACTIVE_COLOR_OPTION_NAME = "Non-Active Cursor Color";
|
||||
static final String CURSOR_NOT_FOCUSED_COLOR_OPTION_NAME = "Non-Focused Cursor Color";
|
||||
static final String EDIT_TEXT_COLOR_OPTION_NAME = "Edited Text Color";
|
||||
static final String CURSOR_FOCUSED_COLOR_OPTION_NAME = "Cursor Color Focused";
|
||||
static final String CURSOR_UNFOCUSED_COLOR_OPTION_NAME = "Cursor Color Unfocused";
|
||||
static final String CURSOR_FOCUSED_EDIT_COLOR_OPTION_NAME = "Cursor Color Focused Edit";
|
||||
static final String CURSOR_UNFOCUSED_EDIT_COLOR_OPTION_NAME = "Cursor Color Unfocused Edit";
|
||||
|
||||
static final String OPTION_FONT = "Font";
|
||||
|
||||
@@ -185,9 +189,6 @@ public abstract class ByteViewerComponentProvider extends ComponentProviderAdapt
|
||||
CURSOR_MOUSE_BUTTON_NAMES mouseButton = (CURSOR_MOUSE_BUTTON_NAMES) newValue;
|
||||
panel.setHighlightButton(mouseButton.getMouseEventID());
|
||||
}
|
||||
else if (optionName.equals(OPTION_HIGHLIGHT_MIDDLE_MOUSE_NAME)) {
|
||||
panel.setMouseButtonHighlightColor((Color) newValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -206,19 +207,25 @@ public abstract class ByteViewerComponentProvider extends ComponentProviderAdapt
|
||||
opt.registerThemeColorBinding(SEPARATOR_COLOR_OPTION_NAME, SEPARATOR_COLOR.getId(), help,
|
||||
"Color used for separator shown between memory blocks.");
|
||||
|
||||
opt.registerThemeColorBinding(CHANGED_VALUE_COLOR_OPTION_NAME, CHANGED_VALUE_COLOR.getId(),
|
||||
opt.registerThemeColorBinding(EDIT_TEXT_COLOR_OPTION_NAME, EDITED_TEXT_COLOR.getId(),
|
||||
new HelpLocation("ByteViewerPlugin", "EditColor"),
|
||||
"Color of changed bytes when editing.");
|
||||
|
||||
opt.registerThemeColorBinding(CURSOR_ACTIVE_COLOR_OPTION_NAME, CURSOR_ACTIVE_COLOR.getId(),
|
||||
help, "Color of cursor in the active view.");
|
||||
opt.registerThemeColorBinding(CURSOR_FOCUSED_COLOR_OPTION_NAME,
|
||||
CURSOR_COLOR_FOCUSED_NON_EDIT.getId(),
|
||||
help, "Color of cursor in the focused view.");
|
||||
|
||||
opt.registerThemeColorBinding(CURSOR_NON_ACTIVE_COLOR_OPTION_NAME,
|
||||
CURSOR_NON_ACTIVE_COLOR.getId(), help, "Color of cursor in the non-active views.");
|
||||
opt.registerThemeColorBinding(CURSOR_UNFOCUSED_COLOR_OPTION_NAME,
|
||||
CURSOR_COLOR_UNFOCUSED_NON_EDIT.getId(), help,
|
||||
"Color of cursor in the unfocused views.");
|
||||
|
||||
opt.registerThemeColorBinding(CURSOR_NOT_FOCUSED_COLOR_OPTION_NAME,
|
||||
CURSOR_NOT_FOCUSED_COLOR.getId(), help,
|
||||
"Color of cursor when the byteview does not have focus.");
|
||||
opt.registerThemeColorBinding(CURSOR_FOCUSED_EDIT_COLOR_OPTION_NAME,
|
||||
CURSOR_COLOR_FOCUSED_EDIT.getId(), help,
|
||||
"Color of the cursor in the focused view when editing.");
|
||||
|
||||
opt.registerThemeColorBinding(CURSOR_UNFOCUSED_EDIT_COLOR_OPTION_NAME,
|
||||
CURSOR_COLOR_UNFOCUSED_EDIT.getId(), help,
|
||||
"Color of the cursor in the unfocused view when editing.");
|
||||
|
||||
opt.registerThemeColorBinding(CURRENT_LINE_COLOR_OPTION_NAME,
|
||||
GhidraOptions.DEFAULT_CURSOR_LINE_COLOR.getId(), help,
|
||||
@@ -238,16 +245,6 @@ public abstract class ByteViewerComponentProvider extends ComponentProviderAdapt
|
||||
opt.getColor(OPTION_HIGHLIGHT_MIDDLE_MOUSE_NAME, HIGHLIGHT_MIDDLE_MOUSE_COLOR);
|
||||
panel.setMouseButtonHighlightColor(middleMouseColor);
|
||||
|
||||
panel.setCurrentCursorColor(CURSOR_ACTIVE_COLOR);
|
||||
panel.setNonFocusCursorColor(CURSOR_NOT_FOCUSED_COLOR);
|
||||
panel.setCursorColor(CURSOR_NON_ACTIVE_COLOR);
|
||||
panel.setCurrentCursorLineColor(CURRENT_LINE_COLOR);
|
||||
|
||||
Font font = Gui.getFont(DEFAULT_FONT_ID);
|
||||
FontMetrics fm = panel.getFontMetrics(font);
|
||||
|
||||
panel.restoreConfigState(fm, CHANGED_VALUE_COLOR);
|
||||
|
||||
opt.addOptionsChangeListener(this);
|
||||
|
||||
// cursor highlight options
|
||||
@@ -308,8 +305,8 @@ public abstract class ByteViewerComponentProvider extends ComponentProviderAdapt
|
||||
return offset;
|
||||
}
|
||||
|
||||
Color getCursorColor() {
|
||||
return CURSOR_NON_ACTIVE_COLOR;
|
||||
Color getFocusedNonEditCursorColor() {
|
||||
return CURSOR_COLOR_FOCUSED_NON_EDIT;
|
||||
}
|
||||
|
||||
int getGroupSize() {
|
||||
@@ -530,4 +527,5 @@ public abstract class ByteViewerComponentProvider extends ComponentProviderAdapt
|
||||
public void removeDisplayListener(AddressSetDisplayListener listener) {
|
||||
panel.removeDisplayListener(listener);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -63,16 +63,13 @@ public class ByteViewerPanel extends JPanel implements LayoutModel, LayoutListen
|
||||
private IndexMap indexMap; // maps indexes to the correct block and offset
|
||||
private int blockOffset;
|
||||
private ByteViewerComponent currentView;
|
||||
private Color editColor;
|
||||
private Color currentCursorColor;
|
||||
private Color currentCursorLineColor;
|
||||
|
||||
private Color highlightColor;
|
||||
private int highlightButton;
|
||||
private List<LayoutModelListener> layoutListeners = new ArrayList<>(1);
|
||||
private boolean addingView; // don't respond to cursor location
|
||||
// changes while this flag is true
|
||||
private final ByteViewerComponentProvider provider;
|
||||
private boolean addingView; // don't respond to cursor location changes while this flag is true
|
||||
|
||||
private final ByteViewerComponentProvider provider;
|
||||
private List<AddressSetDisplayListener> displayListeners = new ArrayList<>();
|
||||
private ByteViewerIndexedView indexedView;
|
||||
|
||||
@@ -83,7 +80,6 @@ public class ByteViewerPanel extends JPanel implements LayoutModel, LayoutListen
|
||||
viewList = new ArrayList<>();
|
||||
indexMap = new IndexMap();
|
||||
create();
|
||||
editColor = ByteViewerComponentProvider.CHANGED_VALUE_COLOR;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -115,20 +111,6 @@ public class ByteViewerPanel extends JPanel implements LayoutModel, LayoutListen
|
||||
super.paintComponent(g);
|
||||
}
|
||||
|
||||
void setCurrentCursorColor(Color c) {
|
||||
currentCursorColor = c;
|
||||
for (ByteViewerComponent comp : viewList) {
|
||||
comp.setCurrentCursorColor(c);
|
||||
}
|
||||
}
|
||||
|
||||
void setCurrentCursorLineColor(Color c) {
|
||||
currentCursorLineColor = c;
|
||||
for (ByteViewerComponent comp : viewList) {
|
||||
comp.setCurrentCursorLineColor(c);
|
||||
}
|
||||
}
|
||||
|
||||
void setHighlightButton(int highlightButton) {
|
||||
this.highlightButton = highlightButton;
|
||||
for (ByteViewerComponent comp : viewList) {
|
||||
@@ -143,12 +125,6 @@ public class ByteViewerPanel extends JPanel implements LayoutModel, LayoutListen
|
||||
}
|
||||
}
|
||||
|
||||
void setCursorColor(Color c) {
|
||||
for (ByteViewerComponent comp : viewList) {
|
||||
comp.setNonFocusCursorColor(c);
|
||||
}
|
||||
}
|
||||
|
||||
void setSeparatorColor(Color c) {
|
||||
indexFactory.setMissingValueColor(c);
|
||||
for (ByteViewerComponent comp : viewList) {
|
||||
@@ -156,12 +132,6 @@ public class ByteViewerPanel extends JPanel implements LayoutModel, LayoutListen
|
||||
}
|
||||
}
|
||||
|
||||
void setNonFocusCursorColor(Color c) {
|
||||
for (ByteViewerComponent comp : viewList) {
|
||||
comp.setNonFocusCursorColor(c);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the byte blocks and create an new IndexMap object that will be passed to the index panel
|
||||
* and to each component that shows a format.
|
||||
@@ -307,15 +277,11 @@ public class ByteViewerPanel extends JPanel implements LayoutModel, LayoutListen
|
||||
if (viewList.size() != 0) {
|
||||
addingView = true;
|
||||
}
|
||||
final ViewerPosition vp = getViewerPosition();
|
||||
|
||||
// create new ByteViewerComponent
|
||||
ViewerPosition vp = getViewerPosition();
|
||||
|
||||
ByteViewerComponent c = newByteViewerComponent(model);
|
||||
c.setEditColor(editColor);
|
||||
c.setNonFocusCursorColor(ByteViewerComponentProvider.CURSOR_NOT_FOCUSED_COLOR);
|
||||
c.setCurrentCursorColor(currentCursorColor);
|
||||
c.setCurrentCursorLineColor(currentCursorLineColor);
|
||||
|
||||
c.setEditMode(editMode);
|
||||
c.setIndexMap(indexMap);
|
||||
c.setMouseButtonHighlightColor(highlightColor);
|
||||
@@ -375,9 +341,6 @@ public class ByteViewerPanel extends JPanel implements LayoutModel, LayoutListen
|
||||
}
|
||||
|
||||
void setCurrentView(ByteViewerComponent c) {
|
||||
if (currentView != null && currentView != c) {
|
||||
currentView.setFocusedCursorColor(provider.getCursorColor());
|
||||
}
|
||||
currentView = c;
|
||||
}
|
||||
|
||||
@@ -565,17 +528,6 @@ public class ByteViewerPanel extends JPanel implements LayoutModel, LayoutListen
|
||||
indexPanel.setViewerPosition(vpos.getIndex(), vpos.getXOffset(), vpos.getYOffset());
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore the configuration of the plugin.
|
||||
*
|
||||
* @param metrics font metrics
|
||||
* @param newEditColor color for showing edits
|
||||
*/
|
||||
void restoreConfigState(FontMetrics metrics, Color newEditColor) {
|
||||
setFontMetrics(metrics);
|
||||
setEditColor(newEditColor);
|
||||
}
|
||||
|
||||
void restoreConfigState(int newBytesPerLine, int offset) {
|
||||
if (blockOffset != offset) {
|
||||
blockOffset = offset;
|
||||
@@ -603,13 +555,6 @@ public class ByteViewerPanel extends JPanel implements LayoutModel, LayoutListen
|
||||
indexPanel.modelSizeChanged(IndexMapper.IDENTITY_MAPPER);
|
||||
}
|
||||
|
||||
void setEditColor(Color editColor) {
|
||||
this.editColor = editColor;
|
||||
for (ByteViewerComponent c : viewList) {
|
||||
c.setEditColor(editColor);
|
||||
}
|
||||
}
|
||||
|
||||
protected FontMetrics getFontMetrics() {
|
||||
return fontMetrics;
|
||||
}
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
@@ -20,8 +20,8 @@ import java.awt.FontMetrics;
|
||||
import java.math.BigInteger;
|
||||
|
||||
import docking.widgets.fieldpanel.field.Field;
|
||||
import docking.widgets.fieldpanel.support.Highlight;
|
||||
import docking.widgets.fieldpanel.support.FieldHighlightFactory;
|
||||
import docking.widgets.fieldpanel.support.Highlight;
|
||||
import ghidra.app.plugin.core.format.*;
|
||||
import ghidra.program.model.address.AddressOutOfBoundsException;
|
||||
|
||||
@@ -46,12 +46,6 @@ class FieldFactory {
|
||||
private int unitByteSize;
|
||||
private FieldHighlightFactory highlightFactory;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param model data format model that knows how to represent the data
|
||||
* @param fieldCount number of fields in a row
|
||||
* @param label label that is used as a renderer in the field viewer
|
||||
*/
|
||||
FieldFactory(DataFormatModel model, int bytesPerLine, int fieldOffset, FontMetrics fm,
|
||||
ByteViewerHighlighter highlightProvider) {
|
||||
this.model = model;
|
||||
@@ -60,20 +54,21 @@ class FieldFactory {
|
||||
this.highlightFactory = new SimpleHighlightFactory(highlightProvider);
|
||||
charWidth = fm.charWidth('W');
|
||||
width = charWidth * model.getDataUnitSymbolSize();
|
||||
editColor = ByteViewerComponentProvider.CHANGED_VALUE_COLOR;
|
||||
editColor = ByteViewerComponentProvider.EDITED_TEXT_COLOR;
|
||||
separatorColor = ByteViewerComponentProvider.SEPARATOR_COLOR;
|
||||
unitByteSize = model.getUnitByteSize();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the starting x position for the fields generated by this factory.
|
||||
* @param x the x position
|
||||
*/
|
||||
public void setStartX(int x) {
|
||||
startX = x;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the starting x position for the fields generated by this factory.
|
||||
* {@return the starting x position for the fields generated by this factory.}
|
||||
*/
|
||||
public int getStartX() {
|
||||
return startX;
|
||||
@@ -95,11 +90,6 @@ class FieldFactory {
|
||||
return indexMap.getBlockInfo(index, fieldOffset) != null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a Field object for the given index.
|
||||
* This method is called for the given index and the fieldOffset
|
||||
* that is defined in the constructor.
|
||||
*/
|
||||
public Field getField(BigInteger index) {
|
||||
if (indexMap == null) {
|
||||
return null;
|
||||
@@ -145,9 +135,6 @@ class FieldFactory {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the width (in pixels) of the fields generated by this factory.
|
||||
*/
|
||||
public int getWidth() {
|
||||
return width;
|
||||
}
|
||||
@@ -156,12 +143,10 @@ class FieldFactory {
|
||||
return fm;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// *** package-level methods
|
||||
///////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* Set the index map.
|
||||
*/
|
||||
//=================================================================================================
|
||||
// Package Methods
|
||||
//=================================================================================================
|
||||
|
||||
void setIndexMap(IndexMap indexMap) {
|
||||
this.indexMap = indexMap;
|
||||
if (indexMap != null) {
|
||||
@@ -191,14 +176,12 @@ class FieldFactory {
|
||||
|
||||
/**
|
||||
* Set the color used to denote changes.
|
||||
* @param c the color
|
||||
*/
|
||||
void setEditColor(Color c) {
|
||||
editColor = c;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the color that indicates gaps in memory.
|
||||
*/
|
||||
void setSeparatorColor(Color c) {
|
||||
separatorColor = c;
|
||||
}
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
@@ -157,7 +157,8 @@ public abstract class HexValueFormatModel implements UniversalDataFormatModel {
|
||||
|
||||
@Override
|
||||
public HelpLocation getHelpLocation() {
|
||||
return new HelpLocation("ByteViewerPlugin", "HexValue");
|
||||
String anchor = name.replaceAll("\\s", "");
|
||||
return new HelpLocation("ByteViewerPlugin", anchor);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
@@ -174,7 +174,7 @@ public class ByteViewerConnectedToolBehaviorTest extends AbstractGhidraHeadedInt
|
||||
|
||||
ByteViewerComponent c2 = panel2.getCurrentComponent();
|
||||
ByteField f2 = c2.getField(BigInteger.ZERO, 0);
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, f2.getForeground());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, f2.getForeground());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -204,7 +204,7 @@ public class ByteViewerConnectedToolBehaviorTest extends AbstractGhidraHeadedInt
|
||||
|
||||
ByteViewerComponent c2 = panel2.getCurrentComponent();
|
||||
ByteField f2 = c2.getField(BigInteger.ZERO, 0);
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, f2.getForeground());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, f2.getForeground());
|
||||
|
||||
undo(program);
|
||||
|
||||
|
||||
@@ -119,18 +119,18 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
public void testEditModeHex() throws Exception {
|
||||
env.showTool();
|
||||
|
||||
ToggleDockingAction action =
|
||||
ToggleDockingAction editAction =
|
||||
(ToggleDockingAction) getAction(plugin, "Enable/Disable Byteviewer Editing");
|
||||
FieldLocation loc = getFieldLocation(getAddr(0x01001000));
|
||||
runSwing(() -> {
|
||||
ByteViewerComponent c = panel.getCurrentComponent();
|
||||
c.setCursorPosition(loc.getIndex(), loc.getFieldNum(), 0, 0);
|
||||
action.setSelected(true);
|
||||
action.actionPerformed(new DefaultActionContext());
|
||||
editAction.setSelected(true);
|
||||
editAction.actionPerformed(new DefaultActionContext());
|
||||
});
|
||||
assertTrue(action.isSelected());
|
||||
assertTrue(editAction.isSelected());
|
||||
ByteViewerComponent c = panel.getCurrentComponent();
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, c.getFocusedCursorColor());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, c.getFocusedCursorColor());
|
||||
|
||||
runSwing(() -> {
|
||||
KeyEvent ev = new KeyEvent(c, 0, new Date().getTime(), 0, KeyEvent.VK_A, 'a');
|
||||
@@ -141,15 +141,15 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
waitForSwing();
|
||||
|
||||
assertEquals((byte) 0xa0, program.getMemory().getByte(getAddr(0x01001000)));
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR,
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR,
|
||||
((ByteField) c.getCurrentField()).getForeground());
|
||||
|
||||
runSwing(() -> {
|
||||
action.setSelected(false);
|
||||
action.actionPerformed(new DefaultActionContext());
|
||||
editAction.setSelected(false);
|
||||
editAction.actionPerformed(new DefaultActionContext());
|
||||
});
|
||||
assertFalse(action.isSelected());
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_ACTIVE_COLOR,
|
||||
assertFalse(editAction.isSelected());
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_COLOR_FOCUSED_NON_EDIT,
|
||||
c.getFocusedCursorColor());
|
||||
}
|
||||
|
||||
@@ -176,7 +176,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
});
|
||||
assertTrue(action.isSelected());
|
||||
ByteViewerComponent c = panel.getCurrentComponent();
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, c.getFocusedCursorColor());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, c.getFocusedCursorColor());
|
||||
|
||||
runSwing(() -> {
|
||||
KeyEvent ev = new KeyEvent(c, 0, new Date().getTime(), 0, KeyEvent.VK_A, 'a');
|
||||
@@ -189,7 +189,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
assertEquals(b, program.getMemory().getByte(addr));
|
||||
Color fg = ((ByteField) c.getCurrentField()).getForeground();
|
||||
if (fg != null) {
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_ACTIVE_COLOR, fg);
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_COLOR_FOCUSED_NON_EDIT, fg);
|
||||
}
|
||||
Window w = windowForComponent(plugin.getProvider().getComponent());
|
||||
String str = findLabelStr(w, "Tool Status");
|
||||
@@ -234,7 +234,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
assertEquals((byte) 0xa0, program.getMemory().getByte(addr));
|
||||
FieldLocation loc = getFieldLocation(addr);
|
||||
ByteField field = c.getField(loc.getIndex(), loc.getFieldNum());
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, field.getForeground());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, field.getForeground());
|
||||
|
||||
}
|
||||
|
||||
@@ -277,21 +277,21 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
assertEquals((byte) 0xa0, program.getMemory().getByte(addr));
|
||||
FieldLocation loc = getFieldLocation(addr);
|
||||
ByteField field = c.getField(loc.getIndex(), loc.getFieldNum());
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, field.getForeground());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, field.getForeground());
|
||||
|
||||
ByteViewerComponent asciiC = findComponent(panel, "Ascii");
|
||||
runSwing(() -> panel.setCurrentView(asciiC));
|
||||
|
||||
loc = getFieldLocation(addr);
|
||||
field = asciiC.getField(loc.getIndex(), loc.getFieldNum());
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, field.getForeground());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, field.getForeground());
|
||||
|
||||
ByteViewerComponent hexIntC = findComponent(panel, "Hex Integer");
|
||||
runSwing(() -> panel.setCurrentView(hexIntC));
|
||||
|
||||
loc = getFieldLocation(addr);
|
||||
field = asciiC.getField(loc.getIndex(), loc.getFieldNum());
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, field.getForeground());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, field.getForeground());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -330,7 +330,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
ByteField field = c.getField(loc.getIndex(), loc.getFieldNum());
|
||||
Color fg = field.getForeground();
|
||||
assertTrue(fg == null ||
|
||||
ByteViewerComponentProvider.CURSOR_NON_ACTIVE_COLOR == field.getForeground());
|
||||
ByteViewerComponentProvider.CURSOR_COLOR_UNFOCUSED_NON_EDIT == field.getForeground());
|
||||
|
||||
redo(program);
|
||||
program.flushEvents();
|
||||
@@ -338,7 +338,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
// field color should show edit color
|
||||
loc = getFieldLocation(addr);
|
||||
field = c.getField(loc.getIndex(), loc.getFieldNum());
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, field.getForeground());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, field.getForeground());
|
||||
|
||||
}
|
||||
|
||||
@@ -386,19 +386,19 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
FieldLocation loc2 = new FieldLocation(0, 1, 0, 0); // second byte on first line
|
||||
|
||||
undo(program);
|
||||
testFieldColor(loc1, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
testFieldColor(loc2, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
testFieldColor(loc1, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
testFieldColor(loc2, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
|
||||
undo(program);
|
||||
testFieldColor(loc1, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
testFieldColor(loc2, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
testFieldColor(loc1, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
testFieldColor(loc2, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
|
||||
undo(program);
|
||||
testFieldColor(loc1, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
testFieldColor(loc1, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
testFieldColor(loc2, null);
|
||||
|
||||
undo(program);
|
||||
testFieldColor(loc1, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
testFieldColor(loc1, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
testFieldColor(loc2, null);
|
||||
|
||||
undo(program);
|
||||
@@ -407,24 +407,24 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
assertFalse(program.canUndo());
|
||||
|
||||
redo(program);
|
||||
testFieldColor(loc1, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
testFieldColor(loc1, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
testFieldColor(loc2, null);
|
||||
|
||||
redo(program);
|
||||
testFieldColor(loc1, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
testFieldColor(loc1, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
testFieldColor(loc2, null);
|
||||
|
||||
redo(program);
|
||||
testFieldColor(loc1, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
testFieldColor(loc2, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
testFieldColor(loc1, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
testFieldColor(loc2, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
|
||||
redo(program);
|
||||
testFieldColor(loc1, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
testFieldColor(loc2, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
testFieldColor(loc1, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
testFieldColor(loc2, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
|
||||
redo(program);
|
||||
testFieldColor(loc1, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
testFieldColor(loc2, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
testFieldColor(loc1, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
testFieldColor(loc2, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
|
||||
assertTrue(program.canUndo());
|
||||
}
|
||||
@@ -467,14 +467,14 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
ByteField field = c.getField(loc.getIndex(), loc.getFieldNum());
|
||||
Color fg = field.getForeground();
|
||||
assertTrue(fg == null ||
|
||||
ByteViewerComponentProvider.CURSOR_NON_ACTIVE_COLOR == field.getForeground());
|
||||
ByteViewerComponentProvider.CURSOR_COLOR_UNFOCUSED_NON_EDIT == field.getForeground());
|
||||
|
||||
redo(program);
|
||||
|
||||
// field color should show edit color
|
||||
loc = getFieldLocation(addr);
|
||||
field = c.getField(loc.getIndex(), loc.getFieldNum());
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, field.getForeground());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, field.getForeground());
|
||||
|
||||
}
|
||||
|
||||
@@ -516,14 +516,14 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
ByteField field = c.getField(loc.getIndex(), loc.getFieldNum());
|
||||
Color fg = field.getForeground();
|
||||
assertTrue(fg == null ||
|
||||
ByteViewerComponentProvider.CURSOR_NON_ACTIVE_COLOR == field.getForeground());
|
||||
ByteViewerComponentProvider.CURSOR_COLOR_UNFOCUSED_NON_EDIT == field.getForeground());
|
||||
|
||||
redo(program);
|
||||
|
||||
// field color should show edit color
|
||||
loc = getFieldLocation(addr);
|
||||
field = c.getField(loc.getIndex(), loc.getFieldNum());
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, field.getForeground());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, field.getForeground());
|
||||
|
||||
}
|
||||
|
||||
@@ -565,14 +565,14 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
ByteField field = c.getField(loc.getIndex(), loc.getFieldNum());
|
||||
Color fg = field.getForeground();
|
||||
assertTrue(fg == null ||
|
||||
ByteViewerComponentProvider.CURSOR_NON_ACTIVE_COLOR == field.getForeground());
|
||||
ByteViewerComponentProvider.CURSOR_COLOR_UNFOCUSED_NON_EDIT == field.getForeground());
|
||||
|
||||
redo(program);
|
||||
|
||||
// field color should show edit color
|
||||
loc = getFieldLocation(addr);
|
||||
field = c.getField(loc.getIndex(), loc.getFieldNum());
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, field.getForeground());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, field.getForeground());
|
||||
|
||||
}
|
||||
|
||||
@@ -614,14 +614,14 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
ByteField field = c.getField(loc.getIndex(), loc.getFieldNum());
|
||||
Color fg = field.getForeground();
|
||||
assertTrue(fg == null ||
|
||||
ByteViewerComponentProvider.CURSOR_NON_ACTIVE_COLOR == field.getForeground());
|
||||
ByteViewerComponentProvider.CURSOR_COLOR_UNFOCUSED_NON_EDIT == field.getForeground());
|
||||
|
||||
redo(program);
|
||||
|
||||
// field color should show edit color
|
||||
loc = getFieldLocation(addr);
|
||||
field = c.getField(loc.getIndex(), loc.getFieldNum());
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, field.getForeground());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, field.getForeground());
|
||||
|
||||
}
|
||||
|
||||
@@ -676,10 +676,11 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
Color fg = field.getForeground();
|
||||
if (i == 2) {
|
||||
assertTrue(fg == null ||
|
||||
ByteViewerComponentProvider.CURSOR_NON_ACTIVE_COLOR == field.getForeground());
|
||||
ByteViewerComponentProvider.CURSOR_COLOR_UNFOCUSED_NON_EDIT == field
|
||||
.getForeground());
|
||||
}
|
||||
else {
|
||||
assertEquals(fg, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
assertEquals(fg, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
}
|
||||
}
|
||||
assertFalse(program.canUndo());
|
||||
@@ -691,7 +692,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
FieldLocation loc = c.getCursorLocation();
|
||||
ByteField field = c.getField(loc.getIndex(), loc.getFieldNum());
|
||||
Color fg = field.getForeground();
|
||||
assertEquals(fg, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
assertEquals(fg, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
}
|
||||
|
||||
assertTrue(program.canUndo());
|
||||
@@ -748,10 +749,11 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
Color fg = field.getForeground();
|
||||
if (i == 4) {
|
||||
assertTrue(fg == null ||
|
||||
ByteViewerComponentProvider.CURSOR_NON_ACTIVE_COLOR == field.getForeground());
|
||||
ByteViewerComponentProvider.CURSOR_COLOR_UNFOCUSED_NON_EDIT == field
|
||||
.getForeground());
|
||||
}
|
||||
else {
|
||||
assertEquals(fg, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
assertEquals(fg, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
}
|
||||
}
|
||||
assertFalse(program.canUndo());
|
||||
@@ -763,7 +765,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
FieldLocation loc = c.getCursorLocation();
|
||||
ByteField field = c.getField(loc.getIndex(), loc.getFieldNum());
|
||||
Color fg = field.getForeground();
|
||||
assertEquals(fg, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
assertEquals(fg, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
}
|
||||
|
||||
assertTrue(program.canUndo());
|
||||
@@ -821,10 +823,11 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
Color fg = field.getForeground();
|
||||
if (i == 8) {
|
||||
assertTrue(fg == null ||
|
||||
ByteViewerComponentProvider.CURSOR_NON_ACTIVE_COLOR == field.getForeground());
|
||||
ByteViewerComponentProvider.CURSOR_COLOR_UNFOCUSED_NON_EDIT == field
|
||||
.getForeground());
|
||||
}
|
||||
else {
|
||||
assertEquals(fg, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
assertEquals(fg, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
}
|
||||
}
|
||||
assertFalse(program.canUndo());
|
||||
@@ -836,7 +839,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
FieldLocation loc = c.getCursorLocation();
|
||||
ByteField field = c.getField(loc.getIndex(), loc.getFieldNum());
|
||||
Color fg = field.getForeground();
|
||||
assertEquals(fg, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
assertEquals(fg, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
}
|
||||
|
||||
assertTrue(program.canUndo());
|
||||
@@ -898,10 +901,11 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
Color fg = field.getForeground();
|
||||
if (i == 16) {
|
||||
assertTrue(fg == null ||
|
||||
ByteViewerComponentProvider.CURSOR_NON_ACTIVE_COLOR == field.getForeground());
|
||||
ByteViewerComponentProvider.CURSOR_COLOR_UNFOCUSED_NON_EDIT == field
|
||||
.getForeground());
|
||||
}
|
||||
else {
|
||||
assertEquals(fg, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
assertEquals(fg, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
}
|
||||
}
|
||||
assertFalse(program.canUndo());
|
||||
@@ -913,7 +917,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
FieldLocation loc = c.getCursorLocation();
|
||||
ByteField field = c.getField(loc.getIndex(), loc.getFieldNum());
|
||||
Color fg = field.getForeground();
|
||||
assertEquals(fg, ByteViewerComponentProvider.CHANGED_VALUE_COLOR);
|
||||
assertEquals(fg, ByteViewerComponentProvider.EDITED_TEXT_COLOR);
|
||||
}
|
||||
|
||||
assertTrue(program.canUndo());
|
||||
@@ -933,7 +937,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
});
|
||||
assertTrue(action.isSelected());
|
||||
ByteViewerComponent c = panel.getCurrentComponent();
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, c.getFocusedCursorColor());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, c.getFocusedCursorColor());
|
||||
byte value = program.getMemory().getByte(getAddr(0x01001000));
|
||||
runSwing(() -> {
|
||||
KeyEvent ev = new KeyEvent(c, 0, new Date().getTime(), 0, KeyEvent.VK_P, 'p');
|
||||
@@ -963,7 +967,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
});
|
||||
waitForSwing();
|
||||
assertTrue(action.isSelected());
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, c.getFocusedCursorColor());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, c.getFocusedCursorColor());
|
||||
|
||||
runSwing(() -> {
|
||||
KeyEvent ev = new KeyEvent(c, 0, new Date().getTime(), 0, KeyEvent.VK_Z, 'z');
|
||||
@@ -974,14 +978,14 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
Address addr = getAddr(0x01001000);
|
||||
assertEquals((byte) 0x7a, program.getMemory().getByte(addr));
|
||||
ByteField field = c.getField(loc.getIndex(), loc.getFieldNum());
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, field.getForeground());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, field.getForeground());
|
||||
|
||||
runSwing(() -> {
|
||||
action.setSelected(false);
|
||||
action.actionPerformed(new DefaultActionContext());
|
||||
});
|
||||
assertFalse(action.isSelected());
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_ACTIVE_COLOR,
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_COLOR_FOCUSED_NON_EDIT,
|
||||
c.getFocusedCursorColor());
|
||||
}
|
||||
|
||||
@@ -1003,7 +1007,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
action.actionPerformed(new DefaultActionContext());
|
||||
});
|
||||
assertTrue(action.isSelected());
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, c.getFocusedCursorColor());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, c.getFocusedCursorColor());
|
||||
|
||||
runSwing(() -> {
|
||||
FieldLocation loc = getFieldLocation(addr);
|
||||
@@ -1016,14 +1020,14 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
assertEquals((byte) 0x40, program.getMemory().getByte(addr));
|
||||
FieldLocation loc = getFieldLocation(addr);
|
||||
ByteField field = c.getField(loc.getIndex(), loc.getFieldNum());
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, field.getForeground());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, field.getForeground());
|
||||
|
||||
runSwing(() -> {
|
||||
action.setSelected(false);
|
||||
action.actionPerformed(new DefaultActionContext());
|
||||
});
|
||||
assertFalse(action.isSelected());
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_ACTIVE_COLOR,
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_COLOR_FOCUSED_NON_EDIT,
|
||||
c.getFocusedCursorColor());
|
||||
}
|
||||
|
||||
@@ -1045,7 +1049,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
action.actionPerformed(new DefaultActionContext());
|
||||
});
|
||||
assertTrue(action.isSelected());
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, c.getFocusedCursorColor());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, c.getFocusedCursorColor());
|
||||
|
||||
byte value = program.getMemory().getByte(getAddr(0x01001000));
|
||||
runSwing(() -> {
|
||||
@@ -1075,7 +1079,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
action.actionPerformed(new DefaultActionContext());
|
||||
});
|
||||
assertTrue(action.isSelected());
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, c.getFocusedCursorColor());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, c.getFocusedCursorColor());
|
||||
|
||||
runSwing(() -> {
|
||||
KeyEvent ev = new KeyEvent(c, 0, new Date().getTime(), 0, KeyEvent.VK_1, '1');
|
||||
@@ -1084,7 +1088,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
});
|
||||
program.flushEvents();
|
||||
assertEquals((byte) 0x10, program.getMemory().getByte(getAddr(0x01001003)));
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR,
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR,
|
||||
((ByteField) c.getCurrentField()).getForeground());
|
||||
|
||||
runSwing(() -> {
|
||||
@@ -1092,7 +1096,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
action.actionPerformed(new DefaultActionContext());
|
||||
});
|
||||
assertFalse(action.isSelected());
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_ACTIVE_COLOR,
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_COLOR_FOCUSED_NON_EDIT,
|
||||
c.getFocusedCursorColor());
|
||||
}
|
||||
|
||||
@@ -1114,7 +1118,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
action.actionPerformed(new DefaultActionContext());
|
||||
});
|
||||
assertTrue(action.isSelected());
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, c.getFocusedCursorColor());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, c.getFocusedCursorColor());
|
||||
|
||||
runSwing(() -> {
|
||||
KeyEvent ev = new KeyEvent(c, 0, new Date().getTime(), 0, KeyEvent.VK_1, '1');
|
||||
@@ -1123,7 +1127,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
});
|
||||
program.flushEvents();
|
||||
assertEquals((byte) 0x10, program.getMemory().getByte(getAddr(0x01001003)));
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR,
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR,
|
||||
((ByteField) c.getCurrentField()).getForeground());
|
||||
|
||||
runSwing(() -> {
|
||||
@@ -1131,7 +1135,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
action.actionPerformed(new DefaultActionContext());
|
||||
});
|
||||
assertFalse(action.isSelected());
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_ACTIVE_COLOR,
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_COLOR_FOCUSED_NON_EDIT,
|
||||
c.getFocusedCursorColor());
|
||||
}
|
||||
|
||||
@@ -1153,7 +1157,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
action.actionPerformed(new DefaultActionContext());
|
||||
});
|
||||
assertTrue(action.isSelected());
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, c.getFocusedCursorColor());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, c.getFocusedCursorColor());
|
||||
|
||||
runSwing(() -> {
|
||||
KeyEvent ev = new KeyEvent(c, 0, new Date().getTime(), 0, KeyEvent.VK_1, '1');
|
||||
@@ -1162,7 +1166,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
});
|
||||
program.flushEvents();
|
||||
assertEquals((byte) 0x10, program.getMemory().getByte(getAddr(0x01001003)));
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR,
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR,
|
||||
((ByteField) c.getCurrentField()).getForeground());
|
||||
|
||||
runSwing(() -> {
|
||||
@@ -1170,7 +1174,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
action.actionPerformed(new DefaultActionContext());
|
||||
});
|
||||
assertFalse(action.isSelected());
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_ACTIVE_COLOR,
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_COLOR_FOCUSED_NON_EDIT,
|
||||
c.getFocusedCursorColor());
|
||||
}
|
||||
|
||||
@@ -1192,7 +1196,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
action.actionPerformed(new DefaultActionContext());
|
||||
});
|
||||
assertTrue(action.isSelected());
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, c.getFocusedCursorColor());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, c.getFocusedCursorColor());
|
||||
|
||||
runSwing(() -> {
|
||||
KeyEvent ev = new KeyEvent(c, 0, new Date().getTime(), 0, KeyEvent.VK_1, '1');
|
||||
@@ -1201,7 +1205,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
});
|
||||
program.flushEvents();
|
||||
assertEquals((byte) 0x10, program.getMemory().getByte(getAddr(0x01001003)));
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR,
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR,
|
||||
((ByteField) c.getCurrentField()).getForeground());
|
||||
|
||||
runSwing(() -> {
|
||||
@@ -1209,7 +1213,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
action.actionPerformed(new DefaultActionContext());
|
||||
});
|
||||
assertFalse(action.isSelected());
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_ACTIVE_COLOR,
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_COLOR_FOCUSED_NON_EDIT,
|
||||
c.getFocusedCursorColor());
|
||||
}
|
||||
|
||||
@@ -1260,7 +1264,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
// verify that the bytes are rendered in red
|
||||
FieldLocation loc = getFieldLocation(addr);
|
||||
ByteField field = c.getField(loc.getIndex(), loc.getFieldNum());
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR, field.getForeground());
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR, field.getForeground());
|
||||
addr = addr.add(i);
|
||||
}
|
||||
}
|
||||
@@ -1655,7 +1659,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
|
||||
Options opt = tool.getOptions("ByteViewer");
|
||||
// change the color for Current View Cursor Color
|
||||
putColor(opt, ByteViewerComponentProvider.CURSOR_ACTIVE_COLOR_OPTION_NAME, Palette.GREEN);
|
||||
putColor(opt, ByteViewerComponentProvider.CURSOR_FOCUSED_COLOR_OPTION_NAME, Palette.GREEN);
|
||||
|
||||
ByteViewerComponent c = panel.getCurrentComponent();
|
||||
assertColorsEqual(Palette.GREEN, c.getFocusedCursorColor());
|
||||
@@ -1675,7 +1679,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
|
||||
Options opt = tool.getOptions("ByteViewer");
|
||||
// change the color for Current View Cursor Color
|
||||
putColor(opt, ByteViewerComponentProvider.CURSOR_NOT_FOCUSED_COLOR_OPTION_NAME,
|
||||
putColor(opt, ByteViewerComponentProvider.CURSOR_UNFOCUSED_COLOR_OPTION_NAME,
|
||||
Palette.GREEN);
|
||||
|
||||
ByteViewerComponent c = findComponent(panel, "Octal");
|
||||
@@ -1695,7 +1699,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
|
||||
Options opt = tool.getOptions("ByteViewer");
|
||||
// change the color for Current View Cursor Color
|
||||
putColor(opt, ByteViewerComponentProvider.CURSOR_NOT_FOCUSED_COLOR_OPTION_NAME,
|
||||
putColor(opt, ByteViewerComponentProvider.CURSOR_UNFOCUSED_COLOR_OPTION_NAME,
|
||||
Palette.CYAN);
|
||||
|
||||
ByteViewerComponent c = findComponent(panel, "Octal");
|
||||
@@ -1716,7 +1720,7 @@ public class ByteViewerPlugin2Test extends AbstractGhidraHeadedIntegrationTest {
|
||||
|
||||
Options opt = tool.getOptions("ByteViewer");
|
||||
// change the color for Edit Color
|
||||
putColor(opt, ByteViewerComponentProvider.CHANGED_VALUE_COLOR_OPTION_NAME, Palette.GREEN);
|
||||
putColor(opt, ByteViewerComponentProvider.EDIT_TEXT_COLOR_OPTION_NAME, Palette.GREEN);
|
||||
|
||||
FieldLocation loc = getFieldLocation(getAddr(0x01001000));
|
||||
runSwing(() -> {
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
@@ -292,7 +292,7 @@ public class ByteViewerPluginFormatsTest extends AbstractGhidraHeadedIntegration
|
||||
hexComp.setCursorPosition(l.getIndex(), l.getFieldNum(), 0, 0);
|
||||
});
|
||||
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR,
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR,
|
||||
((ByteField) hexComp.getCurrentField()).getForeground());
|
||||
}
|
||||
|
||||
@@ -351,7 +351,7 @@ public class ByteViewerPluginFormatsTest extends AbstractGhidraHeadedIntegration
|
||||
hexComp.setCursorPosition(l.getIndex(), l.getFieldNum(), 0, 0);
|
||||
});
|
||||
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR,
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR,
|
||||
((ByteField) hexComp.getCurrentField()).getForeground());
|
||||
}
|
||||
|
||||
@@ -410,7 +410,7 @@ public class ByteViewerPluginFormatsTest extends AbstractGhidraHeadedIntegration
|
||||
hexComp.setCursorPosition(l.getIndex(), l.getFieldNum(), 0, 0);
|
||||
});
|
||||
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR,
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR,
|
||||
((ByteField) hexComp.getCurrentField()).getForeground());
|
||||
}
|
||||
|
||||
@@ -469,7 +469,7 @@ public class ByteViewerPluginFormatsTest extends AbstractGhidraHeadedIntegration
|
||||
hexComp.setCursorPosition(l.getIndex(), l.getFieldNum(), 0, 0);
|
||||
});
|
||||
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR,
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR,
|
||||
((ByteField) hexComp.getCurrentField()).getForeground());
|
||||
}
|
||||
|
||||
@@ -519,7 +519,7 @@ public class ByteViewerPluginFormatsTest extends AbstractGhidraHeadedIntegration
|
||||
// does not support editing
|
||||
Color fg = ((ByteField) c.getCurrentField()).getForeground();
|
||||
if (fg != null) {
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_ACTIVE_COLOR, fg);
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_COLOR_FOCUSED_NON_EDIT, fg);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -568,7 +568,7 @@ public class ByteViewerPluginFormatsTest extends AbstractGhidraHeadedIntegration
|
||||
// does not support editing
|
||||
Color fg = ((ByteField) c.getCurrentField()).getForeground();
|
||||
if (fg != null) {
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_ACTIVE_COLOR, fg);
|
||||
assertEquals(ByteViewerComponentProvider.CURSOR_COLOR_FOCUSED_NON_EDIT, fg);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -613,7 +613,7 @@ public class ByteViewerPluginFormatsTest extends AbstractGhidraHeadedIntegration
|
||||
intComp.setCursorPosition(l.getIndex(), l.getFieldNum(), 0, 0);
|
||||
});
|
||||
// color should indicate the edit
|
||||
assertEquals(ByteViewerComponentProvider.CHANGED_VALUE_COLOR,
|
||||
assertEquals(ByteViewerComponentProvider.EDITED_TEXT_COLOR,
|
||||
((ByteField) intComp.getCurrentField()).getForeground());
|
||||
}
|
||||
|
||||
@@ -930,7 +930,7 @@ public class ByteViewerPluginFormatsTest extends AbstractGhidraHeadedIntegration
|
||||
Component[] c = container.getComponents();
|
||||
for (Component element : c) {
|
||||
if (element instanceof JLabel) {
|
||||
if (name.equals(((JLabel) element).getName())) {
|
||||
if (name.equals(element.getName())) {
|
||||
return ((JLabel) element).getText();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ color.fg.glasspane.message = color.palette.lightcornflowerblue
|
||||
color.bg.selection = color.palette.palegreen
|
||||
color.bg.highlight = color.palette.lemonchiffon
|
||||
|
||||
color.bg.currentline = color.palette.aliceblue
|
||||
color.bg.currentline = color.palette.lightcyan
|
||||
|
||||
color.bg.find.highlight = #FFF38E // light yellow
|
||||
color.bg.find.highlight.active = #FFC55B // light orange
|
||||
@@ -197,6 +197,8 @@ color.bg.find.highlight.active = #BC7474 // rosybrown
|
||||
|
||||
color.bg.highlight = #67582A // olivish
|
||||
|
||||
color.bg.currentline = ##393D64 // gray purple
|
||||
|
||||
color.bg.filechooser.shortcut = [color]system.color.bg.view
|
||||
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ color.palette.khaki = khaki
|
||||
color.palette.lavender = lavender
|
||||
color.palette.lemonchiffon = lemonchiffon
|
||||
color.palette.lightcoral = lightcoral
|
||||
color.palette.lightcyan = lightcyan
|
||||
color.palette.lightgray = rgb(192, 192, 192)
|
||||
color.palette.lightgreen = rgb(127, 255, 127)
|
||||
color.palette.lightpink = lightpink
|
||||
|
||||
Reference in New Issue
Block a user