@Override
	public void load(T dataType) {
		Objects.requireNonNull(dataType);

		DataTypeManager dtm = dataType.getDataTypeManager();
		if (dtm == null) {
			throw new IllegalArgumentException(
				"Datatype " + dataType.getName() + " doesn't have a data type manager specified.");
		}

		long lastCompositeId = originalCompositeId;

		if (isEditingField()) {
			endFieldEditing();
		}

		if (isLoaded()) {
			unload();
		}

		// DataType should be a Composite.
		originalDTM = dtm;
		originalCompositeId = originalDTM.getID(dataType);
		originalComposite = dataType;
		originalDataTypePath = originalComposite.getDataTypePath();
		currentName = dataType.getName();

		createViewCompositeFromOriginalComposite();

		// Listen so we can update editor if name changes for this structure.
		originalDTM.addDataTypeManagerListener(this);

		hasChanges = false;

		if (originalCompositeId == DataTypeManager.NULL_DATATYPE_ID ||
			lastCompositeId != originalCompositeId) {
			// only clear the selection if loading a new type
			setSelection(new FieldSelection());
		}

		clearStatus();
		compositeInfoChanged();
		fireTableDataChanged();
		componentDataChanged();

		editorStateChanged(CompositeEditorModelListener.COMPOSITE_LOADED);
	}
Reload from view composite and retain current edit state
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/CompositeEditorModel.java