private void setupExplicitPackingButtonAndTextField() {
		explicitPackingButton = new GRadioButton();
		explicitPackingButton.setName("Explicit Packing");

		explicitPackingTextField = new GFormattedTextField(new DefaultFormatterFactory(), "");
		explicitPackingTextField.setName("Packing Value");
		explicitPackingTextField.setEditable(true);

		String packingToolTipText =
			"<html>Indicates an explicit pack size should be applied.</html>";
		explicitPackingButton.setToolTipText(packingToolTipText);
		explicitPackingTextField.setToolTipText(packingToolTipText);

		provider.registerHelp(explicitPackingButton, "Pack");
		provider.registerHelp(explicitPackingTextField, "Pack");

		// As a convenience, when this radio button is focused, change focus to the editor field
		explicitPackingButton.addFocusListener(new FocusAdapter() {
			@Override
			public void focusGained(FocusEvent e) {
				explicitPackingTextField.requestFocus();
			}
		});

		explicitPackingButton.addActionListener(e -> chooseByValuePacking());

		explicitPackingTextField.setInputVerifier(new InputVerifier() {
			@Override
			public boolean verify(JComponent input) {
				return decodeUnsignedIntEntry(explicitPackingTextField, "pack value", false) > 0;
			}
		});

		explicitPackingTextField.addKeyListener(
			new UpAndDownKeyListener(defaultPackingButton, defaultPackingButton));

		explicitPackingTextField.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
					e.consume();
					// revert to model state when escape is hit
					refreshGUIPackingValue();
				}
			}
		});

		explicitPackingTextField.addTextEntryStatusListener(c -> provider.contextChanged());

		explicitPackingTextField.addActionListener(e -> adjustPackingValue());

		explicitPackingTextField.addFocusListener(new FocusListener() {
			@Override
			public void focusGained(FocusEvent e) {
				if (explicitPackingButton.isSelected()) {
					return;
				}
				explicitPackingButton.setSelected(true);
				chooseByValuePacking();
			}

			@Override
			public void focusLost(FocusEvent e) {
				adjustPackingValue();
			}
		});

	}
Create the Info Panel that is horizontally resizable. The panel contains
the name, category, data type, size, and edit mode for the current
structure in the editor.

@return JPanel the completed composite data type information panel
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/CompEditorPanel.java