From baa6b1728c13eb87cb405c6206bcd93b2520ef5c Mon Sep 17 00:00:00 2001 From: plough Date: Fri, 13 Jan 2017 10:22:34 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-1178=20=E8=8B=B1=E6=96=87=E5=9B=BD?= =?UTF-8?q?=E9=99=85=E5=8C=96=E2=80=94=E2=80=948=E3=80=8111=E3=80=8113?= =?UTF-8?q?=E3=80=8114=E3=80=8115=E3=80=8116=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/report/ReportColumnsPane.java | 14 +++++++++----- .../com/fr/design/webattr/PageToolBarPane.java | 4 ++-- .../fr/design/webattr/PageWebSettingPane.java | 4 ++-- .../com/fr/design/webattr/WriteToolBarPane.java | 4 ++-- .../fr/design/webattr/WriteWebSettingPane.java | 5 ++--- .../ui/CustomWritableRepeatEditorPane.java | 2 +- .../design/widget/ui/FieldEditorDefinePane.java | 5 +++-- .../com/fr/design/actions/help/AboutPane.java | 15 +++++++++++---- .../com/fr/design/editor/editor/DateEditor.java | 6 +++++- .../src/com/fr/design/gui/date/UIDatePicker.java | 3 +++ .../fr/design/images/reportcolumns/col_en.png | Bin 0 -> 1348 bytes .../fr/design/images/reportcolumns/row_en.png | Bin 0 -> 3708 bytes .../src/com/fr/design/locale/designer.properties | 4 ++++ .../fr/design/locale/designer_en_US.properties | 6 +++++- .../fr/design/locale/designer_ja_JP.properties | 4 ++++ .../fr/design/locale/designer_ko_KR.properties | 12 ++++++++---- .../fr/design/locale/designer_zh_CN.properties | 4 ++++ .../fr/design/locale/designer_zh_TW.properties | 4 ++++ .../fr/design/write/submit/CustomJobPane.java | 2 +- 19 files changed, 70 insertions(+), 28 deletions(-) create mode 100644 designer_base/src/com/fr/design/images/reportcolumns/col_en.png create mode 100644 designer_base/src/com/fr/design/images/reportcolumns/row_en.png diff --git a/designer/src/com/fr/design/report/ReportColumnsPane.java b/designer/src/com/fr/design/report/ReportColumnsPane.java index c0414afee..1cf8f27bc 100644 --- a/designer/src/com/fr/design/report/ReportColumnsPane.java +++ b/designer/src/com/fr/design/report/ReportColumnsPane.java @@ -19,6 +19,8 @@ import javax.swing.SpinnerNumberModel; import javax.swing.SwingConstants; import com.fr.base.BaseUtils; +import com.fr.base.FRContext; +import com.fr.base.GraphHelper2; import com.fr.design.border.UIRoundedBorder; import com.fr.design.border.UITitledBorder; import com.fr.design.dialog.BasicPane; @@ -109,9 +111,11 @@ public class ReportColumnsPane extends BasicPane{ onOffButtonGroup.addActionListener(onOffListener); UILabel uiLabel = new UILabel(Inter.getLocText("FR-Designer_ReportColumns-Columns")); - uiLabel.setFont(FRFont.getInstance(FONT_NAME, Font.PLAIN, FONT_SIZE)); + FRFont uiLableFont = FRFont.getInstance(FONT_NAME, Font.PLAIN, FONT_SIZE); + uiLabel.setFont(uiLableFont); uiLabel.setHorizontalAlignment(SwingConstants.CENTER); - uiLabel.setPreferredSize(new Dimension(100,20)); + int uiLabelWidth = GraphHelper2.locTextStringWidth("FR-Designer_ReportColumns-Columns", uiLableFont); + uiLabel.setPreferredSize(new Dimension(uiLabelWidth, 20)); north.add(uiLabel,BorderLayout.WEST); JPanel buttonGroupPane = new JPanel(new FlowLayout(FlowLayout.CENTER, 23,11)); buttonGroupPane.add(onOffButtonGroup); @@ -200,7 +204,7 @@ public class ReportColumnsPane extends BasicPane{ JPanel sampleLablePane = new JPanel(new GridLayout(1,2)); sampleLablePane.setPreferredSize(new Dimension(524, 130)); JPanel rPane = new JPanel(); - UILabel rLabel = new UILabel(BaseUtils.readIcon("/com/fr/design/images/reportcolumns/row.png")); + UILabel rLabel = new UILabel(BaseUtils.readIcon("/com/fr/design/images/reportcolumns/" + Inter.getLocText("FR-Designer_Row_Icon_File_Name"))); rLabel.setBorder(BorderFactory.createEmptyBorder(5,45,0,49)); rPane.add(rLabel); rowButton = new UIRadioButton(Inter.getLocText("ReportColumns-Columns_horizontally")); @@ -260,7 +264,7 @@ public class ReportColumnsPane extends BasicPane{ GUICoreUtils.setColumnForSpinner(maxNumberSpinner, 6); maxRadioButton.addActionListener(maxBtnListener); maxUILabel = new UILabel(COLUMN_ROW_TEXTS[rowOrColumn] ); - JPanel maxRowRadioPane = GUICoreUtils.createFlowPane(new JComponent[]{maxRadioButton, maxNumberSpinner, maxUILabel, new UILabel(Inter.getLocText("FR-Designer_ReportColumns-Columns"))}, FlowLayout.CENTER); + JPanel maxRowRadioPane = GUICoreUtils.createFlowPane(new JComponent[]{maxRadioButton, maxNumberSpinner, maxUILabel, new UILabel(Inter.getLocText("FR-Designer_ReportColumns_Columns_Optional"))}, FlowLayout.CENTER); RowMaxOrSetPane.add(maxRowRadioPane); //marks:分成多少行 toXRadioButton = new UIRadioButton(Inter.getLocText("ReportColumns-Columns_to")); @@ -308,7 +312,7 @@ public class ReportColumnsPane extends BasicPane{ rowPane.setBorder(explainBorder); rowPane.setLayout(new FlowLayout(FlowLayout.LEFT, 5,13)); rowPane.setPreferredSize(new Dimension(500,80)); - rowPane.add(new UILabel(Inter.getLocText(new String[]{"ReportColumns-Columns","Data"}) + ":")); + rowPane.add(new UILabel(Inter.getLocText(new String[]{"FR-Designer_ReportColumns_Columns_Optional","Data"}) + ":")); repeatColDataTextField = new UITextField(); repeatColDataTextField.setPreferredSize(new Dimension(107,24)); rowPane.add(repeatColDataTextField); diff --git a/designer/src/com/fr/design/webattr/PageToolBarPane.java b/designer/src/com/fr/design/webattr/PageToolBarPane.java index b9e8c2bf7..5f3df534c 100644 --- a/designer/src/com/fr/design/webattr/PageToolBarPane.java +++ b/designer/src/com/fr/design/webattr/PageToolBarPane.java @@ -27,8 +27,8 @@ import java.util.List; public class PageToolBarPane extends AbstractEditToolBarPane { - private UIRadioButton centerRadioButton = new UIRadioButton(Inter.getLocText(new String[]{"Center", "Display"})); - private UIRadioButton leftRadioButton = new UIRadioButton(Inter.getLocText(new String[]{"Left", "Display"})); + private UIRadioButton centerRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Center_Display")); + private UIRadioButton leftRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Left_Display")); private UICheckBox isUseToolBarCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Use_ToolBar")); private UICheckBox isShowAsImageBox; diff --git a/designer/src/com/fr/design/webattr/PageWebSettingPane.java b/designer/src/com/fr/design/webattr/PageWebSettingPane.java index 504687e89..203ace1af 100644 --- a/designer/src/com/fr/design/webattr/PageWebSettingPane.java +++ b/designer/src/com/fr/design/webattr/PageWebSettingPane.java @@ -36,8 +36,8 @@ public class PageWebSettingPane extends WebSettingPane { @Override protected JPanel createOtherSetPane() { - centerRadioButton = new UIRadioButton(Inter.getLocText(new String[]{"Center", "Display"})); - leftRadioButton = new UIRadioButton(Inter.getLocText(new String[]{"Left", "Display"})); + centerRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Center_Display")); + leftRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Left_Display")); ButtonGroup buttonGroup = new ButtonGroup(); leftRadioButton.setSelected(true); buttonGroup.add(centerRadioButton); diff --git a/designer/src/com/fr/design/webattr/WriteToolBarPane.java b/designer/src/com/fr/design/webattr/WriteToolBarPane.java index abd20f7ff..70cf35af9 100644 --- a/designer/src/com/fr/design/webattr/WriteToolBarPane.java +++ b/designer/src/com/fr/design/webattr/WriteToolBarPane.java @@ -39,8 +39,8 @@ public class WriteToolBarPane extends AbstractEditToolBarPane { private UIRadioButton topRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Top")); private UIRadioButton bottomRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Bottom")); private UILabel sheetShowLocationLabel = new UILabel("sheet" + Inter.getLocText(new String[]{"Label", "Page_Number", "Display position"}) + ":"); - private UIRadioButton centerRadioButton = new UIRadioButton(Inter.getLocText(new String[]{"Center", "Display"})); - private UIRadioButton leftRadioButton = new UIRadioButton(Inter.getLocText(new String[]{"Left", "Display"})); + private UIRadioButton centerRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Center_Display")); + private UIRadioButton leftRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Left_Display")); private UILabel rptShowLocationLabel = new UILabel(Inter.getLocText("FR-Designer_Report_Show_Location") + ":", UILabel.LEFT); private UICheckBox isUseToolBarCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Use_ToolBar")); private UIButton editToolBarButton = new UIButton(Inter.getLocText("FR-Designer_Edit")); diff --git a/designer/src/com/fr/design/webattr/WriteWebSettingPane.java b/designer/src/com/fr/design/webattr/WriteWebSettingPane.java index 260657245..92b26b0d5 100644 --- a/designer/src/com/fr/design/webattr/WriteWebSettingPane.java +++ b/designer/src/com/fr/design/webattr/WriteWebSettingPane.java @@ -65,15 +65,14 @@ public class WriteWebSettingPane extends WebSettingPane { //Sean: 报表显示位置since 706 rptShowLocationLabel = new UILabel(Inter.getLocText("FR-Designer_Report_Show_Location") + ":", UILabel.LEFT); - centerRadioButton = new UIRadioButton(Inter.getLocText(new String[]{"Center", "Display"})); - leftRadioButton = new UIRadioButton(Inter.getLocText(new String[]{"Left", "Display"})); + centerRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Center_Display")); + leftRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Left_Display")); ButtonGroup rptShowButtonGroup = new ButtonGroup(); leftRadioButton.setSelected(true); rptShowButtonGroup.add(centerRadioButton); rptShowButtonGroup.add(leftRadioButton); JPanel showLocPane = GUICoreUtils.createFlowPane(new Component[]{rptShowLocationLabel, centerRadioButton, leftRadioButton}, FlowLayout.LEFT); -// unloadCheck = new UICheckBox(Inter.getLocText(new String[]{"Event-unloadcheck", "Tooltips"})); unloadCheck = new UICheckBox(Inter.getLocText("FR-Designer_Unload_Check")); unloadCheck.setSelected(true); diff --git a/designer/src/com/fr/design/widget/ui/CustomWritableRepeatEditorPane.java b/designer/src/com/fr/design/widget/ui/CustomWritableRepeatEditorPane.java index 6a165f874..69bba23c6 100644 --- a/designer/src/com/fr/design/widget/ui/CustomWritableRepeatEditorPane.java +++ b/designer/src/com/fr/design/widget/ui/CustomWritableRepeatEditorPane.java @@ -1 +1 @@ -package com.fr.design.widget.ui; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.form.ui.CustomWriteAbleRepeatEditor; import com.fr.general.Inter; import javax.swing.*; import java.awt.*; /** * Author : Shockway * Date: 13-9-18 * Time: 下午2:17 */ public abstract class CustomWritableRepeatEditorPane extends WritableRepeatEditorPane { private UICheckBox customDataCheckBox; public CustomWritableRepeatEditorPane() { this.initComponents(); } @Override protected JPanel setThirdContentPane() { JPanel contentPane = FRGUIPaneFactory.createBorderLayout_L_Pane(); contentPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); this.customDataCheckBox = new UICheckBox(Inter.getLocText("Form-Allow_CustomData"), false); this.customDataCheckBox.setPreferredSize(new Dimension(100, 30)); getValidatePane().add(GUICoreUtils.createFlowPane(new JComponent[]{this.customDataCheckBox}, FlowLayout.LEFT, 5)); JPanel otherContentPane = this.setForthContentPane(); if (otherContentPane != null) { contentPane.add(otherContentPane,BorderLayout.CENTER); } return contentPane; } protected abstract JPanel setForthContentPane(); protected void populateSubWritableRepeatEditorBean(T e) { this.customDataCheckBox.setSelected(e.isCustomData()); populateSubCustomWritableRepeatEditorBean(e); } protected abstract void populateSubCustomWritableRepeatEditorBean(T e); protected T updateSubWritableRepeatEditorBean() { T e = updateSubCustomWritableRepeatEditorBean(); e.setCustomData(this.customDataCheckBox.isSelected()); return e; } protected abstract T updateSubCustomWritableRepeatEditorBean(); } \ No newline at end of file +package com.fr.design.widget.ui; import com.fr.base.GraphHelper2; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.form.ui.CustomWriteAbleRepeatEditor; import com.fr.general.Inter; import javax.swing.*; import java.awt.*; /** * Author : Shockway * Date: 13-9-18 * Time: 下午2:17 */ public abstract class CustomWritableRepeatEditorPane extends WritableRepeatEditorPane { private UICheckBox customDataCheckBox; public CustomWritableRepeatEditorPane() { this.initComponents(); } @Override protected JPanel setThirdContentPane() { JPanel contentPane = FRGUIPaneFactory.createBorderLayout_L_Pane(); contentPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); this.customDataCheckBox = new UICheckBox(Inter.getLocText("Form-Allow_CustomData"), false); this.customDataCheckBox.setPreferredSize( new Dimension(GraphHelper2.locTextStringWidth("Form-Allow_CustomData") + 30, 30)); getValidatePane().add(GUICoreUtils.createFlowPane(new JComponent[]{this.customDataCheckBox}, FlowLayout.LEFT, 5)); JPanel otherContentPane = this.setForthContentPane(); if (otherContentPane != null) { contentPane.add(otherContentPane,BorderLayout.CENTER); } return contentPane; } protected abstract JPanel setForthContentPane(); protected void populateSubWritableRepeatEditorBean(T e) { this.customDataCheckBox.setSelected(e.isCustomData()); populateSubCustomWritableRepeatEditorBean(e); } protected abstract void populateSubCustomWritableRepeatEditorBean(T e); protected T updateSubWritableRepeatEditorBean() { T e = updateSubCustomWritableRepeatEditorBean(); e.setCustomData(this.customDataCheckBox.isSelected()); return e; } protected abstract T updateSubCustomWritableRepeatEditorBean(); } \ No newline at end of file diff --git a/designer/src/com/fr/design/widget/ui/FieldEditorDefinePane.java b/designer/src/com/fr/design/widget/ui/FieldEditorDefinePane.java index e5498adeb..fe6962813 100644 --- a/designer/src/com/fr/design/widget/ui/FieldEditorDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/FieldEditorDefinePane.java @@ -6,6 +6,7 @@ import java.awt.event.ItemListener; import javax.swing.*; +import com.fr.base.GraphHelper2; import com.fr.design.gui.ilable.UILabel; import javax.swing.event.DocumentEvent; @@ -49,7 +50,7 @@ public abstract class FieldEditorDefinePane extends Abstr //JPanel firstPanel = FRGUIPaneFactory.createBorderLayout_M_Pane(); allowBlankCheckBox = new UICheckBox(Inter.getLocText("Allow_Blank")); - allowBlankCheckBox.setPreferredSize(new Dimension(75, 30)); + allowBlankCheckBox.setPreferredSize(new Dimension(GraphHelper2.locTextStringWidth("Allow_Blank") + 30, 30)); allowBlankCheckBox.addItemListener(new ItemListener() { @Override @@ -128,7 +129,7 @@ public abstract class FieldEditorDefinePane extends Abstr JPanel firstPane = GUICoreUtils.createFlowPane(new JComponent[]{allowBlankCheckBox}, FlowLayout.LEFT, 5); validatePane.add(firstPane); JPanel secondPane = GUICoreUtils.createFlowPane(new JComponent[]{new UILabel(Inter.getLocText(new String[]{"Error", "Tooltips"}) + ":"), errorMsgTextField}, FlowLayout.LEFT, 24); - secondPane.setPreferredSize(new Dimension(310, 23)); + secondPane.setPreferredSize(new Dimension(400, 23)); validatePane.add(secondPane); } diff --git a/designer_base/src/com/fr/design/actions/help/AboutPane.java b/designer_base/src/com/fr/design/actions/help/AboutPane.java index 680aa9b95..d15bc0186 100644 --- a/designer_base/src/com/fr/design/actions/help/AboutPane.java +++ b/designer_base/src/com/fr/design/actions/help/AboutPane.java @@ -3,6 +3,7 @@ */ package com.fr.design.actions.help; +import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; import com.fr.design.gui.ilable.ActionLabel; import com.fr.design.gui.ilable.BoldFontTextLabel; @@ -26,6 +27,7 @@ import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.net.URI; +import java.util.Locale; public class AboutPane extends JPanel { private static final String FINEREPORT = "FineReport"; @@ -66,12 +68,17 @@ public class AboutPane extends JPanel { Inter.getLocText("FR-Designer-Basic_Activation_Key_Copy_OK") })); - if(ComparatorUtils.equals(ProductConstants.APP_NAME,FINEREPORT)){ - boxCenterAlignmentPane = new BoxCenterAligmentPane(Inter.getLocText("Service_Phone") + ProductConstants.COMPARE_TELEPHONE); + // 英文去掉服务电话和 QQ + if (FRContext.getLocale() == Locale.ENGLISH || FRContext.getLocale() == Locale.US || FRContext.getLocale() == Locale.UK){ + // do nothing + } else { + if(ComparatorUtils.equals(ProductConstants.APP_NAME,FINEREPORT)){ + boxCenterAlignmentPane = new BoxCenterAligmentPane(Inter.getLocText("Service_Phone") + ProductConstants.COMPARE_TELEPHONE); + contentPane.add(boxCenterAlignmentPane); + } + boxCenterAlignmentPane = new BoxCenterAligmentPane("QQ:" + SiteCenter.getInstance().acquireUrlByKind("help.qq")); contentPane.add(boxCenterAlignmentPane); } - boxCenterAlignmentPane = new BoxCenterAligmentPane("QQ:" + SiteCenter.getInstance().acquireUrlByKind("help.qq")); - contentPane.add(boxCenterAlignmentPane); BoxCenterAligmentPane actionLabel = getURLActionLabel(ProductConstants.WEBSITE_URL); BoxCenterAligmentPane emailLabel = getEmailActionLabel(ProductConstants.SUPPORT_EMAIL); diff --git a/designer_base/src/com/fr/design/editor/editor/DateEditor.java b/designer_base/src/com/fr/design/editor/editor/DateEditor.java index cef908aa6..17fc58077 100644 --- a/designer_base/src/com/fr/design/editor/editor/DateEditor.java +++ b/designer_base/src/com/fr/design/editor/editor/DateEditor.java @@ -15,6 +15,7 @@ import java.awt.event.ItemListener; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Locale; /** * CellEditor used to edit Date object. @@ -59,7 +60,10 @@ public class DateEditor extends Editor { this.setLayout(FRGUIPaneFactory.createBorderLayout()); uiDatePicker = new UIDatePicker(); if (format) { - uiDatePicker.setStyle(uiDatePicker.STYLE_CN_DATE); + int dateStyle = (FRContext.getLocale() == Locale.ENGLISH + || FRContext.getLocale() == Locale.US + || FRContext.getLocale() == Locale.UK) ? uiDatePicker.STYLE_EN_DATE : uiDatePicker.STYLE_CN_DATE; + uiDatePicker.setStyle(dateStyle); uiDatePicker.setEditable(false); } uiDatePicker.addItemListener(new ItemListener() { diff --git a/designer_base/src/com/fr/design/gui/date/UIDatePicker.java b/designer_base/src/com/fr/design/gui/date/UIDatePicker.java index c2ee8ab31..3a102de90 100644 --- a/designer_base/src/com/fr/design/gui/date/UIDatePicker.java +++ b/designer_base/src/com/fr/design/gui/date/UIDatePicker.java @@ -31,6 +31,7 @@ public class UIDatePicker extends UIComboBox implements Serializable { public static final int STYLE_CN_DATE1 = 1; public static final int STYLE_CN_DATETIME = 2; public static final int STYLE_CN_DATETIME1 = 3; + public static final int STYLE_EN_DATE = 4; public boolean isWillHide = false; /** * 日期格式类型 @@ -113,6 +114,8 @@ public class UIDatePicker extends UIComboBox implements Serializable { return new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); case STYLE_CN_DATETIME1: return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + case STYLE_EN_DATE: + return new SimpleDateFormat("MM/dd/yyyy"); default: throw new UnsupportedOperationException( "invalid formatStyle parameter!"); diff --git a/designer_base/src/com/fr/design/images/reportcolumns/col_en.png b/designer_base/src/com/fr/design/images/reportcolumns/col_en.png new file mode 100644 index 0000000000000000000000000000000000000000..14f73966d6f2ba50b7fe9fe28dd36c9e24ce099c GIT binary patch literal 1348 zcmV-K1-tr*P)KLZ*U+lnSp_Ufq@}0xwybFAi#%#fq@|}KQEO51AM#2z{tSB zz;IdD(Z$J?fi%FHTu@ZPz`$^Tfq}s&CAB!2fq~%*0|P^Pc}YPD0|R3W0|SFdQg%TJ z0|R3L0|SFdc1Vyj0|R3V0|OIJNoqw20|NttbACZ(QD%BZiGrb}rKN&nN`6wRLU3hq zNosDff@fZGeo;YwQDRAI3IhWJ)D8v)1_oZ2{1OHC#LPSeLsL}-Dual~C?)grM$+xhxmf|p7B=;2nnnfbQ63e)F`Yd zd{`u1lvi}CSe!Vg_*RJ&Nny#OQWes=(obaO$cD-Z%AJ+(QSedZRlJ}yML9}EN#(Wb zR<%ZTKMh%px0?I3CTgeZSnCSuzS29QKi{CnFv`f%Skm~n$vxA{#r++CO)=?RdfInDbtjt*-0cR=O|sSme3TYk~JdpT)k*{8ss|57-*GH|SXK z`H)+o&%(Y$FhvSRDMcH{xWz`r<;Axo%ud{#bT;{UDpQ(Vx=lt@W>wa#>^(X6@|g0~ z3w#QTi)I%eE_qufQSMSvSUIoiZ1vw-y}J1NNe#yue>WSnq_@s%yWSz#>D|@deYlsQ z&%VEI!oG?BCp%7QoqA$A?~LG?vt~V-qcyi=-o6D~3&R#IUi@*X!?Fp>AFecB)w=rT zTHSR`>u+u}*wnH4!B(qnQ@4NE>AP#y9*(`~`;H$_KiGNb^%1|Ln~#g1s6F}QwD*}U z=VZ^fU-)z>?((Ut7T1>D5WU%Y>+7BLyEpIqJUH;k^zrJaiqB@g5PaG7n)yxL+n?`C zKYaRB@cG@>yl?M*RI+y?e7jKeZ#YO-C0i{VqK~#9!?3zKc!XOYtyHmNBSJ#vE zUzm!q3PA=Tp?HsZ9x>D!PR>6PnemW}T3g_nF=e?KE9mW;Lr> z%{o)x%D=_hY5tbA$!RjY3mok$rR&}8Xwi(rP;rR9Xv7mPN@)d@XQzSrS6p0yW;cwYwXNQ z_}A}Y70g%FpINWij`pvL^#c1>KNFhOtY-Z`tTQ>yzX1R@n9AN3S+bV^0000XEkq literal 0 HcmV?d00001 diff --git a/designer_base/src/com/fr/design/images/reportcolumns/row_en.png b/designer_base/src/com/fr/design/images/reportcolumns/row_en.png new file mode 100644 index 0000000000000000000000000000000000000000..7c66662a2b71430e6d6503f006b932708febaff1 GIT binary patch literal 3708 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 a{tW=pmU1S9{IU7~0000