@Override
	protected Component buildInlineEditorComponent() {
		JPanel editorPanel = new JPanel(new BorderLayout());
		statusLabel = new GDHtmlLabel();
		statusLabel.setHorizontalAlignment(SwingConstants.CENTER);

		taskMonitorComponent = new TaskMonitorComponent();

		reloadDataButton = new EmptyBorderButton(Icons.REFRESH_ICON);
		reloadDataButton.setToolTipText("Reload column data");
		reloadDataButton.addActionListener(e -> loadData());

		viewLayout = new CardLayout();
		viewPanel = new JPanel(viewLayout);
		viewPanel.add(taskMonitorComponent, TASK_VIEW);

		Component editorComponent = buildDelegateInlineEditor();
		if (editorComponent != null) {
			editorPanel.add(editorComponent, BorderLayout.CENTER);
			viewPanel.add(editorPanel, EDITOR_VIEW);
			hasInlineEditorComponent = true;
		}

		JPanel buttonPanel = new JPanel(new ColumnLayout(2, 2, 1));
		buttonPanel.setBorder(BorderFactory.createEmptyBorder(2, 0, 2, 0));
		buttonPanel.add(reloadDataButton);

		JPanel panel = new JPanel(new BorderLayout());
		panel.add(viewPanel, BorderLayout.CENTER);
		panel.add(buttonPanel, BorderLayout.EAST);
		panel.add(statusLabel, BorderLayout.SOUTH);
		return panel;
	}
{@inheritDoc}
<p>
This editor provides a panel containing a {@link TaskMonitorComponent} and the ability
to reload the columns' data; if the delegate editor provides an inline editor, this
wraps it, and switches between task view and the editor depending on the executing
state of the data-load task.

@see DataLoadingConstraintEditor#buildDelegateInlineEditor()
Ghidra/Framework/Docking/src/main/java/docking/widgets/table/constrainteditor/DataLoadingConstraintEditor.java