@Override
		public void setValueAt(Object aValue, int row, int column) {
			if (column != NAME_COL) {
				return;
			}

			String newName = ((String) aValue).trim();
			ExternalNamesRow path = paths.get(row);
			if (StringUtils.isBlank(newName) || path.getName().equals(newName)) {
				return;
			}

			if (rowAlreadyExists(newName)) {
				Msg.showInfo(getClass(), mainPanel, "Duplicate Name",
					"Name already exists: " + newName);
				return;
			}

			rowToHighlightDuringNextReload = newName;
			String oldName = path.getName();
			Command<Program> cmd =
				new UpdateExternalNameCmd(oldName, newName, SourceType.USER_DEFINED);
			if (!tool.execute(cmd, program)) {
				tool.setStatusInfo(cmd.getStatusMsg());
			}
		}
ComponentProvider that displays a table of External Programs.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/references/ExternalReferencesProvider.java