GP-7156 - Added wrapping to grouped array values

This commit is contained in:
dragonmacher
2026-08-21 19:13:53 -04:00
parent 9f9821e1d7
commit e0aae029a2
3 changed files with 12 additions and 11 deletions

View File

@@ -61,7 +61,7 @@ public class CreateBookmarkDialog extends DialogComponentProvider {
initializeDescription(cu);
setFocusComponent(categoryComboBox);
setFocusComponent(descriptionTextField);
setHelpLocation(new HelpLocation("BookmarkPlugin", "CreateBookmarkDialog"));
}

View File

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

View File

@@ -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(',');