protected void populateComponents() {
			JPanel panel = new JPanel(new GridBagLayout());
			panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));

			panel.add(label("Find"), cell(0, 0, 1, false));
			panel.add(txtFind, cell(0, 1, 1, true));

			panel.add(cbCaseSensitive, cell(2, 0, 2, true));
			panel.add(cbWrapSearch, cell(3, 0, 2, true));
			panel.add(cbWholeWord, cell(4, 0, 2, true));
			panel.add(cbRegex, cell(5, 0, 2, true));

			addWorkPanel(panel);

			addButton(btnFindNext);
			addButton(btnFindPrevious);
			addDismissButton();
			setDefaultButton(btnFindNext);

			txtFind.getDocument().addDocumentListener(new DocumentListener() {
				@Override
				public void insertUpdate(DocumentEvent e) {
					contextChanged();
					btnFindNext.setEnabled(isEnabledFindStep(null));
					btnFindPrevious.setEnabled(isEnabledFindStep(null));
				}

				@Override
				public void removeUpdate(DocumentEvent e) {
					contextChanged();
					btnFindNext.setEnabled(isEnabledFindStep(null));
					btnFindPrevious.setEnabled(isEnabledFindStep(null));
				}

				@Override
				public void changedUpdate(DocumentEvent e) {
					contextChanged();
					btnFindNext.setEnabled(isEnabledFindStep(null));
					btnFindPrevious.setEnabled(isEnabledFindStep(null));
				}
			});
			btnFindNext.addActionListener(evt -> {
				activatedFindNext(null);
			});
			btnFindPrevious.addActionListener(evt -> {
				activatedFindPrevious(null);
			});
		}
A window holding a VT100 terminal emulator.

<p>
This also provides UI actions for searching the terminal's contents.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/terminal/TerminalProvider.java