private void setCursor(int x, int y) {
		int row = y / rowHeight;
		curRow = -1;
		curCol = -1;
		state = CursorState.NOWHERE;
		if (row < model.getNumRows()) {
			curRow = row;
			int startX = 0;
			FieldFactory[] fields = model.getFactorys(row);
			for (int col = 0; col < fields.length; col++) {
				int width = fields[col].getWidth();
				if (x < startX + width) {
					state = CursorState.OVER_FIELD;
					curCol = col;
					if ((col > 0) && (x < startX + FUDGE)) {
						state = CursorState.NEAR_EDGE;
						edgeCol = col - 1;
					}
					else if (x > startX + width - FUDGE) {
						state = CursorState.NEAR_EDGE;
						edgeCol = col;
					}
					break;
				}
				startX += width;
			}
		}

		switch (state) {
			case OVER_FIELD:
				setCursor(defaultCursor);
				break;
			case NEAR_EDGE:
				setCursor(resizeCursor);
				break;
			default:
				setCursor(defaultCursor);
				break;

		}
	}
Sets the cursor shape that appropriate for the given location.  If the location
is near a boundary, then the cursor will change to a RESIZE shape, otherwise
it will be the default cursor.
Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/format/FieldHeaderComp.java