package com.fine.theme.utils; import com.finebi.cbb.utils.StringUtils; import javax.swing.JComponent; /** * UI样式工具 * * @author vito * @since 11.0 * Created on 2024/1/4 */ public interface FineUIStyle { String IN_TOOLBAR_GROUP = "inToolbarGroup"; String STYLE_PRIMARY = "primary"; String STYLE_SECONDARY = "secondary"; String STYLE_TEXT = "text"; String STYLE_SIZE_MEDIUM = "mediumSize"; String STYLE_SIZE_SMALL = "smallSize"; String MENU_BAR = "menuBar"; String LIGHT_GREY = "lightGrey"; String IN_TOOLBAR_LEFT = "inToolbarLeft"; String IN_TOOLBAR_RIGHT = "inToolbarRight"; String NORMAL_COLOR = "normalColor"; String TOP_TOOLS = "topTools"; String BRAND_COLOR_LABEL = "brandColorLabel"; String BUTTON_TAB_ACTION = "tabAction"; String LABEL_BOLD = "boldLabel"; String LABEL_TIP = "tipLabel"; String LABEL_WARNING_TIP = "warningTipLabel"; String PLAIN_BUTTON = "plainButton"; String TOGGLE_GROUP = "inToggleGroup"; String COMPACT_BUTTON = "compactButton"; String MENU_TOOL_BAR = "menuToolBar"; String MENU_ITEM_TOOL_BAR = "menuItemToolBar"; String POPUP_MENU_TOOL_BAR = "popupMenuToolBar"; String POPUP_MENU_DROPDOWN = "dropdownPopupMenu"; String TRANSPARENT_TEXT_FIELD = "transparentTextField"; String PURE_LIST = "pureList"; String PURE_TREE = "pureTree"; String PASTEL_BUTTON = "pastelButton"; /** * 添加组件的样式类,类似css,该方法会接在原样式后方 * * FineClientProperties.appendStyle("primary small") * * * @param it 组件 * @param styleClass 样式字符串,支持连续添加类,用空格 */ static void appendStyle(JComponent it, String styleClass) { Object oriProperty = it.getClientProperty(FineClientProperties.STYLE_CLASS); if (oriProperty instanceof String && StringUtils.isNotBlank((String) oriProperty)) { styleClass = oriProperty + " " + styleClass; } it.putClientProperty(FineClientProperties.STYLE_CLASS, styleClass); } /** * 设置组件的样式类,类似css,该方法会替换原样式 * * FineClientProperties.setStyle("primary small") * * * @param jComponent 组件 * @param styleClass 样式字符串,支持连续添加类,用空格 */ static void setStyle(JComponent jComponent, String styleClass) { jComponent.putClientProperty(FineClientProperties.STYLE_CLASS, styleClass); } /** * 样式组合 * * @param styleClasses 所有样式 * @return 样式列表 */ static String joinStyle(String... styleClasses) { final StringBuilder sb = new StringBuilder(); for (final String style : styleClasses) { if (style == null) { continue; } if (sb.length() > 0) { sb.append(" "); } sb.append(style); } return sb.toString(); } /** * 包含样式 * * @param jComponent 组件 * @param styleClass 样式 * @return 是否包含指定的样式 */ static boolean hasStyle(JComponent jComponent, String styleClass) { Object style = jComponent.getClientProperty(FineClientProperties.STYLE_CLASS); if (style instanceof String && StringUtils.isNotBlank((String) style)) { return ((String) style).contains(styleClass); } return false; } }