diff --git a/designer-base/src/main/java/com/fr/base/i18n/BidiUtils.java b/designer-base/src/main/java/com/fr/base/i18n/BidiUtils.java index bec467902c..cf7d0f9f43 100644 --- a/designer-base/src/main/java/com/fr/base/i18n/BidiUtils.java +++ b/designer-base/src/main/java/com/fr/base/i18n/BidiUtils.java @@ -2,6 +2,7 @@ package com.fr.base.i18n; import java.awt.Component; import java.awt.ComponentOrientation; +import java.awt.Container; import java.util.Locale; /** @@ -56,4 +57,18 @@ public class BidiUtils { } return result.toString(); } + + /** + * 镜像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(); + } } diff --git a/designer-base/src/main/java/com/fr/design/style/background/BackgroundPane4Browser.java b/designer-base/src/main/java/com/fr/design/style/background/BackgroundPane4Browser.java index d6cae505b5..67a7796b7a 100644 --- a/designer-base/src/main/java/com/fr/design/style/background/BackgroundPane4Browser.java +++ b/designer-base/src/main/java/com/fr/design/style/background/BackgroundPane4Browser.java @@ -1,5 +1,6 @@ package com.fr.design.style.background; +import com.fr.base.i18n.BidiUtils; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.general.Background; @@ -11,6 +12,7 @@ public class BackgroundPane4Browser extends BackgroundPane { public BackgroundPane4Browser() { super(); + BidiUtils.applyOrientationByLocale(this); } protected void initTabPane() { diff --git a/designer-base/src/main/java/com/fr/design/style/background/gradient/GradientBackgroundPane.java b/designer-base/src/main/java/com/fr/design/style/background/gradient/GradientBackgroundPane.java index 1cbf543a4b..0f0cbfd117 100644 --- a/designer-base/src/main/java/com/fr/design/style/background/gradient/GradientBackgroundPane.java +++ b/designer-base/src/main/java/com/fr/design/style/background/gradient/GradientBackgroundPane.java @@ -1,6 +1,7 @@ package com.fr.design.style.background.gradient; import com.fr.base.background.GradientBackground; +import com.fr.base.i18n.BidiUtils; import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; @@ -55,7 +56,7 @@ public class GradientBackgroundPane extends BackgroundDetailPane { JPanel innercenterPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); centerPane.add(new UILabel(" ")); centerPane.add(innercenterPane); - innercenterPane.add(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Gradient_Direction") + ":")); + innercenterPane.add(new UILabel(BidiUtils.reverseConcatenateStrings(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Gradient_Direction"), ":"))); left2right = new UIRadioButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Page_Setup_Horizontal")); innercenterPane.add(left2right); @@ -72,6 +73,7 @@ public class GradientBackgroundPane extends BackgroundDetailPane { jpanel.add(centerPane, BorderLayout.CENTER); this.add(jpanel); + BidiUtils.applyOrientationByLocale(this); } diff --git a/designer-base/src/main/java/com/fr/design/style/background/impl/BPane.java b/designer-base/src/main/java/com/fr/design/style/background/impl/BPane.java index 8f91686764..a21dc523b0 100644 --- a/designer-base/src/main/java/com/fr/design/style/background/impl/BPane.java +++ b/designer-base/src/main/java/com/fr/design/style/background/impl/BPane.java @@ -1,5 +1,6 @@ package com.fr.design.style.background.impl; +import com.fr.base.i18n.BidiUtils; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.style.background.BackgroundDetailPane; @@ -33,6 +34,7 @@ public abstract class BPane extends BackgroundDetailPane { setChildrenOfTypePane(typePane2); setChildrenOfContentPane(contentPane); + BidiUtils.applyOrientationByLocale(this); } protected abstract String titleOfTypePane(); diff --git a/designer-base/src/main/java/com/fr/design/style/background/impl/ImageBackgroundPane.java b/designer-base/src/main/java/com/fr/design/style/background/impl/ImageBackgroundPane.java index 3eb990c318..576884f94e 100644 --- a/designer-base/src/main/java/com/fr/design/style/background/impl/ImageBackgroundPane.java +++ b/designer-base/src/main/java/com/fr/design/style/background/impl/ImageBackgroundPane.java @@ -3,6 +3,7 @@ package com.fr.design.style.background.impl; import com.fr.base.Style; import com.fr.base.background.ImageBackground; import com.fr.base.background.ImageFileBackground; +import com.fr.base.i18n.BidiUtils; import com.fr.design.gui.frpane.ImgChooseWrapper; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIRadioButton; @@ -53,7 +54,7 @@ public class ImageBackgroundPane extends BackgroundDetailPane { JPanel previewOwnerPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preview")); previewOwnerPane.setLayout(new BorderLayout()); previewContainerPane.add(previewOwnerPane, BorderLayout.CENTER); - previewContainerPane.add(initSelectFilePane(), BorderLayout.EAST); + previewContainerPane.add(initSelectFilePane(), BidiUtils.rtl() ? BorderLayout.WEST :BorderLayout.EAST); previewPane = new ImagePreviewPane(); previewOwnerPane.add(new JScrollPane(previewPane)); previewPane.addChangeListener(imageSizeChangeListener); @@ -62,6 +63,7 @@ public class ImageBackgroundPane extends BackgroundDetailPane { // init image file chooser. imageFileChooser = new ImageFileChooser(); imageFileChooser.setMultiSelectionEnabled(false); + BidiUtils.applyOrientationByLocale(this); } public JPanel initSelectFilePane() { diff --git a/designer-base/src/main/java/com/fr/design/style/background/pattern/PatternUIComboBoxPane.java b/designer-base/src/main/java/com/fr/design/style/background/pattern/PatternUIComboBoxPane.java index 132ccf9832..4b83f94951 100644 --- a/designer-base/src/main/java/com/fr/design/style/background/pattern/PatternUIComboBoxPane.java +++ b/designer-base/src/main/java/com/fr/design/style/background/pattern/PatternUIComboBoxPane.java @@ -1,6 +1,7 @@ package com.fr.design.style.background.pattern; import com.fr.base.background.PatternBackground; +import com.fr.base.i18n.BidiUtils; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.style.background.BackgroundPane4BoxChange; @@ -29,9 +30,9 @@ public class PatternUIComboBoxPane extends BackgroundPane4BoxChange { this.add(pane, BorderLayout.NORTH); pane.add(patternBox = new PatternSelectBox(80)); - pane.add(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Foreground") + ":")); + pane.add(new UILabel(BidiUtils.reverseConcatenateStrings(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Foreground"), ":"))); pane.add(foreColor = new ColorSelectBox(80)); - pane.add(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Background") + ":")); + pane.add(new UILabel(BidiUtils.reverseConcatenateStrings(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Background"), ":"))); pane.add(backColor = new ColorSelectBox(80)); } diff --git a/designer-base/src/main/java/com/fr/design/style/color/DetailColorSelectPane.java b/designer-base/src/main/java/com/fr/design/style/color/DetailColorSelectPane.java index 5d7e81487e..27306afbb4 100644 --- a/designer-base/src/main/java/com/fr/design/style/color/DetailColorSelectPane.java +++ b/designer-base/src/main/java/com/fr/design/style/color/DetailColorSelectPane.java @@ -6,6 +6,7 @@ package com.fr.design.style.color; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; +import java.awt.FlowLayout; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; @@ -13,6 +14,10 @@ import java.awt.geom.Rectangle2D; import javax.swing.BorderFactory; import javax.swing.Box; + +import com.fine.swing.ui.layout.Layouts; +import com.fine.swing.ui.layout.Row; +import com.fr.base.i18n.BidiUtils; import com.fr.design.gui.ilable.UILabel; import javax.swing.JPanel; import javax.swing.event.ChangeEvent; @@ -22,6 +27,10 @@ import com.fr.base.GraphHelper; import com.fr.design.border.UITitledBorder; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.dialog.BasicPane; +import com.fr.design.layout.FRLeftFlowLayout; + +import static com.fine.swing.ui.layout.Layouts.cell; +import static com.fine.swing.ui.layout.Layouts.fix; /** @@ -42,7 +51,7 @@ public class DetailColorSelectPane extends BasicPane { JPanel titledefaultPane=FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Color")); JPanel defaultPane =FRGUIPaneFactory.createX_AXISBoxInnerContainer_S_Pane(); - this.add(titledefaultPane, BorderLayout.WEST); + this.add(titledefaultPane, BidiUtils.rtl() ? BorderLayout.EAST : BorderLayout.WEST); titledefaultPane.add(defaultPane); defaultPane.add(Box.createHorizontalStrut(4)); @@ -56,7 +65,7 @@ public class DetailColorSelectPane extends BasicPane { //color preview JPanel colorPreviewContainPane = FRGUIPaneFactory.createBorderLayout_L_Pane(); defaultPane.add(colorPreviewContainPane); - + BidiUtils.mirrorBoxLayout(defaultPane); JPanel colorPreviewPane = FRGUIPaneFactory.createBorderLayout_L_Pane(); colorPreviewPane.setPreferredSize(new Dimension(180, 60)); colorPreviewContainPane.add(colorPreviewPane, BorderLayout.NORTH); @@ -83,6 +92,7 @@ public class DetailColorSelectPane extends BasicPane { //use the white as the default color. this.populate(Color.WHITE); + BidiUtils.applyOrientationByLocale(this); } @Override