public void setButtonStates(List<ButtonState<T>> buttonStates) {
		this.buttonStates = buttonStates;
		if (buttonStates.size() == 1) {
			arrowIcon = Icons.EMPTY_ICON;
			disabledArrowIcon = Icons.EMPTY_ICON;
			setHorizontalAlignment(SwingConstants.CENTER); // center text if no drop-down menu
		}
		else {
			arrowIcon = new ArrowIcon();
			disabledArrowIcon = ResourceManager.getDisabledIcon(arrowIcon);
			setHorizontalAlignment(SwingConstants.LEFT); // align left if we have drop-down menu
		}
		setCurrentButtonState(buttonStates.get(0));
		arrowButtonRegion = createArrowRegion();
	}
A button that has a drop-down list of choosable {@link ButtonState}s. When a state is selected,
it changes the behavior of the action associated with the button. This code is based on code 
for the {@link MultipleActionDockingToolbarButton}.

@param <T> The type of the user data associated with the {@link ButtonState}s
Ghidra/Framework/Docking/src/main/java/docking/menu/MultiStateButton.java