|
|
|
package com.fr.design.utils.gui;
|
|
|
|
|
|
|
|
import com.fr.base.Style;
|
|
|
|
import com.fr.base.background.ColorBackground;
|
|
|
|
import com.fr.design.base.mode.DesignModeContext;
|
|
|
|
import com.fr.report.cell.CellElement;
|
|
|
|
import com.fr.report.cell.FloatElement;
|
|
|
|
|
|
|
|
import java.awt.Color;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author shine
|
|
|
|
* @version 10.0
|
|
|
|
* Created by shine on 2021/9/6
|
|
|
|
*/
|
|
|
|
public class AdjustWorkBookDefaultStyleUtils {
|
|
|
|
|
|
|
|
private static final Color TEMPLATE_BACKGROUND = new Color(16, 11, 43);
|
|
|
|
private static final Color CELL_ELEMENT_BORDER = new Color(110, 110, 110);
|
|
|
|
private static final Color CELL_ELEMENT_FONT_FOREGROUND = Color.WHITE;
|
|
|
|
private static final Color CELL_ELEMENT_FONT_FOREGROUND_4_LIGHT_THEME = Color.BLACK;
|
|
|
|
|
|
|
|
private static Color currentStoryBack = null;
|
|
|
|
private static boolean isDarkTheme = true;
|
|
|
|
|
|
|
|
public static void setCurrentStoryBack(Color color) {
|
|
|
|
currentStoryBack = color;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void setIsDarkTheme(boolean isDarkTheme) {
|
|
|
|
AdjustWorkBookDefaultStyleUtils.isDarkTheme = isDarkTheme;
|
|
|
|
}
|
|
|
|
|
|
|
|
private static Color getCellForegroundColor() {
|
|
|
|
return isDarkTheme ? CELL_ELEMENT_FONT_FOREGROUND : CELL_ELEMENT_FONT_FOREGROUND_4_LIGHT_THEME;
|
|
|
|
}
|
|
|
|
|
|
|
|
private static Color getCurrentStoryBack() {
|
|
|
|
return currentStoryBack == null ? TEMPLATE_BACKGROUND : currentStoryBack;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void adjustCellElement(CellElement cellElement) {
|
|
|
|
if (DesignModeContext.isDuchampMode()) {
|
|
|
|
Style style = cellElement.getStyle();
|
|
|
|
style = adjustCellElement(style);
|
|
|
|
cellElement.setStyle(style);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static Style adjustCellElement(Style style) {
|
|
|
|
if (DesignModeContext.isDuchampMode()) {
|
|
|
|
style = style.deriveFRFont(style.getFRFont().applyForeground(getCellForegroundColor()));
|
|
|
|
style = style.deriveBorder(0, CELL_ELEMENT_BORDER,
|
|
|
|
0, CELL_ELEMENT_BORDER,
|
|
|
|
0, CELL_ELEMENT_BORDER,
|
|
|
|
0, CELL_ELEMENT_BORDER);
|
|
|
|
}
|
|
|
|
return style;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static Color adjustCellElementFontForeground(Color color) {
|
|
|
|
return DesignModeContext.isDuchampMode() ? getCellForegroundColor() : color;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void adjustFloatElement(FloatElement floatElement) {
|
|
|
|
if (DesignModeContext.isDuchampMode()) {
|
|
|
|
Style style = floatElement.getStyle();
|
|
|
|
style = style.deriveBackground(ColorBackground.getInstance(getCurrentStoryBack()));
|
|
|
|
style = style.deriveFRFont(style.getFRFont().applyForeground(Color.WHITE));
|
|
|
|
floatElement.setStyle(style);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static Color adjustBack(Color color) {
|
|
|
|
return DesignModeContext.isDuchampMode() ? getCurrentStoryBack() : color;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* cpt模板是否支持跟随主题选项
|
|
|
|
* 单元格样式
|
|
|
|
* 悬浮元素样式
|
|
|
|
* 纸张背景入口大屏模板屏蔽掉了 忽略
|
|
|
|
* @return 大屏模板中cpt组件不支持
|
|
|
|
*/
|
|
|
|
public static boolean supportTheme() {
|
|
|
|
return !DesignModeContext.isDuchampMode();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|