private void setupDescription() {
		GridBagConstraints gridBagConstraints = new GridBagConstraints();

		JLabel descriptionLabel = new GDLabel("Description:");
		gridBagConstraints.insets = LEFT_INSETS;
		gridBagConstraints.anchor = GridBagConstraints.LINE_END;
		gridBagConstraints.fill = GridBagConstraints.NONE;
		gridBagConstraints.weightx = 0;
		gridBagConstraints.gridx = 0;
		gridBagConstraints.gridy = 2;
		infoPanel.add(descriptionLabel, gridBagConstraints);

		descriptionTextField = new GFormattedTextField(new DefaultFormatterFactory(), "");
		descriptionTextField.setToolTipText("Structure Description");
		descriptionTextField.setEditable(true);

		gridBagConstraints.insets = VERTICAL_INSETS;
		gridBagConstraints.anchor = GridBagConstraints.LINE_START;
		gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
		gridBagConstraints.weightx = 1;
		gridBagConstraints.gridx = 1;
		gridBagConstraints.gridy = 2;
		gridBagConstraints.gridwidth = 4;
		infoPanel.add(descriptionTextField, gridBagConstraints);

		provider.registerHelp(descriptionTextField, "Description");

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

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

		descriptionTextField.addActionListener(e -> updatedDescription());

		descriptionTextField.addFocusListener(new FocusAdapter() {
			@Override
			public void focusLost(FocusEvent e) {
				updatedDescription();
			}
		});
	}
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