package ilarkesto.ui; import ilarkesto.base.StringProvider; public final class Option<T> { public static final String KEY_CANCEL = "_cancel"; public String getKey() { return key; } public String getIcon() { return icon; } public String getLabel() { return label; } public T getPayload() { return payload; } public boolean isGroup() { return group; } public String getTooltip() { return tooltip; } @Override public boolean equals(Object obj) { return key.equals(((Option) obj).getKey()); } @Override public int hashCode() { return key.hashCode(); } @Override public String toString() { return label; } // --- dependencies --- private String key; private String label; private String icon; private String tooltip; private T payload; private boolean group; public Option(String key, String label, String icon, T payload) { this.key = key; this.label = label; this.icon = icon; this.payload = payload; } public Option(String key, String label, String icon) { this(key, label, icon, null); } public void setTooltip(String tooltip) { this.tooltip = tooltip; } public void setGroup(boolean group) { this.group = group; } // --- tooltip StringProvider --- public static final OptionTooltipStringProvider OPTION_TOOLTIP_STRING_PROVIDER = new OptionTooltipStringProvider(); public static class OptionTooltipStringProvider<T> implements StringProvider<Option<T>> { @Override public String getString(Option<T> o) { return o.getTooltip(); } } }