@Override
	public void selectionChanged() {
		int[] tRows = table.getSelectedRows();
		int[] mRows = model.getSelectedRows();
		if (Arrays.equals(tRows, mRows)) {
			return;
		}
		FieldSelection fs = model.getSelection();
		ListSelectionModel lsm = table.getSelectionModel();
		ListSelectionModel clsm = table.getColumnModel().getSelectionModel();

		lsm.clearSelection();
		int num = fs.getNumRanges();
		for (int i = 0; i < num; i++) {
			FieldRange range = fs.getFieldRange(i);
			BigInteger startIndex = range.getStart().getIndex();
			BigInteger endIndex = range.getEnd().getIndex();
			lsm.addSelectionInterval(startIndex.intValue(), endIndex.intValue() - 1);
		}
		int modelColumn = model.getColumn();
		int viewColumn = table.convertColumnIndexToView(modelColumn);
		clsm.setSelectionInterval(viewColumn, viewColumn);
	}
CompositeEditorModelListener method called to handle lock/unlock or
structure modification state change.
This could also get called by a structure load or unload.

@param type the type of state change: COMPOSITE_MODIFIED, COMPOSITE_UNMODIFIED,
COMPOSITE_LOADED, NO_COMPOSITE_LOADED.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/CompositeEditorPanel.java