mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-25 17:00:36 -09:00
GP-7156 - Added wrapping to grouped array values
This commit is contained in:
@@ -61,7 +61,7 @@ public class CreateBookmarkDialog extends DialogComponentProvider {
|
||||
|
||||
initializeDescription(cu);
|
||||
|
||||
setFocusComponent(categoryComboBox);
|
||||
setFocusComponent(descriptionTextField);
|
||||
setHelpLocation(new HelpLocation("BookmarkPlugin", "CreateBookmarkDialog"));
|
||||
}
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ class CreateArrayAction extends ListingContextAction {
|
||||
private static final KeyStroke DEFAULT_KEY_STROKE =
|
||||
KeyStroke.getKeyStroke(KeyEvent.VK_OPEN_BRACKET, 0);
|
||||
private static final String[] CREATE_ARRAY_POPUP_MENU =
|
||||
new String[] { "Data", "Create Array..." };
|
||||
new String[] { "Data", "Create Array" };
|
||||
|
||||
private DataPlugin plugin;
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@ import java.util.List;
|
||||
|
||||
import docking.widgets.fieldpanel.field.*;
|
||||
import docking.widgets.fieldpanel.support.FieldLocation;
|
||||
import docking.widgets.fieldpanel.support.FieldUtils;
|
||||
import docking.widgets.fieldpanel.support.RowColLocation;
|
||||
import ghidra.app.util.ListingHighlightProvider;
|
||||
import ghidra.app.util.viewer.format.FieldFormatModel;
|
||||
@@ -103,16 +102,17 @@ public class ArrayValuesFieldFactory extends FieldFactory {
|
||||
|
||||
List<FieldElement> elements = new ArrayList<>();
|
||||
for (int i = 0; i < itemCount; i++) {
|
||||
Data child = parent.getComponent(index++);
|
||||
Data child = parent.getComponent(index);
|
||||
boolean isLastItem = isLastLine && (i == itemCount - 1);
|
||||
String value = getDisplayValue(child, !isLastItem);
|
||||
AttributedString as =
|
||||
new AttributedString(value, ListingColors.ARRAY_VALUES, getMetrics());
|
||||
TextFieldElement element = new TextFieldElement(as, i, 0);
|
||||
elements.addAll(FieldUtils.wrap(element, width, false));
|
||||
elements.add(element);
|
||||
}
|
||||
|
||||
return ListingTextField.createPackedTextField(this, proxy,
|
||||
elements.toArray(new FieldElement[0]), startX + varWidth, width, Integer.MAX_VALUE,
|
||||
elements.toArray(new FieldElement[0]), startX + varWidth, width, valuesPerLine,
|
||||
hlProvider);
|
||||
|
||||
}
|
||||
@@ -120,11 +120,12 @@ public class ArrayValuesFieldFactory extends FieldFactory {
|
||||
private String getDisplayValue(Data data, boolean addDelimeter) {
|
||||
DataType dt = data.getDataType();
|
||||
int minLength = data.getLength() * 3 + 1; // this just seems a decent minimum size
|
||||
StringBuffer buf = new StringBuffer(dt.getRepresentation(data, data, data.getLength()));
|
||||
if (buf.length() < minLength) {
|
||||
for (int i = buf.length(); i < minLength; i++) {
|
||||
buf.insert(0, ' ');
|
||||
}
|
||||
String representation = dt.getRepresentation(data, data, data.getLength());
|
||||
StringBuilder buf = new StringBuilder(representation);
|
||||
|
||||
// pad to minimum length for readability
|
||||
for (int i = buf.length(); i < minLength; i++) {
|
||||
buf.insert(0, ' ');
|
||||
}
|
||||
if (addDelimeter) {
|
||||
buf.append(',');
|
||||
|
||||
Reference in New Issue
Block a user