帆软报表设计器源代码。

90 lines
2.7 KiB

package com.fr.base.i18n;
9 months ago
import com.fr.design.DesignerEnvManager;
import javax.swing.border.TitledBorder;
import java.awt.Component;
import java.awt.ComponentOrientation;
import java.awt.Container;
import java.util.Locale;
/**
* 根据国际化获取组件方向
*
* @author obo
* @since 11.0
* Created on 2024/07/17
*/
public class BidiUtils {
9 months ago
private static final Locale LOCALE = DesignerEnvManager.getEnvManager().getLanguage();
private BidiUtils() {
}
public static ComponentOrientation getOrientationByLocale() {
9 months ago
return ComponentOrientation.getOrientation(LOCALE);
}
public static <T extends Component> T applyOrientationByLocale(T component) {
9 months ago
component.applyComponentOrientation(ComponentOrientation.getOrientation(LOCALE));
return component;
}
public static <T extends Component> T setOrientationByLocale(T component) {
9 months ago
component.setComponentOrientation(ComponentOrientation.getOrientation(LOCALE));
return component;
}
public static void setOrientationByLocale(Component... components) {
for (Component component : components) {
9 months ago
component.setComponentOrientation(ComponentOrientation.getOrientation(LOCALE));
}
}
public static void applyOrientationByLocale(Component... components) {
for (Component component : components) {
9 months ago
component.applyComponentOrientation(ComponentOrientation.getOrientation(LOCALE));
}
}
public static boolean rtl() {
9 months ago
return ComponentOrientation.getOrientation(LOCALE) == ComponentOrientation.RIGHT_TO_LEFT;
}
public static String reverseConcatenateStrings(String... strs) {
StringBuilder result = new StringBuilder();
if (rtl()) {
for (int i = strs.length - 1; i >= 0; i--) {
result.append(strs[i]);
}
} else {
for (int i = 0; i <= strs.length - 1; i++) {
result.append(strs[i]);
}
}
return result.toString();
}
public static <T extends TitledBorder> T applyTitledBorderJustification(T titledBorder) {
titledBorder.setTitleJustification(BidiUtils.rtl() ? TitledBorder.RIGHT : TitledBorder.LEFT);
return titledBorder;
}
/**
* 镜像BoxLayout布局组件
*/
public static void mirrorBoxLayout(Container container) {
Component[] components = container.getComponents();
for (int i = components.length - 1; i >= 0; i--) {
Component component = components[i];
container.remove(i);
container.add(component);
}
container.revalidate();
container.repaint();
}
}