From e60e6e46b3eb1113cd671f7a09cc51b9e24b8176 Mon Sep 17 00:00:00 2001 From: mengao Date: Mon, 27 Mar 2017 16:33:25 +0800 Subject: [PATCH 01/76] =?UTF-8?q?=E8=BF=98=E5=8E=9F=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E6=94=B9=E5=AE=A2=E6=88=B7bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/chart/axis/MinMaxValuePane.java | 18 +++++++----------- .../chart/gui/style/axis/ChartValuePane.java | 5 ++--- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java b/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java index 73235dc31f..4a9be221de 100644 --- a/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java +++ b/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java @@ -42,14 +42,14 @@ public class MinMaxValuePane extends JPanel { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] columnSize = { p, f }; - double[] rowSize = { p, p, p, p, p, p, p, p}; + double[] rowSize = { p, p, p, p}; Component[][] components = getPanelComponents(); JPanel panel = TableLayoutHelper.createTableLayoutPane(components ,rowSize,columnSize); this.setLayout(new BorderLayout()); this.add(panel,BorderLayout.CENTER); - for(int i = 0; i < components.length; i+=2) { + for(int i = 0; i < components.length; i++) { ((UICheckBox)components[i][0]).addActionListener(new ActionListener() { @Override @@ -57,19 +57,15 @@ public class MinMaxValuePane extends JPanel { checkBoxUse(); } }); - ChartSwingUtils.addListener((UICheckBox)components[i][0], (UITextField)components[i+1][0]); + ChartSwingUtils.addListener((UICheckBox)components[i][0], (UITextField)components[i][1]); } } protected Component[][] getPanelComponents() { return new Component[][]{ - new Component[]{minCheckBox}, - new Component[]{minValueField}, - new Component[]{maxCheckBox}, - new Component[]{maxValueField}, - new Component[]{isCustomMainUnitBox}, - new Component[]{mainUnitField}, - new Component[]{isCustomSecUnitBox}, - new Component[]{secUnitField}, + new Component[]{minCheckBox, minValueField}, + new Component[]{maxCheckBox, maxValueField}, + new Component[]{isCustomMainUnitBox, mainUnitField}, + new Component[]{isCustomSecUnitBox, secUnitField}, }; } diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java index f798a0a07d..d25ed29972 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java @@ -151,11 +151,10 @@ public class ChartValuePane extends ChartAxisUsePane{ double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] columnSize = { LayoutConstants.CHART_ATTR_TOMARGIN,p,f}; - double[] rowSize = { p, p, p}; + double[] rowSize = {p, p}; Component[][] component = new Component[][]{ new Component[]{null,initMinMaxValue(),null}, - new Component[]{null, addLogarithmicPane2ValuePane(), null}, - new Component[]{null, null, addLogText()}, + new Component[]{null, addLogarithmicPane2ValuePane(), addLogText()}, }; return TableLayoutHelper.createTableLayoutPane(component, rowSize, columnSize); } From b7fea495cff85298182c710dc5c2dd98ffbbdbde Mon Sep 17 00:00:00 2001 From: mengao Date: Mon, 27 Mar 2017 16:43:33 +0800 Subject: [PATCH 02/76] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/chart/axis/MinMaxValuePane.java | 18 +++++++++++------- .../chart/gui/style/axis/ChartValuePane.java | 5 +++-- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java b/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java index 4a9be221de..73235dc31f 100644 --- a/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java +++ b/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java @@ -42,14 +42,14 @@ public class MinMaxValuePane extends JPanel { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] columnSize = { p, f }; - double[] rowSize = { p, p, p, p}; + double[] rowSize = { p, p, p, p, p, p, p, p}; Component[][] components = getPanelComponents(); JPanel panel = TableLayoutHelper.createTableLayoutPane(components ,rowSize,columnSize); this.setLayout(new BorderLayout()); this.add(panel,BorderLayout.CENTER); - for(int i = 0; i < components.length; i++) { + for(int i = 0; i < components.length; i+=2) { ((UICheckBox)components[i][0]).addActionListener(new ActionListener() { @Override @@ -57,15 +57,19 @@ public class MinMaxValuePane extends JPanel { checkBoxUse(); } }); - ChartSwingUtils.addListener((UICheckBox)components[i][0], (UITextField)components[i][1]); + ChartSwingUtils.addListener((UICheckBox)components[i][0], (UITextField)components[i+1][0]); } } protected Component[][] getPanelComponents() { return new Component[][]{ - new Component[]{minCheckBox, minValueField}, - new Component[]{maxCheckBox, maxValueField}, - new Component[]{isCustomMainUnitBox, mainUnitField}, - new Component[]{isCustomSecUnitBox, secUnitField}, + new Component[]{minCheckBox}, + new Component[]{minValueField}, + new Component[]{maxCheckBox}, + new Component[]{maxValueField}, + new Component[]{isCustomMainUnitBox}, + new Component[]{mainUnitField}, + new Component[]{isCustomSecUnitBox}, + new Component[]{secUnitField}, }; } diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java index d25ed29972..f798a0a07d 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java @@ -151,10 +151,11 @@ public class ChartValuePane extends ChartAxisUsePane{ double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] columnSize = { LayoutConstants.CHART_ATTR_TOMARGIN,p,f}; - double[] rowSize = {p, p}; + double[] rowSize = { p, p, p}; Component[][] component = new Component[][]{ new Component[]{null,initMinMaxValue(),null}, - new Component[]{null, addLogarithmicPane2ValuePane(), addLogText()}, + new Component[]{null, addLogarithmicPane2ValuePane(), null}, + new Component[]{null, null, addLogText()}, }; return TableLayoutHelper.createTableLayoutPane(component, rowSize, columnSize); } From 2e01132b6ac761728d302236dfdef2c0d041e81c Mon Sep 17 00:00:00 2001 From: fr_shine Date: Fri, 31 Mar 2017 15:28:05 +0800 Subject: [PATCH 03/76] =?UTF-8?q?=E5=BD=93=E5=89=8D=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1=20=E5=88=A0=E9=99=A4=E6=9C=80=E5=90=8E?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chart/series/SeriesCondition/impl/FormHyperlinkPane.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/designer_chart/src/com/fr/design/chart/series/SeriesCondition/impl/FormHyperlinkPane.java b/designer_chart/src/com/fr/design/chart/series/SeriesCondition/impl/FormHyperlinkPane.java index 52607e72ea..01754ce2a9 100644 --- a/designer_chart/src/com/fr/design/chart/series/SeriesCondition/impl/FormHyperlinkPane.java +++ b/designer_chart/src/com/fr/design/chart/series/SeriesCondition/impl/FormHyperlinkPane.java @@ -95,6 +95,8 @@ public class FormHyperlinkPane extends BasicBeanPane { parameterList.toArray(parameters); formHyperlink.setParameters(parameters); + } else { + formHyperlink.setParameters(null); } } From 9014f648299a8d25be5ae9a9c7ab65848f73f843 Mon Sep 17 00:00:00 2001 From: plough Date: Fri, 31 Mar 2017 16:06:02 +0800 Subject: [PATCH 04/76] =?UTF-8?q?REPORT-1916=20=E6=A8=A1=E6=9D=BF=E8=80=97?= =?UTF-8?q?=E6=97=B6=3D=E3=80=8B=E8=A7=A3=E5=86=B3=E5=B8=A6=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E8=A1=A8=E5=8D=95=E6=97=A0=E6=B3=95=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/templateinfo/JFormProcessInfo.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/JFormProcessInfo.java b/designer_base/src/com/fr/design/mainframe/templateinfo/JFormProcessInfo.java index 4fa5169290..00b4d3f776 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/JFormProcessInfo.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/JFormProcessInfo.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.templateinfo; import com.fr.form.main.Form; -import com.fr.form.ui.container.WFitLayout; +import com.fr.form.ui.container.WLayout; /** * Created by plough on 2017/3/17. @@ -32,8 +32,8 @@ public class JFormProcessInfo extends TemplateProcessInfo
{ public int getWidgetCount() { int widgetCount = 0; for (int i = 0; i < template.getContainer().getWidgetCount(); i++) { - WFitLayout wf = (WFitLayout) template.getContainer().getWidget(i); - widgetCount += wf.getWidgetCount(); + WLayout wl = (WLayout) template.getContainer().getWidget(i); + widgetCount += wl.getWidgetCount(); } int a = 1; int b = 2; From 51f1caa26abe0513ec0eb38d3ab83d18ad7a261d Mon Sep 17 00:00:00 2001 From: plough Date: Wed, 5 Apr 2017 14:52:55 +0800 Subject: [PATCH 05/76] =?UTF-8?q?REPORT-1916=20=E6=A8=A1=E6=9D=BF=E8=80=97?= =?UTF-8?q?=E6=97=B6=3D=E3=80=8B=E8=B0=83=E6=95=B4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=EF=BC=8C=E8=AE=A9designer=5Fbase=E4=B8=8D=E4=BE=9D=E8=B5=96eng?= =?UTF-8?q?ine=E5=92=8Cdesigner=5Fform?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/templateinfo/JWorkBookProcessInfo.java | 1 - .../com/fr/design/mainframe/templateinfo/JFormProcessInfo.java | 0 2 files changed, 1 deletion(-) rename {designer_base => designer}/src/com/fr/design/mainframe/templateinfo/JWorkBookProcessInfo.java (98%) rename {designer_base => designer_form}/src/com/fr/design/mainframe/templateinfo/JFormProcessInfo.java (100%) diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/JWorkBookProcessInfo.java b/designer/src/com/fr/design/mainframe/templateinfo/JWorkBookProcessInfo.java similarity index 98% rename from designer_base/src/com/fr/design/mainframe/templateinfo/JWorkBookProcessInfo.java rename to designer/src/com/fr/design/mainframe/templateinfo/JWorkBookProcessInfo.java index 44522b8566..bf5d835d2a 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/JWorkBookProcessInfo.java +++ b/designer/src/com/fr/design/mainframe/templateinfo/JWorkBookProcessInfo.java @@ -1,6 +1,5 @@ package com.fr.design.mainframe.templateinfo; -import com.fr.base.io.IOFile; import com.fr.base.parameter.ParameterUI; import com.fr.main.impl.WorkBook; import com.fr.report.cellcase.CellCase; diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/JFormProcessInfo.java b/designer_form/src/com/fr/design/mainframe/templateinfo/JFormProcessInfo.java similarity index 100% rename from designer_base/src/com/fr/design/mainframe/templateinfo/JFormProcessInfo.java rename to designer_form/src/com/fr/design/mainframe/templateinfo/JFormProcessInfo.java From ec76806d476de5ea50ceb6fed066ace0ae910e7a Mon Sep 17 00:00:00 2001 From: plough Date: Wed, 5 Apr 2017 15:42:49 +0800 Subject: [PATCH 06/76] =?UTF-8?q?REPORT-1916=20=E6=A8=A1=E6=9D=BF=E8=80=97?= =?UTF-8?q?=E6=97=B6=3D=E3=80=8B=E8=A7=A3=E5=86=B3=E5=8F=A6=E5=AD=98?= =?UTF-8?q?=E4=B8=BA=E4=B8=8D=E4=BA=A7=E7=94=9F=E6=96=B0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=9A=84bug=EF=BC=9B=E5=BD=93id=E4=B8=BAnull=E6=97=B6=EF=BC=88?= =?UTF-8?q?=E6=97=A7=E6=A8=A1=E6=9D=BF=EF=BC=89=EF=BC=8C=E4=B8=8D=E6=90=9C?= =?UTF-8?q?=E9=9B=86=E6=95=B0=E6=8D=AE=EF=BC=9B=E8=B0=83=E6=95=B4=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=89=93=E5=8D=B0=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/mainframe/JTemplate.java | 9 +++++---- .../mainframe/templateinfo/TemplateInfoCollector.java | 9 ++++++++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/JTemplate.java b/designer_base/src/com/fr/design/mainframe/JTemplate.java index b0b9f7b5a9..d6dc2f0b16 100644 --- a/designer_base/src/com/fr/design/mainframe/JTemplate.java +++ b/designer_base/src/com/fr/design/mainframe/JTemplate.java @@ -111,14 +111,15 @@ public abstract class JTemplate> ex // 为收集模版信息作准备 private void initForCollect() { - if (template.getTemplateID() == null) { - template.initTemplateID(); // 为新模板设置 templateID 属性 - } + template.initTemplateID(); // 为新模板设置 templateID 属性 if (openTime == 0) { openTime = System.currentTimeMillis(); } } private void collectInfo() { // 执行收集操作 + if (template.getTemplateID() == null) { // 旧模板 + return; + } long saveTime = System.currentTimeMillis(); // 保存模板的时间点 tic.collectInfo(template, this, openTime, saveTime); openTime = saveTime; // 更新 openTime,准备下一次计算 @@ -533,7 +534,7 @@ public abstract class JTemplate> ex boolean result = this.saveFile(); if (result) { DesignerFrameFileDealerPane.getInstance().refresh(); - initForCollect(); // 如果是旧模板另存为新模板,则添加 templateID + initForCollect(); // 如果另存为新模板,则添加 templateID collectInfo(); } //更换最近打开 diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index 4f7069205c..39a7e22abd 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -113,7 +113,14 @@ public class TemplateInfoCollector implements Serializable { private void saveInfo() { try { ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(getInfoFile())); - FRLogger.getLogger().info("writing: " + instance.templateInfoList); + String log = ""; + int count = 1; + for (String key : templateInfoList.keySet()) { + String createTime = ((HashMap)templateInfoList.get(key).get("consumingMap")).get("create_time").toString(); + log += (count + ". id: " + key + " " + createTime + "\n" + templateInfoList.get(key).toString() + "\n"); + count ++; + } + FRLogger.getLogger().info("writing tplInfo: \n" + log); os.writeObject(instance); os.close(); } catch (Exception ex) { From c6c5eb3f4ab49d27e2300d1f4c450f5172e39075 Mon Sep 17 00:00:00 2001 From: unknown <李晓丽> Date: Wed, 5 Apr 2017 16:50:23 +0800 Subject: [PATCH 07/76] =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=E7=BF=BB?= =?UTF-8?q?=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/locale/designer_zh_TW.properties | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index 10edd2d169..46500f10c1 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -563,17 +563,17 @@ FR-Designer_Plugin_Should_Update_Please_Contact_Developer=\u63D2\u4EF6\u7248\u67 FR-Designer_WidgetOrder=\u63A7\u4EF6\u9806\u5E8F FR-Designer_Mobile_Form_Analysis_Annotation=\u6CE8\u91CB\uFF1A\u53EF\u4EE5\u901A\u904E\u8A72\u5C6C\u6027\u63A7\u5236\u8868\u55AE\u5728APP\u4E2D\u7684\u89E3\u6790\u65B9\u5F0F\u3002 FR-Designer_Mobile_Report_Analysis_Annotation=\u6CE8\u91CB\uFF1A\u53EF\u4EE5\u901A\u904E\u8A72\u5C6C\u6027\u63A7\u5236\u5831\u8868\u5728APP\u4E2D\u7684\u89E3\u6790\u65B9\u5F0F\uFF0C\u53EA\u652F\u6301\u5206\u9801\u9810\u89BD\uFF0C\u586B\u5831\u9810\u89BD\u6642\u5C6C\u6027\u7121\u6548\u3002 -FR-Designer_Background_Null= -FR-Designer_Background_Color= -FR-Designer_Background_Texture= -FR-Designer_Background_Pattern= -FR-Designer_Background_Gradient_Color= -FR-Designer_Background_Image= -FR-Designer_Background_Clear= -FR-Designer_Background_Image_Select= -FR-Designer_Initial_Background_Tips= -FR-Designer_Mouse_Move_Tips= -FR-Designer_Mouse_Click_Tips= +FR-Designer_Background_Null=\u6C92\u6709\u80CC\u666F +FR-Designer_Background_Color=\u984F\u8272 +FR-Designer_Background_Texture=\u7D0B\u7406 +FR-Designer_Background_Pattern=\u5716\u6848 +FR-Designer_Background_Gradient_Color=\u6F38\u8B8A\u8272 +FR-Designer_Background_Image=\u5716\u7247 +FR-Designer_Background_Clear=\u6E05\u9664 +FR-Designer_Background_Image_Select=\u9078\u64C7\u5716\u7247 +FR-Designer_Initial_Background_Tips=\u6309\u9215\u7684\u521D\u59CB\u80CC\u666F +FR-Designer_Mouse_Move_Tips=\u6ED1\u9F20\u79FB\u52D5\u5230\u6309\u9215\u4E0A\u7684\u80CC\u666F\uFF0C\u82E5\u7121\u5247\u4E0D\u6539\u8B8A\u80CC\u666F +FR-Designer_Mouse_Click_Tips=\u6ED1\u9F20\u9EDE\u64CA\u6309\u9215\u6642\u80CC\u666F\uFF0C\u82E5\u7121\u5247\u4E0D\u6539\u8B8A\u80CC\u666F FR-Designer-Move_Tab_First=\u79FB\u52D5\u5230\u9996\u4F4D FR-Designer-Move_Tab_End=\u79FB\u52D5\u5230\u672B\u5C3E FR-Designer-Move_Tab_Next=\u5F80\u5F8C\u79FB\u52D5 From 756670a9c0d4b17c71faae4ccf682f54359edddf Mon Sep 17 00:00:00 2001 From: wanling wang Date: Wed, 5 Apr 2017 16:56:21 +0800 Subject: [PATCH 08/76] =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=E7=BF=BB?= =?UTF-8?q?=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .../design/locale/designer_ja_JP.properties | 30 +++++++++---------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index a9c6c2320c..5cc51f5ed5 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,6 @@ designer_base/bin designer_chart/bin designer_form/bin *.iml +designer_base/src/com/fr/design/locale/.idea diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index 4d68093c75..ffb1757f09 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -541,18 +541,18 @@ FR-Designer_No=\u3044\u3044\u3048 FR-Designer_Pagination=\u30DA\u30FC\u30B8\u30F3\u30B0 FR-Designer_DS_TableData=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 FR-Designer_Parameter-Formula=\u6570\u5F0F -FR-Designer_Background_Null= -FR-Designer_Background_Color= -FR-Designer_Background_Texture= -FR-Designer_Background_Pattern= -FR-Designer_Background_Gradient_Color= -FR-Designer_Background_Image= -FR-Designer_Background_Clear= -FR-Designer_Background_Image_Select= -FR-Designer_Initial_Background_Tips= -FR-Designer_Mouse_Move_Tips= -FR-Designer_Mouse_Click_Tips= -FR-Designer-Move_Tab_First= -FR-Designer-Move_Tab_End= -FR-Designer-Move_Tab_Next= -FR-Designer-Move_Tab_Prev= +FR-Designer_Background_Null=\u80CC\u666F\u306A\u3057 +FR-Designer_Background_Color=\u8272 +FR-Designer_Background_Texture=\u67C4 +FR-Designer_Background_Pattern=\u6A21\u69D8 +FR-Designer_Background_Gradient_Color=\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3\u8272 +FR-Designer_Background_Image=\u5199\u771F +FR-Designer_Background_Clear=\u30AF\u30EA\u30A2 +FR-Designer_Background_Image_Select=\u5199\u771F\u3092\u9078\u629E +FR-Designer_Initial_Background_Tips=\u30DC\u30BF\u30F3\u306E\u521D\u671F\u80CC\u666F +FR-Designer_Mouse_Move_Tips=\u30DE\u30A6\u30B9\u304C\u30DC\u30BF\u30F3\u306B\u79FB\u3059\u6642\u306E\u80CC\u666F +FR-Designer_Mouse_Click_Tips=\u30DE\u30A6\u30B9\u304C\u30DC\u30BF\u30F3\u306B\u79FB\u3059\u6642\u306E\u80CC\u666F +FR-Designer-Move_Tab_First=\u30C8\u30C3\u30D7\u306B\u79FB\u3059 +FR-Designer-Move_Tab_End=\u6700\u5F8C\u306B\u79FB\u3059 +FR-Designer-Move_Tab_Next=\u5F8C\u308D\u306B\u79FB\u3059 +FR-Designer-Move_Tab_Prev=\u524D\u306B\u79FB\u3059 From a1a277ff65546753d8beae9434004376cb395f0d Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Wed, 5 Apr 2017 16:59:49 +0800 Subject: [PATCH 09/76] =?UTF-8?q?=E8=BF=98=E5=8E=9F=E5=86=B2=E7=AA=81?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/chart/axis/MinMaxValuePane.java | 18 +++++++----------- .../chart/gui/style/axis/ChartValuePane.java | 5 ++--- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java b/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java index 73235dc31f..4a9be221de 100644 --- a/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java +++ b/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java @@ -42,14 +42,14 @@ public class MinMaxValuePane extends JPanel { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] columnSize = { p, f }; - double[] rowSize = { p, p, p, p, p, p, p, p}; + double[] rowSize = { p, p, p, p}; Component[][] components = getPanelComponents(); JPanel panel = TableLayoutHelper.createTableLayoutPane(components ,rowSize,columnSize); this.setLayout(new BorderLayout()); this.add(panel,BorderLayout.CENTER); - for(int i = 0; i < components.length; i+=2) { + for(int i = 0; i < components.length; i++) { ((UICheckBox)components[i][0]).addActionListener(new ActionListener() { @Override @@ -57,19 +57,15 @@ public class MinMaxValuePane extends JPanel { checkBoxUse(); } }); - ChartSwingUtils.addListener((UICheckBox)components[i][0], (UITextField)components[i+1][0]); + ChartSwingUtils.addListener((UICheckBox)components[i][0], (UITextField)components[i][1]); } } protected Component[][] getPanelComponents() { return new Component[][]{ - new Component[]{minCheckBox}, - new Component[]{minValueField}, - new Component[]{maxCheckBox}, - new Component[]{maxValueField}, - new Component[]{isCustomMainUnitBox}, - new Component[]{mainUnitField}, - new Component[]{isCustomSecUnitBox}, - new Component[]{secUnitField}, + new Component[]{minCheckBox, minValueField}, + new Component[]{maxCheckBox, maxValueField}, + new Component[]{isCustomMainUnitBox, mainUnitField}, + new Component[]{isCustomSecUnitBox, secUnitField}, }; } diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java index f798a0a07d..e497bcb80f 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java @@ -151,11 +151,10 @@ public class ChartValuePane extends ChartAxisUsePane{ double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] columnSize = { LayoutConstants.CHART_ATTR_TOMARGIN,p,f}; - double[] rowSize = { p, p, p}; + double[] rowSize = { p, p}; Component[][] component = new Component[][]{ new Component[]{null,initMinMaxValue(),null}, - new Component[]{null, addLogarithmicPane2ValuePane(), null}, - new Component[]{null, null, addLogText()}, + new Component[]{null, addLogarithmicPane2ValuePane(), addLogText()}, }; return TableLayoutHelper.createTableLayoutPane(component, rowSize, columnSize); } From 28443f0c163bc298d006015392f62a2f810764ab Mon Sep 17 00:00:00 2001 From: plough Date: Wed, 5 Apr 2017 17:42:38 +0800 Subject: [PATCH 10/76] =?UTF-8?q?REPORT-1916=20=E6=A8=A1=E6=9D=BF=E8=80=97?= =?UTF-8?q?=E6=97=B6=3D=E3=80=8B=E9=98=B2=E6=AD=A2=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E6=94=B6=E9=9B=86=E6=A8=A1=E6=9D=BF=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/JTemplate.java | 3 -- .../templateinfo/TemplateInfoCollector.java | 29 ++++++++++++------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/JTemplate.java b/designer_base/src/com/fr/design/mainframe/JTemplate.java index d6dc2f0b16..37769cdbe8 100644 --- a/designer_base/src/com/fr/design/mainframe/JTemplate.java +++ b/designer_base/src/com/fr/design/mainframe/JTemplate.java @@ -117,9 +117,6 @@ public abstract class JTemplate> ex } } private void collectInfo() { // 执行收集操作 - if (template.getTemplateID() == null) { // 旧模板 - return; - } long saveTime = System.currentTimeMillis(); // 保存模板的时间点 tic.collectInfo(template, this, openTime, saveTime); openTime = saveTime; // 更新 openTime,准备下一次计算 diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index 39a7e22abd..3cbc557f81 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -15,9 +15,7 @@ import org.json.JSONObject; import java.io.*; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.HashMap; +import java.util.*; /** * 做模板的过程和耗时收集,辅助类 @@ -27,6 +25,7 @@ public class TemplateInfoCollector implements Serializable { private static final String FILE_NAME = "tplInfo.ser"; private static TemplateInfoCollector instance; private HashMap> templateInfoList; + private Set removedTemplates; // 已经从 templateInfoList 中删除过的 id 列表,防止重复收集数据 private String designerOpenDate; //设计器最近一次打开日期 private static final int VALID_CELL_COUNT = 5; // 有效报表模板的格子数 private static final int VALID_WIDGET_COUNT = 5; // 有效报表模板的控件数 @@ -36,6 +35,7 @@ public class TemplateInfoCollector implements Serializable { @SuppressWarnings("unchecked") private TemplateInfoCollector() { templateInfoList = new HashMap<>(); + removedTemplates = new ListSet<>(); setDesignerOpenDate(); } @@ -77,12 +77,15 @@ public class TemplateInfoCollector implements Serializable { return instance; } - private static boolean shouldCollectInfo() { + private boolean shouldCollectInfo(T t) { + if (t.getTemplateID() == null || instance.removedTemplates.contains(t.getTemplateID())) { // 旧模板 + return false; + } return DesignerEnvManager.getEnvManager().isJoinProductImprove() && FRContext.isChineseEnv(); } - public static void appendProcess(String log) { - if (!shouldCollectInfo()) { + public void appendProcess(T t, String log) { + if (!shouldCollectInfo(t)) { return; } // 获取当前编辑的模板 @@ -148,7 +151,7 @@ public class TemplateInfoCollector implements Serializable { */ @SuppressWarnings("unchecked") public void collectInfo(T t, JTemplate jt, long openTime, long saveTime) { - if (!shouldCollectInfo()) { + if (!shouldCollectInfo(t)) { return; } @@ -232,7 +235,7 @@ public class TemplateInfoCollector implements Serializable { if (sendSingleTemplateInfo(consumingUrl, jsonConsumingMap) && sendSingleTemplateInfo(processUrl, jsonProcessMap)) { // 清空记录 FRLogger.getLogger().info("successfully send " + templateInfo.get("templateID")); - templateInfoList.remove(templateInfo.get("templateID")); + removeFromTemplateInfoList(templateInfo.get("templateID")); } } saveInfo(); @@ -284,12 +287,18 @@ public class TemplateInfoCollector implements Serializable { } // 删除测试模板 for (String key : testTemplateKeys) { - templateInfoList.remove(key); -// System.out.println(key + " is removed..."); + removeFromTemplateInfoList(key); } return completeTemplatesInfo; } + private void removeFromTemplateInfoList(String key) { + templateInfoList.remove(key); + removedTemplates.add(key); + FRLogger.getLogger().info(key + " is removed..."); + FRLogger.getLogger().info("removedTemplates: " + removedTemplates); + } + @SuppressWarnings("unchecked") private boolean isTestTemplate(HashMap templateInfo) { HashMap processMap = (HashMap) templateInfo.get("processMap"); From f7d68b85c4450327597b3c56d8a7f2376b700fca Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Wed, 5 Apr 2017 19:58:39 +0800 Subject: [PATCH 11/76] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/chart/gui/style/axis/ChartValuePane.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java index e497bcb80f..8916efe254 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java @@ -72,7 +72,7 @@ public class ChartValuePane extends ChartAxisUsePane{ axisLineStylePane = new ChartAxisLineStylePane(); zeroPane = aliagnZero4Second(); - axisReversed = new UICheckBox(Inter.getLocText("AxisReversed")); + axisReversed = new UICheckBox(Inter.getLocText("FR-Designer_AxisReversed")); unitCombox = new UIComboBox(ChartConstants.UNIT_I18N_VALUES); formatPane = new FormatPane(); axisLabelPane = new ChartAxisLabelPane(); @@ -171,8 +171,8 @@ public class ChartValuePane extends ChartAxisUsePane{ // 返回对数相关界面. 百分比 没有此界面. protected JPanel addLogarithmicPane2ValuePane() { JPanel labelLogPane = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); - labelLogPane.add(logBox = new UICheckBox(Inter.getLocText("Logarithmic")+":")); - labelLogPane.add(new UILabel(Inter.getLocText("Chart_Log_Base"))); + labelLogPane.add(logBox = new UICheckBox(Inter.getLocText("FR-Designer_Logarithmic")+":")); + labelLogPane.add(new UILabel(Inter.getLocText("FR-Designer_Chart_Log_Base"))); logBaseField = new UITextField(4); logBaseField.setText("10"); @@ -221,7 +221,7 @@ public class ChartValuePane extends ChartAxisUsePane{ * @return 返回标题. */ public String title4PopupWindow() { - return Inter.getLocText("Chart_F_Radar_Axis"); + return Inter.getLocText("FR-Designer_Chart_F_Radar_Axis"); } @Override From ab1d6e5cc7ea54fb0696e0cf285e34d935e5f64f Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 6 Apr 2017 10:04:10 +0800 Subject: [PATCH 12/76] =?UTF-8?q?REPORT-1916=20=E6=A8=A1=E6=9D=BF=E8=80=97?= =?UTF-8?q?=E6=97=B6=3D=E3=80=8B=E8=BF=9C=E7=A8=8B=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E6=97=B6=E4=B8=8D=E6=94=B6=E9=9B=86=E6=A8=A1=E6=9D=BF=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/templateinfo/TemplateInfoCollector.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index 3cbc557f81..f302d9f5ea 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -5,6 +5,7 @@ import com.fr.base.io.IOFile; import com.fr.design.DesignerEnvManager; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; +import com.fr.env.RemoteEnv; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.GeneralUtils; @@ -78,7 +79,9 @@ public class TemplateInfoCollector implements Serializable { } private boolean shouldCollectInfo(T t) { - if (t.getTemplateID() == null || instance.removedTemplates.contains(t.getTemplateID())) { // 旧模板 + if (FRContext.getCurrentEnv() instanceof RemoteEnv // 远程设计不收集数据 + || t.getTemplateID() == null + || instance.removedTemplates.contains(t.getTemplateID())) { // 旧模板 return false; } return DesignerEnvManager.getEnvManager().isJoinProductImprove() && FRContext.isChineseEnv(); From 4cd9b17bfca1021f81e616f035daef7fc7941851 Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 6 Apr 2017 10:36:56 +0800 Subject: [PATCH 13/76] =?UTF-8?q?REPORT-1916=20=E6=A8=A1=E6=9D=BF=E8=80=97?= =?UTF-8?q?=E6=97=B6=3D=E3=80=8B=E5=A6=82=E6=9E=9C=20TemplateInfoCollecor?= =?UTF-8?q?=20=E7=B1=BB=E7=BB=93=E6=9E=84=E6=9C=89=E6=94=B9=E5=8A=A8?= =?UTF-8?q?=EF=BC=8C=E5=88=99=E6=94=BE=E5=BC=83=E4=B9=8B=E5=89=8D=E6=94=B6?= =?UTF-8?q?=E9=9B=86=E7=9A=84=E6=95=B0=E6=8D=AE=EF=BC=8C=E4=BF=9D=E8=AF=81?= =?UTF-8?q?=E6=AD=A3=E5=B8=B8=E5=90=AF=E5=8A=A8=E8=AE=BE=E8=AE=A1=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/templateinfo/TemplateInfoCollector.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index f302d9f5ea..76d942e9a3 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -71,7 +71,14 @@ public class TemplateInfoCollector implements Serializable { } catch (FileNotFoundException ex) { // 如果之前没有存储过,则创建新对象 instance = new TemplateInfoCollector(); - } catch (Exception ex) { + } catch (InvalidClassException ex) { + // 如果 TemplateInfoCollecor 类结构有改动,则放弃之前收集的数据(下次保存时覆盖) + // 这种情况主要在开发、测试过程中遇到,正式上线后不应该出现 + FRLogger.getLogger().error(ex.getMessage()); + FRLogger.getLogger().info("use a new instance"); + instance = new TemplateInfoCollector(); + } + catch (Exception ex) { FRLogger.getLogger().error(ex.getMessage(), ex); } } From cebfc9ef10d1c3411e4bc6a33e3b05d38b158e53 Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 6 Apr 2017 12:47:09 +0800 Subject: [PATCH 14/76] =?UTF-8?q?REPORT-1916=20=E6=A8=A1=E6=9D=BF=E8=80=97?= =?UTF-8?q?=E6=97=B6=3D=E3=80=8B=E4=BF=AE=E6=94=B9=E7=AE=97=E6=B3=95?= =?UTF-8?q?=EF=BC=8C=E5=B0=86=E4=B8=8A=E4=BC=A0=E5=90=8E=E7=9A=84=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E8=A7=86=E4=B8=BA=E6=97=A7=E6=A8=A1=E6=9D=BF=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E5=86=8D=E6=94=B6=E9=9B=86=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/mainframe/JTemplate.java | 3 +++ .../templateinfo/TemplateInfoCollector.java | 16 +++++----------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/JTemplate.java b/designer_base/src/com/fr/design/mainframe/JTemplate.java index 37769cdbe8..7c98fecd1f 100644 --- a/designer_base/src/com/fr/design/mainframe/JTemplate.java +++ b/designer_base/src/com/fr/design/mainframe/JTemplate.java @@ -117,6 +117,9 @@ public abstract class JTemplate> ex } } private void collectInfo() { // 执行收集操作 + if (openTime == 0) { // 旧模板,不收集数据 + return; + } long saveTime = System.currentTimeMillis(); // 保存模板的时间点 tic.collectInfo(template, this, openTime, saveTime); openTime = saveTime; // 更新 openTime,准备下一次计算 diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index 76d942e9a3..db1fe312ae 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -26,7 +26,6 @@ public class TemplateInfoCollector implements Serializable { private static final String FILE_NAME = "tplInfo.ser"; private static TemplateInfoCollector instance; private HashMap> templateInfoList; - private Set removedTemplates; // 已经从 templateInfoList 中删除过的 id 列表,防止重复收集数据 private String designerOpenDate; //设计器最近一次打开日期 private static final int VALID_CELL_COUNT = 5; // 有效报表模板的格子数 private static final int VALID_WIDGET_COUNT = 5; // 有效报表模板的控件数 @@ -36,7 +35,6 @@ public class TemplateInfoCollector implements Serializable { @SuppressWarnings("unchecked") private TemplateInfoCollector() { templateInfoList = new HashMap<>(); - removedTemplates = new ListSet<>(); setDesignerOpenDate(); } @@ -85,17 +83,15 @@ public class TemplateInfoCollector implements Serializable { return instance; } - private boolean shouldCollectInfo(T t) { - if (FRContext.getCurrentEnv() instanceof RemoteEnv // 远程设计不收集数据 - || t.getTemplateID() == null - || instance.removedTemplates.contains(t.getTemplateID())) { // 旧模板 + private boolean shouldCollectInfo() { + if (FRContext.getCurrentEnv() instanceof RemoteEnv) { // 远程设计不收集数据 return false; } return DesignerEnvManager.getEnvManager().isJoinProductImprove() && FRContext.isChineseEnv(); } - public void appendProcess(T t, String log) { - if (!shouldCollectInfo(t)) { + public void appendProcess(String log) { + if (!shouldCollectInfo()) { return; } // 获取当前编辑的模板 @@ -161,7 +157,7 @@ public class TemplateInfoCollector implements Serializable { */ @SuppressWarnings("unchecked") public void collectInfo(T t, JTemplate jt, long openTime, long saveTime) { - if (!shouldCollectInfo(t)) { + if (!shouldCollectInfo()) { return; } @@ -304,9 +300,7 @@ public class TemplateInfoCollector implements Serializable { private void removeFromTemplateInfoList(String key) { templateInfoList.remove(key); - removedTemplates.add(key); FRLogger.getLogger().info(key + " is removed..."); - FRLogger.getLogger().info("removedTemplates: " + removedTemplates); } @SuppressWarnings("unchecked") From 88201d9d5c175775f43cb017f3d8b5159ee3bf4f Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 6 Apr 2017 14:42:21 +0800 Subject: [PATCH 15/76] =?UTF-8?q?REPORT-1916=20=E6=A8=A1=E6=9D=BF=E8=80=97?= =?UTF-8?q?=E6=97=B6=3D=E3=80=8B=E8=B0=83=E6=95=B4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=EF=BC=9B=E5=8F=91=E9=80=81=E6=95=B0=E6=8D=AE=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E8=BE=93=E5=87=BA=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/mainframe/JTemplate.java | 4 ++-- .../design/mainframe/templateinfo/TemplateInfoCollector.java | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/JTemplate.java b/designer_base/src/com/fr/design/mainframe/JTemplate.java index 7c98fecd1f..92dd63e112 100644 --- a/designer_base/src/com/fr/design/mainframe/JTemplate.java +++ b/designer_base/src/com/fr/design/mainframe/JTemplate.java @@ -85,7 +85,7 @@ public abstract class JTemplate> ex public JTemplate(T t, String defaultFileName) { this(t, new MemFILE(newTemplateNameByIndex(defaultFileName)), true); - initForCollect(); + openTime = System.currentTimeMillis(); } public JTemplate(T t, FILE file) { @@ -534,7 +534,7 @@ public abstract class JTemplate> ex boolean result = this.saveFile(); if (result) { DesignerFrameFileDealerPane.getInstance().refresh(); - initForCollect(); // 如果另存为新模板,则添加 templateID + initForCollect(); // 如果保存新模板(新建模板直接保存,或者另存为),则添加 templateID collectInfo(); } //更换最近打开 diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index db1fe312ae..1b57c21fa9 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -242,6 +242,8 @@ public class TemplateInfoCollector implements Serializable { // 清空记录 FRLogger.getLogger().info("successfully send " + templateInfo.get("templateID")); removeFromTemplateInfoList(templateInfo.get("templateID")); + } else { + FRLogger.getLogger().info("模板数据发送服务器失败,下次启动设计器时再尝试:" + templateInfo.get("templateID")); } } saveInfo(); From 139b3b89e24e57e2bcdf663e1b1940bfbafbe6d8 Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 6 Apr 2017 14:45:08 +0800 Subject: [PATCH 16/76] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/templateinfo/TemplateInfoCollector.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index 1b57c21fa9..37446b3d34 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -243,7 +243,7 @@ public class TemplateInfoCollector implements Serializable { FRLogger.getLogger().info("successfully send " + templateInfo.get("templateID")); removeFromTemplateInfoList(templateInfo.get("templateID")); } else { - FRLogger.getLogger().info("模板数据发送服务器失败,下次启动设计器时再尝试:" + templateInfo.get("templateID")); + FRLogger.getLogger().info("send template info failed, will try next time, " + templateInfo.get("templateID")); } } saveInfo(); From 7d9891e3574997ead204235878cab8bc26f8fc98 Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Thu, 6 Apr 2017 17:10:45 +0800 Subject: [PATCH 17/76] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/locale/designer.properties | 4 ++++ .../src/com/fr/design/locale/designer_en_US.properties | 4 ++++ .../src/com/fr/design/locale/designer_ja_JP.properties | 4 ++++ .../src/com/fr/design/locale/designer_ko_KR.properties | 4 ++++ .../src/com/fr/design/locale/designer_zh_CN.properties | 4 ++++ .../src/com/fr/design/locale/designer_zh_TW.properties | 4 ++++ 6 files changed, 24 insertions(+) diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index 7c4847f3ca..8293091877 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -585,3 +585,7 @@ FR-Designer-Move_Tab_First=move to first FR-Designer-Move_Tab_End=move to end FR-Designer-Move_Tab_Next=move to next FR-Designer-Move_Tab_Prev=move to previous +FR-Designer_AxisReversed=AxisValue +FR-Designer_Logarithmic=Logarithmic +FR-Designer_Chart_Log_Base=Log Base +FR-Designer_Chart_F_Radar_Axis=Chart_F_Radar_Axis \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index fab277ad6f..6f602ec4e0 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -586,3 +586,7 @@ FR-Designer-Move_Tab_First=move to first FR-Designer-Move_Tab_End=move to end FR-Designer-Move_Tab_Next=move to next FR-Designer-Move_Tab_Prev=move to previous +FR-Designer_AxisReversed=Axis in reverse order +FR-Designer_Logarithmic=Log scale +FR-Designer_Chart_Log_Base=Log Base +FR-Designer_Chart_F_Radar_Axis=Value Axis \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index 4d68093c75..23285ba1db 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -556,3 +556,7 @@ FR-Designer-Move_Tab_First= FR-Designer-Move_Tab_End= FR-Designer-Move_Tab_Next= FR-Designer-Move_Tab_Prev= +FR-Designer_AxisReversed=\u8EF8\u9006\u914D\u5217 +FR-Designer_Logarithmic=\u5BFE\u6570\u76EE\u76DB\u308A +FR-Designer_Chart_Log_Base=\u5E95\u6570 +FR-Designer_Chart_F_Radar_Axis=\u5782\u76F4\u8EF8 \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties index 14086e8814..0c798b87aa 100644 --- a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties +++ b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties @@ -553,3 +553,7 @@ FR-Designer-Move_Tab_First= FR-Designer-Move_Tab_End= FR-Designer-Move_Tab_Next= FR-Designer-Move_Tab_Prev= +FR-Designer_AxisReversed=\uCD95\uC5ED\uC21C +FR-Designer_Logarithmic=\uB85C\uADF8\uB208\uAE08 +FR-Designer_Chart_Log_Base=\uAE30\uC218 +FR-Designer_Chart_F_Radar_Axis=\uAC12\uCD95 \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index 5139b301f7..7c3917275a 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -590,3 +590,7 @@ FR-Designer-Move_Tab_First=\u79FB\u52A8\u5230\u9996\u4F4D FR-Designer-Move_Tab_End=\u79FB\u52A8\u5230\u672B\u5C3E FR-Designer-Move_Tab_Next=\u5F80\u540E\u79FB\u52A8 FR-Designer-Move_Tab_Prev=\u5F80\u524D\u79FB\u52A8 +FR-Designer_AxisReversed=\u8F74\u9006\u5E8F +FR-Designer_Logarithmic=\u5BF9\u6570\u523B\u5EA6 +FR-Designer_Chart_Log_Base=\u5E95\u6570 +FR-Designer_Chart_F_Radar_Axis=\u503C\u8F74 diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index 10edd2d169..aeb9411149 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -578,3 +578,7 @@ FR-Designer-Move_Tab_First=\u79FB\u52D5\u5230\u9996\u4F4D FR-Designer-Move_Tab_End=\u79FB\u52D5\u5230\u672B\u5C3E FR-Designer-Move_Tab_Next=\u5F80\u5F8C\u79FB\u52D5 FR-Designer-Move_Tab_Prev=\u5F80\u524D\u79FB\u52D5 +FR-Designer_AxisReversed=\u8EF8\u9006\u5E8F +FR-Designer_Logarithmic=\u5C0D\u6578\u523B\u5EA6 +FR-Designer_Chart_Log_Base=\u5E95\u6578 +FR-Designer_Chart_F_Radar_Axis=\u503C\u8EF8 \ No newline at end of file From eb465d65f5fefd70787773ced1a97eecada6476d Mon Sep 17 00:00:00 2001 From: plough Date: Fri, 7 Apr 2017 11:43:29 +0800 Subject: [PATCH 18/76] =?UTF-8?q?REPORT-1916=20=E6=A8=A1=E6=9D=BF=E8=80=97?= =?UTF-8?q?=E6=97=B6=3D=E3=80=8B=E7=BB=99TemplateInfoCollector=E5=8A=A0?= =?UTF-8?q?=E4=B8=8AserialVersionUID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/templateinfo/TemplateInfoCollector.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index 37446b3d34..b9b7aa194e 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -31,6 +31,7 @@ public class TemplateInfoCollector implements Serializable { private static final int VALID_WIDGET_COUNT = 5; // 有效报表模板的控件数 private static final int COMPLETE_DAY_COUNT = 15; // 判断模板是否完成的天数 private static final int ONE_THOUSAND = 1000; + static final long serialVersionUID = 2007L; @SuppressWarnings("unchecked") private TemplateInfoCollector() { @@ -72,7 +73,7 @@ public class TemplateInfoCollector implements Serializable { } catch (InvalidClassException ex) { // 如果 TemplateInfoCollecor 类结构有改动,则放弃之前收集的数据(下次保存时覆盖) // 这种情况主要在开发、测试过程中遇到,正式上线后不应该出现 - FRLogger.getLogger().error(ex.getMessage()); + FRLogger.getLogger().info(ex.getMessage()); FRLogger.getLogger().info("use a new instance"); instance = new TemplateInfoCollector(); } From 58fbac4e191af1d56f843ac75f020eba3f405c1c Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Fri, 7 Apr 2017 13:58:25 +0800 Subject: [PATCH 19/76] =?UTF-8?q?report-1945=E7=BB=84=E4=BB=B6=E5=A4=8D?= =?UTF-8?q?=E7=94=A8bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/locale/designer.properties | 2 + .../design/locale/designer_en_US.properties | 2 + .../design/locale/designer_zh_CN.properties | 3 +- .../design/locale/designer_zh_TW.properties | 3 +- .../layout/FRAbsoluteLayoutAdapter.java | 11 +- .../adapters/layout/FRBodyLayoutAdapter.java | 26 +- .../adapters/layout/FRFitLayoutAdapter.java | 2 +- .../layout/FRTabFitLayoutAdapter.java | 15 +- .../designer/beans/models/AddingModel.java | 180 ++--- .../designer/beans/models/SelectionModel.java | 46 +- .../designer/beans/models/StateModel.java | 688 +++++++++--------- .../beans/painters/AbstractPainter.java | 45 +- .../designer/creator/XLayoutContainer.java | 435 +++++------ .../creator/cardlayout/XWCardTagLayout.java | 338 +++++---- .../mainframe/FormCreatorDropTarget.java | 17 +- .../com/fr/design/mainframe/FormDesigner.java | 6 + .../fr/design/mainframe/FormSelection.java | 12 +- .../design/mainframe/FormSelectionUtils.java | 73 +- 18 files changed, 985 insertions(+), 919 deletions(-) diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index 7c4847f3ca..0eda01dee6 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -585,3 +585,5 @@ FR-Designer-Move_Tab_First=move to first FR-Designer-Move_Tab_End=move to end FR-Designer-Move_Tab_Next=move to next FR-Designer-Move_Tab_Prev=move to previous +FR-Designer_Too_Large_To_Paste=too large to paste +FR-Designer_Too_Small_To_Paste=Too small to paste diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index fab277ad6f..0dc0c050f9 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -586,3 +586,5 @@ FR-Designer-Move_Tab_First=move to first FR-Designer-Move_Tab_End=move to end FR-Designer-Move_Tab_Next=move to next FR-Designer-Move_Tab_Prev=move to previous +FR-Designer_Too_Large_To_Paste=Too large to paste! +FR-Designer_Too_Small_To_Paste=Too small to paste! diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index 56e695b2cf..5631325835 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -585,9 +585,10 @@ FR-Designer_Background_Clear=\u6E05\u9664 FR-Designer_Background_Image_Select=\u9009\u62E9\u56FE\u7247 FR-Designer_Initial_Background_Tips=\u6309\u94AE\u7684\u521D\u59CB\u80CC\u666F FR-Designer_Mouse_Move_Tips=\u9F20\u6807\u79FB\u52A8\u5230\u6309\u94AE\u4E0A\u7684\u80CC\u666F\uFF0C\u82E5\u65E0\u5219\u4E0D\u6539\u53D8\u80CC\u666F - FR-Designer_Mouse_Click_Tips=\u9F20\u6807\u70B9\u51FB\u6309\u94AE\u65F6\u80CC\u666F\uFF0C\u82E5\u65E0\u5219\u4E0D\u6539\u53D8\u80CC\u666F FR-Designer-Move_Tab_First=\u79FB\u52A8\u5230\u9996\u4F4D FR-Designer-Move_Tab_End=\u79FB\u52A8\u5230\u672B\u5C3E FR-Designer-Move_Tab_Next=\u5F80\u540E\u79FB\u52A8 FR-Designer-Move_Tab_Prev=\u5F80\u524D\u79FB\u52A8 +FR-Designer_Too_Large_To_Paste=\u7EC4\u4EF6\u5927\u5C0F\u8D85\u51FA\u8FB9\u754C\uFF0C\u65E0\u6CD5\u7C98\u8D34\uFF01 +FR-Designer_Too_Small_To_Paste=\u6B64\u5904\u65E0\u6CD5\u7C98\u8D34\uFF0C\u5C0F\u4E8E\u7EC4\u4EF6\u6700\u5C0F\u9AD8\u5EA6\uFF01 diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index df75494c6b..dc9916ab18 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -579,4 +579,5 @@ FR-Designer-Move_Tab_First=\u79FB\u52D5\u5230\u9996\u4F4D FR-Designer-Move_Tab_End=\u79FB\u52D5\u5230\u672B\u5C3E FR-Designer-Move_Tab_Next=\u5F80\u5F8C\u79FB\u52D5 FR-Designer-Move_Tab_Prev=\u5F80\u524D\u79FB\u52D5 - +FR-Designer_Too_Large_To_Paste=\u7D44\u4EF6\u5927\u5C0F\u8D85\u51FA\u908A\u754C\uFF0C\u7121\u6CD5\u7C98\u8CBC\uFF01 +FR-Designer_Too_Small_To_Paste=\u6B64\u8655\u7121\u6CD5\u7C98\u8CBC\uFF0C\u5C0F\u65BC\u7D44\u4EF6\u6700\u5C0F\u9AD8\u5EA6\uFF01 diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java index b8a8e8ad19..603626e13d 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java @@ -283,7 +283,6 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { } else if (isCrossPointArea(parentComp, x, y)) { //交叉区域插入组件时,根据具体位置进行上下或者左右或者相邻三个组件的位置大小插入 fixCrossPointArea(parentComp, child, x, y); - //TODO 尽量不要出现这种写法吧?if else条件要么互斥,要么多个if判断return,不要在一条if else语句里面return吧? return; } else if (isTrisectionArea(parentComp, x, y)) { // 在边界三等分区域,就不再和组件二等分了 @@ -320,17 +319,15 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { int height = creator.getHeight(); int width = creator.getWidth(); if (x < 0) { - width += x; - x = 0; + x = container.getX(); } else if (x + creator.getWidth() > container.getWidth()) { - width = container.getWidth() - x; + x = container.getWidth() - width; } if (y < 0) { - height += y; - y = 0; + y = container.getY(); } else if (y + creator.getHeight() > container.getHeight()) { - height = container.getHeight() - y; + y = container.getHeight() - height; } creator.setBounds(x, y, width, height); diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBodyLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBodyLayoutAdapter.java index b3072667b2..75190ba3bf 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBodyLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBodyLayoutAdapter.java @@ -640,11 +640,7 @@ public class FRBodyLayoutAdapter extends AbstractLayoutAdapter { * 又通过ComponentUtils.getRelativeBounds()方法获取到了绝对坐标, * 再次计算相对坐标,所以将y值重新变成绝对坐标。 * */ - if (currentCreator.getBackupParent().getLocation().y == WBorderLayout.DEFAULT_SIZE) { - y = y + WCardMainBorderLayout.TAB_HEIGHT + WBorderLayout.DEFAULT_SIZE; - } else { - y = y + WCardMainBorderLayout.TAB_HEIGHT; - } + y = y + WCardMainBorderLayout.TAB_HEIGHT + this.getParaEditorYOffset(); int tempX = x - rect.x; int tempY = y - rect.y; int containerX = container.getX(); @@ -675,6 +671,26 @@ public class FRBodyLayoutAdapter extends AbstractLayoutAdapter { return position; } + /** + * 获取因为参数面板导致的Y坐标偏移 + * + * @return 参数面板导致的Y坐标偏移 + */ + protected int getParaEditorYOffset() { + int offset = 0; + if (container.getParent() != null) { + Component components[] = container.getParent().getComponents(); + for (Component component : components) { + if (component instanceof XWParameterLayout) { + offset = component.getY() + component.getHeight(); + break; + } + } + } + return offset; + } + + /** * 组件交叉区域进行插入时,调整受到变动的其他组件,之前是交叉区域插入也按照三等分逻辑,后面测试中发现有bug,改为和bi一样的鼠标所在侧平分 * 默认左上角、右下角区域是垂直方向插入组件 diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java index e31ee6a5d3..eca82e5022 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java @@ -133,7 +133,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { isFindRelatedComps = false; //拖入组件判断时,先判断是否为交叉点区域,其次三等分区域,再次平分区域 Component comp = container.getComponentAt(x, y); - if (checkInterval(comp)) { + if (comp == null || checkInterval(comp)) { return false; } //如果当前处于边缘地带, 那么就把他贴到父容器上 diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRTabFitLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRTabFitLayoutAdapter.java index 352a3ba7a6..b1ca803c6b 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRTabFitLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRTabFitLayoutAdapter.java @@ -7,11 +7,13 @@ package com.fr.design.designer.beans.adapters.layout; import com.fr.design.beans.GroupModel; import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XLayoutContainer; +import com.fr.design.designer.creator.XWParameterLayout; import com.fr.design.designer.creator.XWidgetCreator; import com.fr.design.designer.creator.cardlayout.XWCardLayout; import com.fr.design.designer.creator.cardlayout.XWCardMainBorderLayout; import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; import com.fr.design.designer.properties.FRTabFitLayoutPropertiesGroupModel; +import com.fr.design.mainframe.widget.editors.ParameterEditor; import com.fr.design.utils.ComponentUtils; import com.fr.form.ui.LayoutBorderStyle; import com.fr.form.ui.container.WBorderLayout; @@ -82,16 +84,14 @@ public class FRTabFitLayoutAdapter extends FRFitLayoutAdapter { return true; } - // tab布局的纵坐标受到tab高度的影响,判断的上边界取得是里面XWTabFitLayout的上边界, - // 实际计算的时候的纵坐标用了外层的CardMainBorerLayout,需要将tab高度减掉 - //将y值变为相对坐标以实现获取到鼠标drop位置的控件 - //TODO 可以直接在这边将x,y都变成相对坐标,这样在后面判断拖进来的新控件放置方式的时候就不用再判断了 + // tab布局的纵坐标受到tab高度以及参数面板高度的影响,判断的上边界取得是里面XWTabFitLayout的上边界, + // 实际计算的时候的纵坐标用了外层的CardMainBorerLayout,需要将tab高度和参数面板高度减掉 + // 将y值变为相对坐标以实现获取到鼠标drop位置的控件 + // TODO 可以直接在这边将x,y都变成相对坐标,这样在后面判断拖进来的新控件放置方式的时候就不用再判断了 private int adjustY(int y, XWTabFitLayout tabLayout) { XWCardLayout cardLayout = (XWCardLayout) tabLayout.getBackupParent(); LayoutBorderStyle style = cardLayout.toData().getBorderStyle(); - if (container.getLocation().y == WBorderLayout.DEFAULT_SIZE) { - y = y - WBorderLayout.DEFAULT_SIZE; - } + y = y - this.getParaEditorYOffset(); if (ComparatorUtils.equals(style.getType(), LayoutBorderStyle.TITLE)) { y = y - WCardMainBorderLayout.TAB_HEIGHT; } @@ -101,4 +101,5 @@ public class FRTabFitLayoutAdapter extends FRFitLayoutAdapter { protected Rectangle getLayoutBound(XWCardMainBorderLayout mainLayout) { return ComponentUtils.getRelativeBounds(mainLayout); } + } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/beans/models/AddingModel.java b/designer_form/src/com/fr/design/designer/beans/models/AddingModel.java index 46798f4d9a..54033694d9 100644 --- a/designer_form/src/com/fr/design/designer/beans/models/AddingModel.java +++ b/designer_form/src/com/fr/design/designer/beans/models/AddingModel.java @@ -18,116 +18,124 @@ import com.fr.general.ComparatorUtils; */ public class AddingModel { - // 当前要添加的组件 - private XCreator creator; - // 记录当前鼠标的位置信息 - private int current_x; - private int current_y; - private boolean added; - - public AddingModel(FormDesigner designer, XCreator xCreator) { - String creatorName = getXCreatorName(designer, xCreator); - this.creator = xCreator; - instantiateCreator(designer, creatorName); - // 初始的时候隐藏该组件的图标 - current_x = -this.creator.getWidth(); - current_y = -this.creator.getHeight(); - } + // 当前要添加的组件 + private XCreator creator; + // 记录当前鼠标的位置信息 + private int currentX; + private int currentY; + private boolean added; + + public AddingModel(FormDesigner designer, XCreator xCreator) { + String creatorName = getXCreatorName(designer, xCreator); + this.creator = xCreator; + instantiateCreator(designer, creatorName); + // 初始的时候隐藏该组件的图标 + currentY = -this.creator.getWidth(); + currentX = -this.creator.getHeight(); + } /** * 待说明 - * @param designer 设计器 - * @param creatorName 组件名 + * + * @param designer 设计器 + * @param creatorName 组件名 */ - public void instantiateCreator(FormDesigner designer, String creatorName) { - creator.toData().setWidgetName(creatorName); - ComponentAdapter adapter = new CompositeComponentAdapter(designer, creator); - adapter.initialize(); - creator.addNotify(); - creator.putClientProperty(AdapterBus.CLIENT_PROPERTIES, adapter); - } - - public AddingModel(XCreator xCreator, int x, int y) { - this.creator = xCreator; - this.creator.backupCurrentSize(); - this.creator.backupParent(); - this.creator.setSize(xCreator.initEditorSize()); - current_x = x - (xCreator.getWidth() / 2); - current_y = y - (xCreator.getHeight() / 2); - } + public void instantiateCreator(FormDesigner designer, String creatorName) { + creator.toData().setWidgetName(creatorName); + ComponentAdapter adapter = new CompositeComponentAdapter(designer, creator); + adapter.initialize(); + creator.addNotify(); + creator.putClientProperty(AdapterBus.CLIENT_PROPERTIES, adapter); + } + + public AddingModel(XCreator xCreator, int x, int y) { + this.creator = xCreator; + this.creator.backupCurrentSize(); + this.creator.backupParent(); + this.creator.setSize(xCreator.initEditorSize()); + currentX = x - (xCreator.getWidth() / 2); + currentY = y - (xCreator.getHeight() / 2); + } /** * 隐藏当前组件的图标 */ - public void reset() { - current_x = -this.creator.getWidth(); - current_y = -this.creator.getHeight(); - } + public void reset() { + currentX = -this.creator.getWidth(); + currentY = -this.creator.getHeight(); + } - public String getXCreatorName(FormDesigner designer,XCreator x){ - String def= x.createDefaultName(); + public String getXCreatorName(FormDesigner designer, XCreator x) { + String def = x.createDefaultName(); if (x.acceptType(XWParameterLayout.class)) { return def; } - int i = 0; - while (designer.getTarget().isNameExist(def + i)) { - i++; - } - return def+i; - } - - public int getCurrentX() { - return current_x; - } - - public int getCurrentY() { - return current_y; - } + int i = 0; + while (designer.getTarget().isNameExist(def + i)) { + i++; + } + return def + i; + } + + public int getCurrentX() { + return currentX; + } + + public int getCurrentY() { + return currentY; + } /** * 移动组件图标到鼠标事件发生的位置 - * @param x 坐标 - * @param y 坐标 + * + * @param x 坐标 + * @param y 坐标 */ - public void moveTo(int x, int y) { - current_x = x - (this.creator.getWidth() / 2); - current_y = y - (this.creator.getHeight() / 2); - } + public void moveTo(int x, int y) { + currentX = x - (this.creator.getWidth() / 2); + currentY = y - (this.creator.getHeight() / 2); + } - public XCreator getXCreator() { - return this.creator; - } + public XCreator getXCreator() { + return this.creator; + } /** * 当前组件是否已经添加到某个容器中 - * @return 是返回true + * + * @return 是返回true */ - public boolean isCreatorAdded() { - return added; - } + public boolean isCreatorAdded() { + return added; + } /** * 加入容器 - * @param designer 设计器 - * @param container 容器 - * @param x 坐标 - * @param y 坐标 - * @return 成功返回true + * + * @param designer 设计器 + * @param container 容器 + * @param x 坐标 + * @param y 坐标 + * @return 成功返回true */ - public boolean add2Container(FormDesigner designer, XLayoutContainer container, int x, int y) { - //考虑不同布局嵌套的情况,获取顶层容器 - XLayoutContainer xLayoutContainer = container.getTopLayout(); - if(xLayoutContainer != null && xLayoutContainer.acceptType(XWAbsoluteLayout.class)){ - container = xLayoutContainer; - } - - Rectangle rect = ComponentUtils.getRelativeBounds(container); - if(!ComparatorUtils.equals(container.getOuterLayout(), container.getBackupParent())){ - return added = container.getLayoutAdapter().addBean(creator, x + designer.getArea().getHorizontalValue(), y + designer.getArea().getVerticalValue()); - } - return added = container.getLayoutAdapter().addBean(creator, - x + designer.getArea().getHorizontalValue() - rect.x, - y + designer.getArea().getVerticalValue() - rect.y); - } + public boolean add2Container(FormDesigner designer, XLayoutContainer container, int x, int y) { + //考虑不同布局嵌套的情况,获取顶层容器 + XLayoutContainer xLayoutContainer = container.getTopLayout(); + if (xLayoutContainer != null && xLayoutContainer.acceptType(XWAbsoluteLayout.class)) { + container = xLayoutContainer; + } + + Rectangle rect = ComponentUtils.getRelativeBounds(container); + if (!ComparatorUtils.equals(container.getOuterLayout(), container.getBackupParent())) { + added = container.getLayoutAdapter().addBean(creator, + x + designer.getArea().getHorizontalValue(), + y + designer.getArea().getVerticalValue()); + return added; + } + added = container.getLayoutAdapter().addBean(creator, + x + designer.getArea().getHorizontalValue() - rect.x, + y + designer.getArea().getVerticalValue() - rect.y); + return added; + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java index c364317f1a..a70d9b1566 100644 --- a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java +++ b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java @@ -13,6 +13,7 @@ import com.fr.design.form.util.XCreatorConstants; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.FormSelection; import com.fr.design.mainframe.FormSelectionUtils; +import com.fr.design.utils.ComponentUtils; import com.fr.design.utils.gui.LayoutUtils; import com.fr.stable.ArrayUtils; @@ -26,7 +27,7 @@ import java.util.ArrayList; public class SelectionModel { //被粘贴组件在所选组件位置处往下、往右各错开20像素。执行多次粘贴时,在上一次粘贴的位置处错开20像素。 private static final int DELTA_X_Y = 20; //粘贴时候的偏移距离 - private static final int BORDER_PROPORTION = 20; + private static final double OFFSET_RELATIVE = 0.80; private static FormSelection clipboard = new FormSelection(); private FormDesigner designer; private FormSelection selection; @@ -111,7 +112,7 @@ public class SelectionModel { */ public boolean pasteFromClipBoard() { if (!clipboard.isEmpty()) { - if (!hasSelectionComponent()) { + if (!hasSelectedPasteSource()) { //未选 unselectedPaste(); } else { @@ -140,14 +141,14 @@ public class SelectionModel { FormSelectionUtils.paste2Container(designer, (XLayoutContainer) selection.getSelectedCreator(), clipboard, rec.x + rec.width / 2, - rec.y + BORDER_PROPORTION); + rec.y + DELTA_X_Y); } else { Rectangle rec = selection.getRelativeBounds(); //自适应布局 FormSelectionUtils.paste2Container(designer, designer.getRootComponent(), clipboard, rec.x + rec.width / 2, - rec.y + BORDER_PROPORTION); + rec.y + DELTA_X_Y); } } else { //绝对布局 @@ -172,18 +173,22 @@ public class SelectionModel { * 粘贴时选择组件 */ private void selectedPaste() { - XLayoutContainer parent = null; + XLayoutContainer container = null; //获取到编辑器的表层容器(已选的组件的父容器就是表层容器) - parent = XCreatorUtils.getParentXLayoutContainer(selection.getSelectedCreator()); - if (parent != null && selection.getSelectedCreator().getParent() instanceof XWFitLayout) { + container = XCreatorUtils.getParentXLayoutContainer(selection.getSelectedCreator()); + if (container != null && selection.getSelectedCreator().getParent() instanceof XWFitLayout) { //自适应布局 - Rectangle rec = selection.getRelativeBounds(); - FormSelectionUtils.paste2Container(designer, parent, clipboard, rec.x + rec.width / 2, rec.y + - rec.height - BORDER_PROPORTION); - } else if (parent != null && selection.getSelectedCreator().getParent() instanceof XWAbsoluteLayout) { + Rectangle selectionRec = selection.getRelativeBounds(); + Rectangle containerRec = ComponentUtils.getRelativeBounds(container); + //计算自适应布局位置 + int positionX = selectionRec.x - containerRec.x + selectionRec.width / 2; + int positionY = (int) (selectionRec.y - containerRec.y + selectionRec.height * OFFSET_RELATIVE); + + FormSelectionUtils.paste2Container(designer, container, clipboard, positionX, positionY); + } else if (container != null && selection.getSelectedCreator().getParent() instanceof XWAbsoluteLayout) { //绝对布局 Rectangle rec = selection.getSelctionBounds(); - FormSelectionUtils.paste2Container(designer, parent, clipboard, rec.x + DELTA_X_Y, rec.y + DELTA_X_Y); + FormSelectionUtils.paste2Container(designer, container, clipboard, rec.x + DELTA_X_Y, rec.y + DELTA_X_Y); } } @@ -198,13 +203,13 @@ public class SelectionModel { if (creator.acceptType(XWParameterLayout.class)) { designer.removeParaComponent(); } - removeCreatorFromContainer(creator, creator.getWidth(), creator.getHeight()); creator.removeAll(); // 清除被选中的组件 selection.reset(); } setSelectedCreator(designer.getRootComponent()); + FormSelectionUtils.rebuildSelection(designer); // 触发事件 designer.getEditListenerTable().fireCreatorModified(DesignerEvent.CREATOR_DELETED); designer.repaint(); @@ -275,7 +280,7 @@ public class SelectionModel { * 但是编辑窗口的最外层其实是表层@see {@link com.fr.design.designer.creator.XWAbsoluteBodyLayout}, * 其他两层不是靠添加组件就可以编辑的。 */ - public boolean hasSelectionComponent() { + public boolean hasSelectedPasteSource() { XCreator selectionXCreator = selection.getSelectedCreator(); if (designer.getClass().equals(FormDesigner.class)) { //frm本地组件复用 @@ -286,10 +291,12 @@ public class SelectionModel { || selectionXCreator.getClass().equals(XWTabFitLayout.class); //选中的是否是frm绝对布局编辑器本身 boolean absoluteEditor = selectionXCreator.getClass().equals(XWAbsoluteBodyLayout.class); + //选中是否是frm绝对画布块编辑器本身 + boolean absoluteCanvas = selectionXCreator.getClass().equals(XWAbsoluteLayout.class); //选中的是否是相对布局编辑器本身 boolean relativeEditor = selectionXCreator.getClass().equals(XWFitLayout.class); - return !(tabEditor || absoluteEditor || relativeEditor); + return !(tabEditor || absoluteEditor || absoluteCanvas || relativeEditor); } else { return false; } @@ -299,6 +306,15 @@ public class SelectionModel { } } + /** + * 是否有组件被选择。如果所选组件是最底层容器,也视为无选择 + * + * @return 是则返回true + */ + public boolean hasSelectionComponent() { + return !selection.isEmpty() && selection.getSelectedCreator().getParent() != null; + } + /** * 移动组件至指定位置 * diff --git a/designer_form/src/com/fr/design/designer/beans/models/StateModel.java b/designer_form/src/com/fr/design/designer/beans/models/StateModel.java index a623caddcf..f3aeb8f901 100644 --- a/designer_form/src/com/fr/design/designer/beans/models/StateModel.java +++ b/designer_form/src/com/fr/design/designer/beans/models/StateModel.java @@ -1,446 +1,476 @@ package com.fr.design.designer.beans.models; -import java.awt.Component; -import java.awt.Cursor; -import java.awt.Graphics; -import java.awt.Point; -import java.awt.Rectangle; -import java.awt.Toolkit; -import java.awt.event.MouseEvent; -import java.util.ArrayList; - import com.fr.design.beans.location.Absorptionline; -import com.fr.design.mainframe.FormDesigner; -import com.fr.design.mainframe.FormSelectionUtils; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.HoverPainter; import com.fr.design.designer.beans.LayoutAdapter; import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.beans.location.Direction; import com.fr.design.designer.beans.location.Location; -import com.fr.design.designer.creator.XConnector; -import com.fr.design.designer.creator.XCreator; -import com.fr.design.designer.creator.XCreatorUtils; -import com.fr.design.designer.creator.XLayoutContainer; -import com.fr.design.designer.creator.XWAbsoluteLayout; +import com.fr.design.designer.creator.*; +import com.fr.design.mainframe.FormDesigner; +import com.fr.design.mainframe.FormSelectionUtils; import com.fr.design.utils.ComponentUtils; +import java.awt.*; +import java.awt.event.MouseEvent; +import java.util.ArrayList; + /** * 普通模式下的状态model */ public class StateModel { - // 对应的selection model - - private SelectionModel selectionModel; - // 当前鼠标进入拖拽区域的位置类型 - private Direction driection; - - // 当前拖拽的起始位置 - private int current_x; - private int current_y; - - private Point startPoint = new Point(); - private Point currentPoint = new Point(); - - private Absorptionline lineInX; - private Absorptionline lineInY; - //等距线 - private Absorptionline lineEquidistant; - - // 当前是否处于拖拽选择状态 - private boolean selecting; - private boolean dragging; - - private boolean addable; - - private FormDesigner designer; - - public StateModel(FormDesigner designer) { - this.designer = designer; - selectionModel = designer.getSelectionModel(); - } - - /** - * 返回direction - * @return direction方向 - */ - public Direction getDirection() { - return driection; - } - - /** - * 是否有组件正被选中 - * - * @return true 如果至少一个组件被选中 - */ - public boolean isSelecting() { - return selecting; - } + // 对应的selection model + + private SelectionModel selectionModel; + // 当前鼠标进入拖拽区域的位置类型 + private Direction driection; + + // 当前拖拽的起始位置 + private int currentX; + private int currentY; + + //拖拽组件原始位置大小备份 + private Rectangle selectedPositionBackup; + + private Point startPoint = new Point(); + private Point currentPoint = new Point(); + + private Absorptionline lineInX; + private Absorptionline lineInY; + //等距线 + private Absorptionline lineEquidistant; + + // 当前是否处于拖拽选择状态 + private boolean selecting; + private boolean dragging; + + private boolean addable; + + private FormDesigner designer; + + public StateModel(FormDesigner designer) { + this.designer = designer; + selectionModel = designer.getSelectionModel(); + } /** - *是否能拖拽 + * 返回direction + * + * @return direction方向 + */ + public Direction getDirection() { + return driection; + } + + /** + * 是否有组件正被选中 + * + * @return true 如果至少一个组件被选中 + */ + public boolean isSelecting() { + return selecting; + } + + /** + * 是否能拖拽 + * * @return 非outer且选中为空 */ - public boolean dragable() { - return ((driection != Location.outer) && !selecting); - } - - /** - * 拖拽中是否可以转换为添加模式: - * 如果拖拽组件只有一个,鼠标当前所在位置的最底层表单容器与这个组件的容器不同; - * 如果拖拽组件为多个,鼠标当前所在位置的最底层表单容器除了要求要跟这些组件的容器不同外,还必须是绝对定位布局 - */ - private void checkAddable(MouseEvent e) { - addable = false; - designer.setPainter(null); - - if (driection != Location.inner) { - return; - } - - XCreator comp = designer.getComponentAt(e.getX(), e.getY(), selectionModel.getSelection().getSelectedCreators()); - XLayoutContainer container = XCreatorUtils.getHotspotContainer(comp); - XCreator creator = selectionModel.getSelection().getSelectedCreator(); - Component creatorContainer = XCreatorUtils.getParentXLayoutContainer(creator); - if (creatorContainer != null && creatorContainer != container - && (selectionModel.getSelection().size() == 1 || container instanceof XWAbsoluteLayout)) { - HoverPainter painter = AdapterBus.getContainerPainter(designer, container); - designer.setPainter(painter); - if (painter != null) { - Rectangle rect = ComponentUtils.getRelativeBounds(container); - rect.x -= designer.getArea().getHorizontalValue(); - rect.y -= designer.getArea().getVerticalValue(); - painter.setRenderingBounds(rect); - painter.setHotspot(new Point(e.getX(), e.getY())); - painter.setCreator(creator); - } - addable = true; - } - } - - private boolean addBean(XLayoutContainer container, int x, int y) { - LayoutAdapter adapter = container.getLayoutAdapter(); - Rectangle r = ComponentUtils.getRelativeBounds(container); - if (selectionModel.getSelection().size() == 1) { - return adapter.addBean(selectionModel.getSelection().getSelectedCreator(), x - + designer.getArea().getHorizontalValue() - r.x, y + designer.getArea().getVerticalValue() - r.y); - } - for (XCreator creator : selectionModel.getSelection().getSelectedCreators()) { - adapter.addBean(creator, x + designer.getArea().getHorizontalValue() - r.x, y + designer.getArea().getVerticalValue()- r.y); - } - return true; - } - - private void adding(int x, int y) { + public boolean dragable() { + return ((driection != Location.outer) && !selecting); + } + + /** + * 拖拽中是否可以转换为添加模式: + * 如果拖拽组件只有一个,鼠标当前所在位置的最底层表单容器与这个组件的容器不同; + * 如果拖拽组件为多个,鼠标当前所在位置的最底层表单容器除了要求要跟这些组件的容器不同外,还必须是绝对定位布局 + */ + private void checkAddable(MouseEvent e) { + addable = false; + designer.setPainter(null); + + if (driection != Location.inner) { + return; + } + + XCreator comp = designer.getComponentAt(e.getX(), e.getY(), selectionModel.getSelection().getSelectedCreators()); + XLayoutContainer container = XCreatorUtils.getHotspotContainer(comp); + XCreator creator = selectionModel.getSelection().getSelectedCreator(); + Component creatorContainer = XCreatorUtils.getParentXLayoutContainer(creator); + if (creatorContainer != null && creatorContainer != container + && (selectionModel.getSelection().size() == 1 || container instanceof XWAbsoluteLayout)) { + HoverPainter painter = AdapterBus.getContainerPainter(designer, container); + designer.setPainter(painter); + if (painter != null) { + Rectangle rect = ComponentUtils.getRelativeBounds(container); + rect.x -= designer.getArea().getHorizontalValue(); + rect.y -= designer.getArea().getVerticalValue(); + painter.setRenderingBounds(rect); + painter.setHotspot(new Point(e.getX(), e.getY())); + painter.setCreator(creator); + } + addable = true; + } + } + + /** + * @param container 容器 + * @param mouseX 鼠标释放位置X + * @param mouseY 鼠标释放位置Y + * @return 是否成功 + */ + private boolean addBean(XLayoutContainer container, int mouseX, int mouseY) { + LayoutAdapter adapter = container.getLayoutAdapter(); + Rectangle rectangleContainer = ComponentUtils.getRelativeBounds(container); + if (selectionModel.getSelection().size() == 1) { + return adapter.addBean(selectionModel.getSelection().getSelectedCreator(), + mouseX + designer.getArea().getHorizontalValue() - rectangleContainer.x, + mouseY + designer.getArea().getVerticalValue() - rectangleContainer.y); + } + for (XCreator creator : selectionModel.getSelection().getSelectedCreators()) { + adapter.addBean(creator, + mouseX + designer.getArea().getHorizontalValue() - rectangleContainer.x, + mouseY + designer.getArea().getVerticalValue() - rectangleContainer.y); + } + return true; + } + + /** + * @param mouseReleasedX 鼠标释放位置X + * @param mouseReleasedY 鼠标释放位置Y + */ + private void adding(int mouseReleasedX, int mouseReleasedY) { // 当前鼠标所在的组件 - XCreator hoveredComponent = designer.getComponentAt(x, y, selectionModel.getSelection().getSelectedCreators()); + XCreator hoveredComponent = designer.getComponentAt(mouseReleasedX, mouseReleasedY, selectionModel.getSelection().getSelectedCreators()); // 获取该组件所在的焦点容器 XLayoutContainer container = XCreatorUtils.getHotspotContainer(hoveredComponent); boolean success = false; - if (container != null) { - // 如果是容器,则调用其acceptComponent接受组件 - success = addBean(container, x, y); - } - - if (success) { - FormSelectionUtils.rebuildSelection(designer); - designer.getEditListenerTable().fireCreatorModified( - selectionModel.getSelection().getSelectedCreator(), DesignerEvent.CREATOR_ADDED); - } else { - Toolkit.getDefaultToolkit().beep(); - } - + if (container != null) { + // 如果是容器,则调用其acceptComponent接受组件 + success = addBean(container, mouseReleasedX, mouseReleasedY); + } + + if (success) { + FormSelectionUtils.rebuildSelection(designer); + designer.getEditListenerTable().fireCreatorModified( + selectionModel.getSelection().getSelectedCreator(), DesignerEvent.CREATOR_ADDED); + } else { + selectionModel.getSelection().setSelectionBounds(selectedPositionBackup, designer); + Toolkit.getDefaultToolkit().beep(); + } // 取消提示 designer.setPainter(null); } /** - *是否拖拽 + * 是否拖拽 + * * @return dragging状态 */ - public boolean isDragging() { - return dragging; - } + public boolean isDragging() { + return dragging; + } /** - *是否可以开始画线 + * 是否可以开始画线 + * * @return startPoint不为空返回true */ - public boolean prepareForDrawLining() { - return startPoint != null; - } + public boolean prepareForDrawLining() { + return startPoint != null; + } /** - *设置开始位置 + * 设置开始位置 + * * @param p point位置 */ - public void setStartPoint(Point p) { - this.startPoint = p; - } + public void setStartPoint(Point p) { + this.startPoint = p; + } /** - *返回开始位置 + * 返回开始位置 + * * @return 点位置 */ - public Point getStartPoint() { - return startPoint; - } + public Point getStartPoint() { + return startPoint; + } /** - *返回当前点位置 + * 返回当前点位置 + * * @return 点位置 */ public Point getEndPoint() { - return currentPoint; - } + return currentPoint; + } /** - *当前选中组件 + * 当前选中组件 + * * @param e 鼠标事件 */ - public void startSelecting(MouseEvent e) { - selecting = true; - selectionModel.setHotspotBounds(new Rectangle()); - current_x = getMouseXY(e).x; - current_y = getMouseXY(e).y; - } + public void startSelecting(MouseEvent e) { + selecting = true; + selectionModel.setHotspotBounds(new Rectangle()); + currentX = getMouseXY(e).x; + currentY = getMouseXY(e).y; + } /** - *当前鼠标的xy + * 当前鼠标的xy + * * @param e 鼠标事件 */ - public void startResizing(MouseEvent e) { - if (!selectionModel.getSelection().isEmpty()) { - driection.backupBounds(designer); - } - current_x = getMouseXY(e).x; - current_y = getMouseXY(e).y; - } + public void startResizing(MouseEvent e) { + if (!selectionModel.getSelection().isEmpty()) { + driection.backupBounds(designer); + } + currentX = getMouseXY(e).x; + currentY = getMouseXY(e).y; + } /** - *起始点开始DrawLine + * 起始点开始DrawLine + * * @param p 点位置 */ - public void startDrawLine(Point p) { - this.startPoint = p; - if(p != null) { - try { - designer.setCursor(XConnector.connectorCursor); - } catch (Exception e) { - } - } else { - designer.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - } - } + public void startDrawLine(Point p) { + this.startPoint = p; + if (p != null) { + try { + designer.setCursor(XConnector.connectorCursor); + } catch (Exception e) { + } + } else { + designer.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } + } /** - *鼠标释放时所在的区域及圈中的组件 + * 鼠标释放时所在的区域及圈中的组件 + * * @param e 鼠标事件 */ - public void selectCreators(MouseEvent e) { - int x = getMouseXY(e).x; - int y = getMouseXY(e).y; + public void selectCreators(MouseEvent e) { + int x = getMouseXY(e).x; + int y = getMouseXY(e).y; - Rectangle bounds = createCurrentBounds(x, y); + Rectangle bounds = createCurrentBounds(x, y); - if ((x != current_x) || (y != current_y)) { - selectionModel.setSelectedCreators(getHotspotCreators(bounds, designer.getRootComponent())); - } - selectionModel.setHotspotBounds(null); - } + if ((x != currentX) || (y != currentY)) { + selectionModel.setSelectedCreators(getHotspotCreators(bounds, designer.getRootComponent())); + } + selectionModel.setHotspotBounds(null); + } /** - *画所在区域线 + * 画所在区域线 + * * @param e 鼠标事件 */ - public void drawLine(MouseEvent e) { - designer.getDrawLineHelper().setDrawLine(true); - Point p = designer.getDrawLineHelper().getNearWidgetPoint(e); - if (p != null) { - currentPoint = p; - } else { - currentPoint.x = e.getX() + designer.getArea().getHorizontalValue(); - currentPoint.y = e.getY() + designer.getArea().getVerticalValue(); - } - } - - private Rectangle createCurrentBounds(int x, int y) { - Rectangle bounds = new Rectangle(); - - bounds.x = Math.min(x, current_x); - bounds.y = Math.min(y, current_y); - bounds.width = Math.max(x, current_x) - bounds.x; - bounds.height = Math.max(y, current_y) - bounds.y; - - return bounds; - } - - private ArrayList getHotspotCreators(Rectangle selection, XCreator root) { - ArrayList creators = new ArrayList(); - - if (!root.isVisible() && !designer.isRoot(root)) { - return creators; - } - - if (root instanceof XLayoutContainer) { - XLayoutContainer container = (XLayoutContainer) root; - int count = container.getXCreatorCount(); - Rectangle clipped = new Rectangle(selection); - - for (int i = count - 1; i >= 0; i--) { - XCreator child = container.getXCreator(i); - - if (selection.contains(child.getBounds())) { - creators.add(child); - } else { - clipped.x = selection.x - child.getX(); - clipped.y = selection.y - child.getY(); - creators.addAll(getHotspotCreators(clipped, child)); - } - } - } - - return creators; - } + public void drawLine(MouseEvent e) { + designer.getDrawLineHelper().setDrawLine(true); + Point p = designer.getDrawLineHelper().getNearWidgetPoint(e); + if (p != null) { + currentPoint = p; + } else { + currentPoint.x = e.getX() + designer.getArea().getHorizontalValue(); + currentPoint.y = e.getY() + designer.getArea().getVerticalValue(); + } + } + + private Rectangle createCurrentBounds(int x, int y) { + Rectangle bounds = new Rectangle(); + + bounds.x = Math.min(x, currentX); + bounds.y = Math.min(y, currentY); + bounds.width = Math.max(x, currentX) - bounds.x; + bounds.height = Math.max(y, currentY) - bounds.y; + + return bounds; + } + + private ArrayList getHotspotCreators(Rectangle selection, XCreator root) { + ArrayList creators = new ArrayList<>(); + + if (!root.isVisible() && !designer.isRoot(root)) { + return creators; + } + + if (root instanceof XLayoutContainer) { + XLayoutContainer container = (XLayoutContainer) root; + int count = container.getXCreatorCount(); + Rectangle clipped = new Rectangle(selection); + + for (int i = count - 1; i >= 0; i--) { + XCreator child = container.getXCreator(i); + + if (selection.contains(child.getBounds())) { + creators.add(child); + } else { + clipped.x = selection.x - child.getX(); + clipped.y = selection.y - child.getY(); + creators.addAll(getHotspotCreators(clipped, child)); + } + } + } + + return creators; + } /** - *重置model + * 重置model */ - public void resetModel() { - dragging = false; - selecting = false; - } + public void resetModel() { + dragging = false; + selecting = false; + } /** - *重置 + * 重置 */ - public void reset() { - driection = Location.outer; - dragging = false; - selecting = false; - } + public void reset() { + driection = Location.outer; + dragging = false; + selecting = false; + } /** - *取消拖拽 + * 取消拖拽 */ - public void draggingCancel() { - designer.repaint(); - reset(); - } + public void draggingCancel() { + designer.repaint(); + reset(); + } /** - *设置可拉伸方向 + * 设置可拉伸方向 + * * @param dir 拉伸方向 */ - public void setDirection(Direction dir) { - if(driection != dir) { - this.driection = dir; - driection.updateCursor(designer); - } - } + public void setDirection(Direction dir) { + if (driection != dir) { + this.driection = dir; + driection.updateCursor(designer); + } + } /** - *x吸附线赋值 + * x吸附线赋值 + * * @param line 线 */ - public void setXAbsorptionline(Absorptionline line) { - this.lineInX = line; - } + public void setXAbsorptionline(Absorptionline line) { + this.lineInX = line; + } /** - *y吸附线赋值 + * y吸附线赋值 + * + * @param line 线 + */ + public void setYAbsorptionline(Absorptionline line) { + this.lineInY = line; + } + + /** + * 等距线赋值 + * * @param line 线 */ - public void setYAbsorptionline(Absorptionline line) { - this.lineInY = line; - } - - /** - * 等距线赋值 - * @param line 线 - */ - public void setEquidistantLine(Absorptionline line){ - this.lineEquidistant = line; - } + public void setEquidistantLine(Absorptionline line) { + this.lineEquidistant = line; + } /** - *画吸附线 + * 画吸附线 + * * @param g Graphics类 */ - public void paintAbsorptionline(Graphics g) { - if(lineInX != null) { - lineInX.paint(g,designer.getArea()); - } - if(lineInY != null) { - lineInY.paint(g,designer.getArea()); - } - if(lineEquidistant != null){ - lineEquidistant.paint(g,designer.getArea()); - } - } + public void paintAbsorptionline(Graphics g) { + if (lineInX != null) { + lineInX.paint(g, designer.getArea()); + } + if (lineInY != null) { + lineInY.paint(g, designer.getArea()); + } + if (lineEquidistant != null) { + lineEquidistant.paint(g, designer.getArea()); + } + } /** - *拖拽 + * 拖拽 + * * @param e 鼠标事件 */ - public void dragging(MouseEvent e) { - checkAddable(e); - setDependLinePainter(e); - driection.drag(getMouseXY(e).x-current_x, getMouseXY(e).y-current_y, designer); - this.dragging = true; - } - - // 拖拽时画依附线用到的painter - private void setDependLinePainter(MouseEvent e){ - XCreator comp = designer.getComponentAt(e.getX(), e.getY(), selectionModel.getSelection().getSelectedCreators()); - XLayoutContainer container = XCreatorUtils.getHotspotContainer(comp); - XCreator creator = selectionModel.getSelection().getSelectedCreator(); - HoverPainter painter = AdapterBus.getContainerPainter(designer, container); - designer.setPainter(painter); - if (painter != null) { - painter.setHotspot(new Point(e.getX(), e.getY())); - painter.setCreator(creator); - } - } + public void dragging(MouseEvent e) { + //进入dragging状态时备份组件大小和位置 + if (!dragging) { + selectedPositionBackup = selectionModel.getSelection().getRelativeBounds(); + } + checkAddable(e); + setDependLinePainter(e); + driection.drag(getMouseXY(e).x - currentX, getMouseXY(e).y - currentY, designer); + this.dragging = true; + } + + // 拖拽时画依附线用到的painter + private void setDependLinePainter(MouseEvent e) { + XCreator comp = designer.getComponentAt(e.getX(), e.getY(), selectionModel.getSelection().getSelectedCreators()); + XLayoutContainer container = XCreatorUtils.getHotspotContainer(comp); + XCreator creator = selectionModel.getSelection().getSelectedCreator(); + HoverPainter painter = AdapterBus.getContainerPainter(designer, container); + designer.setPainter(painter); + if (painter != null) { + painter.setHotspot(new Point(e.getX(), e.getY())); + painter.setCreator(creator); + } + } /** - *释放捕获 + * 释放捕获 + * * @param e 鼠标事件 */ - public void releaseDragging(MouseEvent e) { - this.dragging = false; - if (addable) { - adding(e.getX(), e.getY()); - } else if (!selectionModel.getSelection().isEmpty()) { - selectionModel.releaseDragging(); - } - designer.repaint(); - } + public void releaseDragging(MouseEvent e) { + this.dragging = false; + if (addable) { + adding(e.getX(), e.getY()); + } else if (!selectionModel.getSelection().isEmpty()) { + selectionModel.releaseDragging(); + } + designer.repaint(); + } /** - *改变选择区域 + * 改变选择区域 * - * @param e 鼠标事件 + * @param e 鼠标事件 */ - public void changeSelection(MouseEvent e) { - Rectangle bounds = createCurrentBounds(getMouseXY(e).x, getMouseXY(e).y); - selectionModel.setHotspotBounds(bounds); - } + public void changeSelection(MouseEvent e) { + Rectangle bounds = createCurrentBounds(getMouseXY(e).x, getMouseXY(e).y); + selectionModel.setHotspotBounds(bounds); + } /** - *返回鼠标所在的x、y 考虑滚动条的值 + * 返回鼠标所在的x、y 考虑滚动条的值 * * @param e 鼠标事件 * @return xy值 */ - public Point getMouseXY(MouseEvent e) { - Point p1 = new Point(e.getX() + designer.getArea().getHorizontalValue(), e.getY() - + designer.getArea().getVerticalValue()); - return p1; - } - + public Point getMouseXY(MouseEvent e) { + Point p1 = new Point(e.getX() + designer.getArea().getHorizontalValue(), e.getY() + + designer.getArea().getVerticalValue()); + return p1; + } + } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/beans/painters/AbstractPainter.java b/designer_form/src/com/fr/design/designer/beans/painters/AbstractPainter.java index 06565fe4f3..cb5c6a4a0a 100644 --- a/designer_form/src/com/fr/design/designer/beans/painters/AbstractPainter.java +++ b/designer_form/src/com/fr/design/designer/beans/painters/AbstractPainter.java @@ -22,6 +22,7 @@ public abstract class AbstractPainter implements HoverPainter { /** * 构造函数 + * * @param container 容器 */ public AbstractPainter(XLayoutContainer container) { @@ -32,23 +33,25 @@ public abstract class AbstractPainter implements HoverPainter { public void setHotspot(Point p) { hotspot = p; } - + /** - * 画初始区域 - * @param g 画图类 - * @param startX 起始x位置 - * @param startY 起始y位置 + * 画初始区域 + * + * @param g 画图类 + * @param startX 起始x位置 + * @param startY 起始y位置 + */ + public void paint(Graphics g, int startX, int startY) { + if (hotspot_bounds != null) { + drawHotspot(g, hotspot_bounds.x, hotspot_bounds.y, hotspot_bounds.width, hotspot_bounds.height, Color.lightGray, true, false); + } + } + + /** + * 设置边界 + * + * @param rect 位置 */ - public void paint(Graphics g, int startX, int startY) { - if(hotspot_bounds != null){ - drawHotspot(g, hotspot_bounds.x, hotspot_bounds.y, hotspot_bounds.width, hotspot_bounds.height, Color.lightGray, true, false); - } - } - - /** - * 设置边界 - * @param rect 位置 - */ @Override public void setRenderingBounds(Rectangle rect) { hotspot_bounds = rect; @@ -63,12 +66,12 @@ public abstract class AbstractPainter implements HoverPainter { Color bColor = accept ? XCreatorConstants.LAYOUT_HOTSPOT_COLOR : XCreatorConstants.LAYOUT_FORBIDDEN_COLOR; drawHotspot(g, x, y, width, height, bColor, accept, false); } - + /** * 自适应布局那边渲染提示,要画整个背景,不是画边框 */ protected void drawRegionBackground(Graphics g, int x, int y, int width, int height, Color bColor, boolean accept) { - drawHotspot(g, x, y, width, height, bColor, accept, true); + drawHotspot(g, x, y, width, height, bColor, accept, true); } protected void drawHotspot(Graphics g, int x, int y, int width, int height, Color bColor, boolean accept, boolean drawBackground) { @@ -81,13 +84,13 @@ public abstract class AbstractPainter implements HoverPainter { if (!accept) { g2d.drawString(Inter.getLocText("Cannot-Add_To_This_Area") + "!", x + width / 3, y + height / 2); } else if (drawBackground) { - g2d.fillRect(x, y, width, height); + g2d.fillRect(x, y, width, height); } else { - g2d.drawRect(x, y, width, height); + g2d.drawRect(x, y, width, height); } g2d.setStroke(backup); g2d.setColor(color); } - - + + } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/XLayoutContainer.java b/designer_form/src/com/fr/design/designer/creator/XLayoutContainer.java index 254e9a9184..edd1c69f0f 100644 --- a/designer_form/src/com/fr/design/designer/creator/XLayoutContainer.java +++ b/designer_form/src/com/fr/design/designer/creator/XLayoutContainer.java @@ -30,12 +30,12 @@ import java.util.List; * @since 6.5.3 */ public abstract class XLayoutContainer extends XBorderStyleWidgetCreator implements ContainerListener, ParameterBridge { - - // 布局内部组件默认最小宽度36,最小高度21 - public static int MIN_WIDTH = 36; - public static int MIN_HEIGHT = 21; - - protected static final Dimension LARGEPREFERREDSIZE = new Dimension(200, 200); + + // 布局内部组件默认最小宽度36,最小高度21 + public static int MIN_WIDTH = 36; + public static int MIN_HEIGHT = 21; + + protected static final Dimension LARGEPREFERREDSIZE = new Dimension(200, 200); protected boolean isRefreshing; protected int default_Length = 5; // 取指定点坐在的组件,默认为5保证取四侧相邻的组件时x、y在组件内非边框上 @@ -45,6 +45,7 @@ public abstract class XLayoutContainer extends XBorderStyleWidgetCreator impleme protected boolean editable = false; //鼠标移动到布局画出编辑层 protected boolean isMouseEnter = false; + public void setMouseEnter(boolean mouseEnter) { isMouseEnter = mouseEnter; } @@ -55,12 +56,13 @@ public abstract class XLayoutContainer extends XBorderStyleWidgetCreator impleme } /** - * 得到属性名 + * 得到属性名 + * * @return 属性名 * @throws IntrospectionException */ - public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { - return new CRPropertyDescriptor[] { + public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { + return new CRPropertyDescriptor[]{ new CRPropertyDescriptor("widgetName", this.data.getClass()).setI18NName(Inter .getLocText("FR-Designer_Form-Widget_Name")), new CRPropertyDescriptor("borderStyle", this.data.getClass()).setEditorClass( @@ -68,19 +70,20 @@ public abstract class XLayoutContainer extends XBorderStyleWidgetCreator impleme Inter.getLocText("FR-Engine_Style")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced") .setPropertyChangeListener(new PropertyChangeAdapter() { - @Override - public void propertyChange() { - initStyle(); - } - }), + @Override + public void propertyChange() { + initStyle(); + } + }), new CRPropertyDescriptor("margin", this.data.getClass()).setEditorClass(PaddingMarginEditor.class) .setI18NName(Inter.getLocText("FR-Designer_Layout-Padding")) .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), - }; - } + }; + } /** * 控件名属性 + * * @return * @throws IntrospectionException */ @@ -91,6 +94,7 @@ public abstract class XLayoutContainer extends XBorderStyleWidgetCreator impleme /** * 边距属性 + * * @return * @throws IntrospectionException */ @@ -101,47 +105,50 @@ public abstract class XLayoutContainer extends XBorderStyleWidgetCreator impleme } /** - * 返回对应的wlayout + * 返回对应的wlayout + * * @return wlayout控件 */ public WLayout toData() { return (WLayout) data; } - @Override - protected void initXCreatorProperties() { - super.initXCreatorProperties(); - initBorderStyle(); - this.initLayoutManager(); - this.convert(); - } + @Override + protected void initXCreatorProperties() { + super.initXCreatorProperties(); + initBorderStyle(); + this.initLayoutManager(); + this.convert(); + } @Override - protected JComponent initEditor() { - return this; - } - - /** - * 当前组件zorder位置替换新的控件 - * @param widget 控件 - * @param oldcreator 旧组件 - * @return 组件 - */ - public XCreator replace(Widget widget, XCreator oldcreator) { - int i = this.getComponentZOrder(oldcreator); - if (i != -1) { - this.toData().replace(widget, oldcreator.toData()); - this.convert(); - XCreator creator = (XCreator) this.getComponent(i); - creator.setSize(oldcreator.getSize()); - return creator; - } - return null; - } - - /** - * 初始化时默认的组件大小 - * @return 默认Dimension + protected JComponent initEditor() { + return this; + } + + /** + * 当前组件zorder位置替换新的控件 + * + * @param widget 控件 + * @param oldcreator 旧组件 + * @return 组件 + */ + public XCreator replace(Widget widget, XCreator oldcreator) { + int i = this.getComponentZOrder(oldcreator); + if (i != -1) { + this.toData().replace(widget, oldcreator.toData()); + this.convert(); + XCreator creator = (XCreator) this.getComponent(i); + creator.setSize(oldcreator.getSize()); + return creator; + } + return null; + } + + /** + * 初始化时默认的组件大小 + * + * @return 默认Dimension */ public Dimension initEditorSize() { return LARGEPREFERREDSIZE; @@ -172,7 +179,8 @@ public abstract class XLayoutContainer extends XBorderStyleWidgetCreator impleme /** * 设计界面中有组件添加时,要通知WLayout容器重新paint - * @param e 待说明 + * + * @param e 待说明 */ @Override public void componentAdded(ContainerEvent e) { @@ -188,7 +196,8 @@ public abstract class XLayoutContainer extends XBorderStyleWidgetCreator impleme /** * 设计界面中有组件添加时,要通知WLayout容器重新paint - * @param e 待说明 + * + * @param e 待说明 */ @Override public void componentRemoved(ContainerEvent e) { @@ -203,6 +212,7 @@ public abstract class XLayoutContainer extends XBorderStyleWidgetCreator impleme /** * 根据widget的属性值来获取 + * * @param wgt * @return */ @@ -226,30 +236,32 @@ public abstract class XLayoutContainer extends XBorderStyleWidgetCreator impleme public int getXCreatorCount() { return getComponentCount(); } - + public XCreator getXCreator(int i) { return (XCreator) getComponent(i); } /** * 该组件是否可以拖入参数面板 + * * @return 是则返回true */ - public boolean canEnterIntoParaPane(){ + public boolean canEnterIntoParaPane() { return false; } - + /** - * 是否作为控件树的叶子节点 - * @return 是则返回true - */ - public boolean isComponentTreeLeaf() { - return false; - } + * 是否作为控件树的叶子节点 + * + * @return 是则返回true + */ + public boolean isComponentTreeLeaf() { + return false; + } - public List getAllXCreatorNameList(XCreator xCreator, List namelist){ - for (int i = 0; i < ((XLayoutContainer)xCreator).getXCreatorCount(); i++) { - XCreator creatorSon = ((XLayoutContainer)xCreator).getXCreator(i); + public List getAllXCreatorNameList(XCreator xCreator, List namelist) { + for (int i = 0; i < ((XLayoutContainer) xCreator).getXCreatorCount(); i++) { + XCreator creatorSon = ((XLayoutContainer) xCreator).getXCreator(i); creatorSon.getAllXCreatorNameList(creatorSon, namelist); } return namelist; @@ -257,19 +269,20 @@ public abstract class XLayoutContainer extends XBorderStyleWidgetCreator impleme /** * 是否有查询按钮 - * @param xCreator 控件或容器 - * @return 有无查询按钮 + * + * @param xCreator 控件或容器 + * @return 有无查询按钮 */ public boolean SearchQueryCreators(XCreator xCreator) { - for (int i = 0; i < ((XLayoutContainer)xCreator).getXCreatorCount(); i++) { - XCreator creatorSon = ((XLayoutContainer)xCreator).getXCreator(i); - if(creatorSon.SearchQueryCreators(creatorSon)){ + for (int i = 0; i < ((XLayoutContainer) xCreator).getXCreatorCount(); i++) { + XCreator creatorSon = ((XLayoutContainer) xCreator).getXCreator(i); + if (creatorSon.SearchQueryCreators(creatorSon)) { return true; } } return false; } - + public FRLayoutManager getFRLayout() { LayoutManager layout = getLayout(); if (layout instanceof FRLayoutManager) { @@ -279,111 +292,120 @@ public abstract class XLayoutContainer extends XBorderStyleWidgetCreator impleme return null; } - public abstract LayoutAdapter getLayoutAdapter(); - - public int getIndexOfChild(Object child) { - int count = getComponentCount(); - for (int i = 0; i < count; i++) { - Component comp = getComponent(i); - if (comp == child) { - return i; - } - } - return -1; - } - - /** - * 主要为自适应用 - * 返回指定point的上方组件 - * @param x x位置 - * @param y y位置 - * @return 指定位置的组件 - */ - public Component getTopComp(int x, int y) { - return this.getComponentAt(x, y-default_Length); - } - - /** - * 主要为自适应用 - * 返回指定point的左方组件 - * @param x x位置 - * @param y y位置 - * @return 指定位置的组件 - */ - public Component getLeftComp(int x, int y) { - return this.getComponentAt(x-default_Length, y); - } - - /** - * 返回指定point的右方组件 - * @param x x位置 - * @param y y位置 - * @param w 宽度 - * @return 指定位置的组件 - */ - public Component getRightComp(int x, int y, int w) { - return this.getComponentAt(x+w+default_Length, y); - } - - /** - * 返回指定point的下方组件 - * @param x x位置 - * @param y y位置 - * @param h 高度 - * @return 指定位置的组件 - */ - public Component getBottomComp(int x, int y, int h) { - return this.getComponentAt(x, y+h+default_Length); - } - - /** - * 返回指定point的上方且是右侧的组件 - * @param x x位置 - * @param y y位置 - * @param w 宽度 - * @return 指定位置的组件 - */ - public Component getRightTopComp(int x, int y, int w) { - return this.getComponentAt(x+w-default_Length, y-default_Length); - } - - /** - * 返回指定point的左方且是下侧的组件 - * @param x x位置 - * @param y y位置 - * @param h 高度 - * @return 指定位置的组件 - */ - public Component getBottomLeftComp(int x, int y, int h) { - return this.getComponentAt(x-default_Length, y+h-default_Length); - } - - /** - * 返回指定point的右方且是下侧的组件 - * @param x x位置 - * @param y y位置 - * @param h 高度 - * @param w 宽度 - * @return 指定位置的组件 - */ - public Component getBottomRightComp(int x, int y, int h, int w) { - return this.getComponentAt(x+w+default_Length, y+h-default_Length); - } - - /** - * 返回指定point的下方且是右侧的组件 - * @param x x位置 - * @param y y位置 - * @param h 高度 - * @param w 宽度 - * @return 指定位置的组件 - */ - public Component getRightBottomComp(int x, int y, int h, int w) { - return this.getComponentAt(x+w-default_Length, y+h+default_Length); - } + public abstract LayoutAdapter getLayoutAdapter(); + + public int getIndexOfChild(Object child) { + int count = getComponentCount(); + for (int i = 0; i < count; i++) { + Component comp = getComponent(i); + if (comp == child) { + return i; + } + } + return -1; + } + + /** + * 主要为自适应用 + * 返回指定point的上方组件 + * + * @param x x位置 + * @param y y位置 + * @return 指定位置的组件 + */ + public Component getTopComp(int x, int y) { + return this.getComponentAt(x, y - default_Length); + } + + /** + * 主要为自适应用 + * 返回指定point的左方组件 + * + * @param x x位置 + * @param y y位置 + * @return 指定位置的组件 + */ + public Component getLeftComp(int x, int y) { + return this.getComponentAt(x - default_Length, y); + } + + /** + * 返回指定point的右方组件 + * + * @param x x位置 + * @param y y位置 + * @param w 宽度 + * @return 指定位置的组件 + */ + public Component getRightComp(int x, int y, int w) { + return this.getComponentAt(x + w + default_Length, y); + } + + /** + * 返回指定point的下方组件 + * + * @param x x位置 + * @param y y位置 + * @param h 高度 + * @return 指定位置的组件 + */ + public Component getBottomComp(int x, int y, int h) { + return this.getComponentAt(x, y + h + default_Length); + } + + /** + * 返回指定point的上方且是右侧的组件 + * + * @param x x位置 + * @param y y位置 + * @param w 宽度 + * @return 指定位置的组件 + */ + public Component getRightTopComp(int x, int y, int w) { + return this.getComponentAt(x + w - default_Length, y - default_Length); + } + + /** + * 返回指定point的左方且是下侧的组件 + * + * @param x x位置 + * @param y y位置 + * @param h 高度 + * @return 指定位置的组件 + */ + public Component getBottomLeftComp(int x, int y, int h) { + return this.getComponentAt(x - default_Length, y + h - default_Length); + } + + /** + * 返回指定point的右方且是下侧的组件 + * + * @param x x位置 + * @param y y位置 + * @param h 高度 + * @param w 宽度 + * @return 指定位置的组件 + */ + public Component getBottomRightComp(int x, int y, int h, int w) { + return this.getComponentAt(x + w + default_Length, y + h - default_Length); + } + + /** + * 返回指定point的下方且是右侧的组件 + * + * @param x x位置 + * @param y y位置 + * @param h 高度 + * @param w 宽度 + * @return 指定位置的组件 + */ + public Component getRightBottomComp(int x, int y, int h, int w) { + return this.getComponentAt(x + w - default_Length, y + h + default_Length); + } /** * 是否延迟展示报表内容,也就是说是否要等点击了查询之后才执行报表 + * * @return 如果是true,则表示点击之后才开始计算,false则表示会根据参数默认值直接计算报表并展现 */ public boolean isDelayDisplayContent() { @@ -392,18 +414,20 @@ public abstract class XLayoutContainer extends XBorderStyleWidgetCreator impleme /** * 是否显示参数界面 + * * @return 显示参数界面则返回true,否则返回false */ public boolean isDisplay() { return false; } - public Background getDataBackground(){ + public Background getDataBackground() { return toData().getBackground(); } /** * 获取参数界面的宽度 + * * @return 宽度 */ public int getDesignWidth() { @@ -412,83 +436,82 @@ public abstract class XLayoutContainer extends XBorderStyleWidgetCreator impleme /** * 获取参数面板的对齐方式 + * * @return 左中右三种对齐方式 */ public int getPosition() { return 0; } - + /** * 切换到非添加状态 - * + * * @param designer 表单设计器 */ - public void stopAddingState(FormDesigner designer){ - return; - } - - /** - * 寻找最近的为自适应布局的父容器 - * - * @return 布局容器 - * - * - * @date 2014-12-30-下午3:15:28 - * - */ - public XLayoutContainer findNearestFit(){ - //一层一层网上找, 找到最近的fit那一层就return - XLayoutContainer parent = this.getBackupParent(); - return parent == null ? null : parent.findNearestFit(); - } - + public void stopAddingState(FormDesigner designer) { + } + + /** + * 寻找最近的为自适应布局的父容器 + * + * @return 布局容器 + * @date 2014-12-30-下午3:15:28 + */ + public XLayoutContainer findNearestFit() { + //一层一层网上找, 找到最近的fit那一层就return + XLayoutContainer parent = this.getBackupParent(); + return parent == null ? null : parent.findNearestFit(); + } + /** * 获取容器所有内部组件横坐标值 - * + * * @return 横坐标数组 */ - public int[] getHors(){ - return ArrayUtils.EMPTY_INT_ARRAY; + public int[] getHors() { + return ArrayUtils.EMPTY_INT_ARRAY; } - + /** * 获取容器所有内部组件纵坐标值 - * + * * @return 纵坐标数组 */ - public int[] getVeris(){ - return ArrayUtils.EMPTY_INT_ARRAY; + public int[] getVeris() { + return ArrayUtils.EMPTY_INT_ARRAY; } - public void setDelayDisplayContent(boolean delayPlaying){ + public void setDelayDisplayContent(boolean delayPlaying) { } - public void setPosition(int align){ + public void setPosition(int align) { } - public void setDisplay(boolean showWindow){ + public void setDisplay(boolean showWindow) { } - public void setBackground(Background background){ + public void setBackground(Background background) { } /** * 布局是否可编辑,不可则显示编辑蒙层 + * * @return 可否编辑 */ - public boolean isEditable(){ + public boolean isEditable() { return this.editable; } /** * 设置布局是否可编辑,不可则显示编辑蒙层 + * * @param isEditable 可否编辑 */ - public void setEditable(boolean isEditable){ + public void setEditable(boolean isEditable) { this.editable = isEditable; } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java index 947ec5eaba..114ce3240c 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java @@ -1,5 +1,5 @@ /** - * + * */ package com.fr.design.designer.creator.cardlayout; @@ -25,114 +25,109 @@ import com.fr.form.ui.container.cardlayout.WCardTagLayout; import com.fr.form.ui.container.cardlayout.WTabFitLayout; /** - * - * * @date: 2014-11-25-下午3:11:14 */ public class XWCardTagLayout extends XWHorizontalBoxLayout { - - private static final int MIN_SIZE = 1; - - private String tagName = "Tab"; - - private boolean switchingTab = false; - - //增加一个tabNameIndex防止tabFitLayout重名 - private int tabFitIndex = 0; - private CardSwitchButton currentCard; - - public CardSwitchButton getCurrentCard() { - return currentCard; - } - - public void setCurrentCard(CardSwitchButton currentCard) { - this.currentCard = currentCard; - } - - public int getTabFitIndex() { - return tabFitIndex; - } - - public void setTabFitIndex(int tabFitIndex) { - this.tabFitIndex = tabFitIndex; - } - - public String getTagName() { - return tagName; - } - - public void setTagName(String tagName) { - this.tagName = tagName; - } - - public boolean isSwitchingTab() { - return switchingTab; - } - - public void setSwitchingTab(boolean switchingTab) { - this.switchingTab = switchingTab; - } - - private XWCardLayout cardLayout; - - public XWCardTagLayout(WCardTagLayout widget, Dimension initSize){ - super(widget, initSize); - } - - /** - * 构造函数 - */ - public XWCardTagLayout(WCardTagLayout widget, Dimension initSize, XWCardLayout cardLayout) { - super(widget, initSize); - - this.cardLayout = cardLayout; - } - - /** - * 添加组件的监听事件 - * - * @param e 事件 - * - * - * @date 2014-11-25-下午6:20:10 - * - */ - public void componentAdded(ContainerEvent e) { - super.componentAdded(e); - - if (isSwitchingTab()){ - return; - } - - if(this.cardLayout == null){ - initCardLayout(); - } - - int index = this.cardLayout.toData().getWidgetCount(); - //新加一个card - String widgetName = tagName+getTabNameIndex(); - WTabFitLayout fitLayout = new WTabFitLayout(widgetName,tabFitIndex,currentCard); - fitLayout.setTabNameIndex(getTabNameIndex()); - XWTabFitLayout tabFitLayout = new XWTabFitLayout(fitLayout, new Dimension()); - tabFitLayout.setBackupParent(cardLayout); - cardLayout.add(tabFitLayout, widgetName); - this.cardLayout.toData().setShowIndex(index); - cardLayout.showCard(); - } - - private void initCardLayout(){ - XWCardTitleLayout titleLayout = (XWCardTitleLayout)this.getBackupParent(); - XWCardMainBorderLayout borderLayout = (XWCardMainBorderLayout)titleLayout.getBackupParent(); - - this.cardLayout = borderLayout.getCardPart(); - } - + + private static final int MIN_SIZE = 1; + + private String tagName = "Tab"; + + private boolean switchingTab = false; + + //增加一个tabNameIndex防止tabFitLayout重名 + private int tabFitIndex = 0; + private CardSwitchButton currentCard; + + public CardSwitchButton getCurrentCard() { + return currentCard; + } + + public void setCurrentCard(CardSwitchButton currentCard) { + this.currentCard = currentCard; + } + + public int getTabFitIndex() { + return tabFitIndex; + } + + public void setTabFitIndex(int tabFitIndex) { + this.tabFitIndex = tabFitIndex; + } + + public String getTagName() { + return tagName; + } + + public void setTagName(String tagName) { + this.tagName = tagName; + } + + public boolean isSwitchingTab() { + return switchingTab; + } + + public void setSwitchingTab(boolean switchingTab) { + this.switchingTab = switchingTab; + } + + private XWCardLayout cardLayout; + + public XWCardTagLayout(WCardTagLayout widget, Dimension initSize) { + super(widget, initSize); + } + + /** + * 构造函数 + */ + public XWCardTagLayout(WCardTagLayout widget, Dimension initSize, XWCardLayout cardLayout) { + super(widget, initSize); + + this.cardLayout = cardLayout; + } + + /** + * 添加组件的监听事件 + * + * @param e 事件 + * @date 2014-11-25-下午6:20:10 + */ + public void componentAdded(ContainerEvent e) { + super.componentAdded(e); + + if (isSwitchingTab()) { + return; + } + + if (this.cardLayout == null) { + initCardLayout(); + } + + int index = this.cardLayout.toData().getWidgetCount(); + //新加一个card + String widgetName = tagName + getTabNameIndex(); + WTabFitLayout fitLayout = new WTabFitLayout(widgetName, tabFitIndex, currentCard); + fitLayout.setTabNameIndex(getTabNameIndex()); + XWTabFitLayout tabFitLayout = new XWTabFitLayout(fitLayout, new Dimension()); + tabFitLayout.setBackupParent(cardLayout); + cardLayout.add(tabFitLayout, widgetName); + this.cardLayout.toData().setShowIndex(index); + cardLayout.showCard(); + } + + private void initCardLayout() { + XWCardTitleLayout titleLayout = (XWCardTitleLayout) this.getBackupParent(); + XWCardMainBorderLayout borderLayout = (XWCardMainBorderLayout) titleLayout.getBackupParent(); + + this.cardLayout = borderLayout.getCardPart(); + } + /** * 将WLayout转换为XLayoutContainer */ public void convert() { isRefreshing = true; - WCardTagLayout layout = (WCardTagLayout)this.toData(); + WCardTagLayout layout = (WCardTagLayout) this.toData(); this.removeAll(); for (int i = 0; i < layout.getWidgetCount(); i++) { Widget wgt = layout.getWidget(i); @@ -144,82 +139,81 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { } isRefreshing = false; } - + /** * 切换到非添加状态 - * + * * @return designer 表单设计器 */ - public void stopAddingState(FormDesigner designer){ - designer.stopAddingState(); - return; + public void stopAddingState(FormDesigner designer) { + designer.stopAddingState(); } - + //新增时去tabFitLayout名字中最大的Index+1,防止重名 - private int getTabNameIndex(){ - int tabNameIndex = 0; - WCardLayout layout = this.cardLayout.toData(); - int size = layout.getWidgetCount(); - if(size < MIN_SIZE){ - return tabNameIndex; - } - for(int i=0;i + * void + */ + public void adjustComponentWidth() { + } + + + /** + * 该布局需要隐藏,无需对边框进行操作 + * + * @param + */ public void setBorder(Border border) { - return; - } - - @Override - /** - * 该布局隐藏,点击该布局时选中相应的tab布局主体 - * @param editingMouseListener 监听 - * @param e 鼠标点击事件 - * - */ - public void respondClick(EditingMouseListener editingMouseListener, - MouseEvent e) { - FormDesigner designer = editingMouseListener.getDesigner(); - SelectionModel selectionModel = editingMouseListener.getSelectionModel(); - - XWCardTitleLayout titleLayout = (XWCardTitleLayout) this.getBackupParent(); - if(titleLayout != null){ - XWCardMainBorderLayout mainLayout = (XWCardMainBorderLayout)titleLayout.getBackupParent(); - if(mainLayout != null){ - XWCardLayout cardLayout = mainLayout.getCardPart(); - selectionModel.setSelectedCreator(cardLayout); - } - } - - if (editingMouseListener.stopEditing()) { - if (this != designer.getRootComponent()) { - ComponentAdapter adapter = AdapterBus.getComponentAdapter(designer, this); - editingMouseListener.startEditing(this, adapter.getDesignerEditor(), adapter); - } - } - } - - @Override - public XLayoutContainer getTopLayout() { - return this.getBackupParent().getTopLayout(); - } + + } + + @Override + /** + * 该布局隐藏,点击该布局时选中相应的tab布局主体 + * @param editingMouseListener 监听 + * @param e 鼠标点击事件 + * + */ + public void respondClick(EditingMouseListener editingMouseListener, + MouseEvent e) { + FormDesigner designer = editingMouseListener.getDesigner(); + SelectionModel selectionModel = editingMouseListener.getSelectionModel(); + + XWCardTitleLayout titleLayout = (XWCardTitleLayout) this.getBackupParent(); + if (titleLayout != null) { + XWCardMainBorderLayout mainLayout = (XWCardMainBorderLayout) titleLayout.getBackupParent(); + if (mainLayout != null) { + XWCardLayout cardLayout = mainLayout.getCardPart(); + selectionModel.setSelectedCreator(cardLayout); + } + } + + if (editingMouseListener.stopEditing()) { + if (this != designer.getRootComponent()) { + ComponentAdapter adapter = AdapterBus.getComponentAdapter(designer, this); + editingMouseListener.startEditing(this, adapter.getDesignerEditor(), adapter); + } + } + } + + @Override + public XLayoutContainer getTopLayout() { + return this.getBackupParent().getTopLayout(); + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java b/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java index 6390b64f89..486ad26949 100644 --- a/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java +++ b/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java @@ -43,7 +43,7 @@ public class FormCreatorDropTarget extends DropTarget { * 当前添加模式对应的model */ private AddingModel addingModel; - private final static int GAP = 30; + private static final int GAP = 30; private JWindow promptWindow = new JWindow(); private UIButton promptButton = new UIButton("", BaseUtils.readIcon(IconPathConstants.FORBID_ICON_PATH)); @@ -59,10 +59,11 @@ public class FormCreatorDropTarget extends DropTarget { XCreator hoveredComponent = designer.getComponentAt(x, y); // 获取该组件所在的焦点容器 XLayoutContainer container = XCreatorUtils.getHotspotContainer(hoveredComponent); - //cardTagLayout里用到 - container.stopAddingState(designer); boolean success = false; if (container != null) { + //XWCardTagLayout 切换添加状态到普通状态 + container.stopAddingState(designer); + // 如果是容器,则调用其acceptComponent接受组件 AddingModel model = designer.getAddingModel(); @@ -129,9 +130,7 @@ public class FormCreatorDropTarget extends DropTarget { //提示组件是否可以拖入 promptUser(x, y, container); if (container != null) { - dealWithContainer(x, y, container); - } else { // 如果鼠标不在任何组件上,则取消提示器 designer.setPainter(null); @@ -197,11 +196,9 @@ public class FormCreatorDropTarget extends DropTarget { private void promptWidgetForbidEnter(int x, int y, XLayoutContainer container) { container.setBorder(BorderFactory.createLineBorder(Color.RED, Constants.LINE_MEDIUM)); - int screen_X = (int) designer.getArea().getLocationOnScreen().getX(); - int screen_Y = (int) designer.getArea().getLocationOnScreen().getY(); - this.promptWindow.setSize(promptWindow.getPreferredSize()); - this.promptWindow.setPreferredSize(promptWindow.getPreferredSize()); - promptWindow.setLocation(screen_X + x + GAP, screen_Y + y + GAP); + int screenX = designer.getArea().getLocationOnScreen().x; + int screenY = designer.getArea().getLocationOnScreen().y; + promptWindow.setLocation(screenX + x + GAP, screenY + y + GAP); promptWindow.setVisible(true); } diff --git a/designer_form/src/com/fr/design/mainframe/FormDesigner.java b/designer_form/src/com/fr/design/mainframe/FormDesigner.java index 1dd61c5597..0c77059935 100644 --- a/designer_form/src/com/fr/design/mainframe/FormDesigner.java +++ b/designer_form/src/com/fr/design/mainframe/FormDesigner.java @@ -612,6 +612,12 @@ public class FormDesigner extends TargetComponent implements TreeSelection return true; } + public void showMessageDialog(String message) { + JOptionPane.showMessageDialog(this, message, Inter.getLocText("FR-Designer_Alert"), JOptionPane.WARNING_MESSAGE); + FormSelectionUtils.rebuildSelection(this); + repaint(); + } + /** * 保存参数界面的宽度 * diff --git a/designer_form/src/com/fr/design/mainframe/FormSelection.java b/designer_form/src/com/fr/design/mainframe/FormSelection.java index f30cf2e84f..ff809371c5 100644 --- a/designer_form/src/com/fr/design/mainframe/FormSelection.java +++ b/designer_form/src/com/fr/design/mainframe/FormSelection.java @@ -8,12 +8,7 @@ import com.fr.base.FRContext; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.LayoutAdapter; import com.fr.design.designer.beans.location.Direction; -import com.fr.design.designer.creator.XComponent; -import com.fr.design.designer.creator.XCreator; -import com.fr.design.designer.creator.XCreatorUtils; -import com.fr.design.designer.creator.XLayoutContainer; -import com.fr.design.designer.creator.XWAbsoluteLayout; -import com.fr.design.designer.creator.XWParameterLayout; +import com.fr.design.designer.creator.*; import com.fr.form.ui.Widget; import com.fr.design.utils.ComponentUtils; import com.fr.design.utils.gui.LayoutUtils; @@ -273,6 +268,11 @@ public class FormSelection { if (parent == null) { return; } + boolean changeCreator = creator.shouldScaleCreator() || creator.hasTitleStyle(); + if (parent.acceptType(XWFitLayout.class) && changeCreator) { + creator = (XCreator) creator.getParent(); + } + parent.getLayoutAdapter().removeBean(creator, creator.getWidth(), creator.getHeight()); // 删除其根组件,同时就删除了同时被选择的叶子组件 parent.remove(creator); LayoutManager layout = parent.getLayout(); diff --git a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java index ff976ef771..79f52519ec 100644 --- a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java +++ b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java @@ -8,6 +8,7 @@ import com.fr.design.designer.creator.*; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WTitleLayout; import com.fr.general.ComparatorUtils; +import com.fr.general.Inter; import java.awt.*; import java.util.ArrayList; @@ -17,11 +18,7 @@ import java.util.List; public class FormSelectionUtils { //组件复制时坐标偏移 - private static final int DELAY_X = 20; - private static final int DELAY_Y = 20; - - //组件复制时是否已经向左上偏移 - private static boolean backoffset = false; + private static final int DELAY_X_Y = 20; //组件重命名后缀 private static final String POSTFIX = "_c"; @@ -31,11 +28,7 @@ public class FormSelectionUtils { } /** - * @param designer 编辑器 - * @param parent 粘贴依据的组件 - * @param clipboard 剪贴板内容 - * @param x x - * @param y y + * 粘贴到容器 */ public static void paste2Container(FormDesigner designer, XLayoutContainer parent, FormSelection clipboard, int x, int y) { @@ -54,12 +47,6 @@ public class FormSelectionUtils { /** * 绝对布局粘贴 - * - * @param designer - * @param clipboard - * @param adapter - * @param x - * @param y */ private static void absolutePaste(FormDesigner designer, FormSelection clipboard, LayoutAdapter adapter, int x, int y) { @@ -74,6 +61,10 @@ public class FormSelectionUtils { copiedCreator, x + creator.getX() - rec.x + copiedCreator.getWidth() / 2, y + creator.getY() - rec.y + copiedCreator.getHeight() / 2); + if (!adapter.accept(copiedCreator, point.x, point.y)) { + designer.showMessageDialog(Inter.getLocText("FR-Designer_Too_Large_To_Paste")); + return; + } boolean addSuccess = adapter.addBean(copiedCreator, point.x, point.y); if (addSuccess) { designer.getSelectionModel().getSelection().addSelectedCreator(copiedCreator); @@ -90,12 +81,6 @@ public class FormSelectionUtils { /** * 相对布局粘贴 - * - * @param designer - * @param clipboard - * @param adapter - * @param x - * @param y */ private static void relativePaste(FormDesigner designer, FormSelection clipboard, LayoutAdapter adapter, int x, int y) { designer.getSelectionModel().getSelection().reset(); @@ -103,6 +88,10 @@ public class FormSelectionUtils { try { Widget copied = copyWidget(designer, creator); XCreator copiedCreator = XCreatorUtils.createXCreator(copied, creator.getSize()); + if (!adapter.accept(copiedCreator, x, y)) { + designer.showMessageDialog(Inter.getLocText("FR-Designer_Too_Small_To_Paste")); + return; + } boolean addSuccess = adapter.addBean(copiedCreator, x, y); if (addSuccess) { designer.getSelectionModel().getSelection().addSelectedCreator(copiedCreator); @@ -118,14 +107,6 @@ public class FormSelectionUtils { /** * 组件复用绝对布局获取粘贴组件位置 - * - * @param layoutAdapter 绝对布局容器AbstractLayoutAdapter - * @param copiedCreator 复制的组件 - * @param x x=组件x + clonedCreator.getWidth() / 2 - * @param y y=组件y + clonedCreator.getHeight() / 2 - * 除2的步骤会导致当宽度或者高度为奇数是,中心点向左上各偏移一个像素 - * 由于中心点向左上各偏移一个像素,依赖中心点计算的右下点就会相应的想做上偏移一个像素,导致结果不准确 - * @return 新位置坐标 */ private static Point getPasteLocation(AbstractLayoutAdapter layoutAdapter, XCreator copiedCreator, int x, int y) { //当宽度为奇数时 设置偏移 @@ -144,12 +125,10 @@ public class FormSelectionUtils { * x,y同时越界 */ if (xOut && yOut) { - x = backoffset ? container.getWidth() - copiedCreator.getWidth() / 2 - xoffset - : container.getWidth() - copiedCreator.getWidth() / 2 - DELAY_X - xoffset; - y = backoffset ? - container.getHeight() - copiedCreator.getHeight() / 2 - yoffset - : container.getHeight() - copiedCreator.getHeight() / 2 - DELAY_Y - yoffset; - backoffset = !backoffset; + //向左偏移 + x = container.getWidth() - copiedCreator.getWidth() / 2 - DELAY_X_Y - xoffset; + //紧贴下边界 + y = container.getHeight() - copiedCreator.getHeight() / 2 - yoffset; return new Point(x, y); } /* @@ -158,7 +137,7 @@ public class FormSelectionUtils { * 距离大于20像素的一侧正常错开。 * x,y中只有一个越界 */ - else if ((xOut || yOut)) { + if ((xOut || yOut)) { x = xOut ? container.getWidth() - copiedCreator.getWidth() / 2 - xoffset : x; y = yOut ? container.getHeight() - copiedCreator.getHeight() / 2 - yoffset : y; return new Point(x, y); @@ -170,15 +149,10 @@ public class FormSelectionUtils { /** * 拷贝组件 - * - * @param formDesigner - * @param xCreator - * @return - * @throws CloneNotSupportedException */ private static Widget copyWidget(FormDesigner formDesigner, XCreator xCreator) throws CloneNotSupportedException { - ArrayList nameSpace = new ArrayList(); + ArrayList nameSpace = new ArrayList<>(); Widget copied = (Widget) xCreator.toData().clone(); //重命名拷贝的组件 String name = getCopiedName(formDesigner, copied, nameSpace); @@ -193,14 +167,9 @@ public class FormSelectionUtils { /** * 组件拷贝命名规则 - * - * @param formDesigner - * @param copied - * @param nameSpace - * @return name */ private static String getCopiedName(FormDesigner formDesigner, Widget copied, ArrayList nameSpace) { - StringBuffer name = new StringBuffer(copied.getWidgetName()); + StringBuilder name = new StringBuilder(copied.getWidgetName()); do { name.append(POSTFIX); } while (formDesigner.getTarget().isNameExist(name.toString()) || nameSpace.contains(name.toString())); @@ -209,8 +178,8 @@ public class FormSelectionUtils { } public static void rebuildSelection(FormDesigner designer) { - ArrayList newSelection = new ArrayList(); - List widgetList = new ArrayList(); + ArrayList newSelection = new ArrayList<>(); + List widgetList = new ArrayList<>(); for (XCreator comp : designer.getSelectionModel().getSelection().getSelectedCreators()) { widgetList.add(comp.toData()); } @@ -219,7 +188,7 @@ public class FormSelectionUtils { } public static ArrayList rebuildSelection(XCreator rootComponent, Widget[] selectWidgets) { - List selectionWidget = new ArrayList(); + List selectionWidget = new ArrayList<>(); if (selectWidgets != null) { selectionWidget.addAll(Arrays.asList(selectWidgets)); } From 19df32d4b03f0e8fb935f9f2116364e1c6f8a7cb Mon Sep 17 00:00:00 2001 From: plough Date: Fri, 7 Apr 2017 17:26:29 +0800 Subject: [PATCH 20/76] =?UTF-8?q?REPORT-1916=20=E6=A8=A1=E6=9D=BF=E8=80=97?= =?UTF-8?q?=E6=97=B6=3D=E3=80=8B=E4=BF=AE=E5=A4=8D=E5=88=9D=E6=AC=A1?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=A8=A1=E6=9D=BF=E6=97=B6=EF=BC=8C=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E4=BF=9D=E5=AD=98ID=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/mainframe/JTemplate.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/JTemplate.java b/designer_base/src/com/fr/design/mainframe/JTemplate.java index 92dd63e112..e28090299e 100644 --- a/designer_base/src/com/fr/design/mainframe/JTemplate.java +++ b/designer_base/src/com/fr/design/mainframe/JTemplate.java @@ -529,12 +529,13 @@ public abstract class JTemplate> ex } protected boolean saveNewFile(FILE editingFILE, String oldName){ - this.editingFILE = editingFILE; + // 在保存之前,初始化 templateID + initForCollect(); // 如果保存新模板(新建模板直接保存,或者另存为),则添加 templateID + this.editingFILE = editingFILE; boolean result = this.saveFile(); if (result) { DesignerFrameFileDealerPane.getInstance().refresh(); - initForCollect(); // 如果保存新模板(新建模板直接保存,或者另存为),则添加 templateID collectInfo(); } //更换最近打开 From 5eeeaa37e7e2c2a6b4b2e7d4eed3a94386364aed Mon Sep 17 00:00:00 2001 From: zhouping Date: Mon, 10 Apr 2017 14:43:17 +0800 Subject: [PATCH 21/76] =?UTF-8?q?REPORT-2334=20=E8=A1=A8=E5=8D=95tab?= =?UTF-8?q?=E5=B8=83=E5=B1=80=E4=B8=AD=E5=9B=BE=E8=A1=A8=E6=94=BE=E5=A4=A7?= =?UTF-8?q?=E7=BC=A9=E5=B0=8F=E4=BC=9A=E6=98=8E=E6=98=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../beans/adapters/layout/FRFitLayoutAdapter.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java index e31ee6a5d3..f5aa87a2b7 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java @@ -274,12 +274,8 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { } private Rectangle adjustBackupBound(Rectangle backupBound, XWCardMainBorderLayout mainLayout) { - // 参数界面高度对纵坐标产生的影响 - JForm jform = (JForm) (HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); - if (jform.getFormDesign().getParaComponent() != null) { - backupBound.y -= jform.getFormDesign().getParaHeight(); - } - + // zhouping: REPORT-2334 表单tab布局中图表放大缩小会明显 + // 这边不需要单独处理参数面板高度了,下面的方法中获取的是XWCardMainBorderLayout相对坐标 Rectangle rec = getLayoutBound(mainLayout); // XWTabLayout里面的横纵坐标收到外层XWCardMainBorderLayout的横纵坐标影响 // 减掉之后可以按照它原来的逻辑执行 From 40dbc0272fff3a95ab65a9510735590320e13ab6 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Mon, 10 Apr 2017 17:44:13 +0800 Subject: [PATCH 22/76] =?UTF-8?q?report-1945frm=E6=9C=AC=E5=9C=B0=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=A4=8D=E7=94=A8=EF=BC=9A1=E3=80=81=E8=87=AA?= =?UTF-8?q?=E9=80=82=E5=BA=94=E6=88=96=E8=80=85tab=E5=B8=83=E5=B1=80?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E4=B8=8D=E9=80=89=E4=B8=AD=E7=B2=98=E8=B4=B4?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E4=B8=BA=E4=B8=8A=E4=B8=8B=E5=B9=B3=E5=88=86?= =?UTF-8?q?=E5=B7=A6=E4=B8=8A=E8=A7=92=E7=9A=84=E7=BB=84=E4=BB=B6=EF=BC=9B?= =?UTF-8?q?2=E3=80=81tab=E5=B8=83=E5=B1=80=EF=BC=88=E6=9C=89=E6=97=A0?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E9=9D=A2=E6=9D=BF=EF=BC=89=E7=B2=98=E8=B4=B4?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/beans/models/SelectionModel.java | 48 ++++++++++++------- .../design/mainframe/FormSelectionUtils.java | 20 ++++++-- 2 files changed, 48 insertions(+), 20 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java index a70d9b1566..8ef0033ea2 100644 --- a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java +++ b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java @@ -15,6 +15,8 @@ import com.fr.design.mainframe.FormSelection; import com.fr.design.mainframe.FormSelectionUtils; import com.fr.design.utils.ComponentUtils; import com.fr.design.utils.gui.LayoutUtils; +import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; +import com.fr.form.ui.container.cardlayout.WTabFitLayout; import com.fr.stable.ArrayUtils; import java.awt.*; @@ -27,7 +29,7 @@ import java.util.ArrayList; public class SelectionModel { //被粘贴组件在所选组件位置处往下、往右各错开20像素。执行多次粘贴时,在上一次粘贴的位置处错开20像素。 private static final int DELTA_X_Y = 20; //粘贴时候的偏移距离 - private static final double OFFSET_RELATIVE = 0.80; + private static final double OFFSET_RELATIVE = 0.78; private static FormSelection clipboard = new FormSelection(); private FormDesigner designer; private FormSelection selection; @@ -136,19 +138,20 @@ public class SelectionModel { if (designer.getClass().equals(FormDesigner.class)) { if (selection.getSelectedCreator() instanceof XWFitLayout) { if (selection.getSelectedCreator().getClass().equals(XWTabFitLayout.class)) { - Rectangle rec = selection.getRelativeBounds(); - //Tab布局 - FormSelectionUtils.paste2Container(designer, (XLayoutContainer) selection.getSelectedCreator(), - clipboard, - rec.x + rec.width / 2, - rec.y + DELTA_X_Y); + XLayoutContainer container = (XLayoutContainer) selection.getSelectedCreator(); + //tab布局编辑器内部左上角第一个坐标点 + int leftUpX = container.toData().getMargin().getLeft() + 1; + int leftUpY = container.toData().getMargin().getTop() + 1; + //选中第一个坐标点坐在的组件 + selection.setSelectedCreator((XCreator) container.getComponentAt(leftUpX, leftUpY)); + pasteFromClipBoard(); } else { - Rectangle rec = selection.getRelativeBounds(); - //自适应布局 - FormSelectionUtils.paste2Container(designer, designer.getRootComponent(), - clipboard, - rec.x + rec.width / 2, - rec.y + DELTA_X_Y); + //自适应布局编辑器内部左上角第一个坐标点 + int leftUpX = designer.getRootComponent().toData().getMargin().getLeft() + 1; + int leftUpY = designer.getRootComponent().toData().getMargin().getTop() + 1; + //选中第一个坐标点坐在的组件 + selection.setSelectedCreator((XCreator) designer.getRootComponent().getComponentAt(leftUpX, leftUpY)); + pasteFromClipBoard(); } } else { //绝对布局 @@ -178,12 +181,23 @@ public class SelectionModel { container = XCreatorUtils.getParentXLayoutContainer(selection.getSelectedCreator()); if (container != null && selection.getSelectedCreator().getParent() instanceof XWFitLayout) { //自适应布局 + Rectangle selectionRec = selection.getRelativeBounds(); + //获取父容器位置,补充因参数面板高度导致的位置坐标计算偏移 Rectangle containerRec = ComponentUtils.getRelativeBounds(container); - //计算自适应布局位置 - int positionX = selectionRec.x - containerRec.x + selectionRec.width / 2; - int positionY = (int) (selectionRec.y - containerRec.y + selectionRec.height * OFFSET_RELATIVE); - + int positionX, positionY; + + if (container.getClass().equals(XWTabFitLayout.class)) { + //tab内部粘贴不补充高度偏移 + //且不计算参数面板造成的影响,因为在 + //@see com.fr.design.designer.beans.adapters.layout.FRTabFitLayoutAdapter#addBean中做了 + positionX = selectionRec.x + selectionRec.width / 2; + positionY = (int) (selectionRec.y + selectionRec.height * OFFSET_RELATIVE); + } else { + //计算自适应布局位置 + positionX = selectionRec.x - containerRec.x + selectionRec.width / 2; + positionY = (int) (selectionRec.y - containerRec.y + selectionRec.height * OFFSET_RELATIVE); + } FormSelectionUtils.paste2Container(designer, container, clipboard, positionX, positionY); } else if (container != null && selection.getSelectedCreator().getParent() instanceof XWAbsoluteLayout) { //绝对布局 diff --git a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java index 79f52519ec..1978e8432b 100644 --- a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java +++ b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java @@ -3,8 +3,10 @@ package com.fr.design.mainframe; import com.fr.base.FRContext; import com.fr.design.designer.beans.LayoutAdapter; import com.fr.design.designer.beans.adapters.layout.AbstractLayoutAdapter; +import com.fr.design.designer.beans.adapters.layout.FRTabFitLayoutAdapter; import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.creator.*; +import com.fr.design.utils.ComponentUtils; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WTitleLayout; import com.fr.general.ComparatorUtils; @@ -83,14 +85,26 @@ public class FormSelectionUtils { * 相对布局粘贴 */ private static void relativePaste(FormDesigner designer, FormSelection clipboard, LayoutAdapter adapter, int x, int y) { + + //@see FRTabFitLayoutAdapter + Rectangle tabContainerRect = ComponentUtils.getRelativeBounds(designer.getSelectionModel().getSelection() + .getSelectedCreator().getParent()); + designer.getSelectionModel().getSelection().reset(); for (XCreator creator : clipboard.getSelectedCreators()) { try { Widget copied = copyWidget(designer, creator); XCreator copiedCreator = XCreatorUtils.createXCreator(copied, creator.getSize()); - if (!adapter.accept(copiedCreator, x, y)) { - designer.showMessageDialog(Inter.getLocText("FR-Designer_Too_Small_To_Paste")); - return; + if (adapter.getClass().equals(FRTabFitLayoutAdapter.class)) { + if (!adapter.accept(copiedCreator, x - tabContainerRect.x, y - tabContainerRect.y)) { + designer.showMessageDialog(Inter.getLocText("FR-Designer_Too_Small_To_Paste")); + return; + } + } else { + if (!adapter.accept(copiedCreator, x, y)) { + designer.showMessageDialog(Inter.getLocText("FR-Designer_Too_Small_To_Paste")); + return; + } } boolean addSuccess = adapter.addBean(copiedCreator, x, y); if (addSuccess) { From 9d5bdf6f595604b4ad0e39772736b1e733b1f313 Mon Sep 17 00:00:00 2001 From: syoki Date: Tue, 11 Apr 2017 00:18:09 +0900 Subject: [PATCH 23/76] =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=20design=E9=83=A8=E5=88=86=20=E5=BA=84=E5=A5=87=20201?= =?UTF-8?q?704110018?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/locale/designer_ja_JP.properties | 44 +++++++++++-------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index d74f09b9d0..37d913e735 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -366,24 +366,30 @@ FR-Designer_XMLA_Get_Catalog=\u30AB\u30BF\u30ED\u30B0\u3092\u691C\u7D22\u3059\u3 FR-Designer_XMLA_Not_NULL=\u3053\u3053\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 FR-Designer_Column-Axis=\u5217\u8EF8 FR-Designer_LiteCondition_Common=\u4E00\u822C -FR-Designer_LiteCondition_Formula=\u516C\u5F0F +FR-Designer_LiteCondition_Formula=\u6570\u5F0F FR-Designer_LiteCondition_ConditionB-AND=\u30A2\u30F3\u30C9(AND) FR-Designer_LiteCondition_ConditionB-OR=\u30AA\u30A2(OR) FR-Designer_LiteCondition_Common_Condition=\u666E\u901A\u6761\u4EF6 -FR-Designer_LiteCondition_Formula_Condition=\u516C\u5F0F\u6761\u4EF6 +FR-Designer_LiteCondition_Formula_Condition=\u6570\u5F0F\u6761\u4EF6 FR-Designer_LiteCondition_Define=\u5B9A\u7FA9 +FR-Designer_Normal=\u6B63\u5E38 +FR-Designer_Alert=\u30A2\u30E9\u30FC\u30C8 FR-Designer_Select_All=\u5168\u9078\u629E -FR-Designer-Plugin_Expire_Dialog_Title=\u671F\u9650\u5207\u308C\u306E\u30D7\u30E9\u30B0\u30A4\u30F3 -FR-Designer-Plugin_Expire_Dialog_Text=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u3001\u8CFC\u5165\u3092\u3059\u308B\u305F\u3081\u306B\u5E06\u30BD\u30D5\u30C8\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30BB\u30F3\u30BF\u30FC\u3092\u884C\u304F\u3001\u6709\u52B9\u671F\u9650\u304C\u5207\u308C\u3066\u3044\u307E\u3059\u3002 -FR-Designer-Plugin_Finerest_Addon=\u5E06\u8EDF\u5FDC\u7528\u30BB\u30F3\u30BF\u30FC +FR-Designer_Clear_All=\u5168\u3066\u3092\u30AF\u30EA\u30A2 +FR-Designer_Copy=\u30B3\u30D4\u30FC +FR-Designer_Log=\u30ED\u30B0 +FR-Designer-Plugin_Expire_Dialog_Title=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u671F\u9650\u5207\u308C +FR-Designer-Plugin_Expire_Dialog_Text=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u6709\u52B9\u671F\u9650\u304C\u5207\u308C\u3066\u3044\u307E\u3059\u3001\u30D5\u30A1\u30F3\u30E9\u30F3\u30A2\u30D7\u30EA\u30BB\u30F3\u30BF\u30FC\u3078\u8CFC\u5165\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +FR-Designer-Plugin_Finerest_Addon=\u30D5\u30A1\u30F3\u30E9\u30F3\u30A2\u30D7\u30EA\u30BB\u30F3\u30BF\u30FC FR-Designer_Performance_First=\u6027\u80FD\u512A\u5148 FR-Designer_Total_N_Grade=\u5168\u90E8\u3067\:${N}\u5C64 FR-Designer_time(s)=\u56DE -FR-Designer_General=\u5E38\u7528 -FR-Designer_Advanced=\u9AD8\u7D1A +FR-Designer_General=\u901A\u5E38 +FR-Designer_Advanced=\u8A73\u7D30 +FR-Designer_Validate=\u691C\u8A3C FR-Designer_Oracle=\u3059\u3079\u3066\u306E\u30C6\u30FC\u30D6\u30EB FR-Designer_Product_improve=\u88FD\u54C1\u6539\u5584 -FR-Designer_Join_Product_improve=\u88FD\u54C1\u6539\u5584\u30D7\u30E9\u30F3\u306B\u52A0\u3048\u308B +FR-Designer_Join_Product_improve=\u88FD\u54C1\u6539\u5584\u30D7\u30E9\u30F3\u306B\u5165\u308B FR-Designer_Preference-Function=\u30D5\u30A1\u30F3\u30AF\u30B7\u30E7\u30F3\u8A2D\u5B9A FR-Designer_max_undo_limit=\u6700\u5927\u53D6\u308A\u6D88\u3057\u56DE\u6570 FR-Designer_Surport_String_To_Formula=\u30AD\u30E3\u30E9\u30AF\u30BF\u30FC\u6587\u5B57\u5217\u7DE8\u96C6\u3092\u516C\u5F0F\u3068\u3059\u308B\u3053\u3068\u306B\u30B5\u30DD\u30FC\u30C8 @@ -539,24 +545,26 @@ FR-Designer_Show_As_Download=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30EA\u30F3\u3 FR-Designer_File_Name_For_Download=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30D5\u30A1\u30A4\u30EB\u540D FR-Designer_No=\u3044\u3044\u3048 FR-Designer_Pagination=\u30DA\u30FC\u30B8\u30F3\u30B0 -FR-Designer_DS_TableData=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 +FR-Designer_DS_TableData=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 FR-Designer_Parameter-Formula=\u6570\u5F0F FR-Designer_Background_Null=\u80CC\u666F\u306A\u3057 FR-Designer_Background_Color=\u8272 -FR-Designer_Background_Texture=\u67C4 -FR-Designer_Background_Pattern=\u6A21\u69D8 -FR-Designer_Background_Gradient_Color=\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3\u8272 -FR-Designer_Background_Image=\u5199\u771F +FR-Designer_Background_Texture=\u30C6\u30AF\u30B9\u30C1\u30E3 +FR-Designer_Background_Pattern=\u30D1\u30BF\u30FC\u30F3 +FR-Designer_Background_Gradient_Color=\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3 +FR-Designer_Background_Image=\u753B\u50CF FR-Designer_Background_Clear=\u30AF\u30EA\u30A2 -FR-Designer_Background_Image_Select=\u5199\u771F\u3092\u9078\u629E +FR-Designer_Background_Image_Select=\u753B\u50CF\u9078\u629E FR-Designer_Initial_Background_Tips=\u30DC\u30BF\u30F3\u306E\u521D\u671F\u80CC\u666F -FR-Designer_Mouse_Move_Tips=\u30DE\u30A6\u30B9\u304C\u30DC\u30BF\u30F3\u306B\u79FB\u3059\u6642\u306E\u80CC\u666F -FR-Designer_Mouse_Click_Tips=\u30DE\u30A6\u30B9\u304C\u30DC\u30BF\u30F3\u306B\u79FB\u3059\u6642\u306E\u80CC\u666F +FR-Designer_Mouse_Move_Tips=\u30DE\u30A6\u30B9\u304C\u30DC\u30BF\u30F3\u306B\u79FB\u3059\u6642\u5909\u5316\u3059\u308B\u80CC\u666F +FR-Designer_Mouse_Click_Tips=\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u6642\u5909\u5316\u3059\u308B\u80CC\u666F FR-Designer-Move_Tab_First=\u30C8\u30C3\u30D7\u306B\u79FB\u3059 FR-Designer-Move_Tab_End=\u6700\u5F8C\u306B\u79FB\u3059 FR-Designer-Move_Tab_Next=\u5F8C\u308D\u306B\u79FB\u3059 FR-Designer-Move_Tab_Prev=\u524D\u306B\u79FB\u3059 -FR-Designer_AxisReversed=\u8EF8\u9006\u914D\u5217 +FR-Designer_AxisReversed=\u8EF8\u9006\u9806 FR-Designer_Logarithmic=\u5BFE\u6570\u76EE\u76DB\u308A FR-Designer_Chart_Log_Base=\u5E95\u6570 -FR-Designer_Chart_F_Radar_Axis=\u5782\u76F4\u8EF8 \ No newline at end of file +FR-Designer_Chart_F_Radar_Axis=\u5782\u76F4\u8EF8 +FR-Designer_Too_Large_To_Paste=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30B5\u30A4\u30BA\u306F\u30DC\u30FC\u30C0\u30FC\u306B\u8D85\u3048\u305F\u306E\u3067\u3001\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\uFF01 +FR-Designer_Too_Small_To_Paste=\u8A72\u5F53\u51E6\u306B\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\u3001\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30B5\u30A4\u30BA\u306F\u9AD8\u3059\u304E\uFF01 \ No newline at end of file From b67778a4ded602bd9c9434b83b234268c8054917 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Tue, 11 Apr 2017 10:37:41 +0800 Subject: [PATCH 24/76] =?UTF-8?q?=E6=97=A0=E4=BB=BB=E5=8A=A1=20=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/designer/beans/models/SelectionModel.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java index 8ef0033ea2..5bd159a43e 100644 --- a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java +++ b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java @@ -15,8 +15,6 @@ import com.fr.design.mainframe.FormSelection; import com.fr.design.mainframe.FormSelectionUtils; import com.fr.design.utils.ComponentUtils; import com.fr.design.utils.gui.LayoutUtils; -import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; -import com.fr.form.ui.container.cardlayout.WTabFitLayout; import com.fr.stable.ArrayUtils; import java.awt.*; From 6a9cec9bb37f797bb79e6c3bd61e141109a22ca1 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Tue, 11 Apr 2017 10:57:22 +0800 Subject: [PATCH 25/76] =?UTF-8?q?report-1945frm=E6=9C=AC=E5=9C=B0=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=A4=8D=E7=94=A8=EF=BC=9A1=E3=80=81=E8=87=AA?= =?UTF-8?q?=E9=80=82=E5=BA=94=E6=88=96=E8=80=85tab=E5=B8=83=E5=B1=80?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E4=B8=8D=E9=80=89=E4=B8=AD=E7=B2=98=E8=B4=B4?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E4=B8=BA=E4=B8=8A=E4=B8=8B=E5=B9=B3=E5=88=86?= =?UTF-8?q?=E5=B7=A6=E4=B8=8A=E8=A7=92=E7=9A=84=E7=BB=84=E4=BB=B6=EF=BC=9B?= =?UTF-8?q?2=E3=80=81tab=E5=B8=83=E5=B1=80=EF=BC=88=E6=9C=89=E6=97=A0?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E9=9D=A2=E6=9D=BF=EF=BC=89=E7=B2=98=E8=B4=B4?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/beans/models/SelectionModel.java | 44 ++++++++++++------- .../design/mainframe/FormSelectionUtils.java | 20 +++++++-- 2 files changed, 45 insertions(+), 19 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java index a70d9b1566..dc4ea6a49b 100644 --- a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java +++ b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java @@ -136,19 +136,20 @@ public class SelectionModel { if (designer.getClass().equals(FormDesigner.class)) { if (selection.getSelectedCreator() instanceof XWFitLayout) { if (selection.getSelectedCreator().getClass().equals(XWTabFitLayout.class)) { - Rectangle rec = selection.getRelativeBounds(); - //Tab布局 - FormSelectionUtils.paste2Container(designer, (XLayoutContainer) selection.getSelectedCreator(), - clipboard, - rec.x + rec.width / 2, - rec.y + DELTA_X_Y); + XLayoutContainer container = (XLayoutContainer) selection.getSelectedCreator(); + //tab布局编辑器内部左上角第一个坐标点 + int leftUpX = container.toData().getMargin().getLeft() + 1; + int leftUpY = container.toData().getMargin().getTop() + 1; + //选中第一个坐标点坐在的组件 + selection.setSelectedCreator((XCreator) container.getComponentAt(leftUpX, leftUpY)); + pasteFromClipBoard(); } else { - Rectangle rec = selection.getRelativeBounds(); - //自适应布局 - FormSelectionUtils.paste2Container(designer, designer.getRootComponent(), - clipboard, - rec.x + rec.width / 2, - rec.y + DELTA_X_Y); + //自适应布局编辑器内部左上角第一个坐标点 + int leftUpX = designer.getRootComponent().toData().getMargin().getLeft() + 1; + int leftUpY = designer.getRootComponent().toData().getMargin().getTop() + 1; + //选中第一个坐标点坐在的组件 + selection.setSelectedCreator((XCreator) designer.getRootComponent().getComponentAt(leftUpX, leftUpY)); + pasteFromClipBoard(); } } else { //绝对布局 @@ -178,12 +179,23 @@ public class SelectionModel { container = XCreatorUtils.getParentXLayoutContainer(selection.getSelectedCreator()); if (container != null && selection.getSelectedCreator().getParent() instanceof XWFitLayout) { //自适应布局 + Rectangle selectionRec = selection.getRelativeBounds(); + //获取父容器位置,补充因参数面板高度导致的位置坐标计算偏移 Rectangle containerRec = ComponentUtils.getRelativeBounds(container); - //计算自适应布局位置 - int positionX = selectionRec.x - containerRec.x + selectionRec.width / 2; - int positionY = (int) (selectionRec.y - containerRec.y + selectionRec.height * OFFSET_RELATIVE); - + int positionX, positionY; + + if (container.getClass().equals(XWTabFitLayout.class)) { + //tab内部粘贴不补充高度偏移 + //且不计算参数面板造成的影响,因为在 + //@see com.fr.design.designer.beans.adapters.layout.FRTabFitLayoutAdapter#addBean中做了 + positionX = selectionRec.x + selectionRec.width / 2; + positionY = (int) (selectionRec.y + selectionRec.height * OFFSET_RELATIVE); + } else { + //计算自适应布局位置 + positionX = selectionRec.x - containerRec.x + selectionRec.width / 2; + positionY = (int) (selectionRec.y - containerRec.y + selectionRec.height * OFFSET_RELATIVE); + } FormSelectionUtils.paste2Container(designer, container, clipboard, positionX, positionY); } else if (container != null && selection.getSelectedCreator().getParent() instanceof XWAbsoluteLayout) { //绝对布局 diff --git a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java index 79f52519ec..1978e8432b 100644 --- a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java +++ b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java @@ -3,8 +3,10 @@ package com.fr.design.mainframe; import com.fr.base.FRContext; import com.fr.design.designer.beans.LayoutAdapter; import com.fr.design.designer.beans.adapters.layout.AbstractLayoutAdapter; +import com.fr.design.designer.beans.adapters.layout.FRTabFitLayoutAdapter; import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.creator.*; +import com.fr.design.utils.ComponentUtils; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WTitleLayout; import com.fr.general.ComparatorUtils; @@ -83,14 +85,26 @@ public class FormSelectionUtils { * 相对布局粘贴 */ private static void relativePaste(FormDesigner designer, FormSelection clipboard, LayoutAdapter adapter, int x, int y) { + + //@see FRTabFitLayoutAdapter + Rectangle tabContainerRect = ComponentUtils.getRelativeBounds(designer.getSelectionModel().getSelection() + .getSelectedCreator().getParent()); + designer.getSelectionModel().getSelection().reset(); for (XCreator creator : clipboard.getSelectedCreators()) { try { Widget copied = copyWidget(designer, creator); XCreator copiedCreator = XCreatorUtils.createXCreator(copied, creator.getSize()); - if (!adapter.accept(copiedCreator, x, y)) { - designer.showMessageDialog(Inter.getLocText("FR-Designer_Too_Small_To_Paste")); - return; + if (adapter.getClass().equals(FRTabFitLayoutAdapter.class)) { + if (!adapter.accept(copiedCreator, x - tabContainerRect.x, y - tabContainerRect.y)) { + designer.showMessageDialog(Inter.getLocText("FR-Designer_Too_Small_To_Paste")); + return; + } + } else { + if (!adapter.accept(copiedCreator, x, y)) { + designer.showMessageDialog(Inter.getLocText("FR-Designer_Too_Small_To_Paste")); + return; + } } boolean addSuccess = adapter.addBean(copiedCreator, x, y); if (addSuccess) { From cc99e7d54fa965cfe3e25506ee44c75c7e64d3e2 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Tue, 11 Apr 2017 15:07:00 +0800 Subject: [PATCH 26/76] =?UTF-8?q?=E6=97=A0=E4=BB=BB=E5=8A=A1=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/creator/XWAbsoluteLayout.java | 887 +++++++++--------- 1 file changed, 451 insertions(+), 436 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java index 4ed1b6549b..1854b91f46 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java @@ -34,322 +34,335 @@ import com.fr.general.Inter; */ public class XWAbsoluteLayout extends XLayoutContainer { - private static final int EDIT_BTN_WIDTH = 60; - private static final int EDIT_BTN_HEIGHT = 24; - private int minWidth = WLayout.MIN_WIDTH; - private int minHeight = WLayout.MIN_HEIGHT; - - //由于屏幕分辨率不同,界面上的容器大小可能不是默认的100%,此时拖入组件时,保存的大小按照100%时的计算 - protected double containerPercent = 1.0; - - private HashMap xConnectorMap; - - public XWAbsoluteLayout() { - this(new WAbsoluteLayout(),new Dimension()); - } - - public XWAbsoluteLayout(WAbsoluteLayout widget) { - this(widget,new Dimension()); - } - - public XWAbsoluteLayout(WAbsoluteLayout widget, Dimension initSize) { - super(widget, initSize); - this.xConnectorMap = new HashMap(); - Connector connector; - for (int i = 0; i < widget.connectorCount(); i++) { - connector = widget.getConnectorIndex(i); - xConnectorMap.put(connector, new XConnector(connector, this)); - } - - initPercent(widget); - } - - /** - * 初始化时默认的组件大小 - * - * @return 默认Dimension - */ - @Override - public Dimension initEditorSize() { - return new Dimension(500, 300); - } - - //根据屏幕大小来确定显示的百分比, 1440*900默认100%, 1366*768缩放90% - private void initPercent(WAbsoluteLayout widget){ - Toolkit toolkit = Toolkit.getDefaultToolkit(); - Dimension scrnsize = toolkit.getScreenSize(); - double screenValue = FRScreen.getByDimension(scrnsize).getValue(); - if(screenValue != FormArea.DEFAULT_SLIDER){ - this.setContainerPercent(screenValue / FormArea.DEFAULT_SLIDER); - } - } - - /** - * 返回容器大小的百分比 - * @return the containerPercent - */ - public double getContainerPercent() { - return containerPercent; - } - - /** - * 设置容器大小的百分比 - * @param containerPercent the containerPercent to set - */ - public void setContainerPercent(double containerPercent) { - this.containerPercent = containerPercent; - minWidth = (int) (XWAbsoluteLayout.MIN_WIDTH*containerPercent); - minHeight = (int) (XWAbsoluteLayout.MIN_HEIGHT*containerPercent); - } - - /** - * 返回界面处根据百分比调整后的最小宽度 - * @return 最小宽度 - */ - public int getActualMinWidth() { - return this.minWidth; - } - - /** - * 返回界面处根据百分比调整后的最小高度 - * @return 最小高度 - */ - public int getActualMinHeight() { - return this.minHeight; - } - - /** - * 返回界面处根据百分比调整后的间隔大小(且为偶数) - * @return 间隔 - */ - public int getAcualInterval() { - // adapter那边交叉三等分、删除都要判断是否对齐,所以间隔转为偶数 - int interval = (int) (toData().getCompInterval()*containerPercent); - int val = interval/2; - return val*2; - } - - /** - * 界面容器大小不是默认的时,处理控件的BoundsWidget,且避免出现空隙 - */ - private Rectangle dealWidgetBound(Rectangle rec) { - if (containerPercent == 1.0) { - return rec; - } - rec.x = (int) (rec.x/containerPercent); - rec.y = (int) (rec.y/containerPercent); - rec.width = (int) (rec.width/containerPercent); - rec.height = (int) (rec.height/containerPercent); - return rec; - } - - /** - * 新增删除拉伸后单个组件的BoundsWidget - */ - public void updateBoundsWidget(XCreator xCreator) { - WAbsoluteLayout layout = this.toData(); - if (xCreator.hasTitleStyle()) { - xCreator = (XLayoutContainer)xCreator.getParent(); - } - if (xCreator.acceptType(XWAbsoluteLayout.class)){ - ((XWAbsoluteLayout) xCreator).updateBoundsWidget(); - } - BoundsWidget boundsWidget = layout.getBoundsWidget(xCreator.toData()); - Rectangle rectangle = dealWidgetBound(xCreator.getBounds()); - } - - private Rectangle calculateBound(Rectangle rec, double pw, double ph){ - Rectangle calRec = new Rectangle(0,0,0,0); - calRec.x = (int)(rec.x / pw); - calRec.y = (int)(rec.y / ph); - calRec.width = (int)(rec.width / pw); - calRec.height = (int)(rec.height / ph); - return calRec; - } - - /** - * 新增删除拉伸后每个组件的BoundsWidget - */ - public void updateBoundsWidget() { - WAbsoluteLayout layout = this.toData(); - Rectangle backupBound = this.getBackupBound(); - Rectangle currentBound = this.getBounds(); - if (backupBound != null && layout.getCompState() == WAbsoluteLayout.STATE_FIT) { - double percentW = ((double) backupBound.width / (double) currentBound.width); - double percentH = ((double) backupBound.height / (double) currentBound.height); - for (int index = 0, n = this.getComponentCount(); index < n; index++){ - XCreator creator = (XCreator) this.getComponent(index); - BoundsWidget wgt = layout.getBoundsWidget(creator.toData()); - // 用当前的显示大小计算后调正具体位置 - Rectangle wgtBound = creator.getBounds(); - Rectangle rec = calculateBound(wgtBound, percentW, percentH); - wgt.setBounds(rec); - creator.setBounds(rec); - //绝对布局嵌套,要更新内部的绝对布局 - if (creator.acceptType(XWAbsoluteLayout.class)){ - creator.setBackupBound(wgtBound); - ((XWAbsoluteLayout) creator).updateBoundsWidget(); - } - } - } - } - - /** - * 更新子组件的Bound - * 这边主要用于绝对布局子组件在适应区域选项时 - * 涉及到的不同分辨率下缩放 - * @param minHeight 最小高度 - */ - @Override - public void updateChildBound(int minHeight) { - double prevContainerPercent = FRScreen.getByDimension(toData().getDesigningResolution()).getValue() / FormArea.DEFAULT_SLIDER; - if (toData().getCompState() == 0 && prevContainerPercent != containerPercent) { - for (int i = 0; i < this.getComponentCount(); i++) { - XCreator creator = getXCreator(i); - Rectangle rec = new Rectangle(creator.getBounds()); - rec.x = (int)(rec.x / prevContainerPercent * containerPercent); - rec.y = (int)(rec.y / prevContainerPercent * containerPercent); - rec.height = (int)(rec.height / prevContainerPercent * containerPercent); - rec.width = (int)(rec.width / prevContainerPercent * containerPercent); - BoundsWidget wgt = toData().getBoundsWidget(creator.toData()); - wgt.setBounds(rec); - creator.setBounds(rec); - creator.updateChildBound(minHeight); - } - } - toData().setDesigningResolution(Toolkit.getDefaultToolkit().getScreenSize()); - } - - /** - * 增加对齐线 - * @param connector 对齐线 - */ - public void addConnector(Connector connector) { - xConnectorMap.put(connector, new XConnector(connector, this)); - ((WAbsoluteLayout) data).addConnector(connector); - } - - public XConnector getXConnector(Connector connector) { - return xConnectorMap.get(connector); - } - - /** - * 去除对齐线 - * @param connector 对齐线 - */ - public void removeConnector(Connector connector) { - ((WAbsoluteLayout) data).removeConnector(connector); - xConnectorMap.remove(connector); - } - - /** - * 返回对应的widget容器 - * @return 返回WAbsoluteLayout - */ - @Override - public WAbsoluteLayout toData() { - return (WAbsoluteLayout) data; - } - - @Override - protected String getIconName() { - return "layout_absolute_new.png"; - } - - /** - * 返回默认的容器name - * @return 返回绝对布局容器名 - */ - @Override - public String createDefaultName() { - return "absolute"; - } - - @Override - protected void initLayoutManager() { - this.setLayout(new FRAbsoluteLayout()); - } - - /** - * 是否支持标题样式 - * - * @return 默认false - */ - @Override - public boolean hasTitleStyle() { - return false; - } - - @Override - public void paintComponent(Graphics g) { - super.paintComponent(g); - WAbsoluteLayout layout = (WAbsoluteLayout) data; - Connector[] connector = layout.getConnector(); - for (int i = 0, size = connector.length; i < size; i++) { - connector[i].draw(g); - } - } - - /** - * 转换保存组件信息的wlayout为对应的container - */ - @Override - public void convert() { - isRefreshing = true; - WAbsoluteLayout abs = toData(); - this.removeAll(); - for (int i = 0, count = abs.getWidgetCount(); i < count; i++) { - BoundsWidget bw = (BoundsWidget)abs.getWidget(i); - if (bw != null) { - Rectangle bounds = bw.getBounds(); - XWidgetCreator comp = (XWidgetCreator)XCreatorUtils.createXCreator(bw.getWidget()); - if (!comp.acceptType(XWParameterLayout.class)) { - comp.setDirections(Direction.ALL); - } - add(comp); - comp.setBounds(bounds); - } - } - isRefreshing = false; - } - - /** - * 当前组件zorder位置替换新的控件 - * @param widget 控件 - * @param oldcreator 旧组件 - * @return 组件 - */ - @Override - public XCreator replace(Widget widget, XCreator oldcreator) { - int i = this.getComponentZOrder(oldcreator); - if (i != -1) { - this.toData().replace(new BoundsWidget(widget, oldcreator.getBounds()), - new BoundsWidget(oldcreator.toData(), oldcreator.getBounds())); - this.convert(); - return (XCreator) this.getComponent(i); - } - return null; - } - - /** + private static final int EDIT_BTN_WIDTH = 60; + private static final int EDIT_BTN_HEIGHT = 24; + private int minWidth = WLayout.MIN_WIDTH; + private int minHeight = WLayout.MIN_HEIGHT; + + //由于屏幕分辨率不同,界面上的容器大小可能不是默认的100%,此时拖入组件时,保存的大小按照100%时的计算 + protected double containerPercent = 1.0; + + private HashMap xConnectorMap; + + public XWAbsoluteLayout() { + this(new WAbsoluteLayout(), new Dimension()); + } + + public XWAbsoluteLayout(WAbsoluteLayout widget) { + this(widget, new Dimension()); + } + + public XWAbsoluteLayout(WAbsoluteLayout widget, Dimension initSize) { + super(widget, initSize); + this.xConnectorMap = new HashMap(); + Connector connector; + for (int i = 0; i < widget.connectorCount(); i++) { + connector = widget.getConnectorIndex(i); + xConnectorMap.put(connector, new XConnector(connector, this)); + } + + initPercent(widget); + } + + /** + * 初始化时默认的组件大小 + * + * @return 默认Dimension + */ + @Override + public Dimension initEditorSize() { + return new Dimension(500, 300); + } + + //根据屏幕大小来确定显示的百分比, 1440*900默认100%, 1366*768缩放90% + private void initPercent(WAbsoluteLayout widget) { + Toolkit toolkit = Toolkit.getDefaultToolkit(); + Dimension scrnsize = toolkit.getScreenSize(); + double screenValue = FRScreen.getByDimension(scrnsize).getValue(); + if (screenValue != FormArea.DEFAULT_SLIDER) { + this.setContainerPercent(screenValue / FormArea.DEFAULT_SLIDER); + } + } + + /** + * 返回容器大小的百分比 + * + * @return the containerPercent + */ + public double getContainerPercent() { + return containerPercent; + } + + /** + * 设置容器大小的百分比 + * + * @param containerPercent the containerPercent to set + */ + public void setContainerPercent(double containerPercent) { + this.containerPercent = containerPercent; + minWidth = (int) (XWAbsoluteLayout.MIN_WIDTH * containerPercent); + minHeight = (int) (XWAbsoluteLayout.MIN_HEIGHT * containerPercent); + } + + /** + * 返回界面处根据百分比调整后的最小宽度 + * + * @return 最小宽度 + */ + public int getActualMinWidth() { + return this.minWidth; + } + + /** + * 返回界面处根据百分比调整后的最小高度 + * + * @return 最小高度 + */ + public int getActualMinHeight() { + return this.minHeight; + } + + /** + * 返回界面处根据百分比调整后的间隔大小(且为偶数) + * + * @return 间隔 + */ + public int getAcualInterval() { + // adapter那边交叉三等分、删除都要判断是否对齐,所以间隔转为偶数 + int interval = (int) (toData().getCompInterval() * containerPercent); + int val = interval / 2; + return val * 2; + } + + /** + * 界面容器大小不是默认的时,处理控件的BoundsWidget,且避免出现空隙 + */ + private Rectangle dealWidgetBound(Rectangle rec) { + if (containerPercent == 1.0) { + return rec; + } + rec.x = (int) (rec.x / containerPercent); + rec.y = (int) (rec.y / containerPercent); + rec.width = (int) (rec.width / containerPercent); + rec.height = (int) (rec.height / containerPercent); + return rec; + } + + /** + * 新增删除拉伸后单个组件的BoundsWidget + */ + public void updateBoundsWidget(XCreator xCreator) { + WAbsoluteLayout layout = this.toData(); + if (xCreator.hasTitleStyle()) { + xCreator = (XLayoutContainer) xCreator.getParent(); + } + if (xCreator.acceptType(XWAbsoluteLayout.class)) { + ((XWAbsoluteLayout) xCreator).updateBoundsWidget(); + } + BoundsWidget boundsWidget = layout.getBoundsWidget(xCreator.toData()); + Rectangle rectangle = dealWidgetBound(xCreator.getBounds()); + } + + private Rectangle calculateBound(Rectangle rec, double pw, double ph) { + Rectangle calRec = new Rectangle(0, 0, 0, 0); + calRec.x = (int) (rec.x / pw); + calRec.y = (int) (rec.y / ph); + calRec.width = (int) (rec.width / pw); + calRec.height = (int) (rec.height / ph); + return calRec; + } + + /** + * 新增删除拉伸后每个组件的BoundsWidget + */ + public void updateBoundsWidget() { + WAbsoluteLayout layout = this.toData(); + Rectangle backupBound = this.getBackupBound(); + Rectangle currentBound = this.getBounds(); + if (backupBound != null && layout.getCompState() == WAbsoluteLayout.STATE_FIT) { + double percentW = ((double) backupBound.width / (double) currentBound.width); + double percentH = ((double) backupBound.height / (double) currentBound.height); + for (int index = 0, n = this.getComponentCount(); index < n; index++) { + XCreator creator = (XCreator) this.getComponent(index); + BoundsWidget wgt = layout.getBoundsWidget(creator.toData()); + // 用当前的显示大小计算后调正具体位置 + Rectangle wgtBound = creator.getBounds(); + Rectangle rec = calculateBound(wgtBound, percentW, percentH); + wgt.setBounds(rec); + creator.setBounds(rec); + //绝对布局嵌套,要更新内部的绝对布局 + if (creator.acceptType(XWAbsoluteLayout.class)) { + creator.setBackupBound(wgtBound); + ((XWAbsoluteLayout) creator).updateBoundsWidget(); + } + } + } + } + + /** + * 更新子组件的Bound + * 这边主要用于绝对布局子组件在适应区域选项时 + * 涉及到的不同分辨率下缩放 + * + * @param minHeight 最小高度 + */ + @Override + public void updateChildBound(int minHeight) { + double prevContainerPercent = FRScreen.getByDimension(toData().getDesigningResolution()).getValue() / FormArea.DEFAULT_SLIDER; + if (toData().getCompState() == 0 && prevContainerPercent != containerPercent) { + for (int i = 0; i < this.getComponentCount(); i++) { + XCreator creator = getXCreator(i); + Rectangle rec = new Rectangle(creator.getBounds()); + rec.x = (int) (rec.x / prevContainerPercent * containerPercent); + rec.y = (int) (rec.y / prevContainerPercent * containerPercent); + rec.height = (int) (rec.height / prevContainerPercent * containerPercent); + rec.width = (int) (rec.width / prevContainerPercent * containerPercent); + BoundsWidget wgt = toData().getBoundsWidget(creator.toData()); + wgt.setBounds(rec); + creator.setBounds(rec); + creator.updateChildBound(minHeight); + } + } + toData().setDesigningResolution(Toolkit.getDefaultToolkit().getScreenSize()); + } + + /** + * 增加对齐线 + * + * @param connector 对齐线 + */ + public void addConnector(Connector connector) { + xConnectorMap.put(connector, new XConnector(connector, this)); + ((WAbsoluteLayout) data).addConnector(connector); + } + + public XConnector getXConnector(Connector connector) { + return xConnectorMap.get(connector); + } + + /** + * 去除对齐线 + * + * @param connector 对齐线 + */ + public void removeConnector(Connector connector) { + ((WAbsoluteLayout) data).removeConnector(connector); + xConnectorMap.remove(connector); + } + + /** + * 返回对应的widget容器 + * + * @return 返回WAbsoluteLayout + */ + @Override + public WAbsoluteLayout toData() { + return (WAbsoluteLayout) data; + } + + @Override + protected String getIconName() { + return "layout_absolute_new.png"; + } + + /** + * 返回默认的容器name + * + * @return 返回绝对布局容器名 + */ + @Override + public String createDefaultName() { + return "absolute"; + } + + @Override + protected void initLayoutManager() { + this.setLayout(new FRAbsoluteLayout()); + } + + /** + * 是否支持标题样式 + * + * @return 默认false + */ + @Override + public boolean hasTitleStyle() { + return false; + } + + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + WAbsoluteLayout layout = (WAbsoluteLayout) data; + Connector[] connector = layout.getConnector(); + for (int i = 0, size = connector.length; i < size; i++) { + connector[i].draw(g); + } + } + + /** + * 转换保存组件信息的wlayout为对应的container + */ + @Override + public void convert() { + isRefreshing = true; + WAbsoluteLayout abs = toData(); + this.removeAll(); + for (int i = 0, count = abs.getWidgetCount(); i < count; i++) { + BoundsWidget bw = (BoundsWidget) abs.getWidget(i); + if (bw != null) { + Rectangle bounds = bw.getBounds(); + XWidgetCreator comp = (XWidgetCreator) XCreatorUtils.createXCreator(bw.getWidget()); + if (!comp.acceptType(XWParameterLayout.class)) { + comp.setDirections(Direction.ALL); + } + add(comp); + comp.setBounds(bounds); + } + } + isRefreshing = false; + } + + /** + * 当前组件zorder位置替换新的控件 + * + * @param widget 控件 + * @param oldcreator 旧组件 + * @return 组件 + */ + @Override + public XCreator replace(Widget widget, XCreator oldcreator) { + int i = this.getComponentZOrder(oldcreator); + if (i != -1) { + this.toData().replace(new BoundsWidget(widget, oldcreator.getBounds()), + new BoundsWidget(oldcreator.toData(), oldcreator.getBounds())); + this.convert(); + return (XCreator) this.getComponent(i); + } + return null; + } + + /** * 组件增加 + * * @param e 容器事件 */ - @Override - public void componentAdded(ContainerEvent e) { - if (isRefreshing) { - return; - } - XWidgetCreator creator = (XWidgetCreator) e.getChild(); - WAbsoluteLayout wabs = this.toData(); - if (!creator.acceptType(XWFitLayout.class)) { - creator.setDirections(Direction.ALL); - } - wabs.addWidget(new BoundsWidget(creator.toData(), creator.getBounds())); - } - - /** + @Override + public void componentAdded(ContainerEvent e) { + if (isRefreshing) { + return; + } + XWidgetCreator creator = (XWidgetCreator) e.getChild(); + WAbsoluteLayout wabs = this.toData(); + if (!creator.acceptType(XWFitLayout.class)) { + creator.setDirections(Direction.ALL); + } + wabs.addWidget(new BoundsWidget(creator.toData(), creator.getBounds())); + } + + /** * 在设计界面中有组件移除的时候,需要通知WLayout容器重新paint + * * @param e 容器事件 */ @Override @@ -363,128 +376,130 @@ public class XWAbsoluteLayout extends XLayoutContainer { BoundsWidget bw = new BoundsWidget(wgt, xwc.getBounds()); wlayout.removeWidget(bw); } - - @Override - public Dimension getMinimumSize() { - return toData().getMinDesignSize(); - } - - @Override - public LayoutAdapter getLayoutAdapter() { - return new FRAbsoluteLayoutAdapter(this); - } - - @Override - public XLayoutContainer getTopLayout() { - XLayoutContainer xTopLayout = XCreatorUtils.getParentXLayoutContainer(this).getTopLayout(); - if (xTopLayout != null && !xTopLayout.isEditable()){ - return xTopLayout; - } - else{ - return this; - } - } - - /** - * 得到属性名 - * @return 属性名 - * @throws java.beans.IntrospectionException - */ - public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { - return new CRPropertyDescriptor[] { - new CRPropertyDescriptor("widgetName", this.data.getClass()).setI18NName( - Inter.getLocText("FR-Designer_Form-Widget_Name")) - }; - } - - public void paint(Graphics g) { - super.paint(g); - //如果鼠标移动到布局内且布局不可编辑,画出编辑蒙层 - if (isMouseEnter && !this.editable) { - int x = 0; - int y = 0; - int w = getWidth(); - int h = getHeight(); - - Graphics2D g2d = (Graphics2D) g; - Composite oldComposite = g2d.getComposite(); - //画白色的编辑层 - g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 60 / 100.0F)); - g2d.setColor(Color.WHITE); - g2d.fillRect(x, y, w, h); - //画编辑按钮所在框 - g2d.setComposite(oldComposite); - g2d.setColor(new Color(176, 196, 222)); - g2d.fillRect((x + w / 2 - EDIT_BTN_WIDTH / 2), (y + h / 2 - EDIT_BTN_HEIGHT / 2), EDIT_BTN_WIDTH, EDIT_BTN_HEIGHT); - //画编辑按钮图标 - BufferedImage image = IOUtils.readImage(IconPathConstants.TD_EDIT_ICON_PATH); - g2d.drawImage( - image, - (x + w / 2 - 23), - (y + h / 2 - image.getHeight() / 2), - image.getWidth(), - image.getHeight(), - null, - this - ); - g2d.setColor(Color.BLACK); - //画编辑文字 - g2d.drawString(Inter.getLocText("FR-Designer_Edit"), x + w / 2 - 2, y + h / 2 + 5); - } - } - - /** - * 响应点击事件 - * - * @param editingMouseListener 鼠标点击,位置处理器 - * @param e 鼠标点击事件 - */ - public void respondClick(EditingMouseListener editingMouseListener,MouseEvent e){ - FormDesigner designer = editingMouseListener.getDesigner(); - SelectionModel selectionModel = editingMouseListener.getSelectionModel(); - boolean isEditing = isEditable() || designer.getCursor().getType() == Cursor.HAND_CURSOR || e.getClickCount() == 2; - setEditable(isEditing); - - selectionModel.selectACreatorAtMouseEvent(e); - designer.repaint(); - - if (editingMouseListener.stopEditing()) { - if (this != designer.getRootComponent()) { - ComponentAdapter adapter = AdapterBus.getComponentAdapter(designer, this); - editingMouseListener.startEditing(this, isEditing ? adapter.getDesignerEditor() : null, adapter); - } - } - } - - /** - * body大小手动调整的时候 - * 按照比例调整组件的宽度 - * @param percent 比例 - */ - @Override - public void adjustCompWidth(double percent) { - for (int i = 0; i < getComponentCount(); i++) { - XCreator xCreator = (XCreator) getComponent(i); - Rectangle rectangle = xCreator.getBounds(); - xCreator.setBounds((int) (rectangle.x * percent), rectangle.y, (int) (rectangle.width * percent), rectangle.height); - BoundsWidget widget = toData().getBoundsWidget(xCreator.toData()); - widget.setBounds(xCreator.getBounds()); - } - } - - /** - * body大小手动调整的时候 - * 按照比例调整组件的高度 - * @param percent 比例 - */ - @Override - public void adjustCompHeight(double percent) { - for (int i = 0; i < getComponentCount(); i++) { - XCreator xCreator = (XCreator) getComponent(i); - Rectangle rectangle = xCreator.getBounds(); - xCreator.setBounds(rectangle.x, (int) (rectangle.y * percent), rectangle.width, (int) (rectangle.height * percent)); - BoundsWidget widget = toData().getBoundsWidget(xCreator.toData()); - widget.setBounds(xCreator.getBounds()); - } - } + + @Override + public Dimension getMinimumSize() { + return toData().getMinDesignSize(); + } + + @Override + public LayoutAdapter getLayoutAdapter() { + return new FRAbsoluteLayoutAdapter(this); + } + + @Override + public XLayoutContainer getTopLayout() { + XLayoutContainer xTopLayout = XCreatorUtils.getParentXLayoutContainer(this).getTopLayout(); + if (xTopLayout != null && !xTopLayout.isEditable()) { + return xTopLayout; + } else { + return this; + } + } + + /** + * 得到属性名 + * + * @return 属性名 + * @throws java.beans.IntrospectionException + */ + public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { + return new CRPropertyDescriptor[]{ + new CRPropertyDescriptor("widgetName", this.data.getClass()).setI18NName( + Inter.getLocText("FR-Designer_Form-Widget_Name")) + }; + } + + public void paint(Graphics g) { + super.paint(g); + //如果鼠标移动到布局内且布局不可编辑,画出编辑蒙层 + if (isMouseEnter && !this.editable) { + int x = 0; + int y = 0; + int w = getWidth(); + int h = getHeight(); + + Graphics2D g2d = (Graphics2D) g; + Composite oldComposite = g2d.getComposite(); + //画白色的编辑层 + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 60 / 100.0F)); + g2d.setColor(Color.WHITE); + g2d.fillRect(x, y, w, h); + //画编辑按钮所在框 + g2d.setComposite(oldComposite); + g2d.setColor(new Color(176, 196, 222)); + g2d.fillRect((x + w / 2 - EDIT_BTN_WIDTH / 2), (y + h / 2 - EDIT_BTN_HEIGHT / 2), EDIT_BTN_WIDTH, EDIT_BTN_HEIGHT); + //画编辑按钮图标 + BufferedImage image = IOUtils.readImage(IconPathConstants.TD_EDIT_ICON_PATH); + g2d.drawImage( + image, + (x + w / 2 - 23), + (y + h / 2 - image.getHeight() / 2), + image.getWidth(), + image.getHeight(), + null, + this + ); + g2d.setColor(Color.BLACK); + //画编辑文字 + g2d.drawString(Inter.getLocText("FR-Designer_Edit"), x + w / 2 - 2, y + h / 2 + 5); + } + } + + /** + * 响应点击事件 + * + * @param editingMouseListener 鼠标点击,位置处理器 + * @param e 鼠标点击事件 + */ + public void respondClick(EditingMouseListener editingMouseListener, MouseEvent e) { + FormDesigner designer = editingMouseListener.getDesigner(); + SelectionModel selectionModel = editingMouseListener.getSelectionModel(); + boolean isEditing = isEditable() || designer.getCursor().getType() == Cursor.HAND_CURSOR || e.getClickCount() == 2; + setEditable(isEditing); + + selectionModel.selectACreatorAtMouseEvent(e); + designer.repaint(); + + if (editingMouseListener.stopEditing()) { + if (this != designer.getRootComponent()) { + ComponentAdapter adapter = AdapterBus.getComponentAdapter(designer, this); + editingMouseListener.startEditing(this, isEditing ? adapter.getDesignerEditor() : null, adapter); + } + } + } + + /** + * body大小手动调整的时候 + * 按照比例调整组件的宽度 + * + * @param percent 比例 + */ + @Override + public void adjustCompWidth(double percent) { + for (int i = 0; i < getComponentCount(); i++) { + XCreator xCreator = (XCreator) getComponent(i); + Rectangle rectangle = xCreator.getBounds(); + xCreator.setBounds((int) (rectangle.x * percent), rectangle.y, (int) (rectangle.width * percent), rectangle.height); + BoundsWidget widget = toData().getBoundsWidget(xCreator.toData()); + widget.setBounds(xCreator.getBounds()); + } + } + + /** + * body大小手动调整的时候 + * 按照比例调整组件的高度 + * + * @param percent 比例 + */ + @Override + public void adjustCompHeight(double percent) { + for (int i = 0; i < getComponentCount(); i++) { + XCreator xCreator = (XCreator) getComponent(i); + Rectangle rectangle = xCreator.getBounds(); + xCreator.setBounds(rectangle.x, (int) (rectangle.y * percent), rectangle.width, (int) (rectangle.height * percent)); + BoundsWidget widget = toData().getBoundsWidget(xCreator.toData()); + widget.setBounds(xCreator.getBounds()); + } + } } \ No newline at end of file From 228d8bb8e8865d78257a6aa825529ce26bdb4fc3 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Tue, 11 Apr 2017 15:07:37 +0800 Subject: [PATCH 27/76] =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=A4=8D=E7=94=A8?= =?UTF-8?q?=E5=B1=82=E5=8F=A0=E9=A1=BA=E5=BA=8F=E6=96=B0=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=9A=84=E7=BB=84=E4=BB=B6=E5=9C=A8=E4=B8=8A=E6=96=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../beans/adapters/layout/FRAbsoluteLayoutAdapter.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java index 603626e13d..0384de675d 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java @@ -235,7 +235,7 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { if (creator.hasTitleStyle()) { addParentCreator(creator); } else { - container.add(creator, creator.toData().getWidgetName()); + container.add(creator, creator.toData().getWidgetName(),0); } XWAbsoluteLayout layout = (XWAbsoluteLayout) container; layout.updateBoundsWidget(creator); @@ -246,7 +246,7 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { if (creator.shouldScaleCreator() || creator.hasTitleStyle()) { addParentCreator(creator); } else { - container.add(creator, creator.toData().getWidgetName()); + container.add(creator, creator.toData().getWidgetName(),0); } XWFitLayout layout = (XWFitLayout) container; // 更新对应的BoundsWidget @@ -265,7 +265,7 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { private void addParentCreator(XCreator child) { XLayoutContainer parentPanel = child.initCreatorWrapper(child.getHeight()); - container.add(parentPanel, child.toData().getWidgetName()); + container.add(parentPanel, child.toData().getWidgetName(),0); } /** From 03ae87935a5ce59af7fc70aee38b21d88821ed91 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Wed, 12 Apr 2017 09:06:25 +0800 Subject: [PATCH 28/76] =?UTF-8?q?report-1945=20=E8=87=AA=E9=80=82=E5=BA=94?= =?UTF-8?q?=E6=97=A0=E7=BB=84=E4=BB=B6=E6=98=AF=E7=B2=98=E8=B4=B4=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/designer/beans/models/SelectionModel.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java index dc4ea6a49b..4b7b97e7da 100644 --- a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java +++ b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java @@ -149,7 +149,15 @@ public class SelectionModel { int leftUpY = designer.getRootComponent().toData().getMargin().getTop() + 1; //选中第一个坐标点坐在的组件 selection.setSelectedCreator((XCreator) designer.getRootComponent().getComponentAt(leftUpX, leftUpY)); - pasteFromClipBoard(); + if (hasSelectedPasteSource()) { + selectedPaste(); + } else { + FormSelectionUtils.paste2Container(designer, designer.getRootComponent(), + clipboard, + DELTA_X_Y, + DELTA_X_Y); + } + } } else { //绝对布局 From 25116d6466188442d0d384252bb81b01047681ad Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Wed, 12 Apr 2017 09:30:27 +0800 Subject: [PATCH 29/76] =?UTF-8?q?report-1945,tab|=E8=87=AA=E9=80=82?= =?UTF-8?q?=E5=BA=94,=E6=97=A0=E7=BB=84=E4=BB=B6=E6=97=B6=E7=B2=98?= =?UTF-8?q?=E8=B4=B4=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/beans/models/SelectionModel.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java index 4b7b97e7da..13eaa18ac3 100644 --- a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java +++ b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java @@ -142,22 +142,29 @@ public class SelectionModel { int leftUpY = container.toData().getMargin().getTop() + 1; //选中第一个坐标点坐在的组件 selection.setSelectedCreator((XCreator) container.getComponentAt(leftUpX, leftUpY)); - pasteFromClipBoard(); + Rectangle rectangle = selection.getRelativeBounds(); + if (hasSelectedPasteSource()) { + selectedPaste(); + } else { + FormSelectionUtils.paste2Container(designer, container, clipboard, + rectangle.x + rectangle.width / 2, + rectangle.y + DELTA_X_Y); + } } else { //自适应布局编辑器内部左上角第一个坐标点 int leftUpX = designer.getRootComponent().toData().getMargin().getLeft() + 1; int leftUpY = designer.getRootComponent().toData().getMargin().getTop() + 1; //选中第一个坐标点坐在的组件 selection.setSelectedCreator((XCreator) designer.getRootComponent().getComponentAt(leftUpX, leftUpY)); + Rectangle rectangle = selection.getRelativeBounds(); if (hasSelectedPasteSource()) { selectedPaste(); } else { FormSelectionUtils.paste2Container(designer, designer.getRootComponent(), clipboard, - DELTA_X_Y, - DELTA_X_Y); + rectangle.x + rectangle.width / 2, + rectangle.y + DELTA_X_Y); } - } } else { //绝对布局 From 50dd30c362cd0804b5af586cd8e0362e50980c3a Mon Sep 17 00:00:00 2001 From: plough Date: Wed, 12 Apr 2017 11:46:58 +0800 Subject: [PATCH 30/76] =?UTF-8?q?REPORT-2344=20=E5=9B=BD=E9=99=85=E5=8C=96?= =?UTF-8?q?=E2=80=94=E2=80=94=E7=B9=81=E4=BD=93=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E5=B0=91=E4=BA=86key?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/locale/designer.properties | 8 +++- .../design/locale/designer_en_US.properties | 7 +++- .../design/locale/designer_ja_JP.properties | 28 ++++++++++++- .../design/locale/designer_ko_KR.properties | 40 ++++++++++++++++++- .../design/locale/designer_zh_CN.properties | 2 + .../design/locale/designer_zh_TW.properties | 15 ++++++- 6 files changed, 95 insertions(+), 5 deletions(-) diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index 6aa27aba37..62d19e7378 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -590,4 +590,10 @@ FR-Designer_Logarithmic=Logarithmic FR-Designer_Chart_Log_Base=Log Base FR-Designer_Chart_F_Radar_Axis=Chart_F_Radar_Axis FR-Designer_Too_Large_To_Paste=too large to paste -FR-Designer_Too_Small_To_Paste=Too small to paste \ No newline at end of file +FR-Designer_Too_Small_To_Paste=Too small to paste +FR-Designer_Validate= +FR-Designer_Get-CubeGetting cube= +FR-Designer_Get-CubeGetting= +FR-Designer_Fit= +FR-Designer_Properties_Mobile= +FR-Designer_Oracle= diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index 79f9c41390..bfab2989f3 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -591,4 +591,9 @@ FR-Designer_Logarithmic=Log scale FR-Designer_Chart_Log_Base=Log Base FR-Designer_Chart_F_Radar_Axis=Value Axis FR-Designer_Too_Large_To_Paste=Too large to paste! -FR-Designer_Too_Small_To_Paste=Too small to paste! \ No newline at end of file +FR-Designer_Too_Small_To_Paste=Too small to paste! +FR-Designer_SimpleCross_Report= +FR-Designer_Get-Cube= +FR-Designer_DoubleLayer_Report= +FR-Designer_Get-CubeGetting= +FR-Designer_SimpleDetail_Report= diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index 37d913e735..ae7510e78e 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -567,4 +567,30 @@ FR-Designer_Logarithmic=\u5BFE\u6570\u76EE\u76DB\u308A FR-Designer_Chart_Log_Base=\u5E95\u6570 FR-Designer_Chart_F_Radar_Axis=\u5782\u76F4\u8EF8 FR-Designer_Too_Large_To_Paste=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30B5\u30A4\u30BA\u306F\u30DC\u30FC\u30C0\u30FC\u306B\u8D85\u3048\u305F\u306E\u3067\u3001\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\uFF01 -FR-Designer_Too_Small_To_Paste=\u8A72\u5F53\u51E6\u306B\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\u3001\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30B5\u30A4\u30BA\u306F\u9AD8\u3059\u304E\uFF01 \ No newline at end of file +FR-Designer_Too_Small_To_Paste=\u8A72\u5F53\u51E6\u306B\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\u3001\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30B5\u30A4\u30BA\u306F\u9AD8\u3059\u304E\uFF01 +FR-Designer_DoubleLayer_Report= +FR-Designer_Printer_Native_Button= +FR-Designer_Mobile-Warning= +FR-Designer_Form-Fit-Tip= +FR-Designer_Form-Forzen-Speed= +FR-Designer_Mobile_Form_Analysis_Annotation= +FR-Designer_TableData-Default-Para= +FR-Designer-Selected_Widget= +FR-Designer_Plugin_Should_Update_Please_Contact_Developer= +FR-Designer_SimpleCross_Report= +FR-Designer_Button-Cancel= +FR-Designer_Delete_Template= +FR-Designer_Install_Template= +FR-Designer_SimpleDetail_Report= +FR-Designer_LocalWidget= +FR-Designer_WidgetOrder= +FR-Designer_Form-Frozen-Tip= +FR-Designer-Invalid_Page_Number= +FR-Designer_Reset= +FR-Designer-Plugin_Please_Update_Jar= +FR-Designer_Get-CubeGetting cube= +FR-Designer_Mobile_Report_Analysis_Annotation= +FR-Designer_Properties_Mobile= +FR-Designer_Button-OK= +FR-Designer_Allow-Blank= +FR-Designer_AllCategories= diff --git a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties index 0c798b87aa..f6c1591ef0 100644 --- a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties +++ b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties @@ -556,4 +556,42 @@ FR-Designer-Move_Tab_Prev= FR-Designer_AxisReversed=\uCD95\uC5ED\uC21C FR-Designer_Logarithmic=\uB85C\uADF8\uB208\uAE08 FR-Designer_Chart_Log_Base=\uAE30\uC218 -FR-Designer_Chart_F_Radar_Axis=\uAC12\uCD95 \ No newline at end of file +FR-Designer_Chart_F_Radar_Axis=\uAC12\uCD95 +FR-Designer_COMMUNITY_VIDEO= +FR-Designer_DoubleLayer_Report= +FR-Designer_Too_Small_To_Paste= +FR-Designer_formDesignerModule= +FR-Designer_Mobile-Warning= +FR-Designer_Mobile-Open= +FR-Designer_Form-Fit-Tip= +FR-Designer_Form-Forzen-Speed= +FR-Designer_Mobile_Form_Analysis_Annotation= +FR-Designer_Too_Large_To_Paste= +FR-Designer_COMMUNITY_HELP= +FR-Designer_Validate= +FR-Designer_Button-Cancel= +FR-Designer_Plugin_Should_Update_Please_Contact_Developer= +FR-Designer_COMMUNITY_QUESTIONS= +FR-Designer_SimpleCross_Report= +FR-Designer_COMMUNITY_NEED= +FR-Designer_Delete_Template= +FR-Designer_TableData-Default-Para= +FR-Designer_Allow-Blank= +FR-Designer_LocalWidget= +FR-Designer_WidgetOrder= +FR-Designer_Form-Frozen-Tip= +FR-Designer_Mobile-Horizontal= +FR-Designer-Invalid_Page_Number= +FR-Designer_COMMUNITY_BBS= +FR-Designer_COMMUNITY_SIGN= +FR-Designer_COMMUNITY_UPDATE= +FR-Designer_Mobile-Vertical= +FR-Designer_Get-CubeGetting cube= +FR-Designer_COMMUNITY= +FR-Designer_Mobile_Report_Analysis_Annotation= +FR-Designer_Properties_Mobile= +FR-Designer_Button-OK= +FR-Designer_COMMUNITY_BUG= +FR-Designer_AllCategories= +FR-Designer_Mobile-Attr= +FR-Designer_Mobile-Zoom= diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index 060eddbd74..b711458203 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -596,3 +596,5 @@ FR-Designer_Chart_Log_Base=\u5E95\u6570 FR-Designer_Chart_F_Radar_Axis=\u503C\u8F74 FR-Designer_Too_Large_To_Paste=\u7EC4\u4EF6\u5927\u5C0F\u8D85\u51FA\u8FB9\u754C\uFF0C\u65E0\u6CD5\u7C98\u8D34\uFF01 FR-Designer_Too_Small_To_Paste=\u6B64\u5904\u65E0\u6CD5\u7C98\u8D34\uFF0C\u5C0F\u4E8E\u7EC4\u4EF6\u6700\u5C0F\u9AD8\u5EA6\uFF01 + +FR-Designer_Get-CubeGetting cube= diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index 1329b3ba62..c16164185b 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -584,4 +584,17 @@ FR-Designer_Logarithmic=\u5C0D\u6578\u523B\u5EA6 FR-Designer_Chart_Log_Base=\u5E95\u6578 FR-Designer_Chart_F_Radar_Axis=\u503C\u8EF8 FR-Designer_Too_Large_To_Paste=\u7D44\u4EF6\u5927\u5C0F\u8D85\u51FA\u908A\u754C\uFF0C\u7121\u6CD5\u7C98\u8CBC\uFF01 -FR-Designer_Too_Small_To_Paste=\u6B64\u8655\u7121\u6CD5\u7C98\u8CBC\uFF0C\u5C0F\u65BC\u7D44\u4EF6\u6700\u5C0F\u9AD8\u5EA6\uFF01 \ No newline at end of file +FR-Designer_Too_Small_To_Paste=\u6B64\u8655\u7121\u6CD5\u7C98\u8CBC\uFF0C\u5C0F\u65BC\u7D44\u4EF6\u6700\u5C0F\u9AD8\u5EA6\uFF01 +FR-Designer_Download_Template= +FR-Designer-Selected_Widget= +FR-Designer_LocalWidget= +FR-Designer_Get-CubeGetting cube= +FR-Designer_Install_Template= +FR-Designer_Reset= +FR-Designer_SimpleCross_Report= +FR-Designer_Allow-Blank= +FR-Designer_AllCategories= +FR-Designer_SimpleDetail_Report= +FR-Designer_DoubleLayer_Report= +FR-Designer_Delete_Template= +FR-Designer_Validate= From 55ddfd87dcf16703d8326d4ade2a15509f075889 Mon Sep 17 00:00:00 2001 From: syoki Date: Thu, 13 Apr 2017 02:21:08 +0900 Subject: [PATCH 31/76] =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=20=E9=83=A8=E5=88=86=E6=9C=AA=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E7=BF=BB=E8=AF=91=20=E5=BA=84=E5=A5=87=20201?= =?UTF-8?q?704130221?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/locale/designer_ja_JP.properties | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index ae7510e78e..87d0801981 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -568,29 +568,29 @@ FR-Designer_Chart_Log_Base=\u5E95\u6570 FR-Designer_Chart_F_Radar_Axis=\u5782\u76F4\u8EF8 FR-Designer_Too_Large_To_Paste=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30B5\u30A4\u30BA\u306F\u30DC\u30FC\u30C0\u30FC\u306B\u8D85\u3048\u305F\u306E\u3067\u3001\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\uFF01 FR-Designer_Too_Small_To_Paste=\u8A72\u5F53\u51E6\u306B\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\u3001\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30B5\u30A4\u30BA\u306F\u9AD8\u3059\u304E\uFF01 -FR-Designer_DoubleLayer_Report= -FR-Designer_Printer_Native_Button= -FR-Designer_Mobile-Warning= -FR-Designer_Form-Fit-Tip= -FR-Designer_Form-Forzen-Speed= -FR-Designer_Mobile_Form_Analysis_Annotation= -FR-Designer_TableData-Default-Para= -FR-Designer-Selected_Widget= -FR-Designer_Plugin_Should_Update_Please_Contact_Developer= -FR-Designer_SimpleCross_Report= -FR-Designer_Button-Cancel= -FR-Designer_Delete_Template= -FR-Designer_Install_Template= -FR-Designer_SimpleDetail_Report= -FR-Designer_LocalWidget= -FR-Designer_WidgetOrder= -FR-Designer_Form-Frozen-Tip= -FR-Designer-Invalid_Page_Number= -FR-Designer_Reset= -FR-Designer-Plugin_Please_Update_Jar= +FR-Designer_DoubleLayer_Report=\u4E8C\u968E\u30BF\u30A4\u30C8\u30EB +FR-Designer_Printer_Native_Button=\u30ED\u30FC\u30AB\u30EB\u5370\u5237 +FR-Designer_Mobile-Warning=\u6700\u5927\u306E\u9AD8\u3055\u306F\u8868\u793A\u30A8\u30EA\u30A2\u306E80\uFF05\u4EE5\u4E0A\u306B\u306A\u308A\u307E\u305B\u3093 +FR-Designer_Form-Fit-Tip=\u81EA\u5DF1\u9069\u5FDC\u30D7\u30E9\u30B0\u30A4\u30F3 +FR-Designer_Form-Forzen-Speed=\u3001\u305D\u3057\u3066\u6A2A\u65B9\u5411\u81EA\u5DF1\u9069\u5FDC\u307E\u305F\u306F2\u65B9\u5411\u81EA\u52D5\u9069\u5FDC\u3092\u5229\u7528\u3057\u3001\u5E33\u7968\u8868\u793A\u306E\u30B9\u30D4\u30FC\u30C9\u3092\u4E0A\u3052\u3067\u304D\u307E\u3059\u3002 +FR-Designer_Mobile_Form_Analysis_Annotation=\u8AAC\u660E\:\u8A72\u5F53\u8A2D\u5B9A\u3088\u308A\u3001\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u30A2\u30D7\u30EA\u3067\u306E\u89E3\u6790\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3002 +FR-Designer_TableData-Default-Para=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF +FR-Designer-Selected_Widget=\u5F53\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 +FR-Designer_Plugin_Should_Update_Please_Contact_Developer=\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u4F4E\u3044\u3067\u3059\u304C\u3001\u4E0D\u5177\u5408\u304C\u3067\u3063\u305F\u3001\u958B\u767A\u8005\u3068\u9023\u7D61\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +FR-Designer_SimpleCross_Report=\u7C21\u5358\u30AF\u30ED\u30FC\u30B9\u8868 +FR-Designer_Button-Cancel=\u53D6\u308A\u6D88\u3057 +FR-Designer_Delete_Template=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u524A\u9664 +FR-Designer_Install_Template=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB +FR-Designer_SimpleDetail_Report=\u7C21\u5358\u660E\u7D30\u8868 +FR-Designer_LocalWidget=\u30ED\u30FC\u30AB\u30EB\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u30E9\u30A4\u30D6\u30E9\u30EA +FR-Designer_WidgetOrder=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u9806\u756A +FR-Designer_Form-Frozen-Tip=\u30D5\u30EA\u30FC\u30BA\u3092\u4F7F\u3046\u6642\u3001\u5F8C\u8A18\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3066\u304F\u3060\u3055\u3044\uFF1A +FR-Designer-Invalid_Page_Number=\u7121\u52B9\u306A\u30DA\u30FC\u30B8\u756A\u53F7 +FR-Designer_Reset=\u30EA\u30BB\u30C3\u30C8 +FR-Designer-Plugin_Please_Update_Jar=jar\u30D1\u30C3\u30AF\u3092\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3057\u3066\u304F\u3060\u3055\u3044 FR-Designer_Get-CubeGetting cube= -FR-Designer_Mobile_Report_Analysis_Annotation= -FR-Designer_Properties_Mobile= -FR-Designer_Button-OK= -FR-Designer_Allow-Blank= -FR-Designer_AllCategories= +FR-Designer_Mobile_Report_Analysis_Annotation=\u8AAC\u660E\:\u8A72\u5F53\u5C5E\u6027\u3088\u308A\u3001\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u30A2\u30D7\u30EA\u3067\u306E\u89E3\u6790\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3001\u9801\u5206\u3051\u30D7\u30EC\u30D3\u30E5\u30FC\u3060\u3051\u3092\u652F\u6301\u3001\u66F8\u304D\u8FBC\u307F\u306B\u8A2D\u5B9A\u3059\u308B\u6642\u7121\u52B9\u306B\u306A\u308A\u307E\u3059\u3002 +FR-Designer_Properties_Mobile=\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u5C5E\u6027 +FR-Designer_Button-OK=\u5206\u304B\u308A\u307E\u3057\u305F +FR-Designer_Allow-Blank=\u7A7A\u306B\u8A31\u3059 +FR-Designer_AllCategories=\u5168\u3066\u306E\u7A2E\u985E From cc43c5314357111fdc2c58d1b7791c2d0b5c9fd2 Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Thu, 13 Apr 2017 10:10:06 +0800 Subject: [PATCH 32/76] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9C=80=E5=A4=A7?= =?UTF-8?q?=E6=9C=80=E5=B0=8F=E5=80=BC=E5=80=BC=E5=AE=9A=E4=B9=89=EF=BC=8C?= =?UTF-8?q?=E5=85=BC=E5=AE=B9vancharts=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/chart/axis/MinMaxValuePane.java | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java b/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java index 4a9be221de..96c51516d8 100644 --- a/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java +++ b/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java @@ -42,24 +42,30 @@ public class MinMaxValuePane extends JPanel { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] columnSize = { p, f }; - double[] rowSize = { p, p, p, p}; - Component[][] components = getPanelComponents(); - JPanel panel = TableLayoutHelper.createTableLayoutPane(components ,rowSize,columnSize); + Component[][] components = getPanelComponents(); + JPanel panel = TableLayoutHelper.createTableLayoutPane(components, getRowSize(p), columnSize); this.setLayout(new BorderLayout()); - this.add(panel,BorderLayout.CENTER); + this.add(panel, BorderLayout.CENTER); + addComponentListener(components); + } - for(int i = 0; i < components.length; i++) { - ((UICheckBox)components[i][0]).addActionListener(new ActionListener() { + protected double[] getRowSize(double p) { + return new double[]{p, p, p, p}; + } + public void addComponentListener(Component[][] components) { + for (int i = 0; i < components.length; i++) { + ((UICheckBox) components[i][0]).addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { checkBoxUse(); } }); - ChartSwingUtils.addListener((UICheckBox)components[i][0], (UITextField)components[i][1]); + ChartSwingUtils.addListener((UICheckBox) components[i][0], (UITextField) components[i][1]); } } + protected Component[][] getPanelComponents() { return new Component[][]{ new Component[]{minCheckBox, minValueField}, @@ -69,7 +75,7 @@ public class MinMaxValuePane extends JPanel { }; } - private void checkBoxUse() { + protected void checkBoxUse() { minValueField.setEnabled(minCheckBox.isSelected()); maxValueField.setEnabled(maxCheckBox.isSelected()); @@ -100,7 +106,7 @@ public class MinMaxValuePane extends JPanel { if(axis.getMinValue() != null) { minValueField.setText(axis.getMinValue().toString()); } - } + } // 最大值 if (axis.isCustomMaxValue()) { @@ -108,7 +114,7 @@ public class MinMaxValuePane extends JPanel { if(axis.getMaxValue() != null) { maxValueField.setText(axis.getMaxValue().toString()); } - } + } // 主次刻度单位 if (axis.isCustomMainUnit()) { @@ -116,7 +122,7 @@ public class MinMaxValuePane extends JPanel { if(axis.getMainUnit() != null) { mainUnitField.setText(axis.getMainUnit().toString()); } - } + } if(axis.isCustomSecUnit()) { isCustomSecUnitBox.setSelected(true); From 469bcc513df64ea674dc1a8ed7a4b733c10531f8 Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Thu, 13 Apr 2017 10:34:11 +0800 Subject: [PATCH 33/76] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/chart/axis/MinMaxValuePane.java | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java b/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java index 96c51516d8..2ae89b60c0 100644 --- a/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java +++ b/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java @@ -53,18 +53,22 @@ public class MinMaxValuePane extends JPanel { protected double[] getRowSize(double p) { return new double[]{p, p, p, p}; } - public void addComponentListener(Component[][] components) { - for (int i = 0; i < components.length; i++) { - ((UICheckBox) components[i][0]).addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - checkBoxUse(); - } - }); - ChartSwingUtils.addListener((UICheckBox) components[i][0], (UITextField) components[i][1]); - } - } + public void addComponentListener(Component[][] components) { + for (int i = 0; i < components.length; i++) { + addListener((UICheckBox) components[i][0]); + ChartSwingUtils.addListener((UICheckBox) components[i][0], (UITextField) components[i][1]); + } + } + + protected void addListener(UICheckBox checkBox) { + checkBox.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + checkBoxUse(); + } + }); + } protected Component[][] getPanelComponents() { return new Component[][]{ @@ -75,7 +79,7 @@ public class MinMaxValuePane extends JPanel { }; } - protected void checkBoxUse() { + private void checkBoxUse() { minValueField.setEnabled(minCheckBox.isSelected()); maxValueField.setEnabled(maxCheckBox.isSelected()); From 814bea2e11f20cb32f895aa3d9792684fcaf8045 Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Thu, 13 Apr 2017 10:48:19 +0800 Subject: [PATCH 34/76] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/chart/axis/MinMaxValuePane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java b/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java index 2ae89b60c0..88a6b528ec 100644 --- a/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java +++ b/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java @@ -53,7 +53,7 @@ public class MinMaxValuePane extends JPanel { protected double[] getRowSize(double p) { return new double[]{p, p, p, p}; } - public void addComponentListener(Component[][] components) { + protected void addComponentListener(Component[][] components) { for (int i = 0; i < components.length; i++) { addListener((UICheckBox) components[i][0]); ChartSwingUtils.addListener((UICheckBox) components[i][0], (UITextField) components[i][1]); From be48bf4b295d2cda530003874b5b0edde571074b Mon Sep 17 00:00:00 2001 From: kerry Date: Thu, 13 Apr 2017 16:08:15 +0800 Subject: [PATCH 35/76] =?UTF-8?q?REPORT-2220=20=E6=95=B0=E6=8D=AE=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E7=94=A8=E6=88=B7=E5=90=8D=E5=92=8C=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E4=BC=A0=E5=8F=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/formula/VariableResolverAdapter.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/formula/VariableResolverAdapter.java b/designer_base/src/com/fr/design/formula/VariableResolverAdapter.java index eb80600acc..623b1cbf4f 100644 --- a/designer_base/src/com/fr/design/formula/VariableResolverAdapter.java +++ b/designer_base/src/com/fr/design/formula/VariableResolverAdapter.java @@ -4,12 +4,16 @@ import com.fr.base.ConfigManager; import com.fr.base.Parameter; import com.fr.design.DesignModelAdapter; import com.fr.base.ConfigManagerProvider; +import com.fr.plugin.ExtraClassManager; import com.fr.script.ScriptConstants; +import com.fr.stable.ArrayUtils; import com.fr.stable.Constants; +import com.fr.stable.fun.BuiltInParametersProvider; import com.fr.stable.script.CalculatorProvider; import java.util.ArrayList; import java.util.List; +import java.util.Set; public abstract class VariableResolverAdapter implements VariableResolver { private static final int TABLE_DATA_PARA = 0; @@ -21,7 +25,7 @@ public abstract class VariableResolverAdapter implements VariableResolver { * @return 内置参数 */ public String[] resolveCurReportVariables() { - return new String[] { ScriptConstants.SUMMARY_TAG + "page_number", + String [] variables = new String[] { ScriptConstants.SUMMARY_TAG + "page_number", ScriptConstants.SUMMARY_TAG + "totalPage_number", // 下面是权限相关的参数 ScriptConstants.DETAIL_TAG + Constants.P.PRIVILEGE_USERNAME, ScriptConstants.DETAIL_TAG + Constants.P.PRIVILEGE_AUTHORITY, @@ -32,6 +36,13 @@ public abstract class VariableResolverAdapter implements VariableResolver { CalculatorProvider.REPORT_NAME, CalculatorProvider.FORMLET_NAME, CalculatorProvider.SERVLET_URL, CalculatorProvider.SERVER_SCHEMA, CalculatorProvider.SERVER_NAME, CalculatorProvider.SERVER_PORT, CalculatorProvider.SERVER_URL, CalculatorProvider.CONTEXT_PATH, CalculatorProvider.SESSION_ID }; + Set set = ExtraClassManager.getInstance().getArray(BuiltInParametersProvider.XML_TAG); + for (BuiltInParametersProvider provider : set) { + return (String[]) ArrayUtils.addAll(variables, new String []{ + ScriptConstants.DETAIL_TAG + provider.getParametersName() + }); + } + return variables; } private Parameter[] getCurrentModeParameters(int type) { From c247eeac6a60cd0468fb78e451fe307a2feaef50 Mon Sep 17 00:00:00 2001 From: zack Date: Fri, 14 Apr 2017 14:54:45 +0800 Subject: [PATCH 36/76] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=20=20?= =?UTF-8?q?=E5=B1=8F=E8=94=BD=E6=96=B0=E7=BF=BB=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/designer/creator/XElementCase.java | 160 +++++++++--------- 1 file changed, 77 insertions(+), 83 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/creator/XElementCase.java b/designer_form/src/com/fr/design/designer/creator/XElementCase.java index c7cd3b4934..3a077e57a8 100644 --- a/designer_form/src/com/fr/design/designer/creator/XElementCase.java +++ b/designer_form/src/com/fr/design/designer/creator/XElementCase.java @@ -10,9 +10,11 @@ import com.fr.design.fun.WidgetPropertyUIProvider; import com.fr.design.fun.impl.AbstractFormElementCaseEditorProvider; import com.fr.design.gui.ilable.UILabel; import com.fr.design.mainframe.*; -import com.fr.design.mainframe.widget.editors.ElementCaseToolBarEditor; +import com.fr.design.mainframe.widget.editors.BooleanEditor; import com.fr.design.mainframe.widget.editors.PaddingMarginEditor; import com.fr.design.mainframe.widget.editors.WLayoutBorderStyleEditor; +import com.fr.design.mainframe.widget.renderer.LayoutBorderStyleRenderer; +import com.fr.design.mainframe.widget.renderer.PaddingMarginCellRenderer; import com.fr.form.FormElementCaseContainerProvider; import com.fr.form.FormElementCaseProvider; import com.fr.form.FormProvider; @@ -34,8 +36,8 @@ import java.beans.PropertyDescriptor; import java.util.Set; public class XElementCase extends XBorderStyleWidgetCreator implements FormElementCaseContainerProvider{ - private UILabel imageLable; - private CoverReportPane coverPanel; + private UILabel imageLable; + private CoverReportPane coverPanel; private FormDesigner designer; //缩略图 private BufferedImage thumbnailImage; @@ -64,30 +66,23 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme } /** - * 是否支持设置标题 - * @return 是返回true - */ - public boolean hasTitleStyle() { + * 是否支持设置标题 + * @return 是返回true + */ + public boolean hasTitleStyle() { return true; } - /** - * 返回组件属性值 - * @return 返回组件属性值 - * @throws IntrospectionException 异常 - */ + /** + * 返回组件属性值 + * @return 返回组件属性值 + * @throws IntrospectionException 异常 + */ public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { CRPropertyDescriptor[] propertyTableEditor = new CRPropertyDescriptor[]{ new CRPropertyDescriptor("widgetName", this.data.getClass()) .setI18NName(Inter.getLocText("Form-Widget_Name")), - new CRPropertyDescriptor("visible", this.data.getClass()).setI18NName( - Inter.getLocText("FR-Designer_Widget-Visible")).setPropertyChangeListener(new PropertyChangeAdapter() { - - @Override - public void propertyChange() { - makeVisible(toData().isVisible());} - }), new CRPropertyDescriptor("borderStyle", this.data.getClass()).setEditorClass( WLayoutBorderStyleEditor.class).setI18NName( Inter.getLocText("FR-Designer-Widget_Style")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced") @@ -97,12 +92,11 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme public void propertyChange() { initStyle(); } - }), new CRPropertyDescriptor("margin", this.data.getClass()).setEditorClass(PaddingMarginEditor.class) .setI18NName(Inter.getLocText("FR-Layout_Padding")) .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), - new CRPropertyDescriptor("ToolBars", this.data.getClass()).setEditorClass(ElementCaseToolBarEditor.class) + new CRPropertyDescriptor("showToolBar", this.data.getClass()).setEditorClass(BooleanEditor.class) .setI18NName(Inter.getLocText("Form-EC_toolbar")) .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced") }; @@ -149,30 +143,30 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme return "text_field_16.png"; } - /** - * 返回组件默认名 - * @return 组件类名(小写) - */ - public String createDefaultName() { - return "report"; - } + /** + * 返回组件默认名 + * @return 组件类名(小写) + */ + public String createDefaultName() { + return "report"; + } @Override protected JComponent initEditor() { if (editor == null) { setBorder(DEFALUTBORDER); - editor = new JPanel(); - editor.setBackground(null); - editor.setLayout(null); - imageLable = initImageBackground(); - - coverPanel = new CoverReportPane(); - coverPanel.setPreferredSize(imageLable.getPreferredSize()); - coverPanel.setBounds(imageLable.getBounds()); - - editor.add(coverPanel); - coverPanel.setVisible(false); - editor.add(imageLable); + editor = new JPanel(); + editor.setBackground(null); + editor.setLayout(null); + imageLable = initImageBackground(); + + coverPanel = new CoverReportPane(); + coverPanel.setPreferredSize(imageLable.getPreferredSize()); + coverPanel.setBounds(imageLable.getBounds()); + + editor.add(coverPanel); + coverPanel.setVisible(false); + editor.add(imageLable); } return editor; } @@ -185,7 +179,7 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme BufferedImage image = getThumbnailImage(); setLabelBackground(image, imageLable); - return imageLable; + return imageLable; } /** @@ -194,16 +188,16 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme private void setLabelBackground(Image image, UILabel imageLable){ ImageIcon icon = new ImageIcon(image); imageLable.setIcon(icon); - imageLable.setOpaque(true); - imageLable.setLayout(null); - imageLable.setBounds(0, 0, icon.getIconWidth(), icon.getIconHeight()); + imageLable.setOpaque(true); + imageLable.setLayout(null); + imageLable.setBounds(0, 0, icon.getIconWidth(), icon.getIconHeight()); } - /** - * 是否展现覆盖的pane - * @param display 是否 - */ - public void displayCoverPane(boolean display){ + /** + * 是否展现覆盖的pane + * @param display 是否 + */ + public void displayCoverPane(boolean display){ coverPanel.setVisible(display); coverPanel.setBounds(1, 1, (int) editor.getBounds().getWidth(), (int) editor.getBounds().getHeight()); editor.repaint(); @@ -216,41 +210,41 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme coverPanel.destroyHelpDialog(); } - public JComponent getCoverPane(){ - return coverPanel; - } + public JComponent getCoverPane(){ + return coverPanel; + } - /** - * 初始化大小 - * @return 尺寸 - */ + /** + * 初始化大小 + * @return 尺寸 + */ public Dimension initEditorSize() { return BORDER_PREFERRED_SIZE; } - /** - * 是否是报表块 - * @return 是 - */ + /** + * 是否是报表块 + * @return 是 + */ public boolean isReport() { return true; } - /** - * 该组件是否可以拖入参数面板 - * @return 是则返回true - */ - public boolean canEnterIntoParaPane(){ - return false; - } - - /** - * 返回报表块对应的widget - * @return 返回ElementCaseEditor - */ - public ElementCaseEditor toData() { - return ((ElementCaseEditor) data); - } + /** + * 该组件是否可以拖入参数面板 + * @return 是则返回true + */ + public boolean canEnterIntoParaPane(){ + return false; + } + + /** + * 返回报表块对应的widget + * @return 返回ElementCaseEditor + */ + public ElementCaseEditor toData() { + return ((ElementCaseEditor) data); + } public FormElementCaseProvider getElementCase() { return toData().getElementCase(); @@ -301,14 +295,14 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme } - private void switchTab(MouseEvent e,EditingMouseListener editingMouseListener){ - FormDesigner designer = editingMouseListener.getDesigner(); - if (e.getClickCount() == 2 || designer.getCursor().getType() == Cursor.HAND_CURSOR){ - FormElementCaseContainerProvider component = (FormElementCaseContainerProvider) designer.getComponentAt(e); - //切换设计器 - designer.switchTab(component); - } - } + private void switchTab(MouseEvent e,EditingMouseListener editingMouseListener){ + FormDesigner designer = editingMouseListener.getDesigner(); + if (e.getClickCount() == 2 || designer.getCursor().getType() == Cursor.HAND_CURSOR){ + FormElementCaseContainerProvider component = (FormElementCaseContainerProvider) designer.getComponentAt(e); + //切换设计器 + designer.switchTab(component); + } + } @Override public WidgetPropertyUIProvider[] getWidgetPropertyUIProviders() { From 08069fbfe0b9d75a73bc51eb4557246368826851 Mon Sep 17 00:00:00 2001 From: zack Date: Mon, 17 Apr 2017 14:25:03 +0800 Subject: [PATCH 37/76] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=20=20=20?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=BB=A3=E7=A0=81=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../layout/FRAbsoluteLayoutAdapter.java | 162 +++++++++--------- 1 file changed, 81 insertions(+), 81 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java index e96d392255..8ca2012525 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java @@ -1,31 +1,31 @@ -package com.fr.design.designer.beans.adapters.layout; - -import com.fr.design.beans.GroupModel; -import com.fr.design.designer.beans.ConstraintsGroupModel; -import com.fr.design.designer.beans.HoverPainter; -import com.fr.design.designer.beans.painters.FRAbsoluteLayoutPainter; -import com.fr.design.designer.creator.*; -import com.fr.design.designer.properties.BoundsGroupModel; -import com.fr.design.designer.properties.FRAbsoluteLayoutPropertiesGroupModel; -import com.fr.design.utils.ComponentUtils; -import com.fr.design.utils.gui.LayoutUtils; -import com.fr.general.ComparatorUtils; -import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; -import com.fr.general.FRLogger; - +package com.fr.design.designer.beans.adapters.layout; + +import com.fr.design.beans.GroupModel; +import com.fr.design.designer.beans.ConstraintsGroupModel; +import com.fr.design.designer.beans.HoverPainter; +import com.fr.design.designer.beans.painters.FRAbsoluteLayoutPainter; +import com.fr.design.designer.creator.*; +import com.fr.design.designer.properties.BoundsGroupModel; +import com.fr.design.designer.properties.FRAbsoluteLayoutPropertiesGroupModel; +import com.fr.design.utils.ComponentUtils; +import com.fr.design.utils.gui.LayoutUtils; +import com.fr.form.ui.container.WAbsoluteLayout; +import com.fr.general.ComparatorUtils; +import com.fr.general.FRLogger; + import java.awt.*; -public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { +public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { //是不是添加到父容器上 private boolean isAdd2ParentLayout = false; private HoverPainter painter; - - public FRAbsoluteLayoutAdapter(XLayoutContainer container) { - super(container); + + public FRAbsoluteLayoutAdapter(XLayoutContainer container) { + super(container); painter = new FRAbsoluteLayoutPainter(container); initMinSize(); - } - + } + private void initMinSize() { XWAbsoluteLayout layout = (XWAbsoluteLayout) container; minWidth = layout.getActualMinWidth(); @@ -33,25 +33,25 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { actualVal = layout.getAcualInterval(); margin = layout.toData().getMargin(); } - + @Override public HoverPainter getPainter() { return painter; } - /** - * 是否能在指定位置添加组件 + /** + * 是否能在指定位置添加组件 * - * @param creator 组件 + * @param creator 组件 * @param x 坐标x * @param y 坐标y - * @return 能则返回true - */ + * @return 能则返回true + */ //这个地方的逻辑非常复杂, // 1.当前绝对布局是不可编辑且是最外层,那么其他控件添加在它周围, // 2.当前绝对布局是不可编辑且不是最外层,那么控件不可添加,(嵌套) // 3.当前绝对布局可编辑,那么控件添加 - @Override + @Override public boolean accept(XCreator creator, int x, int y) { Component comp = container.getComponentAt(x, y); //布局控件要先判断是不是可编辑 @@ -85,39 +85,39 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { } else { FRLogger.getLogger().error("top layout is null!"); } - + return false; } - + //topLayout假如可以编辑的话就往里面添加组件 private boolean topLayoutAccept(XCreator creator, int x, int y) { //允许组件重叠,可以不判断有没有和当前控件重叠 //先计算当前控件的位置 int creatorX, creatorY; if (XCreatorUtils.getParentXLayoutContainer(creator) != null) { - Rectangle creatorRectangle = ComponentUtils.getRelativeBounds(creator); - creatorX = creatorRectangle.x; - creatorY = creatorRectangle.y; - } else { + Rectangle creatorRectangle = ComponentUtils.getRelativeBounds(creator); + creatorX = creatorRectangle.x; + creatorY = creatorRectangle.y; + } else { //这边计算得到的组件其实位置是正确的, //因为传入的x和y已经加上了宽度或者高度的一半,再减去相同的宽度和高度的一半是没区别的, // 例如高度为21,那么就是+10-10; // 高度为20,那么就是+10-10; 没区别 - int w = creator.getWidth() / 2; - int h = creator.getHeight() / 2; - creatorX = x - w; - creatorY = y - h; - } + int w = creator.getWidth() / 2; + int h = creator.getHeight() / 2; + creatorX = x - w; + creatorY = y - h; + } if (creatorX < 0 || creatorX + creator.getWidth() > container.getWidth()) { - return false; - } + return false; + } if (creatorY < 0 || creatorY + creator.getHeight() > container.getHeight()) { - return false; - } + return false; + } return x >= 0 && y >= 0 && creator.getHeight() <= container.getHeight() - && creator.getWidth() <= container.getWidth(); + && creator.getWidth() <= container.getWidth(); } - + /** * 判断是否鼠标在组件的三等分区域,如果组件在布局管理器中间,上下左右都可能会三等分 * @@ -156,10 +156,10 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { if (!creator.getTargetChildrenList().isEmpty()) { return false; } - + return !ComparatorUtils.equals(trisectAreaDirect, 0); } - + //当前绝对布局不可编辑,就当成一个控件,组件添加在周围 private boolean acceptWidget(int x, int y) { isFindRelatedComps = false; @@ -169,27 +169,27 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { XLayoutContainer parent = container.findNearestFit(); container = parent != null ? parent : container; isAdd2ParentLayout = true; - + int componentHeight = comp.getHeight(); int componentWidth = comp.getWidth(); //上半部分高度 int upHeight = (int) (componentHeight * TOP_HALF) + comp.getY(); //下半部分高度 int downHeight = (int) (componentHeight * BOTTOM_HALF) + comp.getY(); - + if (isCrossPointArea(comp, x, y)) { return canAcceptWhileCrossPoint(comp, x, y); } - + if (isTrisectionArea(comp, x, y)) { return canAcceptWhileTrisection(comp, x, y); } - + boolean horizonValid = componentWidth >= minWidth * 2 + actualVal; boolean verticalValid = componentHeight >= minHeight * 2 + actualVal; return y > upHeight && y < downHeight ? horizonValid : verticalValid; } - + /** * 组件的ComponentAdapter在添加组件时,如果发现布局管理器不为空,会继而调用该布局管理器的 * addComp方法来完成组件的具体添加。在该方法内,布局管理器可以提供额外的功能。 @@ -202,7 +202,7 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { @Override public boolean addBean(XCreator creator, int x, int y) { Rectangle rect = ComponentUtils.getRelativeBounds(container); - + int posX = x + rect.x; int posY = y + rect.y; if (!accept(creator, x, y)) { @@ -212,7 +212,7 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { ((XWidgetCreator) creator).recalculateChildrenSize(); return true; } - + @Override protected void addComp(XCreator creator, int x, int y) { if (!isAdd2ParentLayout) { @@ -220,7 +220,7 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { x = x - r.x; y = y - r.y; if (XCreatorUtils.getParentXLayoutContainer(creator) != null) { - + Rectangle creatorRectangle = ComponentUtils.getRelativeBounds(creator); x = creatorRectangle.x - r.x; y = creatorRectangle.y - r.y; @@ -231,11 +231,11 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { y = y - h; } fix(creator, x, y); - + if (creator.hasTitleStyle()) { addParentCreator(creator); } else { - container.add(creator, creator.toData().getWidgetName(),0); + container.add(creator, creator.toData().getWidgetName(), 0); } XWAbsoluteLayout layout = (XWAbsoluteLayout) container; layout.updateBoundsWidget(creator); @@ -246,7 +246,7 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { if (creator.shouldScaleCreator() || creator.hasTitleStyle()) { addParentCreator(creator); } else { - container.add(creator, creator.toData().getWidgetName(),0); + container.add(creator, creator.toData().getWidgetName(), 0); } XWFitLayout layout = (XWFitLayout) container; // 更新对应的BoundsWidget @@ -254,7 +254,7 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { updateCreatorBackBound(); } } - + private void updateCreatorBackBound() { for (int i = 0, size = container.getComponentCount(); i < size; i++) { XCreator creator = (XCreator) container.getComponent(i); @@ -262,12 +262,12 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { creator.setBackupBound(creator.getBounds()); } } - + private void addParentCreator(XCreator child) { XLayoutContainer parentPanel = child.initCreatorWrapper(child.getHeight()); - container.add(parentPanel, child.toData().getWidgetName(),0); + container.add(parentPanel, child.toData().getWidgetName(), 0); } - + /** * 新拖入组件时,计算调整其他关联组件位置大小 * @@ -292,29 +292,29 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { fixHalve(parentComp, child, x, y); } } - + /** - * 组件拖拽后调整大小 + * 组件拖拽后调整大小 * - * @param creator 组件 - */ - @Override + * @param creator 组件 + */ + @Override public void fix(XCreator creator) { WAbsoluteLayout wabs = (WAbsoluteLayout) container.toData(); fix(creator, creator.getX(), creator.getY()); wabs.setBounds(creator.toData(), creator.getBounds()); - + XWAbsoluteLayout layout = (XWAbsoluteLayout) container; layout.updateBoundsWidget(creator); - } + } - /** - * 调整组件大小到合适尺寸位置 + /** + * 调整组件大小到合适尺寸位置 * - * @param creator 组件 + * @param creator 组件 * @param x 坐标x * @param y 坐标y - */ + */ public void fix(XCreator creator, int x, int y) { int height = creator.getHeight(); int width = creator.getWidth(); @@ -323,21 +323,21 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { } else if (x + creator.getWidth() > container.getWidth()) { x = container.getWidth() - width; } - + if (y < 0) { y = container.getY(); } else if (y + creator.getHeight() > container.getHeight()) { y = container.getHeight() - height; } - + creator.setBounds(x, y, width, height); - } - - @Override - public ConstraintsGroupModel getLayoutConstraints(XCreator creator) { + } + + @Override + public ConstraintsGroupModel getLayoutConstraints(XCreator creator) { return new BoundsGroupModel((XWAbsoluteLayout) container, creator); - } - + } + @Override public GroupModel getLayoutProperties() { XWAbsoluteLayout xwAbsoluteLayout = (XWAbsoluteLayout) container; From 935b4fcca69eb3f0e5d792fccc596e45b1f23f03 Mon Sep 17 00:00:00 2001 From: plough Date: Mon, 17 Apr 2017 15:33:00 +0800 Subject: [PATCH 38/76] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=EF=BC=9B?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=E8=B0=83=E8=AF=95=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templateinfo/TemplateInfoCollector.java | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index b9b7aa194e..e5c6688ec9 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -73,8 +73,6 @@ public class TemplateInfoCollector implements Serializable { } catch (InvalidClassException ex) { // 如果 TemplateInfoCollecor 类结构有改动,则放弃之前收集的数据(下次保存时覆盖) // 这种情况主要在开发、测试过程中遇到,正式上线后不应该出现 - FRLogger.getLogger().info(ex.getMessage()); - FRLogger.getLogger().info("use a new instance"); instance = new TemplateInfoCollector(); } catch (Exception ex) { @@ -123,14 +121,6 @@ public class TemplateInfoCollector implements Serializable { private void saveInfo() { try { ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(getInfoFile())); - String log = ""; - int count = 1; - for (String key : templateInfoList.keySet()) { - String createTime = ((HashMap)templateInfoList.get(key).get("consumingMap")).get("create_time").toString(); - log += (count + ". id: " + key + " " + createTime + "\n" + templateInfoList.get(key).toString() + "\n"); - count ++; - } - FRLogger.getLogger().info("writing tplInfo: \n" + log); os.writeObject(instance); os.close(); } catch (Exception ex) { @@ -241,10 +231,7 @@ public class TemplateInfoCollector implements Serializable { String jsonProcessMap = templateInfo.get("jsonProcessMap"); if (sendSingleTemplateInfo(consumingUrl, jsonConsumingMap) && sendSingleTemplateInfo(processUrl, jsonProcessMap)) { // 清空记录 - FRLogger.getLogger().info("successfully send " + templateInfo.get("templateID")); removeFromTemplateInfoList(templateInfo.get("templateID")); - } else { - FRLogger.getLogger().info("send template info failed, will try next time, " + templateInfo.get("templateID")); } } saveInfo(); @@ -303,7 +290,6 @@ public class TemplateInfoCollector implements Serializable { private void removeFromTemplateInfoList(String key) { templateInfoList.remove(key); - FRLogger.getLogger().info(key + " is removed..."); } @SuppressWarnings("unchecked") From 0593924ef3d8c3289bee1b779997312a9908c387 Mon Sep 17 00:00:00 2001 From: plough Date: Tue, 18 Apr 2017 14:03:13 +0800 Subject: [PATCH 39/76] =?UTF-8?q?REPORT-2430=20master=E6=94=B6=E9=9B=86?= =?UTF-8?q?=E7=9A=84=E6=A8=A1=E6=9D=BF=E4=BF=A1=E6=81=AF=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=88=A0=E6=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templateinfo/TemplateInfoCollector.java | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index b9b7aa194e..e5c6688ec9 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -73,8 +73,6 @@ public class TemplateInfoCollector implements Serializable { } catch (InvalidClassException ex) { // 如果 TemplateInfoCollecor 类结构有改动,则放弃之前收集的数据(下次保存时覆盖) // 这种情况主要在开发、测试过程中遇到,正式上线后不应该出现 - FRLogger.getLogger().info(ex.getMessage()); - FRLogger.getLogger().info("use a new instance"); instance = new TemplateInfoCollector(); } catch (Exception ex) { @@ -123,14 +121,6 @@ public class TemplateInfoCollector implements Serializable { private void saveInfo() { try { ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(getInfoFile())); - String log = ""; - int count = 1; - for (String key : templateInfoList.keySet()) { - String createTime = ((HashMap)templateInfoList.get(key).get("consumingMap")).get("create_time").toString(); - log += (count + ". id: " + key + " " + createTime + "\n" + templateInfoList.get(key).toString() + "\n"); - count ++; - } - FRLogger.getLogger().info("writing tplInfo: \n" + log); os.writeObject(instance); os.close(); } catch (Exception ex) { @@ -241,10 +231,7 @@ public class TemplateInfoCollector implements Serializable { String jsonProcessMap = templateInfo.get("jsonProcessMap"); if (sendSingleTemplateInfo(consumingUrl, jsonConsumingMap) && sendSingleTemplateInfo(processUrl, jsonProcessMap)) { // 清空记录 - FRLogger.getLogger().info("successfully send " + templateInfo.get("templateID")); removeFromTemplateInfoList(templateInfo.get("templateID")); - } else { - FRLogger.getLogger().info("send template info failed, will try next time, " + templateInfo.get("templateID")); } } saveInfo(); @@ -303,7 +290,6 @@ public class TemplateInfoCollector implements Serializable { private void removeFromTemplateInfoList(String key) { templateInfoList.remove(key); - FRLogger.getLogger().info(key + " is removed..."); } @SuppressWarnings("unchecked") From fed1ceaeea3185789c5a78b17671d7f29afe7850 Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Tue, 18 Apr 2017 23:34:48 +0800 Subject: [PATCH 40/76] =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E4=B8=AD=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E4=B8=80=E4=BA=9B=E6=8E=A5=E5=8F=A3=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=88Vancharts=E6=96=B0=E6=8F=92=E4=BB=B6=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E9=9C=80=E8=A6=81=EF=BC=8Ceason=E4=B8=8EFR=E5=95=86=E8=AE=A8?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=EF=BC=8C=E5=8F=AF=E4=BB=A5=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E4=BF=AE=E6=94=B9master=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chart/gui/data/TableDataPane.java | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/TableDataPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/TableDataPane.java index a6bea6b0ca..721e7432ac 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/TableDataPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/TableDataPane.java @@ -25,6 +25,10 @@ public class TableDataPane extends FurtherBasicBeanPane{ private ChartDataPane parent; + protected AbstractTableDataContentPane getDataContentPane() { + return dataContentPane; + } + public TableDataPane(ChartDataPane parent) { this.parent = parent; initDataPane(); @@ -103,34 +107,41 @@ public class TableDataPane extends FurtherBasicBeanPane{ * @param collection 图表属性的集合 */ public void refreshContentPane(ChartCollection collection) { + refreshContentPane(getContentPane(collection.getSelectedChart().getPlot())); + } + + protected void refreshContentPane(AbstractTableDataContentPane contentPane) { if(dataContentPane != null) { remove(dataContentPane); } - dataContentPane = getContentPane(collection.getSelectedChart().getPlot()); + dataContentPane = contentPane; if(dataContentPane != null) { add(dataContentPane, BorderLayout.CENTER); } } - /** - * 更新界面属性 + * 更新界面属性 */ public void populateBean(ChartCollection collection) { if(collection == null) { return; } TableDataDefinition data = (TableDataDefinition)collection.getSelectedChart().getFilterDefinition(); + populateDSName(data); + if(dataContentPane != null) { + dataContentPane.populateBean(collection); + } + } + protected void populateDSName(TableDataDefinition dataDefinition){ + TableData tableData = null; - if(data != null) { - tableData = data.getTableData(); + if(dataDefinition != null) { + tableData = dataDefinition.getTableData(); } onSelectTableData(); checkBoxUse(); tableDataPane.populateBean(tableData); - if(dataContentPane != null) { - dataContentPane.populateBean(collection); - } } /** @@ -141,6 +152,10 @@ public class TableDataPane extends FurtherBasicBeanPane{ dataContentPane.updateBean(collection); } TopDefinition dataDefinition = (TopDefinition)collection.getSelectedChart().getFilterDefinition(); + updateDSName(dataDefinition); + } + + protected void updateDSName(TopDefinition dataDefinition) { if(dataDefinition instanceof TableDataDefinition) { TableDataWrapper tableDataWrapper = tableDataPane.getTableDataWrapper(); if (dataDefinition != null && tableDataWrapper != null){ From 23566ed6ba492fa846b83bd88241474317186e6c Mon Sep 17 00:00:00 2001 From: plough Date: Wed, 19 Apr 2017 16:39:06 +0800 Subject: [PATCH 41/76] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=E6=88=AA=E8=8E=B7=E6=A8=A1=E6=9D=BF=E4=BF=A1=E6=81=AF=E6=94=B6?= =?UTF-8?q?=E9=9B=86=E5=88=9D=E5=A7=8B=E5=8C=96=E6=97=B6=EF=BC=8C=E5=8F=AF?= =?UTF-8?q?=E8=83=BD=E5=AF=BC=E8=87=B4=E6=A8=A1=E6=9D=BF=E6=89=93=E4=B8=8D?= =?UTF-8?q?=E5=BC=80=E7=9A=84=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/templateinfo/TemplateInfoCollector.java | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index e5c6688ec9..f8e985f667 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -67,16 +67,8 @@ public class TemplateInfoCollector implements Serializable { try{ ObjectInputStream is = new ObjectInputStream(new FileInputStream(getInfoFile())); instance = (TemplateInfoCollector) is.readObject(); - } catch (FileNotFoundException ex) { - // 如果之前没有存储过,则创建新对象 + } catch (Exception ex) { instance = new TemplateInfoCollector(); - } catch (InvalidClassException ex) { - // 如果 TemplateInfoCollecor 类结构有改动,则放弃之前收集的数据(下次保存时覆盖) - // 这种情况主要在开发、测试过程中遇到,正式上线后不应该出现 - instance = new TemplateInfoCollector(); - } - catch (Exception ex) { - FRLogger.getLogger().error(ex.getMessage(), ex); } } return instance; From ffc2a088efe9c3cf3903615eea584cb1b245d0bf Mon Sep 17 00:00:00 2001 From: zack Date: Wed, 19 Apr 2017 18:46:25 +0800 Subject: [PATCH 42/76] =?UTF-8?q?REPORT-1344=20=E8=A1=A8=E5=8D=95=E7=BF=BB?= =?UTF-8?q?=E9=A1=B5=E6=94=B9=E8=89=AF=E9=87=8D=E6=96=B0=E6=8F=90=E4=BA=A4?= =?UTF-8?q?release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/designer/creator/XElementCase.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/creator/XElementCase.java b/designer_form/src/com/fr/design/designer/creator/XElementCase.java index 3a077e57a8..af268e9843 100644 --- a/designer_form/src/com/fr/design/designer/creator/XElementCase.java +++ b/designer_form/src/com/fr/design/designer/creator/XElementCase.java @@ -10,11 +10,9 @@ import com.fr.design.fun.WidgetPropertyUIProvider; import com.fr.design.fun.impl.AbstractFormElementCaseEditorProvider; import com.fr.design.gui.ilable.UILabel; import com.fr.design.mainframe.*; -import com.fr.design.mainframe.widget.editors.BooleanEditor; +import com.fr.design.mainframe.widget.editors.ElementCaseToolBarEditor; import com.fr.design.mainframe.widget.editors.PaddingMarginEditor; import com.fr.design.mainframe.widget.editors.WLayoutBorderStyleEditor; -import com.fr.design.mainframe.widget.renderer.LayoutBorderStyleRenderer; -import com.fr.design.mainframe.widget.renderer.PaddingMarginCellRenderer; import com.fr.form.FormElementCaseContainerProvider; import com.fr.form.FormElementCaseProvider; import com.fr.form.FormProvider; @@ -83,6 +81,13 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme CRPropertyDescriptor[] propertyTableEditor = new CRPropertyDescriptor[]{ new CRPropertyDescriptor("widgetName", this.data.getClass()) .setI18NName(Inter.getLocText("Form-Widget_Name")), + new CRPropertyDescriptor("visible", this.data.getClass()).setI18NName( + Inter.getLocText("FR-Designer_Widget-Visible")).setPropertyChangeListener(new PropertyChangeAdapter() { + + @Override + public void propertyChange() { + makeVisible(toData().isVisible());} + }), new CRPropertyDescriptor("borderStyle", this.data.getClass()).setEditorClass( WLayoutBorderStyleEditor.class).setI18NName( Inter.getLocText("FR-Designer-Widget_Style")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced") @@ -92,11 +97,12 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme public void propertyChange() { initStyle(); } + }), new CRPropertyDescriptor("margin", this.data.getClass()).setEditorClass(PaddingMarginEditor.class) .setI18NName(Inter.getLocText("FR-Layout_Padding")) .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), - new CRPropertyDescriptor("showToolBar", this.data.getClass()).setEditorClass(BooleanEditor.class) + new CRPropertyDescriptor("ToolBars", this.data.getClass()).setEditorClass(ElementCaseToolBarEditor.class) .setI18NName(Inter.getLocText("Form-EC_toolbar")) .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced") }; From e35d5ee8f7a04fd4a449af136bcbeaca286a2aac Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Wed, 19 Apr 2017 22:05:52 +0800 Subject: [PATCH 43/76] =?UTF-8?q?report-1945=20frm=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=A4=8D=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/FormSelectionUtils.java | 34 +++++++------------ 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java index 1978e8432b..b288ec2029 100644 --- a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java +++ b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java @@ -25,6 +25,7 @@ public class FormSelectionUtils { //组件重命名后缀 private static final String POSTFIX = "_c"; + private FormSelectionUtils() { } @@ -132,29 +133,18 @@ public class FormSelectionUtils { XLayoutContainer container = layoutAdapter.getContainer(); boolean xOut = x < 0 || x + copiedCreator.getWidth() / 2 + xoffset > container.getWidth(); boolean yOut = y < 0 || y + copiedCreator.getHeight() / 2 + yoffset > container.getHeight(); - /* - * 组件原始位置位于布局的右下角, - * 和布局右下边界线紧挨, - * 粘贴时组件在原始位置向左错开20像素。 - * x,y同时越界 - */ - if (xOut && yOut) { - //向左偏移 - x = container.getWidth() - copiedCreator.getWidth() / 2 - DELAY_X_Y - xoffset; + + y = yOut ? container.getHeight() - copiedCreator.getHeight() / 2 - yoffset : y; + boolean isEdge = (x - DELAY_X_Y == container.getWidth() - copiedCreator.getWidth() / 2 - xoffset); + if (xOut) { + if (isEdge) { + //向左偏移 + x = container.getWidth() - copiedCreator.getWidth() / 2 - DELAY_X_Y - xoffset; + } //紧贴下边界 - y = container.getHeight() - copiedCreator.getHeight() / 2 - yoffset; - return new Point(x, y); - } - /* - * 组件原始位置与布局边界距离小于20像素(下边界&右边界同时小于或者任意一个边界小于), - * 则粘贴时距离小于20像素一侧直接贴近布局边界, - * 距离大于20像素的一侧正常错开。 - * x,y中只有一个越界 - */ - if ((xOut || yOut)) { - x = xOut ? container.getWidth() - copiedCreator.getWidth() / 2 - xoffset : x; - y = yOut ? container.getHeight() - copiedCreator.getHeight() / 2 - yoffset : y; - return new Point(x, y); + else { + x = container.getWidth() - copiedCreator.getWidth() / 2 - xoffset; + } } } return new Point(x, y); From ffab31c3d9771ec7ba92104936fcdc298c17792e Mon Sep 17 00:00:00 2001 From: kerry Date: Thu, 20 Apr 2017 10:01:33 +0800 Subject: [PATCH 44/76] =?UTF-8?q?=E6=97=A0jira=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=A2=AB=E8=AF=AF=E6=9D=80=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/designer/creator/XElementCase.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/designer_form/src/com/fr/design/designer/creator/XElementCase.java b/designer_form/src/com/fr/design/designer/creator/XElementCase.java index 3a077e57a8..7eb967a9f7 100644 --- a/designer_form/src/com/fr/design/designer/creator/XElementCase.java +++ b/designer_form/src/com/fr/design/designer/creator/XElementCase.java @@ -83,6 +83,14 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme CRPropertyDescriptor[] propertyTableEditor = new CRPropertyDescriptor[]{ new CRPropertyDescriptor("widgetName", this.data.getClass()) .setI18NName(Inter.getLocText("Form-Widget_Name")), + new CRPropertyDescriptor("visible", this.data.getClass()).setI18NName( + Inter.getLocText("FR-Designer_Widget-Visible")).setPropertyChangeListener(new PropertyChangeAdapter() { + + @Override + public void propertyChange() { + makeVisible(toData().isVisible()); + } + }), new CRPropertyDescriptor("borderStyle", this.data.getClass()).setEditorClass( WLayoutBorderStyleEditor.class).setI18NName( Inter.getLocText("FR-Designer-Widget_Style")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced") From 46b6f5c880e62de970c46ba14de3b0a90b7f098f Mon Sep 17 00:00:00 2001 From: zack Date: Fri, 21 Apr 2017 13:52:21 +0800 Subject: [PATCH 45/76] =?UTF-8?q?REPORT-1344=20=E5=91=BD=E5=90=8D=E8=A7=84?= =?UTF-8?q?=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/designer/creator/XElementCase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_form/src/com/fr/design/designer/creator/XElementCase.java b/designer_form/src/com/fr/design/designer/creator/XElementCase.java index af268e9843..56aca1c43a 100644 --- a/designer_form/src/com/fr/design/designer/creator/XElementCase.java +++ b/designer_form/src/com/fr/design/designer/creator/XElementCase.java @@ -102,7 +102,7 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme new CRPropertyDescriptor("margin", this.data.getClass()).setEditorClass(PaddingMarginEditor.class) .setI18NName(Inter.getLocText("FR-Layout_Padding")) .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), - new CRPropertyDescriptor("ToolBars", this.data.getClass()).setEditorClass(ElementCaseToolBarEditor.class) + new CRPropertyDescriptor("toolBars", this.data.getClass()).setEditorClass(ElementCaseToolBarEditor.class) .setI18NName(Inter.getLocText("Form-EC_toolbar")) .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced") }; From 6e352e28f6ee49e13bb9b2bdcc11668736ed964f Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Fri, 21 Apr 2017 14:41:18 +0800 Subject: [PATCH 46/76] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=A4=8D=E7=94=A8=E4=B9=8B=E5=89=8Dmaster?= =?UTF-8?q?=E5=90=88=E5=88=B0dev=E6=97=B6=E4=B8=A2=E5=A4=B1=E7=9A=84?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BB=A5=E5=8F=8A=E7=BB=84=E4=BB=B6=E5=A4=8D?= =?UTF-8?q?=E7=94=A8=E8=BF=91=E6=9C=9Fbug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/beans/location/MoveUtils.java | 55 +---- .../beans/location/WidgetForbidWindow.java | 45 ---- .../com/fr/design/locale/designer.properties | 4 +- .../design/locale/designer_en_US.properties | 4 +- .../design/locale/designer_ja_JP.properties | 2 + .../design/locale/designer_zh_CN.properties | 2 + .../design/locale/designer_zh_TW.properties | 2 + .../layout/FRAbsoluteLayoutAdapter.java | 79 +++---- .../adapters/layout/FRFitLayoutAdapter.java | 81 +++---- .../beans/location/AccessDirection.java | 217 ++++++++---------- .../designer/beans/models/SelectionModel.java | 21 +- .../design/mainframe/FormSelectionUtils.java | 33 +-- 12 files changed, 220 insertions(+), 325 deletions(-) delete mode 100644 designer_base/src/com/fr/design/beans/location/WidgetForbidWindow.java diff --git a/designer_base/src/com/fr/design/beans/location/MoveUtils.java b/designer_base/src/com/fr/design/beans/location/MoveUtils.java index d898484464..d3dc94a08f 100644 --- a/designer_base/src/com/fr/design/beans/location/MoveUtils.java +++ b/designer_base/src/com/fr/design/beans/location/MoveUtils.java @@ -18,9 +18,7 @@ public class MoveUtils { public static final int SORPTION_UNIT = 5; private static final int EQUIDISTANTLINE_UNIT = 4; - public static WidgetForbidWindow widgetForbidWindow = new WidgetForbidWindow(); - - public static ArrayList equidistantLines = new ArrayList<>(); + private static ArrayList equidistantLines = new ArrayList<>(); private MoveUtils() { @@ -259,8 +257,7 @@ public class MoveUtils { equidistantLineInfo.setReference(bounds.y); equidistantLineInfo.setDirection(SwingConstants.BOTTOM); } - } - else if ((leftMiddleY > bounds.getY()) && (leftMiddleY < (bounds.getY() + bounds.getHeight()))){ + } else if ((leftMiddleY > bounds.getY()) && (leftMiddleY < (bounds.getY() + bounds.getHeight()))) { //当前操作rec在bounds的右侧 if (left > (bounds.getX() + bounds.getWidth())){ equidistantLineInfo.setDistance(left - (bounds.x + bounds.width)); @@ -279,13 +276,6 @@ public class MoveUtils { } } - public static void displayForbidWindow(int x, int y) { - widgetForbidWindow.showWindow(x, y); - } - - public static void hideForbidWindow() { - widgetForbidWindow.hideWindow(); - } /** * 吸附 @@ -318,25 +308,16 @@ public class MoveUtils { RectangleIterator iterator = designer.createRectangleIterator(); java.util.List cacheRecs = new ArrayList(); - //是否存在控件重叠 - boolean isWidgetsIntersects = false; - while (iterator.hasNext()) { - Rectangle bounds = iterator.nextRectangle(); - cacheRecs.add(bounds); - boolean isIntersects = operatingRectangle.intersects(bounds); - findX(px, bounds, left, right, width); - findY(py, bounds, top, bottom, height); - - if(!isParameterLayout){ - if(isIntersects) { - isWidgetsIntersects = true; - } - else{ - findEquidistantLine(bounds, left, top, height, width); - } - } - } - showForbiddenWindow(designer, x, y, isWidgetsIntersects); + while (iterator.hasNext()) { + Rectangle bounds = iterator.nextRectangle(); + cacheRecs.add(bounds); + findX(px, bounds, left, right, width); + findY(py, bounds, top, bottom, height); + + if (!isParameterLayout) { + findEquidistantLine(bounds, left, top, height, width); + } + } createXAbsorptionline(px, designer, width, cacheRecs); createYAbsorptionline(py, designer, height, cacheRecs); @@ -353,18 +334,6 @@ public class MoveUtils { return sorptionPoint; } - public static void showForbiddenWindow(RectangleDesigner designer, int x, int y, boolean isIntersects){ - if (isIntersects){ - if(designer.getDesignerLocationOnScreen() != null) { - displayForbidWindow(x + designer.getDesignerLocationOnScreen().x, y + designer.getDesignerLocationOnScreen().y); - } - designer.setWidgetsIntersected(true); - } - else{ - designer.setWidgetsIntersected(false); - hideForbidWindow(); - } - } private static void createXAbsorptionline(PlacePointing px, RectangleDesigner designer, int width, java.util.List cacheRecs) { Absorptionline line = null; diff --git a/designer_base/src/com/fr/design/beans/location/WidgetForbidWindow.java b/designer_base/src/com/fr/design/beans/location/WidgetForbidWindow.java deleted file mode 100644 index 7c645d0adb..0000000000 --- a/designer_base/src/com/fr/design/beans/location/WidgetForbidWindow.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.fr.design.beans.location; - -import com.fr.base.BaseUtils; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.icon.IconPathConstants; -import com.fr.general.Inter; - -import javax.swing.*; - -/** - * Created by zhouping on 2016/7/24. - */ -public class WidgetForbidWindow extends JWindow { - - private static final int WIDTH = 150; - private static final int HEIGHT = 20; - - private UIButton promptButton = new UIButton(Inter.getLocText("FR-Designer_Forbid_Widgets_Intersects"), BaseUtils.readIcon(IconPathConstants.FORBID_ICON_PATH)); - - /** - * 构造函数 - */ - public WidgetForbidWindow() { - this.add(promptButton); - this.setSize(WIDTH, HEIGHT); - } - - /** - * 在指定位置显示窗口, 默认将window的中心点放到指定位置上 - * - * @param x x坐标 - * @param y y坐标 - */ - public void showWindow(int x, int y) { - this.setLocation(x - WIDTH / 2, y - HEIGHT / 2); - this.setVisible(true); - } - - /** - * 隐藏当前窗口 - */ - public void hideWindow() { - this.setVisible(false); - } -} diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index e3ee039994..ac663b6d66 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -587,4 +587,6 @@ FR-Designer_Mouse_Click_Tips= FR-Designer-Move_Tab_First=move to first FR-Designer-Move_Tab_End=move to end FR-Designer-Move_Tab_Next=move to next -FR-Designer-Move_Tab_Prev=move to previous \ No newline at end of file +FR-Designer-Move_Tab_Prev=move to previous +FR-Designer_Too_Large_To_Paste=too large to paste +FR-Designer_Too_Small_To_Paste=Too small to paste diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index a86a7fb14f..94cba14c37 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -587,4 +587,6 @@ FR-Designer_Mouse_Click_Tips=The background of the mouse to click the button, in FR-Designer-Move_Tab_First=move to first FR-Designer-Move_Tab_End=move to end FR-Designer-Move_Tab_Next=move to next -FR-Designer-Move_Tab_Prev=move to previous \ No newline at end of file +FR-Designer-Move_Tab_Prev=move to previous +FR-Designer_Too_Large_To_Paste=Too large to paste! +FR-Designer_Too_Small_To_Paste=Too small to paste! diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index 943cf181d1..214978ed57 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -553,5 +553,7 @@ FR-Designer_Background_Clear= FR-Designer_Background_Image_Select= FR-Designer_Initial_Background_Tips= FR-Designer_Mouse_Move_Tips= +FR-Designer_Too_Large_To_Paste=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30B5\u30A4\u30BA\u306F\u30DC\u30FC\u30C0\u30FC\u306B\u8D85\u3048\u305F\u306E\u3067\u3001\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\uFF01 +FR-Designer_Too_Small_To_Paste=\u8A72\u5F53\u51E6\u306B\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\u3001\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30B5\u30A4\u30BA\u306F\u9AD8\u3059\u304E\uFF01 FR-Designer_Mouse_Click_Tips= FR-Designer_Plugin_Should_Update_Please_Contact_Developer= diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index 726a6d0f61..93e219698b 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -588,3 +588,5 @@ FR-Designer_Background_Image_Select=\u9009\u62E9\u56FE\u7247 FR-Designer_Initial_Background_Tips=\u6309\u94AE\u7684\u521D\u59CB\u80CC\u666F FR-Designer_Mouse_Move_Tips=\u9F20\u6807\u79FB\u52A8\u5230\u6309\u94AE\u4E0A\u7684\u80CC\u666F\uFF0C\u82E5\u65E0\u5219\u4E0D\u6539\u53D8\u80CC\u666F FR-Designer_Mouse_Click_Tips=\u9F20\u6807\u70B9\u51FB\u6309\u94AE\u65F6\u80CC\u666F\uFF0C\u82E5\u65E0\u5219\u4E0D\u6539\u53D8\u80CC\u666F +FR-Designer_Too_Large_To_Paste=\u7EC4\u4EF6\u5927\u5C0F\u8D85\u51FA\u8FB9\u754C\uFF0C\u65E0\u6CD5\u7C98\u8D34\uFF01 +FR-Designer_Too_Small_To_Paste=\u6B64\u5904\u65E0\u6CD5\u7C98\u8D34\uFF0C\u5C0F\u4E8E\u7EC4\u4EF6\u6700\u5C0F\u9AD8\u5EA6\uFF01 diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index f8b28dba33..bb14426648 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -573,6 +573,8 @@ FR-Designer_Background_Gradient_Color= FR-Designer_Background_Image= FR-Designer_Background_Clear= FR-Designer_Background_Image_Select= +FR-Designer_Too_Large_To_Paste=\u7D44\u4EF6\u5927\u5C0F\u8D85\u51FA\u908A\u754C\uFF0C\u7121\u6CD5\u7C98\u8CBC\uFF01 +FR-Designer_Too_Small_To_Paste=\u6B64\u8655\u7121\u6CD5\u7C98\u8CBC\uFF0C\u5C0F\u65BC\u7D44\u4EF6\u6700\u5C0F\u9AD8\u5EA6\uFF01 FR-Designer_Initial_Background_Tips= FR-Designer_Mouse_Move_Tips= FR-Designer_Mouse_Click_Tips= \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java index 7810fc9a6f..539e60450f 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java @@ -1,7 +1,5 @@ package com.fr.design.designer.beans.adapters.layout; -import java.awt.*; - import com.fr.design.beans.GroupModel; import com.fr.design.designer.beans.ConstraintsGroupModel; import com.fr.design.designer.beans.HoverPainter; @@ -9,13 +7,14 @@ import com.fr.design.designer.beans.painters.FRAbsoluteLayoutPainter; import com.fr.design.designer.creator.*; import com.fr.design.designer.properties.BoundsGroupModel; import com.fr.design.designer.properties.FRAbsoluteLayoutPropertiesGroupModel; -import com.fr.form.ui.container.WAbsoluteLayout; import com.fr.design.utils.ComponentUtils; import com.fr.design.utils.gui.LayoutUtils; +import com.fr.form.ui.container.WAbsoluteLayout; import com.fr.general.ComparatorUtils; -import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.general.FRLogger; +import java.awt.*; + public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { //是不是添加到父容器上 private boolean isAdd2ParentLayout = false; @@ -74,48 +73,39 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { XLayoutContainer topLayout = XCreatorUtils.getHotspotContainer((XCreator)comp).getTopLayout(); if(topLayout != null){ if (topLayout.isEditable()){ - return topLayoutAccept(creator, x, y, topLayout); + return topLayoutAccept(creator, x, y); } //绝对布局嵌套,处于内层,不可编辑,不添加,topLayout只能获取到最外层可编辑的布局 else if (((XLayoutContainer)topLayout.getParent()).acceptType(XWAbsoluteLayout.class)) { return false; + } else { + return acceptWidget(x, y); } - else { - return acceptWidget(creator, x, y); - } - } - else{ + } else { FRLogger.getLogger().error("top layout is null!"); } return false; } - //toplayout假如可以编辑的话就往里面添加组件 - private boolean topLayoutAccept(XCreator creator, int x, int y, XLayoutContainer topLayout) { - //判断有没有和当前控件重叠 - //先计算当前控件的位置 - int creatorX, creatorY; - if (XCreatorUtils.getParentXLayoutContainer(creator) != null) { - + //topLayout假如可以编辑的话就往里面添加组件 + private boolean topLayoutAccept(XCreator creator, int x, int y) { + //允许组件重叠,可以不判断有没有和当前控件重叠 + //先计算当前控件的位置 + int creatorX, creatorY; + if (XCreatorUtils.getParentXLayoutContainer(creator) != null) { Rectangle creatorRectangle = ComponentUtils.getRelativeBounds(creator); creatorX = creatorRectangle.x; creatorY = creatorRectangle.y; } else { + //这边计算得到的组件其实位置是正确的, + //因为传入的x和y已经加上了宽度或者高度的一半,再减去相同的宽度和高度的一半是没区别的, + // 例如高度为21,那么就是+10-10; + // 高度为20,那么就是+10-10; 没区别 int w = creator.getWidth() / 2; int h = creator.getHeight() / 2; creatorX = x - w; creatorY = y - h; - } - //再判断和布局中其他控件重叠 - Rectangle curRec = new Rectangle(creatorX, creatorY, creator.getWidth(), creator.getHeight()); - WAbsoluteLayout wAbsoluteLayout = (WAbsoluteLayout)topLayout.toData(); - for (int i = 0, count = wAbsoluteLayout.getWidgetCount(); i < count; i++) { - BoundsWidget temp = (BoundsWidget) wAbsoluteLayout.getWidget(i); - Rectangle rectangle = temp.getBounds(); - if (curRec.intersects(rectangle)){ - return false; - } } if (creatorX < 0 || creatorX + creator.getWidth() > container.getWidth()) { return false; @@ -168,16 +158,15 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { return !ComparatorUtils.equals(trisectAreaDirect, 0); } - //当前绝对布局不可编辑,就当成一个控件,组件添加在周围 - private boolean acceptWidget(XCreator creator, int x, int y){ - isFindRelatedComps = false; - //拖入组件判断时,先判断是否为交叉点区域,其次三等分区域,再次平分区域 - Component comp = container.getComponentAt(x, y); - boolean isMatchEdge = false; - //如果当前处于边缘地带, 那么就把他贴到父容器上 - XLayoutContainer parent = container.findNearestFit(); - container = parent != null ? parent : container; - isAdd2ParentLayout = true; + //当前绝对布局不可编辑,就当成一个控件,组件添加在周围 + private boolean acceptWidget(int x, int y) { + isFindRelatedComps = false; + //拖入组件判断时,先判断是否为交叉点区域,其次三等分区域,再次平分区域 + Component comp = container.getComponentAt(x, y); + //如果当前处于边缘地带, 那么就把他贴到父容器上 + XLayoutContainer parent = container.findNearestFit(); + container = parent != null ? parent : container; + isAdd2ParentLayout = true; int componentHeight = comp.getHeight(); int componentWidth = comp.getWidth(); @@ -244,7 +233,7 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { if (creator.hasTitleStyle()) { addParentCreator(creator); } else { - container.add(creator, creator.toData().getWidgetName()); + container.add(creator, creator.toData().getWidgetName(),0); } XWAbsoluteLayout layout = (XWAbsoluteLayout) container; layout.updateBoundsWidget(creator); @@ -255,7 +244,7 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { if (creator.shouldScaleCreator() || creator.hasTitleStyle()) { addParentCreator(creator); } else { - container.add(creator, creator.toData().getWidgetName()); + container.add(creator, creator.toData().getWidgetName(),0); } XWFitLayout layout = (XWFitLayout) container; // 更新对应的BoundsWidget @@ -274,7 +263,7 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { private void addParentCreator(XCreator child) { XLayoutContainer parentPanel = child.initCreatorWrapper(child.getHeight()); - container.add(parentPanel, child.toData().getWidgetName()); + container.add(parentPanel, child.toData().getWidgetName(),0); } /** @@ -325,17 +314,15 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { int height = creator.getHeight(); int width = creator.getWidth(); if (x < 0) { - width += x; - x = 0; + x = container.getX(); } else if (x + creator.getWidth() > container.getWidth()) { - width = container.getWidth() - x; + x = container.getWidth() - width; } if (y < 0) { - height += y; - y = 0; + y = container.getY(); } else if (y + creator.getHeight() > container.getHeight()) { - height = container.getHeight() - y; + y = container.getHeight() - height; } creator.setBounds(x, y, width, height); diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java index 7401b8d077..3a030f7f2b 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java @@ -3,12 +3,6 @@ */ package com.fr.design.designer.beans.adapters.layout; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.Rectangle; -import java.util.ArrayList; -import java.util.List; - import com.fr.design.beans.GroupModel; import com.fr.design.designer.beans.ConstraintsGroupModel; import com.fr.design.designer.beans.HoverPainter; @@ -22,14 +16,16 @@ import com.fr.design.designer.creator.cardlayout.XWCardMainBorderLayout; import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; import com.fr.design.designer.properties.FRFitLayoutConstraints; import com.fr.design.designer.properties.FRFitLayoutPropertiesGroupModel; -import com.fr.design.file.HistoryTemplateListPane; -import com.fr.design.mainframe.JForm; import com.fr.design.utils.ComponentUtils; import com.fr.form.ui.LayoutBorderStyle; +import com.fr.form.ui.container.WAbsoluteLayout; import com.fr.form.ui.container.WLayout; import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; import com.fr.general.ComparatorUtils; -import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; + +import java.awt.*; +import java.util.ArrayList; +import java.util.List; /** * 自适应布局的容器适配器 @@ -52,6 +48,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { public void setEdit(boolean edit) { isEdit = edit; } + /** * 构造函数 * @@ -134,7 +131,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { isFindRelatedComps = false; //拖入组件判断时,先判断是否为交叉点区域,其次三等分区域,再次平分区域 Component comp = container.getComponentAt(x, y); - if (checkInterval(comp)) { + if (comp == null || checkInterval(comp)) { return false; } //如果当前处于边缘地带, 那么就把他贴到父容器上 @@ -269,25 +266,14 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { return super.isCrossPointArea(currentComp, x, y); } - protected void initCompsList() { - super.initCompsList(); - } - - protected void clearCompsList() { - super.clearCompsList(); - } - protected Rectangle getLayoutBound(XWCardMainBorderLayout mainLayout){ + protected Rectangle getLayoutBound(XWCardMainBorderLayout mainLayout) { return mainLayout.getBounds(); } private Rectangle adjustBackupBound(Rectangle backupBound, XWCardMainBorderLayout mainLayout) { - // 参数界面高度对纵坐标产生的影响 - JForm jform = (JForm) (HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); - if (jform.getFormDesign().getParaComponent() != null) { - backupBound.y -= jform.getFormDesign().getParaHeight(); - } - + // zhouping: REPORT-2334 表单tab布局中图表放大缩小会明显 + // 这边不需要单独处理参数面板高度了,下面的方法中获取的是XWCardMainBorderLayout相对坐标 Rectangle rec = getLayoutBound(mainLayout); // XWTabLayout里面的横纵坐标收到外层XWCardMainBorderLayout的横纵坐标影响 // 减掉之后可以按照它原来的逻辑执行 @@ -353,13 +339,13 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { * 拖拽控件边框后,根据控件的大小尺寸,进行相关组件的调整 * * @param backupBound 边界备份 - * @param bounds 组件边界 - * @param xCreator 组件 - * @param row 选中的行 - * @param difference 偏移量 + * @param bounds 组件边界 + * @param xCreator 组件 + * @param row 选中的行 + * @param difference 偏移量 */ public void calculateBounds(Rectangle backupBound, Rectangle bounds, XCreator xCreator, int row, int difference) { - Rectangle rc = new Rectangle(0,0,0,0); + Rectangle rc = new Rectangle(0, 0, 0, 0); XLayoutContainer parent = XCreatorUtils.getParentXLayoutContainer(xCreator); if (parent != null) { Rectangle rec = ComponentUtils.getRelativeBounds(parent); @@ -370,17 +356,17 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { //处理左右延伸 switch (row) { case 0: - if (backupBound.width + backupBound.x == container.getWidth() - margin.getRight() +rc.x) { + if (backupBound.width + backupBound.x == container.getWidth() - margin.getRight() + rc.x) { x += difference; } break; case 1: - if(backupBound.y + backupBound.height == container.getHeight() - margin.getBottom() +rc.y){ + if (backupBound.y + backupBound.height == container.getHeight() - margin.getBottom() + rc.y) { y += difference; } break; } - bounds.setLocation(x,y); + bounds.setLocation(x, y); xCreator.setBackupBound(backupBound); xCreator.setBounds(bounds); this.fix(xCreator); @@ -424,7 +410,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { // 根据需要依附的位置调整拖拽的坐标值 private int adjustCoordinateByDependingLine(int coordinate, int[] coordinates) { - if(!isEdit) { + if (!isEdit) { for (int i = 0; i < coordinates.length; i++) { if (coordinate == coordinates[i]) { continue; @@ -440,7 +426,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { // 根据需要依附的位置调整拖拽的距离 private int adjustDiffByDependingLine(int coordinate, int[] coordinates, int diff) { - if(!isEdit) { + if (!isEdit) { for (int i = 0; i < coordinates.length; i++) { if (coordinate + diff > coordinates[i] - DEPENDING_SCOPE && coordinate + diff < coordinates[i] + DEPENDING_SCOPE) { diff = coordinates[i] - coordinate; @@ -558,8 +544,8 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { difference = Math.max(difference, minWidth - getMinWidth(leftComps)); } //重新计算左右两侧组件size、point - if (CalculateLefttRelatComponent(difference)) { - CalculateRightRelatComponent(objx + difference, -difference); + if (calculateLefttRelatComponent(difference)) { + calculateRightRelatComponent(objx + difference, -difference); } } @@ -674,10 +660,9 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { difference = Math.max(difference, minHeight - getMinHeight(upComps)); } //重新计算上下两侧组件size、point - if (CalculateUpRelatComponent(difference)) { - CalculateDownRelatComponent(objY + difference, -difference); + if (calculateUpRelatComponent(difference)) { + calculateDownRelatComponent(objY + difference, -difference); } - ; } /** @@ -757,13 +742,13 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { int height = creatorHeight; calculateRelatedComponent(x, y, width, height); if (!rightComps.isEmpty() && getAllHeight(rightComps) == height) { - CalculateRightRelatComponent(x, width + actualVal); + calculateRightRelatComponent(x, width + actualVal); } else if (!leftComps.isEmpty() && getAllHeight(leftComps) == height) { - CalculateLefttRelatComponent(width + actualVal); + calculateLefttRelatComponent(width + actualVal); } else if (!downComps.isEmpty() && getAllWidth(downComps) == width) { - CalculateDownRelatComponent(y, height + actualVal); + calculateDownRelatComponent(y, height + actualVal); } else if (!upComps.isEmpty() && getAllWidth(upComps) == width) { - CalculateUpRelatComponent(height + actualVal); + calculateUpRelatComponent(height + actualVal); } else { // 由于布局三等分的存在,可能会出现删除组件时,找不到关联的组件填充,此时特殊处理 calculateNoRelatedComponent(x, y, width, height); @@ -1026,7 +1011,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { setAdjustedSize(tabLayout, offset, isHor); for (int m = 0; m < tabLayout.getComponentCount(); m++) { XCreator childCreator = tabLayout.getXCreator(m); - BoundsWidget wgt = (BoundsWidget) tabLayout.toData().getBoundsWidget(childCreator.toData()); + WAbsoluteLayout.BoundsWidget wgt = (WAbsoluteLayout.BoundsWidget) tabLayout.toData().getBoundsWidget(childCreator.toData()); wgt.setBounds(tabLayout.getComponent(m).getBounds()); } adjustCreatorsSize(percent, tabLayout, isHor); @@ -1069,7 +1054,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { * @param objX 调整后的坐标x * @param objWidth 调整后的宽度 */ - protected void CalculateRightRelatComponent(int objX, int objWidth) { + protected void calculateRightRelatComponent(int objX, int objWidth) { int count = rightComps.size(); for (int i = 0; i < count; i++) { XCreator creator = (XCreator) rightComps.get(i); @@ -1109,7 +1094,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { /** * 删除或拉伸控件左边框时 调整左侧的组件位置大小; */ - protected boolean CalculateLefttRelatComponent(int objWidth) { + protected boolean calculateLefttRelatComponent(int objWidth) { if (isBeyondAdjustWidthScope(objWidth)) { return false; } @@ -1127,7 +1112,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { /** * 删除或拉伸下边框 调整下方的组件位置大小 */ - protected void CalculateDownRelatComponent(int objY, int objHeight) { + protected void calculateDownRelatComponent(int objY, int objHeight) { int count = downComps.size(); for (int i = 0; i < count; i++) { XCreator creator = (XCreator) downComps.get(i); @@ -1167,7 +1152,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { /** * 删除或拉伸上边框 调整上方的组件位置大小 */ - protected boolean CalculateUpRelatComponent(int objHeight) { + protected boolean calculateUpRelatComponent(int objHeight) { if (isBeyondAdjustHeightScope(objHeight)) { return false; } diff --git a/designer_form/src/com/fr/design/designer/beans/location/AccessDirection.java b/designer_form/src/com/fr/design/designer/beans/location/AccessDirection.java index 572ac721e9..3538d2fd9f 100644 --- a/designer_form/src/com/fr/design/designer/beans/location/AccessDirection.java +++ b/designer_form/src/com/fr/design/designer/beans/location/AccessDirection.java @@ -27,32 +27,30 @@ public abstract class AccessDirection implements Direction { abstract int getCursor(); - protected abstract Rectangle getDraggedBounds(int dx, int dy, Rectangle current_bounds, FormDesigner designer, - Rectangle oldbounds); - - protected int[] sorption(int x, int y,Rectangle current_bounds, FormDesigner designer) { - // 自适应布局不需要吸附线,但需要对齐线,对齐线后面处理 - if (!designer.hasWAbsoluteLayout()) { - designer.getStateModel().setEquidistantLine(null); - designer.getStateModel().setXAbsorptionline(null); - designer.getStateModel().setYAbsorptionline(null); - return new int[] { x, y }; - } else { - int posy = current_bounds.y; - - Point relativePoint = getRelativePoint(x, y, current_bounds,designer); - sorptionPoint(relativePoint,current_bounds, designer); - return new int[] { relativePoint.x, relativePoint.y }; - } + protected abstract Rectangle getDraggedBounds(int dx, int dy, Rectangle currentBounds, FormDesigner designer, + Rectangle oldBounds); + + protected int[] sorption(int x, int y, Rectangle currentBounds, FormDesigner designer) { + // 自适应布局不需要吸附线,但需要对齐线,对齐线后面处理 + if (!designer.hasWAbsoluteLayout()) { + designer.getStateModel().setEquidistantLine(null); + designer.getStateModel().setXAbsorptionline(null); + designer.getStateModel().setYAbsorptionline(null); + return new int[]{x, y}; + } else { + Point relativePoint = getRelativePoint(x, y, currentBounds, designer); + sorptionPoint(relativePoint, currentBounds, designer); + return new int[]{relativePoint.x, relativePoint.y}; + } - } + } - protected Point getRelativePoint(int x, int y, Rectangle current_bounds,FormDesigner designer) { - if (x < 0) { - x = 0; - } else if (x > designer.getRootComponent().getWidth() && designer.getSelectionModel().hasSelectionComponent()) { - x = designer.getRootComponent().getWidth(); - } + protected Point getRelativePoint(int x, int y, Rectangle currentBounds, FormDesigner designer) { + if (x < 0) { + x = 0; + } else if (x > designer.getRootComponent().getWidth() && designer.getSelectionModel().hasSelectionComponent()) { + x = designer.getRootComponent().getWidth(); + } //参数面板可以无下限拉长 if (y < 0) { y = 0; @@ -63,112 +61,101 @@ public abstract class AccessDirection implements Direction { return new Point(x, y); } - protected void sorptionPoint(Point point, Rectangle current_bounds,FormDesigner designer) { - boolean findInX = current_bounds.getWidth() <= MoveUtils.SORPTION_UNIT ? true : false; - boolean findInY = current_bounds.getHeight() <= MoveUtils.SORPTION_UNIT ? true : false; - WAbsoluteLayout layout =getLayout(designer); - FormSelection selection = designer.getSelectionModel().getSelection(); - boolean isWidgetsIntersect = false; - for (int i = 0, count = layout.getWidgetCount(); i < count; i++) { - BoundsWidget temp = (BoundsWidget) layout.getWidget(i); - if (!temp.isVisible() || selection.contains(temp.getWidget())) { - continue; - } - Rectangle bounds = getWidgetRelativeBounds(temp.getBounds(), selection); - if (!findInX) { - int x1 = bounds.x; - if (Math.abs(x1 - point.x) <= MoveUtils.SORPTION_UNIT) { - point.x = x1; - findInX = true; - } - int x2 = bounds.x + bounds.width; - if (Math.abs(x2 - point.x) <= MoveUtils.SORPTION_UNIT) { - point.x = x2; - findInX = true; - } - } - if (!findInY) { - int y1 = bounds.y; - if (Math.abs(y1 - point.y) <= MoveUtils.SORPTION_UNIT) { - point.y = y1; - findInY = true; - } - int y2 = bounds.y + bounds.height; - if (Math.abs(y2 - point.y) <= MoveUtils.SORPTION_UNIT) { - point.y = y2; - findInY = true; - } + protected void sorptionPoint(Point point, Rectangle currentBounds, FormDesigner designer) { + boolean findInX = currentBounds.getWidth() <= MoveUtils.SORPTION_UNIT; + boolean findInY = currentBounds.getHeight() <= MoveUtils.SORPTION_UNIT; + WAbsoluteLayout layout = getLayout(designer); + FormSelection selection = designer.getSelectionModel().getSelection(); + for (int i = 0, count = layout.getWidgetCount(); i < count; i++) { + BoundsWidget temp = (BoundsWidget) layout.getWidget(i); + if (!temp.isVisible() || selection.contains(temp.getWidget())) { + continue; + } + Rectangle bounds = getWidgetRelativeBounds(temp.getBounds(), selection); + if (!findInX) { + int x1 = bounds.x; + if (Math.abs(x1 - point.x) <= MoveUtils.SORPTION_UNIT) { + point.x = x1; + findInX = true; + } + int x2 = bounds.x + bounds.width; + if (Math.abs(x2 - point.x) <= MoveUtils.SORPTION_UNIT) { + point.x = x2; + findInX = true; + } + } + if (!findInY) { + int y1 = bounds.y; + if (Math.abs(y1 - point.y) <= MoveUtils.SORPTION_UNIT) { + point.y = y1; + findInY = true; + } + int y2 = bounds.y + bounds.height; + if (Math.abs(y2 - point.y) <= MoveUtils.SORPTION_UNIT) { + point.y = y2; + findInY = true; + } } if (findInX && findInY) { break; } - if (current_bounds.intersects(bounds) && !(layout instanceof WParameterLayout)){ - isWidgetsIntersect = true; - } - } - processRectangleIntersects(designer, point.x, point.y, isWidgetsIntersect); - setDesignerStateModelProperties(designer, findInX, findInY, current_bounds, point); - } + } + setDesignerStateModelProperties(designer, findInX, findInY, currentBounds, point); + } - private void setDesignerStateModelProperties (FormDesigner designer, boolean findInX, boolean findInY, Rectangle current_bounds, Point point) { - designer.getStateModel().setXAbsorptionline(findInX && current_bounds.getWidth() > MoveUtils.SORPTION_UNIT ? Absorptionline.createXAbsorptionline(point.x) : null); - designer.getStateModel().setYAbsorptionline(findInY && current_bounds.getHeight() > MoveUtils.SORPTION_UNIT ? Absorptionline.createYAbsorptionline(point.y) : null); - designer.getStateModel().setEquidistantLine(null); - } + private void setDesignerStateModelProperties(FormDesigner designer, boolean findInX, boolean findInY, Rectangle + currentBounds, Point point) { + designer.getStateModel().setXAbsorptionline(findInX && currentBounds.getWidth() > MoveUtils.SORPTION_UNIT ? Absorptionline.createXAbsorptionline(point.x) : null); + designer.getStateModel().setYAbsorptionline(findInY && currentBounds.getHeight() > MoveUtils.SORPTION_UNIT ? Absorptionline.createYAbsorptionline(point.y) : null); + designer.getStateModel().setEquidistantLine(null); + } - private Rectangle getWidgetRelativeBounds(Rectangle bounds, FormSelection selection){ - Rectangle relativeRec = new Rectangle(bounds.x, bounds.y, bounds.width, bounds.height); - XLayoutContainer parent = XCreatorUtils.getParentXLayoutContainer(selection.getSelectedCreator()); - if (parent == null) { - return relativeRec; - } - Rectangle rec = ComponentUtils.getRelativeBounds(parent); - relativeRec.x += rec.x; - relativeRec.y += rec.y; - return relativeRec; - } + private Rectangle getWidgetRelativeBounds(Rectangle bounds, FormSelection selection) { + Rectangle relativeRec = new Rectangle(bounds.x, bounds.y, bounds.width, bounds.height); + XLayoutContainer parent = XCreatorUtils.getParentXLayoutContainer(selection.getSelectedCreator()); + if (parent == null) { + return relativeRec; + } + Rectangle rec = ComponentUtils.getRelativeBounds(parent); + relativeRec.x += rec.x; + relativeRec.y += rec.y; + return relativeRec; + } - private void processRectangleIntersects(FormDesigner designer, int x, int y, boolean isIntersects){ - if(isIntersects){ - if(designer.getLocationOnScreen() != null) { - MoveUtils.displayForbidWindow(x + designer.getLocationOnScreen().x, y + designer.getLocationOnScreen().y); - } - designer.setWidgetsIntersect(true); - } - else{ - MoveUtils.hideForbidWindow(); - designer.setWidgetsIntersect(false); - } - } private WAbsoluteLayout getLayout(final FormDesigner designer){ XLayoutContainer formLayoutContainer = (XLayoutContainer) XCreatorUtils.createXCreator( designer.getTarget().getContainer()); WAbsoluteLayout layout; - if (formLayoutContainer.acceptType(XWBorderLayout.class)){//看起来这边的作用应该是为了区别cpt(得到XWParameterLayout)还是frm(得到XWBorderLayout)的参数界面 - Container container = designer.getSelectionModel().getSelection().getSelectedCreator().getParent(); - if(container instanceof XWAbsoluteLayout){ - layout = ((XWAbsoluteLayout)container).toData(); - } - else { - layout = (WAbsoluteLayout) designer.getParaComponent().toData(); - } - } else{ + if (formLayoutContainer.acceptType(XWBorderLayout.class)) {//看起来这边的作用应该是为了区别cpt(得到XWParameterLayout)还是frm(得到XWBorderLayout)的参数界面 + Container container = designer.getSelectionModel().getSelection().getSelectedCreator().getParent(); + if (container instanceof XWAbsoluteLayout) { + layout = ((XWAbsoluteLayout) container).toData(); + } else { + layout = (WAbsoluteLayout) designer.getParaComponent().toData(); + } + } else { layout = (WAbsoluteLayout) designer.getTarget().getContainer(); } - return layout; + return layout; } - /** - * 拖拽 - * @param dx 坐标x - * @param dy 坐标y - * @param designer 设计界面 - */ - public void drag(int dx, int dy, FormDesigner designer) { - Rectangle rec = getDraggedBounds(dx, dy, designer.getSelectionModel().getSelection().getRelativeBounds(), designer, designer.getSelectionModel().getSelection().getBackupBounds()); + /** + * 拖拽 + * + * @param dx 坐标x + * @param dy 坐标y + * @param designer 设计界面 + */ + public void drag(int dx, int dy, FormDesigner designer) { + Rectangle rec = getDraggedBounds(dx, dy, designer.getSelectionModel().getSelection().getRelativeBounds(), designer, designer.getSelectionModel().getSelection().getBackupBounds()); + if (rec != null) { + designer.getSelectionModel().getSelection().setSelectionBounds(rec, designer); + } else { + return; + } //设定控件最小高度21,因每次拖曳至少移动1,防止控件高度等于21时,拖曳导致rec.y的变化使得控件不停的向上或向下移动。 if(rec.height == MINHEIGHT){ ymin = rec.y; @@ -191,10 +178,8 @@ public abstract class AccessDirection implements Direction { rec.width = MINWIDTH; rec.x = xmin; } - if(rec != null) { - designer.getSelectionModel().getSelection().setSelectionBounds(rec, designer); - } - } + + } /** * 更新鼠标指针形状 diff --git a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java index 5bd159a43e..13eaa18ac3 100644 --- a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java +++ b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java @@ -27,7 +27,7 @@ import java.util.ArrayList; public class SelectionModel { //被粘贴组件在所选组件位置处往下、往右各错开20像素。执行多次粘贴时,在上一次粘贴的位置处错开20像素。 private static final int DELTA_X_Y = 20; //粘贴时候的偏移距离 - private static final double OFFSET_RELATIVE = 0.78; + private static final double OFFSET_RELATIVE = 0.80; private static FormSelection clipboard = new FormSelection(); private FormDesigner designer; private FormSelection selection; @@ -142,14 +142,29 @@ public class SelectionModel { int leftUpY = container.toData().getMargin().getTop() + 1; //选中第一个坐标点坐在的组件 selection.setSelectedCreator((XCreator) container.getComponentAt(leftUpX, leftUpY)); - pasteFromClipBoard(); + Rectangle rectangle = selection.getRelativeBounds(); + if (hasSelectedPasteSource()) { + selectedPaste(); + } else { + FormSelectionUtils.paste2Container(designer, container, clipboard, + rectangle.x + rectangle.width / 2, + rectangle.y + DELTA_X_Y); + } } else { //自适应布局编辑器内部左上角第一个坐标点 int leftUpX = designer.getRootComponent().toData().getMargin().getLeft() + 1; int leftUpY = designer.getRootComponent().toData().getMargin().getTop() + 1; //选中第一个坐标点坐在的组件 selection.setSelectedCreator((XCreator) designer.getRootComponent().getComponentAt(leftUpX, leftUpY)); - pasteFromClipBoard(); + Rectangle rectangle = selection.getRelativeBounds(); + if (hasSelectedPasteSource()) { + selectedPaste(); + } else { + FormSelectionUtils.paste2Container(designer, designer.getRootComponent(), + clipboard, + rectangle.x + rectangle.width / 2, + rectangle.y + DELTA_X_Y); + } } } else { //绝对布局 diff --git a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java index 1978e8432b..90945b1e80 100644 --- a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java +++ b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java @@ -132,29 +132,18 @@ public class FormSelectionUtils { XLayoutContainer container = layoutAdapter.getContainer(); boolean xOut = x < 0 || x + copiedCreator.getWidth() / 2 + xoffset > container.getWidth(); boolean yOut = y < 0 || y + copiedCreator.getHeight() / 2 + yoffset > container.getHeight(); - /* - * 组件原始位置位于布局的右下角, - * 和布局右下边界线紧挨, - * 粘贴时组件在原始位置向左错开20像素。 - * x,y同时越界 - */ - if (xOut && yOut) { - //向左偏移 - x = container.getWidth() - copiedCreator.getWidth() / 2 - DELAY_X_Y - xoffset; + + y = yOut ? container.getHeight() - copiedCreator.getHeight() / 2 - yoffset : y; + boolean isEdge = (x - DELAY_X_Y == container.getWidth() - copiedCreator.getWidth() / 2 - xoffset); + if (xOut) { + if (isEdge) { + //向左偏移 + x = container.getWidth() - copiedCreator.getWidth() / 2 - DELAY_X_Y - xoffset; + } //紧贴下边界 - y = container.getHeight() - copiedCreator.getHeight() / 2 - yoffset; - return new Point(x, y); - } - /* - * 组件原始位置与布局边界距离小于20像素(下边界&右边界同时小于或者任意一个边界小于), - * 则粘贴时距离小于20像素一侧直接贴近布局边界, - * 距离大于20像素的一侧正常错开。 - * x,y中只有一个越界 - */ - if ((xOut || yOut)) { - x = xOut ? container.getWidth() - copiedCreator.getWidth() / 2 - xoffset : x; - y = yOut ? container.getHeight() - copiedCreator.getHeight() / 2 - yoffset : y; - return new Point(x, y); + else { + x = container.getWidth() - copiedCreator.getWidth() / 2 - xoffset; + } } } return new Point(x, y); From 92d1f8209cce7d6e95de62b02a2d75d95d34392f Mon Sep 17 00:00:00 2001 From: plough Date: Fri, 21 Apr 2017 15:43:47 +0800 Subject: [PATCH 47/76] =?UTF-8?q?REPORT-2368=20=E9=A2=84=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E6=8E=A7=E4=BB=B6=E8=AE=BE=E7=BD=AE=E4=BA=86=E4=B8=8D=E5=8F=AF?= =?UTF-8?q?=E8=A7=81=EF=BC=8C=E5=9C=A8=E5=8F=82=E6=95=B0=E9=9D=A2=E6=9D=BF?= =?UTF-8?q?=E4=B8=8A=E8=BF=98=E6=98=AF=E5=8F=AF=E8=A7=81=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/widget/CellWidgetCardPane.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/designer/src/com/fr/design/widget/CellWidgetCardPane.java b/designer/src/com/fr/design/widget/CellWidgetCardPane.java index 8ba9d32350..12f3137b40 100644 --- a/designer/src/com/fr/design/widget/CellWidgetCardPane.java +++ b/designer/src/com/fr/design/widget/CellWidgetCardPane.java @@ -88,15 +88,6 @@ public class CellWidgetCardPane extends BasicPane { this.tabbedPane.setEnabled(true); } - attriTabPane.remove(widgetPropertyPane); - widgetPropertyPane = new BasicWidgetPropertySettingPane(); - JPanel northPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - northPane.setBorder(BorderFactory.createEmptyBorder(5, 8, 0, 8)); - JPanel basic = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Form_Basic_Properties")); - northPane.add(basic); - basic.add(widgetPropertyPane); - attriTabPane.add(northPane, BorderLayout.NORTH); - WidgetDefinePaneFactory.RN rn = WidgetDefinePaneFactory.createWidgetDefinePane(cellWidget, new Operator() { @Override public void did(DataCreatorUI ui, String cardName) { From b5024a0547fc23b908a7a645a6eee15cd4bb6f28 Mon Sep 17 00:00:00 2001 From: plough Date: Fri, 21 Apr 2017 16:27:51 +0800 Subject: [PATCH 48/76] =?UTF-8?q?REPORT-2368=20=E4=BF=AE=E6=94=B9=E6=8E=A7?= =?UTF-8?q?=E4=BB=B6=E8=AE=BE=E7=BD=AE=E7=95=8C=E9=9D=A2=E5=AF=B9=E2=80=9C?= =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E5=B1=9E=E6=80=A7=E2=80=9D=E9=9D=A2=E6=9D=BF?= =?UTF-8?q?=E7=9A=84=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/design/widget/CellWidgetCardPane.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/designer/src/com/fr/design/widget/CellWidgetCardPane.java b/designer/src/com/fr/design/widget/CellWidgetCardPane.java index 12f3137b40..d286cc1900 100644 --- a/designer/src/com/fr/design/widget/CellWidgetCardPane.java +++ b/designer/src/com/fr/design/widget/CellWidgetCardPane.java @@ -67,7 +67,12 @@ public class CellWidgetCardPane extends BasicPane { treeTabPane = FRGUIPaneFactory.createBorderLayout_L_Pane(); widgetPropertyPane = new BasicWidgetPropertySettingPane(); - attriTabPane.add(widgetPropertyPane, BorderLayout.NORTH); + JPanel northPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + northPane.setBorder(BorderFactory.createEmptyBorder(5, 8, 0, 8)); + JPanel basic = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Form_Basic_Properties")); + northPane.add(basic); + basic.add(widgetPropertyPane); + attriTabPane.add(northPane, BorderLayout.NORTH); attriCardPane = FRGUIPaneFactory.createCardLayout_S_Pane(); attriTabPane.add(attriCardPane, BorderLayout.CENTER); attriCardLayout = (CardLayout) attriCardPane.getLayout(); From c93986c3973154ff6861d7d75863f019fc4ef353 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Mon, 24 Apr 2017 09:20:52 +0800 Subject: [PATCH 49/76] =?UTF-8?q?REPORT-2273=20=E8=BF=9C=E7=A8=8B=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E6=95=B0=E6=8D=AE=E5=BA=93=E8=BF=9E=E6=8E=A5=E6=88=90?= =?UTF-8?q?=E5=8A=9F=EF=BC=8C=E9=A2=84=E8=A7=88=E6=8A=A5=E9=94=99=EF=BC=8C?= =?UTF-8?q?datasourcexml=E4=BF=9D=E5=AD=98=E5=A4=B1=E8=B4=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/server/ConnectionListAction.java | 345 +++++++++--------- .../connect/ConnectionComboBoxPanel.java | 266 +++++++------- .../datapane/connect/ConnectionListPane.java | 324 ++++++++-------- .../connect/ConnectionManagerPane.java | 155 ++++---- .../datapane/connect/ConnectionShowPane.java | 15 + 5 files changed, 569 insertions(+), 536 deletions(-) create mode 100644 designer_base/src/com/fr/design/data/datapane/connect/ConnectionShowPane.java diff --git a/designer_base/src/com/fr/design/actions/server/ConnectionListAction.java b/designer_base/src/com/fr/design/actions/server/ConnectionListAction.java index e24826b50b..68e6057575 100644 --- a/designer_base/src/com/fr/design/actions/server/ConnectionListAction.java +++ b/designer_base/src/com/fr/design/actions/server/ConnectionListAction.java @@ -1,171 +1,176 @@ -package com.fr.design.actions.server; - -import com.fr.base.BaseUtils; -import com.fr.base.Env; -import com.fr.base.FRContext; -import com.fr.base.ModifiedTable; -import com.fr.data.impl.Connection; -import com.fr.dav.LocalEnv; -import com.fr.design.actions.UpdateAction; -import com.fr.design.data.datapane.connect.ConnectionManagerPane; -import com.fr.design.dialog.BasicDialog; -import com.fr.design.dialog.DialogActionAdapter; -import com.fr.design.mainframe.DesignerContext; -import com.fr.design.mainframe.DesignerFrame; -import com.fr.design.menu.MenuKeySet; -import com.fr.file.DatasourceManager; -import com.fr.file.DatasourceManagerProvider; -import com.fr.general.Inter; - -import javax.swing.*; -import java.awt.event.ActionEvent; -import java.util.HashMap; - -/** - * DatasourceList Action - */ -public class ConnectionListAction extends UpdateAction { - private static final int BYTENUM = 1444; - - public ConnectionListAction() { - this.setMenuKeySet(DEFINE_DATA_CONNECTION); - this.setName(getMenuKeySet().getMenuKeySetName()); - this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_web/connection.png")); - } - - public static final MenuKeySet DEFINE_DATA_CONNECTION = new MenuKeySet() { - @Override - public char getMnemonic() { - return 'D'; - } - - @Override - public String getMenuName() { - return Inter.getLocText("Server-Define_Data_Connection"); - } - - @Override - public KeyStroke getKeyStroke() { - return null; - } - }; - - /** - * 执行动作 - * - * @param evt 事件 - */ - public void actionPerformed(ActionEvent evt) { - DesignerFrame designerFrame = DesignerContext.getDesignerFrame(); - final DatasourceManagerProvider datasourceManager = DatasourceManager.getProviderInstance(); - final DatasourceManager backupManager = datasourceManager.getBackUpManager(); - final ConnectionManagerPane databaseManagerPane = new ConnectionManagerPane() { - public void complete() { - populate(datasourceManager); - } - - protected void renameConnection(String oldName, String newName) { - datasourceManager.getConnectionLocalModifyTable().rename(oldName, newName); - } - }; - final BasicDialog databaseListDialog = databaseManagerPane.showLargeWindow(designerFrame, null); - databaseListDialog.addDialogActionListener(new DialogActionAdapter() { - public void doOk() { - if (!databaseManagerPane.isNamePermitted()) { - databaseListDialog.setDoOKSucceed(false); - return; - } - if (!doWithDatasourceManager(datasourceManager, backupManager, databaseManagerPane, databaseListDialog)) { - //如果更新失败,则不关闭对话框,也不写xml文件,并且将对话框定位在请重命名的那个对象页面 - return; - } - // marks:保存数据 - writeFile(datasourceManager); - } - - public void doCancel() { - datasourceManager.synchronizedWithServer(); - } - }); - databaseListDialog.setVisible(true); - } - - - private void writeFile(DatasourceManagerProvider datasourceManager) { - Env currentEnv = FRContext.getCurrentEnv(); - try { - boolean isSuccess = currentEnv.writeResource(datasourceManager); - if (!isSuccess) { - throw new RuntimeException(Inter.getLocText("FR-Designer_Already_exist")); - } - } catch (Exception e) { - throw new RuntimeException(Inter.getLocText("FR-Designer_Already_exist")); - } - DesignerContext.getDesignerBean("databasename").refreshBeanElement(); - } - - /** - * 是否正常更新完datasourceManager - * - * @param datasourceManager - * @param databaseManagerPane - * @return - */ - private boolean doWithDatasourceManager(DatasourceManagerProvider datasourceManager, DatasourceManager backupManager, - ConnectionManagerPane databaseManagerPane, BasicDialog databaseListDialog) { - databaseManagerPane.update(datasourceManager); - HashMap modifyDetails = datasourceManager.getConnectionModifyDetails(); - modifyDetails.clear(); - Env currentEnv = FRContext.getCurrentEnv(); - ModifiedTable localModifiedTable = datasourceManager.checkConnectionModifyTable(backupManager, currentEnv.getUserID()); - boolean isFailed = false; - if (currentEnv.isSupportLocalFileOperate() && !((LocalEnv) currentEnv).isNoRemoteUser()) { - //如果是本地,并且有远程用户时则更新自己的修改表 - datasourceManager.updateSelfConnectionTotalModifiedTable(localModifiedTable, ModifiedTable.LOCAL_MODIFIER); - } else { - if (!currentEnv.isSupportLocalFileOperate()) { - //如果是远程,则去取服务器的最新的修改表,检查有没有冲突 - ModifiedTable currentServerModifyTable = currentEnv.getDataSourceModifiedTables(DatasourceManager.CONNECTION); - if (localModifiedTable.checkModifiedTableConflictWithServer(currentServerModifyTable, currentEnv.getUserID())) { - //有冲突,进行提示 - String title = Inter.getLocText(new String[]{"Select", "Single", "Setting"}); - int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), localModifiedTable.getWaringMessage(), title, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); - if (returnVal == JOptionPane.YES_OPTION) { - //点击是,进行相应刷新去冲突 - datasourceManager.synchronizedWithServer(backupManager, DatasourceManager.CONNECTION); - //要是有重命名冲突的,则对详细的修改表先进行修改 - datasourceManager.doWithConnectionConflict(localModifiedTable); - localModifiedTable.removeConfilct(); - modifyDetails.clear(); - //更新面板 - databaseManagerPane.populate(datasourceManager); - } else { - //更新失败,继续停留页面 - isFailed = true; - } - - } - } - } - //存在请重命名则不能更新 - int index = datasourceManager.isConnectionMapContainsRename(); - if (index != -1) { - isFailed = true; - databaseManagerPane.setSelectedIndex(index); - } - databaseListDialog.setDoOKSucceed(!isFailed); - //如果修改成功,则去远程端增量修改修改表 - if (!isFailed && !currentEnv.isSupportLocalFileOperate()) { - currentEnv.writeDataSourceModifiedTables(localModifiedTable, DatasourceManager.CONNECTION); - localModifiedTable.clear(); - modifyDetails.clear(); - } - return !isFailed; - } - - - public void update() { - this.setEnabled(true); - } +package com.fr.design.actions.server; + +import com.fr.base.BaseUtils; +import com.fr.base.Env; +import com.fr.base.FRContext; +import com.fr.base.ModifiedTable; +import com.fr.data.impl.Connection; +import com.fr.dav.LocalEnv; +import com.fr.design.actions.UpdateAction; +import com.fr.design.data.datapane.connect.ConnectionManagerPane; +import com.fr.design.data.datapane.connect.ConnectionShowPane; +import com.fr.design.dialog.BasicDialog; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.DesignerFrame; +import com.fr.design.menu.MenuKeySet; +import com.fr.file.DatasourceManager; +import com.fr.file.DatasourceManagerProvider; +import com.fr.general.Inter; + +import javax.swing.*; +import java.awt.event.ActionEvent; +import java.util.HashMap; + +/** + * DatasourceList Action + */ +public class ConnectionListAction extends UpdateAction { + + public ConnectionListAction() { + this.setMenuKeySet(DEFINE_DATA_CONNECTION); + this.setName(getMenuKeySet().getMenuKeySetName()); + this.setMnemonic(getMenuKeySet().getMnemonic()); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_web/connection.png")); + } + + public static final MenuKeySet DEFINE_DATA_CONNECTION = new MenuKeySet() { + @Override + public char getMnemonic() { + return 'D'; + } + + @Override + public String getMenuName() { + return Inter.getLocText("Server-Define_Data_Connection"); + } + + @Override + public KeyStroke getKeyStroke() { + return null; + } + }; + + /** + * 执行动作 + * + * @param evt 事件 + */ + public void actionPerformed(ActionEvent evt) { + DesignerFrame designerFrame = DesignerContext.getDesignerFrame(); + final DatasourceManagerProvider datasourceManager = DatasourceManager.getProviderInstance(); + final DatasourceManager backupManager = datasourceManager.getBackUpManager(); + final ConnectionManagerPane databaseManagerPane = new ConnectionManagerPane() { + public void complete() { + populate(datasourceManager); + } + + protected void renameConnection(String oldName, String newName) { + datasourceManager.getConnectionLocalModifyTable().rename(oldName, newName); + } + }; + final BasicDialog databaseListDialog = databaseManagerPane.showLargeWindow(designerFrame, null); + databaseListDialog.addDialogActionListener(new DialogActionAdapter() { + public void doOk() { + if (!databaseManagerPane.isNamePermitted()) { + databaseListDialog.setDoOKSucceed(false); + return; + } + if (!doWithDatasourceManager(datasourceManager, backupManager, databaseManagerPane, databaseListDialog)) { + //如果更新失败,则不关闭对话框,也不写xml文件,并且将对话框定位在请重命名的那个对象页面 + return; + } + // marks:保存数据 + writeFile(datasourceManager); + } + + public void doCancel() { + datasourceManager.synchronizedWithServer(); + } + }); + databaseListDialog.setVisible(true); + } + + + /** + * @param datasourceManager + */ + public static void writeFile(DatasourceManagerProvider datasourceManager) { + Env currentEnv = FRContext.getCurrentEnv(); + try { + boolean isSuccess = currentEnv.writeResource(datasourceManager); + if (!isSuccess) { + throw new RuntimeException(Inter.getLocText("FR-Designer_Already_exist")); + } + } catch (Exception e) { + throw new RuntimeException(Inter.getLocText("FR-Designer_Already_exist")); + } + DesignerContext.getDesignerBean("databasename").refreshBeanElement(); + } + + /** + * 更新datasourceManager + * + * @param datasourceManager datasource管理对象 + * @param backupManager datasource管理对象备份 + * @param connectionShowPane datasource面板 + * @param databaseListDialog datasource管理对话框 + * @return boolean 是否更新成功 + */ + public static boolean doWithDatasourceManager(DatasourceManagerProvider datasourceManager, DatasourceManager + backupManager, ConnectionShowPane connectionShowPane, BasicDialog databaseListDialog) { + connectionShowPane.update(datasourceManager); + HashMap modifyDetails = datasourceManager.getConnectionModifyDetails(); + modifyDetails.clear(); + Env currentEnv = FRContext.getCurrentEnv(); + ModifiedTable localModifiedTable = datasourceManager.checkConnectionModifyTable(backupManager, currentEnv.getUserID()); + boolean isFailed = false; + if (currentEnv.isSupportLocalFileOperate() && !((LocalEnv) currentEnv).isNoRemoteUser()) { + //如果是本地,并且有远程用户时则更新自己的修改表 + datasourceManager.updateSelfConnectionTotalModifiedTable(localModifiedTable, ModifiedTable.LOCAL_MODIFIER); + } else { + if (!currentEnv.isSupportLocalFileOperate()) { + //如果是远程,则去取服务器的最新的修改表,检查有没有冲突 + ModifiedTable currentServerModifyTable = currentEnv.getDataSourceModifiedTables(DatasourceManager.CONNECTION); + if (localModifiedTable.checkModifiedTableConflictWithServer(currentServerModifyTable, currentEnv.getUserID())) { + //有冲突,进行提示 + String title = Inter.getLocText(new String[]{"Select", "Single", "Setting"}); + int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), localModifiedTable.getWaringMessage(), title, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); + if (returnVal == JOptionPane.YES_OPTION) { + //点击是,进行相应刷新去冲突 + datasourceManager.synchronizedWithServer(backupManager, DatasourceManager.CONNECTION); + //要是有重命名冲突的,则对详细的修改表先进行修改 + datasourceManager.doWithConnectionConflict(localModifiedTable); + localModifiedTable.removeConfilct(); + modifyDetails.clear(); + //更新面板 + connectionShowPane.populate(datasourceManager); + } else { + //更新失败,继续停留页面 + isFailed = true; + } + + } + } + } + //存在请重命名则不能更新 + int index = datasourceManager.isConnectionMapContainsRename(); + if (index != -1) { + isFailed = true; + connectionShowPane.setSelectedIndex(index); + } + databaseListDialog.setDoOKSucceed(!isFailed); + //如果修改成功,则去远程端增量修改修改表 + if (!isFailed && !currentEnv.isSupportLocalFileOperate()) { + currentEnv.writeDataSourceModifiedTables(localModifiedTable, DatasourceManager.CONNECTION); + localModifiedTable.clear(); + modifyDetails.clear(); + } + return !isFailed; + } + + + public void update() { + this.setEnabled(true); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java b/designer_base/src/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java index cc75b7ca22..c80970bd9c 100644 --- a/designer_base/src/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java +++ b/designer_base/src/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java @@ -1,128 +1,140 @@ -package com.fr.design.data.datapane.connect; - -import com.fr.base.Env; -import com.fr.base.FRContext; -import com.fr.data.impl.AbstractDatabaseConnection; -import com.fr.data.impl.Connection; -import com.fr.data.impl.NameDatabaseConnection; -import com.fr.design.DesignerEnvManager; -import com.fr.design.dialog.BasicDialog; -import com.fr.design.dialog.DialogActionAdapter; -import com.fr.file.DatasourceManager; -import com.fr.file.DatasourceManagerProvider; -import com.fr.general.ComparatorUtils; -import com.fr.stable.StringUtils; - -import javax.swing.*; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.util.ArrayList; -import java.util.List; - -/** - * 选择数据连接的下拉框 - * - * @editor zhou - * @since 2012-3-28下午3:02:30 - */ -public class ConnectionComboBoxPanel extends ItemEditableComboBoxPanel { - /** - * - */ - private static final long serialVersionUID = 1L; - private Class cls; // 所取的Connection都是cls及其子类 - private java.util.List nameList = new ArrayList(); - - public ConnectionComboBoxPanel(Class cls) { - super(); - - this.cls = cls; - - // alex:添加item change监听,当改变时改变DesignerEnvManager中的最近选中的数据连接 - this.itemComboBox.addItemListener(new ItemListener() { - public void itemStateChanged(ItemEvent e) { - String selected = ConnectionComboBoxPanel.this.getSelectedItem(); - if (StringUtils.isNotBlank(selected)) { - DesignerEnvManager.getEnvManager().setRecentSelectedConnection(selected); - } - } - }); - refreshItems(); - } - - /* - * 刷新ComboBox.items - */ - protected java.util.Iterator items() { - nameList = new ArrayList(); - - DatasourceManagerProvider mgr = DatasourceManager.getProviderInstance(); - java.util.Iterator nameIt = mgr.getConnectionNameIterator(); - while (nameIt.hasNext()) { - String conName = nameIt.next(); - Connection connection = mgr.getConnection(conName); - filterConnection(connection, conName, nameList); - } - - return nameList.iterator(); - } - - protected void filterConnection(Connection connection, String conName, List nameList) { - connection.addConnection(nameList, conName, new Class[]{AbstractDatabaseConnection.class}); - } - - - public int getConnectionSize() { - return nameList.size(); - } - - public String getConnection(int i) { - return nameList.get(i); - } - - /* - * 弹出对话框编辑Items - */ - protected void editItems() { - final ConnectionListPane connectionListPane = new ConnectionListPane(); - final DatasourceManagerProvider datasourceManager = DatasourceManager.getProviderInstance(); - connectionListPane.populate(datasourceManager); - BasicDialog connectionListDialog = connectionListPane.showLargeWindow( - SwingUtilities.getWindowAncestor(ConnectionComboBoxPanel.this), new DialogActionAdapter() { - public void doOk() { - connectionListPane.update(datasourceManager); - // marks:保存数据 - Env currentEnv = FRContext.getCurrentEnv(); - try { - currentEnv.writeResource(datasourceManager); - } catch (Exception ex) { - FRContext.getLogger().error(ex.getMessage(), ex); - } - } - }); - connectionListDialog.setVisible(true); - refreshItems(); - } - - public void populate(com.fr.data.impl.Connection connection) { - editButton.setEnabled(FRContext.getCurrentEnv().isRoot()); - if (connection instanceof NameDatabaseConnection) { - this.setSelectedItem(((NameDatabaseConnection) connection).getName()); - } else { - String s = DesignerEnvManager.getEnvManager().getRecentSelectedConnection(); - if (StringUtils.isNotBlank(s)) { - for (int i = 0; i < this.getConnectionSize(); i++) { - String t = this.getConnection(i); - if (ComparatorUtils.equals(s, t)) { - this.setSelectedItem(s); - break; - } - } - } - // alex:如果这个ComboBox还是没有选中,那么选中第一个 - if (StringUtils.isBlank(this.getSelectedItem()) && this.getConnectionSize() > 0) { - this.setSelectedItem(this.getConnection(0)); - } - } - } +package com.fr.design.data.datapane.connect; + +import com.fr.base.FRContext; +import com.fr.data.impl.AbstractDatabaseConnection; +import com.fr.data.impl.Connection; +import com.fr.data.impl.NameDatabaseConnection; +import com.fr.design.DesignerEnvManager; +import com.fr.design.actions.server.ConnectionListAction; +import com.fr.design.dialog.BasicDialog; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.file.DatasourceManager; +import com.fr.file.DatasourceManagerProvider; +import com.fr.general.ComparatorUtils; +import com.fr.stable.StringUtils; + +import javax.swing.*; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/** + * 选择数据连接的下拉框 + * + * @editor zhou + * @since 2012-3-28下午3:02:30 + */ +public class ConnectionComboBoxPanel extends ItemEditableComboBoxPanel { + /** + * + */ + private static final long serialVersionUID = 1L; + private Class cls; // 所取的Connection都是cls及其子类 + private List nameList = new ArrayList(); + + public ConnectionComboBoxPanel(Class cls) { + super(); + + this.cls = cls; + + // alex:添加item change监听,当改变时改变DesignerEnvManager中的最近选中的数据连接 + this.itemComboBox.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + String selected = ConnectionComboBoxPanel.this.getSelectedItem(); + if (StringUtils.isNotBlank(selected)) { + DesignerEnvManager.getEnvManager().setRecentSelectedConnection(selected); + } + } + }); + refreshItems(); + } + + /* + * 刷新ComboBox.items + */ + protected Iterator items() { + nameList = new ArrayList(); + + DatasourceManagerProvider mgr = DatasourceManager.getProviderInstance(); + Iterator nameIt = mgr.getConnectionNameIterator(); + while (nameIt.hasNext()) { + String conName = nameIt.next(); + Connection connection = mgr.getConnection(conName); + filterConnection(connection, conName, nameList); + } + + return nameList.iterator(); + } + + protected void filterConnection(Connection connection, String conName, List nameList) { + connection.addConnection(nameList, conName, new Class[]{AbstractDatabaseConnection.class}); + } + + public int getConnectionSize() { + return nameList.size(); + } + + public String getConnection(int i) { + return nameList.get(i); + } + + /* + * 弹出对话框编辑Items + */ + protected void editItems() { + final ConnectionListPane connectionListPane = new ConnectionListPane(); + final DatasourceManagerProvider datasourceManager = DatasourceManager.getProviderInstance(); + final DatasourceManager backupManager = datasourceManager.getBackUpManager(); + connectionListPane.populate(datasourceManager); + final BasicDialog connectionListDialog = connectionListPane.showLargeWindow( + SwingUtilities.getWindowAncestor(ConnectionComboBoxPanel.this), null); + connectionListDialog.addDialogActionListener(new DialogActionAdapter() { + public void doOk() { + if (!connectionListPane.isNamePermitted()) { + connectionListDialog.setDoOKSucceed(false); + return; + } + if (!ConnectionListAction.doWithDatasourceManager(datasourceManager, backupManager, connectionListPane, + connectionListDialog)) { + //如果更新失败,则不关闭对话框,也不写xml文件,并且将对话框定位在请重命名的那个对象页面 + return; + } + // marks:保存数据 + ConnectionListAction.writeFile(datasourceManager); + } + + public void doCancel() { + datasourceManager.synchronizedWithServer(); + } + }); + connectionListDialog.setVisible(true); + refreshItems(); + } + + /** + * @param connection 数据库链接 + */ + public void populate(Connection connection) { + editButton.setEnabled(FRContext.getCurrentEnv().isRoot()); + if (connection instanceof NameDatabaseConnection) { + this.setSelectedItem(((NameDatabaseConnection) connection).getName()); + } else { + String s = DesignerEnvManager.getEnvManager().getRecentSelectedConnection(); + if (StringUtils.isNotBlank(s)) { + for (int i = 0; i < this.getConnectionSize(); i++) { + String t = this.getConnection(i); + if (ComparatorUtils.equals(s, t)) { + this.setSelectedItem(s); + break; + } + } + } + // alex:如果这个ComboBox还是没有选中,那么选中第一个 + if (StringUtils.isBlank(this.getSelectedItem()) && this.getConnectionSize() > 0) { + this.setSelectedItem(this.getConnection(0)); + } + } + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/data/datapane/connect/ConnectionListPane.java b/designer_base/src/com/fr/design/data/datapane/connect/ConnectionListPane.java index 8d0f2aa392..1cdf1cb1a9 100644 --- a/designer_base/src/com/fr/design/data/datapane/connect/ConnectionListPane.java +++ b/designer_base/src/com/fr/design/data/datapane/connect/ConnectionListPane.java @@ -1,163 +1,163 @@ -package com.fr.design.data.datapane.connect; - -import com.fr.data.impl.Connection; -import com.fr.data.impl.JDBCDatabaseConnection; -import com.fr.data.impl.JNDIDatabaseConnection; -import com.fr.design.ExtraDesignClassManager; -import com.fr.design.fun.ConnectionProvider; -import com.fr.design.gui.controlpane.JListControlPane; -import com.fr.design.gui.controlpane.NameObjectCreator; -import com.fr.design.gui.controlpane.NameableCreator; -import com.fr.file.DatasourceManagerProvider; -import com.fr.general.ComparatorUtils; -import com.fr.general.Inter; -import com.fr.general.NameObject; -import com.fr.stable.ArrayUtils; -import com.fr.stable.Nameable; -import com.fr.stable.StringUtils; -import com.fr.stable.core.PropertyChangeAdapter; - -import javax.swing.*; -import java.util.*; - -/** - * Connection List Pane. - */ -public class ConnectionListPane extends JListControlPane { - public static final String TITLE_NAME = Inter.getLocText("Server-Define_Data_Connection"); - private boolean isNamePermitted = true; - private HashMap renameMap = new HashMap(); - - public ConnectionListPane() { - renameMap.clear(); - this.addEditingListner(new PropertyChangeAdapter() { - public void propertyChange() { - isNamePermitted = true; - String[] allListNames = nameableList.getAllNames(); - allListNames[nameableList.getSelectedIndex()] = StringUtils.EMPTY; - String tempName = getEditingName(); - if (StringUtils.isEmpty(tempName)) { - String[] warning = new String[]{"NOT_NULL_Des", "Please_Rename"}; - String[] sign = new String[]{",", "!"}; - nameableList.stopEditing(); - JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(ConnectionListPane.this), Inter.getLocText(warning, sign)); - setWarnigText(editingIndex); - isNamePermitted = false; - return; - } - if (!ComparatorUtils.equals(tempName, selectedName) - && isNameRepeted(new List[]{Arrays.asList(allListNames)}, tempName)) { - isNamePermitted = false; - nameableList.stopEditing(); - String message = Inter.getLocText(new String[]{"Utils-has_been_existed", "DashBoard-ConnectionList", "Please_Rename"}, new String[]{"", tempName + ",", "!"}); - JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(ConnectionListPane.this), message); - setWarnigText(editingIndex); - } - if (isNamePermitted && !ComparatorUtils.equals(tempName, selectedName)) { - rename(selectedName, tempName); - } - - } - }); - } - - - protected void rename(String oldName, String newName) { - if (renameMap.containsKey(selectedName)) { - renameMap.remove(selectedName); - } - renameMap.put(selectedName, newName); - } - - /** - * 名字是否允许 - * - * @return 是/否 - */ - public boolean isNamePermitted() { - return isNamePermitted; - } - - /** - * 检查按钮可用状态 Check button enabled. - */ - public void checkButtonEnabled() { - super.checkButtonEnabled(); - isNamePermitted = !isContainsRename(); - } - - - public HashMap getRenameMap() { - return renameMap; - } - - /** - * 创建菜单项 - * - * @return 菜单项 - */ - public NameableCreator[] createNameableCreators() { - NameableCreator[] creators = new NameableCreator[]{new NameObjectCreator( - "JDBC", - "/com/fr/design/images/data/source/jdbcTableData.png", - JDBCDatabaseConnection.class, - DatabaseConnectionPane.JDBC.class - ), new NameObjectCreator( - "JNDI", - "/com/fr/design/images/data/source/jdbcTableData.png", - JNDIDatabaseConnection.class, - DatabaseConnectionPane.JNDI.class - )}; - Set pluginCreators = ExtraDesignClassManager.getInstance().getArray(ConnectionProvider.XML_TAG); - for (ConnectionProvider provider : pluginCreators) { - NameObjectCreator creator = new NameObjectCreator( - provider.nameForConnection(), - provider.iconPathForConnection(), - provider.classForConnection(), - provider.appearanceForConnection() - ); - creators = ArrayUtils.add(creators, creator); - } - - return creators; - } - - @Override - protected String title4PopupWindow() { - return TITLE_NAME; - } - - /** - * Populate. - * - * @param datasourceManager the new datasourceManager. - */ - public void populate(DatasourceManagerProvider datasourceManager) { - Iterator nameIt = datasourceManager.getConnectionNameIterator(); - - List nameObjectList = new ArrayList(); - while (nameIt.hasNext()) { - String name = nameIt.next(); - nameObjectList.add(new NameObject(name, datasourceManager.getConnection(name))); - } - this.populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); - - } - - /** - * Update. - */ - public void update(DatasourceManagerProvider datasourceManager) { - // Nameable[]居然不能强转成NameObject[],一定要这么写... - Nameable[] res = this.update(); - NameObject[] res_array = new NameObject[res.length]; - java.util.Arrays.asList(res).toArray(res_array); - - datasourceManager.clearAllConnection(); - - for (int i = 0; i < res_array.length; i++) { - NameObject nameObject = res_array[i]; - datasourceManager.putConnection(nameObject.getName(), (Connection) nameObject.getObject()); - } - } +package com.fr.design.data.datapane.connect; + +import com.fr.data.impl.Connection; +import com.fr.data.impl.JDBCDatabaseConnection; +import com.fr.data.impl.JNDIDatabaseConnection; +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.fun.ConnectionProvider; +import com.fr.design.gui.controlpane.JListControlPane; +import com.fr.design.gui.controlpane.NameObjectCreator; +import com.fr.design.gui.controlpane.NameableCreator; +import com.fr.file.DatasourceManagerProvider; +import com.fr.general.ComparatorUtils; +import com.fr.general.Inter; +import com.fr.general.NameObject; +import com.fr.stable.ArrayUtils; +import com.fr.stable.Nameable; +import com.fr.stable.StringUtils; +import com.fr.stable.core.PropertyChangeAdapter; + +import javax.swing.*; +import java.util.*; + +/** + * Connection List Pane. + */ +public class ConnectionListPane extends JListControlPane implements ConnectionShowPane { + public static final String TITLE_NAME = Inter.getLocText("Server-Define_Data_Connection"); + private boolean isNamePermitted = true; + private HashMap renameMap = new HashMap(); + + public ConnectionListPane() { + renameMap.clear(); + this.addEditingListner(new PropertyChangeAdapter() { + public void propertyChange() { + isNamePermitted = true; + String[] allListNames = nameableList.getAllNames(); + allListNames[nameableList.getSelectedIndex()] = StringUtils.EMPTY; + String tempName = getEditingName(); + if (StringUtils.isEmpty(tempName)) { + String[] warning = new String[]{"NOT_NULL_Des", "Please_Rename"}; + String[] sign = new String[]{",", "!"}; + nameableList.stopEditing(); + JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(ConnectionListPane.this), Inter.getLocText(warning, sign)); + setWarnigText(editingIndex); + isNamePermitted = false; + return; + } + if (!ComparatorUtils.equals(tempName, selectedName) + && isNameRepeted(new List[]{Arrays.asList(allListNames)}, tempName)) { + isNamePermitted = false; + nameableList.stopEditing(); + String message = Inter.getLocText(new String[]{"Utils-has_been_existed", "DashBoard-ConnectionList", "Please_Rename"}, new String[]{"", tempName + ",", "!"}); + JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(ConnectionListPane.this), message); + setWarnigText(editingIndex); + } + if (isNamePermitted && !ComparatorUtils.equals(tempName, selectedName)) { + rename(selectedName, tempName); + } + + } + }); + } + + + protected void rename(String oldName, String newName) { + if (renameMap.containsKey(selectedName)) { + renameMap.remove(selectedName); + } + renameMap.put(selectedName, newName); + } + + /** + * 名字是否允许 + * + * @return 是/否 + */ + public boolean isNamePermitted() { + return isNamePermitted; + } + + /** + * 检查按钮可用状态 Check button enabled. + */ + public void checkButtonEnabled() { + super.checkButtonEnabled(); + isNamePermitted = !isContainsRename(); + } + + + public HashMap getRenameMap() { + return renameMap; + } + + /** + * 创建菜单项 + * + * @return 菜单项 + */ + public NameableCreator[] createNameableCreators() { + NameableCreator[] creators = new NameableCreator[]{new NameObjectCreator( + "JDBC", + "/com/fr/design/images/data/source/jdbcTableData.png", + JDBCDatabaseConnection.class, + DatabaseConnectionPane.JDBC.class + ), new NameObjectCreator( + "JNDI", + "/com/fr/design/images/data/source/jdbcTableData.png", + JNDIDatabaseConnection.class, + DatabaseConnectionPane.JNDI.class + )}; + Set pluginCreators = ExtraDesignClassManager.getInstance().getArray(ConnectionProvider.XML_TAG); + for (ConnectionProvider provider : pluginCreators) { + NameObjectCreator creator = new NameObjectCreator( + provider.nameForConnection(), + provider.iconPathForConnection(), + provider.classForConnection(), + provider.appearanceForConnection() + ); + creators = ArrayUtils.add(creators, creator); + } + + return creators; + } + + @Override + protected String title4PopupWindow() { + return TITLE_NAME; + } + + /** + * Populate. + * + * @param datasourceManager the new datasourceManager. + */ + public void populate(DatasourceManagerProvider datasourceManager) { + Iterator nameIt = datasourceManager.getConnectionNameIterator(); + + List nameObjectList = new ArrayList(); + while (nameIt.hasNext()) { + String name = nameIt.next(); + nameObjectList.add(new NameObject(name, datasourceManager.getConnection(name))); + } + this.populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); + + } + + /** + * Update. + */ + public void update(DatasourceManagerProvider datasourceManager) { + // Nameable[]居然不能强转成NameObject[],一定要这么写... + Nameable[] res = this.update(); + NameObject[] res_array = new NameObject[res.length]; + java.util.Arrays.asList(res).toArray(res_array); + + datasourceManager.clearAllConnection(); + + for (int i = 0; i < res_array.length; i++) { + NameObject nameObject = res_array[i]; + datasourceManager.putConnection(nameObject.getName(), (Connection) nameObject.getObject()); + } + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/data/datapane/connect/ConnectionManagerPane.java b/designer_base/src/com/fr/design/data/datapane/connect/ConnectionManagerPane.java index ace69ff692..70d4933faf 100644 --- a/designer_base/src/com/fr/design/data/datapane/connect/ConnectionManagerPane.java +++ b/designer_base/src/com/fr/design/data/datapane/connect/ConnectionManagerPane.java @@ -1,78 +1,79 @@ -package com.fr.design.data.datapane.connect; - -import com.fr.base.FRContext; -import com.fr.design.gui.frpane.LoadingBasicPane; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.itextfield.UITextField; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.file.DatasourceManagerProvider; -import com.fr.general.Inter; -import com.fr.stable.project.ProjectConstants; - -import javax.swing.*; -import java.awt.*; -import java.io.File; -import java.util.HashMap; - -public class ConnectionManagerPane extends LoadingBasicPane { - private UITextField connectionTextField; - private ConnectionListPane connectionListPane; - - protected void initComponents(JPanel container) { - container.setLayout(FRGUIPaneFactory.createBorderLayout()); - - JPanel connectionPathPane = FRGUIPaneFactory.createBorderLayout_L_Pane(); - container.add(connectionPathPane, BorderLayout.NORTH); - - connectionPathPane.setBorder(BorderFactory.createEmptyBorder(6, 2, 2, 2)); - - connectionPathPane.add(new UILabel(Inter.getLocText("FR-Designer_Save_Path") + ":"), BorderLayout.WEST); - this.connectionTextField = new UITextField(); - connectionPathPane.add(connectionTextField, BorderLayout.CENTER); - this.connectionTextField.setEditable(false); - connectionListPane = new ConnectionListPane(){ - protected void rename(String oldName,String newName) { - super.rename(oldName,newName); - renameConnection(oldName,newName); - } - }; - container.add(connectionListPane, BorderLayout.CENTER); - } - - @Override - protected String title4PopupWindow() { - return Inter.getLocText("Server-Define_Data_Connection"); - } - - public HashMap getRenameMap() { - return connectionListPane.getRenameMap(); - } - - public void populate(DatasourceManagerProvider datasourceManager) { - this.connectionTextField.setText(FRContext.getCurrentEnv().getPath() + File.separator + ProjectConstants.RESOURCES_NAME - + File.separator + datasourceManager.fileName()); - this.connectionListPane.populate(datasourceManager); - } - - public void update(DatasourceManagerProvider datasourceManager) { - this.connectionListPane.update(datasourceManager); - } - - /** - * 设置选中项 - * - * @param index 选中项的序列号 - */ - public void setSelectedIndex(int index) { - this.connectionListPane.setSelectedIndex(index); - } - - /** - * 名字是否允许 - * @return 允许返回true - */ - public boolean isNamePermitted() { - return connectionListPane.isNamePermitted(); - } - +package com.fr.design.data.datapane.connect; + +import com.fr.base.FRContext; +import com.fr.design.gui.frpane.LoadingBasicPane; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.file.DatasourceManagerProvider; +import com.fr.general.Inter; +import com.fr.stable.project.ProjectConstants; + +import javax.swing.*; +import java.awt.*; +import java.io.File; +import java.util.HashMap; + +public class ConnectionManagerPane extends LoadingBasicPane implements ConnectionShowPane { + private UITextField connectionTextField; + private ConnectionListPane connectionListPane; + + protected void initComponents(JPanel container) { + container.setLayout(FRGUIPaneFactory.createBorderLayout()); + + JPanel connectionPathPane = FRGUIPaneFactory.createBorderLayout_L_Pane(); + container.add(connectionPathPane, BorderLayout.NORTH); + + connectionPathPane.setBorder(BorderFactory.createEmptyBorder(6, 2, 2, 2)); + + connectionPathPane.add(new UILabel(Inter.getLocText("FR-Designer_Save_Path") + ":"), BorderLayout.WEST); + this.connectionTextField = new UITextField(); + connectionPathPane.add(connectionTextField, BorderLayout.CENTER); + this.connectionTextField.setEditable(false); + connectionListPane = new ConnectionListPane() { + protected void rename(String oldName, String newName) { + super.rename(oldName, newName); + renameConnection(oldName, newName); + } + }; + container.add(connectionListPane, BorderLayout.CENTER); + } + + @Override + protected String title4PopupWindow() { + return Inter.getLocText("Server-Define_Data_Connection"); + } + + public HashMap getRenameMap() { + return connectionListPane.getRenameMap(); + } + + public void populate(DatasourceManagerProvider datasourceManager) { + this.connectionTextField.setText(FRContext.getCurrentEnv().getPath() + File.separator + ProjectConstants.RESOURCES_NAME + + File.separator + datasourceManager.fileName()); + this.connectionListPane.populate(datasourceManager); + } + + public void update(DatasourceManagerProvider datasourceManager) { + this.connectionListPane.update(datasourceManager); + } + + /** + * 设置选中项 + * + * @param index 选中项的序列号 + */ + public void setSelectedIndex(int index) { + this.connectionListPane.setSelectedIndex(index); + } + + /** + * 名字是否允许 + * + * @return 允许返回true + */ + public boolean isNamePermitted() { + return connectionListPane.isNamePermitted(); + } + } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/data/datapane/connect/ConnectionShowPane.java b/designer_base/src/com/fr/design/data/datapane/connect/ConnectionShowPane.java new file mode 100644 index 0000000000..ce857ddc65 --- /dev/null +++ b/designer_base/src/com/fr/design/data/datapane/connect/ConnectionShowPane.java @@ -0,0 +1,15 @@ +package com.fr.design.data.datapane.connect; + +import com.fr.file.DatasourceManagerProvider; + +/** + * Created by yaoh.wu on 2017/4/22. + * 数据链接显示面板 + */ +public interface ConnectionShowPane { + void update(DatasourceManagerProvider datasourceManager); + + void populate(DatasourceManagerProvider datasourceManager); + + void setSelectedIndex(int index); +} From c86cfd1c1b0275ad3d6b4eafd734869d6891dd55 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Mon, 24 Apr 2017 09:21:32 +0800 Subject: [PATCH 50/76] =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=A4=8D=E7=94=A8?= =?UTF-8?q?=E8=BE=B9=E7=95=8C=E5=A4=8D=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/FormSelectionUtils.java | 33 +++++++------------ 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java index 1978e8432b..90945b1e80 100644 --- a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java +++ b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java @@ -132,29 +132,18 @@ public class FormSelectionUtils { XLayoutContainer container = layoutAdapter.getContainer(); boolean xOut = x < 0 || x + copiedCreator.getWidth() / 2 + xoffset > container.getWidth(); boolean yOut = y < 0 || y + copiedCreator.getHeight() / 2 + yoffset > container.getHeight(); - /* - * 组件原始位置位于布局的右下角, - * 和布局右下边界线紧挨, - * 粘贴时组件在原始位置向左错开20像素。 - * x,y同时越界 - */ - if (xOut && yOut) { - //向左偏移 - x = container.getWidth() - copiedCreator.getWidth() / 2 - DELAY_X_Y - xoffset; + + y = yOut ? container.getHeight() - copiedCreator.getHeight() / 2 - yoffset : y; + boolean isEdge = (x - DELAY_X_Y == container.getWidth() - copiedCreator.getWidth() / 2 - xoffset); + if (xOut) { + if (isEdge) { + //向左偏移 + x = container.getWidth() - copiedCreator.getWidth() / 2 - DELAY_X_Y - xoffset; + } //紧贴下边界 - y = container.getHeight() - copiedCreator.getHeight() / 2 - yoffset; - return new Point(x, y); - } - /* - * 组件原始位置与布局边界距离小于20像素(下边界&右边界同时小于或者任意一个边界小于), - * 则粘贴时距离小于20像素一侧直接贴近布局边界, - * 距离大于20像素的一侧正常错开。 - * x,y中只有一个越界 - */ - if ((xOut || yOut)) { - x = xOut ? container.getWidth() - copiedCreator.getWidth() / 2 - xoffset : x; - y = yOut ? container.getHeight() - copiedCreator.getHeight() / 2 - yoffset : y; - return new Point(x, y); + else { + x = container.getWidth() - copiedCreator.getWidth() / 2 - xoffset; + } } } return new Point(x, y); From a5769fe4679a35212ac3235fa8f823bac87a753a Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Mon, 24 Apr 2017 11:45:09 +0800 Subject: [PATCH 51/76] =?UTF-8?q?REPORT-934=E9=A2=9C=E8=89=B2=E8=AE=B0?= =?UTF-8?q?=E4=BD=8F=E6=AD=A3=E7=A1=AE=E4=BD=86=E6=98=AF=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E4=BF=AE=E5=A4=8D=E5=92=8C=E9=83=A8=E5=88=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../style/color/ColorSelectDetailPane.java | 190 +++++---- .../design/style/color/ColorSelectPane.java | 243 ++++++----- .../style/color/NewColorSelectPane.java | 386 +++++++++--------- .../style/color/RecentUseColorPane.java | 91 ++--- .../fr/design/style/color/UsedColorPane.java | 219 +++++----- 5 files changed, 547 insertions(+), 582 deletions(-) diff --git a/designer_base/src/com/fr/design/style/color/ColorSelectDetailPane.java b/designer_base/src/com/fr/design/style/color/ColorSelectDetailPane.java index 5c6c505a3c..a84b772cac 100644 --- a/designer_base/src/com/fr/design/style/color/ColorSelectDetailPane.java +++ b/designer_base/src/com/fr/design/style/color/ColorSelectDetailPane.java @@ -1,112 +1,104 @@ package com.fr.design.style.color; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Dimension; +import com.fr.design.dialog.BasicPane; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.general.Inter; -import javax.swing.JColorChooser; -import javax.swing.JPanel; +import javax.swing.*; import javax.swing.colorchooser.AbstractColorChooserPanel; import javax.swing.colorchooser.ColorSelectionModel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; - -import com.fr.design.dialog.BasicPane; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.general.Inter; +import java.awt.*; /** * 颜色选择器更多颜色面板 - * @author focus * + * @author focus */ -public class ColorSelectDetailPane extends BasicPane{ - private static final int SELECT_PANEL_HEIGHT = 245; - // Selected color - private Color color; - - // 颜色选择器面板 - JColorChooser selectedPanel; - - // 最近使用颜色面板 - JPanel recentUsePanel; - - // 预览 - JPanel previewPanel; - - public JColorChooser getSelectedPanel() { - return selectedPanel; - } - - public void setSelectedPanel(JColorChooser selectedPanel) { - this.selectedPanel = selectedPanel; - } - - public Color getColor() { - return color; - } - - public void setColor(Color color) { - this.color = color; - } - - public ColorSelectDetailPane() { - super(); - } - - public ColorSelectDetailPane(Color color){ - if(color == null){ - color = Color.white; - } - this.color = color; - initComponents(); - } - - @Override - protected String title4PopupWindow() { - return null; - } - - protected void initComponents() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - - // 颜色选择器面板 - selectedPanel = new JColorChooser(this.color); - selectedPanel.setPreferredSize(new Dimension(selectedPanel.getWidth(),SELECT_PANEL_HEIGHT)); - AbstractColorChooserPanel[] choosers = selectedPanel.getChooserPanels(); - for(int i=0;i colorChangeListenerList = new ArrayList(); - - ColorSelectDetailPane pane; - + + + /* default */ ColorSelectDetailPane pane; + /** * Constructor. */ public ColorSelectPane() { - super(true); - initialCompents(true); + super(true); + initialCompents(true); } public ColorSelectPane(boolean isSupportTransparent) { super(isSupportTransparent); initialCompents(isSupportTransparent); } - + private void initialCompents(boolean isSupportTransparent) { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - this.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 5)); - if (isSupportTransparent) { - UIButton transpanrentButton = new UIButton(Inter.getLocText("FR-Designer_ChartF-Transparency")); - this.add(transpanrentButton, BorderLayout.NORTH); - transpanrentButton.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - doTransparent(); - } - }); - } - - // center - JPanel centerPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); - this.add(centerPane, BorderLayout.CENTER); - - centerPane.add(getRow1Pane()); - - JPanel menuColorPane1 = getMenuColorPane(); - centerPane.add(menuColorPane1); + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + this.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 5)); + if (isSupportTransparent) { + UIButton transpanrentButton = new UIButton(Inter.getLocText("FR-Designer_ChartF-Transparency")); + this.add(transpanrentButton, BorderLayout.NORTH); + transpanrentButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + doTransparent(); + } + }); + } + + // center + JPanel centerPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); + this.add(centerPane, BorderLayout.CENTER); + + centerPane.add(getRow1Pane()); + + JPanel menuColorPane1 = getMenuColorPane(); + centerPane.add(menuColorPane1); Color[] colorArray = this.getColorArray(); - for (int i = 0; i < colorArray.length; i++) { - Color color = colorArray[i] == null ? UsedColorPane.DEFAULT_COLOR : colorArray[i]; - menuColorPane1.add(new ColorCell(color, this)); - } - - centerPane.add(Box.createVerticalStrut(1)); - - UIButton customButton = new UIButton(Inter.getLocText("FR-Designer-Basic_More_Color")); - - customButton.addMouseListener(new MouseAdapter() { - @Override - public void mousePressed(MouseEvent e) { - customButtonPressed(); - } - }); - customButton.setCursor(new Cursor(Cursor.HAND_CURSOR)); - JPanel centerPane1 = FRGUIPaneFactory.createBorderLayout_S_Pane(); - centerPane1.setBorder(BorderFactory.createEmptyBorder(2, 8, 8, 8)); - centerPane1.add(customButton, BorderLayout.NORTH); - centerPane.add(centerPane1); - } - - protected JPanel getMenuColorPane() { - JPanel menuColorPane = new JPanel(); - menuColorPane.setLayout(new GridLayout(5, 8, 1, 1)); - menuColorPane.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 8)); - - return menuColorPane; - } - - // 第一行,1个取色按钮 + 7个最近使用的颜色 - protected JPanel getRow1Pane() { - JPanel row1Pane = new JPanel(FRGUIPaneFactory.createBorderLayout()); - row1Pane.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 0)); - row1Pane.setPreferredSize(new Dimension(135, 24)); // 宽度为 16 * 8 + 7 - - // 最近使用 - UsedColorPane usedColorPane = new UsedColorPane(1, 8, 1, ColorSelectConfigManager.getInstance().getColors(), this, true, true); - usedColorPane.getPane().setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 8)); - row1Pane.add(usedColorPane.getPane()); - return row1Pane; - } - - protected Color[] getColorArray(){ + for (int i = 0; i < colorArray.length; i++) { + Color color = colorArray[i] == null ? UsedColorPane.DEFAULT_COLOR : colorArray[i]; + menuColorPane1.add(new ColorCell(color, this)); + } + + centerPane.add(Box.createVerticalStrut(1)); + + UIButton customButton = new UIButton(Inter.getLocText("FR-Designer-Basic_More_Color")); + + customButton.addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + customButtonPressed(); + } + }); + customButton.setCursor(new Cursor(Cursor.HAND_CURSOR)); + JPanel centerPane1 = FRGUIPaneFactory.createBorderLayout_S_Pane(); + centerPane1.setBorder(BorderFactory.createEmptyBorder(2, 8, 8, 8)); + centerPane1.add(customButton, BorderLayout.NORTH); + centerPane.add(centerPane1); + } + + protected JPanel getMenuColorPane() { + JPanel menuColorPane = new JPanel(); + menuColorPane.setLayout(new GridLayout(5, 8, 1, 1)); + menuColorPane.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 8)); + + return menuColorPane; + } + + // 第一行,1个取色按钮 + 1个留空的单元格 + 6个最近使用的颜色 + protected JPanel getRow1Pane() { + JPanel row1Pane = new JPanel(FRGUIPaneFactory.createBorderLayout()); + row1Pane.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 0)); + row1Pane.setPreferredSize(new Dimension(135, 24)); // 宽度为 16 * 8 + 7 + + // 最近使用 + UsedColorPane usedColorPane = new UsedColorPane(1, 8, 1, this, true, true); + usedColorPane.getPane().setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 8)); + row1Pane.add(usedColorPane.getPane()); + return row1Pane; + } + + protected Color[] getColorArray() { return ColorFactory.MenuColors; } @@ -125,15 +123,16 @@ public class ColorSelectPane extends TransparentPane implements ColorSelectable /** * Add change listener. * 增加监听 - * @param 监听 + * + * @param changeListener */ public void addChangeListener(ChangeListener changeListener) { this.colorChangeListenerList.add(changeListener); } - + @Override protected String title4PopupWindow() { - return "Color"; + return "Color"; } /** @@ -166,38 +165,36 @@ public class ColorSelectPane extends TransparentPane implements ColorSelectable /** * 选中颜色 - * @param 颜色单元格 - * */ - @Override - public void colorSetted(ColorCell colorCell) { - colorCell.repaint(); - } - - /** - * 初始化中央面板 - * @param centerPane 中央面板 - * - */ - @Override - public void initCenterPaneChildren(JPanel centerPane) { - GUICoreUtils.initCenterPaneChildren(centerPane, this); - } - - /** - * 透明 - */ - @Override - public void doTransparent() { - this.setColor(null); - } - - /** - * 更多颜色 - */ - @Override - public void customButtonPressed() { - pane = new ColorSelectDetailPane(Color.WHITE); - ColorSelectDialog.showDialog(DesignerContext.getDesignerFrame(), pane, Color.WHITE, this); - } + @Override + public void colorSetted(ColorCell colorCell) { + colorCell.repaint(); + } + + /** + * 初始化中央面板 + * + * @param centerPane 中央面板 + */ + @Override + public void initCenterPaneChildren(JPanel centerPane) { + GUICoreUtils.initCenterPaneChildren(centerPane, this); + } + + /** + * 透明 + */ + @Override + public void doTransparent() { + this.setColor(null); + } + + /** + * 更多颜色 + */ + @Override + public void customButtonPressed() { + pane = new ColorSelectDetailPane(Color.WHITE); + ColorSelectDialog.showDialog(DesignerContext.getDesignerFrame(), pane, Color.WHITE, this); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/style/color/NewColorSelectPane.java b/designer_base/src/com/fr/design/style/color/NewColorSelectPane.java index b9903a81f3..cb4398fd9e 100644 --- a/designer_base/src/com/fr/design/style/color/NewColorSelectPane.java +++ b/designer_base/src/com/fr/design/style/color/NewColorSelectPane.java @@ -1,215 +1,205 @@ package com.fr.design.style.color; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Cursor; -import java.awt.Dimension; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.util.ArrayList; - -import javax.swing.BorderFactory; -import javax.swing.Box; -import javax.swing.JPanel; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - -import com.fr.design.constants.UIConstants; import com.fr.design.border.UIRoundedBorder; +import com.fr.design.constants.UIConstants; +import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.dialog.BasicPane; import com.fr.general.Inter; +import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.ArrayList; + /** - * * @author zhou * @since 2012-5-29上午10:39:35 */ public class NewColorSelectPane extends BasicPane implements ColorSelectable { - private static final long serialVersionUID = -8634152305687249392L; - - private Color color = null; // color - // color setting action. - private ArrayList colorChangeListenerList = new ArrayList(); - - // 颜色选择器 - private ColorSelectDetailPane pane; - // 是否支持透明 - private boolean isSupportTransparent; - - private final static int TRANSPANENT_WINDOW_HEIGHT = 165; - private final static int WINDWO_HEIGHT = 150; - - // 最近使用颜色 - UsedColorPane usedColorPane; - - /** - * Constructor. - */ - public NewColorSelectPane() { - this(false); - } - - /** - * Constructor. - */ - public NewColorSelectPane(boolean isSupportTransparent) { - this.isSupportTransparent = isSupportTransparent; - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - this.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 5)); - if (isSupportTransparent) { - UIButton transpanrentButton = new UIButton(Inter.getLocText("FR-Designer_ChartF-Transparency")); - this.add(transpanrentButton, BorderLayout.NORTH); - transpanrentButton.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - doTransparent(); - } - }); - } - - // center - JPanel centerPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); - this.add(centerPane, BorderLayout.CENTER); - - // 第一行 - JPanel row1Pane = new JPanel(FRGUIPaneFactory.createBorderLayout()); - row1Pane.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 0)); - row1Pane.setPreferredSize(new Dimension(135, 16)); // 宽度为 16 * 8 + 7 - centerPane.add(row1Pane); - // 最近使用 - usedColorPane = new UsedColorPane(1, 8, 1, ColorSelectConfigManager.getInstance().getColors(), this, true, false); - usedColorPane.getPane().setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 8)); - row1Pane.add(usedColorPane.getPane()); - - JPanel menuColorPane1 = new JPanel(); - centerPane.add(menuColorPane1); - - menuColorPane1.setLayout(new GridLayout(5, 8, 1, 1)); - menuColorPane1.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 8)); - for (int i = 0; i < ColorFactory.MenuColors.length; i++) { - menuColorPane1.add(new ColorCell(ColorFactory.MenuColors[i], this)); - } - - centerPane.add(Box.createVerticalStrut(1)); - - // mod by anchore 16/11/16 - UIButton customButton = new UIButton(Inter.getLocText("FR-Designer-Basic_More_Color")); - //UIButton customButton = new UIButton(Inter.getLocText(new String[]{"More", "Color"}) + "..."); - - customButton.addMouseListener(new MouseAdapter() { - @Override - public void mousePressed(MouseEvent e) { - customButtonPressed(); - } - }); - customButton.setCursor(new Cursor(Cursor.HAND_CURSOR)); - JPanel centerPane1 = FRGUIPaneFactory.createBorderLayout_S_Pane(); - centerPane1.setBorder(BorderFactory.createEmptyBorder(2, 8, 0, 8)); - centerPane1.add(customButton, BorderLayout.NORTH); - centerPane.add(centerPane1); - } - - - - /** - * 添加监听 - * @param 监听列表 - * Add change listener. - */ - public void addChangeListener(ChangeListener changeListener) { - this.colorChangeListenerList.add(changeListener); - } - - @Override - protected String title4PopupWindow() { - return "Color"; - } - - /** - * 获取颜色 - * @return 颜色 - * Return the color. - */ - public Color getColor() { - return color; - } - - /** - * 获取颜色 - * - * @return 颜色 - */ - public Color getNotNoneColor() { - if (color == null) { - setColor(Color.WHITE); - return Color.WHITE; - } - return color; - } - - /** - * Set the color. - * - * @param color - * the new color. - */ - @Override - public void setColor(Color color) { - this.color = color; - - // fire color change. - if (!colorChangeListenerList.isEmpty()) { - ChangeEvent evt = new ChangeEvent(this); - - for (int i = 0; i < colorChangeListenerList.size(); i++) { - this.colorChangeListenerList.get(i).stateChanged(evt); - } - } - ColorSelectConfigManager.getInstance().addToColorQueue(color); - this.repaint(); - } - - /** - * 设置颜色 - * @param 颜色位置 - */ - @Override - public void colorSetted(ColorCell colorCell) { - colorCell.repaint(); - } - - protected void doTransparent() { - setColor(null); - } - protected void customButtonPressed() { - pane = new ColorSelectDetailPane(Color.WHITE); - ColorSelectDialog.showDialog(DesignerContext.getDesignerFrame(), pane, Color.WHITE, this); - } - - @Override - public Dimension getPreferredSize() { - if(isSupportTransparent){ - return new Dimension(super.getPreferredSize().width, TRANSPANENT_WINDOW_HEIGHT); - } - return new Dimension(super.getPreferredSize().width, WINDWO_HEIGHT); - } - - /** - * 更新最近使用颜色 - * - */ - public void updateUsedColor(){ - usedColorPane.updateUsedColor(); - } - + private static final long serialVersionUID = -8634152305687249392L; + + private Color color = null; // color + // color setting action. + private ArrayList colorChangeListenerList = new ArrayList(); + + // 颜色选择器 + private ColorSelectDetailPane pane; + // 是否支持透明 + private boolean isSupportTransparent; + + private final static int TRANSPANENT_WINDOW_HEIGHT = 165; + private final static int WINDWO_HEIGHT = 150; + + // 最近使用颜色 + private UsedColorPane usedColorPane; + + /** + * Constructor. + */ + public NewColorSelectPane() { + this(false); + } + + /** + * Constructor. + */ + public NewColorSelectPane(boolean isSupportTransparent) { + this.isSupportTransparent = isSupportTransparent; + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + this.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 5)); + if (isSupportTransparent) { + UIButton transpanrentButton = new UIButton(Inter.getLocText("FR-Designer_ChartF-Transparency")); + this.add(transpanrentButton, BorderLayout.NORTH); + transpanrentButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + doTransparent(); + } + }); + } + + // center + JPanel centerPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); + this.add(centerPane, BorderLayout.CENTER); + + // 第一行 + JPanel row1Pane = new JPanel(FRGUIPaneFactory.createBorderLayout()); + row1Pane.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 0)); + row1Pane.setPreferredSize(new Dimension(135, 16)); // 宽度为 16 * 8 + 7 + centerPane.add(row1Pane); + // 最近使用 + usedColorPane = new UsedColorPane(1, 8, 1, this, true, false); + usedColorPane.getPane().setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 8)); + row1Pane.add(usedColorPane.getPane()); + + JPanel menuColorPane1 = new JPanel(); + centerPane.add(menuColorPane1); + + menuColorPane1.setLayout(new GridLayout(5, 8, 1, 1)); + menuColorPane1.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 8)); + for (int i = 0; i < ColorFactory.MenuColors.length; i++) { + menuColorPane1.add(new ColorCell(ColorFactory.MenuColors[i], this)); + } + + centerPane.add(Box.createVerticalStrut(1)); + + // mod by anchore 16/11/16 + UIButton customButton = new UIButton(Inter.getLocText("FR-Designer-Basic_More_Color")); + + customButton.addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + customButtonPressed(); + } + }); + customButton.setCursor(new Cursor(Cursor.HAND_CURSOR)); + JPanel centerPane1 = FRGUIPaneFactory.createBorderLayout_S_Pane(); + centerPane1.setBorder(BorderFactory.createEmptyBorder(2, 8, 0, 8)); + centerPane1.add(customButton, BorderLayout.NORTH); + centerPane.add(centerPane1); + } + + + /** + * 添加监听 + * + * @param 监听列表 Add change listener. + */ + public void addChangeListener(ChangeListener changeListener) { + this.colorChangeListenerList.add(changeListener); + } + + @Override + protected String title4PopupWindow() { + return "Color"; + } + + /** + * 获取颜色 + * + * @return 颜色 + * Return the color. + */ + public Color getColor() { + return color; + } + + /** + * 获取颜色 + * + * @return 颜色 + */ + public Color getNotNoneColor() { + if (color == null) { + setColor(Color.WHITE); + return Color.WHITE; + } + return color; + } + + /** + * Set the color. + * + * @param color the new color. + */ + @Override + public void setColor(Color color) { + this.color = color; + + // fire color change. + if (!colorChangeListenerList.isEmpty()) { + ChangeEvent evt = new ChangeEvent(this); + + for (int i = 0; i < colorChangeListenerList.size(); i++) { + this.colorChangeListenerList.get(i).stateChanged(evt); + } + } + ColorSelectConfigManager.getInstance().addToColorQueue(color); + this.repaint(); + } + + /** + * 设置颜色 + * + * @param 颜色位置 + */ + @Override + public void colorSetted(ColorCell colorCell) { + colorCell.repaint(); + } + + protected void doTransparent() { + setColor(null); + } + + protected void customButtonPressed() { + pane = new ColorSelectDetailPane(Color.WHITE); + ColorSelectDialog.showDialog(DesignerContext.getDesignerFrame(), pane, Color.WHITE, this); + } + + @Override + public Dimension getPreferredSize() { + if (isSupportTransparent) { + return new Dimension(super.getPreferredSize().width, TRANSPANENT_WINDOW_HEIGHT); + } + return new Dimension(super.getPreferredSize().width, WINDWO_HEIGHT); + } + + /** + * 更新最近使用颜色 + */ + public void updateUsedColor() { + usedColorPane.updateUsedColor(); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/style/color/RecentUseColorPane.java b/designer_base/src/com/fr/design/style/color/RecentUseColorPane.java index 914436d0f1..c85ff6be8a 100644 --- a/designer_base/src/com/fr/design/style/color/RecentUseColorPane.java +++ b/designer_base/src/com/fr/design/style/color/RecentUseColorPane.java @@ -1,55 +1,48 @@ package com.fr.design.style.color; -import java.awt.BorderLayout; -import java.awt.Color; - -import javax.swing.JColorChooser; -import javax.swing.JPanel; - import com.fr.design.dialog.BasicPane; import com.fr.design.layout.FRGUIPaneFactory; -public class RecentUseColorPane extends BasicPane implements ColorSelectable{ - - JColorChooser chooser; - - @Override - protected String title4PopupWindow() { - return null; - } - - public RecentUseColorPane() { - } - - public RecentUseColorPane(JColorChooser chooser) { - this.chooser = chooser; - - // center - JPanel centerPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); - this.add(centerPane, BorderLayout.CENTER); - // 最近使用 - UsedColorPane pane = new UsedColorPane(2, 10, ColorSelectConfigManager.getInstance().getColors(),this); - centerPane.add(pane.getPane()); - } - - /** - * 选中颜色 - * - * @param 颜色 - */ - @Override - public void colorSetted(ColorCell color) { - - } - - @Override - public Color getColor() { - return null; - } - - @Override - public void setColor(Color color) { - chooser.getSelectionModel().setSelectedColor(color); - } - +import javax.swing.*; +import java.awt.*; + +public class RecentUseColorPane extends BasicPane implements ColorSelectable { + + private JColorChooser chooser; + + @Override + protected String title4PopupWindow() { + return null; + } + + + public RecentUseColorPane(JColorChooser chooser) { + this.chooser = chooser; + + // center + JPanel centerPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); + this.add(centerPane, BorderLayout.CENTER); + // 最近使用 + UsedColorPane pane = new UsedColorPane(2, 10, this); + centerPane.add(pane.getPane()); + } + + /** + * 选中颜色 + */ + @Override + public void colorSetted(ColorCell color) { + + } + + @Override + public Color getColor() { + return null; + } + + @Override + public void setColor(Color color) { + chooser.getSelectionModel().setSelectedColor(color); + } + } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/style/color/UsedColorPane.java b/designer_base/src/com/fr/design/style/color/UsedColorPane.java index c8dfdcaece..5594254c37 100644 --- a/designer_base/src/com/fr/design/style/color/UsedColorPane.java +++ b/designer_base/src/com/fr/design/style/color/UsedColorPane.java @@ -1,119 +1,112 @@ package com.fr.design.style.color; -import java.awt.Color; -import java.awt.GridLayout; - -import javax.swing.BorderFactory; -import javax.swing.JPanel; - import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ibutton.SpecialUIButton; -public class UsedColorPane extends BasicPane{ - - public static final Color DEFAULT_COLOR = new Color(222,222,222); - - // 最近使用面板列数 - private int columns; - // 最近使用面板行数 - private int rows; - // 留白的单元格数量 - private int reserveCells; - // 是否需要取色器按钮 - private boolean needPickColorButton; - // 是否在取色时实时设定颜色 - private boolean setColorRealTime; - // 最近使用颜色 - private Object[] colors; - // 最近使用面板 - private JPanel pane; - - private ColorSelectable selectable; - - public JPanel getPane() { - return pane; - } - - public void setPane(JPanel pane) { - this.pane = pane; - } - - public UsedColorPane(){ - - } - - /** - * 构造函数 - * - * @param rows 行 - * @param columns 列 - * @param reserveCells 留白的单元格个数 - * @param colors 最近使用的颜色 - * @param needPickColorButton 是否需要加上取色器按钮 - * @param setColorRealTime 取色器是否实时设定颜色 - */ - public UsedColorPane(int rows,int columns,int reserveCells, Object[] colors, ColorSelectable selectable, boolean needPickColorButton, boolean setColorRealTime){ - this.columns = columns; - this.rows = rows; - this.reserveCells = reserveCells; - this.colors = colors; - this.selectable = selectable; - this.needPickColorButton = needPickColorButton; - this.setColorRealTime = setColorRealTime; - initialComponents(); - } - - public UsedColorPane(int rows,int columns, Object[] colors,ColorSelectable selectable){ - this(rows, columns, 0, colors, selectable, false, false); - } - - private void initialComponents(){ - int total = columns * rows; - JPanel panel = new JPanel(); - panel.setLayout(new GridLayout(rows,columns, 1, 1)); - panel.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 8)); - Color[] colors = ColorSelectConfigManager.getInstance().getColors(); - int size = colors.length; - - int i = 0; - if (needPickColorButton) { - // 取色按钮 - SpecialUIButton pickColorButton = PickColorButtonFactory.getPickColorButton(selectable, PickColorButtonFactory.IconType.ICON16, setColorRealTime); - panel.add(pickColorButton); - i++; - this.reserveCells += 1; - } - while (i < this.reserveCells) { - ColorCell cc = new ColorCell(DEFAULT_COLOR, selectable); - cc.setVisible(false); - panel.add(cc); - i++; - } - while (i < total) { - Color color = i < size ? colors[size-1-i]: DEFAULT_COLOR; - panel.add(new ColorCell(color == null ? DEFAULT_COLOR : color, selectable)); - i++; - } - this.pane = panel; - } - - /** - * 更新最近使用颜色 - * - */ - public void updateUsedColor(){ - int total = columns * rows; - Color[] colors = ColorSelectConfigManager.getInstance().getColors(); - int size = colors.length; - for(int i=this.reserveCells; i Date: Mon, 24 Apr 2017 16:15:24 +0800 Subject: [PATCH 52/76] =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=A4=8D=E7=94=A8?= =?UTF-8?q?=E8=BE=B9=E7=95=8C=E7=B2=98=E8=B4=B4=EF=BC=8C=E4=B9=8B=E5=89=8D?= =?UTF-8?q?=E8=80=83=E8=99=91=E7=9A=84=E7=89=87=E9=9D=A2=E4=BA=86=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/mainframe/FormSelectionUtils.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java index 90945b1e80..7a03782c25 100644 --- a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java +++ b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java @@ -133,8 +133,10 @@ public class FormSelectionUtils { boolean xOut = x < 0 || x + copiedCreator.getWidth() / 2 + xoffset > container.getWidth(); boolean yOut = y < 0 || y + copiedCreator.getHeight() / 2 + yoffset > container.getHeight(); + boolean isEdge = (x - DELAY_X_Y == container.getWidth() - copiedCreator.getWidth() / 2 - xoffset) + && (y - DELAY_X_Y == container.getHeight() - copiedCreator.getHeight() / 2 - yoffset); + y = yOut ? container.getHeight() - copiedCreator.getHeight() / 2 - yoffset : y; - boolean isEdge = (x - DELAY_X_Y == container.getWidth() - copiedCreator.getWidth() / 2 - xoffset); if (xOut) { if (isEdge) { //向左偏移 From 9a6bc3f93dd325e7c3c46581983f742f26aef02a Mon Sep 17 00:00:00 2001 From: syoki Date: Tue, 25 Apr 2017 18:41:22 +0900 Subject: [PATCH 53/76] =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=20=E6=97=A5=E6=96=87=20design=E9=83=A8=E5=88=86=20?= =?UTF-8?q?=E7=AC=AC1-200=E4=B8=AAkey=E4=BF=AE=E6=94=B9=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=20=E5=BA=84=E5=A5=87=20syoki?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/locale/designer_ja_JP.properties | 278 +++++++++--------- 1 file changed, 139 insertions(+), 139 deletions(-) diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index 87d0801981..a9b1b3923a 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -1,202 +1,202 @@ # generated time: \u661F\u671F\u56DB \u5341\u4E00\u6708 24 12:02:51 CST 2016 -FR-Designer-BBSLogin_Account=\u30E6\u30FC\u30B6\u30FC\u540D -FR-Designer-BBSLogin_Connection-Failure=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u63A5\u7D9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u73FE\u5728\u306E\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u72B6\u614B\u3092\u691C\u67FB\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Designer-BBSLogin_Account=\u30E6\u30FC\u30B6\u30FCID +FR-Designer-BBSLogin_Connection-Failure=\u30CD\u30C3\u30C8\u63A5\u7D9A\u5931\u6557\u3001\u30CD\u30C3\u30C8\u72B6\u614B\u3054\u78BA\u8A8D\u4E0B\u3055\u3044 FR-Designer-BBSLogin_Connection-Failure-Tip=\u30D2\u30F3\u30C8 -FR-Designer-BBSLogin_Forgot-Password=\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5FD8\u308C\u305F +FR-Designer-BBSLogin_Forgot-Password=\u30D1\u30B9\u30EF\u30FC\u30C9\u5FD8\u308C\u305F FR-Designer-BBSLogin_Login=\u30ED\u30B0\u30A4\u30F3 -FR-Designer-BBSLogin_Login-Failure-Tip=\u30E6\u30FC\u30B6\u30FC\u540D\u307E\u305F\u306F\u30D1\u30B9\u30EF\u30FC\u30C9\u30A8\u30E9\u30FC\u3067\u3059\u3002\u518D\u5EA6\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Designer-BBSLogin_Login-Failure-Tip=\u30E6\u30FC\u30B6\u30FCID\u3084\u30D1\u30B9\u30EF\u30FC\u30C9\u30A8\u30E9\u30FC\u3001\u518D\u30ED\u30B0\u30A4\u30F3\u4E0B\u3055\u3044 FR-Designer-BBSLogin_Password=\u30D1\u30B9\u30EF\u30FC\u30C9 -FR-Designer-BBSLogin_Password-Empty-Tip=\u30D1\u30B9\u30EF\u30FC\u30C9\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +FR-Designer-BBSLogin_Password-Empty-Tip=\u30D1\u30B9\u30EF\u30FC\u30C9\u306F\u7A7A\u6B04\u306B\u3067\u304D\u307E\u305B\u3093 FR-Designer-BBSLogin_Register-Account=\u30A2\u30AB\u30A6\u30F3\u30C8\u767B\u9332 -FR-Designer-BBSLogin_Switch-Account=\u30A2\u30AB\u30A6\u30F3\u30C8\u5207\u308A\u66FF\u3048 -FR-Designer-BBSLogin_Privite-Message=\u30D7\u30E9\u30A4\u30D9\u30FC\u30C8\u30E1\u30C3\u30BB\u30FC\u30B8 -FR-Designer-BBSLogin_Times=\u6B21 -FR-Designer-BBSLogin_Username-Empty-Tip=\u30E6\u30FC\u30B6\u30FC\u540D\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 -FR-Designer-Basic_More_Color=\u3082\u3063\u3068\u8272 -FR-Designer-Estate_Any=\u4E0D\u9650 +FR-Designer-BBSLogin_Switch-Account=\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u5207\u308A\u66FF\u3048 +FR-Designer-BBSLogin_Privite-Message=\u500B\u4EBA\u30E1\u30C3\u30BB\u30FC\u30B8 +FR-Designer-BBSLogin_Times=\u56DE +FR-Designer-BBSLogin_Username-Empty-Tip=\u30E6\u30FC\u30B6\u30FCID\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093 +FR-Designer-Basic_More_Color=\u305D\u306E\u4ED6\uFF08\u8272\uFF09 +FR-Designer-Estate_Any=\u5236\u9650\u306A\u3057 FR-Designer-Estate_Default_Font=\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A9\u30F3\u30C8 -FR-Designer-Estate_Default_Null=\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u7A7A\u6B04\u306B\u3059\u308B +FR-Designer-Estate_Default_Null=\u30C7\u30D5\u30A9\u30EB\u30C8\u306F\u7A7A FR-Designer-Estate_Default_Text=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024 -FR-Designer-Estate_Parameter_Null_Text=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3092\u7A7A\u6B04\u306B\u3057\u8868\u793A\u3059\u308B -FR-Designer-Estate_Radio-Group=\u4E0D\u52D5\u7523\u696D\u901A\u7528\u30DC\u30BF\u30F3\u30BB\u30C3\u30C8\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB -FR-Designer-Estate_Selected_Font=\u9078\u629E\u3057\u305F\u30D5\u30A9\u30F3\u30C8 -FR-Designer-Estate_Widget_Value=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u5024 -FR-Designer-Layout_Adaptive_Layout=\u81EA\u9069\u5FDC\u914D\u7F6E +FR-Designer-Estate_Parameter_Null_Text=\u30D1\u30E9\u30E1\u30FC\u30BF\u304C\u7A7A\u306B\u306A\u308B\u6642\u306E\u8868\u793A\u306F +FR-Designer-Estate_Radio-Group=\u4E0D\u52D5\u7523\u696D\u6C4E\u7528\u30E9\u30B8\u30AA\u30DC\u30BF\u30F3\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 +FR-Designer-Estate_Selected_Font=\u30D5\u30A9\u30F3\u30C8\u3092\u9078\u629E +FR-Designer-Estate_Widget_Value=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5024 +FR-Designer-Layout_Adaptive_Layout=\u81EA\u5DF1\u8ABF\u6574\u30EC\u30A4\u30A2\u30A6\u30C8 FR-Designer-Output_Background_Set=\u80CC\u666F\u8A2D\u5B9A FR-Designer-Output_Default_Background=\u30C7\u30D5\u30A9\u30EB\u30C8\u80CC\u666F -FR-Designer-Output_Excel_Page=Excel\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8(\u30DA\u30FC\u30B8\u5225\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8) -FR-Designer-Output_Excel_Sheet=Excel\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8(\u30DA\u30FC\u30B8\u5225\u30B7\u30FC\u30C8\u5225\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8) -FR-Designer-Output_Excel_Simple=Excel\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8(\u5143\u306E\u307E\u307E\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8) -FR-Designer-Plugin_PluginMarket_Coding=\u30D7\u30E9\u30B0\u30A4\u30F3\u30DE\u30FC\u30B1\u30C3\u30C8\u306F\u958B\u767A\u4E2D\u3067\u3059\u3002\u3054\u671F\u5F85\u304F\u3060\u3055\u3044 -FR-Desinger-Plugin_Updater_UpdateAndUpgrade=\u66F4\u65B0\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 -FR-Desinger-Plugin_Updater_Checking_Jar_Update=Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u30C1\u30A7\u30C3\u30AF\u66F4\u65B0\u4E2D -FR-Desinger-Plugin_Updater_Checking_Version_Update=\u30D0\u30FC\u30B8\u30E7\u30F3\u30C1\u30A7\u30C3\u30AF\u66F4\u65B0\u4E2D -FR-Desinger-Plugin_Updater_Update=\u66F4\u65B0 -FR-Desinger-Plugin_Updater_Upgrade=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 -FR-Desinger-Plugin_Updater_Restore=\u5FA9\u5143 -FR-Desinger-Plugin_Updater_New_Version_Available=\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3\u6709\u308A -FR-Desinger-Plugin_Updater_JarUpdate=Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u66F4\u65B0 -FR-Desinger-Plugin_Updater_VersionUpgrade=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7 -FR-Desinger-Plugin_Updater_Previous_Version=\u65E7\u30D0\u30FC\u30B8\u30E7\u30F3\u307E\u3067\u306B -FR-Desinger-Plugin_Updater_Current_Version=\u73FE\u30D0\u30FC\u30B8\u30E7\u30F3 -FR-Desinger-Plugin_Updater_Not_Install_Version=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u306A\u3044 +FR-Designer-Output_Excel_Page=Excel\u51FA\u529B(\u30DA\u30FC\u30B8\u5225) +FR-Designer-Output_Excel_Sheet=Excel\u51FA\u529B(\u30DA\u30FC\u30B8\u5225\u30B7\u30FC\u30C8\u5225) +FR-Designer-Output_Excel_Simple=Excel\u51FA\u529B(\u5143\u306E\u307E\u307E) +FR-Designer-Plugin_PluginMarket_Coding=\u30D7\u30E9\u30B0\u30A4\u30F3\u30B9\u30C8\u30A2\u958B\u767A\u4E2D\u3001\u304A\u5F85\u3061\u4E0B\u3055\u3044 +FR-Desinger-Plugin_Updater_UpdateAndUpgrade=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C8 +FR-Desinger-Plugin_Updater_Checking_Jar_Update=Jar\u30D5\u30A1\u30A4\u30EB\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u691C\u8A3C\u4E2D +FR-Desinger-Plugin_Updater_Checking_Version_Update=\u30D1\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u691C\u8A3C\u4E2D +FR-Desinger-Plugin_Updater_Update=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 +FR-Desinger-Plugin_Updater_Upgrade=\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9 +FR-Desinger-Plugin_Updater_Restore=\u30EA\u30AB\u30D0\u30EA +FR-Desinger-Plugin_Updater_New_Version_Available=\u65B0\u3057\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u3042\u308A\u307E\u3059 +FR-Desinger-Plugin_Updater_JarUpdate=Jar\u30D5\u30A1\u30A4\u30EB\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 +FR-Desinger-Plugin_Updater_VersionUpgrade=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C8 +FR-Desinger-Plugin_Updater_Previous_Version=\u4EE5\u524D\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3078? +FR-Desinger-Plugin_Updater_Current_Version=\u73FE\u5728\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\uFF1A +FR-Desinger-Plugin_Updater_Not_Install_Version=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u7528\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u3042\u308A\u307E\u305B\u3093 FR-Desinger-Plugin_Updater_Latest_Version=\u6700\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3 -FR-Desinger-Plugin_Updater_Jar_Downloading=Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u5B8C\u6210\u5F85\u3061 -FR-Desinger-Plugin_Updater_Version_Downloading=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30D1\u30C3\u30B1\u30FC\u30B8\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u5B8C\u6210\u5F85\u3061 -FR-Desinger-Plugin_Updater_Restart_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u518D\u8D77\u52D5 -FR-Desinger-Plugin_Updater_Connect_VersionUpdateServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u66F4\u65B0\u30B5\u30FC\u30D0\u30FC\u63A5\u7D9A\u3067\u304D\u306A\u3044 -FR-Desinger-Plugin_Updater_Connect_VersionUpgradeServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30B5\u30FC\u30D0\u30FC\u63A5\u7D9A\u3067\u304D\u306A\u3044 -FR-Desinger-Plugin_Updater_Already_Latest_Version=\u65E2\u306B\u6700\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3 -FR-Desinger-Plugin_Updater_Backup_OldJar_To=\u65E7Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u306F\u65E2\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7 -FR-Desinger-Plugin_Updater_Backup_OldVersion_To=\u65E7\u30D0\u30FC\u30B8\u30E7\u30F3\u30D1\u30C3\u30B1\u30FC\u30B8\u306F\u65E2\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7 -FR-Desinger-Plugin_Updater_Please_Restart=\u30C7\u30B6\u30A4\u30CA\u30FC\u306F\u518D\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044 -FR-Desinger-Plugin_Updater_Jar_Restore=\u65E7Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u5FA9\u5143 -FR-Desinger-Plugin_Updater_Version_Restore=\u30D0\u30FC\u30B8\u30E7\u30F3\u5FA9\u5143 -FR-Desinger-Plugin_Updater_Restore_To=\u5FA9\u5143 -FR-Desinger-Plugin_Updater_WorksAfterRestart=\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u518D\u8D77\u52D5\u5F8C\u306B\u6709\u52B9\u3059\u308B +FR-Desinger-Plugin_Updater_Jar_Downloading=Jar\u30D5\u30A1\u30A4\u30EB\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u7D42\u4E86\u3092\u5F85\u3063\u3066\u3044\u308B +FR-Desinger-Plugin_Updater_Version_Downloading=\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C8\u30D1\u30C3\u30B1\u30FC\u30B8\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3092\u5F85\u3063\u3066\u3044\u308B +FR-Desinger-Plugin_Updater_Restart_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u518D\u8D77\u52D5 +FR-Desinger-Plugin_Updater_Connect_VersionUpdateServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30B5\u30FC\u30D0\u306B\u63A5\u7D9A\u3067\u304D\u306A\u3044 +FR-Desinger-Plugin_Updater_Connect_VersionUpgradeServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C8\u30B5\u30FC\u30D0\u306B\u63A5\u7D9A\u3067\u304D\u306A\u3044 +FR-Desinger-Plugin_Updater_Already_Latest_Version=\u6700\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3\u306B\u306A\u308A\u307E\u3057\u305F +FR-Desinger-Plugin_Updater_Backup_OldJar_To=\u53E4\u3044Jar\u30D5\u30A1\u30A4\u30EB\u3092\u4E0B\u8A18\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3057\u307E\u3057\u305F\uFF1A +FR-Desinger-Plugin_Updater_Backup_OldVersion_To=\u53E4\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u4E0B\u8A18\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3057\u307E\u3057\u305F\uFF1A +FR-Desinger-Plugin_Updater_Please_Restart=\u3001\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u518D\u8D77\u52D5\u3057\u3066\u4E0B\u3055\u3044 +FR-Desinger-Plugin_Updater_Jar_Restore=Jar\u30D5\u30A1\u30A4\u30EB\u30EA\u30AB\u30D0\u30EA +FR-Desinger-Plugin_Updater_Version_Restore=\u30D0\u30FC\u30B8\u30E7\u30F3\u30EA\u30AB\u30D0\u30EA +FR-Desinger-Plugin_Updater_Restore_To=\u30EA\u30AB\u30D0\u30EA +FR-Desinger-Plugin_Updater_WorksAfterRestart=\u30D0\u30FC\u30B8\u30E7\u30F3\u3001\u518D\u8D77\u52D5\u5F8C\u6709\u52B9\u306B\u306A\u308A\u307E\u3059 FR-Designer-Submit_Condition=\u6761\u4EF6 -FR-Designer-Widget-Title_border=\u30D5\u30EC\u30FC\u30E0 +FR-Designer-Widget-Title_border=\u67A0 FR-Designer-Widget-Title_border_color=\u8272 FR-Designer_AbsoluteLayout=\u7D76\u5BFE\u30EC\u30A4\u30A2\u30A6\u30C8 -FR-Designer_Allow_Decimals=\u5C0F\u6570\u3092\u8A31\u53EF -FR-Designer_Allow_Negative=\u30DE\u30A4\u30CA\u30B9\u5024\u3092\u8A31\u53EF -FR-Designer_Background-Click=\u30DE\u30A6\u30B9\u30AF\u30EA\u30C3\u30AF\u80CC\u666F +FR-Designer_Allow_Decimals=\u5C0F\u6570\u306E\u8A31\u53EF +FR-Designer_Allow_Negative=\u8CA0\u5024\u306E\u8A31\u53EF +FR-Designer_Background-Click=\u30DE\u30A6\u30B9\u30AF\u30EA\u30C3\u30AF\u6642\u80CC\u666F FR-Designer_Background-Initial=\u521D\u671F\u80CC\u666F -FR-Designer_Background-Over=\u30DE\u30A6\u30B9\u30D5\u30ED\u30FC\u30C8\u80CC\u666F -FR-Designer_Bar-Code-Exception-Tip=\u30C7\u30FC\u30BF\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 -FR-Designer_Block-intersect=\u30E2\u30B8\u30E5\u30FC\u30EB\u3068\u30E2\u30B8\u30E5\u30FC\u30EB\u9593\u3092\u91CD\u306D\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +FR-Designer_Background-Over=\u30DE\u30A6\u30B9\u30AA\u30FC\u30D0\u30FC\u6642\u80CC\u666F +FR-Designer_Bar-Code-Exception-Tip=\u30C7\u30FC\u30BF\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093 +FR-Designer_Block-intersect=\u30D6\u30ED\u30C3\u30AF\u3068\u30D6\u30EB\u30C3\u30AF\u9593\u306E\u91CD\u306A\u308A\u7981\u6B62 FR-Designer_BorderLayout=\u30DC\u30FC\u30C0\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8 FR-Designer_Button-Hotkeys=\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC FR-Designer_Button-Icon=\u30DC\u30BF\u30F3\u30A2\u30A4\u30B3\u30F3 -FR-Designer_Button-Name=\u30DC\u30BF\u30F3\u540D\u79F0 +FR-Designer_Button-Name=\u30DC\u30BF\u30F3\u540D FR-Designer_Button-Type=\u30DC\u30BF\u30F3\u30BF\u30A4\u30D7 -FR-Designer_CardLayout=Tab\u914D\u7F6E +FR-Designer_CardLayout=Tab\u30EC\u30A4\u30A2\u30A6\u30C8 FR-Designer_Cell=\u30BB\u30EB -FR-Designer_Chart_Cell=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u9023\u52D5\u30BB\u30EB -FR-Designer_Chart_Float=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u9023\u52D5\u30D5\u30ED\u30FC\u8981\u7D20 -FR-Designer_Chart_Float_chart=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u30D5\u30ED\u30FC\u7A93\u30B0\u30E9\u30D5 -FR-Designer_Check-for-Updates=\u66F4\u65B0\u3092\u78BA\u8A8D -FR-Designer_Choose-Data-Confusion-Tip=\ \u6DF7\u4EA4\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u9078\u629E\u5F8C\u30D7\u30EC\u30D3\u30E5\u30FC\u3057\u3066\u304F\u3060\u3055\u3044 -FR-Designer_Close=\u30AF\u30ED\u30FC\u30BA +FR-Designer_Chart_Cell=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u30BB\u30EB\u9023\u52D5 +FR-Designer_Chart_Float=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u30D5\u30ED\u30FC\u30C6\u30A3\u30F3\u30B0\u8981\u7D20\u9023\u52D5 +FR-Designer_Chart_Float_chart=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u30D5\u30ED\u30FC\u30C6\u30A3\u30F3\u30B0\u30A6\u30A3\u30F3\u30C9\u30A6\u30B0\u30E9\u30D5 +FR-Designer_Check-for-Updates=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3092\u78BA\u8A8D +FR-Designer_Choose-Data-Confusion-Tip=\ \u6DF7\u4E71\u3055\u305B\u308B\u3079\u304D\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u9078\u629E\u3057\u3066\u30D7\u30EC\u30D3\u30E5\u30FC\u4E0B\u3055\u3044 +FR-Designer_Close=\u9589\u3058\u308B FR-Designer_Column=\u5217 -FR-Designer_Column_Measure=\u5217\u8EF8/\u5EA6\u91CF\u5024 +FR-Designer_Column_Measure=\u5217\u8EF8/\u30E1\u30C8\u30EA\u30C3\u30AF FR-Designer_Condition_Attributes=\u6761\u4EF6\u5C5E\u6027 -FR-Designer_Confusion-Col-Name=\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u79F0 -FR-Designer_Confusion-key=\u6DF7\u4EA4\u3059\u308B\u30AD\u30FC\u30EF\u30FC\u30C9 -FR-Designer_Currency_Line=\u91D1\u984D\u7DDA -FR-Designer_Current_tab=\u73FE\u5728\u306E\u7DE8\u96C6tab -FR-Designer_Custom=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA -FR-Designer_Custom-Angle=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u89D2\u5EA6 -FR-Designer_DS-Dictionary=\u30C7\u30FC\u30BF\u5B57\u5178 -FR-Designer_Data-confusion=\u30C7\u30FC\u30BF\u6DF7\u4EA4 +FR-Designer_Confusion-Col-Name=\u30D5\u30A3\u30FC\u30EB\u30C9\u540D +FR-Designer_Confusion-key=\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u6DF7\u4E71\u3055\u305B\u308B +FR-Designer_Currency_Line=\u6841\u533A\u5207\u308A\u7DDA +FR-Designer_Current_tab=tab\u7DE8\u96C6\u4E2D +FR-Designer_Custom=\u30AB\u30B9\u30BF\u30E0 +FR-Designer_Custom-Angle=\u30AB\u30B9\u30BF\u30E0\u89D2\u5EA6 +FR-Designer_DS-Dictionary=\u30C7\u30FC\u30BF\u8F9E\u66F8 +FR-Designer_Data-confusion=\u30C7\u30FC\u30BF\u6DF7\u4E71 FR-Designer_Data_Type=\u30C7\u30FC\u30BF\u30BF\u30A4\u30D7 -FR-Designer_Double_Click_Edit_OR_Clear=\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u7DE8\u96C6\u307E\u305F\u306F\u30AF\u30EA\u30A2\u3059\u308B -FR-Designer_Edit_Button_ToolBar=\u30DC\u30BF\u30F3\u306B\u3042\u308B\u30C4\u30FC\u30EB\u6B04\u7DE8\u96C6 -FR-Designer_Email=\u30E1\u30FC\u30EB +FR-Designer_Double_Click_Edit_OR_Clear=\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u7DE8\u96C6\u3084\u30AF\u30EA\u30A2\u3092\u884C\u3046 +FR-Designer_Edit_Button_ToolBar=\u30DC\u30BF\u30F3\u306E\u30C4\u30FC\u30EB\u30D0\u30FC\u3092\u7DE8\u96C6 +FR-Designer_Email=E\u30E1\u30FC\u30EB FR-Designer_Enabled=\u4F7F\u7528\u53EF\u80FD -FR-Designer_End-Date=\u7D42\u4E86\u65E5\u671F -FR-Designer_ExportAndOutput=\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8 +FR-Designer_End-Date=\u7D42\u4E86\u65E5 +FR-Designer_ExportAndOutput=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 FR-Designer_FRFont=\u30D5\u30A9\u30F3\u30C8 -FR-Designer_FS_Close_Other_Templates=\u305D\u306E\u4ED6\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u9589\u3058\u308B +FR-Designer_FS_Close_Other_Templates=\u4ED6\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u9589\u3058\u308B FR-Designer_File=\u30D5\u30A1\u30A4\u30EB -FR-Designer_Filter_Conditions=\u9078\u5225\u6761\u4EF6 -FR-Designer_Finish-Modify-Share=\u4FEE\u6B63\u3092\u5B8C\u4E86\u3057\u3066\u30B7\u30A7\u30A2 -FR-Designer_Fit-App=App\u81EA\u9069\u5FDC -FR-Designer_Fit=\u81EA\u9069\u5FDC -FR-Designer_Font-Family=\u30D5\u30A9\u30F3\u30C8\u540D\u79F0 -FR-Designer_Font-Size=\u30D5\u30A9\u30F3\u30C8\u5927\u5C0F -FR-Designer_Forbid_Drag_into_Adapt_Pane=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u30D5\u30A9\u30FC\u30E0\u672C\u6587\u3092\u30C9\u30E9\u30C3\u30B0\u3059\u308B\u3053\u3068\u306F\u8A31\u3055\u308C\u306A\u3044 -FR-Designer_Forbid_Drag_into_Para_Pane=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u30D1\u30CD\u30EB\u306B\u30C9\u30E9\u30C3\u30B0\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +FR-Designer_Filter_Conditions=\u30D5\u30A3\u30EB\u30BF\u6761\u4EF6 +FR-Designer_Finish-Modify-Share=\u4FEE\u6B63\u3092\u7D42\u4E86\u3055\u305B\u3066\u5171\u6709 +FR-Designer_Fit-App=\u30A2\u30D7\u30EA\u81EA\u5DF1\u8ABF\u6574 +FR-Designer_Fit=\u81EA\u5DF1\u8ABF\u6574 +FR-Designer_Font-Family=\u30D5\u30A9\u30F3\u30C8\u540D +FR-Designer_Font-Size=\u30D5\u30A9\u30F3\u30C8\u30B5\u30A4\u30BA +FR-Designer_Forbid_Drag_into_Adapt_Pane=\u5F53\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u4E3B\u4F53\u306B\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u306F\u306A\u3089\u306A\u3044 +FR-Designer_Forbid_Drag_into_Para_Pane=\u5F53\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u30D1\u30E9\u30E1\u30FC\u30BF\u30D1\u30CD\u30EB\u306B\u30C9\u30E9\u30C3\u30B0\u3067\u304D\u307E\u305B\u3093 FR-Designer_Foreground=\u8272 -FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\u8868\u306E\u6A29\u9650\u7DE8\u96C6\u306B\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093 -FR-Designer_Form-Report=\u5E33\u7968\u30E2\u30B8\u30E5\u30FC\u30EB -FR-Designer_Form_EmbeddedTD=\u8868(\u5185\u8535\u30C7\u30FC\u30BF) -FR-Designer_Form_Module=\u8868\u30E2\u30B8\u30E5\u30FC\u30EB +FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u6A29\u9650\u7DE8\u96C6\u306F\u73FE\u6642\u70B9\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093 +FR-Designer_Form-Report=\u5E33\u7968\u30D6\u30ED\u30C3\u30AF +FR-Designer_Form_EmbeddedTD=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9(\u7D44\u307F\u8FBC\u307F\u30C7\u30FC\u30BF) +FR-Designer_Form_Module=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30E2\u30B8\u30E5\u30FC\u30EB FR-Designer_Format_explan=\u66F8\u5F0F\u8AAC\u660E -FR-Designer_Formula=\u516C\u5F0F -FR-Designer_Forum=BBS +FR-Designer_Formula=\u6570\u5F0F +FR-Designer_Forum=\u30D5\u30A9\u30FC\u30E9\u30E0 FR-Designer_Get-Cube=cube\u53D6\u5F97\u4E2D FR-Designer_Help=\u30D8\u30EB\u30D7 -FR-Designer_Hide=\u96A0\u3059 -FR-Designer_Hyperlink=\u30B9\u30FC\u30D1\u30FC\u30EA\u30F3\u30AF -FR-Designer_Hyperlink-Form_link=\u73FE\u5728\u306E\u8868\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 +FR-Designer_Hide=\u975E\u8868\u793A +FR-Designer_Hyperlink=\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF +FR-Designer_Hyperlink-Form_link=\u73FE\u5728\u306E\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 FR-Designer_IDCard=\u8EAB\u5206\u8A3C\u660E\u66F8 FR-Designer_Icon=\u30A2\u30A4\u30B3\u30F3 FR-Designer_Index=\u5217\u8EF8/\u6307\u6A19 -FR-Designer_Input_Rule=\u30EB\u30FC\u30EB\u8A18\u5165 +FR-Designer_Input_Rule=\u5165\u529B\u898F\u5247 FR-Designer_Language_Default=\u30C7\u30D5\u30A9\u30EB\u30C8 -FR-Designer_Layout=\u914D\u7F6E -FR-Designer_Layout-HBox=\u6C34\u5E73\u30B1\u30FC\u30B9\u914D\u7F6E -FR-Designer_Layout-Index=\u7D22\u5F15 -FR-Designer_Layout_Constraints=\u4F4D\u7F6E\u3068\u5927\u5C0F +FR-Designer_Layout=\u30EC\u30A4\u30A2\u30A6\u30C8 +FR-Designer_Layout-HBox=\u6C34\u5E73\u30DC\u30C3\u30AF\u30B9\u306E\u30EC\u30A4\u30A2\u30A6\u30C8 +FR-Designer_Layout-Index=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9 +FR-Designer_Layout_Constraints=\u4F4D\u7F6E\u3068\u30B5\u30A4\u30BA FR-Designer_Length=\u9577\u3055 -FR-Designer_Loading_Data=\u30C7\u30FC\u30BF\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3057\u3066\u3044\u307E\u3059 -FR-Designer_M-Exit=\u9000\u51FA +FR-Designer_Loading_Data=\u30C7\u30FC\u30BF\u30ED\u30FC\u30C9\u4E2D +FR-Designer_M-Exit=\u7D42\u4E86 FR-Designer_M-Help=\u30D8\u30EB\u30D7 FR-Designer_M-Insert=\u633F\u5165 -FR-Designer_M-Repeat-Freeze=\u91CD\u8907\u3068\u30D5\u30EA\u30FC\u30BA\u8A2D\u5B9A -FR-Designer_M-Server=\u30B5\u30FC\u30D0\u30FC -FR-Designer_M-SwitchWorkspace=\u4F5C\u696D\u76EE\u6B21\u5207\u308A\u66FF\u3048 +FR-Designer_M-Repeat-Freeze=\u7E70\u308A\u8FD4\u3057\u3068\u56FA\u5B9A\u306E\u8A2D\u5B9A +FR-Designer_M-Server=\u30B5\u30FC\u30D0 +FR-Designer_M-SwitchWorkspace=\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u5207\u308A\u66FF\u3048 FR-Designer_M-Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 -FR-Designer_MDX_Explain=\u6587\u6CD5\u66F8\u5F0F\u306FMDX\u6587\u6CD5\u3092\u53C2\u8003\u3002\n\u4F8B\u3048\u3070\uFF1A\nWITH\nMEMBER [Measures].[Special Discount] AS\n[Measures].[Discount Amount] * 1.5\nSELECT\n[Measures].[Special Discount] on COLUMNS,\nNON EMPTY [Product].[Product].MEMBERS ON Rows\nFROM [Adventure Works]\nWHERE [Product].[Category].[Bikes]\n\u6CE8\uFF1ACOLUMNS\u3001ROWS\u306F0\u30011\u3092\u4F7F\u7528\u3057\u3066\u4EE3\u66FF\u53EF\u80FD\u3067\u3059\u3002\u30AF\u30A8\u30EA\u8EF8\u306F\u4E8C\u3064\u306E\u8EF8\u623B\u3057\u306B\u306E\u307F\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002 +FR-Designer_MDX_Explain=\u6587\u6CD5\u66F8\u5F0F\u306FMDX\u6587\u6CD5\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\u4F8B\:\nWITH\nMEMBER [Measures].[Special Discount] AS\n[Measures].[Discount Amount] * 1.5\nSELECT\n[Measures].[Special Discount] on COLUMNS,\nNON EMPTY [Product].[Product].MEMBERS ON Rows\nFROM [Adventure Works]\nWHERE [Product].[Category].[Bikes]\n\u6CE8\uFF1ACOLUMNS\u3001ROWS\u30011\u3067\u53D6\u308A\u63DB\u3048\u308B\u3053\u3068\u304C\u3067\u304D\u3001\u691C\u7D22\u8EF8\u306F2\u8EF8\u306E\u623B\u308A\u3057\u304B\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3002 FR-Designer_M_Help-About_Software=\u30BD\u30D5\u30C8\u30A6\u30A7\u30A2\u306B\u3064\u3044\u3066 FR-Designer_M_Help-Tutorial=\u30D8\u30EB\u30D7\u30C1\u30E5\u30FC\u30C8\u30EA\u30A2\u30EB FR-Designer_Max_Value=\u6700\u5927\u5024 FR-Designer_Min_Value=\u6700\u5C0F\u5024 -FR-Designer_MobilePhone=\u643A\u5E2F\u96FB\u8A71 -FR-Designer_New_Value=\u65B0\u5024 +FR-Designer_MobilePhone=\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3 +FR-Designer_New_Value=\u65B0\u3057\u3044\u5024 FR-Designer_None=\u7121\u3057 -FR-Designer_PaperSize-Mobile=\u643A\u5E2F\u96FB\u8A71 -FR-Designer_PaperSize-Mobile-Large=\u643A\u5E2F\u96FB\u8A71\u5927\u30B9\u30AF\u30EA\u30FC\u30F3 -FR-Designer_PaperSize-Mobile-Small=\u643A\u5E2F\u96FB\u8A71\u5C0F\u30B9\u30AF\u30EA\u30FC\u30F3 -FR-Designer_Para-Body=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u753B\u9762 -FR-Designer_Parameters=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +FR-Designer_PaperSize-Mobile=\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3 +FR-Designer_PaperSize-Mobile-Large=\u643A\u5E2F\u5927\u753B\u9762 +FR-Designer_PaperSize-Mobile-Small=\u643A\u5E2F\u5C0F\u753B\u9762 +FR-Designer_Para-Body=\u30D1\u30E9\u30E1\u30FC\u30BF\u30D1\u30CD\u30EB +FR-Designer_Parameters=\u30D1\u30E9\u30E1\u30FC\u30BF FR-Designer_Phone=\u96FB\u8A71 FR-Designer_PostCode=\u90F5\u4FBF\u756A\u53F7 -FR-Designer_Present=\u30D5\u30A9\u30EB\u30E0 +FR-Designer_Present=\u5F62\u614B FR-Designer_Preview=\u30D7\u30EC\u30D3\u30E5\u30FC -FR-Designer_Preview-Data-Confusion=\u6DF7\u4EA4\u5F8C\u306E\u30C7\u30FC\u30BF\u3092\u30D7\u30EC\u30D3\u30E5\u30FC +FR-Designer_Preview-Data-Confusion=\u6DF7\u4E71\u3055\u308C\u305F\u30C7\u30FC\u30BF\u3092\u30D7\u30EC\u30D3\u30E5\u30FC FR-Designer_Product_Demo=\u88FD\u54C1\u30C7\u30E2 -FR-Designer_Query_Type=\u30AF\u30A8\u30EA\u65B9\u6CD5 +FR-Designer_Query_Type=\u30AF\u30A8\u30EA\u30BF\u30A4\u30D7 FR-Designer_Refresh=\u66F4\u65B0 -FR-Designer_Refresh_Parameter_In_SQL=SQL\u4E2D\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3092\u66F4\u65B0\u3057\u307E\u3059\u304B -FR-Designer_Reg_Expressions=\u6B63\u5247\u8868\u73FE\u5F0F -FR-Designer_Reg_Max_Length=\u6700\u5927\u9577\u3055 -FR-Designer_Reg_Min_Length=\u6700\u5C0F\u9577\u3055 -FR-Designer_Remove_Button_ToolBar=\u30DC\u30BF\u30F3\u304C\u3042\u308B\u30C4\u30FC\u30EB\u30D0\u30FC\u3092\u30EA\u30E0\u30FC\u30D6 -FR-Designer_ReportColumns-Columns=\u6BB5\u7D44\u307F -FR-Designer_Return-Date=\u65E5\u671F\u306B\u623B\u308B -FR-Designer_RichText=\u30EA\u30C3\u30C1\u6587\u66F8\u633F\u5165 -FR-Designer_RichTextEditor=\u30EA\u30C3\u30C1\u6587\u66F8\u30A8\u30C7\u30A3\u30BF +FR-Designer_Refresh_Parameter_In_SQL=SQL\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u66F4\u65B0\u3057\u307E\u3059\u304B +FR-Designer_Reg_Expressions=\u6B63\u898F\u8868\u73FE +FR-Designer_Reg_Max_Length=\u6700\u5927 +FR-Designer_Reg_Min_Length=\u6700\u5C0F +FR-Designer_Remove_Button_ToolBar=\u30DC\u30BF\u30F3\u306E\u30C4\u30FC\u30EB\u30D0\u30FC\u3092\u524A\u9664 +FR-Designer_ReportColumns-Columns=\u30B5\u30D6\u30D5\u30A3\u30FC\u30EB\u30C9 +FR-Designer_Return-Date=\u65E5\u4ED8\u578B\u3092\u623B\u3059 +FR-Designer_RichText=\u30EA\u30C3\u30C1\u30C6\u30AD\u30B9\u30C8 +FR-Designer_RichTextEditor=\u30EA\u30C3\u30C1\u30C6\u30AD\u30B9\u30C8\u30A8\u30C7\u30A3\u30BF FR-Designer_Row=\u884C -FR-Designer_Row_Dimension=\u884C\u8EF8/\u7DEF\u5EA6 +FR-Designer_Row_Dimension=\u884C\u8EF8/\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3 FR-Designer_Save=\u4FDD\u5B58 FR-Designer_Search=\u691C\u7D22 FR-Designer_Set=\u8A2D\u5B9A -FR-Designer_Share-Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30B7\u30A7\u30A2 -FR-Designer_Simple_general=\u30B7\u30F3\u30D7\u30EB\u901A\u7528\u30AF\u30A8\u30EA +FR-Designer_Share-Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5171\u6709 +FR-Designer_Simple_general=\u7C21\u6613\u4E00\u822C\u691C\u7D22 FR-Designer_Song_TypeFace=\u5B8B\u4F53 -FR-Designer_Start-Date=\u958B\u59CB\u65E5\u671F +FR-Designer_Start-Date=\u958B\u59CB\u65E5 FR-Designer_Subscript=\u4E0B\u4ED8\u304D FR-Designer_Superscript=\u4E0A\u4ED8\u304D -FR-Designer_Support_QQ=\u6280\u8853QQ +FR-Designer_Support_QQ=\u6280\u8853\u30B5\u30DD\u30FC\u30C8QQ FR-Designer_Swatch=\u30B5\u30F3\u30D7\u30EB -FR-Designer_Tab_title=tab\u30BF\u30A4\u30C8\u30EB +FR-Designer_Tab_title=\u30BF\u30D6\u30BF\u30A4\u30C8\u30EB FR-Designer_TableData=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 -FR-Designer_Thank_guest=\u7279\u306B\u5F53\u8A72\u30D0\u30FC\u30B8\u30E7\u30F3\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u4F7F\u3044\u3084\u3059\u3055\u306B\u3064\u3044\u3066\u8CA2\u732E\u3057\u3066\u304F\u308C\u305F\u4EE5\u4E0B\u306EBBS\u306E\u5E06\u30BD\u30D5\u30C8\u30D5\u30A1\u30F3\u306B\u611F\u8B1D\u3057\u307E\u3059 +FR-Designer_Thank_guest=\u7279\u306B\u4EE5\u4E0B\u306E\u30D5\u30A9\u30FC\u30E9\u30E0\u5E06\u85AF\u304C\u5F53\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u4F7F\u3044\u3084\u3059\u3055\u306B\u9855\u8457\u306A\u8CA2\u732E\u306B\u611F\u8B1D FR-Designer_Thanks-To=\u611F\u8B1D FR-Designer_Title=\u30BF\u30A4\u30C8\u30EB -FR-Designer_Total=\u5168\u90E8\u3067 +FR-Designer_Total=\u5408\u8A08 FR-Designer_UnSignIn=\u672A\u30ED\u30B0\u30A4\u30F3 -FR-Designer_Underline=\u30A2\u30F3\u30C0\u30FC\u30E9\u30A4\u30F3 -FR-Designer_Used=\u6700\u8FD1\u4F7F\u7528\u3057\u305F -FR-Designer_User-defined-MDX=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BAMDX\u30AF\u30A8\u30EA -FR-Designer_SampleText=\u30C6\u30AD\u30B9\u30C8\u4F8B -FR-Designer_Vertical-LeftToRight=\u6587\u5B57\u7E26\u66F8(\u5DE6\u304B\u3089\u53F3\u3078\uFF09 +FR-Designer_Underline=\u4E0B\u7DDA +FR-Designer_Used=\u6700\u8FD1\u4F7F\u7528 +FR-Designer_User-defined-MDX=\u30AB\u30B9\u30BF\u30E0MDX\u691C\u7D22 +FR-Designer_SampleText=\u30B5\u30F3\u30D7\u30EB\u30C6\u30AD\u30B9\u30C8 \u30B5\u30F3\u30D7\u30EB\u30C6\u30AD\u30B9\u30C8 +FR-Designer_Vertical-LeftToRight=\u6587\u5B57\u7E26\u66F8\u304D(\u5DE6\u304B\u3089\u53F3\u3078) FR-Designer_Vertical-RightToLeft=\u6587\u5B57\u7E26\u66F8(\u53F3\u304B\u3089\u5DE6\u3078) -FR-Designer_VerticalBoxLayout=\u5782\u76F4\u30B1\u30FC\u30B9\u914D\u7F6E -FR-Designer_Visible=\u53EF\u8996 -FR-Designer_WLayout-Border-ToolTips=\u5B8C\u74A7\u306A\u30DC\u30FC\u30C0\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8\u5BB9\u5668\u306F\u6771\u897F\u5357\u5317\u4E2D\u306E\u4E94\u3064\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u304B\u3089\u69CB\u6210\u3055\u308C\u307E\u3059\u3002\\uff4e\u305D\u306E\u3046\u3061\u3001\u5357\u5317\u30E2\u30B8\u30E5\u30FC\u30EB\u306F\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u9AD8\u3055\u3092\u8ABF\u6574\u3067\u304D\u3001\u6771\u897F\u30E2\u30B8\u30E5\u30FC\u30EB\u306F\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u5E45\u3092\u8ABF\u6574\u3067\u304D\u307E\u3059\u3002 +FR-Designer_VerticalBoxLayout=\u5782\u76F4\u30DC\u30C3\u30AF\u30B9\u30EC\u30A4\u30A2\u30A6\u30C8 +FR-Designer_Visible=\u8868\u793A +FR-Designer_WLayout-Border-ToolTips=\u5B8C\u5168\u306A\u30DC\u30FC\u30C0\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u306F\u3001\u6771\u3001\u5357\u3001\u897F\u3001\u5317\u3001\u4E2D\u592E\u306E5\u30D6\u30ED\u30C3\u30AF\u3088\u308A\u69CB\u6210\u3055\u308C\u307E\u3059\u3002\n\u5317\u90E8\u3068\u5357\u90E8\u3067\u306F\u9AD8\u3055\u3092\u3001\u6771\u90E8\u3068\u897F\u90E8\u3068\u3067\u306F\u5E45\u3092\u8ABF\u6574\u3067\u304D\u307E\u3059\u3002 FR-Designer_WaterMark=\u900F\u304B\u3057 FR-Designer_Widget=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB FR-Designer_Widget-Settings=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u8A2D\u5B9A From 5a05c497c710255d88b40bfdfc6e862658bb441f Mon Sep 17 00:00:00 2001 From: plough Date: Wed, 26 Apr 2017 09:28:21 +0800 Subject: [PATCH 54/76] =?UTF-8?q?REPORT-2343=20[=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E8=B4=A8=E9=87=8F]=20=E6=A8=A1=E6=9D=BF=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=94=B6=E9=9B=86=E7=94=A8xml=E6=96=B9=E5=BC=8F=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E4=B8=8E=E8=AF=BB=E5=8F=96,=20=E7=9B=B4=E6=8E=A5readO?= =?UTF-8?q?bject=E4=B8=8D=E5=A4=AA=E5=A5=BD.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templateinfo/TemplateInfoCollector.java | 205 ++++++++++++++---- 1 file changed, 164 insertions(+), 41 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index b9b7aa194e..dccff0e9c3 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -6,32 +6,37 @@ import com.fr.design.DesignerEnvManager; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; import com.fr.env.RemoteEnv; -import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; -import com.fr.general.GeneralUtils; -import com.fr.general.SiteCenter; +import com.fr.general.*; import com.fr.general.http.HttpClient; +import com.fr.json.JSONArray; +import com.fr.json.JSONException; import com.fr.stable.*; -import org.json.JSONObject; +import com.fr.stable.xml.*; +import com.fr.third.javax.xml.stream.XMLStreamException; +import com.fr.json.JSONObject; import java.io.*; import java.text.SimpleDateFormat; import java.util.*; +import java.util.HashMap; +import java.util.Iterator; /** * 做模板的过程和耗时收集,辅助类 * Created by plough on 2017/2/21. */ -public class TemplateInfoCollector implements Serializable { - private static final String FILE_NAME = "tplInfo.ser"; +public class TemplateInfoCollector implements XMLReadable, XMLWriter { + private static final String FILE_NAME = "tpl.info"; private static TemplateInfoCollector instance; - private HashMap> templateInfoList; + private Map> templateInfoList; private String designerOpenDate; //设计器最近一次打开日期 private static final int VALID_CELL_COUNT = 5; // 有效报表模板的格子数 private static final int VALID_WIDGET_COUNT = 5; // 有效报表模板的控件数 private static final int COMPLETE_DAY_COUNT = 15; // 判断模板是否完成的天数 private static final int ONE_THOUSAND = 1000; static final long serialVersionUID = 2007L; + private static final String XML_DESIGNER_OPEN_DATE = "DesignerOpenDate"; + private static final String XML_TEMPLATE_INFO_LIST = "TemplateInfoList"; @SuppressWarnings("unchecked") private TemplateInfoCollector() { @@ -63,27 +68,42 @@ public class TemplateInfoCollector implements Serializable { public static TemplateInfoCollector getInstance() { if (instance == null) { - // 先尝试从文件读取 - try{ - ObjectInputStream is = new ObjectInputStream(new FileInputStream(getInfoFile())); - instance = (TemplateInfoCollector) is.readObject(); - } catch (FileNotFoundException ex) { - // 如果之前没有存储过,则创建新对象 - instance = new TemplateInfoCollector(); - } catch (InvalidClassException ex) { - // 如果 TemplateInfoCollecor 类结构有改动,则放弃之前收集的数据(下次保存时覆盖) - // 这种情况主要在开发、测试过程中遇到,正式上线后不应该出现 - FRLogger.getLogger().info(ex.getMessage()); - FRLogger.getLogger().info("use a new instance"); - instance = new TemplateInfoCollector(); - } - catch (Exception ex) { - FRLogger.getLogger().error(ex.getMessage(), ex); - } + instance = new TemplateInfoCollector(); + readXMLFile(instance, getInfoFile()); } return instance; } + private static void readXMLFile(XMLReadable xmlReadable, File xmlFile){ + if (xmlFile == null || !xmlFile.exists()) { + return; + } + String charset = EncodeConstants.ENCODING_UTF_8; + try { + String fileContent = getFileContent(xmlFile); + InputStream xmlInputStream = new ByteArrayInputStream(fileContent.getBytes(charset)); + InputStreamReader inputStreamReader = new InputStreamReader(xmlInputStream, charset); + XMLableReader xmlReader = XMLableReader.createXMLableReader(inputStreamReader); + + if (xmlReader != null) { + xmlReader.readXMLObject(xmlReadable); + } + xmlInputStream.close(); + } catch (FileNotFoundException e) { + FRContext.getLogger().error(e.getMessage()); + } catch (IOException e) { + FRContext.getLogger().error(e.getMessage()); + } catch (XMLStreamException e) { + FRContext.getLogger().error(e.getMessage()); + } + + } + + private static String getFileContent(File xmlFile) throws FileNotFoundException, UnsupportedEncodingException{ + InputStream is = new FileInputStream(xmlFile); + return IOUtils.inputStream2String(is); + } + private boolean shouldCollectInfo() { if (FRContext.getCurrentEnv() instanceof RemoteEnv) { // 远程设计不收集数据 return false; @@ -122,22 +142,40 @@ public class TemplateInfoCollector implements Serializable { */ private void saveInfo() { try { - ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(getInfoFile())); - String log = ""; - int count = 1; - for (String key : templateInfoList.keySet()) { - String createTime = ((HashMap)templateInfoList.get(key).get("consumingMap")).get("create_time").toString(); - log += (count + ". id: " + key + " " + createTime + "\n" + templateInfoList.get(key).toString() + "\n"); - count ++; - } - FRLogger.getLogger().info("writing tplInfo: \n" + log); - os.writeObject(instance); - os.close(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + XMLTools.writeOutputStreamXML(this, out); + out.flush(); + out.close(); + String fileContent = new String(out.toByteArray(), EncodeConstants.ENCODING_UTF_8); + writeContentToFile(fileContent, getInfoFile()); } catch (Exception ex) { FRLogger.getLogger().error(ex.getMessage()); } } + /** + * 将文件内容写到输出流中 + */ + private static void writeContentToFile(String fileContent, File file){ + BufferedWriter bw = null; + try { + FileOutputStream fos = new FileOutputStream(file); + OutputStreamWriter osw = new OutputStreamWriter(fos, EncodeConstants.ENCODING_UTF_8); + bw = new BufferedWriter(osw); + bw.write(fileContent); + } catch (Exception e) { + FRContext.getLogger().error(e.getMessage()); + } finally { + if(bw != null){ + try { + bw.close(); + } catch (IOException e) { + } + } + } + + } + /** * 更新 day_count:打开设计器却未编辑模板的连续日子 */ @@ -241,10 +279,7 @@ public class TemplateInfoCollector implements Serializable { String jsonProcessMap = templateInfo.get("jsonProcessMap"); if (sendSingleTemplateInfo(consumingUrl, jsonConsumingMap) && sendSingleTemplateInfo(processUrl, jsonProcessMap)) { // 清空记录 - FRLogger.getLogger().info("successfully send " + templateInfo.get("templateID")); removeFromTemplateInfoList(templateInfo.get("templateID")); - } else { - FRLogger.getLogger().info("send template info failed, will try next time, " + templateInfo.get("templateID")); } } saveInfo(); @@ -264,7 +299,12 @@ public class TemplateInfoCollector implements Serializable { } String res = httpClient.getResponseText(); - boolean success = ComparatorUtils.equals(new JSONObject(res).get("status"), "success"); + boolean success; + try { + success = ComparatorUtils.equals(new JSONObject(res).get("status"), "success"); + } catch (Exception ex) { + success = false; + } return success; } @@ -303,7 +343,6 @@ public class TemplateInfoCollector implements Serializable { private void removeFromTemplateInfoList(String key) { templateInfoList.remove(key); - FRLogger.getLogger().info(key + " is removed..."); } @SuppressWarnings("unchecked") @@ -325,6 +364,90 @@ public class TemplateInfoCollector implements Serializable { return isTestTemplate; } + public static Map jsonToMap(JSONObject json) throws JSONException { + Map retMap = new HashMap<>(); + + if(json != JSONObject.NULL) { + retMap = toMap(json); + } + return retMap; + } + + private static Map toMap(JSONObject object) throws JSONException { + Map map = new HashMap<>(); + + Iterator keysItr = object.keys(); + while(keysItr.hasNext()) { + String key = keysItr.next(); + Object value = object.get(key); + + if(value instanceof JSONArray) { + value = toList((JSONArray) value); + } + + else if(value instanceof JSONObject) { + value = toMap((JSONObject) value); + } + map.put(key, value); + } + return map; + } + + private static List toList(JSONArray array) throws JSONException { + List list = new ArrayList<>(); + for(int i = 0; i < array.length(); i++) { + Object value = array.get(i); + if(value instanceof JSONArray) { + value = toList((JSONArray) value); + } + + else if(value instanceof JSONObject) { + value = toMap((JSONObject) value); + } + list.add(value); + } + return list; + } + + @SuppressWarnings("unchecked") + @Override + public void readXML(XMLableReader reader) { + if (reader.isChildNode()) { + try { + String name = reader.getTagName(); + if (XML_DESIGNER_OPEN_DATE.equals(name)) { + this.designerOpenDate = reader.getElementValue(); + } else if(XML_TEMPLATE_INFO_LIST.equals(name)){ + JSONObject jsonObject = new JSONObject(reader.getElementValue()); + Map map = jsonToMap(jsonObject); + for (Map.Entry entry : map.entrySet()) { + if (entry.getValue() instanceof HashMap) { + this.templateInfoList.put(entry.getKey(), (HashMap) entry.getValue()); + } + } + } + } catch (Exception ex) { + // 什么也不做,使用默认值 + } + } + } + + @Override + public void writeXML(XMLPrintWriter writer) { + writer.startTAG("TemplateInfo"); + + writer.startTAG(XML_DESIGNER_OPEN_DATE); + writer.textNode(designerOpenDate); + writer.end(); + + writer.startTAG(XML_TEMPLATE_INFO_LIST); + writer.textNode(new JSONObject(templateInfoList).toString()); + writer.end(); + + writer.end(); + } + + public static void main(String[] args) { TemplateInfoCollector tic = TemplateInfoCollector.getInstance(); tic.sendTemplateInfo(); From c0c2ed2f6033a68d233b0cf4c538a9536396ba17 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Wed, 26 Apr 2017 11:04:22 +0800 Subject: [PATCH 55/76] =?UTF-8?q?REPORT-2381=20=E5=AE=A2=E6=88=B7bug?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E9=81=97=E7=95=99=E9=97=AE=E9=A2=98=EF=BC=8C?= =?UTF-8?q?=E7=A9=BA=E6=8C=87=E9=92=88=E5=BC=95=E5=8F=91=E6=8E=A7=E4=BB=B6?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E9=9D=A2=E6=9D=BF=E7=94=9F=E6=88=90=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E6=9C=80=E7=BB=88=E5=AF=BC=E8=87=B4=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/mainframe/WidgetPropertyPane.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java b/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java index 6a8480206d..201ab203e4 100644 --- a/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java +++ b/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java @@ -259,8 +259,11 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper xCreator = designer.getRootComponent(); } XLayoutContainer container = XCreatorUtils.getHotspotContainer(xCreator); - //TODO container可能为空,引发空指针异常 - return xCreator.acceptType(XWParameterLayout.class) || container.acceptType(XWParameterLayout.class); + + boolean xCreatorAccept = xCreator.acceptType(XWParameterLayout.class); + boolean containerAccept = container!=null && container.acceptType(XWParameterLayout.class); + + return xCreatorAccept || containerAccept; } public void setEditingFormDesigner(BaseFormDesigner editor) { From c96943543ece4080e6294d7847a7c5e325075a2e Mon Sep 17 00:00:00 2001 From: XiaXiang Date: Wed, 26 Apr 2017 16:19:38 +0800 Subject: [PATCH 56/76] =?UTF-8?q?=E6=8E=A7=E4=BB=B6=E7=9A=84=E6=A1=86?= =?UTF-8?q?=E9=80=89=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/ComponentTree.java | 46 ++++++++++--------- .../com/fr/design/mainframe/FormDesigner.java | 3 +- .../mainframe/widget/UITreeComboBox.java | 28 +++++------ 3 files changed, 41 insertions(+), 36 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/ComponentTree.java b/designer_form/src/com/fr/design/mainframe/ComponentTree.java index 4d58c4887d..67894b991e 100644 --- a/designer_form/src/com/fr/design/mainframe/ComponentTree.java +++ b/designer_form/src/com/fr/design/mainframe/ComponentTree.java @@ -1,30 +1,26 @@ package com.fr.design.mainframe; -import java.awt.Component; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.util.ArrayList; - -import javax.swing.DropMode; -import javax.swing.JPopupMenu; -import javax.swing.JTree; -import javax.swing.tree.TreePath; -import javax.swing.tree.TreeSelectionModel; - import com.fr.design.constants.UIConstants; -import com.fr.design.designer.beans.AdapterBus; -import com.fr.design.designer.beans.ComponentAdapter; -import com.fr.design.designer.beans.events.DesignerEditListener; -import com.fr.design.designer.beans.events.DesignerEvent; -import com.fr.design.designer.creator.*; +import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XLayoutContainer; +import com.fr.design.designer.creator.XWAbsoluteBodyLayout; +import com.fr.design.designer.creator.XWFitLayout; import com.fr.design.designer.treeview.ComponentTreeCellRenderer; import com.fr.design.designer.treeview.ComponentTreeModel; import com.fr.stable.StringUtils; +import javax.swing.*; +import javax.swing.tree.TreePath; +import javax.swing.tree.TreeSelectionModel; +import java.awt.*; +import java.util.ArrayList; + public class ComponentTree extends JTree { private FormDesigner designer; private ComponentTreeModel model; + //xiaoxia 保存框选的全部组件,只显示第一个 + private TreePath[] allSelectedTreePaths; public ComponentTree(FormDesigner designer) { this.designer = designer; @@ -92,9 +88,10 @@ public class ComponentTree extends JTree { } } - public void setAndScrollSelectionPath(TreePath treepath) { - setSelectionPath(treepath); - scrollPathToVisible(treepath); + public void setAndScrollSelectionPath(TreePath[] treepath) { + this.setAllSelectedTreePaths(treepath); + setSelectionPath(treepath[0]); + scrollPathToVisible(treepath[0]); } @@ -112,7 +109,6 @@ public class ComponentTree extends JTree { public TreePath[] getSelectedTreePath() { XCreator[] creators = designer.getSelectionModel().getSelection().getSelectedCreators(); TreePath[] paths = new TreePath[creators.length]; - for (int i = 0; i < paths.length; i++) { paths[i] = buildTreePath(creators[i]); } @@ -141,7 +137,7 @@ public class ComponentTree extends JTree { paths[i] = buildTreePath(searchList.get(i)); } if(paths.length > 0) { - setAndScrollSelectionPath(paths[0]); + setAndScrollSelectionPath(paths); } else { setSelectionPath(); } @@ -217,4 +213,12 @@ public class ComponentTree extends JTree { Object[] components = path.toArray(); return new TreePath(components); } + + public TreePath[] getAllSelectedTreePaths() { + return allSelectedTreePaths; + } + + public void setAllSelectedTreePaths(TreePath[] allSelectedTreePaths) { + this.allSelectedTreePaths = allSelectedTreePaths; + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/mainframe/FormDesigner.java b/designer_form/src/com/fr/design/mainframe/FormDesigner.java index 0c77059935..3e29f41281 100644 --- a/designer_form/src/com/fr/design/mainframe/FormDesigner.java +++ b/designer_form/src/com/fr/design/mainframe/FormDesigner.java @@ -1008,7 +1008,7 @@ public class FormDesigner extends TargetComponent implements TreeSelection @Override public void valueChanged(TreeSelectionEvent e) { ComponentTree tree = (ComponentTree) e.getSource(); - TreePath[] paths = tree.getSelectionPaths(); + TreePath[] paths = tree.getAllSelectedTreePaths(); if (paths != null) { ArrayList selected = new ArrayList(); @@ -1018,7 +1018,6 @@ public class FormDesigner extends TargetComponent implements TreeSelection } if (!BaseUtils.isAuthorityEditing()) { - selectionModel.setSelectedCreators(selected); TreePath path = e.getNewLeadSelectionPath(); diff --git a/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java b/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java index 0d7b224f64..258fd15d31 100644 --- a/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java +++ b/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java @@ -3,22 +3,24 @@ package com.fr.design.mainframe.widget; /** * Created by xiaxiang on 2016/9/30. */ -import java.awt.*; -import java.awt.event.*; -import javax.swing.*; -import javax.swing.plaf.*; -import javax.swing.plaf.basic.*; -import javax.swing.plaf.metal.*; -import javax.swing.tree.*; -import com.fr.design.designer.beans.*; +import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.events.DesignerEditListener; import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.creator.XCreator; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.mainframe.ComponentTree; -import com.sun.java.swing.plaf.motif.*; -import com.sun.java.swing.plaf.windows.*; +import com.sun.java.swing.plaf.motif.MotifComboBoxUI; +import com.sun.java.swing.plaf.windows.WindowsComboBoxUI; + +import javax.swing.*; +import javax.swing.plaf.ComboBoxUI; +import javax.swing.plaf.basic.ComboPopup; +import javax.swing.plaf.metal.MetalComboBoxUI; +import javax.swing.tree.TreeCellRenderer; +import javax.swing.tree.TreePath; +import java.awt.*; +import java.awt.event.*; /** * 控件树下拉列表框 @@ -110,7 +112,7 @@ public class UITreeComboBox extends JComboBox{ int index, boolean isSelected, boolean cellHasFocus){ if(tree != null && tree.getSelectedTreePath().length > 0){ TreePath path = tree.getSelectedTreePath()[0]; - tree.setAndScrollSelectionPath(path); + tree.setAndScrollSelectionPath(tree.getSelectedTreePath()); Object node = path.getLastPathComponent(); value = node; TreeCellRenderer r = tree.getCellRenderer(); @@ -132,7 +134,7 @@ public class UITreeComboBox extends JComboBox{ if (evt.getCreatorEventID() == DesignerEvent.CREATOR_SELECTED) { TreePath[] paths = tree.getSelectedTreePath(); if (tree != null && paths.length > 0) { - tree.setAndScrollSelectionPath(paths[0]); + tree.setAndScrollSelectionPath(paths); setSelectedItem(paths[0]); MenuSelectionManager.defaultManager().clearSelectedPath(); } @@ -141,7 +143,7 @@ public class UITreeComboBox extends JComboBox{ tree.refreshUI(); TreePath[] paths = tree.getSelectedTreePath(); if (tree != null && paths.length > 0) { - tree.setAndScrollSelectionPath(paths[0]); + tree.setAndScrollSelectionPath(paths); setSelectedItem(paths[0]); MenuSelectionManager.defaultManager().clearSelectedPath(); } From 37b19cce1dc9a2fc2920ea00b6052a71492228a9 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Wed, 26 Apr 2017 17:19:37 +0800 Subject: [PATCH 57/76] =?UTF-8?q?=E5=90=AF=E5=8A=A8=E6=97=B6=E4=BC=9A?= =?UTF-8?q?=E5=B0=86=E5=88=9D=E5=A7=8B=E5=8C=96=E7=9A=84=E9=A2=9C=E8=89=B2?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=B0=E5=8E=86=E5=8F=B2=E9=A2=9C=E8=89=B2?= =?UTF-8?q?=E4=B8=AD=EF=BC=8C=E4=B8=8D=E9=9C=80=E8=A6=81=E8=BF=99=E6=A0=B7?= =?UTF-8?q?=E5=81=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/gui/style/BorderPane.java | 3 --- .../mainframe/backgroundpane/PatternBackgroundQuickPane.java | 2 -- 2 files changed, 5 deletions(-) diff --git a/designer_base/src/com/fr/design/gui/style/BorderPane.java b/designer_base/src/com/fr/design/gui/style/BorderPane.java index 60989aedd9..714f0f0ac2 100644 --- a/designer_base/src/com/fr/design/gui/style/BorderPane.java +++ b/designer_base/src/com/fr/design/gui/style/BorderPane.java @@ -99,9 +99,6 @@ public class BorderPane extends AbstractBasicStylePane { this.add(northPane, BorderLayout.NORTH); this.add(centerPane, BorderLayout.CENTER); - - this.currentLineColorPane.setSelectObject(Color.BLACK); - outerToggleButton.addChangeListener(new ChangeListener() { @Override diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java index 4e31405d11..1dc21db899 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java @@ -52,8 +52,6 @@ public class PatternBackgroundQuickPane extends BackgroundQuickPane { JPanel colorPane = new JPanel(new GridLayout(0, 2)); foregroundColorPane = new ColorSelectBox(70); backgroundColorPane = new ColorSelectBox(70); - foregroundColorPane.setSelectObject(Color.lightGray); - backgroundColorPane.setSelectObject(Color.black); colorPane.add(this.createLabelColorPane(Inter.getLocText("Foreground") + ":", foregroundColorPane)); colorPane.add(this.createLabelColorPane(Inter.getLocText("Background") + ":", backgroundColorPane)); From cf4578290587ce36978d813593879f1ba1f4eb7c Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Wed, 26 Apr 2017 18:05:30 +0800 Subject: [PATCH 58/76] pmd --- .../com/fr/design/gui/style/BorderPane.java | 49 +++++++------------ .../com/fr/design/locale/designer.properties | 4 ++ .../design/locale/designer_en_US.properties | 4 ++ .../design/locale/designer_ja_JP.properties | 6 ++- .../design/locale/designer_ko_KR.properties | 6 ++- .../design/locale/designer_zh_CN.properties | 6 ++- .../design/locale/designer_zh_TW.properties | 6 ++- .../PatternBackgroundQuickPane.java | 13 ++--- 8 files changed, 50 insertions(+), 44 deletions(-) diff --git a/designer_base/src/com/fr/design/gui/style/BorderPane.java b/designer_base/src/com/fr/design/gui/style/BorderPane.java index 714f0f0ac2..cb37f1c1a1 100644 --- a/designer_base/src/com/fr/design/gui/style/BorderPane.java +++ b/designer_base/src/com/fr/design/gui/style/BorderPane.java @@ -51,34 +51,16 @@ public class BorderPane extends AbstractBasicStylePane { } protected void initComponents() { - topToggleButton = new UIToggleButton(BaseUtils.readIcon("/com/fr/base/images/dialog/border/top.png")); - leftToggleButton = new UIToggleButton(BaseUtils.readIcon("/com/fr/base/images/dialog/border/left.png")); - bottomToggleButton = new UIToggleButton(BaseUtils.readIcon("/com/fr/base/images/dialog/border/bottom.png")); - rightToggleButton = new UIToggleButton(BaseUtils.readIcon("/com/fr/base/images/dialog/border/right.png")); - horizontalToggleButton = new UIToggleButton(BaseUtils.readIcon("/com/fr/base/images/dialog/border/horizontal.png")); - verticalToggleButton = new UIToggleButton(BaseUtils.readIcon("/com/fr/base/images/dialog/border/vertical.png")); - this.currentLineCombo = new LineComboBox(CoreConstants.UNDERLINE_STYLE_ARRAY); - this.currentLineColorPane = new NewColorSelectBox(100); - + initButtonsWithIcon(); this.setLayout(new BorderLayout(0, 6)); - - double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - - double[] columnSize1 = {p, f}; - double[] rowSize1 = {p, p}; - - + double p = TableLayout.PREFERRED, f = TableLayout.FILL; + double[] columnSize1 = {p, f}, rowSize1 = {p, p}; Component[][] components1 = new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("Style") + ":"), currentLineCombo}, - new Component[]{new UILabel(Inter.getLocText("Color") + ":"), currentLineColorPane}, + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Style") + ":"), currentLineCombo}, + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Color") + ":"), currentLineColorPane}, }; - JPanel northPane = TableLayoutHelper.createTableLayoutPane(components1, rowSize1, columnSize1); - - - double[] columnSize2 = {p, f}; - double[] rowSize2 = {p, p}; + double[] columnSize2 = {p, f}, rowSize2 = {p, p}; JPanel externalPane = new JPanel(new GridLayout(0, 4)); externalPane.add(topToggleButton); externalPane.add(leftToggleButton); @@ -87,20 +69,15 @@ public class BorderPane extends AbstractBasicStylePane { JPanel insidePane = new JPanel(new GridLayout(0, 2)); insidePane.add(horizontalToggleButton); insidePane.add(verticalToggleButton); - - Component[][] components2 = new Component[][]{ new Component[]{outerToggleButton = new UIToggleButton(BaseUtils.readIcon("com/fr/design/images/m_format/out.png")), innerToggleButton = new UIToggleButton(BaseUtils.readIcon("com/fr/design/images/m_format/in.png"))}, new Component[]{externalPane, insidePane,} }; JPanel centerPane = TableLayoutHelper.createTableLayoutPane(components2, rowSize2, columnSize2); - this.setLayout(new BorderLayout(0, 6)); this.add(northPane, BorderLayout.NORTH); this.add(centerPane, BorderLayout.CENTER); - outerToggleButton.addChangeListener(new ChangeListener() { - @Override public void stateChanged(ChangeEvent e) { boolean value = outerToggleButton.isSelected(); @@ -110,9 +87,7 @@ public class BorderPane extends AbstractBasicStylePane { rightToggleButton.setSelected(value); } }); - innerToggleButton.addChangeListener(new ChangeListener() { - @Override public void stateChanged(ChangeEvent e) { boolean value = innerToggleButton.isSelected(); @@ -120,12 +95,22 @@ public class BorderPane extends AbstractBasicStylePane { verticalToggleButton.setSelected(value); } }); + } + private void initButtonsWithIcon(){ + topToggleButton = new UIToggleButton(BaseUtils.readIcon("/com/fr/base/images/dialog/border/top.png")); + leftToggleButton = new UIToggleButton(BaseUtils.readIcon("/com/fr/base/images/dialog/border/left.png")); + bottomToggleButton = new UIToggleButton(BaseUtils.readIcon("/com/fr/base/images/dialog/border/bottom.png")); + rightToggleButton = new UIToggleButton(BaseUtils.readIcon("/com/fr/base/images/dialog/border/right.png")); + horizontalToggleButton = new UIToggleButton(BaseUtils.readIcon("/com/fr/base/images/dialog/border/horizontal.png")); + verticalToggleButton = new UIToggleButton(BaseUtils.readIcon("/com/fr/base/images/dialog/border/vertical.png")); + this.currentLineCombo = new LineComboBox(CoreConstants.UNDERLINE_STYLE_ARRAY); + this.currentLineColorPane = new NewColorSelectBox(100); } @Override public String title4PopupWindow() { - return Inter.getLocText("Border"); + return Inter.getLocText("FR-Designer_Border"); } public void populate(Style style) { diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index 044278dbae..cc75cee8ac 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -596,3 +596,7 @@ FR-Designer_AxisReversed=AxisValue FR-Designer_Logarithmic=Logarithmic FR-Designer_Chart_Log_Base=Log Base FR-Designer_Chart_F_Radar_Axis=Chart_F_Radar_Axis +FR-Designer_Style=Style +FR-Designer_Color=Color +FR-Designer_Border=Border +FR-Designer_Background-Pattern=Pattern diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index 53c3ba7732..1c646aebeb 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -596,4 +596,8 @@ FR-Designer_AxisReversed=Axis in reverse order FR-Designer_Logarithmic=Log scale FR-Designer_Chart_Log_Base=Log Base FR-Designer_Chart_F_Radar_Axis=Value Axis +FR-Designer_Style=Style +FR-Designer_Color=Color +FR-Designer_Border=Border +FR-Designer_Background-Pattern=Pattern diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index 10c59bd36d..2f4affb916 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -560,4 +560,8 @@ FR-Designer_Plugin_Should_Update_Please_Contact_Developer= FR-Designer_AxisReversed=\u8EF8\u9006\u9806 FR-Designer_Logarithmic=\u5BFE\u6570\u76EE\u76DB\u308A FR-Designer_Chart_Log_Base=\u5E95\u6570 -FR-Designer_Chart_F_Radar_Axis=\u5782\u76F4\u8EF8 \ No newline at end of file +FR-Designer_Chart_F_Radar_Axis=\u5782\u76F4\u8EF8 +FR-Designer_Style=\u30B9\u30BF\u30A4\u30EB +FR-Designer_Color=\u8272 +FR-Designer_Border=\u67A0 +FR-Designer_Background-Pattern=\u30D1\u30BF\u30FC\u30F3 \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties index 87fc8705af..075b017ab1 100644 --- a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties +++ b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties @@ -555,4 +555,8 @@ FR-Designer_Plugin_Should_Update_Please_Contact_Developer= FR-Designer_AxisReversed=\uCD95\uC5ED\uC21C FR-Designer_Logarithmic=\uB85C\uADF8\uB208\uAE08 FR-Designer_Chart_Log_Base=\uAE30\uC218 -FR-Designer_Chart_F_Radar_Axis=\uAC12\uCD95 \ No newline at end of file +FR-Designer_Chart_F_Radar_Axis=\uAC12\uCD95 +FR-Designer_Style=\uC591\uC2DD +FR-Designer_Color=\uC0C9 +FR-Designer_Border=\uD14C\uB450\uB9AC +FR-Designer_Background-Pattern=\uC774\uBBF8\uC9C0 \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index a70e0c445e..d0a2b05203 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -595,4 +595,8 @@ FR-Designer_Too_Small_To_Paste=\u6B64\u5904\u65E0\u6CD5\u7C98\u8D34\uFF0C\u5C0F\ FR-Designer_AxisReversed=\u8F74\u9006\u5E8F FR-Designer_Logarithmic=\u5BF9\u6570\u523B\u5EA6 FR-Designer_Chart_Log_Base=\u5E95\u6570 -FR-Designer_Chart_F_Radar_Axis=\u503C\u8F74 \ No newline at end of file +FR-Designer_Chart_F_Radar_Axis=\u503C\u8F74 +FR-Designer_Style=\u6837\u5F0F +FR-Designer_Color=\u989C\u8272 +FR-Designer_Border=\u8FB9\u6846 +FR-Designer_Background-Pattern=\u56FE\u6848 \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index d32829c187..bbaf3db36d 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -581,4 +581,8 @@ FR-Designer_Mouse_Click_Tips= FR-Designer_AxisReversed=\u8EF8\u9006\u5E8F FR-Designer_Logarithmic=\u5C0D\u6578\u523B\u5EA6 FR-Designer_Chart_Log_Base=\u5E95\u6578 -FR-Designer_Chart_F_Radar_Axis=\u503C\u8EF8 \ No newline at end of file +FR-Designer_Chart_F_Radar_Axis=\u503C\u8EF8 +FR-Designer_Style=\u6A23\u5F0F +FR-Designer_Color=\u984F\u8272 +FR-Designer_Border=\u6846\u7DDA +FR-Designer_Background-Pattern=\u5716\u6848 \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java index 1dc21db899..16b294955c 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java @@ -26,17 +26,16 @@ import java.awt.geom.Rectangle2D; public class PatternBackgroundQuickPane extends BackgroundQuickPane { private int patternIndex = 0; // pattern setIndex. + private final static int DEFAULT_DIM_HEIGHT = 190; private ColorSelectBox foregroundColorPane; private ColorSelectBox backgroundColorPane; private PatternButton[] patternButtonArray; public PatternBackgroundQuickPane() { this.setLayout(new BorderLayout(0, 4)); - JPanel contentPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); this.add(contentPane, BorderLayout.NORTH); contentPane.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 5)); - JPanel typePane2 = new JPanel(); contentPane.add(typePane2); typePane2.setLayout(new GridLayout(0, 8, 1, 1)); @@ -48,13 +47,11 @@ public class PatternBackgroundQuickPane extends BackgroundQuickPane { patternButtonGroup.add(patternButtonArray[i]); typePane2.add(patternButtonArray[i]); } - JPanel colorPane = new JPanel(new GridLayout(0, 2)); foregroundColorPane = new ColorSelectBox(70); backgroundColorPane = new ColorSelectBox(70); - - colorPane.add(this.createLabelColorPane(Inter.getLocText("Foreground") + ":", foregroundColorPane)); - colorPane.add(this.createLabelColorPane(Inter.getLocText("Background") + ":", backgroundColorPane)); + colorPane.add(this.createLabelColorPane(Inter.getLocText("FR-Designer_Foreground") + ":", foregroundColorPane)); + colorPane.add(this.createLabelColorPane(Inter.getLocText("FR-Designer_Background") + ":", backgroundColorPane)); this.add(colorPane, BorderLayout.CENTER); foregroundColorPane.addSelectChangeListener(colorChangeListener); backgroundColorPane.addSelectChangeListener(colorChangeListener); @@ -63,7 +60,7 @@ public class PatternBackgroundQuickPane extends BackgroundQuickPane { @Override public Dimension getPreferredSize() { Dimension dim = super.getPreferredSize(); - dim.height = 190; + dim.height = DEFAULT_DIM_HEIGHT; return dim; } @@ -204,6 +201,6 @@ public class PatternBackgroundQuickPane extends BackgroundQuickPane { @Override public String title4PopupWindow() { - return Inter.getLocText("Background-Pattern"); + return Inter.getLocText("FR-Designer_Background-Pattern"); } } \ No newline at end of file From 8cafb6397b8b1f5b513a79bac473f2572b417175 Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 27 Apr 2017 14:23:56 +0800 Subject: [PATCH 59/76] =?UTF-8?q?REPORT-2343=20[=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E8=B4=A8=E9=87=8F]=20=E6=A8=A1=E6=9D=BF=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=94=B6=E9=9B=86=E7=94=A8xml=E6=96=B9=E5=BC=8F=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E4=B8=8E=E8=AF=BB=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templateinfo/TemplateInfoCollector.java | 193 +++++++++++++++++- 1 file changed, 183 insertions(+), 10 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index dccff0e9c3..c8a25cb29a 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -37,6 +37,35 @@ public class TemplateInfoCollector implements XMLReadable, XML static final long serialVersionUID = 2007L; private static final String XML_DESIGNER_OPEN_DATE = "DesignerOpenDate"; private static final String XML_TEMPLATE_INFO_LIST = "TemplateInfoList"; + private static final String XML_TEMPLATE_INFO = "TemplateInfo"; + private static final String XML_PROCESS_MAP = "ProcessMap"; + private static final String XML_CONSUMING_MAP = "ConsumingMap"; + private static final String ATTR_DAY_COUNT = "dayCount"; + private static final String ATTR_TEMPLATE_ID = "templateID"; + /* + * "process":"","float_count":0,"widget_count":1,"cell_count":0,"block_count":0,"report_type":2 + * */ + private static final String ATTR_PROCESS = "process"; + private static final String ATTR_FLOAT_COUNT = "floatCount"; + private static final String ATTR_WIDGET_COUNT = "widgetCount"; + private static final String ATTR_CELL_COUNT = "cellCount"; + private static final String ATTR_BLOCK_COUNT = "blockCount"; + private static final String ATTR_REPORT_TYPE = "reportType"; + /* + * "activitykey":"2e0ea413-fa9c241e0-9723-4354fce51e81","jar_time":"2017.04.21.10.41.10.806", + * "create_time":"2017-04-26 10:27","templateID":"0aa19027-e298-4d43-868d-45232b879d0e", + * "uuid":"476ca2cc-f789-4c5d-8e89-ef146580775c","time_consume":36,"version":"8.0", + * "username":"ueeHq6 + * */ + private static final String ATTR_ACTIVITYKEY = "activitykey"; + private static final String ATTR_JAR_TIME = "jarTime"; + private static final String ATTR_CREATE_TIME = "createTime"; + private static final String ATTR_UUID = "uuid"; + private static final String ATTR_TIME_CONSUME = "timeConsume"; + private static final String ATTR_VERSION = "version"; + private static final String ATTR_USERNAME = "username"; + + @SuppressWarnings("unchecked") private TemplateInfoCollector() { @@ -418,13 +447,14 @@ public class TemplateInfoCollector implements XMLReadable, XML if (XML_DESIGNER_OPEN_DATE.equals(name)) { this.designerOpenDate = reader.getElementValue(); } else if(XML_TEMPLATE_INFO_LIST.equals(name)){ - JSONObject jsonObject = new JSONObject(reader.getElementValue()); - Map map = jsonToMap(jsonObject); - for (Map.Entry entry : map.entrySet()) { - if (entry.getValue() instanceof HashMap) { - this.templateInfoList.put(entry.getKey(), (HashMap) entry.getValue()); - } - } +// JSONObject jsonObject = new JSONObject(reader.getElementValue()); +// Map map = jsonToMap(jsonObject); +// for (Map.Entry entry : map.entrySet()) { +// if (entry.getValue() instanceof HashMap) { +// this.templateInfoList.put(entry.getKey(), (HashMap) entry.getValue()); +// } +// } + readTemplateInfoList(reader); } } catch (Exception ex) { // 什么也不做,使用默认值 @@ -432,21 +462,164 @@ public class TemplateInfoCollector implements XMLReadable, XML } } + private void readTemplateInfoList(XMLableReader reader) { + reader.readXMLObject(new XMLReadable() { + public void readXML(XMLableReader reader) { + if (XML_TEMPLATE_INFO.equals(reader.getTagName())) { + TemplateInfo templateInfo = new TemplateInfo(); + reader.readXMLObject(templateInfo); + templateInfoList.put(templateInfo.getTemplateID(), templateInfo.getTemplateInfo()); + } + } + }); + } + @Override public void writeXML(XMLPrintWriter writer) { - writer.startTAG("TemplateInfo"); + writer.startTAG("TplInfo"); writer.startTAG(XML_DESIGNER_OPEN_DATE); writer.textNode(designerOpenDate); writer.end(); - writer.startTAG(XML_TEMPLATE_INFO_LIST); - writer.textNode(new JSONObject(templateInfoList).toString()); +// writer.startTAG(XML_TEMPLATE_INFO_LIST); +// writer.textNode(new JSONObject(templateInfoList).toString()); +// writer.end(); + writeTemplateInfoList(writer); + writer.end(); + } + private void writeTemplateInfoList(XMLPrintWriter writer){ + //启停 + writer.startTAG(XML_TEMPLATE_INFO_LIST); + for (String templateID : templateInfoList.keySet()) { + new TemplateInfo(templateInfoList.get(templateID)).writeXML(writer); + } +// for (int i = 0; i < templateInfoList.size(); i++) { +// startStop.get(i).writeXML(writer); +// } writer.end(); } + private class TemplateInfo implements XMLReadable, XMLWriter { + + private int dayCount; + private String templateID; + private HashMap processMap = new HashMap<>(); + private HashMap consumingMap = new HashMap<>(); + + @SuppressWarnings("unchecked") + public TemplateInfo(HashMap templateInfo) { + this.dayCount = (int)templateInfo.get("day_count"); + this.processMap = (HashMap) templateInfo.get("processMap"); + this.consumingMap = (HashMap) templateInfo.get("consumingMap"); + this.templateID = (String) processMap.get("templateID"); + } + + public TemplateInfo() {} + +// public int getDayCount() { +// return dayCount; +// } + public String getTemplateID() { + return templateID; + } + +// public void setStartDate(String startDate) { +// this.startDate = startDate; +// } + + public HashMap getTemplateInfo() { + HashMap templateInfo = new HashMap<>(); + templateInfo.put("processMap", processMap); + templateInfo.put("consumingMap", consumingMap); + templateInfo.put("day_count", dayCount); + return templateInfo; + } + +// public HashMap getProcessMap() { +// return processMap; +// } +// +// public HashMap getConsumingMap() { +// return consumingMap; +// } + +// public void setStopDate(String endDate) { +// this.stopDate = endDate; +// } + + public void writeXML(XMLPrintWriter writer) { + writer.startTAG(XML_TEMPLATE_INFO); + if (StringUtils.isNotEmpty(templateID)) { + writer.attr(ATTR_TEMPLATE_ID, this.templateID); + } + if (dayCount >= 0) { + writer.attr(ATTR_DAY_COUNT, this.dayCount); + } + writeProcessMap(writer); + writeConsumingMap(writer); + + writer.end(); + } + + private void writeProcessMap(XMLPrintWriter writer) { + writer.startTAG(XML_PROCESS_MAP); + writer.attr(ATTR_PROCESS, (String)processMap.get("process")); + writer.attr(ATTR_FLOAT_COUNT, (int)processMap.get("float_count")); + writer.attr(ATTR_WIDGET_COUNT, (int)processMap.get("widget_count")); + writer.attr(ATTR_CELL_COUNT, (int)processMap.get("cell_count")); + writer.attr(ATTR_BLOCK_COUNT, (int)processMap.get("block_count")); + writer.attr(ATTR_REPORT_TYPE, (int)processMap.get("report_type")); + writer.end(); + } + + private void writeConsumingMap(XMLPrintWriter writer) { + writer.startTAG(XML_CONSUMING_MAP); + writer.attr(ATTR_ACTIVITYKEY, (String)consumingMap.get("activitykey")); + writer.attr(ATTR_JAR_TIME, (String)consumingMap.get("jar_time")); + writer.attr(ATTR_CREATE_TIME, (String)consumingMap.get("create_time")); + writer.attr(ATTR_UUID, (String)consumingMap.get("uuid")); + writer.attr(ATTR_TIME_CONSUME, (long)consumingMap.get("time_consume")); + writer.attr(ATTR_VERSION, (String)consumingMap.get("version")); + writer.attr(ATTR_USERNAME, (String)consumingMap.get("username")); + writer.end(); + } + + public void readXML(XMLableReader reader) { + if (!reader.isChildNode()) { + dayCount = reader.getAttrAsInt(ATTR_DAY_COUNT, 0); + templateID = reader.getAttrAsString(ATTR_TEMPLATE_ID, StringUtils.EMPTY); + } else { + try { + String name = reader.getTagName(); + if (XML_PROCESS_MAP.equals(name)) { + processMap.put("process", reader.getAttrAsString(ATTR_PROCESS, StringUtils.EMPTY)); + processMap.put("float_count", reader.getAttrAsInt(ATTR_FLOAT_COUNT, 0)); + processMap.put("widget_count", reader.getAttrAsInt(ATTR_WIDGET_COUNT, 0)); + processMap.put("cell_count", reader.getAttrAsInt(ATTR_CELL_COUNT, 0)); + processMap.put("block_count", reader.getAttrAsInt(ATTR_BLOCK_COUNT, 0)); + processMap.put("report_type", reader.getAttrAsInt(ATTR_REPORT_TYPE, 0)); + processMap.put("templateID", templateID); + } else if(XML_CONSUMING_MAP.equals(name)){ + consumingMap.put("activitykey", reader.getAttrAsString(ATTR_ACTIVITYKEY, StringUtils.EMPTY)); + consumingMap.put("jar_time", reader.getAttrAsString(ATTR_JAR_TIME, StringUtils.EMPTY)); + consumingMap.put("create_time", reader.getAttrAsString(ATTR_CREATE_TIME, StringUtils.EMPTY)); + consumingMap.put("templateID", templateID); + consumingMap.put("uuid", reader.getAttrAsString(ATTR_UUID, StringUtils.EMPTY)); + consumingMap.put("time_consume", reader.getAttrAsLong(ATTR_TIME_CONSUME, 0)); + consumingMap.put("version", reader.getAttrAsString(ATTR_VERSION, "8.0")); + consumingMap.put("username", reader.getAttrAsString(ATTR_USERNAME, StringUtils.EMPTY)); + } + } catch (Exception ex) { + // 什么也不做,使用默认值 + } + } + } + + } + public static void main(String[] args) { TemplateInfoCollector tic = TemplateInfoCollector.getInstance(); From f7b05c896eaae670a010e1a471b755d25ad4ef66 Mon Sep 17 00:00:00 2001 From: zack Date: Thu, 27 Apr 2017 15:01:59 +0800 Subject: [PATCH 60/76] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=20master?= =?UTF-8?q?=E7=9A=84boundsWidget=E5=88=B0release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/beans/ConnectorCreator.java | 9 ++--- .../adapters/layout/FRFitLayoutAdapter.java | 4 +- .../beans/location/AccessDirection.java | 2 +- .../design/designer/beans/location/Inner.java | 2 +- .../designer/creator/XWAbsoluteLayout.java | 40 ++++++++++++------- .../design/designer/creator/XWFitLayout.java | 18 ++++----- .../designer/creator/XWScaleLayout.java | 9 ++--- .../designer/creator/XWTitleLayout.java | 2 +- .../cardlayout/XWCardMainBorderLayout.java | 11 ++--- .../creator/cardlayout/XWTabFitLayout.java | 2 +- .../fr/design/mainframe/ConnectorHelper.java | 15 +++---- 11 files changed, 58 insertions(+), 56 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/beans/ConnectorCreator.java b/designer_form/src/com/fr/design/designer/beans/ConnectorCreator.java index 350235d453..ed83c12d67 100644 --- a/designer_form/src/com/fr/design/designer/beans/ConnectorCreator.java +++ b/designer_form/src/com/fr/design/designer/beans/ConnectorCreator.java @@ -1,13 +1,12 @@ package com.fr.design.designer.beans; -import java.awt.Point; -import java.awt.Rectangle; +import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; +import com.fr.form.ui.container.WLayout; + +import java.awt.*; import java.util.ArrayList; import java.util.PriorityQueue; -import com.fr.form.ui.container.WLayout; -import com.fr.form.ui.widget.BoundsWidget; - public class ConnectorCreator { public static final int UNIT = 10; diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java index 12e53ccdd3..74a69e525c 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java @@ -16,13 +16,11 @@ import com.fr.design.designer.creator.cardlayout.XWCardMainBorderLayout; import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; import com.fr.design.designer.properties.FRFitLayoutConstraints; import com.fr.design.designer.properties.FRFitLayoutPropertiesGroupModel; -import com.fr.design.file.HistoryTemplateListPane; -import com.fr.design.mainframe.JForm; import com.fr.design.utils.ComponentUtils; import com.fr.form.ui.LayoutBorderStyle; +import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.form.ui.container.WLayout; import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; -import com.fr.form.ui.widget.BoundsWidget; import com.fr.general.ComparatorUtils; import java.awt.*; diff --git a/designer_form/src/com/fr/design/designer/beans/location/AccessDirection.java b/designer_form/src/com/fr/design/designer/beans/location/AccessDirection.java index 088f29a0a0..c39dfc4dba 100644 --- a/designer_form/src/com/fr/design/designer/beans/location/AccessDirection.java +++ b/designer_form/src/com/fr/design/designer/beans/location/AccessDirection.java @@ -10,7 +10,7 @@ import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.FormSelection; import com.fr.design.utils.ComponentUtils; import com.fr.form.ui.container.WAbsoluteLayout; -import com.fr.form.ui.widget.BoundsWidget; +import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import java.awt.*; diff --git a/designer_form/src/com/fr/design/designer/beans/location/Inner.java b/designer_form/src/com/fr/design/designer/beans/location/Inner.java index 4f475adf09..c909244898 100644 --- a/designer_form/src/com/fr/design/designer/beans/location/Inner.java +++ b/designer_form/src/com/fr/design/designer/beans/location/Inner.java @@ -9,7 +9,7 @@ import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.FormSelection; import com.fr.design.utils.ComponentUtils; import com.fr.form.ui.container.WAbsoluteLayout; -import com.fr.form.ui.widget.BoundsWidget; +import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.stable.ArrayUtils; import java.awt.*; diff --git a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java index 1854b91f46..852cdf1220 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java @@ -3,31 +3,35 @@ */ package com.fr.design.designer.creator; -import java.awt.*; -import java.awt.event.ContainerEvent; -import java.awt.event.MouseEvent; -import java.awt.image.BufferedImage; -import java.beans.IntrospectionException; -import java.util.HashMap; - import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; import com.fr.design.designer.beans.LayoutAdapter; import com.fr.design.designer.beans.adapters.layout.FRAbsoluteLayoutAdapter; import com.fr.design.designer.beans.location.Direction; import com.fr.design.designer.beans.models.SelectionModel; +import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; import com.fr.design.form.layout.FRAbsoluteLayout; import com.fr.design.icon.IconPathConstants; -import com.fr.design.mainframe.*; +import com.fr.design.mainframe.EditingMouseListener; +import com.fr.design.mainframe.FormArea; +import com.fr.design.mainframe.FormDesigner; import com.fr.form.ui.Connector; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WAbsoluteLayout; +import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.form.ui.container.WLayout; -import com.fr.form.ui.widget.BoundsWidget; import com.fr.general.FRScreen; import com.fr.general.IOUtils; import com.fr.general.Inter; +import java.awt.*; +import java.awt.event.ContainerEvent; +import java.awt.event.MouseEvent; +import java.awt.image.BufferedImage; +import java.beans.IntrospectionException; +import java.util.ArrayList; +import java.util.HashMap; + /** * @author richer * @since 6.5.3 @@ -159,7 +163,15 @@ public class XWAbsoluteLayout extends XLayoutContainer { if (xCreator.acceptType(XWAbsoluteLayout.class)) { ((XWAbsoluteLayout) xCreator).updateBoundsWidget(); } - BoundsWidget boundsWidget = layout.getBoundsWidget(xCreator.toData()); + // 如果子组件时tab布局,则tab布局内部的组件的wiget也要更新,否则保存后重新打开大小不对 + ArrayList childrenList = xCreator.getTargetChildrenList(); + if (!childrenList.isEmpty()) { + for (int i = 0; i < childrenList.size(); i++) { + XWTabFitLayout tabLayout = (XWTabFitLayout) childrenList.get(i); + tabLayout.updateBoundsWidget(); + } + } + BoundsWidget boundsWidget = (BoundsWidget) layout.getBoundsWidget(xCreator.toData()); Rectangle rectangle = dealWidgetBound(xCreator.getBounds()); } @@ -184,7 +196,7 @@ public class XWAbsoluteLayout extends XLayoutContainer { double percentH = ((double) backupBound.height / (double) currentBound.height); for (int index = 0, n = this.getComponentCount(); index < n; index++) { XCreator creator = (XCreator) this.getComponent(index); - BoundsWidget wgt = layout.getBoundsWidget(creator.toData()); + BoundsWidget wgt = (BoundsWidget) layout.getBoundsWidget(creator.toData()); // 用当前的显示大小计算后调正具体位置 Rectangle wgtBound = creator.getBounds(); Rectangle rec = calculateBound(wgtBound, percentW, percentH); @@ -217,7 +229,7 @@ public class XWAbsoluteLayout extends XLayoutContainer { rec.y = (int) (rec.y / prevContainerPercent * containerPercent); rec.height = (int) (rec.height / prevContainerPercent * containerPercent); rec.width = (int) (rec.width / prevContainerPercent * containerPercent); - BoundsWidget wgt = toData().getBoundsWidget(creator.toData()); + BoundsWidget wgt = (BoundsWidget) toData().getBoundsWidget(creator.toData()); wgt.setBounds(rec); creator.setBounds(rec); creator.updateChildBound(minHeight); @@ -481,7 +493,7 @@ public class XWAbsoluteLayout extends XLayoutContainer { XCreator xCreator = (XCreator) getComponent(i); Rectangle rectangle = xCreator.getBounds(); xCreator.setBounds((int) (rectangle.x * percent), rectangle.y, (int) (rectangle.width * percent), rectangle.height); - BoundsWidget widget = toData().getBoundsWidget(xCreator.toData()); + BoundsWidget widget = (BoundsWidget) toData().getBoundsWidget(xCreator.toData()); widget.setBounds(xCreator.getBounds()); } } @@ -498,7 +510,7 @@ public class XWAbsoluteLayout extends XLayoutContainer { XCreator xCreator = (XCreator) getComponent(i); Rectangle rectangle = xCreator.getBounds(); xCreator.setBounds(rectangle.x, (int) (rectangle.y * percent), rectangle.width, (int) (rectangle.height * percent)); - BoundsWidget widget = toData().getBoundsWidget(xCreator.toData()); + BoundsWidget widget = (BoundsWidget) toData().getBoundsWidget(xCreator.toData()); widget.setBounds(xCreator.getBounds()); } } diff --git a/designer_form/src/com/fr/design/designer/creator/XWFitLayout.java b/designer_form/src/com/fr/design/designer/creator/XWFitLayout.java index 340ec9cd1e..2ab8910223 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWFitLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWFitLayout.java @@ -1,14 +1,5 @@ package com.fr.design.designer.creator; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.Rectangle; -import java.awt.Toolkit; -import java.awt.event.ContainerEvent; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - import com.fr.design.designer.beans.LayoutAdapter; import com.fr.design.designer.beans.adapters.layout.FRFitLayoutAdapter; import com.fr.design.designer.beans.location.Direction; @@ -20,14 +11,19 @@ import com.fr.design.mainframe.FormArea; import com.fr.design.utils.gui.LayoutUtils; import com.fr.form.ui.PaddingMargin; import com.fr.form.ui.Widget; +import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.form.ui.container.WBodyLayoutType; import com.fr.form.ui.container.WFitLayout; import com.fr.form.ui.container.WLayout; -import com.fr.form.ui.widget.BoundsWidget; import com.fr.general.FRScreen; -import com.fr.general.Inter; import com.fr.stable.ArrayUtils; +import java.awt.*; +import java.awt.event.ContainerEvent; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + /** * @author jim * @date 2014-6-23 diff --git a/designer_form/src/com/fr/design/designer/creator/XWScaleLayout.java b/designer_form/src/com/fr/design/designer/creator/XWScaleLayout.java index 8dad2c7f07..2c592cc217 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWScaleLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWScaleLayout.java @@ -3,16 +3,15 @@ */ package com.fr.design.designer.creator; -import java.awt.Dimension; -import java.awt.Rectangle; -import java.awt.event.ContainerEvent; - import com.fr.design.designer.beans.LayoutAdapter; import com.fr.design.designer.beans.adapters.layout.FRScaleLayoutAdapter; import com.fr.design.form.layout.FRScaleLayout; import com.fr.form.ui.Widget; +import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.form.ui.container.WScaleLayout; -import com.fr.form.ui.widget.BoundsWidget; + +import java.awt.*; +import java.awt.event.ContainerEvent; /** * 自适应布局中添加组件时,部分控件如数字文本下拉等需要保持控件默认高度21, 用此容器来实现 diff --git a/designer_form/src/com/fr/design/designer/creator/XWTitleLayout.java b/designer_form/src/com/fr/design/designer/creator/XWTitleLayout.java index 0e1a293bdf..7b9a5380c2 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWTitleLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWTitleLayout.java @@ -11,7 +11,7 @@ import com.fr.form.ui.Label; import com.fr.form.ui.Widget; import com.fr.form.ui.WidgetTitle; import com.fr.form.ui.container.WTitleLayout; -import com.fr.form.ui.widget.BoundsWidget; +import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.general.ComparatorUtils; import java.awt.*; diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java index 9b778f850f..94dfaf92e5 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java @@ -3,10 +3,6 @@ */ package com.fr.design.designer.creator.cardlayout; -import java.awt.*; -import java.awt.event.MouseEvent; -import java.awt.image.BufferedImage; -import java.util.ArrayList; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; import com.fr.design.designer.beans.models.SelectionModel; @@ -17,12 +13,17 @@ import com.fr.design.designer.creator.XWBorderLayout; import com.fr.design.icon.IconPathConstants; import com.fr.design.mainframe.EditingMouseListener; import com.fr.design.mainframe.FormDesigner; +import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.form.ui.container.WBorderLayout; import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; -import com.fr.form.ui.widget.BoundsWidget; import com.fr.general.IOUtils; import com.fr.general.Inter; +import java.awt.*; +import java.awt.event.MouseEvent; +import java.awt.image.BufferedImage; +import java.util.ArrayList; + /** * card布局主体框架 * diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java index c0d1a06ed1..5a2afa00c0 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java @@ -18,7 +18,7 @@ import com.fr.design.utils.gui.LayoutUtils; import com.fr.form.ui.CardSwitchButton; import com.fr.form.ui.container.cardlayout.WCardTagLayout; import com.fr.form.ui.container.cardlayout.WTabFitLayout; -import com.fr.form.ui.widget.BoundsWidget; +import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.general.Background; import com.fr.general.FRLogger; import com.fr.general.Inter; diff --git a/designer_form/src/com/fr/design/mainframe/ConnectorHelper.java b/designer_form/src/com/fr/design/mainframe/ConnectorHelper.java index a640058123..93add36341 100644 --- a/designer_form/src/com/fr/design/mainframe/ConnectorHelper.java +++ b/designer_form/src/com/fr/design/mainframe/ConnectorHelper.java @@ -1,18 +1,15 @@ package com.fr.design.mainframe; -import java.awt.Color; -import java.awt.Graphics; -import java.awt.Point; -import java.awt.Rectangle; -import java.awt.event.MouseEvent; -import java.util.ArrayList; - -import com.fr.form.ui.widget.BoundsWidget; -import com.fr.stable.Constants; import com.fr.base.GraphHelper; import com.fr.design.designer.beans.ConnectorCreator; import com.fr.design.designer.creator.XWAbsoluteLayout; import com.fr.form.ui.Connector; +import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; +import com.fr.stable.Constants; + +import java.awt.*; +import java.awt.event.MouseEvent; +import java.util.ArrayList; public class ConnectorHelper { //这个类是用来画连接线的,暂时用不到 From 4700b3dc89fb369e73a08d0ccf3b590edd4ffbea Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 27 Apr 2017 15:20:06 +0800 Subject: [PATCH 61/76] =?UTF-8?q?REPORT-2343=20[=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E8=B4=A8=E9=87=8F]=3D>=E5=85=BC=E5=AE=B9=E4=B9=8B=E5=89=8D?= =?UTF-8?q?=E7=9A=84=E5=AF=B9=E8=B1=A1=E6=B5=81=E8=AF=BB=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templateinfo/TemplateInfoCollector.java | 58 +++++-------------- 1 file changed, 15 insertions(+), 43 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index c8a25cb29a..9206785dd9 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -25,8 +25,9 @@ import java.util.Iterator; * 做模板的过程和耗时收集,辅助类 * Created by plough on 2017/2/21. */ -public class TemplateInfoCollector implements XMLReadable, XMLWriter { +public class TemplateInfoCollector implements Serializable, XMLReadable, XMLWriter { private static final String FILE_NAME = "tpl.info"; + private static final String OBJECT_FILE_NAME = "tplInfo.ser"; private static TemplateInfoCollector instance; private Map> templateInfoList; private String designerOpenDate; //设计器最近一次打开日期 @@ -42,21 +43,12 @@ public class TemplateInfoCollector implements XMLReadable, XML private static final String XML_CONSUMING_MAP = "ConsumingMap"; private static final String ATTR_DAY_COUNT = "dayCount"; private static final String ATTR_TEMPLATE_ID = "templateID"; - /* - * "process":"","float_count":0,"widget_count":1,"cell_count":0,"block_count":0,"report_type":2 - * */ private static final String ATTR_PROCESS = "process"; private static final String ATTR_FLOAT_COUNT = "floatCount"; private static final String ATTR_WIDGET_COUNT = "widgetCount"; private static final String ATTR_CELL_COUNT = "cellCount"; private static final String ATTR_BLOCK_COUNT = "blockCount"; private static final String ATTR_REPORT_TYPE = "reportType"; - /* - * "activitykey":"2e0ea413-fa9c241e0-9723-4354fce51e81","jar_time":"2017.04.21.10.41.10.806", - * "create_time":"2017-04-26 10:27","templateID":"0aa19027-e298-4d43-868d-45232b879d0e", - * "uuid":"476ca2cc-f789-4c5d-8e89-ef146580775c","time_consume":36,"version":"8.0", - * "username":"ueeHq6 - * */ private static final String ATTR_ACTIVITYKEY = "activitykey"; private static final String ATTR_JAR_TIME = "jarTime"; private static final String ATTR_CREATE_TIME = "createTime"; @@ -66,7 +58,6 @@ public class TemplateInfoCollector implements XMLReadable, XML private static final String ATTR_USERNAME = "username"; - @SuppressWarnings("unchecked") private TemplateInfoCollector() { templateInfoList = new HashMap<>(); @@ -95,10 +86,23 @@ public class TemplateInfoCollector implements XMLReadable, XML return new File(StableUtils.pathJoin(ProductConstants.getEnvHome(), FILE_NAME)); } + private static File getObjectInfoFile() { + return new File(StableUtils.pathJoin(ProductConstants.getEnvHome(), OBJECT_FILE_NAME)); + } + public static TemplateInfoCollector getInstance() { if (instance == null) { instance = new TemplateInfoCollector(); readXMLFile(instance, getInfoFile()); + // 兼容过渡。如果没有新文件,则从老文件读取数据。以后都是读写新的 xml 文件 + if (!getInfoFile().exists() && getObjectInfoFile().exists()) { + try { + ObjectInputStream is = new ObjectInputStream(new FileInputStream(getObjectInfoFile())); + instance = (TemplateInfoCollector) is.readObject(); + } catch (Exception ex) { + // 什么也不做,instance 使用新值 + } + } } return instance; } @@ -447,13 +451,6 @@ public class TemplateInfoCollector implements XMLReadable, XML if (XML_DESIGNER_OPEN_DATE.equals(name)) { this.designerOpenDate = reader.getElementValue(); } else if(XML_TEMPLATE_INFO_LIST.equals(name)){ -// JSONObject jsonObject = new JSONObject(reader.getElementValue()); -// Map map = jsonToMap(jsonObject); -// for (Map.Entry entry : map.entrySet()) { -// if (entry.getValue() instanceof HashMap) { -// this.templateInfoList.put(entry.getKey(), (HashMap) entry.getValue()); -// } -// } readTemplateInfoList(reader); } } catch (Exception ex) { @@ -482,9 +479,6 @@ public class TemplateInfoCollector implements XMLReadable, XML writer.textNode(designerOpenDate); writer.end(); -// writer.startTAG(XML_TEMPLATE_INFO_LIST); -// writer.textNode(new JSONObject(templateInfoList).toString()); -// writer.end(); writeTemplateInfoList(writer); writer.end(); @@ -496,9 +490,6 @@ public class TemplateInfoCollector implements XMLReadable, XML for (String templateID : templateInfoList.keySet()) { new TemplateInfo(templateInfoList.get(templateID)).writeXML(writer); } -// for (int i = 0; i < templateInfoList.size(); i++) { -// startStop.get(i).writeXML(writer); -// } writer.end(); } @@ -519,17 +510,10 @@ public class TemplateInfoCollector implements XMLReadable, XML public TemplateInfo() {} -// public int getDayCount() { -// return dayCount; -// } public String getTemplateID() { return templateID; } -// public void setStartDate(String startDate) { -// this.startDate = startDate; -// } - public HashMap getTemplateInfo() { HashMap templateInfo = new HashMap<>(); templateInfo.put("processMap", processMap); @@ -538,18 +522,6 @@ public class TemplateInfoCollector implements XMLReadable, XML return templateInfo; } -// public HashMap getProcessMap() { -// return processMap; -// } -// -// public HashMap getConsumingMap() { -// return consumingMap; -// } - -// public void setStopDate(String endDate) { -// this.stopDate = endDate; -// } - public void writeXML(XMLPrintWriter writer) { writer.startTAG(XML_TEMPLATE_INFO); if (StringUtils.isNotEmpty(templateID)) { From aa379c899448a73727f2e0cd99a6b6b0eb94fc5c Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 27 Apr 2017 15:23:15 +0800 Subject: [PATCH 62/76] =?UTF-8?q?REPORT-2343=20[=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E8=B4=A8=E9=87=8F]=3D>=E5=8E=BB=E6=8E=89=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templateinfo/TemplateInfoCollector.java | 45 ------------------- 1 file changed, 45 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index 9206785dd9..b5bac38d90 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -397,51 +397,6 @@ public class TemplateInfoCollector implements Serializable, XM return isTestTemplate; } - public static Map jsonToMap(JSONObject json) throws JSONException { - Map retMap = new HashMap<>(); - - if(json != JSONObject.NULL) { - retMap = toMap(json); - } - return retMap; - } - - private static Map toMap(JSONObject object) throws JSONException { - Map map = new HashMap<>(); - - Iterator keysItr = object.keys(); - while(keysItr.hasNext()) { - String key = keysItr.next(); - Object value = object.get(key); - - if(value instanceof JSONArray) { - value = toList((JSONArray) value); - } - - else if(value instanceof JSONObject) { - value = toMap((JSONObject) value); - } - map.put(key, value); - } - return map; - } - - private static List toList(JSONArray array) throws JSONException { - List list = new ArrayList<>(); - for(int i = 0; i < array.length(); i++) { - Object value = array.get(i); - if(value instanceof JSONArray) { - value = toList((JSONArray) value); - } - - else if(value instanceof JSONObject) { - value = toMap((JSONObject) value); - } - list.add(value); - } - return list; - } - @SuppressWarnings("unchecked") @Override public void readXML(XMLableReader reader) { From ba60f5ad9a0efa80d8e2d5201ddedd8f634620fd Mon Sep 17 00:00:00 2001 From: XiaXiang Date: Thu, 27 Apr 2017 17:08:36 +0800 Subject: [PATCH 63/76] =?UTF-8?q?=E6=A1=86=E9=80=89=E6=94=B9=E9=94=99?= =?UTF-8?q?=E5=95=A6=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/ComponentTree.java | 31 ++++++------------- .../com/fr/design/mainframe/FormDesigner.java | 2 +- .../mainframe/widget/UITreeComboBox.java | 23 ++++++-------- 3 files changed, 21 insertions(+), 35 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/ComponentTree.java b/designer_form/src/com/fr/design/mainframe/ComponentTree.java index 67894b991e..1ceab13c0a 100644 --- a/designer_form/src/com/fr/design/mainframe/ComponentTree.java +++ b/designer_form/src/com/fr/design/mainframe/ComponentTree.java @@ -1,26 +1,23 @@ package com.fr.design.mainframe; +import java.awt.Component; +import java.util.ArrayList; + +import javax.swing.DropMode; +import javax.swing.JTree; +import javax.swing.tree.TreePath; +import javax.swing.tree.TreeSelectionModel; + import com.fr.design.constants.UIConstants; -import com.fr.design.designer.creator.XCreator; -import com.fr.design.designer.creator.XLayoutContainer; -import com.fr.design.designer.creator.XWAbsoluteBodyLayout; -import com.fr.design.designer.creator.XWFitLayout; +import com.fr.design.designer.creator.*; import com.fr.design.designer.treeview.ComponentTreeCellRenderer; import com.fr.design.designer.treeview.ComponentTreeModel; import com.fr.stable.StringUtils; -import javax.swing.*; -import javax.swing.tree.TreePath; -import javax.swing.tree.TreeSelectionModel; -import java.awt.*; -import java.util.ArrayList; - public class ComponentTree extends JTree { private FormDesigner designer; private ComponentTreeModel model; - //xiaoxia 保存框选的全部组件,只显示第一个 - private TreePath[] allSelectedTreePaths; public ComponentTree(FormDesigner designer) { this.designer = designer; @@ -89,8 +86,7 @@ public class ComponentTree extends JTree { } public void setAndScrollSelectionPath(TreePath[] treepath) { - this.setAllSelectedTreePaths(treepath); - setSelectionPath(treepath[0]); + setSelectionPaths(treepath); scrollPathToVisible(treepath[0]); } @@ -214,11 +210,4 @@ public class ComponentTree extends JTree { return new TreePath(components); } - public TreePath[] getAllSelectedTreePaths() { - return allSelectedTreePaths; - } - - public void setAllSelectedTreePaths(TreePath[] allSelectedTreePaths) { - this.allSelectedTreePaths = allSelectedTreePaths; - } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/mainframe/FormDesigner.java b/designer_form/src/com/fr/design/mainframe/FormDesigner.java index 3e29f41281..3aa9e24ee1 100644 --- a/designer_form/src/com/fr/design/mainframe/FormDesigner.java +++ b/designer_form/src/com/fr/design/mainframe/FormDesigner.java @@ -1008,7 +1008,7 @@ public class FormDesigner extends TargetComponent implements TreeSelection @Override public void valueChanged(TreeSelectionEvent e) { ComponentTree tree = (ComponentTree) e.getSource(); - TreePath[] paths = tree.getAllSelectedTreePaths(); + TreePath[] paths = tree.getSelectionPaths(); if (paths != null) { ArrayList selected = new ArrayList(); diff --git a/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java b/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java index 258fd15d31..62c9aa0678 100644 --- a/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java +++ b/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java @@ -3,24 +3,22 @@ package com.fr.design.mainframe.widget; /** * Created by xiaxiang on 2016/9/30. */ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.plaf.*; +import javax.swing.plaf.basic.*; +import javax.swing.plaf.metal.*; +import javax.swing.tree.*; -import com.fr.design.designer.beans.AdapterBus; +import com.fr.design.designer.beans.*; import com.fr.design.designer.beans.events.DesignerEditListener; import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.creator.XCreator; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.mainframe.ComponentTree; -import com.sun.java.swing.plaf.motif.MotifComboBoxUI; -import com.sun.java.swing.plaf.windows.WindowsComboBoxUI; - -import javax.swing.*; -import javax.swing.plaf.ComboBoxUI; -import javax.swing.plaf.basic.ComboPopup; -import javax.swing.plaf.metal.MetalComboBoxUI; -import javax.swing.tree.TreeCellRenderer; -import javax.swing.tree.TreePath; -import java.awt.*; -import java.awt.event.*; +import com.sun.java.swing.plaf.motif.*; +import com.sun.java.swing.plaf.windows.*; /** * 控件树下拉列表框 @@ -67,7 +65,6 @@ public class UITreeComboBox extends JComboBox{ * @param o Object */ public void setSelectedItem(Object o){ - tree.setSelectionPath((TreePath)o); getModel().setSelectedItem(o); } From ef7543f1f80883d090eb49c2d95fe8d4e698116e Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 27 Apr 2017 17:48:19 +0800 Subject: [PATCH 64/76] =?UTF-8?q?REPORT-2343=20[=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E8=B4=A8=E9=87=8F]=3D>=E5=A4=9A=E6=AC=A1=E5=87=BA=E7=8E=B0?= =?UTF-8?q?=E7=9A=84=E5=AD=97=E7=AC=A6=E4=B8=B2=E6=94=B9=E4=B8=BA=E5=B8=B8?= =?UTF-8?q?=E9=87=8F=EF=BC=9B=E7=BB=9F=E4=B8=80=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templateinfo/TemplateInfoCollector.java | 174 +++++++++--------- 1 file changed, 88 insertions(+), 86 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index b5bac38d90..1a06d82c35 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -39,23 +39,25 @@ public class TemplateInfoCollector implements Serializable, XM private static final String XML_DESIGNER_OPEN_DATE = "DesignerOpenDate"; private static final String XML_TEMPLATE_INFO_LIST = "TemplateInfoList"; private static final String XML_TEMPLATE_INFO = "TemplateInfo"; - private static final String XML_PROCESS_MAP = "ProcessMap"; - private static final String XML_CONSUMING_MAP = "ConsumingMap"; - private static final String ATTR_DAY_COUNT = "dayCount"; + private static final String XML_PROCESS_MAP = "processMap"; + private static final String XML_CONSUMING_MAP = "consumingMap"; + private static final String ATTR_DAY_COUNT = "day_count"; private static final String ATTR_TEMPLATE_ID = "templateID"; private static final String ATTR_PROCESS = "process"; - private static final String ATTR_FLOAT_COUNT = "floatCount"; - private static final String ATTR_WIDGET_COUNT = "widgetCount"; - private static final String ATTR_CELL_COUNT = "cellCount"; - private static final String ATTR_BLOCK_COUNT = "blockCount"; - private static final String ATTR_REPORT_TYPE = "reportType"; + private static final String ATTR_FLOAT_COUNT = "float_count"; + private static final String ATTR_WIDGET_COUNT = "widget_count"; + private static final String ATTR_CELL_COUNT = "cell_count"; + private static final String ATTR_BLOCK_COUNT = "block_count"; + private static final String ATTR_REPORT_TYPE = "report_type"; private static final String ATTR_ACTIVITYKEY = "activitykey"; - private static final String ATTR_JAR_TIME = "jarTime"; - private static final String ATTR_CREATE_TIME = "createTime"; + private static final String ATTR_JAR_TIME = "jar_time"; + private static final String ATTR_CREATE_TIME = "create_time"; private static final String ATTR_UUID = "uuid"; - private static final String ATTR_TIME_CONSUME = "timeConsume"; + private static final String ATTR_TIME_CONSUME = "time_consume"; private static final String ATTR_VERSION = "version"; private static final String ATTR_USERNAME = "username"; + private static final String JSON_CONSUMING_MAP = "jsonConsumingMap"; + private static final String JSON_PROCESS_MAP = "jsonProcessMap"; @SuppressWarnings("unchecked") @@ -159,8 +161,8 @@ public class TemplateInfoCollector implements Serializable, XM */ @SuppressWarnings("unchecked") public String loadProcess(T t) { - HashMap processMap = (HashMap) templateInfoList.get(t.getTemplateID()).get("processMap"); - return (String)processMap.get("process"); + HashMap processMap = (HashMap) templateInfoList.get(t.getTemplateID()).get(XML_PROCESS_MAP); + return (String)processMap.get(ATTR_PROCESS); } /** @@ -216,8 +218,8 @@ public class TemplateInfoCollector implements Serializable, XM if (designerOpenFirstTime()) { for (String key : templateInfoList.keySet()) { HashMap templateInfo = templateInfoList.get(key); - int dayCount = (int)templateInfo.get("day_count") + 1; - templateInfo.put("day_count", dayCount); + int dayCount = (int)templateInfo.get(ATTR_DAY_COUNT) + 1; + templateInfo.put(ATTR_DAY_COUNT, dayCount); } setDesignerOpenDate(); } @@ -241,20 +243,20 @@ public class TemplateInfoCollector implements Serializable, XM if (inList(t)) { // 已有记录 templateInfo = templateInfoList.get(t.getTemplateID()); // 更新 conusmingMap - HashMap consumingMap = (HashMap) templateInfo.get("consumingMap"); - timeConsume += (long)consumingMap.get("time_consume"); // 加上之前的累计编辑时间 - consumingMap.put("time_consume", timeConsume); + HashMap consumingMap = (HashMap) templateInfo.get(XML_CONSUMING_MAP); + timeConsume += (long)consumingMap.get(ATTR_TIME_CONSUME); // 加上之前的累计编辑时间 + consumingMap.put(ATTR_TIME_CONSUME, timeConsume); } else { // 新增 templateInfo = new HashMap<>(); - templateInfo.put("consumingMap", getNewConsumingMap(templateID, openTime, timeConsume)); + templateInfo.put(XML_CONSUMING_MAP, getNewConsumingMap(templateID, openTime, timeConsume)); } // 直接覆盖 processMap - templateInfo.put("processMap", getProcessMap(templateID, jt)); + templateInfo.put(XML_PROCESS_MAP, getProcessMap(templateID, jt)); // 保存模板时,让 day_count 归零 - templateInfo.put("day_count", 0); + templateInfo.put(ATTR_DAY_COUNT, 0); templateInfoList.put(templateID, templateInfo); @@ -271,14 +273,14 @@ public class TemplateInfoCollector implements Serializable, XM String createTime = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(Calendar.getInstance().getTime()); String jarTime = GeneralUtils.readBuildNO(); String version = ProductConstants.VERSION; - consumingMap.put("username", username); - consumingMap.put("uuid", uuid); - consumingMap.put("activitykey", activitykey); - consumingMap.put("templateID", templateID); - consumingMap.put("create_time", createTime); - consumingMap.put("time_consume", timeConsume); - consumingMap.put("jar_time", jarTime); - consumingMap.put("version", version); + consumingMap.put(ATTR_USERNAME, username); + consumingMap.put(ATTR_UUID, uuid); + consumingMap.put(ATTR_ACTIVITYKEY, activitykey); + consumingMap.put(ATTR_TEMPLATE_ID, templateID); + consumingMap.put(ATTR_CREATE_TIME, createTime); + consumingMap.put(ATTR_TIME_CONSUME, timeConsume); + consumingMap.put(ATTR_JAR_TIME, jarTime); + consumingMap.put(ATTR_VERSION, version); return consumingMap; } @@ -286,15 +288,15 @@ public class TemplateInfoCollector implements Serializable, XM private HashMap getProcessMap(String templateID, JTemplate jt) { HashMap processMap = new HashMap<>(); - processMap.put("templateID", templateID); - processMap.put("process", jt.getProcess()); + processMap.put(ATTR_TEMPLATE_ID, templateID); + processMap.put(ATTR_PROCESS, jt.getProcess()); TemplateProcessInfo info = jt.getProcessInfo(); - processMap.put("report_type", info.getReportType()); - processMap.put("cell_count", info.getCellCount()); - processMap.put("float_count", info.getFloatCount()); - processMap.put("block_count", info.getBlockCount()); - processMap.put("widget_count", info.getWidgetCount()); + processMap.put(ATTR_REPORT_TYPE, info.getReportType()); + processMap.put(ATTR_CELL_COUNT, info.getCellCount()); + processMap.put(ATTR_FLOAT_COUNT, info.getFloatCount()); + processMap.put(ATTR_BLOCK_COUNT, info.getBlockCount()); + processMap.put(ATTR_WIDGET_COUNT, info.getWidgetCount()); return processMap; } @@ -308,11 +310,11 @@ public class TemplateInfoCollector implements Serializable, XM String processUrl = SiteCenter.getInstance().acquireUrlByKind("tempinfo.process") + "/single"; ArrayList> completeTemplatesInfo = getCompleteTemplatesInfo(); for (HashMap templateInfo : completeTemplatesInfo) { - String jsonConsumingMap = templateInfo.get("jsonConsumingMap"); - String jsonProcessMap = templateInfo.get("jsonProcessMap"); + String jsonConsumingMap = templateInfo.get(JSON_CONSUMING_MAP); + String jsonProcessMap = templateInfo.get(JSON_PROCESS_MAP); if (sendSingleTemplateInfo(consumingUrl, jsonConsumingMap) && sendSingleTemplateInfo(processUrl, jsonProcessMap)) { // 清空记录 - removeFromTemplateInfoList(templateInfo.get("templateID")); + removeFromTemplateInfoList(templateInfo.get(ATTR_TEMPLATE_ID)); } } saveInfo(); @@ -350,21 +352,21 @@ public class TemplateInfoCollector implements Serializable, XM ArrayList testTemplateKeys = new ArrayList<>(); // 保存测试模板的key for (String key : templateInfoList.keySet()) { HashMap templateInfo = templateInfoList.get(key); - if ((int)templateInfo.get("day_count") <= COMPLETE_DAY_COUNT) { // 未完成模板 + if ((int)templateInfo.get(ATTR_DAY_COUNT) <= COMPLETE_DAY_COUNT) { // 未完成模板 continue; } if (isTestTemplate(templateInfo)) { testTemplateKeys.add(key); continue; } - HashMap consumingMap = (HashMap) templateInfo.get("consumingMap"); - HashMap processMap = (HashMap) templateInfo.get("processMap"); + HashMap consumingMap = (HashMap) templateInfo.get(XML_CONSUMING_MAP); + HashMap processMap = (HashMap) templateInfo.get(XML_PROCESS_MAP); String jsonConsumingMap = new JSONObject(consumingMap).toString(); String jsonProcessMap = new JSONObject(processMap).toString(); HashMap jsonTemplateInfo = new HashMap<>(); - jsonTemplateInfo.put("jsonConsumingMap", jsonConsumingMap); - jsonTemplateInfo.put("jsonProcessMap", jsonProcessMap); - jsonTemplateInfo.put("templateID", key); + jsonTemplateInfo.put(JSON_CONSUMING_MAP, jsonConsumingMap); + jsonTemplateInfo.put(JSON_PROCESS_MAP, jsonProcessMap); + jsonTemplateInfo.put(ATTR_TEMPLATE_ID, key); completeTemplatesInfo.add(jsonTemplateInfo); } // 删除测试模板 @@ -380,12 +382,12 @@ public class TemplateInfoCollector implements Serializable, XM @SuppressWarnings("unchecked") private boolean isTestTemplate(HashMap templateInfo) { - HashMap processMap = (HashMap) templateInfo.get("processMap"); - int reportType = (int)processMap.get("report_type"); - int cellCount = (int)processMap.get("cell_count"); - int floatCount = (int)processMap.get("float_count"); - int blockCount = (int)processMap.get("block_count"); - int widgetCount = (int)processMap.get("widget_count"); + HashMap processMap = (HashMap) templateInfo.get(XML_PROCESS_MAP); + int reportType = (int)processMap.get(ATTR_REPORT_TYPE); + int cellCount = (int)processMap.get(ATTR_CELL_COUNT); + int floatCount = (int)processMap.get(ATTR_FLOAT_COUNT); + int blockCount = (int)processMap.get(ATTR_BLOCK_COUNT); + int widgetCount = (int)processMap.get(ATTR_WIDGET_COUNT); boolean isTestTemplate = false; if (reportType == 0) { // 普通报表 isTestTemplate = cellCount <= VALID_CELL_COUNT && floatCount <= 1 && widgetCount <= VALID_WIDGET_COUNT; @@ -457,10 +459,10 @@ public class TemplateInfoCollector implements Serializable, XM @SuppressWarnings("unchecked") public TemplateInfo(HashMap templateInfo) { - this.dayCount = (int)templateInfo.get("day_count"); - this.processMap = (HashMap) templateInfo.get("processMap"); - this.consumingMap = (HashMap) templateInfo.get("consumingMap"); - this.templateID = (String) processMap.get("templateID"); + this.dayCount = (int)templateInfo.get(ATTR_DAY_COUNT); + this.processMap = (HashMap) templateInfo.get(XML_PROCESS_MAP); + this.consumingMap = (HashMap) templateInfo.get(XML_CONSUMING_MAP); + this.templateID = (String) processMap.get(ATTR_TEMPLATE_ID); } public TemplateInfo() {} @@ -471,9 +473,9 @@ public class TemplateInfoCollector implements Serializable, XM public HashMap getTemplateInfo() { HashMap templateInfo = new HashMap<>(); - templateInfo.put("processMap", processMap); - templateInfo.put("consumingMap", consumingMap); - templateInfo.put("day_count", dayCount); + templateInfo.put(XML_PROCESS_MAP, processMap); + templateInfo.put(XML_CONSUMING_MAP, consumingMap); + templateInfo.put(ATTR_DAY_COUNT, dayCount); return templateInfo; } @@ -493,24 +495,24 @@ public class TemplateInfoCollector implements Serializable, XM private void writeProcessMap(XMLPrintWriter writer) { writer.startTAG(XML_PROCESS_MAP); - writer.attr(ATTR_PROCESS, (String)processMap.get("process")); - writer.attr(ATTR_FLOAT_COUNT, (int)processMap.get("float_count")); - writer.attr(ATTR_WIDGET_COUNT, (int)processMap.get("widget_count")); - writer.attr(ATTR_CELL_COUNT, (int)processMap.get("cell_count")); - writer.attr(ATTR_BLOCK_COUNT, (int)processMap.get("block_count")); - writer.attr(ATTR_REPORT_TYPE, (int)processMap.get("report_type")); + writer.attr(ATTR_PROCESS, (String)processMap.get(ATTR_PROCESS)); + writer.attr(ATTR_FLOAT_COUNT, (int)processMap.get(ATTR_FLOAT_COUNT)); + writer.attr(ATTR_WIDGET_COUNT, (int)processMap.get(ATTR_WIDGET_COUNT)); + writer.attr(ATTR_CELL_COUNT, (int)processMap.get(ATTR_CELL_COUNT)); + writer.attr(ATTR_BLOCK_COUNT, (int)processMap.get(ATTR_BLOCK_COUNT)); + writer.attr(ATTR_REPORT_TYPE, (int)processMap.get(ATTR_REPORT_TYPE)); writer.end(); } private void writeConsumingMap(XMLPrintWriter writer) { writer.startTAG(XML_CONSUMING_MAP); - writer.attr(ATTR_ACTIVITYKEY, (String)consumingMap.get("activitykey")); - writer.attr(ATTR_JAR_TIME, (String)consumingMap.get("jar_time")); - writer.attr(ATTR_CREATE_TIME, (String)consumingMap.get("create_time")); - writer.attr(ATTR_UUID, (String)consumingMap.get("uuid")); - writer.attr(ATTR_TIME_CONSUME, (long)consumingMap.get("time_consume")); - writer.attr(ATTR_VERSION, (String)consumingMap.get("version")); - writer.attr(ATTR_USERNAME, (String)consumingMap.get("username")); + writer.attr(ATTR_ACTIVITYKEY, (String)consumingMap.get(ATTR_ACTIVITYKEY)); + writer.attr(ATTR_JAR_TIME, (String)consumingMap.get(ATTR_JAR_TIME)); + writer.attr(ATTR_CREATE_TIME, (String)consumingMap.get(ATTR_CREATE_TIME)); + writer.attr(ATTR_UUID, (String)consumingMap.get(ATTR_UUID)); + writer.attr(ATTR_TIME_CONSUME, (long)consumingMap.get(ATTR_TIME_CONSUME)); + writer.attr(ATTR_VERSION, (String)consumingMap.get(ATTR_VERSION)); + writer.attr(ATTR_USERNAME, (String)consumingMap.get(ATTR_USERNAME)); writer.end(); } @@ -522,22 +524,22 @@ public class TemplateInfoCollector implements Serializable, XM try { String name = reader.getTagName(); if (XML_PROCESS_MAP.equals(name)) { - processMap.put("process", reader.getAttrAsString(ATTR_PROCESS, StringUtils.EMPTY)); - processMap.put("float_count", reader.getAttrAsInt(ATTR_FLOAT_COUNT, 0)); - processMap.put("widget_count", reader.getAttrAsInt(ATTR_WIDGET_COUNT, 0)); - processMap.put("cell_count", reader.getAttrAsInt(ATTR_CELL_COUNT, 0)); - processMap.put("block_count", reader.getAttrAsInt(ATTR_BLOCK_COUNT, 0)); - processMap.put("report_type", reader.getAttrAsInt(ATTR_REPORT_TYPE, 0)); - processMap.put("templateID", templateID); + processMap.put(ATTR_PROCESS, reader.getAttrAsString(ATTR_PROCESS, StringUtils.EMPTY)); + processMap.put(ATTR_FLOAT_COUNT, reader.getAttrAsInt(ATTR_FLOAT_COUNT, 0)); + processMap.put(ATTR_WIDGET_COUNT, reader.getAttrAsInt(ATTR_WIDGET_COUNT, 0)); + processMap.put(ATTR_CELL_COUNT, reader.getAttrAsInt(ATTR_CELL_COUNT, 0)); + processMap.put(ATTR_BLOCK_COUNT, reader.getAttrAsInt(ATTR_BLOCK_COUNT, 0)); + processMap.put(ATTR_REPORT_TYPE, reader.getAttrAsInt(ATTR_REPORT_TYPE, 0)); + processMap.put(ATTR_TEMPLATE_ID, templateID); } else if(XML_CONSUMING_MAP.equals(name)){ - consumingMap.put("activitykey", reader.getAttrAsString(ATTR_ACTIVITYKEY, StringUtils.EMPTY)); - consumingMap.put("jar_time", reader.getAttrAsString(ATTR_JAR_TIME, StringUtils.EMPTY)); - consumingMap.put("create_time", reader.getAttrAsString(ATTR_CREATE_TIME, StringUtils.EMPTY)); - consumingMap.put("templateID", templateID); - consumingMap.put("uuid", reader.getAttrAsString(ATTR_UUID, StringUtils.EMPTY)); - consumingMap.put("time_consume", reader.getAttrAsLong(ATTR_TIME_CONSUME, 0)); - consumingMap.put("version", reader.getAttrAsString(ATTR_VERSION, "8.0")); - consumingMap.put("username", reader.getAttrAsString(ATTR_USERNAME, StringUtils.EMPTY)); + consumingMap.put(ATTR_ACTIVITYKEY, reader.getAttrAsString(ATTR_ACTIVITYKEY, StringUtils.EMPTY)); + consumingMap.put(ATTR_JAR_TIME, reader.getAttrAsString(ATTR_JAR_TIME, StringUtils.EMPTY)); + consumingMap.put(ATTR_CREATE_TIME, reader.getAttrAsString(ATTR_CREATE_TIME, StringUtils.EMPTY)); + consumingMap.put(ATTR_TEMPLATE_ID, templateID); + consumingMap.put(ATTR_UUID, reader.getAttrAsString(ATTR_UUID, StringUtils.EMPTY)); + consumingMap.put(ATTR_TIME_CONSUME, reader.getAttrAsLong(ATTR_TIME_CONSUME, 0)); + consumingMap.put(ATTR_VERSION, reader.getAttrAsString(ATTR_VERSION, "8.0")); + consumingMap.put(ATTR_USERNAME, reader.getAttrAsString(ATTR_USERNAME, StringUtils.EMPTY)); } } catch (Exception ex) { // 什么也不做,使用默认值 From a574cb0b6de6a0c358581086c4e659707f2f8182 Mon Sep 17 00:00:00 2001 From: plough Date: Fri, 28 Apr 2017 10:10:50 +0800 Subject: [PATCH 65/76] =?UTF-8?q?REPORT-2343=20[=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E8=B4=A8=E9=87=8F]=3D>=E5=8E=BB=E6=8E=89=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templateinfo/TemplateInfoCollector.java | 33 +------------------ 1 file changed, 1 insertion(+), 32 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index 1a06d82c35..17d785a439 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -8,8 +8,6 @@ import com.fr.design.mainframe.JTemplate; import com.fr.env.RemoteEnv; import com.fr.general.*; import com.fr.general.http.HttpClient; -import com.fr.json.JSONArray; -import com.fr.json.JSONException; import com.fr.stable.*; import com.fr.stable.xml.*; import com.fr.third.javax.xml.stream.XMLStreamException; @@ -19,7 +17,6 @@ import java.io.*; import java.text.SimpleDateFormat; import java.util.*; import java.util.HashMap; -import java.util.Iterator; /** * 做模板的过程和耗时收集,辅助类 @@ -177,40 +174,13 @@ public class TemplateInfoCollector implements Serializable, XM */ private void saveInfo() { try { - ByteArrayOutputStream out = new ByteArrayOutputStream(); + FileOutputStream out = new FileOutputStream(getInfoFile()); XMLTools.writeOutputStreamXML(this, out); - out.flush(); - out.close(); - String fileContent = new String(out.toByteArray(), EncodeConstants.ENCODING_UTF_8); - writeContentToFile(fileContent, getInfoFile()); } catch (Exception ex) { FRLogger.getLogger().error(ex.getMessage()); } } - /** - * 将文件内容写到输出流中 - */ - private static void writeContentToFile(String fileContent, File file){ - BufferedWriter bw = null; - try { - FileOutputStream fos = new FileOutputStream(file); - OutputStreamWriter osw = new OutputStreamWriter(fos, EncodeConstants.ENCODING_UTF_8); - bw = new BufferedWriter(osw); - bw.write(fileContent); - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage()); - } finally { - if(bw != null){ - try { - bw.close(); - } catch (IOException e) { - } - } - } - - } - /** * 更新 day_count:打开设计器却未编辑模板的连续日子 */ @@ -258,7 +228,6 @@ public class TemplateInfoCollector implements Serializable, XM // 保存模板时,让 day_count 归零 templateInfo.put(ATTR_DAY_COUNT, 0); - templateInfoList.put(templateID, templateInfo); saveInfo(); // 每次更新之后,都同步到暂存文件中 From 589725a8dd2b624c33cd78fa0fe93c65aab3ede5 Mon Sep 17 00:00:00 2001 From: zhouping Date: Fri, 28 Apr 2017 11:39:11 +0800 Subject: [PATCH 66/76] =?UTF-8?q?REPORT-2526=20tab=E4=BA=A4=E4=BA=92?= =?UTF-8?q?=E6=94=B9=E8=89=AF=E5=90=8E=E7=BB=AD--tab=E9=A1=B5=E7=AD=BE?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=9A=84=E8=A7=86=E8=A7=89=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/images/control/tab/end.png | Bin 0 -> 248 bytes .../com/fr/design/images/control/tab/end_not.png | Bin 0 -> 250 bytes .../com/fr/design/images/control/tab/first.png | Bin 0 -> 264 bytes .../fr/design/images/control/tab/first_not.png | Bin 0 -> 264 bytes .../src/com/fr/design/images/control/tab/next.png | Bin 0 -> 265 bytes .../com/fr/design/images/control/tab/next_not.png | Bin 0 -> 257 bytes .../src/com/fr/design/images/control/tab/prev.png | Bin 0 -> 272 bytes .../com/fr/design/images/control/tab/prev_not.png | Bin 0 -> 273 bytes .../creator/cardlayout/TabMoveEndAction.java | 2 +- .../creator/cardlayout/TabMoveFirstAction.java | 2 +- .../creator/cardlayout/TabMoveNextAction.java | 2 +- .../creator/cardlayout/TabMovePrevAction.java | 2 +- 12 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 designer_base/src/com/fr/design/images/control/tab/end.png create mode 100644 designer_base/src/com/fr/design/images/control/tab/end_not.png create mode 100644 designer_base/src/com/fr/design/images/control/tab/first.png create mode 100644 designer_base/src/com/fr/design/images/control/tab/first_not.png create mode 100644 designer_base/src/com/fr/design/images/control/tab/next.png create mode 100644 designer_base/src/com/fr/design/images/control/tab/next_not.png create mode 100644 designer_base/src/com/fr/design/images/control/tab/prev.png create mode 100644 designer_base/src/com/fr/design/images/control/tab/prev_not.png diff --git a/designer_base/src/com/fr/design/images/control/tab/end.png b/designer_base/src/com/fr/design/images/control/tab/end.png new file mode 100644 index 0000000000000000000000000000000000000000..da848239fb915844ab692e00126c47b426ae3222 GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa#^NA%Cx&(BWL^R}n><|{Lo`H_ z6BdYwg;Nh8iy_jbVPyaU?_{`%x#&GH5{5YdIdiTD?b9?fr3r8w5U$9wQ|6jsS zJooSXhG6y(CRgQ<9`1|-HBNrVmkFjx#w~w*x#Rjv9fQaG_x>;?FS^jv)1&aOUco`| zc(!uDQ&Taqu*;iWZMXwV7%eSKnR25}oH(3ZWz_#yYL}XT{JW4DDglSh6|A{u>l&CU uNX06j$XvK1$MG6Rxt8K`#q32LybQm#JM&yh_nr%MJ%gvKpUXO@geCw>-B~~Y literal 0 HcmV?d00001 diff --git a/designer_base/src/com/fr/design/images/control/tab/end_not.png b/designer_base/src/com/fr/design/images/control/tab/end_not.png new file mode 100644 index 0000000000000000000000000000000000000000..1f08bdf35a524a08badaa957e60cca45f00c1eab GIT binary patch literal 250 zcmVPx#v`IukR45gtkTD9wAQXnRI0d{&X1fX=qH{avQfbbUJ(~s>j}RxdTA~D_5n4ff z`oHh}KLYUY5<d9a=|lu@qju;pLv|e4!Dcw|6c#~rRw3#1+ywg-_!){UZze z8CSbac(nOt&;5pN>I|mMAIwXb3$j`?k321Dl5%7dcw92Wl_is5-)85{y$mjAfWBey MboFyt=akR{0RC%dP5=M^ literal 0 HcmV?d00001 diff --git a/designer_base/src/com/fr/design/images/control/tab/first_not.png b/designer_base/src/com/fr/design/images/control/tab/first_not.png new file mode 100644 index 0000000000000000000000000000000000000000..50d048a19d3ac8d8058ea133b5d4bc61f37dcb8b GIT binary patch literal 264 zcmV+j0r&oiP)Px#!bwCyR45gtkg*NJAP_}OM3usWxW+9KlZ2^K$8|<=?+%a~k6>tQa%TlZWC)Rh zgzn(}IX7ec$)!lFqZ>JK7V3A1*0)idu@6LfA(~a5-j#5cq@Q=SKeID1;a&r9CL7sLC`a z5H+0hscqXH+=mQvTxCI=FveDJmjFvRu6UQOA{a!a=v5FO_$7KUs@4~cu1U}+2aLu5 O0000Px#!%0LzR45f=V4x-_-12`x!{!hTB8K*|5VlJQo^RYRd5u^Yp@gJM1$YP9)4A+1-wAYLA8c3Xwjc~o_PG|m#YjX;tFGmUybqxczU(?SMr?yR%v zjNf2t@!AN~08*HBwuomTOaqL@rxC?zFbyyoYp8;p#>m5C3iA(4F;!>)C^J2@0$neI P00000NkvXXu0mjf`8#cI literal 0 HcmV?d00001 diff --git a/designer_base/src/com/fr/design/images/control/tab/next_not.png b/designer_base/src/com/fr/design/images/control/tab/next_not.png new file mode 100644 index 0000000000000000000000000000000000000000..f002a0b9ee64e093045296811dcc45efe22c80d3 GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa#^NA%Cx&(BWL^R}yFFbTLo`I! zPT0tMSV6$m*Cn-6@vc zG4>qpZVjq>K1cuLx;&eY3Rb>pe_DdimwIxXd}&m1mu-&B*7v_Px#%1J~)R45f=V4wwPIP;&YaLfM%*vw|aCI}KM-u7SX(@TcaKxRBPHCQzkZT+9{ z?;peI|Nj}ZuxSE`u^>x;oc8er!!)1qN&beY< z6m=lADA92?o$(vc_5?;oMiBl6Qh*DfXoM*u#_3o!f($sB$9|2GhsP9X^Fo+`RG|S} W)<$1S+_;JW0000TW{_F literal 0 HcmV?d00001 diff --git a/designer_base/src/com/fr/design/images/control/tab/prev_not.png b/designer_base/src/com/fr/design/images/control/tab/prev_not.png new file mode 100644 index 0000000000000000000000000000000000000000..2530395fd12212d71f33bf72a2a15d8ac0c846d7 GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa#^NA%Cx&(BWL^R}r#)R9Lo`IU zPBi3eHsEpfoZ8vwy}|Hs7mK*&@}#z%?uy3A4XxY?jLeE#C&oCYF5$@)(>_=K&%X2d z-{juMFS6Ha=Y4C=PRf^P%ZQwIEb8|Y6P+8Sv57sI3>_96)t_n_E?z6u{a%|MdoIdR zx@TMNZSHT|^_K7+4v-0qT_ou8wd2-z+dYj-=LOr!Y}Q%5bPA`yT4B~j=Vb*0ynbFb znR-8d!tmbO%@8im(4huSngy?{h0iVZTeZS V2G{Tfdx73!@O1TaS?83{1OOMXY<~a% literal 0 HcmV?d00001 diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveEndAction.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveEndAction.java index 5da5dd1c73..e8c7c04b02 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveEndAction.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveEndAction.java @@ -14,7 +14,7 @@ public class TabMoveEndAction extends TabMoveAction { public TabMoveEndAction(FormDesigner t, XCardSwitchButton xCardSwitchButton) { super(t, xCardSwitchButton); this.setName(Inter.getLocText("FR-Designer-Move_Tab_End")); - this.setSmallIcon(IOUtils.readIcon("com/fr/design/images/control/rightright.png")); + this.setSmallIcon(IOUtils.readIcon("com/fr/design/images/control/tab/end.png")); } //改变Tab的索引号 diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveFirstAction.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveFirstAction.java index 26195b9462..a2483c01e9 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveFirstAction.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveFirstAction.java @@ -14,7 +14,7 @@ public class TabMoveFirstAction extends TabMoveAction { public TabMoveFirstAction(FormDesigner t, XCardSwitchButton xCardSwitchButton) { super(t, xCardSwitchButton); this.setName(Inter.getLocText("FR-Designer-Move_Tab_First")); - this.setSmallIcon(IOUtils.readIcon("com/fr/design/images/control/leftleft.png")); + this.setSmallIcon(IOUtils.readIcon("com/fr/design/images/control/tab/first.png")); } @Override diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveNextAction.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveNextAction.java index 10e796abc9..f3e34208ca 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveNextAction.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveNextAction.java @@ -14,7 +14,7 @@ public class TabMoveNextAction extends TabMoveAction { public TabMoveNextAction(FormDesigner t, XCardSwitchButton xCardSwitchButton) { super(t, xCardSwitchButton); this.setName(Inter.getLocText("FR-Designer-Move_Tab_Next")); - this.setSmallIcon(IOUtils.readIcon("com/fr/design/images/control/right.png")); + this.setSmallIcon(IOUtils.readIcon("com/fr/design/images/control/tab/next.png")); } @Override diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMovePrevAction.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMovePrevAction.java index 859a27eea2..94f501c57e 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMovePrevAction.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMovePrevAction.java @@ -14,7 +14,7 @@ public class TabMovePrevAction extends TabMoveAction { public TabMovePrevAction(FormDesigner t, XCardSwitchButton xCardSwitchButton) { super(t, xCardSwitchButton); this.setName(Inter.getLocText("FR-Designer-Move_Tab_Prev")); - this.setSmallIcon(IOUtils.readIcon("com/fr/design/images/control/left.png")); + this.setSmallIcon(IOUtils.readIcon("com/fr/design/images/control/tab/prev.png")); } @Override From a4788f9f94b45e179af0f7bcce7f2039471c4372 Mon Sep 17 00:00:00 2001 From: neil Date: Tue, 2 May 2017 10:28:45 +0800 Subject: [PATCH 67/76] ct --- .../mainframe/templateinfo/TemplateInfoCollector.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index f8e985f667..e5c6688ec9 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -67,8 +67,16 @@ public class TemplateInfoCollector implements Serializable { try{ ObjectInputStream is = new ObjectInputStream(new FileInputStream(getInfoFile())); instance = (TemplateInfoCollector) is.readObject(); - } catch (Exception ex) { + } catch (FileNotFoundException ex) { + // 如果之前没有存储过,则创建新对象 instance = new TemplateInfoCollector(); + } catch (InvalidClassException ex) { + // 如果 TemplateInfoCollecor 类结构有改动,则放弃之前收集的数据(下次保存时覆盖) + // 这种情况主要在开发、测试过程中遇到,正式上线后不应该出现 + instance = new TemplateInfoCollector(); + } + catch (Exception ex) { + FRLogger.getLogger().error(ex.getMessage(), ex); } } return instance; From 22aa93fff25b1462f2ca5c84ef83f43c02f78d4f Mon Sep 17 00:00:00 2001 From: neil Date: Tue, 2 May 2017 10:34:53 +0800 Subject: [PATCH 68/76] 1 --- .../com/fr/design/mainframe/ConnectorHelper.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/ConnectorHelper.java b/designer_form/src/com/fr/design/mainframe/ConnectorHelper.java index 93add36341..215ff8036d 100644 --- a/designer_form/src/com/fr/design/mainframe/ConnectorHelper.java +++ b/designer_form/src/com/fr/design/mainframe/ConnectorHelper.java @@ -1,15 +1,18 @@ package com.fr.design.mainframe; +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.event.MouseEvent; +import java.util.ArrayList; + +import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; +import com.fr.stable.Constants; import com.fr.base.GraphHelper; import com.fr.design.designer.beans.ConnectorCreator; import com.fr.design.designer.creator.XWAbsoluteLayout; import com.fr.form.ui.Connector; -import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; -import com.fr.stable.Constants; - -import java.awt.*; -import java.awt.event.MouseEvent; -import java.util.ArrayList; public class ConnectorHelper { //这个类是用来画连接线的,暂时用不到 From 89240801d5b1d94e66d95824c6d4499c8143e8fe Mon Sep 17 00:00:00 2001 From: neil Date: Tue, 2 May 2017 10:52:50 +0800 Subject: [PATCH 69/76] ct --- .../src/com/fr/design/mainframe/FormSelectionUtils.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java index b288ec2029..7a03782c25 100644 --- a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java +++ b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java @@ -25,7 +25,6 @@ public class FormSelectionUtils { //组件重命名后缀 private static final String POSTFIX = "_c"; - private FormSelectionUtils() { } @@ -134,8 +133,10 @@ public class FormSelectionUtils { boolean xOut = x < 0 || x + copiedCreator.getWidth() / 2 + xoffset > container.getWidth(); boolean yOut = y < 0 || y + copiedCreator.getHeight() / 2 + yoffset > container.getHeight(); + boolean isEdge = (x - DELAY_X_Y == container.getWidth() - copiedCreator.getWidth() / 2 - xoffset) + && (y - DELAY_X_Y == container.getHeight() - copiedCreator.getHeight() / 2 - yoffset); + y = yOut ? container.getHeight() - copiedCreator.getHeight() / 2 - yoffset : y; - boolean isEdge = (x - DELAY_X_Y == container.getWidth() - copiedCreator.getWidth() / 2 - xoffset); if (xOut) { if (isEdge) { //向左偏移 From b828924647c4473a9c253c764c87700f2c664914 Mon Sep 17 00:00:00 2001 From: neil Date: Tue, 2 May 2017 10:53:07 +0800 Subject: [PATCH 70/76] ct --- .../designer/beans/ConnectorCreator.java | 9 +- .../adapters/layout/FRFitLayoutAdapter.java | 2306 +++++++++-------- .../design/designer/beans/location/Inner.java | 2 +- .../design/designer/creator/XElementCase.java | 10 +- .../designer/creator/XWAbsoluteLayout.java | 924 ++++--- .../design/designer/creator/XWFitLayout.java | 39 +- .../designer/creator/XWScaleLayout.java | 9 +- .../designer/creator/XWTitleLayout.java | 2 +- 8 files changed, 1647 insertions(+), 1654 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/beans/ConnectorCreator.java b/designer_form/src/com/fr/design/designer/beans/ConnectorCreator.java index ed83c12d67..ca9934416a 100644 --- a/designer_form/src/com/fr/design/designer/beans/ConnectorCreator.java +++ b/designer_form/src/com/fr/design/designer/beans/ConnectorCreator.java @@ -1,12 +1,13 @@ package com.fr.design.designer.beans; -import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; -import com.fr.form.ui.container.WLayout; - -import java.awt.*; +import java.awt.Point; +import java.awt.Rectangle; import java.util.ArrayList; import java.util.PriorityQueue; +import com.fr.form.ui.container.WLayout; +import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; + public class ConnectorCreator { public static final int UNIT = 10; diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java index 74a69e525c..03962df487 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java @@ -1,1183 +1,1185 @@ -/** - * - */ -package com.fr.design.designer.beans.adapters.layout; - -import com.fr.design.beans.GroupModel; -import com.fr.design.designer.beans.ConstraintsGroupModel; -import com.fr.design.designer.beans.HoverPainter; -import com.fr.design.designer.beans.painters.FRFitLayoutPainter; -import com.fr.design.designer.creator.XCreator; -import com.fr.design.designer.creator.XCreatorUtils; -import com.fr.design.designer.creator.XLayoutContainer; -import com.fr.design.designer.creator.XWFitLayout; -import com.fr.design.designer.creator.cardlayout.XWCardLayout; -import com.fr.design.designer.creator.cardlayout.XWCardMainBorderLayout; -import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; -import com.fr.design.designer.properties.FRFitLayoutConstraints; -import com.fr.design.designer.properties.FRFitLayoutPropertiesGroupModel; -import com.fr.design.utils.ComponentUtils; -import com.fr.form.ui.LayoutBorderStyle; -import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; -import com.fr.form.ui.container.WLayout; -import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; -import com.fr.general.ComparatorUtils; - +/** + * + */ +package com.fr.design.designer.beans.adapters.layout; + +import com.fr.design.beans.GroupModel; +import com.fr.design.designer.beans.ConstraintsGroupModel; +import com.fr.design.designer.beans.HoverPainter; +import com.fr.design.designer.beans.painters.FRFitLayoutPainter; +import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XCreatorUtils; +import com.fr.design.designer.creator.XLayoutContainer; +import com.fr.design.designer.creator.XWFitLayout; +import com.fr.design.designer.creator.cardlayout.XWCardLayout; +import com.fr.design.designer.creator.cardlayout.XWCardMainBorderLayout; +import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; +import com.fr.design.designer.properties.FRFitLayoutConstraints; +import com.fr.design.designer.properties.FRFitLayoutPropertiesGroupModel; +import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.mainframe.JForm; +import com.fr.design.utils.ComponentUtils; +import com.fr.form.ui.LayoutBorderStyle; +import com.fr.form.ui.container.WLayout; +import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; +import com.fr.general.ComparatorUtils; +import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; + import java.awt.*; import java.util.ArrayList; import java.util.List; -/** - * 自适应布局的容器适配器 - * - * @author jim - * @date 2014-6-24 - */ -public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { - - public static final String WIDGETPANEICONPATH = "/com/fr/web/images/form/resources/layout_absolute.png"; - private static final int DEPENDING_SCOPE = 3; - private HoverPainter painter; - //区分拖拽和编辑宽高 - private boolean isEdit; - - public boolean isEdit() { - return isEdit; - } - - public void setEdit(boolean edit) { - isEdit = edit; - } - - /** - * 构造函数 - * - * @param container XWFitLayout容器 - */ - public FRFitLayoutAdapter(XLayoutContainer container) { - super(container); - painter = new FRFitLayoutPainter(container); - initMinSize(); - } - - private void initMinSize() { - XWFitLayout layout = (XWFitLayout) container; - minWidth = layout.getActualMinWidth(); - minHeight = layout.getActualMinHeight(); - actualVal = layout.getAcualInterval(); - margin = layout.toData().getMargin(); - } - - @Override - public HoverPainter getPainter() { - return painter; - } - - /** - * 返回布局自身属性,方便一些特有设置在layout刷新时处理 - */ - @Override - public GroupModel getLayoutProperties() { - XWFitLayout xfl = (XWFitLayout) container; - return new FRFitLayoutPropertiesGroupModel(xfl); - } - - /** - * 添加组件 - * - * @param child 待添加的组件 - * @param x 坐标x - * @param y 坐标y - */ - @Override - public void addComp(XCreator child, int x, int y) { - fix(child, x, y); - if (child.shouldScaleCreator() || child.hasTitleStyle()) { - addParentCreator(child); - } else { - container.add(child, child.toData().getWidgetName()); - } - XWFitLayout layout = (XWFitLayout) container; - // 更新对应的BoundsWidget - layout.updateBoundsWidget(); - updateCreatorBackBound(); - } - - public void updateCreatorBackBound() { - for (int i = 0, size = container.getComponentCount(); i < size; i++) { - XCreator creator = (XCreator) container.getComponent(i); - creator.updateChildBound(minHeight); - creator.setBackupBound(creator.getBounds()); - } - } - - - private void addParentCreator(XCreator child) { - XLayoutContainer parentPanel = child.initCreatorWrapper(minHeight); - container.add(parentPanel, child.toData().getWidgetName()); - } - - /** - * 能否对应位置放置当前组件 - * - * @param creator 组件 - * @param x 添加的位置x,该位置是相对于container的 - * @param y 添加的位置y,该位置是相对于container的 - * @return 是否可以放置 - */ - @Override - public boolean accept(XCreator creator, int x, int y) { - // 计算是否能拖入鼠标区域时,会用到fix 的方法 - isFindRelatedComps = false; - //拖入组件判断时,先判断是否为交叉点区域,其次三等分区域,再次平分区域 - Component comp = container.getComponentAt(x, y); +/** + * 自适应布局的容器适配器 + * + * @author jim + * @date 2014-6-24 + */ +public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { + + public static final String WIDGETPANEICONPATH = "/com/fr/web/images/form/resources/layout_absolute.png"; + private static final int DEPENDING_SCOPE = 3; + private HoverPainter painter; + //区分拖拽和编辑宽高 + private boolean isEdit; + + public boolean isEdit() { + return isEdit; + } + + public void setEdit(boolean edit) { + isEdit = edit; + } + + /** + * 构造函数 + * + * @param container XWFitLayout容器 + */ + public FRFitLayoutAdapter(XLayoutContainer container) { + super(container); + painter = new FRFitLayoutPainter(container); + initMinSize(); + } + + private void initMinSize() { + XWFitLayout layout = (XWFitLayout) container; + minWidth = layout.getActualMinWidth(); + minHeight = layout.getActualMinHeight(); + actualVal = layout.getAcualInterval(); + margin = layout.toData().getMargin(); + } + + @Override + public HoverPainter getPainter() { + return painter; + } + + /** + * 返回布局自身属性,方便一些特有设置在layout刷新时处理 + */ + @Override + public GroupModel getLayoutProperties() { + XWFitLayout xfl = (XWFitLayout) container; + return new FRFitLayoutPropertiesGroupModel(xfl); + } + + /** + * 添加组件 + * + * @param child 待添加的组件 + * @param x 坐标x + * @param y 坐标y + */ + @Override + public void addComp(XCreator child, int x, int y) { + fix(child, x, y); + if (child.shouldScaleCreator() || child.hasTitleStyle()) { + addParentCreator(child); + } else { + container.add(child, child.toData().getWidgetName()); + } + XWFitLayout layout = (XWFitLayout) container; + // 更新对应的BoundsWidget + layout.updateBoundsWidget(); + updateCreatorBackBound(); + } + + public void updateCreatorBackBound() { + for (int i = 0, size = container.getComponentCount(); i < size; i++) { + XCreator creator = (XCreator) container.getComponent(i); + creator.updateChildBound(minHeight); + creator.setBackupBound(creator.getBounds()); + } + } + + + private void addParentCreator(XCreator child) { + XLayoutContainer parentPanel = child.initCreatorWrapper(minHeight); + container.add(parentPanel, child.toData().getWidgetName()); + } + + /** + * 能否对应位置放置当前组件 + * + * @param creator 组件 + * @param x 添加的位置x,该位置是相对于container的 + * @param y 添加的位置y,该位置是相对于container的 + * @return 是否可以放置 + */ + @Override + public boolean accept(XCreator creator, int x, int y) { + // 计算是否能拖入鼠标区域时,会用到fix 的方法 + isFindRelatedComps = false; + //拖入组件判断时,先判断是否为交叉点区域,其次三等分区域,再次平分区域 + Component comp = container.getComponentAt(x, y); if (comp == null || checkInterval(comp)) { - return false; - } - //如果当前处于边缘地带, 那么就把他贴到父容器上 - boolean isMatchEdge = matchEdge(x, y); - - int componentHeight = comp.getHeight(); - int componentWidth = comp.getWidth(); - //上半部分高度 - int upHeight = (int) (componentHeight * TOP_HALF) + comp.getY(); - //下半部分高度 - int downHeight = (int) (componentHeight * BOTTOM_HALF) + comp.getY(); - - //布局控件要先判断是不是可编辑 - XLayoutContainer topLayout = XCreatorUtils.getHotspotContainer((XCreator) comp).getTopLayout(); - if (topLayout != null && !isMatchEdge && !topLayout.isEditable()) { - return false; - } - - if (isCrossPointArea(comp, x, y)) { - return canAcceptWhileCrossPoint(comp, x, y); - } - - if (isTrisectionArea(comp, x, y)) { - return canAcceptWhileTrisection(comp, x, y); - } - - boolean horizonValid = componentWidth >= minWidth * 2 + actualVal; - boolean verticalValid = componentHeight >= minHeight * 2 + actualVal; - return y > upHeight && y < downHeight ? horizonValid : verticalValid; - } - - // 间隔区域 - private boolean checkInterval(Component comp) { - return container.getComponentCount() > 0 && comp == container; - } - - /** - * 是否在组件边缘 - * - * @param x 横坐标 - * @param y 纵坐标 - * @return 是否在组件边缘 - */ - public boolean matchEdge(int x, int y) { - if (intersectsEdge(x, y, container)) { - //寻找最近的fit, 在边缘地段添加的控件, 将其送给该fit - XLayoutContainer parent = container.findNearestFit(); - container = parent != null ? parent : container; - return true; - } - return false; - } - - /** - * 是否在组件边缘 - * - * @param x 横坐标 - * @param y 纵坐标 - * @param container 参照组件 - * @return 是否在组件边缘 - */ - //是否包含于边缘地段, 按顺序上, 下, 左, 右检测 - public boolean intersectsEdge(int x, int y, XLayoutContainer container) { - int containerX = container.getX(); - int containerY = container.getY(); - int containerWidth = container.getWidth(); - int containerHeight = container.getHeight(); - - // 当前坐标点 - Rectangle currentXY = new Rectangle(x, y, 1, 1); - // 上边缘 - Rectangle upEdge = new Rectangle(containerX, containerY, containerWidth, BORDER_PROPORTION); - if (upEdge.intersects(currentXY)) { - return true; - } - - int bottomY = containerY + containerHeight - BORDER_PROPORTION; - // 下边缘 - Rectangle bottomEdge = new Rectangle(containerX, bottomY, containerWidth, BORDER_PROPORTION); - if (bottomEdge.intersects(currentXY)) { - return true; - } - - //左右边缘的高度 -10*2 是为了不和上下边缘重合 - int verticalHeight = containerHeight - BORDER_PROPORTION * 2; - int leftY = containerY + BORDER_PROPORTION; - // 左边缘 - Rectangle leftEdge = new Rectangle(containerX, leftY, BORDER_PROPORTION, verticalHeight); - if (leftEdge.intersects(currentXY)) { - return true; - } - - int rightY = containerY + BORDER_PROPORTION; - int rightX = containerX + containerWidth - BORDER_PROPORTION; - // 右边缘 - Rectangle rightEdge = new Rectangle(rightX, rightY, BORDER_PROPORTION, verticalHeight); - return rightEdge.intersects(currentXY); - } - - /** - * 交叉点区域时,能否对应位置放入组件 - */ - protected boolean canAcceptWhileCrossPoint(Component comp, int x, int y) { - return super.canAcceptWhileCrossPoint(comp, x, y); - } - - protected boolean canAcceptWhileTrisection(Component comp, int x, int y) { - return super.canAcceptWhileTrisection(comp, x, y); - } - - /** - * 判断是否鼠标在组件的三等分区域,如果组件在布局管理器中间,上下左右都可能会三等分 - * - * @param parentComp 鼠标所在区域的组件 - * @param x 坐标x - * @param y 坐标y - * @return 是则返回true - */ - public boolean isTrisectionArea(Component parentComp, int x, int y) { - return super.isTrisectionArea(parentComp, x, y); - } - - /** - * 是否为组件交叉点区域 或者是相邻三组建中间点 - * - * @param currentComp 当前组件 - * @param x 坐标x - * @param y 坐标y - * @return 是则返回true - */ - public boolean isCrossPointArea(Component currentComp, int x, int y) { - return super.isCrossPointArea(currentComp, x, y); - } - - + return false; + } + //如果当前处于边缘地带, 那么就把他贴到父容器上 + boolean isMatchEdge = matchEdge(x, y); + + int componentHeight = comp.getHeight(); + int componentWidth = comp.getWidth(); + //上半部分高度 + int upHeight = (int) (componentHeight * TOP_HALF) + comp.getY(); + //下半部分高度 + int downHeight = (int) (componentHeight * BOTTOM_HALF) + comp.getY(); + + //布局控件要先判断是不是可编辑 + XLayoutContainer topLayout = XCreatorUtils.getHotspotContainer((XCreator) comp).getTopLayout(); + if (topLayout != null && !isMatchEdge && !topLayout.isEditable()) { + return false; + } + + if (isCrossPointArea(comp, x, y)) { + return canAcceptWhileCrossPoint(comp, x, y); + } + + if (isTrisectionArea(comp, x, y)) { + return canAcceptWhileTrisection(comp, x, y); + } + + boolean horizonValid = componentWidth >= minWidth * 2 + actualVal; + boolean verticalValid = componentHeight >= minHeight * 2 + actualVal; + return y > upHeight && y < downHeight ? horizonValid : verticalValid; + } + + // 间隔区域 + private boolean checkInterval(Component comp) { + return container.getComponentCount() > 0 && comp == container; + } + + /** + * 是否在组件边缘 + * + * @param x 横坐标 + * @param y 纵坐标 + * @return 是否在组件边缘 + */ + public boolean matchEdge(int x, int y) { + if (intersectsEdge(x, y, container)) { + //寻找最近的fit, 在边缘地段添加的控件, 将其送给该fit + XLayoutContainer parent = container.findNearestFit(); + container = parent != null ? parent : container; + return true; + } + return false; + } + + /** + * 是否在组件边缘 + * + * @param x 横坐标 + * @param y 纵坐标 + * @param container 参照组件 + * @return 是否在组件边缘 + */ + //是否包含于边缘地段, 按顺序上, 下, 左, 右检测 + public boolean intersectsEdge(int x, int y, XLayoutContainer container) { + int containerX = container.getX(); + int containerY = container.getY(); + int containerWidth = container.getWidth(); + int containerHeight = container.getHeight(); + + // 当前坐标点 + Rectangle currentXY = new Rectangle(x, y, 1, 1); + // 上边缘 + Rectangle upEdge = new Rectangle(containerX, containerY, containerWidth, BORDER_PROPORTION); + if (upEdge.intersects(currentXY)) { + return true; + } + + int bottomY = containerY + containerHeight - BORDER_PROPORTION; + // 下边缘 + Rectangle bottomEdge = new Rectangle(containerX, bottomY, containerWidth, BORDER_PROPORTION); + if (bottomEdge.intersects(currentXY)) { + return true; + } + + //左右边缘的高度 -10*2 是为了不和上下边缘重合 + int verticalHeight = containerHeight - BORDER_PROPORTION * 2; + int leftY = containerY + BORDER_PROPORTION; + // 左边缘 + Rectangle leftEdge = new Rectangle(containerX, leftY, BORDER_PROPORTION, verticalHeight); + if (leftEdge.intersects(currentXY)) { + return true; + } + + int rightY = containerY + BORDER_PROPORTION; + int rightX = containerX + containerWidth - BORDER_PROPORTION; + // 右边缘 + Rectangle rightEdge = new Rectangle(rightX, rightY, BORDER_PROPORTION, verticalHeight); + return rightEdge.intersects(currentXY); + } + + /** + * 交叉点区域时,能否对应位置放入组件 + */ + protected boolean canAcceptWhileCrossPoint(Component comp, int x, int y) { + return super.canAcceptWhileCrossPoint(comp, x, y); + } + + protected boolean canAcceptWhileTrisection(Component comp, int x, int y) { + return super.canAcceptWhileTrisection(comp, x, y); + } + + /** + * 判断是否鼠标在组件的三等分区域,如果组件在布局管理器中间,上下左右都可能会三等分 + * + * @param parentComp 鼠标所在区域的组件 + * @param x 坐标x + * @param y 坐标y + * @return 是则返回true + */ + public boolean isTrisectionArea(Component parentComp, int x, int y) { + return super.isTrisectionArea(parentComp, x, y); + } + + /** + * 是否为组件交叉点区域 或者是相邻三组建中间点 + * + * @param currentComp 当前组件 + * @param x 坐标x + * @param y 坐标y + * @return 是则返回true + */ + public boolean isCrossPointArea(Component currentComp, int x, int y) { + return super.isCrossPointArea(currentComp, x, y); + } + + protected Rectangle getLayoutBound(XWCardMainBorderLayout mainLayout) { - return mainLayout.getBounds(); - } - - private Rectangle adjustBackupBound(Rectangle backupBound, XWCardMainBorderLayout mainLayout) { + return mainLayout.getBounds(); + } + + private Rectangle adjustBackupBound(Rectangle backupBound, XWCardMainBorderLayout mainLayout) { // zhouping: REPORT-2334 表单tab布局中图表放大缩小会明显 // 这边不需要单独处理参数面板高度了,下面的方法中获取的是XWCardMainBorderLayout相对坐标 - Rectangle rec = getLayoutBound(mainLayout); - // XWTabLayout里面的横纵坐标收到外层XWCardMainBorderLayout的横纵坐标影响 - // 减掉之后可以按照它原来的逻辑执行 - backupBound.x -= rec.x; - backupBound.y -= rec.y; - XWCardLayout cardLayout = mainLayout.getCardPart(); - LayoutBorderStyle style = cardLayout.toData().getBorderStyle(); - // 当tab布局为标题样式时,才需要处理标题栏高度产生的影响 - if (ComparatorUtils.equals(style.getType(), LayoutBorderStyle.TITLE)) { - backupBound.y -= WCardMainBorderLayout.TAB_HEIGHT; - } - return backupBound; - } - - /** - * 拖拽控件边框后,根据控件的大小尺寸,进行相关组件的调整 - * - * @param creator 组件 - */ - @Override - public void fix(XCreator creator) { - //拖拽组件原大小、位置 - Rectangle backupBound = creator.getBackupBound(); - backupBound.x -= container.getX(); - backupBound.y -= container.getY(); - //当前拖拽组件的位置 - int x = creator.getX(); - int y = creator.getY(); - - // 获取容器所有内部组件横坐标 - int[] posXs = container.getHors(); - // 获取容器所有内部组件纵坐标 - int[] posYs = container.getVeris(); - - XLayoutContainer outerLayout = container.getOuterLayout(); - if (!ComparatorUtils.equals(outerLayout, container.getBackupParent())) { - XWCardMainBorderLayout mainLayout = (XWCardMainBorderLayout) outerLayout; - backupBound = adjustBackupBound(backupBound, mainLayout); - } - - //拖拽组件拖拽以后的大小 - int w = creator.getWidth(); - int h = creator.getHeight(); - initCompsList(); - creator.setBounds(backupBound); - int difference = 0; - if (x != backupBound.x) { - dealLeft(backupBound, x, posXs, difference, creator); - } else if (w != backupBound.width) { - dealRight(backupBound, x, w, posXs, difference, creator); - } else if (y != backupBound.y) { - dealTop(backupBound, y, posYs, difference, creator); - } else if (h != backupBound.height) { - dealButtom(backupBound, y, h, posYs, difference, creator); - } - clearCompsList(); - XWFitLayout layout = (XWFitLayout) container; - layout.updateBoundsWidget(); // 更新对应的BoundsWidget - updateCreatorBackBound(); - } - - /** - * 拖拽控件边框后,根据控件的大小尺寸,进行相关组件的调整 - * - * @param backupBound 边界备份 + Rectangle rec = getLayoutBound(mainLayout); + // XWTabLayout里面的横纵坐标收到外层XWCardMainBorderLayout的横纵坐标影响 + // 减掉之后可以按照它原来的逻辑执行 + backupBound.x -= rec.x; + backupBound.y -= rec.y; + XWCardLayout cardLayout = mainLayout.getCardPart(); + LayoutBorderStyle style = cardLayout.toData().getBorderStyle(); + // 当tab布局为标题样式时,才需要处理标题栏高度产生的影响 + if (ComparatorUtils.equals(style.getType(), LayoutBorderStyle.TITLE)) { + backupBound.y -= WCardMainBorderLayout.TAB_HEIGHT; + } + return backupBound; + } + + /** + * 拖拽控件边框后,根据控件的大小尺寸,进行相关组件的调整 + * + * @param creator 组件 + */ + @Override + public void fix(XCreator creator) { + //拖拽组件原大小、位置 + Rectangle backupBound = creator.getBackupBound(); + backupBound.x -= container.getX(); + backupBound.y -= container.getY(); + //当前拖拽组件的位置 + int x = creator.getX(); + int y = creator.getY(); + + // 获取容器所有内部组件横坐标 + int[] posXs = container.getHors(); + // 获取容器所有内部组件纵坐标 + int[] posYs = container.getVeris(); + + XLayoutContainer outerLayout = container.getOuterLayout(); + if (!ComparatorUtils.equals(outerLayout, container.getBackupParent())) { + XWCardMainBorderLayout mainLayout = (XWCardMainBorderLayout) outerLayout; + backupBound = adjustBackupBound(backupBound, mainLayout); + } + + //拖拽组件拖拽以后的大小 + int w = creator.getWidth(); + int h = creator.getHeight(); + initCompsList(); + creator.setBounds(backupBound); + int difference = 0; + if (x != backupBound.x) { + dealLeft(backupBound, x, posXs, difference, creator); + } else if (w != backupBound.width) { + dealRight(backupBound, x, w, posXs, difference, creator); + } else if (y != backupBound.y) { + dealTop(backupBound, y, posYs, difference, creator); + } else if (h != backupBound.height) { + dealButtom(backupBound, y, h, posYs, difference, creator); + } + clearCompsList(); + XWFitLayout layout = (XWFitLayout) container; + layout.updateBoundsWidget(); // 更新对应的BoundsWidget + updateCreatorBackBound(); + } + + /** + * 拖拽控件边框后,根据控件的大小尺寸,进行相关组件的调整 + * + * @param backupBound 边界备份 * @param bounds 组件边界 * @param xCreator 组件 * @param row 选中的行 * @param difference 偏移量 - */ - public void calculateBounds(Rectangle backupBound, Rectangle bounds, XCreator xCreator, int row, int difference) { + */ + public void calculateBounds(Rectangle backupBound, Rectangle bounds, XCreator xCreator, int row, int difference) { Rectangle rc = new Rectangle(0, 0, 0, 0); - XLayoutContainer parent = XCreatorUtils.getParentXLayoutContainer(xCreator); - if (parent != null) { - Rectangle rec = ComponentUtils.getRelativeBounds(parent); - rc.x = rec.x; - rc.y = rec.y; - } - int x = backupBound.x - rc.x, y = backupBound.y - rc.y; - //处理左右延伸 - switch (row) { - case 0: + XLayoutContainer parent = XCreatorUtils.getParentXLayoutContainer(xCreator); + if (parent != null) { + Rectangle rec = ComponentUtils.getRelativeBounds(parent); + rc.x = rec.x; + rc.y = rec.y; + } + int x = backupBound.x - rc.x, y = backupBound.y - rc.y; + //处理左右延伸 + switch (row) { + case 0: if (backupBound.width + backupBound.x == container.getWidth() - margin.getRight() + rc.x) { - x += difference; - } - break; - case 1: + x += difference; + } + break; + case 1: if (backupBound.y + backupBound.height == container.getHeight() - margin.getBottom() + rc.y) { - y += difference; - } - break; - } + y += difference; + } + break; + } bounds.setLocation(x, y); - xCreator.setBackupBound(backupBound); - xCreator.setBounds(bounds); - this.fix(xCreator); - } - - private void dealLeft(Rectangle backupBound, int x, int[] posXs, int difference, XCreator creator) { - if (backupBound.x == margin.getLeft()) { - return; - } - x = adjustCoordinateByDependingLine(x, posXs); - difference = x - backupBound.x; - dealDirectionAtLeft(backupBound, difference, creator); - } - - private void dealRight(Rectangle backupBound, int x, int w, int[] posXs, int difference, XCreator creator) { - if (backupBound.width + backupBound.x == container.getWidth() - margin.getRight()) { - return; - } - w = adjustDiffByDependingLine(x, posXs, w); - difference = w - backupBound.width; //拖拽长度 - dealDirectionAtRight(backupBound, difference, creator); - } - - private void dealTop(Rectangle backupBound, int y, int[] posYs, int difference, XCreator creator) { - if (backupBound.y == margin.getTop()) { - return; - } - y = adjustCoordinateByDependingLine(y, posYs); - difference = y - backupBound.y; - dealDirectionAtTop(backupBound, difference, creator); - } - - private void dealButtom(Rectangle backupBound, int y, int h, int[] posYs, int difference, XCreator creator) { - if (backupBound.y + backupBound.height == container.getHeight() - margin.getBottom()) { - return; - } - h = adjustDiffByDependingLine(y, posYs, h); - difference = h - backupBound.height; - dealDirectionABottom(backupBound, difference, creator); - } - - // 根据需要依附的位置调整拖拽的坐标值 - private int adjustCoordinateByDependingLine(int coordinate, int[] coordinates) { + xCreator.setBackupBound(backupBound); + xCreator.setBounds(bounds); + this.fix(xCreator); + } + + private void dealLeft(Rectangle backupBound, int x, int[] posXs, int difference, XCreator creator) { + if (backupBound.x == margin.getLeft()) { + return; + } + x = adjustCoordinateByDependingLine(x, posXs); + difference = x - backupBound.x; + dealDirectionAtLeft(backupBound, difference, creator); + } + + private void dealRight(Rectangle backupBound, int x, int w, int[] posXs, int difference, XCreator creator) { + if (backupBound.width + backupBound.x == container.getWidth() - margin.getRight()) { + return; + } + w = adjustDiffByDependingLine(x, posXs, w); + difference = w - backupBound.width; //拖拽长度 + dealDirectionAtRight(backupBound, difference, creator); + } + + private void dealTop(Rectangle backupBound, int y, int[] posYs, int difference, XCreator creator) { + if (backupBound.y == margin.getTop()) { + return; + } + y = adjustCoordinateByDependingLine(y, posYs); + difference = y - backupBound.y; + dealDirectionAtTop(backupBound, difference, creator); + } + + private void dealButtom(Rectangle backupBound, int y, int h, int[] posYs, int difference, XCreator creator) { + if (backupBound.y + backupBound.height == container.getHeight() - margin.getBottom()) { + return; + } + h = adjustDiffByDependingLine(y, posYs, h); + difference = h - backupBound.height; + dealDirectionABottom(backupBound, difference, creator); + } + + // 根据需要依附的位置调整拖拽的坐标值 + private int adjustCoordinateByDependingLine(int coordinate, int[] coordinates) { if (!isEdit) { - for (int i = 0; i < coordinates.length; i++) { - if (coordinate == coordinates[i]) { - continue; - } - if (coordinate > coordinates[i] - DEPENDING_SCOPE && coordinate < coordinates[i] + DEPENDING_SCOPE) { - coordinate = coordinates[i]; - break; - } - } - } - return coordinate; - } - - // 根据需要依附的位置调整拖拽的距离 - private int adjustDiffByDependingLine(int coordinate, int[] coordinates, int diff) { + for (int i = 0; i < coordinates.length; i++) { + if (coordinate == coordinates[i]) { + continue; + } + if (coordinate > coordinates[i] - DEPENDING_SCOPE && coordinate < coordinates[i] + DEPENDING_SCOPE) { + coordinate = coordinates[i]; + break; + } + } + } + return coordinate; + } + + // 根据需要依附的位置调整拖拽的距离 + private int adjustDiffByDependingLine(int coordinate, int[] coordinates, int diff) { if (!isEdit) { - for (int i = 0; i < coordinates.length; i++) { - if (coordinate + diff > coordinates[i] - DEPENDING_SCOPE && coordinate + diff < coordinates[i] + DEPENDING_SCOPE) { - diff = coordinates[i] - coordinate; - break; - } - } - } - return diff; - } - - // 左侧边框拉伸,循环找出对齐的两侧控件 - private void dealDirectionAtLeft(Rectangle backupBound, int difference, Component creator) { - rightComps.add(creator); - Component rightComp = null; - int leftx = backupBound.x - DEFAULT_AREA_LENGTH - actualVal; - // 取左侧边框右面的组件x值 - int rightx = backupBound.x + DEFAULT_AREA_LENGTH; - Component leftComp = container.getLeftComp(backupBound.x, backupBound.y); - leftComps.add(leftComp); - //先找上侧对齐时(y相等)的左右两边组件 - int ry = backupBound.y; - int ly = leftComp.getY(); - int min = margin.getTop(); - int max = container.getHeight() - margin.getBottom(); - while (ry >= min && ly >= min) { - if (ry == ly) { - break; - } else { - if (ry > ly) { - rightComp = container.getTopComp(rightx, ry); - ry = rightComp.getY(); - rightComps.add(rightComp); - } else { - leftComp = container.getTopComp(leftx, ly); - ly = leftComp.getY(); - leftComps.add(leftComp); - } - } - } - // 下侧对齐时(y+h相等)两边组件 - ry = backupBound.y + backupBound.height; - ly = leftComps.get(0).getY() + leftComps.get(0).getHeight(); - while (ry <= max && ly <= max) { - if (ry == ly) { - break; - } else { - if (ry > ly) { - leftComp = container.getComponentAt(leftx, ly + DEFAULT_AREA_LENGTH + actualVal); - ly = leftComp.getY() + leftComp.getHeight(); - leftComps.add(leftComp); - } else { - rightComp = container.getComponentAt(rightx, ry + DEFAULT_AREA_LENGTH + actualVal); - ry = rightComp.getY() + rightComp.getHeight(); - rightComps.add(rightComp); - } - } - } - dealHorDirection(backupBound.x, difference); - } - - // 右侧边框拉伸,循环找出对齐的两侧控件 - private void dealDirectionAtRight(Rectangle backupBound, int difference, Component creator) { - leftComps.add(creator); - Component leftComp = null; - int leftx = backupBound.x + backupBound.width - DEFAULT_AREA_LENGTH; - // 取右侧边框右面的组件x值 - int rightx = backupBound.x + backupBound.width + DEFAULT_AREA_LENGTH + actualVal; - Component rightComp = container.getRightComp(backupBound.x, backupBound.y, backupBound.width); - rightComps.add(rightComp); - int ly = backupBound.y, ry = rightComp.getY(); - int min = margin.getTop(); - int max = container.getHeight() - margin.getBottom(); - while (ry >= min && ly >= min) { - if (ry == ly) { - break; - } else { - if (ry > ly) { - rightComp = container.getTopComp(rightx, ry); - ry = rightComp.getY(); - rightComps.add(rightComp); - } else { - leftComp = container.getTopComp(leftx, ly); - ly = leftComp.getY(); - leftComps.add(leftComp); - } - } - } - ly = backupBound.y + backupBound.height; - ry = rightComps.get(0).getY() + rightComps.get(0).getHeight(); - while (ry <= max && ly <= max) { - if (ry == ly) { - break; - } else { - if (ry > ly) { - leftComp = container.getComponentAt(leftx, ly + DEFAULT_AREA_LENGTH + actualVal); - ly = leftComp.getY() + leftComp.getHeight(); - leftComps.add(leftComp); - } else { - rightComp = container.getComponentAt(rightx, ry + DEFAULT_AREA_LENGTH + actualVal); - ry = rightComp.getY() + rightComp.getHeight(); - rightComps.add(rightComp); - } - } - } - dealHorDirection(backupBound.x + backupBound.width + actualVal, difference); - } - - /** - * 水平方向上拉伸边框的处理 - */ - private void dealHorDirection(int objx, int difference) { - if (difference > 0) { - difference = Math.min(getMinWidth(rightComps) - minWidth, difference); - } else { - difference = Math.max(difference, minWidth - getMinWidth(leftComps)); - } - //重新计算左右两侧组件size、point + for (int i = 0; i < coordinates.length; i++) { + if (coordinate + diff > coordinates[i] - DEPENDING_SCOPE && coordinate + diff < coordinates[i] + DEPENDING_SCOPE) { + diff = coordinates[i] - coordinate; + break; + } + } + } + return diff; + } + + // 左侧边框拉伸,循环找出对齐的两侧控件 + private void dealDirectionAtLeft(Rectangle backupBound, int difference, Component creator) { + rightComps.add(creator); + Component rightComp = null; + int leftx = backupBound.x - DEFAULT_AREA_LENGTH - actualVal; + // 取左侧边框右面的组件x值 + int rightx = backupBound.x + DEFAULT_AREA_LENGTH; + Component leftComp = container.getLeftComp(backupBound.x, backupBound.y); + leftComps.add(leftComp); + //先找上侧对齐时(y相等)的左右两边组件 + int ry = backupBound.y; + int ly = leftComp.getY(); + int min = margin.getTop(); + int max = container.getHeight() - margin.getBottom(); + while (ry >= min && ly >= min) { + if (ry == ly) { + break; + } else { + if (ry > ly) { + rightComp = container.getTopComp(rightx, ry); + ry = rightComp.getY(); + rightComps.add(rightComp); + } else { + leftComp = container.getTopComp(leftx, ly); + ly = leftComp.getY(); + leftComps.add(leftComp); + } + } + } + // 下侧对齐时(y+h相等)两边组件 + ry = backupBound.y + backupBound.height; + ly = leftComps.get(0).getY() + leftComps.get(0).getHeight(); + while (ry <= max && ly <= max) { + if (ry == ly) { + break; + } else { + if (ry > ly) { + leftComp = container.getComponentAt(leftx, ly + DEFAULT_AREA_LENGTH + actualVal); + ly = leftComp.getY() + leftComp.getHeight(); + leftComps.add(leftComp); + } else { + rightComp = container.getComponentAt(rightx, ry + DEFAULT_AREA_LENGTH + actualVal); + ry = rightComp.getY() + rightComp.getHeight(); + rightComps.add(rightComp); + } + } + } + dealHorDirection(backupBound.x, difference); + } + + // 右侧边框拉伸,循环找出对齐的两侧控件 + private void dealDirectionAtRight(Rectangle backupBound, int difference, Component creator) { + leftComps.add(creator); + Component leftComp = null; + int leftx = backupBound.x + backupBound.width - DEFAULT_AREA_LENGTH; + // 取右侧边框右面的组件x值 + int rightx = backupBound.x + backupBound.width + DEFAULT_AREA_LENGTH + actualVal; + Component rightComp = container.getRightComp(backupBound.x, backupBound.y, backupBound.width); + rightComps.add(rightComp); + int ly = backupBound.y, ry = rightComp.getY(); + int min = margin.getTop(); + int max = container.getHeight() - margin.getBottom(); + while (ry >= min && ly >= min) { + if (ry == ly) { + break; + } else { + if (ry > ly) { + rightComp = container.getTopComp(rightx, ry); + ry = rightComp.getY(); + rightComps.add(rightComp); + } else { + leftComp = container.getTopComp(leftx, ly); + ly = leftComp.getY(); + leftComps.add(leftComp); + } + } + } + ly = backupBound.y + backupBound.height; + ry = rightComps.get(0).getY() + rightComps.get(0).getHeight(); + while (ry <= max && ly <= max) { + if (ry == ly) { + break; + } else { + if (ry > ly) { + leftComp = container.getComponentAt(leftx, ly + DEFAULT_AREA_LENGTH + actualVal); + ly = leftComp.getY() + leftComp.getHeight(); + leftComps.add(leftComp); + } else { + rightComp = container.getComponentAt(rightx, ry + DEFAULT_AREA_LENGTH + actualVal); + ry = rightComp.getY() + rightComp.getHeight(); + rightComps.add(rightComp); + } + } + } + dealHorDirection(backupBound.x + backupBound.width + actualVal, difference); + } + + /** + * 水平方向上拉伸边框的处理 + */ + private void dealHorDirection(int objx, int difference) { + if (difference > 0) { + difference = Math.min(getMinWidth(rightComps) - minWidth, difference); + } else { + difference = Math.max(difference, minWidth - getMinWidth(leftComps)); + } + //重新计算左右两侧组件size、point if (calculateLefttRelatComponent(difference)) { calculateRightRelatComponent(objx + difference, -difference); - } - } - - // 上侧边框拉伸,循环找出对齐的两侧控件 - private void dealDirectionAtTop(Rectangle backupBound, int difference, Component creator) { - downComps.add(creator); - // 取上侧边框上面的组件用的y值 - int topy = backupBound.y - DEFAULT_AREA_LENGTH - actualVal; - // 上侧边框下面的组件y值 - int bottomy = backupBound.y + DEFAULT_AREA_LENGTH; - Component topComp = container.getTopComp(backupBound.x, backupBound.y); - upComps.add(topComp); - Component bottomComp = null; - int min = margin.getLeft(); - int max = container.getWidth() - margin.getRight(); - //先找左侧侧对齐时(x相等)的上下两边组件 - int ux = topComp.getX(); - int dx = backupBound.x; - while (ux >= min && dx >= min) { - if (ux == dx) { - break; - } else { - if (ux < dx) { - bottomComp = container.getLeftComp(dx, bottomy); - dx = bottomComp.getX(); - downComps.add(bottomComp); - } else { - topComp = container.getLeftComp(ux, topy); - ux = topComp.getX(); - upComps.add(topComp); - } - } - } - // 右侧对齐时(x+w相等)两边组件 - ux = upComps.get(0).getX() + upComps.get(0).getWidth(); - dx = backupBound.x + backupBound.width; - while (ux <= max && dx <= max) { - if (ux == dx) { - break; - } else { - if (ux < dx) { - topComp = container.getComponentAt(ux + DEFAULT_AREA_LENGTH + actualVal, topy); - ux = topComp.getX() + topComp.getWidth(); - upComps.add(topComp); - } else { - bottomComp = container.getComponentAt(dx + DEFAULT_AREA_LENGTH + actualVal, bottomy); - dx = bottomComp.getX() + bottomComp.getWidth(); - downComps.add(bottomComp); - } - } - } - - dealVertiDirection(backupBound.y, difference); - } - - // 下侧边框拉伸,循环找出对齐的两侧控件 - private void dealDirectionABottom(Rectangle backupBound, int difference, Component creator) { - upComps.add(creator); - Component topComp = null; - Component bottomComp = container.getBottomComp(backupBound.x, backupBound.y, backupBound.height); - // 下侧边框下面的组件y坐标 - int bottomy = backupBound.y + backupBound.height + DEFAULT_AREA_LENGTH + actualVal; - // 取下侧边框上面的组件用的y值 - int topy = backupBound.y + backupBound.height - DEFAULT_AREA_LENGTH; - downComps.add(bottomComp); - int dx = bottomComp.getX(); - int ux = backupBound.x; - int min = margin.getLeft(); - int max = container.getWidth() - margin.getRight(); - while (ux >= min && dx >= min) { - if (ux == dx) { - break; - } else { - if (ux < dx) { - bottomComp = container.getLeftComp(dx, bottomy); - dx = bottomComp.getX(); - downComps.add(bottomComp); - } else { - topComp = container.getLeftComp(ux, topy); - ux = topComp.getX(); - upComps.add(topComp); - } - } - } - dx = downComps.get(0).getX() + downComps.get(0).getWidth(); - ux = backupBound.x + backupBound.width; - while (ux <= max && dx <= max) { - if (ux == dx) { - break; - } else { - if (ux < dx) { - topComp = container.getComponentAt(ux + DEFAULT_AREA_LENGTH + actualVal, topy); - ux = topComp.getX() + topComp.getWidth(); - upComps.add(topComp); - } else { - bottomComp = container.getComponentAt(dx + DEFAULT_AREA_LENGTH + actualVal, bottomy); - dx = bottomComp.getX() + bottomComp.getWidth(); - downComps.add(bottomComp); - } - } - } - dealVertiDirection(backupBound.y + backupBound.height + actualVal, difference); - } - - /** - * 垂直方向上拉伸边框的处理 - */ - private void dealVertiDirection(int objY, int difference) { - if (difference > 0) { - difference = Math.min(getMinHeight(downComps) - minHeight, difference); - } else { - difference = Math.max(difference, minHeight - getMinHeight(upComps)); - } - //重新计算上下两侧组件size、point + } + } + + // 上侧边框拉伸,循环找出对齐的两侧控件 + private void dealDirectionAtTop(Rectangle backupBound, int difference, Component creator) { + downComps.add(creator); + // 取上侧边框上面的组件用的y值 + int topy = backupBound.y - DEFAULT_AREA_LENGTH - actualVal; + // 上侧边框下面的组件y值 + int bottomy = backupBound.y + DEFAULT_AREA_LENGTH; + Component topComp = container.getTopComp(backupBound.x, backupBound.y); + upComps.add(topComp); + Component bottomComp = null; + int min = margin.getLeft(); + int max = container.getWidth() - margin.getRight(); + //先找左侧侧对齐时(x相等)的上下两边组件 + int ux = topComp.getX(); + int dx = backupBound.x; + while (ux >= min && dx >= min) { + if (ux == dx) { + break; + } else { + if (ux < dx) { + bottomComp = container.getLeftComp(dx, bottomy); + dx = bottomComp.getX(); + downComps.add(bottomComp); + } else { + topComp = container.getLeftComp(ux, topy); + ux = topComp.getX(); + upComps.add(topComp); + } + } + } + // 右侧对齐时(x+w相等)两边组件 + ux = upComps.get(0).getX() + upComps.get(0).getWidth(); + dx = backupBound.x + backupBound.width; + while (ux <= max && dx <= max) { + if (ux == dx) { + break; + } else { + if (ux < dx) { + topComp = container.getComponentAt(ux + DEFAULT_AREA_LENGTH + actualVal, topy); + ux = topComp.getX() + topComp.getWidth(); + upComps.add(topComp); + } else { + bottomComp = container.getComponentAt(dx + DEFAULT_AREA_LENGTH + actualVal, bottomy); + dx = bottomComp.getX() + bottomComp.getWidth(); + downComps.add(bottomComp); + } + } + } + + dealVertiDirection(backupBound.y, difference); + } + + // 下侧边框拉伸,循环找出对齐的两侧控件 + private void dealDirectionABottom(Rectangle backupBound, int difference, Component creator) { + upComps.add(creator); + Component topComp = null; + Component bottomComp = container.getBottomComp(backupBound.x, backupBound.y, backupBound.height); + // 下侧边框下面的组件y坐标 + int bottomy = backupBound.y + backupBound.height + DEFAULT_AREA_LENGTH + actualVal; + // 取下侧边框上面的组件用的y值 + int topy = backupBound.y + backupBound.height - DEFAULT_AREA_LENGTH; + downComps.add(bottomComp); + int dx = bottomComp.getX(); + int ux = backupBound.x; + int min = margin.getLeft(); + int max = container.getWidth() - margin.getRight(); + while (ux >= min && dx >= min) { + if (ux == dx) { + break; + } else { + if (ux < dx) { + bottomComp = container.getLeftComp(dx, bottomy); + dx = bottomComp.getX(); + downComps.add(bottomComp); + } else { + topComp = container.getLeftComp(ux, topy); + ux = topComp.getX(); + upComps.add(topComp); + } + } + } + dx = downComps.get(0).getX() + downComps.get(0).getWidth(); + ux = backupBound.x + backupBound.width; + while (ux <= max && dx <= max) { + if (ux == dx) { + break; + } else { + if (ux < dx) { + topComp = container.getComponentAt(ux + DEFAULT_AREA_LENGTH + actualVal, topy); + ux = topComp.getX() + topComp.getWidth(); + upComps.add(topComp); + } else { + bottomComp = container.getComponentAt(dx + DEFAULT_AREA_LENGTH + actualVal, bottomy); + dx = bottomComp.getX() + bottomComp.getWidth(); + downComps.add(bottomComp); + } + } + } + dealVertiDirection(backupBound.y + backupBound.height + actualVal, difference); + } + + /** + * 垂直方向上拉伸边框的处理 + */ + private void dealVertiDirection(int objY, int difference) { + if (difference > 0) { + difference = Math.min(getMinHeight(downComps) - minHeight, difference); + } else { + difference = Math.max(difference, minHeight - getMinHeight(upComps)); + } + //重新计算上下两侧组件size、point if (calculateUpRelatComponent(difference)) { calculateDownRelatComponent(objY + difference, -difference); - } - } - - /** - * 新拖入组件时,计算调整其他关联组件位置大小 - * - * @param child 新拖入的组件 - * @param x 鼠标所在x坐标 - * @param y 鼠标所在y坐标 - */ - public void fix(XCreator child, int x, int y) { - Component parentComp = container.getComponentAt(x, y); - if (container.getComponentCount() == 0) { - child.setLocation(0, 0); - child.setSize(parentComp.getWidth(), parentComp.getHeight()); - } else if (isCrossPointArea(parentComp, x, y)) { - //交叉区域插入组件时,根据具体位置进行上下或者左右或者相邻三个组件的位置大小插入 - fixCrossPointArea(parentComp, child, x, y); - return; - } else if (isTrisectionArea(parentComp, x, y)) { - // 在边界三等分区域,就不再和组件二等分了 - fixTrisect(parentComp, child, x, y); - return; - } else { - fixHalve(parentComp, child, x, y); - } - } - - /** - * 平分,正常情况拖入组件时,按照上1/4区域、下1/4区域为上下平分,中左侧1/2区域、中右侧1/2区域为左右平分 - */ - protected void fixHalve(Component currentComp, XCreator child, int x, int y) { - super.fixHalve(currentComp, child, x, y); - } - - /** - * 组件交叉区域进行插入时,调整受到变动的其他组件,之前是交叉区域插入也按照三等分逻辑,后面测试中发现有bug,改为和bi一样的鼠标所在侧平分 - * 默认左上角、右下角区域是垂直方向插入组件 - * 右上角和左下角是水平方向插入组件,这样避免田字块时重复 - */ - protected void fixCrossPointArea(Component currentComp, XCreator child, int x, int y) { - super.fixCrossPointArea(currentComp, child, x, y); - } - - /** - * 三等分区域时,调整相关联的组件 - * - * @param currentComp 鼠标所在组件 - * @param child 待插入组件 - */ - protected void fixTrisect(Component currentComp, XCreator child, int x, int y) { - super.fixTrisect(currentComp, child, x, y); - } - - /** - * 删除组件或者重新拖动时,其它组件重新计算位置大小 - */ - protected void delete(XCreator creator, int creatorWidth, int creatorHeight) { - int x = creator.getX(); - int y = creator.getY(); - recalculateChildrenSize(x, y, creatorWidth, creatorHeight); - } - - /** - * 重新计算内部组件大小 - * - * @param x 坐标x - * @param y 坐标y - * @param creatorWidth 删除的组件之前所在布局的宽度 - * @param creatorHeight 删除的组件之前所在布局的高度 - */ - public void recalculateChildrenSize(int x, int y, int creatorWidth, int creatorHeight) { - if (container.getComponentCount() == 0) { - return; - } else { - initCompsList(); - int width = creatorWidth; - int height = creatorHeight; - calculateRelatedComponent(x, y, width, height); - if (!rightComps.isEmpty() && getAllHeight(rightComps) == height) { + } + } + + /** + * 新拖入组件时,计算调整其他关联组件位置大小 + * + * @param child 新拖入的组件 + * @param x 鼠标所在x坐标 + * @param y 鼠标所在y坐标 + */ + public void fix(XCreator child, int x, int y) { + Component parentComp = container.getComponentAt(x, y); + if (container.getComponentCount() == 0) { + child.setLocation(0, 0); + child.setSize(parentComp.getWidth(), parentComp.getHeight()); + } else if (isCrossPointArea(parentComp, x, y)) { + //交叉区域插入组件时,根据具体位置进行上下或者左右或者相邻三个组件的位置大小插入 + fixCrossPointArea(parentComp, child, x, y); + return; + } else if (isTrisectionArea(parentComp, x, y)) { + // 在边界三等分区域,就不再和组件二等分了 + fixTrisect(parentComp, child, x, y); + return; + } else { + fixHalve(parentComp, child, x, y); + } + } + + /** + * 平分,正常情况拖入组件时,按照上1/4区域、下1/4区域为上下平分,中左侧1/2区域、中右侧1/2区域为左右平分 + */ + protected void fixHalve(Component currentComp, XCreator child, int x, int y) { + super.fixHalve(currentComp, child, x, y); + } + + /** + * 组件交叉区域进行插入时,调整受到变动的其他组件,之前是交叉区域插入也按照三等分逻辑,后面测试中发现有bug,改为和bi一样的鼠标所在侧平分 + * 默认左上角、右下角区域是垂直方向插入组件 + * 右上角和左下角是水平方向插入组件,这样避免田字块时重复 + */ + protected void fixCrossPointArea(Component currentComp, XCreator child, int x, int y) { + super.fixCrossPointArea(currentComp, child, x, y); + } + + /** + * 三等分区域时,调整相关联的组件 + * + * @param currentComp 鼠标所在组件 + * @param child 待插入组件 + */ + protected void fixTrisect(Component currentComp, XCreator child, int x, int y) { + super.fixTrisect(currentComp, child, x, y); + } + + /** + * 删除组件或者重新拖动时,其它组件重新计算位置大小 + */ + protected void delete(XCreator creator, int creatorWidth, int creatorHeight) { + int x = creator.getX(); + int y = creator.getY(); + recalculateChildrenSize(x, y, creatorWidth, creatorHeight); + } + + /** + * 重新计算内部组件大小 + * + * @param x 坐标x + * @param y 坐标y + * @param creatorWidth 删除的组件之前所在布局的宽度 + * @param creatorHeight 删除的组件之前所在布局的高度 + */ + public void recalculateChildrenSize(int x, int y, int creatorWidth, int creatorHeight) { + if (container.getComponentCount() == 0) { + return; + } else { + initCompsList(); + int width = creatorWidth; + int height = creatorHeight; + calculateRelatedComponent(x, y, width, height); + if (!rightComps.isEmpty() && getAllHeight(rightComps) == height) { calculateRightRelatComponent(x, width + actualVal); - } else if (!leftComps.isEmpty() && getAllHeight(leftComps) == height) { + } else if (!leftComps.isEmpty() && getAllHeight(leftComps) == height) { calculateLefttRelatComponent(width + actualVal); - } else if (!downComps.isEmpty() && getAllWidth(downComps) == width) { + } else if (!downComps.isEmpty() && getAllWidth(downComps) == width) { calculateDownRelatComponent(y, height + actualVal); - } else if (!upComps.isEmpty() && getAllWidth(upComps) == width) { + } else if (!upComps.isEmpty() && getAllWidth(upComps) == width) { calculateUpRelatComponent(height + actualVal); - } else { - // 由于布局三等分的存在,可能会出现删除组件时,找不到关联的组件填充,此时特殊处理 - calculateNoRelatedComponent(x, y, width, height); - } - } - clearCompsList(); - } - - /** - * 四侧边框都没有对齐的,此时每侧有且只有一个方向不对齐 - * 比如右侧不对齐,那么必然右上或右下没对齐,不会同时不对齐,否则不会出现此情况 - * 正常删除是右左下上优先原则,这边目前只调整右侧以至填充完整, - * 右侧不对齐时的组件先上下微调,再向左侧填充。 - */ - private void calculateNoRelatedComponent(int x, int y, int width, int height) { - // 只有最后一个组件了,直接删除 - if (container.getComponentCount() <= 1) { - return; - } - // 删除当前组件时,由于没有刚好边框对齐的其他组件,这时候需要调整的组件 - Component rightComp = container.getRightComp(x, y, width); - if (rightComp == null) { - return; - } - - int ry = rightComp.getY(); - clearCompsList(); - initCompsList(); - Rectangle rec = new Rectangle(x, y, width, height); - if (ry != y) { - calculateNoRelatedWhileRightTop(rec, rightComp); - } else { - calculateNoRelatedWhileRightBott(rec, rightComp); - } - - } - - private void calculateNoRelatedWhileRightTop(Rectangle bound, Component rcomp) { - if (rcomp == null) { - return; - } - - int ry = rcomp.getY(); - int rh = rcomp.getHeight(); - int rw = rcomp.getWidth(); - int dh = bound.y - ry - actualVal; - // 没法缩小高度 - if (dh < minHeight) { - // 没法缩小时则拉伸rcomp的上边框 - dealDirectionAtTop(rcomp.getBounds(), dh + actualVal, rcomp); - //调整的时候可能有组件达到最小高度,判断下 - if (rcomp.getY() != bound.y) { - clearCompsList(); - initCompsList(); - dealDirectionAtTop(rcomp.getBounds(), bound.y - rcomp.getY() - minHeight - actualVal, rcomp); - ry = rcomp.getY(); - int rx = rcomp.getX(); - rcomp.setBounds(rx, ry, rw, minHeight); - recalculateChildrenSize(rx, bound.y, rw, rh - dh - actualVal); - recalculateChildrenSize(bound.x, bound.y, bound.width, bound.height); - return; - } - } else { - // 右侧控件底部对齐 - if (rh + ry == bound.y + bound.height) { - rcomp.setSize(rw, dh); - bound.width += rw; - bound.width += actualVal; - } else { - recalculateChildrenSize(bound.x, ry + rh + actualVal, bound.width, bound.height + bound.y - rh - ry - actualVal); - recalculateChildrenSize(bound.x, bound.y, bound.width, ry + rh - bound.y); - return; - } - } - recalculateChildrenSize(bound.x, bound.y, bound.width, bound.height); - } - - private void calculateNoRelatedWhileRightBott(Rectangle bound, Component rcomp) { - rcomp = container.getBottomRightComp(bound.x, bound.y, bound.height, bound.width); - int ry = rcomp.getY(); - int rh = rcomp.getHeight(); - int rw = rcomp.getWidth(); - int dh = ry + rh - bound.y - bound.height - actualVal; - if (dh < minHeight) { - dealDirectionABottom(rcomp.getBounds(), -dh - actualVal, rcomp); - //调整的时候可能有组件达到最小高度,判断下 - if (rcomp.getHeight() + ry != bound.y + bound.height) { - clearCompsList(); - initCompsList(); - dh = ry + rcomp.getHeight() - bound.y - bound.height - actualVal; - dealDirectionABottom(rcomp.getBounds(), minHeight - dh, rcomp); - rh = rcomp.getHeight(); - int rx = rcomp.getX(); - rcomp.setBounds(rx, bound.y + bound.height + actualVal, rw, minHeight); - recalculateChildrenSize(rx, ry, rw, rh - minHeight - actualVal); - recalculateChildrenSize(bound.x, bound.y, bound.width, bound.height); - return; - } - } else { - if (ry == bound.y) { - rcomp.setBounds(rcomp.getX(), bound.y + bound.height + actualVal, rw, dh); - bound.width += rw; - bound.width += actualVal; - } else { - recalculateChildrenSize(bound.x, bound.y, bound.width, ry - bound.y - actualVal); - recalculateChildrenSize(bound.x, ry, bound.width, bound.height - ry + bound.y); - return; - } - } - recalculateChildrenSize(bound.x, bound.y, bound.width, bound.height); - } - - private int getMinWidth(List comps) { - if (comps.isEmpty()) { - return 0; - } - int minWidth = container.getWidth() - margin.getLeft() - margin.getRight(); - for (int i = 0, size = comps.size(); i < size; i++) { - minWidth = minWidth > comps.get(i).getWidth() ? comps.get(i).getWidth() : minWidth; - } - return minWidth; - } - - private int getMinHeight(List comps) { - if (comps.isEmpty()) { - return 0; - } - int minH = container.getHeight() - margin.getTop() - margin.getBottom(); - for (int i = 0, size = comps.size(); i < size; i++) { - minH = minH > comps.get(i).getHeight() ? comps.get(i).getHeight() : minH; - } - return minH; - } - - // 删除时计算待删除组件上下侧的组件是否何其对齐 - private int getAllHeight(List comps) { - int allHeight = 0; - if (comps.isEmpty()) { - return allHeight; - } - int n = comps.size(); - for (int i = 0; i < n; i++) { - allHeight += comps.get(i).getHeight(); - } - allHeight += (n - 1) * actualVal; - return allHeight; - } - - private int getAllWidth(List comps) { - int allWidth = 0; - if (comps.isEmpty()) { - return allWidth; - } - int n = comps.size(); - for (int i = 0; i < n; i++) { - allWidth += comps.get(i).getWidth(); - } - allWidth += (n - 1) * actualVal; - return allWidth; - } - - /** - * 获取有哪些相关联的组件 - */ - protected void calculateRelatedComponent(int objX, int objY, int objWidth, int objHeight) { - int count = container.getComponentCount(); - for (int i = 0; i < count; i++) { - Component relatComp = container.getComponent(i); - int rx = relatComp.getX(); - int ry = relatComp.getY(); - int rwidth = relatComp.getWidth(); - int rheight = relatComp.getHeight(); - int verti = ry - objY; - int hori = rx - objX; - boolean isHori = verti >= 0 && objHeight >= (rheight + verti); - boolean isVerti = hori >= 0 && objWidth >= (rwidth + hori); - if (isHori && (objX + objWidth + actualVal) == rx) { - rightComps.add(relatComp); - } else if (isHori && objX == (rx + rwidth + actualVal)) { - leftComps.add(relatComp); - } else if (isVerti && (objY + objHeight + actualVal) == ry) { - downComps.add(relatComp); - } else if (isVerti && objY == (ry + rheight + actualVal)) { - upComps.add(relatComp); - } - } - } - - /** - * 拖拽组件时遍历某一侧组件得到该侧组件能够缩放的最小宽度,tab布局最小宽度 = 内部组件数 * 单个组件最小宽度 - * - * @param list 某一侧组件的集合 如:leftComps - * @return int 最小宽度 - */ - private int getCompsMinWidth(List list) { - return getMaxCompsNum(list, true) * WLayout.MIN_WIDTH; - } - - /** - * 拖拽组件遍历某一侧得到该侧组件能够缩放的最小高度,tab布局最小高度 = 内部组件数 * 单个组件最小高度 + 标题高度 - * - * @param list 某一侧组件集合 - * @return int 最小高度 - */ - private int getCompsMinHeight(List list) { - for (int i = 0; i < list.size(); i++) { - XCreator creator = (XCreator) list.get(i); - ArrayList childrenList = creator.getTargetChildrenList(); - if (!childrenList.isEmpty()) { - return getMaxCompsNum(list, false) * WLayout.MIN_HEIGHT + WCardMainBorderLayout.TAB_HEIGHT; - } - } - return WLayout.MIN_HEIGHT; - } - - /** - * 根据子组件的横(纵)坐标获取某一侧组件的最大内部组件数 - * - * @param list 某一侧组件集合 - * @param isHor 是否以横坐标为准 - * @return int 最大内部组件数 - */ - private int getMaxCompsNum(List list, boolean isHor) { - int maxCompNums = 1; - for (int i = 0, size = list.size(); i < size; i++) { - XCreator creator = (XCreator) list.get(i); - ArrayList childrenList = creator.getTargetChildrenList(); - int count = childrenList.size(); - if (count > 0) { - for (int j = 0; j < count; j++) { - XWTabFitLayout tabLayout = (XWTabFitLayout) childrenList.get(j); - int[] positions = isHor ? tabLayout.getHors(true) : tabLayout.getVeris(true); - int compNums = positions.length - 1; - maxCompNums = Math.max(compNums, maxCompNums); - } - } - } - return maxCompNums; - } - - /** - * 根据偏移量缩放内部组件大小,(tab布局用到) - * - * @param creator tab布局 - * @param offset 偏移量 - * @param isHor 是否为横向拖拽 - */ - private void adjustCompsSize(XCreator creator, int offset, boolean isHor) { - ArrayList childrenList = creator.getTargetChildrenList(); - int size = childrenList.size(); - if (size > 0) { - for (int j = 0; j < size; j++) { - XWTabFitLayout tabLayout = (XWTabFitLayout) childrenList.get(j); - tabLayout.setBackupBound(tabLayout.getBounds()); - int refSize = isHor ? tabLayout.getWidth() : tabLayout.getHeight(); - double percent = (double) offset / refSize; - if (percent < 0 && !tabLayout.canReduce(percent)) { - return; - } - setAdjustedSize(tabLayout, offset, isHor); - for (int m = 0; m < tabLayout.getComponentCount(); m++) { - XCreator childCreator = tabLayout.getXCreator(m); - BoundsWidget wgt = tabLayout.toData().getBoundsWidget(childCreator.toData()); - wgt.setBounds(tabLayout.getComponent(m).getBounds()); - } - adjustCreatorsSize(percent, tabLayout, isHor); - } - - } - } - - // 纵向拖拽,先将tab布局的高度设置为拖拽后的实际高度 - private void setAdjustedHeight(XWTabFitLayout tabLayout, int offset) { - tabLayout.setSize(tabLayout.getWidth(), tabLayout.getHeight() + offset); - } - - // 横向拖拽,先将tab布局的宽度设置为拖拽后的实际宽度 - private void setAdjustedSize(XWTabFitLayout tabLayout, int offset, boolean isHor) { - if (offset < 0) { - // 缩放时需要备份原tab布局宽高 - tabLayout.setReferDim(new Dimension(tabLayout.getWidth(), tabLayout.getHeight())); - } - if (isHor) { - tabLayout.setSize(tabLayout.getWidth() + offset, tabLayout.getHeight()); - return; - } - setAdjustedHeight(tabLayout, offset); - } - - // 按照拖拽偏移量,对tab布局进行缩放 - private void adjustCreatorsSize(double percent, XWTabFitLayout tabLayout, boolean isHor) { - if (isHor) { - tabLayout.adjustCreatorsWidth(percent); - return; - } - tabLayout.adjustCreatorsHeight(percent); - } - - - /** - * 删除或拉伸控件右边框 调整右侧组件位置大小 - * - * @param objX 调整后的坐标x - * @param objWidth 调整后的宽度 - */ + } else { + // 由于布局三等分的存在,可能会出现删除组件时,找不到关联的组件填充,此时特殊处理 + calculateNoRelatedComponent(x, y, width, height); + } + } + clearCompsList(); + } + + /** + * 四侧边框都没有对齐的,此时每侧有且只有一个方向不对齐 + * 比如右侧不对齐,那么必然右上或右下没对齐,不会同时不对齐,否则不会出现此情况 + * 正常删除是右左下上优先原则,这边目前只调整右侧以至填充完整, + * 右侧不对齐时的组件先上下微调,再向左侧填充。 + */ + private void calculateNoRelatedComponent(int x, int y, int width, int height) { + // 只有最后一个组件了,直接删除 + if (container.getComponentCount() <= 1) { + return; + } + // 删除当前组件时,由于没有刚好边框对齐的其他组件,这时候需要调整的组件 + Component rightComp = container.getRightComp(x, y, width); + if (rightComp == null) { + return; + } + + int ry = rightComp.getY(); + clearCompsList(); + initCompsList(); + Rectangle rec = new Rectangle(x, y, width, height); + if (ry != y) { + calculateNoRelatedWhileRightTop(rec, rightComp); + } else { + calculateNoRelatedWhileRightBott(rec, rightComp); + } + + } + + private void calculateNoRelatedWhileRightTop(Rectangle bound, Component rcomp) { + if (rcomp == null) { + return; + } + + int ry = rcomp.getY(); + int rh = rcomp.getHeight(); + int rw = rcomp.getWidth(); + int dh = bound.y - ry - actualVal; + // 没法缩小高度 + if (dh < minHeight) { + // 没法缩小时则拉伸rcomp的上边框 + dealDirectionAtTop(rcomp.getBounds(), dh + actualVal, rcomp); + //调整的时候可能有组件达到最小高度,判断下 + if (rcomp.getY() != bound.y) { + clearCompsList(); + initCompsList(); + dealDirectionAtTop(rcomp.getBounds(), bound.y - rcomp.getY() - minHeight - actualVal, rcomp); + ry = rcomp.getY(); + int rx = rcomp.getX(); + rcomp.setBounds(rx, ry, rw, minHeight); + recalculateChildrenSize(rx, bound.y, rw, rh - dh - actualVal); + recalculateChildrenSize(bound.x, bound.y, bound.width, bound.height); + return; + } + } else { + // 右侧控件底部对齐 + if (rh + ry == bound.y + bound.height) { + rcomp.setSize(rw, dh); + bound.width += rw; + bound.width += actualVal; + } else { + recalculateChildrenSize(bound.x, ry + rh + actualVal, bound.width, bound.height + bound.y - rh - ry - actualVal); + recalculateChildrenSize(bound.x, bound.y, bound.width, ry + rh - bound.y); + return; + } + } + recalculateChildrenSize(bound.x, bound.y, bound.width, bound.height); + } + + private void calculateNoRelatedWhileRightBott(Rectangle bound, Component rcomp) { + rcomp = container.getBottomRightComp(bound.x, bound.y, bound.height, bound.width); + int ry = rcomp.getY(); + int rh = rcomp.getHeight(); + int rw = rcomp.getWidth(); + int dh = ry + rh - bound.y - bound.height - actualVal; + if (dh < minHeight) { + dealDirectionABottom(rcomp.getBounds(), -dh - actualVal, rcomp); + //调整的时候可能有组件达到最小高度,判断下 + if (rcomp.getHeight() + ry != bound.y + bound.height) { + clearCompsList(); + initCompsList(); + dh = ry + rcomp.getHeight() - bound.y - bound.height - actualVal; + dealDirectionABottom(rcomp.getBounds(), minHeight - dh, rcomp); + rh = rcomp.getHeight(); + int rx = rcomp.getX(); + rcomp.setBounds(rx, bound.y + bound.height + actualVal, rw, minHeight); + recalculateChildrenSize(rx, ry, rw, rh - minHeight - actualVal); + recalculateChildrenSize(bound.x, bound.y, bound.width, bound.height); + return; + } + } else { + if (ry == bound.y) { + rcomp.setBounds(rcomp.getX(), bound.y + bound.height + actualVal, rw, dh); + bound.width += rw; + bound.width += actualVal; + } else { + recalculateChildrenSize(bound.x, bound.y, bound.width, ry - bound.y - actualVal); + recalculateChildrenSize(bound.x, ry, bound.width, bound.height - ry + bound.y); + return; + } + } + recalculateChildrenSize(bound.x, bound.y, bound.width, bound.height); + } + + private int getMinWidth(List comps) { + if (comps.isEmpty()) { + return 0; + } + int minWidth = container.getWidth() - margin.getLeft() - margin.getRight(); + for (int i = 0, size = comps.size(); i < size; i++) { + minWidth = minWidth > comps.get(i).getWidth() ? comps.get(i).getWidth() : minWidth; + } + return minWidth; + } + + private int getMinHeight(List comps) { + if (comps.isEmpty()) { + return 0; + } + int minH = container.getHeight() - margin.getTop() - margin.getBottom(); + for (int i = 0, size = comps.size(); i < size; i++) { + minH = minH > comps.get(i).getHeight() ? comps.get(i).getHeight() : minH; + } + return minH; + } + + // 删除时计算待删除组件上下侧的组件是否何其对齐 + private int getAllHeight(List comps) { + int allHeight = 0; + if (comps.isEmpty()) { + return allHeight; + } + int n = comps.size(); + for (int i = 0; i < n; i++) { + allHeight += comps.get(i).getHeight(); + } + allHeight += (n - 1) * actualVal; + return allHeight; + } + + private int getAllWidth(List comps) { + int allWidth = 0; + if (comps.isEmpty()) { + return allWidth; + } + int n = comps.size(); + for (int i = 0; i < n; i++) { + allWidth += comps.get(i).getWidth(); + } + allWidth += (n - 1) * actualVal; + return allWidth; + } + + /** + * 获取有哪些相关联的组件 + */ + protected void calculateRelatedComponent(int objX, int objY, int objWidth, int objHeight) { + int count = container.getComponentCount(); + for (int i = 0; i < count; i++) { + Component relatComp = container.getComponent(i); + int rx = relatComp.getX(); + int ry = relatComp.getY(); + int rwidth = relatComp.getWidth(); + int rheight = relatComp.getHeight(); + int verti = ry - objY; + int hori = rx - objX; + boolean isHori = verti >= 0 && objHeight >= (rheight + verti); + boolean isVerti = hori >= 0 && objWidth >= (rwidth + hori); + if (isHori && (objX + objWidth + actualVal) == rx) { + rightComps.add(relatComp); + } else if (isHori && objX == (rx + rwidth + actualVal)) { + leftComps.add(relatComp); + } else if (isVerti && (objY + objHeight + actualVal) == ry) { + downComps.add(relatComp); + } else if (isVerti && objY == (ry + rheight + actualVal)) { + upComps.add(relatComp); + } + } + } + + /** + * 拖拽组件时遍历某一侧组件得到该侧组件能够缩放的最小宽度,tab布局最小宽度 = 内部组件数 * 单个组件最小宽度 + * + * @param list 某一侧组件的集合 如:leftComps + * @return int 最小宽度 + */ + private int getCompsMinWidth(List list) { + return getMaxCompsNum(list, true) * WLayout.MIN_WIDTH; + } + + /** + * 拖拽组件遍历某一侧得到该侧组件能够缩放的最小高度,tab布局最小高度 = 内部组件数 * 单个组件最小高度 + 标题高度 + * + * @param list 某一侧组件集合 + * @return int 最小高度 + */ + private int getCompsMinHeight(List list) { + for (int i = 0; i < list.size(); i++) { + XCreator creator = (XCreator) list.get(i); + ArrayList childrenList = creator.getTargetChildrenList(); + if (!childrenList.isEmpty()) { + return getMaxCompsNum(list, false) * WLayout.MIN_HEIGHT + WCardMainBorderLayout.TAB_HEIGHT; + } + } + return WLayout.MIN_HEIGHT; + } + + /** + * 根据子组件的横(纵)坐标获取某一侧组件的最大内部组件数 + * + * @param list 某一侧组件集合 + * @param isHor 是否以横坐标为准 + * @return int 最大内部组件数 + */ + private int getMaxCompsNum(List list, boolean isHor) { + int maxCompNums = 1; + for (int i = 0, size = list.size(); i < size; i++) { + XCreator creator = (XCreator) list.get(i); + ArrayList childrenList = creator.getTargetChildrenList(); + int count = childrenList.size(); + if (count > 0) { + for (int j = 0; j < count; j++) { + XWTabFitLayout tabLayout = (XWTabFitLayout) childrenList.get(j); + int[] positions = isHor ? tabLayout.getHors(true) : tabLayout.getVeris(true); + int compNums = positions.length - 1; + maxCompNums = Math.max(compNums, maxCompNums); + } + } + } + return maxCompNums; + } + + /** + * 根据偏移量缩放内部组件大小,(tab布局用到) + * + * @param creator tab布局 + * @param offset 偏移量 + * @param isHor 是否为横向拖拽 + */ + private void adjustCompsSize(XCreator creator, int offset, boolean isHor) { + ArrayList childrenList = creator.getTargetChildrenList(); + int size = childrenList.size(); + if (size > 0) { + for (int j = 0; j < size; j++) { + XWTabFitLayout tabLayout = (XWTabFitLayout) childrenList.get(j); + tabLayout.setBackupBound(tabLayout.getBounds()); + int refSize = isHor ? tabLayout.getWidth() : tabLayout.getHeight(); + double percent = (double) offset / refSize; + if (percent < 0 && !tabLayout.canReduce(percent)) { + return; + } + setAdjustedSize(tabLayout, offset, isHor); + for (int m = 0; m < tabLayout.getComponentCount(); m++) { + XCreator childCreator = tabLayout.getXCreator(m); + BoundsWidget wgt = (BoundsWidget) tabLayout.toData().getBoundsWidget(childCreator.toData()); + wgt.setBounds(tabLayout.getComponent(m).getBounds()); + } + adjustCreatorsSize(percent, tabLayout, isHor); + } + + } + } + + // 纵向拖拽,先将tab布局的高度设置为拖拽后的实际高度 + private void setAdjustedHeight(XWTabFitLayout tabLayout, int offset) { + tabLayout.setSize(tabLayout.getWidth(), tabLayout.getHeight() + offset); + } + + // 横向拖拽,先将tab布局的宽度设置为拖拽后的实际宽度 + private void setAdjustedSize(XWTabFitLayout tabLayout, int offset, boolean isHor) { + if (offset < 0) { + // 缩放时需要备份原tab布局宽高 + tabLayout.setReferDim(new Dimension(tabLayout.getWidth(), tabLayout.getHeight())); + } + if (isHor) { + tabLayout.setSize(tabLayout.getWidth() + offset, tabLayout.getHeight()); + return; + } + setAdjustedHeight(tabLayout, offset); + } + + // 按照拖拽偏移量,对tab布局进行缩放 + private void adjustCreatorsSize(double percent, XWTabFitLayout tabLayout, boolean isHor) { + if (isHor) { + tabLayout.adjustCreatorsWidth(percent); + return; + } + tabLayout.adjustCreatorsHeight(percent); + } + + + /** + * 删除或拉伸控件右边框 调整右侧组件位置大小 + * + * @param objX 调整后的坐标x + * @param objWidth 调整后的宽度 + */ protected void calculateRightRelatComponent(int objX, int objWidth) { - int count = rightComps.size(); - for (int i = 0; i < count; i++) { - XCreator creator = (XCreator) rightComps.get(i); - adjustCompsSize(creator, objWidth, true); - int ry = creator.getY(); - int rwidth = creator.getWidth(); - int rheight = creator.getHeight(); - creator.setLocation(objX, ry); - creator.setSize(rwidth + objWidth, rheight); - } - } - - /** - * 实际拖拽偏移量是否超出了可调整的宽度范围 - * - * @param offset 实际偏移量 - * @return boolean 是否超出调整范围 - */ - private boolean isBeyondAdjustWidthScope(int offset) { - boolean isBeyondScope = false; - isBeyondScope = offset < 0 ? isBeyondWidthScope(offset, leftComps) : isBeyondWidthScope(offset, rightComps); - return isBeyondScope; - } - - // 实际拖拽偏移量是否超出某一侧的可调整宽度 - private boolean isBeyondWidthScope(int offset, List compsList) { - int compMinWidth = getCompsMinWidth(compsList); - for (int i = 0; i < compsList.size(); i++) { - XCreator creator = (XCreator) compsList.get(i); - if (Math.abs(offset) > (creator.getWidth() - compMinWidth)) { - return true; - } - } - return false; - } - - /** - * 删除或拉伸控件左边框时 调整左侧的组件位置大小; - */ + int count = rightComps.size(); + for (int i = 0; i < count; i++) { + XCreator creator = (XCreator) rightComps.get(i); + adjustCompsSize(creator, objWidth, true); + int ry = creator.getY(); + int rwidth = creator.getWidth(); + int rheight = creator.getHeight(); + creator.setLocation(objX, ry); + creator.setSize(rwidth + objWidth, rheight); + } + } + + /** + * 实际拖拽偏移量是否超出了可调整的宽度范围 + * + * @param offset 实际偏移量 + * @return boolean 是否超出调整范围 + */ + private boolean isBeyondAdjustWidthScope(int offset) { + boolean isBeyondScope = false; + isBeyondScope = offset < 0 ? isBeyondWidthScope(offset, leftComps) : isBeyondWidthScope(offset, rightComps); + return isBeyondScope; + } + + // 实际拖拽偏移量是否超出某一侧的可调整宽度 + private boolean isBeyondWidthScope(int offset, List compsList) { + int compMinWidth = getCompsMinWidth(compsList); + for (int i = 0; i < compsList.size(); i++) { + XCreator creator = (XCreator) compsList.get(i); + if (Math.abs(offset) > (creator.getWidth() - compMinWidth)) { + return true; + } + } + return false; + } + + /** + * 删除或拉伸控件左边框时 调整左侧的组件位置大小; + */ protected boolean calculateLefttRelatComponent(int objWidth) { - if (isBeyondAdjustWidthScope(objWidth)) { - return false; - } - int count = leftComps.size(); - for (int i = 0; i < count; i++) { - XCreator creator = (XCreator) leftComps.get(i); - adjustCompsSize(creator, objWidth, true); - int rwidth = creator.getWidth(); - int rheight = creator.getHeight(); - creator.setSize(rwidth + objWidth, rheight); - } - return true; - } - - /** - * 删除或拉伸下边框 调整下方的组件位置大小 - */ + if (isBeyondAdjustWidthScope(objWidth)) { + return false; + } + int count = leftComps.size(); + for (int i = 0; i < count; i++) { + XCreator creator = (XCreator) leftComps.get(i); + adjustCompsSize(creator, objWidth, true); + int rwidth = creator.getWidth(); + int rheight = creator.getHeight(); + creator.setSize(rwidth + objWidth, rheight); + } + return true; + } + + /** + * 删除或拉伸下边框 调整下方的组件位置大小 + */ protected void calculateDownRelatComponent(int objY, int objHeight) { - int count = downComps.size(); - for (int i = 0; i < count; i++) { - XCreator creator = (XCreator) downComps.get(i); - adjustCompsSize(creator, objHeight, false); - int rx = creator.getX(); - int rwidth = creator.getWidth(); - int rheight = creator.getHeight(); - creator.setLocation(rx, objY); - creator.setSize(rwidth, rheight + objHeight); - } - } - - /** - * 实际拖拽偏移量是否超出了可调整的高度范围 - * - * @param offset 实际偏移量 - * @return boolean 是否超出调整范围 - */ - private boolean isBeyondAdjustHeightScope(int offset) { - boolean isBeyondScope = false; - isBeyondScope = offset < 0 ? isBeyondHeightScope(offset, upComps) : isBeyondHeightScope(offset, downComps); - return isBeyondScope; - } - - // 实际拖拽偏移量是否超出某一侧的可调整高度 - private boolean isBeyondHeightScope(int offset, List compsList) { - int minHeight = getCompsMinHeight(compsList); - for (int i = 0; i < compsList.size(); i++) { - XCreator creator = (XCreator) compsList.get(i); - if (Math.abs(offset) > (creator.getHeight() - minHeight)) { - return true; - } - } - return false; - } - - /** - * 删除或拉伸上边框 调整上方的组件位置大小 - */ + int count = downComps.size(); + for (int i = 0; i < count; i++) { + XCreator creator = (XCreator) downComps.get(i); + adjustCompsSize(creator, objHeight, false); + int rx = creator.getX(); + int rwidth = creator.getWidth(); + int rheight = creator.getHeight(); + creator.setLocation(rx, objY); + creator.setSize(rwidth, rheight + objHeight); + } + } + + /** + * 实际拖拽偏移量是否超出了可调整的高度范围 + * + * @param offset 实际偏移量 + * @return boolean 是否超出调整范围 + */ + private boolean isBeyondAdjustHeightScope(int offset) { + boolean isBeyondScope = false; + isBeyondScope = offset < 0 ? isBeyondHeightScope(offset, upComps) : isBeyondHeightScope(offset, downComps); + return isBeyondScope; + } + + // 实际拖拽偏移量是否超出某一侧的可调整高度 + private boolean isBeyondHeightScope(int offset, List compsList) { + int minHeight = getCompsMinHeight(compsList); + for (int i = 0; i < compsList.size(); i++) { + XCreator creator = (XCreator) compsList.get(i); + if (Math.abs(offset) > (creator.getHeight() - minHeight)) { + return true; + } + } + return false; + } + + /** + * 删除或拉伸上边框 调整上方的组件位置大小 + */ protected boolean calculateUpRelatComponent(int objHeight) { - if (isBeyondAdjustHeightScope(objHeight)) { - return false; - } - int count = upComps.size(); - for (int i = 0; i < count; i++) { - XCreator creator = (XCreator) upComps.get(i); - adjustCompsSize(creator, objHeight, false); - int rwidth = creator.getWidth(); - int rheight = creator.getHeight(); - creator.setSize(rwidth, rheight + objHeight); - } - return true; - } - - /** - * 不调整,只计算位置 - * - * @return child的位置 - */ - public int[] getChildPosition(Component currentComp, XCreator child, int x, int y) { - return super.getChildPosition(currentComp, child, x, y); - } - - @Override - public ConstraintsGroupModel getLayoutConstraints(XCreator creator) { - return new FRFitLayoutConstraints((XWFitLayout) container, creator); - } + if (isBeyondAdjustHeightScope(objHeight)) { + return false; + } + int count = upComps.size(); + for (int i = 0; i < count; i++) { + XCreator creator = (XCreator) upComps.get(i); + adjustCompsSize(creator, objHeight, false); + int rwidth = creator.getWidth(); + int rheight = creator.getHeight(); + creator.setSize(rwidth, rheight + objHeight); + } + return true; + } + + /** + * 不调整,只计算位置 + * + * @return child的位置 + */ + public int[] getChildPosition(Component currentComp, XCreator child, int x, int y) { + return super.getChildPosition(currentComp, child, x, y); + } + + @Override + public ConstraintsGroupModel getLayoutConstraints(XCreator creator) { + return new FRFitLayoutConstraints((XWFitLayout) container, creator); + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/beans/location/Inner.java b/designer_form/src/com/fr/design/designer/beans/location/Inner.java index c909244898..b07b18b4ac 100644 --- a/designer_form/src/com/fr/design/designer/beans/location/Inner.java +++ b/designer_form/src/com/fr/design/designer/beans/location/Inner.java @@ -9,8 +9,8 @@ import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.FormSelection; import com.fr.design.utils.ComponentUtils; import com.fr.form.ui.container.WAbsoluteLayout; -import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.stable.ArrayUtils; +import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import java.awt.*; import java.awt.Rectangle; diff --git a/designer_form/src/com/fr/design/designer/creator/XElementCase.java b/designer_form/src/com/fr/design/designer/creator/XElementCase.java index 56aca1c43a..7eb967a9f7 100644 --- a/designer_form/src/com/fr/design/designer/creator/XElementCase.java +++ b/designer_form/src/com/fr/design/designer/creator/XElementCase.java @@ -10,9 +10,11 @@ import com.fr.design.fun.WidgetPropertyUIProvider; import com.fr.design.fun.impl.AbstractFormElementCaseEditorProvider; import com.fr.design.gui.ilable.UILabel; import com.fr.design.mainframe.*; -import com.fr.design.mainframe.widget.editors.ElementCaseToolBarEditor; +import com.fr.design.mainframe.widget.editors.BooleanEditor; import com.fr.design.mainframe.widget.editors.PaddingMarginEditor; import com.fr.design.mainframe.widget.editors.WLayoutBorderStyleEditor; +import com.fr.design.mainframe.widget.renderer.LayoutBorderStyleRenderer; +import com.fr.design.mainframe.widget.renderer.PaddingMarginCellRenderer; import com.fr.form.FormElementCaseContainerProvider; import com.fr.form.FormElementCaseProvider; import com.fr.form.FormProvider; @@ -86,7 +88,8 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme @Override public void propertyChange() { - makeVisible(toData().isVisible());} + makeVisible(toData().isVisible()); + } }), new CRPropertyDescriptor("borderStyle", this.data.getClass()).setEditorClass( WLayoutBorderStyleEditor.class).setI18NName( @@ -97,12 +100,11 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme public void propertyChange() { initStyle(); } - }), new CRPropertyDescriptor("margin", this.data.getClass()).setEditorClass(PaddingMarginEditor.class) .setI18NName(Inter.getLocText("FR-Layout_Padding")) .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), - new CRPropertyDescriptor("toolBars", this.data.getClass()).setEditorClass(ElementCaseToolBarEditor.class) + new CRPropertyDescriptor("showToolBar", this.data.getClass()).setEditorClass(BooleanEditor.class) .setI18NName(Inter.getLocText("Form-EC_toolbar")) .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced") }; diff --git a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java index 852cdf1220..b585383c66 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java @@ -3,6 +3,14 @@ */ package com.fr.design.designer.creator; +import java.awt.*; +import java.awt.event.ContainerEvent; +import java.awt.event.MouseEvent; +import java.awt.image.BufferedImage; +import java.beans.IntrospectionException; +import java.util.ArrayList; +import java.util.HashMap; + import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; import com.fr.design.designer.beans.LayoutAdapter; @@ -12,369 +20,345 @@ import com.fr.design.designer.beans.models.SelectionModel; import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; import com.fr.design.form.layout.FRAbsoluteLayout; import com.fr.design.icon.IconPathConstants; -import com.fr.design.mainframe.EditingMouseListener; -import com.fr.design.mainframe.FormArea; -import com.fr.design.mainframe.FormDesigner; +import com.fr.design.mainframe.*; import com.fr.form.ui.Connector; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WAbsoluteLayout; -import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.form.ui.container.WLayout; +import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.general.FRScreen; import com.fr.general.IOUtils; import com.fr.general.Inter; -import java.awt.*; -import java.awt.event.ContainerEvent; -import java.awt.event.MouseEvent; -import java.awt.image.BufferedImage; -import java.beans.IntrospectionException; -import java.util.ArrayList; -import java.util.HashMap; - /** * @author richer * @since 6.5.3 */ public class XWAbsoluteLayout extends XLayoutContainer { - private static final int EDIT_BTN_WIDTH = 60; - private static final int EDIT_BTN_HEIGHT = 24; - private int minWidth = WLayout.MIN_WIDTH; - private int minHeight = WLayout.MIN_HEIGHT; - - //由于屏幕分辨率不同,界面上的容器大小可能不是默认的100%,此时拖入组件时,保存的大小按照100%时的计算 - protected double containerPercent = 1.0; - - private HashMap xConnectorMap; - - public XWAbsoluteLayout() { - this(new WAbsoluteLayout(), new Dimension()); - } - - public XWAbsoluteLayout(WAbsoluteLayout widget) { - this(widget, new Dimension()); - } - - public XWAbsoluteLayout(WAbsoluteLayout widget, Dimension initSize) { - super(widget, initSize); - this.xConnectorMap = new HashMap(); - Connector connector; - for (int i = 0; i < widget.connectorCount(); i++) { - connector = widget.getConnectorIndex(i); - xConnectorMap.put(connector, new XConnector(connector, this)); - } - - initPercent(widget); - } - - /** - * 初始化时默认的组件大小 - * - * @return 默认Dimension - */ - @Override - public Dimension initEditorSize() { - return new Dimension(500, 300); - } - - //根据屏幕大小来确定显示的百分比, 1440*900默认100%, 1366*768缩放90% - private void initPercent(WAbsoluteLayout widget) { - Toolkit toolkit = Toolkit.getDefaultToolkit(); - Dimension scrnsize = toolkit.getScreenSize(); - double screenValue = FRScreen.getByDimension(scrnsize).getValue(); - if (screenValue != FormArea.DEFAULT_SLIDER) { - this.setContainerPercent(screenValue / FormArea.DEFAULT_SLIDER); - } - } - - /** - * 返回容器大小的百分比 - * - * @return the containerPercent - */ - public double getContainerPercent() { - return containerPercent; - } - - /** - * 设置容器大小的百分比 - * - * @param containerPercent the containerPercent to set - */ - public void setContainerPercent(double containerPercent) { - this.containerPercent = containerPercent; - minWidth = (int) (XWAbsoluteLayout.MIN_WIDTH * containerPercent); - minHeight = (int) (XWAbsoluteLayout.MIN_HEIGHT * containerPercent); - } - - /** - * 返回界面处根据百分比调整后的最小宽度 - * - * @return 最小宽度 - */ - public int getActualMinWidth() { - return this.minWidth; - } - - /** - * 返回界面处根据百分比调整后的最小高度 - * - * @return 最小高度 - */ - public int getActualMinHeight() { - return this.minHeight; - } - - /** - * 返回界面处根据百分比调整后的间隔大小(且为偶数) - * - * @return 间隔 - */ - public int getAcualInterval() { - // adapter那边交叉三等分、删除都要判断是否对齐,所以间隔转为偶数 - int interval = (int) (toData().getCompInterval() * containerPercent); - int val = interval / 2; - return val * 2; - } - - /** - * 界面容器大小不是默认的时,处理控件的BoundsWidget,且避免出现空隙 - */ - private Rectangle dealWidgetBound(Rectangle rec) { - if (containerPercent == 1.0) { - return rec; - } - rec.x = (int) (rec.x / containerPercent); - rec.y = (int) (rec.y / containerPercent); - rec.width = (int) (rec.width / containerPercent); - rec.height = (int) (rec.height / containerPercent); - return rec; - } - - /** - * 新增删除拉伸后单个组件的BoundsWidget - */ - public void updateBoundsWidget(XCreator xCreator) { - WAbsoluteLayout layout = this.toData(); - if (xCreator.hasTitleStyle()) { - xCreator = (XLayoutContainer) xCreator.getParent(); - } - if (xCreator.acceptType(XWAbsoluteLayout.class)) { - ((XWAbsoluteLayout) xCreator).updateBoundsWidget(); - } - // 如果子组件时tab布局,则tab布局内部的组件的wiget也要更新,否则保存后重新打开大小不对 - ArrayList childrenList = xCreator.getTargetChildrenList(); - if (!childrenList.isEmpty()) { - for (int i = 0; i < childrenList.size(); i++) { - XWTabFitLayout tabLayout = (XWTabFitLayout) childrenList.get(i); - tabLayout.updateBoundsWidget(); - } - } - BoundsWidget boundsWidget = (BoundsWidget) layout.getBoundsWidget(xCreator.toData()); - Rectangle rectangle = dealWidgetBound(xCreator.getBounds()); - } - - private Rectangle calculateBound(Rectangle rec, double pw, double ph) { - Rectangle calRec = new Rectangle(0, 0, 0, 0); - calRec.x = (int) (rec.x / pw); - calRec.y = (int) (rec.y / ph); - calRec.width = (int) (rec.width / pw); - calRec.height = (int) (rec.height / ph); - return calRec; - } - - /** - * 新增删除拉伸后每个组件的BoundsWidget - */ - public void updateBoundsWidget() { - WAbsoluteLayout layout = this.toData(); - Rectangle backupBound = this.getBackupBound(); - Rectangle currentBound = this.getBounds(); - if (backupBound != null && layout.getCompState() == WAbsoluteLayout.STATE_FIT) { - double percentW = ((double) backupBound.width / (double) currentBound.width); - double percentH = ((double) backupBound.height / (double) currentBound.height); - for (int index = 0, n = this.getComponentCount(); index < n; index++) { - XCreator creator = (XCreator) this.getComponent(index); - BoundsWidget wgt = (BoundsWidget) layout.getBoundsWidget(creator.toData()); - // 用当前的显示大小计算后调正具体位置 - Rectangle wgtBound = creator.getBounds(); - Rectangle rec = calculateBound(wgtBound, percentW, percentH); - wgt.setBounds(rec); - creator.setBounds(rec); - //绝对布局嵌套,要更新内部的绝对布局 - if (creator.acceptType(XWAbsoluteLayout.class)) { - creator.setBackupBound(wgtBound); - ((XWAbsoluteLayout) creator).updateBoundsWidget(); - } - } - } - } - - /** - * 更新子组件的Bound - * 这边主要用于绝对布局子组件在适应区域选项时 - * 涉及到的不同分辨率下缩放 - * - * @param minHeight 最小高度 - */ - @Override - public void updateChildBound(int minHeight) { - double prevContainerPercent = FRScreen.getByDimension(toData().getDesigningResolution()).getValue() / FormArea.DEFAULT_SLIDER; - if (toData().getCompState() == 0 && prevContainerPercent != containerPercent) { - for (int i = 0; i < this.getComponentCount(); i++) { - XCreator creator = getXCreator(i); - Rectangle rec = new Rectangle(creator.getBounds()); - rec.x = (int) (rec.x / prevContainerPercent * containerPercent); - rec.y = (int) (rec.y / prevContainerPercent * containerPercent); - rec.height = (int) (rec.height / prevContainerPercent * containerPercent); - rec.width = (int) (rec.width / prevContainerPercent * containerPercent); - BoundsWidget wgt = (BoundsWidget) toData().getBoundsWidget(creator.toData()); - wgt.setBounds(rec); - creator.setBounds(rec); - creator.updateChildBound(minHeight); - } - } - toData().setDesigningResolution(Toolkit.getDefaultToolkit().getScreenSize()); - } - - /** - * 增加对齐线 - * - * @param connector 对齐线 - */ - public void addConnector(Connector connector) { - xConnectorMap.put(connector, new XConnector(connector, this)); - ((WAbsoluteLayout) data).addConnector(connector); - } - - public XConnector getXConnector(Connector connector) { - return xConnectorMap.get(connector); - } - - /** - * 去除对齐线 - * - * @param connector 对齐线 - */ - public void removeConnector(Connector connector) { - ((WAbsoluteLayout) data).removeConnector(connector); - xConnectorMap.remove(connector); - } - - /** - * 返回对应的widget容器 - * - * @return 返回WAbsoluteLayout - */ - @Override - public WAbsoluteLayout toData() { - return (WAbsoluteLayout) data; - } - - @Override - protected String getIconName() { - return "layout_absolute_new.png"; - } - - /** - * 返回默认的容器name - * - * @return 返回绝对布局容器名 - */ - @Override - public String createDefaultName() { - return "absolute"; - } - - @Override - protected void initLayoutManager() { - this.setLayout(new FRAbsoluteLayout()); - } - - /** - * 是否支持标题样式 - * - * @return 默认false - */ - @Override - public boolean hasTitleStyle() { - return false; - } - - @Override - public void paintComponent(Graphics g) { - super.paintComponent(g); - WAbsoluteLayout layout = (WAbsoluteLayout) data; - Connector[] connector = layout.getConnector(); - for (int i = 0, size = connector.length; i < size; i++) { - connector[i].draw(g); - } - } - - /** - * 转换保存组件信息的wlayout为对应的container - */ - @Override - public void convert() { - isRefreshing = true; - WAbsoluteLayout abs = toData(); - this.removeAll(); - for (int i = 0, count = abs.getWidgetCount(); i < count; i++) { - BoundsWidget bw = (BoundsWidget) abs.getWidget(i); - if (bw != null) { - Rectangle bounds = bw.getBounds(); - XWidgetCreator comp = (XWidgetCreator) XCreatorUtils.createXCreator(bw.getWidget()); - if (!comp.acceptType(XWParameterLayout.class)) { - comp.setDirections(Direction.ALL); - } - add(comp); - comp.setBounds(bounds); - } - } - isRefreshing = false; - } - - /** - * 当前组件zorder位置替换新的控件 - * - * @param widget 控件 - * @param oldcreator 旧组件 - * @return 组件 - */ - @Override - public XCreator replace(Widget widget, XCreator oldcreator) { - int i = this.getComponentZOrder(oldcreator); - if (i != -1) { - this.toData().replace(new BoundsWidget(widget, oldcreator.getBounds()), - new BoundsWidget(oldcreator.toData(), oldcreator.getBounds())); - this.convert(); - return (XCreator) this.getComponent(i); - } - return null; - } - - /** + private static final int EDIT_BTN_WIDTH = 60; + private static final int EDIT_BTN_HEIGHT = 24; + private int minWidth = WLayout.MIN_WIDTH; + private int minHeight = WLayout.MIN_HEIGHT; + + //由于屏幕分辨率不同,界面上的容器大小可能不是默认的100%,此时拖入组件时,保存的大小按照100%时的计算 + protected double containerPercent = 1.0; + + private HashMap xConnectorMap; + + public XWAbsoluteLayout() { + this(new WAbsoluteLayout(),new Dimension()); + } + + public XWAbsoluteLayout(WAbsoluteLayout widget) { + this(widget,new Dimension()); + } + + public XWAbsoluteLayout(WAbsoluteLayout widget, Dimension initSize) { + super(widget, initSize); + this.xConnectorMap = new HashMap(); + Connector connector; + for (int i = 0; i < widget.connectorCount(); i++) { + connector = widget.getConnectorIndex(i); + xConnectorMap.put(connector, new XConnector(connector, this)); + } + + initPercent(widget); + } + + /** + * 初始化时默认的组件大小 + * + * @return 默认Dimension + */ + @Override + public Dimension initEditorSize() { + return new Dimension(500, 300); + } + + //根据屏幕大小来确定显示的百分比, 1440*900默认100%, 1366*768缩放90% + private void initPercent(WAbsoluteLayout widget){ + Toolkit toolkit = Toolkit.getDefaultToolkit(); + Dimension scrnsize = toolkit.getScreenSize(); + double screenValue = FRScreen.getByDimension(scrnsize).getValue(); + if(screenValue != FormArea.DEFAULT_SLIDER){ + this.setContainerPercent(screenValue / FormArea.DEFAULT_SLIDER); + } + } + + /** + * 返回容器大小的百分比 + * @return the containerPercent + */ + public double getContainerPercent() { + return containerPercent; + } + + /** + * 设置容器大小的百分比 + * @param containerPercent the containerPercent to set + */ + public void setContainerPercent(double containerPercent) { + this.containerPercent = containerPercent; + minWidth = (int) (XWAbsoluteLayout.MIN_WIDTH*containerPercent); + minHeight = (int) (XWAbsoluteLayout.MIN_HEIGHT*containerPercent); + } + + /** + * 返回界面处根据百分比调整后的最小宽度 + * @return 最小宽度 + */ + public int getActualMinWidth() { + return this.minWidth; + } + + /** + * 返回界面处根据百分比调整后的最小高度 + * @return 最小高度 + */ + public int getActualMinHeight() { + return this.minHeight; + } + + /** + * 返回界面处根据百分比调整后的间隔大小(且为偶数) + * @return 间隔 + */ + public int getAcualInterval() { + // adapter那边交叉三等分、删除都要判断是否对齐,所以间隔转为偶数 + int interval = (int) (toData().getCompInterval()*containerPercent); + int val = interval/2; + return val*2; + } + + /** + * 界面容器大小不是默认的时,处理控件的BoundsWidget,且避免出现空隙 + */ + private Rectangle dealWidgetBound(Rectangle rec) { + if (containerPercent == 1.0) { + return rec; + } + rec.x = (int) (rec.x/containerPercent); + rec.y = (int) (rec.y/containerPercent); + rec.width = (int) (rec.width/containerPercent); + rec.height = (int) (rec.height/containerPercent); + return rec; + } + + /** + * 新增删除拉伸后单个组件的BoundsWidget + */ + public void updateBoundsWidget(XCreator xCreator) { + WAbsoluteLayout layout = this.toData(); + if (xCreator.hasTitleStyle()) { + xCreator = (XLayoutContainer)xCreator.getParent(); + } + if (xCreator.acceptType(XWAbsoluteLayout.class)){ + ((XWAbsoluteLayout) xCreator).updateBoundsWidget(); + } + // 如果子组件时tab布局,则tab布局内部的组件的wiget也要更新,否则保存后重新打开大小不对 + ArrayList childrenList = xCreator.getTargetChildrenList(); + if(!childrenList.isEmpty()){ + for(int i=0; i Date: Tue, 2 May 2017 14:25:48 +0800 Subject: [PATCH 71/76] ct --- .../layout/FRAbsoluteLayoutAdapter.java | 685 +++++++------ .../adapters/layout/FRFitLayoutAdapter.java | 68 +- .../beans/location/AccessDirection.java | 89 +- .../designer/beans/models/AddingModel.java | 280 +++--- .../designer/beans/models/StateModel.java | 950 +++++++++--------- .../beans/painters/AbstractPainter.java | 190 ++-- .../design/mainframe/FormSelectionUtils.java | 4 +- 7 files changed, 1128 insertions(+), 1138 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java index 8ca2012525..539e60450f 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java @@ -1,346 +1,341 @@ -package com.fr.design.designer.beans.adapters.layout; - -import com.fr.design.beans.GroupModel; -import com.fr.design.designer.beans.ConstraintsGroupModel; -import com.fr.design.designer.beans.HoverPainter; -import com.fr.design.designer.beans.painters.FRAbsoluteLayoutPainter; -import com.fr.design.designer.creator.*; -import com.fr.design.designer.properties.BoundsGroupModel; -import com.fr.design.designer.properties.FRAbsoluteLayoutPropertiesGroupModel; -import com.fr.design.utils.ComponentUtils; -import com.fr.design.utils.gui.LayoutUtils; -import com.fr.form.ui.container.WAbsoluteLayout; -import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; - -import java.awt.*; - -public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { - //是不是添加到父容器上 - private boolean isAdd2ParentLayout = false; - private HoverPainter painter; - - public FRAbsoluteLayoutAdapter(XLayoutContainer container) { - super(container); - painter = new FRAbsoluteLayoutPainter(container); - initMinSize(); - } - - private void initMinSize() { - XWAbsoluteLayout layout = (XWAbsoluteLayout) container; - minWidth = layout.getActualMinWidth(); - minHeight = layout.getActualMinHeight(); - actualVal = layout.getAcualInterval(); - margin = layout.toData().getMargin(); - } - - @Override - public HoverPainter getPainter() { - return painter; - } - - /** - * 是否能在指定位置添加组件 - * - * @param creator 组件 - * @param x 坐标x - * @param y 坐标y - * @return 能则返回true - */ - //这个地方的逻辑非常复杂, - // 1.当前绝对布局是不可编辑且是最外层,那么其他控件添加在它周围, - // 2.当前绝对布局是不可编辑且不是最外层,那么控件不可添加,(嵌套) - // 3.当前绝对布局可编辑,那么控件添加 - @Override - public boolean accept(XCreator creator, int x, int y) { - Component comp = container.getComponentAt(x, y); - //布局控件要先判断是不是可编辑 - //可以编辑,按原有逻辑判断 - //不可编辑,当成一整个控件处理 - if (comp == null) { - return false; - } - //参数面板内的组件不允许拖往绝对布局中 - if (creator.getParent() != null && ((XCreator) creator.getParent()).acceptType(XWParameterLayout.class)) { - Rectangle rec = creator.getBounds(); - rec.y = creator.getParent().getHeight() - rec.height; - creator.setBounds(rec); - return false; - } - //判断组件能不能拖入绝对布局 - if (!creator.canEnterIntoAbsolutePane()) { - return false; - } - XLayoutContainer topLayout = XCreatorUtils.getHotspotContainer((XCreator) comp).getTopLayout(); - if (topLayout != null) { - if (topLayout.isEditable()) { - return topLayoutAccept(creator, x, y); - } - //绝对布局嵌套,处于内层,不可编辑,不添加,topLayout只能获取到最外层可编辑的布局 - else if (((XLayoutContainer) topLayout.getParent()).acceptType(XWAbsoluteLayout.class)) { - return false; - } else { - return acceptWidget(x, y); - } - } else { - FRLogger.getLogger().error("top layout is null!"); - } - - return false; - } - - //topLayout假如可以编辑的话就往里面添加组件 - private boolean topLayoutAccept(XCreator creator, int x, int y) { - //允许组件重叠,可以不判断有没有和当前控件重叠 - //先计算当前控件的位置 - int creatorX, creatorY; - if (XCreatorUtils.getParentXLayoutContainer(creator) != null) { - Rectangle creatorRectangle = ComponentUtils.getRelativeBounds(creator); - creatorX = creatorRectangle.x; - creatorY = creatorRectangle.y; - } else { - //这边计算得到的组件其实位置是正确的, - //因为传入的x和y已经加上了宽度或者高度的一半,再减去相同的宽度和高度的一半是没区别的, - // 例如高度为21,那么就是+10-10; - // 高度为20,那么就是+10-10; 没区别 - int w = creator.getWidth() / 2; - int h = creator.getHeight() / 2; - creatorX = x - w; - creatorY = y - h; - } - if (creatorX < 0 || creatorX + creator.getWidth() > container.getWidth()) { - return false; - } - if (creatorY < 0 || creatorY + creator.getHeight() > container.getHeight()) { - return false; - } - return x >= 0 && y >= 0 && creator.getHeight() <= container.getHeight() - && creator.getWidth() <= container.getWidth(); - } - - /** - * 判断是否鼠标在组件的三等分区域,如果组件在布局管理器中间,上下左右都可能会三等分 - * - * @param parentComp 鼠标所在区域的组件 - * @param x 坐标x - * @param y 坐标y - * @return 是则返回true - */ - public boolean isTrisectionArea(Component parentComp, int x, int y) { - XCreator creator = (XCreator) parentComp; - trisectAreaDirect = 0; - if (container.getComponentCount() <= 1) { - return false; - } - int maxWidth = parentComp.getWidth(); - int maxHeight = parentComp.getHeight(); - int xL = parentComp.getX(); - int yL = parentComp.getY(); - // 组件宽高的十分之一和默认值取大 - int minRangeWidth = Math.max(maxWidth / BORDER_PROPORTION, DEFAULT_AREA_LENGTH); - int minRangeHeight = Math.max(maxHeight / BORDER_PROPORTION, DEFAULT_AREA_LENGTH); - if (y < yL + minRangeHeight) { - // 在组件上侧三等分 - trisectAreaDirect = COMP_TOP; - } else if (y > yL + maxHeight - minRangeHeight) { - // 在组件下侧三等分 - trisectAreaDirect = COMP_BOTTOM; - } else if (x < xL + minRangeWidth) { - // 在组件左侧三等分 - trisectAreaDirect = COMP_LEFT; - } else if (x > xL + maxWidth - minRangeWidth) { - // 在组件右侧三等分 - trisectAreaDirect = COMP_RIGHT; - } - // tab布局的边界特殊处理,不进行三等分 - if (!creator.getTargetChildrenList().isEmpty()) { - return false; - } - - return !ComparatorUtils.equals(trisectAreaDirect, 0); - } - - //当前绝对布局不可编辑,就当成一个控件,组件添加在周围 - private boolean acceptWidget(int x, int y) { - isFindRelatedComps = false; - //拖入组件判断时,先判断是否为交叉点区域,其次三等分区域,再次平分区域 - Component comp = container.getComponentAt(x, y); - //如果当前处于边缘地带, 那么就把他贴到父容器上 - XLayoutContainer parent = container.findNearestFit(); - container = parent != null ? parent : container; - isAdd2ParentLayout = true; - - int componentHeight = comp.getHeight(); - int componentWidth = comp.getWidth(); - //上半部分高度 - int upHeight = (int) (componentHeight * TOP_HALF) + comp.getY(); - //下半部分高度 - int downHeight = (int) (componentHeight * BOTTOM_HALF) + comp.getY(); - - if (isCrossPointArea(comp, x, y)) { - return canAcceptWhileCrossPoint(comp, x, y); - } - - if (isTrisectionArea(comp, x, y)) { - return canAcceptWhileTrisection(comp, x, y); - } - - boolean horizonValid = componentWidth >= minWidth * 2 + actualVal; - boolean verticalValid = componentHeight >= minHeight * 2 + actualVal; - return y > upHeight && y < downHeight ? horizonValid : verticalValid; - } - - /** - * 组件的ComponentAdapter在添加组件时,如果发现布局管理器不为空,会继而调用该布局管理器的 - * addComp方法来完成组件的具体添加。在该方法内,布局管理器可以提供额外的功能。 - * - * @param creator 被添加的新组件 - * @param x 添加的位置x,该位置是相对于container的 - * @param y 添加的位置y,该位置是相对于container的 - * @return 是否添加成功,成功返回true,否则false - */ - @Override - public boolean addBean(XCreator creator, int x, int y) { - Rectangle rect = ComponentUtils.getRelativeBounds(container); - - int posX = x + rect.x; - int posY = y + rect.y; - if (!accept(creator, x, y)) { - return false; - } - addComp(creator, posX, posY); - ((XWidgetCreator) creator).recalculateChildrenSize(); - return true; - } - - @Override - protected void addComp(XCreator creator, int x, int y) { - if (!isAdd2ParentLayout) { - Rectangle r = ComponentUtils.getRelativeBounds(container); - x = x - r.x; - y = y - r.y; - if (XCreatorUtils.getParentXLayoutContainer(creator) != null) { - - Rectangle creatorRectangle = ComponentUtils.getRelativeBounds(creator); - x = creatorRectangle.x - r.x; - y = creatorRectangle.y - r.y; - } else { - int w = creator.getWidth() / 2; - int h = creator.getHeight() / 2; - x = x - w; - y = y - h; - } - fix(creator, x, y); - - if (creator.hasTitleStyle()) { - addParentCreator(creator); - } else { - container.add(creator, creator.toData().getWidgetName(), 0); - } - XWAbsoluteLayout layout = (XWAbsoluteLayout) container; - layout.updateBoundsWidget(creator); - updateCreatorBackBound(); - LayoutUtils.layoutRootContainer(container); - } else { - fixAbsolute(creator, x, y); - if (creator.shouldScaleCreator() || creator.hasTitleStyle()) { - addParentCreator(creator); - } else { - container.add(creator, creator.toData().getWidgetName(), 0); - } - XWFitLayout layout = (XWFitLayout) container; - // 更新对应的BoundsWidget - layout.updateBoundsWidget(); - updateCreatorBackBound(); - } - } - - private void updateCreatorBackBound() { - for (int i = 0, size = container.getComponentCount(); i < size; i++) { - XCreator creator = (XCreator) container.getComponent(i); - creator.updateChildBound(minHeight); - creator.setBackupBound(creator.getBounds()); - } - } - - private void addParentCreator(XCreator child) { - XLayoutContainer parentPanel = child.initCreatorWrapper(child.getHeight()); - container.add(parentPanel, child.toData().getWidgetName(), 0); - } - - /** - * 新拖入组件时,计算调整其他关联组件位置大小 - * - * @param child 新拖入的组件 - * @param x 鼠标所在x坐标 - * @param y 鼠标所在y坐标 - */ - private void fixAbsolute(XCreator child, int x, int y) { - Component parentComp = container.getComponentAt(x, y); - if (container.getComponentCount() == 0) { - child.setLocation(0, 0); - child.setSize(parentComp.getWidth(), parentComp.getHeight()); - } else if (isCrossPointArea(parentComp, x, y)) { - //交叉区域插入组件时,根据具体位置进行上下或者左右或者相邻三个组件的位置大小插入 - fixCrossPointArea(parentComp, child, x, y); - return; - } else if (isTrisectionArea(parentComp, x, y)) { - // 在边界三等分区域,就不再和组件二等分了 - fixTrisect(parentComp, child, x, y); - return; - } else { - fixHalve(parentComp, child, x, y); - } - } - - /** - * 组件拖拽后调整大小 - * - * @param creator 组件 - */ - @Override - public void fix(XCreator creator) { - WAbsoluteLayout wabs = (WAbsoluteLayout) container.toData(); - fix(creator, creator.getX(), creator.getY()); - wabs.setBounds(creator.toData(), creator.getBounds()); - - XWAbsoluteLayout layout = (XWAbsoluteLayout) container; - layout.updateBoundsWidget(creator); - } - - /** - * 调整组件大小到合适尺寸位置 - * - * @param creator 组件 - * @param x 坐标x - * @param y 坐标y - */ - public void fix(XCreator creator, int x, int y) { - int height = creator.getHeight(); - int width = creator.getWidth(); - if (x < 0) { - x = container.getX(); - } else if (x + creator.getWidth() > container.getWidth()) { - x = container.getWidth() - width; - } - - if (y < 0) { - y = container.getY(); - } else if (y + creator.getHeight() > container.getHeight()) { - y = container.getHeight() - height; - } - - creator.setBounds(x, y, width, height); - } - - @Override - public ConstraintsGroupModel getLayoutConstraints(XCreator creator) { - return new BoundsGroupModel((XWAbsoluteLayout) container, creator); - } - - @Override - public GroupModel getLayoutProperties() { - XWAbsoluteLayout xwAbsoluteLayout = (XWAbsoluteLayout) container; - return new FRAbsoluteLayoutPropertiesGroupModel(xwAbsoluteLayout); - } +package com.fr.design.designer.beans.adapters.layout; + +import com.fr.design.beans.GroupModel; +import com.fr.design.designer.beans.ConstraintsGroupModel; +import com.fr.design.designer.beans.HoverPainter; +import com.fr.design.designer.beans.painters.FRAbsoluteLayoutPainter; +import com.fr.design.designer.creator.*; +import com.fr.design.designer.properties.BoundsGroupModel; +import com.fr.design.designer.properties.FRAbsoluteLayoutPropertiesGroupModel; +import com.fr.design.utils.ComponentUtils; +import com.fr.design.utils.gui.LayoutUtils; +import com.fr.form.ui.container.WAbsoluteLayout; +import com.fr.general.ComparatorUtils; +import com.fr.general.FRLogger; + +import java.awt.*; + +public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { + //是不是添加到父容器上 + private boolean isAdd2ParentLayout = false; + private HoverPainter painter; + + public FRAbsoluteLayoutAdapter(XLayoutContainer container) { + super(container); + painter = new FRAbsoluteLayoutPainter(container); + initMinSize(); + } + + private void initMinSize() { + XWAbsoluteLayout layout = (XWAbsoluteLayout) container; + minWidth = layout.getActualMinWidth(); + minHeight = layout.getActualMinHeight(); + actualVal = layout.getAcualInterval(); + margin = layout.toData().getMargin(); + } + + @Override + public HoverPainter getPainter() { + return painter; + } + + /** + * 是否能在指定位置添加组件 + * @param creator 组件 + * @param x 坐标x + * @param y 坐标y + * @return 能则返回true + */ + //这个地方的逻辑非常复杂, + // 1.当前绝对布局是不可编辑且是最外层,那么其他控件添加在它周围, + // 2.当前绝对布局是不可编辑且不是最外层,那么控件不可添加,(嵌套) + // 3.当前绝对布局可编辑,那么控件添加 + @Override + public boolean accept(XCreator creator, int x, int y) { + Component comp = container.getComponentAt(x, y); + //布局控件要先判断是不是可编辑 + //可以编辑,按原有逻辑判断 + //不可编辑,当成一整个控件处理 + if (comp == null){ + return false; + } + //参数面板内的组件不允许拖往绝对布局中 + if (creator.getParent() != null && ((XCreator)creator.getParent()).acceptType(XWParameterLayout.class)){ + Rectangle rec = creator.getBounds(); + rec.y = creator.getParent().getHeight() - rec.height; + creator.setBounds(rec); + return false; + } + //判断下组件能不能拖入绝对布局 + if (!creator.canEnterIntoAbsolutePane()){ + return false; + } + XLayoutContainer topLayout = XCreatorUtils.getHotspotContainer((XCreator)comp).getTopLayout(); + if(topLayout != null){ + if (topLayout.isEditable()){ + return topLayoutAccept(creator, x, y); + } + //绝对布局嵌套,处于内层,不可编辑,不添加,topLayout只能获取到最外层可编辑的布局 + else if (((XLayoutContainer)topLayout.getParent()).acceptType(XWAbsoluteLayout.class)) { + return false; + } else { + return acceptWidget(x, y); + } + } else { + FRLogger.getLogger().error("top layout is null!"); + } + + return false; + } + + //topLayout假如可以编辑的话就往里面添加组件 + private boolean topLayoutAccept(XCreator creator, int x, int y) { + //允许组件重叠,可以不判断有没有和当前控件重叠 + //先计算当前控件的位置 + int creatorX, creatorY; + if (XCreatorUtils.getParentXLayoutContainer(creator) != null) { + Rectangle creatorRectangle = ComponentUtils.getRelativeBounds(creator); + creatorX = creatorRectangle.x; + creatorY = creatorRectangle.y; + } else { + //这边计算得到的组件其实位置是正确的, + //因为传入的x和y已经加上了宽度或者高度的一半,再减去相同的宽度和高度的一半是没区别的, + // 例如高度为21,那么就是+10-10; + // 高度为20,那么就是+10-10; 没区别 + int w = creator.getWidth() / 2; + int h = creator.getHeight() / 2; + creatorX = x - w; + creatorY = y - h; + } + if (creatorX < 0 || creatorX + creator.getWidth() > container.getWidth()) { + return false; + } + if (creatorY < 0 || creatorY + creator.getHeight() > container.getHeight()){ + return false; + } + return x >= 0 && y >= 0 && creator.getHeight() <= container.getHeight() + && creator.getWidth() <= container.getWidth(); + } + + /** + * 判断是否鼠标在组件的三等分区域,如果组件在布局管理器中间,上下左右都可能会三等分 + * @param parentComp 鼠标所在区域的组件 + * @param x 坐标x + * @param y 坐标y + * @return 是则返回true + */ + public boolean isTrisectionArea(Component parentComp, int x, int y) { + XCreator creator = (XCreator)parentComp; + trisectAreaDirect = 0; + if (container.getComponentCount()<=1) { + return false; + } + int maxWidth = parentComp.getWidth(); + int maxHeight = parentComp.getHeight(); + int xL = parentComp.getX(); + int yL = parentComp.getY(); + // 组件宽高的十分之一和默认值取大 + int minRangeWidth = Math.max(maxWidth/BORDER_PROPORTION, DEFAULT_AREA_LENGTH); + int minRangeHeight = Math.max(maxHeight/BORDER_PROPORTION, DEFAULT_AREA_LENGTH); + if(yyL+maxHeight-minRangeHeight) { + // 在组件下侧三等分 + trisectAreaDirect = COMP_BOTTOM; + } else if (xxL+maxWidth-minRangeWidth) { + // 在组件右侧三等分 + trisectAreaDirect = COMP_RIGHT; + } + // tab布局的边界特殊处理,不进行三等分 + if(!creator.getTargetChildrenList().isEmpty()){ + return false; + } + + return !ComparatorUtils.equals(trisectAreaDirect, 0); + } + + //当前绝对布局不可编辑,就当成一个控件,组件添加在周围 + private boolean acceptWidget(int x, int y) { + isFindRelatedComps = false; + //拖入组件判断时,先判断是否为交叉点区域,其次三等分区域,再次平分区域 + Component comp = container.getComponentAt(x, y); + //如果当前处于边缘地带, 那么就把他贴到父容器上 + XLayoutContainer parent = container.findNearestFit(); + container = parent != null ? parent : container; + isAdd2ParentLayout = true; + + int componentHeight = comp.getHeight(); + int componentWidth = comp.getWidth(); + //上半部分高度 + int upHeight = (int) (componentHeight * TOP_HALF) + comp.getY(); + //下半部分高度 + int downHeight = (int) (componentHeight * BOTTOM_HALF) + comp.getY(); + + if (isCrossPointArea(comp, x, y)) { + return canAcceptWhileCrossPoint(comp, x, y); + } + + if (isTrisectionArea(comp, x, y)) { + return canAcceptWhileTrisection(comp, x, y); + } + + boolean horizonValid = componentWidth >= minWidth * 2 + actualVal; + boolean verticalValid = componentHeight >= minHeight * 2 + actualVal; + return y > upHeight && y < downHeight ? horizonValid : verticalValid; + } + + /** + * 组件的ComponentAdapter在添加组件时,如果发现布局管理器不为空,会继而调用该布局管理器的 + * addComp方法来完成组件的具体添加。在该方法内,布局管理器可以提供额外的功能。 + * + * @param creator 被添加的新组件 + * @param x 添加的位置x,该位置是相对于container的 + * @param y 添加的位置y,该位置是相对于container的 + * @return 是否添加成功,成功返回true,否则false + */ + @Override + public boolean addBean(XCreator creator, int x, int y) { + Rectangle rect = ComponentUtils.getRelativeBounds(container); + + int posX = x + rect.x; + int posY = y + rect.y; + if (!accept(creator, x, y)) { + return false; + } + addComp(creator, posX, posY); + ((XWidgetCreator) creator).recalculateChildrenSize(); + return true; + } + + @Override + protected void addComp(XCreator creator, int x, int y) { + if(!isAdd2ParentLayout) { + Rectangle r = ComponentUtils.getRelativeBounds(container); + x = x - r.x; + y = y - r.y; + if (XCreatorUtils.getParentXLayoutContainer(creator) != null) { + + Rectangle creatorRectangle = ComponentUtils.getRelativeBounds(creator); + x = creatorRectangle.x - r.x; + y = creatorRectangle.y - r.y; + } else { + int w = creator.getWidth() / 2; + int h = creator.getHeight() / 2; + x = x - w; + y = y - h; + } + fix(creator, x, y); + + if (creator.hasTitleStyle()) { + addParentCreator(creator); + } else { + container.add(creator, creator.toData().getWidgetName(),0); + } + XWAbsoluteLayout layout = (XWAbsoluteLayout) container; + layout.updateBoundsWidget(creator); + updateCreatorBackBound(); + LayoutUtils.layoutRootContainer(container); + }else{ + fixAbsolute(creator, x, y); + if (creator.shouldScaleCreator() || creator.hasTitleStyle()) { + addParentCreator(creator); + } else { + container.add(creator, creator.toData().getWidgetName(),0); + } + XWFitLayout layout = (XWFitLayout) container; + // 更新对应的BoundsWidget + layout.updateBoundsWidget(); + updateCreatorBackBound(); + } + } + + private void updateCreatorBackBound() { + for (int i=0,size=container.getComponentCount(); i container.getWidth()) { + x = container.getWidth() - width; + } + + if (y < 0) { + y = container.getY(); + } else if (y + creator.getHeight() > container.getHeight()) { + y = container.getHeight() - height; + } + + creator.setBounds(x, y, width, height); + } + + @Override + public ConstraintsGroupModel getLayoutConstraints(XCreator creator) { + return new BoundsGroupModel((XWAbsoluteLayout)container, creator); + } + + @Override + public GroupModel getLayoutProperties() { + XWAbsoluteLayout xwAbsoluteLayout = (XWAbsoluteLayout) container; + return new FRAbsoluteLayoutPropertiesGroupModel(xwAbsoluteLayout); + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java index 03962df487..3a030f7f2b 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java @@ -16,19 +16,17 @@ import com.fr.design.designer.creator.cardlayout.XWCardMainBorderLayout; import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; import com.fr.design.designer.properties.FRFitLayoutConstraints; import com.fr.design.designer.properties.FRFitLayoutPropertiesGroupModel; -import com.fr.design.file.HistoryTemplateListPane; -import com.fr.design.mainframe.JForm; import com.fr.design.utils.ComponentUtils; import com.fr.form.ui.LayoutBorderStyle; +import com.fr.form.ui.container.WAbsoluteLayout; import com.fr.form.ui.container.WLayout; import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; import com.fr.general.ComparatorUtils; -import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; -import java.awt.*; -import java.util.ArrayList; -import java.util.List; - +import java.awt.*; +import java.util.ArrayList; +import java.util.List; + /** * 自适应布局的容器适配器 * @@ -50,7 +48,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { public void setEdit(boolean edit) { isEdit = edit; } - + /** * 构造函数 * @@ -133,7 +131,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { isFindRelatedComps = false; //拖入组件判断时,先判断是否为交叉点区域,其次三等分区域,再次平分区域 Component comp = container.getComponentAt(x, y); - if (comp == null || checkInterval(comp)) { + if (comp == null || checkInterval(comp)) { return false; } //如果当前处于边缘地带, 那么就把他贴到父容器上 @@ -269,13 +267,13 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { } - protected Rectangle getLayoutBound(XWCardMainBorderLayout mainLayout) { + protected Rectangle getLayoutBound(XWCardMainBorderLayout mainLayout) { return mainLayout.getBounds(); } private Rectangle adjustBackupBound(Rectangle backupBound, XWCardMainBorderLayout mainLayout) { - // zhouping: REPORT-2334 表单tab布局中图表放大缩小会明显 - // 这边不需要单独处理参数面板高度了,下面的方法中获取的是XWCardMainBorderLayout相对坐标 + // zhouping: REPORT-2334 表单tab布局中图表放大缩小会明显 + // 这边不需要单独处理参数面板高度了,下面的方法中获取的是XWCardMainBorderLayout相对坐标 Rectangle rec = getLayoutBound(mainLayout); // XWTabLayout里面的横纵坐标收到外层XWCardMainBorderLayout的横纵坐标影响 // 减掉之后可以按照它原来的逻辑执行 @@ -341,13 +339,13 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { * 拖拽控件边框后,根据控件的大小尺寸,进行相关组件的调整 * * @param backupBound 边界备份 - * @param bounds 组件边界 - * @param xCreator 组件 - * @param row 选中的行 - * @param difference 偏移量 + * @param bounds 组件边界 + * @param xCreator 组件 + * @param row 选中的行 + * @param difference 偏移量 */ public void calculateBounds(Rectangle backupBound, Rectangle bounds, XCreator xCreator, int row, int difference) { - Rectangle rc = new Rectangle(0, 0, 0, 0); + Rectangle rc = new Rectangle(0, 0, 0, 0); XLayoutContainer parent = XCreatorUtils.getParentXLayoutContainer(xCreator); if (parent != null) { Rectangle rec = ComponentUtils.getRelativeBounds(parent); @@ -358,17 +356,17 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { //处理左右延伸 switch (row) { case 0: - if (backupBound.width + backupBound.x == container.getWidth() - margin.getRight() + rc.x) { + if (backupBound.width + backupBound.x == container.getWidth() - margin.getRight() + rc.x) { x += difference; } break; case 1: - if (backupBound.y + backupBound.height == container.getHeight() - margin.getBottom() + rc.y) { + if (backupBound.y + backupBound.height == container.getHeight() - margin.getBottom() + rc.y) { y += difference; } break; } - bounds.setLocation(x, y); + bounds.setLocation(x, y); xCreator.setBackupBound(backupBound); xCreator.setBounds(bounds); this.fix(xCreator); @@ -412,7 +410,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { // 根据需要依附的位置调整拖拽的坐标值 private int adjustCoordinateByDependingLine(int coordinate, int[] coordinates) { - if (!isEdit) { + if (!isEdit) { for (int i = 0; i < coordinates.length; i++) { if (coordinate == coordinates[i]) { continue; @@ -428,7 +426,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { // 根据需要依附的位置调整拖拽的距离 private int adjustDiffByDependingLine(int coordinate, int[] coordinates, int diff) { - if (!isEdit) { + if (!isEdit) { for (int i = 0; i < coordinates.length; i++) { if (coordinate + diff > coordinates[i] - DEPENDING_SCOPE && coordinate + diff < coordinates[i] + DEPENDING_SCOPE) { diff = coordinates[i] - coordinate; @@ -546,8 +544,8 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { difference = Math.max(difference, minWidth - getMinWidth(leftComps)); } //重新计算左右两侧组件size、point - if (calculateLefttRelatComponent(difference)) { - calculateRightRelatComponent(objx + difference, -difference); + if (calculateLefttRelatComponent(difference)) { + calculateRightRelatComponent(objx + difference, -difference); } } @@ -662,8 +660,8 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { difference = Math.max(difference, minHeight - getMinHeight(upComps)); } //重新计算上下两侧组件size、point - if (calculateUpRelatComponent(difference)) { - calculateDownRelatComponent(objY + difference, -difference); + if (calculateUpRelatComponent(difference)) { + calculateDownRelatComponent(objY + difference, -difference); } } @@ -744,13 +742,13 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { int height = creatorHeight; calculateRelatedComponent(x, y, width, height); if (!rightComps.isEmpty() && getAllHeight(rightComps) == height) { - calculateRightRelatComponent(x, width + actualVal); + calculateRightRelatComponent(x, width + actualVal); } else if (!leftComps.isEmpty() && getAllHeight(leftComps) == height) { - calculateLefttRelatComponent(width + actualVal); + calculateLefttRelatComponent(width + actualVal); } else if (!downComps.isEmpty() && getAllWidth(downComps) == width) { - calculateDownRelatComponent(y, height + actualVal); + calculateDownRelatComponent(y, height + actualVal); } else if (!upComps.isEmpty() && getAllWidth(upComps) == width) { - calculateUpRelatComponent(height + actualVal); + calculateUpRelatComponent(height + actualVal); } else { // 由于布局三等分的存在,可能会出现删除组件时,找不到关联的组件填充,此时特殊处理 calculateNoRelatedComponent(x, y, width, height); @@ -1013,7 +1011,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { setAdjustedSize(tabLayout, offset, isHor); for (int m = 0; m < tabLayout.getComponentCount(); m++) { XCreator childCreator = tabLayout.getXCreator(m); - BoundsWidget wgt = (BoundsWidget) tabLayout.toData().getBoundsWidget(childCreator.toData()); + WAbsoluteLayout.BoundsWidget wgt = (WAbsoluteLayout.BoundsWidget) tabLayout.toData().getBoundsWidget(childCreator.toData()); wgt.setBounds(tabLayout.getComponent(m).getBounds()); } adjustCreatorsSize(percent, tabLayout, isHor); @@ -1056,7 +1054,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { * @param objX 调整后的坐标x * @param objWidth 调整后的宽度 */ - protected void calculateRightRelatComponent(int objX, int objWidth) { + protected void calculateRightRelatComponent(int objX, int objWidth) { int count = rightComps.size(); for (int i = 0; i < count; i++) { XCreator creator = (XCreator) rightComps.get(i); @@ -1096,7 +1094,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { /** * 删除或拉伸控件左边框时 调整左侧的组件位置大小; */ - protected boolean calculateLefttRelatComponent(int objWidth) { + protected boolean calculateLefttRelatComponent(int objWidth) { if (isBeyondAdjustWidthScope(objWidth)) { return false; } @@ -1114,7 +1112,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { /** * 删除或拉伸下边框 调整下方的组件位置大小 */ - protected void calculateDownRelatComponent(int objY, int objHeight) { + protected void calculateDownRelatComponent(int objY, int objHeight) { int count = downComps.size(); for (int i = 0; i < count; i++) { XCreator creator = (XCreator) downComps.get(i); @@ -1154,7 +1152,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { /** * 删除或拉伸上边框 调整上方的组件位置大小 */ - protected boolean calculateUpRelatComponent(int objHeight) { + protected boolean calculateUpRelatComponent(int objHeight) { if (isBeyondAdjustHeightScope(objHeight)) { return false; } diff --git a/designer_form/src/com/fr/design/designer/beans/location/AccessDirection.java b/designer_form/src/com/fr/design/designer/beans/location/AccessDirection.java index c39dfc4dba..3538d2fd9f 100644 --- a/designer_form/src/com/fr/design/designer/beans/location/AccessDirection.java +++ b/designer_form/src/com/fr/design/designer/beans/location/AccessDirection.java @@ -11,6 +11,7 @@ import com.fr.design.mainframe.FormSelection; import com.fr.design.utils.ComponentUtils; import com.fr.form.ui.container.WAbsoluteLayout; import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; +import com.fr.form.ui.container.WParameterLayout; import java.awt.*; @@ -24,7 +25,7 @@ public abstract class AccessDirection implements Direction { private int ymin; private int xmin; - abstract int getCursor(); + abstract int getCursor(); protected abstract Rectangle getDraggedBounds(int dx, int dy, Rectangle currentBounds, FormDesigner designer, Rectangle oldBounds); @@ -51,14 +52,14 @@ public abstract class AccessDirection implements Direction { x = designer.getRootComponent().getWidth(); } //参数面板可以无下限拉长 - if (y < 0) { - y = 0; - } else if (y > designer.getRootComponent().getHeight() + designer.getParaHeight() && designer.getSelectionModel().hasSelectionComponent() + if (y < 0) { + y = 0; + } else if (y > designer.getRootComponent().getHeight() + designer.getParaHeight() && designer.getSelectionModel().hasSelectionComponent() && !designer.getSelectionModel().getSelection().getSelectedCreator().acceptType(XWParameterLayout.class)) { - y = designer.getRootComponent().getHeight() + designer.getParaHeight(); - } - return new Point(x, y); - } + y = designer.getRootComponent().getHeight() + designer.getParaHeight(); + } + return new Point(x, y); + } protected void sorptionPoint(Point point, Rectangle currentBounds, FormDesigner designer) { boolean findInX = currentBounds.getWidth() <= MoveUtils.SORPTION_UNIT; @@ -95,10 +96,10 @@ public abstract class AccessDirection implements Direction { findInY = true; } - } - if (findInX && findInY) { - break; - } + } + if (findInX && findInY) { + break; + } } setDesignerStateModelProperties(designer, findInX, findInY, currentBounds, point); @@ -124,7 +125,7 @@ public abstract class AccessDirection implements Direction { } - private WAbsoluteLayout getLayout(final FormDesigner designer) { + private WAbsoluteLayout getLayout(final FormDesigner designer){ XLayoutContainer formLayoutContainer = (XLayoutContainer) XCreatorUtils.createXCreator( designer.getTarget().getContainer()); WAbsoluteLayout layout; @@ -156,52 +157,50 @@ public abstract class AccessDirection implements Direction { return; } //设定控件最小高度21,因每次拖曳至少移动1,防止控件高度等于21时,拖曳导致rec.y的变化使得控件不停的向上或向下移动。 - if (rec.height == MINHEIGHT) { + if(rec.height == MINHEIGHT){ ymin = rec.y; } - if (rec.height == MINHEIGHT - 1) { + if(rec.height == MINHEIGHT - 1){ ymin = ymin == rec.y ? rec.y : rec.y - 1; } - if (rec.height < MINHEIGHT) { + if(rec.height < MINHEIGHT){ rec.height = MINHEIGHT; rec.y = ymin; } // 增加下宽度也设最小为21 if (rec.width == MINWIDTH) { - xmin = rec.x; + xmin = rec.x; } - if (rec.width == MINWIDTH - 1) { - xmin = xmin == rec.x ? rec.x : rec.x - 1; + if(rec.width == MINWIDTH - 1){ + xmin = xmin == rec.x ? rec.x : rec.x - 1; } if (rec.width < MINWIDTH) { - rec.width = MINWIDTH; - rec.x = xmin; + rec.width = MINWIDTH; + rec.x = xmin; } } - /** - * 更新鼠标指针形状 - * - * @param formEditor 设计界面组件 - */ - public void updateCursor(FormDesigner formEditor) { - - // 调用位置枚举的多态方法getCursor获取鼠标形状 - int type = getCursor(); - - if (type != formEditor.getCursor().getType()) { - // 设置当前形状 - formEditor.setCursor(Cursor.getPredefinedCursor(type)); - } - } - - /** - * 生成组件备用的bound - * - * @param formEditor 设计界面组件 - */ - public void backupBounds(FormDesigner formEditor) { - formEditor.getSelectionModel().getSelection().backupBounds(); - } + /** + * 更新鼠标指针形状 + * @param formEditor 设计界面组件 + */ + public void updateCursor(FormDesigner formEditor) { + + // 调用位置枚举的多态方法getCursor获取鼠标形状 + int type = getCursor(); + + if (type != formEditor.getCursor().getType()) { + // 设置当前形状 + formEditor.setCursor(Cursor.getPredefinedCursor(type)); + } + } + + /** + * 生成组件备用的bound + * @param formEditor 设计界面组件 + */ + public void backupBounds(FormDesigner formEditor) { + formEditor.getSelectionModel().getSelection().backupBounds(); + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/beans/models/AddingModel.java b/designer_form/src/com/fr/design/designer/beans/models/AddingModel.java index 54033694d9..9d308b9d4b 100644 --- a/designer_form/src/com/fr/design/designer/beans/models/AddingModel.java +++ b/designer_form/src/com/fr/design/designer/beans/models/AddingModel.java @@ -1,141 +1,141 @@ -package com.fr.design.designer.beans.models; - -import java.awt.Rectangle; - -import com.fr.design.designer.creator.XWAbsoluteLayout; -import com.fr.design.mainframe.FormDesigner; -import com.fr.design.designer.beans.AdapterBus; -import com.fr.design.designer.beans.ComponentAdapter; -import com.fr.design.designer.beans.adapters.component.CompositeComponentAdapter; -import com.fr.design.designer.creator.XCreator; -import com.fr.design.designer.creator.XLayoutContainer; -import com.fr.design.designer.creator.XWParameterLayout; -import com.fr.design.utils.ComponentUtils; -import com.fr.general.ComparatorUtils; - -/** - * 添加状态下的model - */ -public class AddingModel { - - // 当前要添加的组件 - private XCreator creator; - // 记录当前鼠标的位置信息 - private int currentX; - private int currentY; - private boolean added; - - public AddingModel(FormDesigner designer, XCreator xCreator) { - String creatorName = getXCreatorName(designer, xCreator); - this.creator = xCreator; - instantiateCreator(designer, creatorName); - // 初始的时候隐藏该组件的图标 - currentY = -this.creator.getWidth(); - currentX = -this.creator.getHeight(); - } - - /** - * 待说明 - * - * @param designer 设计器 - * @param creatorName 组件名 - */ - public void instantiateCreator(FormDesigner designer, String creatorName) { - creator.toData().setWidgetName(creatorName); - ComponentAdapter adapter = new CompositeComponentAdapter(designer, creator); - adapter.initialize(); - creator.addNotify(); - creator.putClientProperty(AdapterBus.CLIENT_PROPERTIES, adapter); - } - - public AddingModel(XCreator xCreator, int x, int y) { - this.creator = xCreator; - this.creator.backupCurrentSize(); - this.creator.backupParent(); - this.creator.setSize(xCreator.initEditorSize()); - currentX = x - (xCreator.getWidth() / 2); - currentY = y - (xCreator.getHeight() / 2); - } - - /** - * 隐藏当前组件的图标 - */ - public void reset() { - currentX = -this.creator.getWidth(); - currentY = -this.creator.getHeight(); - } - - public String getXCreatorName(FormDesigner designer, XCreator x) { - String def = x.createDefaultName(); - if (x.acceptType(XWParameterLayout.class)) { - return def; - } - int i = 0; - while (designer.getTarget().isNameExist(def + i)) { - i++; - } - return def + i; - } - - public int getCurrentX() { - return currentX; - } - - public int getCurrentY() { - return currentY; - } - - - /** - * 移动组件图标到鼠标事件发生的位置 - * - * @param x 坐标 - * @param y 坐标 - */ - public void moveTo(int x, int y) { - currentX = x - (this.creator.getWidth() / 2); - currentY = y - (this.creator.getHeight() / 2); - } - - public XCreator getXCreator() { - return this.creator; - } - - /** - * 当前组件是否已经添加到某个容器中 - * - * @return 是返回true - */ - public boolean isCreatorAdded() { - return added; - } - - /** - * 加入容器 - * - * @param designer 设计器 - * @param container 容器 - * @param x 坐标 - * @param y 坐标 - * @return 成功返回true - */ - public boolean add2Container(FormDesigner designer, XLayoutContainer container, int x, int y) { - //考虑不同布局嵌套的情况,获取顶层容器 - XLayoutContainer xLayoutContainer = container.getTopLayout(); - if (xLayoutContainer != null && xLayoutContainer.acceptType(XWAbsoluteLayout.class)) { - container = xLayoutContainer; - } - - Rectangle rect = ComponentUtils.getRelativeBounds(container); - if (!ComparatorUtils.equals(container.getOuterLayout(), container.getBackupParent())) { - added = container.getLayoutAdapter().addBean(creator, - x + designer.getArea().getHorizontalValue(), - y + designer.getArea().getVerticalValue()); - return added; - } - added = container.getLayoutAdapter().addBean(creator, - x + designer.getArea().getHorizontalValue() - rect.x, - y + designer.getArea().getVerticalValue() - rect.y); - return added; - } +package com.fr.design.designer.beans.models; + +import java.awt.Rectangle; + +import com.fr.design.designer.creator.XWAbsoluteLayout; +import com.fr.design.mainframe.FormDesigner; +import com.fr.design.designer.beans.AdapterBus; +import com.fr.design.designer.beans.ComponentAdapter; +import com.fr.design.designer.beans.adapters.component.CompositeComponentAdapter; +import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XLayoutContainer; +import com.fr.design.designer.creator.XWParameterLayout; +import com.fr.design.utils.ComponentUtils; +import com.fr.general.ComparatorUtils; + +/** + * 添加状态下的model + */ +public class AddingModel { + + // 当前要添加的组件 + private XCreator creator; + // 记录当前鼠标的位置信息 + private int currentX; + private int currentY; + private boolean added; + + public AddingModel(FormDesigner designer, XCreator xCreator) { + String creatorName = getXCreatorName(designer, xCreator); + this.creator = xCreator; + instantiateCreator(designer, creatorName); + // 初始的时候隐藏该组件的图标 + currentY = -this.creator.getWidth(); + currentX = -this.creator.getHeight(); + } + + /** + * 待说明 + * + * @param designer 设计器 + * @param creatorName 组件名 + */ + public void instantiateCreator(FormDesigner designer, String creatorName) { + creator.toData().setWidgetName(creatorName); + ComponentAdapter adapter = new CompositeComponentAdapter(designer, creator); + adapter.initialize(); + creator.addNotify(); + creator.putClientProperty(AdapterBus.CLIENT_PROPERTIES, adapter); + } + + public AddingModel(XCreator xCreator, int x, int y) { + this.creator = xCreator; + this.creator.backupCurrentSize(); + this.creator.backupParent(); + this.creator.setSize(xCreator.initEditorSize()); + currentX = x - (xCreator.getWidth() / 2); + currentY = y - (xCreator.getHeight() / 2); + } + + /** + * 隐藏当前组件的图标 + */ + public void reset() { + currentX = -this.creator.getWidth(); + currentY = -this.creator.getHeight(); + } + + public String getXCreatorName(FormDesigner designer, XCreator x) { + String def = x.createDefaultName(); + if (x.acceptType(XWParameterLayout.class)) { + return def; + } + int i = 0; + while (designer.getTarget().isNameExist(def + i)) { + i++; + } + return def + i; + } + + public int getCurrentX() { + return currentX; + } + + public int getCurrentY() { + return currentY; + } + + + /** + * 移动组件图标到鼠标事件发生的位置 + * + * @param x 坐标 + * @param y 坐标 + */ + public void moveTo(int x, int y) { + currentX = x - (this.creator.getWidth() / 2); + currentY = y - (this.creator.getHeight() / 2); + } + + public XCreator getXCreator() { + return this.creator; + } + + /** + * 当前组件是否已经添加到某个容器中 + * + * @return 是返回true + */ + public boolean isCreatorAdded() { + return added; + } + + /** + * 加入容器 + * + * @param designer 设计器 + * @param container 容器 + * @param x 坐标 + * @param y 坐标 + * @return 成功返回true + */ + public boolean add2Container(FormDesigner designer, XLayoutContainer container, int x, int y) { + //考虑不同布局嵌套的情况,获取顶层容器 + XLayoutContainer xLayoutContainer = container.getTopLayout(); + if (xLayoutContainer != null && xLayoutContainer.acceptType(XWAbsoluteLayout.class)) { + container = xLayoutContainer; + } + + Rectangle rect = ComponentUtils.getRelativeBounds(container); + if (!ComparatorUtils.equals(container.getOuterLayout(), container.getBackupParent())) { + added = container.getLayoutAdapter().addBean(creator, + x + designer.getArea().getHorizontalValue(), + y + designer.getArea().getVerticalValue()); + return added; + } + added = container.getLayoutAdapter().addBean(creator, + x + designer.getArea().getHorizontalValue() - rect.x, + y + designer.getArea().getVerticalValue() - rect.y); + return added; + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/beans/models/StateModel.java b/designer_form/src/com/fr/design/designer/beans/models/StateModel.java index f3aeb8f901..ff3fcbedcd 100644 --- a/designer_form/src/com/fr/design/designer/beans/models/StateModel.java +++ b/designer_form/src/com/fr/design/designer/beans/models/StateModel.java @@ -1,476 +1,476 @@ -package com.fr.design.designer.beans.models; - -import com.fr.design.beans.location.Absorptionline; -import com.fr.design.designer.beans.AdapterBus; -import com.fr.design.designer.beans.HoverPainter; -import com.fr.design.designer.beans.LayoutAdapter; -import com.fr.design.designer.beans.events.DesignerEvent; -import com.fr.design.designer.beans.location.Direction; -import com.fr.design.designer.beans.location.Location; -import com.fr.design.designer.creator.*; -import com.fr.design.mainframe.FormDesigner; -import com.fr.design.mainframe.FormSelectionUtils; -import com.fr.design.utils.ComponentUtils; - -import java.awt.*; -import java.awt.event.MouseEvent; -import java.util.ArrayList; - -/** - * 普通模式下的状态model - */ -public class StateModel { - // 对应的selection model - - private SelectionModel selectionModel; - // 当前鼠标进入拖拽区域的位置类型 - private Direction driection; - - // 当前拖拽的起始位置 - private int currentX; - private int currentY; - - //拖拽组件原始位置大小备份 - private Rectangle selectedPositionBackup; - - private Point startPoint = new Point(); - private Point currentPoint = new Point(); - - private Absorptionline lineInX; - private Absorptionline lineInY; - //等距线 - private Absorptionline lineEquidistant; - - // 当前是否处于拖拽选择状态 - private boolean selecting; - private boolean dragging; - - private boolean addable; - - private FormDesigner designer; - - public StateModel(FormDesigner designer) { - this.designer = designer; - selectionModel = designer.getSelectionModel(); - } - - /** - * 返回direction - * - * @return direction方向 - */ - public Direction getDirection() { - return driection; - } - - /** - * 是否有组件正被选中 - * - * @return true 如果至少一个组件被选中 - */ - public boolean isSelecting() { - return selecting; - } - - /** - * 是否能拖拽 - * - * @return 非outer且选中为空 - */ - public boolean dragable() { - return ((driection != Location.outer) && !selecting); - } - - /** - * 拖拽中是否可以转换为添加模式: - * 如果拖拽组件只有一个,鼠标当前所在位置的最底层表单容器与这个组件的容器不同; - * 如果拖拽组件为多个,鼠标当前所在位置的最底层表单容器除了要求要跟这些组件的容器不同外,还必须是绝对定位布局 - */ - private void checkAddable(MouseEvent e) { - addable = false; - designer.setPainter(null); - - if (driection != Location.inner) { - return; - } - - XCreator comp = designer.getComponentAt(e.getX(), e.getY(), selectionModel.getSelection().getSelectedCreators()); - XLayoutContainer container = XCreatorUtils.getHotspotContainer(comp); - XCreator creator = selectionModel.getSelection().getSelectedCreator(); - Component creatorContainer = XCreatorUtils.getParentXLayoutContainer(creator); - if (creatorContainer != null && creatorContainer != container - && (selectionModel.getSelection().size() == 1 || container instanceof XWAbsoluteLayout)) { - HoverPainter painter = AdapterBus.getContainerPainter(designer, container); - designer.setPainter(painter); - if (painter != null) { - Rectangle rect = ComponentUtils.getRelativeBounds(container); - rect.x -= designer.getArea().getHorizontalValue(); - rect.y -= designer.getArea().getVerticalValue(); - painter.setRenderingBounds(rect); - painter.setHotspot(new Point(e.getX(), e.getY())); - painter.setCreator(creator); - } - addable = true; - } - } - - /** - * @param container 容器 - * @param mouseX 鼠标释放位置X - * @param mouseY 鼠标释放位置Y - * @return 是否成功 - */ - private boolean addBean(XLayoutContainer container, int mouseX, int mouseY) { - LayoutAdapter adapter = container.getLayoutAdapter(); - Rectangle rectangleContainer = ComponentUtils.getRelativeBounds(container); - if (selectionModel.getSelection().size() == 1) { - return adapter.addBean(selectionModel.getSelection().getSelectedCreator(), - mouseX + designer.getArea().getHorizontalValue() - rectangleContainer.x, - mouseY + designer.getArea().getVerticalValue() - rectangleContainer.y); - } - for (XCreator creator : selectionModel.getSelection().getSelectedCreators()) { - adapter.addBean(creator, - mouseX + designer.getArea().getHorizontalValue() - rectangleContainer.x, - mouseY + designer.getArea().getVerticalValue() - rectangleContainer.y); - } - return true; - } - - /** - * @param mouseReleasedX 鼠标释放位置X - * @param mouseReleasedY 鼠标释放位置Y - */ - private void adding(int mouseReleasedX, int mouseReleasedY) { - // 当前鼠标所在的组件 - XCreator hoveredComponent = designer.getComponentAt(mouseReleasedX, mouseReleasedY, selectionModel.getSelection().getSelectedCreators()); - - // 获取该组件所在的焦点容器 - XLayoutContainer container = XCreatorUtils.getHotspotContainer(hoveredComponent); - - boolean success = false; - - if (container != null) { - // 如果是容器,则调用其acceptComponent接受组件 - success = addBean(container, mouseReleasedX, mouseReleasedY); - } - - if (success) { - FormSelectionUtils.rebuildSelection(designer); - designer.getEditListenerTable().fireCreatorModified( - selectionModel.getSelection().getSelectedCreator(), DesignerEvent.CREATOR_ADDED); - } else { - selectionModel.getSelection().setSelectionBounds(selectedPositionBackup, designer); - Toolkit.getDefaultToolkit().beep(); - } - // 取消提示 - designer.setPainter(null); - } - - /** - * 是否拖拽 - * - * @return dragging状态 - */ - public boolean isDragging() { - return dragging; - } - - /** - * 是否可以开始画线 - * - * @return startPoint不为空返回true - */ - public boolean prepareForDrawLining() { - return startPoint != null; - } - - /** - * 设置开始位置 - * - * @param p point位置 - */ - public void setStartPoint(Point p) { - this.startPoint = p; - } - - /** - * 返回开始位置 - * - * @return 点位置 - */ - public Point getStartPoint() { - return startPoint; - } - - /** - * 返回当前点位置 - * - * @return 点位置 - */ - public Point getEndPoint() { - return currentPoint; - } - - /** - * 当前选中组件 - * - * @param e 鼠标事件 - */ - public void startSelecting(MouseEvent e) { - selecting = true; - selectionModel.setHotspotBounds(new Rectangle()); - currentX = getMouseXY(e).x; - currentY = getMouseXY(e).y; - } - - /** - * 当前鼠标的xy - * - * @param e 鼠标事件 - */ - public void startResizing(MouseEvent e) { - if (!selectionModel.getSelection().isEmpty()) { - driection.backupBounds(designer); - } - currentX = getMouseXY(e).x; - currentY = getMouseXY(e).y; - } - - /** - * 起始点开始DrawLine - * - * @param p 点位置 - */ - public void startDrawLine(Point p) { - this.startPoint = p; - if (p != null) { - try { - designer.setCursor(XConnector.connectorCursor); - } catch (Exception e) { - } - } else { - designer.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - } - } - - /** - * 鼠标释放时所在的区域及圈中的组件 - * - * @param e 鼠标事件 - */ - public void selectCreators(MouseEvent e) { - int x = getMouseXY(e).x; - int y = getMouseXY(e).y; - - Rectangle bounds = createCurrentBounds(x, y); - - if ((x != currentX) || (y != currentY)) { - selectionModel.setSelectedCreators(getHotspotCreators(bounds, designer.getRootComponent())); - } - selectionModel.setHotspotBounds(null); - } - - /** - * 画所在区域线 - * - * @param e 鼠标事件 - */ - public void drawLine(MouseEvent e) { - designer.getDrawLineHelper().setDrawLine(true); - Point p = designer.getDrawLineHelper().getNearWidgetPoint(e); - if (p != null) { - currentPoint = p; - } else { - currentPoint.x = e.getX() + designer.getArea().getHorizontalValue(); - currentPoint.y = e.getY() + designer.getArea().getVerticalValue(); - } - } - - private Rectangle createCurrentBounds(int x, int y) { - Rectangle bounds = new Rectangle(); - - bounds.x = Math.min(x, currentX); - bounds.y = Math.min(y, currentY); - bounds.width = Math.max(x, currentX) - bounds.x; - bounds.height = Math.max(y, currentY) - bounds.y; - - return bounds; - } - - private ArrayList getHotspotCreators(Rectangle selection, XCreator root) { - ArrayList creators = new ArrayList<>(); - - if (!root.isVisible() && !designer.isRoot(root)) { - return creators; - } - - if (root instanceof XLayoutContainer) { - XLayoutContainer container = (XLayoutContainer) root; - int count = container.getXCreatorCount(); - Rectangle clipped = new Rectangle(selection); - - for (int i = count - 1; i >= 0; i--) { - XCreator child = container.getXCreator(i); - - if (selection.contains(child.getBounds())) { - creators.add(child); - } else { - clipped.x = selection.x - child.getX(); - clipped.y = selection.y - child.getY(); - creators.addAll(getHotspotCreators(clipped, child)); - } - } - } - - return creators; - } - - - /** - * 重置model - */ - public void resetModel() { - dragging = false; - selecting = false; - } - - /** - * 重置 - */ - public void reset() { - driection = Location.outer; - dragging = false; - selecting = false; - } - - /** - * 取消拖拽 - */ - public void draggingCancel() { - designer.repaint(); - reset(); - } - - /** - * 设置可拉伸方向 - * - * @param dir 拉伸方向 - */ - public void setDirection(Direction dir) { - if (driection != dir) { - this.driection = dir; - driection.updateCursor(designer); - } - } - - /** - * x吸附线赋值 - * - * @param line 线 - */ - public void setXAbsorptionline(Absorptionline line) { - this.lineInX = line; - } - - /** - * y吸附线赋值 - * - * @param line 线 - */ - public void setYAbsorptionline(Absorptionline line) { - this.lineInY = line; - } - - /** - * 等距线赋值 - * - * @param line 线 - */ - public void setEquidistantLine(Absorptionline line) { - this.lineEquidistant = line; - } - - /** - * 画吸附线 - * - * @param g Graphics类 - */ - public void paintAbsorptionline(Graphics g) { - if (lineInX != null) { - lineInX.paint(g, designer.getArea()); - } - if (lineInY != null) { - lineInY.paint(g, designer.getArea()); - } - if (lineEquidistant != null) { - lineEquidistant.paint(g, designer.getArea()); - } - } - - /** - * 拖拽 - * - * @param e 鼠标事件 - */ - public void dragging(MouseEvent e) { - //进入dragging状态时备份组件大小和位置 - if (!dragging) { - selectedPositionBackup = selectionModel.getSelection().getRelativeBounds(); - } - checkAddable(e); - setDependLinePainter(e); - driection.drag(getMouseXY(e).x - currentX, getMouseXY(e).y - currentY, designer); - this.dragging = true; - } - - // 拖拽时画依附线用到的painter - private void setDependLinePainter(MouseEvent e) { - XCreator comp = designer.getComponentAt(e.getX(), e.getY(), selectionModel.getSelection().getSelectedCreators()); - XLayoutContainer container = XCreatorUtils.getHotspotContainer(comp); - XCreator creator = selectionModel.getSelection().getSelectedCreator(); - HoverPainter painter = AdapterBus.getContainerPainter(designer, container); - designer.setPainter(painter); - if (painter != null) { - painter.setHotspot(new Point(e.getX(), e.getY())); - painter.setCreator(creator); - } - } - - /** - * 释放捕获 - * - * @param e 鼠标事件 - */ - public void releaseDragging(MouseEvent e) { - this.dragging = false; - if (addable) { - adding(e.getX(), e.getY()); - } else if (!selectionModel.getSelection().isEmpty()) { - selectionModel.releaseDragging(); - } - designer.repaint(); - } - - /** - * 改变选择区域 - * - * @param e 鼠标事件 - */ - public void changeSelection(MouseEvent e) { - Rectangle bounds = createCurrentBounds(getMouseXY(e).x, getMouseXY(e).y); - selectionModel.setHotspotBounds(bounds); - } - - /** - * 返回鼠标所在的x、y 考虑滚动条的值 - * - * @param e 鼠标事件 - * @return xy值 - */ - public Point getMouseXY(MouseEvent e) { - Point p1 = new Point(e.getX() + designer.getArea().getHorizontalValue(), e.getY() - + designer.getArea().getVerticalValue()); - return p1; - } - +package com.fr.design.designer.beans.models; + +import com.fr.design.beans.location.Absorptionline; +import com.fr.design.designer.beans.AdapterBus; +import com.fr.design.designer.beans.HoverPainter; +import com.fr.design.designer.beans.LayoutAdapter; +import com.fr.design.designer.beans.events.DesignerEvent; +import com.fr.design.designer.beans.location.Direction; +import com.fr.design.designer.beans.location.Location; +import com.fr.design.designer.creator.*; +import com.fr.design.mainframe.FormDesigner; +import com.fr.design.mainframe.FormSelectionUtils; +import com.fr.design.utils.ComponentUtils; + +import java.awt.*; +import java.awt.event.MouseEvent; +import java.util.ArrayList; + +/** + * 普通模式下的状态model + */ +public class StateModel { + // 对应的selection model + + private SelectionModel selectionModel; + // 当前鼠标进入拖拽区域的位置类型 + private Direction driection; + + // 当前拖拽的起始位置 + private int currentX; + private int currentY; + + //拖拽组件原始位置大小备份 + private Rectangle selectedPositionBackup; + + private Point startPoint = new Point(); + private Point currentPoint = new Point(); + + private Absorptionline lineInX; + private Absorptionline lineInY; + //等距线 + private Absorptionline lineEquidistant; + + // 当前是否处于拖拽选择状态 + private boolean selecting; + private boolean dragging; + + private boolean addable; + + private FormDesigner designer; + + public StateModel(FormDesigner designer) { + this.designer = designer; + selectionModel = designer.getSelectionModel(); + } + + /** + * 返回direction + * + * @return direction方向 + */ + public Direction getDirection() { + return driection; + } + + /** + * 是否有组件正被选中 + * + * @return true 如果至少一个组件被选中 + */ + public boolean isSelecting() { + return selecting; + } + + /** + * 是否能拖拽 + * + * @return 非outer且选中为空 + */ + public boolean dragable() { + return ((driection != Location.outer) && !selecting); + } + + /** + * 拖拽中是否可以转换为添加模式: + * 如果拖拽组件只有一个,鼠标当前所在位置的最底层表单容器与这个组件的容器不同; + * 如果拖拽组件为多个,鼠标当前所在位置的最底层表单容器除了要求要跟这些组件的容器不同外,还必须是绝对定位布局 + */ + private void checkAddable(MouseEvent e) { + addable = false; + designer.setPainter(null); + + if (driection != Location.inner) { + return; + } + + XCreator comp = designer.getComponentAt(e.getX(), e.getY(), selectionModel.getSelection().getSelectedCreators()); + XLayoutContainer container = XCreatorUtils.getHotspotContainer(comp); + XCreator creator = selectionModel.getSelection().getSelectedCreator(); + Component creatorContainer = XCreatorUtils.getParentXLayoutContainer(creator); + if (creatorContainer != null && creatorContainer != container + && (selectionModel.getSelection().size() == 1 || container instanceof XWAbsoluteLayout)) { + HoverPainter painter = AdapterBus.getContainerPainter(designer, container); + designer.setPainter(painter); + if (painter != null) { + Rectangle rect = ComponentUtils.getRelativeBounds(container); + rect.x -= designer.getArea().getHorizontalValue(); + rect.y -= designer.getArea().getVerticalValue(); + painter.setRenderingBounds(rect); + painter.setHotspot(new Point(e.getX(), e.getY())); + painter.setCreator(creator); + } + addable = true; + } + } + + /** + * @param container 容器 + * @param mouseX 鼠标释放位置X + * @param mouseY 鼠标释放位置Y + * @return 是否成功 + */ + private boolean addBean(XLayoutContainer container, int mouseX, int mouseY) { + LayoutAdapter adapter = container.getLayoutAdapter(); + Rectangle rectangleContainer = ComponentUtils.getRelativeBounds(container); + if (selectionModel.getSelection().size() == 1) { + return adapter.addBean(selectionModel.getSelection().getSelectedCreator(), + mouseX + designer.getArea().getHorizontalValue() - rectangleContainer.x, + mouseY + designer.getArea().getVerticalValue() - rectangleContainer.y); + } + for (XCreator creator : selectionModel.getSelection().getSelectedCreators()) { + adapter.addBean(creator, + mouseX + designer.getArea().getHorizontalValue() - rectangleContainer.x, + mouseY + designer.getArea().getVerticalValue() - rectangleContainer.y); + } + return true; + } + + /** + * @param mouseReleasedX 鼠标释放位置X + * @param mouseReleasedY 鼠标释放位置Y + */ + private void adding(int mouseReleasedX, int mouseReleasedY) { + // 当前鼠标所在的组件 + XCreator hoveredComponent = designer.getComponentAt(mouseReleasedX, mouseReleasedY, selectionModel.getSelection().getSelectedCreators()); + + // 获取该组件所在的焦点容器 + XLayoutContainer container = XCreatorUtils.getHotspotContainer(hoveredComponent); + + boolean success = false; + + if (container != null) { + // 如果是容器,则调用其acceptComponent接受组件 + success = addBean(container, mouseReleasedX, mouseReleasedY); + } + + if (success) { + FormSelectionUtils.rebuildSelection(designer); + designer.getEditListenerTable().fireCreatorModified( + selectionModel.getSelection().getSelectedCreator(), DesignerEvent.CREATOR_ADDED); + } else { + selectionModel.getSelection().setSelectionBounds(selectedPositionBackup, designer); + Toolkit.getDefaultToolkit().beep(); + } + // 取消提示 + designer.setPainter(null); + } + + /** + * 是否拖拽 + * + * @return dragging状态 + */ + public boolean isDragging() { + return dragging; + } + + /** + * 是否可以开始画线 + * + * @return startPoint不为空返回true + */ + public boolean prepareForDrawLining() { + return startPoint != null; + } + + /** + * 设置开始位置 + * + * @param p point位置 + */ + public void setStartPoint(Point p) { + this.startPoint = p; + } + + /** + * 返回开始位置 + * + * @return 点位置 + */ + public Point getStartPoint() { + return startPoint; + } + + /** + * 返回当前点位置 + * + * @return 点位置 + */ + public Point getEndPoint() { + return currentPoint; + } + + /** + * 当前选中组件 + * + * @param e 鼠标事件 + */ + public void startSelecting(MouseEvent e) { + selecting = true; + selectionModel.setHotspotBounds(new Rectangle()); + currentX = getMouseXY(e).x; + currentY = getMouseXY(e).y; + } + + /** + * 当前鼠标的xy + * + * @param e 鼠标事件 + */ + public void startResizing(MouseEvent e) { + if (!selectionModel.getSelection().isEmpty()) { + driection.backupBounds(designer); + } + currentX = getMouseXY(e).x; + currentY = getMouseXY(e).y; + } + + /** + * 起始点开始DrawLine + * + * @param p 点位置 + */ + public void startDrawLine(Point p) { + this.startPoint = p; + if (p != null) { + try { + designer.setCursor(XConnector.connectorCursor); + } catch (Exception e) { + } + } else { + designer.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } + } + + /** + * 鼠标释放时所在的区域及圈中的组件 + * + * @param e 鼠标事件 + */ + public void selectCreators(MouseEvent e) { + int x = getMouseXY(e).x; + int y = getMouseXY(e).y; + + Rectangle bounds = createCurrentBounds(x, y); + + if ((x != currentX) || (y != currentY)) { + selectionModel.setSelectedCreators(getHotspotCreators(bounds, designer.getRootComponent())); + } + selectionModel.setHotspotBounds(null); + } + + /** + * 画所在区域线 + * + * @param e 鼠标事件 + */ + public void drawLine(MouseEvent e) { + designer.getDrawLineHelper().setDrawLine(true); + Point p = designer.getDrawLineHelper().getNearWidgetPoint(e); + if (p != null) { + currentPoint = p; + } else { + currentPoint.x = e.getX() + designer.getArea().getHorizontalValue(); + currentPoint.y = e.getY() + designer.getArea().getVerticalValue(); + } + } + + private Rectangle createCurrentBounds(int x, int y) { + Rectangle bounds = new Rectangle(); + + bounds.x = Math.min(x, currentX); + bounds.y = Math.min(y, currentY); + bounds.width = Math.max(x, currentX) - bounds.x; + bounds.height = Math.max(y, currentY) - bounds.y; + + return bounds; + } + + private ArrayList getHotspotCreators(Rectangle selection, XCreator root) { + ArrayList creators = new ArrayList<>(); + + if (!root.isVisible() && !designer.isRoot(root)) { + return creators; + } + + if (root instanceof XLayoutContainer) { + XLayoutContainer container = (XLayoutContainer) root; + int count = container.getXCreatorCount(); + Rectangle clipped = new Rectangle(selection); + + for (int i = count - 1; i >= 0; i--) { + XCreator child = container.getXCreator(i); + + if (selection.contains(child.getBounds())) { + creators.add(child); + } else { + clipped.x = selection.x - child.getX(); + clipped.y = selection.y - child.getY(); + creators.addAll(getHotspotCreators(clipped, child)); + } + } + } + + return creators; + } + + + /** + * 重置model + */ + public void resetModel() { + dragging = false; + selecting = false; + } + + /** + * 重置 + */ + public void reset() { + driection = Location.outer; + dragging = false; + selecting = false; + } + + /** + * 取消拖拽 + */ + public void draggingCancel() { + designer.repaint(); + reset(); + } + + /** + * 设置可拉伸方向 + * + * @param dir 拉伸方向 + */ + public void setDirection(Direction dir) { + if (driection != dir) { + this.driection = dir; + driection.updateCursor(designer); + } + } + + /** + * x吸附线赋值 + * + * @param line 线 + */ + public void setXAbsorptionline(Absorptionline line) { + this.lineInX = line; + } + + /** + * y吸附线赋值 + * + * @param line 线 + */ + public void setYAbsorptionline(Absorptionline line) { + this.lineInY = line; + } + + /** + * 等距线赋值 + * + * @param line 线 + */ + public void setEquidistantLine(Absorptionline line) { + this.lineEquidistant = line; + } + + /** + * 画吸附线 + * + * @param g Graphics类 + */ + public void paintAbsorptionline(Graphics g) { + if (lineInX != null) { + lineInX.paint(g, designer.getArea()); + } + if (lineInY != null) { + lineInY.paint(g, designer.getArea()); + } + if (lineEquidistant != null) { + lineEquidistant.paint(g, designer.getArea()); + } + } + + /** + * 拖拽 + * + * @param e 鼠标事件 + */ + public void dragging(MouseEvent e) { + //进入dragging状态时备份组件大小和位置 + if (!dragging) { + selectedPositionBackup = selectionModel.getSelection().getRelativeBounds(); + } + checkAddable(e); + setDependLinePainter(e); + driection.drag(getMouseXY(e).x - currentX, getMouseXY(e).y - currentY, designer); + this.dragging = true; + } + + // 拖拽时画依附线用到的painter + private void setDependLinePainter(MouseEvent e) { + XCreator comp = designer.getComponentAt(e.getX(), e.getY(), selectionModel.getSelection().getSelectedCreators()); + XLayoutContainer container = XCreatorUtils.getHotspotContainer(comp); + XCreator creator = selectionModel.getSelection().getSelectedCreator(); + HoverPainter painter = AdapterBus.getContainerPainter(designer, container); + designer.setPainter(painter); + if (painter != null) { + painter.setHotspot(new Point(e.getX(), e.getY())); + painter.setCreator(creator); + } + } + + /** + * 释放捕获 + * + * @param e 鼠标事件 + */ + public void releaseDragging(MouseEvent e) { + this.dragging = false; + if (addable) { + adding(e.getX(), e.getY()); + } else if (!selectionModel.getSelection().isEmpty()) { + selectionModel.releaseDragging(); + } + designer.repaint(); + } + + /** + * 改变选择区域 + * + * @param e 鼠标事件 + */ + public void changeSelection(MouseEvent e) { + Rectangle bounds = createCurrentBounds(getMouseXY(e).x, getMouseXY(e).y); + selectionModel.setHotspotBounds(bounds); + } + + /** + * 返回鼠标所在的x、y 考虑滚动条的值 + * + * @param e 鼠标事件 + * @return xy值 + */ + public Point getMouseXY(MouseEvent e) { + Point p1 = new Point(e.getX() + designer.getArea().getHorizontalValue(), e.getY() + + designer.getArea().getVerticalValue()); + return p1; + } + } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/beans/painters/AbstractPainter.java b/designer_form/src/com/fr/design/designer/beans/painters/AbstractPainter.java index cb5c6a4a0a..fca5197aee 100644 --- a/designer_form/src/com/fr/design/designer/beans/painters/AbstractPainter.java +++ b/designer_form/src/com/fr/design/designer/beans/painters/AbstractPainter.java @@ -1,96 +1,96 @@ -package com.fr.design.designer.beans.painters; - -import java.awt.Color; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.Point; -import java.awt.Rectangle; -import java.awt.Stroke; - -import com.fr.design.designer.beans.HoverPainter; -import com.fr.design.designer.creator.XCreator; -import com.fr.design.designer.creator.XLayoutContainer; -import com.fr.design.form.util.XCreatorConstants; -import com.fr.general.Inter; - -public abstract class AbstractPainter implements HoverPainter { - - protected Point hotspot; - protected Rectangle hotspot_bounds; - protected XLayoutContainer container; - protected XCreator creator; - - /** - * 构造函数 - * - * @param container 容器 - */ - public AbstractPainter(XLayoutContainer container) { - this.container = container; - } - - @Override - public void setHotspot(Point p) { - hotspot = p; - } - - /** - * 画初始区域 - * - * @param g 画图类 - * @param startX 起始x位置 - * @param startY 起始y位置 - */ - public void paint(Graphics g, int startX, int startY) { - if (hotspot_bounds != null) { - drawHotspot(g, hotspot_bounds.x, hotspot_bounds.y, hotspot_bounds.width, hotspot_bounds.height, Color.lightGray, true, false); - } - } - - /** - * 设置边界 - * - * @param rect 位置 - */ - @Override - public void setRenderingBounds(Rectangle rect) { - hotspot_bounds = rect; - } - - @Override - public void setCreator(XCreator component) { - this.creator = component; - } - - protected void drawHotspot(Graphics g, int x, int y, int width, int height, boolean accept) { - Color bColor = accept ? XCreatorConstants.LAYOUT_HOTSPOT_COLOR : XCreatorConstants.LAYOUT_FORBIDDEN_COLOR; - drawHotspot(g, x, y, width, height, bColor, accept, false); - } - - /** - * 自适应布局那边渲染提示,要画整个背景,不是画边框 - */ - protected void drawRegionBackground(Graphics g, int x, int y, int width, int height, Color bColor, boolean accept) { - drawHotspot(g, x, y, width, height, bColor, accept, true); - } - - protected void drawHotspot(Graphics g, int x, int y, int width, int height, Color bColor, boolean accept, boolean drawBackground) { - Graphics2D g2d = (Graphics2D) g; - Color color = g2d.getColor(); - Stroke backup = g2d.getStroke(); - // 设置线条的样式 - g2d.setStroke(XCreatorConstants.STROKE); - g2d.setColor(bColor); - if (!accept) { - g2d.drawString(Inter.getLocText("Cannot-Add_To_This_Area") + "!", x + width / 3, y + height / 2); - } else if (drawBackground) { - g2d.fillRect(x, y, width, height); - } else { - g2d.drawRect(x, y, width, height); - } - g2d.setStroke(backup); - g2d.setColor(color); - } - - +package com.fr.design.designer.beans.painters; + +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Stroke; + +import com.fr.design.designer.beans.HoverPainter; +import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XLayoutContainer; +import com.fr.design.form.util.XCreatorConstants; +import com.fr.general.Inter; + +public abstract class AbstractPainter implements HoverPainter { + + protected Point hotspot; + protected Rectangle hotspot_bounds; + protected XLayoutContainer container; + protected XCreator creator; + + /** + * 构造函数 + * + * @param container 容器 + */ + public AbstractPainter(XLayoutContainer container) { + this.container = container; + } + + @Override + public void setHotspot(Point p) { + hotspot = p; + } + + /** + * 画初始区域 + * + * @param g 画图类 + * @param startX 起始x位置 + * @param startY 起始y位置 + */ + public void paint(Graphics g, int startX, int startY) { + if (hotspot_bounds != null) { + drawHotspot(g, hotspot_bounds.x, hotspot_bounds.y, hotspot_bounds.width, hotspot_bounds.height, Color.lightGray, true, false); + } + } + + /** + * 设置边界 + * + * @param rect 位置 + */ + @Override + public void setRenderingBounds(Rectangle rect) { + hotspot_bounds = rect; + } + + @Override + public void setCreator(XCreator component) { + this.creator = component; + } + + protected void drawHotspot(Graphics g, int x, int y, int width, int height, boolean accept) { + Color bColor = accept ? XCreatorConstants.LAYOUT_HOTSPOT_COLOR : XCreatorConstants.LAYOUT_FORBIDDEN_COLOR; + drawHotspot(g, x, y, width, height, bColor, accept, false); + } + + /** + * 自适应布局那边渲染提示,要画整个背景,不是画边框 + */ + protected void drawRegionBackground(Graphics g, int x, int y, int width, int height, Color bColor, boolean accept) { + drawHotspot(g, x, y, width, height, bColor, accept, true); + } + + protected void drawHotspot(Graphics g, int x, int y, int width, int height, Color bColor, boolean accept, boolean drawBackground) { + Graphics2D g2d = (Graphics2D) g; + Color color = g2d.getColor(); + Stroke backup = g2d.getStroke(); + // 设置线条的样式 + g2d.setStroke(XCreatorConstants.STROKE); + g2d.setColor(bColor); + if (!accept) { + g2d.drawString(Inter.getLocText("Cannot-Add_To_This_Area") + "!", x + width / 3, y + height / 2); + } else if (drawBackground) { + g2d.fillRect(x, y, width, height); + } else { + g2d.drawRect(x, y, width, height); + } + g2d.setStroke(backup); + g2d.setColor(color); + } + + } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java index 7a03782c25..90945b1e80 100644 --- a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java +++ b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java @@ -133,10 +133,8 @@ public class FormSelectionUtils { boolean xOut = x < 0 || x + copiedCreator.getWidth() / 2 + xoffset > container.getWidth(); boolean yOut = y < 0 || y + copiedCreator.getHeight() / 2 + yoffset > container.getHeight(); - boolean isEdge = (x - DELAY_X_Y == container.getWidth() - copiedCreator.getWidth() / 2 - xoffset) - && (y - DELAY_X_Y == container.getHeight() - copiedCreator.getHeight() / 2 - yoffset); - y = yOut ? container.getHeight() - copiedCreator.getHeight() / 2 - yoffset : y; + boolean isEdge = (x - DELAY_X_Y == container.getWidth() - copiedCreator.getWidth() / 2 - xoffset); if (xOut) { if (isEdge) { //向左偏移 From 487e1b17c31dec3809a4581d75b439a0043c1774 Mon Sep 17 00:00:00 2001 From: neil Date: Tue, 2 May 2017 14:31:35 +0800 Subject: [PATCH 72/76] ct --- .../com/fr/design/locale/designer.properties | 20 +- .../design/locale/designer_en_US.properties | 20 +- .../design/locale/designer_ja_JP.properties | 365 ++++++++---------- .../design/locale/designer_ko_KR.properties | 49 +-- .../design/locale/designer_zh_CN.properties | 18 +- .../design/locale/designer_zh_TW.properties | 50 +-- .../com/fr/design/mainframe/JTemplate.java | 105 +++-- .../templateinfo/TemplateInfoCollector.java | 14 + .../fr/design/chart/axis/MinMaxValuePane.java | 50 +-- 9 files changed, 309 insertions(+), 382 deletions(-) diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index ada13b4600..cc75cee8ac 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -91,7 +91,6 @@ FR-Designer_DS-Dictionary= FR-Designer_Data-confusion= FR-Designer_Data_Type= FR-Designer_Double_Click_Edit_OR_Clear= -FR-Designer_Edit_Button_ToolBar= FR-Designer_Email= FR-Designer_Enabled= FR-Designer_End-Date= @@ -163,7 +162,6 @@ FR-Designer_Refresh_Parameter_In_SQL= FR-Designer_Reg_Expressions= FR-Designer_Reg_Max_Length= FR-Designer_Reg_Min_Length= -FR-Designer_Remove_Button_ToolBar= FR-Designer_ReportColumns-Columns= FR-Designer_Return-Date= FR-Designer_RichText= @@ -544,7 +542,7 @@ FR-Designer_Left_Display=Left FR-Designer_About_Version=Version FR-Designer_About_CopyRight=Copy Right FR-Designer_Service_Phone=Service Phone -FR-Designer_Allow_Null=Allow Null +FR-Designer_Allow_Null=Allow null FR-Designer_PageSetup_Page=Page FR-Designer_Custom_Job_Description=Description FR-Designer_Property=Property @@ -590,15 +588,15 @@ FR-Designer-Move_Tab_First=move to first FR-Designer-Move_Tab_End=move to end FR-Designer-Move_Tab_Next=move to next FR-Designer-Move_Tab_Prev=move to previous + +FR-Designer_Too_Large_To_Paste=too large to paste +FR-Designer_Too_Small_To_Paste=Too small to paste + FR-Designer_AxisReversed=AxisValue FR-Designer_Logarithmic=Logarithmic FR-Designer_Chart_Log_Base=Log Base FR-Designer_Chart_F_Radar_Axis=Chart_F_Radar_Axis -FR-Designer_Too_Large_To_Paste=too large to paste -FR-Designer_Too_Small_To_Paste=Too small to paste -FR-Designer_Validate= -FR-Designer_Get-CubeGetting cube= -FR-Designer_Get-CubeGetting= -FR-Designer_Fit= -FR-Designer_Properties_Mobile= -FR-Designer_Oracle= +FR-Designer_Style=Style +FR-Designer_Color=Color +FR-Designer_Border=Border +FR-Designer_Background-Pattern=Pattern diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index 6f7aff98f9..1c646aebeb 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -91,7 +91,6 @@ FR-Designer_DS-Dictionary=Data Dictionary FR-Designer_Data-confusion=Data Confusion FR-Designer_Data_Type=Data type FR-Designer_Double_Click_Edit_OR_Clear=Double Click to Edit or Clear -FR-Designer_Edit_Button_ToolBar=Edit Button ToolBar FR-Designer_Email=Mail FR-Designer_Enabled=Enabled FR-Designer_End-Date=End Date @@ -164,7 +163,6 @@ FR-Designer_Refresh_Parameter_In_SQL=Whether to refresh parameters in the SQL FR-Designer_Reg_Expressions=Regular expressions FR-Designer_Reg_Max_Length=max length FR-Designer_Reg_Min_Length=min length -FR-Designer_Remove_Button_ToolBar=Remove Button ToolBar FR-Designer_ReportColumns-Columns=Multi-columns/lines FR-Designer_Return-Date=Return Date FR-Designer_RichText=Insert Rich Text @@ -544,7 +542,7 @@ FR-Designer_Left_Display=Left FR-Designer_About_Version=Version FR-Designer_About_CopyRight=Copy Right FR-Designer_Service_Phone=Service Phone -FR-Designer_Allow_Null=Allow Null +FR-Designer_Allow_Null=Allow null FR-Designer_PageSetup_Page=Page FR-Designer_Custom_Job_Description=Description FR-Designer_Property=Property @@ -590,14 +588,16 @@ FR-Designer-Move_Tab_First=move to first FR-Designer-Move_Tab_End=move to end FR-Designer-Move_Tab_Next=move to next FR-Designer-Move_Tab_Prev=move to previous + +FR-Designer_Too_Large_To_Paste=Too large to paste! +FR-Designer_Too_Small_To_Paste=Too small to paste! + FR-Designer_AxisReversed=Axis in reverse order FR-Designer_Logarithmic=Log scale FR-Designer_Chart_Log_Base=Log Base FR-Designer_Chart_F_Radar_Axis=Value Axis -FR-Designer_Too_Large_To_Paste=Too large to paste! -FR-Designer_Too_Small_To_Paste=Too small to paste! -FR-Designer_SimpleCross_Report= -FR-Designer_Get-Cube= -FR-Designer_DoubleLayer_Report= -FR-Designer_Get-CubeGetting= -FR-Designer_SimpleDetail_Report= +FR-Designer_Style=Style +FR-Designer_Color=Color +FR-Designer_Border=Border +FR-Designer_Background-Pattern=Pattern + diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index ee6cc00271..2f4affb916 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -1,202 +1,200 @@ # generated time: \u661F\u671F\u56DB \u5341\u4E00\u6708 24 12:02:51 CST 2016 -FR-Designer-BBSLogin_Account=\u30E6\u30FC\u30B6\u30FCID -FR-Designer-BBSLogin_Connection-Failure=\u30CD\u30C3\u30C8\u63A5\u7D9A\u5931\u6557\u3001\u30CD\u30C3\u30C8\u72B6\u614B\u3054\u78BA\u8A8D\u4E0B\u3055\u3044 +FR-Designer-BBSLogin_Account=\u30E6\u30FC\u30B6\u30FC\u540D +FR-Designer-BBSLogin_Connection-Failure=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u63A5\u7D9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u73FE\u5728\u306E\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u72B6\u614B\u3092\u691C\u67FB\u3057\u3066\u304F\u3060\u3055\u3044 FR-Designer-BBSLogin_Connection-Failure-Tip=\u30D2\u30F3\u30C8 -FR-Designer-BBSLogin_Forgot-Password=\u30D1\u30B9\u30EF\u30FC\u30C9\u5FD8\u308C\u305F +FR-Designer-BBSLogin_Forgot-Password=\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5FD8\u308C\u305F FR-Designer-BBSLogin_Login=\u30ED\u30B0\u30A4\u30F3 -FR-Designer-BBSLogin_Login-Failure-Tip=\u30E6\u30FC\u30B6\u30FCID\u3084\u30D1\u30B9\u30EF\u30FC\u30C9\u30A8\u30E9\u30FC\u3001\u518D\u30ED\u30B0\u30A4\u30F3\u4E0B\u3055\u3044 +FR-Designer-BBSLogin_Login-Failure-Tip=\u30E6\u30FC\u30B6\u30FC\u540D\u307E\u305F\u306F\u30D1\u30B9\u30EF\u30FC\u30C9\u30A8\u30E9\u30FC\u3067\u3059\u3002\u518D\u5EA6\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u304F\u3060\u3055\u3044 FR-Designer-BBSLogin_Password=\u30D1\u30B9\u30EF\u30FC\u30C9 -FR-Designer-BBSLogin_Password-Empty-Tip=\u30D1\u30B9\u30EF\u30FC\u30C9\u306F\u7A7A\u6B04\u306B\u3067\u304D\u307E\u305B\u3093 +FR-Designer-BBSLogin_Password-Empty-Tip=\u30D1\u30B9\u30EF\u30FC\u30C9\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 FR-Designer-BBSLogin_Register-Account=\u30A2\u30AB\u30A6\u30F3\u30C8\u767B\u9332 -FR-Designer-BBSLogin_Switch-Account=\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u5207\u308A\u66FF\u3048 -FR-Designer-BBSLogin_Privite-Message=\u500B\u4EBA\u30E1\u30C3\u30BB\u30FC\u30B8 -FR-Designer-BBSLogin_Times=\u56DE -FR-Designer-BBSLogin_Username-Empty-Tip=\u30E6\u30FC\u30B6\u30FCID\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093 -FR-Designer-Basic_More_Color=\u305D\u306E\u4ED6\uFF08\u8272\uFF09 -FR-Designer-Estate_Any=\u5236\u9650\u306A\u3057 +FR-Designer-BBSLogin_Switch-Account=\u30A2\u30AB\u30A6\u30F3\u30C8\u5207\u308A\u66FF\u3048 +FR-Designer-BBSLogin_Privite-Message=\u30D7\u30E9\u30A4\u30D9\u30FC\u30C8\u30E1\u30C3\u30BB\u30FC\u30B8 +FR-Designer-BBSLogin_Times=\u6B21 +FR-Designer-BBSLogin_Username-Empty-Tip=\u30E6\u30FC\u30B6\u30FC\u540D\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +FR-Designer-Basic_More_Color=\u3082\u3063\u3068\u8272 +FR-Designer-Estate_Any=\u4E0D\u9650 FR-Designer-Estate_Default_Font=\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A9\u30F3\u30C8 -FR-Designer-Estate_Default_Null=\u30C7\u30D5\u30A9\u30EB\u30C8\u306F\u7A7A +FR-Designer-Estate_Default_Null=\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u7A7A\u6B04\u306B\u3059\u308B FR-Designer-Estate_Default_Text=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024 -FR-Designer-Estate_Parameter_Null_Text=\u30D1\u30E9\u30E1\u30FC\u30BF\u304C\u7A7A\u306B\u306A\u308B\u6642\u306E\u8868\u793A\u306F -FR-Designer-Estate_Radio-Group=\u4E0D\u52D5\u7523\u696D\u6C4E\u7528\u30E9\u30B8\u30AA\u30DC\u30BF\u30F3\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 -FR-Designer-Estate_Selected_Font=\u30D5\u30A9\u30F3\u30C8\u3092\u9078\u629E -FR-Designer-Estate_Widget_Value=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5024 -FR-Designer-Layout_Adaptive_Layout=\u81EA\u5DF1\u8ABF\u6574\u30EC\u30A4\u30A2\u30A6\u30C8 +FR-Designer-Estate_Parameter_Null_Text=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3092\u7A7A\u6B04\u306B\u3057\u8868\u793A\u3059\u308B +FR-Designer-Estate_Radio-Group=\u4E0D\u52D5\u7523\u696D\u901A\u7528\u30DC\u30BF\u30F3\u30BB\u30C3\u30C8\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +FR-Designer-Estate_Selected_Font=\u9078\u629E\u3057\u305F\u30D5\u30A9\u30F3\u30C8 +FR-Designer-Estate_Widget_Value=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u5024 +FR-Designer-Layout_Adaptive_Layout=\u81EA\u9069\u5FDC\u914D\u7F6E FR-Designer-Output_Background_Set=\u80CC\u666F\u8A2D\u5B9A FR-Designer-Output_Default_Background=\u30C7\u30D5\u30A9\u30EB\u30C8\u80CC\u666F -FR-Designer-Output_Excel_Page=Excel\u51FA\u529B(\u30DA\u30FC\u30B8\u5225) -FR-Designer-Output_Excel_Sheet=Excel\u51FA\u529B(\u30DA\u30FC\u30B8\u5225\u30B7\u30FC\u30C8\u5225) -FR-Designer-Output_Excel_Simple=Excel\u51FA\u529B(\u5143\u306E\u307E\u307E) -FR-Designer-Plugin_PluginMarket_Coding=\u30D7\u30E9\u30B0\u30A4\u30F3\u30B9\u30C8\u30A2\u958B\u767A\u4E2D\u3001\u304A\u5F85\u3061\u4E0B\u3055\u3044 -FR-Desinger-Plugin_Updater_UpdateAndUpgrade=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C8 -FR-Desinger-Plugin_Updater_Checking_Jar_Update=Jar\u30D5\u30A1\u30A4\u30EB\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u691C\u8A3C\u4E2D -FR-Desinger-Plugin_Updater_Checking_Version_Update=\u30D1\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u691C\u8A3C\u4E2D -FR-Desinger-Plugin_Updater_Update=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 -FR-Desinger-Plugin_Updater_Upgrade=\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9 -FR-Desinger-Plugin_Updater_Restore=\u30EA\u30AB\u30D0\u30EA -FR-Desinger-Plugin_Updater_New_Version_Available=\u65B0\u3057\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u3042\u308A\u307E\u3059 -FR-Desinger-Plugin_Updater_JarUpdate=Jar\u30D5\u30A1\u30A4\u30EB\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 -FR-Desinger-Plugin_Updater_VersionUpgrade=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C8 -FR-Desinger-Plugin_Updater_Previous_Version=\u4EE5\u524D\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3078? -FR-Desinger-Plugin_Updater_Current_Version=\u73FE\u5728\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\uFF1A -FR-Desinger-Plugin_Updater_Not_Install_Version=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u7528\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u3042\u308A\u307E\u305B\u3093 +FR-Designer-Output_Excel_Page=Excel\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8(\u30DA\u30FC\u30B8\u5225\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8) +FR-Designer-Output_Excel_Sheet=Excel\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8(\u30DA\u30FC\u30B8\u5225\u30B7\u30FC\u30C8\u5225\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8) +FR-Designer-Output_Excel_Simple=Excel\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8(\u5143\u306E\u307E\u307E\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8) +FR-Designer-Plugin_PluginMarket_Coding=\u30D7\u30E9\u30B0\u30A4\u30F3\u30DE\u30FC\u30B1\u30C3\u30C8\u306F\u958B\u767A\u4E2D\u3067\u3059\u3002\u3054\u671F\u5F85\u304F\u3060\u3055\u3044 +FR-Desinger-Plugin_Updater_UpdateAndUpgrade=\u66F4\u65B0\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 +FR-Desinger-Plugin_Updater_Checking_Jar_Update=Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u30C1\u30A7\u30C3\u30AF\u66F4\u65B0\u4E2D +FR-Desinger-Plugin_Updater_Checking_Version_Update=\u30D0\u30FC\u30B8\u30E7\u30F3\u30C1\u30A7\u30C3\u30AF\u66F4\u65B0\u4E2D +FR-Desinger-Plugin_Updater_Update=\u66F4\u65B0 +FR-Desinger-Plugin_Updater_Upgrade=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 +FR-Desinger-Plugin_Updater_Restore=\u5FA9\u5143 +FR-Desinger-Plugin_Updater_New_Version_Available=\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3\u6709\u308A +FR-Desinger-Plugin_Updater_JarUpdate=Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u66F4\u65B0 +FR-Desinger-Plugin_Updater_VersionUpgrade=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7 +FR-Desinger-Plugin_Updater_Previous_Version=\u65E7\u30D0\u30FC\u30B8\u30E7\u30F3\u307E\u3067\u306B +FR-Desinger-Plugin_Updater_Current_Version=\u73FE\u30D0\u30FC\u30B8\u30E7\u30F3 +FR-Desinger-Plugin_Updater_Not_Install_Version=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u306A\u3044 FR-Desinger-Plugin_Updater_Latest_Version=\u6700\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3 -FR-Desinger-Plugin_Updater_Jar_Downloading=Jar\u30D5\u30A1\u30A4\u30EB\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u7D42\u4E86\u3092\u5F85\u3063\u3066\u3044\u308B -FR-Desinger-Plugin_Updater_Version_Downloading=\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C8\u30D1\u30C3\u30B1\u30FC\u30B8\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3092\u5F85\u3063\u3066\u3044\u308B -FR-Desinger-Plugin_Updater_Restart_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u518D\u8D77\u52D5 -FR-Desinger-Plugin_Updater_Connect_VersionUpdateServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30B5\u30FC\u30D0\u306B\u63A5\u7D9A\u3067\u304D\u306A\u3044 -FR-Desinger-Plugin_Updater_Connect_VersionUpgradeServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C8\u30B5\u30FC\u30D0\u306B\u63A5\u7D9A\u3067\u304D\u306A\u3044 -FR-Desinger-Plugin_Updater_Already_Latest_Version=\u6700\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3\u306B\u306A\u308A\u307E\u3057\u305F -FR-Desinger-Plugin_Updater_Backup_OldJar_To=\u53E4\u3044Jar\u30D5\u30A1\u30A4\u30EB\u3092\u4E0B\u8A18\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3057\u307E\u3057\u305F\uFF1A -FR-Desinger-Plugin_Updater_Backup_OldVersion_To=\u53E4\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u4E0B\u8A18\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3057\u307E\u3057\u305F\uFF1A -FR-Desinger-Plugin_Updater_Please_Restart=\u3001\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u518D\u8D77\u52D5\u3057\u3066\u4E0B\u3055\u3044 -FR-Desinger-Plugin_Updater_Jar_Restore=Jar\u30D5\u30A1\u30A4\u30EB\u30EA\u30AB\u30D0\u30EA -FR-Desinger-Plugin_Updater_Version_Restore=\u30D0\u30FC\u30B8\u30E7\u30F3\u30EA\u30AB\u30D0\u30EA -FR-Desinger-Plugin_Updater_Restore_To=\u30EA\u30AB\u30D0\u30EA -FR-Desinger-Plugin_Updater_WorksAfterRestart=\u30D0\u30FC\u30B8\u30E7\u30F3\u3001\u518D\u8D77\u52D5\u5F8C\u6709\u52B9\u306B\u306A\u308A\u307E\u3059 +FR-Desinger-Plugin_Updater_Jar_Downloading=Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u5B8C\u6210\u5F85\u3061 +FR-Desinger-Plugin_Updater_Version_Downloading=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30D1\u30C3\u30B1\u30FC\u30B8\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u5B8C\u6210\u5F85\u3061 +FR-Desinger-Plugin_Updater_Restart_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u518D\u8D77\u52D5 +FR-Desinger-Plugin_Updater_Connect_VersionUpdateServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u66F4\u65B0\u30B5\u30FC\u30D0\u30FC\u63A5\u7D9A\u3067\u304D\u306A\u3044 +FR-Desinger-Plugin_Updater_Connect_VersionUpgradeServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30B5\u30FC\u30D0\u30FC\u63A5\u7D9A\u3067\u304D\u306A\u3044 +FR-Desinger-Plugin_Updater_Already_Latest_Version=\u65E2\u306B\u6700\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3 +FR-Desinger-Plugin_Updater_Backup_OldJar_To=\u65E7Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u306F\u65E2\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7 +FR-Desinger-Plugin_Updater_Backup_OldVersion_To=\u65E7\u30D0\u30FC\u30B8\u30E7\u30F3\u30D1\u30C3\u30B1\u30FC\u30B8\u306F\u65E2\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7 +FR-Desinger-Plugin_Updater_Please_Restart=\u30C7\u30B6\u30A4\u30CA\u30FC\u306F\u518D\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Desinger-Plugin_Updater_Jar_Restore=\u65E7Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u5FA9\u5143 +FR-Desinger-Plugin_Updater_Version_Restore=\u30D0\u30FC\u30B8\u30E7\u30F3\u5FA9\u5143 +FR-Desinger-Plugin_Updater_Restore_To=\u5FA9\u5143 +FR-Desinger-Plugin_Updater_WorksAfterRestart=\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u518D\u8D77\u52D5\u5F8C\u306B\u6709\u52B9\u3059\u308B FR-Designer-Submit_Condition=\u6761\u4EF6 -FR-Designer-Widget-Title_border=\u67A0 +FR-Designer-Widget-Title_border=\u30D5\u30EC\u30FC\u30E0 FR-Designer-Widget-Title_border_color=\u8272 FR-Designer_AbsoluteLayout=\u7D76\u5BFE\u30EC\u30A4\u30A2\u30A6\u30C8 -FR-Designer_Allow_Decimals=\u5C0F\u6570\u306E\u8A31\u53EF -FR-Designer_Allow_Negative=\u8CA0\u5024\u306E\u8A31\u53EF -FR-Designer_Background-Click=\u30DE\u30A6\u30B9\u30AF\u30EA\u30C3\u30AF\u6642\u80CC\u666F +FR-Designer_Allow_Decimals=\u5C0F\u6570\u3092\u8A31\u53EF +FR-Designer_Allow_Negative=\u30DE\u30A4\u30CA\u30B9\u5024\u3092\u8A31\u53EF +FR-Designer_Background-Click=\u30DE\u30A6\u30B9\u30AF\u30EA\u30C3\u30AF\u80CC\u666F FR-Designer_Background-Initial=\u521D\u671F\u80CC\u666F -FR-Designer_Background-Over=\u30DE\u30A6\u30B9\u30AA\u30FC\u30D0\u30FC\u6642\u80CC\u666F -FR-Designer_Bar-Code-Exception-Tip=\u30C7\u30FC\u30BF\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093 -FR-Designer_Block-intersect=\u30D6\u30ED\u30C3\u30AF\u3068\u30D6\u30EB\u30C3\u30AF\u9593\u306E\u91CD\u306A\u308A\u7981\u6B62 +FR-Designer_Background-Over=\u30DE\u30A6\u30B9\u30D5\u30ED\u30FC\u30C8\u80CC\u666F +FR-Designer_Bar-Code-Exception-Tip=\u30C7\u30FC\u30BF\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +FR-Designer_Block-intersect=\u30E2\u30B8\u30E5\u30FC\u30EB\u3068\u30E2\u30B8\u30E5\u30FC\u30EB\u9593\u3092\u91CD\u306D\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 FR-Designer_BorderLayout=\u30DC\u30FC\u30C0\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8 FR-Designer_Button-Hotkeys=\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC FR-Designer_Button-Icon=\u30DC\u30BF\u30F3\u30A2\u30A4\u30B3\u30F3 -FR-Designer_Button-Name=\u30DC\u30BF\u30F3\u540D +FR-Designer_Button-Name=\u30DC\u30BF\u30F3\u540D\u79F0 FR-Designer_Button-Type=\u30DC\u30BF\u30F3\u30BF\u30A4\u30D7 -FR-Designer_CardLayout=Tab\u30EC\u30A4\u30A2\u30A6\u30C8 +FR-Designer_CardLayout=Tab\u914D\u7F6E FR-Designer_Cell=\u30BB\u30EB -FR-Designer_Chart_Cell=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u30BB\u30EB\u9023\u52D5 -FR-Designer_Chart_Float=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u30D5\u30ED\u30FC\u30C6\u30A3\u30F3\u30B0\u8981\u7D20\u9023\u52D5 -FR-Designer_Chart_Float_chart=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u30D5\u30ED\u30FC\u30C6\u30A3\u30F3\u30B0\u30A6\u30A3\u30F3\u30C9\u30A6\u30B0\u30E9\u30D5 -FR-Designer_Check-for-Updates=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3092\u78BA\u8A8D -FR-Designer_Choose-Data-Confusion-Tip=\ \u6DF7\u4E71\u3055\u305B\u308B\u3079\u304D\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u9078\u629E\u3057\u3066\u30D7\u30EC\u30D3\u30E5\u30FC\u4E0B\u3055\u3044 -FR-Designer_Close=\u9589\u3058\u308B +FR-Designer_Chart_Cell=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u9023\u52D5\u30BB\u30EB +FR-Designer_Chart_Float=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u9023\u52D5\u30D5\u30ED\u30FC\u8981\u7D20 +FR-Designer_Chart_Float_chart=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u30D5\u30ED\u30FC\u7A93\u30B0\u30E9\u30D5 +FR-Designer_Check-for-Updates=\u66F4\u65B0\u3092\u78BA\u8A8D +FR-Designer_Choose-Data-Confusion-Tip=\ \u6DF7\u4EA4\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u9078\u629E\u5F8C\u30D7\u30EC\u30D3\u30E5\u30FC\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Designer_Close=\u30AF\u30ED\u30FC\u30BA FR-Designer_Column=\u5217 -FR-Designer_Column_Measure=\u5217\u8EF8/\u30E1\u30C8\u30EA\u30C3\u30AF +FR-Designer_Column_Measure=\u5217\u8EF8/\u5EA6\u91CF\u5024 FR-Designer_Condition_Attributes=\u6761\u4EF6\u5C5E\u6027 -FR-Designer_Confusion-Col-Name=\u30D5\u30A3\u30FC\u30EB\u30C9\u540D -FR-Designer_Confusion-key=\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u6DF7\u4E71\u3055\u305B\u308B -FR-Designer_Currency_Line=\u6841\u533A\u5207\u308A\u7DDA -FR-Designer_Current_tab=tab\u7DE8\u96C6\u4E2D -FR-Designer_Custom=\u30AB\u30B9\u30BF\u30E0 -FR-Designer_Custom-Angle=\u30AB\u30B9\u30BF\u30E0\u89D2\u5EA6 -FR-Designer_DS-Dictionary=\u30C7\u30FC\u30BF\u8F9E\u66F8 -FR-Designer_Data-confusion=\u30C7\u30FC\u30BF\u6DF7\u4E71 +FR-Designer_Confusion-Col-Name=\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u79F0 +FR-Designer_Confusion-key=\u6DF7\u4EA4\u3059\u308B\u30AD\u30FC\u30EF\u30FC\u30C9 +FR-Designer_Currency_Line=\u91D1\u984D\u7DDA +FR-Designer_Current_tab=\u73FE\u5728\u306E\u7DE8\u96C6tab +FR-Designer_Custom=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA +FR-Designer_Custom-Angle=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u89D2\u5EA6 +FR-Designer_DS-Dictionary=\u30C7\u30FC\u30BF\u5B57\u5178 +FR-Designer_Data-confusion=\u30C7\u30FC\u30BF\u6DF7\u4EA4 FR-Designer_Data_Type=\u30C7\u30FC\u30BF\u30BF\u30A4\u30D7 -FR-Designer_Double_Click_Edit_OR_Clear=\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u7DE8\u96C6\u3084\u30AF\u30EA\u30A2\u3092\u884C\u3046 -FR-Designer_Edit_Button_ToolBar=\u30DC\u30BF\u30F3\u306E\u30C4\u30FC\u30EB\u30D0\u30FC\u3092\u7DE8\u96C6 -FR-Designer_Email=E\u30E1\u30FC\u30EB +FR-Designer_Double_Click_Edit_OR_Clear=\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u7DE8\u96C6\u307E\u305F\u306F\u30AF\u30EA\u30A2\u3059\u308B +FR-Designer_Email=\u30E1\u30FC\u30EB FR-Designer_Enabled=\u4F7F\u7528\u53EF\u80FD -FR-Designer_End-Date=\u7D42\u4E86\u65E5 -FR-Designer_ExportAndOutput=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +FR-Designer_End-Date=\u7D42\u4E86\u65E5\u671F +FR-Designer_ExportAndOutput=\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8 FR-Designer_FRFont=\u30D5\u30A9\u30F3\u30C8 -FR-Designer_FS_Close_Other_Templates=\u4ED6\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u9589\u3058\u308B +FR-Designer_FS_Close_Other_Templates=\u305D\u306E\u4ED6\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u9589\u3058\u308B FR-Designer_File=\u30D5\u30A1\u30A4\u30EB -FR-Designer_Filter_Conditions=\u30D5\u30A3\u30EB\u30BF\u6761\u4EF6 -FR-Designer_Finish-Modify-Share=\u4FEE\u6B63\u3092\u7D42\u4E86\u3055\u305B\u3066\u5171\u6709 -FR-Designer_Fit-App=\u30A2\u30D7\u30EA\u81EA\u5DF1\u8ABF\u6574 -FR-Designer_Fit=\u81EA\u5DF1\u8ABF\u6574 -FR-Designer_Font-Family=\u30D5\u30A9\u30F3\u30C8\u540D -FR-Designer_Font-Size=\u30D5\u30A9\u30F3\u30C8\u30B5\u30A4\u30BA -FR-Designer_Forbid_Drag_into_Adapt_Pane=\u5F53\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u4E3B\u4F53\u306B\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u306F\u306A\u3089\u306A\u3044 -FR-Designer_Forbid_Drag_into_Para_Pane=\u5F53\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u30D1\u30E9\u30E1\u30FC\u30BF\u30D1\u30CD\u30EB\u306B\u30C9\u30E9\u30C3\u30B0\u3067\u304D\u307E\u305B\u3093 +FR-Designer_Filter_Conditions=\u9078\u5225\u6761\u4EF6 +FR-Designer_Finish-Modify-Share=\u4FEE\u6B63\u3092\u5B8C\u4E86\u3057\u3066\u30B7\u30A7\u30A2 +FR-Designer_Fit-App=App\u81EA\u9069\u5FDC +FR-Designer_Fit=\u81EA\u9069\u5FDC +FR-Designer_Font-Family=\u30D5\u30A9\u30F3\u30C8\u540D\u79F0 +FR-Designer_Font-Size=\u30D5\u30A9\u30F3\u30C8\u5927\u5C0F +FR-Designer_Forbid_Drag_into_Adapt_Pane=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u30D5\u30A9\u30FC\u30E0\u672C\u6587\u3092\u30C9\u30E9\u30C3\u30B0\u3059\u308B\u3053\u3068\u306F\u8A31\u3055\u308C\u306A\u3044 +FR-Designer_Forbid_Drag_into_Para_Pane=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u30D1\u30CD\u30EB\u306B\u30C9\u30E9\u30C3\u30B0\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 FR-Designer_Foreground=\u8272 -FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u6A29\u9650\u7DE8\u96C6\u306F\u73FE\u6642\u70B9\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093 -FR-Designer_Form-Report=\u5E33\u7968\u30D6\u30ED\u30C3\u30AF -FR-Designer_Form_EmbeddedTD=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9(\u7D44\u307F\u8FBC\u307F\u30C7\u30FC\u30BF) -FR-Designer_Form_Module=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30E2\u30B8\u30E5\u30FC\u30EB +FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\u8868\u306E\u6A29\u9650\u7DE8\u96C6\u306B\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093 +FR-Designer_Form-Report=\u5E33\u7968\u30E2\u30B8\u30E5\u30FC\u30EB +FR-Designer_Form_EmbeddedTD=\u8868(\u5185\u8535\u30C7\u30FC\u30BF) +FR-Designer_Form_Module=\u8868\u30E2\u30B8\u30E5\u30FC\u30EB FR-Designer_Format_explan=\u66F8\u5F0F\u8AAC\u660E -FR-Designer_Formula=\u6570\u5F0F -FR-Designer_Forum=\u30D5\u30A9\u30FC\u30E9\u30E0 +FR-Designer_Formula=\u516C\u5F0F +FR-Designer_Forum=BBS FR-Designer_Get-Cube=cube\u53D6\u5F97\u4E2D FR-Designer_Help=\u30D8\u30EB\u30D7 -FR-Designer_Hide=\u975E\u8868\u793A -FR-Designer_Hyperlink=\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF -FR-Designer_Hyperlink-Form_link=\u73FE\u5728\u306E\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 +FR-Designer_Hide=\u96A0\u3059 +FR-Designer_Hyperlink=\u30B9\u30FC\u30D1\u30FC\u30EA\u30F3\u30AF +FR-Designer_Hyperlink-Form_link=\u73FE\u5728\u306E\u8868\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 FR-Designer_IDCard=\u8EAB\u5206\u8A3C\u660E\u66F8 FR-Designer_Icon=\u30A2\u30A4\u30B3\u30F3 FR-Designer_Index=\u5217\u8EF8/\u6307\u6A19 -FR-Designer_Input_Rule=\u5165\u529B\u898F\u5247 +FR-Designer_Input_Rule=\u30EB\u30FC\u30EB\u8A18\u5165 FR-Designer_Language_Default=\u30C7\u30D5\u30A9\u30EB\u30C8 -FR-Designer_Layout=\u30EC\u30A4\u30A2\u30A6\u30C8 -FR-Designer_Layout-HBox=\u6C34\u5E73\u30DC\u30C3\u30AF\u30B9\u306E\u30EC\u30A4\u30A2\u30A6\u30C8 -FR-Designer_Layout-Index=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9 -FR-Designer_Layout_Constraints=\u4F4D\u7F6E\u3068\u30B5\u30A4\u30BA +FR-Designer_Layout=\u914D\u7F6E +FR-Designer_Layout-HBox=\u6C34\u5E73\u30B1\u30FC\u30B9\u914D\u7F6E +FR-Designer_Layout-Index=\u7D22\u5F15 +FR-Designer_Layout_Constraints=\u4F4D\u7F6E\u3068\u5927\u5C0F FR-Designer_Length=\u9577\u3055 -FR-Designer_Loading_Data=\u30C7\u30FC\u30BF\u30ED\u30FC\u30C9\u4E2D -FR-Designer_M-Exit=\u7D42\u4E86 +FR-Designer_Loading_Data=\u30C7\u30FC\u30BF\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3057\u3066\u3044\u307E\u3059 +FR-Designer_M-Exit=\u9000\u51FA FR-Designer_M-Help=\u30D8\u30EB\u30D7 FR-Designer_M-Insert=\u633F\u5165 -FR-Designer_M-Repeat-Freeze=\u7E70\u308A\u8FD4\u3057\u3068\u56FA\u5B9A\u306E\u8A2D\u5B9A -FR-Designer_M-Server=\u30B5\u30FC\u30D0 -FR-Designer_M-SwitchWorkspace=\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u5207\u308A\u66FF\u3048 +FR-Designer_M-Repeat-Freeze=\u91CD\u8907\u3068\u30D5\u30EA\u30FC\u30BA\u8A2D\u5B9A +FR-Designer_M-Server=\u30B5\u30FC\u30D0\u30FC +FR-Designer_M-SwitchWorkspace=\u4F5C\u696D\u76EE\u6B21\u5207\u308A\u66FF\u3048 FR-Designer_M-Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 -FR-Designer_MDX_Explain=\u6587\u6CD5\u66F8\u5F0F\u306FMDX\u6587\u6CD5\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\u4F8B\:\nWITH\nMEMBER [Measures].[Special Discount] AS\n[Measures].[Discount Amount] * 1.5\nSELECT\n[Measures].[Special Discount] on COLUMNS,\nNON EMPTY [Product].[Product].MEMBERS ON Rows\nFROM [Adventure Works]\nWHERE [Product].[Category].[Bikes]\n\u6CE8\uFF1ACOLUMNS\u3001ROWS\u30011\u3067\u53D6\u308A\u63DB\u3048\u308B\u3053\u3068\u304C\u3067\u304D\u3001\u691C\u7D22\u8EF8\u306F2\u8EF8\u306E\u623B\u308A\u3057\u304B\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3002 +FR-Designer_MDX_Explain=\u6587\u6CD5\u66F8\u5F0F\u306FMDX\u6587\u6CD5\u3092\u53C2\u8003\u3002\n\u4F8B\u3048\u3070\uFF1A\nWITH\nMEMBER [Measures].[Special Discount] AS\n[Measures].[Discount Amount] * 1.5\nSELECT\n[Measures].[Special Discount] on COLUMNS,\nNON EMPTY [Product].[Product].MEMBERS ON Rows\nFROM [Adventure Works]\nWHERE [Product].[Category].[Bikes]\n\u6CE8\uFF1ACOLUMNS\u3001ROWS\u306F0\u30011\u3092\u4F7F\u7528\u3057\u3066\u4EE3\u66FF\u53EF\u80FD\u3067\u3059\u3002\u30AF\u30A8\u30EA\u8EF8\u306F\u4E8C\u3064\u306E\u8EF8\u623B\u3057\u306B\u306E\u307F\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002 FR-Designer_M_Help-About_Software=\u30BD\u30D5\u30C8\u30A6\u30A7\u30A2\u306B\u3064\u3044\u3066 FR-Designer_M_Help-Tutorial=\u30D8\u30EB\u30D7\u30C1\u30E5\u30FC\u30C8\u30EA\u30A2\u30EB FR-Designer_Max_Value=\u6700\u5927\u5024 FR-Designer_Min_Value=\u6700\u5C0F\u5024 -FR-Designer_MobilePhone=\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3 -FR-Designer_New_Value=\u65B0\u3057\u3044\u5024 +FR-Designer_MobilePhone=\u643A\u5E2F\u96FB\u8A71 +FR-Designer_New_Value=\u65B0\u5024 FR-Designer_None=\u7121\u3057 -FR-Designer_PaperSize-Mobile=\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3 -FR-Designer_PaperSize-Mobile-Large=\u643A\u5E2F\u5927\u753B\u9762 -FR-Designer_PaperSize-Mobile-Small=\u643A\u5E2F\u5C0F\u753B\u9762 -FR-Designer_Para-Body=\u30D1\u30E9\u30E1\u30FC\u30BF\u30D1\u30CD\u30EB -FR-Designer_Parameters=\u30D1\u30E9\u30E1\u30FC\u30BF +FR-Designer_PaperSize-Mobile=\u643A\u5E2F\u96FB\u8A71 +FR-Designer_PaperSize-Mobile-Large=\u643A\u5E2F\u96FB\u8A71\u5927\u30B9\u30AF\u30EA\u30FC\u30F3 +FR-Designer_PaperSize-Mobile-Small=\u643A\u5E2F\u96FB\u8A71\u5C0F\u30B9\u30AF\u30EA\u30FC\u30F3 +FR-Designer_Para-Body=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u753B\u9762 +FR-Designer_Parameters=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC FR-Designer_Phone=\u96FB\u8A71 FR-Designer_PostCode=\u90F5\u4FBF\u756A\u53F7 -FR-Designer_Present=\u5F62\u614B +FR-Designer_Present=\u30D5\u30A9\u30EB\u30E0 FR-Designer_Preview=\u30D7\u30EC\u30D3\u30E5\u30FC -FR-Designer_Preview-Data-Confusion=\u6DF7\u4E71\u3055\u308C\u305F\u30C7\u30FC\u30BF\u3092\u30D7\u30EC\u30D3\u30E5\u30FC +FR-Designer_Preview-Data-Confusion=\u6DF7\u4EA4\u5F8C\u306E\u30C7\u30FC\u30BF\u3092\u30D7\u30EC\u30D3\u30E5\u30FC FR-Designer_Product_Demo=\u88FD\u54C1\u30C7\u30E2 -FR-Designer_Query_Type=\u30AF\u30A8\u30EA\u30BF\u30A4\u30D7 +FR-Designer_Query_Type=\u30AF\u30A8\u30EA\u65B9\u6CD5 FR-Designer_Refresh=\u66F4\u65B0 -FR-Designer_Refresh_Parameter_In_SQL=SQL\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u66F4\u65B0\u3057\u307E\u3059\u304B -FR-Designer_Reg_Expressions=\u6B63\u898F\u8868\u73FE -FR-Designer_Reg_Max_Length=\u6700\u5927 -FR-Designer_Reg_Min_Length=\u6700\u5C0F -FR-Designer_Remove_Button_ToolBar=\u30DC\u30BF\u30F3\u306E\u30C4\u30FC\u30EB\u30D0\u30FC\u3092\u524A\u9664 -FR-Designer_ReportColumns-Columns=\u30B5\u30D6\u30D5\u30A3\u30FC\u30EB\u30C9 -FR-Designer_Return-Date=\u65E5\u4ED8\u578B\u3092\u623B\u3059 -FR-Designer_RichText=\u30EA\u30C3\u30C1\u30C6\u30AD\u30B9\u30C8 -FR-Designer_RichTextEditor=\u30EA\u30C3\u30C1\u30C6\u30AD\u30B9\u30C8\u30A8\u30C7\u30A3\u30BF +FR-Designer_Refresh_Parameter_In_SQL=SQL\u4E2D\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3092\u66F4\u65B0\u3057\u307E\u3059\u304B +FR-Designer_Reg_Expressions=\u6B63\u5247\u8868\u73FE\u5F0F +FR-Designer_Reg_Max_Length=\u6700\u5927\u9577\u3055 +FR-Designer_Reg_Min_Length=\u6700\u5C0F\u9577\u3055 +FR-Designer_ReportColumns-Columns=\u6BB5\u7D44\u307F +FR-Designer_Return-Date=\u65E5\u671F\u306B\u623B\u308B +FR-Designer_RichText=\u30EA\u30C3\u30C1\u6587\u66F8\u633F\u5165 +FR-Designer_RichTextEditor=\u30EA\u30C3\u30C1\u6587\u66F8\u30A8\u30C7\u30A3\u30BF FR-Designer_Row=\u884C -FR-Designer_Row_Dimension=\u884C\u8EF8/\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3 +FR-Designer_Row_Dimension=\u884C\u8EF8/\u7DEF\u5EA6 FR-Designer_Save=\u4FDD\u5B58 FR-Designer_Search=\u691C\u7D22 FR-Designer_Set=\u8A2D\u5B9A -FR-Designer_Share-Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5171\u6709 -FR-Designer_Simple_general=\u7C21\u6613\u4E00\u822C\u691C\u7D22 +FR-Designer_Share-Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30B7\u30A7\u30A2 +FR-Designer_Simple_general=\u30B7\u30F3\u30D7\u30EB\u901A\u7528\u30AF\u30A8\u30EA FR-Designer_Song_TypeFace=\u5B8B\u4F53 -FR-Designer_Start-Date=\u958B\u59CB\u65E5 +FR-Designer_Start-Date=\u958B\u59CB\u65E5\u671F FR-Designer_Subscript=\u4E0B\u4ED8\u304D FR-Designer_Superscript=\u4E0A\u4ED8\u304D -FR-Designer_Support_QQ=\u6280\u8853\u30B5\u30DD\u30FC\u30C8QQ +FR-Designer_Support_QQ=\u6280\u8853QQ FR-Designer_Swatch=\u30B5\u30F3\u30D7\u30EB -FR-Designer_Tab_title=\u30BF\u30D6\u30BF\u30A4\u30C8\u30EB +FR-Designer_Tab_title=tab\u30BF\u30A4\u30C8\u30EB FR-Designer_TableData=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 -FR-Designer_Thank_guest=\u7279\u306B\u4EE5\u4E0B\u306E\u30D5\u30A9\u30FC\u30E9\u30E0\u5E06\u85AF\u304C\u5F53\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u4F7F\u3044\u3084\u3059\u3055\u306B\u9855\u8457\u306A\u8CA2\u732E\u306B\u611F\u8B1D +FR-Designer_Thank_guest=\u7279\u306B\u5F53\u8A72\u30D0\u30FC\u30B8\u30E7\u30F3\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u4F7F\u3044\u3084\u3059\u3055\u306B\u3064\u3044\u3066\u8CA2\u732E\u3057\u3066\u304F\u308C\u305F\u4EE5\u4E0B\u306EBBS\u306E\u5E06\u30BD\u30D5\u30C8\u30D5\u30A1\u30F3\u306B\u611F\u8B1D\u3057\u307E\u3059 FR-Designer_Thanks-To=\u611F\u8B1D FR-Designer_Title=\u30BF\u30A4\u30C8\u30EB -FR-Designer_Total=\u5408\u8A08 +FR-Designer_Total=\u5168\u90E8\u3067 FR-Designer_UnSignIn=\u672A\u30ED\u30B0\u30A4\u30F3 -FR-Designer_Underline=\u4E0B\u7DDA -FR-Designer_Used=\u6700\u8FD1\u4F7F\u7528 -FR-Designer_User-defined-MDX=\u30AB\u30B9\u30BF\u30E0MDX\u691C\u7D22 -FR-Designer_SampleText=\u30B5\u30F3\u30D7\u30EB\u30C6\u30AD\u30B9\u30C8 \u30B5\u30F3\u30D7\u30EB\u30C6\u30AD\u30B9\u30C8 -FR-Designer_Vertical-LeftToRight=\u6587\u5B57\u7E26\u66F8\u304D(\u5DE6\u304B\u3089\u53F3\u3078) +FR-Designer_Underline=\u30A2\u30F3\u30C0\u30FC\u30E9\u30A4\u30F3 +FR-Designer_Used=\u6700\u8FD1\u4F7F\u7528\u3057\u305F +FR-Designer_User-defined-MDX=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BAMDX\u30AF\u30A8\u30EA +FR-Designer_SampleText=\u30C6\u30AD\u30B9\u30C8\u4F8B +FR-Designer_Vertical-LeftToRight=\u6587\u5B57\u7E26\u66F8(\u5DE6\u304B\u3089\u53F3\u3078\uFF09 FR-Designer_Vertical-RightToLeft=\u6587\u5B57\u7E26\u66F8(\u53F3\u304B\u3089\u5DE6\u3078) -FR-Designer_VerticalBoxLayout=\u5782\u76F4\u30DC\u30C3\u30AF\u30B9\u30EC\u30A4\u30A2\u30A6\u30C8 -FR-Designer_Visible=\u8868\u793A -FR-Designer_WLayout-Border-ToolTips=\u5B8C\u5168\u306A\u30DC\u30FC\u30C0\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u306F\u3001\u6771\u3001\u5357\u3001\u897F\u3001\u5317\u3001\u4E2D\u592E\u306E5\u30D6\u30ED\u30C3\u30AF\u3088\u308A\u69CB\u6210\u3055\u308C\u307E\u3059\u3002\n\u5317\u90E8\u3068\u5357\u90E8\u3067\u306F\u9AD8\u3055\u3092\u3001\u6771\u90E8\u3068\u897F\u90E8\u3068\u3067\u306F\u5E45\u3092\u8ABF\u6574\u3067\u304D\u307E\u3059\u3002 +FR-Designer_VerticalBoxLayout=\u5782\u76F4\u30B1\u30FC\u30B9\u914D\u7F6E +FR-Designer_Visible=\u53EF\u8996 +FR-Designer_WLayout-Border-ToolTips=\u5B8C\u74A7\u306A\u30DC\u30FC\u30C0\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8\u5BB9\u5668\u306F\u6771\u897F\u5357\u5317\u4E2D\u306E\u4E94\u3064\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u304B\u3089\u69CB\u6210\u3055\u308C\u307E\u3059\u3002\\uff4e\u305D\u306E\u3046\u3061\u3001\u5357\u5317\u30E2\u30B8\u30E5\u30FC\u30EB\u306F\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u9AD8\u3055\u3092\u8ABF\u6574\u3067\u304D\u3001\u6771\u897F\u30E2\u30B8\u30E5\u30FC\u30EB\u306F\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u5E45\u3092\u8ABF\u6574\u3067\u304D\u307E\u3059\u3002 FR-Designer_WaterMark=\u900F\u304B\u3057 FR-Designer_Widget=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB FR-Designer_Widget-Settings=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u8A2D\u5B9A @@ -366,30 +364,24 @@ FR-Designer_XMLA_Get_Catalog=\u30AB\u30BF\u30ED\u30B0\u3092\u691C\u7D22\u3059\u3 FR-Designer_XMLA_Not_NULL=\u3053\u3053\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 FR-Designer_Column-Axis=\u5217\u8EF8 FR-Designer_LiteCondition_Common=\u4E00\u822C -FR-Designer_LiteCondition_Formula=\u6570\u5F0F +FR-Designer_LiteCondition_Formula=\u516C\u5F0F FR-Designer_LiteCondition_ConditionB-AND=\u30A2\u30F3\u30C9(AND) FR-Designer_LiteCondition_ConditionB-OR=\u30AA\u30A2(OR) FR-Designer_LiteCondition_Common_Condition=\u666E\u901A\u6761\u4EF6 -FR-Designer_LiteCondition_Formula_Condition=\u6570\u5F0F\u6761\u4EF6 +FR-Designer_LiteCondition_Formula_Condition=\u516C\u5F0F\u6761\u4EF6 FR-Designer_LiteCondition_Define=\u5B9A\u7FA9 -FR-Designer_Normal=\u6B63\u5E38 -FR-Designer_Alert=\u30A2\u30E9\u30FC\u30C8 FR-Designer_Select_All=\u5168\u9078\u629E -FR-Designer_Clear_All=\u5168\u3066\u3092\u30AF\u30EA\u30A2 -FR-Designer_Copy=\u30B3\u30D4\u30FC -FR-Designer_Log=\u30ED\u30B0 -FR-Designer-Plugin_Expire_Dialog_Title=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u671F\u9650\u5207\u308C -FR-Designer-Plugin_Expire_Dialog_Text=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u6709\u52B9\u671F\u9650\u304C\u5207\u308C\u3066\u3044\u307E\u3059\u3001\u30D5\u30A1\u30F3\u30E9\u30F3\u30A2\u30D7\u30EA\u30BB\u30F3\u30BF\u30FC\u3078\u8CFC\u5165\u3057\u3066\u304F\u3060\u3055\u3044\u3002 -FR-Designer-Plugin_Finerest_Addon=\u30D5\u30A1\u30F3\u30E9\u30F3\u30A2\u30D7\u30EA\u30BB\u30F3\u30BF\u30FC +FR-Designer-Plugin_Expire_Dialog_Title=\u671F\u9650\u5207\u308C\u306E\u30D7\u30E9\u30B0\u30A4\u30F3 +FR-Designer-Plugin_Expire_Dialog_Text=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u3001\u8CFC\u5165\u3092\u3059\u308B\u305F\u3081\u306B\u5E06\u30BD\u30D5\u30C8\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30BB\u30F3\u30BF\u30FC\u3092\u884C\u304F\u3001\u6709\u52B9\u671F\u9650\u304C\u5207\u308C\u3066\u3044\u307E\u3059\u3002 +FR-Designer-Plugin_Finerest_Addon=\u5E06\u8EDF\u5FDC\u7528\u30BB\u30F3\u30BF\u30FC FR-Designer_Performance_First=\u6027\u80FD\u512A\u5148 FR-Designer_Total_N_Grade=\u5168\u90E8\u3067\:${N}\u5C64 FR-Designer_time(s)=\u56DE -FR-Designer_General=\u901A\u5E38 -FR-Designer_Advanced=\u8A73\u7D30 -FR-Designer_Validate=\u691C\u8A3C +FR-Designer_General=\u5E38\u7528 +FR-Designer_Advanced=\u9AD8\u7D1A FR-Designer_Oracle=\u3059\u3079\u3066\u306E\u30C6\u30FC\u30D6\u30EB FR-Designer_Product_improve=\u88FD\u54C1\u6539\u5584 -FR-Designer_Join_Product_improve=\u88FD\u54C1\u6539\u5584\u30D7\u30E9\u30F3\u306B\u5165\u308B +FR-Designer_Join_Product_improve=\u88FD\u54C1\u6539\u5584\u30D7\u30E9\u30F3\u306B\u52A0\u3048\u308B FR-Designer_Preference-Function=\u30D5\u30A1\u30F3\u30AF\u30B7\u30E7\u30F3\u8A2D\u5B9A FR-Designer_max_undo_limit=\u6700\u5927\u53D6\u308A\u6D88\u3057\u56DE\u6570 FR-Designer_Surport_String_To_Formula=\u30AD\u30E3\u30E9\u30AF\u30BF\u30FC\u6587\u5B57\u5217\u7DE8\u96C6\u3092\u516C\u5F0F\u3068\u3059\u308B\u3053\u3068\u306B\u30B5\u30DD\u30FC\u30C8 @@ -545,52 +537,31 @@ FR-Designer_Show_As_Download=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30EA\u30F3\u3 FR-Designer_File_Name_For_Download=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30D5\u30A1\u30A4\u30EB\u540D FR-Designer_No=\u3044\u3044\u3048 FR-Designer_Pagination=\u30DA\u30FC\u30B8\u30F3\u30B0 -FR-Designer_DS_TableData=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 +FR-Designer-Move_Tab_First= +FR-Designer-Move_Tab_End= +FR-Designer-Move_Tab_Next= +FR-Designer-Move_Tab_Prev= +FR-Designer_DS_TableData=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 FR-Designer_Parameter-Formula=\u6570\u5F0F -FR-Designer_Background_Null=\u80CC\u666F\u306A\u3057 -FR-Designer_Background_Color=\u8272 -FR-Designer_Background_Texture=\u30C6\u30AF\u30B9\u30C1\u30E3 -FR-Designer_Background_Pattern=\u30D1\u30BF\u30FC\u30F3 -FR-Designer_Background_Gradient_Color=\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3 -FR-Designer_Background_Image=\u753B\u50CF -FR-Designer_Background_Clear=\u30AF\u30EA\u30A2 -FR-Designer_Background_Image_Select=\u753B\u50CF\u9078\u629E -FR-Designer_Initial_Background_Tips=\u30DC\u30BF\u30F3\u306E\u521D\u671F\u80CC\u666F -FR-Designer_Mouse_Move_Tips=\u30DE\u30A6\u30B9\u304C\u30DC\u30BF\u30F3\u306B\u79FB\u3059\u6642\u5909\u5316\u3059\u308B\u80CC\u666F -FR-Designer_Mouse_Click_Tips=\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u6642\u5909\u5316\u3059\u308B\u80CC\u666F -FR-Designer-Move_Tab_First=\u30C8\u30C3\u30D7\u306B\u79FB\u3059 -FR-Designer-Move_Tab_End=\u6700\u5F8C\u306B\u79FB\u3059 -FR-Designer-Move_Tab_Next=\u5F8C\u308D\u306B\u79FB\u3059 -FR-Designer-Move_Tab_Prev=\u524D\u306B\u79FB\u3059 +FR-Designer_Background_Null= +FR-Designer_Background_Color= +FR-Designer_Background_Texture= +FR-Designer_Background_Pattern= +FR-Designer_Background_Gradient_Color= +FR-Designer_Background_Image= +FR-Designer_Background_Clear= +FR-Designer_Background_Image_Select= +FR-Designer_Initial_Background_Tips= +FR-Designer_Mouse_Move_Tips= +FR-Designer_Too_Large_To_Paste=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30B5\u30A4\u30BA\u306F\u30DC\u30FC\u30C0\u30FC\u306B\u8D85\u3048\u305F\u306E\u3067\u3001\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\uFF01 +FR-Designer_Too_Small_To_Paste=\u8A72\u5F53\u51E6\u306B\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\u3001\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30B5\u30A4\u30BA\u306F\u9AD8\u3059\u304E\uFF01 +FR-Designer_Mouse_Click_Tips= +FR-Designer_Plugin_Should_Update_Please_Contact_Developer= FR-Designer_AxisReversed=\u8EF8\u9006\u9806 FR-Designer_Logarithmic=\u5BFE\u6570\u76EE\u76DB\u308A FR-Designer_Chart_Log_Base=\u5E95\u6570 FR-Designer_Chart_F_Radar_Axis=\u5782\u76F4\u8EF8 -FR-Designer_Too_Large_To_Paste=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30B5\u30A4\u30BA\u306F\u30DC\u30FC\u30C0\u30FC\u306B\u8D85\u3048\u305F\u306E\u3067\u3001\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\uFF01 -FR-Designer_Too_Small_To_Paste=\u8A72\u5F53\u51E6\u306B\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\u3001\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30B5\u30A4\u30BA\u306F\u9AD8\u3059\u304E\uFF01 -FR-Designer_DoubleLayer_Report=\u4E8C\u968E\u30BF\u30A4\u30C8\u30EB -FR-Designer_Printer_Native_Button=\u30ED\u30FC\u30AB\u30EB\u5370\u5237 -FR-Designer_Mobile-Warning=\u6700\u5927\u306E\u9AD8\u3055\u306F\u8868\u793A\u30A8\u30EA\u30A2\u306E80\uFF05\u4EE5\u4E0A\u306B\u306A\u308A\u307E\u305B\u3093 -FR-Designer_Form-Fit-Tip=\u81EA\u5DF1\u9069\u5FDC\u30D7\u30E9\u30B0\u30A4\u30F3 -FR-Designer_Form-Forzen-Speed=\u3001\u305D\u3057\u3066\u6A2A\u65B9\u5411\u81EA\u5DF1\u9069\u5FDC\u307E\u305F\u306F2\u65B9\u5411\u81EA\u52D5\u9069\u5FDC\u3092\u5229\u7528\u3057\u3001\u5E33\u7968\u8868\u793A\u306E\u30B9\u30D4\u30FC\u30C9\u3092\u4E0A\u3052\u3067\u304D\u307E\u3059\u3002 -FR-Designer_Mobile_Form_Analysis_Annotation=\u8AAC\u660E\:\u8A72\u5F53\u8A2D\u5B9A\u3088\u308A\u3001\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u30A2\u30D7\u30EA\u3067\u306E\u89E3\u6790\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3002 -FR-Designer_TableData-Default-Para=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF -FR-Designer-Selected_Widget=\u5F53\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 -FR-Designer_Plugin_Should_Update_Please_Contact_Developer=\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u4F4E\u3044\u3067\u3059\u304C\u3001\u4E0D\u5177\u5408\u304C\u3067\u3063\u305F\u3001\u958B\u767A\u8005\u3068\u9023\u7D61\u3057\u3066\u304F\u3060\u3055\u3044\u3002 -FR-Designer_SimpleCross_Report=\u7C21\u5358\u30AF\u30ED\u30FC\u30B9\u8868 -FR-Designer_Button-Cancel=\u53D6\u308A\u6D88\u3057 -FR-Designer_Delete_Template=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u524A\u9664 -FR-Designer_Install_Template=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB -FR-Designer_SimpleDetail_Report=\u7C21\u5358\u660E\u7D30\u8868 -FR-Designer_LocalWidget=\u30ED\u30FC\u30AB\u30EB\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u30E9\u30A4\u30D6\u30E9\u30EA -FR-Designer_WidgetOrder=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u9806\u756A -FR-Designer_Form-Frozen-Tip=\u30D5\u30EA\u30FC\u30BA\u3092\u4F7F\u3046\u6642\u3001\u5F8C\u8A18\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3066\u304F\u3060\u3055\u3044\uFF1A -FR-Designer-Invalid_Page_Number=\u7121\u52B9\u306A\u30DA\u30FC\u30B8\u756A\u53F7 -FR-Designer_Reset=\u30EA\u30BB\u30C3\u30C8 -FR-Designer-Plugin_Please_Update_Jar=jar\u30D1\u30C3\u30AF\u3092\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3057\u3066\u304F\u3060\u3055\u3044 -FR-Designer_Get-CubeGetting cube= -FR-Designer_Mobile_Report_Analysis_Annotation=\u8AAC\u660E\:\u8A72\u5F53\u5C5E\u6027\u3088\u308A\u3001\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u30A2\u30D7\u30EA\u3067\u306E\u89E3\u6790\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3001\u9801\u5206\u3051\u30D7\u30EC\u30D3\u30E5\u30FC\u3060\u3051\u3092\u652F\u6301\u3001\u66F8\u304D\u8FBC\u307F\u306B\u8A2D\u5B9A\u3059\u308B\u6642\u7121\u52B9\u306B\u306A\u308A\u307E\u3059\u3002 -FR-Designer_Properties_Mobile=\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u5C5E\u6027 -FR-Designer_Button-OK=\u5206\u304B\u308A\u307E\u3057\u305F -FR-Designer_Allow-Blank=\u7A7A\u306B\u8A31\u3059 -FR-Designer_AllCategories=\u5168\u3066\u306E\u7A2E\u985E +FR-Designer_Style=\u30B9\u30BF\u30A4\u30EB +FR-Designer_Color=\u8272 +FR-Designer_Border=\u67A0 +FR-Designer_Background-Pattern=\u30D1\u30BF\u30FC\u30F3 \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties index c0c8e9e71d..075b017ab1 100644 --- a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties +++ b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties @@ -91,7 +91,6 @@ FR-Designer_DS-Dictionary=\uB370\uC774\uD130\uC0AC\uC804 FR-Designer_Data-confusion=\uB370\uC774\uD130\uD63C\uD569 FR-Designer_Data_Type=\uB370\uC774\uD130\uC720\uD615 FR-Designer_Double_Click_Edit_OR_Clear=\uB354\uBE14\uD074\uB9AD\uD558\uC5EC\uD3B8\uC9D1\uB610\uB294\uD074\uB9AC\uC5B4\uC2E4\uD589 -FR-Designer_Edit_Button_ToolBar=\uD0A4\uAC00\uC788\uB294\uD234\uBC14\uD3B8\uC9D1 FR-Designer_Email=\uBA54\uC77C FR-Designer_Enabled=\uC0AC\uC6A9\uAC00\uB2A5 FR-Designer_End-Date=\uC885\uB8CC\uB0A0\uC9DC @@ -163,7 +162,6 @@ FR-Designer_Refresh_Parameter_In_SQL=SQL\uC758\uB9E4\uAC1C\uBCC0\uC218\uB97C\uC0 FR-Designer_Reg_Expressions=\uC815\uADDC\uD45C\uD604\uC2DD FR-Designer_Reg_Max_Length=\uCD5C\uB300\uAE38\uC774 FR-Designer_Reg_Min_Length=\uCD5C\uC18C\uAE38\uC774 -FR-Designer_Remove_Button_ToolBar=\uD0A4\uAC00\uC788\uB294\uD234\uBC14\uC81C\uAC70 FR-Designer_ReportColumns-Columns=\uC140\uB098\uB204\uAE30 FR-Designer_Return-Date=\uB0A0\uC9DC\uB3CC\uC544\uAC00\uAE30 FR-Designer_RichText=\uB9AC\uCE58\uD14D\uC2A4\uD2B8\uBC15\uC2A4\uC0BD\uC785 @@ -553,49 +551,12 @@ FR-Designer_Background_Image_Select= FR-Designer_Initial_Background_Tips= FR-Designer_Mouse_Move_Tips= FR-Designer_Mouse_Click_Tips= -FR-Designer-Move_Tab_First= -FR-Designer-Move_Tab_End= -FR-Designer-Move_Tab_Next= -FR-Designer-Move_Tab_Prev= +FR-Designer_Plugin_Should_Update_Please_Contact_Developer= FR-Designer_AxisReversed=\uCD95\uC5ED\uC21C FR-Designer_Logarithmic=\uB85C\uADF8\uB208\uAE08 FR-Designer_Chart_Log_Base=\uAE30\uC218 FR-Designer_Chart_F_Radar_Axis=\uAC12\uCD95 -FR-Designer_COMMUNITY_VIDEO= -FR-Designer_DoubleLayer_Report= -FR-Designer_Too_Small_To_Paste= -FR-Designer_formDesignerModule= -FR-Designer_Mobile-Warning= -FR-Designer_Mobile-Open= -FR-Designer_Form-Fit-Tip= -FR-Designer_Form-Forzen-Speed= -FR-Designer_Mobile_Form_Analysis_Annotation= -FR-Designer_Too_Large_To_Paste= -FR-Designer_COMMUNITY_HELP= -FR-Designer_Validate= -FR-Designer_Button-Cancel= -FR-Designer_Plugin_Should_Update_Please_Contact_Developer= -FR-Designer_COMMUNITY_QUESTIONS= -FR-Designer_SimpleCross_Report= -FR-Designer_COMMUNITY_NEED= -FR-Designer_Delete_Template= -FR-Designer_TableData-Default-Para= -FR-Designer_Allow-Blank= -FR-Designer_LocalWidget= -FR-Designer_WidgetOrder= -FR-Designer_Form-Frozen-Tip= -FR-Designer_Mobile-Horizontal= -FR-Designer-Invalid_Page_Number= -FR-Designer_COMMUNITY_BBS= -FR-Designer_COMMUNITY_SIGN= -FR-Designer_COMMUNITY_UPDATE= -FR-Designer_Mobile-Vertical= -FR-Designer_Get-CubeGetting cube= -FR-Designer_COMMUNITY= -FR-Designer_Mobile_Report_Analysis_Annotation= -FR-Designer_Properties_Mobile= -FR-Designer_Button-OK= -FR-Designer_COMMUNITY_BUG= -FR-Designer_AllCategories= -FR-Designer_Mobile-Attr= -FR-Designer_Mobile-Zoom= +FR-Designer_Style=\uC591\uC2DD +FR-Designer_Color=\uC0C9 +FR-Designer_Border=\uD14C\uB450\uB9AC +FR-Designer_Background-Pattern=\uC774\uBBF8\uC9C0 \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index f4fbdd11ad..d0a2b05203 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -91,7 +91,6 @@ FR-Designer_DS-Dictionary=\u6570\u636E\u5B57\u5178 FR-Designer_Data-confusion=\u6570\u636E\u6DF7\u6DC6 FR-Designer_Data_Type=\u6570\u636E\u7C7B\u578B FR-Designer_Double_Click_Edit_OR_Clear=\u53CC\u51FB\u8FDB\u884C\u7F16\u8F91\u6216\u6E05\u9664 -FR-Designer_Edit_Button_ToolBar=\u7F16\u8F91\u6309\u94AE\u6240\u5728\u5DE5\u5177\u680F FR-Designer_Email=\u90AE\u4EF6 FR-Designer_Enabled=\u53EF\u7528 FR-Designer_End-Date=\u7ED3\u675F\u65E5\u671F @@ -164,7 +163,6 @@ FR-Designer_Refresh_Parameter_In_SQL=\u662F\u5426\u5237\u65B0SQL\u4E2D\u7684\u53 FR-Designer_Reg_Expressions=\u6B63\u5219\u8868\u8FBE\u5F0F FR-Designer_Reg_Max_Length=\u6700\u5927\u957F\u5EA6 FR-Designer_Reg_Min_Length=\u6700\u5C0F\u957F\u5EA6 -FR-Designer_Remove_Button_ToolBar=\u79FB\u9664\u6309\u94AE\u6240\u5728\u5DE5\u5177\u680F FR-Designer_ReportColumns-Columns=\u5206\u680F FR-Designer_Return-Date=\u8FD4\u56DE\u65E5\u671F FR-Designer_RichText=\u63D2\u5165\u5BCC\u6587\u672C @@ -590,15 +588,15 @@ FR-Designer_Background_Image_Select=\u9009\u62E9\u56FE\u7247 FR-Designer_Initial_Background_Tips=\u6309\u94AE\u7684\u521D\u59CB\u80CC\u666F FR-Designer_Mouse_Move_Tips=\u9F20\u6807\u79FB\u52A8\u5230\u6309\u94AE\u4E0A\u7684\u80CC\u666F\uFF0C\u82E5\u65E0\u5219\u4E0D\u6539\u53D8\u80CC\u666F FR-Designer_Mouse_Click_Tips=\u9F20\u6807\u70B9\u51FB\u6309\u94AE\u65F6\u80CC\u666F\uFF0C\u82E5\u65E0\u5219\u4E0D\u6539\u53D8\u80CC\u666F -FR-Designer-Move_Tab_First=\u79FB\u52A8\u5230\u9996\u4F4D -FR-Designer-Move_Tab_End=\u79FB\u52A8\u5230\u672B\u5C3E -FR-Designer-Move_Tab_Next=\u5F80\u540E\u79FB\u52A8 -FR-Designer-Move_Tab_Prev=\u5F80\u524D\u79FB\u52A8 + +FR-Designer_Too_Large_To_Paste=\u7EC4\u4EF6\u5927\u5C0F\u8D85\u51FA\u8FB9\u754C\uFF0C\u65E0\u6CD5\u7C98\u8D34\uFF01 +FR-Designer_Too_Small_To_Paste=\u6B64\u5904\u65E0\u6CD5\u7C98\u8D34\uFF0C\u5C0F\u4E8E\u7EC4\u4EF6\u6700\u5C0F\u9AD8\u5EA6\uFF01 + FR-Designer_AxisReversed=\u8F74\u9006\u5E8F FR-Designer_Logarithmic=\u5BF9\u6570\u523B\u5EA6 FR-Designer_Chart_Log_Base=\u5E95\u6570 FR-Designer_Chart_F_Radar_Axis=\u503C\u8F74 -FR-Designer_Too_Large_To_Paste=\u7EC4\u4EF6\u5927\u5C0F\u8D85\u51FA\u8FB9\u754C\uFF0C\u65E0\u6CD5\u7C98\u8D34\uFF01 -FR-Designer_Too_Small_To_Paste=\u6B64\u5904\u65E0\u6CD5\u7C98\u8D34\uFF0C\u5C0F\u4E8E\u7EC4\u4EF6\u6700\u5C0F\u9AD8\u5EA6\uFF01 - -FR-Designer_Get-CubeGetting cube= +FR-Designer_Style=\u6837\u5F0F +FR-Designer_Color=\u989C\u8272 +FR-Designer_Border=\u8FB9\u6846 +FR-Designer_Background-Pattern=\u56FE\u6848 \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index 58c4e13fa6..bbaf3db36d 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -91,7 +91,6 @@ FR-Designer_DS-Dictionary=\u8CC7\u6599\u5B57\u5178 FR-Designer_Data-confusion=\u8CC7\u6599\u6DF7\u6DC6 FR-Designer_Data_Type=\u8CC7\u6599\u985E\u578B FR-Designer_Double_Click_Edit_OR_Clear=\u96D9\u64CA\u9032\u884C\u7DE8\u8F2F\u6216\u6E05\u9664 -FR-Designer_Edit_Button_ToolBar=\u7DE8\u8F2F\u6309\u9215\u6240\u5728\u5DE5\u5177\u6B04 FR-Designer_Email=\u90F5\u4EF6 FR-Designer_Enabled=\u53EF\u7528 FR-Designer_End-Date=\u7D50\u675F\u65E5\u671F @@ -163,7 +162,6 @@ FR-Designer_Refresh_Parameter_In_SQL=\u5728SQL\u4E2D\u91CD\u65B0\u6574\u7406\u76 FR-Designer_Reg_Expressions=\u6B63\u5247\u8868\u9054\u5F0F FR-Designer_Reg_Max_Length=\u6700\u5927\u9577\u5EA6 FR-Designer_Reg_Min_Length=\u6700\u5C0F\u9577\u5EA6 -FR-Designer_Remove_Button_ToolBar=\u79FB\u9664\u6309\u9215\u6240\u5728\u5DE5\u5177\u6B04 FR-Designer_ReportColumns-Columns=\u5831\u8868\u6B04\u4F4D FR-Designer_Return-Date=\u8FD4\u56DE\u65E5\u671F FR-Designer_RichText= RTF @@ -567,38 +565,24 @@ FR-Designer_Plugin_Should_Update_Please_Contact_Developer=\u633F\u4EF6\u7248\u67 FR-Designer_WidgetOrder=\u63A7\u4EF6\u9806\u5E8F FR-Designer_Mobile_Form_Analysis_Annotation=\u6CE8\u91CB\uFF1A\u53EF\u4EE5\u901A\u904E\u8A72\u5C6C\u6027\u63A7\u5236\u8868\u55AE\u5728APP\u4E2D\u7684\u89E3\u6790\u65B9\u5F0F\u3002 FR-Designer_Mobile_Report_Analysis_Annotation=\u6CE8\u91CB\uFF1A\u53EF\u4EE5\u901A\u904E\u8A72\u5C6C\u6027\u63A7\u5236\u5831\u8868\u5728APP\u4E2D\u7684\u89E3\u6790\u65B9\u5F0F\uFF0C\u53EA\u652F\u6301\u5206\u9801\u9810\u89BD\uFF0C\u586B\u5831\u9810\u89BD\u6642\u5C6C\u6027\u7121\u6548\u3002 - -FR-Designer_Background_Null=\u6C92\u6709\u80CC\u666F -FR-Designer_Background_Color=\u984F\u8272 -FR-Designer_Background_Texture=\u7D0B\u7406 -FR-Designer_Background_Pattern=\u5716\u6848 -FR-Designer_Background_Gradient_Color=\u6F38\u8B8A\u8272 -FR-Designer_Background_Image=\u5716\u7247 -FR-Designer_Background_Clear=\u6E05\u9664 -FR-Designer_Background_Image_Select=\u9078\u64C7\u5716\u7247 -FR-Designer_Initial_Background_Tips=\u6309\u9215\u7684\u521D\u59CB\u80CC\u666F -FR-Designer_Mouse_Move_Tips=\u6ED1\u9F20\u79FB\u52D5\u5230\u6309\u9215\u4E0A\u7684\u80CC\u666F\uFF0C\u82E5\u7121\u5247\u4E0D\u6539\u8B8A\u80CC\u666F -FR-Designer_Mouse_Click_Tips=\u6ED1\u9F20\u9EDE\u64CA\u6309\u9215\u6642\u80CC\u666F\uFF0C\u82E5\u7121\u5247\u4E0D\u6539\u8B8A\u80CC\u666F -FR-Designer-Move_Tab_First=\u79FB\u52D5\u5230\u9996\u4F4D -FR-Designer-Move_Tab_End=\u79FB\u52D5\u5230\u672B\u5C3E -FR-Designer-Move_Tab_Next=\u5F80\u5F8C\u79FB\u52D5 -FR-Designer-Move_Tab_Prev=\u5F80\u524D\u79FB\u52D5 +FR-Designer_Background_Null= +FR-Designer_Background_Color= +FR-Designer_Background_Texture= +FR-Designer_Background_Pattern= +FR-Designer_Background_Gradient_Color= +FR-Designer_Background_Image= +FR-Designer_Background_Clear= +FR-Designer_Background_Image_Select= +FR-Designer_Too_Large_To_Paste=\u7D44\u4EF6\u5927\u5C0F\u8D85\u51FA\u908A\u754C\uFF0C\u7121\u6CD5\u7C98\u8CBC\uFF01 +FR-Designer_Too_Small_To_Paste=\u6B64\u8655\u7121\u6CD5\u7C98\u8CBC\uFF0C\u5C0F\u65BC\u7D44\u4EF6\u6700\u5C0F\u9AD8\u5EA6\uFF01 +FR-Designer_Initial_Background_Tips= +FR-Designer_Mouse_Move_Tips= +FR-Designer_Mouse_Click_Tips= FR-Designer_AxisReversed=\u8EF8\u9006\u5E8F FR-Designer_Logarithmic=\u5C0D\u6578\u523B\u5EA6 FR-Designer_Chart_Log_Base=\u5E95\u6578 FR-Designer_Chart_F_Radar_Axis=\u503C\u8EF8 -FR-Designer_Too_Large_To_Paste=\u7D44\u4EF6\u5927\u5C0F\u8D85\u51FA\u908A\u754C\uFF0C\u7121\u6CD5\u7C98\u8CBC\uFF01 -FR-Designer_Too_Small_To_Paste=\u6B64\u8655\u7121\u6CD5\u7C98\u8CBC\uFF0C\u5C0F\u65BC\u7D44\u4EF6\u6700\u5C0F\u9AD8\u5EA6\uFF01 -FR-Designer_Download_Template= -FR-Designer-Selected_Widget= -FR-Designer_LocalWidget= -FR-Designer_Get-CubeGetting cube= -FR-Designer_Install_Template= -FR-Designer_Reset= -FR-Designer_SimpleCross_Report= -FR-Designer_Allow-Blank= -FR-Designer_AllCategories= -FR-Designer_SimpleDetail_Report= -FR-Designer_DoubleLayer_Report= -FR-Designer_Delete_Template= -FR-Designer_Validate= +FR-Designer_Style=\u6A23\u5F0F +FR-Designer_Color=\u984F\u8272 +FR-Designer_Border=\u6846\u7DDA +FR-Designer_Background-Pattern=\u5716\u6848 \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/JTemplate.java b/designer_base/src/com/fr/design/mainframe/JTemplate.java index e28090299e..48371c7871 100644 --- a/designer_base/src/com/fr/design/mainframe/JTemplate.java +++ b/designer_base/src/com/fr/design/mainframe/JTemplate.java @@ -372,7 +372,7 @@ public abstract class JTemplate> ex } protected boolean accept(Object o){ - return true; + return true; } private void fireSuperTargetModified() { @@ -488,15 +488,15 @@ public abstract class JTemplate> ex collectInfo(); return this.saveFile(); } - + private boolean isCancelOperation(int operation){ - return operation == FILEChooserPane.CANCEL_OPTION || - operation == FILEChooserPane.JOPTIONPANE_CANCEL_OPTION; + return operation == FILEChooserPane.CANCEL_OPTION || + operation == FILEChooserPane.JOPTIONPANE_CANCEL_OPTION; } - + private boolean isOkOperation(int operation){ - return operation == FILEChooserPane.JOPTIONPANE_OK_OPTION || - operation == FILEChooserPane.OK_OPTION; + return operation == FILEChooserPane.JOPTIONPANE_OK_OPTION || + operation == FILEChooserPane.OK_OPTION; } private boolean saveAsTemplate(boolean isShowLoc) { @@ -513,8 +513,8 @@ public abstract class JTemplate> ex if (isCancelOperation(chooseResult)) { fileChooser = null; return false; - } - + } + if (isOkOperation(chooseResult)) { if (!FRContext.getCurrentEnv().hasFileFolderAllow(fileChooser.getSelectedFILE().getPath()) ) { JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("FR-Designer_No-Privilege") + "!", Inter.getLocText("FR-Designer_Message"), JOptionPane.WARNING_MESSAGE); @@ -524,41 +524,40 @@ public abstract class JTemplate> ex mkNewFile(editingFILE); fileChooser = null; } - + return saveNewFile(editingFILE, oldName); } - - protected boolean saveNewFile(FILE editingFILE, String oldName){ - // 在保存之前,初始化 templateID - initForCollect(); // 如果保存新模板(新建模板直接保存,或者另存为),则添加 templateID + protected boolean saveNewFile(FILE editingFILE, String oldName){ this.editingFILE = editingFILE; + boolean result = this.saveFile(); if (result) { DesignerFrameFileDealerPane.getInstance().refresh(); + initForCollect(); // 如果保存新模板(新建模板直接保存,或者另存为),则添加 templateID collectInfo(); } //更换最近打开 DesignerEnvManager.getEnvManager().replaceRecentOpenedFilePath(oldName, this.getFullPathName()); return result; } - + protected void mkNewFile(FILE file){ try { - file.mkfile(); + file.mkfile(); } catch (Exception e) { FRContext.getLogger().error(e.getMessage(), e); } } - + /** - * 将模板另存为可以分享出去的混淆后内置数据集模板 - * - * @return 是否另存成功 - * - */ + * 将模板另存为可以分享出去的混淆后内置数据集模板 + * + * @return 是否另存成功 + * + */ public boolean saveShareFile(){ - return true; + return true; } public Widget getSelectElementCase(){ return new NoneWidget(); @@ -763,7 +762,7 @@ public abstract class JTemplate> ex public void revert() { } - + private int getVersionCompare(String versionString){ if (StringUtils.isBlank(versionString)) { return 0; @@ -773,7 +772,7 @@ public abstract class JTemplate> ex return ComparatorUtils.compare(versionString.substring(0, len), ProductConstants.DESIGNER_VERSION.substring(0, len)); } - + private int getVersionCompareHBB(String versionString){ if (StringUtils.isBlank(versionString)) { return 0; @@ -781,17 +780,17 @@ public abstract class JTemplate> ex return ComparatorUtils.compare(versionString, "HBB"); } - + private boolean isHigherThanCurrent(String versionString) { return getVersionCompare(versionString) > 0; } - + private boolean isLowerThanCurrent(String versionString) { - return getVersionCompare(versionString) < 0; + return getVersionCompare(versionString) < 0; } - + private boolean isLowerThanHBB(String versionString) { - return getVersionCompareHBB(versionString) < 0; + return getVersionCompareHBB(versionString) < 0; } /** @@ -801,7 +800,7 @@ public abstract class JTemplate> ex public boolean isNewDesigner() { String xmlDesignerVersion = getTarget().getXMLDesignerVersion(); if (isLowerThanHBB(xmlDesignerVersion)) { - String info = Inter.getLocText("FR-Designer_open-new-form-tip"); + String info = Inter.getLocText("FR-Designer_open-new-form-tip"); String moreInfo = Inter.getLocText("FR-Designer_Server-version-tip-moreInfo"); new InformationWarnPane(info, moreInfo, Inter.getLocText("FR-Designer_Tooltips")).show(); return true; @@ -855,13 +854,13 @@ public abstract class JTemplate> ex * @return 是则返回true */ public abstract boolean isJWorkBook(); - + /** * 返回当前支持的超链界面pane * @return 超链连接界面 */ public HyperlinkGroupPane getHyperLinkPane() { - return new HyperlinkGroupPane(); + return new HyperlinkGroupPane(); } /** @@ -916,29 +915,29 @@ public abstract class JTemplate> ex public void requestGridFocus() { } - + /** - * 创建内置sql提交的pane - * - * @return 内置sql提交的pane - * - * - * @date 2014-10-14-下午7:39:27 - */ + * 创建内置sql提交的pane + * + * @return 内置sql提交的pane + * + * + * @date 2014-10-14-下午7:39:27 + */ public DBManipulationPane createDBManipulationPane(){ - return new DBManipulationPane(); + return new DBManipulationPane(); } - + /** * 创建控件事件里内置sql提交的pane - * + * * @return 内置sql提交的pane - * + * * * @date 2014-10-14-下午7:39:27 */ public DBManipulationPane createDBManipulationPaneInWidget(){ - return new DBManipulationInWidgetEventPane(); + return new DBManipulationInWidgetEventPane(); } /** @@ -966,15 +965,15 @@ public abstract class JTemplate> ex public void styleChange(){ } - + /** - * 创建分享模板的按钮, 目前只有jworkbook实现了 - * - * @return 分享模板按钮 - * - */ + * 创建分享模板的按钮, 目前只有jworkbook实现了 + * + * @return 分享模板按钮 + * + */ public UIButton[] createShareButton(){ - return new UIButton[0]; + return new UIButton[0]; } /** diff --git a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index e5c6688ec9..b9b7aa194e 100644 --- a/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer_base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -73,6 +73,8 @@ public class TemplateInfoCollector implements Serializable { } catch (InvalidClassException ex) { // 如果 TemplateInfoCollecor 类结构有改动,则放弃之前收集的数据(下次保存时覆盖) // 这种情况主要在开发、测试过程中遇到,正式上线后不应该出现 + FRLogger.getLogger().info(ex.getMessage()); + FRLogger.getLogger().info("use a new instance"); instance = new TemplateInfoCollector(); } catch (Exception ex) { @@ -121,6 +123,14 @@ public class TemplateInfoCollector implements Serializable { private void saveInfo() { try { ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(getInfoFile())); + String log = ""; + int count = 1; + for (String key : templateInfoList.keySet()) { + String createTime = ((HashMap)templateInfoList.get(key).get("consumingMap")).get("create_time").toString(); + log += (count + ". id: " + key + " " + createTime + "\n" + templateInfoList.get(key).toString() + "\n"); + count ++; + } + FRLogger.getLogger().info("writing tplInfo: \n" + log); os.writeObject(instance); os.close(); } catch (Exception ex) { @@ -231,7 +241,10 @@ public class TemplateInfoCollector implements Serializable { String jsonProcessMap = templateInfo.get("jsonProcessMap"); if (sendSingleTemplateInfo(consumingUrl, jsonConsumingMap) && sendSingleTemplateInfo(processUrl, jsonProcessMap)) { // 清空记录 + FRLogger.getLogger().info("successfully send " + templateInfo.get("templateID")); removeFromTemplateInfoList(templateInfo.get("templateID")); + } else { + FRLogger.getLogger().info("send template info failed, will try next time, " + templateInfo.get("templateID")); } } saveInfo(); @@ -290,6 +303,7 @@ public class TemplateInfoCollector implements Serializable { private void removeFromTemplateInfoList(String key) { templateInfoList.remove(key); + FRLogger.getLogger().info(key + " is removed..."); } @SuppressWarnings("unchecked") diff --git a/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java b/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java index 88a6b528ec..8a157f0843 100644 --- a/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java +++ b/designer_chart/src/com/fr/design/chart/axis/MinMaxValuePane.java @@ -31,17 +31,18 @@ public class MinMaxValuePane extends JPanel { protected UITextField secUnitField; public MinMaxValuePane() { - minCheckBox = new UICheckBox(Inter.getLocText(new String[]{"Custom", "Min_Value"})); - minValueField = new UITextField(6); - maxCheckBox = new UICheckBox(Inter.getLocText(new String[]{"Custom", "Max_Value"})); - maxValueField = new UITextField(6); - isCustomMainUnitBox = new UICheckBox(Inter.getLocText("FR-Chart_MainGraduationUnit")); - mainUnitField = new UITextField(6); - isCustomSecUnitBox = new UICheckBox(Inter.getLocText("FR-Chart_SecondGraduationUnit")); - secUnitField = new UITextField(6); + minCheckBox = new UICheckBox(Inter.getLocText(new String[]{"Custom", "Min_Value"})); + minValueField = new UITextField(6); + maxCheckBox = new UICheckBox(Inter.getLocText(new String[]{"Custom", "Max_Value"})); + maxValueField = new UITextField(6); + isCustomMainUnitBox = new UICheckBox(Inter.getLocText("FR-Chart_MainGraduationUnit")); + mainUnitField = new UITextField(6); + isCustomSecUnitBox = new UICheckBox(Inter.getLocText("FR-Chart_SecondGraduationUnit")); + secUnitField = new UITextField(6); + double p = TableLayout.PREFERRED; double f = TableLayout.FILL; - double[] columnSize = { p, f }; + double[] columnSize = {p, f}; Component[][] components = getPanelComponents(); JPanel panel = TableLayoutHelper.createTableLayoutPane(components, getRowSize(p), columnSize); @@ -53,25 +54,26 @@ public class MinMaxValuePane extends JPanel { protected double[] getRowSize(double p) { return new double[]{p, p, p, p}; } - protected void addComponentListener(Component[][] components) { - for (int i = 0; i < components.length; i++) { - addListener((UICheckBox) components[i][0]); - ChartSwingUtils.addListener((UICheckBox) components[i][0], (UITextField) components[i][1]); - } - } - protected void addListener(UICheckBox checkBox) { - checkBox.addActionListener(new ActionListener() { + protected void addComponentListener(Component[][] components) { + for (int i = 0; i < components.length; i++) { + addListener((UICheckBox) components[i][0]); + ChartSwingUtils.addListener((UICheckBox) components[i][0], (UITextField) components[i][1]); + } + } + + protected void addListener(UICheckBox checkBox) { + checkBox.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - checkBoxUse(); - } - }); - } + @Override + public void actionPerformed(ActionEvent e) { + checkBoxUse(); + } + }); + } protected Component[][] getPanelComponents() { - return new Component[][]{ + return new Component[][]{ new Component[]{minCheckBox, minValueField}, new Component[]{maxCheckBox, maxValueField}, new Component[]{isCustomMainUnitBox, mainUnitField}, From ee26840e533eb0e8298df11bf72f208e1a0d8a9e Mon Sep 17 00:00:00 2001 From: plough Date: Tue, 2 May 2017 17:15:51 +0800 Subject: [PATCH 73/76] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/mainframe/JTemplate.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/JTemplate.java b/designer_base/src/com/fr/design/mainframe/JTemplate.java index 48371c7871..a275d3d5df 100644 --- a/designer_base/src/com/fr/design/mainframe/JTemplate.java +++ b/designer_base/src/com/fr/design/mainframe/JTemplate.java @@ -529,12 +529,13 @@ public abstract class JTemplate> ex } protected boolean saveNewFile(FILE editingFILE, String oldName){ - this.editingFILE = editingFILE; + // 在保存之前,初始化 templateID + initForCollect(); // 如果保存新模板(新建模板直接保存,或者另存为),则添加 templateID + this.editingFILE = editingFILE; boolean result = this.saveFile(); if (result) { DesignerFrameFileDealerPane.getInstance().refresh(); - initForCollect(); // 如果保存新模板(新建模板直接保存,或者另存为),则添加 templateID collectInfo(); } //更换最近打开 @@ -1028,4 +1029,4 @@ public abstract class JTemplate> ex return uiButtons; } -} \ No newline at end of file +} From 53f18866a267b3a97979306dc3dc73948089792d Mon Sep 17 00:00:00 2001 From: plough Date: Tue, 2 May 2017 17:35:07 +0800 Subject: [PATCH 74/76] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=EF=BC=8C=E6=8A=8Arelease=E3=80=81ma?= =?UTF-8?q?ster=E4=B8=AD=E7=9A=84key=E5=90=88=E5=B9=B6=E5=88=B0dev?= =?UTF-8?q?=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/locale/designer.properties | 7 ++++ .../design/locale/designer_en_US.properties | 8 ++++ .../design/locale/designer_ja_JP.properties | 34 +++++++++++++++- .../design/locale/designer_ko_KR.properties | 40 ++++++++++++++++++- .../design/locale/designer_zh_CN.properties | 4 +- .../design/locale/designer_zh_TW.properties | 16 +++++++- 6 files changed, 105 insertions(+), 4 deletions(-) diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index cc75cee8ac..0ec6015c8f 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -600,3 +600,10 @@ FR-Designer_Style=Style FR-Designer_Color=Color FR-Designer_Border=Border FR-Designer_Background-Pattern=Pattern + +FR-Designer_Properties_Mobile= +FR-Designer_Edit_Button_ToolBar= +FR-Designer_Remove_Button_ToolBar= +FR-Designer_Get-CubeGetting= +FR-Designer_Oracle= +FR-Designer_Validate= diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index 1c646aebeb..b7c7fe3260 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -601,3 +601,11 @@ FR-Designer_Color=Color FR-Designer_Border=Border FR-Designer_Background-Pattern=Pattern + +FR-Designer_SimpleDetail_Report= +FR-Designer_SimpleCross_Report= +FR-Designer_Edit_Button_ToolBar=Edit Button ToolBar +FR-Designer_Remove_Button_ToolBar=Remove Button ToolBar +FR-Designer_Get-CubeGetting= +FR-Designer_DoubleLayer_Report= +FR-Designer_Get-Cube= diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index 2f4affb916..99070465e4 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -564,4 +564,36 @@ FR-Designer_Chart_F_Radar_Axis=\u5782\u76F4\u8EF8 FR-Designer_Style=\u30B9\u30BF\u30A4\u30EB FR-Designer_Color=\u8272 FR-Designer_Border=\u67A0 -FR-Designer_Background-Pattern=\u30D1\u30BF\u30FC\u30F3 \ No newline at end of file +FR-Designer_Background-Pattern=\u30D1\u30BF\u30FC\u30F3 +FR-Designer_Printer_Native_Button=\u30ED\u30FC\u30AB\u30EB\u5370\u5237 +FR-Designer_SimpleDetail_Report=\u7C21\u5358\u660E\u7D30\u8868 +FR-Designer_Reset=\u30EA\u30BB\u30C3\u30C8 +FR-Designer_WidgetOrder=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u9806\u756A +FR-Designer_Button-OK=\u5206\u304B\u308A\u307E\u3057\u305F +FR-Designer_Mobile-Warning=\u6700\u5927\u306E\u9AD8\u3055\u306F\u8868\u793A\u30A8\u30EA\u30A2\u306E80\uFF05\u4EE5\u4E0A\u306B\u306A\u308A\u307E\u305B\u3093 +FR-Designer_Mobile_Form_Analysis_Annotation=\u8AAC\u660E\:\u8A72\u5F53\u8A2D\u5B9A\u3088\u308A\u3001\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u30A2\u30D7\u30EA\u3067\u306E\u89E3\u6790\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3002 +FR-Designer-Invalid_Page_Number=\u7121\u52B9\u306A\u30DA\u30FC\u30B8\u756A\u53F7 +FR-Designer_Form-Forzen-Speed=\u3001\u305D\u3057\u3066\u6A2A\u65B9\u5411\u81EA\u5DF1\u9069\u5FDC\u307E\u305F\u306F2\u65B9\u5411\u81EA\u52D5\u9069\u5FDC\u3092\u5229\u7528\u3057\u3001\u5E33\u7968\u8868\u793A\u306E\u30B9\u30D4\u30FC\u30C9\u3092\u4E0A\u3052\u3067\u304D\u307E\u3059\u3002 +FR-Designer_Properties_Mobile=\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u5C5E\u6027 +FR-Designer_AllCategories=\u5168\u3066\u306E\u7A2E\u985E +FR-Designer-Selected_Widget=\u5F53\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 +FR-Designer_SimpleCross_Report=\u7C21\u5358\u30AF\u30ED\u30FC\u30B9\u8868 +FR-Designer_Log=\u30ED\u30B0 +FR-Designer_Form-Fit-Tip=\u81EA\u5DF1\u9069\u5FDC\u30D7\u30E9\u30B0\u30A4\u30F3 +FR-Designer_Button-Cancel=\u53D6\u308A\u6D88\u3057 +FR-Designer_LocalWidget=\u30ED\u30FC\u30AB\u30EB\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u30E9\u30A4\u30D6\u30E9\u30EA +FR-Designer_Alert=\u30A2\u30E9\u30FC\u30C8 +FR-Designer_TableData-Default-Para=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF +FR-Designer_Edit_Button_ToolBar=\u30DC\u30BF\u30F3\u306E\u30C4\u30FC\u30EB\u30D0\u30FC\u3092\u7DE8\u96C6 +FR-Designer-Plugin_Please_Update_Jar=jar\u30D1\u30C3\u30AF\u3092\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Designer_Form-Frozen-Tip=\u30D5\u30EA\u30FC\u30BA\u3092\u4F7F\u3046\u6642\u3001\u5F8C\u8A18\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3066\u304F\u3060\u3055\u3044\uFF1A +FR-Designer_Remove_Button_ToolBar=\u30DC\u30BF\u30F3\u306E\u30C4\u30FC\u30EB\u30D0\u30FC\u3092\u524A\u9664 +FR-Designer_Normal=\u6B63\u5E38 +FR-Designer_Install_Template=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB +FR-Designer_Copy=\u30B3\u30D4\u30FC +FR-Designer_Allow-Blank=\u7A7A\u306B\u8A31\u3059 +FR-Designer_Clear_All=\u5168\u3066\u3092\u30AF\u30EA\u30A2 +FR-Designer_Delete_Template=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u524A\u9664 +FR-Designer_Mobile_Report_Analysis_Annotation=\u8AAC\u660E\:\u8A72\u5F53\u5C5E\u6027\u3088\u308A\u3001\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u30A2\u30D7\u30EA\u3067\u306E\u89E3\u6790\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3001\u9801\u5206\u3051\u30D7\u30EC\u30D3\u30E5\u30FC\u3060\u3051\u3092\u652F\u6301\u3001\u66F8\u304D\u8FBC\u307F\u306B\u8A2D\u5B9A\u3059\u308B\u6642\u7121\u52B9\u306B\u306A\u308A\u307E\u3059\u3002 +FR-Designer_DoubleLayer_Report=\u4E8C\u968E\u30BF\u30A4\u30C8\u30EB +FR-Designer_Validate=\u691C\u8A3C diff --git a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties index 075b017ab1..8753946187 100644 --- a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties +++ b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties @@ -559,4 +559,42 @@ FR-Designer_Chart_F_Radar_Axis=\uAC12\uCD95 FR-Designer_Style=\uC591\uC2DD FR-Designer_Color=\uC0C9 FR-Designer_Border=\uD14C\uB450\uB9AC -FR-Designer_Background-Pattern=\uC774\uBBF8\uC9C0 \ No newline at end of file +FR-Designer_Background-Pattern=\uC774\uBBF8\uC9C0 +FR-Designer_COMMUNITY_BUG= +FR-Designer_Mobile-Attr= +FR-Designer_Too_Large_To_Paste= +FR-Designer_COMMUNITY_QUESTIONS= +FR-Designer_COMMUNITY_NEED= +FR-Designer_WidgetOrder= +FR-Designer_Button-OK= +FR-Designer_Mobile-Warning= +FR-Designer_COMMUNITY= +FR-Designer_Mobile_Form_Analysis_Annotation= +FR-Designer-Invalid_Page_Number= +FR-Designer_Form-Forzen-Speed= +FR-Designer_Properties_Mobile= +FR-Designer_AllCategories= +FR-Designer_COMMUNITY_VIDEO= +FR-Designer_Too_Small_To_Paste= +FR-Designer_COMMUNITY_HELP= +FR-Designer_Mobile-Zoom= +FR-Designer_SimpleCross_Report= +FR-Designer_Mobile-Horizontal= +FR-Designer_Form-Fit-Tip= +FR-Designer_Mobile-Vertical= +FR-Designer_Button-Cancel= +FR-Designer_LocalWidget= +FR-Designer_COMMUNITY_SIGN= +FR-Designer_TableData-Default-Para= +FR-Designer_Edit_Button_ToolBar=\uD0A4\uAC00\uC788\uB294\uD234\uBC14\uD3B8\uC9D1 +FR-Designer_Mobile-Open= +FR-Designer_Form-Frozen-Tip= +FR-Designer_Remove_Button_ToolBar=\uD0A4\uAC00\uC788\uB294\uD234\uBC14\uC81C\uAC70 +FR-Designer_Allow-Blank= +FR-Designer_COMMUNITY_BBS= +FR-Designer_formDesignerModule= +FR-Designer_COMMUNITY_UPDATE= +FR-Designer_Delete_Template= +FR-Designer_Mobile_Report_Analysis_Annotation= +FR-Designer_DoubleLayer_Report= +FR-Designer_Validate= diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index d0a2b05203..2740e54d22 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -599,4 +599,6 @@ FR-Designer_Chart_F_Radar_Axis=\u503C\u8F74 FR-Designer_Style=\u6837\u5F0F FR-Designer_Color=\u989C\u8272 FR-Designer_Border=\u8FB9\u6846 -FR-Designer_Background-Pattern=\u56FE\u6848 \ No newline at end of file +FR-Designer_Background-Pattern=\u56FE\u6848 +FR-Designer_Edit_Button_ToolBar=\u7F16\u8F91\u6309\u94AE\u6240\u5728\u5DE5\u5177\u680F +FR-Designer_Remove_Button_ToolBar=\u79FB\u9664\u6309\u94AE\u6240\u5728\u5DE5\u5177\u680F diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index bbaf3db36d..92897929ae 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -585,4 +585,18 @@ FR-Designer_Chart_F_Radar_Axis=\u503C\u8EF8 FR-Designer_Style=\u6A23\u5F0F FR-Designer_Color=\u984F\u8272 FR-Designer_Border=\u6846\u7DDA -FR-Designer_Background-Pattern=\u5716\u6848 \ No newline at end of file +FR-Designer_Background-Pattern=\u5716\u6848 +FR-Designer_SimpleDetail_Report= +FR-Designer_Reset= +FR-Designer_AllCategories= +FR-Designer-Selected_Widget= +FR-Designer_SimpleCross_Report= +FR-Designer_LocalWidget= +FR-Designer_Edit_Button_ToolBar=\u7DE8\u8F2F\u6309\u9215\u6240\u5728\u5DE5\u5177\u6B04 +FR-Designer_Remove_Button_ToolBar=\u79FB\u9664\u6309\u9215\u6240\u5728\u5DE5\u5177\u6B04 +FR-Designer_Install_Template= +FR-Designer_Allow-Blank= +FR-Designer_Delete_Template= +FR-Designer_Download_Template= +FR-Designer_DoubleLayer_Report= +FR-Designer_Validate= From 329d11029ab8c9dff04a09364255e03b692d6df0 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Tue, 2 May 2017 19:23:25 +0800 Subject: [PATCH 75/76] =?UTF-8?q?=E6=97=A0=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=E5=86=B2=E7=AA=81=E8=B0=83=E6=95=B4=EF=BC=8Crelease=E5=88=B0de?= =?UTF-8?q?v?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/creator/XWAbsoluteLayout.java | 924 +++++++++--------- .../design/mainframe/FormSelectionUtils.java | 4 +- 2 files changed, 474 insertions(+), 454 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java index b585383c66..852cdf1220 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java @@ -3,14 +3,6 @@ */ package com.fr.design.designer.creator; -import java.awt.*; -import java.awt.event.ContainerEvent; -import java.awt.event.MouseEvent; -import java.awt.image.BufferedImage; -import java.beans.IntrospectionException; -import java.util.ArrayList; -import java.util.HashMap; - import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; import com.fr.design.designer.beans.LayoutAdapter; @@ -20,345 +12,369 @@ import com.fr.design.designer.beans.models.SelectionModel; import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; import com.fr.design.form.layout.FRAbsoluteLayout; import com.fr.design.icon.IconPathConstants; -import com.fr.design.mainframe.*; +import com.fr.design.mainframe.EditingMouseListener; +import com.fr.design.mainframe.FormArea; +import com.fr.design.mainframe.FormDesigner; import com.fr.form.ui.Connector; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WAbsoluteLayout; -import com.fr.form.ui.container.WLayout; import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; +import com.fr.form.ui.container.WLayout; import com.fr.general.FRScreen; import com.fr.general.IOUtils; import com.fr.general.Inter; +import java.awt.*; +import java.awt.event.ContainerEvent; +import java.awt.event.MouseEvent; +import java.awt.image.BufferedImage; +import java.beans.IntrospectionException; +import java.util.ArrayList; +import java.util.HashMap; + /** * @author richer * @since 6.5.3 */ public class XWAbsoluteLayout extends XLayoutContainer { - private static final int EDIT_BTN_WIDTH = 60; - private static final int EDIT_BTN_HEIGHT = 24; - private int minWidth = WLayout.MIN_WIDTH; - private int minHeight = WLayout.MIN_HEIGHT; - - //由于屏幕分辨率不同,界面上的容器大小可能不是默认的100%,此时拖入组件时,保存的大小按照100%时的计算 - protected double containerPercent = 1.0; - - private HashMap xConnectorMap; - - public XWAbsoluteLayout() { - this(new WAbsoluteLayout(),new Dimension()); - } - - public XWAbsoluteLayout(WAbsoluteLayout widget) { - this(widget,new Dimension()); - } - - public XWAbsoluteLayout(WAbsoluteLayout widget, Dimension initSize) { - super(widget, initSize); - this.xConnectorMap = new HashMap(); - Connector connector; - for (int i = 0; i < widget.connectorCount(); i++) { - connector = widget.getConnectorIndex(i); - xConnectorMap.put(connector, new XConnector(connector, this)); - } - - initPercent(widget); - } - - /** - * 初始化时默认的组件大小 - * - * @return 默认Dimension - */ - @Override - public Dimension initEditorSize() { - return new Dimension(500, 300); - } - - //根据屏幕大小来确定显示的百分比, 1440*900默认100%, 1366*768缩放90% - private void initPercent(WAbsoluteLayout widget){ - Toolkit toolkit = Toolkit.getDefaultToolkit(); - Dimension scrnsize = toolkit.getScreenSize(); - double screenValue = FRScreen.getByDimension(scrnsize).getValue(); - if(screenValue != FormArea.DEFAULT_SLIDER){ - this.setContainerPercent(screenValue / FormArea.DEFAULT_SLIDER); - } - } - - /** - * 返回容器大小的百分比 - * @return the containerPercent - */ - public double getContainerPercent() { - return containerPercent; - } - - /** - * 设置容器大小的百分比 - * @param containerPercent the containerPercent to set - */ - public void setContainerPercent(double containerPercent) { - this.containerPercent = containerPercent; - minWidth = (int) (XWAbsoluteLayout.MIN_WIDTH*containerPercent); - minHeight = (int) (XWAbsoluteLayout.MIN_HEIGHT*containerPercent); - } - - /** - * 返回界面处根据百分比调整后的最小宽度 - * @return 最小宽度 - */ - public int getActualMinWidth() { - return this.minWidth; - } - - /** - * 返回界面处根据百分比调整后的最小高度 - * @return 最小高度 - */ - public int getActualMinHeight() { - return this.minHeight; - } - - /** - * 返回界面处根据百分比调整后的间隔大小(且为偶数) - * @return 间隔 - */ - public int getAcualInterval() { - // adapter那边交叉三等分、删除都要判断是否对齐,所以间隔转为偶数 - int interval = (int) (toData().getCompInterval()*containerPercent); - int val = interval/2; - return val*2; - } - - /** - * 界面容器大小不是默认的时,处理控件的BoundsWidget,且避免出现空隙 - */ - private Rectangle dealWidgetBound(Rectangle rec) { - if (containerPercent == 1.0) { - return rec; - } - rec.x = (int) (rec.x/containerPercent); - rec.y = (int) (rec.y/containerPercent); - rec.width = (int) (rec.width/containerPercent); - rec.height = (int) (rec.height/containerPercent); - return rec; - } - - /** - * 新增删除拉伸后单个组件的BoundsWidget - */ - public void updateBoundsWidget(XCreator xCreator) { - WAbsoluteLayout layout = this.toData(); - if (xCreator.hasTitleStyle()) { - xCreator = (XLayoutContainer)xCreator.getParent(); - } - if (xCreator.acceptType(XWAbsoluteLayout.class)){ - ((XWAbsoluteLayout) xCreator).updateBoundsWidget(); - } - // 如果子组件时tab布局,则tab布局内部的组件的wiget也要更新,否则保存后重新打开大小不对 - ArrayList childrenList = xCreator.getTargetChildrenList(); - if(!childrenList.isEmpty()){ - for(int i=0; i xConnectorMap; + + public XWAbsoluteLayout() { + this(new WAbsoluteLayout(), new Dimension()); + } + + public XWAbsoluteLayout(WAbsoluteLayout widget) { + this(widget, new Dimension()); + } + + public XWAbsoluteLayout(WAbsoluteLayout widget, Dimension initSize) { + super(widget, initSize); + this.xConnectorMap = new HashMap(); + Connector connector; + for (int i = 0; i < widget.connectorCount(); i++) { + connector = widget.getConnectorIndex(i); + xConnectorMap.put(connector, new XConnector(connector, this)); + } + + initPercent(widget); + } + + /** + * 初始化时默认的组件大小 + * + * @return 默认Dimension + */ + @Override + public Dimension initEditorSize() { + return new Dimension(500, 300); + } + + //根据屏幕大小来确定显示的百分比, 1440*900默认100%, 1366*768缩放90% + private void initPercent(WAbsoluteLayout widget) { + Toolkit toolkit = Toolkit.getDefaultToolkit(); + Dimension scrnsize = toolkit.getScreenSize(); + double screenValue = FRScreen.getByDimension(scrnsize).getValue(); + if (screenValue != FormArea.DEFAULT_SLIDER) { + this.setContainerPercent(screenValue / FormArea.DEFAULT_SLIDER); + } + } + + /** + * 返回容器大小的百分比 + * + * @return the containerPercent + */ + public double getContainerPercent() { + return containerPercent; + } + + /** + * 设置容器大小的百分比 + * + * @param containerPercent the containerPercent to set + */ + public void setContainerPercent(double containerPercent) { + this.containerPercent = containerPercent; + minWidth = (int) (XWAbsoluteLayout.MIN_WIDTH * containerPercent); + minHeight = (int) (XWAbsoluteLayout.MIN_HEIGHT * containerPercent); + } + + /** + * 返回界面处根据百分比调整后的最小宽度 + * + * @return 最小宽度 + */ + public int getActualMinWidth() { + return this.minWidth; + } + + /** + * 返回界面处根据百分比调整后的最小高度 + * + * @return 最小高度 + */ + public int getActualMinHeight() { + return this.minHeight; + } + + /** + * 返回界面处根据百分比调整后的间隔大小(且为偶数) + * + * @return 间隔 + */ + public int getAcualInterval() { + // adapter那边交叉三等分、删除都要判断是否对齐,所以间隔转为偶数 + int interval = (int) (toData().getCompInterval() * containerPercent); + int val = interval / 2; + return val * 2; + } + + /** + * 界面容器大小不是默认的时,处理控件的BoundsWidget,且避免出现空隙 + */ + private Rectangle dealWidgetBound(Rectangle rec) { + if (containerPercent == 1.0) { + return rec; + } + rec.x = (int) (rec.x / containerPercent); + rec.y = (int) (rec.y / containerPercent); + rec.width = (int) (rec.width / containerPercent); + rec.height = (int) (rec.height / containerPercent); + return rec; + } + + /** + * 新增删除拉伸后单个组件的BoundsWidget + */ + public void updateBoundsWidget(XCreator xCreator) { + WAbsoluteLayout layout = this.toData(); + if (xCreator.hasTitleStyle()) { + xCreator = (XLayoutContainer) xCreator.getParent(); + } + if (xCreator.acceptType(XWAbsoluteLayout.class)) { + ((XWAbsoluteLayout) xCreator).updateBoundsWidget(); + } + // 如果子组件时tab布局,则tab布局内部的组件的wiget也要更新,否则保存后重新打开大小不对 + ArrayList childrenList = xCreator.getTargetChildrenList(); + if (!childrenList.isEmpty()) { + for (int i = 0; i < childrenList.size(); i++) { + XWTabFitLayout tabLayout = (XWTabFitLayout) childrenList.get(i); + tabLayout.updateBoundsWidget(); + } + } + BoundsWidget boundsWidget = (BoundsWidget) layout.getBoundsWidget(xCreator.toData()); + Rectangle rectangle = dealWidgetBound(xCreator.getBounds()); + } + + private Rectangle calculateBound(Rectangle rec, double pw, double ph) { + Rectangle calRec = new Rectangle(0, 0, 0, 0); + calRec.x = (int) (rec.x / pw); + calRec.y = (int) (rec.y / ph); + calRec.width = (int) (rec.width / pw); + calRec.height = (int) (rec.height / ph); + return calRec; + } + + /** + * 新增删除拉伸后每个组件的BoundsWidget + */ + public void updateBoundsWidget() { + WAbsoluteLayout layout = this.toData(); + Rectangle backupBound = this.getBackupBound(); + Rectangle currentBound = this.getBounds(); + if (backupBound != null && layout.getCompState() == WAbsoluteLayout.STATE_FIT) { + double percentW = ((double) backupBound.width / (double) currentBound.width); + double percentH = ((double) backupBound.height / (double) currentBound.height); + for (int index = 0, n = this.getComponentCount(); index < n; index++) { + XCreator creator = (XCreator) this.getComponent(index); + BoundsWidget wgt = (BoundsWidget) layout.getBoundsWidget(creator.toData()); + // 用当前的显示大小计算后调正具体位置 + Rectangle wgtBound = creator.getBounds(); + Rectangle rec = calculateBound(wgtBound, percentW, percentH); + wgt.setBounds(rec); + creator.setBounds(rec); + //绝对布局嵌套,要更新内部的绝对布局 + if (creator.acceptType(XWAbsoluteLayout.class)) { + creator.setBackupBound(wgtBound); + ((XWAbsoluteLayout) creator).updateBoundsWidget(); + } + } + } + } + + /** + * 更新子组件的Bound + * 这边主要用于绝对布局子组件在适应区域选项时 + * 涉及到的不同分辨率下缩放 + * + * @param minHeight 最小高度 + */ + @Override + public void updateChildBound(int minHeight) { + double prevContainerPercent = FRScreen.getByDimension(toData().getDesigningResolution()).getValue() / FormArea.DEFAULT_SLIDER; + if (toData().getCompState() == 0 && prevContainerPercent != containerPercent) { + for (int i = 0; i < this.getComponentCount(); i++) { + XCreator creator = getXCreator(i); + Rectangle rec = new Rectangle(creator.getBounds()); + rec.x = (int) (rec.x / prevContainerPercent * containerPercent); + rec.y = (int) (rec.y / prevContainerPercent * containerPercent); + rec.height = (int) (rec.height / prevContainerPercent * containerPercent); + rec.width = (int) (rec.width / prevContainerPercent * containerPercent); + BoundsWidget wgt = (BoundsWidget) toData().getBoundsWidget(creator.toData()); + wgt.setBounds(rec); + creator.setBounds(rec); + creator.updateChildBound(minHeight); + } + } + toData().setDesigningResolution(Toolkit.getDefaultToolkit().getScreenSize()); + } + + /** + * 增加对齐线 + * + * @param connector 对齐线 + */ + public void addConnector(Connector connector) { + xConnectorMap.put(connector, new XConnector(connector, this)); + ((WAbsoluteLayout) data).addConnector(connector); + } + + public XConnector getXConnector(Connector connector) { + return xConnectorMap.get(connector); + } + + /** + * 去除对齐线 + * + * @param connector 对齐线 + */ + public void removeConnector(Connector connector) { + ((WAbsoluteLayout) data).removeConnector(connector); + xConnectorMap.remove(connector); + } + + /** + * 返回对应的widget容器 + * + * @return 返回WAbsoluteLayout + */ + @Override + public WAbsoluteLayout toData() { + return (WAbsoluteLayout) data; + } + + @Override + protected String getIconName() { + return "layout_absolute_new.png"; + } + + /** + * 返回默认的容器name + * + * @return 返回绝对布局容器名 + */ + @Override + public String createDefaultName() { + return "absolute"; + } + + @Override + protected void initLayoutManager() { + this.setLayout(new FRAbsoluteLayout()); + } + + /** + * 是否支持标题样式 + * + * @return 默认false + */ + @Override + public boolean hasTitleStyle() { + return false; + } + + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + WAbsoluteLayout layout = (WAbsoluteLayout) data; + Connector[] connector = layout.getConnector(); + for (int i = 0, size = connector.length; i < size; i++) { + connector[i].draw(g); + } + } + + /** + * 转换保存组件信息的wlayout为对应的container + */ + @Override + public void convert() { + isRefreshing = true; + WAbsoluteLayout abs = toData(); + this.removeAll(); + for (int i = 0, count = abs.getWidgetCount(); i < count; i++) { + BoundsWidget bw = (BoundsWidget) abs.getWidget(i); + if (bw != null) { + Rectangle bounds = bw.getBounds(); + XWidgetCreator comp = (XWidgetCreator) XCreatorUtils.createXCreator(bw.getWidget()); + if (!comp.acceptType(XWParameterLayout.class)) { + comp.setDirections(Direction.ALL); + } + add(comp); + comp.setBounds(bounds); + } + } + isRefreshing = false; + } + + /** + * 当前组件zorder位置替换新的控件 + * + * @param widget 控件 + * @param oldcreator 旧组件 + * @return 组件 + */ + @Override + public XCreator replace(Widget widget, XCreator oldcreator) { + int i = this.getComponentZOrder(oldcreator); + if (i != -1) { + this.toData().replace(new BoundsWidget(widget, oldcreator.getBounds()), + new BoundsWidget(oldcreator.toData(), oldcreator.getBounds())); + this.convert(); + return (XCreator) this.getComponent(i); + } + return null; + } + + /** * 组件增加 + * * @param e 容器事件 */ - @Override - public void componentAdded(ContainerEvent e) { - if (isRefreshing) { - return; - } - XWidgetCreator creator = (XWidgetCreator) e.getChild(); - WAbsoluteLayout wabs = this.toData(); - if (!creator.acceptType(XWFitLayout.class)) { - creator.setDirections(Direction.ALL); - } - wabs.addWidget(new BoundsWidget(creator.toData(), creator.getBounds())); - } - - /** + @Override + public void componentAdded(ContainerEvent e) { + if (isRefreshing) { + return; + } + XWidgetCreator creator = (XWidgetCreator) e.getChild(); + WAbsoluteLayout wabs = this.toData(); + if (!creator.acceptType(XWFitLayout.class)) { + creator.setDirections(Direction.ALL); + } + wabs.addWidget(new BoundsWidget(creator.toData(), creator.getBounds())); + } + + /** * 在设计界面中有组件移除的时候,需要通知WLayout容器重新paint + * * @param e 容器事件 */ @Override @@ -372,128 +388,130 @@ public class XWAbsoluteLayout extends XLayoutContainer { BoundsWidget bw = new BoundsWidget(wgt, xwc.getBounds()); wlayout.removeWidget(bw); } - - @Override - public Dimension getMinimumSize() { - return toData().getMinDesignSize(); - } - - @Override - public LayoutAdapter getLayoutAdapter() { - return new FRAbsoluteLayoutAdapter(this); - } - - @Override - public XLayoutContainer getTopLayout() { - XLayoutContainer xTopLayout = XCreatorUtils.getParentXLayoutContainer(this).getTopLayout(); - if (xTopLayout != null && !xTopLayout.isEditable()){ - return xTopLayout; - } - else{ - return this; - } - } - - /** - * 得到属性名 - * @return 属性名 - * @throws java.beans.IntrospectionException - */ - public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { - return new CRPropertyDescriptor[] { - new CRPropertyDescriptor("widgetName", this.data.getClass()).setI18NName( - Inter.getLocText("FR-Designer_Form-Widget_Name")) - }; - } - - public void paint(Graphics g) { - super.paint(g); - //如果鼠标移动到布局内且布局不可编辑,画出编辑蒙层 - if (isMouseEnter && !this.editable) { - int x = 0; - int y = 0; - int w = getWidth(); - int h = getHeight(); - - Graphics2D g2d = (Graphics2D) g; - Composite oldComposite = g2d.getComposite(); - //画白色的编辑层 - g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 60 / 100.0F)); - g2d.setColor(Color.WHITE); - g2d.fillRect(x, y, w, h); - //画编辑按钮所在框 - g2d.setComposite(oldComposite); - g2d.setColor(new Color(176, 196, 222)); - g2d.fillRect((x + w / 2 - EDIT_BTN_WIDTH / 2), (y + h / 2 - EDIT_BTN_HEIGHT / 2), EDIT_BTN_WIDTH, EDIT_BTN_HEIGHT); - //画编辑按钮图标 - BufferedImage image = IOUtils.readImage(IconPathConstants.TD_EDIT_ICON_PATH); - g2d.drawImage( - image, - (x + w / 2 - 23), - (y + h / 2 - image.getHeight() / 2), - image.getWidth(), - image.getHeight(), - null, - this - ); - g2d.setColor(Color.BLACK); - //画编辑文字 - g2d.drawString(Inter.getLocText("FR-Designer_Edit"), x + w / 2 - 2, y + h / 2 + 5); - } - } - - /** - * 响应点击事件 - * - * @param editingMouseListener 鼠标点击,位置处理器 - * @param e 鼠标点击事件 - */ - public void respondClick(EditingMouseListener editingMouseListener,MouseEvent e){ - FormDesigner designer = editingMouseListener.getDesigner(); - SelectionModel selectionModel = editingMouseListener.getSelectionModel(); - boolean isEditing = isEditable() || designer.getCursor().getType() == Cursor.HAND_CURSOR || e.getClickCount() == 2; - setEditable(isEditing); - - selectionModel.selectACreatorAtMouseEvent(e); - designer.repaint(); - - if (editingMouseListener.stopEditing()) { - if (this != designer.getRootComponent()) { - ComponentAdapter adapter = AdapterBus.getComponentAdapter(designer, this); - editingMouseListener.startEditing(this, isEditing ? adapter.getDesignerEditor() : null, adapter); - } - } - } - - /** - * body大小手动调整的时候 - * 按照比例调整组件的宽度 - * @param percent 比例 - */ - @Override - public void adjustCompWidth(double percent) { - for (int i = 0; i < getComponentCount(); i++) { - XCreator xCreator = (XCreator) getComponent(i); - Rectangle rectangle = xCreator.getBounds(); - xCreator.setBounds((int) (rectangle.x * percent), rectangle.y, (int) (rectangle.width * percent), rectangle.height); - BoundsWidget widget = (BoundsWidget) toData().getBoundsWidget(xCreator.toData()); - widget.setBounds(xCreator.getBounds()); - } - } - - /** - * body大小手动调整的时候 - * 按照比例调整组件的高度 - * @param percent 比例 - */ - @Override - public void adjustCompHeight(double percent) { - for (int i = 0; i < getComponentCount(); i++) { - XCreator xCreator = (XCreator) getComponent(i); - Rectangle rectangle = xCreator.getBounds(); - xCreator.setBounds(rectangle.x, (int) (rectangle.y * percent), rectangle.width, (int) (rectangle.height * percent)); - BoundsWidget widget = (BoundsWidget) toData().getBoundsWidget(xCreator.toData()); - widget.setBounds(xCreator.getBounds()); - } - } + + @Override + public Dimension getMinimumSize() { + return toData().getMinDesignSize(); + } + + @Override + public LayoutAdapter getLayoutAdapter() { + return new FRAbsoluteLayoutAdapter(this); + } + + @Override + public XLayoutContainer getTopLayout() { + XLayoutContainer xTopLayout = XCreatorUtils.getParentXLayoutContainer(this).getTopLayout(); + if (xTopLayout != null && !xTopLayout.isEditable()) { + return xTopLayout; + } else { + return this; + } + } + + /** + * 得到属性名 + * + * @return 属性名 + * @throws java.beans.IntrospectionException + */ + public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { + return new CRPropertyDescriptor[]{ + new CRPropertyDescriptor("widgetName", this.data.getClass()).setI18NName( + Inter.getLocText("FR-Designer_Form-Widget_Name")) + }; + } + + public void paint(Graphics g) { + super.paint(g); + //如果鼠标移动到布局内且布局不可编辑,画出编辑蒙层 + if (isMouseEnter && !this.editable) { + int x = 0; + int y = 0; + int w = getWidth(); + int h = getHeight(); + + Graphics2D g2d = (Graphics2D) g; + Composite oldComposite = g2d.getComposite(); + //画白色的编辑层 + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 60 / 100.0F)); + g2d.setColor(Color.WHITE); + g2d.fillRect(x, y, w, h); + //画编辑按钮所在框 + g2d.setComposite(oldComposite); + g2d.setColor(new Color(176, 196, 222)); + g2d.fillRect((x + w / 2 - EDIT_BTN_WIDTH / 2), (y + h / 2 - EDIT_BTN_HEIGHT / 2), EDIT_BTN_WIDTH, EDIT_BTN_HEIGHT); + //画编辑按钮图标 + BufferedImage image = IOUtils.readImage(IconPathConstants.TD_EDIT_ICON_PATH); + g2d.drawImage( + image, + (x + w / 2 - 23), + (y + h / 2 - image.getHeight() / 2), + image.getWidth(), + image.getHeight(), + null, + this + ); + g2d.setColor(Color.BLACK); + //画编辑文字 + g2d.drawString(Inter.getLocText("FR-Designer_Edit"), x + w / 2 - 2, y + h / 2 + 5); + } + } + + /** + * 响应点击事件 + * + * @param editingMouseListener 鼠标点击,位置处理器 + * @param e 鼠标点击事件 + */ + public void respondClick(EditingMouseListener editingMouseListener, MouseEvent e) { + FormDesigner designer = editingMouseListener.getDesigner(); + SelectionModel selectionModel = editingMouseListener.getSelectionModel(); + boolean isEditing = isEditable() || designer.getCursor().getType() == Cursor.HAND_CURSOR || e.getClickCount() == 2; + setEditable(isEditing); + + selectionModel.selectACreatorAtMouseEvent(e); + designer.repaint(); + + if (editingMouseListener.stopEditing()) { + if (this != designer.getRootComponent()) { + ComponentAdapter adapter = AdapterBus.getComponentAdapter(designer, this); + editingMouseListener.startEditing(this, isEditing ? adapter.getDesignerEditor() : null, adapter); + } + } + } + + /** + * body大小手动调整的时候 + * 按照比例调整组件的宽度 + * + * @param percent 比例 + */ + @Override + public void adjustCompWidth(double percent) { + for (int i = 0; i < getComponentCount(); i++) { + XCreator xCreator = (XCreator) getComponent(i); + Rectangle rectangle = xCreator.getBounds(); + xCreator.setBounds((int) (rectangle.x * percent), rectangle.y, (int) (rectangle.width * percent), rectangle.height); + BoundsWidget widget = (BoundsWidget) toData().getBoundsWidget(xCreator.toData()); + widget.setBounds(xCreator.getBounds()); + } + } + + /** + * body大小手动调整的时候 + * 按照比例调整组件的高度 + * + * @param percent 比例 + */ + @Override + public void adjustCompHeight(double percent) { + for (int i = 0; i < getComponentCount(); i++) { + XCreator xCreator = (XCreator) getComponent(i); + Rectangle rectangle = xCreator.getBounds(); + xCreator.setBounds(rectangle.x, (int) (rectangle.y * percent), rectangle.width, (int) (rectangle.height * percent)); + BoundsWidget widget = (BoundsWidget) toData().getBoundsWidget(xCreator.toData()); + widget.setBounds(xCreator.getBounds()); + } + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java index 90945b1e80..7a03782c25 100644 --- a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java +++ b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java @@ -133,8 +133,10 @@ public class FormSelectionUtils { boolean xOut = x < 0 || x + copiedCreator.getWidth() / 2 + xoffset > container.getWidth(); boolean yOut = y < 0 || y + copiedCreator.getHeight() / 2 + yoffset > container.getHeight(); + boolean isEdge = (x - DELAY_X_Y == container.getWidth() - copiedCreator.getWidth() / 2 - xoffset) + && (y - DELAY_X_Y == container.getHeight() - copiedCreator.getHeight() / 2 - yoffset); + y = yOut ? container.getHeight() - copiedCreator.getHeight() / 2 - yoffset : y; - boolean isEdge = (x - DELAY_X_Y == container.getWidth() - copiedCreator.getWidth() / 2 - xoffset); if (xOut) { if (isEdge) { //向左偏移 From c7217f2f6a0bd85c8ab5212a7b5a46c9f829fa48 Mon Sep 17 00:00:00 2001 From: plough Date: Wed, 3 May 2017 09:48:36 +0800 Subject: [PATCH 76/76] =?UTF-8?q?REPORT-2483=20=E5=9B=BD=E9=99=85=E5=8C=96?= =?UTF-8?q?key=E8=BD=AC=E7=A7=BB=EF=BC=9B=E5=8E=BB=E6=8E=89=E7=A9=BA?= =?UTF-8?q?=E7=99=BD=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/locale/designer.properties | 1394 +++++++++++++++- .../design/locale/designer_en_US.properties | 1395 ++++++++++++++++- .../design/locale/designer_ja_JP.properties | 1388 +++++++++++++++- .../design/locale/designer_ko_KR.properties | 1388 +++++++++++++++- .../design/locale/designer_zh_CN.properties | 1393 +++++++++++++++- .../design/locale/designer_zh_TW.properties | 1391 +++++++++++++++- 6 files changed, 8322 insertions(+), 27 deletions(-) diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index 0ec6015c8f..b3b020ac31 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -516,7 +516,6 @@ FR-Designer_Create_Tree= FR-Designer_Set_Callback_Function= FR-Designer_ConfirmDialog_Content= FR-Designer_ConfirmDialog_Title= - FR-Designer_FormulaPane_Tips=Tips\:You_Can_Input_B1_To_Input_The_Data_Of_The_First_Row_Second_Column FR-Designer_FormulaPane_Variables=Variables FR-Designer_FormulaPane_Formula_Description=Formula_Description @@ -525,13 +524,11 @@ FR-Designer_FormulaPane_Search=Search FR-Designer_Tab_carousel= FR-Designer_setCarousel= FR-Designer_carouselInterval= - FR-Designer_ClassName_panel=ClassName FR-Designer_Description_panel=Description FR-Designer_Edit_panel=Edit FR-Designer_Property_panel=Property FR-Designer_Select_panel=Select - FR-Designer_LayoutTable_Column_Width=160 FR-Designer_Set_BG_Of_Current_Row=Set BG of the row being edited FR-Designer_Unload_Check=Prompt users when leave without submitting @@ -547,7 +544,6 @@ FR-Designer_PageSetup_Page=Page FR-Designer_Custom_Job_Description=Description FR-Designer_Property=Property FR-Designer_ClassName=Class Name - FR-Designer_Polyblock_Edit=Polyblock Edit FR-Designer_Function_Description_Area_Text=The class must inherit 'com.fr.script.AbstractFunction'. The compiled class should be copied to\nJ2EE server '{R1}' directory.\nAdd the source code(.java file) into the same folder if need.\nExample: {R2}} FR-Designer_PageSetup_Horizontal=Horizontal @@ -588,10 +584,8 @@ FR-Designer-Move_Tab_First=move to first FR-Designer-Move_Tab_End=move to end FR-Designer-Move_Tab_Next=move to next FR-Designer-Move_Tab_Prev=move to previous - FR-Designer_Too_Large_To_Paste=too large to paste FR-Designer_Too_Small_To_Paste=Too small to paste - FR-Designer_AxisReversed=AxisValue FR-Designer_Logarithmic=Logarithmic FR-Designer_Chart_Log_Base=Log Base @@ -600,10 +594,1396 @@ FR-Designer_Style=Style FR-Designer_Color=Color FR-Designer_Border=Border FR-Designer_Background-Pattern=Pattern - FR-Designer_Properties_Mobile= FR-Designer_Edit_Button_ToolBar= FR-Designer_Remove_Button_ToolBar= FR-Designer_Get-CubeGetting= FR-Designer_Oracle= FR-Designer_Validate= +CellWrite-InsertRow_NULL=Null +DashBoard-ChartFloat=Chart +contact_info=Contact information (optional) +Page_Setup=Page_Setup +CellWrite-Print_Export= +Cannot_Get_Date=Can not get date +FR-Designer_Modify=Modify +M-Write_Preview=Write Preview +FR-Base_RWA-Key= +China=China +Set_Legend_Sytle=Set_Legend_Sytle +FR-Designer_Number=Number +FR-Designer-Widget-Style_Common= +M-Save_As=Save As +Following_parameters_are_not_generated=The following parameters are not generated +FR-Designer-Basic_Activation_Key_Copy_OK=Key has been copy to clipboard +Utils-Current_Sheet=Current Sheet +ConditionB-is_less_than=Is less than +BorderLayout-West=West +AnalysisLine=Analysis Line +Layer_Report_Warnning_info=Warnning info for LayerReport +Tree-Width=Tree Width +alert_word= +PageSetup-Paper_Size=Paper Size +M-Page_Setup=Page Setup +DashBoard-FormBook=Form +X-Coordinate=X Coordinate +Style-Line_Spacing=Line Spacing +FR-Designer_Plugin_Should_Update_Title=Warning +Server-Define_Data_Connection=Define Data Connection +BarInside=Bar Inside +Border-Color=Border-Color +NotAllow= +Utils-File_type=File type +FR-Designer-Plugin_Install_From_Local=Install plugin from local file +Summary_Method=Summary Method +Select_Specified_Grouping=Select Specified Grouping +HF-Number_of_Page=Total Number of Page +FR-Designer-Tree_Height=Tree Height +Owner=Owner +Home=Home +FR-Server_Embedded_Server_Stop=Server in Design-Stop +FR-Designer-Plugin_Detecting_Update=Detecting update +HF-Whether_to_define_the_selected_type=Whether to define the selected type +StyleAlignment-Right=Right +FR-Designer_Alignment-Style=Alignment-Style +PageSetup-Title_Start_Column=Title Columns +Tree-Mutiple_Selection_Or_Not=Mutiple Selection +FR-Designer-Plugin_Search=Search +Choose_Role=Choose Role +Append_Delete_Row_Message=WarningThe specify cell should set the expand-attribute,otherwise it won't work. +Form-ComboBox=ComboBox +PageSetup-Footer=Footer +Sorting=Sorting +DBCP_TEST_WHILE_IDLE=TestWhileIdle +DS-Embedded_TableData=Embedded Table Data +FR-Designer_No-Privilege=No Privilege +FRFont-Subscript=Subscript +Background_Settings=Background Setting +FormulaD-Invalid_Formula=Invalid Formula +FR-Base_Margin= +FR-Designer-Plugin_Shop_Installed= +M_Edit-Send_to_Back=Send to Back +Email-Can_Preview_Report_Content=Preview the report contents +FR-Designer-FRFont_Italic= +CellWrite-Print_Background=Print Background +Wizard=Wizard +Preference-Is_Drag_Permited=Is Drag Permitted +FR-Designer_Release_Lock= +Form-Delimiter=Delimiter +wrong=wrong +FR-Menu-Server_Chart_PreStyle=Chart PreStyle +Form-Button=Button +FormulaD-Valid_Formula=Valid Formula +ParameterD-Parameter_Interface=Parameter Interface +At_least_one_visual_worksheet=Workbook to have at least one visual worksheet, if you want to delete, please insert a new worksheet +Need_Min_Value=Need Min Value +Allow_Blank=All Blank +CellWrite-InsertRow_DEFAULT=Default value +Widget-Load_By_Complete=Load By Complete +FR-Designer-Basic_Only_Submit_Current_Sheet= +Sort-Sort_Order=Order +File-File_Size_Limit=File Size Limit +PrintP-Print=Print (T) +FR-Designer-StyleAlignment_Center= +Preference-Setting_Colors=Setting Colors +Judge=Judge +Image-Adjust= +Collect-User_Information_DES= +FR-Designer_Plugin_Normal_Update_From_Local=Update from local file +BackgroundTexture-Canvas=Canvas +BarOutSide=Bar Out Side +Preview_ToolTips=Preview ToolTips +FRFont-Family=Family +FR-Lic_does_not_Support_Remote= +InterfaceStyle=InterfaceStyle +RWA-Key=Primary Key +WF-Name=Name +RWA-Click_Cell_To_Edit_Value=Click Cell to Edit Value +Utils-Row_Height=Row Height +ReportD-Excel_Export=ReportD Excel Export +Form-Please_Select_A_Kind_Of_Form_Container=Select Form Container +Column_Does_Not_Exsit=Column Does Not Exsit +M_Insert-Hyperlink=Hyperlink +can_not_include_underline=can not contain "_" +FR-Designer-Plugin_Jar_Expired= +FR-Background_Image_Extend=Extend Image +TopDownShade=Top Down Shade +FR-Base_Right= +DataBinding=Data Binding +ConnectionPool_Attr=Connection Pool Attributes +Connect_SQL_Cannot_Null=Connect SQL Cannot be Null +DBCP_MAX_ACTIVE=MaxActive +M_Window-Preference=Preference +ToolBar_Top=Top ToolBar +FR-Designer_Indent-Pixel=Pixel +FR-Designer_Unit_MM=MM +IDLE= +FRFont-Underline=Underline +FR-Designer-Plugin_Read_Plugin_List_Error=Error to read plugin list +Type_Set=Type Set +M_Format_A-Cell_Attributes=Other Attributes +CellWrite-Show_As_Image=Show As Image +ShowAsDownload= +Form-ComboCheckBox=ComboCheckBox +BackgroundTexture-WovenMat=Woven Mat +BindColumn-Custom_Data_Appearance=Customize Data Appearance +Actived=Actived +Env-Local_Directory=Local Directory +Form-Colon=Colon +Preference-Vertical_Scroll_Bar_Visible=Vertical Scroll Bar Visible +Utils-Show_Cell_Value=Show Cell Value +FR-Designer_ReportColumns-Repeat_Row= +SpecifiedG-Specified_Group=Specified Group +RWA-Smart_Add_Cells=Smart Add Cells +HF-Left_Section=Left Section +M_Report-Report_Background=Report Background +Image-Extend=Extend +FS_BI= +ToolBar_Bottom=Bottom ToolBar +Hgap=Hgap +FR-Designer_Enter-New-FileName= +Verify_Fail=Verify Fail +CellWrite-InsertRow_Policy=Policy of Insert Row +FR-Designer-Plugin_Illegal_Plugin_Zip=Illegal plugin zip +RCodeVersion=VER +Convert=Convert +Please_Drag=Please Drag +FR-Designer-Widget-Style_Preview= +mobile_number=Mobile Number +FR-Designer_Form-ComboCheckBox=ComboCheckBox +CacheValidateTime=Cache Validate Time +Hyperlink-Extends_Report_Parameters=Extends Report Parameters +FR-Designer_Values-Editor= +Export-Excel=Excel +Utils-Left_to_Right=Left to Right +ExpandD-Vertical_Extendable=Enable to Insert Cell to Display Field Data Vertically +Utils-Report_Runtime_Env=Report Workspace +Utils-Right_to_Left=Right to Left +Utils-Beyond_the_top_side_of_Border=Beyond the top side of border +Exception_StackTrace=Exception_StackTrace +Corresponding_Fields=Corresponding_Fields +Form-CheckBox=CheckBox +Utils-Current_Row=Current Row +BuildIn=Build-in +BindColumn-Results_Filter=Result Filter +FR-Designer-Plugin_Manager=Plugin Manager +M_File-Export-CSV=CSV +Data_Filter=Data Filter +ReportServerP-Edit_Printer=Edit Printer +FR-Designer_Datasource-Stored_Procedure=Stored Procedure +RESTART=RESTART +FormulaD-Function_name=Function Name +ChooseOneButton=chose one toolbutton +Priority=Priority +Datasource-Datasource=Data Source +FR-Designer_Width= +Cannot-Add_To_This_Area=Cannot Add To This Area +Run= +Set_Submit_Condition=Set Submit Condition +FR-Base_Value= +fileLocked_undeleted=Template is locked, you can not delete\! Click OK to refresh the list of templates +Web_Apply=Web Application +Refresh_Database=Refresh database +Set_Row_Title_End=Set_Column_Title_End +FR-Utils-New_Folder=New Folder +BiasD-From-upper_left_to_lower_right=Upper left to lower right +CapsLock= +StyleFormat-Sample=Sample +RWA-Smart_Add_Cell_Group=Smart Add Cell Group +MConfig-CancelButton=Cancel +Function-Choose_Function_Class=Choose Function Class +LatLng=Lat and Lng +DS-Server_TableData=Server Table Data +BackgroundTexture-GreenMarble=Green Marble +read_time_out=Load Timeout +JavaScript-Commit_to_Database=Commit to Database +DS-Relation_TableData=Relation Table Data +CellWrite-Page_Before_Row=Page Break Before Row +FR-Designer-Plugin_Load_Plugins_From_Server=Loading plugins from store +D-Dispaly_Divide_Result_Set_into_Groups=Divide result set into groups +Closed=Closed +RWA-Help=helpdetail +FR-Designer-Widget-Style_Custom= +FR-Designer-Widget-Style_Render_Style= +Highlight-Barcode=BarCode +FR-Designer_Connect_SQL_Cannot_Null=Connect SQL Cannot be Null +trigger= +M-Data_Analysis=Data Analysis +Function-The_selected_file_cannot_be_null=The select file cannot be empty +No-Privilege=No Privilege +ReportColumns-Repeat_Column=Repeat Column +SecondGraduationUnit=SecondGraduationUnit +Form-Widget_Property_Value=Widget Property Value +GIVE-NAME=Give_Name +FR-Designer_Rename= +Utils-Merge_Cell=Merge Cells +Style-Spacing_After=Spacing After +Enlarge_Or_Reduce=Enlarge Or Reduce +Tree-Height=Tree Height +RCodeErrorCorrect=ERC +Enter-New-FileName=Enter New File Name +try_resending=Please try resending +M-Open_Report=Open... +Please_Select=Please Select +InRow=InRow +Form-TextArea=TextArea +FR-Designer_Https_Enable= +Widget-Custom_Widget_Config=Custom Widget +already_exists=already exists +Original_Marked_Filed=Original Marked Filed +BackgroundTexture-Sand=Beach +Values=Values +Not_use_a_cell_attribute_table_editing=You may not use a cell attribute table editing +Root=Root +cycle=cycle +open-new-form-tip=open new form tip +Support-Current_Auto_Complete_Shortcut=Current Shortcut +GROUPING_MODE=Grouping +DBCP_MAX_IDLE=MaxIdle +BackgroundTexture-BlueTissuePaper=Blue Tissue Paper +ReportD-Export_Hided_Row=ReportD Export Hided Row +FR-Custom_styles_lost= +Env-Des2=Position should be a Servlet like "http\://localhost\:8080/WebReport/ReportServer" +Env-Des1=Please select the WEB-INF directory of Report Server +PageSetup-Placement_Center_on_Page=Page Center +sure_to_delete=sure to delete +Already_exists_not_add_repeat=Already exists, do not add repeat +Axis_Title=Axis title +FR-Designer-Plugin_Install_Failed=Install failed +FR-Designer-Widget-Style_Frame= +MainGraduationUnit=MainGraduationUnit +Second_Axis=Second Axis +Classifier-Ge= +MSBold=MSBold +Form-Design_Size=Form Design Size +FR-App-Template_Save= +ExpandD-Horizontal_Extendable=Display Field Data Horizontal +RP_Authority_Edit=Authority +Warnning=Warning +RoleName_Can_Not_Be_Null=RoleName_Can_Not_Be_Null +Application=Applications +Formula_Dictionary_Display_Examples_Html=the real value is \ +ECP-error_pwd= +FR-Hyperlink_ChartHyperlink= +M_Edit-FormatBrush=Format Painter +Indent-Pixel=Pixel +FR-Designer-Widget-Style_Border_Line= +Widget-Default_Widget_Config=Default Widget +Version-does-not-support= +StyleAlignment-Right_To_Left=Right To Left +Style-Spacing_Before=Spacing Before +Has_Existed=Has Existed +FR-Designer_DisplayNothingBeforeQuery=Display Nothing Before Query +Still=Still +JS_WARNING2=information +JS_WARNING1=information +Connectionline=Connectionline +Utils-Insert_Record=Insert Record +Set-Parameter-Name= +More-information=More information +Parameter-Boolean=Boolean +FRFont-Strikethrough=Strikethrough +Server-version-tip=You are currently connected to the server version is less than the designer version number you are using to continue to connect you to edit some of the properties may not be able to effectively save. If the need to connect, please send your designer version and the server version is consistent +Form-All_Files=All Files +DBCP_NUM_TEST_PER_EVCTION_RUN=NumTestsPerEvictionRun +FR-Designer-FRFont_Family= +Device= +M_Insert-Cell=Cell Element +Present-Formula_Present=Formula Present +FRFont-Superscript=Superscript +CellWrite-Page_Before_Column=Page Break Before Column +Golden=Golden +Preference-Support_Cell_Editor_Definition=Support Cell Editor Definition +M-Page_Preview=Page Preview +HJS-CC_to=Copied to +Tree-Select_Leaf_Only=Select Leaf Only +Pointer-A-Tick-Order=pointer and tick value +Pink=Pink +StyleAlignment-Distibuted=Distributed +Odd=Odd +already-saved=already saved +FR-Hyperlink_Chart_Cell= +Style-Left_Indent=Left Indent +Offline=Offline +Form-Hierarchy_Tree_Next=Next +Needle=Needle +GoogleMap=Google Map +Running=Running +M_Edit-Unmerge_Cell=Unmerge Cell +Out_Border_Line=Out Border Line +Style-Spacing=Spacing +FR-Utils_Submit= +ReportServerP-Previous=Previous +StyleAlignment-Text_Style=Text Style +RelatedChart=RelatedChart +ProcessManager=ProcessManager +Cancel_Repeat_Attributes=Cancel_Repeat_Attributes +FR-App-File_Message= +Datasource-Stored_Procedure=Stored Procedure +RWA-Row_Offset=Row Offset +M_Format-Style=Style +detail_description=Detailed description +FR-Designer-Widget-Style_Title_Content= +ParameterD-Report_Parameter=Report Parameter +HF-Edit_Header=Edit Page Header +Sytle-FRFont=Font +FR-Designer_Finish_Export=Finish_Export +MultiFileUpload=MultiFile Upload +HF-Page_Number=Page Number +Style-Right_Indent=Right Indent +Desktop=Desktop +FR-Server-All_Error= +ConditionB-Operator=Operator +Today=Today +Form-Widget_Name=Widget Name +Covered_All=Covered All +Day=Day +External=External +Black_Font=Black Font +LOG-Report_Server_IS_Started=Report Server is Started +Tips\:You_Can_Input_B1_To_Input_The_Data_Of_The_First_Row_Second_Column=Tips\:You_Can_Input_B1_To_Input_The_Data_Of_The_First_Row_Second_Column +FR-Designer_ChooseOneButton=chose one toolbutton +Widget-Sizing=Sizing +NO_Border_Line=NO Border Line +Cell_Data=cell data +StyleAlignment-Vertical_Text=Vertical Text +Label=Label +Orange=Orange +zeroMarginWarn=The printer exist the physical margins
report page margin settings the small can
can print content insufficiency.
  +Widget-Date_Selector_Return_Type=Return Type +Utils-Switch_To_Template_Reportlet=Switch To Template Reportlet +satisfy= +FR-Designer_WidgetDisplyPosition=Widget DisplyPosition +FR-Base_Top= +FR-Designer_Form-CheckBox=CheckBox +Reportlet-Parameter_Type=Parameter Type +sending=sending... +FR-Designer-FRFont_Foreground= +FR-Import-Export_SVG= +M_Edit-Clear_Contents=Contents +Session=Session +Widget-Load_Type=Load Type +template_unsaved=template can not be saved +check_communication=please check the network communication is normal and that the server is running +List-Need_Head=Need Head +FR-Designer-Plugin_Has_Been_Installed=Plugin has been installed +FR-Widget_Tree_And_Table= +FR-Base_Help= +FR-Designer-Plugin_Update_Successful=Update successfully +August=August +LOG-Is_Being_Openned=Is Being Openned +BackgroundTexture-Oak=Oak +Multi_nam_formula= +TurnOn=TurnOn +HJS-Send_Successfully=Send Successfully +Mon=Mon +Inner_Parameter=Inner Parameter +Required=Required +Summary=Summary +template_unopened=unable to open template +FR-Base_Bottom= +DataFunction-Min=Minimum +StyleFormat-Percent=Percent +FR-App-All_Custom= +M_Insert-Data_Column=Insert Data Column +PLEASE=PLEASE +Numbers=Numbers +Release_Lock=Release Lock +Background-Background_is_NULL=No Background +FR-Designer_Sytle-FRFont=Font +Gradation=Gradation +The_current_list_is_empty=The current list is empty +Formula_Dictionary_Display_Examples=the real value is \ +Schedule-Template_Parameter=Template Parameter +JSShow=Show In Action +Level_coordinates=Level coordinates +MainGraduationLine=Main Graduation Line +Hyperlink-Web_link=Web link +StyleAlignment-between_-90_and_90=between -90 and 90 +FormulaD-Custom_Function=Custom Function +FR-Designer_Integer=Integer +PageSetup-Finis_Start_Row=Finis Rows +RWA-Remove_Field=Remove Field +Form-Desin_Width=Form Design Width +No-tableData=No tableData +Page_Total=Page_Total +FR-Designer-Plugin_Connect_Server_Error=Error to connect plugin store +Import-Excel_Source=Excel Source +Utils-Left_to_Right_a=Left to Right +ExpandD-Expand_Attribute=Attribute to Insert Cell to Display Field Data +Report-Write_Attributes=Write Attribute +Utils-Current_Column=Current Column +Need_Max_Value=Need Max Value +Report_Not_Exist=Report_Not_Exist +HF-Insert_Content=Insert Content +UpParent=Up Parent +PageSetup-Page=Page +Utils-Move_Up=Move Up +BackgroundTexture-PurpleMesh=Purple Mesh +Export-Word=Word +ServerM-Widget_Manager=Widget Manager +FR-Designer-Basic_Activation_Key=Activation Key\: +FR-App-Template_Report_Not_Exist= +Protected=Protected +Skip=skip +FR-Designer_PageSetup-Vertically=Vertically +revert= +PageSetup-Predefined= +Border-Style-Radius=RoundBorder +IntPart= +ExpandD-Data_Column=Data Column +Sort-Ascending=Ascending +FR-Designer-Widget_Style= +parameter_name_exist=The parameter name already exists +FR-Designer_Layer-Build=Layer-Build +Please_Rename=Please_Rename +Form-Editing_Listeners=Editing Listener +RWA-Smart_Add_Fields=Smart Add Fields +FR-Designer-Tree_Width=Tree Width +Record=Record +Poly-Report_Component=Poly Report Component +Options=Options +NS-war-remote= +Sche-Minute=Minute +Three_Rows_Of_Three_Grid=Three rows of three grid +WorkSheet=Worksheet +FR-Designer-Widget_Size= +BindColumn-Select=Select +FR-Widget_Mobile_Terminal= +FR-Background_Image_Titled=Titled Image +SetPrinterOffset=SetPrinterOffset +FR-Designer-Plugin_Installed=Installed +FR-Designer-Hyperlink_Name= +FR-Designer_Form-Button=Button +Black=Black +FR-Designer-Widget-Style_Border_Color= +Set_Submit_Event=Set Submit Event +PDF-Print_isPopup=Is Popup +LayerPageReport_CountPerPage=Data count per page +Display_Modes=Display Modes +RowSpan=RowSpan +Datasource-Test_Connection=Test Connection +Function-Function_Manager=Function Manager +Host_Name=Host Name +CellWrite-Show_As_HTML=Show As HTML +FR-Designer-Widget-Style_Shadow= +FR-Designer_Parameter_String=String +Form-SupportTag=SupportTag +ReportD-Report_Write_Attributes=Report Write Attributes +DataFunction-Count=Count +Top_And_Thick_Bottom_Border_Line=Top And Thick Bottom Border Line +Client=Client +BindColumn-Result_Serial_Number_Start_From_1=Serial Number Starts From One +History=History +Already_exists= +Datasource-Original_Charset=Original Char Set +FR-Base_Left= +ReportServerP-Next=Next +BindColumn-Top_N=Top N +Animation_Special=Specially good effect +Widget-Chart_Widget_Config=Chart Widget +FR-Designer-Plugin_Cannot_Update_Not_Install=FR-Designer-Plugin_Cannot_Update_Not_Install +After_Changed_Some_Attributes_Are_Different=After_Changed_Some_Attributes_Are_Different +PieStyle=Pie Style +HF-Are_you_sure_to_delete_it=Are you sure to delete it +Utils-Design-File_Open= +FR-Utils_Label= +Data-Label=Data Label +M_Insert-Text=Insert Text +Form-View_Tree=Tree View +M_Insert-Chart=Insert Chart +HF-Even_Page=Even Page +ReportServerP-Report_server_parameter=Report Server Parameter +JavaScript-Form_Submit=Form Submit +Horizontal-Split_Layout=Horizontal Split Layout +BorderLayout-Center=Center +INFO-Reset_Webapp=Reset Webapp +FR-Designer_Text=Text +IN_and_INOUT_type_not_as_cursor=IN and INOUT type not as cursor +Main_Axis=Main Axis +M_Edit-Cut=Cut +Utils-The_Name_has_been_existed=The Name has been existed +FR-Background_Image=Image +Character=character +Unit_Thousand=Thousand +Test=Test +Utils-Would_you_like_to_save= +HF-Header_and_Footer=Header and Footer +LIST_MODE=List Mode +HF-Insert_Image=Insert Image +FR-Designer-Widget-Style_Standard= +FR-Designer_Form-List=List +BackgroundTexture-Denim=Denim +Execute_Report_by_Layer_Engine=Execute Report by Layer Engine +M_Edit-Bring_Forward=Bring to Forward +Choose_All=Choose All +Form-RadioGroup=Radio Group +FR-Base_Remove= +FR-Remote_Connect2Server_Again= +Semicolon=semicolon +StyleFormat-Category=Category +Report_Template=Report Template +Utils-Beyond_the_right_side_of_Border=Beyond The Right Side Of The Border +BackgroundTexture-Papyrus=Papyrus +LayerPageReport_PageEngine=Execute for page +Schedule-The_selected_file_must_be_end_with_filter=The selected file must end with '.cpt' or '.class' or '.frm' +Provide=Provide +FormulaD-Math_&_Trig=Math and Trig Function +FR-Designer-StyleAlignment_Right= +Error_TableDataNameRepeat=\ already exsits in ServerTableData or the name is repeated. +Choose_None=Choose None +File-tree=File tree +FRFont-bold=bold +FR-Designer_Set_Submit_Condition= +Form-Change_Widget_Name=Change Widget Name +ReportColumns-Report_Columns=Report Columns +Can_not_use_FormatBursh= +CellElement-Property_Table=CellElement Property Table +Dictionary-Dynamic_SQL=Dynamic SQL +FR-Designer_Form-CheckBoxGroup=CheckBoxGroup +DBCP_TIME_BETWEEN_EVICTIONRUNSMILLIS=TimeBetweenEvictionRunsMillis +ReportD-Export_Hided_Column=Export hided column +Preference-Support_Undo=Support Undo +FR-mobile_report_analysis= +Month=Month +Utils-Column_Width=Column Width +Collect-Use_Designer=Use Designer +Widget-User_Defined_Editor=User Defined Editor +Unit_Ten_Thousand=Unit_Ten_Thousand +Data_Setting=Data Setting +ECP_input_pwd= +period= +Note=Note +Multiline=Multiline +Datasource-Convert_Charset=Convert Char Set +DashBoard-ConnectionList=ConnectionList +Utils-Submit_Forcibly=Submit Forcibly +Parent_Marked_Field=Parent Marked Field +Logout=Logout +FR-Designer_Show_Blank_Row= +FR-Base_Format= +FR-App-Export_png= +Delete_Column=Delete Column +SecondGraduationLine=Second Graduation Line +SpecifiedG-Groups=Groups +CONTINUUM_MODE=Continuum Grouing +Datasource-Connection_failed=Connection Failed +CategoryName=CategoryName +DBCP_INITIAL_SIZE=InitialSize +Colors=Colors +FR-Import-Export_CSV= +FR-Designer-StyleAlignment_Left= +BackgroundTexture-PaperBag=Paper Bag +RWA-BuildIn_SQL=BuildIn SQL +SingleLayer=SingleLayer +Or-you=or you +FR-Designer_Certificate_Path= +Utils-Last_Page=Last Page +BarCodeD-Drawing_Text=Drawing Barcode Text +Warning-Template_Do_Not_Exsit=Template Do Not Exsit +BindColumn-Group=Group +Export-SVG=SVG +Plane3D=Plane 3D +SessionID= +FR-Designer_Height= +HF-Odd_Page=Odd Page +About-All_Rights_Reserved=All Rights Reserved +Utils-Current_Cell=Current Cell +Web_Preview_Message=Please save the template in the current Runtime Environment folder +FR-Hyperlink_Chart_Float= +Dic-Data_Query=Data Query +CellWrite-Print_Content=Print Content of Cell +Privilege-Selected_None_Of_Any_Items=Selected None Of Any Items +FRFont-Size=Size +Function-J2EE_server=J2EE server +FR-Designer_Allow_Blank=All Blank +Build_Tree_Accord_Parent_Marked_Filed=Build Tree according parent's marked filed +Preference-Horizontal_Scroll_Bar_Visible=Horizontal Scroll Bar Visible +Scope=Scope +Save_All_Records_In_Memory=Save All Records in Memory +FreezeWarning1=FreezeWarning +FlowLayout=FlowLayout +M_Report-Report_Footer=Report Footer +FR-Action_Add= +BorderLayout-East=East +feedback_tip=Please enter a description of the problem of not more than 400 words +FS_Start_Date=Start Date +FR-ConditionB_Operator= +Printer-Alias=Alias +DS-Class_Name=Class Name +FR-Designer-Plugin_Has_Been_Disabled=Plugin has been disabled +Sort-Original=Original +Utils-Top_to_Bottom_a=Top to Bottom +Parameter-String=String +InnerRadis=InnerRadis +Want_To_Cover_It=Want To Cover It +Divided_stage=Divided stage +Seriously=Seriously +ReportServerP-PDF=PDF +Utils-Switch_To_Class_Reportlet=Switch To Class Reportlet +FR-Designer_Show_Blank_Column= +M_Edit-Redo=Redo +Visibility=Visibility +Series_Use_Default=Series_Use_Default +Has_Selected=Has Selected +BackgroundTexture-Walnut=Walnut +FormulaD-Function_category=Function Category +Interface=Interface +FR-Designer-Beyond_Bounds= +seconds=seconds +Auto-Build=Auto-Build +FR-Designer-Plugin_Install_Successful=Install successful +Template_Path=Template_Path +FR-Designer-FRFont_Bold= +Poly_Name=Poly Name +WorkBook=WorkBook +Hyperlink-Self_Window=Self Window +FR-Designer-Widget-Style_Title= +FR-Designer-FRFont_Size= +M_File-Export-SVG=SVG +Capacity=Capacity +Rose_Red=Rose Red +StyleAlignment-The_value_of_rotation_must_between_-90_and_90_degrees=The value of rotation must between -90 and 90 degrees +HF-Move_Left=To the left +Cell_Group=Cell Group +Week=Week +PageSetup-Orientation=Orientation +M-Open_Recent=Open Recent +NNormal=Noraml +Integer=Integer +Select_The_Source_To_Save=Select Source to Save +Transition=Transition +FR-Designer_Get_Lock= +one_record_exists_in_many_groups=One record exists in many groups +FR-Designer_Cover_None= +DeciPart= +ExpandD-Up_Father_Cell=Upper Parent Cell +Deep=Deep +FRFont-Shadow=Shadow +Reportlet=Reportlet +Calendar=Calendar +DateFormat-Custom_Warning=Note\: Custom date format does not support the format checking +Unit_MM=MM +Server-Start=Start +CellPage-Can_Break_On_Paginate=Can Break On Paginate +Build_Tree_Accord_Marked_Filed_Length=Build Tree according marked filed's length +ComboCheckBox-Start_Symbol=Start Symbol +Real=Real +RWA-Batch_Modify_Cells=Batch Modify Cells +FR-Designer_Build-Way=Build-Way +Read=Read +StyleAlignment-Degrees=Degrees +M_Format_A-Border=Border +Utils-Delete_Record=Delete Record +Reload=Reload +Image-Select_Picture=Select Picture +RWA-Submit=Submit +the_template=this template +FR-Designer_Component_Scale=Component Scale +FRFont-italic=italic +Year=Year +HF-Move_Right=To the right +Data-Check= +Unknown=Unknown +Submit_Style=Submit Style +Left_Border_Line=Left Border Line +Brown=Brown +Select_A_Tree_DataSource_To_Build=Select a tree data source to build +Overlapping=Overlapping +DS-Class_TableData=Class Table Data +FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install=Illegal plugin,cannot be installed +DisplayNothingBeforeQuery=Display Nothing Before Query +Y_Axis=Y Axis +FormulaD-Most_Recently_Used=Most Recently Used +FormulaD-Input_formula_in_the_text_area_below=Input formula in the text area below +Build-Way=Build-Way +M_Edit-Undo=Undo +Line-Style=Line-Style +Datasource-Other_Attributes=Other Attributes +M_Server-Global_Parameters=Global Parameters +Suffix=Suffix +Image-Image_Files=Image Files +EditRC-Entire_row=Entire row(R) +HF-First_Page=First Page +BackgroundTexture-Granite=Granite +DataList=DataList +Recursion=Recursion +BarStyle=Bar Style +FR-Designer-Min_Width=Min-Width +Utils-Report-Env_Directory=Report Workspace +D-ChartArea=Chart Area +Only= +FR-Base_No= +SpecifiedG-Put_all_others_together=Put all others together +HF-NewLine_Des=Click on the move or delete button to operate newline +WLayout-Border-ThreeContainer=With north, west, and in the three border layout containerIncluding the northern block may need to adjust the height of the western block may need to adjust the width. +Parameter_Name=Parameter Name +FR-Base_Table= +Des-Remove_WorkSheet=The report to be deleted may contain data. If you want to delete report, please click on Yes button. +Rotation=Rotation +Undefined=Undefined +Support-Auto_Complete_Shortcut=Auto Complete Shortcut +Set_Column_Title_End=Set_Row_Title_End +Submit_Url=Submit Url +ReportServerP-Are_you_sure_to_delete_the_selected_printer=Are you sure to delete the selected printer +long_data_can_not_show_fully=Long data can not be fully demonstrated +Utils-Beyond_the_bottom_side_of_Border=Beyond The Bottom Side Of The Border +FR-Import-Export_PDF= +Form-CheckBoxGroup=CheckBoxGroup +Click-Me=Click-Me +Hyperlink-Self=Self Frame(S) +Tree-Select_Leaf_Only_Tips=Tree-Select_Leaf_Only_Tips +StyleAlignment-Text_Rotation=Text Rotation +Format-Error=Format Error +Server-Stop=Stop +Preference-Setting_Grid=Setting Grid +ReportServerP-Add_Printer=Add printer +FR-Designer-Plugin_Active=Active +Utils-File_name=File name +NOT_NULL_Des=Can not be null +Right_Border_Line=Right Border Line +EditRC-Entire_column=Entire column(C) +PageSetup-Top_to_bottom=Top to bottom +Click-Get_Default_URL=Click To Get Default URL +StyleAlignment-Wrap_Text=Wrap Text +Remove_All_Button=Remove_All_Button +FR-Designer_Component_Interval=Components Interval +ReportColumns-Columns_vertically=Columns vertically +ReportGUI-Print_Background=Print Background +Export-CSV=CSV +M_Edit-Paste=Paste +FR-Designer-Basic_Restart_Designer=Restart designer +ReportServerP-PDF2-INFO=The PDF Button Info +FormulaD-Check_Valid=Check Valid +server_disconnected=server disconnected +ParameterD-Parameter_name_cannot_be_null=Parameter name cannot be empty +FR-Designer-Plugin_Version_Is_Lower_Than_Current=The version of plugin is lower than current +RWA-NotChange_Unmodified=NotChangeUnmodified +User_Information=User_Information +Custom_styles_lost= +PageSetup-Margin=Margin +M-New_FormBook=FormBook +Widget-TreeNode=TreeNode +Form-Url=URL +Utils-Beyond_the_left_side_of_Border=Beyond the left side of border +Float_Element_Name=Float Element Name +Purple=Purple +DashBoard-Potence=Permissions +M-Close_Template=Close Template(C) +paper= +Not_Exsit=not exist in WorkSheet. +Utils-Insert_Row=Insert Row +Utils-Delete_Row=Delete Row +not_support_authority_edit=this element does not support authority edit +Formula_Tips=The formula must be from the beginning of the "\ +FR-Action_Copy= +Compile_Success=Compile Success +BackgroundTexture-RecycledPaper=Recycled Paper +StyleAlignment-Single_Line=Single Line +Utils-Move_Down=Move Down +Please_Set_Repeat_First=please set repeat Columns and Rows first +Writer-ShortCuts_Setting= +Verify-Data_Verify=Verify Data +FR-mobile_analysis_style= +Confirm-Delete-File= +PageSetup-Header=Header +JavaScrit-Asynch=Asyn +ReportServerP-Toolbar=Toolbar +Utils-Top_to_Bottom=Top to Bottom +Platform=Platform +FR-Designer-FRFont_Underline= +Show_in_Containing_Folder=Show in Containing Folder +BackgroundTexture-WaterDroplets=Water Drip +FR-Designer-Dependence_Install_Failed=install failed +Layout-Padding=Padding +roles_already_authority_edited=Configured role +WidgetDisplyPosition=Widget DisplyPosition +SpecifiedG-Force_Group=Force Group +FormulaD-Formula_Definition=Formula Definition +I-xyScatterStyle_Marker= +Hour= +ColorMatch=ColorMatch +M_Edit-Order=Order +BackgroundTexture-Bouquet=Bouquet +Verify-Error_Information=Error Information +LayerData=LayerData +Rename=Rename +Widget-Load_By_Async=Load By Async +Shape=Shape +BindColumn-This_Condition_has_been_existed=The Condition Already Exists +NS-exception_readError= +Set_Column_Title_Start=Set_Row_Title_Start +Fri=Fri +M_Report-Report_Parameter=Report Parameter +REPORTLETS= +WLayout-Card-ToolTip=Card layout, you can add a number of other components in the layout container. +M-Popup_ChartType=Chart Type +Please-Wait=Please Wait +FR-Designer-Form-ToolBar_Widget= +Widget-Array=Array +FieldBinding=Field Binding +Top_Bottom_Border_Line=Top bottom border line +M-Others=Others... +Hyperlink-Link_Opened_in=Link Opened in +FR-Utils_WorkBook= +M_Insert-Float=Float Element +Out_Thick_Border_Line=Out Thick Border Line +FR-App-File_Lookup_range= +ReportColumns-Columns_to=Columns to +Transparent=Transparent +Parameter-Integer=Integer +PDF-Print_Setting=PDF Print Setting +Server-Embedded_Server=Embedded Server +M_Server-Server_Config_Manager=Server Configuration Manager +FR-Utils-Would_you_like_to_cover_the_current_file=Would you like to cover the current file +CellWrite-InsertRow_COPY=The Original Value +Edit_String_To_Formula=Edit String To Formula +Edit-Column_Count=Column Count +Father=Father +ReportColumns-Columns_after=Columns after +FR-Designer_Undo= +DBCP_MIN_IDLE=MinIdle +M-Data_Analysis_Settings=Data Analysis Settings +M-Form_Preview=Form Preview +Form-Basic_Properties=Basic Properties +quote= +Thu=Thu +Collect-Collect_User_Information=Collect User information +Layer-Build=Layer-Build +FR-Designer-FRFont_Line_Style= +BackgroundTexture-BrownMarble=Brown Marble +PageSetup-Page_Setup=Page Setup +Form-Semicolon=Semicolon +ECP_re_input= +ExpandD-Sort_After_Expand=Sort After Expand +FR-Designer-Dependence_Install_Succeed=install succeed +Env-Configure_Workspace=Configure Workspace +feedback_info=We welcome your comments and suggestions, please fill out the information too much detail, we will contact you as soon as possible +Ratio=Ratio +DBCP_TEST_ON_BORROW=TestOnBorrow +FR-Designer_layerIndex= +WEB-Write_Setting=Write Setting +M-New_WorkBook=New WorkBook +FR-Designer-Plugin_Has_Been_Actived=Plugin is now active +Datasource-Maximum_Number_of_Preview_Rows=Maximum Number of Preview Rows +ExpandD-Cell_Expand_Attributes=Attribute to Insert Cell to Display Data +Select_the_repeated_row_and_column=Select the repeated rows and columns +FormulaD-Date_&_Time=Date and Time Function +Max-Mem-Row-Count=Use disk cache when records more than +BorderLayout-South=South +Export-Text=Text +JavaScript-Synch=Synch +FR-App-All_Warning= +M_Edit-Send_Backward=Send to Backward +Form-Layout=Layout +FR-Designer-Plugin_Shop_Need_Update= +FR-Designer_WorkBook=WorkBook +UpBarBorderStyleAndColor=UpBarBorderStyleAndColor +GridLayout=GridLayout +Utils-Default_Value=Default Value +Widget-Comb_Widget_Config=Comb Widget +Import-Excel2007_Source=Excel2007 Source +Y-Coordinate=Y Coordinate +FR-Base_SimSun_Not_Found= +FR-Designer_Seriously= +Upload=Upload +Form-Widget_Property_Table=Widget Property Table +Des-Merger_Cell=The Selected Area Contains multiple values, if you merge them, only the data at the upper left corner will be reserved. +FR-Designer-Basic_Copy_Build_NO=Double click to copy build NO. +FR-Base_TurnOn= +FR-Base_Rows= +Form-Remove_Repeat=Remove Repeat +Yes=Yes +Datasource-JNDI_Name=JNDI Name +Utils-Delete_Column=Delete Column +HF-Delete_it=Delete it +JavaScript-Dynamic_Parameters=Dynamic Parameters +px=px +FR-App-Report_Template= +Verify-Message=Message +Plan=Plan +Vertical-Split_Layout=Vertical Split Layout +ParameterD-Delay_Playing=Delay Playing +TurnOff=TurnOff +FR-Please_Rename= +Select_Data_Set=Select Data Set +Name_has_Colon= +ReportColumns-Columns_horizontally=Columns horizontally +FR-Base_Yes= +ReportColumns-Repeat_Row=Repeat Row +Print_Setting=Print Setting +Registration-User_Name=User Name +Datasource-User_Defined=User Defined +FR-Designer-Plugin_DownLoadMessage=Plugin need dependence support,need to install ({R1} m)? +Delay=Delay +FR-Designer-All_MSBold= +Utils-Now_create_connection=Connecting to database +FR-Template-Path_chooseRightPath= +FR-Remote_Re_Connect_to_Server= +Nation=Nation +DBCP_MAX_WAIT=MaxWait +FR-App-Template_Form= +Address= +Sub_Report=Sub Report +FR-Import-Export_Word= +FR-Server_Version_Tip= +StyleAlignment-Left_To_Right=Left To Right +Verify-ToolTips=Not meet formula,Error message prompt +BackgroundTexture-Stationery=Letter Paper +FR-Designer_RWA-Help= +M_Insert-Barcode=Barcode +Bounds=Bounds +FR-Designer-Undo_All_Authority_Operations= +Datasource-Context=Context +CellWrite-Page_After_Column=Page Break After Column +FR-Designer_Cancel= +Button-Group-Display-Columns=Display Column Count +Widget-Height=Height +Examples=Examples +Formula_Dictionary_Display_Example=the real value is \ +StyleAlignment-Horizontal=Horizontal +HyperLink_Must_Alone_Reset=HyperLink_Must_Alone_Reset +ExpandD-Expand_Direction=Display Data Direction +Include=Include +Export-Excel-Page=Page +FR-Designer-Min_Height=Min-Height +Filed=filed +ReportServerP-Import_Css=Import Css +M_Insert-Formula=Insert Formula +FR-Designer_Auto-Build= +FRFont-Foreground=Foreground +Bubble-Width=Bubble Width +Form-Hierarchy_Tree=Hierarchy Tree +WLayout-Border-LayoutContainer=With central and northern two border layout container.Including the northern block may need to adjust the height +Preference-JDK_Home=JDK Home +Utils-Insert_Column=Insert Column +FR-Designer_ToolBar_Top= +BindColumn-The_Conditions_of_FatherCell=The Conditions of Parent Cell +Links=Links +M_Report-Report_Header=Report Header +Sub_Report_Description=The sub-report should exist in the runtime environment of its parent, and the two can not be the same +T_Insert-Float=Insert Float Element +BackgroundTexture-FishFossil=Fish Fossil +My_Computer=My Computer +FORMLET= +HF-Undefined=Undefined +Widget-User_Defined_Widget_Config=User Defined Widget +Report-Write_Attributes_Group_Warning=Group is set to the cell number of cells in each field must be the same +Form-Single_quote=Single Quote +Compile_Success_And_Then_Save=Compile Success And Then Save +FR-Designer_Layout-Padding=Padding +Layout_Container=Layout Container +Admin=Admin +Form-EC_toolbar= +FR-App-All_Auto= +Utils-Available_Columns=Available Columns +Form-Change_Widget_Name_Discription=Change Widget Name Discription +FR-Module_Designer= +FR-Import-Export_Text= +Values-Editor=Values ??Editor +FR-Designer_Yes= +ExpandD-Expandable=Ability to Insert Cell to Display Data +Tree-Return_Full_Path=Tree-Return_Full_Path +FRFont-bolditalic=bolditalic +FR-Base_StyleFormat_Sample=Sample +Area_Value=Area Value +FR-Designer-Plugin_Disable=Disable +Utils-Are_you_sure_to_remove_the_selected_item=Are you sure to remove the selected item +Face_Write=Write +Poly-Report_Block=Poly Report Block +Vgap=Vgap +FR-Designer_HyperLink_Must_Alone_Reset=HyperLink_Must_Alone_Reset +DS-Class=Class +FR-Hyperlink_Please_Select_Reportlet= +FS_Report_Type=Report Type +HF-New_Line=New Line +Privilege=Privilege +Export-Offline-Html=Export Offline HTML +FR-Designer_open-new-form-tip=open new form tip +FR-Designer-Widget-Style_Frame_Style= +Present-No_Present=No Present +FR-Designer_Form-Password=Password +X_Axis=X Axis +FR-mobile_html_analysis= +M_Edit-Bring_to_Front=Bring to Front +Null_Value_Show=Null_Value_Show +Datasource-JNDI_DES=Note\: .jar files containing INITIAL_CONTEXT_FACTORY class need to be copied into the Directory of $installed/lib. +PrintP-Print_Preview=Print Preview +Form-Hierarchy_Tree_Last=Last +Has_been_gone= +RWA-Add_Field=Add Field +newNode=add Node +PageSetup-Shrink_to_fit_content=Shrink to fit content +FR-Designer_Date=Date +Column_Multiple=Column Multiple +FR-App-All_File= +Sort-Descending=Descending +FR-Designer-Plugin_Delete=Delete +Above=Above +Utils-The-Chart= +FRFont-plain=plain +Calculating=Calculating +Form-Object=Form Object +May=May +FR-Designer_Plugin_Normal_Update=Update +FR-Hyperlink_Reportlet= +M_Edit-Copy=Copy +Sub_Report_Message2=The parent-report is not in the current runtime environment +Sub_Report_Message3=Can not choose itself +Sub_Report_Message1=Please choose the currect path +Form-Allow_CustomData=Allow Custom Data +FR-Server_Version_Tip_MoreInfo= +FR-Designer_Server-version-tip-moreInfo=Your own team of our FineReport Designer version number of the product as well as the deployment server version number is consistent, in order to avoid the problems caused by inconsistent versions of risk.If you open a template produced higher Designer version, may open the error may be missing the original template properties. If you create the template used Designer Version higher than your final deployment with the server version, the server may not be able to properly load the template you create. +Get_Lock=Get Lock +HF-Edit_Footer=Edit page Footer +Datasource-New_Charset=New Char Set +Preference-Custom=Custom +BackgroundTexture-Newsprint=Newsprint +ConditionB-Add_bracket=Add bracket +Datasource-Connection_successfully=Connection successfully +Function-The_class_must_implement_the_interface=The class must be interface +FR-Designer_ChartF-Transparency=Transparency +Crimson=Crimson +FR-Hyperlink_Dialog= +FR-Designer_Covered_All= +Hyperlink-New_Window=New Window +Style_Name=Style Name +CSS_warning=CSS_warning +FR-Base_Column= +Three_Rows_Of_Two_Grid=Three rows of two grid +DBCP_VALIDATION_QUERY=ValidationQuery +M_Edit-Clear_Formats=Formats +Parameter_Setting=Parameter Setting +Related=Related +BorderLayout-Constraints=Constraints +Write_Preview=Write Preview +PageSetup-Page_Order=Page Order on print +Verify-Verify_Formula=Verify Formula +State=State +FR-Designer-Widget-Style_Body_Background= +FR-App-Privilege_No= +Please_Drag_ParaPane= +Come_True=Come_True +ISEMPTY=IS_EMPTY +Background-Texture=Texture +FR-Designer_Verify-Message=Message +Locked= +Utils-Design-Action_Cancel= +Image-Titled=Titled +Gradient-Direction=Gradient Direction +Green=Green +Report_Engine=Report Engine +Return-String=Return String +Margin=Margin +Pitch_Percentage=Pitch percentage +FR-Base_TurnOff= +Utils-has_been_existed=has been existed +HF-Insert_Formula=Insert Formula +Utils-Exit_Designer=Exit Designer +Formula_Dictionary_Display=For every value($$$) in the actual values above, it's display value is +PageSetup-Left_to_right=Left to right +Utils-Import_Excel_Data=Import Excel Data +M-Save=Save +redo=redo +Status=Status +Draw= +FR-Designer_Message= +Records=Records +FR-Designer_ComboBox=ComboBox +Driver=Driver +Template_Parameters=Template_Parameters +Form-Remove_Repeat_Data=Remove Repeated Data +ECP_decode= +Area_Name=Area Name +Others=Others +Merge=Merge +BackgroundTexture-Parchment=Parchment +BindColumn-Bottom_N=Last N +Frame= +Bottom_Border_Line=Bottom Border Line +Muiti_In= +FR-Designer-Dependence_Install_Online=install online +Use_Default_ToolBar=Use_Default_ToolBar +M_Server-Platform_Manager=Platform_Manager +PageSetup-inches=inches +Form-Widget_Property=Widget Property +FR-Layout_Padding= +Schema=Schema +Server_Path=Servlet Path +Condition_Display=Condition Display +FR-Server-Design_template_unopened= +Function-Function_Class_Name=Function Class Name +Schedule-Template=Template +Tree_Data_Field=Tree Data Field +Border-Style-Normal=Rectangular +Top_And_Double_Bottom_Border_Line=Top And Double Bottom Border Line +FR-Server_Embedded_Server_Start=Server in Design-Start +FR-Designer-Basic_Restart_Designer_Later=Restart later +StyleAlignment-Top=Top +ReportServerP-First=First +Not_Exist=Not Exist +FR-Remote_File_is_Locked= +Apply=Apply +Sytle-Indentation=Indentation +Parameter-Float=Float +HF-Center_Section=Center Section +Form-Double_quotes=Double Quotes +M_File-Export-Word=Word +M_File-Export-Text=Text File +PageSetup-First_Page_Number=The Number of First Page +Execute= +Task=Task +Custom_Button_Type_Submit=Submit +FR-Designer-Widget_Settings= +IS_Need_Password=IS Need Password +PageSetup-Horizontally=Horizontally +No_Editor_Property_Definition=No Editor Property Definition +Env-Remote_Server=Remote Server +FR-Utils_Background= +FR-Designer-Plugin_Warning=Warning +Server-version-info=You open the template file is open there will be an error made ??by the later design or the risk of losing the original template attribute. Please upgrade to your designer if need to open this template +CellWrite-Page_After_Row=Page Break After Row +HF-Right_Section=Right Section +PageSetup-Title_Start_Row=Title Rows +From= +Preference-Grid_Line_Color=GridLine Color +RowTo=RowTo +FR-Designer_ReportColumns-Repeat_Column= +M_Server-Function_Manager=Function Manager +KeyWord= +DS-Multi_Dimensional_Database= +BiasD-Slope_Line=Slope Line +Tue=Tue +ReportServerP-Last=Last +FR-Base_Columns= +SpecifiedG-Leave_in_their_own_groups=Leave in their own groups +LOG-Please_Wait=Please Waiting +Form-ToolBar=Form ToolBar +FR-Base_sure_remove_item= +Component_Scale=Component Scale +Hyperlink-Use_CJK_to_encode_parameter=Use CJK to encode parameter +LOG-Has_Been_Openned=Report Has Been Openned +FR-Designer-Dependence= +ECP_error_pwd= +REPORTLET= +RWA-Column_Offset=Column Offset +Forecast=forecast +Light_Orange=Light orange +StyleAlignment-Vertical=Vertical +Form-List=List +ParameterD-Show_Parameter_Window=Show Parameter Window +FR-Designer_Set_Submit_Event= +Value_Percent=Value In Percent +DBCP_MIN_EVICTABLE_IDLE_TIMEMILLIS=MinEvictableIdleTimeMillis +Function-The_class_must_be_located_in=The class must be located in +FR-Action_Sort= +DataFunction-Average=Average +FR-Designer_Show_in_Containing_Folder= +M_File-Export-Excel=Excel +DataFunction-Max=Maximum +FR-Designer_Form-Widget_Name=Widget Name +FS_End_Date=End Date +Export-Excel-Simple=Simple +ColumnTo=ColumnTo +SpecifiedG-Discard_all_others=Discard all others +DS-TableData=TableData +Form-DataTable=DataTable +Sub_Report_ToolTips=ToolTips of Sub Report +Right_Top=Right_Top +M_Edit-Merge_Cell=Merge Cell +FR-Designer_Restore_Default=Restore Default +Component_Interval=Components Interval +Cover_None=Cover None +Datasource-From_Database=From Database +Folder=Folder +Form-Allow_Edit=Allow Edit +M_Edit-Clear=Clear +ParentCell_Setting=Parent Cell Setting +Only_selected_cell_can_paste_only=Only selected cell can paste only +M_Report-Report_Columns=Report Columns +Unit_Hundred=Hundred +FR-Designer_DataTable-Build= +Widget-Form_Widget_Config=Form Widget +Server-version-tip-moreInfo=Your own team of our FineReport Designer version number of the product as well as the deployment server version number is consistent, in order to avoid the problems caused by inconsistent versions of risk.If you open a template produced higher Designer version, may open the error may be missing the original template properties. If you create the template used Designer Version higher than your final deployment with the server version, the server may not be able to properly load the template you create. +Actions=Actions +FR-Designer-Dependence_Connect_Server_Error=connect error +High=High +HJS-Send_Failed=Send Failed +HJS-Message=Message +File-Allow_Upload_Files=Allow Upload Files +FR-Designer-Form-ToolBar_Chart= +Thick_Bottom_Border_Line=Thick Bottom Border Line +FR-Action_Remove= +FRFont-Style=Style +Select_DataColumn=Select Data Column +StartValue= +SINGLE_FILE_UPLOAD= +BackgroundTexture-Cork=Cork +M_Format-Data_Map=Data Map +FR-mobile_native_analysis= +HighLight=HighLight +FR-Designer_Dropdown-More-Preview=Drop-down for more preview +local=local +FR-Designer_Gradation=Gradation +PageSetup-Finis_Start_Column=Finis Columns +Env-Invalid_User_and_Password=Invalid User Or Password +FR-Designer-Plugin_All_Plugins=All plugins +FR-Designer_Prepare_Export=Prepare_Export +DBCP_TEST_ON_RETURN=TestOnReturn +no-alternatives=no alternatives +FR-Designer_Submmit_WClass= +M_Insert-Slope_Line=Insert Slope Line +FR-Designer-Plugin_Plugin_Description=Description +ExpandD-Not_Expand=Not to Insert Cell to Display Data +Utils-Bottom_to_Top=Bottom to Top +Collect-Click\!_Get_user_information_code=Click\! Get user information code +FR-Already_exist= +Send=Send +M_Edit-Clear_All=All +Brown_Orange=Brown Orange +PageSetup-Portrait=Portrait +FR-Designer_Form-RadioGroup=Radio Group +FR-Utils-App_AllFiles=All Files +Popup=Popup +Server_Charset=Server_Charset +CellWrite-Repeat_Content_When_Paging=Repeat Content in New Page +Utils-No_Pagination=No Pagination +Form-NullLayout=NullLayout +ConditionB-Remove_bracket=Remove bracket +email=email +Minute= +FR-Designer-Plugin_Update=Plugins to update +alraedy_close=already closed +ComboCheckBox-End_Symbol=End Symbol +DataColumn=Data Column +Form-Password=Password +FR-Background_Image_Adjust=Adjust Image +Export-Excel-PageToSheet=Page To Sheet +Edit-Row_Count=Row Count +DS-Report_TableData=Report Table Data +Sche-Hour=Hour +Group_Count=Group Count +EndValue=End Value +FR-Designer_Sytle-Indentation=Indentation +DownBarBorderStyleAndColor=DownBarBorderStyleAndColor +World=World +FR-Designer-Basic_Cancel=Cancel +Finally=Finally +Low=Low +Please_Input_The_Key=Please Input the key the map use +Smart=Smart +Preference-Predefined=Predefined +Current_custom_global= +FR-Designer-Plugin_Shop_Need_Install= +WEB-Pagination_Setting=Pagination Setting +RCodeDrawPix=PIX +FR-Designer-Widget-Style_Alpha= +BorderLayout-North=North +HJS-Current_Page=Current Page +Compile=Compile +Show_Blank_Row=Show Blank Row +TableData_Dynamic_Parameter_Setting=Dynamic Parameter-Setting +FR-Background_Image_Default=Default Image +BackgroundTexture-WhiteMarble=White Marble +DataFunction-Sum=Sum +Collect-The_user_information_code_is_invalid=The user information code is invalid +Preference-Locale=Locale +M_File-Export-PDF=PDF +BiasD-From-lower_left_to_upper_right=Lower left to upper right +Border-Style=Border-Style +Sort=Sort +Image-Image_Layout=Image Layout +Panel=Panel +FR-Designer-Basic_Copy_Build_NO_OK=Build No. has been copyed +All_Border_Line=All Border Line +FR-Utils-Please_Input_a_New_Name=Please Input a New Name +FR-Base_Formula_Plugin=Plugin Function +Two_Rows_Of_Three_Grid=Two rows of three grid +FR-Designer_Certificate_Pass= +Bubble-Series_Name=Series Name +M-New_Multi_Report=Multi Report +BackgroundTexture-PinkTissuePaper=Pink Tissue Paper +Preference-Support_Default_Parent_Calculate=Support Default Parent Calculate +Show_Blank_Column=Show Blank Column +BaiduMap=Baidu Map +Report-Web_Attributes=Web Attributes +FR-Designer_StyleAlignment-Wrap_Text=Wrap Text +Need=Need +Parameter-Double=Double +Config_Servlet=Config Servlet +Form-Comma=Comma +Verify=Verify +PageSetup-Landscape=Landscape +Weeks=Weeks +FR-Designer-Widget-Style_Title_Background= +Preference-Pagination_Line_Color=Pagination Line Color +Test_URL=Test URL +Fill_blank_Data=Fill blank Data +ReportServerP-The_name_of_printer_cannot_be_null=The name of printer cannot be empty +FR-Designer-Basic_Copy_Activation_Key=Double click to copy key to clipboard +Continuum=Continuum +BackgroundTexture-MediumWood=Medium Wood +Datasource-Column_Index=Column Index +Function-Function_File=Function File +Form-Component_Bounds=Component Bounds +Utils-Submit=Submit +Conditions_formula= +M_Insert-Image=Insert Image +FR-Designer-Plugin_Will_Be_Delete=Delete plugin +FormulaD-Functions=Functions +Mobile_Terminal=The mobile terminal +CheckBox=CheckBox +FR-Designer-Plugin_Install=Install +Sun=Sun +FR-Designer_ToolBar_Bottom=Bottom ToolBar +Widget-Width=Width +Series_Name=S_N +Set_Row_Title_Start=Set_Column_Title_Start +HF-Default_Page=Default Page +Env_Des=Env_Des +Widget-User_Defined=User Defined +Url_location=url +Disk_File=Disk File +Inside=Inside +FR-Designer_filedChosen= +ServerM-Predefined_Styles=Predefined Styles +is_need_word_adjust= +Background-Null=No Background +PageSetup-Vertically=Vertically +FR-Designer_Root=Root +FR-Designer_Form-TextArea=TextArea +ReportServerP-Import_JavaScript=Import JavaScript +Form-TableTree=Table Tree +Opened=Opened +M_Edit-Delete=Delete +Widget-Form_Widget_Container=Form Container +BindColumn-Summary=Summary +Sche-Second=Second +Server-Open_Service_Manager=Open Service Manager +FRFont-Effects=Effects +OtherGroup_Name=The name of other group +Specify=Specify +Highlight-Click_to_Choose_Property_To_Modify=Click to Choose Property to Modify +triggered= +Double_Bottom_BorderLine=Double Bottom BorderLine +M_Insert-Sub_Report=Insert Sub Report +Unit_Ten=Ten +Polybolck=Polybolck +Select_sort_order=Select sort order +HJS-Mail_to=To +StyleAlignment-Left=Left +Two_Rows_Of_Two_Grid=Two rows of two grid +FR-Designer-Form-Please_Drag_ParaPane= +Milliseconds=Milliseconds +DataFunction-None=None +Delivery=Delivery +ColumnSpan=ColumnSpan +StyleAlignment-Bottom=Bottom +Read_failure=The read failure may source file is corrupted +Verify-Verify=Verify +FR-Designer-Widget-Style_Title_Format= +FR-Designer_Edit_String_To_Formula= +FR-Base_UnSignIn= +Every= +CellWrite-Preview_Cell_Content=Preview Content of Cell +FormulaD-Data_Fields=Data Fields \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index b7c7fe3260..4bfbbdf899 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -516,7 +516,6 @@ FR-Designer_Create_Tree=Build Tree FR-Designer_Set_Callback_Function=Set Callback Function FR-Designer_ConfirmDialog_Content=Confirm to delete Tab Control FR-Designer_ConfirmDialog_Title=FineReport 8.0 - FR-Designer_FormulaPane_Tips=Tips\:You can input B1 to get the data in the second cell of the first row FR-Designer_FormulaPane_Variables=Variables FR-Designer_FormulaPane_Formula_Description=Formula Description @@ -525,13 +524,11 @@ FR-Designer_FormulaPane_Search=Search FR-Designer_Tab_carousel=Tab carousel FR-Designer_setCarousel=Start FR-Designer_carouselInterval=Interval - FR-Designer_ClassName_panel=Class Name FR-Designer_Description_panel=Description FR-Designer_Edit_panel=Edit FR-Designer_Property_panel=Property FR-Designer_Select_panel=Sel - FR-Designer_LayoutTable_Column_Width=250 FR-Designer_Set_BG_Of_Current_Row=Set BG of the row being edited FR-Designer_Unload_Check=Prompt users when leave without submitting @@ -547,7 +544,6 @@ FR-Designer_PageSetup_Page=Page FR-Designer_Custom_Job_Description=Description FR-Designer_Property=Property FR-Designer_ClassName=Class Name - FR-Designer_Polyblock_Edit=Aggregation block edition FR-Designer_Function_Description_Area_Text=The class must inherit 'com.fr.script.AbstractFunction'. The compiled class should be copied to\nJ2EE server '{R1}' directory.\nAdd the source code(.java file) into the same folder if need.\nExample: {R2}} FR-Designer_PageSetup_Horizontal=Horizontal @@ -588,10 +584,8 @@ FR-Designer-Move_Tab_First=move to first FR-Designer-Move_Tab_End=move to end FR-Designer-Move_Tab_Next=move to next FR-Designer-Move_Tab_Prev=move to previous - FR-Designer_Too_Large_To_Paste=Too large to paste! FR-Designer_Too_Small_To_Paste=Too small to paste! - FR-Designer_AxisReversed=Axis in reverse order FR-Designer_Logarithmic=Log scale FR-Designer_Chart_Log_Base=Log Base @@ -600,8 +594,6 @@ FR-Designer_Style=Style FR-Designer_Color=Color FR-Designer_Border=Border FR-Designer_Background-Pattern=Pattern - - FR-Designer_SimpleDetail_Report= FR-Designer_SimpleCross_Report= FR-Designer_Edit_Button_ToolBar=Edit Button ToolBar @@ -609,3 +601,1390 @@ FR-Designer_Remove_Button_ToolBar=Remove Button ToolBar FR-Designer_Get-CubeGetting= FR-Designer_DoubleLayer_Report= FR-Designer_Get-Cube= +CellWrite-InsertRow_NULL=Null +DashBoard-ChartFloat=Chart +contact_info=Contact information (optional) +Page_Setup=Page Setup +CellWrite-Print_Export=Print/Export +Cannot_Get_Date=Can not get date +FR-Designer_Modify=Modify +M-Write_Preview=Filling Preview +FR-Base_RWA-Key=Key +China=China +Set_Legend_Sytle=Set Legend Format +FR-Designer_Number=Number +FR-Designer-Widget-Style_Common=Common +M-Save_As=Save As +Following_parameters_are_not_generated=The following parameters are not generated +FR-Designer-Basic_Activation_Key_Copy_OK=Key has been copy to clipboard +Utils-Current_Sheet=Current Sheet +ConditionB-is_less_than=less than +BorderLayout-West=West +AnalysisLine=Line +Layer_Report_Warnning_info=Line report engine is suitable for large data.
Many report features will no longer support if use it,
more information in helpdocument. +Tree-Width=Tree Width +alert_word=Export without fixed height, cell hight will change according to the content and pagination position will different from the preview result. +PageSetup-Paper_Size=Paper Size +M-Page_Setup=Page Setup +DashBoard-FormBook=Form +X-Coordinate=Horizontal axis +Style-Line_Spacing=Line Spacing +FR-Designer_Plugin_Should_Update_Title=Warning +Server-Define_Data_Connection=Define Data Connection +BarInside=Bar Inside +Border-Color=Border Color +NotAllow=Invalid +Utils-File_type=File type +FR-Designer-Plugin_Install_From_Local=Install plugin from local file +Summary_Method=Summary Method +Select_Specified_Grouping=Select custom group +HF-Number_of_Page=Total Number of Page +FR-Designer-Tree_Height=Tree Height +Owner=Owner +Home=Home +FR-Server_Embedded_Server_Stop=Built-in server-Stop +FR-Designer-Plugin_Detecting_Update=Checking for updates +HF-Whether_to_define_the_selected_type=Whether to define the selected type +StyleAlignment-Right=Right +FR-Designer_Alignment-Style=Alignment Style +PageSetup-Title_Start_Column=Duplicate Title Columns +Tree-Mutiple_Selection_Or_Not=MultiSelect +FR-Designer-Plugin_Search=Search +Choose_Role=Access Control +Append_Delete_Row_Message=Warning! Please set extended properties of the specified cell. +Form-ComboBox=Drop-down Boxes +PageSetup-Footer=Footer +Sorting=Sorting +DBCP_TEST_WHILE_IDLE=Open Idle Connections Recyclers Test +DS-Embedded_TableData=Built-in Data Set +FR-Designer_No-Privilege=No Privilege +FRFont-Subscript=Subscript +Background_Settings=Background Settings +FormulaD-Invalid_Formula=Invalid Formula +FR-Base_Margin=Margin +FR-Designer-Plugin_Shop_Installed=Plug-shop installed, whether to start immediately? +M_Edit-Send_to_Back=Send to Bottom +Email-Can_Preview_Report_Content=Preview Report Content in the Body +FR-Designer-FRFont_Italic=Italic +CellWrite-Print_Background=Cell Background +Wizard=Wizard +Preference-Is_Drag_Permited=Support drag-and-drop +FR-Designer_Release_Lock=Unlock +Form-Delimiter=Separator +wrong=wrong +FR-Menu-Server_Chart_PreStyle=Chart Predefined colors +Form-Button=Button +FormulaD-Valid_Formula=Valid Formula +ParameterD-Parameter_Interface=Parameter Interface +At_least_one_visual_worksheet=A workbook must contain at least one visible worksheet. If you want to delete, please insert a new worksheet. +Need_Min_Value=Need Min Value +Allow_Blank=Allow Null +CellWrite-InsertRow_DEFAULT=Default +Widget-Load_By_Complete=Full load +FR-Designer-Basic_Only_Submit_Current_Sheet=Submit Current Sheet Only +Sort-Sort_Order=Sort +File-File_Size_Limit=File Size Limit +PrintP-Print=Print (T) +FR-Designer-StyleAlignment_Center=Center +Preference-Setting_Colors=Colors Setting +Judge=Judge +Image-Adjust=Adaptive +Collect-User_Information_DES=Simply click on the "get activation code" button above, a new browser window will pop up. Then visit the product's official website to obtain an completely free activation code, the entire process takes only 3 minutes +FR-Designer_Plugin_Normal_Update_From_Local=Update from local file +BackgroundTexture-Canvas=Canvas +BarOutSide=Bar Outside +Preview_ToolTips=Preview ToolTips +FRFont-Family=Name +FR-Lic_does_not_Support_Remote=Current lic does not support remote design, please update the lic +InterfaceStyle=Style +RWA-Key=Key +WF-Name=Name +RWA-Click_Cell_To_Edit_Value=Click Cell to Edit Value +Utils-Row_Height=Row Height +ReportD-Excel_Export=Export Attributes +Form-Please_Select_A_Kind_Of_Form_Container=Select A Form Container +Column_Does_Not_Exsit=Column Does Not Exsit +M_Insert-Hyperlink=Hyperlink +can_not_include_underline=Can not contain "_" +FR-Designer-Plugin_Jar_Expired=Jar Expired +FR-Background_Image_Extend=Extend Image +TopDownShade=Gradient(vertical) +FR-Base_Right=Right +DataBinding=Data Binding +ConnectionPool_Attr=Connection Pool Attributes +Connect_SQL_Cannot_Null=Data Connection and SQL Cannot be Null +DBCP_MAX_ACTIVE=Max Active Connections +M_Window-Preference=Options +ToolBar_Top=Top ToolBar +FR-Designer_Indent-Pixel=Pixel +FR-Designer_Unit_MM=MM +IDLE=Idle +FRFont-Underline=Underline +FR-Designer-Plugin_Read_Plugin_List_Error=Error when reading plugin list +Type_Set=Type Setting +M_Format_A-Cell_Attributes=Other Attributes +CellWrite-Show_As_Image=Show As Image +ShowAsDownload=Display the binary content using download link +Form-ComboCheckBox=Drop-down CheckBox +BackgroundTexture-WovenMat=Woven Mat +BindColumn-Custom_Data_Appearance=Custom displays +Actived=Active +Env-Local_Directory=Local Directory +Form-Colon=Colon +Preference-Vertical_Scroll_Bar_Visible=Vertical Scroll Bar Visible +Utils-Show_Cell_Value=Show Cell Value +FR-Designer_ReportColumns-Repeat_Row=Copy row sequence +SpecifiedG-Specified_Group=Custom Group +RWA-Smart_Add_Cells=Smart Add Cells +HF-Left_Section=Left Section +M_Report-Report_Background=Report Background +Image-Extend=Stretch +FS_BI=Decision-making platform +ToolBar_Bottom=Bottom ToolBar +Hgap=Horizontal gap +FR-Designer_Enter-New-FileName=Enter New File Name +Verify_Fail=Validate Failed +CellWrite-InsertRow_Policy=Policy of Insert Row +FR-Designer-Plugin_Illegal_Plugin_Zip=Illegal plugin zip +RCodeVersion=Version +Convert=Convert +Please_Drag=Please drag in row fields, column fields and rollup fields +FR-Designer-Widget-Style_Preview=Preview +mobile_number=Mobile Number +FR-Designer_Form-ComboCheckBox=Dropdown CheckBox +CacheValidateTime=Cache valid time +Hyperlink-Extends_Report_Parameters=Inherit Report Parameters +FR-Designer_Values-Editor=Values Editor +Export-Excel=Excel +Utils-Left_to_Right=Landscape +ExpandD-Vertical_Extendable=Vertically +Utils-Report_Runtime_Env=Report working directory +Utils-Right_to_Left=From right to left +Utils-Beyond_the_top_side_of_Border=Beyond top border +Exception_StackTrace=Exception StackTrace +Corresponding_Fields=Corresponding Fields +Form-CheckBox=CheckBox +Utils-Current_Row=Current Row +BuildIn=Built-in +BindColumn-Results_Filter=Result Filter +FR-Designer-Plugin_Manager=Plugin Management +M_File-Export-CSV=CSV(comma delimited) +Data_Filter=Data Filter +ReportServerP-Edit_Printer=Edit Printer +FR-Designer_Datasource-Stored_Procedure=Stored Procedure +RESTART=Restart +FormulaD-Function_name=Function Name +ChooseOneButton=Please chose one control +Priority=Priority +Datasource-Datasource=Data Source +FR-Designer_Width=W +Cannot-Add_To_This_Area=Cannot Add To This Area +Run=Run +Set_Submit_Condition=Submit Condition +FR-Base_Value=Value +fileLocked_undeleted=Template is locked, you can not delete\! Click OK to refresh the templates list +Web_Apply=Web Application +Refresh_Database=Refresh database +Set_Row_Title_End=Set Duplicate End Rows +FR-Utils-New_Folder=New Folder +BiasD-From-upper_left_to_lower_right=upper left-lower right +CapsLock=CapsLock +StyleFormat-Sample=Sample +RWA-Smart_Add_Cell_Group=Smart Add Cell Group +MConfig-CancelButton=Cancel +Function-Choose_Function_Class=Choose Function Class +LatLng=Lat and Lng +DS-Server_TableData=Server Data Set +BackgroundTexture-GreenMarble=Green Marble +read_time_out=Load Timeout +JavaScript-Commit_to_Database=Commit to DB +DS-Relation_TableData=Linked Data Set +CellWrite-Page_Before_Row=Before Row +FR-Designer-Plugin_Load_Plugins_From_Server=Loading data from plugins store +D-Dispaly_Divide_Result_Set_into_Groups=Grouping on Result Set +Closed=Closed +RWA-Help=Set "No update if no modidy", so if cell is not modified, the record will not update; it improves filling and submit performance when data is large. +FR-Designer-Widget-Style_Custom=Custom +FR-Designer-Widget-Style_Render_Style=Rendering style +Highlight-Barcode=BarCode +FR-Designer_Connect_SQL_Cannot_Null=Data connection and SQL panel cannot be Null +trigger=trigger +M-Data_Analysis=Data Analysis +Function-The_selected_file_cannot_be_null=The select file cannot be null +No-Privilege=No Privilege +ReportColumns-Repeat_Column=Copy column sequence +SecondGraduationUnit=Minor Graduation Unit +Form-Widget_Property_Value=Attribute Value +GIVE-NAME=Give Name +FR-Designer_Rename=Rename +Utils-Merge_Cell=Merge Cells +Style-Spacing_After=After Paragraph +Enlarge_Or_Reduce=Zoom +Tree-Height=Tree Height +RCodeErrorCorrect=Error-correction +Enter-New-FileName=Enter New File Name +try_resending=Please try resending +M-Open_Report=Open... +Please_Select=Please Select +InRow=InRow +Form-TextArea=Text Fields +FR-Designer_Https_Enable=Start https +Widget-Custom_Widget_Config=Custom control +already_exists=Already exists +Original_Marked_Filed=Original Tag Field +BackgroundTexture-Sand=Beach +Values=Values +Not_use_a_cell_attribute_table_editing=You may not use a cell attribute table editing +Root=Root node +cycle=Cycle +open-new-form-tip=open new form tip +Support-Current_Auto_Complete_Shortcut=Current Shortcut key +GROUPING_MODE=Ordinary Grouping +DBCP_MAX_IDLE=Max Idle Connections +BackgroundTexture-BlueTissuePaper=Blue Sandpaper +ReportD-Export_Hided_Row=Export hidden Row +FR-Custom_styles_lost=Custom style lost +Env-Des2=Servlet position should like "http\://localhost\:8080/WebReport/ReportServer",contains host name, port, web application and servlet. Input the upper items and the system will automatically generate a servlet position for you. +Env-Des1=Please select the WEB-INF directory where the Report Server is in +PageSetup-Placement_Center_on_Page=Center on Page +sure_to_delete=sure to delete +Already_exists_not_add_repeat=Already exist, please do not repeat +Axis_Title=Axis title +FR-Designer-Plugin_Install_Failed=Install failed +FR-Designer-Widget-Style_Frame=Frame +MainGraduationUnit=Major Graduation Unit +Second_Axis=Secondary Axis +Classifier-Ge=Piece +MSBold=MS YaHei +Form-Design_Size=Form Design Size +FR-App-Template_Save=Save +ExpandD-Horizontal_Extendable=Horizontally +RP_Authority_Edit=Permission +Warnning=Warning +RoleName_Can_Not_Be_Null=Role name can not be null or duplicate +Application=Applications +Formula_Dictionary_Display_Examples_Html=Real value range is \ +ECP-error_pwd=Password Error +FR-Hyperlink_ChartHyperlink=Chart Hyperlink +M_Edit-FormatBrush=Format Painter +Indent-Pixel=Pixel +FR-Designer-Widget-Style_Border_Line=Border weight +Widget-Default_Widget_Config=Basic control +Version-does-not-support=Current lic does not support remote design, please update the lic +StyleAlignment-Right_To_Left=Right To Left +Style-Spacing_Before=Above Paragraph +Has_Existed=Already Exist +FR-Designer_DisplayNothingBeforeQuery=Display Nothing Before Query +Still=Still +JS_WARNING2=\ Ex: http\://localhost\:8075/WebReport/demo.js +JS_WARNING1= \ WebReport is a relative report project directory, there is a test.js in WebReport\\js,
 the relative path is js/test.js +Connectionline=Connection Modes +Utils-Insert_Record=Insert Record +Set-Parameter-Name=Set parameter name first +More-information=More information +Parameter-Boolean=Boolean +FRFont-Strikethrough=Strikethrough +Server-version-tip=The version of the server you are connecting is older than the Designer, continue to connect, some attributes you are editing may not be saved. Please conform the versions of FineReport Designer and the deployment server are consistent. +Form-All_Files=All Files +DBCP_NUM_TEST_PER_EVCTION_RUN=Recycled and Tested Idle Connections +FR-Designer-FRFont_Family=Name +Device=Device +M_Insert-Cell=Cell Element +Present-Formula_Present=Formula Present +FRFont-Superscript=Superscript +CellWrite-Page_Before_Column=Before Column +Golden=Golden +Preference-Support_Cell_Editor_Definition=Support Cell Editor +M-Page_Preview=Page Break Preview +HJS-CC_to=CC +Tree-Select_Leaf_Only=Only return leaf node +Pointer-A-Tick-Order=Pointer value and unit value' s order of magnitude +Pink=Pink +StyleAlignment-Distibuted=Justify +Odd=Odd +already-saved=Already saved +FR-Hyperlink_Chart_Cell=Chart Hyperlink-Link Cell +Style-Left_Indent=Left Indent +Offline=Offline +Form-Hierarchy_Tree_Next=Next +Needle=Pointer +GoogleMap=Google Map +Running=Running +M_Edit-Unmerge_Cell=Un-merge Cell +Out_Border_Line=Outside Border +Style-Spacing=Spacing +FR-Utils_Submit=Submit +ReportServerP-Previous=Previous +StyleAlignment-Text_Style=Text control +RelatedChart=Linkage between charts and tables +ProcessManager=Process Management +Cancel_Repeat_Attributes=Cancel duplicate rows and columns +FR-App-File_Message=Message +Datasource-Stored_Procedure=Stored Procedure +RWA-Row_Offset=Row Offset +M_Format-Style=Style +detail_description=Detailed description +FR-Designer-Widget-Style_Title_Content=Title Content +ParameterD-Report_Parameter=Report Parameter +HF-Edit_Header=Edit Page header +Sytle-FRFont=Font +FR-Designer_Finish_Export=Export Finished +MultiFileUpload=MultiFile Upload +HF-Page_Number=Page Number +Style-Right_Indent=Right Indent +Desktop=Desktop +FR-Server-All_Error=Error +ConditionB-Operator=Operator +Today=Today +Form-Widget_Name=Control Name +Covered_All=Override All +Day=Day +External=External +Black_Font=Black Font +LOG-Report_Server_IS_Started=Report Server is Started +Tips\:You_Can_Input_B1_To_Input_The_Data_Of_The_First_Row_Second_Column=Tips\:You can input B1 to get the data in the second cell of the first row +FR-Designer_ChooseOneButton=Please chose one control +Widget-Sizing=Sizing +NO_Border_Line=NO Border +Cell_Data=Cell data +StyleAlignment-Vertical_Text=Vertical Text +Label=Label +Orange=Orange +zeroMarginWarn=The printer exist the physical margins
report page margin settings the small can
can print content insufficiency.
  +Widget-Date_Selector_Return_Type=Return value type +Utils-Switch_To_Template_Reportlet=Switch to template web report +satisfy=satisfy +FR-Designer_WidgetDisplyPosition=Control DisplyPosition +FR-Base_Top=Top +FR-Designer_Form-CheckBox=CheckBox +Reportlet-Parameter_Type=Parameter passing mode +sending=sending... +FR-Designer-FRFont_Foreground=Foreground +FR-Import-Export_SVG=SVG +M_Edit-Clear_Contents=Content +Session=Session +Widget-Load_Type=Load +template_unsaved=template can not be saved +check_communication=Please check the network communication is normal and the server is running +List-Need_Head=Need List Head +FR-Designer-Plugin_Has_Been_Installed=Plugin has been installed,switch to plugin updates to update it. +FR-Widget_Tree_And_Table=Control tree and control table +FR-Base_Help=Help +FR-Designer-Plugin_Update_Successful=Update successfully, restart the sever to enable it +August=August +LOG-Is_Being_Openned=Is Being Openned +BackgroundTexture-Oak=Oak +Multi_nam_formula=\ data set name\: +TurnOn=TurnOn +HJS-Send_Successfully=Send Successfully +Mon=Mon +Inner_Parameter=Built-in Parameter +Required=Required +Summary=Summary +template_unopened=unable to open template +FR-Base_Bottom=Bottom +DataFunction-Min=Minimum +StyleFormat-Percent=Percentage +FR-App-All_Custom=Custom +M_Insert-Data_Column=Insert Data Column +PLEASE=Please +Numbers=Numbers +Release_Lock=Unlock +Background-Background_is_NULL=No Background +FR-Designer_Sytle-FRFont=Font +Gradation=Gradation +The_current_list_is_empty=The current list is empty +Formula_Dictionary_Display_Examples=\Real value range is \ +Schedule-Template_Parameter=Template Parameter +JSShow=Dynamic display +Level_coordinates=Hierarchy coordinate +MainGraduationLine=Major Graduation Line +Hyperlink-Web_link=Web link +StyleAlignment-between_-90_and_90=between -90 and 90 +FormulaD-Custom_Function=Custom Function +FR-Designer_Integer=Integer +PageSetup-Finis_Start_Row=Duplicate Last Row +RWA-Remove_Field=Remove Field +Form-Desin_Width=Form Design Width +No-tableData=Return no dataset +Page_Total=Total +FR-Designer-Plugin_Connect_Server_Error=Error to connect plugin store, try again later +Import-Excel_Source=Excel Source Files +Utils-Left_to_Right_a=From left to right +ExpandD-Expand_Attribute=Extension Attributes +Report-Write_Attributes=Filling Attribute +Utils-Current_Column=Current Column +Need_Max_Value=Need Max Value +Report_Not_Exist=Report Not Exist +HF-Insert_Content=Insert +UpParent=Upper parent cell +PageSetup-Page=Page +Utils-Move_Up=Move Up +BackgroundTexture-PurpleMesh=Purple Grid +Export-Word=Word +ServerM-Widget_Manager=Control management +FR-Designer-Basic_Activation_Key=Activation Key\: +FR-App-Template_Report_Not_Exist=Report Not Exist\! +Protected=Protect +Skip=skip +FR-Designer_PageSetup-Vertically=Vertically +revert=revert +PageSetup-Predefined=Predefine +Border-Style-Radius=Border-radius +IntPart=Integer part +ExpandD-Data_Column=Data Column +Sort-Ascending=Ascending +FR-Designer-Widget_Style=Style +parameter_name_exist=The parameter name already exists +FR-Designer_Layer-Build=Layered Build +Please_Rename=Please Rename +Form-Editing_Listeners=Event editing +RWA-Smart_Add_Fields=Smart Add Fields +FR-Designer-Tree_Width=Tree Width +Record=Record +Poly-Report_Component=Aggregate Report Component +Options=Options +NS-war-remote=Error codes\:1117 Compression deployment does not support remote design +Sche-Minute=Minute +Three_Rows_Of_Three_Grid=A grid with 3 rows and 3 columns +WorkSheet=Free Report +FR-Designer-Widget_Size=Control Size +BindColumn-Select=List +FR-Widget_Mobile_Terminal=Mobile Terminal +FR-Background_Image_Titled=Titled Image +SetPrinterOffset=Printer Offset +FR-Designer-Plugin_Installed=Installed +FR-Designer-Hyperlink_Name=Name +FR-Designer_Form-Button=Button +Black=Black +FR-Designer-Widget-Style_Border_Color=Border Color +Set_Submit_Event=Set Submit Event +PDF-Print_isPopup=Whether display a popup settings box +LayerPageReport_CountPerPage=Number of records per page +Display_Modes=Display Modes +RowSpan=Row Span +Datasource-Test_Connection=Test Connection +Function-Function_Manager=Function Manager +Host_Name=Host Name +CellWrite-Show_As_HTML=Show As HTML +FR-Designer-Widget-Style_Shadow=Shade +FR-Designer_Parameter_String=String +Form-SupportTag=Displayed as label +ReportD-Report_Write_Attributes=Report filling attributes +DataFunction-Count=Count +Top_And_Thick_Bottom_Border_Line=Top and thick bottom border +Client=Client +BindColumn-Result_Serial_Number_Start_From_1=Serial Number Starts From 1 +History=History +Already_exists=Already exist, please input again +Datasource-Original_Charset=Original Code +FR-Base_Left=Left +ReportServerP-Next=Next +BindColumn-Top_N=Top N +Animation_Special=Special Effect +Widget-Chart_Widget_Config=Chart control +FR-Designer-Plugin_Cannot_Update_Not_Install=Cannot update, please confirm it is installed correctly +After_Changed_Some_Attributes_Are_Different=Some attributes will be changed after conversion, whether to continue? +PieStyle=Pie Style +HF-Are_you_sure_to_delete_it=Are you sure to delete it +Utils-Design-File_Open=Open +FR-Utils_Label=Label +Data-Label=Label +M_Insert-Text=Insert Text +Form-View_Tree=View Tree +M_Insert-Chart=Insert Chart +HF-Even_Page=Even Page +ReportServerP-Report_server_parameter=Report Server Parameter +JavaScript-Form_Submit=Form Submit +Horizontal-Split_Layout=Horizontal partitioning layout +BorderLayout-Center=Center +INFO-Reset_Webapp=Reset Application Server +FR-Designer_Text=Text +IN_and_INOUT_type_not_as_cursor=IN and INOUT type canot be cursor +Main_Axis=Primary axis +M_Edit-Cut=Cut +Utils-The_Name_has_been_existed=The name already exists +FR-Background_Image=Image +Character=character +Unit_Thousand=Thousand +Test=Test +Utils-Would_you_like_to_save=Would you like to save +HF-Header_and_Footer=Header and Footer +LIST_MODE=List Mode +HF-Insert_Image=Insert Image +FR-Designer-Widget-Style_Standard=Standard +FR-Designer_Form-List=List +BackgroundTexture-Denim=Denim +Execute_Report_by_Layer_Engine=Execute report by line report engine +M_Edit-Bring_Forward=Bring to Forward +Choose_All=Select All +Form-RadioGroup=Radio Button Group +FR-Base_Remove=Delete +FR-Remote_Connect2Server_Again=Connection break, whether to reconnect the sever +Semicolon=Semicolon +StyleFormat-Category=Category +Report_Template=Report Template +Utils-Beyond_the_right_side_of_Border=Beyond right border +BackgroundTexture-Papyrus=Papyrus +LayerPageReport_PageEngine=Use page-based computations and separately execute report +Schedule-The_selected_file_must_be_end_with_filter=The selected file must end with '.cpt' or '.class' or '.frm' +Provide=Provide +FormulaD-Math_&_Trig=Math and Trig +FR-Designer-StyleAlignment_Right=Right +Error_TableDataNameRepeat=\ already exsits in Server DataSet or the name is repeated. +Choose_None=Deselect +File-tree=File tree +FRFont-bold=Bold +FR-Designer_Set_Submit_Condition=Submit Condition +Form-Change_Widget_Name=Change Control Name +ReportColumns-Report_Columns=Multi-columns/lines display +Can_not_use_FormatBursh=Can't use format painter in multiple selections +CellElement-Property_Table=Cell Attribute Table +Dictionary-Dynamic_SQL=Dynamic SQL +FR-Designer_Form-CheckBoxGroup=CheckBoxGroup +DBCP_TIME_BETWEEN_EVICTIONRUNSMILLIS=Sleep Time of Idle Connections Recyclers +ReportD-Export_Hided_Column=Export hidden column +Preference-Support_Undo=Support Undo +FR-mobile_report_analysis=report analysis +Month=Month +Utils-Column_Width=Column-W +Collect-Use_Designer=Use Designer +Widget-User_Defined_Editor=Predefine editor, you can only change its properties in control mangement menu. +Unit_Ten_Thousand=Ten Thousand +Data_Setting=Data Setting +ECP_input_pwd=Enter your password\: +period=period +Note=Note +Multiline=Multi-line edit +Datasource-Convert_Charset=Encoding Conversion +DashBoard-ConnectionList=Data Connection +Utils-Submit_Forcibly=Submit forcibly +Parent_Marked_Field=Parent Tag Field +Logout=Logout +FR-Designer_Show_Blank_Row=Supplement blank line +FR-Base_Format=Format +FR-App-Export_png=png +Delete_Column=Delete Column +SecondGraduationLine=Minor Graduation Line +SpecifiedG-Groups=Groups +CONTINUUM_MODE=Continous grouping +Datasource-Connection_failed=Connection Failed +CategoryName=Category Name +DBCP_INITIAL_SIZE=Initialize Connections +Colors=Colors +FR-Import-Export_CSV=CSV(comma delimited) +FR-Designer-StyleAlignment_Left=Left +BackgroundTexture-PaperBag=Paper Bag +RWA-BuildIn_SQL=Built-in SQL +SingleLayer=Single Layer +Or-you=or you +FR-Designer_Certificate_Path=Certificate Path +Utils-Last_Page=Last Page +BarCodeD-Drawing_Text=Display Barcode Text +Warning-Template_Do_Not_Exsit=Template do not exsit +BindColumn-Group=Group +Export-SVG=SVG +Plane3D=Plane 3D +SessionID=sessionID is session ID parameter in current template +FR-Designer_Height=H +HF-Odd_Page=Odd Page +About-All_Rights_Reserved=All Rights Reserved +Utils-Current_Cell=Current Cell +Web_Preview_Message=Please save the template in the current runtime environment directory +FR-Hyperlink_Chart_Float=Chart Hyperlink-Floating Elements +Dic-Data_Query=Data Query +CellWrite-Print_Content=Content of Cell +Privilege-Selected_None_Of_Any_Items=Selected None +FRFont-Size=Size +Function-J2EE_server=J2EE server +FR-Designer_Allow_Blank=Allow NULLs +Build_Tree_Accord_Parent_Marked_Filed=Build Tree according to the parent tag field of the selected data set +Preference-Horizontal_Scroll_Bar_Visible=Horizontal Scroll Bar Visible +Scope=Scope +Save_All_Records_In_Memory=Save All Records in Memory +FreezeWarning1=Initial value can't greater than end value +FlowLayout=Fluid Layout +M_Report-Report_Footer=Report Footer +FR-Action_Add=Add +BorderLayout-East=East +feedback_tip=Please enter a description of the problem, not more than 400 words +FS_Start_Date=Start Date +FR-ConditionB_Operator=Operator +Printer-Alias=Alias +DS-Class_Name=Class Name +FR-Designer-Plugin_Has_Been_Disabled=Plugin has been disabled, restart the designer and sever to enable it and the sever need to be manually restarted +Sort-Original=Unsort +Utils-Top_to_Bottom_a=From top to bottom +Parameter-String=String +InnerRadis=Inner radius size +Want_To_Cover_It=Whether to override it +Divided_stage=Divided Stage +Seriously=Seriously +ReportServerP-PDF=PDF +Utils-Switch_To_Class_Reportlet=Switch to class web report +FR-Designer_Show_Blank_Column=Supplement blank column +M_Edit-Redo=Redo +Visibility=Visibility +Series_Use_Default=Series Default Use +Has_Selected=Already Selected +BackgroundTexture-Walnut=Walnut +FormulaD-Function_category=Function Type +Interface=Interface +FR-Designer-Beyond_Bounds=Can't go beyond the border +seconds=s +Auto-Build=Automated Build +FR-Designer-Plugin_Install_Successful=Plugin will takes effect when designer and sever are restarted and the sever need to be manually restarted +Template_Path=Template Path +FR-Designer-FRFont_Bold=Bold +Poly_Name=Aggregation block name +WorkBook=WorkBook +Hyperlink-Self_Window=Current Window +FR-Designer-Widget-Style_Title=Title +FR-Designer-FRFont_Size=Size +M_File-Export-SVG=SVG +Capacity=Capacity +Rose_Red=Rose Red +StyleAlignment-The_value_of_rotation_must_between_-90_and_90_degrees=Rotation value must between -90 and 90 degrees +HF-Move_Left=Left shift +Cell_Group=Cell Group +Week=Week +PageSetup-Orientation=Orientation +M-Open_Recent=Open Recent +NNormal= +Integer=Integer +Select_The_Source_To_Save=Select Source to Save +Transition=Branch +FR-Designer_Get_Lock=Lock +one_record_exists_in_many_groups=One record exists in many groups +FR-Designer_Cover_None=Override None +DeciPart=Decimal part +ExpandD-Up_Father_Cell=Upper Parent Cell +Deep=Deep +FRFont-Shadow=Shade +Reportlet=Web Report +Calendar=Calendar +DateFormat-Custom_Warning=Note\: Custom date format does not support the format checking +Unit_MM=MM +Server-Start=Start +CellPage-Can_Break_On_Paginate=Can break when paging +Build_Tree_Accord_Marked_Filed_Length=Build tree according to tag field's length +ComboCheckBox-Start_Symbol=Initializer +Real=Real +RWA-Batch_Modify_Cells=Batch Modify Cells +FR-Designer_Build-Way=Build Way +Read=Read +StyleAlignment-Degrees=Degrees +M_Format_A-Border=Border +Utils-Delete_Record=Delete Record +Reload=Reload +Image-Select_Picture=SelectImage +RWA-Submit=Submit +the_template=this template +FR-Designer_Component_Scale=Component Scale +FRFont-italic=Italic +Year=Year +HF-Move_Right=Right shift +Data-Check=Data Monitor +Unknown=Unknown +Submit_Style=Submit way +Left_Border_Line=Left Border +Brown=Brown +Select_A_Tree_DataSource_To_Build=Select a tree data set to build +Overlapping=Overlapping +DS-Class_TableData=Class Data Set +FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install=Illegal plugin,cannot be installed +DisplayNothingBeforeQuery=Display Nothing Before Query +Y_Axis=Y Axis +FormulaD-Most_Recently_Used=Rencently used +FormulaD-Input_formula_in_the_text_area_below=Input formula in the text area below +Build-Way=Build Way +M_Edit-Undo=Undo +Line-Style=Line-Style +Datasource-Other_Attributes=Other Attributes +M_Server-Global_Parameters=Global Parameters +Suffix=Suffix +Image-Image_Files=Image Files +EditRC-Entire_row=Entire row(R) +HF-First_Page=Home Page +BackgroundTexture-Granite=Granite +DataList=Data Link +Recursion=Recursion +BarStyle=Bar +FR-Designer-Min_Width=Min-Width +Utils-Report-Env_Directory=Report working directory +D-ChartArea=Chart Area +Only=Only +FR-Base_No=No +SpecifiedG-Put_all_others_together=Merger all others +HF-NewLine_Des=Click on the move or delete button to operate line breaks +WLayout-Border-ThreeContainer=You have the central, northern and western border layout containers.You can adjust the height of the northern one and the width of the western one. +Parameter_Name=Parameter Name +FR-Base_Table=Table +Des-Remove_WorkSheet=The report to be deleted may contain data. If you want to delete report, please click on Yes button. +Rotation=Rotation +Undefined=Undefined +Support-Auto_Complete_Shortcut=Auto complete shortcut key +Set_Column_Title_End=Set Duplicate End Column +Submit_Url=Submit Url +ReportServerP-Are_you_sure_to_delete_the_selected_printer=Are you sure to delete the selected printer +long_data_can_not_show_fully=Long data can not be fully demonstrated +Utils-Beyond_the_bottom_side_of_Border=Beyond bottom border +FR-Import-Export_PDF=PDF +Form-CheckBoxGroup=CheckBoxGroup +Click-Me=Click Me +Hyperlink-Self=Open link in original page(S) +Tree-Select_Leaf_Only_Tips=If unchecked, only return current node, not contain its child nodes +StyleAlignment-Text_Rotation=Text orientation +Format-Error=Entered value is not in the correct format +Server-Stop=Stop +Preference-Setting_Grid=Grid Setting +ReportServerP-Add_Printer=Add printer +FR-Designer-Plugin_Active=Enable +Utils-File_name=File name +NOT_NULL_Des=NOT NULL +Right_Border_Line=Right Border +EditRC-Entire_column=Entire column(C) +PageSetup-Top_to_bottom=Down, then over +Click-Get_Default_URL=Click To Get Default URL +StyleAlignment-Wrap_Text=Word wrap +Remove_All_Button=Remove all buttons +FR-Designer_Component_Interval=Component Interval +ReportColumns-Columns_vertically=Fixed columns per line +ReportGUI-Print_Background=Print/export background +Export-CSV=CSV +M_Edit-Paste=Paste +FR-Designer-Basic_Restart_Designer=Restart designer +ReportServerP-PDF2-INFO=Only used in LINUX/UNIX when Chinese font is not installed +FormulaD-Check_Valid=Validity Checks +server_disconnected=server disconnected +ParameterD-Parameter_name_cannot_be_null=Parameter name cannot be empty +FR-Designer-Plugin_Version_Is_Lower_Than_Current=The version of plugin update package is lower than the current +RWA-NotChange_Unmodified=No modify, no update +User_Information=User Information +Custom_styles_lost=Custom Style is Missing +PageSetup-Margin=Margin +M-New_FormBook=New Form +Widget-TreeNode=Tree node button +Form-Url=URL +Utils-Beyond_the_left_side_of_Border=Beyond left border +Float_Element_Name=Float Element Name +Purple=Purple +DashBoard-Potence=Permissions +M-Close_Template=Close Template(C) +paper=Page +Not_Exsit=Not exist in report +Utils-Insert_Row=Insert Row +Utils-Delete_Row=Delete Row +not_support_authority_edit=this element does not support authority edit +Formula_Tips=The formula must be begin with "\ +FR-Action_Copy=Copy +Compile_Success=Compile Successfully +BackgroundTexture-RecycledPaper=Recycled Paper +StyleAlignment-Single_Line=Single Line +Utils-Move_Down=Move Down +Please_Set_Repeat_First=Please set duplicate title row and column first +Writer-ShortCuts_Setting=Filling Shortcut key setting +Verify-Data_Verify=Data validation +FR-mobile_analysis_style=analysis style +Confirm-Delete-File=Whether to delete the selected file +PageSetup-Header=Header +JavaScrit-Asynch=Asyn +ReportServerP-Toolbar=Toolbar +Utils-Top_to_Bottom=Portrait +Platform=Platform +FR-Designer-FRFont_Underline=Underline +Show_in_Containing_Folder=Open the folders where it stored in +BackgroundTexture-WaterDroplets=Water Drop +FR-Designer-Dependence_Install_Failed=install failed +Layout-Padding=Padding +roles_already_authority_edited=Configured role +WidgetDisplyPosition=Control disply position +SpecifiedG-Force_Group=Mandatory Group +FormulaD-Formula_Definition=Formula Definition +I-xyScatterStyle_Marker=Scatter +Hour=Hour +ColorMatch=Color +M_Edit-Order=Re-order +BackgroundTexture-Bouquet=Bouquet +Verify-Error_Information=Validate Error Information +LayerData=Underlying Data +Rename=Rename +Widget-Load_By_Async=Async load +Shape=Shape +BindColumn-This_Condition_has_been_existed=The Condition Already Exists +NS-exception_readError=Error codes\:1305 Template file parsing error +Set_Column_Title_Start=Set Duplicate Title Columns +Fri=Fri +M_Report-Report_Parameter=Report Parameter +REPORTLETS=Parameter of access path to multi-templates +WLayout-Card-ToolTip=Card layout, you can add multiple components in it. +M-Popup_ChartType=Chart Type +Please-Wait=Please Wait +FR-Designer-Form-ToolBar_Widget=Control +Widget-Array=Array +FieldBinding=Bound Field +Top_Bottom_Border_Line=Top and bottom border +M-Others=Others... +Hyperlink-Link_Opened_in=Link Opened in +FR-Utils_WorkBook=WorkBook +M_Insert-Float=Float Element +Out_Thick_Border_Line=Thick Border +FR-App-File_Lookup_range=Search range +ReportColumns-Columns_to=Split To +Transparent=Transparent +Parameter-Integer=Integer +PDF-Print_Setting=PDF Print Setting +Server-Embedded_Server=Built-in server +M_Server-Server_Config_Manager=Server Configuration Manager +FR-Utils-Would_you_like_to_cover_the_current_file=Would you like to override the current file +CellWrite-InsertRow_COPY=Original +Edit_String_To_Formula=Edit String To Formula +Edit-Column_Count=Number of columns +Father=Father +ReportColumns-Columns_after=Over +FR-Designer_Undo=Undo +DBCP_MIN_IDLE=Min Idle Connections +M-Data_Analysis_Settings=Data Analysis Settings +M-Form_Preview=Form Preview +Form-Basic_Properties=Basic Property +quote=quote +Thu=Thu +Collect-Collect_User_Information=Collect User information +Layer-Build=Layered Build +FR-Designer-FRFont_Line_Style=LineType +BackgroundTexture-BrownMarble=Brown Marble +PageSetup-Page_Setup=Page Setting +Form-Semicolon=Semicolon +ECP_re_input=Password Error, please re-enter +ExpandD-Sort_After_Expand=After Extension +FR-Designer-Dependence_Install_Succeed=install succeed +Env-Configure_Workspace=Configure working directory +feedback_info=We welcome your comments and suggestions, please fill out the information as detailed as possible, we will contact you soon +Ratio=Ratio +DBCP_TEST_ON_BORROW=Test before Getting Connections +FR-Designer_layerIndex= +WEB-Write_Setting=Filling Settings +M-New_WorkBook=New WorkBook +FR-Designer-Plugin_Has_Been_Actived=Plugin is now active, restart the designer and sever to enable it and the sever need to be manually restarted +Datasource-Maximum_Number_of_Preview_Rows=Maximum Number of Preview Rows +ExpandD-Cell_Expand_Attributes=Extension Attributes +Select_the_repeated_row_and_column=Select rows and columns need to duplicate +FormulaD-Date_&_Time=Date and Time Function +Max-Mem-Row-Count=Cache to disk when records more than +BorderLayout-South=South +Export-Text=Text(tab delimited) +JavaScript-Synch=Synch +FR-App-All_Warning=Alert +M_Edit-Send_Backward=Send to Backward +Form-Layout=Layout +FR-Designer-Plugin_Shop_Need_Update=Plugin store a new version, whether to update? +FR-Designer_WorkBook=WorkBook +UpBarBorderStyleAndColor=UpBar Border Style And Color +GridLayout=Grid Layout +Utils-Default_Value=Default Value +Widget-Comb_Widget_Config=Combination control +Import-Excel2007_Source=Excel2007 Source Files +Y-Coordinate=Vertical Coordinate +FR-Base_SimSun_Not_Found=Cannot find the song typeface, please set the system default language as the designer typeface +FR-Designer_Seriously=Seriously +Upload=Upload +Form-Widget_Property_Table=Attribute Table +Des-Merger_Cell=The selected area contains multiple data, if you merge them, only the data at the upper left corner will be reserved. +FR-Designer-Basic_Copy_Build_NO=Double click to copy build NO. +FR-Base_TurnOn=Turn On +FR-Base_Rows=Row +Form-Remove_Repeat=Remove duplicates +Yes=Yes +Datasource-JNDI_Name=JNDI Name +Utils-Delete_Column=Delete Column +HF-Delete_it=Delete it +JavaScript-Dynamic_Parameters=Dynamic Parameters +px=px +FR-App-Report_Template=Report Template +Verify-Message=Error Message +Plan=Plan +Vertical-Split_Layout=Vertical Split Layout +ParameterD-Delay_Playing=Display Nothing Before Query +TurnOff=TurnOff +FR-Please_Rename=Please Rename +Select_Data_Set=Select Data Set +Name_has_Colon=Name\: +ReportColumns-Columns_horizontally=Fixed lines per column +FR-Base_Yes=Yes +ReportColumns-Repeat_Row=Copy row sequence +Print_Setting=Print Setting +Registration-User_Name=User Name +Datasource-User_Defined=Custom +FR-Designer-Plugin_DownLoadMessage=Plugin need dependence support,need to install ({R1} m)? +Delay=Delay +FR-Designer-All_MSBold=MS YaHei +Utils-Now_create_connection=Creating data connection +FR-Template-Path_chooseRightPath=Please choose a right path +FR-Remote_Re_Connect_to_Server=The server is down, whether to reconnect it +Nation=Country +DBCP_MAX_WAIT=Max wait time +FR-App-Template_Form=Form +Address=Address +Sub_Report=Sub Report +FR-Import-Export_Word=Word +FR-Server_Version_Tip=The version of the server you are connecting is older than the Designer, continue to connect, some attributes you are editing may not be saved. Please conform the versions of FineReport Designer and the deployment server are consistent. +StyleAlignment-Left_To_Right=Left To Right +Verify-ToolTips=If not meet formula, throw up validation error message +BackgroundTexture-Stationery=Letter Paper +FR-Designer_RWA-Help=Set "No update if no modidy", so if cell is not modified, the record will not update; it improves filling and submit performance when data is large. +M_Insert-Barcode=Barcode +Bounds=Bounds +FR-Designer-Undo_All_Authority_Operations=Undo all the privilege edit operations +Datasource-Context=Context +CellWrite-Page_After_Column=After Column +FR-Designer_Cancel=Cancel +Button-Group-Display-Columns=Number of columns displayed +Widget-Height=Control Height +Examples=Examples +Formula_Dictionary_Display_Example=Real value range is \ +StyleAlignment-Horizontal=Horizontal +HyperLink_Must_Alone_Reset=Multiple hyperlink +ExpandD-Expand_Direction=Extension Direction +Include=Include +Export-Excel-Page=Page Break +FR-Designer-Min_Height=Min-Height +Filed=Field +ReportServerP-Import_Css=Reference Css +M_Insert-Formula=Insert Formula +FR-Designer_Auto-Build=Automated Build +FRFont-Foreground=Foreground +Bubble-Width=Bubble Width +Form-Hierarchy_Tree=Hierarchy Tree +WLayout-Border-LayoutContainer=You have the central and northern border layout containers.You can adjust the height of the northern one +Preference-JDK_Home=JDK Home +Utils-Insert_Column=Insert Column +FR-Designer_ToolBar_Top=Top ToolBar +BindColumn-The_Conditions_of_FatherCell=The Conditions of Parent Cell +Links=Links +M_Report-Report_Header=Report Header +Sub_Report_Description=The sub-report should exist in the runtime environment of its parent, and they can not be the same template +T_Insert-Float=Insert Float Element +BackgroundTexture-FishFossil=Fish Fossil +My_Computer=My Computer +FORMLET=Path parameter when accessing different forms +HF-Undefined=Undefined +Widget-User_Defined_Widget_Config=Predefined control +Report-Write_Attributes_Group_Warning=Number of cells in each field in all cell group must be the same +Form-Single_quote=Single Quote +Compile_Success_And_Then_Save=Compile Successfully And Then Save +FR-Designer_Layout-Padding=Padding +Layout_Container=Layout Container +Admin=Admin +Form-EC_toolbar=Report toolbar +FR-App-All_Auto=Automatic +Utils-Available_Columns=Available Columns +Form-Change_Widget_Name_Discription=Input New Control Name +FR-Module_Designer=Designer module +FR-Import-Export_Text=Text(tab delimited) +Values-Editor=Values Editor +FR-Designer_Yes=Yes +ExpandD-Expandable=Extensibility +Tree-Return_Full_Path=Return full hierarchical path +FRFont-bolditalic=BoldItalic +FR-Base_StyleFormat_Sample=Sample +Area_Value=Area Value +FR-Designer-Plugin_Disable=Disable +Utils-Are_you_sure_to_remove_the_selected_item=Are you sure to remove the selected item +Face_Write=Filling +Poly-Report_Block=Report type aggregation block +Vgap=Vertical gap +FR-Designer_HyperLink_Must_Alone_Reset=HyperLink_Must_Alone_Reset +DS-Class=Class +FR-Hyperlink_Please_Select_Reportlet=Please select webreport +FS_Report_Type=Report Type +HF-New_Line=Line breaks +Privilege=Permission +Export-Offline-Html=Output offline HTML report +FR-Designer_open-new-form-tip=The form is created by the designer older than 711 vision, it cannot be opened. Please use the corresponding designer. +FR-Designer-Widget-Style_Frame_Style=Frame Style +Present-No_Present=Cancel Present Settings +FR-Designer_Form-Password=Password +X_Axis=X Axis +FR-mobile_html_analysis=Html5 analysis +M_Edit-Bring_to_Front=Bring to Top +Null_Value_Show=Show if null +Datasource-JNDI_DES=Note\: .jar files containing INITIAL_CONTEXT_FACTORY need to be copied into the installation directory in the /lib directory +PrintP-Print_Preview=Print Preview +Form-Hierarchy_Tree_Last=Last +Has_been_gone=\ Has been lost,whether to add the style +RWA-Add_Field=Add Field +newNode=add Node +PageSetup-Shrink_to_fit_content=Automatically adjust according to cell content +FR-Designer_Date=Date +Column_Multiple=Line Numbers +FR-App-All_File=File +Sort-Descending=Descending +FR-Designer-Plugin_Delete=Delete +Above=Above Version +Utils-The-Chart=Chart +FRFont-plain=General +Calculating=Calculating +Form-Object=Form Object\: +May=May +FR-Designer_Plugin_Normal_Update=Update +FR-Hyperlink_Reportlet=Webreport +M_Edit-Copy=Copy +Sub_Report_Message2=The parent-report is not in the current runtime environment +Sub_Report_Message3=Can not choose itself +Sub_Report_Message1=Please choose the currect path +Form-Allow_CustomData=Allow custom data +FR-Server_Version_Tip_MoreInfo=Conform the version numbers of FineReport Designer and the deployment server are consistent, in order to avoid the problems caused by inconsistent versions. If you open the template produced by higher designer vision, error may occurs or the original template properties missed. If the Designer Version you used to create the template is higher than the final deployment server version, the server may not be able to properly load the template. +FR-Designer_Server-version-tip-moreInfo=Conform the version numbers of FineReport Designer and the deployment server are consistent, in order to avoid the problems caused by inconsistent versions. If you open the template produced by higher designer vision, error may occurs or the original template properties missed. If the Designer Version you used to create the template is higher than the final deployment server version, the server may not be able to properly load the template. +Get_Lock=Lock +HF-Edit_Footer=Edit page footer +Datasource-New_Charset=New Code +Preference-Custom=Custom +BackgroundTexture-Newsprint=Newsprint +ConditionB-Add_bracket=Add Parentheses +Datasource-Connection_successfully=Connection successfully +Function-The_class_must_implement_the_interface=The class must implement the interface +FR-Designer_ChartF-Transparency=Transparent +Crimson=Crimson +FR-Hyperlink_Dialog=Dialog +FR-Designer_Covered_All=Override All +Hyperlink-New_Window=New Window +Style_Name=Format Name +CSS_warning= \ Relative report project directory like WebReport, if reference a css files named test.css
 in WebReport\\css, then the relative path is css/test.css +FR-Base_Column=Column +Three_Rows_Of_Two_Grid=A grid with 3 rows and 2 columns +DBCP_VALIDATION_QUERY=SQL Validation Query +M_Edit-Clear_Formats=Format +Parameter_Setting=Parameter Setting +Related=Linkage +BorderLayout-Constraints=Placement +Write_Preview=Filling Preview +PageSetup-Page_Order=Print Order +Verify-Verify_Formula=Validation formula +State=State +FR-Designer-Widget-Style_Body_Background=Body Background +FR-App-Privilege_No=No Permission +Please_Drag_ParaPane= +Come_True=Implement +ISEMPTY=Is null +Background-Texture=Texture +FR-Designer_Verify-Message=Wrong Message +Locked=(Locked) +Utils-Design-Action_Cancel=Cancel +Image-Titled=Tile +Gradient-Direction=Gradient Direction +Green=Green +Report_Engine=Report Engine +Return-String=Return String +Margin=Margin +Pitch_Percentage=Space percentage +FR-Base_TurnOff=Turn Off +Utils-has_been_existed=Already exists +HF-Insert_Formula=Insert Formula +Utils-Exit_Designer=Exit Designer +Formula_Dictionary_Display=Every value($$$) in the actual values above, it's display value is +PageSetup-Left_to_right=Over, then down +Utils-Import_Excel_Data=Import Excel Data +M-Save=Save +redo=redo +Status=Status +Draw=Draw +FR-Designer_Message=Message +Records=Records +FR-Designer_ComboBox=Drop-down Boxes +Driver=Driver +Template_Parameters=Template Parameters +Form-Remove_Repeat_Data=Remove Repeated Data +ECP_decode=Report Decryption +Area_Name=Area Name +Others=Others +Merge=Merge +BackgroundTexture-Parchment=Parchment +BindColumn-Bottom_N=Last N +Frame=Frame +Bottom_Border_Line=Bottom Border +Muiti_In=Multi-level Drill-down +FR-Designer-Dependence_Install_Online=install online +Use_Default_ToolBar=Use default toolbar +M_Server-Platform_Manager=Platform Management +PageSetup-inches=inches +Form-Widget_Property=Attribute name +FR-Layout_Padding=Padding +Schema=Theme +Server_Path=Host location +Condition_Display=Condition Display +FR-Server-Design_template_unopened=Can't open the template +Function-Function_Class_Name=Function Class Name +Schedule-Template=Template name +Tree_Data_Field=Tree Data Field +Border-Style-Normal=Rectangular Border +Top_And_Double_Bottom_Border_Line=Top and bottom double border +FR-Server_Embedded_Server_Start=Built-in server-Open +FR-Designer-Basic_Restart_Designer_Later=Restart later +StyleAlignment-Top=Top +ReportServerP-First=First +Not_Exist=Not Exist +FR-Remote_File_is_Locked=Someone else is editing the report, please try later +Apply=Apply +Sytle-Indentation=Indentation +Parameter-Float=Single-precision +HF-Center_Section=Center Section +Form-Double_quotes=Double Quote +M_File-Export-Word=Word +M_File-Export-Text=Text File(tab delimited) +PageSetup-First_Page_Number=Starting page number +Execute=Execute +Task=Task +Custom_Button_Type_Submit=Submit +FR-Designer-Widget_Settings=Control Setting +IS_Need_Password=Need Password +PageSetup-Horizontally=Horizontally +No_Editor_Property_Definition=No Editor Property Definition +Env-Remote_Server=Remote Server +FR-Utils_Background=BG +FR-Designer-Plugin_Warning=Alert +Server-version-info=The current template file is designed by higher vision designer. Open it may result in losing original attributes or error. Please upgrade your designer. +CellWrite-Page_After_Row=After Row +HF-Right_Section=Right Section +PageSetup-Title_Start_Row=Duplicate Title Rows +From=From +Preference-Grid_Line_Color=GridLine Color +RowTo=Row To +FR-Designer_ReportColumns-Repeat_Column=Copy column sequence +M_Server-Function_Manager=Function Manager +KeyWord=KeyWord +DS-Multi_Dimensional_Database=Multi-dimensional Database +BiasD-Slope_Line=Slope Line +Tue=Tue +ReportServerP-Last=Last +FR-Base_Columns=Columns +SpecifiedG-Leave_in_their_own_groups=Leave in their own groups +LOG-Please_Wait=Please Waiting +Form-ToolBar=Form ToolBar +FR-Base_sure_remove_item=Are you sure to delete the selected item +Component_Scale=Component Scale +Hyperlink-Use_CJK_to_encode_parameter=Use CJK to process parameter +LOG-Has_Been_Openned=Report Has Been Openned +FR-Designer-Dependence= +ECP_error_pwd=Password Error +REPORTLET=Parameter of access path to template +RWA-Column_Offset=Column Offset +Forecast=Forecast +Light_Orange=Light orange +StyleAlignment-Vertical=Vert +Form-List=List +ParameterD-Show_Parameter_Window=Show Parameter Panel +FR-Designer_Set_Submit_Event=Set Submit Event +Value_Percent=Value Percentage +DBCP_MIN_EVICTABLE_IDLE_TIMEMILLIS=Keep Min Idle Time Value +Function-The_class_must_be_located_in=The class must be located in +FR-Action_Sort=Sort +DataFunction-Average=Average +FR-Designer_Show_in_Containing_Folder=Open the folders where it stored in +M_File-Export-Excel=Excel +DataFunction-Max=Maximum +FR-Designer_Form-Widget_Name=Control Name +FS_End_Date=End Date +Export-Excel-Simple=Original +ColumnTo=Column TO +SpecifiedG-Discard_all_others=Discard all others +DS-TableData=Data Set +Form-DataTable=DataTable +Sub_Report_ToolTips=Sub Report ToolTips +Right_Top=Upper right +M_Edit-Merge_Cell=Merge Cell +FR-Designer_Restore_Default=Back to default\ +Component_Interval=Components Interval +Cover_None=Override None +Datasource-From_Database=DB table +Folder=Directory +Form-Allow_Edit=Allow Edit +M_Edit-Clear=Clear +ParentCell_Setting=Parent Cell Setting +Only_selected_cell_can_paste_only=Paste when cell is selected +M_Report-Report_Columns=Multi-columns/lines +Unit_Hundred=Hundred +FR-Designer_DataTable-Build= +Widget-Form_Widget_Config=Form control +Server-version-tip-moreInfo=Conform the version numbers of FineReport Designer and the deployment server are consistent, in order to avoid the problems caused by inconsistent versions. If you open the template produced by higher designer vision, error may occurs or the original template properties missed. If the Designer Version you used to create the template is higher than the final deployment server version, the server may not be able to properly load the template. +Actions=Task +FR-Designer-Dependence_Connect_Server_Error=connect error +High=High +HJS-Send_Failed=Send Failed +HJS-Message=Message +File-Allow_Upload_Files=Uploaded files +FR-Designer-Form-ToolBar_Chart=Chart +Thick_Bottom_Border_Line=Thick Bottom Border +FR-Action_Remove=Delete +FRFont-Style=Style +Select_DataColumn=Select Data Column +StartValue=Start Value +SINGLE_FILE_UPLOAD=Only support single file upload +BackgroundTexture-Cork=Cork +M_Format-Data_Map=Data Dictionary +FR-mobile_native_analysis=native analysis +HighLight=High Light +FR-Designer_Dropdown-More-Preview= +local=local +FR-Designer_Gradation=Gradation +PageSetup-Finis_Start_Column=Duplicate Last Column +Env-Invalid_User_and_Password=Invalid User Or Password +FR-Designer-Plugin_All_Plugins=All plugins +FR-Designer_Prepare_Export=Ready to export, please wait +DBCP_TEST_ON_RETURN=Test before Returning Connections +no-alternatives=no alternatives +FR-Designer_Submmit_WClass=Submmit By Custom Class +M_Insert-Slope_Line=Insert Slope Line +FR-Designer-Plugin_Plugin_Description=Description +ExpandD-Not_Expand=No extend +Utils-Bottom_to_Top=From the bottom up +Collect-Click\!_Get_user_information_code=Get Activation Code +FR-Already_exist=Current environment is already exist\: +Send=Send +M_Edit-Clear_All=All +Brown_Orange=Brown Orange +PageSetup-Portrait=Portrait +FR-Designer_Form-RadioGroup=Radio Button Group +FR-Utils-App_AllFiles=All Files +Popup=Popup +Server_Charset=Server code +CellWrite-Repeat_Content_When_Paging=Repeat Content in New Page +Utils-No_Pagination=No Page Break +Form-NullLayout=Absolute positioning +ConditionB-Remove_bracket=Remove Parentheses +email=Email +Minute=Minute +FR-Designer-Plugin_Update=Plugins update +alraedy_close=Already closed +ComboCheckBox-End_Symbol=Terminator +DataColumn=Data Column +Form-Password=Password +FR-Background_Image_Adjust=Adjust Image +Export-Excel-PageToSheet=One Page Per Sheet +Edit-Row_Count=Number of rows +DS-Report_TableData=Report Data Set +Sche-Hour=Hour +Group_Count=Group Count +EndValue=End Value +FR-Designer_Sytle-Indentation=Indentation +DownBarBorderStyleAndColor=Downcolumn Border Style And Color +World=World +FR-Designer-Basic_Cancel=Cancel +Finally=Finally +Low=Low +Please_Input_The_Key=Please Input the key the map use +Smart=Smart +Preference-Predefined=Predefined +Current_custom_global=Custom Global Styles of Current Report +FR-Designer-Plugin_Shop_Need_Install=You are not add-ons store of resources, whether to download? +WEB-Pagination_Setting=Page Break Preview +RCodeDrawPix=PIX +FR-Designer-Widget-Style_Alpha=Opacity +BorderLayout-North=North +HJS-Current_Page=Current Page +Compile=Compile +Show_Blank_Row=Supplement blank line +TableData_Dynamic_Parameter_Setting=Dynamic parameter injections +FR-Background_Image_Default=Default Image +BackgroundTexture-WhiteMarble=White Marble +DataFunction-Sum=Sum +Collect-The_user_information_code_is_invalid=The activation code is invalid, please visit the website to get a new one +Preference-Locale=Internationalization +M_File-Export-PDF=PDF +BiasD-From-lower_left_to_upper_right=lower left-upper right +Border-Style=Border Style +Sort=Sort +Image-Image_Layout=Image Layout +Panel=Panel +FR-Designer-Basic_Copy_Build_NO_OK=Build No. has been copyed +All_Border_Line=All Border +FR-Utils-Please_Input_a_New_Name=Input a New Name +FR-Base_Formula_Plugin=Plugin Function +Two_Rows_Of_Three_Grid=A grid with 2 rows and 3 columns +FR-Designer_Certificate_Pass=Certificate Password\ +Bubble-Series_Name=Series Name +M-New_Multi_Report=New Aggregate Report +BackgroundTexture-PinkTissuePaper=Pink Sandpaper +Preference-Support_Default_Parent_Calculate=Default Parent Grid Calculate +Show_Blank_Column=Supplement blank column +BaiduMap=Baidu Map +Report-Web_Attributes=Web Attributes +FR-Designer_StyleAlignment-Wrap_Text=Word wrap +Need=Need +Parameter-Double=Double-precision +Config_Servlet=Config Remote Server +Form-Comma=Comma +Verify=Validation +PageSetup-Landscape=Landscape +Weeks=Weeks +FR-Designer-Widget-Style_Title_Background=Title Background +Preference-Pagination_Line_Color=Pagination Line Color +Test_URL=Test URL +Fill_blank_Data=Supplement blank data +ReportServerP-The_name_of_printer_cannot_be_null=Printer name cannot be empty +FR-Designer-Basic_Copy_Activation_Key=Double click to copy key to clipboard +Continuum=Proximal continuum +BackgroundTexture-MediumWood=Dark Wood +Datasource-Column_Index=Column Ordinal +Function-Function_File=Function File +Form-Component_Bounds=Component Bounds +Utils-Submit=Submit +Conditions_formula=Condition Formula +M_Insert-Image=Insert Image +FR-Designer-Plugin_Will_Be_Delete=Plugin will be deleted, restart the designer and sever to enable it and the sever need to be manually restarted +FormulaD-Functions=Functions +Mobile_Terminal=Mobile terminal +CheckBox=CheckBox +FR-Designer-Plugin_Install=Install +Sun=Sun +FR-Designer_ToolBar_Bottom=Bottom ToolBar +Widget-Width=Control width +Series_Name=Series name +Set_Row_Title_Start=Set Duplicate Title Rows +HF-Default_Page=Default Page +Env_Des=Username and password must be correspond with sign-on environment, if permissions are enabled +Widget-User_Defined=Predefine +Url_location=Absolute path +Disk_File=Disk File +Inside=Inside +FR-Designer_filedChosen= +ServerM-Predefined_Styles=Predefined Styles +is_need_word_adjust=Word Auto Adjust +Background-Null=No Background +PageSetup-Vertically=Vertically center +FR-Designer_Root=Root node +FR-Designer_Form-TextArea=Text field +ReportServerP-Import_JavaScript=Reference JavaScript +Form-TableTree=Table Tree +Opened=Opened +M_Edit-Delete=Delete +Widget-Form_Widget_Container=Form Container +BindColumn-Summary=Summary +Sche-Second=Second +Server-Open_Service_Manager=Open Service Manager +FRFont-Effects=Special Effects +OtherGroup_Name=The name of other group +Specify=Specify +Highlight-Click_to_Choose_Property_To_Modify=Click to Choose Property to Modify +triggered=triggered +Double_Bottom_BorderLine=Bottom Double Border +M_Insert-Sub_Report=Insert SubReport +Unit_Ten=Ten +Polybolck=Aggregation block +Select_sort_order=Select sort order +HJS-Mail_to=To +StyleAlignment-Left=Left +Two_Rows_Of_Two_Grid=A grid with 2 rows and 2 columns +FR-Designer-Form-Please_Drag_ParaPane=Drag to parameter panel +Milliseconds=Milliseconds +DataFunction-None=None +Delivery=Delivery +ColumnSpan=Column Span +StyleAlignment-Bottom=Bottom +Read_failure=Load failed. Source file may be corrupted +Verify-Verify=Data validation +FR-Designer-Widget-Style_Title_Format=Title Format +FR-Designer_Edit_String_To_Formula=Edit String To Formula +FR-Base_UnSignIn=\ Not Logged In +Every=Every +CellWrite-Preview_Cell_Content=Content of Cell +FormulaD-Data_Fields=Data Items \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index 99070465e4..d5d9dac39f 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -521,7 +521,6 @@ FR-Designer_PageSetup_Page=\u30DA\u30FC\u30B8 FR-Designer_Custom_Job_Description=\u8A18\u8FF0 FR-Designer_Property=\u5C5E\u6027 FR-Designer_ClassName=\u985E\u540D - FR-Designer_Polyblock_Edit=\u30A2\u30B0\u30EA\u30B2\u30FC\u30B7\u30E7\u30F3\u30D6\u30ED\u30C3\u30AF\u7DE8\u96C6 FR-Designer_Function_Description_Area_Text=\u3053\u306E\u30AF\u30E9\u30B9\u306F\u7D99\u627F\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"com.fr.script.AbstractFunction"\u3002\u3092\u7D99\u627F\u3059\u3079\u304D\u3067\u3059\u3002\u30B3\u30F3\u30D1\u30A4\u30EB\u5F8C\u306E\u985E\u30D5\u30A1\u30A4\u30EB\u3092\nJ2EE\u30B5\u30FC\u30D0\u30FC "{R1}" \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3002\u306B\u30B3\u30D4\u30FC\u3057\u3066\u3001class\u306B\u5BFE\u5FDC\u3059\u308Bjava\u30D5\u30A1\u30A4\u30EB\u3082\u5F53\u76EE\u6B21\u306B\u7F6E\u3044\u3066\u304F\u3060\u3055\u3044\u3002\n\u4F8B\u3048\u3070\uFF1A{R2} FR-Designer_PageSetup_Horizontal=\u6A2A\u65B9\u5411 @@ -597,3 +596,1390 @@ FR-Designer_Delete_Template=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u52 FR-Designer_Mobile_Report_Analysis_Annotation=\u8AAC\u660E\:\u8A72\u5F53\u5C5E\u6027\u3088\u308A\u3001\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u30A2\u30D7\u30EA\u3067\u306E\u89E3\u6790\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3001\u9801\u5206\u3051\u30D7\u30EC\u30D3\u30E5\u30FC\u3060\u3051\u3092\u652F\u6301\u3001\u66F8\u304D\u8FBC\u307F\u306B\u8A2D\u5B9A\u3059\u308B\u6642\u7121\u52B9\u306B\u306A\u308A\u307E\u3059\u3002 FR-Designer_DoubleLayer_Report=\u4E8C\u968E\u30BF\u30A4\u30C8\u30EB FR-Designer_Validate=\u691C\u8A3C +CellWrite-InsertRow_NULL=Null\u5024 +DashBoard-ChartFloat=\u30B0\u30E9\u30D5 +contact_info=\u304A\u554F\u3044\u5408\u308F\u305B\u60C5\u5831\uFF08\u4EFB\u610F\uFF09 +Page_Setup=\u30DA\u30FC\u30B8\u8A2D\u5B9A +CellWrite-Print_Export=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3092\u5370\u5237 +Cannot_Get_Date=\u65E5\u6642\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093 +FR-Designer_Modify=\u6539\u6B63 +M-Write_Preview=\u5831\u544A\u30D7\u30EC\u30D3\u30E5\u30FC +FR-Base_RWA-Key=\u30E1\u30A4\u30F3\u30AD\u30FC +China=\u4E2D\u56FD +Set_Legend_Sytle=\u51E1\u4F8B\u66F8\u5F0F\u3092\u8A2D\u5B9A +FR-Designer_Number=\u6570\u5B57 +FR-Designer-Widget-Style_Common=\u666E\u901A +M-Save_As=\u540D\u524D\u3092\u3064\u3051\u3066\u4FDD\u5B58 +Following_parameters_are_not_generated=\u4EE5\u4E0B\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u306F\u751F\u6210\u3055\u308C\u307E\u305B\u3093 +FR-Designer-Basic_Activation_Key_Copy_OK=\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F +Utils-Current_Sheet=\u30AB\u30EC\u30F3\u30C8\u30B7\u30FC\u30C8 +ConditionB-is_less_than=\u3088\u308A\u5C0F\u3055\u3044 +BorderLayout-West=\u897F\u90E8\u306E +AnalysisLine=\u5206\u6790\u30E9\u30A4\u30F3 +Layer_Report_Warnning_info=\u30E9\u30A4\u30F3\u30A8\u30F3\u30B8\u30F3\u306F\u5927\u30C7\u30FC\u30BF\u91CF\u306E\u72B6\u6CC1\u4E0B\u3067\u9069\u7528\u3055\u308C\u307E\u3059\u3002
+Tree-Width=\u5E45 +alert_word=\u884C\u306E\u9AD8\u3055\u3092\u56FA\u5B9A\u305B\u305A\u5C0E\u51FA\u3092\u9078\u629E\u3057\u305F\u6B73\u3001\u5C0E\u51FA\u3057\u305Fword\u306E\u7DE8\u96C6\u306F\u3001\u30BB +PageSetup-Paper_Size=\u7D19\u30B5\u30A4\u30BA +M-Page_Setup=\u30DA\u30FC\u30B8\u306E\u8A2D\u5B9A +DashBoard-FormBook=\u8868 +X-Coordinate=\u6A2A\u5EA7\u6A19 +Style-Line_Spacing=\u884C\u9593\u9694\u8DDD\u96E2 +FR-Designer_Plugin_Should_Update_Title=Warning +Server-Define_Data_Connection=\u30C7\u30FC\u30BF\u63A5\u7D9A\u5B9A\u7FA9 +BarInside=\u67F1\u5B50\u5185\u4FA7 +Border-Color=\u67A0\u7DDA\u8272 +NotAllow=\u975E\u5408\u6CD5 +Utils-File_type=\u30D5\u30A1\u30A4\u30EB\u30BF\u30A4\u30D7 +FR-Designer-Plugin_Install_From_Local=\u30ED\u30FC\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3059\u308B +Summary_Method=\u53D6\u308A\u307E\u3068\u3081\u65B9\u6CD5 +Select_Specified_Grouping=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u30B0\u30EB\u30FC\u30D7\u5206\u3051\u3092\u9078\u629E +HF-Number_of_Page=\u7DCF\u30DA\u30FC\u30B8\u6570 +FR-Designer-Tree_Height=\u9AD8\u3055 +Owner=\u30AA\u30FC\u30CA\u30FC +Home=\u30E1\u30A4\u30F3\u30DA\u30FC\u30B8 +FR-Server_Embedded_Server_Stop=\u5185\u8535\u30B5\u30FC\u30D0\u30FC-\u4E00\u6642\u505C\u6B62 +FR-Designer-Plugin_Detecting_Update=\u66F4\u65B0\u3092\u30C1\u30A7\u30C3\u30AF\u3057\u3066\u3044\u307E\u3059 +HF-Whether_to_define_the_selected_type=\u9078\u629E\u3055\u308C\u305F\u30BF\u30A4\u30D7\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u304B +StyleAlignment-Right=\u53F3\u8A70\u3081 +FR-Designer_Alignment-Style=\u30A2\u30E9\u30A4\u30F3\u30E1\u30F3\u30C8 +PageSetup-Title_Start_Column=\u91CD\u8907\u3059\u308B\u6A19\u984C\u5217 +Tree-Mutiple_Selection_Or_Not=\u8907\u6570\u9078\u629E +FR-Designer-Plugin_Search=\u691C\u7D22 +Choose_Role=\u6A29\u9650\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +Append_Delete_Row_Message=\u6CE8\u610F\uFF01\u6307\u5B9A\u3055\u308C\u305F\u30BB\u30EB\u306F\u3001\u62E1\u5F35\u5C5E\u6027\u3092\u8A2D\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +Form-ComboBox=\u30B3\u30F3\u30DC\u30DC\u30C3\u30AF\u30B9 +PageSetup-Footer=\u30DA\u30FC\u30B8\u30D5\u30C3\u30BF\u30FC +Sorting=\u30BD\u30FC\u30C6\u30A3\u30F3\u30B0 +DBCP_TEST_WHILE_IDLE=\u30A2\u30A4\u30C9\u30EB\u30EA\u30B5\u30A4\u30AF\u30EB\u30E6\u30CB\u30C3\u30C8\u691C\u67FB +DS-Embedded_TableData=\u5185\u8535\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 +FR-Designer_No-Privilege=\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F +FRFont-Subscript=\u4E0B\u4ED8\u304D +Background_Settings=\u80CC\u666F\u8A2D\u5B9A +FormulaD-Invalid_Formula=\u7121\u52B9\u306A\u516C\u5F0F +FR-Base_Margin=\u30DE\u30FC\u30B8\u30F3 +FR-Designer-Plugin_Shop_Installed=\u30D7\u30E9\u30B0\u30A4\u30F3\u30B7\u30E7\u30C3\u30D7\u304C\u3059\u3050\u306B\u958B\u59CB\u3059\u308B\u304B\u3069\u3046\u304B\u3001\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u307E\u3059\u304B\uFF1F +M_Edit-Send_to_Back=\u6700\u80CC\u9762\u3078\u79FB\u52D5(K) +Email-Can_Preview_Report_Content=\u30C6\u30AD\u30B9\u30C8\u30D7\u30EC\u30D3\u30E5\u30FC\u30EC\u30DD\u30FC\u30C8\u306E\u5185\u5BB9 +FR-Designer-FRFont_Italic=\u50BE\u659C +CellWrite-Print_Background=\u30BB\u30EB\u80CC\u666F\u3092\u5370\u5237\u3059\u308B +Wizard=\u30A6\u30A3\u30B6\u30FC\u30C9 +Preference-Is_Drag_Permited=\u30C9\u30E9\u30C3\u30B0\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B +FR-Designer_Release_Lock=\u30A2\u30F3\u30ED\u30C3\u30AF +Form-Delimiter=\u533A\u5207\u308A\u7B26 +wrong=\u9593\u9055\u3063\u305F +FR-Menu-Server_Chart_PreStyle=\u30B0\u30E9\u30D5\u30D7\u30EC\u5B9A\u7FA9\u914D\u8272 +Form-Button=\u30DC\u30BF\u30F3 +FormulaD-Valid_Formula=\u6709\u52B9\u306A\u516C\u5F0F +ParameterD-Parameter_Interface=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30FC\u30B9 +At_least_one_visual_worksheet=\u5C11\u306A\u304F\u3068\u3082\u4E00\u3064\u306E\u30D3\u30B8\u30E5\u30A2\u30EB\u30EF\u30FC\u30AF\u3092\u6301\u3063\u3066\u3044\u308B\u30EF\u30FC\u30AF\u30D6\u30C3\u30AF\u306B\u306F\u3001\u524A\u9664\u3057\u305F\u3044\u5834\u5408\u306F\u3001\u65B0\u3057\u3044\u30EF\u30FC\u30AF\u30B7\u30FC\u30C8\u3092\u633F\u5165\u3057\u3066\u304F\u3060\u3055\u3044 +Need_Min_Value=\u6700\u5C0F\u5024\u304C\u5FC5\u8981 +Allow_Blank=\u7A7A\u6B04\u3042\u308A +CellWrite-InsertRow_DEFAULT=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F +Widget-Load_By_Complete=\u5B8C\u5168\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9 +FR-Designer-Basic_Only_Submit_Current_Sheet= +Sort-Sort_Order=\u30BD\u30FC\u30C8\u9806 +File-File_Size_Limit=\u30D5\u30A1\u30A4\u30EB\u30B5\u30A4\u30BA\u3092\u5236\u9650\u3059\u308B +PrintP-Print=\u5370\u5237(T) +FR-Designer-StyleAlignment_Center=\u4E2D\u592E\u63C3\u3048 +Preference-Setting_Colors=\u8272\u306E\u8A2D\u5B9A +Judge=\u88C1\u5224\u5B98 +Image-Adjust=\u9069\u5FDC +Collect-User_Information_DES=\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30C8\u30B3\u30FC\u30C9\u306F\u4F7F\u7528\u8005\u60C5\u5831\u306E\u53CE\u96C6\u306E\u305F\u3081\u3060\u3051\u306B\u7528\u3044\u3089\u308C\u307E\u3059\u3002\u4E0A\u306E\u300C\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30C8\u30B3\u30FC\u30C9\u53D6\u5F97\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u3001\u65B0\u305F\u306A\u30A6\u30A3\u30F3\u30C9\u30A6\u304C\u73FE\u308C\u307E\u3059\u3002\u88FD\u54C1 +FR-Designer_Plugin_Normal_Update_From_Local=\u30ED\u30FC\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u66F4\u65B0 +BackgroundTexture-Canvas=\u30AD\u30E3\u30F3\u30D0\u30B9 +BarOutSide=\u5916\u306E\u67F1 +Preview_ToolTips=\u30D7\u30EC\u30D3\u30E5\u30FC\u63D0\u793A +FRFont-Family=\u540D\u79F0 +FR-Lic_does_not_Support_Remote=\u73FE\u5728\u4F7F\u7528\u3057\u3066\u3044\u308Blic\u306F\u9060\u9694\u30C7\u30B6\u30A4\u30F3\u6A5F\u80FD\u306B\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B +InterfaceStyle=\u30B9\u30BF\u30A4\u30EB +RWA-Key=\u4E3B\u30AD\u30FC +WF-Name=\u540D\u79F0 +RWA-Click_Cell_To_Edit_Value=\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30BB\u30EB\u4FEE\u6B63\u5024 +Utils-Row_Height=\u884C\u306E\u9AD8\u3055 +ReportD-Excel_Export=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5C0E\u51FA\u5C5E\u6027 +Form-Please_Select_A_Kind_Of_Form_Container=\u4E00\u7A2E\u306E\u8868\u30B3\u30F3\u30C6\u30CA\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 +Column_Does_Not_Exsit=\u5217\u304C\u5B58\u5728\u3057\u307E\u305B\u3093 +M_Insert-Hyperlink=\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF +can_not_include_underline=_\u3092\u542B\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +FR-Designer-Plugin_Jar_Expired=\u65E7Jar\u30D1\u30C3\u30AF +FR-Background_Image_Extend=\u62E1\u5F35 +TopDownShade=\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3\u30C0\u30A6\u30F3 +FR-Base_Right=\u53F3 +DataBinding=\u30C7\u30FC\u30BF\u30D0\u30F3\u30C7\u30A3\u30F3\u30B0 +ConnectionPool_Attr=\u63A5\u7D9A\u30D7\u30FC\u30EB\u5C5E\u6027 +Connect_SQL_Cannot_Null=\u30C7\u30FC\u30BF\u63A5\u7D9A\u3068SQL\u30D1\u30CD\u30EB\u306F\u7A7A\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +DBCP_MAX_ACTIVE=\u6700\u5927\u30A2\u30AF\u30C6\u30A3\u30D6\u63A5\u7D9A\u6570 +M_Window-Preference=\u30AA\u30D7\u30B7\u30E7\u30F3 +ToolBar_Top=\u30D8\u30C3\u30C0\u30FC\u30C4\u30FC\u30EB\u30D0\u30FC +FR-Designer_Indent-Pixel=\u753B\u7D20 +FR-Designer_Unit_MM=\u30DF\u30EA\u30E1\u30FC\u30C8\u30EB +IDLE=\u30A2\u30A4\u30C9\u30EB +FRFont-Underline=\u4E0B\u7DDA +FR-Designer-Plugin_Read_Plugin_List_Error=\u30D7\u30E9\u30B0\u30A4\u30F3\u30EA\u30B9\u30C8\u306E\u8AAD\u307F\u53D6\u308A\u6642\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E +Type_Set=\u30BF\u30A4\u30D7\u8A2D\u5B9A +M_Format_A-Cell_Attributes=\u305D\u306E\u4ED6\u5C5E\u6027 +CellWrite-Show_As_Image=\u753B\u50CF\u3067\u5185\u5BB9\u3092\u8868\u793A +ShowAsDownload=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30EA\u30F3\u30AF\u3067\uFF12\u9032\u6CD5\u306E\u5185\u5BB9\u3092\u8868\u793A +Form-ComboCheckBox=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 +BackgroundTexture-WovenMat=\u7E54\u7269 +BindColumn-Custom_Data_Appearance=\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u306F\u8868\u793A\u3059\u308A\u307E\u3059 +Actived=\u6D3B\u52D5\u7684 +Env-Local_Directory=\u30ED\u30FC\u30AB\u30EB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA +Form-Colon=\u30B3\u30ED\u30F3 +Preference-Vertical_Scroll_Bar_Visible=\u7E26\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u306F\u53EF\u8996 +Utils-Show_Cell_Value=\u30BB\u30EB\u5024\u3092\u8868\u793A +FR-Designer_ReportColumns-Repeat_Row=\u884C\u9806\u5E8F\u3092\u30B3\u30D4\u30FC +SpecifiedG-Specified_Group=\u30B0\u30EB\u30FC\u30D4\u30F3\u30B0\u306E\u30E6\u30FC\u30B6\u5B9A\u7FA9 +RWA-Smart_Add_Cells=\u30A4\u30F3\u30C6\u30EA\u30B8\u30A7\u30F3\u30C8\u8FFD\u52A0\u30BB\u30EB +HF-Left_Section=\u5DE6\u5074\u30BB\u30AF\u30B7\u30E7\u30F3 +M_Report-Report_Background=\u5E33\u7968\u80CC\u666F +Image-Extend=\u62E1\u5F35 +FS_BI=\u51B3\u7B56\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0 +ToolBar_Bottom=\u30D5\u30C3\u30BF\u30FC\u30C4\u30FC\u30EB\u30D0\u30FC +Hgap=\u6C34\u5E73\u9593\u9699 +FR-Designer_Enter-New-FileName=\u65B0\u3057\u3044\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 +Verify_Fail=\u70B9\u691C\u306B\u5931\u6557\u3057\u307E\u3057\u305F +CellWrite-InsertRow_Policy=\u884C\u6226\u7565\u3092\u633F\u5165 +FR-Designer-Plugin_Illegal_Plugin_Zip=\u5408\u6CD5\u7684\u306A\u30D7\u30E9\u30B0\u30A4\u30F3\u30D1\u30C3\u30AF\u3067\u306F\u3042\u308A\u307E\u305B\u3093 +RCodeVersion=\u30D0\u30FC\u30B8\u30E7\u30F3 +Convert=\u5909\u63DB +Please_Drag=\u884C\u5217\u30D5\u30A3\u30FC\u30EB\u30C9\u3001\u53D6\u308A\u307E\u3068\u3081\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u5F15\u3063\u8FBC\u3081\u3066\u304F\u3060\u3055\u3044 +FR-Designer-Widget-Style_Preview=\u30D7\u30EC\u30D3\u30E5\u30FC +mobile_number=\u643A\u5E2F\u96FB\u8A71\u756A\u53F7 +FR-Designer_Form-ComboCheckBox=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 +CacheValidateTime=\u5E33\u7968\u30AD\u30E3\u30C3\u30B7\u30F3\u30B0\u6709\u52B9\u6642\u9593 +Hyperlink-Extends_Report_Parameters=\u5E33\u7968\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3092\u7D99\u627F\u3059\u308B +FR-Designer_Values-Editor=\u5024\u30A8\u30C7\u30A3\u30BF +Export-Excel=Excel +Utils-Left_to_Right=\u5DE6\u304B\u3089\u53F3\u3078 +ExpandD-Vertical_Extendable=\u7E26\u5E83\u304C\u308B +Utils-Report_Runtime_Env=\u5E33\u7968\u4F5C\u696D\u76EE\u6B21 +Utils-Right_to_Left=\u53F3\u304B\u3089\u5DE6\u3078 +Utils-Beyond_the_top_side_of_Border=\u4E0A\u30DC\u30FC\u30C0\u30FC\u8D85\u3048 +Exception_StackTrace=\u30A8\u30E9\u30FC\u7570\u5E38\u30B9\u30BF\u30C3\u30AF\u60C5\u5831 +Corresponding_Fields=\u5BFE\u5FDC\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9 +Form-CheckBox=\u30D5\u30EC\u30FC\u30E0\u3092\u8907\u6570\u9078\u629E +Utils-Current_Row=\u30AB\u30EC\u30F3\u30C8\u884C +BuildIn=\u5185\u8535 +BindColumn-Results_Filter=\u7D50\u679C\u30BB\u30C3\u30C8\u306E\u30D5\u30A3\u30EB\u30BF +FR-Designer-Plugin_Manager=\u30D7\u30E9\u30B0\u30A4\u30F3\u7BA1\u7406 +M_File-Export-CSV=CSV\u66F8\u5F0F(\u30B3\u30F3\u30DE\u3067\u5206\u5272) +Data_Filter=\u30C7\u30FC\u30BF\u9078\u5225 +ReportServerP-Edit_Printer=\u30D7\u30EA\u30F3\u30BF\u30FC\u7DE8\u96C6 +FR-Designer_Datasource-Stored_Procedure=\u30B9\u30C8\u30A2\u30C9 \u30D7\u30ED\u30B7\u30FC\u30B8\u30E3 +RESTART=\u518D\u8D77\u52D5 +FormulaD-Function_name=\u95A2\u6570\u540D +ChooseOneButton=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u4E00\u3064\u9078\u629E\u3057\u3066\u304B\u3089\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044 +Priority=\u512A\u5148\u30E9\u30F3\u30AF +Datasource-Datasource=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 +FR-Designer_Width=\u5E83\u3055 +Cannot-Add_To_This_Area=\u5730\u57DF\u306B\u306F\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093 +Run=\u904B\u884C +Set_Submit_Condition=\u6761\u4EF6\u3092\u8A2D\u7F6E\u306B\u63D0\u51FA\u3059\u308B\u3053\u3068\u306B\u3057\u305F +FR-Base_Value=\u5024 +fileLocked_undeleted=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u30ED\u30C3\u30AF\u3055\u308C\u3066\u3044\u308B\u3001\u3042\u306A\u305F\u304C\u524A\u9664\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\uFF01 +Web_Apply=WEB\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3 +Refresh_Database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u5237\u65B0 +Set_Row_Title_End=\u91CD\u8907\u3059\u308B\u7D42\u4E86\u884C\u3092\u8A2D\u5B9A +FR-Utils-New_Folder=\u30D5\u30A1\u30A4\u30EB\u65B0\u898F\u4F5C\u6210 +BiasD-From-upper_left_to_lower_right=\u5DE6\u4E0A\u5074\u304B\u3089\u53F3\u4E0B\u5074\u3078\u5E83\u304C\u308B +CapsLock=Caps Lock\u30AD\u30FC\u304C\u30AA\u30F3\u306B\u306A\u3063\u3066\u3044\u308B +StyleFormat-Sample=\u4F8B +RWA-Smart_Add_Cell_Group=\u30A4\u30F3\u30C6\u30EA\u30B8\u30A7\u30F3\u30C8\u6DFB\u52A0\u30EC\u30A4\u30E4\u30FC\u7D44 +MConfig-CancelButton=\u30AD\u30E3\u30F3\u30BB\u30EB +Function-Choose_Function_Class=\u95A2\u6570\u30AF\u30E9\u30B9\u3092\u9078\u629E\u3059\u308B +LatLng=\u5EA7\u6A19 +DS-Server_TableData=\u30B5\u30FC\u30D0\u30FC\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 +BackgroundTexture-GreenMarble=\u7DD1\u8272\u306E\u5927\u7406\u77F3 +read_time_out=\u30ED\u30FC\u30C9\u306E\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8 +JavaScript-Commit_to_Database=\u5165\u5EAB\u63D0\u51FA +DS-Relation_TableData=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u95A2\u9023\u4ED8\u3051 +CellWrite-Page_Before_Row=\u884C\u524D\u306E\u6539\u9801 +FR-Designer-Plugin_Load_Plugins_From_Server=\u30D7\u30E9\u30B0\u30A4\u30F3\u30DE\u30FC\u30B1\u30C3\u30C8\u304B\u3089\u30C7\u30FC\u30BF\u53D6\u5F97\u4E2D +D-Dispaly_Divide_Result_Set_into_Groups=resultset\u306E\u30B0\u30EB\u30FC\u30D7\u5206\u3051 +Closed=\u9589\u9396\u6E08\u307F +RWA-Help=\u8A2D\u7F6E\u5F8C\u306E\u6539\u6B63\u3092\u66F4\u65B0\u3057\u306A\u3044\u3068\u3001\u7533\u544A\u30D7\u30EC\u30D3\u30E5\u30FC\u30EC\u30DD\u30FC\u30C8\u306B\u8A18\u9332\u3055\u308C\u3066\u3044\u306A\u3044\u6240\u5728\u30EC\u30A4\u30E4 +FR-Designer-Widget-Style_Custom= +FR-Designer-Widget-Style_Render_Style=\u307C\u304B\u3057\u30B9\u30BF\u30A4\u30EB +Highlight-Barcode=\u30D0\u30FC\u30B3\u30FC\u30C9 +FR-Designer_Connect_SQL_Cannot_Null=\u30C7\u30FC\u30BF\u63A5\u7D9A\u3068SQL\u30D1\u30CD\u30EB\u306F\u7A7A\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +trigger=\u6A19\u984C +M-Data_Analysis=\u30C7\u30FC\u30BF\u5206\u6790 +Function-The_selected_file_cannot_be_null=\u9078\u629E\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u306F\u7A7A\u5024\u306B\u306A\u3063\u3066\u306F\u3044\u3051\u307E\u305B\u3093 +No-Privilege=\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F +ReportColumns-Repeat_Column=\u5217\u756A\u53F7\u306E\u7E70\u308A\u8FD4\u3057 +SecondGraduationUnit=\u4E8C\u6B21\u7684\u76EE\u76DB\u308A\u5358\u4F4D +Form-Widget_Property_Value=\u5C5E\u6027\u5024 +GIVE-NAME=\u547D\u540D +FR-Designer_Rename=\u540D\u79F0\u306E\u5909\u66F4 +Utils-Merge_Cell=\u30BB\u30EB\u3092\u7D50\u5408\u3059\u308B +Style-Spacing_After=\u6BB5\u5F8C +Enlarge_Or_Reduce=\u30BA\u30FC\u30E0 +Tree-Height=\u9AD8\u3055 +RCodeErrorCorrect=\u30A8\u30E9\u30FC\u8A02\u6B63 +Enter-New-FileName=\u65B0\u3057\u3044\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 +try_resending=\u30C8\u30EA\u30AC\u30FC\u3055\u308C\u308B +M-Open_Report=\u3092\u958B\u304F... +Please_Select=\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 +InRow=\u884C(R) +Form-TextArea=\u6587\u66F8\u57DF +FR-Designer_Https_Enable=https\u4F7F\u7528\u958B\u59CB +Widget-Custom_Widget_Config=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +already_exists=\u3053\u3053\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059 +Original_Marked_Filed=\u521D\u671F\u30BF\u30B0\u30D5\u30A3\u30FC\u30EB\u30C9 +BackgroundTexture-Sand=\u7802\u6D5C +Values=\u5024 +Not_use_a_cell_attribute_table_editing=\u3042\u306A\u305F\u304C\u7DE8\u96C6\u3059\u308B\u30BB\u30EB\u306E\u5C5E\u6027\u30C6\u30FC\u30D6\u30EB\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068 +Root=\u30EB\u30FC\u30C8\u30CE\u30FC\u30C9 +cycle=\u5468\u671F +open-new-form-tip=711\u4EE5\u4E0B\u306E\u751F\u7523\u306E\u305F\u3081\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u73FE\u5728\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u3001\u4E92\u63DB\u6027\u304C\u306A\u3044\u3068 +Support-Current_Auto_Complete_Shortcut=\u73FE\u5728\u306E\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC +GROUPING_MODE=\u666E\u901A\u30B0\u30EB\u30FC\u30D7\u5206\u3051 +DBCP_MAX_IDLE=\u6700\u5927\u30A2\u30A4\u30C9\u30EB\u63A5\u7D9A\u6570 +BackgroundTexture-BlueTissuePaper=\u9752\u3044\u30B5\u30F3\u30C9\u30DA\u30FC\u30D1\u30FC +ReportD-Export_Hided_Row=\u96A0\u3057\u305F\u884C\u3092\u5C0E\u51FA +FR-Custom_styles_lost=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u30B9\u30BF\u30A4\u30EB\u306F\u5931\u308F\u308C\u307E\u3057\u305F +Env-Des2=Servlet\u306E\u4F4D\u7F6E\u306F\u30DB\u30B9\u30C8\u30B3\u30F3\u30D4\u30E5\u30FC\u30BF\u540D\u3001\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30A4\u30B9\u3001WEB\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3001 +Env-Des1=\u5E33\u7968\u30B5\u30FC\u30D0\u30FC\u304C\u3042\u308BWEB-INF\u76EE\u6B21\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 +PageSetup-Placement_Center_on_Page=\u4E2D\u592E\u63C3\u3048 +sure_to_delete=\u524A\u9664\u3092\u78BA\u8A8D\u3057\u307E\u3059 +Already_exists_not_add_repeat=\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u308B\u3001\u30EA\u30D4\u30FC\u30C8\u3092\u8FFD\u52A0\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044 +Axis_Title=\u8EF8\u306E\u8868\u984C +FR-Designer-Plugin_Install_Failed=\u30D7\u30E9\u30B0\u30A4\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u306B\u5931\u6557\u3057\u307E\u3057\u305F +FR-Designer-Widget-Style_Frame=\u30D5\u30EC\u30FC\u30E0 +MainGraduationUnit=\u4E3B\u306A\u76EE\u76DB\u308A\u5358\u4F4D +Second_Axis=\u6B21\u5EA7\u6A19\u8EF8 +Classifier-Ge=\u500B +MSBold=\u5FAE\u8EDF\u96C5\u9ED2 +Form-Design_Size=\u30C7\u30B6\u30A4\u30F3\u30B5\u30A4\u30BA +FR-App-Template_Save=\u4FDD\u5B58 +ExpandD-Horizontal_Extendable=\u6A2A\u5E83\u304C\u308B +RP_Authority_Edit=\u6A29\u9650\u7DE8\u96C6 +Warnning=\u30EA\u30DE\u30A4\u30F3\u30C9 +RoleName_Can_Not_Be_Null=\u5F79\u5272\u540D\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u305A\u3001\u91CD\u8907\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u305B\u3093 +Application=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3 +Formula_Dictionary_Display_Examples_Html=\u5B9F\u969B\u5024\u7BC4\u56F2\u306F\ +ECP-error_pwd=\u30D1\u30B9\u30EF\u30FC\u30C9\u30A8\u30E9\u30FC +FR-Hyperlink_ChartHyperlink=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF +M_Edit-FormatBrush=\u66F8\u5F0F\u30D6\u30E9\u30B7(B) +Indent-Pixel=\u753B\u7D20 +FR-Designer-Widget-Style_Border_Line=\u30D5\u30EC\u30FC\u30E0\u592A\u3055 +Widget-Default_Widget_Config=\u57FA\u672C\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +Version-does-not-support=\u73FE\u5728\u4F7F\u7528\u3057\u3066\u3044\u308Blic\u306F\u9060\u9694\u30C7\u30B6\u30A4\u30F3\u6A5F\u80FD\u306B\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3002 +StyleAlignment-Right_To_Left=\u53F3\u304B\u3089\u5DE6\u3078 +Style-Spacing_Before=\u6BB5\u524D +Has_Existed=\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059 +FR-Designer_DisplayNothingBeforeQuery=\u30EC\u30DD\u30FC\u30C8\u304C\u8868\u793A\u3055\u308C\u307E\u305B\u3093\u524D\u306B\u5185\u5BB9\u3092\u78BA\u8A8D\u3059\u308B]\u3092\u30AF\u30EA +Still=\u4F9D\u7136\u3068\u3057\u3066 +JS_WARNING2=\ \u4F8B\uFF1Ahttp\://localhost\:8075/WebReport/demo.js +JS_WARNING1= \u76F8\u5BFE\u7684\u5E33\u7968\u5DE5\u7A0B\u306EWebReport\u306E\u76EE\u6B21\u304C\u3001WebReport\\js\u4E0B\u306B\u5F15\u7528\u3059\u308Bjs +Connectionline=\u63A5\u7D9A\u30EF\u30A4\u30E4\u30E2\u30C7\u30EB +Utils-Insert_Record=\u8A18\u9332\u633F\u5165 +Set-Parameter-Name=\u307E\u305A\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u540D\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044 +More-information=\u8A73\u7D30\u60C5\u5831 +Parameter-Boolean=\u8AD6\u7406\u578B +FRFont-Strikethrough=\u53D6\u308A\u6D88\u3057\u7DDA +Server-version-tip=\u3042\u306A\u305F\u306F\u3001\u73FE\u5728\u3001\u3042\u306A\u305F\u306F\u3044\u304F\u3064\u304B\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u304C\u52B9\u679C\u7684\u306B\u4FDD\u5B58\u3059\u308B\u3053\u3068\u304C +Form-All_Files=\u5168\u3066\u306E\u30D5\u30A1\u30A4\u30EB +DBCP_NUM_TEST_PER_EVCTION_RUN=\u30A2\u30A4\u30C9\u30EB\u63A5\u7D9A\u30EA\u30B5\u30A4\u30AF\u30EB\u691C\u67FB\u6570 +FR-Designer-FRFont_Family=\u540D\u524D +Device=\u8A2D\u5099 +M_Insert-Cell=\u30BB\u30EB\u8981\u7D20 +Present-Formula_Present=\u516C\u5F0F\u30D5\u30A9\u30EB\u30E0 +FRFont-Superscript=\u4E0A\u4ED8\u304D +CellWrite-Page_Before_Column=\u5217\u524D\u306E\u6539\u9801 +Golden=\u30B4\u30FC\u30EB\u30C7\u30F3 +Preference-Support_Cell_Editor_Definition=\u30BB\u30EB\u30A8\u30C7\u30A3\u30BF\u30FC\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B +M-Page_Preview=\u30DA\u30FC\u30B8\u5225\u30D7\u30EC\u30D3\u30E5\u30FC +HJS-CC_to=CC +Tree-Select_Leaf_Only=\u8449\u30CE\u30FC\u30C9\u306B\u623B\u308B +Pointer-A-Tick-Order=\u30DD\u30A4\u30F3\u30BF\u5024\u3068\u76EE\u76DB\u308A\u5024\u306E\u6570\u91CF\u30E9\u30F3\u30AF +Pink=\u30D4\u30F3\u30AF +StyleAlignment-Distibuted=\u5747\u7B49\u5272\u308A\u4ED8\u3051 +Odd=\u5947\u6570 +already-saved=\u4FDD\u5B58\u3055\u308C\u3066\u3044\u308B +FR-Hyperlink_Chart_Cell=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u9023\u52D5\u30BB\u30EB +Style-Left_Indent=\u5DE6\u30A4\u30F3\u30C7\u30F3\u30C8 +Offline=\u79BB\u7EBF +Form-Hierarchy_Tree_Next=\u6B21 +Needle=\u30DD\u30A4\u30F3\u30BF +GoogleMap=Google\u30DE\u30C3\u30D7 +Running=\u904B\u884C\u4E2D +M_Edit-Unmerge_Cell=\u30BB\u30EB\u3092\u5206\u5272\u3059\u308B +Out_Border_Line=\u5916\u5074\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 +Style-Spacing=\u9593\u9694\u8DDD\u96E2 +FR-Utils_Submit=\u63D0\u51FA +ReportServerP-Previous=\u524D\u30DA\u30FC\u30B8 +StyleAlignment-Text_Style=\u30C6\u30AD\u30B9\u30C8\u30B9\u30BF\u30A4\u30EB +RelatedChart=\u30B0\u30E9\u30D5\u9023\u52D5 +ProcessManager=\u30D7\u30ED\u30BB\u30B9\u7BA1\u7406 +Cancel_Repeat_Attributes=\u30EA\u30D4\u30FC\u30C8\u30E9\u30F3\u30AF\u3092\u30AD\u30E3\u30F3\u30BB\u30EB\u3059\u308B\u306B\u306F +FR-App-File_Message=\u60C5\u5831 +Datasource-Stored_Procedure=\u30B9\u30C8\u30A2\u30C9 \u30D7\u30ED\u30B7\u30FC\u30B8\u30E3 +RWA-Row_Offset=\u884C\u30AA\u30D5\u30BB\u30C3\u30C8 +M_Format-Style=\u30B9\u30BF\u30A4\u30EB +detail_description=\u8A73\u7D30\u306A\u8AAC\u660E +FR-Designer-Widget-Style_Title_Content=\u6A19\u984C\u5185\u5BB9 +ParameterD-Report_Parameter=\u5E33\u7968\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +HF-Edit_Header=\u30D8\u30C3\u30C0\u7DE8\u96C6 +Sytle-FRFont=\u30D5\u30A9\u30F3\u30C8 +FR-Designer_Finish_Export=\u5C0E\u51FA\u5B8C\u4E86 +MultiFileUpload=\u8907\u6570\u30D5\u30A1\u30A4\u30EB\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9 +HF-Page_Number=\u30DA\u30FC\u30B8\u756A\u53F7 +Style-Right_Indent=\u53F3\u30A4\u30F3\u30C7\u30F3\u30C8 +Desktop=\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7 +FR-Server-All_Error=\u30A8\u30E9\u30FC +ConditionB-Operator=\u64CD\u4F5C +Today=\u4ECA\u65E5 +Form-Widget_Name=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u540D +Covered_All=\u5168\u3066\u8986\u3046 +Day=\u65E5 +External=\u5916\u90E8 +Black_Font=\u592A\u5B57 +LOG-Report_Server_IS_Started=\u5E33\u7968\u30B5\u30FC\u30D0\u30FC\u3082\u3046\u8D77\u52D5\u3055\u308C\u3066\u3044\u307E\u3059 +Tips\:You_Can_Input_B1_To_Input_The_Data_Of_The_First_Row_Second_Column=\u30D2\u30F3\u30C8\:B1\u3092\u5165\u529B +FR-Designer_ChooseOneButton=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u4E00\u3064\u9078\u629E\u3057\u3066\u304B\u3089\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044 +Widget-Sizing=\u5927\u304D\u3055\u8ABF\u6574 +NO_Border_Line=\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3\u7121\u3057 +Cell_Data=\u30BB\u30EB\u30C7\u30FC\u30BF +StyleAlignment-Vertical_Text=\u6587\u5B57\u3092\u7E26\u306B\u3059\u308B +Label=\u30BF\u30B0 +Orange=\u30AA\u30EC\u30F3\u30B8 +zeroMarginWarn=\u30D7\u30EA\u30F3\u30BF\u306F\u5C0F\u3055\u306A\u7F36
\u30B3\u30F3\u30C6\u30F3\u30C4\u4E0D\u8DB3\u3092\u5370\u5237\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u3001\u7269\u7406\u30DE\u30FC\u30B8\u30F3 +Widget-Date_Selector_Return_Type=\u623B\u308A\u5024\u30BF\u30A4\u30D7 +Utils-Switch_To_Template_Reportlet=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u5E33\u7968\u306B\u5207\u308A\u66FF\u3048 +satisfy=\u6761\u4EF6\u3092\u6E80\u305F\u3059 +FR-Designer_WidgetDisplyPosition=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u8868\u793A\u4F4D\u7F6E +FR-Base_Top=\u4E0A +FR-Designer_Form-CheckBox=\u30D5\u30EC\u30FC\u30E0\u3092\u8907\u6570\u9078\u629E +Reportlet-Parameter_Type=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u4F1D\u9054\u65B9\u6CD5 +sending=\u9001\u4FE1\u4E2D... +FR-Designer-FRFont_Foreground=\u8272 +FR-Import-Export_SVG=SVG\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +M_Edit-Clear_Contents=\u5185\u5BB9(C) +Session=\u30BB\u30C3\u30B7\u30E7\u30F3 +Widget-Load_Type=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9 +template_unsaved=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u4FDD\u5B58\u3067\u304D\u306A\u3044 +check_communication=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u901A\u4FE1\u304C\u6B63\u5E38\u3067\u3042\u308A\u3001\u30B5\u30FC\u30D0\u304C\u52D5\u4F5C\u3057\u3066\u3044\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060 +List-Need_Head=\u30EA\u30B9\u30C8\u30D8\u30C3\u30C9\u304C\u5FC5\u8981\u3067\u3059 +FR-Designer-Plugin_Has_Been_Installed=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u3092 +FR-Widget_Tree_And_Table=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u30C4\u30EA\u30FC\u3068\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u8868 +FR-Base_Help=\u30D8\u30EB\u30D7 +FR-Designer-Plugin_Update_Successful=\u30D7\u30E9\u30B0\u30A4\u30F3\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u306B\u6210\u529F\u3057\u307E\u3057\u305F\u3002\u30B5\u30FC\u30D0\u30FC\u3092 +August=\u516B\u6708 +LOG-Is_Being_Openned=\u958B\u3044\u3066\u3044\u307E\u3059 +BackgroundTexture-Oak=\u30AA\u30FC\u30AF +Multi_nam_formula=\ \u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u540D\: \u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u6761\u4EF6\: +TurnOn=\u8D77\u52D5 +HJS-Send_Successfully=\u9001\u4FE1\u6210\u529F +Mon=\u6708 +Inner_Parameter=\u5185\u8535\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +Required=\u8A18\u5165\u5FC5\u9808 +Summary=\u6982\u8981 +template_unopened=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +FR-Base_Bottom=\u4E0B +DataFunction-Min=\u6700\u5C0F\u5024 +StyleFormat-Percent=\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8 +FR-App-All_Custom=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA +M_Insert-Data_Column=\u30C7\u30FC\u30BF\u5217 +PLEASE=\u3057\u3066\u304F\u3060\u3055\u3044 +Numbers=\u6841\u6570 +Release_Lock=\u30A2\u30F3\u30ED\u30C3\u30AF +Background-Background_is_NULL=\u80CC\u666F\u306A\u3057 +FR-Designer_Sytle-FRFont=\u30D5\u30A9\u30F3\u30C8 +Gradation=\u69CB\u6210 +The_current_list_is_empty=\u73FE\u5728\u306E\u30EA\u30B9\u30C8\u306F\u7A7A\u3067\u3059 +Formula_Dictionary_Display_Examples=\ \u5B9F\u969B\u5024\u7BC4\u56F2\u306F\ +Schedule-Template_Parameter=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +JSShow=\u52D5\u614B\u8868\u793A +Level_coordinates=\u30EC\u30D9\u30EB\u306E\u5EA7\u6A19 +MainGraduationLine=\u30E1\u30A4\u30F3\u30B9\u30B1\u30FC\u30EB\u30E9\u30A4\u30F3 +Hyperlink-Web_link=\u30A6\u30A7\u30D6\u30EA\u30F3\u30AF +StyleAlignment-between_-90_and_90=-90\u304B\u308990\u307E\u3067\u306E\u7BC4\u56F2\u3067 +FormulaD-Custom_Function=\u30E6\u30FC\u30B6\u5B9A\u7FA9\u95A2\u6570 +FR-Designer_Integer=\u6574\u6570 +PageSetup-Finis_Start_Row=\u91CD\u8907\u3059\u308B\u7D42\u4E86\u884C +RWA-Remove_Field=\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30EA\u30E0\u30FC\u30D6 +Form-Desin_Width=\u30C7\u30B6\u30A4\u30F3\u5E45 +No-tableData=\u623B\u3057\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u304C\u3042\u308A\u307E\u305B\u3093 +Page_Total=\u5408\u8A08 +FR-Designer-Plugin_Connect_Server_Error=\u30D7\u30E9\u30B0\u30A4\u30F3\u30DE\u30FC\u30B1\u30C3\u30C8\u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093\u3002\uFF0C\u5F8C\u3067\u518D\u5EA6 +Import-Excel_Source=Excel\u30BD\u30FC\u30B9 +Utils-Left_to_Right_a=\u5DE6\u304B\u3089\u53F3\u3078 +ExpandD-Expand_Attribute=\u5C5E\u6027\u3092\u62E1\u5F35\u3059\u308B +Report-Write_Attributes=\u5E33\u7968\u8A18\u5165\u5C5E\u6027 +Utils-Current_Column=\u30AB\u30EC\u30F3\u30C8\u5217 +Need_Max_Value=\u6700\u5927\u5024\u304C\u5FC5\u8981 +Report_Not_Exist=\u9078\u629E\u3057\u305F\u5E33\u7968\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\uFF01 +HF-Insert_Content=\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u633F\u5165 +UpParent=\u4E0A\u89AA\u30BB\u30EB +PageSetup-Page=\u30DA\u30FC\u30B8 +Utils-Move_Up=\u4E0A\u3078\u79FB\u52D5 +BackgroundTexture-PurpleMesh=\u7D2B\u8272\u306E\u30E1\u30C3\u30B7\u30E5 +Export-Word=Word\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +ServerM-Widget_Manager=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u7BA1\u7406 +FR-Designer-Basic_Activation_Key=\u30C7\u30B6\u30A4\u30CA\u30FC\u6574\u7406\u756A\u53F7\uFF1A +FR-App-Template_Report_Not_Exist=\u9078\u629E\u3057\u305F\u5E33\u7968\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\! +Protected=\u4FDD\u8B77 +Skip=\u30B9\u30AD\u30C3\u30D7 +FR-Designer_PageSetup-Vertically=\u5782\u76F4\u4E2D\u592E\u63C3\u3048 +revert=\u3084\u308A\u76F4\u3059 +PageSetup-Predefined=\u30D7\u30EC\u5B9A\u7FA9 +Border-Style-Radius=\u89D2\u4E38 +IntPart=\u6574\u6570\u90E8\u5206 +ExpandD-Data_Column=\u30C7\u30FC\u30BF\u30B3\u30E9\u30E0 +Sort-Ascending=\u6607\u9806 +FR-Designer-Widget_Style=\u30B9\u30BF\u30A4\u30EB +parameter_name_exist=\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u306F\u65E2\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059 +FR-Designer_Layer-Build=\u30D5\u30A1\u30BB\u30C3\u30C8\u7D44\u307F\u7ACB\u3066 +Please_Rename=\u518D\u5EA6\u547D\u540D\u3057\u3066\u304F\u3060\u3055\u3044 +Form-Editing_Listeners=\u4E8B\u4EF6\u7DE8\u96C6 +RWA-Smart_Add_Fields=\u30A4\u30F3\u30C6\u30EA\u30B8\u30A7\u30F3\u30C8\u8FFD\u52A0\u30D5\u30A3\u30FC\u30EB\u30C9 +FR-Designer-Tree_Width=\u5E45 +Record=\u8A18\u9332 +Poly-Report_Component=\u805A\u5408\u5E33\u7968\u30A2\u30BB\u30F3\u30D6\u30EA +Options=\u30AA\u30D7\u30B7\u30E7\u30F3 +NS-war-remote=\u30A8\u30E9\u30FC\u30B3\u30FC\u30C9\:1117 \u5727\u7E2E\u914D\u7F6E\u306F\u9060\u9694\u30C7\u30B6\u30A4\u30F3\u306B\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093 +Sche-Minute=\u5206 +Three_Rows_Of_Three_Grid=3\u4E57\u306E3\u3064\u306E\u884C +WorkSheet=\u30EF\u30FC\u30AF\u30B7\u30FC\u30C8 +FR-Designer-Widget_Size=\u5927\u304D\u3055\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +BindColumn-Select=\u30EA\u30B9\u30C8 +FR-Widget_Mobile_Terminal=\u30E2\u30D0\u30A4\u30EB\u7AEF\u672B +FR-Background_Image_Titled=\u5C55\u958B +SetPrinterOffset=\u5B89\u3044\u30D7\u30EA\u30F3\u30BF +FR-Designer-Plugin_Installed=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u6E08\u307F +FR-Designer-Hyperlink_Name=\u540D\u524D +FR-Designer_Form-Button=\u30DC\u30BF\u30F3 +Black=\u30D6\u30E9\u30C3\u30AF +FR-Designer-Widget-Style_Border_Color=\u30D5\u30EC\u30FC\u30E0\u8272 +Set_Submit_Event=\u63D0\u51FA\u4E8B\u4EF6\u3092\u8A2D\u5B9A +PDF-Print_isPopup=\u8A2D\u5B9A\u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7\u3059\u308B\u304B\u5426\u304B +LayerPageReport_CountPerPage=\u6BCE\u30DA\u30FC\u30B8\u8A18\u9332\u6570 +Display_Modes=\u30E2\u30C7\u30EB\u3092\u8868\u793A +RowSpan=\u884C\u7BC4\u56F2 +Datasource-Test_Connection=\u63A5\u7D9A\u30C6\u30B9\u30C8 +Function-Function_Manager=\u95A2\u6570\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC +Host_Name=\u30DB\u30B9\u30C8\u30B3\u30F3\u30D4\u30E5\u30FC\u30BF\u540D +CellWrite-Show_As_HTML=HTML\u3067\u5185\u5BB9\u3092\u8868\u793A +FR-Designer-Widget-Style_Shadow=\u9670\u5F71 +FR-Designer_Parameter_String=\u6587\u5B57\u5217 +Form-SupportTag=\u30BF\u30B0\u306B\u8868\u793A +ReportD-Report_Write_Attributes=\u5E33\u7968\u66F8\u5F0F\u5C5E\u6027 +DataFunction-Count=\u4EF6\u6570 +Top_And_Thick_Bottom_Border_Line=\u4E0A\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3\u3068\u7C97\u4E0B\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 +Client=\u9867\u5BA2\u5074 +BindColumn-Result_Serial_Number_Start_From_1=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306E\u756A\u53F7\u306F1\u304B\u3089 +History=\u6B74\u53F2 +Already_exists=\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u308B\u5834\u5408\u3001\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\uFF01 +Datasource-Original_Charset=\u30AA\u30EA\u30B8\u30CA\u30EB\u6587\u5B57\u30B3\u30FC\u30C9 +FR-Base_Left=\u5DE6 +ReportServerP-Next=\u6B21\u30DA\u30FC\u30B8 +BindColumn-Top_N=\u524D\u306EN\u500B +Animation_Special=\u7279\u5225\u306B\u826F\u3044\u52B9\u679C +Widget-Chart_Widget_Config=\u30B0\u30E9\u30D5\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +FR-Designer-Plugin_Cannot_Update_Not_Install=\u30D7\u30E9\u30B0\u30A4\u30F3\u66F4\u65B0\u3092\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3002\u5F53\u8A72 +After_Changed_Some_Attributes_Are_Different=\u30D7\u30ED\u30D1\u30C6\u30A3\u306E\u3044\u304F\u3064\u304B\u306E\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8\u306E\u5F8C\u306B\u5909\u63DB\u304C\u7D99\u7D9A\u3059\u308B\u304B\u3069\u3046\u304B\u3001\u5909\u66F4\u3055\u308C\u307E\u3059 +PieStyle=\u30D1\u30A4 +HF-Are_you_sure_to_delete_it=\u5F53\u8A72\u9805\u76EE\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B +Utils-Design-File_Open=\u958B\u304F +FR-Utils_Label=\u30BF\u30B0 +Data-Label=\u30BF\u30B0 +M_Insert-Text=\u30C6\u30AD\u30B9\u30C8 +Form-View_Tree=\u30D3\u30E5\u30FC\u30C4\u30EA\u30FC +M_Insert-Chart=\u56F3 +HF-Even_Page=\u5076\u6570\u30DA\u30FC\u30B8 +ReportServerP-Report_server_parameter=\u5E33\u7968\u30B5\u30FC\u30D0\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +JavaScript-Form_Submit=\u8868\u63D0\u51FA +Horizontal-Split_Layout=\u6C34\u5E73\u5206\u5272\u914D\u7F6E +BorderLayout-Center=\u4E2D +INFO-Reset_Webapp=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30B5\u30FC\u30D0\u30FC\u306E\u518D\u8A2D\u5B9A +FR-Designer_Text=\u30C6\u30AD\u30B9\u30C8 +IN_and_INOUT_type_not_as_cursor=IN\u304A\u3088\u3073INOUT\u30BF\u30A4\u30D7\u3067\u306F\u306A\u3044\u30AB\u30FC\u30BD\u30EB\u3068 +Main_Axis=\u30E1\u30A4\u30F3\u5EA7\u6A19\u8EF8 +M_Edit-Cut=\u5207\u308A\u53D6\u308A(T) +Utils-The_Name_has_been_existed=\u5F53\u8A72\u540D\u79F0\u306F\u65E2\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059 +FR-Background_Image=\u753B\u50CF +Character=\u6587\u5B57 +Unit_Thousand=\u5343 +Test=\u30C6\u30B9\u30C8 +Utils-Would_you_like_to_save=\u4FDD\u5B58\u3057\u307E\u3059\u304B +HF-Header_and_Footer=\u30D8\u30C3\u30C0\u30FC\u3068\u30D5\u30C3\u30BF\u30FC +LIST_MODE=\u30EA\u30B9\u30C8 +HF-Insert_Image=\u753B\u50CF\u3092\u633F\u5165 +FR-Designer-Widget-Style_Standard=\u6A19\u6E96 +FR-Designer_Form-List=\u30EA\u30B9\u30C8 +BackgroundTexture-Denim=\u30C7\u30CB\u30E0 +Execute_Report_by_Layer_Engine=\u30E9\u30A4\u30F3\u306E\u30A8\u30F3\u30B8\u30F3\u3067\u5E33\u7968\u3092\u5B9F\u884C\u3059\u308B +M_Edit-Bring_Forward=\u524D\u9762\u3078\u79FB\u52D5(F) +Choose_All=\u5168\u9078\u629E +Form-RadioGroup=\u30E9\u30B8\u30AA\u30DC\u30BF\u30F3\u30B0\u30EB\u30FC\u30D7 +FR-Base_Remove=\u524A\u9664 +FR-Remote_Connect2Server_Again=\u63A5\u7D9A\u304C\u4E2D\u65AD\u3057\u307E\u3057\u305F\u3002\u518D\u5EA6\u30B5\u30FC\u30D0\u30FC\u306B\u63A5\u7D9A\u3057\u307E\u3059\u304B\u3002 +Semicolon=\u5206\u53F7 +StyleFormat-Category=\u5206\u985E +Report_Template=\u5E33\u7968\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 +Utils-Beyond_the_right_side_of_Border=\u53F3\u9818\u57DF\u3092\u30AA\u30FC\u30D0\u30FC +BackgroundTexture-Papyrus=\u7D19 +LayerPageReport_PageEngine=\u30DA\u30FC\u30B8\u5225\u306E\u6F14\u7B97\u3092\u4F7F\u7528\u3057\u3066\u5E33\u7968\u3092\u57F7\u884C +Schedule-The_selected_file_must_be_end_with_filter=\u9078\u629E\u30D5\u30A1\u30A4\u30EB\u306F.cpt\u53C8\u306F.class\u53C8\u306F.frm +Provide=\u63D0\u4F9B +FormulaD-Math_&_Trig=\u6570\u5B66\u95A2\u6570\u3068\u4E09\u89D2\u95A2\u6570 +FR-Designer-StyleAlignment_Right=\u53F3\u5BC4\u305B +Error_TableDataNameRepeat=\u3059\u3067\u306B\u30B5\u30FC\u30D0\u30FC\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306B\u5B58\u5728\u3059\u308B\u304B\u8907\u6570\u306E\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u540D\u304C\u91CD +Choose_None=\u9078\u629E\u3057\u306A\u3044 +File-tree=\u30D5\u30A1\u30A4\u30EB\u30C4\u30EA\u30FC +FRFont-bold=\u592A\u5B57 +FR-Designer_Set_Submit_Condition=\u63D0\u51FA\u6761\u4EF6\u3092\u8A2D\u5B9A +Form-Change_Widget_Name=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u540D\u5909\u66F4 +ReportColumns-Report_Columns=\u5E33\u7968\u30B3\u30E9\u30E0 +Can_not_use_FormatBursh=\u8907\u6570\u9078\u629E\u3057\u305F\u30A8\u30EA\u30A2\u3067\u306F\u66F8\u5F0F\u30D6\u30E9\u30B7\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\! +CellElement-Property_Table=\u30BB\u30EB\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u00B7\u30B7\u30FC\u30C8 +Dictionary-Dynamic_SQL=\u52D5\u614BSQL +FR-Designer_Form-CheckBoxGroup=\u30D5\u30EC\u30FC\u30E0\u30BB\u30C3\u30C8\u3092\u8907\u6570\u9078\u629E +DBCP_TIME_BETWEEN_EVICTIONRUNSMILLIS=\u30A2\u30A4\u30C9\u30EB\u63A5\u7D9A\u30EA\u30B5\u30A4\u30AF\u30EB\u30E6\u30CB\u30C3\u30C8\u4F11\u7720\u6642\u9593 +ReportD-Export_Hided_Column=\u96A0\u3057\u305F\u5217\u3092\u5C0E\u51FA +Preference-Support_Undo=\u5143\u306B\u623B\u3057\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B +FR-mobile_report_analysis=\u5831\u544A\u66F8\u306E\u89E3\u6790 +Month=\u6708 +Utils-Column_Width=\u5217\u5E45 +Collect-Use_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u4F7F\u7528 +Widget-User_Defined_Editor=\u30D7\u30EC\u5B9A\u7FA9\u30A8\u30C7\u30A3\u30BF\u3067\u3059\u3002\u5F53\u8A72\u30A8\u30C7\u30A3\u30BF\u306F\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u7BA1\u7406\u30E1\u30CB\u30E5\u30FC +Unit_Ten_Thousand=\u4E07 +Data_Setting=\u30C7\u30FC\u30BF\u8A2D\u5B9A +ECP_input_pwd=\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\: +period=\u3002 +Note=\u6CE8 +Multiline=\u8907\u6570\u884C\u7DE8\u96C6 +Datasource-Convert_Charset=\u6587\u5B57\u30B3\u30FC\u30C9\u5909\u63DB +DashBoard-ConnectionList=\u30C7\u30FC\u30BF\u63A5\u7D9A +Utils-Submit_Forcibly=\u5F37\u884C\u63D0\u51FA +Parent_Marked_Field=\u89AA\u30BF\u30B0\u30D5\u30A3\u30FC\u30EB\u30C9 +Logout=\u9000\u51FA +FR-Designer_Show_Blank_Row=\u7A7A\u767D\u884C\u3092\u88DC\u5145 +FR-Base_Format=\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +FR-App-Export_png=PNG\u66F8\u5F0F +Delete_Column=\u5217\u524A\u9664 +SecondGraduationLine=\u5C0F\u3055\u306A\u76EE\u76DB\u308A +SpecifiedG-Groups=\u30B0\u30EB\u30FC\u30D7 +CONTINUUM_MODE=\u96A3\u63A5\u3057\u305F\u9023\u7D9A\u3057\u305F\u30D1\u30B1\u30C3\u30C8 +Datasource-Connection_failed=\u63A5\u7D9A\u5931\u6557 +CategoryName=\u30AB\u30C6\u30B4\u30EA\u30FC\u540D +DBCP_INITIAL_SIZE=\u63A5\u7D9A\u6570\u306E\u521D\u671F\u5316 +Colors=\u8272 +FR-Import-Export_CSV=CSV\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8(\u30B3\u30F3\u30DE\u3067\u5206\u5272) +FR-Designer-StyleAlignment_Left=\u5DE6\u5BC4\u305B +BackgroundTexture-PaperBag=\u7D19\u888B +RWA-BuildIn_SQL=\u5185\u8535SQL +SingleLayer=\u5358\u5C64 +Or-you=\u307E\u305F\u306F +FR-Designer_Certificate_Path=\u8A3C\u66F8\u30EB\u30FC\u30C8 +Utils-Last_Page=\u7D42\u4E86\u9801 +BarCodeD-Drawing_Text=\u30D0\u30FC\u30B3\u30FC\u30C9\u30C6\u30AD\u30B9\u30C8\u3092\u8868\u793A\u3059\u308B +Warning-Template_Do_Not_Exsit=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F\u5B58\u5728\u3057\u307E\u305B\u3093 +BindColumn-Group=\u30B0\u30EB\u30FC\u30D7\u5206\u3051 +Export-SVG=SVG\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +Plane3D=\u5E73\u97623D +SessionID=sessionID\u306F\u73FE\u5728\u306E\u30A2\u30AF\u30BB\u30B9\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u4F1A\u8A71\u30BF\u30B0\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3067\u3059\u3002 +FR-Designer_Height=\u9AD8\u3055 +HF-Odd_Page=\u5947\u6570\u30DA\u30FC\u30B8 +About-All_Rights_Reserved=\u5168\u3066\u306E\u6A29\u5229\u3092\u6240\u6709\u3057\u3066\u3044\u308B +Utils-Current_Cell=\u30AB\u30EC\u30F3\u30C8\u30BB\u30EB +Web_Preview_Message=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u3092\u73FE\u5728\u306E\u904B\u884C\u74B0\u5883\u306E\u76EE\u6B21\u4E0B\u306B\u4FDD\u5B58\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Hyperlink_Chart_Float=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u9023\u52D5\u30D5\u30ED\u30FC\u8981\u7D20 +Dic-Data_Query=\u30C7\u30FC\u30BF\u30AF\u30A8\u30EA\u30FC +CellWrite-Print_Content=\u30BB\u30EB\u306E\u4E2D\u8EAB\u3092\u5370\u5237\u3059\u308B +Privilege-Selected_None_Of_Any_Items=\u9805\u76EE\u3092\u3072\u3068\u3064\u3082\u9078\u629E\u3057\u3066\u3044\u307E\u305B\u3093 +FRFont-Size=\u30B5\u30A4\u30BA +Function-J2EE_server=J2EE_server +FR-Designer_Allow_Blank=\u7A7A\u6B04\u3042\u308A +Build_Tree_Accord_Parent_Marked_Filed=\u89AA\u30BF\u30B0\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u3001\u69CB\u7BC9\u3055\u308C\u305F\u30C4\u30EA\u30FC\u3092\u8A2D\u5B9A\u3057\u3001\u9078\u629E\u3057\u305F\u30C7\u30FC\u30BF\u306B\u4F9D\u5B58 +Preference-Horizontal_Scroll_Bar_Visible=\u6C34\u5E73\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u306F\u53EF\u8996 +Scope=\u30B9\u30B3\u30FC\u30D7 +Save_All_Records_In_Memory=\u5168\u3066\u306E\u8A18\u9332\u306F\u30E1\u30E2\u30EA\u306B\u4FDD\u5B58\u3055\u308C\u3066\u3044\u307E\u3059 +FreezeWarning1=\u521D\u671F\u5024\u306F\u6700\u7D42\u5024\u3088\u308A\u5927\u304D\u304F\u3042\u308A\u307E\u305B\u3093 +FlowLayout=\u30D5\u30ED\u30FC\u914D\u7F6E +M_Report-Report_Footer=\u5E33\u7968\u30D5\u30C3\u30BF\u30FC +FR-Action_Add=\u5897\u52A0 +BorderLayout-East=\u6771 +feedback_tip=\u4EE5\u4E0B400\u306E\u5358\u8A9E\u306E\u554F\u984C\u306E\u8AAC\u660E\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 +FS_Start_Date=\u958B\u59CB\u65E5\u671F +FR-ConditionB_Operator=\u6F14\u7B97\u5B50 +Printer-Alias=\u5225\u540D +DS-Class_Name=\u30AF\u30E9\u30B9\u540D +FR-Designer-Plugin_Has_Been_Disabled=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u4F7F\u7528\u304C\u7981\u6B62\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5 +Sort-Original=\u30BD\u30FC\u30C8\u3057\u306A\u3044 +Utils-Top_to_Bottom_a=\u4E0A\u304B\u3089\u4E0B\u3078 +Parameter-String=\u6587\u5B57\u5217 +InnerRadis=\u5185\u5F84\u306E\u5927\u304D\u3055 +Want_To_Cover_It=\u3053\u308C\u3092\u8986\u3044\u307E\u3059\u304B +Divided_stage=\u5206\u5272\u3055\u308C\u305F\u30B9\u30C6\u30FC\u30B8 +Seriously=\u53B3\u91CD +ReportServerP-PDF=PDF +Utils-Switch_To_Class_Reportlet=\u30D7\u30ED\u30B0\u30E9\u30E0\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u5E33\u7968\u306B\u5207\u308A\u66FF\u3048 +FR-Designer_Show_Blank_Column=\u7A7A\u767D\u5217\u3092\u88DC\u5145 +M_Edit-Redo=\u518D\u5B9F\u884C +Visibility=\u53EF\u8996\u6027 +Series_Use_Default=\u7CFB\u5217\u30C7\u30D5\u30A9\u30EB\u30C8\u4F7F\u7528 +Has_Selected=\u3082\u3046\u9078\u629E +BackgroundTexture-Walnut=\u30AF\u30EB\u30DF +FormulaD-Function_category=\u95A2\u6570\u30BF\u30A4\u30D7 +Interface=\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30A4\u30B9 +FR-Designer-Beyond_Bounds= +seconds=\u79D2 +Auto-Build=\u81EA\u52D5\u7684\u306B\u30D3\u30EB\u30C9 +FR-Designer-Plugin_Install_Successful=\u5F53\u8A72\u30D7\u30E9\u30B0\u30A4\u30F3\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC\u30D0\u30FC\u3092\u518D\u8D77\u52D5\u3059\u308B\u969B\u306B +Template_Path=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30EB\u30FC\u30C8 +FR-Designer-FRFont_Bold=\u592A\u304F\u3059\u308B +Poly_Name=\u805A\u5408\u30E2\u30B8\u30E5\u30FC\u30EB\u540D +WorkBook=\u30EF\u30FC\u30AF\u30D6\u30C3\u30AF +Hyperlink-Self_Window=\u73FE\u5728\u306E\u30A6\u30A3\u30F3\u30C9\u30A6 +FR-Designer-Widget-Style_Title=\u6A19\u984C +FR-Designer-FRFont_Size=\u5927\u304D\u3055 +M_File-Export-SVG=SVG +Capacity=\u5BB9\u91CF +Rose_Red=\u30ED\u30FC\u30BA\u30EC\u30C3\u30C9 +StyleAlignment-The_value_of_rotation_must_between_-90_and_90_degrees=\u56DE\u8EE2\u5024\u306F-90\u304B\u308990\u5EA6 +HF-Move_Left=\u5DE6\u3078\u79FB\u52D5\u3059\u308B +Cell_Group=\u30BB\u30EB\u7D44 +Week=\u5468 +PageSetup-Orientation=\u65B9\u5411 +M-Open_Recent=\u6700\u8FD1\u958B\u3044\u305F\u3082\u306E +NNormal=\u6B63\u5E38 +Integer=\u6574\u6570 +Select_The_Source_To_Save=\u8A18\u61B6\u3059\u308B\u9805\u76EE\u3092\u9078\u629E +Transition=\u5206\u679D +FR-Designer_Get_Lock=\u30ED\u30C3\u30AF +one_record_exists_in_many_groups=\u4E00\u3064\u306E\u8A18\u9332\u306F\u8907\u6570\u30B0\u30EB\u30FC\u30D7\u5185\u306B\u5B58\u5728\u53EF\u80FD +FR-Designer_Cover_None=\u5168\u3066\u8986\u308F\u306A\u3044 +DeciPart=\u5C0F\u6570\u90E8\u5206 +ExpandD-Up_Father_Cell=\u4E0A\u89AA\u30BB\u30EB +Deep=\u6DF1\u3055 +FRFont-Shadow=\u5F71 +Reportlet=\u30CD\u30C3\u30C8\u5E33\u7968 +Calendar=\u30AB\u30EC\u30F3\u30C0\u30FC +DateFormat-Custom_Warning=\u6CE8\uFF1A\u30AB\u30B9\u30BF\u30E0\u65E5\u6642\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u30B5\u30DD\u30FC\u30C8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u691C\u67FB +Unit_MM=\u30DF\u30EA\u30E1\u30FC\u30C8\u30EB +Server-Start=\u8D77\u52D5 +CellPage-Can_Break_On_Paginate=\u30DA\u30FC\u30B8\u30F3\u30B0\u304C\u5207\u65AD\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u305F\u3068\u304D +Build_Tree_Accord_Marked_Filed_Length=\u69CB\u7BC9\u30C4\u30EA\u30FC\u3092\u8A2D\u5B9A\u3057\u3001\u9078\u629E\u3057\u305F\u30C7\u30FC\u30BF\u306B\u4F9D\u5B58\u3057\u305F\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u9577\u3055\u3092\u30DE\u30FC\u30AF +ComboCheckBox-Start_Symbol=\u958B\u59CB\u6587\u5B57 +Real=\u5B9F\u969B +RWA-Batch_Modify_Cells=\u6279\u91CF\u4FEE\u6B63\u30BB\u30EB +FR-Designer_Build-Way=\u69CB\u7BC9\u65B9\u6CD5 +Read=\u8AAD\u307F\u53D6\u308A +StyleAlignment-Degrees=\u5EA6 +M_Format_A-Border=\u67A0(B) +Utils-Delete_Record=\u8A18\u9332\u524A\u9664 +Reload=\u518D\u30ED\u30FC\u30C9 +Image-Select_Picture=\u753B\u50CF\u3092\u9078\u629E +RWA-Submit=\u63D0\u51FA\u3059\u308B +the_template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 +FR-Designer_Component_Scale=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u30B9\u30B1\u30FC\u30EB +FRFont-italic=\u659C\u4F53 +Year=\u5E74 +HF-Move_Right=\u53F3\u3078\u79FB\u52D5\u3059\u308B +Data-Check=\u30C7\u30FC\u30BF\u7BA1\u7406\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +Unknown=\u672A\u77E5 +Submit_Style=\u63D0\u51FA\u65B9\u6CD5 +Left_Border_Line=\u5DE6\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 +Brown=\u30D6\u30E9\u30A6\u30F3 +Select_A_Tree_DataSource_To_Build=\u30C4\u30EA\u30FC\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u3092\u9078\u629E\u3057\u3066\u7D44\u307F\u7ACB\u3066\u3066\u304F\u3060\u3055\u3044 +Overlapping=\u91CD\u306D\u578B +DS-Class_TableData=\u30AF\u30E9\u30B9\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 +FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install=\u8B58\u5225\u4E0D\u80FD\u306A\u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u3059\u3002\u30A4\u30F3\u30B9 +DisplayNothingBeforeQuery=\u81EA\u52D5\u691C\u7D22\u7121\u3057 +Y_Axis=Y\u8EF8 +FormulaD-Most_Recently_Used=\u5E38\u7528\u95A2\u6570 +FormulaD-Input_formula_in_the_text_area_below=\u30C6\u30AD\u30B9\u30C8\u30DC\u30C3\u30AF\u30B9\u306B\u516C\u5F0F\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 +Build-Way=\u69CB\u7BC9\u65B9\u6CD5 +M_Edit-Undo=\u5143\u306B\u623B\u3059 +Line-Style=\u7DDA\u5F62 +Datasource-Other_Attributes=\u305D\u306E\u4ED6\u5C5E\u6027 +M_Server-Global_Parameters=\u30B0\u30ED\u30FC\u30D0\u30EB\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +Suffix=\u5F8C\u7F00 +Image-Image_Files=\u30A4\u30E1\u30FC\u30B8\u30D5\u30A1\u30A4\u30EB +EditRC-Entire_row=\u884C(R) +HF-First_Page=\u30C8\u30C3\u30D7\u30DA\u30FC\u30B8 +BackgroundTexture-Granite=\u307F\u304B\u3052\u77F3 +DataList=\u30C7\u30FC\u30BF\u30C1\u30A7\u30FC\u30F3 +Recursion=\u5E30\u7D0D +BarStyle=\u30B9\u30C8\u30EA\u30C3\u30D7 +FR-Designer-Min_Width= +Utils-Report-Env_Directory=\u5E33\u7968\u4F5C\u696D\u76EE\u6B21 +D-ChartArea=\u30B0\u30E9\u30D5\u30A8\u30EA\u30A2 +Only=\u305F\u3060 +FR-Base_No=\u3044\u3044\u3048 +SpecifiedG-Put_all_others_together=\u4ED6\u306E\u3059\u3079\u3066\u3092\u7D50\u5408\u3059\u308B +HF-NewLine_Des=\u4E0A\u306E\u79FB\u52D5\u3068\u524A\u9664\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u6539\u884C\u30B3\u30FC\u30C9\u3092\u64CD\u4F5C\u3059\u308B +WLayout-Border-ThreeContainer=\u5317\u3001\u897F\u3001\u4E09\u56FD\u5883\u306E\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u30FC\u3068\u5E45\u3092\u8ABF\u6574\u3059\u308B\u5FC5\u8981\u304C\u3042 +Parameter_Name=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u540D +FR-Base_Table=\u8868 +Des-Remove_WorkSheet=\u9078\u629E\u3059\u308B\u5E33\u7968\u306B\u306F\u30C7\u30FC\u30BF\u304C\u3042\u308B\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u304C\u3001\u5B8C\u5168\u306B\u524A\u9664\u3059\u308B\u5834\u5408\u3001 +Rotation=\u56DE\u8EE2 +Undefined=\u672A\u5B9A\u7FA9 +Support-Auto_Complete_Shortcut=\u81EA\u52D5\u3067\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC\u3092\u88DC\u3046 +Set_Column_Title_End=\u91CD\u8907\u3059\u308B\u7D42\u4E86\u5217\u3092\u8A2D\u5B9A +Submit_Url=\u30A2\u30C9\u30EC\u30B9\u63D0\u51FA +ReportServerP-Are_you_sure_to_delete_the_selected_printer=\u9078\u629E\u3055\u308C\u305F\u30D7\u30EA\u30F3\u30BF\u30FC\u3092\u524A\u9664\u3057\u3066 +long_data_can_not_show_fully=\u9577\u3044\u30C7\u30FC\u30BF\u304C\u5341\u5206\u306B\u767A\u63EE\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +Utils-Beyond_the_bottom_side_of_Border=\u4E0B\u9818\u57DF\u3092\u30AA\u30FC\u30D0\u30FC +FR-Import-Export_PDF=PDF\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +Form-CheckBoxGroup=\u30D5\u30EC\u30FC\u30E0\u30BB\u30C3\u30C8\u3092\u8907\u6570\u9078\u629E +Click-Me=\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u30B5\u30D7\u30E9\u30A4\u30BA\u304C\u3042\u308A\u307E\u3059\u3088\uFF01 +Hyperlink-Self=\u540C\u3058Frame(S) +Tree-Select_Leaf_Only_Tips=\u30C1\u30A7\u30C3\u30AF\u3057\u306A\u3044\u5834\u5408\u3001\u623B\u308A\u5024\u306F\u5F53\u30CE\u30FC\u30C9\u3060\u3051\u3002 +StyleAlignment-Text_Rotation=\u30C6\u30AD\u30B9\u30C8\u65B9\u5411 +Format-Error=\u5165\u529B\u3057\u305F\u5024\u306E\u66F8\u5F0F\u304C\u4E0D\u6B63\u78BA\u3067\u3059 +Server-Stop=\u4E00\u6642\u505C\u6B62 +Preference-Setting_Grid=\u30B0\u30EA\u30C3\u30C9\u8A2D\u5B9A +ReportServerP-Add_Printer=\u30D7\u30EA\u30F3\u30BF\u30FC\u8FFD\u52A0 +FR-Designer-Plugin_Active=\u4F7F\u7528\u958B\u59CB +Utils-File_name=\u30D5\u30A1\u30A4\u30EB\u540D +NOT_NULL_Des=\u3053\u3053\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +Right_Border_Line=\u53F3\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 +EditRC-Entire_column=\u5217(C) +PageSetup-Top_to_bottom=\u4E0A\u304B\u3089\u4E0B\u3078 +Click-Get_Default_URL=\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30C7\u30D5\u30A9\u30EB\u30C8\u306EURL\u3092\u53D6\u5F97 +StyleAlignment-Wrap_Text=\u81EA\u52D5\u6298\u308A\u8FD4\u3057 +Remove_All_Button=\u5168\u3066\u306E\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30A2 +FR-Designer_Component_Interval=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u9593\u9694 +ReportColumns-Columns_vertically=\u5782\u76F4\u65B9\u5411\u5217 +ReportGUI-Print_Background=\u5370\u5237\u80CC\u666F +Export-CSV=CSV (\u30AB\u30F3\u30DE\u533A\u5207\u308A) +M_Edit-Paste=\u8CBC\u308A\u4ED8\u3051(P) +FR-Designer-Basic_Restart_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u518D\u8D77\u52D5\u3059\u308B +ReportServerP-PDF2-INFO=LINUX/UNIX\u306B\u4E2D\u56FD\u8A9E\u30D5\u30A9\u30F3\u30C8\u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u305F\u6642\u306E\u307F\u4F7F\u7528 +FormulaD-Check_Valid=\u6709\u52B9\u6027\u30C1\u30A7\u30C3\u30AF +server_disconnected=\u5207\u65AD\u3055\u308C\u305F +ParameterD-Parameter_name_cannot_be_null=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u540D\u306F\u7A7A\u5024\u306B\u306A\u3063\u3066\u306F\u3044\u3051\u307E\u305B\u3093 +FR-Designer-Plugin_Version_Is_Lower_Than_Current=\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u30D1\u30C3\u30AF\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u30D0\u30FC\u30B8 +RWA-NotChange_Unmodified=\u306E\u6539\u6B63\u3092\u66F4\u65B0\u3057\u306A\u3044 +User_Information=\u30E6\u30FC\u30B6\u30FC\u60C5\u5831 +Custom_styles_lost=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u30B9\u30BF\u30A4\u30EB\u306F\u5931\u308F\u308C\u307E\u3057\u305F +PageSetup-Margin=\u4F59\u767D +M-New_FormBook=\u8868\u3092\u65B0\u898F\u4F5C\u6210 +Widget-TreeNode=\u30C4\u30EA\u30FC\u30CE\u30FC\u30C9\u30DC\u30BF\u30F3 +Form-Url=\u30A2\u30C9\u30EC\u30B9 +Utils-Beyond_the_left_side_of_Border=\u5DE6\u30DC\u30FC\u30C0\u30FC\u8D85\u3048 +Float_Element_Name=\u30D5\u30ED\u30FC\u3068\u8981\u7D20\u540D\u79F0 +Purple=\u8584\u7D2B +DashBoard-Potence=\u6A29\u9650 +M-Close_Template=\u5E33\u7968\u3092\u9589\u3058\u308B(C) +paper=\u7D19 +Not_Exsit=\u5E33\u7968\u306B\u5B58\u5728\u3057\u307E\u305B\u3093 +Utils-Insert_Row=\u884C\u633F\u5165 +Utils-Delete_Row=\u884C\u524A\u9664 +not_support_authority_edit=\u8BE5\u5143\u7D20\u4E0D\u652F\u6301\u6743\u9650\u63A7\u5236 +Formula_Tips=\u5F0F\u306F "\ +FR-Action_Copy=\u30B3\u30D4\u30FC +Compile_Success=\u7DE8\u96C6\u7FFB\u8A33\u306B\u6210\u529F\u3057\u307E\u3057\u305F +BackgroundTexture-RecycledPaper=\u518D\u751F\u7D19 +StyleAlignment-Single_Line=\u4E00\u884C\u3067\u8868\u793A +Utils-Move_Down=\u4E0B\u3078\u79FB\u52D5 +Please_Set_Repeat_First=\u307E\u305A\u91CD\u8907\u3059\u308B\u6A19\u984C\u884C\u3068\u5217\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044 +Writer-ShortCuts_Setting=\u5831\u544A\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC\u8A2D\u5B9A +Verify-Data_Verify=\u30C7\u30FC\u30BF\u691C\u8A3C +FR-mobile_analysis_style=\u89E3\u6790\u65B9\u5F0F +Confirm-Delete-File=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F +PageSetup-Header=\u30DA\u30FC\u30B8\u30D8\u30C3\u30C0 +JavaScrit-Asynch=\u975E\u540C\u671F +ReportServerP-Toolbar=\u30C4\u30FC\u30EB\u30D0\u30FC +Utils-Top_to_Bottom=\u7E26\u65B9\u5411 +Platform=\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0 +FR-Designer-FRFont_Underline=\u30A2\u30F3\u30C0\u30FC\u30E9\u30A4\u30F3 +Show_in_Containing_Folder=\u6240\u5728\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F +BackgroundTexture-WaterDroplets=\u3057\u305A\u304F +FR-Designer-Dependence_Install_Failed=install failed +Layout-Padding=\u30D1\u30C7\u30A3\u30F3\u30B0 +roles_already_authority_edited=\u69CB\u6210\u3055\u308C\u305F\u5F79\u5272 +WidgetDisplyPosition=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u8868\u793A\u4F4D\u7F6E +SpecifiedG-Force_Group=\u5F37\u5236\u7684\u306B\u30B0\u30EB\u30FC\u30D4\u30F3\u30B0\u3059\u308B +FormulaD-Formula_Definition=\u516C\u5F0F\u5B9A\u7FA9 +I-xyScatterStyle_Marker=\u6563\u5E03\u56F3 +Hour=\u6642\u9593 +ColorMatch=\u914D\u8272 +M_Edit-Order=\u9806\u5E8F(O) +BackgroundTexture-Bouquet=\u82B1\u675F +Verify-Error_Information=\u30A8\u30E9\u30FC\u60C5\u5831 +LayerData=\u5E95\u5C42\u6570\u636E +Rename=\u540D\u79F0\u306E\u5909\u66F4 +Widget-Load_By_Async=\u975E\u540C\u671F\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9 +Shape=\u56F3\u5F62 +BindColumn-This_Condition_has_been_existed=\u5F53\u8A72\u6761\u4EF6\u306F\u5B58\u5728\u3057\u3066\u3044\u307E\u3059 +NS-exception_readError=\u30A8\u30E9\u30FC\u30B3\u30FC\u30C9\:1305 \u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u89E3\u6790\u306B\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3057\u305F +Set_Column_Title_Start=\u91CD\u8907\u3059\u308B\u6A19\u984C\u5217\u3092\u8A2D\u5B9A +Fri=\u91D1 +M_Report-Report_Parameter=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +REPORTLETS=\u8907\u6570\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u30EB\u30FC\u30C8\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u306B\u30A2\u30AF\u30BB\u30B9 +WLayout-Card-ToolTip=\u30AB\u30FC\u30C9\u306E\u30EC\u30A4\u30A2\u30A6\u30C8\u306F\u3001\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u5185\u306E\u4ED6\u306E\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u6570 +M-Popup_ChartType=\u30B0\u30E9\u30D5\u30BF\u30A4\u30D7 +Please-Wait=\u5C11\u3005\u304A\u5F85\u3061\u304F\u3060\u3055\u3044 +FR-Designer-Form-ToolBar_Widget=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +Widget-Array=\u914D\u5217 +FieldBinding=\u30D0\u30F3\u30C7\u30A3\u30F3\u30B0\u30D5\u30A3\u30FC\u30EB\u30C9 +Top_Bottom_Border_Line=\u4E0A\u4E0B\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 +M-Others=\u305D\u306E\u4ED6... +Hyperlink-Link_Opened_in=\u30EA\u30F3\u30AF\u306E\u958B\u3051\u65B9 +FR-Utils_WorkBook=\u4F5C\u696D\u7C3F +M_Insert-Float=\u30D5\u30ED\u30FC\u30C8\u8981\u7D20 +Out_Thick_Border_Line=\u30DC\u30C3\u30AF\u30B9\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 +FR-App-File_Lookup_range=\u691C\u7D22\u7BC4\u56F2 +ReportColumns-Columns_to=\u306E\u3088\u3046\u306B\u6539\u5217\u3059\u308B +Transparent=\u900F\u660E +Parameter-Integer=\u6574\u6570\u578B +PDF-Print_Setting=PDF\u5370\u5237\u8A2D\u5B9A +Server-Embedded_Server=\u5185\u8535\u30B5\u30FC\u30D0\u30FC +M_Server-Server_Config_Manager=\u30B5\u30FC\u30D0\u30FC\u914D\u7F6E(S) +FR-Utils-Would_you_like_to_cover_the_current_file=\u30AB\u30EC\u30F3\u30C8\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B\uFF1F +CellWrite-InsertRow_COPY=\u5143\u306E\u5024 +Edit_String_To_Formula=\u30AD\u30E3\u30E9\u30AF\u30BF\u30FC\u6587\u5B57\u5217\u3092\u7DE8\u96C6\u3057\u3066\u516C\u5F0F\u3068\u3059\u308B\u304B\u5426\u304B +Edit-Column_Count=\u5217\u6570 +Father=\u89AA +ReportColumns-Columns_after=\u8D85\u3048\u308B +FR-Designer_Undo=\u3084\u308A\u76F4\u3059 +DBCP_MIN_IDLE=\u6700\u5C0F\u30A2\u30A4\u30C9\u30EB\u63A5\u7D9A\u6570 +M-Data_Analysis_Settings=\u30C7\u30FC\u30BF\u5206\u6790\u8A2D\u5B9A +M-Form_Preview=\u8868\u30D7\u30EC\u30D3\u30E5\u30FC +Form-Basic_Properties=\u57FA\u672C\u5C5E\u6027 +quote=\u5F15\u7528 +Thu=\u6728 +Collect-Collect_User_Information=\u30E6\u30FC\u30B6\u30FC\u60C5\u5831\u3092\u53CE\u96C6\u3059\u308B +Layer-Build=\u30D5\u30A1\u30BB\u30C3\u30C8\u7D44\u307F\u7ACB\u3066 +FR-Designer-FRFont_Line_Style=\u7DDA\u5F62 +BackgroundTexture-BrownMarble=\u8336\u8272\u306E\u5927\u7406\u77F3 +PageSetup-Page_Setup=\u30DA\u30FC\u30B8\u8A2D\u5B9A +Form-Semicolon=\u5206\u53F7 +ECP_re_input=\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u9593\u9055\u3063\u3066\u3044\u307E\u3059\u3002\u518D\u5EA6\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 +ExpandD-Sort_After_Expand=\u62E1\u5927\u5F8C +FR-Designer-Dependence_Install_Succeed=install succeed +Env-Configure_Workspace=\u4F5C\u696D\u76EE\u6B21\u8A2D\u5B9A +feedback_info=\u8CB4\u91CD\u306A\u610F\u898B\u3042\u308A\u304C\u3068\u3046\u3054\u3056\u3044\u307E\u3059\u3002\u79C1\u9054\u306F\u3067\u304D\u308B\u3060\u3051\u65E9\u304F\u3042\u306A\u305F\u3068\u9023\u7D61\u3057\u307E\u3059\u3002 +Ratio=\u6BD4\u7387 +DBCP_TEST_ON_BORROW=\u63A5\u7D9A\u524D\u691C\u67FB\u3092\u53D6\u5F97 +FR-Designer_layerIndex= +WEB-Write_Setting=\u5831\u544A\u30DA\u30FC\u30B8\u8A2D\u5B9A +M-New_WorkBook=\u30D6\u30C3\u30AF\u3092\u65B0\u898F\u4F5C\u6210 +FR-Designer-Plugin_Has_Been_Actived=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u3059\u3067\u306B\u8D77\u52D5\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC +Datasource-Maximum_Number_of_Preview_Rows=\u30D7\u30EC\u30D3\u30E5\u30FC\u884C\u6570\u6700\u5927\u5024 +ExpandD-Cell_Expand_Attributes=\u62E1\u5F35\u5C5E\u6027 +Select_the_repeated_row_and_column=\u91CD\u8907\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u884C\u5217\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 +FormulaD-Date_&_Time=\u65E5\u4ED8\u3068\u6642\u523B\u95A2\u6570 +Max-Mem-Row-Count=\u30AD\u30E3\u30C3\u30B7\u30E5\u306E\u78C1\u6C17\u30C7\u30A3\u30B9\u30AF\u8A18\u9332\u6570\u306F\u3000\u4EE5\u4E0A +BorderLayout-South=\u5357 +Export-Text=\u30C6\u30AD\u30B9\u30C8\u30D5\u30A1\u30A4\u30EB(\u30BF\u30D6\u533A\u5207\u308A) +JavaScript-Synch=\u540C\u671F +FR-App-All_Warning=\u8B66\u544A +M_Edit-Send_Backward=\u80CC\u9762\u3078\u79FB\u52D5(B) +Form-Layout=\u914D\u7F6E +FR-Designer-Plugin_Shop_Need_Update=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306F\u3001\u66F4\u65B0\u3059\u308B\u304B\u3069\u3046\u304B\u3001\u65B0\u3057\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u4FDD\u5B58\u3057\u307E\u3059\u304B\uFF1F +FR-Designer_WorkBook=\u30EF\u30FC\u30AF\u30D6\u30C3\u30AF +UpBarBorderStyleAndColor=\u30B9\u30B1\u30FC\u30EB\u30A2\u30C3\u30D7\u30AB\u30E9\u30E0\u30B9\u30BF\u30A4\u30EB +GridLayout=\u683C\u5B50\u914D\u7F6E +Utils-Default_Value=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024 +Widget-Comb_Widget_Config=\u7D44\u307F\u5408\u308F\u305B\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +Import-Excel2007_Source=Excel2007\u30EA\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB +Y-Coordinate=\u7E26\u5EA7\u6A19 +FR-Base_SimSun_Not_Found=\u5B8B\u4F53\u3092\u898B\u3064\u3051\u308B\u3053\u3068\u304C\u3067\u304D\u306A\u3044\u3001\u73FE\u5728\u306E\u30B7\u30B9\u30C6\u30E0\u306E\u4E0B\u3067\u30C7\u30D5\u30A9\u30EB\u30C8\u8A00\u8A9E\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u8BBE\u8BA1\u5668\u30D5\u30A9\u30F3\u30C8\u3068\u3057\u3066 +FR-Designer_Seriously=\u53B3\u91CD +Upload=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9 +Form-Widget_Property_Table=\u5C5E\u6027\u8868 +Des-Merger_Cell=\u9078\u629E\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u306F\u8907\u6570\u306E\u30C7\u30FC\u30BF\u304C\u542B\u307F\u3001\u30BB\u30EB\u3092\u7D50\u5408\u3057\u305F\u3089\u3001\u5DE6\u4E0A\u5074\u306E\u30C7 +FR-Designer-Basic_Copy_Build_NO=\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u7D44\u307F\u7ACB\u3066\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3092\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9 +FR-Base_TurnOn=\u8D77\u52D5 +FR-Base_Rows=\u884C +Form-Remove_Repeat=\u91CD\u8907\u3059\u308B\u9805\u76EE\u3092\u524A\u9664 +Yes=\u306F\u3044 +Datasource-JNDI_Name=JNDI\u540D +Utils-Delete_Column=\u5217\u524A\u9664 +HF-Delete_it=\u524A\u9664 +JavaScript-Dynamic_Parameters=\u52D5\u614B\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +px=\u753B\u7D20 +FR-App-Report_Template=\u5E33\u7968\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 +Verify-Message=\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8 +Plan=\u30D7\u30E9\u30F3 +Vertical-Split_Layout=\u5782\u76F4\u5206\u5272\u914D\u7F6E +ParameterD-Delay_Playing=\u5831\u544A\u8868\u306E\u5C55\u793A\u3092\u5EF6\u671F\u3057\u307E\u3059 +TurnOff=\u9589\u3058\u308B +FR-Please_Rename=\u518D\u5EA6\u547D\u540D\u3057\u3066\u304F\u3060\u3055\u3044 +Select_Data_Set=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u3092\u9078\u629E +Name_has_Colon=\u540D\u524D\: +ReportColumns-Columns_horizontally=\u6C34\u5E73\u65B9\u5411\u5217 +FR-Base_Yes=\u306F\u3044 +ReportColumns-Repeat_Row=\u884C\u756A\u53F7\u306E\u7E70\u308A\u8FD4\u3057 +Print_Setting=\u5370\u5237\u8A2D\u5B9A +Registration-User_Name=\u30E6\u30FC\u30B6\u540D +Datasource-User_Defined=\u30E6\u30FC\u30B6\u5B9A\u7FA9 +FR-Designer-Plugin_DownLoadMessage= +Delay=\u9045\u5EF6 +FR-Designer-All_MSBold=\u5FAE\u8EDF\u96C5\u9ED2 +Utils-Now_create_connection=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u3078\u306E\u63A5\u7D9A +FR-Template-Path_chooseRightPath=\u6B63\u78BA\u306A\u30EB\u30FC\u30C8\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Remote_Re_Connect_to_Server=\u30B5\u30FC\u30D0\u30FC\u306F\u9589\u3058\u3089\u308C\u307E\u3057\u305F\u3002\u518D\u5EA6\u30B5\u30FC\u30D0\u30FC\u306B\u63A5\u7D9A\u3057\u307E\u3059\u304B? +Nation=\u56FD\u5BB6 +DBCP_MAX_WAIT=\u6700\u5927\u5F85\u3061\u6642\u9593 +FR-App-Template_Form=\u8868 +Address=\u30A2\u30C9\u30EC\u30B9 +Sub_Report=\u5B50\u5E33\u7968 +FR-Import-Export_Word=Word\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +FR-Server_Version_Tip=\u73FE\u5728\u306E\u63A5\u7D9A\u3057\u3066\u3044\u308B\u30B5\u30FC\u30D0\u30FC\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u4F7F\u7528\u3057\u3066\u3044\u308B\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u30D0 +StyleAlignment-Left_To_Right=\u5DE6\u304B\u3089\u53F3\u3078 +Verify-ToolTips=\u516C\u5F0F\u304C\u63D0\u793A\u6821\u9A8C\u3082\u6E80\u8DB3\u3057\u3066\u3044\u306A\u3044\u8BEF\u308A\u304C\u60C5\u5831\u3092\u624B\u306B\u5165\u308C\u305F +BackgroundTexture-Stationery=\u4FBF\u7B8B +FR-Designer_RWA-Help=\u8A2D\u5B9A\u3092\u672A\u4FEE\u6B63\u3067\u66F4\u65B0\u305B\u305A\u3001\u30D7\u30EC\u30D3\u30E5\u30FC\u3057\u305F\u5E33\u7968\u3092\u5831\u544A\u3057\u3001\u30BB\u30EB\u306B\u8A18\u9332\u3055\u308C +M_Insert-Barcode=\u30D0\u30FC\u30B3\u30FC\u30C9 +Bounds=\u30DC\u30FC\u30C0\u30FC +FR-Designer-Undo_All_Authority_Operations=\u524D\u56DE\u306E\u6A29\u9650\u7DE8\u96C6\u6642\u306E\u5168\u3066\u306E\u30AA\u30DA\u30EC\u30FC\u30B7\u30E7\u30F3\u3092\u64A4\u56DE\u3059 +Datasource-Context=\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8 +CellWrite-Page_After_Column=\u5217\u5F8C\u306E\u6539\u9801 +FR-Designer_Cancel=\u30AD\u30E3\u30F3\u30BB\u30EB +Button-Group-Display-Columns=\u5217\u306E\u6570\u3092\u8868\u793A\u3059\u308B +Widget-Height=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u9AD8\u3055 +Examples=\u4F8B +Formula_Dictionary_Display_Example=\u5B9F\u969B\u5024\u7BC4\u56F2\u306F\ +StyleAlignment-Horizontal=\u6C34\u5E73\u63C3\u3048 +HyperLink_Must_Alone_Reset=\u8907\u6570\u306E\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF +ExpandD-Expand_Direction=\u62E1\u5F35\u65B9\u5411 +Include=\u542B\u3080 +Export-Excel-Page=\u30DA\u30FC\u30B8 +FR-Designer-Min_Height=\u6700\u5C0F\u9AD8\u3055 +Filed=\u30A8\u30EA\u30A2 +ReportServerP-Import_Css=Css\u5F15\u7528 +M_Insert-Formula=\u516C\u5F0F +FR-Designer_Auto-Build=\u81EA\u52D5\u7684\u306B\u30D3\u30EB\u30C9 +FRFont-Foreground=\u8272 +Bubble-Width=\u30D0\u30D6\u30EB\u306E\u5E45 +Form-Hierarchy_Tree=\u69CB\u9020\u30C4\u30EA\u30FC +WLayout-Border-LayoutContainer=\u4E2D\u90E8\u3068\u5317\u90E82\u30DC\u30FC\u30C0\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u3068\u5317\u90E8\u30D6\u30ED\u30C3\u30AF\u3092\u542B\u3081 +Preference-JDK_Home=JDK\u30D1\u30B9 +Utils-Insert_Column=\u5217\u633F\u5165 +FR-Designer_ToolBar_Top=\u30D8\u30C3\u30C0\u30FC\u30C4\u30FC\u30EB\u30D0\u30FC +BindColumn-The_Conditions_of_FatherCell=\u89AA\u30BB\u30EB\u6761\u4EF6 +Links=\u30EA\u30F3\u30AF +M_Report-Report_Header=\u5E33\u7968\u30D8\u30C3\u30C0\u30FC +Sub_Report_Description=\u5B50\u5E33\u7968\u306F\u89AA\u8868\u904B\u884C\u74B0\u5883\u4E0B\u306B\u5B58\u5728\u3057\u306A\u3051\u308C\u3070\u306A\u3089\u305A\u3001\u4E21\u8005\u306F\u540C\u4E00\u30C6\u30F3\u30D7\u30EC +T_Insert-Float=\u30D5\u30ED\u30FC\u8981\u7D20\u3092\u633F\u5165 +BackgroundTexture-FishFossil=\u9B5A\u5316\u77F3 +My_Computer=\u30DE\u30A4 \u30B3\u30F3\u30D4\u30E5\u30FC\u30BF +FORMLET=\u7570\u306A\u308B\u8868\u306E\u30EB\u30FC\u30C8\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u306B\u30A2\u30AF\u30BB\u30B9 +HF-Undefined=\u672A\u5B9A\u7FA9 +Widget-User_Defined_Widget_Config=\u30D7\u30EC\u5B9A\u7FA9\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +Report-Write_Attributes_Group_Warning=\u8A2D\u5B9A\u3092\u30AD\u30FC?\u30C1\u30FC\u30E0\u306E\u5404\u30B3\u30E9\u30E0\u306E\u4E2D\u306E\u30AD\u30FC\u4E2A\u6570\u306F\u540C\u3058\u3067 +Form-Single_quote=\u30B7\u30F3\u30B0\u30EB\u30AF\u30A9\u30FC\u30C6\u30FC\u30B7\u30E7\u30F3\u30DE\u30FC\u30AF +Compile_Success_And_Then_Save=\u7DE8\u96C6\u7FFB\u8A33\u6210\u529F\u5F8C\u306B\u4FDD\u5B58\u3067\u304D\u307E\u3059 +FR-Designer_Layout-Padding=\u30D1\u30C7\u30A3\u30F3\u30B0 +Layout_Container=\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA +Admin=\u7BA1\u7406\u8005 +Form-EC_toolbar=\u5E33\u7968\u30E2\u30B8\u30E5\u30FC\u30EB\u30C4\u30FC\u30EB\u30D0\u30FC +FR-App-All_Auto=\u81EA\u52D5 +Utils-Available_Columns=\u9078\u629E\u53EF\u80FD\u306E\u5217 +Form-Change_Widget_Name_Discription=\u65B0\u3057\u3044\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Module_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u30E2\u30B8\u30E5\u30FC\u30EB +FR-Import-Export_Text=\u6587\u66F8\u30D5\u30A1\u30A4\u30EB(\u30BF\u30D6\u6587\u5B57\u5206\u9694) +Values-Editor=\u5024\u30A8\u30C7\u30A3\u30BF +FR-Designer_Yes=\u306F\u3044 +ExpandD-Expandable=\u62E1\u5F35\u6027 +Tree-Return_Full_Path=\u7D50\u679C\u306F\u5B8C\u5168\u306A\u30D1\u30B9\u3092\u623B\u308A\u307E\u3059 +FRFont-bolditalic=\u592A\u5B57\u659C\u4F53 +FR-Base_StyleFormat_Sample=\u4F8B +Area_Value=\u5730\u57DF\u5024 +FR-Designer-Plugin_Disable=\u4F7F\u7528\u7981\u6B62 +Utils-Are_you_sure_to_remove_the_selected_item=\u9078\u629E\u3055\u308C\u305F\u9805\u76EE\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B +Face_Write=\u5831\u544A +Poly-Report_Block=\u5E33\u7968\u30BF\u30A4\u30D7\u805A\u5408\u30E2\u30B8\u30E5\u30FC\u30EB +Vgap=\u5782\u76F4\u9593\u9699 +FR-Designer_HyperLink_Must_Alone_Reset=\u8907\u6570\u306E\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF +DS-Class=\u30D7\u30ED\u30B0\u30E9\u30E0 +FR-Hyperlink_Please_Select_Reportlet=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u5E33\u7968\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 +FS_Report_Type=\u30BF\u30A4\u30D7 +HF-New_Line=\u6539\u884C\u30B3\u30FC\u30C9 +Privilege=\u6A29\u9650 +Export-Offline-Html=\u30AA\u30D5\u30E9\u30A4\u30F3html\u5E33\u7968\u51FA\u529B +FR-Designer_open-new-form-tip=711\u4EE5\u4E0B\u306E\u751F\u7523\u306E\u305F\u3081\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u73FE\u5728\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u3001\u4E92 +FR-Designer-Widget-Style_Frame_Style=\u30D5\u30EC\u30FC\u30E0\u30B9\u30BF\u30A4\u30EB +Present-No_Present=\u30D5\u30A9\u30EB\u30E0\u8A2D\u5B9A\u3092\u30AD\u30E3\u30F3\u30BB\u30EB +FR-Designer_Form-Password=\u30D1\u30B9\u30EF\u30FC\u30C9 +X_Axis=X\u8EF8 +FR-mobile_html_analysis=HTML5\u89E3\u6790 +M_Edit-Bring_to_Front=\u6700\u524D\u9762\u3078\u79FB\u52D5(T) +Null_Value_Show=\u7A7A\u5024\u8868\u793A +Datasource-JNDI_DES=\u6CE8\: INITIAL_CONTEXT_FACTORY\u304C\u542B\u3080\u30AF\u30E9\u30B9\u306E.jar\u30D5\u30A1\u30A4\u30EB\u3092lib\u306B\u30B3\u30D4\u30FC +PrintP-Print_Preview=\u5370\u5237\u30D7\u30EC\u30D3\u30E5\u30FC +Form-Hierarchy_Tree_Last=\u524D +Has_been_gone=\ \u5931\u308F\u308C\u307E\u3057\u305F\u3002\u5F53\u8A72\u30B9\u30BF\u30A4\u30EB\u3092\u5897\u52A0\u3057\u307E\u3059\u304B\uFF1F +RWA-Add_Field=\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u8FFD\u52A0 +newNode=\u30CE\u30FC\u30C9\u306E\u8FFD\u52A0 +PageSetup-Shrink_to_fit_content=\u30BB\u30EB\u5185\u5BB9\u306B\u3082\u3068\u3065\u3044\u3066\u81EA\u52D5\u8C03\u6574 +FR-Designer_Date=\u65E5\u4ED8 +Column_Multiple=\u30C7\u30FC\u30BF\u500D\u6570 +FR-App-All_File=\u30D5\u30A1\u30A4\u30EB +Sort-Descending=\u964D\u9806 +FR-Designer-Plugin_Delete=\u524A\u9664 +Above=\u4E0A\u8A18\u306E +Utils-The-Chart=\u30B0\u30E9\u30D5 +FRFont-plain=\u6A19\u6E96 +Calculating=\u51E6\u7406\u4E2D +Form-Object=\u30D5\u30A9\u30FC\u30E0\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 +May=\u4E94\u6708 +FR-Designer_Plugin_Normal_Update=\u66F4\u65B0 +FR-Hyperlink_Reportlet=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u5E33\u7968 +M_Edit-Copy=\u30B3\u30D4\u30FC(C) +Sub_Report_Message2=\u89AA\u5E33\u7968\u306F\u73FE\u5728\u306E\u904B\u884C\u74B0\u5883\u4E0B\u306B\u5B58\u5728\u3057\u307E\u305B\u3093 +Sub_Report_Message3=\u81EA\u8EAB\u3092\u9078\u629E\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +Sub_Report_Message1=\u6B63\u78BA\u306A\u30EB\u30FC\u30C8\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 +Form-Allow_CustomData=\u30AB\u30B9\u30BF\u30DE\u3042\u308A +FR-Server_Version_Tip_MoreInfo=\u6240\u5C5E\u3059\u308B\u30B0\u30EB\u30FC\u30D7\u304C\u4F7F\u7528\u3059\u308BFineReport\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u30D0\u30FC\u30B8 +FR-Designer_Server-version-tip-moreInfo=\u79C1\u305F\u3061\u306E\u88FD\u54C1\u306EFineReport Designer\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7 +Get_Lock=\u30ED\u30C3\u30AF +HF-Edit_Footer=\u30D5\u30C3\u30BF\u30FC\u7DE8\u96C6 +Datasource-New_Charset=\u65B0\u6587\u5B57\u30B3\u30FC\u30C9 +Preference-Custom=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA +BackgroundTexture-Newsprint=\u65B0\u805E\u7528\u7D19 +ConditionB-Add_bracket=\u62EC\u5F27\u3092\u8FFD\u52A0\u3059\u308B +Datasource-Connection_successfully=\u63A5\u7D9A\u6210\u529F +Function-The_class_must_implement_the_interface=\u5F53\u8A72\u30AF\u30E9\u30B9\u306F\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30FC\u30B9\u304B\u3089\u30A4\u30F3\u30D7\u30EC +FR-Designer_ChartF-Transparency=\u900F\u660E +Crimson=\u771F\u7D05 +FR-Hyperlink_Dialog=\u5BFE\u8A71\u30A6\u30A3\u30F3\u30C9\u30A6 +FR-Designer_Covered_All=\u5168\u3066\u8986\u3046 +Hyperlink-New_Window=\u65B0\u30A6\u30A3\u30F3\u30C9\u30A6 +Style_Name=\u66F8\u5F0F\u540D +CSS_warning= \u305D\u306E\u3088\u3046\u306AWebReport\\ CSS\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9CSS\u30D5\u30A1\u30A4\u30EB\u304C\u5B58\u5728test.css\u306F\u3001css / test.css\u306E\u76F8\u5BFE\u30D1\u30B9\u3068\u3057\u3066
 \u6BD4\u8F03\u7684\u6587\u5DE5\u5B66\u30C7\u30A3\u30EC\u30AF\u30C8\u30EAWebReport\u3001 +FR-Base_Column=\u5217 +Three_Rows_Of_Two_Grid=2\u683C\u5B50\u306E3\u3064\u306E\u884C +DBCP_VALIDATION_QUERY=SQL\u8A8D\u8A3C\u30AF\u30A8\u30EA +M_Edit-Clear_Formats=\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8(F) +Parameter_Setting=\u30D1\u30E9\u30E1\u30FC\u30BF\u8A2D\u5B9A +Related=\u9023\u52D5 +BorderLayout-Constraints=\u5834\u6240 +Write_Preview=\u5831\u544A\u30D7\u30EC\u30D3\u30E5\u30FC +PageSetup-Page_Order=\u5370\u5237\u9806 +Verify-Verify_Formula=\u691C\u8A3C\u5F0F +State=\u7701\u5E02 +FR-Designer-Widget-Style_Body_Background=\u30E1\u30A4\u30F3\u80CC\u666F +FR-App-Privilege_No=\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093 +Please_Drag_ParaPane= +Come_True=\u5B9F\u73FE +ISEMPTY=\u7A7A\u6B04 +Background-Texture=\u30C6\u30AF\u30B9\u30C1\u30E3 +FR-Designer_Verify-Message=\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8 +Locked=\uFF08\u30ED\u30C3\u30AF\u6E08\u307F\uFF09 +Utils-Design-Action_Cancel=\u30AD\u30E3\u30F3\u30BB\u30EB +Image-Titled=\u5C55\u958B +Gradient-Direction=\u65B9\u5411\u3092\u5F90\u3005\u306B\u5909\u5316 +Green=\u6DF1\u7DD1 +Report_Engine=\u5E33\u7968\u30A8\u30F3\u30B8\u30F3 +Return-String=\u30AD\u30E3\u30E9\u30AF\u30BF\u30FC\u6587\u5B57\u5217\u306B\u623B\u308B +Margin=\u30DE\u30FC\u30B8\u30F3 +Pitch_Percentage=\u30D4\u30C3\u30C1\u306E\u5272\u5408 +FR-Base_TurnOff=\u9589\u3058\u308B +Utils-has_been_existed=\u65E2\u5B58 +HF-Insert_Formula=\u516C\u5F0F\u3092\u633F\u5165 +Utils-Exit_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u7D42\u4E86\u3059\u308B +Formula_Dictionary_Display=\u4E0A\u306E\u5B9F\u969B\u5024\u7BC4\u56F2\u5185\u306E\u3044\u305A\u308C\u306E\u5024($$$)\u306F\u3001\u305D\u306E\u8868\u793A\u5024\u306F +PageSetup-Left_to_right=\u5DE6\u304B\u3089\u53F3\u3078 +Utils-Import_Excel_Data=\u300CExcel]\u30A4\u30F3\u30D7\u30C3\u30C8 +M-Save=\u4FDD\u5B58 +redo=\u3082\u3046\u4E00\u5EA6\u3059\u308B +Status=\u72B6\u614B +Draw=\u5236\u4F5C +FR-Designer_Message=\u30E1\u30C3\u30BB\u30FC\u30B8 +Records=\u3064\u306E\u8A18\u9332 +FR-Designer_ComboBox=\u30B3\u30F3\u30DC\u30DC\u30C3\u30AF\u30B9 +Driver=\u30C9\u30E9\u30A4\u30D0\u30FC +Template_Parameters=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +Form-Remove_Repeat_Data=\u91CD\u8907\u3059\u308B\u30C7\u30FC\u30BF\u3092\u524A\u9664 +ECP_decode=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30A2\u30F3\u30ED\u30C3\u30AF +Area_Name=\u5730\u57DF\u540D +Others=\u305D\u306E\u4ED6 +Merge=\u5408\u4F75\u3059\u308B +BackgroundTexture-Parchment=\u7F8A\u76AE\u7D19 +BindColumn-Bottom_N=\u5F8C\u306EN\u500B +Frame=\u30D5\u30EC\u30FC\u30E0 +Bottom_Border_Line=\u30DC\u30C8\u30E0\u30DC\u30FC\u30C0\u30FC +Muiti_In=\u591A\u5C64\u53D6\u308A\u30EA\u30F3\u30B0 +FR-Designer-Dependence_Install_Online=install online +Use_Default_ToolBar=\u30C7\u30D5\u30A9\u30EB\u30C8\u30C4\u30FC\u30EB\u30D0\u30FC\u4F7F\u7528 +M_Server-Platform_Manager=\u5E33\u7968\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u7BA1\u7406 +PageSetup-inches=\u30A4\u30F3\u30C1 +Form-Widget_Property=\u5C5E\u6027\u540D +FR-Layout_Padding=\u5185\u30DE\u30FC\u30B8\u30F3 +Schema=\u30B9\u30AD\u30FC\u30DE +Server_Path=\u30DB\u30B9\u30C8\u30B3\u30F3\u30D4\u30E5\u30FC\u30BF\u4F4D\u7F6E +Condition_Display=\u6761\u4EF6\u8868\u793A +FR-Server-Design_template_unopened=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +Function-Function_Class_Name=\u95A2\u6570\u30AF\u30E9\u30B9\u540D +Schedule-Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u540D +Tree_Data_Field=\u30C4\u30EA\u30FC\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9 +Border-Style-Normal=\u76F4\u89D2\u306E\u56FD\u5883\u306B +Top_And_Double_Bottom_Border_Line=\u4E0A\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3\u3068\u53CC\u4E0B\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 +FR-Server_Embedded_Server_Start=\u5185\u8535\u30B5\u30FC\u30D0\u30FC-\u958B\u304F +FR-Designer-Basic_Restart_Designer_Later=\u5F8C\u3067\u518D\u8D77\u52D5\u3059\u308B +StyleAlignment-Top=\u4E0A\u8A70\u3081 +ReportServerP-First=\u30C8\u30C3\u30D7\u30DA\u30FC\u30B8 +Not_Exist=\u5B58\u5728\u3057\u306A\u3044 +FR-Remote_File_is_Locked=\u958B\u3053\u3046\u3068\u3057\u3066\u3044\u308B\u5E33\u7968\u306F\u73FE\u5728\u4ED6\u306E\u4EBA\u304C\u7DE8\u96C6\u3057\u3066\u3044\u307E\u3059\u3002\u5C11\u3057\u5F85\u3063\u3066\u304B +Apply=\u30A2\u30D7\u30EA +Sytle-Indentation=\u30A4\u30F3\u30C7\u30F3\u30C8 +Parameter-Float=\u5358\u7CBE\u5EA6\u6D6E\u52D5\u5C0F\u6570\u70B9\u6570\u578B +HF-Center_Section=\u4E2D\u592E\u30BB\u30AF\u30B7\u30E7\u30F3 +Form-Double_quotes=\u30C0\u30D6\u30EB\u30AF\u30AA\u30FC\u30C6\u30FC\u30B7\u30E7\u30F3\u30DE\u30FC\u30AF +M_File-Export-Word=Word +M_File-Export-Text=\u30C6\u30AD\u30B9\u30C8\u30D5\u30A1\u30A4\u30EB(\u30BF\u30D6\u533A\u5207\u308A)(T) +PageSetup-First_Page_Number=\u30B9\u30BF\u30FC\u30C8\u306E\u30DA\u30FC\u30B8\u756A\u53F7 +Execute=\u5B9F\u884C +Task=\u30BF\u30B9\u30AF +Custom_Button_Type_Submit=\u63D0\u51FA +FR-Designer-Widget_Settings=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u8A2D\u5B9A +IS_Need_Password=\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u5FC5\u8981\u3067\u3059 +PageSetup-Horizontally=\u6C34\u5E73\u4E2D\u592E\u63C3\u3048 +No_Editor_Property_Definition=\u5F53\u8A72\u30A8\u30C7\u30A3\u30BF\u306F\u5C5E\u6027\u5B9A\u7FA9\u304C\u3042\u308A\u307E\u305B\u3093 +Env-Remote_Server=\u30EA\u30E2\u30FC\u30C8\u30B5\u30FC\u30D0\u30FC +FR-Utils_Background=\u80CC\u666F +FR-Designer-Plugin_Warning=\u8B66\u544A +Server-version-info=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u306F\u3001\u5F8C\u3067\u8A2D\u8A08\u3084\u5143\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5C5E\u6027\u3092\u5931\u3046\u30EA\u30B9\u30AF\u306B +CellWrite-Page_After_Row=\u884C\u5F8C\u306E\u6539\u9801 +HF-Right_Section=\u53F3\u5074\u30BB\u30AF\u30B7\u30E7\u30F3 +PageSetup-Title_Start_Row=\u91CD\u8907\u3059\u308B\u6A19\u984C\u884C +From=\u7B2C\u3000\u304B\u3089 +Preference-Grid_Line_Color=\u30B0\u30EA\u30C3\u30C9\u7DDA\u306E\u8272 +RowTo=\u884C\u304B\u3089\u7B2C\u307E\u3067 +FR-Designer_ReportColumns-Repeat_Column=\u5217\u9806\u5E8F\u3092\u30B3\u30D4\u30FC +M_Server-Function_Manager=\u95A2\u6570\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC +KeyWord=\u30AD\u30FC\u30EF\u30FC\u30C9 +DS-Multi_Dimensional_Database=\u591A\u6B21\u5143\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 +BiasD-Slope_Line=\u659C\u7DDA +Tue=\u706B +ReportServerP-Last=\u7D42\u4E86\u9801 +FR-Base_Columns=\u5217 +SpecifiedG-Leave_in_their_own_groups=\u5404\u30B0\u30EB\u30FC\u30D7\u5185\u306B\u4FDD\u7559\u3059\u308B +LOG-Please_Wait=\u5C11\u3005\u304A\u5F85\u3061\u304F\u3060\u3055\u3044 +Form-ToolBar=\u8868\u30C4\u30FC\u30EB\u30D0\u30FC +FR-Base_sure_remove_item=\u672C\u5F53\u306B\u9078\u629E\u3057\u305F\u9805\u76EE\u3092\u524A\u9664\u3057\u307E\u3059\u304B +Component_Scale=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u30B9\u30B1\u30FC\u30EB +Hyperlink-Use_CJK_to_encode_parameter=CJK\u51E6\u7406\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u4F7F\u7528 +LOG-Has_Been_Openned=\u958B\u304D\u307E\u3057\u305F +FR-Designer-Dependence= +ECP_error_pwd=\u30D1\u30B9\u30EF\u30FC\u30C9\u30A8\u30E9\u30FC +REPORTLET=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u30EB\u30FC\u30C8\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u306B\u30A2\u30AF\u30BB\u30B9 +RWA-Column_Offset=\u5217\u30AA\u30D5\u30BB\u30C3\u30C8 +Forecast=\u4E88\u6E2C +Light_Orange=\u660E\u308B\u3044\u30AA\u30EC\u30F3\u30B8 +StyleAlignment-Vertical=\u5782\u76F4\u63C3\u3048 +Form-List=\u30EA\u30B9\u30C8 +ParameterD-Show_Parameter_Window=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u30A6\u30A4\u30F3\u30C9\u30A6\u3092\u8868\u793A\u3059\u308B +FR-Designer_Set_Submit_Event=\u63D0\u51FA\u4E8B\u4EF6\u3092\u8A2D\u5B9A +Value_Percent=\u5024\u5272\u5408\u4F8B +DBCP_MIN_EVICTABLE_IDLE_TIMEMILLIS=\u30A2\u30A4\u30C9\u30EB\u6700\u5C0F\u6642\u9593\u5024\u4FDD\u6301 +Function-The_class_must_be_located_in=\u5F53\u8A72\u30AF\u30E9\u30B9\u306F\u5B58\u5728\u3057\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093 +FR-Action_Sort=\u30BD\u30FC\u30C8 +DataFunction-Average=\u5E73\u5747 +FR-Designer_Show_in_Containing_Folder=\u6240\u5728\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F +M_File-Export-Excel=Excel +DataFunction-Max=\u6700\u5927\u5024 +FR-Designer_Form-Widget_Name=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u540D +FS_End_Date=\u7D42\u4E86\u65E5\u671F +Export-Excel-Simple=\u5143 +ColumnTo=\u5217\u306F\u7B2C\u3000\u307E\u3067 +SpecifiedG-Discard_all_others=\u4ED6\u306E\u3059\u3079\u3066\u3092\u7834\u68C4\u3059\u308B +DS-TableData=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 +Form-DataTable=\u30C7\u30FC\u30BF\u8868 +Sub_Report_ToolTips=\u5B50\u5E33\u7968\u63D0\u793A +Right_Top=\u53F3\u4E0A +M_Edit-Merge_Cell=\u30BB\u30EB\u3092\u7D50\u5408\u3059\u308B +FR-Designer_Restore_Default=\u30C7\u30D5\u30A9\u30EB\u30C8\u5FA9\u5143 +Component_Interval=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u9593\u9694 +Cover_None=\u5168\u3066\u8986\u308F\u306A\u3044 +Datasource-From_Database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u304B\u3089 +Folder=\u76EE\u6B21 +Form-Allow_Edit=\u76F4\u63A5\u7DE8\u96C6\u3042\u308A +M_Edit-Clear=\u30AF\u30EA\u30A2(A) +ParentCell_Setting=\u89AA\u30BB\u30EB\u8A2D\u5B9A +Only_selected_cell_can_paste_only=\u30BB\u30EB\u306F\u8CBC\u308A\u4ED8\u3051\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u9078\u629E\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u306B\u306E\u307F +M_Report-Report_Columns=\u5E33\u7968\u30B3\u30E9\u30E0 +Unit_Hundred=\u767E +FR-Designer_DataTable-Build= +Widget-Form_Widget_Config=\u8868\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +Server-version-tip-moreInfo=\u79C1\u305F\u3061\u306E\u88FD\u54C1\u306EFineReport Designer\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3060\u3051\u3067\u306A\u304F\u3001 +Actions=\u30A2\u30AF\u30B7\u30E7\u30F3 +FR-Designer-Dependence_Connect_Server_Error=connect error +High=\u9AD8 +HJS-Send_Failed=\u9001\u4FE1\u5931\u6557 +HJS-Message=\u30E1\u30C3\u30BB\u30FC\u30B8\u5185\u5BB9 +File-Allow_Upload_Files=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u304C\u8A31\u53EF\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u30BF\u30A4\u30D7 +FR-Designer-Form-ToolBar_Chart=\u30B0\u30E9\u30D5 +Thick_Bottom_Border_Line=\u7C97\u5E95\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 +FR-Action_Remove=\u524A\u9664 +FRFont-Style=\u30B9\u30BF\u30A4\u30EB +Select_DataColumn=\u30C7\u30FC\u30BF\u5217\u3092\u9078\u629E +StartValue=\u958B\u59CB\u5024 +SINGLE_FILE_UPLOAD=\u5358\u72EC\u30D5\u30A1\u30A4\u30EB\u306E\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u306E\u307F\u30B5\u30DD\u30FC\u30C8 +BackgroundTexture-Cork=\u30B3\u30EB\u30AF\u6813 +M_Format-Data_Map=\u30C7\u30FC\u30BF\u30DE\u30C3\u30D7 +FR-mobile_native_analysis=\u4E00\u6B21\u89E3\u6790 +HighLight=\u30CF\u30A4\u30E9\u30A4\u30C8 +FR-Designer_Dropdown-More-Preview=\u4E0B\u62C9\u83B7\u53D6\u66F4\u591A\u9884\u89C8\u65B9\u5F0F +local=\u30ED\u30FC\u30AB\u30EB +FR-Designer_Gradation=\u69CB\u6210 +PageSetup-Finis_Start_Column=\u91CD\u8907\u3059\u308B\u7D42\u4E86\u5217 +Env-Invalid_User_and_Password=\u7121\u52B9\u306A\u30E6\u30FC\u30B6\u30FC\u540D\u307E\u305F\u306F\u30D1\u30B9\u30EF\u30FC\u30C9\u3067\u3059 +FR-Designer-Plugin_All_Plugins=\u5168\u3066\u306E\u30D7\u30E9\u30B0\u30A4\u30F3 +FR-Designer_Prepare_Export=\u5C0E\u51FA\u3092\u958B\u59CB\u3057\u3066\u3044\u307E\u3059\u3002\u304A\u5F85\u3061\u304F\u3060\u3055\u3044 +DBCP_TEST_ON_RETURN=\u63A5\u7D9A\u524D\u691C\u67FB\u306B\u623B\u308B +no-alternatives=\u5168\u304F\u9078\u629E\u80A2\u304C\u3042\u308A\u307E\u305B\u3093 +FR-Designer_Submmit_WClass=\u30AB\u30B9\u30BF\u30E0\u9001\u4FE1 +M_Insert-Slope_Line=\u659C\u7DDA +FR-Designer-Plugin_Plugin_Description=\u30D7\u30E9\u30B0\u30A4\u30F3\u8AAC\u660E +ExpandD-Not_Expand=\u62E1\u5F35\u3057\u306A\u3044 +Utils-Bottom_to_Top=\u4E0B\u304B\u3089\u4E0A\u3078 +Collect-Click\!_Get_user_information_code=\u30AF\u30EA\u30C3\u30AF\u3057\u3066\!\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30C8\u30B3\u30FC\u30C9\u3092\u53D6\u5F97 +FR-Already_exist=\u73FE\u5728\u306E\u74B0\u5883\u306B\u306F\u5B58\u5728\u3057\u3066\u3044\u307E\u3059\: +Send=\u767A\u9001 +M_Edit-Clear_All=\u5168\u3066\u30AF\u30EA\u30A2(A) +Brown_Orange=\u30D6\u30E9\u30A6\u30F3 +PageSetup-Portrait=\u7E26\u65B9\u5411 +FR-Designer_Form-RadioGroup=\u30E9\u30B8\u30AA\u30DC\u30BF\u30F3\u30B0\u30EB\u30FC\u30D7 +FR-Utils-App_AllFiles=\u5168\u3066\u306E\u30D5\u30A1\u30A4\u30EB +Popup=\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7 +Server_Charset=\u30B5\u30FC\u30D0\u30FC\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0 +CellWrite-Repeat_Content_When_Paging=\u6539\u9801\u3059\u308B\u6642\u7E70\u308A\u8FD4\u3057\u624B\u8868\u793A\u3059\u308B +Utils-No_Pagination=\u6539\u30DA\u30FC\u30B8\u3057\u306A\u3044 +Form-NullLayout=\u7D76\u5BFE\u5B9A\u4F4D +ConditionB-Remove_bracket=\u62EC\u5F27\u3092\u524A\u9664\u3059\u308B +email=\u30E1\u30FC\u30EB\u30DC\u30C3\u30AF\u30B9 +Minute=\u5206\u9593 +FR-Designer-Plugin_Update=\u30D7\u30E9\u30B0\u30A4\u30F3\u66F4\u65B0 +alraedy_close=\u3059\u3067\u306B\u30AA\u30D5 +ComboCheckBox-End_Symbol=\u7D42\u7D50\u6587\u5B57 +DataColumn=\u30C7\u30FC\u30BF\u5217 +Form-Password=\u30D1\u30B9\u30EF\u30FC\u30C9 +FR-Background_Image_Adjust=\u9069\u5FDC +Export-Excel-PageToSheet=\u30B7\u30FC\u30C8 +Edit-Row_Count=\u884C\u6570 +DS-Report_TableData=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 +Sche-Hour=\u6642 +Group_Count=\u7DCF\u6570\u8868\u793A +EndValue=\u7D42\u4E86\u5024 +FR-Designer_Sytle-Indentation=\u30A4\u30F3\u30C7\u30F3\u30C8 +DownBarBorderStyleAndColor=\u30D5\u30A9\u30FC\u30EB\u30AB\u30E9\u30E0\u30B9\u30BF\u30A4\u30EB +World=\u4E16\u754C +FR-Designer-Basic_Cancel=\u30AD\u30E3\u30F3\u30BB\u30EB +Finally=\u6700\u5F8C +Low=\u4F4E +Please_Input_The_Key=\u5BFE\u5FDC\u3059\u308B\u30DE\u30C3\u30D7\u306B\u4F7F\u7528\u3059\u308Bkey\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 +Smart=\u30A4\u30F3\u30C6\u30EA\u30B8\u30A7\u30F3\u30C8 +Preference-Predefined=\u30D7\u30EC\u5B9A\u7FA9 +Current_custom_global=\u73FE\u5728\u306E\u5E33\u7968\u304C\u7528\u3044\u308B\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u5168\u5C40\u30B9\u30BF\u30A4\u30EB +FR-Designer-Plugin_Shop_Need_Install=\u3042\u306A\u305F\u304C\u30A2\u30C9\u30AA\u30F3\u3055\u308C\u3066\u3044\u306A\u3044\u30EA\u30BD\u30FC\u30B9\u306E\u5E97\u8217\u3092\u3001\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3059\u308B\u304B\u3069\u3046\u304B\uFF1F +WEB-Pagination_Setting=\u30DA\u30FC\u30B8\u5225\u30D7\u30EC\u30D3\u30E5\u30FC\u8A2D\u5B9A +RCodeDrawPix=\u753B\u7D20 +FR-Designer-Widget-Style_Alpha=\u4E0D\u900F\u660E\u5EA6 +BorderLayout-North=\u5317 +HJS-Current_Page=\u30AB\u30EC\u30F3\u30C8\u30DA\u30FC\u30B8 +Compile=\u7DE8\u96C6\u7FFB\u8A33 +Show_Blank_Row=\u7A7A\u767D\u884C\u3092\u88DC\u5145 +TableData_Dynamic_Parameter_Setting=\u30C0\u30A4\u30CA\u30DF\u30C3\u30AF\u30D1\u30E9\u30E1\u30FC\u30BF +FR-Background_Image_Default=\u30C7\u30D5\u30A9\u30EB\u30C8 +BackgroundTexture-WhiteMarble=\u767D\u3044\u5927\u7406\u77F3 +DataFunction-Sum=\u5408\u8A08 +Collect-The_user_information_code_is_invalid=\u3053\u306E\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30C8\u30B3\u30FC\u30C9\u306F\u7121\u52B9\u3067\u3059\u3002\u516C\u5F0F\u30DB\u30FC\u30E0\u30DA\u30FC\u30B8\u3067\u7533\u8ACB\u3057\u306A\u304A\u3057\u3066\u304F\u3060\u3055\u3044 +Preference-Locale=\u56FD\u969B\u5316 +M_File-Export-PDF=PDF +BiasD-From-lower_left_to_upper_right=\u5DE6\u4E0B\u5074\u304B\u3089\u53F3\u4E0A\u5074\u3078\u5E83\u304C\u308B +Border-Style=\u67A0\u7DDA\u306E\u30B9\u30BF\u30A4\u30EB +Sort=\u30BD\u30FC\u30C8 +Image-Image_Layout=\u30A4\u30E1\u30FC\u30B8\u30EC\u30A4\u30A2\u30A6\u30C8 +Panel=\u30D1\u30CD\u30EB +FR-Designer-Basic_Copy_Build_NO_OK=\u7D44\u307F\u7ACB\u3066\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u306B\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F +All_Border_Line=\u3059\u3079\u3066\u306E\u5883\u754C +FR-Utils-Please_Input_a_New_Name=\u65B0\u3057\u3044\u540D\u79F0\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Base_Formula_Plugin=\u30D7\u30E9\u30B0\u30A4\u30F3\u95A2\u6570 +Two_Rows_Of_Three_Grid=3\u683C\u5B50\u306E\u4E8C\u5217 +FR-Designer_Certificate_Pass=https\u30B7\u30FC\u30AF\u30EC\u30C3\u30C8\u30AD\u30FC +Bubble-Series_Name=\u7CFB\u5217\u540D +M-New_Multi_Report=\u7D71\u8A08\u5E33\u7968\u3092\u65B0\u898F\u4F5C\u6210(M) +BackgroundTexture-PinkTissuePaper=\u30D4\u30F3\u30AF\u8272\u306E\u30B5\u30F3\u30C9\u30DA\u30FC\u30D1\u30FC +Preference-Support_Default_Parent_Calculate=\u30C7\u30D5\u30A9\u30EB\u30C8\u89AA\u30BB\u30EB\u306E\u8A08\u7B97 +Show_Blank_Column=\u7A7A\u767D\u5217\u3092\u88DC\u5145 +BaiduMap=\u767E\u5EA6\u30DE\u30C3\u30D7 +Report-Web_Attributes=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8Web\u5C5E\u6027 +FR-Designer_StyleAlignment-Wrap_Text=\u81EA\u52D5\u6298\u308A\u8FD4\u3057 +Need=\u5FC5\u8981 +Parameter-Double=\u500D\u7CBE\u5EA6\u6D6E\u52D5\u5C0F\u6570\u70B9\u6570\u578B +Config_Servlet=\u9060\u9694\u30B5\u30FC\u30D0\u30FC\u914D\u7F6E +Form-Comma=\u30B3\u30F3\u30DE +Verify=\u691C\u8A3C +PageSetup-Landscape=\u6A2A\u65B9\u5411 +Weeks=\u9031\u9593 +FR-Designer-Widget-Style_Title_Background=\u6A19\u984C\u80CC\u666F +Preference-Pagination_Line_Color=\u6539\u30DA\u30FC\u30B8\u7DDA\u306E\u8272 +Test_URL=\u30C6\u30B9\u30C8\u63A5\u7D9A +Fill_blank_Data=\u7A7A\u767D\u30C7\u30FC\u30BF\u306E\u88DC\u5145 +ReportServerP-The_name_of_printer_cannot_be_null=\u30D7\u30EA\u30F3\u30BF\u30FC\u306E\u540D\u524D\u306F\u7A7A\u5024\u306B\u306A\u306F\u3044\u3051\u307E\u305B\u3093 +FR-Designer-Basic_Copy_Activation_Key=\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30C7\u30B6\u30A4\u30CA\u30FC\u6574\u7406\u756A\u53F7\u3092\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC +Continuum=\u96A3\u63A5\u9023\u7D9A +BackgroundTexture-MediumWood=\u6FC3\u3044\u8272\u306E\u6728\u76EE +Datasource-Column_Index=\u30B3\u30E9\u30E0\u756A\u53F7 +Function-Function_File=\u95A2\u6570\u30D5\u30A1\u30A4\u30EB +Form-Component_Bounds=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u9818\u57DF +Utils-Submit=\u63D0\u51FA +Conditions_formula=\u6761\u4EF6\u516C\u5F0F +M_Insert-Image=\u30A4\u30E1\u30FC\u30B8 +FR-Designer-Plugin_Will_Be_Delete=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u524A\u9664\u3055\u308C\u307E\u3057\u305F\u3002\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC\u30D0\u30FC\u3092\u518D\u8D77 +FormulaD-Functions=\u95A2\u6570 +Mobile_Terminal=\u79FB\u52D5\u7AEF +CheckBox=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 +FR-Designer-Plugin_Install=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB +Sun=\u65E5 +FR-Designer_ToolBar_Bottom=\u30D5\u30C3\u30BF\u30FC\u30C4\u30FC\u30EB\u30D0\u30FC +Widget-Width=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u5E45 +Series_Name=\u7CFB\u5217\u540D +Set_Row_Title_Start=\u91CD\u8907\u3059\u308B\u6A19\u984C\u884C\u3092\u8A2D\u5B9A +HF-Default_Page=\u30C7\u30D5\u30A9\u30EB\u30C8\u30DA\u30FC\u30B8 +Env_Des=\u30ED\u30B0\u30A4\u30F3\u74B0\u5883\u4E2D\u306E\u5E33\u7968\u5DE5\u7A0B\u306B\u6A29\u9650\u3092\u4ED8\u4E0E\u3059\u308B\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u540D\u3068\u30D1\u30B9\u30EF\u30FC\u30C9\u306E\u8A18\u5165\u306F\u5FC5\u305A +Widget-User_Defined=\u30D7\u30EC\u5B9A\u7FA9 +Url_location=\u7D76\u5BFE\u30EB\u30FC\u30C8 +Disk_File=\u30CF\u30FC\u30C9\u30C7\u30A3\u30B9\u30AF\u30D5\u30A1\u30A4\u30EB +Inside=\u5185\u90E8 +FR-Designer_filedChosen= +ServerM-Predefined_Styles=\u30D7\u30EC\u5B9A\u7FA9\u30B9\u30BF\u30A4\u30EB +is_need_word_adjust=\u884C\u306E\u9AD8\u3055\u3092\u56FA\u5B9A\u305B\u305A\u5C0E\u51FA +Background-Null=\u80CC\u666F\u306A\u3057 +PageSetup-Vertically=\u5782\u76F4\u4E2D\u592E\u63C3\u3048 +FR-Designer_Root=\u30EB\u30FC\u30C8\u30CE\u30FC\u30C9 +FR-Designer_Form-TextArea=\u6587\u66F8\u57DF +ReportServerP-Import_JavaScript=JavaScript\u5F15\u7528 +Form-TableTree=\u8868\u30C4\u30EA\u30FC +Opened=\u8D77\u52D5\u6E08\u307F +M_Edit-Delete=\u524A\u9664(D) +Widget-Form_Widget_Container=\u8868\u5BB9\u5668 +BindColumn-Summary=\u96C6\u8A08 +Sche-Second=\u79D2 +Server-Open_Service_Manager=\u30B5\u30FC\u30D3\u30B9\u7BA1\u7406\u5668\u3092\u958B\u304F +FRFont-Effects=\u7279\u5225\u52B9\u679C +OtherGroup_Name=\u305D\u306E\u4ED6\u30B0\u30EB\u30FC\u30D7\u306E\u540D\u524D +Specify=\u6307\u5B9A\u3059\u308B +Highlight-Click_to_Choose_Property_To_Modify=\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u5909\u66F4\u3059\u308B\u5C5E\u6027\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 +triggered=\u30C8\u30EA\u30AC\u30FC +Double_Bottom_BorderLine=\u4E8C\u91CD\u5E95\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 +M_Insert-Sub_Report=\u30B5\u30D6\u5E33\u7968 +Unit_Ten=\u5341 +Polybolck=\u30A2\u30B0\u30EA\u30B2\u30FC\u30B7\u30E7\u30F3\u30D6\u30ED\u30C3\u30AF +Select_sort_order=\u6392\u5217\u9806\u5E8F\u3092\u9078\u629E +HJS-Mail_to=\u53D7\u4FE1\u8005 +StyleAlignment-Left=\u5DE6\u8A70\u3081 +Two_Rows_Of_Two_Grid=2\u884C2\u5217\u306E\u683C\u5B50 +FR-Designer-Form-Please_Drag_ParaPane=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u30D1\u30CD\u30EB\u3092\u3057\u307E\u3063\u3066\u304F\u3060\u3055\u3044 +Milliseconds=\u30DF\u30EA\u79D2 +DataFunction-None=\u306A\u3057 +Delivery=\u4F1D\u9054 +ColumnSpan=\u5217\u7BC4\u56F2 +StyleAlignment-Bottom=\u4E0B\u8A70\u3081 +Read_failure=\u8AAD\u307F\u306B\u969C\u5BB3\u304C\u767A\u751F\u3059\u308B\u3068\u3001\u30BD\u30FC\u30B9\u00B7\u30D5\u30A1\u30A4\u30EB\u304C\u7834\u640D\u3057\u3066\u3044\u308B +Verify-Verify=\u30C7\u30FC\u30BF\u691C\u8A3C +FR-Designer-Widget-Style_Title_Format=\u6A19\u984C\u66F8\u5F0F +FR-Designer_Edit_String_To_Formula=\u30AD\u30E3\u30E9\u30AF\u30BF\u30FC\u6587\u5B57\u5217\u3092\u7DE8\u96C6\u3057\u3066\u516C\u5F0F\u3068\u3059\u308B\u304B\u5426\u304B +FR-Base_UnSignIn=\ \u672A\u30ED\u30B0\u30A4\u30F3 +Every=\u6BCF +CellWrite-Preview_Cell_Content=\u30BB\u30EB\u306E\u5185\u5BB9\u3092\u30D7\u30EC\u30D3\u30E5\u30FC\u3059\u308B +FormulaD-Data_Fields=\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9 \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties index 8753946187..39ebe76b63 100644 --- a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties +++ b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties @@ -518,7 +518,6 @@ FR-Designer_Custom_Job_Description=\uC124\uBA85 FR-Designer_Property=\uC18D\uC131 FR-Designer_ClassName=\uD074\uB798\uC2A4\uB124\uC784 FR-Designer_Template_Web_Attributes=\uD15C\uD50C\uB9BF \uC6F9 \uC18D\uC131 - FR-Designer_Polyblock_Edit=\uCDE8\uD569\uBE14\uB7ED\uD3B8\uC9D1 FR-Designer_Function_Description_Area_Text=\uD574\uB2F9\uD074\uB798\uC2A4\uB294\uACC4\uC2B9\uD574\uC57C\uD55C\uB2E4."com.fr.script.AbstractFunction".\uCEF4\uD30C\uC77C\uD6C4\uC758\uD074\uB798\uC2A4\uD30C\uC77C\uC744~\uB85C\uBCF5\uC0AC\nJ2EE\uC11C\uBC84 "{R1}" \uB514\uB809\uD130\uB9AC, \uD544\uC694\uC2DC class \uC0C1\uC751\uD558\uB294 java\uC18C\uC2A4\uD30C\uC77C\uB3C4\uD574\uB2F9\uB514\uB809\uD130\uB9AC\uD558\uB2E8\uC5D0\uB450\uC5B4\uD3B8\uC9D1\uBC0F\uCC3E\uC544\uBCF4\uAE30\uB97C\uD560\uC218\uC788\uC2B5\uB2C8\uB2E4.\n\uC608: {R2} FR-Designer_PageSetup_Horizontal=\uAC00\uB85C @@ -598,3 +597,1390 @@ FR-Designer_Delete_Template= FR-Designer_Mobile_Report_Analysis_Annotation= FR-Designer_DoubleLayer_Report= FR-Designer_Validate= +CellWrite-InsertRow_NULL=\uB110\uAC12 +DashBoard-ChartFloat=\uCC28\uD2B8 +contact_info=\uC5F0\uB77D\uC815\uBCF4(\uC120\uD0DD) +Page_Setup=\uC6F9\uD398\uC774\uC9C0\uC124\uC815 +CellWrite-Print_Export=\uC778\uC1C4\uB098\uAC00\uAE30 +Cannot_Get_Date=\uB0A0\uC9DC\uB97C\uBD88\uB7EC\uC62C\uC218\uC5C6\uC2B5\uB2C8\uB2E4. +FR-Designer_Modify=\uC218\uC815 +M-Write_Preview=\uAE30\uC785\uBBF8\uB9AC\uBCF4\uAE30 +FR-Base_RWA-Key=\uB9C8\uC2A4\uD130\uD0A4 +China=\uC911\uAD6D +Set_Legend_Sytle=\uB3C4\uD45C\uBC94\uB840\uC11C\uC2DD\uC124\uC815 +FR-Designer_Number=\uC22B\uC790 +FR-Designer-Widget-Style_Common=\uC77C\uBC18 +M-Save_As=\uB2E4\uB978\uC774\uB984\uC73C\uB85C\uC800\uC7A5 +Following_parameters_are_not_generated=\uB2E4\uC74C\uB9E4\uAC1C\uBCC0\uC218\uAC00\uC0DD\uC131\uB418\uC9C0\uC54A\uC558\uC2B5\uB2C8\uB2E4. +FR-Designer-Basic_Activation_Key_Copy_OK=\uD074\uB9BD\uBCF4\uB4DC\uC5D0\uBCF5\uC0AC\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +Utils-Current_Sheet=\uD604\uC7AC Sheet +ConditionB-is_less_than=< +BorderLayout-West=\uC11C +AnalysisLine=\uBD84\uC11D\uC120 +Layer_Report_Warnning_info=\uD589\uD0C0\uC785\uC5D4\uC9C4\uC740\uB300\uC6A9\uB7C9\uB370\uC774\uD130\uC5D0\uC11C\uB9CC\uC801\uC6A9\uB429\uB2C8\uB2E4.
\uC774\uC5D4\uC9C4\uC744\uC0AC\uC6A9\uD558\uBA74\uC9C0\uC6D0\uB418\uC9C0\uC54A\uB294\uBB38\uC11C\uD2B9\uC131\uC774\uB9CE\uC544\uC9D1\uB2C8\uB2E4.
\uC0C1\uC138\uB0B4\uC6A9\uC740\uBB38\uC11C\uC758\uAD00\uB828\uC7A5\uC808\uC744\uCC38\uC870\uD574\uC8FC\uC138\uC694. +Tree-Width=\uB108\uBE44 +alert_word=\uBE44\uACE0\uC815\uD589\uB192\uC774\uB0B4\uBCF4\uB0B4\uAE30\uB97C\uC120\uD0DD\uD558\uBA74\uD3B8\uC9D1\uB0B4\uBCF4\uB0B4\uAE30\uC758 word, \uC140\uD589\uB192\uC774\uAC00\uB0B4\uC6A9\uC5D0\uB530\uB77C\uC790\uB3D9\uC73C\uB85C\uB298\uC5B4\uB098\uBA70,\uC774\uC0C1\uD669\uC5D0\uC11C\uB0B4\uBCF4\uB0B4\uAE30\uACB0\uACFC\uD398\uC774\uC9C0\uB098\uB204\uAE30\uC704\uCE58\uB294\uBBF8\uB9AC\uBCF4\uAE30\uACB0\uACFC\uC640\uC77C\uCE58\uD558\uC9C0\uC54A\uC744\uC218\uC788\uC2B5\uB2C8\uB2E4. +PageSetup-Paper_Size=\uC885\uC774\uD06C\uAE30 +M-Page_Setup=\uC6F9\uD398\uC774\uC9C0\uC124\uC815 +DashBoard-FormBook=\uD3FC +X-Coordinate=\uAC00\uB85C\uC88C\uD45C +Style-Line_Spacing=\uD589\uAC04\uACA9 +FR-Designer_Plugin_Should_Update_Title= +Server-Define_Data_Connection=\uB370\uC774\uD130\uB9C1\uD06C\uC815\uC758 +BarInside=\uCEEC\uB7FC\uC548\uCABD +Border-Color=\uD14C\uB450\uB9AC\uC0C9 +NotAllow=\uD569\uBC95\uC801\uC774\uC9C0\uC54A\uC2B5\uB2C8\uB2E4. +Utils-File_type=\uD30C\uC77C\uC720\uD615 +FR-Designer-Plugin_Install_From_Local=\uB85C\uCEEC\uD30C\uC77C\uC5D0\uC11C\uC124\uCE58 +Summary_Method=\uCDE8\uD569\uBC29\uC2DD +Select_Specified_Grouping=\uC0AC\uC6A9\uC790\uC815\uC758\uADF8\uB8F9\uC120\uD0DD +HF-Number_of_Page=\uCD1D\uD398\uC774\uC9C0\uC218 +FR-Designer-Tree_Height=\uB192\uC774 +Owner=\uB9C8\uC2A4\uD130 +Home=\uD648\uD398\uC774\uC9C0 +FR-Server_Embedded_Server_Stop=\uB0B4\uC7A5\uB41C\uC11C\uBC84-\uC815\uC9C0 +FR-Designer-Plugin_Detecting_Update=\uC5C5\uB370\uC774\uD2B8\uAC80\uC0AC\uC911 +HF-Whether_to_define_the_selected_type=\uC120\uD0DD\uD55C\uC720\uD615\uC744\uC815\uC758\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? +StyleAlignment-Right=\uC624\uB978\uCABD\uC5D0\uB9DE\uCDA4 +FR-Designer_Alignment-Style=\uC815\uB82C\uBC29\uC2DD +PageSetup-Title_Start_Column=\uC911\uBCF5\uC81C\uBAA9\uC5F4 +Tree-Mutiple_Selection_Or_Not=\uB2E4\uC911\uC120\uD0DD +FR-Designer-Plugin_Search=\uAC80\uC0C9 +Choose_Role=\uAD8C\uD55C\uCEE8\uD2B8\uB864 +Append_Delete_Row_Message=\uC8FC\uC758\uFF01 \uC9C0\uC815\uB41C\uC140\uC740\uD655\uC7A5\uC18D\uC131\uC744\uC124\uC815\uD574\uC57C\uD569\uB2C8\uB2E4. +Form-ComboBox=\uBC15\uC2A4\uD480\uB2E4\uC6B4 +PageSetup-Footer=\uD398\uC774\uC9C0\uBC14\uB2E5\uAE00 +Sorting=\uC21C\uC11C\uC911 +DBCP_TEST_WHILE_IDLE=\uC720\uD734\uD68C\uC218\uAE30\uAC80\uC0AC\uC5F4\uAE30 +DS-Embedded_TableData=\uB0B4\uC7A5 \uB370\uC774\uD130 \uC138\uD2B8 +FR-Designer_No-Privilege=\uAD8C\uD55C\uC5C6\uC74C +FRFont-Subscript=\uBC11\uC904 +Background_Settings=\uBC30\uACBD\uC124\uC815 +FormulaD-Invalid_Formula=\uC62C\uBC14\uB974\uC9C0\uC54A\uC740\uC218\uC2DD +FR-Base_Margin=\uC5EC\uBC31 +FR-Designer-Plugin_Shop_Installed=\uD50C\uB7EC\uADF8\uC778 \uC0C1\uC810 \uC989\uC2DC \uC2DC\uC791\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC124\uCE58? +M_Edit-Send_to_Back=\uC81C\uC77C\uBC11\uC5D0\uB450\uAE30(K) +Email-Can_Preview_Report_Content=\uBCF8\uBB38\uBBF8\uB9AC\uBCF4\uAE30\uBB38\uC11C\uB0B4\uC6A9 +FR-Designer-FRFont_Italic=\uAE30\uC6B8\uC784\uAF34 +CellWrite-Print_Background=\uC778\uC1C4/\uBD88\uB7EC\uC624\uAE30 \uC140 \uBC30\uACBD +Wizard=\uC548\uB0B4 +Preference-Is_Drag_Permited=\uB4DC\uB798\uADF8\uC9C0\uC6D0 +FR-Designer_Release_Lock=\uBE44\uBC00\uBC88\uD638\uD574\uC81C +Form-Delimiter=\uAD6C\uBD84\uBB38\uC790 +wrong=\uC624\uB958\uAC00\uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. +FR-Menu-Server_Chart_PreStyle=\uCC28\uD2B8\uC0AC\uC804\uC815\uC758\uB41C\uC0C9\uBC30\uD569 +Form-Button=\uD0A4 +FormulaD-Valid_Formula=\uB9DE\uB294\uC218\uC2DD +ParameterD-Parameter_Interface=\uB9E4\uAC1C\uBCC0\uC218\uC0AC\uC6A9\uC790\uC778\uD130\uD398\uC774\uC2A4 +At_least_one_visual_worksheet=\uC6CC\uD06C\uBD81\uC5D0\uCD5C\uC18C\uD55C\uAC1C\uC758\uBCF4\uC774\uB294\uC6CC\uD06C\uC2DC\uD2B8\uAC00\uC788\uC5B4\uC57C\uD558\uBA70,\uC0AD\uC81C\uB97C\uC6D0\uD560\uACBD\uC6B0\uC0C8\uC6CC\uD06C\uC2DC\uD2B8\uB97C\uC0BD\uC785\uD574\uC8FC\uC2ED\uC2DC\uC624. +Need_Min_Value=\uD544\uC694\uCD5C\uC18C\uAC12 +Allow_Blank=\uBE48\uCE78\uD5C8\uC6A9 +CellWrite-InsertRow_DEFAULT=\uAE30\uBCF8\uAC12 +Widget-Load_By_Complete=\uC644\uC804\uB85C\uB529 +FR-Designer-Basic_Only_Submit_Current_Sheet= +Sort-Sort_Order=\uC815\uB82C\uC21C\uC11C +File-File_Size_Limit=\uD30C\uC77C\uD06C\uAE30\uC81C\uD55C +PrintP-Print=\uC778\uC1C4(T) +FR-Designer-StyleAlignment_Center=\uAC00\uC6B4\uB370\uC815\uB82C +Preference-Setting_Colors=\uC0C9\uC124\uC815 +Judge=\uD310\uB2E8 +Image-Adjust=\uC801\uC6A9 +Collect-User_Information_DES=\uD65C\uC131\uCF54\uB4DC\uB294\uC0AC\uC6A9\uC790\uC815\uBCF4\uC218\uC9D1\uC5D0\uB9CC\uC774\uC6A9\uB418\uBA70, \uC0C1\uB2E8\uC758 "\uD65C\uC131\uCF54\uB4DC"\uD0A4\uC218\uB839\uC744\uD074\uB9AD\uD558\uBA74\uC0C8\uB85C\uC6B4\uC6F9\uBE0C\uB77C\uC6B0\uC800\uD31D\uC5C5\uC774\uB098\uD0C0\uB0A9\uB2C8\uB2E4.\uC81C\uD488\uD648\uD398\uC774\uC9C0\uC5D0\uB85C\uADF8\uC778\uD558\uC5EC\uBB34\uB8CC\uB85C\uC774\uD65C\uC131\uCF54\uB4DC\uB97C\uBC1B\uB294\uB3703\uBD84\uC774\uC18C\uC6A9\uB418\uBA70\uD55C\uBC88\uB9CC\uC2E4\uC2DC\uD558\uBA74\uB429\uB2C8\uB2E4. +FR-Designer_Plugin_Normal_Update_From_Local=\uB85C\uCEEC\uC5D0\uC11C\uD30C\uC77C\uC5C5\uB370\uC774\uD2B8 +BackgroundTexture-Canvas=\uCE94\uBC84\uC2A4 +BarOutSide=\uCEEC\uB7FC\uBC14\uAE65\uCABD +Preview_ToolTips=\uBBF8\uB9AC\uBCF4\uAE30\uC54C\uB9BC +FRFont-Family=\uC774\uB984 +FR-Lic_does_not_Support_Remote=\uD604\uC7AC \uC0AC\uC6A9\uD558\uACE0 \uC788\uB294 lic\uC740 \uC6D0\uACA9 \uB514\uC790\uC778 \uAE30\uB2A5\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC73C\uBBC0\uB85C lic\uC744 \uC5C5\uADF8\uB808\uC774\uB4DC \uD574 \uC8FC\uC2ED\uC2DC\uC624. +InterfaceStyle=\uC2A4\uD0C0\uC77C +RWA-Key=\uB9C8\uC2A4\uD130\uD0A4 +WF-Name=\uBA85\uCE6D +RWA-Click_Cell_To_Edit_Value=\uD15C\uD50C\uB9BF\uC140\uC218\uC815\uAC12\uD074\uB9AD +Utils-Row_Height=\uD589\uB192\uC774 +ReportD-Excel_Export=\uD15C\uD50C\uB9BF\uB0B4\uBCF4\uB0B4\uAE30\uC18D\uC131 +Form-Please_Select_A_Kind_Of_Form_Container=\uD3FC\uCEE8\uD14C\uC774\uB108\uB97C\uC120\uD0DD\uD574\uC8FC\uC2ED\uC2DC\uC694 +Column_Does_Not_Exsit=\uC5F4\uC774\uC874\uC7AC\uD558\uC9C0\uC54A\uC2B5\uB2C8\uB2E4. +M_Insert-Hyperlink=\uD558\uC774\uD37C\uB9C1\uD06C +can_not_include_underline="_"\uB294\uD3EC\uD568\uD560\uC218\uC5C6\uC2B5\uB2C8\uB2E4. +FR-Designer-Plugin_Jar_Expired=Jar\uD329\uC774\uB108\uBB34\uC624\uB798\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +FR-Background_Image_Extend=\uC7A1\uC544\uB2F9\uAE40 +TopDownShade=\uC0C1\uD558 \uADF8\uB77C\uB370\uC774\uC158 +FR-Base_Right=\uC624\uB298\uCABD +DataBinding=\uB370\uC774\uD130\uBC14\uC778\uB529 +ConnectionPool_Attr=\uCEE4\uB125\uC158\uD480\uC18D\uC131 +Connect_SQL_Cannot_Null=\uB370\uC774\uD130\uB9C1\uD06C\uC640SQL\uD328\uB110\uC740\uBE48\uCE78\uC73C\uB85C\uB458\uC218\uC5C6\uC2B5\uB2C8\uB2E4. +DBCP_MAX_ACTIVE=\uCD5C\uB300 \uC561\uD2F0\uBE0C \uC5F0\uACB0 \uC218 +M_Window-Preference=\uC635\uC158 +ToolBar_Top=\uC0C1\uB2E8\uD234\uBC14 +FR-Designer_Indent-Pixel=\uD654\uC18C +FR-Designer_Unit_MM=\uBC00\uB9AC\uBBF8\uD130 +IDLE=\uC720\uD734 +FRFont-Underline=\uBC11\uC904 +FR-Designer-Plugin_Read_Plugin_List_Error=\uD50C\uB7EC\uADF8\uC778\uB9AC\uC2A4\uD2B8\uB97C\uC77D\uC744\uB54C\uC624\uB958\uBC1C\uC0DD +Type_Set=\uC720\uD615\uC124\uC815 +M_Format_A-Cell_Attributes=\uAE30\uD0C0\uC18D\uC131 +CellWrite-Show_As_Image=\uC774\uBBF8\uC9C0\uB85C\uB0B4\uC6A9\uBCF4\uC774\uAE30 +ShowAsDownload=\uB2E4\uC6B4\uB85C\uB4DC\uB9C1\uD06C\uB85C2\uC9C4\uBC95\uB0B4\uC6A9\uBCF4\uC774\uAE30 +Form-ComboCheckBox=\uCCB4\uD06C\uBC15\uC2A4\uD480\uB2E4\uC6B4 +BackgroundTexture-WovenMat=\uD3B8\uC9C1\uBB3C +BindColumn-Custom_Data_Appearance=\uC0AC\uC6A9\uC790\uC815\uC758\uBCF4\uC774\uAE30 +Actived=\uD65C\uC131\uD654\uB41C +Env-Local_Directory=\uB85C\uCEEC\uB514\uB809\uD130\uB9AC +Form-Colon=\uCF5C\uB860 +Preference-Vertical_Scroll_Bar_Visible=\uC218\uC9C1\uC2A4\uD06C\uB864\uBC14\uB97C\uBCFC\uC218\uC788\uC2B5\uB2C8\uB2E4. +Utils-Show_Cell_Value=\uC140\uAC12\uBCF4\uC774\uAE30 +FR-Designer_ReportColumns-Repeat_Row=\uD589\uBCF5\uC0AC\uC21C\uC11C +SpecifiedG-Specified_Group=\uC0AC\uC6A9\uC790\uC815\uC758\uADF8\uB8F9 +RWA-Smart_Add_Cells=\uC140\uC2A4\uB9C8\uD2B8\uCD94\uAC00 +HF-Left_Section=\uC67C\uCABD\uC601\uC5ED +M_Report-Report_Background=\uC885\uC774\uBC30\uACBD +Image-Extend=\uC7A1\uC544\uB2F9\uAE40 +FS_BI=\uC815\uCC45\uD50C\uB7AB\uD3FC +ToolBar_Bottom=\uD558\uB2E8\uD234\uBC14 +Hgap=\uC218\uD3C9\uD2C8 +FR-Designer_Enter-New-FileName=\uC0C8\uB85C\uC6B4\uD30C\uC77C\uBA85\uC744\uC785\uB825\uD574\uC8FC\uC2ED\uC2DC\uC624. +Verify_Fail=\uAC80\uC0AC\uC2E4\uD328 +CellWrite-InsertRow_Policy=\uD589\uC0BD\uC785\uC815\uCC45 +FR-Designer-Plugin_Illegal_Plugin_Zip=\uB9DE\uB294\uD50C\uB7EC\uADF8\uC778\uD328\uD0A4\uC9C0\uAC00\uC544\uB2D9\uB2C8\uB2E4. +RCodeVersion=\uBC84\uC804 +Convert=\uC804\uD658 +Please_Drag=\uD589\uACFC\uC5F4\uD544\uB4DC\u3001\uCDE8\uD569\uD544\uB4DC\uB97C\uB4DC\uB798\uADF8\uD574\uC8FC\uC2ED\uC2DC\uC624 +FR-Designer-Widget-Style_Preview=\uBBF8\uB9AC\uBCF4\uAE30 +mobile_number=\uD734\uB300\uD3F0\uBC88\uD638 +FR-Designer_Form-ComboCheckBox=\uCCB4\uD06C\uBC15\uC2A4\uD480\uB2E4\uC6B4 +CacheValidateTime=\uBB38\uC11C\uCE90\uC2DC\uC720\uD6A8\uAE30\uAC04 +Hyperlink-Extends_Report_Parameters=\uBB38\uC11C\uC758\uB9E4\uAC1C\uBCC0\uC218\uACC4\uC2B9 +FR-Designer_Values-Editor=\uAC12\uD3B8\uC9D1\uAE30 +Export-Excel=Excel\uC11C\uC2DD +Utils-Left_to_Right=\uAC00\uB85C +ExpandD-Vertical_Extendable=\uC138\uB85C\uB85C\uD655\uC7A5\uAC00\uB2A5 +Utils-Report_Runtime_Env=\uBB38\uC11C\uC791\uC5C5\uB514\uB809\uD130\uB9AC +Utils-Right_to_Left=\uC624\uB978\uCABD\uC5D0\uC11C\uC67C\uCABD\uAE4C\uC9C0 +Utils-Beyond_the_top_side_of_Border=\uC704\uACBD\uACC4\uC120\uBC97\uC5B4\uB0A8 +Exception_StackTrace=\uC2A4\uD0DD\uC815\uBCF4\uC624\uB958 +Corresponding_Fields=\uC0C1\uC751\uD558\uB294\uD544\uB4DC +Form-CheckBox=\uCCB4\uD06C\uBC15\uC2A4 +Utils-Current_Row=\uD604\uC7AC\uD589 +BuildIn=\uB0B4\uC7A5 +BindColumn-Results_Filter=\uACB0\uACFC\uC9D1\uC120\uBCC4 +FR-Designer-Plugin_Manager=\uD50C\uB7EC\uADF8\uC778\uAD00\uB9AC +M_File-Export-CSV=CSV\uC11C\uC2DD(\uC27C\uD45C\uAD6C\uBD84) +Data_Filter=\uB370\uC774\uD130\uC120\uBCC4 +ReportServerP-Edit_Printer=\uD504\uB9B0\uD130\uD3B8\uC9D1 +FR-Designer_Datasource-Stored_Procedure=\uC800\uC7A5\uACFC\uC815 +RESTART=\uC7AC\uBD80\uD305 +FormulaD-Function_name=\uD568\uC218\uC774\uB984 +ChooseOneButton=\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uC120\uD0DD\uD6C4\uCD94\uAC00\uD574\uC8FC\uC2ED\uC2DC\uC624 +Priority=\uC6B0\uC120\uC21C\uC704 +Datasource-Datasource=\uB370\uC774\uD130\uC18C\uC2A4 +FR-Designer_Width=\uB108\uBE44 +Cannot-Add_To_This_Area=\uD574\uB2F9\uC601\uC5ED\uC5D0\uCD94\uAC00\uD560\uC218\uC5C6\uC2B5\uB2C8\uB2E4. +Run=\uC2E4\uD589 +Set_Submit_Condition=\uC81C\uCD9C\uC870\uAC74\uC124\uC815 +FR-Base_Value=\uAC12 +fileLocked_undeleted=\uD15C\uD50C\uB9BF\uC774\uC7A0\uACA8\uC788\uC5B4\uC0AD\uC81C\uD560\uC218\uC5C6\uC2B5\uB2C8\uB2E4\uFF01 \uD655\uC778\uC744\uD074\uB9AD\uD558\uC5EC\uD15C\uD50C\uB9BF\uB9AC\uC2A4\uD2B8\uC0C8\uB85C\uACE0\uCE68 +Web_Apply=WEB\uC751\uC6A9 +Refresh_Database=\uB370\uC774\uD130\uBCA0\uC774\uC2A4\uC0C8\uB85C\uACE0\uCE68 +Set_Row_Title_End=\uC911\uBCF5\uC885\uB8CC\uD589\uC124\uC815 +FR-Utils-New_Folder=\uC0C8\uD3F4\uB354 +BiasD-From-upper_left_to_lower_right=\uC67C\uCABD\uC0C1\uB2E8\uC5D0\uC11C\uC624\uB978\uCABD\uC544\uB798\uB85C\uB098\uD0C0\uB0B4\uAE30 +CapsLock=\uCEA1\uC2A4\uB85C\uD06C\uD0A4\uAC00\uCF1C\uC838\uC788\uC2B5\uB2C8\uB2E4. +StyleFormat-Sample=\uC608\uC2DC +RWA-Smart_Add_Cell_Group=\uC140\uADF8\uB8F9\uC2A4\uB9C8\uD2B8\uCD94\uAC00 +MConfig-CancelButton=\uCDE8\uC18C +Function-Choose_Function_Class=\uC120\uD0DD\uD568\uC218\uD074\uB798\uC2A4 +LatLng=\uACBD\uB3C4\uCC28\uC6D0 +DS-Server_TableData=\uC11C\uBC84\uB370\uC774\uD130\uC138\uD2B8 +BackgroundTexture-GreenMarble=\uADF8\uB9B0\uB300\uB9AC\uC11D +read_time_out=\uB85C\uB529\uC2DC\uAC04\uCD08\uACFC +JavaScript-Commit_to_Database=\uC81C\uCD9C\uC785\uACE0 +DS-Relation_TableData=\uAD00\uB828\uB370\uC774\uD130\uC138\uD2B8 +CellWrite-Page_Before_Row=\uD589\uC55E\uD398\uC774\uC9C0\uB098\uB204\uAE30 +FR-Designer-Plugin_Load_Plugins_From_Server=\uD50C\uB7EC\uADF8\uC778\uC2A4\uD1A0\uC5B4\uC5D0\uC11C\uB370\uC774\uD130\uB97C\uC5BB\uB294\uC911. +D-Dispaly_Divide_Result_Set_into_Groups=Result set\uB97C\uADF8\uB8F9\uD654\uD569\uB2C8\uB2E4. +Closed=\uC774\uBBF8\uB2EB\uD614\uC2B5\uB2C8\uB2E4. +RWA-Help=\uBBF8\uC218\uC815, \uBBF8\uC5C5\uB370\uC774\uD2B8\uB85C\uC124\uC815\uD55C\uD6C4\uBBF8\uB9AC\uBCF4\uAE30\uBB38\uC11C\uB97C\uC791\uC131\uD558\uC5EC\uB808\uCF54\uB4DC\uB41C\uC140\uC5D0\uD3B8\uC9D1\uC218\uC815\uC0AC\uD56D\uC774\uC5C6\uC744\uACBD\uC6B0\uC774\uB808\uCF54\uB4DC\uB294\uD589\uC5C5\uB370\uC774\uD2B8\uB97C\uC9C4\uD589\uD560\uC218\uC5C6\uC2B5\uB2C8\uB2E4.\n\uB300\uC6A9\uB7C9\uB370\uC774\uD130\uB808\uCF54\uB4DC\uCC3E\uC544\uBCF4\uAE30\uBC0F\uAE30\uC785\uC0C1\uD669\uC5D0\uC11C\uD574\uB2F9\uC124\uC815\uC744\uD558\uBA74\uAE30\uC785\uC81C\uCD9C\uC131\uB2A5\uC744\uB192\uC77C\uC218\uC788\uC2B5\uB2C8\uB2E4. +FR-Designer-Widget-Style_Custom= +FR-Designer-Widget-Style_Render_Style=\uB80C\uB354\uC2A4\uD0C0\uC77C +Highlight-Barcode=\uBC14\uCF54\uB4DC +FR-Designer_Connect_SQL_Cannot_Null=\uB370\uC774\uD130\uB9C1\uD06C\uC640SQL\uD328\uB110\uC740\uBE48\uCE78\uC73C\uB85C\uB458\uC218\uC5C6\uC2B5\uB2C8\uB2E4. +trigger=\uD2B8\uB9AC\uAC70 +M-Data_Analysis=\uB370\uC774\uD130\uBD84\uC11D +Function-The_selected_file_cannot_be_null=\uD30C\uC77C\uC740\uBE48\uCE78\uC73C\uB85C\uB458\uC218\uC5C6\uC2B5\uB2C8\uB2E4. +No-Privilege=\uAD8C\uD55C\uC5C6\uC74C +ReportColumns-Repeat_Column=\uC5F4\uBCF5\uC0AC\uC21C\uC11C +SecondGraduationUnit=\uBCF4\uC870\uB208\uAE08\uB2E8\uC704 +Form-Widget_Property_Value=\uC18D\uC131\uAC12 +GIVE-NAME=\uB124\uC774\uBC0D +FR-Designer_Rename=\uB9AC\uB124\uC784 +Utils-Merge_Cell=\uC140\uBCD1\uD569 +Style-Spacing_After=\uC139\uC158\uB4A4 +Enlarge_Or_Reduce=\uCD95\uC18C +Tree-Height=\uB192\uC774 +RCodeErrorCorrect=\uC5D0\uB7EC\uC218\uC815 +Enter-New-FileName=\uC0C8\uB85C\uC6B4\uD30C\uC77C\uBA85\uC744\uC785\uB825\uD574\uC8FC\uC2ED\uC2DC\uC624. +try_resending=\uB2E4\uC2DC\uBC1C\uC1A1\uD574\uC8FC\uC2ED\uC2DC\uC624. +M-Open_Report=\uC5F4\uAE30... +Please_Select=\uC120\uD0DD\uD574\uC8FC\uC2ED\uC2DC\uC624 +InRow=\uD589(R) +Form-TextArea=\uD14D\uC2A4\uD2B8\uC601\uC5ED +FR-Designer_Https_Enable=\uC2E4\uD589https +Widget-Custom_Widget_Config=\uC0AC\uC6A9\uC790\uC815\uC758\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4 +already_exists=\uC774\uBBF8\uC874\uC7AC\uD569\uB2C8\uB2E4. +Original_Marked_Filed=\uCD08\uAE30\uD0DC\uADF8\uD544\uB4DC +BackgroundTexture-Sand=\uBAA8\uB798\uC0AC\uC7A5 +Values=\uAC12 +Not_use_a_cell_attribute_table_editing=\uC140\uC18D\uC131\uC73C\uB85C\uD45C\uB97C\uD3B8\uC9D1\uD560\uC218\uC5C6\uC2B5\uB2C8\uB2E4. +Root=\uB8E8\uD2B8\uB178\uB4DC +cycle=\uC8FC\uAE30 +open-new-form-tip=\uD604\uC7AC\uD15C\uD50C\uB9BF\uC740711\uC774\uD558\uBC84\uC804\uC73C\uB85C\uC791\uC131\uB418\uC5B4\uD638\uD658\uC774\uB418\uC9C0\uC54A\uC544\uC5F4\uC218\uC5C6\uC2B5\uB2C8\uB2E4. \uC774\uD3FC\uC744\uC5F4\uC5B4\uC218\uC815\uD558\uACE0\uC790\uD560\uACBD\uC6B0\uC0C1\uC751\uD558\uB294\uBC84\uC804\uC124\uACC4\uAE30\uB85C\uC5F4\uC5B4\uC8FC\uC2ED\uC2DC\uC624. +Support-Current_Auto_Complete_Shortcut=\uD604\uC7AC\uB2E8\uCD95\uD0A4 +GROUPING_MODE=\uC77C\uBC18\uADF8\uB8F9 +DBCP_MAX_IDLE=\uCD5C\uB300 \uC720\uD734 \uC5F0\uACB0 \uC218 +BackgroundTexture-BlueTissuePaper=\uBE14\uB8E8\uC0AC\uD3EC +ReportD-Export_Hided_Row=\uC228\uAE34\uD589\uBCF4\uC774\uAE30 +FR-Custom_styles_lost=\uC0AC\uC6A9\uC790\uC815\uC758\uC591\uC2DD\uC774\uC5C6\uC2B5\uB2C8\uB2E4. +Env-Des2=Servlet\uC704\uCE58\uB294\uD638\uC2A4\uD2B8\uCEF4\uD4E8\uD130\uC774\uB984\uFF0C\uD3EC\uD2B8\uFF0CWEB\uC751\uC6A9\uFF0CServlet\uC758\uADF8\uB8F9\uC774\uBA70,Servlet\uB97C\uAC00\uB9AC\uCF1C\uC57C\uD569\uB2C8\uB2E4.\uC608: "http\://localhost\:8080/WebReport/ReportServer". \uD638\uC2A4\uD2B8\uCEF4\uD4E8\uD130\uC774\uB984\uFF0C\uD3EC\uD2B8\uFF0C WEB\uC751\uC6A9\uFF0C Servlet\uC744\uC120\uD0DD\uD560\uC218\uC788\uC73C\uBA70,\uC774\uB294\uC0AC\uC6A9\uC790\uAC00\uD544\uC694\uB85C\uD558\uB294 Servlet\uC704\uCE58\uB97C\uC790\uB3D9\uC0DD\uC131\uD569\uB2C8\uB2E4. +Env-Des1=\uBB38\uC11C\uC11C\uBC84\uAC00\uC788\uB294WEB-INF\uB514\uB809\uD130\uB9AC\uB97C\uC120\uD0DD\uD574\uC8FC\uC2ED\uC2DC\uC624. +PageSetup-Placement_Center_on_Page=\uAC00\uC6B4\uB370\uC815\uB82C\uBC29\uC2DD +sure_to_delete=\uC0AD\uC81C\uD655\uC778 +Already_exists_not_add_repeat=\uC774\uBBF8\uC874\uC7AC\uD569\uB2C8\uB2E4.\uC911\uBCF5\uCD94\uAC00\uD558\uC9C0\uB9C8\uC2ED\uC2DC\uC624. +Axis_Title=\uCD95\uC81C\uBAA9 +FR-Designer-Plugin_Install_Failed=\uD50C\uB7EC\uADF8\uC778\uC124\uCE58\uC2E4\uD328 +FR-Designer-Widget-Style_Frame=\uD504\uB808\uC784 +MainGraduationUnit=\uC8FC\uB208\uAE08\uB2E8\uC704 +Second_Axis=\uBCF4\uC870\uC88C\uD45C\uCD95 +Classifier-Ge=\uAC1C +MSBold=\uB9C8\uC774\uD06C\uB85C\uC18C\uD504\uD2B8 Yahei +Form-Design_Size=\uB514\uC790\uC778\uC0AC\uC774\uC988 +FR-App-Template_Save=\uC800\uC7A5 +ExpandD-Horizontal_Extendable=\uAC00\uB85C\uB85C\uD655\uC7A5\uAC00\uB2A5 +RP_Authority_Edit=\uAD8C\uD55C\uD3B8\uC9D1 +Warnning=\uC54C\uB9BC +RoleName_Can_Not_Be_Null=\uC5ED\uD560\uC774\uB984\uC740\uBE44\uC5B4\uC788\uAC70\uB098\uC911\uBCF5\uB418\uC5B4\uC11C\uB294\uC548\uB429\uB2C8\uB2E4. +Application=\uC560\uD50C\uB9AC\uCF00\uC774\uC158 +Formula_Dictionary_Display_Examples_Html=\uC2E4\uC81C\uAC12\uBC94\uC704:\ +ECP-error_pwd=\uBE44\uBC00\uBC88\uD638\uC785\uB825\uC624\uB958 +FR-Hyperlink_ChartHyperlink=\uCC28\uD2B8\uD558\uC774\uD37C\uB9C1\uD06C +M_Edit-FormatBrush=\uC11C\uC2DD\uD504\uB9B0\uD2B8(B) +Indent-Pixel=\uD654\uC18C +FR-Designer-Widget-Style_Border_Line=\uD14C\uB450\uB9AC\uAD75\uAE30 +Widget-Default_Widget_Config=\uAE30\uBCF8\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4 +Version-does-not-support=\uD604\uC7AC \uC0AC\uC6A9\uD558\uACE0 \uC788\uB294 lic\uC740 \uC6D0\uACA9 \uB514\uC790\uC778 \uAE30\uB2A5\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC73C\uBBC0\uB85C lic\uC744 \uC5C5\uADF8\uB808\uC774\uB4DC \uD574 \uC8FC\uC2ED\uC2DC\uC624. +StyleAlignment-Right_To_Left=\uC624\uB978\uCABD\uC5D0\uC11C\uC67C\uCABD\uC73C\uB85C +Style-Spacing_Before=\uC139\uC158\uC55E +Has_Existed=\uC774\uBBF8\uC874\uC7AC\uD569\uB2C8\uB2E4. +FR-Designer_DisplayNothingBeforeQuery=\uCC3E\uC544\uBCF4\uAE30\uD074\uB9AD\uC804\uBB38\uC11C\uB0B4\uC6A9\uBCF4\uC774\uC9C0\uC54A\uAE30 +Still=\uC5EC\uC804\uD788 +JS_WARNING2=\\uc608\uFF1Ahttp\://localhost\:8075/WebReport/demo.js +JS_WARNING1=\\uc0c1\uB300\uBB38\uC11C\uD504\uB85C\uC81D\uD2B8\uB514\uB809\uD130\uB9AC(\uC608:WebReport,WebReport\\js\uC5D0\uC11C\uC778\uC6A9\uD55C js \uD30C\uC77Ctest.js)\uB294\uC0C1\uB300\uACBD\uB85C\uAC00js/test.js\uC785\uB2C8\uB2E4. +Connectionline=\uC5F0\uACB0\uBAA8\uB4DC +Utils-Insert_Record=\uB808\uCF54\uB4DC\uC0BD\uC785 +Set-Parameter-Name=\uB9E4\uAC1C\uBCC0\uC218\uC774\uB984\uC744\uC124\uC815\uD574\uC8FC\uC2ED\uC2DC\uC624 +More-information=\uC815\uBCF4\uB354\uBCF4\uAE30 +Parameter-Boolean=\uBD88\uB9B0\uD0C0\uC785 +FRFont-Strikethrough=\uC120\uC0AD\uC81C +Server-version-tip=\uD604\uC7AC\uC5F0\uACB0\uB41C\uC11C\uBC84\uBC84\uC804\uC774\uB2F9\uC2E0\uC774\uC0AC\uC6A9\uD558\uACE0\uC788\uB294\uC124\uACC4\uAE30\uBC84\uC804\uBC88\uD638\uBCF4\uB2E4\uB0AE\uC2B5\uB2C8\uB2E4.\uACC4\uC18D\uC5F0\uACB0\uD558\uBA74\uD3B8\uC9D1\uD558\uACE0\uC788\uB294\uC77C\uBD80\uC18D\uC131\uC774\uC800\uC7A5\uB418\uC9C0\uC54A\uC744\uC218\uC788\uC2B5\uB2C8\uB2E4. \uC5F0\uACB0\uD574\uC57C\uD560\uACBD\uC6B0\uC124\uACC4\uAE30\uBC84\uC804\uACFC\uC11C\uBC84\uBC84\uC804\uC744\uC77C\uCE58\uC2DC\uCF1C\uC8FC\uC2ED\uC2DC\uC624. +Form-All_Files=\uBAA8\uB4E0\uD30C\uC77C +DBCP_NUM_TEST_PER_EVCTION_RUN=\uC720\uD734\uB9C1\uD06C\uD68C\uC218\uAC80\uC0AC\uC218 +FR-Designer-FRFont_Family=\uC774\uB984 +Device=\uC124\uBE44 +M_Insert-Cell=\uC140\uC694\uC18C +Present-Formula_Present=\uC218\uC2DD\uD615\uD0DC +FRFont-Superscript=\uC717\uC904 +CellWrite-Page_Before_Column=\uC5F4\uC55E\uD398\uC774\uC9C0\uB098\uB204\uAE30 +Golden=\uACE8\uB4DC\uC0C9 +Preference-Support_Cell_Editor_Definition=\uC140\uD3B8\uC9D1\uAE30\uC9C0\uC6D0 +M-Page_Preview=\uD398\uC774\uC9C0\uB098\uB204\uAE30\uBBF8\uB9AC\uBCF4\uAE30 +HJS-CC_to=\uBC1C\uC1A1 +Tree-Select_Leaf_Only=\uB9C6(Leaf) \uB178\uB4DC\uB85C\uB9CC\uB418\uB3CC\uB9AC\uAE30 +Pointer-A-Tick-Order=\uD3EC\uC778\uD130\uAC12\uBC0F\uB208\uAE08\uAC12\uC218\uB4F1\uAE09 +Pink=\uD551\uD06C +StyleAlignment-Distibuted=\uBD84\uC0B0\uC815\uB82C +Odd=\uD640\uC218 +already-saved=\uC800\uC7A5\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +FR-Hyperlink_Chart_Cell=\uCC28\uD2B8 \uD558\uC774\uD37C\uB9C1\uD06C-\uC140 \uC5F0\uB3D9 +Style-Left_Indent=\uC67C\uCABD\uB4E4\uC5EC\uC4F0\uAE30 +Offline=\uC624\uD504\uB77C\uC778 +Form-Hierarchy_Tree_Next=\uB2E4\uC74C +Needle=\uD3EC\uC778\uD130 +GoogleMap=\uAD6C\uAE00\uC9C0\uB3C4 +Running=\uC2E4\uD589\uC911 +M_Edit-Unmerge_Cell=\uC140\uBCD1\uD569\uCDE8\uC18C +Out_Border_Line=\uBC14\uAE65\uCABD\uD14C\uB450\uB9AC\uC120 +Style-Spacing=\uAC04\uACA9 +FR-Utils_Submit=\uC81C\uCD9C +ReportServerP-Previous=\uC774\uC804\uD398\uC774\uC9C0 +StyleAlignment-Text_Style=\uD14D\uC2A4\uD2B8\uCEE8\uD2B8\uB864 +RelatedChart=\uCC28\uD2B8\uC5F0\uB3D9 +ProcessManager=\uD504\uB85C\uC138\uC2A4\uAD00\uB9AC +Cancel_Repeat_Attributes=\uC911\uBCF5\uB41C\uD589\uACFC\uC5F4\uCDE8\uC18C +FR-App-File_Message=\uC815\uBCF4 +Datasource-Stored_Procedure=\uC800\uC7A5\uACFC\uC815 +RWA-Row_Offset=\uD589\uC635\uC14B +M_Format-Style=\uC591\uC2DD +detail_description=\uC0C1\uC138\uC124\uBA85 +FR-Designer-Widget-Style_Title_Content=\uC81C\uBAA9\uB0B4\uC6A9 +ParameterD-Report_Parameter=\uBB38\uC11C\uB9E4\uAC1C\uBCC0\uC218 +HF-Edit_Header=\uD398\uC774\uC9C0\uBA38\uB9AC\uAE00\uD3B8\uC9D1 +Sytle-FRFont=\uAE00\uAF34 +FR-Designer_Finish_Export=\uB0B4\uBCF4\uB0B4\uAE30\uC644\uB8CC +MultiFileUpload=\uC5EC\uB7EC\uD30C\uC77C\uC5C5\uB85C\uB4DC +HF-Page_Number=\uD398\uC774\uC9C0\uBC88\uD638 +Style-Right_Indent=\uC624\uB978\uCABD\uB4E4\uC5EC\uC4F0\uAE30 +Desktop=\uBC14\uD0D5\uD654\uBA74 +FR-Server-All_Error=\uC624\uB958 +ConditionB-Operator=\uC870\uC791\uBD80\uD638 +Today=\uC624\uB298 +Form-Widget_Name=\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uC774\uB984 +Covered_All=\uBAA8\uB450\uB36E\uC5B4\uC50C\uC6B0\uAE30 +Day=\uC77C +External=\uBC14\uAE65 +Black_Font=\uD751\uCCB4 +LOG-Report_Server_IS_Started=\uBB38\uC11C\uC11C\uBC84\uC2E4\uD589\uC911 +Tips\:You_Can_Input_B1_To_Input_The_Data_Of_The_First_Row_Second_Column=\uC54C\uB9BC\: B1\uC744\uC785\uB825\uD558\uC5EC\uCCAB\uBC88\uC9F8\uD589\uB450\uBC88\uC9F8\uC5F4\uC758\uB370\uC774\uD130\uB97C\uC785\uB825\uD560\uC218\uC788\uC2B5\uB2C8\uB2E4. +FR-Designer_ChooseOneButton=\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uC120\uD0DD\uD6C4\uCD94\uAC00\uD574\uC8FC\uC2ED\uC2DC\uC624 +Widget-Sizing=\uD06C\uAE30\uC870\uC815 +NO_Border_Line=\uD14C\uB450\uB9AC\uC120\uC5C6\uC74C +Cell_Data=\uC140\uB370\uC774\uD130 +StyleAlignment-Vertical_Text=\uD14D\uC2A4\uD2B8\uC138\uB85C\uC815\uB82C +Label=\uB808\uC774\uBE14 +Orange=\uC8FC\uD669 +zeroMarginWarn=\uD504\uB9B0\uD130\uC5D0\uBB3C\uB9AC\uC801\uC5EC\uBC31\uC874\uC7AC
\uBB38\uC11C\uC758\uD398\uC774\uC9C0\uC5EC\uBC31\uC124\uC815\uC774\uB108\uBB34\uC791\uC73C\uBA74
\uB0B4\uC6A9\uC774\uC644\uC804\uD558\uAC8C\uC778\uC1C4\uB418\uC9C0\uC54A\uC744\uC218\uC788\uC2B5\uB2C8\uB2E4.
  +Widget-Date_Selector_Return_Type=\uB9AC\uD134\uAC12\uC720\uD615 +Utils-Switch_To_Template_Reportlet=\uD15C\uD50C\uB9BF\uB124\uD2B8\uC6CC\uD06C\uBB38\uC11C\uB85C\uC804\uD658 +satisfy=\uC870\uAC74\uCDA9\uC871 +FR-Designer_WidgetDisplyPosition=\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uD654\uBA74\uC704\uCE58 +FR-Base_Top=\uC704 +FR-Designer_Form-CheckBox=\uCCB4\uD06C\uBC15\uC2A4 +Reportlet-Parameter_Type=\uB9E4\uAC1C\uBCC0\uC218\uC804\uB2EC\uBC29\uC2DD +sending=\uBC1C\uC1A1\uC911... +FR-Designer-FRFont_Foreground=\uC0C9 +FR-Import-Export_SVG=SVG\uC11C\uC2DD +M_Edit-Clear_Contents=\uB0B4\uC6A9(C) +Session=\uC138\uC158 +Widget-Load_Type=\uB85C\uB529 +template_unsaved=\uD15C\uD50C\uB9BF\uC744\uC800\uC7A5\uD560\uC218\uC5C6\uC2B5\uB2C8\uB2E4. +check_communication=\uB124\uD2B8\uC6CC\uD06C\uD1B5\uC2E0\uC774\uC815\uC0C1\uC778\uC9C0\uB610\uB294\uC11C\uBC84\uAC00\uC815\uC0C1\uC801\uC73C\uB85C\uC2E4\uD589\uB418\uACE0\uC788\uB294\uC9C0\uD655\uC778\uD574\uC8FC\uC2ED\uC2DC\uC624. +List-Need_Head=\uB9AC\uC2A4\uD2B8\uD5E4\uB4DC\uAC00\uD544\uC694\uD569\uB2C8\uB2E4. +FR-Designer-Plugin_Has_Been_Installed=\uD50C\uB7EC\uADF8\uC778\uC774\uC124\uCE58\uB418\uC5C8\uC2B5\uB2C8\uB2E4.\uD50C\uB7EC\uADF8\uC778\uC744\uC5C5\uB370\uC774\uD2B8\uD558\uB824\uBA74\uD50C\uB7EC\uADF8\uC778\uC5C5\uB370\uC774\uD2B8\uB85C\uC804\uD658\uD574\uC8FC\uC2ED\uC2DC\uC624. +FR-Widget_Tree_And_Table=\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uD2B8\uB9AC\uC640\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uD45C +FR-Base_Help=\uB3C4\uC6C0\uB9D0 +FR-Designer-Plugin_Update_Successful=\uD50C\uB7EC\uADF8\uC778\uC5C5\uADF8\uB808\uC774\uB4DC\uC131\uACF5.\uC7AC\uBD80\uD305\uC11C\uBC84\uAC00\uC720\uD6A8\uD569\uB2C8\uB2E4. +August=8\uC6D4 +LOG-Is_Being_Openned=\uC5EC\uB294\uC911 +BackgroundTexture-Oak=\uC0C1\uBAA9 +Multi_nam_formula=\\ub370\uC774\uD130\uC138\uD2B8\uBA85\: \uB370\uC774\uD130\uC138\uD2B8\uC870\uAC74\: +TurnOn=\uC5F4\uAE30 +HJS-Send_Successfully=\uBC1C\uC1A1\uC131\uACF5 +Mon=1 +Inner_Parameter=\uB0B4\uC7A5\uB9E4\uAC1C\uBCC0\uC218 +Required=\uD544\uC218\uC785\uB825\uC0AC\uD56D +Summary=\uCDE8\uD569 +template_unopened=\uD15C\uD50C\uB9BF\uC744\uC5F4\uC218\uC5C6\uC2B5\uB2C8\uB2E4. +FR-Base_Bottom=\uC544\uB798 +DataFunction-Min=\uCD5C\uC18C\uAC12 +StyleFormat-Percent=\uBC31\uBD84\uC728 +FR-App-All_Custom=\uC0AC\uC6A9\uC790\uC815\uC758 +M_Insert-Data_Column=\uC0BD\uC785\uB370\uC774\uD130\uC5F4 +PLEASE=\uC694\uCCAD +Numbers=\uC218\uB7C9 +Release_Lock=\uBE44\uBC00\uBC88\uD638\uD574\uC81C +Background-Background_is_NULL=\uBC30\uACBD\uC5C6\uC74C +FR-Designer_Sytle-FRFont=\uAE00\uAF34 +Gradation=\uB2E8\uACC4 +The_current_list_is_empty=\uD604\uC7AC\uB9AC\uC2A4\uD2B8\uBE44\uC5B4\uC788\uC74C +Formula_Dictionary_Display_Examples=\\uc2e4\uC81C\uAC12\uBC94\uC704:\ +Schedule-Template_Parameter=\uD15C\uD50C\uB9BF\uB9E4\uAC1C\uBCC0\uC218 +JSShow=\uB3D9\uC801\uB514\uC2A4\uD50C\uB808\uC774 +Level_coordinates=\uACC4\uCE35\uBCF4\uC870\uC88C\uD45C +MainGraduationLine=\uC8FC\uB208\uAE08\uC120 +Hyperlink-Web_link=\uC6F9\uB9C1\uD06C +StyleAlignment-between_-90_and_90=-90\uC64090\uC0AC\uC774 +FormulaD-Custom_Function=\uC0AC\uC6A9\uC790\uC815\uC758\uD568\uC218 +FR-Designer_Integer=\uC815\uC218 +PageSetup-Finis_Start_Row=\uC911\uBCF5\uC885\uB8CC\uD589 +RWA-Remove_Field=\uD544\uB4DC\uC81C\uAC70 +Form-Desin_Width=\uB514\uC790\uC778\uB108\uBE44 +No-tableData=\uB3CC\uC544\uAC00\uAE30\uB370\uC774\uD130\uC138\uD2B8\uAC00\uC5C6\uC2B5\uB2C8\uB2E4. +Page_Total=\uCD1D +FR-Designer-Plugin_Connect_Server_Error=\uD50C\uB7EC\uADF8\uC778\uC2A4\uD1A0\uC5B4\uB97C\uC5F0\uACB0\uD560\uC218\uC5C6\uC2B5\uB2C8\uB2E4.\uC7A0\uC2DC\uD6C4\uB2E4\uC2DC\uC2DC\uB3C4\uD574\uC8FC\uC2ED\uC2DC\uC624. +Import-Excel_Source=Excel\uC18C\uC2A4\uD30C\uC77C +Utils-Left_to_Right_a=\uC67C\uCABD\uC5D0\uC11C\uC624\uB978\uCABD\uC73C\uB85C +ExpandD-Expand_Attribute=\uD655\uC7A5\uC18D\uC131 +Report-Write_Attributes=\uBB38\uC11C\uAE30\uC785\uC18D\uC131 +Utils-Current_Column=\uD604\uC7AC\uC5F4 +Need_Max_Value=\uD544\uC694\uCD5C\uB300\uAC12 +Report_Not_Exist=\uC120\uD0DD\uD55C\uBB38\uC11C\uAC00\uC874\uC7AC\uD558\uC9C0\uC54A\uC2B5\uB2C8\uB2E4\uFF01 +HF-Insert_Content=\uB0B4\uC6A9\uC0BD\uC785 +UpParent=\uC704\uBD80\uBAA8\uC140 +PageSetup-Page=\uC6F9\uD398\uC774\uC9C0 +Utils-Move_Up=\uC704\uB85C\uC774\uB3D9 +BackgroundTexture-PurpleMesh=\uBCF4\uB77C\uC0C9\uACA9\uC790\uBAA8\uC591 +Export-Word=Word\uC11C\uC2DD +ServerM-Widget_Manager=\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uAD00\uB9AC +FR-Designer-Basic_Activation_Key=\uC124\uACC4\uAE30\uC77C\uB828\uBC88\uD638\uFF1A +FR-App-Template_Report_Not_Exist=\uC120\uD0DD\uD55C\uBB38\uC11C\uAC00\uC874\uC7AC\uD558\uC9C0\uC54A\uC2B5\uB2C8\uB2E4.\! +Protected=\uBCF4\uD638 +Skip=\uC810\uD504 +FR-Designer_PageSetup-Vertically=\uC218\uC9C1\uAC00\uC6B4\uB370\uC815\uB82C +revert=\uD574\uC81C +PageSetup-Predefined=\uC0AC\uC804\uC815\uC758\uB41C +Border-Style-Radius=\uB465\uADFC\uBAA8\uC11C\uB9AC\uD14C\uB450\uB9AC +IntPart=\uC815\uC218\uBD80\uBD84 +ExpandD-Data_Column=\uB370\uC774\uD130\uC5F4 +Sort-Ascending=\uC624\uB984\uCC28\uC21C +FR-Designer-Widget_Style=\uC591\uC2DD +parameter_name_exist=\uD574\uB2F9\uB9E4\uAC1C\uBCC0\uC218\uC774\uB984\uC774\uC774\uBBF8\uC874\uC7AC\uD569\uB2C8\uB2E4 +FR-Designer_Layer-Build=\uCE35\uBCC4\uC0DD\uC131 +Please_Rename=\uB9AC\uB124\uC784\uD574\uC8FC\uC2ED\uC2DC\uC624. +Form-Editing_Listeners=\uC774\uBCA4\uD2B8\uD3B8\uC9D1 +RWA-Smart_Add_Fields=\uD544\uB4DC\uC2A4\uB9C8\uD2B8\uCD94\uAC00 +FR-Designer-Tree_Width=\uB108\uBE44 +Record=\uB808\uCF54\uB4DC +Poly-Report_Component=\uCDE8\uD569\uBB38\uC11C\uC5B4\uC148\uBE14\uB9AC +Options=\uC635\uC158 +NS-war-remote=\uC624\uB958\uCF54\uB4DC\:1117 \uC555\uCD95\uC124\uCE58\uB97C\uC9C0\uC6D0\uD558\uC9C0\uC54A\uC2B5\uB2C8\uB2E4. \uC6D0\uACA9\uB514\uC790\uC778 +Sche-Minute=\uBD84 +Three_Rows_Of_Three_Grid=3\uD589 3\uC5F4\uC758\uADF8\uB9AC\uB4DC +WorkSheet=\uC790\uC720\uBB38\uC11C +FR-Designer-Widget_Size=\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uD06C\uAE30 +BindColumn-Select=\uB9AC\uC2A4\uD2B8 +FR-Widget_Mobile_Terminal=\uBAA8\uBC14\uC77C\uB2E8\uB9D0 +FR-Background_Image_Titled=\uD0C0\uC77C +SetPrinterOffset=\uD504\uB9B0\uD130\uC635\uC14B +FR-Designer-Plugin_Installed=\uC124\uCE58\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +FR-Designer-Hyperlink_Name=\uC774\uB984 +FR-Designer_Form-Button=\uD0A4 +Black=\uBE14\uB799 +FR-Designer-Widget-Style_Border_Color=\uD14C\uB450\uB9AC\uC0C9 +Set_Submit_Event=\uC81C\uCD9C\uC774\uBCA4\uD2B8\uC124\uC815 +PDF-Print_isPopup=\uC124\uC815\uBC15\uC2A4\uD31D\uC5C5\uC5EC\uBD80 +LayerPageReport_CountPerPage=\uD398\uC774\uC9C0\uBCC4 \uAE30\uB85D\uC218 +Display_Modes=\uBAA8\uB4DC\uBCF4\uC774\uAE30 +RowSpan=\uD589\uC2A4\uD32C +Datasource-Test_Connection=\uD14C\uC2A4\uD2B8\uB9C1\uD06C +Function-Function_Manager=\uD568\uC218\uAD00\uB9AC\uC790 +Host_Name=\uD638\uC2A4\uD2B8\uCEF4\uD4E8\uD130\uC774\uB984 +CellWrite-Show_As_HTML=HTML\uB85C\uB0B4\uC6A9\uBCF4\uC774\uAE30 +FR-Designer-Widget-Style_Shadow=\uC74C\uC601 +FR-Designer_Parameter_String=\uBB38\uC790\uC5F4 +Form-SupportTag=\uB808\uC774\uBE14\uD615\uC2DD\uBCF4\uC774\uAE30 +ReportD-Report_Write_Attributes=\uBB38\uC11C\uAE30\uC785\uC18D\uC131 +DataFunction-Count=\uAC1C\uC218 +Top_And_Thick_Bottom_Border_Line=\uC704\uD14C\uB450\uB9AC\uC120\uACFC\uAD75\uC740\uBC11\uD14C\uB450\uB9AC\uC120 +Client=\uD074\uB77C\uC774\uC5B8\uD2B8\uB2E8 +BindColumn-Result_Serial_Number_Start_From_1=\uBC88\uD638\uB2941\uBD80\uD130\uC2DC\uC791 +History=\uD788\uC2A4\uD1A0\uB9AC +Already_exists=\uC774\uBBF8\uC874\uC7AC\uD569\uB2C8\uB2E4. \uB2E4\uC2DC\uC785\uB825\uD574\uC8FC\uC2ED\uC2DC\uC624\uFF01 +Datasource-Original_Charset=\uCD08\uAE30\uCF54\uB529 +FR-Base_Left=\uC67C\uCABD +ReportServerP-Next=\uB2E4\uC74C\uD398\uC774\uC9C0 +BindColumn-Top_N=\uC55EN\uAC1C +Animation_Special=\uD2B9\uD6A8 +Widget-Chart_Widget_Config=\uCC28\uD2B8\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4 +FR-Designer-Plugin_Cannot_Update_Not_Install=\uD50C\uB7EC\uADF8\uC778\uC744\uC5C5\uB370\uC774\uD2B8\uD560\uC218\uC5C6\uC2B5\uB2C8\uB2E4.\uD574\uB2F9\uD50C\uB7EC\uADF8\uC778\uC774\uC124\uCE58\uB418\uC5C8\uB294\uC9C0\uAC80\uC0AC\uD574\uC8FC\uC2ED\uC2DC\uC624. +After_Changed_Some_Attributes_Are_Different=\uC804\uD658\uD6C4, \uBB38\uC11C\uC758\uC77C\uBD80\uC18D\uC131\uC774\uBCC0\uD560\uC218\uC788\uC2B5\uB2C8\uB2E4.\uACC4\uC18D\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? +PieStyle=\uD30C\uC774 +HF-Are_you_sure_to_delete_it=\uC774\uC694\uC18C\uB97C\uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? +Utils-Design-File_Open=\uC5F4\uAE30 +FR-Utils_Label=\uB808\uC774\uBE14 +Data-Label=\uB808\uC774\uBE14 +M_Insert-Text=\uC77C\uBC18\uD14D\uC2A4\uD2B8\uC0BD\uC785 +Form-View_Tree=\uBDF0\uD2B8\uB9AC +M_Insert-Chart=\uC0BD\uC785\uCC28\uD2B8 +HF-Even_Page=\uC9DD\uC218\uD398\uC774\uC9C0 +ReportServerP-Report_server_parameter=\uBB38\uC11C\uC11C\uBC84\uB9E4\uAC1C\uBCC0\uC218 +JavaScript-Form_Submit=\uD3FC\uC81C\uCD9C +Horizontal-Split_Layout=\uC218\uD3C9\uBD84\uD560\uB808\uC774\uC544\uC6C3 +BorderLayout-Center=\uC911\uAC04 +INFO-Reset_Webapp=\uC751\uC6A9\uC11C\uBC84\uC7AC\uC124\uCE58 +FR-Designer_Text=\uD14D\uC2A4\uD2B8 +IN_and_INOUT_type_not_as_cursor=IN\uACFC INOUT \uC720\uD615\uC740\uCEE4\uC11C\uB85C\uD560\uC218\uC5C6\uB2E4. +Main_Axis=\uC8FC\uC88C\uD45C\uCD95 +M_Edit-Cut=\uC798\uB77C\uB0B4\uAE30(T) +Utils-The_Name_has_been_existed=\uC774\uC774\uB984\uC740\uC774\uBBF8\uC874\uC7AC\uD569\uB2C8\uB2E4. +FR-Background_Image=\uC774\uBBF8\uC9C0 +Character=\uD14D\uC2A4\uD2B8 +Unit_Thousand=\uCC9C +Test=\uD14C\uC2A4\uD2B8 +Utils-Would_you_like_to_save=\uC800\uC7A5\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? +HF-Header_and_Footer=\uBA38\uB9AC\uAE00\uACFC\uBC14\uB2E5\uAE00 +LIST_MODE=\uB9AC\uC2A4\uD2B8 +HF-Insert_Image=\uC774\uBBF8\uC9C0\uC0BD\uC785 +FR-Designer-Widget-Style_Standard=\uD45C\uC900 +FR-Designer_Form-List=\uB9AC\uC2A4\uD2B8 +BackgroundTexture-Denim=\uB2A5\uC9C1\uBB3C +Execute_Report_by_Layer_Engine=\uC9C1\uB82C\uC5D4\uC9C4\uC73C\uB85C\uBB38\uC11C\uC2E4\uD589 +M_Edit-Bring_Forward=\uC704\uCE35\uC73C\uB85C\uC774\uB3D9(F) +Choose_All=\uBAA8\uB450\uC120\uD0DD +Form-RadioGroup=\uB2E8\uC77C\uC120\uD0DD\uD0A4\uD328\uB4DC +FR-Base_Remove=\uC0AD\uC81C +FR-Remote_Connect2Server_Again=\uC5F0\uACB0\uC774\uB04A\uC5B4\uC84C\uC2B5\uB2C8\uB2E4.\uB2E4\uC2DC\uC11C\uBC84\uB97C\uC5F0\uACB0\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? +Semicolon=\uC138\uBBF8\uCF5C\uB860 +StyleFormat-Category=\uCE74\uD14C\uACE0\uB9AC +Report_Template=\uBB38\uC11C\uD15C\uD50C\uB9BF +Utils-Beyond_the_right_side_of_Border=\uC624\uB978\uCABD\uC5EC\uBC31\uBC97\uC5B4\uB0A8 +BackgroundTexture-Papyrus=\uD30C\uD53C\uB8E8\uC2A4\uC885\uC774 +LayerPageReport_PageEngine=\uD398\uC774\uC9C0\uBCC4\uC5F0\uC0B0\uBD84\uD560\uC2E4\uD589\uBB38\uC11C\uC0AC\uC6A9 +Schedule-The_selected_file_must_be_end_with_filter=\uC120\uD0DD\uD55C\uD30C\uC77C\uC740.cpt \uB610\uB294 .class \uB610\uB294 .frm \uB85C\uB05D\uB0B4\uC57C\uD569\uB2C8\uB2E4. +Provide=\uC81C\uACF5 +FormulaD-Math_&_Trig=\uC218\uD559\uACFC\uC0BC\uAC01\uD568\uC218 +FR-Designer-StyleAlignment_Right=\uC624\uB978\uCABD\uC5D0\uB9DE\uCDA4 +Error_TableDataNameRepeat=\uC11C\uBC84\uB370\uC774\uD130\uC138\uD2B8\uC5D0\uC874\uC7AC\uD558\uACE0\uC788\uAC70\uB098\uC5EC\uB7EC\uAC1C\uB370\uC774\uD130\uC138\uD2B8\uC774\uB984\uC774\uC911\uBCF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +Choose_None=\uBBF8\uC120\uD0DD +File-tree=\uD30C\uC77C\uD2B8\uB9AC +FRFont-bold=\uAD75\uAC8C +FR-Designer_Set_Submit_Condition=\uC81C\uCD9C\uC870\uAC74\uC124\uC815 +Form-Change_Widget_Name=\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uC774\uB984\uBCC0\uACBD +ReportColumns-Report_Columns=\uBB38\uC11C\uC140\uB098\uB204\uAE30 +Can_not_use_FormatBursh=\uC911\uBCF5\uC120\uD0DD\uB41C\uC601\uC5ED\uC5D0\uC11C\uC2DD\uC744\uC774\uC6A9\uD558\uC5EC\uC778\uC1C4\uD560\uC218\uC5C6\uC2B5\uB2C8\uB2E4.\! +CellElement-Property_Table=\uC140\uC18D\uC131\uD45C +Dictionary-Dynamic_SQL=\uB3D9\uC801 SQL +FR-Designer_Form-CheckBoxGroup=\uCCB4\uD06C\uBC15\uC2A4\uADF8\uB8F9 +DBCP_TIME_BETWEEN_EVICTIONRUNSMILLIS=\uC720\uD734\uB9C1\uD06C\uD68C\uC218\uAE30\uD734\uBA74\uC2DC\uAC04 +ReportD-Export_Hided_Column=\uC228\uAE34\uC5F4\uBCF4\uC774\uAE30 +Preference-Support_Undo=\uD574\uC81C\uC9C0\uC6D0 +FR-mobile_report_analysis=\uBCF4\uACE0\uC11C \uD574\uC11D +Month=\uC6D4 +Utils-Column_Width=\uC5F4\uB108\uBE44 +Collect-Use_Designer=\uC124\uACC4\uAE30\uC0AC\uC6A9 +Widget-User_Defined_Editor=\uC0AC\uC804\uC815\uC758\uB41C\uD3B8\uC9D1\uAE30\uB294\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uAD00\uB9AC\uBA54\uB274\uC5D0\uC11C\uB9CC\uC18D\uC131\uC744\uBCC0\uACBD\uD560\uC218\uC788\uC2B5\uB2C8\uB2E4. +Unit_Ten_Thousand=\uB9CC +Data_Setting=\uB370\uC774\uD130\uC124\uC815 +ECP_input_pwd=\uC554\uD638\uB97C\uC785\uB825\uD574\uC8FC\uC2ED\uC2DC\uC624\: +period=. +Note=\uBE44\uACE0 +Multiline=\uC5EC\uB7EC\uD589\uD3B8\uC9D1 +Datasource-Convert_Charset=\uCF54\uB529\uC804\uD658 +DashBoard-ConnectionList=\uB370\uC774\uD130\uB9C1\uD06C +Utils-Submit_Forcibly=\uC81C\uCD9C\uAC15\uD589 +Parent_Marked_Field=\uBD80\uBAA8\uD0DC\uADF8\uD544\uB4DC +Logout=\uB098\uAC00\uAE30 +FR-Designer_Show_Blank_Row=\uACF5\uBC31\uD589\uBCF4\uCDA9 +FR-Base_Format=\uC11C\uC2DD +FR-App-Export_png=PNG\uC11C\uC2DD +Delete_Column=\uC5F4\uC0AD\uC81C +SecondGraduationLine=\uBCF4\uC870\uB208\uAE08\uC120 +SpecifiedG-Groups=\uADF8\uB8F9 +CONTINUUM_MODE=\uC774\uC6C3\uD558\uB294\uC5F0\uC18D\uADF8\uB8F9 +Datasource-Connection_failed=\uB9C1\uD06C\uC2E4\uD328 +CategoryName=\uCE74\uD14C\uACE0\uB9AC\uC774\uB984 +DBCP_INITIAL_SIZE=\uCD08\uAE30\uD654\uB9C1\uD06C\uC218 +Colors=\uC0C9 +FR-Import-Export_CSV=CSV\uC11C\uC2DD(\uC27C\uD45C\uAD6C\uBD84) +FR-Designer-StyleAlignment_Left=\uC67C\uCABD\uC5D0\uB9DE\uCDA4 +BackgroundTexture-PaperBag=\uC885\uC774\uBC31 +RWA-BuildIn_SQL=\uB0B4\uC7A5SQL +SingleLayer=\uB2E8\uCE35 +Or-you=\uB610\uB294\uB2F9\uC2E0\uC774 +FR-Designer_Certificate_Path=\uC778\uC99D\uC11C\uACBD\uB85C +Utils-Last_Page=\uB9C8\uC9C0\uB9C9\uD398\uC774\uC9C0 +BarCodeD-Drawing_Text=\uBC14\uCF54\uB4DC\uD14D\uC2A4\uD2B8\uBCF4\uC774\uAE30 +Warning-Template_Do_Not_Exsit=\uD15C\uD50C\uB9BF\uC774\uC874\uC7AC\uD558\uC9C0\uC54A\uC2B5\uB2C8\uB2E4. +BindColumn-Group=\uADF8\uB8F9 +Export-SVG=SVG\uC11C\uC2DD +Plane3D=\uD3C9\uBA743D +SessionID=SessionID\uB294 \uD604\uC7AC\uC811\uADFC\uD15C\uD50C\uB9BF\uC758\uC138\uC158 ID\uB9E4\uAC1C\uBCC0\uC218. +FR-Designer_Height=\uB192\uC774 +HF-Odd_Page=\uD640\uC218\uD398\uC774\uC9C0 +About-All_Rights_Reserved=\uBAA8\uB4E0\uAD8C\uB9AC\uB97C\uB0A8\uAE41\uB2C8\uB2E4. +Utils-Current_Cell=\uD604\uC7AC\uADF8\uB9AC\uB4DC +Web_Preview_Message=\uD15C\uD50C\uB9BF\uD30C\uC77C\uC744\uD604\uC7AC\uC2E4\uD589\uD658\uACBD\uB514\uB809\uD130\uB9AC\uC5D0\uC800\uC7A5\uD574\uC8FC\uC2ED\uC2DC\uC624. +FR-Hyperlink_Chart_Float=\uCC28\uD2B8\uD558\uC774\uD37C\uB9C1\uD06C-\uC5F0\uB3D9\uC11C\uC2A4\uD39C\uC2A4\uC694\uC18C +Dic-Data_Query=\uB370\uC774\uD130\uCC3E\uC544\uBCF4\uAE30 +CellWrite-Print_Content=\uC778\uC1C4/\uBD88\uB7EC\uC624\uAE30 \uC140 \uB0B4\uC6A9 +Privilege-Selected_None_Of_Any_Items=\uC120\uD0DD\uD55C\uD56D\uC774\uC5C6\uC2B5\uB2C8\uB2E4. +FRFont-Size=\uD06C\uAE30 +Function-J2EE_server=J2EE\uC11C\uBC84 +FR-Designer_Allow_Blank=\uBE48\uCE78\uD5C8\uC6A9 +Build_Tree_Accord_Parent_Marked_Filed=\uC120\uD0DD\uD55C\uB370\uC774\uD130\uC138\uD2B8\uC758\uBD80\uBAA8\uD0DC\uADF8\uD544\uB4DC\uC5D0\uB530\uB77C\uD2B8\uB9AC\uC0DD\uC131 +Preference-Horizontal_Scroll_Bar_Visible=\uC218\uD3C9\uC2A4\uD06C\uB864\uBC14\uB97C\uBCFC\uC218\uC788\uC2B5\uB2C8\uB2E4. +Scope=\uBC94\uC704 +Save_All_Records_In_Memory=\uBAA8\uB4E0\uB808\uCF54\uB4DC\uAC00\uBA54\uBAA8\uB9AC\uC5D0\uC800\uC7A5\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +FreezeWarning1=\uCD08\uAE30\uAC12>\uB9C8\uC9C0\uB9C9\uAC12 +FlowLayout=\uC720\uB3D9\uC2DD\uB808\uC774\uC544\uC6C3 +M_Report-Report_Footer=\uBB38\uC11C\uD398\uC774\uC9C0\uBC14\uB2E5\uAE00 +FR-Action_Add=\uCD94\uAC00 +BorderLayout-East=\uB3D9 +feedback_tip=400\uC790\uB97C\uB118\uC9C0\uC54A\uAC8C\uBB38\uC81C\uB97C\uC124\uBA85\uD574\uC8FC\uC2ED\uC2DC\uC624. +FS_Start_Date=\uC2DC\uC791\uB0A0\uC9DC +FR-ConditionB_Operator=\uC870\uC791\uBD80\uD638 +Printer-Alias=\uB2C9\uB124\uC784 +DS-Class_Name=\uD074\uB798\uC2A4\uB124\uC784 +FR-Designer-Plugin_Has_Been_Disabled=\uD50C\uB7EC\uADF8\uC778\uC0AC\uC6A9\uC774\uAE08\uC9C0\uB418\uC5C8\uC2B5\uB2C8\uB2E4.\uC124\uACC4\uAE30\uBC0F\uC11C\uBC84\uB97C\uC7AC\uBD80\uD305\uD558\uB824\uBA74\uC11C\uBC84\uB97C\uC218\uB3D9\uC7AC\uBD80\uD305\uD574\uC57C\uD569\uB2C8\uB2E4. +Sort-Original=\uC21C\uC11C\uC5C6\uC74C +Utils-Top_to_Bottom_a=\uC704\uC5D0\uC11C\uC544\uB798\uB85C +Parameter-String=\uBB38\uC790\uC5F4 +InnerRadis=\uC548\uC9C0\uB984\uD06C\uAE30 +Want_To_Cover_It=\uB36E\uC5B4\uC50C\uC6B0\uACA0\uC2B5\uB2C8\uAE4C? +Divided_stage=\uAD6C\uBD84\uB2E8\uACC4 +Seriously=\uC2EC\uAC01 +ReportServerP-PDF=PDF +Utils-Switch_To_Class_Reportlet=\uD504\uB85C\uADF8\uB7A8\uB124\uD2B8\uC6CC\uD06C\uBB38\uC11C\uB85C\uC804\uD658 +FR-Designer_Show_Blank_Column=\uACF5\uBC31\uC5F4\uBCF4\uCDA9 +M_Edit-Redo=\uB9AC\uC6CC\uD06C +Visibility=\uC2DC\uAC01\uC131 +Series_Use_Default=\uACC4\uC5F4\uAE30\uBCF8\uC0AC\uC6A9 +Has_Selected=\uC120\uD0DD\uB428 +BackgroundTexture-Walnut=\uD638\uB450 +FormulaD-Function_category=\uD568\uC218\uC720\uD615 +Interface=\uC778\uD130\uD398\uC774\uC2A4 +FR-Designer-Beyond_Bounds= +seconds=\uCD08 +Auto-Build=\uC790\uB3D9\uC0DD\uC131 +FR-Designer-Plugin_Install_Successful=\uD574\uB2F9\uD50C\uB7EC\uADF8\uC778\uC740\uC124\uACC4\uAE30\uBC0F\uC11C\uBC84\uB97C\uC7AC\uBD80\uD305\uD560\uB54C\uC0AC\uC6A9\uB418\uBA70,\uC11C\uBC84\uB294\uC218\uB3D9\uC7AC\uBD80\uD305\uD574\uC57C\uD569\uB2C8\uB2E4. +Template_Path=\uD15C\uD50C\uB9BF\uACBD\uB85C +FR-Designer-FRFont_Bold=\uAD75\uAC8C +Poly_Name=\uCDE8\uD569\uBE14\uB7ED\uC774\uB984 +WorkBook=\uC6CC\uD06C\uBD81 +Hyperlink-Self_Window=\uD604\uC7AC\uC708\uB3C4\uC6B0 +FR-Designer-Widget-Style_Title=\uC81C\uBAA9 +FR-Designer-FRFont_Size=\uD06C\uAE30 +M_File-Export-SVG=SVG\uC11C\uC2DD +Capacity=\uC6A9\uB7C9 +Rose_Red=\uB85C\uC988\uBE68\uAC15 +StyleAlignment-The_value_of_rotation_must_between_-90_and_90_degrees=\uD68C\uC804\uAC12\uC740-90\uB3C4\uC5D0\uC11C 90\uB3C4\uAE4C\uC9C0 +HF-Move_Left=\uC67C\uCABD\uC73C\uB85C\uC774\uB3D9 +Cell_Group=\uC140\uADF8\uB8F9 +Week=\uC8FC +PageSetup-Orientation=\uBC29\uD5A5 +M-Open_Recent=\uCD5C\uADFC\uC5F4\uC5B4\uBCF8 +NNormal=\uC815\uC0C1 +Integer=\uC815\uC218 +Select_The_Source_To_Save=\uC800\uC7A5\uD558\uB824\uB294\uD56D\uBAA9\uC120\uD0DD +Transition=\uBD84\uAE30 +FR-Designer_Get_Lock=\uC554\uD638\uD654 +one_record_exists_in_many_groups=\uB808\uCF54\uB4DC\uB294\uC5EC\uB7EC\uAC1C\uADF8\uB8F9\uC5D0\uC874\uC7AC\uD560\uC218\uC788\uC2B5\uB2C8\uB2E4. +FR-Designer_Cover_None=\uBAA8\uB450\uB36E\uC5B4\uC50C\uC6B0\uC9C0\uC54A\uAE30 +DeciPart=\uC18C\uC218\uBD80\uBD84 +ExpandD-Up_Father_Cell=\uC704\uBD80\uBAA8\uC140 +Deep=\uAE4A\uC774 +FRFont-Shadow=\uC74C\uC601 +Reportlet=\uB124\uD2B8\uC6CC\uD06C\uBB38\uC11C +Calendar=\uB2EC\uB825 +DateFormat-Custom_Warning=\uBE44\uACE0\uFF1A\uC0AC\uC6A9\uC790\uC815\uC758\uB0A0\uC9DC\uC11C\uC2DD\uC740\uC11C\uC2DD\uAC80\uC0AC\uB97C\uC9C0\uC6D0\uD558\uC9C0\uC54A\uC2B5\uB2C8\uB2E4. +Unit_MM=\uBC00\uB9AC\uBBF8\uD130 +Server-Start=\uC2E4\uD589 +CellPage-Can_Break_On_Paginate=\uD398\uC774\uC9C0\uB098\uB204\uAE30\uC2DC\uB098\uB20C\uC218\uC788\uC74C +Build_Tree_Accord_Marked_Filed_Length=\uC120\uD0DD\uD55C\uB370\uC774\uD130\uC138\uD2B8\uC758\uD0DC\uADF8\uD544\uB4DC\uAE38\uC774\uC5D0\uB530\uB77C\uD2B8\uB9AC\uC0DD\uC131 +ComboCheckBox-Start_Symbol=\uC2DC\uC791\uBD80\uD638 +Real=\uC2E4\uC81C +RWA-Batch_Modify_Cells=\uB300\uB7C9\uC218\uC815\uC140 +FR-Designer_Build-Way=\uC0DD\uC131\uBC29\uC2DD +Read=\uC77D\uAE30 +StyleAlignment-Degrees=\uB3C4\uC218 +M_Format_A-Border=\uD14C\uB450\uB9AC(B) +Utils-Delete_Record=\uB808\uCF54\uB4DC\uC0AD\uC81C +Reload=\uC624\uBC84\uB85C\uB529 +Image-Select_Picture=\uC774\uBBF8\uC9C0\uC120\uD0DD +RWA-Submit=\uC81C\uCD9C +the_template=\uD574\uB2F9\uD15C\uD50C\uB9BF +FR-Designer_Component_Scale=\uC5B4\uC148\uBE14\uB9AC\uCD95\uC18C +FRFont-italic=\uAE30\uC6B8\uC784\uAF34 +Year=\uB144 +HF-Move_Right=\uC624\uB978\uCABD\uC73C\uB85C\uC774\uB3D9 +Data-Check=\uB370\uC774\uD130\uBAA8\uB2C8\uD130\uB9C1 +Unknown=\uC54C\uC218\uC5C6\uC74C +Submit_Style=\uC81C\uCD9C\uBC29\uC2DD +Left_Border_Line=\uC67C\uCABD\uD14C\uB450\uB9AC\uC120 +Brown=\uAC08\uC0C9 +Select_A_Tree_DataSource_To_Build=\uD2B8\uB9AC\uB370\uC774\uD130\uC138\uD2B8\uB97C\uC120\uD0DD\uD558\uC5EC\uC0DD\uC131\uD558\uC2ED\uC2DC\uC624. +Overlapping=\uC911\uCCA9\uD0C0\uC785 +DS-Class_TableData=\uD504\uB85C\uADF8\uB7A8\uB370\uC774\uD130\uC138\uD2B8 +FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install=\uC2DD\uBCC4\uD560\uC218\uC5C6\uB294\uD50C\uB7EC\uADF8\uC778\uC774\uBBC0\uB85C\uC124\uCE58\uD560\uC218\uC5C6\uC2B5\uB2C8\uB2E4. +DisplayNothingBeforeQuery=\uCC3E\uC544\uBCF4\uAE30\uD074\uB9AD\uC804\uBB38\uC11C\uB0B4\uC6A9\uBCF4\uC774\uC9C0\uC54A\uAE30 +Y_Axis=Y\uCD95 +FormulaD-Most_Recently_Used=\uC0C1\uC6A9\uD568\uC218 +FormulaD-Input_formula_in_the_text_area_below=\uD558\uB2E8\uC758\uD14D\uC2A4\uD2B8\uD3B8\uC9D1\uBC15\uC2A4\uC5D0\uC218\uC2DD\uC744\uC785\uB825\uD558\uC138\uC694. +Build-Way=\uC0DD\uC131\uBC29\uC2DD +M_Edit-Undo=\uD574\uC81C +Line-Style=\uC120\uD615 +Datasource-Other_Attributes=\uAE30\uD0C0\uC18D\uC131 +M_Server-Global_Parameters=\uC804\uC5ED\uB9E4\uAC1C\uBCC0\uC218 +Suffix=\uD655\uC7A5\uC790 +Image-Image_Files=\uC774\uBBF8\uC9C0\uD30C\uC77C +EditRC-Entire_row=\uBAA8\uB4E0\uD589(R) +HF-First_Page=\uBA54\uC778\uD398\uC774\uC9C0 +BackgroundTexture-Granite=\uD654\uAC15\uC554 +DataList=\uB370\uC774\uD130\uB9C1\uD06C +Recursion=\uADC0\uB0A9 +BarStyle=\uBC14\uD0C0\uC785 +FR-Designer-Min_Width= +Utils-Report-Env_Directory=\uBB38\uC11C\uC791\uC5C5\uB514\uB809\uD130\uB9AC +D-ChartArea=\uCC28\uD2B8\uC601\uC5ED +Only=\uB2E4\uB9CC +FR-Base_No=\uC544\uB2C8\uC624 +SpecifiedG-Put_all_others_together=\uAE30\uD0C0\uBAA8\uB4E0\uAC83\uBCD1\uD569 +HF-NewLine_Des=\uC0C1\uB2E8\uC758\uC774\uB3D9\uD0A4\uC640\uC0AD\uC81C\uD0A4\uB85C\uD589\uBC14\uAFB8\uAE30\uAE30\uD638\uB97C\uC870\uC791\uD560\uC218\uC788\uC2B5\uB2C8\uB2E4. +WLayout-Border-ThreeContainer=\uBD81\u3001\uC11C\uBC0F\uC911\uAC04\uBE14\uB85D\uC744\uAC16\uACE0\uC788\uB294\uACBD\uACC4\uC120\uB808\uC774\uC544\uC6C3\uCEE8\uD14C\uC774\uB108\uC911\uBD81\uCABD\uBE14\uB7ED\uC740\uD544\uC694\uC5D0\uB530\uB77C\uB192\uC774\uB97C\uC870\uC815\uD560\uC218\uC788\uC73C\uBA70\uC11C\uCABD\uBE14\uB7ED\uC740\uD544\uC694\uC5D0\uB530\uB77C\uB108\uBE44\uB97C\uC870\uC815\uD560\uC218\uC788\uC2B5\uB2C8\uB2E4. +Parameter_Name=\uB9E4\uAC1C\uBCC0\uC218\uC774\uB984 +FR-Base_Table=\uD45C +Des-Remove_WorkSheet=\uC0AD\uC81C\uD558\uB824\uB294\uD45C\uC5D0\uB370\uC774\uD130\uAC00\uC874\uC7AC\uD569\uB2C8\uB2E4.\uC601\uAD6C\uC0AD\uC81C\uD558\uB824\uBA74'\uD655\uC778'\uD0A4\uB97C\uB20C\uB7EC\uC8FC\uC138\uC694. +Rotation=\uD68C\uC804 +Undefined=\uC815\uC758\uB418\uC9C0\uC54A\uC74C +Support-Auto_Complete_Shortcut=\uC790\uB3D9\uBCF4\uC644\uB2E8\uCD95\uD0A4 +Set_Column_Title_End=\uC911\uBCF5\uC885\uB8CC\uC5F4\uC124\uC815 +Submit_Url=\uC8FC\uC18C\uC81C\uCD9C +ReportServerP-Are_you_sure_to_delete_the_selected_printer=\uC120\uD0DD\uD55C\uD504\uB9B0\uD130\uB97C\uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? +long_data_can_not_show_fully=\uAE34\uB370\uC774\uD130\uB294\uBAA8\uB450\uBCF4\uC774\uC9C0\uC54A\uC2B5\uB2C8\uB2E4. +Utils-Beyond_the_bottom_side_of_Border=\uC544\uB798\uACBD\uACC4\uC120\uBC97\uC5B4\uB0A8 +FR-Import-Export_PDF=PDF\uC11C\uC2DD +Form-CheckBoxGroup=\uCCB4\uD06C\uBC15\uC2A4\uADF8\uB8F9 +Click-Me=\uD074\uB9AD\uB9CC\uD574\uB3C4\uC11C\uD504\uB77C\uC774\uC988\uD55C\uC990\uAC70\uC6B4\uC77C\uC774\uC0DD\uAE41\uB2C8\uB2E4\uFF01 +Hyperlink-Self=\uAE30\uC874\uC6F9\uC5D0\uC11C\uB9C1\uD06C\uC5F4\uAE30(S) +Tree-Select_Leaf_Only_Tips=(\uC774\uD56D\uBAA9\uC5D0\uCCB4\uD06C\uD558\uC9C0\uC54A\uC73C\uBA74\uB9AC\uD134\uAC12\uC740\uC0AC\uC6A9\uC790\uAC00\uCCB4\uD06C\uD55C\uD604\uC7AC\uB178\uB4DC\uB9CC\uD574\uB2F9\uB418\uBA70\uC11C\uBE0C\uB178\uB4DC\uB294\uD3EC\uD568\uB418\uC9C0\uC54A\uC74C\uFF09 +StyleAlignment-Text_Rotation=\uD14D\uC2A4\uD2B8\uBC29\uD5A5 +Format-Error=\uC785\uB825\uD55C\uAC12\uC11C\uC2DD\uC774\uC815\uD655\uD558\uC9C0\uC54A\uC2B5\uB2C8\uB2E4. +Server-Stop=\uC815\uC9C0 +Preference-Setting_Grid=\uACA9\uC790\uBAA8\uC591\uC124\uC815 +ReportServerP-Add_Printer=\uD504\uB9B0\uD130\uCD94\uAC00 +FR-Designer-Plugin_Active=\uC0AC\uC6A9\uC2DC\uC791 +Utils-File_name=\uD30C\uC77C\uBA85 +NOT_NULL_Des=\uBE48\uCE78\uC73C\uB85C\uB458\uC218\uC5C6\uC2B5\uB2C8\uB2E4. +Right_Border_Line=\uC624\uB978\uCABD\uD14C\uB450\uB9AC\uC120 +EditRC-Entire_column=\uBAA8\uB4E0\uC5F4(C) +PageSetup-Top_to_bottom=\uC5F4\uBA3C\uC800\uD589\uB098\uC911 +Click-Get_Default_URL=\uBCF8\uD0A4\uB97C\uD074\uB9AD\uD558\uC5EC\uAE30\uBCF8URL\uC744\uC5BB\uC2B5\uB2C8\uB2E4. +StyleAlignment-Wrap_Text=\uC790\uB3D9\uD589\uBC14\uAFB8\uAE30 +Remove_All_Button=\uBAA8\uB4E0\uD0A4\uD074\uB9AC\uC5B4 +FR-Designer_Component_Interval=\uC5B4\uC148\uBE14\uB9AC\uAC04\uACA9 +ReportColumns-Columns_vertically=\uC5F4\uC140\uB098\uB204\uAE30 +ReportGUI-Print_Background=\uC778\uC1C4/\uB0B4\uBCF4\uB0B4\uAE30\uBB38\uC11C\uBC30\uACBD +Export-CSV=CSV\uC11C\uC2DD(\uC27C\uD45C\uAD6C\uBD84) +M_Edit-Paste=\uBD99\uC5EC\uB123\uAE30(P) +FR-Designer-Basic_Restart_Designer=\uC7AC\uBD80\uD305\uC124\uACC4\uAE30 +ReportServerP-PDF2-INFO=LINUX/UNIX\uC5D0\uC11C\uC911\uBB38\uD3F0\uD2B8\uB97C\uC124\uCE58\uD558\uC9C0\uC54A\uC558\uC744\uB54C\uB9CC\uC0AC\uC6A9 +FormulaD-Check_Valid=\uC801\uD569\uC131\uAC80\uC0AC +server_disconnected=\uC5F0\uACB0\uC774\uB04A\uC5B4\uC84C\uC2B5\uB2C8\uB2E4. +ParameterD-Parameter_name_cannot_be_null=\uB9E4\uAC1C\uBCC0\uC218\uC758\uC774\uB984\uC740\uBE44\uC6CC\uB458\uC218\uC5C6\uC2B5\uB2C8\uB2E4. +FR-Designer-Plugin_Version_Is_Lower_Than_Current=\uC5C5\uADF8\uB808\uC774\uB4DC\uD329\uC758\uD50C\uB7EC\uADF8\uC778\uBC84\uC804\uC774\uD604\uC7AC\uC758\uAC83\uBCF4\uB2E4\uB192\uC9C0\uC54A\uC2B5\uB2C8\uB2E4. +RWA-NotChange_Unmodified=\uC218\uC815\uD558\uC9C0\uC54A\uC73C\uBA74\uC5C5\uB370\uC774\uD2B8\uD558\uC9C0\uC54A\uC2B5\uB2C8\uB2E4. +User_Information=\uC0AC\uC6A9\uC790\uC815\uBCF4 +Custom_styles_lost=\uC0AC\uC6A9\uC790\uC815\uC758\uC591\uC2DD\uC774\uC5C6\uC2B5\uB2C8\uB2E4. +PageSetup-Margin=\uD398\uC774\uC9C0\uC5EC\uBC31 +M-New_FormBook=\uC0C8\uD3FC +Widget-TreeNode=\uD2B8\uB9AC\uB178\uB4DC\uD0A4 +Form-Url=\uC8FC\uC18C +Utils-Beyond_the_left_side_of_Border=\uC67C\uCABD\uC5EC\uBC31\uBC97\uC5B4\uB0A8 +Float_Element_Name=\uD638\uBC84\uC694\uC18C\uBA85\uCE6D +Purple=\uD37C\uD50C +DashBoard-Potence=\uAD8C\uD55C +M-Close_Template=\uB2EB\uAE30\uD15C\uD50C\uB9BF(C) +paper=\uC885\uC774 +Not_Exsit=\uBB38\uC11C\uAC00\uC874\uC7AC\uD558\uC9C0\uC54A\uC2B5\uB2C8\uB2E4. +Utils-Insert_Row=\uD589\uC0BD\uC785 +Utils-Delete_Row=\uD589\uC0AD\uC81C +not_support_authority_edit=\uD574\uB2F9\uC694\uC18C\uB294\uAD8C\uD55C\uCEE8\uD2B8\uB864\uC744\uC9C0\uC6D0\uD558\uC9C0\uC54A\uC2B5\uB2C8\uB2E4. +Formula_Tips=\uC218\uC2DD\uC740"\\ub97c\uB123\uC5B4\uC57C\uD569\uB2C8\uB2E4. +FR-Action_Copy=\uBCF5\uC0AC +Compile_Success=\uCEF4\uD30C\uC77C\uC131\uACF5 +BackgroundTexture-RecycledPaper=\uC7AC\uC0DD\uC6A9\uC9C0 +StyleAlignment-Single_Line=\uD55C\uC904\uBCF4\uC774\uAE30 +Utils-Move_Down=\uC544\uB798\uB85C\uC774\uB3D9 +Please_Set_Repeat_First=\uC911\uBCF5\uC81C\uBAA9\uD589\uACFC\uC5F4\uC744\uC6B0\uC120\uC120\uD0DD\uD574\uC8FC\uC2ED\uC2DC\uC624. +Writer-ShortCuts_Setting=\uB2E8\uCD95\uD0A4\uAE30\uC785\uC124\uC815 +Verify-Data_Verify=\uB370\uC774\uD130\uAC80\uC0AC +FR-mobile_analysis_style=\uD574\uC11D \uBC29\uBC95 +Confirm-Delete-File=\uC120\uD0DD\uD55C\uD30C\uC77C\uC744\uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C\uFF1F +PageSetup-Header=\uD398\uC774\uC9C0\uBA38\uB9AC\uAE00 +JavaScrit-Asynch=\uBE44\uB3D9\uAE30 +ReportServerP-Toolbar=\uD234\uBC14 +Utils-Top_to_Bottom=\uC138\uB85C +Platform=\uD50C\uB7AB\uD3FC +FR-Designer-FRFont_Underline=\uBC11\uC904 +Show_in_Containing_Folder=\uD574\uB2F9\uD3F4\uB354\uC5F4\uAE30 +BackgroundTexture-WaterDroplets=\uBB3C\uBC29\uC6B8 +FR-Designer-Dependence_Install_Failed=install failed +Layout-Padding=\uC548\uCABD\uC5EC\uBC31 +roles_already_authority_edited=\uC5ED\uD560\uC774\uAD6C\uC131\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +WidgetDisplyPosition=\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uD654\uBA74\uC704\uCE58 +SpecifiedG-Force_Group=\uAC15\uC81C\uADF8\uB8F9\uD551 +FormulaD-Formula_Definition=\uC218\uC2DD\uC815\uC758 +I-xyScatterStyle_Marker=\uC0B0\uC810\uADF8\uB798\uD504 +Hour=\uC2DC\uAC04 +ColorMatch=\uC0C9\uBC30\uD569 +M_Edit-Order=\uACB9\uCE68\uC21C\uC11C(O) +BackgroundTexture-Bouquet=\uAF43\uB2E4\uBC1C +Verify-Error_Information=\uC624\uB958\uC815\uBCF4\uAC80\uC0AC +LayerData=\uB85C\uC6B0 \uB808\uBCA8 \uB370\uC774\uD130 +Rename=\uB9AC\uB124\uC784 +Widget-Load_By_Async=\uBE44\uB3D9\uAE30\uB85C\uB529 +Shape=\uADF8\uB798\uD504 +BindColumn-This_Condition_has_been_existed=\uC774\uC870\uAC74\uC740\uC774\uBBF8\uC874\uC7AC\uD569\uB2C8\uB2E4. +NS-exception_readError=\uC624\uB958\uCF54\uB4DC\:1305 \uD15C\uD50C\uB9BF\uD30C\uC77C\uD574\uC11D\uC624\uB958 +Set_Column_Title_Start=\uC911\uBCF5\uC81C\uBAA9\uC5F4\uC124\uC815 +Fri=5 +M_Report-Report_Parameter=\uD15C\uD50C\uB9BF\uB9E4\uAC1C\uBCC0\uC218 +REPORTLETS=\uC5EC\uB7EC\uC7A5\uD15C\uD50C\uB9BF\uC758\uACBD\uB85C\uC758\uB9E4\uAC1C\uBCC0\uC218\uC811\uADFC +WLayout-Card-ToolTip=\uCE74\uB4DC\uC2DD\uB808\uC774\uC544\uC6C3\uC740\uD574\uB2F9\uB808\uC774\uC544\uC6C3\uCEE8\uD14C\uC774\uB108\uC5D0\uC11C\uC5EC\uB7EC\uAC1C\uAE30\uD0C0\uC5B4\uC148\uBE14\uB9AC\uB97C\uCD94\uAC00\uD560\uC218\uC788\uC2B5\uB2C8\uB2E4. +M-Popup_ChartType=\uCC28\uD2B8\uC720\uD615 +Please-Wait=\uC7A0\uC2DC\uB9CC\uAE30\uB2E4\uB824\uC8FC\uC2ED\uC2DC\uC624 +FR-Designer-Form-ToolBar_Widget=\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4 +Widget-Array=\uBC30\uC5F4 +FieldBinding=\uBC14\uC778\uB529\uD544\uB4DC +Top_Bottom_Border_Line=\uC0C1\uD558\uD14C\uB450\uB9AC\uC120 +M-Others=\uAE30\uD0C0... +Hyperlink-Link_Opened_in=\uB9C1\uD06C\uC5F4\uB9AC\uB294\uACF3: +FR-Utils_WorkBook=\uC6CC\uD06C\uBD81 +M_Insert-Float=\uD638\uBC84\uC694\uC18C +Out_Thick_Border_Line=\uAD75\uC740\uBC14\uAE65\uCABD\uD14C\uB450\uB9AC\uC120 +FR-App-File_Lookup_range=\uBC94\uC704\uAC80\uC0C9 +ReportColumns-Columns_to=\uC140\uB098\uB204\uAE30 +Transparent=\uD22C\uBA85 +Parameter-Integer=\uC804\uCCB4\uD0C0\uC785 +PDF-Print_Setting=PDF\uC778\uC1C4\uC124\uC815 +Server-Embedded_Server=\uB0B4\uC7A5\uB41C\uC11C\uBC84 +M_Server-Server_Config_Manager=\uC11C\uBC84\uAD6C\uC131 +FR-Utils-Would_you_like_to_cover_the_current_file=\uD604\uC7AC\uD30C\uC77C\uC744\uB36E\uACA0\uC2B5\uB2C8\uAE4C? +CellWrite-InsertRow_COPY=\uC6D0\uB798\uAC12 +Edit_String_To_Formula=\uBB38\uC790\uC5F4\uC744\uC218\uC2DD\uC73C\uB85C\uD3B8\uC9D1\uD558\uACA0\uC2B5\uB2C8\uAE4C? +Edit-Column_Count=\uC5F4\uC218 +Father=\uC544\uBC84\uC9C0 +ReportColumns-Columns_after=\uCD08\uACFC +FR-Designer_Undo=\uD574\uC81C +DBCP_MIN_IDLE=\uCD5C\uC18C\uC720\uD734\uB9C1\uD06C\uC218 +M-Data_Analysis_Settings=\uB370\uC774\uD130\uBD84\uC11D\uC124\uC815 +M-Form_Preview=\uD3FC\uBBF8\uB9AC\uBCF4\uAE30 +Form-Basic_Properties=\uAE30\uBCF8\uC18D\uC131 +quote=\uC778\uC6A9 +Thu=4 +Collect-Collect_User_Information=\uC0AC\uC6A9\uC790\uC815\uBCF4\uC218\uC9D1 +Layer-Build=\uCE35\uBCC4\uC0DD\uC131 +FR-Designer-FRFont_Line_Style=\uC120\uD615 +BackgroundTexture-BrownMarble=\uAC08\uC0C9\uB300\uB9AC\uC11D +PageSetup-Page_Setup=\uC6F9\uD398\uC774\uC9C0\uC124\uC815 +Form-Semicolon=\uC138\uBBF8\uCF5C\uB860 +ECP_re_input=\uBE44\uBC00\uBC88\uD638\uC785\uB825\uC624\uB958.\uB2E4\uC2DC\uC785\uB825\uD574\uC8FC\uC2ED\uC2DC\uC624. +ExpandD-Sort_After_Expand=\uD655\uC7A5\uD6C4 +FR-Designer-Dependence_Install_Succeed=install succeed +Env-Configure_Workspace=\uAD6C\uC131\uC791\uC5C5\uB514\uB809\uD130\uB9AC +feedback_info=\uADC0\uC911\uD55C\uC758\uACAC\uACFC\uC81C\uC548\uC5D0\uAC10\uC0AC\uB4DC\uB9BD\uB2C8\uB2E4.\uC815\uBCF4\uB97C\uCD5C\uB300\uD55C\uC0C1\uC138\uD788\uC791\uC131\uD574\uC8FC\uC2DC\uBA74\uC5F0\uB77D\uB4DC\uB9AC\uACA0\uC2B5\uB2C8\uB2E4. +Ratio=\uBE44\uC728 +DBCP_TEST_ON_BORROW=\uB9C1\uD06C\uD68D\uB4DD\uC804\uAC80\uC0AC\uC9C4\uD589 +FR-Designer_layerIndex= +WEB-Write_Setting=\uC6F9\uD398\uC774\uC9C0\uC124\uC815\uAE30\uC785 +M-New_WorkBook=\uC0C8\uC6CC\uD06C\uBD81 +FR-Designer-Plugin_Has_Been_Actived=\uD50C\uB7EC\uADF8\uC778\uC774\uAD6C\uB3D9\uB418\uC5C8\uC2B5\uB2C8\uB2E4.\uC124\uACC4\uAE30\uBC0F\uC11C\uBC84\uB97C\uC7AC\uBD80\uD305\uD558\uB824\uBA74\uC11C\uBC84\uB97C\uC218\uB3D9\uC7AC\uBD80\uD305\uD574\uC57C\uD569\uB2C8\uB2E4. +Datasource-Maximum_Number_of_Preview_Rows=\uCD5C\uB300\uBBF8\uB9AC\uBCF4\uAE30\uD589\uC218 +ExpandD-Cell_Expand_Attributes=\uD655\uC7A5\uC18D\uC131 +Select_the_repeated_row_and_column=\uC911\uBCF5\uD574\uC57C\uD560\uD589\uACFC\uC5F4\uC120\uD0DD +FormulaD-Date_&_Time=\uB0A0\uC9DC\uC640\uC2DC\uAC04\uD568\uC218 +Max-Mem-Row-Count=\uB808\uCF54\uB4DC\uC218\uAC00~\uC774\uC0C1\uC77C\uB54C\uB514\uC2A4\uD06C\uB85C\uCE90\uC2DC +BorderLayout-South=\uB0A8 +Export-Text=\uD14D\uC2A4\uD2B8\uD30C\uC77C(\uD0ED\uAE30\uD638\uB85C\uAD6C\uBD84) +JavaScript-Synch=\uB3D9\uAE30\uD654 +FR-App-All_Warning=\uACBD\uACE0 +M_Edit-Send_Backward=\uC544\uB798\uB85C\uC774\uB3D9\u4E00\uACC4\uCE35(B) +Form-Layout=\uB808\uC774\uC544\uC6C3 +FR-Designer-Plugin_Shop_Need_Update=\uC704\uC82F \uC5EC\uBD80\uB97C \uC5C5\uB370\uC774\uD2B8, \uC0C8 \uBC84\uC804\uC744 \uC800\uC7A5? +FR-Designer_WorkBook=\uC6CC\uD06C\uBD81 +UpBarBorderStyleAndColor=\uC5C5\uBC14\uC591\uC2DD +GridLayout=\uADF8\uB9AC\uB4DC\uB808\uC774\uC544\uC6C3 +Utils-Default_Value=\uAE30\uBCF8\uAC12 +Widget-Comb_Widget_Config=\uADF8\uB8F9\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4 +Import-Excel2007_Source=Excel2007\uC18C\uC2A4\uD30C\uC77C +Y-Coordinate=\uC138\uB85C\uC88C\uD45C +FR-Base_SimSun_Not_Found=\uC1A1\uCCB4\uB97C\uCC3E\uC744\uC218\uC5C6\uC2B5\uB2C8\uB2E4.\uD604\uC7AC\uC2DC\uC2A4\uD15C\uC0C1\uC758\uAE30\uBCF8\uC5B8\uC5B4\uB97C\uC124\uACC4\uAE30\uAE00\uAF34\uB85C\uC120\uD0DD\uD574\uC8FC\uC2ED\uC2DC\uC624. +FR-Designer_Seriously=\uC2EC\uAC01 +Upload=\uC5C5\uB85C\uB4DC +Form-Widget_Property_Table=\uC18D\uC131\uD45C +Des-Merger_Cell=\uC120\uD0DD\uC601\uC5ED\uC740\uC5EC\uB7EC\uB370\uC774\uD130\uB97C\uD3EC\uD568\uD558\uACE0\uC788\uC73C\uBA70,\uC140\uBCD1\uD569\uD6C4\uD3B8\uC9D1\uD55C\uBAA8\uB4E0\uC140\uC911\uAC00\uC7A5\uC67C\uCABD\uC0C1\uB2E8\uBAA8\uC11C\uB9AC\uC758\uAC12\uB9CC\uB0A8\uC2B5\uB2C8\uB2E4. +FR-Designer-Basic_Copy_Build_NO=\uC0DD\uC131\uBC84\uC804\uBC88\uD638\uB97C\uB354\uBE14\uD074\uB9AD\uD558\uBA74\uD074\uB9BD\uBCF4\uB4DC\uC5D0\uBCF5\uC0AC\uB429\uB2C8\uB2E4. +FR-Base_TurnOn=\uC5F4\uAE30 +FR-Base_Rows=\uD589 +Form-Remove_Repeat=\uC911\uBCF5\uD56D\uBAA9\uC0AD\uC81C +Yes=\uC608 +Datasource-JNDI_Name=JNDI\uC758\uC774\uB984 +Utils-Delete_Column=\uC5F4\uC0AD\uC81C +HF-Delete_it=\uC0AD\uC81C +JavaScript-Dynamic_Parameters=\uB3D9\uC801\uD30C\uB77C\uBBF8\uD130 +px=\uD654\uC18C +FR-App-Report_Template=\uBB38\uC11C\uD15C\uD50C\uB9BF +Verify-Message=\uC624\uB958\uC815\uBCF4 +Plan=\uACC4\uD68D +Vertical-Split_Layout=\uC218\uC9C1\uBD84\uD560\uB808\uC774\uC544\uC6C3 +ParameterD-Delay_Playing=\uCC3E\uC544\uBCF4\uAE30\uD074\uB9AD\uC804\uBB38\uC11C\uB0B4\uC6A9\uBCF4\uC774\uC9C0\uC54A\uAE30 +TurnOff=\uB2EB\uAE30 +FR-Please_Rename=\uB9AC\uB124\uC784\uD574\uC8FC\uC2ED\uC2DC\uC624. +Select_Data_Set=\uB370\uC774\uD130\uC138\uD2B8\uC120\uD0DD +Name_has_Colon=\uC774\uB984\: +ReportColumns-Columns_horizontally=\uD589\uC140\uB098\uB204\uAE30 +FR-Base_Yes=\uC608 +ReportColumns-Repeat_Row=\uD589\uBCF5\uC0AC\uC21C\uC11C +Print_Setting=\uC778\uC1C4\uC124\uC815 +Registration-User_Name=\uC0AC\uC6A9\uC790\uC774\uB984 +Datasource-User_Defined=\uC0AC\uC6A9\uC790\uC815\uC758 +FR-Designer-Plugin_DownLoadMessage= +Delay=\uC9C0\uC5F0 +FR-Designer-All_MSBold=\uB9C8\uC774\uD06C\uB85C\uC18C\uD504\uD2B8 Yahei +Utils-Now_create_connection=\uB370\uC774\uD130\uB9C1\uD06C\uC0DD\uC131\uC911 +FR-Template-Path_chooseRightPath=\uC815\uD655\uD55C\uACBD\uB85C\uB97C\uC120\uD0DD\uD574\uC8FC\uC2ED\uC2DC\uC624. +FR-Remote_Re_Connect_to_Server=\uC11C\uBC84\uAC00\uB2EB\uD600\uC788\uC2B5\uB2C8\uB2E4.\uB2E4\uC2DC\uC11C\uBC84\uB97C\uC5F0\uACB0\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? +Nation=\uAD6D\uAC00 +DBCP_MAX_WAIT=\uCD5C\uB300\uB300\uAE30\uC2DC\uAC04 +FR-App-Template_Form=\uD3FC +Address=\uC8FC\uC18C +Sub_Report=\uBB38\uC11C\uC548\uC758\uBB38\uC11C +FR-Import-Export_Word=Word\uC11C\uC2DD +FR-Server_Version_Tip=\uD604\uC7AC\uC5F0\uACB0\uB41C\uC11C\uBC84\uBC84\uC804\uC774\uB2F9\uC2E0\uC774\uC0AC\uC6A9\uD558\uACE0\uC788\uB294\uC124\uACC4\uAE30\uBC84\uC804\uBC88\uD638\uBCF4\uB2E4\uB0AE\uC2B5\uB2C8\uB2E4.\uACC4\uC18D\uC5F0\uACB0\uD558\uBA74\uD3B8\uC9D1\uD558\uACE0\uC788\uB294\uC77C\uBD80\uC18D\uC131\uC774\uC800\uC7A5\uB418\uC9C0\uC54A\uC744\uC218\uC788\uC2B5\uB2C8\uB2E4. \uC5F0\uACB0\uD574\uC57C\uD560\uACBD\uC6B0\uC124\uACC4\uAE30\uBC84\uC804\uACFC\uC11C\uBC84\uBC84\uC804\uC744\uC77C\uCE58\uC2DC\uCF1C\uC8FC\uC2ED\uC2DC\uC624. +StyleAlignment-Left_To_Right=\uC67C\uCABD\uC5D0\uC11C\uC624\uB978\uCABD\uC73C\uB85C +Verify-ToolTips=\uC218\uC2DD\uBE44\uCDA9\uC871\uC54C\uB9BC. \uC624\uB958\uC815\uBCF4\uAC80\uC0AC +BackgroundTexture-Stationery=\uD3B8\uC9C0\uC9C0 +FR-Designer_RWA-Help=\uBBF8\uC218\uC815, \uBBF8\uC5C5\uB370\uC774\uD2B8\uB85C\uC124\uC815\uD55C\uD6C4\uBBF8\uB9AC\uBCF4\uAE30\uBB38\uC11C\uB97C\uC791\uC131\uD558\uC5EC\uB808\uCF54\uB4DC\uB41C\uC140\uC5D0\uD3B8\uC9D1\uC218\uC815\uC0AC\uD56D\uC774\uC5C6\uC744\uACBD\uC6B0\uC774\uB808\uCF54\uB4DC\uB294\uD589\uC5C5\uB370\uC774\uD2B8\uB97C\uC9C4\uD589\uD560\uC218\uC5C6\uC2B5\uB2C8\uB2E4.\n\uB300\uC6A9\uB7C9\uB370\uC774\uD130\uB808\uCF54\uB4DC\uCC3E\uC544\uBCF4\uAE30\uBC0F\uAE30\uC785\uC0C1\uD669\uC5D0\uC11C\uD574\uB2F9\uC124\uC815\uC744\uD558\uBA74\uAE30\uC785\uC81C\uCD9C\uC131\uB2A5\uC744\uB192\uC77C\uC218\uC788\uC2B5\uB2C8\uB2E4. +M_Insert-Barcode=\uBC14\uCF54\uB4DC +Bounds=\uACBD\uACC4\uC120 +FR-Designer-Undo_All_Authority_Operations=\uC774\uC804\uAD8C\uD55C\uD3B8\uC9D1\uC758\uBAA8\uB4E0\uC870\uC791\uD574\uC81C +Datasource-Context=\uBB38\uB9E5 +CellWrite-Page_After_Column=\uC5F4\uB4A4\uD398\uC774\uC9C0\uB098\uB204\uAE30 +FR-Designer_Cancel=\uCDE8\uC18C +Button-Group-Display-Columns=\uC5F4\uC758\uC218\uB97C\uB098\uD0C0\uB0C4 +Widget-Height=\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uB192\uC774 +Examples=\uC608\uC2DC +Formula_Dictionary_Display_Example=\uC2E4\uC81C\uAC12\uBC94\uC704:\ +StyleAlignment-Horizontal=\uC218\uD3C9\uC815\uB82C +HyperLink_Must_Alone_Reset=\uC5EC\uB7EC\uAC1C\uD558\uC774\uD37C\uB9C1\uD06C +ExpandD-Expand_Direction=\uD655\uB300\uBC29\uD5A5 +Include=\uD3EC\uD568 +Export-Excel-Page=\uD398\uC774\uC9C0\uB098\uB204\uAE30\uC5B4\uB0B4\uBCF4\uB0B4\uAE30 +FR-Designer-Min_Height=\uCD5C\uC18C\uB192\uC774 +Filed=\uC601\uC5ED +ReportServerP-Import_Css=Css\uC778\uC6A9 +M_Insert-Formula=\uC218\uC2DD\uC0BD\uC785 +FR-Designer_Auto-Build=\uC790\uB3D9\uC0DD\uC131 +FRFont-Foreground=\uC0C9 +Bubble-Width=\uBC84\uBE14\uB108\uBE44 +Form-Hierarchy_Tree=\uAD6C\uC870\uD2B8\uB9AC +WLayout-Border-LayoutContainer=\uC911\uAC04\uACFC\uBD81\uCABD\uB450\uBE14\uB7ED\uC758\uACBD\uACC4\uC120\uB808\uC774\uC544\uC6C3\uCEE8\uD14C\uC774\uB108\uC911\uBD81\uCABD\uBE14\uB7ED\uC740\uD544\uC694\uC5D0\uB530\uB77C\uB192\uC774\uB97C\uC870\uC815\uD560\uC218\uC788\uC2B5\uB2C8\uB2E4. +Preference-JDK_Home=JDK\uACBD\uB85C +Utils-Insert_Column=\uC5F4\uC0BD\uC785 +FR-Designer_ToolBar_Top=\uC0C1\uB2E8\uD234\uBC14 +BindColumn-The_Conditions_of_FatherCell=\uBD80\uBAA8\uC140\uC870\uAC74 +Links=\uB9C1\uD06C +M_Report-Report_Header=\uBB38\uC11C\uD398\uC774\uC9C0\uBA38\uB9AC\uAE00 +Sub_Report_Description=\uBB38\uC11C\uC548\uC758\uBB38\uC11C\uB294\uBD80\uBAA8\uD14C\uC774\uBE14\uC2E4\uD589\uD658\uACBD\uD558\uC5D0\uC788\uC5B4\uC57C\uD558\uBA70,\uC774\uB458\uC740\uB3D9\uC77C\uD55C\uD15C\uD50C\uB9BF\uC774\uC544\uB2C8\uC5B4\uC57C\uD569\uB2C8\uB2E4. +T_Insert-Float=\uC0BD\uC785\uD638\uBC84\uC694\uC18C +BackgroundTexture-FishFossil=\uC5B4\uB958\uD654\uC11D +My_Computer=\uB0B4\uCEF4\uD4E8\uD130 +FORMLET=\uAC01\uD3FC\uACBD\uB85C\uC758\uB9E4\uAC1C\uBCC0\uC218\uC811\uADFC +HF-Undefined=\uC815\uC758\uC5C6\uC74C +Widget-User_Defined_Widget_Config=\uC0AC\uC804\uC815\uC758\uB41C\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4 +Report-Write_Attributes_Group_Warning=\uC140\uADF8\uB8F9\uC73C\uB85C\uC124\uC815\uB41C\uAC01\uD544\uB4DC\uC758\uC140\uAC1C\uC218\uB294\uAC19\uC544\uC57C\uD569\uB2C8\uB2E4. +Form-Single_quote=\uC791\uC740\uB530\uC634\uD45C +Compile_Success_And_Then_Save=\uCEF4\uD30C\uC77C\uC744\uC131\uACF5\uD574\uC57C\uC815\uD655\uD788\uC800\uC7A5\uAC00\uB2A5 +FR-Designer_Layout-Padding=\uC548\uCABD\uC5EC\uBC31 +Layout_Container=\uB808\uC774\uC544\uC6C3\uCEE8\uD14C\uC774\uB108 +Admin=\uAD00\uB9AC\uC790 +Form-EC_toolbar=\uBB38\uC11C\uBE14\uB85D\uD234\uBC14 +FR-App-All_Auto=\uC790\uB3D9 +Utils-Available_Columns=\uC120\uD0DD\uAC00\uB2A5\uC5F4 +Form-Change_Widget_Name_Discription=\uC0C8\uB85C\uC6B4\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uC774\uB984\uC744\uC785\uB825\uD574\uC8FC\uC138\uC694. +FR-Module_Designer=\uC124\uACC4\uAE30\uBAA8\uB4C8 +FR-Import-Export_Text=\uD14D\uC2A4\uD2B8\uD30C\uC77C(\uD0ED\uAE30\uD638\uB85C\uAD6C\uBD84) +Values-Editor=\uAC12\uD3B8\uC9D1\uAE30 +FR-Designer_Yes=\uC608 +ExpandD-Expandable=\uD655\uC7A5\uAC00\uB2A5\uC131 +Tree-Return_Full_Path=\uACB0\uACFC\uB97C\uC644\uC804\uACC4\uCE35\uACBD\uB85C\uB85C\uB418\uB3CC\uB9AC\uAE30 +FRFont-bolditalic=\uAD75\uAC8C\uAE30\uC6B8\uC784\uAF34 +FR-Base_StyleFormat_Sample=\uC608\uC2DC +Area_Value=\uAD6C\uC5ED\uAC12 +FR-Designer-Plugin_Disable=\uC0AC\uC6A9\uAE08\uC9C0 +Utils-Are_you_sure_to_remove_the_selected_item=\uC815\uB9D0\uB85C\uC120\uD0DD\uD55C\uD56D\uBAA9\uC744\uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? +Face_Write=\uAE30\uC785 +Poly-Report_Block=\uBB38\uC11C\uC720\uD615\uCDE8\uD569\uBE14\uB7ED +Vgap=\uC218\uC9C1\uAC04\uACA9 +FR-Designer_HyperLink_Must_Alone_Reset=\uC5EC\uB7EC\uAC1C\uD558\uC774\uD37C\uB9C1\uD06C +DS-Class=\uD504\uB85C\uADF8\uB7A8 +FR-Hyperlink_Please_Select_Reportlet=\uB124\uD2B8\uC6CC\uD06C\uBB38\uC11C\uB97C\uC120\uD0DD\uD574\uC8FC\uC2ED\uC2DC\uC624. +FS_Report_Type=\uC720\uD615 +HF-New_Line=\uC904\uBC14\uAFC8 +Privilege=\uAD8C\uD55C +Export-Offline-Html=\uCD9C\uB825\uC624\uD504\uB77C\uC778html\uBB38\uC11C +FR-Designer_open-new-form-tip=\uD604\uC7AC\uD15C\uD50C\uB9BF\uC740711\uC774\uD558\uBC84\uC804\uC73C\uB85C\uC791\uC131\uB418\uC5B4\uD638\uD658\uC774\uB418\uC9C0\uC54A\uC544\uC5F4\uC218\uC5C6\uC2B5\uB2C8\uB2E4. \uC774\uD3FC\uC744\uC5F4\uC5B4\uC218\uC815\uD558\uACE0\uC790\uD560\uACBD\uC6B0\uC0C1\uC751\uD558\uB294\uBC84\uC804\uC124\uACC4\uAE30\uB85C\uC5F4\uC5B4\uC8FC\uC2ED\uC2DC\uC624. +FR-Designer-Widget-Style_Frame_Style=\uD504\uB808\uC784\uC591\uC2DD +Present-No_Present=\uCDE8\uC18C\uD615\uD0DC\uC124\uC815 +FR-Designer_Form-Password=\uC554\uD638 +X_Axis=X\uCD95 +FR-mobile_html_analysis=HTML5 \uD574\uC11D +M_Edit-Bring_to_Front=\uAF2D\uB300\uAE30\uC5D0\uB193\uAE30(T) +Null_Value_Show=\uB110\uAC12\uBCF4\uC774\uAE30 +Datasource-JNDI_DES=\uC8FC\uC758\:INITIAL_CONTEXT_FACTORY\uD074\uB798\uC2A4\uB97C\uD3EC\uD568\uD558\uACE0\uC788\uB294 .jar \uD30C\uC77C\uC744\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC124\uCE58\uB514\uB809\uD130\uB9AC\uC758 /lib\uB514\uB809\uD130\uB9AC\uC5D0\uCD94\uAC00\uD574\uC57C\uD569\uB2C8\uB2E4. +PrintP-Print_Preview=\uC778\uC1C4\uBBF8\uB9AC\uBCF4\uAE30 +Form-Hierarchy_Tree_Last=\uC774\uC804 +Has_been_gone=\\uc0ac\uB77C\uC84C\uC2B5\uB2C8\uB2E4.\uD574\uB2F9\uC591\uC2DD\uC744\uCD94\uAC00\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? +RWA-Add_Field=\uD544\uB4DC\uCD94\uAC00 +newNode=\uB178\uB4DC\uCD94\uAC00 +PageSetup-Shrink_to_fit_content=\uC140\uB0B4\uC6A9\uC5D0\uB530\uB77C\uC790\uB3D9\uC870\uC815 +FR-Designer_Date=\uB0A0\uC9DC +Column_Multiple=\uB370\uC774\uD130\uBC30\uC218 +FR-App-All_File=\uD30C\uC77C +Sort-Descending=\uB0B4\uB9BC\uCC28\uC21C +FR-Designer-Plugin_Delete=\uC0AD\uC81C +Above=\uC0C1\uAE30\uBC84\uC804 +Utils-The-Chart=\uCC28\uD2B8 +FRFont-plain=\uC77C\uBC18 +Calculating=\uCC98\uB9AC\uC911 +Form-Object=\uD3FC\uAC1D\uCCB4\: +May=5\uC6D4 +FR-Designer_Plugin_Normal_Update=\uC5C5\uB370\uC774\uD2B8 +FR-Hyperlink_Reportlet=\uB124\uD2B8\uC6CC\uD06C\uBB38\uC11C +M_Edit-Copy=\uBCF5\uC0AC(C) +Sub_Report_Message2=\uBD80\uBAA8\uBB38\uC11C\uAC00\uD604\uC7AC\uC2E4\uD589\uD658\uACBD\uC5D0\uC5C6\uC2B5\uB2C8\uB2E4. +Sub_Report_Message3=\uC790\uC2E0\uC744\uC120\uD0DD\uD560\uC218\uC5C6\uC2B5\uB2C8\uB2E4. +Sub_Report_Message1=\uC815\uD655\uD55C\uACBD\uB85C\uB97C\uC120\uD0DD\uD574\uC8FC\uC2ED\uC2DC\uC624. +Form-Allow_CustomData=\uC0AC\uC6A9\uC790\uC815\uC758\uAC12\uD5C8\uC6A9 +FR-Server_Version_Tip_MoreInfo=\uBC84\uC804\uBD88\uC77C\uCE58\uB85C\uC778\uD55C\uBB38\uC81C\uAC00\uBC1C\uC0DD\uD558\uC9C0\uC54A\uB3C4\uB85D\uC0AC\uC6A9\uD558\uACE0\uC788\uB294 FineReport\uC81C\uD488\uC758\uC124\uACC4\uAE30\uBC84\uC804\uBC0F\uC124\uCE58\uB41C\uC11C\uBC84\uBC84\uC804\uC774\uC77C\uCE58\uD558\uB294\uC9C0\uD655\uC778\uD574\uC8FC\uC2ED\uC2DC\uC624.\ N\uB354\uB192\uC740\uC124\uACC4\uAE30\uBC84\uC804\uC73C\uB85C\uC791\uC131\uB41C\uD15C\uD50C\uB9BF\uC744\uC5F4\uACBD\uC6B0\uC5F4\uAE30\uC624\uB958\uB85C\uC778\uD574\uAE30\uC874\uD15C\uD50C\uB9BF\uC18D\uC131\uC744\uC783\uC744\uC218\uC788\uC2B5\uB2C8\uB2E4. \uC791\uC131\uD55C\uD15C\uD50C\uB9BF\uC5D0\uC11C\uC0AC\uC6A9\uD558\uACE0\uC788\uB294\uC124\uACC4\uAE30\uBC84\uC804\uC774\uB2F9\uC2E0\uC758\uCD5C\uC885\uC124\uCE58\uC11C\uBC84\uBC84\uC804\uBCF4\uB2E4\uB192\uC744\uACBD\uC6B0\uC11C\uBC84\uB294\uB2F9\uC2E0\uC774\uC791\uC131\uD55C\uD15C\uD50C\uB9BF\uC744\uB85C\uB529\uD558\uC9C0\uBABB\uD560\uC218\uC788\uC2B5\uB2C8\uB2E4. +FR-Designer_Server-version-tip-moreInfo=\uBC84\uC804\uBD88\uC77C\uCE58\uB85C\uC778\uD55C\uBB38\uC81C\uAC00\uBC1C\uC0DD\uD558\uC9C0\uC54A\uB3C4\uB85D\uC0AC\uC6A9\uD558\uACE0\uC788\uB294 FineReport\uC81C\uD488\uC758\uC124\uACC4\uAE30\uBC84\uC804\uBC0F\uC124\uCE58\uB41C\uC11C\uBC84\uBC84\uC804\uC774\uC77C\uCE58\uD558\uB294\uC9C0\uD655\uC778\uD574\uC8FC\uC2ED\uC2DC\uC624.\ N\uB354\uB192\uC740\uC124\uACC4\uAE30\uBC84\uC804\uC73C\uB85C\uC791\uC131\uB41C\uD15C\uD50C\uB9BF\uC744\uC5F4\uACBD\uC6B0\uC5F4\uAE30\uC624\uB958\uB85C\uC778\uD574\uAE30\uC874\uD15C\uD50C\uB9BF\uC18D\uC131\uC744\uC783\uC744\uC218\uC788\uC2B5\uB2C8\uB2E4. \uC791\uC131\uD55C\uD15C\uD50C\uB9BF\uC5D0\uC11C\uC0AC\uC6A9\uD558\uACE0\uC788\uB294\uC124\uACC4\uAE30\uBC84\uC804\uC774\uB2F9\uC2E0\uC758\uCD5C\uC885\uC124\uCE58\uC11C\uBC84\uBC84\uC804\uBCF4\uB2E4\uB192\uC744\uACBD\uC6B0\uC11C\uBC84\uB294\uB2F9\uC2E0\uC774\uC791\uC131\uD55C\uD15C\uD50C\uB9BF\uC744\uB85C\uB529\uD558\uC9C0\uBABB\uD560\uC218\uC788\uC2B5\uB2C8\uB2E4. +Get_Lock=\uC554\uD638\uD654 +HF-Edit_Footer=\uD398\uC774\uC9C0\uBC14\uB2E5\uAE00\uD3B8\uC9D1 +Datasource-New_Charset=\uC0C8\uCF54\uB529 +Preference-Custom=\uC0AC\uC6A9\uC790\uC815\uC758 +BackgroundTexture-Newsprint=\uC2E0\uBB38\uC9C0 +ConditionB-Add_bracket=\uAD04\uD638\uCD94\uAC00 +Datasource-Connection_successfully=\uB9C1\uD06C\uC131\uACF5 +Function-The_class_must_implement_the_interface=\uD574\uB2F9\uD074\uB798\uC2A4\uB294\uC778\uD130\uD398\uC774\uC2A4\uB97C\uD574\uC57C\uD55C\uB2E4. +FR-Designer_ChartF-Transparency=\uD22C\uBA85 +Crimson=\uC9C4\uD55C\uBE68\uAC15 +FR-Hyperlink_Dialog=\uB300\uD654\uC0C1\uC790 +FR-Designer_Covered_All=\uBAA8\uB450\uB36E\uC5B4\uC50C\uC6B0\uAE30 +Hyperlink-New_Window=\uC0C8\uC708\uB3C4\uC6B0 +Style_Name=\uC11C\uC2DD\uBA85 +CSS_warning=\\uc0c1\uB300\uBB38\uC11C\uD504\uB85C\uC81D\uD2B8\uB514\uB809\uD130\uB9AC(\uC608:WebReport,WebReport\\css)\uC5D0\uC778\uC6A9\uB41Ccss \uD30C\uC77Ctest.css\uAC00\uC788\uB294\uACBD\uC6B0\uC0C1\uB300\uACBD\uB85C\uB294css/test.css\uC774\uB2E4. +FR-Base_Column=\uC5F4 +Three_Rows_Of_Two_Grid=3\uD589 2\uC5F4\uC758\uADF8\uB9AC\uB4DC +DBCP_VALIDATION_QUERY=SQL\uAC80\uC99D\uCC3E\uC544\uBCF4\uAE30 +M_Edit-Clear_Formats=\uC11C\uC2DD(F) +Parameter_Setting=\uB9E4\uAC1C\uBCC0\uC218\uC124\uC815 +Related=\uC5F0\uB3D9 +BorderLayout-Constraints=\uC704\uCE58 +Write_Preview=\uAE30\uC785\uBBF8\uB9AC\uBCF4\uAE30 +PageSetup-Page_Order=\uC778\uC1C4\uC21C\uC11C +Verify-Verify_Formula=\uAC80\uC0AC\uC218\uC2DD +State=\uC131\uC2DC +FR-Designer-Widget-Style_Body_Background=\uBA54\uC778\uBC30\uACBD +FR-App-Privilege_No=\uAD8C\uD55C\uC5C6\uC74C +Please_Drag_ParaPane= +Come_True=\uC2E4\uD604 +ISEMPTY=\uBE44\uC5B4\uC788\uC74C +Background-Texture=\uBB34\uB2AC +FR-Designer_Verify-Message=\uC624\uB958\uC815\uBCF4 +Locked=(\uC7A0\uAE40\uFF09 +Utils-Design-Action_Cancel=\uCDE8\uC18C +Image-Titled=\uD0C0\uC77C +Gradient-Direction=\uADF8\uB77C\uB370\uC774\uC158 \uBC29\uD5A5 +Green=\uC9D9\uC740\uB179\uC0C9 +Report_Engine=\uBB38\uC11C\uC5D4\uC9C4 +Return-String=\uBB38\uC790\uC5F4\uB3CC\uC544\uAC00\uAE30 +Margin=\uC5EC\uBC31 +Pitch_Percentage=\uAC04\uACA9\uBC31\uBD84\uC728 +FR-Base_TurnOff=\uB2EB\uAE30 +Utils-has_been_existed=\uC774\uBBF8\uC874\uC7AC\uD569\uB2C8\uB2E4 +HF-Insert_Formula=\uC218\uC2DD\uC0BD\uC785 +Utils-Exit_Designer=\uC124\uACC4\uAE30\uB098\uAC00\uAE30 +Formula_Dictionary_Display=\uC704\uC2E4\uC81C\uAC12\uBC94\uC704\uC548\uC758\uAC01\uAC12($$$): \uFF0C \uD45C\uC2DC\uAC12: +PageSetup-Left_to_right=\uD589\uBA3C\uC800\uC5F4\uB098\uC911 +Utils-Import_Excel_Data=[Excel]\uBD88\uB7EC\uC624\uAE30 +M-Save=\uC800\uC7A5 +redo=\uB9AC\uC6CC\uD06C +Status=\uC0C1\uD0DC +Draw=\uADF8\uB9AC\uAE30 +FR-Designer_Message=\uC815\uBCF4 +Records=\uAC74\uC758\uB808\uCF54\uB4DC +FR-Designer_ComboBox=\uBC15\uC2A4\uD480\uB2E4\uC6B4 +Driver=\uB4DC\uB77C\uC774\uBE0C +Template_Parameters=\uD15C\uD50C\uB9BF\uB9E4\uAC1C\uBCC0\uC218 +Form-Remove_Repeat_Data=\uC911\uBCF5\uB370\uC774\uD130\uC0AD\uC81C +ECP_decode=\uD15C\uD50C\uB9BF\uC554\uD638\uD574\uC81C +Area_Name=\uC601\uC5ED\uBA85 +Others=\uAE30\uD0C0 +Merge=\uBCD1\uD569 +BackgroundTexture-Parchment=\uC591\uD53C\uC885\uC774 +BindColumn-Bottom_N=\uB4A4N\uAC1C +Frame=\uD504\uB808\uC784 +Bottom_Border_Line=\uC544\uB798\uD14C\uB450\uB9AC\uC120 +Muiti_In=\uB2E4\uCE35\uB4DC\uB9B4\uB2E4\uC6B4 +FR-Designer-Dependence_Install_Online=install online +Use_Default_ToolBar=\uAE30\uBCF8\uD234\uBC14\uC0AC\uC6A9 +M_Server-Platform_Manager=\uBB38\uC11C\uD50C\uB7AB\uD3FC\uAD00\uB9AC +PageSetup-inches=\uC778\uCE58 +Form-Widget_Property=\uC18D\uC131\uC774\uB984 +FR-Layout_Padding=\uC548\uCABD\uC5EC\uBC31 +Schema=\uD14C\uB9C8 +Server_Path=\uD638\uC2A4\uD2B8\uCEF4\uD4E8\uD130\uC704\uCE58 +Condition_Display=\uC870\uAC74\uBCF4\uC774\uAE30 +FR-Server-Design_template_unopened=\uD15C\uD50C\uB9BF\uC744\uC5F4\uC218\uC5C6\uC2B5\uB2C8\uB2E4. +Function-Function_Class_Name=\uD568\uC218\uD074\uB798\uC2A4\uB124\uC784 +Schedule-Template=\uD15C\uD50C\uB9BF\uBA85\uCE6D +Tree_Data_Field=\uD2B8\uB9AC\uB370\uC774\uD130\uD544\uB4DC +Border-Style-Normal=\uC9C1\uAC01\uD14C\uB450\uB9AC +Top_And_Double_Bottom_Border_Line=\uC704\uD14C\uB450\uB9AC\uC120\uACFC\uB450\uC904\uBC11\uD14C\uB450\uB9AC\uC120 +FR-Server_Embedded_Server_Start=\uB0B4\uC7A5\uB41C\uC11C\uBC84-\uC5F4\uAE30 +FR-Designer-Basic_Restart_Designer_Later=\uC7A0\uC2DC\uD6C4\uC7AC\uBD80\uD305\uD574\uC8FC\uC2ED\uC2DC\uC624. +StyleAlignment-Top=\uC704\uC5D0\uB9DE\uCDA4 +ReportServerP-First=\uBA54\uC778\uD398\uC774\uC9C0 +Not_Exist=\uC874\uC7AC\uD558\uC9C0\uC54A\uC2B5\uB2C8\uB2E4. +FR-Remote_File_is_Locked=\uC5F4\uB824\uB294\uBB38\uC11C\uB97C\uB2E4\uB978\uC0AC\uB78C\uC774\uC0AC\uC6A9\uC911\uC774\uB2C8\uC7A0\uC2DC\uD6C4\uC5D0\uC5F4\uC5B4\uC8FC\uC2ED\uC2DC\uC624. +Apply=\uC751\uC6A9 +Sytle-Indentation=\uB4E4\uC5EC\uC4F0\uAE30 +Parameter-Float=\uC2F1\uAE00\uC815\uB3C4\uD0C0\uC785 +HF-Center_Section=\uC911\uAC04\uC601\uC5ED +Form-Double_quotes=\uD070\uB530\uC634\uD45C +M_File-Export-Word=Word\uC11C\uC2DD +M_File-Export-Text=\uD14D\uC2A4\uD2B8\uD30C\uC77C(\uD0ED\uAE30\uD638\uB85C\uAD6C\uBD84) +PageSetup-First_Page_Number=\uC2DC\uC791\uD398\uC774\uC9C0\uBC88\uD638 +Execute=\uC2E4\uD589 +Task=\uD0DC\uC2A4\uD06C +Custom_Button_Type_Submit=\uC81C\uCD9C +FR-Designer-Widget_Settings=\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uC124\uC815 +IS_Need_Password=\uC554\uD638\uB97C\uC785\uB825\uD574\uC57C\uD569\uB2C8\uB2E4. +PageSetup-Horizontally=\uC218\uD3C9\uAC00\uC6B4\uB370\uC815\uB82C +No_Editor_Property_Definition=\uD574\uB2F9\uD3B8\uC9D1\uAE30\uC5D0\uC18D\uC131\uC815\uC758\uAC00\uC5C6\uC2B5\uB2C8\uB2E4. +Env-Remote_Server=\uC6D0\uACA9\uC11C\uBC84 +FR-Utils_Background=\uBC30\uACBD +FR-Designer-Plugin_Warning=\uACBD\uACE0 +Server-version-info=\uD604\uC7AC\uC5F0\uD15C\uD50C\uB9BF\uD30C\uC77C\uC740\uB354\uB192\uC740\uBC84\uC804\uC758\uC124\uACC4\uAE30\uB85C\uC791\uC131\uB418\uC5C8\uC2B5\uB2C8\uB2E4.\uC5F4\uACBD\uC6B0\uAE30\uC874\uD15C\uD50C\uB9BF\uC18D\uC131\uC774\uC624\uB958\uAC00\uB098\uAC70\uB098\uC190\uC0C1\uB420\uC704\uD5D8\uC774\uC788\uC2B5\uB2C8\uB2E4. \uC774\uD15C\uD50C\uB9BF\uC744\uC5F4\uC5B4\uC57C\uD560\uACBD\uC6B0\uC124\uACC4\uAE30\uB97C~\uB85C\uC5C5\uADF8\uB808\uC774\uB4DC\uD574\uC8FC\uC2ED\uC2DC\uC624. +CellWrite-Page_After_Row=\uD589\uB4A4\uD398\uC774\uC9C0\uB098\uB204\uAE30 +HF-Right_Section=\uC624\uB978\uCABD\uC601\uC5ED +PageSetup-Title_Start_Row=\uC911\uBCF5\uC81C\uBAA9\uD589 +From=~\uBC88\uC9F8\uBD80\uD130 +Preference-Grid_Line_Color=\uB208\uAE08\uC120\uC0C9 +RowTo=\uD589\uC5D0\uC11C~\uBC88\uC9F8 +FR-Designer_ReportColumns-Repeat_Column=\uC5F4\uBCF5\uC0AC\uC21C\uC11C +M_Server-Function_Manager=\uD568\uC218\uAD00\uB9AC\uC790 +KeyWord=\uD0A4\uC6CC\uB4DC +DS-Multi_Dimensional_Database=\uB2E4\uCC28\uC6D0\uB370\uC774\uD130\uBCA0\uC774\uC2A4 +BiasD-Slope_Line=\uC0AC\uC120 +Tue=2 +ReportServerP-Last=\uB05D\uD398\uC774\uC9C0 +FR-Base_Columns=\uC5F4 +SpecifiedG-Leave_in_their_own_groups=\uAC01\uC790\uC758\uADF8\uB8F9\uC548\uC5D0\uB0A8\uAE30\uAE30 +LOG-Please_Wait=\uC7A0\uC2DC\uB9CC\uAE30\uB2E4\uB824\uC8FC\uC2ED\uC2DC\uC624 +Form-ToolBar=\uD3FC\uD234\uBC14 +FR-Base_sure_remove_item=\uC815\uB9D0\uB85C\uC120\uD0DD\uD55C\uD56D\uBAA9\uC744\uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? +Component_Scale=\uC5B4\uC148\uBE14\uB9AC\uCD95\uC18C +Hyperlink-Use_CJK_to_encode_parameter=CJK\uB85C\uB9E4\uAC1C\uBCC0\uC218\uCC98\uB9AC +LOG-Has_Been_Openned=\uC5F4\uB838\uC2B5\uB2C8\uB2E4. +FR-Designer-Dependence= +ECP_error_pwd=\uBE44\uBC00\uBC88\uD638\uC785\uB825\uC624\uB958 +REPORTLET=\uD15C\uD50C\uB9BF\uACBD\uB85C\uC758\uB9E4\uAC1C\uBCC0\uC218\uC811\uADFC +RWA-Column_Offset=\uC5F4\uC635\uC14B +Forecast=\uC608\uCE21 +Light_Orange=\uC624\uB80C\uC9C0\uC0C9 +StyleAlignment-Vertical=\uC218\uC9C1\uC815\uB82C +Form-List=\uB9AC\uC2A4\uD2B8 +ParameterD-Show_Parameter_Window=\uB9E4\uAC1C\uBCC0\uC218\uB300\uD654\uCC3D\uBCF4\uC774\uAE30 +FR-Designer_Set_Submit_Event=\uC81C\uCD9C\uC774\uBCA4\uD2B8\uC124\uC815 +Value_Percent=\uAC12\uC810\uC720\uBE44\uC728 +DBCP_MIN_EVICTABLE_IDLE_TIMEMILLIS=\uC720\uD734\uCD5C\uC18C\uC2DC\uAC04\uAC12 +Function-The_class_must_be_located_in=\uD574\uB2F9\uD074\uB798\uC2A4\uB294~\uC5D0\uB450\uC5B4\uC57C\uD55C\uB2E4. +FR-Action_Sort=\uC21C\uC11C +DataFunction-Average=\uD3C9\uADE0 +FR-Designer_Show_in_Containing_Folder=\uD574\uB2F9\uD3F4\uB354\uC5F4\uAE30 +M_File-Export-Excel=Excel\uC11C\uC2DD +DataFunction-Max=\uCD5C\uB300\uAC12 +FR-Designer_Form-Widget_Name=\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uC774\uB984 +FS_End_Date=\uC885\uB8CC\uB0A0\uC9DC +Export-Excel-Simple=\uC6D0\uB798\uBAA8\uC2B5\uB0B4\uBCF4\uB0B4\uAE30 +ColumnTo=\uC5F4\uC744~\uBC88\uC9F8\uB85C +SpecifiedG-Discard_all_others=\uAE30\uD0C0\uBAA8\uB4E0\uAC83\uD3EC\uAE30 +DS-TableData=\uB370\uC774\uD130\uC138\uD2B8 +Form-DataTable=\uB370\uC774\uD130\uD45C +Sub_Report_ToolTips=\uBB38\uC11C\uC548\uC758\uBB38\uC11C\uC54C\uB9BC +Right_Top=\uC624\uB978\uCABD\uC704 +M_Edit-Merge_Cell=\uC140\uBCD1\uD569 +FR-Designer_Restore_Default=\uAE30\uBCF8\uD68C\uBCF5 +Component_Interval=\uC5B4\uC148\uBE14\uB9AC\uAC04\uACA9 +Cover_None=\uBAA8\uB450\uB36E\uC5B4\uC50C\uC6B0\uC9C0\uC54A\uAE30 +Datasource-From_Database=\uB370\uC774\uD130\uBCA0\uC774\uC2A4\uD45C +Folder=\uB514\uB809\uD130\uB9AC +Form-Allow_Edit=\uC9C1\uC811\uD3B8\uC9D1\uD5C8\uC6A9 +M_Edit-Clear=\uD074\uB9AC\uC5B4(A) +ParentCell_Setting=\uBD80\uBAA8\uC140\uC124\uC815 +Only_selected_cell_can_paste_only=\uC140\uC744\uC120\uD0DD\uD574\uC57C\uBD99\uC5EC\uB123\uAE30\uB97C\uD560\uC218\uC788\uC2B5\uB2C8\uB2E4. +M_Report-Report_Columns=\uBB38\uC11C\uC140\uB098\uB204\uAE30 +Unit_Hundred=\uBC31 +FR-Designer_DataTable-Build= +Widget-Form_Widget_Config=\uD3FC\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4 +Server-version-tip-moreInfo=\uBC84\uC804\uBD88\uC77C\uCE58\uB85C\uC778\uD55C\uBB38\uC81C\uAC00\uBC1C\uC0DD\uD558\uC9C0\uC54A\uB3C4\uB85D\uC0AC\uC6A9\uD558\uACE0\uC788\uB294 FineReport\uC81C\uD488\uC758\uC124\uACC4\uAE30\uBC84\uC804\uBC0F\uC124\uCE58\uB41C\uC11C\uBC84\uBC84\uC804\uC774\uC77C\uCE58\uD558\uB294\uC9C0\uD655\uC778\uD574\uC8FC\uC2ED\uC2DC\uC624.\ N\uB354\uB192\uC740\uC124\uACC4\uAE30\uBC84\uC804\uC73C\uB85C\uC791\uC131\uB41C\uD15C\uD50C\uB9BF\uC744\uC5F4\uACBD\uC6B0\uC5F4\uAE30\uC624\uB958\uB85C\uC778\uD574\uAE30\uC874\uD15C\uD50C\uB9BF\uC18D\uC131\uC744\uC783\uC744\uC218\uC788\uC2B5\uB2C8\uB2E4. \uC791\uC131\uD55C\uD15C\uD50C\uB9BF\uC5D0\uC11C\uC0AC\uC6A9\uD558\uACE0\uC788\uB294\uC124\uACC4\uAE30\uBC84\uC804\uC774\uB2F9\uC2E0\uC758\uCD5C\uC885\uC124\uCE58\uC11C\uBC84\uBC84\uC804\uBCF4\uB2E4\uB192\uC744\uACBD\uC6B0\uC11C\uBC84\uB294\uB2F9\uC2E0\uC774\uC791\uC131\uD55C\uD15C\uD50C\uB9BF\uC744\uB85C\uB529\uD558\uC9C0\uBABB\uD560\uC218\uC788\uC2B5\uB2C8\uB2E4. +Actions=\uD0DC\uC2A4\uD06C +FR-Designer-Dependence_Connect_Server_Error=connect error +High=\uB192\uC774 +HJS-Send_Failed=\uBC1C\uC1A1\uC2E4\uD328 +HJS-Message=\uB0B4\uC6A9 +File-Allow_Upload_Files=\uC5C5\uB85C\uB4DC\uD5C8\uC6A9\uD30C\uC77C\uC720\uD615 +FR-Designer-Form-ToolBar_Chart=\uCC28\uD2B8 +Thick_Bottom_Border_Line=\uAD75\uC740\uBC11\uC904\uD14C\uB450\uB9AC\uC120 +FR-Action_Remove=\uC0AD\uC81C +FRFont-Style=\uD3F0\uD2B8 +Select_DataColumn=\uB370\uC774\uD130\uC5F4\uC120\uD0DD +StartValue=\uC2DC\uC791\uAC12 +SINGLE_FILE_UPLOAD=\uD55C\uAC1C\uD30C\uC77C\uC5C5\uB85C\uB4DC\uB9CC\uC9C0\uC6D0\uD569\uB2C8\uB2E4. +BackgroundTexture-Cork=\uCF54\uB974\uD06C\uB9C8\uAC1C +M_Format-Data_Map=\uB370\uC774\uD130\uC0AC\uC804 +FR-mobile_native_analysis=\uC6D0\uC0DD \uD574\uC11D +HighLight=\uD558\uC774\uADF8\uB85C\uC2DC +FR-Designer_Dropdown-More-Preview=\uC544\uB798\uB85C \uB4DC\uB798\uADF8\uD558\uBA74 \uB354 \uB9CE\uC740 \uBBF8\uB9AC\uBCF4\uAE30 \uBC29\uC2DD\uC774 \uB098\uC635\uB2C8\uB2E4. +local=\uB85C\uCEEC +FR-Designer_Gradation=\uB2E8\uACC4 +PageSetup-Finis_Start_Column=\uC911\uBCF5\uC885\uB8CC\uC5F4 +Env-Invalid_User_and_Password=\uC62C\uBC14\uB974\uC9C0\uC54A\uC740\uC0AC\uC6A9\uC790\uC774\uB984\uB610\uB294\uC554\uD638 +FR-Designer-Plugin_All_Plugins=\uBAA8\uB450\uD50C\uB7EC\uADF8\uC778 +FR-Designer_Prepare_Export=\uB0B4\uBCF4\uB0B4\uAE30\uB97C\uC2DC\uC791\uD558\uB2C8\uC7A0\uC2DC\uB9CC\uAE30\uB2E4\uB824\uC8FC\uC2ED\uC2DC\uC624. +DBCP_TEST_ON_RETURN=\uB9C1\uD06C\uADC0\uD658\uC804\uAC80\uC0AC\uC9C4\uD589 +no-alternatives=\uC120\uD0DD\uD55C\uD56D\uBAA9\uC774\uC5C6\uC2B5\uB2C8\uB2E4. +FR-Designer_Submmit_WClass=\uBC31\uADF8\uB77C\uC6B4\uB4DC\uD074\uB798\uC2A4\uC81C\uCD9C +M_Insert-Slope_Line=\uC0AC\uC120\uC0BD\uC785 +FR-Designer-Plugin_Plugin_Description=\uD50C\uB7EC\uADF8\uC778\uC124\uBA85 +ExpandD-Not_Expand=\uD655\uC7A5\uD558\uC9C0\uC54A\uC74C +Utils-Bottom_to_Top=\uC544\uB798\uC11C\uC704\uB85C +Collect-Click\!_Get_user_information_code=\!\uB97C\uD074\uB9AD\uD558\uC5EC\uD65C\uC131\uCF54\uB4DC\uB97C\uC5BB\uC2B5\uB2C8\uB2E4. +FR-Already_exist=\uD604\uC7AC\uD658\uACBD\uC774\uC774\uBBF8\uC874\uC7AC\uD569\uB2C8\uB2E4\: +Send=\uBC1C\uC1A1 +M_Edit-Clear_All=\uBAA8\uB450 (A) +Brown_Orange=\uC605\uC740\uAC08\uC0C9 +PageSetup-Portrait=\uC138\uB85C +FR-Designer_Form-RadioGroup=\uB2E8\uC77C\uC120\uD0DD\uD0A4\uD328\uB4DC +FR-Utils-App_AllFiles=\uBAA8\uB4E0\uD30C\uC77C +Popup=\uD31D\uC5C5 +Server_Charset=\uC11C\uBC84\uCF54\uB529 +CellWrite-Repeat_Content_When_Paging=\uD398\uC774\uC9C0\uB098\uB204\uAE30\uB85C\uB098\uB20C\uB54C\uAC12\uC911\uBCF5\uBCF4\uC774\uAE30 +Utils-No_Pagination=\uD398\uC774\uC9C0\uB098\uB204\uAE30\uB97C\uD558\uC9C0\uC54A\uC2B5\uB2C8\uB2E4. +Form-NullLayout=\uC808\uB300\uC801\uC704\uCE58 +ConditionB-Remove_bracket=\uAD04\uD638\uC0AD\uC81C +email=\uBA54\uC77C +Minute=\uBD84 +FR-Designer-Plugin_Update=\uD50C\uB7EC\uADF8\uC778\uC5C5\uB370\uC774\uD2B8 +alraedy_close=\uB2EB\uD614\uC2B5\uB2C8\uB2E4. +ComboCheckBox-End_Symbol=\uC885\uB8CC\uBD80\uD638 +DataColumn=\uB370\uC774\uD130\uC5F4 +Form-Password=\uC554\uD638 +FR-Background_Image_Adjust=\uC801\uC6A9 +Export-Excel-PageToSheet=\uD398\uC774\uC9C0\uC640 Sheet\uB098\uB204\uC5B4\uB0B4\uBCF4\uB0B4\uAE30 +Edit-Row_Count=\uD589\uC218 +DS-Report_TableData=\uD15C\uD50C\uB9BF\uB370\uC774\uD130\uC138\uD2B8 +Sche-Hour=\uC2DC +Group_Count=\uCD1D\uAC1C\uC218\uB97C\uB098\uD0C0\uB0B8\uB2E4. +EndValue=\uC885\uB8CC\uAC12 +FR-Designer_Sytle-Indentation=\uB4E4\uC5EC\uC4F0\uAE30 +DownBarBorderStyleAndColor=\uB4DC\uB86D\uCE7C\uB7FC\uC591\uC2DD +World=\uC6D4\uB4DC +FR-Designer-Basic_Cancel=\uCDE8\uC18C +Finally=\uB9C8\uC9C0\uB9C9 +Low=\uB0AE\uC74C +Please_Input_The_Key=\uD574\uB2F9\uB9F5\uC5D0\uC11C\uC0AC\uC6A9\uD558\uB294key\uB97C\uC785\uB825\uD574\uC8FC\uC2ED\uC2DC\uC624 +Smart=\uC2A4\uB9C8\uD2B8 +Preference-Predefined=\uC0AC\uC804\uC815\uC758\uB41C +Current_custom_global=\uD604\uC7AC\uBB38\uC11C\uC5D0\uC11C\uC0AC\uC6A9\uD558\uB294\uC0AC\uC6A9\uC790\uC815\uC758\uC758\uBAA8\uB4E0\uC591\uC2DD +FR-Designer-Plugin_Shop_Need_Install=\uB2F9\uC2E0\uC740 \uCD94\uAC00 \uAE30\uB2A5\uB418\uC9C0 \uC54A\uC740 \uC790\uC6D0\uC758 \uC800\uC7A5\uC18C\uB97C \uB2E4\uC6B4\uB85C\uB4DC \uD560 \uAC83\uC778\uC9C0? +WEB-Pagination_Setting=\uD398\uC774\uC9C0\uB098\uB204\uAE30\uBBF8\uB9AC\uBCF4\uAE30\uC124\uC815 +RCodeDrawPix=\uD654\uC18C +FR-Designer-Widget-Style_Alpha=\uBD88\uD22C\uBA85\uB3C4 +BorderLayout-North=\uBD81 +HJS-Current_Page=\uD604\uC7AC\uD398\uC774\uC9C0 +Compile=\uCEF4\uD30C\uC77C +Show_Blank_Row=\uACF5\uBC31\uD589\uBCF4\uCDA9 +TableData_Dynamic_Parameter_Setting=\uB3D9\uC801\uD30C\uB77C\uBBF8\uD130\uC8FC\uC785 +FR-Background_Image_Default=\uAE30\uBCF8 +BackgroundTexture-WhiteMarble=\uD770\uC0C9\uB300\uB9AC\uC11D +DataFunction-Sum=\uD569\uAD6C\uD558\uAE30 +Collect-The_user_information_code_is_invalid=\uB4F1\uB85D\uB418\uC5B4\uC788\uC9C0\uC54A\uC740\uD65C\uC131\uCF54\uB4DC\uC785\uB2C8\uB2E4.\uD648\uD398\uC774\uC9C0\uC5D0\uC11C\uC2E0\uCCAD\uD574\uC8FC\uC2ED\uC2DC\uC624. +Preference-Locale=\uAD6D\uC81C\uD654 +M_File-Export-PDF=PDF\uC11C\uC2DD +BiasD-From-lower_left_to_upper_right=\uC67C\uCABD\uD558\uB2E8\uC5D0\uC11C\uC624\uB978\uCABD\uC704\uB85C\uB098\uD0C0\uB0B4\uAE30 +Border-Style=\uD14C\uB450\uB9AC\uC591\uC2DD +Sort=\uC21C\uC11C +Image-Image_Layout=\uC774\uBBF8\uC9C0\uB808\uC774\uC544\uC6C3 +Panel=\uD328\uB110 +FR-Designer-Basic_Copy_Build_NO_OK=\uC0DD\uC131\uBC84\uC804\uBC88\uD638\uAC00\uD074\uB9BD\uBCF4\uB4DC\uC5D0\uBCF5\uC0AC\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +All_Border_Line=\uBAA8\uB4E0\uD14C\uB450\uB9AC\uC120 +FR-Utils-Please_Input_a_New_Name=\uC0C8\uB85C\uC6B4\uC774\uB984\uC744\uC785\uB825\uD574\uC8FC\uC2ED\uC2DC\uC624. +FR-Base_Formula_Plugin=\uD50C\uB7EC\uADF8\uC778\uD568\uC218 +Two_Rows_Of_Three_Grid=2\uD589 3\uC5F4\uC758\uADF8\uB9AC\uB4DC +FR-Designer_Certificate_Pass=https\uBE44\uBC00\uD0A4 +Bubble-Series_Name=\uACC4\uC5F4\uBA85 +M-New_Multi_Report=\uC0C8\uCDE8\uD569\uBB38\uC11C (M) +BackgroundTexture-PinkTissuePaper=\uD551\uD06C\uC0AC\uD3EC +Preference-Support_Default_Parent_Calculate=\uAE30\uBCF8\uBD80\uBAA8\uC140\uACC4\uC0B0 +Show_Blank_Column=\uACF5\uBC31\uC5F4\uBCF4\uCDA9 +BaiduMap=\uBC14\uC774\uB450\uC9C0\uB3C4 +Report-Web_Attributes=\uD15C\uD50C\uB9BFWeb \uC18D\uC131 +FR-Designer_StyleAlignment-Wrap_Text=\uC790\uB3D9\uD589\uBC14\uAFB8\uAE30 +Need=\uD544\uC694 +Parameter-Double=\uB354\uBE14\uC815\uB3C4\uD0C0\uC785 +Config_Servlet=\uC6D0\uACA9\uC11C\uBC84\uAD6C\uC131 +Form-Comma=\uC27C\uD45C +Verify=\uAC80\uC0AC +PageSetup-Landscape=\uAC00\uB85C +Weeks=\uC694\uC77C +FR-Designer-Widget-Style_Title_Background=\uC81C\uBAA9\uBC30\uACBD +Preference-Pagination_Line_Color=\uD398\uC774\uC9C0\uB098\uB204\uAE30\uC120\uC0C9 +Test_URL=\uD14C\uC2A4\uD2B8\uB9C1\uD06C +Fill_blank_Data=\uACF5\uBC31\uB370\uC774\uD130\uBCF4\uCDA9 +ReportServerP-The_name_of_printer_cannot_be_null=\uD504\uB9B0\uD130\uC758\uC774\uB984\uC740\uBE48\uCE78\uC73C\uB85C\uB458\uC218\uC5C6\uC2B5\uB2C8\uB2E4. +FR-Designer-Basic_Copy_Activation_Key=\uC124\uACC4\uAE30\uC77C\uB828\uBC88\uD638\uB97C\uB354\uBE14\uD074\uB9AD\uD558\uBA74,\uD074\uB9BD\uBCF4\uB4DC\uC5D0\uBCF5\uC0AC\uB429\uB2C8\uB2E4. +Continuum=\uC774\uC6C3\uC5F0\uC18D +BackgroundTexture-MediumWood=\uC9D9\uC740\uB098\uBB34\uC7AC\uC9C8 +Datasource-Column_Index=\uC5F4\uBC88\uD638 +Function-Function_File=\uD568\uC218\uD30C\uC77C +Form-Component_Bounds=\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uACBD\uACC4\uC120 +Utils-Submit=\uC81C\uCD9C +Conditions_formula=\uC870\uAC74\uC218\uC2DD +M_Insert-Image=\uC774\uBBF8\uC9C0\uC0BD\uC785 +FR-Designer-Plugin_Will_Be_Delete=\uD50C\uB7EC\uADF8\uC778\uC774\uC0AD\uC81C\uB429\uB2C8\uB2E4.\uC124\uACC4\uAE30\uBC0F\uC11C\uBC84\uB97C\uC7AC\uBD80\uD305\uD558\uB824\uBA74\uC11C\uBC84\uB97C\uC218\uB3D9\uC7AC\uBD80\uD305\uD574\uC57C\uD569\uB2C8\uB2E4. +FormulaD-Functions=\uD568\uC218 +Mobile_Terminal=\uBAA8\uBC14\uC77C\uB2E8\uB9D0 +CheckBox=\uCCB4\uD06C\uBC15\uC2A4 +FR-Designer-Plugin_Install=\uC124\uCE58 +Sun=\uC77C +FR-Designer_ToolBar_Bottom=\uD558\uB2E8\uD234\uBC14 +Widget-Width=\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uB108\uBE44 +Series_Name=\uACC4\uC5F4\uBA85 +Set_Row_Title_Start=\uC911\uBCF5 \uD0C0\uC774\uD2C0 \uD589 \uC124\uC815 +HF-Default_Page=\uAE30\uBCF8\uD398\uC774\uC9C0 +Env_Des=\uB85C\uADF8\uC778\uD658\uACBD\uC911\uC758\uBB38\uC11C\uD504\uB85C\uC81D\uD2B8\uC5D0\uC11C\uAD8C\uD55C\uC0AC\uC6A9\uC744\uC2DC\uC791\uD588\uC744\uACBD\uC6B0\uC0AC\uC6A9\uC790\uC774\uB984\uACFC\uC554\uD638\uB294\uD574\uB2F9\uB85C\uADF8\uC778\uD658\uACBD\uC758\uC0AC\uC6A9\uC790\uC640\uC554\uD638\uB97C\uAE30\uC785\uD574\uC57C\uD569\uB2C8\uB2E4. +Widget-User_Defined=\uC0AC\uC804\uC815\uC758\uB41C +Url_location=\uC808\uB300\uACBD\uB85C +Disk_File=\uB514\uC2A4\uD06C\uD30C\uC77C +Inside=\uB0B4\uBD80 +FR-Designer_filedChosen= +ServerM-Predefined_Styles=\uC0AC\uC804\uC815\uC758\uB41C\uC591\uC2DD +is_need_word_adjust=\uBE44\uACE0\uC815\uD589\uB192\uC774\uB0B4\uBCF4\uB0B4\uAE30 +Background-Null=\uBC30\uACBD\uC5C6\uC74C +PageSetup-Vertically=\uC218\uC9C1\uAC00\uC6B4\uB370\uC815\uB82C +FR-Designer_Root=\uB8E8\uD2B8\uB178\uB4DC +FR-Designer_Form-TextArea=\uD14D\uC2A4\uD2B8\uC601\uC5ED +ReportServerP-Import_JavaScript=JavaScript\uC778\uC6A9 +Form-TableTree=\uC2DC\uD2B8\uD2B8\uB9AC +Opened=\uC5F4\uB824\uC788\uC2B5\uB2C8\uB2E4. +M_Edit-Delete=\uC0AD\uC81C(D) +Widget-Form_Widget_Container=\uD3FC\uCEE8\uD14C\uC774\uB108 +BindColumn-Summary=\uCDE8\uD569 +Sche-Second=\uCD08 +Server-Open_Service_Manager=\uC11C\uBE44\uC2A4\uAD00\uB9AC\uC790\uC5F4\uAE30 +FRFont-Effects=\uD2B9\uC218\uD6A8\uACFC +OtherGroup_Name=\uAE30\uD0C0\uADF8\uB8F9\uC774\uB984 +Specify=\uC9C0\uC815 +Highlight-Click_to_Choose_Property_To_Modify=\uBC14\uAFB8\uB824\uB294\uC18D\uC131\uC120\uD0DD\uD074\uB9AD +triggered=\uD2B8\uB9AC\uAC70\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +Double_Bottom_BorderLine=\uC774\uC911\uBC14\uB2E5\uD14C\uB450\uB9AC\uC120 +M_Insert-Sub_Report=\uBB38\uC11C\uC548\uC758\uBB38\uC11C\uC0BD\uC785 +Unit_Ten=10 +Polybolck=\uCDE8\uD569\uBE14\uB7ED +Select_sort_order=\uC815\uB82C\uC21C\uC11C\uC120\uD0DD +HJS-Mail_to=\uC218\uC2E0\uC778 +StyleAlignment-Left=\uC67C\uCABD\uC5D0\uB9DE\uCDA4 +Two_Rows_Of_Two_Grid=2\uD589 2\uC5F4\uC758\uADF8\uB9AC\uB4DC +FR-Designer-Form-Please_Drag_ParaPane=\uB9E4\uAC1C\uBCC0\uC218\uD328\uB110\uC744\uB4DC\uB798\uADF8\uD574\uC8FC\uC2ED\uC2DC\uC624. +Milliseconds=\uBC00\uB9AC\uCD08 +DataFunction-None=\uC5C6\uC74C +Delivery=\uC804\uB2EC +ColumnSpan=\uC5F4\uC2A4\uD32C +StyleAlignment-Bottom=\uC544\uB798\uC5D0\uB9DE\uCDA4 +Read_failure=\uC77D\uAE30\uC2E4\uD328\uFF0C \uC18C\uC2A4\uD30C\uC77C\uC774\uC190\uC0C1\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +Verify-Verify=\uB370\uC774\uD130\uAC80\uC0AC +FR-Designer-Widget-Style_Title_Format=\uC81C\uBAA9\uC11C\uC2DD +FR-Designer_Edit_String_To_Formula=\uBB38\uC790\uC5F4\uC744\uC218\uC2DD\uC73C\uB85C\uD3B8\uC9D1\uD558\uACA0\uC2B5\uB2C8\uAE4C? +FR-Base_UnSignIn=\uC544\uC9C1 \uB4F1\uB85D +Every=\uAC01 +CellWrite-Preview_Cell_Content=\uC140\uB0B4\uC6A9\uBBF8\uB9AC\uBCF4\uAE30 +FormulaD-Data_Fields=\uB370\uC774\uD130\uD56D\uBAA9 \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index 2740e54d22..db6c120c90 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -520,7 +520,6 @@ FR-Designer_Create_Tree=\u6784\u5EFA\u6811 FR-Designer_Set_Callback_Function=\u8BBE\u7F6E\u56DE\u8C03\u51FD\u6570 FR-Designer_ConfirmDialog_Content=\u662F\u5426\u786E\u5B9A\u5220\u9664tab\u63A7\u4EF6 FR-Designer_ConfirmDialog_Title=FineReport 8.0 - FR-Designer_FormulaPane_Tips=\u63D0\u793A\:\u60A8\u53EF\u4EE5\u901A\u8FC7\u8F93\u5165B1\u6765\u5199\u5165\u7B2C\u4E00\u884C\u7B2C\u4E8C\u5217\u7684\u6570\u636E\u3002 FR-Designer_FormulaPane_Variables=\u53D8\u91CF FR-Designer_FormulaPane_Formula_Description=\u516C\u5F0F\u8BF4\u660E @@ -529,13 +528,11 @@ FR-Designer_FormulaPane_Search=\u641C\u7D22 FR-Designer_Tab_carousel=tab\u8F6E\u64AD FR-Designer_setCarousel=\u5F00\u542F\u8F6E\u64AD FR-Designer_carouselInterval=\u8F6E\u64AD\u95F4\u9694 - FR-Designer_ClassName_panel=\u7C7B\u540D FR-Designer_Description_panel=\u63CF\u8FF0 FR-Designer_Edit_panel=\u7F16\u8F91 FR-Designer_Property_panel=\u5C5E\u6027 FR-Designer_Select_panel=\u9009\u62E9 - FR-Designer_LayoutTable_Column_Width=160 FR-Designer_Set_BG_Of_Current_Row=\u586B\u62A5\u5F53\u524D\u7F16\u8F91\u884C\u80CC\u666F\u8BBE\u7F6E FR-Designer_Unload_Check=\u672A\u63D0\u4EA4\u79BB\u5F00\u63D0\u793A @@ -551,7 +548,6 @@ FR-Designer_PageSetup_Page=\u9875\u9762 FR-Designer_Custom_Job_Description=\u63CF\u8FF0 FR-Designer_Property=\u5C5E\u6027 FR-Designer_ClassName=\u7C7B\u540D - FR-Designer_Polyblock_Edit=\u805A\u5408\u5757\u7F16\u8F91 FR-Designer_Function_Description_Area_Text=\u8BE5\u7C7B\u5FC5\u987B\u7EE7\u627F"com.fr.script.AbstractFunction"\u3002\u5E94\u5C06\u7F16\u8BD1\u540E\u7684\u7C7B\u6587\u4EF6\u62F7\u8D1D\u5230\nJ2EE\u670D\u52A1\u5668 "{R1}" \u76EE\u5F55\uFF0C\u5982\u679C\u5FC5\u8981\u7684\u8BDD\u5C06class\u5BF9\u5E94\u7684java\u6E90\u6587\u4EF6\u4E5F\u653E\u7F6E\u5230\u8BE5\u76EE\u5F55\u4E0B\u65B9\u4FBF\u7F16\u8F91\u548C\u67E5\u770B\u3002\n\u4F8B\u5982\uFF1A{R2} FR-Designer_PageSetup_Horizontal=\u6A2A\u5411 @@ -588,10 +584,8 @@ FR-Designer_Background_Image_Select=\u9009\u62E9\u56FE\u7247 FR-Designer_Initial_Background_Tips=\u6309\u94AE\u7684\u521D\u59CB\u80CC\u666F FR-Designer_Mouse_Move_Tips=\u9F20\u6807\u79FB\u52A8\u5230\u6309\u94AE\u4E0A\u7684\u80CC\u666F\uFF0C\u82E5\u65E0\u5219\u4E0D\u6539\u53D8\u80CC\u666F FR-Designer_Mouse_Click_Tips=\u9F20\u6807\u70B9\u51FB\u6309\u94AE\u65F6\u80CC\u666F\uFF0C\u82E5\u65E0\u5219\u4E0D\u6539\u53D8\u80CC\u666F - FR-Designer_Too_Large_To_Paste=\u7EC4\u4EF6\u5927\u5C0F\u8D85\u51FA\u8FB9\u754C\uFF0C\u65E0\u6CD5\u7C98\u8D34\uFF01 FR-Designer_Too_Small_To_Paste=\u6B64\u5904\u65E0\u6CD5\u7C98\u8D34\uFF0C\u5C0F\u4E8E\u7EC4\u4EF6\u6700\u5C0F\u9AD8\u5EA6\uFF01 - FR-Designer_AxisReversed=\u8F74\u9006\u5E8F FR-Designer_Logarithmic=\u5BF9\u6570\u523B\u5EA6 FR-Designer_Chart_Log_Base=\u5E95\u6570 @@ -602,3 +596,1390 @@ FR-Designer_Border=\u8FB9\u6846 FR-Designer_Background-Pattern=\u56FE\u6848 FR-Designer_Edit_Button_ToolBar=\u7F16\u8F91\u6309\u94AE\u6240\u5728\u5DE5\u5177\u680F FR-Designer_Remove_Button_ToolBar=\u79FB\u9664\u6309\u94AE\u6240\u5728\u5DE5\u5177\u680F +CellWrite-InsertRow_NULL=\u7A7A\u503C +DashBoard-ChartFloat=\u56FE\u8868 +contact_info=\u8054\u7CFB\u4FE1\u606F(\u9009\u586B) +Page_Setup=\u9875\u9762\u8BBE\u7F6E +CellWrite-Print_Export=\u6253\u5370\u5BFC\u51FA +Cannot_Get_Date=\u4E0D\u80FD\u83B7\u53D6\u65E5\u671F +FR-Designer_Modify=\u4FEE\u6539 +M-Write_Preview=\u586B\u62A5\u9884\u89C8 +FR-Base_RWA-Key=\u4E3B\u952E +China=\u4E2D\u56FD +Set_Legend_Sytle=\u8BBE\u7F6E\u56FE\u4F8B\u683C\u5F0F +FR-Designer_Number=\u6570\u5B57 +FR-Designer-Widget-Style_Common=\u666E\u901A +M-Save_As=\u53E6\u5B58\u4E3A +Following_parameters_are_not_generated=\u4EE5\u4E0B\u53C2\u6570\u672A\u751F\u6210 +FR-Designer-Basic_Activation_Key_Copy_OK=\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F +Utils-Current_Sheet=\u5F53\u524DSheet +ConditionB-is_less_than=\u5C0F\u4E8E +BorderLayout-West=\u897F +AnalysisLine=\u5206\u6790\u7EBF +Layer_Report_Warnning_info=\u884C\u5F0F\u5F15\u64CE\u9002\u7528\u4E8E\u5927\u6570\u636E\u91CF\u60C5\u5F62\u4E0B\u3002
\u4F7F\u7528\u6B64\u5F15\u64CE\u5F88\u591A\u62A5\u8868\u7279\u6027\u5C06\u4E0D\u518D\u652F\u6301\uFF0C
\u8BE6\u7EC6\u5185\u5BB9\u8BF7\u67E5\u770B\u6587\u6863\u76F8\u5173\u7AE0\u8282\u3002 +Tree-Width=\u5BBD\u5EA6 +alert_word=\u9009\u62E9\u4E0D\u56FA\u5B9A\u884C\u9AD8\u5BFC\u51FA\u65F6, \u7F16\u8F91\u5BFC\u51FA\u7684word, \u5355\u5143\u683C\u884C\u9AD8\u4F1A\u968F\u7740\u5185\u5BB9\u81EA\u52A8\u62C9\u4F38, \u6B64\u60C5\u51B5\u4E0B\u5BFC\u51FA\u7ED3\u679C\u5206\u9875\u4F4D\u7F6E\u4E0E\u9884\u89C8\u7ED3\u679C\u53EF\u80FD\u4F1A\u4E0D\u518D\u4E00\u81F4. +PageSetup-Paper_Size=\u7EB8\u5F20\u5927\u5C0F +M-Page_Setup=\u9875\u9762\u8BBE\u7F6E +DashBoard-FormBook=\u8868\u5355 +X-Coordinate=\u6A2A\u5750\u6807 +Style-Line_Spacing=\u884C\u95F4\u8DDD +FR-Designer_Plugin_Should_Update_Title=\u63D2\u4EF6\u5347\u7EA7\u63D0\u9192 +Server-Define_Data_Connection=\u5B9A\u4E49\u6570\u636E\u8FDE\u63A5 +BarInside=\u67F1\u5B50\u5185\u4FA7 +Border-Color=\u8FB9\u6846\u989C\u8272 +NotAllow=\u4E0D\u5408\u6CD5 +Utils-File_type=\u6587\u4EF6\u7C7B\u578B +FR-Designer-Plugin_Install_From_Local=\u4ECE\u672C\u5730\u6587\u4EF6\u5B89\u88C5 +Summary_Method=\u6C47\u603B\u65B9\u5F0F +Select_Specified_Grouping=\u9009\u62E9\u81EA\u5B9A\u4E49\u5206\u7EC4 +HF-Number_of_Page=\u603B\u9875\u6570 +FR-Designer-Tree_Height=\u9AD8\u5EA6 +Owner=\u4E3B +Home=\u4E3B\u9875 +FR-Server_Embedded_Server_Stop=\u5167\u7F6E\u7684\u670D\u52A1\u5668-\u505C\u6B62 +FR-Designer-Plugin_Detecting_Update=\u6B63\u5728\u68C0\u6D4B\u66F4\u65B0 +HF-Whether_to_define_the_selected_type=\u662F\u5426\u5B9A\u4E49\u9009\u4E2D\u7684\u7C7B\u578B +StyleAlignment-Right=\u9760\u53F3 +FR-Designer_Alignment-Style=\u5BF9\u9F50\u65B9\u5F0F +PageSetup-Title_Start_Column=\u91CD\u590D\u6807\u9898\u5217 +Tree-Mutiple_Selection_Or_Not=\u591A\u9009 +FR-Designer-Plugin_Search=\u641C\u7D22 +Choose_Role=\u6743\u9650\u63A7\u5236 +Append_Delete_Row_Message=\u6CE8\u610F\uFF01\u6307\u5B9A\u7684\u5355\u5143\u683C\u9700\u8981\u8BBE\u7F6E\u6269\u5C55\u5C5E\u6027 +Form-ComboBox=\u4E0B\u62C9\u6846 +PageSetup-Footer=\u9875\u811A +Sorting=\u6392\u5E8F\u4E2D +DBCP_TEST_WHILE_IDLE=\u5F00\u542F\u7A7A\u95F2\u56DE\u6536\u5668\u68C0\u9A8C +DS-Embedded_TableData=\u5185\u7F6E\u6570\u636E\u96C6 +FR-Designer_No-Privilege=\u6CA1\u6709\u6743\u9650 +FRFont-Subscript=\u4E0B\u6807 +Background_Settings=\u80CC\u666F\u8BBE\u7F6E +FormulaD-Invalid_Formula=\u975E\u6CD5\u7684\u516C\u5F0F +FR-Base_Margin=\u8FB9\u8DDD +FR-Designer-Plugin_Shop_Installed=\u63D2\u4EF6\u5546\u5E97\u5B89\u88C5\u5B8C\u6BD5,\u662F\u5426\u7ACB\u523B\u542F\u52A8? +M_Edit-Send_to_Back=\u7F6E\u4E8E\u5E95\u5C42(K) +Email-Can_Preview_Report_Content=\u6B63\u6587\u9884\u89C8\u62A5\u8868\u5185\u5BB9 +FR-Designer-FRFont_Italic=\u503E\u659C +CellWrite-Print_Background=\u6253\u5370/\u5BFC\u51FA\u5355\u5143\u683C\u80CC\u666F +Wizard=\u5411\u5BFC +Preference-Is_Drag_Permited=\u652F\u6301\u62D6\u62FD +FR-Designer_Release_Lock=\u89E3\u9501 +Form-Delimiter=\u5206\u9694\u7B26 +wrong=\u51FA\u9519\u4E86 +FR-Menu-Server_Chart_PreStyle=\u56FE\u8868\u9884\u5B9A\u4E49\u914D\u8272 +Form-Button=\u6309\u94AE +FormulaD-Valid_Formula=\u5408\u6CD5\u7684\u516C\u5F0F +ParameterD-Parameter_Interface=\u53C2\u6570\u754C\u9762 +At_least_one_visual_worksheet=\u5DE5\u4F5C\u7C3F\u4E2D\u81F3\u5C11\u8981\u6709\u4E00\u5F20\u53EF\u89C6\u5316\u5DE5\u4F5C\u8868,\u5982\u679C\u60F3\u8981\u5220\u9664\uFF0C\u8BF7\u5148\u63D2\u5165\u4E00\u5F20\u65B0\u5DE5\u4F5C\u8868 +Need_Min_Value=\u9700\u8981\u6700\u5C0F\u503C +Allow_Blank=\u5141\u8BB8\u4E3A\u7A7A +CellWrite-InsertRow_DEFAULT=\u9ED8\u8BA4\u503C +Widget-Load_By_Complete=\u5B8C\u5168\u52A0\u8F7D +FR-Designer-Basic_Only_Submit_Current_Sheet=\u53EA\u63D0\u4EA4\u5F53\u524Dsheet +Sort-Sort_Order=\u6392\u5217\u987A\u5E8F +File-File_Size_Limit=\u6587\u4EF6\u5927\u5C0F\u9650\u5236 +PrintP-Print=\u6253\u5370(T) +FR-Designer-StyleAlignment_Center=\u5C45\u4E2D +Preference-Setting_Colors=\u989C\u8272\u8BBE\u7F6E +Judge=\u5224\u65AD +Image-Adjust=\u9002\u5E94 +Collect-User_Information_DES=\u6FC0\u6D3B\u7801\u53EA\u662F\u7528\u6765\u6536\u96C6\u4F7F\u7528\u8005\u4FE1\u606F\u7684\uFF0C\u53EA\u8981\u70B9\u51FB\u4E0A\u9762\u7684"\u83B7\u53D6\u6FC0\u6D3B\u7801"\u6309\u94AE\uFF0C\u5C31\u4F1A\u5F39\u51FA\u4E00\u4E2A\u65B0\u7684\u6D4F\u89C8\u5668\u7A97\u4F53\uFF0C\u767B\u5F55\u5230\u4EA7\u54C1\u5B98\u65B9\u7F51\u7AD9\u83B7\u5F97\u8FD9\u4E2A\u6FC0\u6D3B\u7801\uFF0C\u6574\u4E2A\u8FC7\u7A0B\u53EA\u9700\u89813\u5206\u949F\uFF0C\u53EA\u9700\u8981\u64CD\u4F5C\u4E00\u6B21\uFF0C\u800C\u4E14\u5B8C\u5168\u514D\u8D39\u3002 +FR-Designer_Plugin_Normal_Update_From_Local=\u4ECE\u672C\u5730\u6587\u4EF6\u66F4\u65B0 +BackgroundTexture-Canvas=\u753B\u5E03 +BarOutSide=\u67F1\u5B50\u5916\u4FA7 +Preview_ToolTips=\u9884\u89C8\u63D0\u793A +FRFont-Family=\u540D\u5B57 +FR-Lic_does_not_Support_Remote=\u60A8\u5F53\u524D\u4F7F\u7528\u7684lic\u4E0D\u652F\u6301\u8FDC\u7A0B\u8BBE\u8BA1\u529F\u80FD\uFF0C\u8BF7\u5347\u7EA7\u60A8\u7684lic +InterfaceStyle=\u98CE\u683C +RWA-Key=\u4E3B\u952E +WF-Name=\u540D\u79F0 +RWA-Click_Cell_To_Edit_Value=\u5355\u51FB\u6A21\u677F\u5355\u5143\u683C\u4FEE\u6539\u503C +Utils-Row_Height=\u884C\u9AD8 +ReportD-Excel_Export=\u6A21\u677F\u5BFC\u51FA\u5C5E\u6027 +Form-Please_Select_A_Kind_Of_Form_Container=\u8BF7\u9009\u62E9\u4E00\u79CD\u8868\u5355\u5BB9\u5668 +Column_Does_Not_Exsit=\u5217\u4E0D\u5B58\u5728 +M_Insert-Hyperlink=\u8D85\u7EA7\u94FE\u63A5 +can_not_include_underline=\u4E0D\u80FD\u5305\u542B"_" +FR-Designer-Plugin_Jar_Expired=Jar\u5305\u8FC7\u65E7 +FR-Background_Image_Extend=\u62C9\u4F38 +TopDownShade=\u4E0A\u4E0B\u6E10\u53D8 +FR-Base_Right=\u53F3 +DataBinding=\u6570\u636E\u7ED1\u5B9A +ConnectionPool_Attr=\u8FDE\u63A5\u6C60\u5C5E\u6027 +Connect_SQL_Cannot_Null=\u6570\u636E\u8FDE\u63A5\u548CSQL\u9762\u677F\u4E0D\u80FD\u4E3A\u7A7A +DBCP_MAX_ACTIVE=\u6700\u5927\u6D3B\u52A8\u8FDE\u63A5\u6570 +M_Window-Preference=\u9009\u9879 +ToolBar_Top=\u9876\u90E8\u5DE5\u5177\u680F +FR-Designer_Indent-Pixel=\u50CF\u7D20 +FR-Designer_Unit_MM=\u6BEB\u7C73 +IDLE=\u7A7A\u95F2 +FRFont-Underline=\u4E0B\u5212\u7EBF +FR-Designer-Plugin_Read_Plugin_List_Error=\u53BB\u8BFB\u63D2\u4EF6\u5217\u8868\u65F6\u53D1\u751F\u9519\u8BEF +Type_Set=\u7C7B\u578B\u8BBE\u7F6E +M_Format_A-Cell_Attributes=\u5176\u4ED6\u5C5E\u6027 +CellWrite-Show_As_Image=\u7528\u56FE\u7247\u663E\u793A\u5185\u5BB9 +ShowAsDownload=\u7528\u4E0B\u8F7D\u94FE\u63A5\u663E\u793A\u4E8C\u8FDB\u5236\u5185\u5BB9 +Form-ComboCheckBox=\u4E0B\u62C9\u590D\u9009\u6846 +BackgroundTexture-WovenMat=\u7F16\u7EC7\u7269 +BindColumn-Custom_Data_Appearance=\u81EA\u5B9A\u4E49\u663E\u793A +Actived=\u6D3B\u52A8\u7684 +Env-Local_Directory=\u672C\u5730\u76EE\u5F55 +Form-Colon=\u5192\u53F7 +Preference-Vertical_Scroll_Bar_Visible=\u7AD6\u76F4\u6EDA\u52A8\u6761\u53EF\u89C1 +Utils-Show_Cell_Value=\u663E\u793A\u5355\u5143\u683C\u503C +FR-Designer_ReportColumns-Repeat_Row=\u590D\u5236\u884C\u5E8F\u5217 +SpecifiedG-Specified_Group=\u81EA\u5B9A\u4E49\u5206\u7EC4 +RWA-Smart_Add_Cells=\u667A\u80FD\u6DFB\u52A0\u5355\u5143\u683C +HF-Left_Section=\u5DE6\u533A\u57DF +M_Report-Report_Background=\u7EB8\u5F20\u80CC\u666F +Image-Extend=\u62C9\u4F38 +FS_BI=\u51B3\u7B56\u5E73\u53F0 +ToolBar_Bottom=\u5E95\u90E8\u5DE5\u5177\u680F +Hgap=\u6C34\u5E73\u95F4\u9699 +FR-Designer_Enter-New-FileName=\u8BF7\u8F93\u5165\u65B0\u7684\u6587\u4EF6\u540D +Verify_Fail=\u6821\u9A8C\u5931\u8D25 +CellWrite-InsertRow_Policy=\u63D2\u5165\u884C\u7B56\u7565 +FR-Designer-Plugin_Illegal_Plugin_Zip=\u4E0D\u662F\u5408\u6CD5\u7684\u63D2\u4EF6\u5305 +RCodeVersion=\u7248\u672C +Convert=\u8F6C\u6362 +Please_Drag=\u8BF7\u62D6\u5165\u884C\u5217\u5B57\u6BB5\u3001\u6C47\u603B\u5B57\u6BB5 +FR-Designer-Widget-Style_Preview=\u9884\u89C8 +mobile_number=\u624B\u673A\u53F7\u7801 +FR-Designer_Form-ComboCheckBox=\u4E0B\u62C9\u590D\u9009\u6846 +CacheValidateTime=\u62A5\u8868\u7F13\u5B58\u6709\u6548\u65F6\u95F4 +Hyperlink-Extends_Report_Parameters=\u7EE7\u627F\u62A5\u8868\u7684\u53C2\u6570 +FR-Designer_Values-Editor=\u503C\u7F16\u8F91\u5668 +Export-Excel=Excel\u683C\u5F0F +Utils-Left_to_Right=\u6A2A\u5411 +ExpandD-Vertical_Extendable=\u7EB5\u5411\u53EF\u4F38\u5C55 +Utils-Report_Runtime_Env=\u62A5\u8868\u5DE5\u4F5C\u76EE\u5F55 +Utils-Right_to_Left=\u4ECE\u53F3\u5230\u5DE6 +Utils-Beyond_the_top_side_of_Border=\u8D85\u51FA\u4E0A\u8FB9\u754C +Exception_StackTrace=\u9519\u8BEF\u5F02\u5E38\u5806\u6808\u4FE1\u606F +Corresponding_Fields=\u5BF9\u5E94\u5B57\u6BB5 +Form-CheckBox=\u590D\u9009\u6846 +Utils-Current_Row=\u5F53\u524D\u884C +BuildIn=\u5185\u7F6E +BindColumn-Results_Filter=\u7ED3\u679C\u96C6\u7B5B\u9009 +FR-Designer-Plugin_Manager=\u63D2\u4EF6\u7BA1\u7406 +M_File-Export-CSV=CSV\u683C\u5F0F(\u9017\u53F7\u5206\u9694) +Data_Filter=\u6570\u636E\u7B5B\u9009 +ReportServerP-Edit_Printer=\u7F16\u8F91\u6253\u5370\u673A +FR-Designer_Datasource-Stored_Procedure=\u5B58\u50A8\u8FC7\u7A0B +RESTART=\u91CD\u542F +FormulaD-Function_name=\u51FD\u6570\u540D +ChooseOneButton=\u8BF7\u9009\u62E9\u4E00\u4E2A\u63A7\u4EF6\u540E\u518D\u6DFB\u52A0 +Priority=\u4F18\u5148\u7EA7 +Datasource-Datasource=\u6570\u636E\u6E90 +FR-Designer_Width=\u5BBD +Cannot-Add_To_This_Area=\u65E0\u6CD5\u6DFB\u52A0\u5230\u8BE5\u533A\u57DF +Run=\u8FD0\u884C +Set_Submit_Condition=\u8BBE\u7F6E\u63D0\u4EA4\u6761\u4EF6 +FR-Base_Value=\u503C +fileLocked_undeleted=\u6A21\u677F\u88AB\u9501\u5B9A\uFF0C\u4E0D\u80FD\u5220\u9664\uFF01\u70B9\u51FB\u786E\u5B9A\uFF0C\u5237\u65B0\u6A21\u677F\u5217\u8868 +Web_Apply=WEB\u5E94\u7528 +Refresh_Database=\u5237\u65B0\u6570\u636E\u5E93 +Set_Row_Title_End=\u8BBE\u7F6E\u91CD\u590D\u7ED3\u5C3E\u884C +FR-Utils-New_Folder=\u65B0\u5EFA\u6587\u4EF6\u5939 +BiasD-From-upper_left_to_lower_right=\u4ECE\u5DE6\u4E0A\u5230\u53F3\u4E0B\u53D1\u6563 +CapsLock=\u5927\u5199\u9501\u5B9A\u5DF2\u6253\u5F00 +StyleFormat-Sample=\u793A\u4F8B +RWA-Smart_Add_Cell_Group=\u667A\u80FD\u6DFB\u52A0\u5355\u5143\u683C\u7EC4 +MConfig-CancelButton=\u53D6\u6D88 +Function-Choose_Function_Class=\u9009\u62E9\u51FD\u6570\u7C7B +LatLng=\u7ECF\u7EAC\u5EA6 +DS-Server_TableData=\u670D\u52A1\u5668\u6570\u636E\u96C6 +BackgroundTexture-GreenMarble=\u7EFF\u8272\u5927\u7406\u77F3 +read_time_out=\u52A0\u8F7D\u8D85\u65F6 +JavaScript-Commit_to_Database=\u63D0\u4EA4\u5165\u5E93 +DS-Relation_TableData=\u5173\u8054\u6570\u636E\u96C6 +CellWrite-Page_Before_Row=\u884C\u524D\u5206\u9875 +FR-Designer-Plugin_Load_Plugins_From_Server=\u6B63\u5728\u4ECE\u63D2\u4EF6\u5546\u5E97\u83B7\u53D6\u6570\u636E +D-Dispaly_Divide_Result_Set_into_Groups=\u5C06\u7ED3\u679C\u96C6\u8FDB\u884C\u5206\u7EC4 +Closed=\u5DF2\u5173\u95ED +RWA-Help=\u8BBE\u7F6E\u672A\u4FEE\u6539\u4E0D\u66F4\u65B0\u540E\uFF0C\u586B\u62A5\u9884\u89C8\u62A5\u8868\uFF0C\u8BB0\u5F55\u6240\u5728\u5355\u5143\u683C\u6CA1\u6709\u88AB\u7F16\u8F91\u4FEE\u6539\uFF0C\u5219\u6B64\u8BB0\u5F55\u4E0D\u4F1A\u8FDB\u884C\u66F4\u65B0\uFF1B\n\u5728\u5927\u6570\u636E\u91CF\u8BB0\u5F55\u67E5\u8BE2\u5E76\u56DE\u586B\u60C5\u51B5\u4E0B\uFF0C\u542F\u7528\u8BE5\u8BBE\u7F6E\uFF0C\u53EF\u4EE5\u63D0\u9AD8\u586B\u62A5\u63D0\u4EA4\u6027\u80FD\u3002 +FR-Designer-Widget-Style_Custom=\u81EA\u5B9A\u4E49 +FR-Designer-Widget-Style_Render_Style=\u6E32\u67D3\u98CE\u683C +Highlight-Barcode=\u6761\u5F62\u7801 +FR-Designer_Connect_SQL_Cannot_Null=\u6570\u636E\u8FDE\u63A5\u548CSQL\u9762\u677F\u4E0D\u80FD\u4E3A\u7A7A +trigger=\u89E6\u53D1 +M-Data_Analysis=\u6570\u636E\u5206\u6790 +Function-The_selected_file_cannot_be_null=\u6587\u4EF6\u4E0D\u80FD\u4E3A\u7A7A +No-Privilege=\u6CA1\u6709\u6743\u9650 +ReportColumns-Repeat_Column=\u590D\u5236\u5217\u5E8F\u5217 +SecondGraduationUnit=\u6B21\u8981\u523B\u5EA6\u5355\u4F4D +Form-Widget_Property_Value=\u5C5E\u6027\u503C +GIVE-NAME=\u547D\u540D +FR-Designer_Rename=\u91CD\u547D\u540D +Utils-Merge_Cell=\u5408\u5E76\u5355\u5143\u683C +Style-Spacing_After=\u6BB5\u540E +Enlarge_Or_Reduce=\u7F29\u653E +Tree-Height=\u9AD8\u5EA6 +RCodeErrorCorrect=\u7EA0\u9519 +Enter-New-FileName=\u8BF7\u8F93\u5165\u65B0\u7684\u6587\u4EF6\u540D +try_resending=\u8BF7\u5C1D\u8BD5\u91CD\u65B0\u53D1\u9001 +M-Open_Report=\u6253\u5F00... +Please_Select=\u8BF7\u9009\u62E9 +InRow=\u884C(R) +Form-TextArea=\u6587\u672C\u57DF +FR-Designer_Https_Enable=\u542F\u7528https +Widget-Custom_Widget_Config=\u81EA\u5B9A\u4E49\u63A7\u4EF6 +already_exists=\u5DF2\u7ECF\u5B58\u5728 +Original_Marked_Filed=\u539F\u59CB\u6807\u8BB0\u5B57\u6BB5 +BackgroundTexture-Sand=\u6C99\u6EE9 +Values=\u503C +Not_use_a_cell_attribute_table_editing=\u60A8\u4E0D\u53EF\u4EE5\u7528\u5355\u5143\u683C\u5C5E\u6027\u8868\u7F16\u8F91 +Root=\u6839\u8282\u70B9 +cycle=\u5468\u671F +open-new-form-tip=\u5F53\u524D\u6A21\u677F\u4E3A711\u4EE5\u4E0B\u7248\u672C\u5236\u4F5C\uFF0C\u65E0\u6CD5\u517C\u5BB9\uFF0C\u4E0D\u80FD\u6253\u5F00\u3002\u5047\u5982\u60F3\u6253\u5F00\u4FEE\u6539\u6B64\u8868\u5355\uFF0C\u8BF7\u4F7F\u7528\u5BF9\u5E94\u7248\u672C\u8BBE\u8BA1\u5668\u6253\u5F00\u3002 +Support-Current_Auto_Complete_Shortcut=\u5F53\u524D\u5FEB\u6377\u952E +GROUPING_MODE=\u666E\u901A\u5206\u7EC4 +DBCP_MAX_IDLE=\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5\u6570 +BackgroundTexture-BlueTissuePaper=\u84DD\u8272\u7802\u7EB8 +ReportD-Export_Hided_Row=\u5BFC\u51FA\u9690\u85CF\u884C +FR-Custom_styles_lost=\u81EA\u5B9A\u4E49\u6837\u5F0F\u5DF2\u4E22\u5931 +Env-Des2=Servlet\u4F4D\u7F6E\u662F\u4E3B\u673A\u540D\uFF0C\u7AEF\u53E3\uFF0CWEB\u5E94\u7528\uFF0CServlet\u7684\u7EC4\u5408\uFF0C\u5B83\u5E94\u5F53\u6307\u5411\u4E00\u4E2AServlet\uFF0C\u6BD4\u5982"http\://localhost\:8080/WebReport/ReportServer"\u3002\u60A8\u53EF\u4EE5\u9009\u62E9\u586B\u5199\u4E3B\u673A\u540D\uFF0C\u7AEF\u53E3\uFF0CWEB\u5E94\u7528\uFF0CServlet\uFF0C\u5B83\u4F1A\u81EA\u52A8\u751F\u6210\u60A8\u6240\u9700\u8981\u7684Servlet\u4F4D\u7F6E\u3002 +Env-Des1=\u8BF7\u9009\u62E9\u62A5\u8868\u670D\u52A1\u5668\u6240\u5728\u7684WEB-INF\u76EE\u5F55 +PageSetup-Placement_Center_on_Page=\u5C45\u4E2D\u65B9\u5F0F +sure_to_delete=\u786E\u8BA4\u5220\u9664 +Already_exists_not_add_repeat=\u5DF2\u7ECF\u5B58\u5728\uFF0C\u8BF7\u4E0D\u8981\u91CD\u590D\u6DFB\u52A0 +Axis_Title=\u8F74\u6807\u9898 +FR-Designer-Plugin_Install_Failed=\u63D2\u4EF6\u5B89\u88C5\u5931\u8D25 +FR-Designer-Widget-Style_Frame=\u6846\u67B6 +MainGraduationUnit=\u4E3B\u8981\u523B\u5EA6\u5355\u4F4D +Second_Axis=\u6B21\u5750\u6807\u8F74 +Classifier-Ge=\u4E2A +MSBold=\u5FAE\u8F6F\u96C5\u9ED1 +Form-Design_Size=\u8BBE\u8BA1\u5C3A\u5BF8 +FR-App-Template_Save=\u4FDD\u5B58 +ExpandD-Horizontal_Extendable=\u6A2A\u5411\u53EF\u4F38\u5C55 +RP_Authority_Edit=\u6743\u9650\u7F16\u8F91 +Warnning=\u63D0\u9192 +RoleName_Can_Not_Be_Null=\u89D2\u8272\u540D\u4E0D\u5141\u8BB8\u4E3A\u7A7A\u4E14\u4E0D\u80FD\u91CD\u590D +Application=\u5E94\u7528\u7A0B\u5E8F +Formula_Dictionary_Display_Examples_Html=\u5B9E\u9645\u503C\u8303\u56F4\u4E3A \ +ECP-error_pwd=\u5BC6\u7801\u9519\u8BEF +FR-Hyperlink_ChartHyperlink=\u56FE\u8868\u8D85\u94FE +M_Edit-FormatBrush=\u683C\u5F0F\u5237(B) +Indent-Pixel=\u50CF\u7D20 +FR-Designer-Widget-Style_Border_Line=\u8FB9\u6846\u7C97\u7EC6 +Widget-Default_Widget_Config=\u57FA\u672C\u63A7\u4EF6 +Version-does-not-support=\u60A8\u5F53\u524D\u4F7F\u7528\u7684lic\u4E0D\u652F\u6301\u8FDC\u7A0B\u8BBE\u8BA1\u529F\u80FD\uFF0C\u8BF7\u5347\u7EA7\u60A8\u7684lic +StyleAlignment-Right_To_Left=\u4ECE\u53F3\u5411\u5DE6 +Style-Spacing_Before=\u6BB5\u524D +Has_Existed=\u5DF2\u7ECF\u5B58\u5728 +FR-Designer_DisplayNothingBeforeQuery=\u70B9\u51FB\u67E5\u8BE2\u524D\u4E0D\u663E\u793A\u62A5\u8868\u5185\u5BB9 +Still=\u4ECD\u7136 +JS_WARNING2=\ \u4F8B\uFF1Ahttp\://localhost\:8075/WebReport/demo.js +JS_WARNING1=\ \u76F8\u5BF9\u62A5\u8868\u5DE5\u7A0B\u76EE\u5F55\u5982WebReport,\u5982WebReport\\js\u4E0B\u6709\u5F15\u7528\u7684js\u6587\u4EF6test.js\uFF0C\u5219\u76F8\u5BF9\u8DEF\u5F84\u4E3Ajs/test.js +Connectionline=\u8FDE\u7EBF\u6A21\u5F0F +Utils-Insert_Record=\u63D2\u5165\u8BB0\u5F55 +Set-Parameter-Name=\u8BF7\u5148\u8BBE\u7F6E\u53C2\u6570\u540D +More-information=\u66F4\u591A\u4FE1\u606F +Parameter-Boolean=\u5E03\u5C14\u578B +FRFont-Strikethrough=\u5220\u9664\u7EBF +Server-version-tip=\u60A8\u5F53\u524D\u8FDE\u63A5\u7684\u670D\u52A1\u5668\u7248\u672C\u4F4E\u4E8E\u60A8\u4F7F\u7528\u7684\u8BBE\u8BA1\u5668\u7248\u672C\u53F7\uFF0C\u7EE7\u7EED\u8FDE\u63A5\uFF0C\u60A8\u7F16\u8F91\u7684\u4E00\u4E9B\u5C5E\u6027\u53EF\u80FD\u65E0\u6CD5\u6709\u6548\u4FDD\u5B58\u3002 \u5047\u5982\u9700\u8981\u8FDE\u63A5\u8BF7\u5C06\u60A8\u7684\u8BBE\u8BA1\u5668\u7248\u672C\u4E0E\u670D\u52A1\u5668\u7248\u672C\u4FDD\u6301\u4E00\u81F4 +Form-All_Files=\u5168\u90E8\u6587\u4EF6 +DBCP_NUM_TEST_PER_EVCTION_RUN=\u7A7A\u95F2\u8FDE\u63A5\u56DE\u6536\u68C0\u67E5\u6570 +FR-Designer-FRFont_Family=\u540D\u5B57 +Device=\u8BBE\u5907 +M_Insert-Cell=\u5355\u5143\u683C\u5143\u7D20 +Present-Formula_Present=\u516C\u5F0F\u5F62\u6001 +FRFont-Superscript=\u4E0A\u6807 +CellWrite-Page_Before_Column=\u5217\u524D\u5206\u9875 +Golden=\u91D1\u8272 +Preference-Support_Cell_Editor_Definition=\u652F\u6301\u5355\u5143\u683C\u7F16\u8F91\u5668 +M-Page_Preview=\u5206\u9875\u9884\u89C8 +HJS-CC_to=\u6284\u9001 +Tree-Select_Leaf_Only=\u53EA\u8FD4\u56DE\u53F6\u5B50\u8282\u70B9 +Pointer-A-Tick-Order=\u6307\u9488\u503C\u53CA\u523B\u5EA6\u503C\u6570\u91CF\u7EA7 +Pink=\u7C89\u7EA2 +StyleAlignment-Distibuted=\u5206\u6563\u5BF9\u9F50 +Odd=\u5947\u6570 +already-saved=\u5DF2\u7ECF\u4FDD\u5B58 +FR-Hyperlink_Chart_Cell=\u56FE\u8868\u8D85\u94FE-\u8054\u52A8\u5355\u5143\u683C +Style-Left_Indent=\u5DE6\u7F29\u8FDB +Offline=\u79BB\u7EBF +Form-Hierarchy_Tree_Next=\u4E0B\u4E00\u4E2A +Needle=\u6307\u9488 +GoogleMap=\u8C37\u6B4C\u5730\u56FE +Running=\u8FD0\u884C\u4E2D +M_Edit-Unmerge_Cell=\u53D6\u6D88\u5408\u5E76\u5355\u5143\u683C +Out_Border_Line=\u5916\u4FA7\u6846\u7EBF +Style-Spacing=\u95F4\u8DDD +FR-Utils_Submit=\u63D0\u4EA4 +ReportServerP-Previous=\u4E0A\u4E00\u9875 +StyleAlignment-Text_Style=\u6587\u672C\u63A7\u5236 +RelatedChart=\u56FE\u8868\u8054\u52A8 +ProcessManager=\u6D41\u7A0B\u7BA1\u7406 +Cancel_Repeat_Attributes=\u53D6\u6D88\u91CD\u590D\u884C\u5217 +FR-App-File_Message=\u4FE1\u606F +Datasource-Stored_Procedure=\u5B58\u50A8\u8FC7\u7A0B +RWA-Row_Offset=\u884C\u504F\u79FB +M_Format-Style=\u6837\u5F0F +detail_description=\u8BE6\u7EC6\u63CF\u8FF0 +FR-Designer-Widget-Style_Title_Content=\u6807\u9898\u5185\u5BB9 +ParameterD-Report_Parameter=\u62A5\u8868\u53C2\u6570 +HF-Edit_Header=\u7F16\u8F91\u9875\u7709 +Sytle-FRFont=\u5B57\u4F53 +FR-Designer_Finish_Export=\u5BFC\u51FA\u5B8C\u6BD5 +MultiFileUpload=\u591A\u6587\u4EF6\u4E0A\u4F20 +HF-Page_Number=\u9875\u7801 +Style-Right_Indent=\u53F3\u7F29\u8FDB +Desktop=\u684C\u9762 +FR-Server-All_Error=\u9519\u8BEF +ConditionB-Operator=\u64CD\u4F5C\u7B26 +Today=\u4ECA\u5929 +Form-Widget_Name=\u63A7\u4EF6\u540D +Covered_All=\u5168\u90E8\u8986\u76D6 +Day=\u5929 +External=\u5916\u90E8 +Black_Font=\u9ED1\u4F53 +LOG-Report_Server_IS_Started=\u62A5\u8868\u670D\u52A1\u5668\u5DF2\u542F\u52A8 +Tips\:You_Can_Input_B1_To_Input_The_Data_Of_The_First_Row_Second_Column=\u63D0\u793A\:\u60A8\u53EF\u4EE5\u901A\u8FC7\u8F93\u5165B1\u6765\u5199\u5165\u7B2C\u4E00\u884C\u7B2C\u4E8C\u5217\u7684\u6570\u636E\u3002 +FR-Designer_ChooseOneButton=\u8BF7\u9009\u62E9\u4E00\u4E2A\u63A7\u4EF6\u540E\u518D\u6DFB\u52A0 +Widget-Sizing=\u5927\u5C0F\u8C03\u6574 +NO_Border_Line=\u65E0\u6846\u7EBF +Cell_Data=\u5355\u5143\u683C\u6570\u636E +StyleAlignment-Vertical_Text=\u6587\u5B57\u7AD6\u6392 +Label=\u6807\u7B7E +Orange=\u6A58\u9EC4 +zeroMarginWarn=\u7531\u4E8E\u6253\u5370\u673A\u5B58\u5728\u7269\u7406\u8FB9\u8DDD
\u62A5\u8868\u7684\u9875\u8FB9\u8DDD\u8BBE\u7F6E\u8FC7\u5C0F\u53EF
\u80FD\u4F1A\u51FA\u73B0\u5185\u5BB9\u6253\u5370\u4E0D\u5168.
  +Widget-Date_Selector_Return_Type=\u8FD4\u56DE\u503C\u7C7B\u578B +Utils-Switch_To_Template_Reportlet=\u5207\u6362\u5230\u6A21\u677F\u7F51\u7EDC\u62A5\u8868 +satisfy=\u6EE1\u8DB3\u6761\u4EF6 +FR-Designer_WidgetDisplyPosition=\u63A7\u4EF6\u663E\u793A\u4F4D\u7F6E +FR-Base_Top=\u4E0A +FR-Designer_Form-CheckBox=\u590D\u9009\u6846 +Reportlet-Parameter_Type=\u53C2\u6570\u4F20\u9012\u65B9\u5F0F +sending=\u6B63\u5728\u53D1\u9001... +FR-Designer-FRFont_Foreground=\u989C\u8272 +FR-Import-Export_SVG=SVG\u683C\u5F0F +M_Edit-Clear_Contents=\u5185\u5BB9(C) +Session=\u4F1A\u8BDD +Widget-Load_Type=\u52A0\u8F7D +template_unsaved=\u65E0\u6CD5\u4FDD\u5B58\u6A21\u677F +check_communication=\u8BF7\u68C0\u67E5\u7F51\u7EDC\u901A\u8BAF\u662F\u5426\u6B63\u5E38\u53CA\u670D\u52A1\u5668\u662F\u5426\u6B63\u5E38\u8FD0\u884C +List-Need_Head=\u9700\u8981\u5217\u8868\u5934 +FR-Designer-Plugin_Has_Been_Installed=\u63D2\u4EF6\u5DF2\u5B89\u88C5\uFF0C\u82E5\u60F3\u66F4\u65B0\u63D2\u4EF6\uFF0C\u8BF7\u5207\u6362\u81F3\u63D2\u4EF6\u66F4\u65B0 +FR-Widget_Tree_And_Table=\u63A7\u4EF6\u6811\u548C\u63A7\u4EF6\u8868 +FR-Base_Help=\u5E2E\u52A9 +FR-Designer-Plugin_Update_Successful=\u63D2\u4EF6\u5347\u7EA7\u6210\u529F\uFF0C\u91CD\u542F\u670D\u52A1\u5668\u4EE5\u751F\u6548 +August=\u516B\u6708 +LOG-Is_Being_Openned=\u6B63\u5728\u6253\u5F00 +BackgroundTexture-Oak=\u6A61\u6728 +Multi_nam_formula=\ \u6570\u636E\u96C6\u540D\: \u6570\u636E\u96C6\u6761\u4EF6\: +TurnOn=\u5F00\u542F +HJS-Send_Successfully=\u53D1\u9001\u6210\u529F +Mon=\u4E00 +Inner_Parameter=\u5185\u7F6E\u53C2\u6570 +Required=\u5FC5\u586B +Summary=\u6C47\u603B +template_unopened=\u65E0\u6CD5\u6253\u5F00\u6A21\u677F +FR-Base_Bottom=\u4E0B +DataFunction-Min=\u6700\u5C0F\u503C +StyleFormat-Percent=\u767E\u5206\u6BD4 +FR-App-All_Custom=\u81EA\u5B9A\u4E49 +M_Insert-Data_Column=\u63D2\u5165\u6570\u636E\u5217 +PLEASE=\u8BF7 +Numbers=\u6570\u76EE +Release_Lock=\u89E3\u9501 +Background-Background_is_NULL=\u6CA1\u6709\u80CC\u666F +FR-Designer_Sytle-FRFont=\u5B57\u4F53 +Gradation=\u5C42\u6B21 +The_current_list_is_empty=\u5F53\u524D\u5217\u8868\u4E3A\u7A7A +Formula_Dictionary_Display_Examples=\ \u5B9E\u9645\u503C\u8303\u56F4\u4E3A \ +Schedule-Template_Parameter=\u6A21\u677F\u53C2\u6570 +JSShow=\u52A8\u6001\u5C55\u793A +Level_coordinates=\u5C42\u6B21\u5750\u6807 +MainGraduationLine=\u4E3B\u8981\u523B\u5EA6\u7EBF +Hyperlink-Web_link=\u7F51\u9875\u94FE\u63A5 +StyleAlignment-between_-90_and_90=\u5728-90\u548C90\u4E4B\u95F4 +FormulaD-Custom_Function=\u81EA\u5B9A\u4E49\u51FD\u6570 +FR-Designer_Integer=\u6574\u6570 +PageSetup-Finis_Start_Row=\u91CD\u590D\u7ED3\u5C3E\u884C +RWA-Remove_Field=\u79FB\u9664\u5B57\u6BB5 +Form-Desin_Width=\u8BBE\u8BA1\u5BBD\u5EA6 +No-tableData=\u6CA1\u6709\u8FD4\u56DE\u6570\u636E\u96C6 +Page_Total=\u5171 +FR-Designer-Plugin_Connect_Server_Error=\u65E0\u6CD5\u8FDE\u63A5\u63D2\u4EF6\u5546\u5E97\uFF0C\u8BF7\u7A0D\u5019\u518D\u8BD5 +Import-Excel_Source=Excel\u6E90\u6587\u4EF6 +Utils-Left_to_Right_a=\u4ECE\u5DE6\u5F80\u53F3 +ExpandD-Expand_Attribute=\u6269\u5C55\u5C5E\u6027 +Report-Write_Attributes=\u62A5\u8868\u586B\u62A5\u5C5E\u6027 +Utils-Current_Column=\u5F53\u524D\u5217 +Need_Max_Value=\u9700\u8981\u6700\u5927\u503C +Report_Not_Exist=\u6240\u9009\u62A5\u8868\u4E0D\u5B58\u5728\uFF01 +HF-Insert_Content=\u63D2\u5165\u5185\u5BB9 +UpParent=\u4E0A\u7236\u683C +PageSetup-Page=\u9875\u9762 +Utils-Move_Up=\u4E0A\u79FB +BackgroundTexture-PurpleMesh=\u7D2B\u8272\u7F51\u683C +Export-Word=Word\u683C\u5F0F +ServerM-Widget_Manager=\u63A7\u4EF6\u7BA1\u7406 +FR-Designer-Basic_Activation_Key=\u8BBE\u8BA1\u5668\u7F16\u53F7\uFF1A +FR-App-Template_Report_Not_Exist=\u6240\u9009\u62A5\u8868\u4E0D\u5B58\u5728\! +Protected=\u4FDD\u62A4 +Skip=\u8DF3\u8FC7 +FR-Designer_PageSetup-Vertically=\u5782\u76F4\u5C45\u4E2D +revert=\u64A4\u9500 +PageSetup-Predefined=\u9884\u5B9A\u4E49 +Border-Style-Radius=\u5706\u89D2\u8FB9\u6846 +IntPart=\u6574\u6570\u90E8\u5206 +ExpandD-Data_Column=\u6570\u636E\u5217 +Sort-Ascending=\u5347\u5E8F +FR-Designer-Widget_Style=\u6837\u5F0F +parameter_name_exist=\u8BE5\u53C2\u6570\u540D\u5DF2\u5B58\u5728 +FR-Designer_Layer-Build=\u666E\u901A\u5206\u5C42\u6784\u5EFA +Please_Rename=\u8BF7\u91CD\u547D\u540D +Form-Editing_Listeners=\u4E8B\u4EF6\u7F16\u8F91 +RWA-Smart_Add_Fields=\u667A\u80FD\u6DFB\u52A0\u5B57\u6BB5 +FR-Designer-Tree_Width=\u5BBD\u5EA6 +Record=\u8BB0\u5F55 +Poly-Report_Component=\u805A\u5408\u62A5\u8868\u7EC4\u4EF6 +Options=\u9009\u9879 +NS-war-remote=\u9519\u8BEF\u4EE3\u7801\:1117 \u538B\u7F29\u90E8\u7F72\u4E0D\u652F\u6301\u8FDC\u7A0B\u8BBE\u8BA1 +Sche-Minute=\u5206 +Three_Rows_Of_Three_Grid=\u4E09\u884C\u4E09\u5217\u7684\u683C\u5B50 +WorkSheet=\u81EA\u7531\u62A5\u8868 +FR-Designer-Widget_Size=\u63A7\u4EF6\u5927\u5C0F +BindColumn-Select=\u5217\u8868 +FR-Widget_Mobile_Terminal=\u79FB\u52A8\u7AEF +FR-Background_Image_Titled=\u5E73\u94FA +SetPrinterOffset=\u6253\u5370\u673A\u504F\u79FB +FR-Designer-Plugin_Installed=\u5DF2\u5B89\u88C5 +FR-Designer-Hyperlink_Name=\u540D\u5B57 +FR-Designer_Form-Button=\u6309\u94AE +Black=\u9ED1\u8272 +FR-Designer-Widget-Style_Border_Color=\u8FB9\u6846\u989C\u8272 +Set_Submit_Event=\u8BBE\u7F6E\u63D0\u4EA4\u4E8B\u4EF6 +PDF-Print_isPopup=\u662F\u5426\u5F39\u51FA\u8BBE\u7F6E\u6846 +LayerPageReport_CountPerPage=\u6BCF\u9875\u8BB0\u5F55\u6570 +Display_Modes=\u663E\u793A\u6A21\u5F0F +RowSpan=\u884C\u8DE8\u5EA6 +Datasource-Test_Connection=\u6D4B\u8BD5\u8FDE\u63A5 +Function-Function_Manager=\u51FD\u6570\u7BA1\u7406\u5668 +Host_Name=\u4E3B\u673A\u540D +CellWrite-Show_As_HTML=\u7528HTML\u663E\u793A\u5185\u5BB9 +FR-Designer-Widget-Style_Shadow=\u9634\u5F71 +FR-Designer_Parameter_String=\u5B57\u7B26\u4E32 +Form-SupportTag=\u6807\u7B7E\u5F62\u5F0F\u663E\u793A +ReportD-Report_Write_Attributes=\u62A5\u8868\u586B\u62A5\u5C5E\u6027 +DataFunction-Count=\u4E2A\u6570 +Top_And_Thick_Bottom_Border_Line=\u4E0A\u6846\u7EBF\u548C\u7C97\u4E0B\u6846\u7EBF +Client=\u5BA2\u6237\u7AEF +BindColumn-Result_Serial_Number_Start_From_1=\u5E8F\u53F7\u4ECE1\u5F00\u59CB +History=\u5386\u53F2 +Already_exists=\u5DF2\u5B58\u5728\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165\uFF01 +Datasource-Original_Charset=\u539F\u59CB\u7F16\u7801 +FR-Base_Left=\u5DE6 +ReportServerP-Next=\u4E0B\u4E00\u9875 +BindColumn-Top_N=\u524DN\u4E2A +Animation_Special=\u7279\u6548 +Widget-Chart_Widget_Config=\u56FE\u8868\u63A7\u4EF6 +FR-Designer-Plugin_Cannot_Update_Not_Install=\u65E0\u6CD5\u66F4\u65B0\u63D2\u4EF6\uFF0C\u8BF7\u68C0\u67E5\u8BE5\u63D2\u4EF6\u662F\u5426\u5DF2\u7ECF\u6210\u529F\u5B89\u88C5 +After_Changed_Some_Attributes_Are_Different=\u8F6C\u6362\u540E\u62A5\u8868\u7684\u67D0\u4E9B\u5C5E\u6027\u4F1A\u53D1\u751F\u6539\u53D8\uFF0C\u662F\u5426\u7EE7\u7EED +PieStyle=\u997C\u72B6 +HF-Are_you_sure_to_delete_it=\u4F60\u786E\u5B9E\u60F3\u5220\u9664\u8FD9\u4E2A\u5143\u7D20\u5417 +Utils-Design-File_Open=\u6253\u5F00 +FR-Utils_Label=\u6807\u7B7E +Data-Label=\u6807\u7B7E +M_Insert-Text=\u63D2\u5165\u666E\u901A\u6587\u672C +Form-View_Tree=\u89C6\u56FE\u6811 +M_Insert-Chart=\u63D2\u5165\u56FE\u8868 +HF-Even_Page=\u5076\u6570\u9875 +ReportServerP-Report_server_parameter=\u62A5\u8868\u670D\u52A1\u5668\u53C2\u6570 +JavaScript-Form_Submit=\u8868\u5355\u63D0\u4EA4 +Horizontal-Split_Layout=\u6C34\u5E73\u5206\u5272\u5E03\u5C40 +BorderLayout-Center=\u4E2D +INFO-Reset_Webapp=\u91CD\u7F6E\u5E94\u7528\u670D\u52A1\u5668 +FR-Designer_Text=\u6587\u672C +IN_and_INOUT_type_not_as_cursor=IN\u548CINOUT\u7C7B\u578B\u4E0D\u53EF\u4EE5\u4F5C\u4E3A\u6E38\u6807 +Main_Axis=\u4E3B\u5750\u6807\u8F74 +M_Edit-Cut=\u526A\u5207(T) +Utils-The_Name_has_been_existed=\u6B64\u540D\u5DF2\u7ECF\u5B58\u5728 +FR-Background_Image=\u56FE\u7247 +Character=\u6587\u5B57 +Unit_Thousand=\u5343 +Test=\u6D4B\u8BD5 +Utils-Would_you_like_to_save=\u4F60\u662F\u5426\u9700\u8981\u4FDD\u5B58 +HF-Header_and_Footer=\u7709\u5934\u548C\u7709\u811A +LIST_MODE=\u5217\u8868 +HF-Insert_Image=\u63D2\u5165\u56FE\u7247 +FR-Designer-Widget-Style_Standard=\u6807\u51C6 +FR-Designer_Form-List=\u5217\u8868 +BackgroundTexture-Denim=\u659C\u7EB9\u5E03 +Execute_Report_by_Layer_Engine=\u7528\u884C\u5F0F\u7684\u5F15\u64CE\u6765\u6267\u884C\u62A5\u8868 +M_Edit-Bring_Forward=\u4E0A\u79FB\u4E00\u5C42(F) +Choose_All=\u5168\u9009 +Form-RadioGroup=\u5355\u9009\u6309\u94AE\u7EC4 +FR-Base_Remove=\u5220\u9664 +FR-Remote_Connect2Server_Again=\u8FDE\u63A5\u4E2D\u65AD\uFF0C\u662F\u5426\u91CD\u65B0\u8FDE\u63A5\u670D\u52A1\u5668? +Semicolon=\u5206\u53F7 +StyleFormat-Category=\u5206\u7C7B +Report_Template=\u62A5\u8868\u6A21\u677F +Utils-Beyond_the_right_side_of_Border=\u8D85\u51FA\u53F3\u8FB9\u754C +BackgroundTexture-Papyrus=\u7EB8\u838E\u8349\u7EB8 +LayerPageReport_PageEngine=\u4F7F\u7528\u6309\u9875\u8FD0\u7B97\u5206\u6BB5\u6267\u884C\u62A5\u8868 +Schedule-The_selected_file_must_be_end_with_filter=\u9009\u62E9\u7684\u6587\u4EF6\u5FC5\u987B\u4EE5.cpt\u6216\u8005.class\u6216\u8005.frm\u7ED3\u5C3E\u3002 +Provide=\u63D0\u4F9B +FormulaD-Math_&_Trig=\u6570\u5B66\u548C\u4E09\u89D2\u51FD\u6570 +FR-Designer-StyleAlignment_Right=\u9760\u53F3 +Error_TableDataNameRepeat=\u5DF2\u7ECF\u5728\u670D\u52A1\u5668\u6570\u636E\u96C6\u4E2D\u5B58\u5728\u6216\u8005\u591A\u4E2A\u6570\u636E\u96C6\u540D\u91CD\u590D\u3002 +Choose_None=\u4E0D\u9009 +File-tree=\u6587\u4EF6\u6811 +FRFont-bold=\u52A0\u7C97 +FR-Designer_Set_Submit_Condition=\u8BBE\u7F6E\u63D0\u4EA4\u6761\u4EF6 +Form-Change_Widget_Name=\u66F4\u6539\u63A7\u4EF6\u540D +ReportColumns-Report_Columns=\u62A5\u8868\u5206\u680F +Can_not_use_FormatBursh=\u4E0D\u80FD\u5BF9\u591A\u91CD\u9009\u5B9A\u533A\u57DF\u4F7F\u7528\u683C\u5F0F\u5237\! +CellElement-Property_Table=\u5355\u5143\u683C\u5C5E\u6027\u8868 +Dictionary-Dynamic_SQL=\u52A8\u6001SQL +FR-Designer_Form-CheckBoxGroup=\u590D\u9009\u6846\u7EC4 +DBCP_TIME_BETWEEN_EVICTIONRUNSMILLIS=\u7A7A\u95F2\u8FDE\u63A5\u56DE\u6536\u5668\u4F11\u7720\u65F6\u95F4 +ReportD-Export_Hided_Column=\u5BFC\u51FA\u9690\u85CF\u5217 +Preference-Support_Undo=\u652F\u6301\u64A4\u9500 +FR-mobile_report_analysis=\u62A5\u8868\u89E3\u6790 +Month=\u6708 +Utils-Column_Width=\u5217\u5BBD +Collect-Use_Designer=\u4F7F\u7528\u8BBE\u8BA1\u5668 +Widget-User_Defined_Editor=\u9884\u5B9A\u4E49\u7F16\u8F91\u5668\uFF0C\u8BE5\u7F16\u8F91\u5668\u53EA\u80FD\u5728\u63A7\u4EF6\u7BA1\u7406\u83DC\u5355\u91CC\u66F4\u6539\u5176\u5C5E\u6027 +Unit_Ten_Thousand=\u4E07 +Data_Setting=\u6570\u636E\u8BBE\u7F6E +ECP_input_pwd=\u8BF7\u8F93\u5165\u5BC6\u7801\: +period=\u3002 +Note=\u5907\u6CE8 +Multiline=\u591A\u884C\u7F16\u8F91 +Datasource-Convert_Charset=\u7F16\u7801\u8F6C\u6362 +DashBoard-ConnectionList=\u6570\u636E\u8FDE\u63A5 +Utils-Submit_Forcibly=\u5F3A\u884C\u63D0\u4EA4 +Parent_Marked_Field=\u7236\u6807\u8BB0\u5B57\u6BB5 +Logout=\u9000\u51FA +FR-Designer_Show_Blank_Row=\u8865\u5145\u7A7A\u767D\u884C +FR-Base_Format=\u683C\u5F0F +FR-App-Export_png=PNG\u683C\u5F0F +Delete_Column=\u5220\u9664\u5217 +SecondGraduationLine=\u6B21\u8981\u523B\u5EA6\u7EBF +SpecifiedG-Groups=\u7EC4 +CONTINUUM_MODE=\u76F8\u90BB\u8FDE\u7EED\u5206\u7EC4 +Datasource-Connection_failed=\u8FDE\u63A5\u5931\u8D25 +CategoryName=\u5206\u7C7B\u540D +DBCP_INITIAL_SIZE=\u521D\u59CB\u5316\u8FDE\u63A5\u6570 +Colors=\u989C\u8272 +FR-Import-Export_CSV=CSV\u683C\u5F0F(\u9017\u53F7\u5206\u9694) +FR-Designer-StyleAlignment_Left=\u9760\u5DE6 +BackgroundTexture-PaperBag=\u7EB8\u888B +RWA-BuildIn_SQL=\u5185\u7F6ESQL +SingleLayer=\u5355\u5C42 +Or-you=\u6216\u8005\u60A8 +FR-Designer_Certificate_Path=\u8BC1\u4E66\u8DEF\u5F84 +Utils-Last_Page=\u6700\u540E\u4E00\u9875 +BarCodeD-Drawing_Text=\u663E\u793A\u6761\u5F62\u7801\u7684\u6587\u672C +Warning-Template_Do_Not_Exsit=\u6A21\u677F\u4E0D\u5B58\u5728 +BindColumn-Group=\u5206\u7EC4 +Export-SVG=SVG\u683C\u5F0F +Plane3D=\u5E73\u97623D +SessionID=sessionID\u662F\u5F53\u524D\u8BBF\u95EE\u6A21\u677F\u7684\u4F1A\u8BDD\u6807\u8BC6\u53C2\u6570\u3002 +FR-Designer_Height=\u9AD8 +HF-Odd_Page=\u5947\u6570\u9875 +About-All_Rights_Reserved=\u4FDD\u7559\u6240\u6709\u7684\u6743\u5229 +Utils-Current_Cell=\u5F53\u524D\u683C\u5B50 +Web_Preview_Message=\u8BF7\u5C06\u6A21\u677F\u6587\u4EF6\u4FDD\u5B58\u5728\u5F53\u524D\u8FD0\u884C\u73AF\u5883\u76EE\u5F55\u4E0B +FR-Hyperlink_Chart_Float=\u56FE\u8868\u8D85\u94FE-\u8054\u52A8\u60AC\u6D6E\u5143\u7D20 +Dic-Data_Query=\u6570\u636E\u67E5\u8BE2 +CellWrite-Print_Content=\u6253\u5370/\u5BFC\u51FA\u5355\u5143\u683C\u5185\u5BB9 +Privilege-Selected_None_Of_Any_Items=\u6CA1\u6709\u9009\u4E2D\u4EFB\u4F55\u4E00\u9879 +FRFont-Size=\u5927\u5C0F +Function-J2EE_server=J2EE\u670D\u52A1\u5668 +FR-Designer_Allow_Blank=\u5141\u8BB8\u4E3A\u7A7A +Build_Tree_Accord_Parent_Marked_Filed=\u4F9D\u8D56\u6240\u9009\u6570\u636E\u96C6\u7684\u7236\u6807\u8BB0\u5B57\u6BB5\u6784\u5EFA\u6811 +Preference-Horizontal_Scroll_Bar_Visible=\u6C34\u5E73\u6EDA\u52A8\u6761\u53EF\u89C1 +Scope=\u8303\u56F4 +Save_All_Records_In_Memory=\u6240\u6709\u8BB0\u5F55\u90FD\u4FDD\u5B58\u5728\u5185\u5B58\u4E2D +FreezeWarning1=\u521D\u59CB\u503C\u4E0D\u5927\u4E8E\u5C3E\u503C +FlowLayout=\u6D41\u5F0F\u5E03\u5C40 +M_Report-Report_Footer=\u62A5\u8868\u9875\u811A +FR-Action_Add=\u589E\u52A0 +BorderLayout-East=\u4E1C +feedback_tip=\u8BF7\u8F93\u5165\u4E0D\u8D85\u8FC7400\u4E2A\u5B57\u7684\u95EE\u9898\u63CF\u8FF0 +FS_Start_Date=\u8D77\u59CB\u65E5\u671F +FR-ConditionB_Operator=\u64CD\u4F5C\u7B26 +Printer-Alias=\u522B\u540D +DS-Class_Name=\u7C7B\u540D +FR-Designer-Plugin_Has_Been_Disabled=\u63D2\u4EF6\u5DF2\u88AB\u7981\u7528\uFF0C\u91CD\u542F\u8BBE\u8BA1\u5668\u53CA\u670D\u52A1\u5668\u751F\u6548\uFF0C\u670D\u52A1\u5668\u9700\u624B\u52A8\u91CD\u542F +Sort-Original=\u4E0D\u6392\u5E8F +Utils-Top_to_Bottom_a=\u4ECE\u4E0A\u5F80\u4E0B +Parameter-String=\u5B57\u7B26\u4E32 +InnerRadis=\u5185\u5F84\u5927\u5C0F +Want_To_Cover_It=\u662F\u5426\u60F3\u8986\u76D6\u5B83 +Divided_stage=\u5212\u5206\u9636\u6BB5 +Seriously=\u4E25\u91CD +ReportServerP-PDF=PDF +Utils-Switch_To_Class_Reportlet=\u5207\u6362\u5230\u7A0B\u5E8F\u7F51\u7EDC\u62A5\u8868 +FR-Designer_Show_Blank_Column=\u8865\u5145\u7A7A\u767D\u5217 +M_Edit-Redo=\u91CD\u505A +Visibility=\u53EF\u89C1\u6027 +Series_Use_Default=\u7CFB\u5217\u9ED8\u8BA4\u4F7F\u7528 +Has_Selected=\u5DF2\u7ECF\u9009\u62E9 +BackgroundTexture-Walnut=\u80E1\u6843 +FormulaD-Function_category=\u51FD\u6570\u7C7B\u578B +Interface=\u63A5\u53E3 +FR-Designer-Beyond_Bounds=\u8D85\u51FA\u6216\u8005\u5C0F\u4E8Ebody\u8FB9\u754C\uFF0C\u4E0D\u80FD\u8C03\u6574\u5927\u5C0F +seconds=\u79D2 +Auto-Build=\u81EA\u52A8\u6784\u5EFA +FR-Designer-Plugin_Install_Successful=\u8BE5\u63D2\u4EF6\u5C06\u5728\u91CD\u65B0\u542F\u52A8\u8BBE\u8BA1\u5668\u53CA\u670D\u52A1\u5668\u65F6\u88AB\u542F\u7528\uFF0C\u670D\u52A1\u5668\u9700\u624B\u52A8\u91CD\u542F +Template_Path=\u6A21\u677F\u8DEF\u5F84 +FR-Designer-FRFont_Bold=\u52A0\u7C97 +Poly_Name=\u805A\u5408\u5757\u540D +WorkBook=\u5DE5\u4F5C\u7C3F +Hyperlink-Self_Window=\u5F53\u524D\u7A97\u53E3 +FR-Designer-Widget-Style_Title=\u6807\u9898 +FR-Designer-FRFont_Size=\u5927\u5C0F +M_File-Export-SVG=SVG\u683C\u5F0F +Capacity=\u5BB9\u91CF +Rose_Red=\u73AB\u7470\u7EA2 +StyleAlignment-The_value_of_rotation_must_between_-90_and_90_degrees=\u65CB\u8F6C\u503C\u5FC5\u987B\u5728\u8D1F90\u5EA6\u523090\u5EA6 +HF-Move_Left=\u5DE6\u79FB +Cell_Group=\u5355\u5143\u683C\u7EC4 +Week=\u5468 +PageSetup-Orientation=\u65B9\u5411 +M-Open_Recent=\u6700\u8FD1\u6253\u5F00\u7684 +NNormal=\u6B63\u5E38 +Integer=\u6574\u6570 +Select_The_Source_To_Save=\u9009\u62E9\u8981\u5B58\u50A8\u7684\u9879\u76EE +Transition=\u5206\u652F +FR-Designer_Get_Lock=\u52A0\u9501 +one_record_exists_in_many_groups=\u4E00\u4E2A\u8BB0\u5F55\u53EF\u4EE5\u5B58\u5728\u4E8E\u591A\u4E2A\u7EC4\u4E2D +FR-Designer_Cover_None=\u5168\u4E0D\u8986\u76D6 +DeciPart=\u5C0F\u6570\u90E8\u5206 +ExpandD-Up_Father_Cell=\u4E0A\u7236\u683C +Deep=\u6DF1\u5EA6 +FRFont-Shadow=\u9634\u5F71 +Reportlet=\u7F51\u7EDC\u62A5\u8868 +Calendar=\u65E5\u5386 +DateFormat-Custom_Warning=\u6CE8\uFF1A\u81EA\u5B9A\u4E49\u65E5\u671F\u683C\u5F0F\u4E0D\u652F\u6301\u683C\u5F0F\u6821\u9A8C +Unit_MM=\u6BEB\u7C73 +Server-Start=\u542F\u52A8 +CellPage-Can_Break_On_Paginate=\u5206\u9875\u65F6\u53EF\u4EE5\u65AD\u5F00 +Build_Tree_Accord_Marked_Filed_Length=\u4F9D\u8D56\u6240\u9009\u6570\u636E\u96C6\u7684\u6807\u8BB0\u5B57\u6BB5\u7684\u957F\u5EA6\u6784\u5EFA\u6811 +ComboCheckBox-Start_Symbol=\u8D77\u59CB\u7B26 +Real=\u5B9E\u9645 +RWA-Batch_Modify_Cells=\u6279\u91CF\u4FEE\u6539\u5355\u5143\u683C +FR-Designer_Build-Way=\u6784\u5EFA\u65B9\u5F0F +Read=\u8BFB\u53D6 +StyleAlignment-Degrees=\u5EA6\u6570 +M_Format_A-Border=\u8FB9\u6846(B) +Utils-Delete_Record=\u5220\u9664\u8BB0\u5F55 +Reload=\u91CD\u8F7D +Image-Select_Picture=\u9009\u62E9\u56FE\u7247 +RWA-Submit=\u63D0\u4EA4 +the_template=\u8BE5\u6A21\u677F +FR-Designer_Component_Scale=\u7EC4\u4EF6\u7F29\u653E +FRFont-italic=\u503E\u659C +Year=\u5E74 +HF-Move_Right=\u53F3\u79FB +Data-Check=\u6570\u636E\u76D1\u63A7 +Unknown=\u672A\u77E5 +Submit_Style=\u63D0\u4EA4\u65B9\u5F0F +Left_Border_Line=\u5DE6\u6846\u7EBF +Brown=\u8910\u8272 +Select_A_Tree_DataSource_To_Build=\u9009\u62E9\u4E00\u4E2A\u6811\u6570\u636E\u96C6\u6765\u6784\u5EFA +Overlapping=\u91CD\u53E0\u578B +DS-Class_TableData=\u7A0B\u5E8F\u6570\u636E\u96C6 +FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install=\u4E0D\u53EF\u8BC6\u522B\u7684\u63D2\u4EF6\uFF0C\u65E0\u6CD5\u5B89\u88C5 +DisplayNothingBeforeQuery=\u70B9\u51FB\u67E5\u8BE2\u524D\u4E0D\u663E\u793A\u62A5\u8868\u5185\u5BB9 +Y_Axis=Y\u8F74 +FormulaD-Most_Recently_Used=\u5E38\u7528\u51FD\u6570 +FormulaD-Input_formula_in_the_text_area_below=\u8BF7\u5728\u4E0B\u9762\u7684\u6587\u672C\u7F16\u8F91\u6846\u91CC\u9762\u8F93\u5165\u516C\u5F0F +Build-Way=\u6784\u5EFA\u65B9\u5F0F +M_Edit-Undo=\u64A4\u9500 +Line-Style=\u7EBF\u578B +Datasource-Other_Attributes=\u5176\u4ED6\u5C5E\u6027 +M_Server-Global_Parameters=\u5168\u5C40\u53C2\u6570 +Suffix=\u540E\u7F00 +Image-Image_Files=\u56FE\u7247\u6587\u4EF6 +EditRC-Entire_row=\u6574\u884C(R) +HF-First_Page=\u9996\u9875 +BackgroundTexture-Granite=\u82B1\u5C97\u5CA9 +DataList=\u6570\u636E\u94FE +Recursion=\u9012\u5F52 +BarStyle=\u6761\u5F62 +FR-Designer-Min_Width=\u6700\u5C0F\u5BBD\u5EA6 +Utils-Report-Env_Directory=\u62A5\u8868\u5DE5\u4F5C\u76EE\u5F55 +D-ChartArea=\u56FE\u8868\u533A +Only=\u53EA +FR-Base_No=\u5426 +SpecifiedG-Put_all_others_together=\u628A\u5176\u5B83\u6240\u6709\u7684\u5408\u5E76 +HF-NewLine_Des=\u53EF\u4EE5\u70B9\u51FB\u4E0A\u9762\u7684\u79FB\u52A8\u548C\u5220\u9664\u6309\u94AE\u6765\u64CD\u4F5C\u6362\u884C\u7B26 +WLayout-Border-ThreeContainer=\u62E5\u6709\u5317\u3001\u897F\u548C\u4E2D\u4E09\u5757\u7684\u8FB9\u754C\u5E03\u5C40\u5BB9\u5668\uFF0C\u5176\u4E2D\u5317\u90E8\u5757\u53EF\u4EE5\u6839\u636E\u9700\u8981\u8C03\u6574\u9AD8\u5EA6\uFF0C\u897F\u90E8\u5757\u53EF\u4EE5\u6839\u636E\u9700\u8981\u8C03\u6574\u5BBD\u5EA6 +Parameter_Name=\u53C2\u6570\u540D +FR-Base_Table=\u8868 +Des-Remove_WorkSheet=\u8981\u5220\u9664\u7684\u8868\u53EF\u80FD\u5B58\u5728\u6570\u636E,\u5982\u679C\u8981\u6C38\u4E45\u5220\u9664\u8FD9\u4E9B\u6570\u636E,\u8BF7\u6309'\u786E\u5B9A'\u6309\u94AE. +Rotation=\u65CB\u8F6C +Undefined=\u672A\u5B9A\u4E49 +Support-Auto_Complete_Shortcut=\u81EA\u52A8\u8865\u5168\u5FEB\u6377\u952E +Set_Column_Title_End=\u8BBE\u7F6E\u91CD\u590D\u7ED3\u5C3E\u5217 +Submit_Url=\u63D0\u4EA4\u5730\u5740 +ReportServerP-Are_you_sure_to_delete_the_selected_printer=\u4F60\u786E\u5B9E\u60F3\u5220\u9664\u9009\u4E2D\u7684\u6253\u5370\u673A\u5417 +long_data_can_not_show_fully=\u957F\u6570\u636E\u663E\u793A\u4E0D\u5168 +Utils-Beyond_the_bottom_side_of_Border=\u8D85\u51FA\u4E0B\u8FB9\u754C +FR-Import-Export_PDF=PDF\u683C\u5F0F +Form-CheckBoxGroup=\u590D\u9009\u6846\u7EC4 +Click-Me=\u70B9\u6211\u6709\u60CA\u559C\u54E6\uFF01 +Hyperlink-Self=\u5728\u539F\u7F51\u9875\u4E2D\u6253\u5F00\u94FE\u63A5(S) +Tree-Select_Leaf_Only_Tips=\uFF08\u4E0D\u52FE\u9009\u6B64\u9879\u65F6\uFF0C\u8FD4\u56DE\u503C\u4EC5\u4E3A\u7528\u6237\u52FE\u9009\u7684\u5F53\u524D\u8282\u70B9\u800C\u4E0D\u5305\u62EC\u5176\u5B50\u8282\u70B9\uFF09 +StyleAlignment-Text_Rotation=\u6587\u672C\u65B9\u5411 +Format-Error=\u8F93\u5165\u7684\u503C\u683C\u5F0F\u4E0D\u6B63\u786E +Server-Stop=\u505C\u6B62 +Preference-Setting_Grid=\u7F51\u683C\u8BBE\u7F6E +ReportServerP-Add_Printer=\u589E\u52A0\u6253\u5370\u673A +FR-Designer-Plugin_Active=\u542F\u7528 +Utils-File_name=\u6587\u4EF6\u540D +NOT_NULL_Des=\u4E0D\u80FD\u4E3A\u7A7A +Right_Border_Line=\u53F3\u6846\u7EBF +EditRC-Entire_column=\u6574\u5217(C) +PageSetup-Top_to_bottom=\u5148\u5217\u540E\u884C +Click-Get_Default_URL=\u70B9\u51FB\u6B64\u6309\u94AE\u83B7\u5F97\u9ED8\u8BA4URL +StyleAlignment-Wrap_Text=\u81EA\u52A8\u6362\u884C +Remove_All_Button=\u6E05\u9664\u6240\u6709\u6309\u94AE +FR-Designer_Component_Interval=\u7EC4\u4EF6\u95F4\u9694 +ReportColumns-Columns_vertically=\u5217\u5206\u680F +ReportGUI-Print_Background=\u6253\u5370/\u5BFC\u51FA\u62A5\u8868\u80CC\u666F +Export-CSV=CSV\u683C\u5F0F(\u9017\u53F7\u5206\u9694) +M_Edit-Paste=\u7C98\u8D34(P) +FR-Designer-Basic_Restart_Designer=\u91CD\u542F\u8BBE\u8BA1\u5668 +ReportServerP-PDF2-INFO=\u4EC5\u5728LINUX/UNIX\u4E0B\u672A\u5B89\u88C5\u4E2D\u6587\u5B57\u4F53\u65F6\u4F7F\u7528 +FormulaD-Check_Valid=\u68C0\u67E5\u5408\u6CD5\u6027 +server_disconnected=\u8FDE\u63A5\u5DF2\u65AD\u5F00 +ParameterD-Parameter_name_cannot_be_null=\u53C2\u6570\u7684\u540D\u5B57\u4E0D\u53EF\u4EE5\u4E3A\u7A7A +FR-Designer-Plugin_Version_Is_Lower_Than_Current=\u5347\u7EA7\u5305\u7684\u63D2\u4EF6\u7248\u672C\u6CA1\u6709\u6BD4\u5F53\u524D\u7684\u9AD8 +RWA-NotChange_Unmodified=\u672A\u4FEE\u6539\u4E0D\u66F4\u65B0 +User_Information=\u7528\u6237\u4FE1\u606F +Custom_styles_lost=\u81EA\u5B9A\u4E49\u6837\u5F0F\u5DF2\u4E22\u5931 +PageSetup-Margin=\u9875\u8FB9\u8DDD +M-New_FormBook=\u65B0\u5EFA\u8868\u5355 +Widget-TreeNode=\u6811\u8282\u70B9\u6309\u94AE +Form-Url=\u5730\u5740 +Utils-Beyond_the_left_side_of_Border=\u8D85\u51FA\u5DE6\u8FB9\u754C +Float_Element_Name=\u60AC\u6D6E\u5143\u7D20\u540D\u79F0 +Purple=\u7C89\u7D2B +DashBoard-Potence=\u6743\u9650 +M-Close_Template=\u5173\u95ED\u6A21\u677F(C) +paper=\u7EB8\u5F20 +Not_Exsit=\u4E0D\u5B58\u5728\u4E8E\u62A5\u8868 +Utils-Insert_Row=\u63D2\u5165\u884C +Utils-Delete_Row=\u5220\u9664\u884C +not_support_authority_edit=\u8BE5\u5143\u7D20\u4E0D\u652F\u6301\u6743\u9650\u63A7\u5236 +Formula_Tips=\u516C\u5F0F\u5FC5\u987B\u4EE5"\ +FR-Action_Copy=\u590D\u5236 +Compile_Success=\u7F16\u8BD1\u6210\u529F +BackgroundTexture-RecycledPaper=\u518D\u751F\u7EB8 +StyleAlignment-Single_Line=\u5355\u884C\u663E\u793A +Utils-Move_Down=\u4E0B\u79FB +Please_Set_Repeat_First=\u8BF7\u5148\u8BBE\u7F6E\u91CD\u590D\u6807\u9898\u884C\u548C\u5217 +Writer-ShortCuts_Setting=\u586B\u62A5\u5FEB\u6377\u952E\u8BBE\u7F6E +Verify-Data_Verify=\u6570\u636E\u6821\u9A8C +FR-mobile_analysis_style=\u89E3\u6790\u65B9\u5F0F +Confirm-Delete-File=\u662F\u5426\u5220\u9664\u6240\u9009\u6587\u4EF6\uFF1F +PageSetup-Header=\u9875\u7709 +JavaScrit-Asynch=\u5F02\u6B65 +ReportServerP-Toolbar=\u5DE5\u5177\u680F +Utils-Top_to_Bottom=\u7EB5\u5411 +Platform=\u5E73\u53F0 +FR-Designer-FRFont_Underline=\u4E0B\u5212\u7EBF +Show_in_Containing_Folder=\u6253\u5F00\u6240\u5728\u6587\u4EF6\u5939 +BackgroundTexture-WaterDroplets=\u6C34\u6EF4 +FR-Designer-Dependence_Install_Failed=\u4F9D\u8D56\u5B89\u88C5\u5931\u8D25 +Layout-Padding=\u5185\u8FB9\u8DDD +roles_already_authority_edited=\u5DF2\u914D\u7F6E\u89D2\u8272 +WidgetDisplyPosition=\u63A7\u4EF6\u663E\u793A\u4F4D\u7F6E +SpecifiedG-Force_Group=\u5F3A\u5236\u5206\u7EC4 +FormulaD-Formula_Definition=\u516C\u5F0F\u5B9A\u4E49 +I-xyScatterStyle_Marker=\u6563\u70B9\u56FE +Hour=\u5C0F\u65F6 +ColorMatch=\u914D\u8272 +M_Edit-Order=\u53E0\u653E\u6B21\u5E8F(O) +BackgroundTexture-Bouquet=\u82B1\u675F +Verify-Error_Information=\u6821\u9A8C\u51FA\u9519\u4FE1\u606F +LayerData=\u5E95\u5C42\u6570\u636E +Rename=\u91CD\u547D\u540D +Widget-Load_By_Async=\u5F02\u6B65\u52A0\u8F7D +Shape=\u56FE\u5F62 +BindColumn-This_Condition_has_been_existed=\u6B64\u6761\u4EF6\u5DF2\u7ECF\u5B58\u5728 +NS-exception_readError=\u9519\u8BEF\u4EE3\u7801\:1305 \u6A21\u677F\u6587\u4EF6\u89E3\u6790\u51FA\u9519 +Set_Column_Title_Start=\u8BBE\u7F6E\u91CD\u590D\u6807\u9898\u5217 +Fri=\u4E94 +M_Report-Report_Parameter=\u6A21\u677F\u53C2\u6570 +REPORTLETS=\u8BBF\u95EE\u591A\u5F20\u6A21\u677F\u7684\u8DEF\u5F84\u7684\u53C2\u6570 +WLayout-Card-ToolTip=\u5361\u7247\u5F0F\u5E03\u5C40\uFF0C\u8BE5\u5E03\u5C40\u5BB9\u5668\u4E2D\u53EF\u4EE5\u6DFB\u52A0\u591A\u4E2A\u5176\u5B83\u7EC4\u4EF6\u3002 +M-Popup_ChartType=\u56FE\u8868\u7C7B\u578B +Please-Wait=\u8BF7\u7A0D\u5019 +FR-Designer-Form-ToolBar_Widget=\u63A7\u4EF6 +Widget-Array=\u6570\u7EC4 +FieldBinding=\u7ED1\u5B9A\u5B57\u6BB5 +Top_Bottom_Border_Line=\u4E0A\u4E0B\u6846\u7EBF +M-Others=\u5176\u5B83... +Hyperlink-Link_Opened_in=\u94FE\u63A5\u6253\u5F00\u4E8E +FR-Utils_WorkBook=\u5DE5\u4F5C\u7C3F +M_Insert-Float=\u60AC\u6D6E\u5143\u7D20 +Out_Thick_Border_Line=\u7C97\u5323\u6846\u7EBF +FR-App-File_Lookup_range=\u67E5\u627E\u8303\u56F4 +ReportColumns-Columns_to=\u5206\u680F\u6210 +Transparent=\u900F\u660E +Parameter-Integer=\u6574\u578B +PDF-Print_Setting=PDF\u6253\u5370\u8BBE\u7F6E +Server-Embedded_Server=\u5167\u7F6E\u7684\u670D\u52A1\u5668 +M_Server-Server_Config_Manager=\u670D\u52A1\u5668\u914D\u7F6E +FR-Utils-Would_you_like_to_cover_the_current_file=\u4F60\u5E0C\u671B\u8986\u76D6\u5F53\u524D\u6587\u4EF6\u5417 +CellWrite-InsertRow_COPY=\u539F\u503C +Edit_String_To_Formula=\u662F\u5426\u5C06\u5B57\u7B26\u4E32\u7F16\u8F91\u4E3A\u516C\u5F0F +Edit-Column_Count=\u5217\u6570 +Father=\u7236 +ReportColumns-Columns_after=\u8D85\u8FC7 +FR-Designer_Undo=\u64A4\u9500 +DBCP_MIN_IDLE=\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5\u6570 +M-Data_Analysis_Settings=\u6570\u636E\u5206\u6790\u8BBE\u7F6E +M-Form_Preview=\u8868\u5355\u9884\u89C8 +Form-Basic_Properties=\u57FA\u672C\u5C5E\u6027 +quote=\u5F15\u7528 +Thu=\u56DB +Collect-Collect_User_Information=\u6536\u96C6\u7528\u6237\u4FE1\u606F +Layer-Build=\u5206\u5C42\u6784\u5EFA +FR-Designer-FRFont_Line_Style=\u7EBF\u578B +BackgroundTexture-BrownMarble=\u68D5\u8272\u5927\u7406\u77F3 +PageSetup-Page_Setup=\u9875\u9762\u8BBE\u7F6E +Form-Semicolon=\u5206\u53F7 +ECP_re_input=\u5BC6\u7801\u9519\u8BEF, \u8BF7\u91CD\u65B0\u8F93\u5165 +ExpandD-Sort_After_Expand=\u6269\u5C55\u540E +FR-Designer-Dependence_Install_Succeed=\u4F9D\u8D56\u5B89\u88C5\u6210\u529F +Env-Configure_Workspace=\u914D\u7F6E\u5DE5\u4F5C\u76EE\u5F55 +feedback_info=\u6B22\u8FCE\u60A8\u63D0\u51FA\u5B9D\u8D35\u7684\u610F\u89C1\u548C\u5EFA\u8BAE\uFF0C\u8BF7\u5C06\u4FE1\u606F\u586B\u5199\u5F97\u5C3D\u91CF\u8BE6\u7EC6\uFF0C\u6211\u4EEC\u4F1A\u5C3D\u5FEB\u8054\u7CFB\u60A8 +Ratio=\u6BD4\u7387 +DBCP_TEST_ON_BORROW=\u83B7\u53D6\u8FDE\u63A5\u524D\u68C0\u9A8C +FR-Designer_layerIndex=\u4F9D\u8D56\u7684\u5C42\u6570 +WEB-Write_Setting=\u586B\u62A5\u9875\u9762\u8BBE\u7F6E +M-New_WorkBook=\u65B0\u5EFA\u5DE5\u4F5C\u7C3F +FR-Designer-Plugin_Has_Been_Actived=\u63D2\u4EF6\u5DF2\u88AB\u542F\u7528\uFF0C\u91CD\u542F\u8BBE\u8BA1\u5668\u53CA\u670D\u52A1\u5668\u751F\u6548\uFF0C\u670D\u52A1\u5668\u9700\u624B\u52A8\u91CD\u542F +Datasource-Maximum_Number_of_Preview_Rows=\u6700\u5927\u7684\u9884\u89C8\u884C\u6570 +ExpandD-Cell_Expand_Attributes=\u6269\u5C55\u5C5E\u6027 +Select_the_repeated_row_and_column=\u9009\u62E9\u9700\u8981\u91CD\u590D\u7684\u884C\u5217 +FormulaD-Date_&_Time=\u65E5\u671F\u548C\u65F6\u95F4\u51FD\u6570 +Max-Mem-Row-Count=\u7F13\u5B58\u81F3\u78C1\u76D8\u5F53\u8BB0\u5F55\u6570\u5927\u4E8E +BorderLayout-South=\u5357 +Export-Text=\u6587\u672C\u6587\u4EF6(\u5236\u8868\u7B26\u5206\u9694) +JavaScript-Synch=\u540C\u6B65 +FR-App-All_Warning=\u8B66\u544A +M_Edit-Send_Backward=\u4E0B\u79FB\u4E00\u5C42(B) +Form-Layout=\u5E03\u5C40 +FR-Designer-Plugin_Shop_Need_Update=\u63D2\u4EF6\u5546\u5E97\u6709\u65B0\u7248\u672C,\u662F\u5426\u66F4\u65B0? +FR-Designer_WorkBook=\u5DE5\u4F5C\u7C3F +UpBarBorderStyleAndColor=\u6DA8\u67F1\u6837\u5F0F +GridLayout=\u683C\u5B50\u5E03\u5C40 +Utils-Default_Value=\u9ED8\u8BA4\u503C +Widget-Comb_Widget_Config=\u7EC4\u5408\u63A7\u4EF6 +Import-Excel2007_Source=Excel2007\u6E90\u6587\u4EF6 +Y-Coordinate=\u7EB5\u5750\u6807 +FR-Base_SimSun_Not_Found=\u65E0\u6CD5\u627E\u5230\u5B8B\u4F53, \u8BF7\u9009\u62E9\u5F53\u524D\u7CFB\u7EDF\u4E0B\u9ED8\u8BA4\u8BED\u8A00\u4F5C\u4E3A\u8BBE\u8BA1\u5668\u5B57\u4F53. +FR-Designer_Seriously=\u4E25\u91CD +Upload=\u4E0A\u4F20 +Form-Widget_Property_Table=\u5C5E\u6027\u8868 +Des-Merger_Cell=\u9009\u62E9\u7684\u533A\u57DF\u5305\u542B\u591A\u4E2A\u6570\u636E\uFF0C\u5408\u5E76\u5355\u5143\u683C\u540E\u5C06\u53EA\u4FDD\u7559\u7F16\u8F91\u8FC7\u7684\u6240\u6709\u5355\u5143\u683C\u4E2D\u6700\u5DE6\u4E0A\u89D2\u7684\u6570\u503C. +FR-Designer-Basic_Copy_Build_NO=\u53CC\u51FB\u6784\u5EFA\u7248\u672C\u53F7\u53EF\u590D\u5236\u5230\u526A\u8D34\u677F +FR-Base_TurnOn=\u5F00\u542F +FR-Base_Rows=\u884C +Form-Remove_Repeat=\u53BB\u6389\u91CD\u590D\u9879 +Yes=\u662F +Datasource-JNDI_Name=JNDI\u7684\u540D\u5B57 +Utils-Delete_Column=\u5220\u9664\u5217 +HF-Delete_it=\u5220\u9664 +JavaScript-Dynamic_Parameters=\u52A8\u6001\u53C2\u6570 +px=\u50CF\u7D20 +FR-App-Report_Template=\u62A5\u8868\u6A21\u7248 +Verify-Message=\u9519\u8BEF\u4FE1\u606F +Plan=\u8BA1\u5212 +Vertical-Split_Layout=\u5782\u76F4\u5206\u5272\u5E03\u5C40 +ParameterD-Delay_Playing=\u70B9\u51FB\u67E5\u8BE2\u524D\u4E0D\u663E\u793A\u62A5\u8868\u5185\u5BB9 +TurnOff=\u5173\u95ED +FR-Please_Rename=\u8BF7\u91CD\u547D\u540D +Select_Data_Set=\u9009\u62E9\u6570\u636E\u96C6 +Name_has_Colon=\u540D\u5B57\: +ReportColumns-Columns_horizontally=\u884C\u5206\u680F +FR-Base_Yes=\u662F +ReportColumns-Repeat_Row=\u590D\u5236\u884C\u5E8F\u5217 +Print_Setting=\u6253\u5370\u8BBE\u7F6E +Registration-User_Name=\u7528\u6237\u540D +Datasource-User_Defined=\u81EA\u5B9A\u4E49 +FR-Designer-Plugin_DownLoadMessage=\u63D2\u4EF6\u9700\u8981\u4F9D\u8D56\u7684\u652F\u6301\uFF0C\u662F\u5426\u5B89\u88C5 ({R1} m)? +Delay=\u5EF6\u8FDF +FR-Designer-All_MSBold=\u5FAE\u8F6F\u96C5\u9ED1 +Utils-Now_create_connection=\u6B63\u5728\u5EFA\u7ACB\u6570\u636E\u8FDE\u63A5 +FR-Template-Path_chooseRightPath=\u8BF7\u9009\u62E9\u6B63\u786E\u8DEF\u5F84 +FR-Remote_Re_Connect_to_Server=\u670D\u52A1\u5668\u5DF2\u5173\u95ED\uFF0C\u662F\u5426\u91CD\u65B0\u8FDE\u63A5\u670D\u52A1\u5668? +Nation=\u56FD\u5BB6 +DBCP_MAX_WAIT=\u6700\u5927\u7B49\u5F85\u65F6\u95F4 +FR-App-Template_Form=\u8868\u5355 +Address=\u5730\u5740 +Sub_Report=\u5B50\u62A5\u8868 +FR-Import-Export_Word=Word\u683C\u5F0F +FR-Server_Version_Tip=\u60A8\u5F53\u524D\u8FDE\u63A5\u7684\u670D\u52A1\u5668\u7248\u672C\u4F4E\u4E8E\u60A8\u4F7F\u7528\u7684\u8BBE\u8BA1\u5668\u7248\u672C\u53F7\uFF0C\u7EE7\u7EED\u8FDE\u63A5\uFF0C\u60A8\u7F16\u8F91\u7684\u4E00\u4E9B\u5C5E\u6027\u53EF\u80FD\u65E0\u6CD5\u6709\u6548\u4FDD\u5B58\u3002 \u5047\u5982\u9700\u8981\u8FDE\u63A5\u8BF7\u5C06\u60A8\u7684\u8BBE\u8BA1\u5668\u7248\u672C\u4E0E\u670D\u52A1\u5668\u7248\u672C\u4FDD\u6301\u4E00\u81F4 +StyleAlignment-Left_To_Right=\u4ECE\u5DE6\u5411\u53F3 +Verify-ToolTips=\u4E0D\u6EE1\u8DB3\u516C\u5F0F\u63D0\u793A\u6821\u9A8C\u51FA\u9519\u4FE1\u606F +BackgroundTexture-Stationery=\u4FE1\u7EB8 +FR-Designer_RWA-Help=\u8BBE\u7F6E\u672A\u4FEE\u6539\u4E0D\u66F4\u65B0\u540E\uFF0C\u586B\u62A5\u9884\u89C8\u62A5\u8868\uFF0C\u8BB0\u5F55\u6240\u5728\u5355\u5143\u683C\u6CA1\u6709\u88AB\u7F16\u8F91\u4FEE\u6539\uFF0C\u5219\u6B64\u8BB0\u5F55\u4E0D\u4F1A\u8FDB\u884C\u66F4\u65B0\uFF1B\n\u5728\u5927\u6570\u636E\u91CF\u8BB0\u5F55\u67E5\u8BE2\u5E76\u56DE\u586B\u60C5\u51B5\u4E0B\uFF0C\u542F\u7528\u8BE5\u8BBE\u7F6E\uFF0C\u53EF\u4EE5\u63D0\u9AD8\u586B\u62A5\u63D0\u4EA4\u6027\u80FD\u3002 +M_Insert-Barcode=\u6761\u5F62\u7801 +Bounds=\u8FB9\u754C +FR-Designer-Undo_All_Authority_Operations=\u64A4\u9500\u524D\u4E00\u6B21\u6743\u9650\u7F16\u8F91\u7684\u6240\u6709\u64CD\u4F5C +Datasource-Context=\u4E0A\u4E0B\u6587 +CellWrite-Page_After_Column=\u5217\u540E\u5206\u9875 +FR-Designer_Cancel=\u53D6\u6D88 +Button-Group-Display-Columns=\u5C55\u793A\u5217\u6570 +Widget-Height=\u63A7\u4EF6\u9AD8\u5EA6 +Examples=\u4F8B\u5B50 +Formula_Dictionary_Display_Example=\u5B9E\u9645\u503C\u8303\u56F4\u4E3A \ +StyleAlignment-Horizontal=\u6C34\u5E73\u5BF9\u9F50 +HyperLink_Must_Alone_Reset=\u591A\u4E2A\u8D85\u94FE +ExpandD-Expand_Direction=\u6269\u5C55\u65B9\u5411 +Include=\u5305\u62EC +Export-Excel-Page=\u5206\u9875\u5BFC\u51FA +FR-Designer-Min_Height=\u6700\u5C0F\u9AD8\u5EA6 +Filed=\u533A\u57DF +ReportServerP-Import_Css=\u5F15\u7528Css +M_Insert-Formula=\u63D2\u5165\u516C\u5F0F +FR-Designer_Auto-Build=\u81EA\u52A8\u6784\u5EFA +FRFont-Foreground=\u989C\u8272 +Bubble-Width=\u6C14\u6CE1\u5BBD\u5EA6 +Form-Hierarchy_Tree=\u7ED3\u6784\u6811 +WLayout-Border-LayoutContainer=\u62E5\u6709\u4E2D\u90E8\u548C\u5317\u90E8\u4E24\u5757\u7684\u8FB9\u754C\u5E03\u5C40\u5BB9\u5668,\u5176\u4E2D\u5317\u90E8\u5757\u53EF\u4EE5\u6839\u636E\u9700\u8981\u8C03\u6574\u9AD8\u5EA6 +Preference-JDK_Home=JDK\u8DEF\u5F84 +Utils-Insert_Column=\u63D2\u5165\u5217 +FR-Designer_ToolBar_Top=\u9876\u90E8\u5DE5\u5177\u680F +BindColumn-The_Conditions_of_FatherCell=\u7236\u683C\u6761\u4EF6 +Links=\u94FE\u63A5 +M_Report-Report_Header=\u62A5\u8868\u9875\u7709 +Sub_Report_Description=\u5B50\u62A5\u8868\u9700\u8981\u5B58\u5728\u4E8E\u7236\u8868\u8FD0\u884C\u73AF\u5883\u4E0B\uFF0C\u4E14\u4E24\u8005\u4E0D\u80FD\u4E3A\u540C\u4E00\u6A21\u677F +T_Insert-Float=\u63D2\u5165\u60AC\u6D6E\u5143\u7D20 +BackgroundTexture-FishFossil=\u9C7C\u7C7B\u5316\u77F3 +My_Computer=\u6211\u7684\u7535\u8111 +FORMLET=\u8BBF\u95EE\u4E0D\u540C\u8868\u5355\u7684\u8DEF\u5F84\u7684\u53C2\u6570 +HF-Undefined=\u6CA1\u6709\u5B9A\u4E49 +Widget-User_Defined_Widget_Config=\u9884\u5B9A\u4E49\u63A7\u4EF6 +Report-Write_Attributes_Group_Warning=\u8BBE\u7F6E\u4E3A\u5355\u5143\u683C\u7EC4\u7684\u5404\u5B57\u6BB5\u4E2D\u7684\u5355\u5143\u683C\u4E2A\u6570\u5FC5\u987B\u76F8\u540C +Form-Single_quote=\u5355\u5F15\u53F7 +Compile_Success_And_Then_Save=\u7F16\u8BD1\u6210\u529F\u624D\u80FD\u6B63\u786E\u4FDD\u5B58 +FR-Designer_Layout-Padding=\u5185\u8FB9\u8DDD +Layout_Container=\u5E03\u5C40\u5BB9\u5668 +Admin=\u7BA1\u7406\u5458 +Form-EC_toolbar=\u62A5\u8868\u5757\u5DE5\u5177\u680F +FR-App-All_Auto=\u81EA\u52A8 +Utils-Available_Columns=\u53EF\u9009\u5217 +Form-Change_Widget_Name_Discription=\u8BF7\u8F93\u5165\u4E00\u4E2A\u65B0\u7684\u63A7\u4EF6\u540D +FR-Module_Designer=\u8BBE\u8BA1\u5668\u6A21\u5757 +FR-Import-Export_Text=\u6587\u672C\u6587\u4EF6(\u5236\u8868\u7B26\u5206\u9694) +Values-Editor=\u503C\u7F16\u8F91\u5668 +FR-Designer_Yes=\u662F +ExpandD-Expandable=\u53EF\u4F38\u5C55\u6027 +Tree-Return_Full_Path=\u7ED3\u679C\u8FD4\u56DE\u5B8C\u6574\u5C42\u6B21\u8DEF\u5F84 +FRFont-bolditalic=\u52A0\u7C97\u503E\u659C +FR-Base_StyleFormat_Sample=\u793A\u4F8B +Area_Value=\u533A\u57DF\u503C +FR-Designer-Plugin_Disable=\u7981\u7528 +Utils-Are_you_sure_to_remove_the_selected_item=\u4F60\u786E\u5B9E\u51B3\u5B9A\u5220\u9664\u9009\u4E2D\u7684\u9879 +Face_Write=\u586B\u62A5 +Poly-Report_Block=\u62A5\u8868\u7C7B\u578B\u805A\u5408\u5757 +Vgap=\u5782\u76F4\u95F4\u9699 +FR-Designer_HyperLink_Must_Alone_Reset=\u591A\u4E2A\u8D85\u94FE +DS-Class=\u7A0B\u5E8F +FR-Hyperlink_Please_Select_Reportlet=\u8BF7\u9009\u62E9\u7F51\u7EDC\u62A5\u8868 +FS_Report_Type=\u7C7B\u578B +HF-New_Line=\u6362\u884C\u7B26 +Privilege=\u6743\u9650 +Export-Offline-Html=\u8F93\u51FA\u79BB\u7EBFhtml\u62A5\u8868 +FR-Designer_open-new-form-tip=\u5F53\u524D\u6A21\u677F\u4E3A711\u4EE5\u4E0B\u7248\u672C\u5236\u4F5C\uFF0C\u65E0\u6CD5\u517C\u5BB9\uFF0C\u4E0D\u80FD\u6253\u5F00\u3002\u5047\u5982\u60F3\u6253\u5F00\u4FEE\u6539\u6B64\u8868\u5355\uFF0C\u8BF7\u4F7F\u7528\u5BF9\u5E94\u7248\u672C\u8BBE\u8BA1\u5668\u6253\u5F00\u3002 +FR-Designer-Widget-Style_Frame_Style=\u6846\u67B6\u6837\u5F0F +Present-No_Present=\u53D6\u6D88\u5F62\u6001\u8BBE\u7F6E +FR-Designer_Form-Password=\u5BC6\u7801 +X_Axis=X\u8F74 +FR-mobile_html_analysis=HTML5\u89E3\u6790 +M_Edit-Bring_to_Front=\u7F6E\u4E8E\u9876\u5C42(T) +Null_Value_Show=\u7A7A\u503C\u663E\u793A +Datasource-JNDI_DES=\u6CE8\u610F\:\u9700\u8981\u628A\u5305\u542BINITIAL_CONTEXT_FACTORY\u7C7B\u7684.jar\u6587\u4EF6\u590D\u5236\u5230\u8F6F\u4EF6\u5B89\u88C5\u76EE\u5F55\u4E0B\u7684/lib\u76EE\u5F55\u4E0B. +PrintP-Print_Preview=\u6253\u5370\u9884\u89C8 +Form-Hierarchy_Tree_Last=\u4E0A\u4E00\u4E2A +Has_been_gone=\ \u5DF2\u4E22\u5931\uFF0C\u662F\u5426\u589E\u52A0\u8BE5\u6837\u5F0F\uFF1F +RWA-Add_Field=\u6DFB\u52A0\u5B57\u6BB5 +newNode=\u65B0\u589E\u8282\u70B9 +PageSetup-Shrink_to_fit_content=\u6839\u636E\u5355\u5143\u683C\u5185\u5BB9\u81EA\u52A8\u8C03\u6574 +FR-Designer_Date=\u65E5\u671F +Column_Multiple=\u6570\u636E\u500D\u6570 +FR-App-All_File=\u6587\u4EF6 +Sort-Descending=\u964D\u5E8F +FR-Designer-Plugin_Delete=\u5220\u9664 +Above=\u4EE5\u4E0A\u7248\u672C +Utils-The-Chart=\u56FE\u8868 +FRFont-plain=\u5E38\u89C4 +Calculating=\u5904\u7406\u4E2D +Form-Object=\u8868\u5355\u5BF9\u8C61\: +May=\u4E94\u6708 +FR-Designer_Plugin_Normal_Update=\u66F4\u65B0 +FR-Hyperlink_Reportlet=\u7F51\u7EDC\u62A5\u8868 +M_Edit-Copy=\u590D\u5236(C) +Sub_Report_Message2=\u7236\u62A5\u8868\u4E0D\u5728\u5F53\u524D\u8FD0\u884C\u73AF\u5883\u4E0B +Sub_Report_Message3=\u4E0D\u80FD\u9009\u62E9\u81EA\u8EAB +Sub_Report_Message1=\u8BF7\u9009\u62E9\u6B63\u786E\u8DEF\u5F84 +Form-Allow_CustomData=\u5141\u8BB8\u81EA\u5B9A\u4E49\u503C +FR-Server_Version_Tip_MoreInfo=\u5EFA\u8BAE\u60A8\u6240\u5C5E\u56E2\u961F\u4F7F\u7528\u7684\u6211\u65B9FineReport\u4EA7\u54C1\u7684\u8BBE\u8BA1\u5668\u7248\u672C\u53F7\u4EE5\u53CA\u90E8\u7F72\u7684\u670D\u52A1\u5668\u7248\u672C\u53F7\u4FDD\u6301\u4E00\u81F4\uFF0C\u4EE5\u907F\u514D\u7248\u672C\u4E0D\u4E00\u81F4\u9020\u6210\u7684\u95EE\u9898\u98CE\u9669\u3002\n\u5047\u5982\u60A8\u6253\u5F00\u66F4\u9AD8\u8BBE\u8BA1\u5668\u7248\u672C\u5236\u4F5C\u7684\u6A21\u677F\uFF0C\u53EF\u80FD\u6253\u5F00\u51FA\u9519\uFF0C\u4E5F\u53EF\u80FD\u4E22\u5931\u539F\u6709\u6A21\u677F\u5C5E\u6027\u3002\u5047\u5982\u60A8\u5236\u4F5C\u7684\u6A21\u677F\u4F7F\u7528\u7684\u8BBE\u8BA1\u5668\u7248\u672C\u9AD8\u4E8E\u60A8\u6700\u7EC8\u90E8\u7F72\u6240\u7528\u7684\u670D\u52A1\u5668\u7248\u672C\uFF0C\u670D\u52A1\u5668\u53EF\u80FD\u65E0\u6CD5\u6B63\u5E38\u8F7D\u5165\u60A8\u5236\u4F5C\u7684\u6A21\u677F\u3002 +FR-Designer_Server-version-tip-moreInfo=\u5EFA\u8BAE\u60A8\u6240\u5C5E\u56E2\u961F\u4F7F\u7528\u7684\u6211\u65B9FineReport\u4EA7\u54C1\u7684\u8BBE\u8BA1\u5668\u7248\u672C\u53F7\u4EE5\u53CA\u90E8\u7F72\u7684\u670D\u52A1\u5668\u7248\u672C\u53F7\u4FDD\u6301\u4E00\u81F4\uFF0C\u4EE5\u907F\u514D\u7248\u672C\u4E0D\u4E00\u81F4\u9020\u6210\u7684\u95EE\u9898\u98CE\u9669\u3002\n\u5047\u5982\u60A8\u6253\u5F00\u66F4\u9AD8\u8BBE\u8BA1\u5668\u7248\u672C\u5236\u4F5C\u7684\u6A21\u677F\uFF0C\u53EF\u80FD\u6253\u5F00\u51FA\u9519\uFF0C\u4E5F\u53EF\u80FD\u4E22\u5931\u539F\u6709\u6A21\u677F\u5C5E\u6027\u3002\u5047\u5982\u60A8\u5236\u4F5C\u7684\u6A21\u677F\u4F7F\u7528\u7684\u8BBE\u8BA1\u5668\u7248\u672C\u9AD8\u4E8E\u60A8\u6700\u7EC8\u90E8\u7F72\u6240\u7528\u7684\u670D\u52A1\u5668\u7248\u672C\uFF0C\u670D\u52A1\u5668\u53EF\u80FD\u65E0\u6CD5\u6B63\u5E38\u8F7D\u5165\u60A8\u5236\u4F5C\u7684\u6A21\u677F\u3002 +Get_Lock=\u52A0\u9501 +HF-Edit_Footer=\u7F16\u8F91\u9875\u811A +Datasource-New_Charset=\u65B0\u7F16\u7801 +Preference-Custom=\u81EA\u5B9A\u4E49 +BackgroundTexture-Newsprint=\u65B0\u95FB\u7EB8 +ConditionB-Add_bracket=\u6DFB\u52A0\u62EC\u53F7 +Datasource-Connection_successfully=\u8FDE\u63A5\u6210\u529F +Function-The_class_must_implement_the_interface=\u8BE5\u7C7B\u5FC5\u987B\u5B9E\u73B0\u63A5\u53E3 +FR-Designer_ChartF-Transparency=\u900F\u660E +Crimson=\u6DF1\u7EA2 +FR-Hyperlink_Dialog=\u5BF9\u8BDD\u6846 +FR-Designer_Covered_All=\u5168\u90E8\u8986\u76D6 +Hyperlink-New_Window=\u65B0\u7A97\u53E3 +Style_Name=\u683C\u5F0F\u540D +CSS_warning=\ \u76F8\u5BF9\u62A5\u8868\u5DE5\u7A0B\u76EE\u5F55\u5982WebReport,\u5982WebReport\\css\u4E0B\u6709\u5F15\u7528\u7684css\u6587\u4EF6test.css\uFF0C\u5219\u76F8\u5BF9\u8DEF\u5F84\u4E3Acss/test.css +FR-Base_Column=\u5217 +Three_Rows_Of_Two_Grid=\u4E09\u884C\u4E24\u5217\u7684\u683C\u5B50 +DBCP_VALIDATION_QUERY=SQL\u9A8C\u8BC1\u67E5\u8BE2 +M_Edit-Clear_Formats=\u683C\u5F0F(F) +Parameter_Setting=\u53C2\u6570\u8BBE\u7F6E +Related=\u8054\u52A8 +BorderLayout-Constraints=\u4F4D\u7F6E +Write_Preview=\u586B\u62A5\u9884\u89C8 +PageSetup-Page_Order=\u6253\u5370\u987A\u5E8F +Verify-Verify_Formula=\u6821\u9A8C\u516C\u5F0F +State=\u7701\u5E02 +FR-Designer-Widget-Style_Body_Background=\u4E3B\u4F53\u80CC\u666F +FR-App-Privilege_No=\u6CA1\u6709\u6743\u9650 +Please_Drag_ParaPane= +Come_True=\u5B9E\u73B0 +ISEMPTY=\u4E3A\u7A7A +Background-Texture=\u7EB9\u7406 +FR-Designer_Verify-Message=\u9519\u8BEF\u4FE1\u606F +Locked=\uFF08\u5DF2\u9501\u5B9A\uFF09 +Utils-Design-Action_Cancel=\u53D6\u6D88 +Image-Titled=\u5E73\u94FA +Gradient-Direction=\u6E10\u53D8\u65B9\u5411 +Green=\u9752\u7EFF +Report_Engine=\u62A5\u8868\u5F15\u64CE +Return-String=\u8FD4\u56DE\u5B57\u7B26\u4E32 +Margin=\u8FB9\u8DDD +Pitch_Percentage=\u95F4\u8DDD\u767E\u5206\u6BD4 +FR-Base_TurnOff=\u5173\u95ED +Utils-has_been_existed=\u5DF2\u5B58\u5728 +HF-Insert_Formula=\u63D2\u5165\u516C\u5F0F +Utils-Exit_Designer=\u9000\u51FA\u8BBE\u8BA1\u5668 +Formula_Dictionary_Display=\u5BF9\u4E8E\u4E0A\u9762\u5B9E\u9645\u503C\u8303\u56F4\u5185\u7684\u6BCF\u4E2A\u503C($$$)\uFF0C\u5176\u663E\u793A\u503C\u4E3A +PageSetup-Left_to_right=\u5148\u884C\u540E\u5217 +Utils-Import_Excel_Data=\u5BFC\u5165[Excel] +M-Save=\u4FDD\u5B58 +redo=\u91CD\u505A +Status=\u72B6\u6001 +Draw=\u7ED8\u5236 +FR-Designer_Message=\u4FE1\u606F +Records=\u6761\u8BB0\u5F55 +FR-Designer_ComboBox=\u4E0B\u62C9\u6846 +Driver=\u9A71\u52A8\u5668 +Template_Parameters=\u6A21\u677F\u53C2\u6570 +Form-Remove_Repeat_Data=\u53BB\u9664\u91CD\u590D\u6570\u636E +ECP_decode=\u6A21\u677F\u89E3\u5BC6 +Area_Name=\u533A\u57DF\u540D +Others=\u5176\u5B83 +Merge=\u5408\u5E76 +BackgroundTexture-Parchment=\u7F8A\u76AE\u7EB8 +BindColumn-Bottom_N=\u540EN\u4E2A +Frame=\u6846\u67B6 +Bottom_Border_Line=\u4E0B\u6846\u7EBF +Muiti_In=\u591A\u5C42\u94BB\u53D6 +FR-Designer-Dependence_Install_Online=\u5728\u7EBF\u5B89\u88C5\u4F9D\u8D56\u73AF\u5883 +Use_Default_ToolBar=\u4F7F\u7528\u9ED8\u8BA4\u5DE5\u5177\u680F +M_Server-Platform_Manager=\u62A5\u8868\u5E73\u53F0\u7BA1\u7406 +PageSetup-inches=\u82F1\u5BF8 +Form-Widget_Property=\u5C5E\u6027\u540D +FR-Layout_Padding=\u5185\u8FB9\u8DDD +Schema=\u4E3B\u9898 +Server_Path=\u4E3B\u673A\u4F4D\u7F6E +Condition_Display=\u6761\u4EF6\u663E\u793A +FR-Server-Design_template_unopened=\u65E0\u6CD5\u6253\u5F00\u6A21\u7248 +Function-Function_Class_Name=\u51FD\u6570\u7C7B\u540D +Schedule-Template=\u6A21\u677F\u540D\u79F0 +Tree_Data_Field=\u6811\u6570\u636E\u5B57\u6BB5 +Border-Style-Normal=\u76F4\u89D2\u8FB9\u6846 +Top_And_Double_Bottom_Border_Line=\u4E0A\u6846\u7EBF\u548C\u53CC\u4E0B\u6846\u7EBF +FR-Server_Embedded_Server_Start=\u5167\u7F6E\u7684\u670D\u52A1\u5668-\u6253\u5F00 +FR-Designer-Basic_Restart_Designer_Later=\u7A0D\u540E\u91CD\u542F +StyleAlignment-Top=\u9760\u4E0A +ReportServerP-First=\u9996\u9875 +Not_Exist=\u4E0D\u5B58\u5728 +FR-Remote_File_is_Locked=\u60A8\u6240\u8981\u6253\u5F00\u7684\u62A5\u8868\u6B63\u5728\u88AB\u5176\u4ED6\u4EBA\u7F16\u8F91\uFF0C\u8BF7\u7A0D\u5019\u6253\u5F00 +Apply=\u5E94\u7528 +Sytle-Indentation=\u7F29\u8FDB +Parameter-Float=\u5355\u7CBE\u5EA6\u578B +HF-Center_Section=\u4E2D\u95F4\u533A\u57DF +Form-Double_quotes=\u53CC\u5F15\u53F7 +M_File-Export-Word=Word\u683C\u5F0F +M_File-Export-Text=\u6587\u672C\u6587\u4EF6(\u5236\u8868\u7B26\u5206\u9694) +PageSetup-First_Page_Number=\u8D77\u59CB\u9875\u7801 +Execute=\u6267\u884C +Task=\u4EFB\u52A1 +Custom_Button_Type_Submit=\u63D0\u4EA4 +FR-Designer-Widget_Settings=\u63A7\u4EF6\u8BBE\u7F6E +IS_Need_Password=\u9700\u8981\u5BC6\u7801 +PageSetup-Horizontally=\u6C34\u5E73\u5C45\u4E2D +No_Editor_Property_Definition=\u8BE5\u7F16\u8F91\u5668\u6CA1\u6709\u5C5E\u6027\u5B9A\u4E49 +Env-Remote_Server=\u8FDC\u7A0B\u670D\u52A1\u5668 +FR-Utils_Background=\u80CC\u666F +FR-Designer-Plugin_Warning=\u8B66\u544A +Server-version-info=\u60A8\u5F53\u524D\u6253\u5F00\u7684\u6A21\u677F\u6587\u4EF6\u662F\u7531\u66F4\u9AD8\u7248\u672C\u7684\u8BBE\u8BA1\u5668\u5236\u4F5C\u7684\uFF0C\u6253\u5F00\u4F1A\u6709\u51FA\u9519\u6216\u8005\u4E22\u5931\u539F\u6709\u6A21\u677F\u5C5E\u6027\u7684\u98CE\u9669\u3002 \u5047\u5982\u9700\u8981\u6253\u5F00\u6B64\u6A21\u677F\u8BF7\u60A8\u5C06\u60A8\u7684\u8BBE\u8BA1\u5668\u5347\u7EA7\u81F3 +CellWrite-Page_After_Row=\u884C\u540E\u5206\u9875 +HF-Right_Section=\u53F3\u533A\u57DF +PageSetup-Title_Start_Row=\u91CD\u590D\u6807\u9898\u884C +From=\u4ECE\u7B2C +Preference-Grid_Line_Color=\u7F51\u683C\u7EBF\u989C\u8272 +RowTo=\u884C\u81F3\u7B2C +FR-Designer_ReportColumns-Repeat_Column=\u590D\u5236\u5217\u5E8F\u5217 +M_Server-Function_Manager=\u51FD\u6570\u7BA1\u7406\u5668 +KeyWord=\u5173\u952E\u5B57 +DS-Multi_Dimensional_Database=\u591A\u7EF4\u6570\u636E\u5E93 +BiasD-Slope_Line=\u659C\u7EBF +Tue=\u4E8C +ReportServerP-Last=\u672B\u9875 +FR-Base_Columns=\u5217 +SpecifiedG-Leave_in_their_own_groups=\u7559\u5728\u5404\u81EA\u7684\u7EC4\u5185 +LOG-Please_Wait=\u8BF7\u7A0D\u5019 +Form-ToolBar=\u8868\u5355\u5DE5\u5177\u680F +FR-Base_sure_remove_item=\u4F60\u786E\u5B9E\u51B3\u5B9A\u5220\u9664\u9009\u4E2D\u7684\u9879 +Component_Scale=\u7EC4\u4EF6\u7F29\u653E +Hyperlink-Use_CJK_to_encode_parameter=\u4F7F\u7528CJK\u5904\u7406\u53C2\u6570 +LOG-Has_Been_Openned=\u5DF2\u7ECF\u6253\u5F00 +FR-Designer-Dependence=\u4F9D\u8D56\u73AF\u5883 +ECP_error_pwd=\u5BC6\u7801\u9519\u8BEF +REPORTLET=\u8BBF\u95EE\u6A21\u677F\u7684\u8DEF\u5F84\u7684\u53C2\u6570\u3002 +RWA-Column_Offset=\u5217\u504F\u79FB +Forecast=\u9884\u6D4B +Light_Orange=\u6D45\u6A58\u9EC4 +StyleAlignment-Vertical=\u5782\u76F4\u5BF9\u9F50 +Form-List=\u5217\u8868 +ParameterD-Show_Parameter_Window=\u663E\u793A\u53C2\u6570\u7A97\u4F53 +FR-Designer_Set_Submit_Event=\u8BBE\u7F6E\u63D0\u4EA4\u4E8B\u4EF6 +Value_Percent=\u503C\u6240\u5360\u6BD4\u4F8B +DBCP_MIN_EVICTABLE_IDLE_TIMEMILLIS=\u4FDD\u6301\u7A7A\u95F2\u6700\u5C0F\u65F6\u95F4\u503C +Function-The_class_must_be_located_in=\u8BE5\u7C7B\u5FC5\u987B\u653E\u7F6E\u5728 +FR-Action_Sort=\u6392\u5E8F +DataFunction-Average=\u5E73\u5747 +FR-Designer_Show_in_Containing_Folder=\u6253\u5F00\u6240\u5728\u6587\u4EF6\u5939 +M_File-Export-Excel=Excel\u683C\u5F0F +DataFunction-Max=\u6700\u5927\u503C +FR-Designer_Form-Widget_Name=\u63A7\u4EF6\u540D +FS_End_Date=\u7ED3\u675F\u65E5\u671F +Export-Excel-Simple=\u539F\u6837\u5BFC\u51FA +ColumnTo=\u5217\u81F3\u7B2C +SpecifiedG-Discard_all_others=\u4E22\u5F03\u5176\u5B83\u6240\u6709\u7684 +DS-TableData=\u6570\u636E\u96C6 +Form-DataTable=\u6570\u636E\u8868 +Sub_Report_ToolTips=\u5B50\u62A5\u8868\u63D0\u793A +Right_Top=\u53F3\u4E0A +M_Edit-Merge_Cell=\u5408\u5E76\u5355\u5143\u683C +FR-Designer_Restore_Default=\u6062\u590D\u9ED8\u8BA4 +Component_Interval=\u7EC4\u4EF6\u95F4\u9694 +Cover_None=\u5168\u4E0D\u8986\u76D6 +Datasource-From_Database=\u6570\u636E\u5E93\u8868 +Folder=\u76EE\u5F55 +Form-Allow_Edit=\u5141\u8BB8\u76F4\u63A5\u7F16\u8F91 +M_Edit-Clear=\u6E05\u9664(A) +ParentCell_Setting=\u7236\u683C\u8BBE\u7F6E +Only_selected_cell_can_paste_only=\u53EA\u6709\u9009\u4E2D\u5355\u5143\u683C\u65F6\u624D\u53EF\u4EE5\u7C98\u8D34 +M_Report-Report_Columns=\u62A5\u8868\u5206\u680F +Unit_Hundred=\u767E +FR-Designer_DataTable-Build=\u6781\u901F\u5206\u5C42\u6784\u5EFA +Widget-Form_Widget_Config=\u8868\u5355\u63A7\u4EF6 +Server-version-tip-moreInfo=\u5EFA\u8BAE\u60A8\u6240\u5C5E\u56E2\u961F\u4F7F\u7528\u7684\u6211\u65B9FineReport\u4EA7\u54C1\u7684\u8BBE\u8BA1\u5668\u7248\u672C\u53F7\u4EE5\u53CA\u90E8\u7F72\u7684\u670D\u52A1\u5668\u7248\u672C\u53F7\u4FDD\u6301\u4E00\u81F4\uFF0C\u4EE5\u907F\u514D\u7248\u672C\u4E0D\u4E00\u81F4\u9020\u6210\u7684\u95EE\u9898\u98CE\u9669\u3002\n\u5047\u5982\u60A8\u6253\u5F00\u66F4\u9AD8\u8BBE\u8BA1\u5668\u7248\u672C\u5236\u4F5C\u7684\u6A21\u677F\uFF0C\u53EF\u80FD\u6253\u5F00\u51FA\u9519\uFF0C\u4E5F\u53EF\u80FD\u4E22\u5931\u539F\u6709\u6A21\u677F\u5C5E\u6027\u3002\u5047\u5982\u60A8\u5236\u4F5C\u7684\u6A21\u677F\u4F7F\u7528\u7684\u8BBE\u8BA1\u5668\u7248\u672C\u9AD8\u4E8E\u60A8\u6700\u7EC8\u90E8\u7F72\u6240\u7528\u7684\u670D\u52A1\u5668\u7248\u672C\uFF0C\u670D\u52A1\u5668\u53EF\u80FD\u65E0\u6CD5\u6B63\u5E38\u8F7D\u5165\u60A8\u5236\u4F5C\u7684\u6A21\u677F\u3002 +Actions=\u4EFB\u52A1 +FR-Designer-Dependence_Connect_Server_Error=\u65E0\u6CD5\u8FDE\u63A5\u670D\u52A1\u5668\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5 +High=\u9AD8 +HJS-Send_Failed=\u53D1\u9001\u5931\u8D25 +HJS-Message=\u5185\u5BB9 +File-Allow_Upload_Files=\u5141\u8BB8\u4E0A\u4F20\u6587\u4EF6\u7C7B\u578B +FR-Designer-Form-ToolBar_Chart=\u56FE\u8868 +Thick_Bottom_Border_Line=\u7C97\u5E95\u6846\u7EBF +FR-Action_Remove=\u5220\u9664 +FRFont-Style=\u5B57\u5F62 +Select_DataColumn=\u9009\u62E9\u6570\u636E\u5217 +StartValue=\u5F00\u59CB\u503C +SINGLE_FILE_UPLOAD=\u53EA\u652F\u6301\u5355\u6587\u4EF6\u4E0A\u4F20 +BackgroundTexture-Cork=\u8F6F\u6728\u585E +M_Format-Data_Map=\u6570\u636E\u5B57\u5178 +FR-mobile_native_analysis=\u539F\u751F\u89E3\u6790 +HighLight=\u9AD8\u5149 +FR-Designer_Dropdown-More-Preview=\u4E0B\u62C9\u83B7\u53D6\u66F4\u591A\u9884\u89C8\u65B9\u5F0F +local=\u672C\u5730 +FR-Designer_Gradation=\u5C42\u6B21 +PageSetup-Finis_Start_Column=\u91CD\u590D\u7ED3\u5C3E\u5217 +Env-Invalid_User_and_Password=\u975E\u6CD5\u7684\u7528\u6237\u540D\u6216\u5BC6\u7801 +FR-Designer-Plugin_All_Plugins=\u5168\u90E8\u63D2\u4EF6 +FR-Designer_Prepare_Export=\u5F00\u59CB\u5BFC\u51FA\uFF0C\u8BF7\u7A0D\u5019 +DBCP_TEST_ON_RETURN=\u5F52\u8FD8\u8FDE\u63A5\u524D\u68C0\u9A8C +no-alternatives=\u6CA1\u6709\u9009\u62E9\u9879 +FR-Designer_Submmit_WClass=\u540E\u53F0\u7C7B\u63D0\u4EA4 +M_Insert-Slope_Line=\u63D2\u5165\u659C\u7EBF +FR-Designer-Plugin_Plugin_Description=\u63D2\u4EF6\u63CF\u8FF0 +ExpandD-Not_Expand=\u4E0D\u6269\u5C55 +Utils-Bottom_to_Top=\u4ECE\u4E0B\u5230\u4E0A +Collect-Click\!_Get_user_information_code=\u70B9\u51FB\!\u83B7\u53D6\u6FC0\u6D3B\u7801 +FR-Already_exist=\u5F53\u524D\u73AF\u5883\u5DF2\u5B58\u5728\: +Send=\u53D1\u9001 +M_Edit-Clear_All=\u5168\u90E8(A) +Brown_Orange=\u68D5\u9EC4 +PageSetup-Portrait=\u7EB5\u5411 +FR-Designer_Form-RadioGroup=\u5355\u9009\u6309\u94AE\u7EC4 +FR-Utils-App_AllFiles=\u6240\u6709\u6587\u4EF6 +Popup=\u5F39\u51FA +Server_Charset=\u670D\u52A1\u5668\u7F16\u7801 +CellWrite-Repeat_Content_When_Paging=\u5206\u9875\u65AD\u5F00\u65F6\u503C\u91CD\u590D\u663E\u793A +Utils-No_Pagination=\u4E0D\u5206\u9875 +Form-NullLayout=\u7EDD\u5BF9\u5B9A\u4F4D +ConditionB-Remove_bracket=\u53BB\u6389\u62EC\u53F7 +email=\u90AE\u7BB1 +Minute=\u5206\u949F +FR-Designer-Plugin_Update=\u63D2\u4EF6\u66F4\u65B0 +alraedy_close=\u5DF2\u7ECF\u5173\u95ED +ComboCheckBox-End_Symbol=\u7ED3\u675F\u7B26 +DataColumn=\u6570\u636E\u5217 +Form-Password=\u5BC6\u7801 +FR-Background_Image_Adjust=\u9002\u5E94 +Export-Excel-PageToSheet=\u5206\u9875\u5206Sheet\u5BFC\u51FA +Edit-Row_Count=\u884C\u6570 +DS-Report_TableData=\u6A21\u677F\u6570\u636E\u96C6 +Sche-Hour=\u65F6 +Group_Count=\u8868\u793A\u603B\u4E2A\u6570 +EndValue=\u7ED3\u675F\u503C +FR-Designer_Sytle-Indentation=\u7F29\u8FDB +DownBarBorderStyleAndColor=\u8DCC\u67F1\u6837\u5F0F +World=\u4E16\u754C +FR-Designer-Basic_Cancel=\u53D6\u6D88 +Finally=\u6700\u540E +Low=\u4F4E +Please_Input_The_Key=\u8BF7\u8F93\u5165\u5BF9\u5E94\u5730\u56FE\u4F7F\u7528\u7684key +Smart=\u667A\u80FD +Preference-Predefined=\u9884\u5B9A\u4E49 +Current_custom_global=\u5F53\u524D\u62A5\u8868\u6240\u7528\u81EA\u5B9A\u4E49\u5168\u5C40\u6837\u5F0F +FR-Designer-Plugin_Shop_Need_Install=\u60A8\u8FD8\u6CA1\u6709\u63D2\u4EF6\u5546\u5E97\u7684\u8D44\u6E90,\u662F\u5426\u4E0B\u8F7D? +WEB-Pagination_Setting=\u5206\u9875\u9884\u89C8\u8BBE\u7F6E +RCodeDrawPix=\u50CF\u7D20 +FR-Designer-Widget-Style_Alpha=\u4E0D\u900F\u660E\u5EA6 +BorderLayout-North=\u5317 +HJS-Current_Page=\u5F53\u524D\u9875 +Compile=\u7F16\u8BD1 +Show_Blank_Row=\u8865\u5145\u7A7A\u767D\u884C +TableData_Dynamic_Parameter_Setting=\u52A8\u6001\u53C2\u6570\u6CE8\u5165 +FR-Background_Image_Default=\u9ED8\u8BA4 +BackgroundTexture-WhiteMarble=\u767D\u8272\u5927\u7406\u77F3 +DataFunction-Sum=\u6C42\u548C +Collect-The_user_information_code_is_invalid=\u8FD9\u4E2A\u6FC0\u6D3B\u7801\u662F\u65E0\u6548\u7684, \u8BF7\u5230\u5B98\u7F51\u7533\u8BF7 +Preference-Locale=\u56FD\u9645\u5316 +M_File-Export-PDF=PDF\u683C\u5F0F +BiasD-From-lower_left_to_upper_right=\u4ECE\u5DE6\u4E0B\u5230\u53F3\u4E0A\u53D1\u6563 +Border-Style=\u8FB9\u6846\u6837\u5F0F +Sort=\u6392\u5E8F +Image-Image_Layout=\u56FE\u7247\u5E03\u5C40 +Panel=\u9762\u677F +FR-Designer-Basic_Copy_Build_NO_OK=\u6784\u5EFA\u7248\u672C\u53F7\u5DF2\u7ECF\u590D\u5236\u5230\u526A\u8D34\u677F +All_Border_Line=\u6240\u6709\u6846\u7EBF +FR-Utils-Please_Input_a_New_Name=\u8BF7\u8F93\u5165\u65B0\u7684\u540D\u5B57 +FR-Base_Formula_Plugin=\u63D2\u4EF6\u51FD\u6570 +Two_Rows_Of_Three_Grid=\u4E24\u884C\u4E09\u5217\u7684\u683C\u5B50 +FR-Designer_Certificate_Pass=https\u79D8\u94A5 +Bubble-Series_Name=\u7CFB\u5217\u540D +M-New_Multi_Report=\u65B0\u5EFA\u805A\u5408\u62A5\u8868(M) +BackgroundTexture-PinkTissuePaper=\u7C89\u8272\u7802\u7EB8 +Preference-Support_Default_Parent_Calculate=\u9ED8\u8BA4\u7236\u683C\u8BA1\u7B97 +Show_Blank_Column=\u8865\u5145\u7A7A\u767D\u5217 +BaiduMap=\u767E\u5EA6\u5730\u56FE +Report-Web_Attributes=\u6A21\u677FWeb\u5C5E\u6027 +FR-Designer_StyleAlignment-Wrap_Text=\u81EA\u52A8\u6362\u884C +Need=\u9700\u8981 +Parameter-Double=\u53CC\u7CBE\u5EA6\u578B +Config_Servlet=\u914D\u7F6E\u8FDC\u7A0B\u670D\u52A1\u5668 +Form-Comma=\u9017\u53F7 +Verify=\u6821\u9A8C +PageSetup-Landscape=\u6A2A\u5411 +Weeks=\u4E2A\u661F\u671F +FR-Designer-Widget-Style_Title_Background=\u6807\u9898\u80CC\u666F +Preference-Pagination_Line_Color=\u5206\u9875\u7EBF\u989C\u8272 +Test_URL=\u6D4B\u8BD5\u8FDE\u63A5 +Fill_blank_Data=\u8865\u5145\u7A7A\u767D\u6570\u636E +ReportServerP-The_name_of_printer_cannot_be_null=\u6253\u5370\u673A\u7684\u540D\u5B57\u4E0D\u80FD\u4E3A\u7A7A +FR-Designer-Basic_Copy_Activation_Key=\u53CC\u51FB\u8BBE\u8BA1\u5668\u7F16\u53F7\u53EF\u590D\u5236\u5230\u526A\u8D34\u677F +Continuum=\u76F8\u90BB\u8FDE\u7EED +BackgroundTexture-MediumWood=\u6DF1\u8272\u6728\u8D28 +Datasource-Column_Index=\u5217\u5E8F\u53F7 +Function-Function_File=\u51FD\u6570\u6587\u4EF6 +Form-Component_Bounds=\u63A7\u4EF6\u8FB9\u754C +Utils-Submit=\u63D0\u4EA4 +Conditions_formula=\u6761\u4EF6\u516C\u5F0F +M_Insert-Image=\u63D2\u5165\u56FE\u7247 +FR-Designer-Plugin_Will_Be_Delete=\u63D2\u4EF6\u5C06\u88AB\u5220\u9664\uFF0C\u9700\u91CD\u542F\u8BBE\u8BA1\u5668\u53CA\u670D\u52A1\u5668\uFF0C\u670D\u52A1\u5668\u9700\u624B\u52A8\u91CD\u542F +FormulaD-Functions=\u51FD\u6570 +Mobile_Terminal=\u79FB\u52A8\u7AEF +CheckBox=\u590D\u9009\u6846 +FR-Designer-Plugin_Install=\u5B89\u88C5 +Sun=\u65E5 +FR-Designer_ToolBar_Bottom=\u5E95\u90E8\u5DE5\u5177\u680F +Widget-Width=\u63A7\u4EF6\u5BBD\u5EA6 +Series_Name=\u7CFB\u5217\u540D +Set_Row_Title_Start=\u8BBE\u7F6E\u91CD\u590D\u6807\u9898\u884C +HF-Default_Page=\u9ED8\u8BA4\u9875 +Env_Des=\u5982\u679C\u767B\u5F55\u73AF\u5883\u4E2D\u7684\u62A5\u8868\u5DE5\u7A0B\u542F\u7528\u4E86\u6743\u9650,\u7528\u6237\u540D\u548C\u5BC6\u7801\u7684\u586B\u5199\u5FC5\u987B\u5BF9\u5E94\u767B\u9646\u73AF\u5883\u7684\u7528\u6237\u548C\u5BC6\u7801\u3002 +Widget-User_Defined=\u9884\u5B9A\u4E49 +Url_location=\u7EDD\u5BF9\u8DEF\u5F84 +Disk_File=\u78C1\u76D8\u6587\u4EF6 +Inside=\u5185\u90E8 +FR-Designer_filedChosen=\u4F9D\u8D56\u7684\u5B57\u6BB5 +ServerM-Predefined_Styles=\u9884\u5B9A\u4E49\u6837\u5F0F +is_need_word_adjust=\u4E0D\u56FA\u5B9A\u884C\u9AD8\u5BFC\u51FA +Background-Null=\u6CA1\u6709\u80CC\u666F +PageSetup-Vertically=\u5782\u76F4\u5C45\u4E2D +FR-Designer_Root=\u6839\u8282\u70B9 +FR-Designer_Form-TextArea=\u6587\u672C\u57DF +ReportServerP-Import_JavaScript=\u5F15\u7528JavaScript +Form-TableTree=\u8868\u683C\u6811 +Opened=\u5DF2\u5F00\u542F +M_Edit-Delete=\u5220\u9664(D) +Widget-Form_Widget_Container=\u8868\u5355\u5BB9\u5668 +BindColumn-Summary=\u6C47\u603B +Sche-Second=\u79D2 +Server-Open_Service_Manager=\u6253\u5F00\u670D\u52A1\u7BA1\u7406\u5668 +FRFont-Effects=\u7279\u6B8A\u6548\u679C +OtherGroup_Name=\u5176\u4ED6\u7EC4\u7684\u540D\u5B57 +Specify=\u6307\u5B9A +Highlight-Click_to_Choose_Property_To_Modify=\u70B9\u51FB\u9009\u62E9\u8981\u6539\u53D8\u7684\u5C5E\u6027 +triggered=\u88AB\u89E6\u53D1 +Double_Bottom_BorderLine=\u53CC\u5E95\u6846\u7EBF +M_Insert-Sub_Report=\u63D2\u5165\u5B50\u62A5\u8868 +Unit_Ten=\u5341 +Polybolck=\u805A\u5408\u5757 +Select_sort_order=\u9009\u62E9\u6392\u5217\u987A\u5E8F +HJS-Mail_to=\u6536\u4EF6\u4EBA +StyleAlignment-Left=\u9760\u5DE6 +Two_Rows_Of_Two_Grid=\u4E24\u884C\u4E24\u5217\u7684\u683C\u5B50 +FR-Designer-Form-Please_Drag_ParaPane=\u8BF7\u62D6\u5165\u53C2\u6570\u9762\u677F +Milliseconds=\u6BEB\u79D2 +DataFunction-None=\u65E0 +Delivery=\u4F20\u9012 +ColumnSpan=\u5217\u8DE8\u5EA6 +StyleAlignment-Bottom=\u9760\u4E0B +Read_failure=\u8BFB\u53D6\u5931\u8D25\uFF0C\u53EF\u80FD\u6E90\u6587\u4EF6\u5DF2\u635F\u574F +Verify-Verify=\u6570\u636E\u6821\u9A8C +FR-Designer-Widget-Style_Title_Format=\u6807\u9898\u683C\u5F0F +FR-Designer_Edit_String_To_Formula=\u662F\u5426\u5C06\u5B57\u7B26\u4E32\u7F16\u8F91\u4E3A\u516C\u5F0F +FR-Base_UnSignIn=\ \u672A\u767B\u5F55 +Every=\u6BCF +CellWrite-Preview_Cell_Content=\u9884\u89C8\u5355\u5143\u683C\u5185\u5BB9 +FormulaD-Data_Fields=\u6570\u636E\u9879 \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index 92897929ae..674a95f90e 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -508,7 +508,6 @@ FR-Designer_Create_Tree=\u69CB\u5EFA\u6A39 FR-Designer_Set_Callback_Function=\u8A2D\u7F6E\u56DE\u8ABF\u51FD\u6578 FR-Designer_ConfirmDialog_Content=\u662F\u5426\u78BA\u5B9A\u522A\u9664TAB\u63A7\u4EF6 FR-Designer_ConfirmDialog_Title=FineReport 8.0 - FR-Designer_FormulaPane_Tips=\u63D0\u793A\:\u60A8\u53EF\u4EE5\u901A\u904E\u8F38\u5165B1\u4F86\u5BEB\u5165\u7B2C\u4E00\u5217\u7B2C\u4E8C\u6B04\u7684\u8CC7\u6599\u3002 FR-Designer_FormulaPane_Variables=\u8B8A\u91CF FR-Designer_FormulaPane_Formula_Description=\u516C\u5F0F\u8AAA\u660E @@ -517,13 +516,11 @@ FR-Designer_FormulaPane_Search=\u641C\u7D22 FR-Designer_Tab_carousel=Tab\u8F2A\u64AD FR-Designer_setCarousel=\u958B\u555F\u8F2A\u64AD FR-Designer_carouselInterval=\u8F2A\u64AD\u9593\u9694 - FR-Designer_ClassName_panel=\u985E\u540D FR-Designer_Description_panel=\u63CF\u8FF0 FR-Designer_Edit_panel=\u7DE8\u8F2F FR-Designer_Property_panel=\u5C6C\u6027 FR-Designer_Select_panel=\u9078\u64C7 - FR-Designer_LayoutTable_Column_Width=160 FR-Designer_Set_BG_Of_Current_Row=\u586B\u5831\u7576\u524D\u7DE8\u8F2F\u5217\u80CC\u666F\u8A2D\u5B9A FR-Designer_Unload_Check=\u672A\u63D0\u4EA4\u96E2\u958B\u63D0\u793A @@ -539,7 +536,6 @@ FR-Designer_PageSetup_Page=\u9801\u9762 FR-Designer_Custom_Job_Description=\u63CF\u8FF0 FR-Designer_Property=\u5C6C\u6027 FR-Designer_ClassName=\u985E\u540D - FR-Designer_Polyblock_Edit=\u805A\u5408\u584A\u7DE8\u8F2F FR-Designer_Function_Description_Area_Text=\u8A72\u985E\u5FC5\u9808\u7E7C\u627F"com.fr.script.AbstractFunction"\u3002\u61C9\u5C07\u7DE8\u8B6F\u5F8C\u7684\u985E\u6A94\u6848\u62F7\u8C9D\u5230\nJ2EE\u4F3A\u670D\u5668 "{R1}" \u76EE\u9304\uFF0C\u5982\u679C\u5FC5\u8981\u7684\u8A71\u5C07class\u5C0D\u61C9\u7684java\u539F\u59CB\u6A94\u6848\u4E5F\u653E\u7F6E\u5230\u8A72\u76EE\u9304\u4E0B\u65B9\u4FBF\u7DE8\u8F2F\u548C\u67E5\u770B\u3002\n\u4F8B\u5982\uFF1A{R2} FR-Designer_PageSetup_Horizontal=\u6A2A\u5411 @@ -600,3 +596,1390 @@ FR-Designer_Delete_Template= FR-Designer_Download_Template= FR-Designer_DoubleLayer_Report= FR-Designer_Validate= +CellWrite-InsertRow_NULL=\u7A7A\u503C +DashBoard-ChartFloat=\u5716\u8868 +contact_info=\u806F\u7E6B\u8A0A\u606F(\u9078\u586B) +Page_Setup=\u9801\u9762\u8A2D\u5B9A +CellWrite-Print_Export=\u5217\u5370\u532F\u51FA +Cannot_Get_Date=\u4E0D\u80FD\u7372\u53D6\u65E5\u671F +FR-Designer_Modify=\u4FEE\u6539 +M-Write_Preview=\u586B\u5831\u9810\u89BD +FR-Base_RWA-Key=\u4E3B\u9375 +China=\u4E2D\u570B +Set_Legend_Sytle=\u8A2D\u5B9A\u5716\u4F8B\u683C\u5F0F +FR-Designer_Number=\u6578\u5B57 +FR-Designer-Widget-Style_Common=\u666E\u901A +M-Save_As=\u53E6\u5B58\u70BA +Following_parameters_are_not_generated=\u4EE5\u4E0B\u53C3\u6578\u672A\u751F\u6210 +FR-Designer-Basic_Activation_Key_Copy_OK=Key has been copy to clipboard +Utils-Current_Sheet=\u7576\u524D\u7684Sheet +ConditionB-is_less_than=\u5C0F\u65BC +BorderLayout-West=\u897F +AnalysisLine=\u5206\u6790\u7DDA\u578B +Layer_Report_Warnning_info=\u5217\u5F0F\u5F15\u64CE\u9069\u7528\u65BC\u5927\u8CC7\u6599\u91CF\u60C5\u5F62\u4E0B\u3002
\u4F7F\u7528\u6B64\u5F15\u64CE\u5F88\u591A\u5831\u8868\u7279\u6027\u5C07\u4E0D\u518D\u652F\u6301\uFF0C
\u8A73\u7D30\u5167\u5BB9\u8ACB\u898B\u76F8\u95DC\u6587\u6A94\u3002 +Tree-Width=\u5BEC\u5EA6 +alert_word=\u9078\u64C7\u4E0D\u56FA\u5B9A\u5217\u9AD8\u532F\u51FA\u6642, \u7DE8\u8F2F\u532F\u51FA\u7684word, \u5132\u5B58\u683C\u5217\u9AD8\u6703\u96A8\u8457\u5167\u5BB9\u81EA\u52D5\u62C9\u4F38, \u6B64\u60C5\u6CC1\u4E0B\u532F\u51FA\u7D50\u679C\u8207\u9810\u89BD\u7D50\u679C\u53EF\u80FD\u6703\u4E0D\u518D\u4E00\u81F4. +PageSetup-Paper_Size=\u7D19\u5F35\u5927\u5C0F +M-Page_Setup=\u9801\u9762\u8A2D\u5B9A +DashBoard-FormBook=\u8868\u55AE +X-Coordinate=\u6A6B\u5EA7\u6A19 +Style-Line_Spacing=\u5217\u9593\u8DDD +FR-Designer_Plugin_Should_Update_Title=Warning +Server-Define_Data_Connection=\u5B9A\u7FA9\u8CC7\u6599\u9023\u63A5 +BarInside=\u67F1\u5B50\u5167\u5074 +Border-Color=\u6846\u7DDA\u984F\u8272 +NotAllow=\u4E0D\u5408\u6CD5 +Utils-File_type=\u6A94\u6848\u985E\u578B +FR-Designer-Plugin_Install_From_Local=Install plugin from local file +Summary_Method=\u532F\u7E3D\u65B9\u5F0F +Select_Specified_Grouping=\u9078\u64C7\u81EA\u5B9A\u7FA9\u5206\u7D44 +HF-Number_of_Page=\u7E3D\u9801\u6578 +FR-Designer-Tree_Height=\u9AD8\u5EA6 +Owner=\u4E3B +Home=\u4E3B\u9801 +FR-Server_Embedded_Server_Stop=\u5167\u7F6E\u7684\u4F3A\u670D\u5668-\u505C\u6B62 +FR-Designer-Plugin_Detecting_Update=Detecting update +HF-Whether_to_define_the_selected_type=\u662F\u5426\u5B9A\u7FA9\u9078\u4E2D\u7684\u985E\u578B +StyleAlignment-Right=\u9760\u53F3\u5C0D\u9F4A +FR-Designer_Alignment-Style=\u5C0D\u9F4A\u65B9\u5F0F +PageSetup-Title_Start_Column=\u91CD\u8907\u6A19\u984C\u6B04 +Tree-Mutiple_Selection_Or_Not=\u591A\u9078 +FR-Designer-Plugin_Search=Search +Choose_Role=\u6B0A\u9650\u63A7\u5236 +Append_Delete_Row_Message=\u6CE8\u610F\uFF01\u6307\u5B9A\u7684\u5132\u5B58\u683C\u9700\u8981\u8A2D\u5B9A\u64F4\u5C55\u5C6C\u6027 +Form-ComboBox=\u4E0B\u62C9\u6846 +PageSetup-Footer=\u9801\u5C3E +Sorting=\u6392\u5E8F\u4E2D +DBCP_TEST_WHILE_IDLE=\u958B\u555F\u7A7A\u9591\u56DE\u6536\u5668\u6AA2\u9A57 +DS-Embedded_TableData=\u5167\u7F6E\u8CC7\u6599\u96C6 +FR-Designer_No-Privilege=\u6C92\u6709\u6B0A\u9650 +FRFont-Subscript=\u4E0B\u6A19 +Background_Settings=\u80CC\u666F\u8A2D\u5B9A +FormulaD-Invalid_Formula=\u975E\u6CD5\u7684\u516C\u5F0F +FR-Base_Margin=\u908A\u8DDD +FR-Designer-Plugin_Shop_Installed=\u63D2\u4EF6\u5546\u5E97\u5B89\u88DD\u5B8C\u7562,\u662F\u5426\u7ACB\u523B\u555F\u52D5? +M_Edit-Send_to_Back=\u7F6E\u65BC\u5E95\u5C64(K) +Email-Can_Preview_Report_Content=\u6B63\u6587\u9810\u89BD\u5831\u8868\u5167\u5BB9 +FR-Designer-FRFont_Italic=\u659C\u9AD4 +CellWrite-Print_Background=\u5217\u5370/\u532F\u51FA\u5132\u5B58\u683C\u80CC\u666F +Wizard=\u56AE\u5C0E +Preference-Is_Drag_Permited=\u652F\u6301\u62D6\u62FD +FR-Designer_Release_Lock=\u89E3\u9396 +Form-Delimiter=\u5206\u9694\u7B26 +wrong=\u51FA\u932F\u4E86 +FR-Menu-Server_Chart_PreStyle=\u9810\u5B9A\u7FA9\u5716\u8868 +Form-Button=\u6309\u9215 +FormulaD-Valid_Formula=\u5408\u6CD5\u7684\u516C\u5F0F +ParameterD-Parameter_Interface=\u53C3\u6578\u754C\u9762 +At_least_one_visual_worksheet=\u5DE5\u4F5C\u7C3F\u4E2D\u81F3\u5C11\u8981\u6709\u4E00\u5F35\u53EF\u8996\u5316\u5DE5\u4F5C\u8868,\u5982\u679C\u60F3\u8981\u522A\u9664\uFF0C\u8ACB\u5148\u63D2\u5165\u4E00\u5F35\u65B0\u5DE5\u4F5C\u8868 +Need_Min_Value=\u9700\u8981\u6700\u5C0F\u503C +Allow_Blank=\u5141\u8A31\u70BA\u7A7A\u767D +CellWrite-InsertRow_DEFAULT=\u9810\u8A2D\u503C +Widget-Load_By_Complete=\u5B8C\u5168\u8F09\u5165 +FR-Designer-Basic_Only_Submit_Current_Sheet= +Sort-Sort_Order=\u6392\u5217\u9806\u5E8F +File-File_Size_Limit=\u6A94\u6848\u5927\u5C0F\u9650\u5236 +PrintP-Print=\u5217\u5370(T) +FR-Designer-StyleAlignment_Center=\u7F6E\u4E2D +Preference-Setting_Colors=\u984F\u8272\u914D\u7F6E +Judge=\u5224\u65B7 +Image-Adjust=\u9069\u61C9 +Collect-User_Information_DES=\u7528\u6236\u8A0A\u606F\u78BC\u53EA\u662F\u7528\u4F86\u6536\u96C6\u4F7F\u7528\u8005\u8A0A\u606F\u7684\uFF0C\u53EA\u8981\u9EDE\u64CA\u4E0A\u9762\u7684"\u7372\u53D6\u7528\u6236\u8A0A\u606F\u78BC"\u6309\u9215\uFF0C\u5C31\u6703\u5F48\u51FA\u4E00\u500B\u65B0\u7684\u700F\u89BD\u5668\u7A97\u9AD4\uFF0C\u767B\u9304\u5230\u7522\u54C1\u5B98\u65B9\u7DB2\u7AD9\u7372\u5F97\u9019\u500B\u7528\u6236\u8A0A\u606F\u78BC\uFF0C\u6574\u500B\u7A0B\u5E8F\u53EA\u9700\u89813\u5206\u9418\uFF0C\u53EA\u9700\u8981\u64CD\u4F5C\u4E00\u6B21\uFF0C\u800C\u4E14\u5B8C\u5168\u514D\u8CBB\u3002 +FR-Designer_Plugin_Normal_Update_From_Local=Update from local file +BackgroundTexture-Canvas=\u756B\u5E03 +BarOutSide=\u67F1\u5B50\u5916\u5074 +Preview_ToolTips=\u9810\u89BD\u63D0\u793A +FRFont-Family=\u540D\u5B57 +FR-Lic_does_not_Support_Remote=\u60A8\u7576\u524D\u4F7F\u7528\u7684lic\u4E0D\u652F\u6301\u9060\u7A0B\u8A2D\u8A08\u529F\u80FD\uFF0C\u8ACB\u5347\u7D1A\u60A8\u7684lic +InterfaceStyle=\u98A8\u683C +RWA-Key=\u4E3B\u9375 +WF-Name=\u540D\u7A31 +RWA-Click_Cell_To_Edit_Value=\u55AE\u64CA\u6A21\u677F\u5132\u5B58\u683C\u4FEE\u6539\u503C +Utils-Row_Height=\u5217\u9AD8 +ReportD-Excel_Export=\u5831\u8868\u532F\u51FA\u5C6C\u6027 +Form-Please_Select_A_Kind_Of_Form_Container=\u8ACB\u9078\u64C7\u4E00\u7A2E\u8868\u55AE\u5BB9\u5668 +Column_Does_Not_Exsit=\u6B04\u4E0D\u5B58\u5728 +M_Insert-Hyperlink=\u8D85\u7D1A\u93C8\u63A5 +can_not_include_underline=\u4E0D\u80FD\u5305\u542B"_" +FR-Designer-Plugin_Jar_Expired=Jar\u5305\u904E\u820A +FR-Background_Image_Extend=\u62C9\u4F38 +TopDownShade=\u4E0A\u4E0B\u6F38\u8B8A +FR-Base_Right=\u53F3 +DataBinding=\u8CC7\u6599\u7D81\u5B9A +ConnectionPool_Attr=\u9023\u63A5\u6C60\u5C6C\u6027 +Connect_SQL_Cannot_Null=\u8CC7\u6599\u9023\u63A5\u548CSQL\u9762\u677F\u4E0D\u80FD\u70BA\u7A7A +DBCP_MAX_ACTIVE=\u6700\u5927\u6D3B\u52D5\u9023\u63A5\u6578 +M_Window-Preference=\u9078\u9805 +ToolBar_Top=\u9802\u90E8\u5DE5\u5177\u6B04 +FR-Designer_Indent-Pixel=\u50CF\u7D20 +FR-Designer_Unit_MM=\u516C\u5398 +IDLE=\u7A7A\u9592 +FRFont-Underline=\u4E0B\u5283\u7DAB +FR-Designer-Plugin_Read_Plugin_List_Error=Error to read plugin list +Type_Set=\u985E\u578B\u8A2D\u5B9A +M_Format_A-Cell_Attributes=\u5176\u4ED6\u5C6C\u6027 +CellWrite-Show_As_Image=\u7528\u5716\u7247\u986F\u793A\u5167\u5BB9 +ShowAsDownload=\u7528\u4E0B\u8F09\u93C8\u63A5\u986F\u793A\u4E8C\u9032\u5236\u5167\u5BB9 +Form-ComboCheckBox=\u4E0B\u62C9\u8907\u9078\u6846 +BackgroundTexture-WovenMat=\u7DE8\u7E54\u7269 +BindColumn-Custom_Data_Appearance=\u81EA\u5B9A\u7FA9\u986F\u793A +Actived=\u6D3B\u52D5\u7684 +Env-Local_Directory=\u672C\u6A5F\u76EE\u9304 +Form-Colon=\u5192\u865F +Preference-Vertical_Scroll_Bar_Visible=\u8C4E\u76F4\u6EFE\u52D5\u689D\u53EF\u898B +Utils-Show_Cell_Value=\u986F\u793A\u5132\u5B58\u683C\u503C +FR-Designer_ReportColumns-Repeat_Row=\u8907\u88FD\u5217\u5E8F\u6B04 +SpecifiedG-Specified_Group=\u81EA\u5B9A\u7FA9\u5206\u7D44 +RWA-Smart_Add_Cells=\u667A\u80FD\u65B0\u589E\u5132\u5B58\u683C +HF-Left_Section=\u5DE6\u5340\u57DF +M_Report-Report_Background=\u5831\u8868\u80CC\u666F +Image-Extend=\u62C9\u4F38 +FS_BI=\u6C7A\u7B56\u5E73\u81FA +ToolBar_Bottom=\u5E95\u90E8\u5DE5\u5177\u6B04 +Hgap=\u6C34\u5E73\u9593\u9699 +FR-Designer_Enter-New-FileName=\u8ACB\u8F38\u5165\u65B0\u7684\u6A94\u6848\u540D +Verify_Fail=\u6821\u9A57\u5931\u6557 +CellWrite-InsertRow_Policy=\u63D2\u5165\u5217\u7B56\u7565 +FR-Designer-Plugin_Illegal_Plugin_Zip=Illegal plugin zip +RCodeVersion=\u7248\u672C +Convert=\u8F49\u63DB +Please_Drag=\u8ACB\u62D6\u5165\u5217\u6B04\u6B04\u4F4D\u3001\u532F\u7E3D\u6B04\u4F4D +FR-Designer-Widget-Style_Preview=\u9810\u89BD +mobile_number=\u624B\u6A5F\u865F\u78BC +FR-Designer_Form-ComboCheckBox=\u4E0B\u62C9\u8907\u9078\u6846 +CacheValidateTime=\u5831\u8868\u7DE9\u5B58\u6709\u6548\u6642\u9593 +Hyperlink-Extends_Report_Parameters=\u7E7C\u627F\u5831\u8868\u7684\u53C3\u6578 +FR-Designer_Values-Editor=\u503C\u7DE8\u8F2F\u5668 +Export-Excel=Excel\u683C\u5F0F +Utils-Left_to_Right=\u6A6B\u5411 +ExpandD-Vertical_Extendable=\u7E31\u5411\u53EF\u4F38\u5C55 +Utils-Report_Runtime_Env=\u5831\u8868\u5DE5\u4F5C\u76EE\u9304 +Utils-Right_to_Left=\u5F9E\u53F3\u5230\u5DE6 +Utils-Beyond_the_top_side_of_Border=\u8D85\u51FA\u4E0A\u908A\u754C +Exception_StackTrace=\u932F\u8AA4\u7570\u5E38\u5806\u68E7\u8A0A\u606F +Corresponding_Fields=\u5C0D\u61C9\u6B04\u4F4D +Form-CheckBox=\u5FA9\u9078\u6846 +Utils-Current_Row=\u7576\u524D\u5217 +BuildIn=\u5167\u7F6E +BindColumn-Results_Filter=\u7D50\u679C\u96C6\u7BE9\u9078 +FR-Designer-Plugin_Manager=\u63D2\u4EF6\u7BA1\u7406 +M_File-Export-CSV=CSV\u683C\u5F0F(\u9017\u865F\u5206\u9694) +Data_Filter=\u8CC7\u6599\u7BE9\u9078 +ReportServerP-Edit_Printer=\u7DE8\u8F2F\u5370\u8868\u6A5F +FR-Designer_Datasource-Stored_Procedure=\u5B58\u5132\u7A0B\u5E8F +RESTART=\u91CD\u5553 +FormulaD-Function_name=\u51FD\u6578\u540D +ChooseOneButton=\u8ACB\u9078\u64C7\u4E00\u500B\u63A7\u5236\u9805\u5F8C\u518D\u65B0\u589E +Priority=\u512A\u5148\u7D1A +Datasource-Datasource=\u8CC7\u6599\u6E90 +FR-Designer_Width=\u5BEC +Cannot-Add_To_This_Area=\u7121\u6CD5\u65B0\u589E\u5230\u8A72\u5340\u57DF +Run=\u904B\u884C +Set_Submit_Condition=\u8A2D\u5B9A\u63D0\u4EA4\u689D\u4EF6 +FR-Base_Value=\u503C +fileLocked_undeleted=\u6A21\u677F\u88AB\u9396\u5B9A\uFF0C\u4E0D\u80FD\u522A\u9664\uFF01\u9EDE\u64CA\u78BA\u5B9A\uFF0C\u91CD\u65B0\u6574\u7406\u6A21\u677F\u6B04\u8868 +Web_Apply=WEB\u61C9\u7528 +Refresh_Database=\u91CD\u65B0\u6574\u7406\u8CC7\u6599\u5EAB +Set_Row_Title_End=\u8A2D\u5B9A\u91CD\u8907\u7D50\u5C3E\u5217 +FR-Utils-New_Folder=\u65B0\u589E\u8CC7\u6599\u593E +BiasD-From-upper_left_to_lower_right=\u5F9E\u5DE6\u4E0A\u5230\u53F3\u4E0B\u767C\u6563 +CapsLock=\u5927\u5BEB\u9396\u5B9A\u5DF2\u6253\u958B +StyleFormat-Sample=\u793A\u4F8B +RWA-Smart_Add_Cell_Group=\u667A\u80FD\u65B0\u589E\u5132\u5B58\u683C\u7D44 +MConfig-CancelButton=\u53D6\u6D88 +Function-Choose_Function_Class=\u9078\u64C7\u51FD\u6578\u985E +LatLng=\u7D93\u7DEF\u5EA6 +DS-Server_TableData=\u4F3A\u670D\u5668\u8CC7\u6599\u96C6 +BackgroundTexture-GreenMarble=\u7DA0\u8272\u5927\u7406\u77F3 +read_time_out=\u52A0\u8F09\u8D85\u6642 +JavaScript-Commit_to_Database=\u63D0\u4EA4\u5165\u5EAB +DS-Relation_TableData=\u95DC\u806F\u8CC7\u6599\u96C6 +CellWrite-Page_Before_Row=\u5217\u524D\u5206\u9801 +FR-Designer-Plugin_Load_Plugins_From_Server=Loading plugins from store +D-Dispaly_Divide_Result_Set_into_Groups=\u5C07\u7D50\u679C\u96C6\u9032\u884C\u5206\u7D44 +Closed=\u5DF2\u95DC\u9589 +RWA-Help=\u8A2D\u5B9A\u672A\u4FEE\u6539\u4E0D\u66F4\u65B0\u5F8C\uFF0C\u586B\u5831\u9810\u89BD\u5831\u8868\uFF0C\u8A18\u9304\u6240\u5728\u5132\u5B58\u683C\u6C92\u6709\u88AB\u7DE8\u8F2F\u4FEE\u6539\uFF0C\u5247\u6B64\u8A18\u9304\u4E0D\u6703\u9032\u884C\u66F4\u65B0\uFF1B\n\u5728\u5927\u8CC7\u6599\u91CF\u8A18\u9304\u67E5\u8A62\u4E26\u56DE\u586B\u60C5\u6CC1\u4E0B\uFF0C\u555F\u7528\u8A72\u8A2D\u5B9A\uFF0C\u53EF\u4EE5\u63D0\u9AD8\u586B\u5831\u63D0\u4EA4\u6027\u80FD\u3002 +FR-Designer-Widget-Style_Custom=\u81EA\u5B9A\u7FA9 +FR-Designer-Widget-Style_Render_Style=\u6E32\u67D3\u98A8\u683C +Highlight-Barcode=\u689D\u78BC +FR-Designer_Connect_SQL_Cannot_Null=\u8CC7\u6599\u9023\u63A5\u548CSQL\u9762\u677F\u4E0D\u80FD\u70BA\u7A7A +trigger=\u89F8\u767C +M-Data_Analysis=\u8CC7\u6599\u5206\u6790 +Function-The_selected_file_cannot_be_null=\u6A94\u6848\u4E0D\u80FD\u70BA\u7A7A +No-Privilege=\u6C92\u6709\u6B0A\u9650 +ReportColumns-Repeat_Column=\u91CD\u8907\u6B04\u5E8F\u6B04 +SecondGraduationUnit=\u6B21\u8981\u523B\u5EA6\u55AE\u4F4D +Form-Widget_Property_Value=\u5C6C\u6027\u503C +GIVE-NAME=Give Name +FR-Designer_Rename=\u91CD\u547D\u540D +Utils-Merge_Cell=\u5408\u5E76\u5132\u5B58\u683C +Style-Spacing_After=\u6BB5\u5F8C +Enlarge_Or_Reduce=\u7E2E\u653E +Tree-Height=\u9AD8\u5EA6 +RCodeErrorCorrect=\u7CFE\u932F +Enter-New-FileName=\u8ACB\u8F38\u5165\u65B0\u7684\u6A94\u6848\u540D +try_resending=\u8ACB\u5617\u8A66\u91CD\u65B0\u767C\u9001 +M-Open_Report=\u958B\u555F\u820A\u6A94 +Please_Select=\u8ACB\u9078\u64C7 +InRow=\u5217(R) +Form-TextArea=\u6587\u672C\u57DF +FR-Designer_Https_Enable=\u555F\u7528https +Widget-Custom_Widget_Config=\u81EA\u5B9A\u7FA9\u63A7\u5236\u9805 +already_exists=\u5DF2\u7D93\u5B58\u5728 +Original_Marked_Filed=\u539F\u59CB\u6A19\u8A18\u6B04\u4F4D +BackgroundTexture-Sand=\u6C99\u7058 +Values=\u503C +Not_use_a_cell_attribute_table_editing=\u60A8\u4E0D\u53EF\u4EE5\u7528\u5132\u5B58\u683C\u5C6C\u6027\u8868\u7DE8\u8F2F +Root=\u6839\u7BC0\u9EDE +cycle=\u5468\u671F +open-new-form-tip=\u7576\u524D\u6A21\u677F\u70BA711\u4EE5\u4E0B\u7248\u672C\u88FD\u4F5C, \u7121\u6CD5\u517C\u5BB9, \u4E0D\u80FD\u6253\u958B. \u5047\u5982\u60F3\u6253\u958B\u4FEE\u6539\u6B64\u8868\u55AE, \u8ACB\u4F7F\u7528\u5C0D\u61C9\u7248\u672C\u8A2D\u8A08\u5668\u6253\u958B. +Support-Current_Auto_Complete_Shortcut=Current Shortcut +GROUPING_MODE=\u666E\u901A\u5206\u7D44 +DBCP_MAX_IDLE=\u6700\u5927\u7A7A\u9591\u9023\u63A5\u6578 +BackgroundTexture-BlueTissuePaper=\u85CD\u8272\u7802\u7D19 +ReportD-Export_Hided_Row=\u532F\u51FA\u96B1\u85CF\u5217 +FR-Custom_styles_lost=\u81EA\u5B9A\u7FA9\u6A23\u5F0F\u5DF2\u4E1F\u5931 +Env-Des2=Servlet\u4F4D\u7F6E\u662F\u4E3B\u6A5F\u540D\uFF0C\u57E0\uFF0CWEB\u61C9\u7528\uFF0CServlet\u7684\u7D44\u5408\uFF0C\u5B83\u61C9\u7576\u6307\u5411\u4E00\u500BServlet\uFF0C\u6BD4\u5982"http\://localhost\:8080/WebReport/ReportServer"\u3002\u60A8\u53EF\u4EE5\u9078\u64C7\u586B\u5BEB\u4E3B\u6A5F\u540D\uFF0C\u57E0\uFF0CWEB\u61C9\u7528\uFF0CServlet\uFF0C\u5B83\u6703\u81EA\u52D5\u751F\u6210\u60A8\u6240\u9700\u8981\u7684Servlet\u4F4D\u7F6E\u3002 +Env-Des1=\u8ACB\u9078\u64C7\u5831\u8868\u4F3A\u670D\u5668\u6240\u5728\u7684WEB-INF\u76EE\u9304 +PageSetup-Placement_Center_on_Page=\u7F6E\u4E2D\u65B9\u5F0F +sure_to_delete=\u78BA\u8A8D\u522A\u9664 +Already_exists_not_add_repeat=\u5DF2\u7D93\u5B58\u5728\uFF0C\u8ACB\u4E0D\u8981\u91CD\u8907\u65B0\u589E +Axis_Title=\u8EF8\u6A19\u984C +FR-Designer-Plugin_Install_Failed=Install failed +FR-Designer-Widget-Style_Frame=\u6846\u67B6 +MainGraduationUnit=\u4E3B\u8981\u523B\u5EA6\u55AE\u4F4D +Second_Axis=\u6B21\u5750\u6A19\u8EF8 +Classifier-Ge=\u500B +MSBold=\u5FAE\u8EDF\u96C5\u9ED1 +Form-Design_Size=\u8A2D\u8A08\u5C3A\u5BF8 +FR-App-Template_Save=\u5132\u5B58 +ExpandD-Horizontal_Extendable=\u6A6B\u5411\u53EF\u4F38\u5C55 +RP_Authority_Edit=\u6B0A\u9650\u7DE8\u8F2F +Warnning=\u63D0\u9192 +RoleName_Can_Not_Be_Null=\u89D2\u8272\u540D\u4E0D\u5141\u8A31\u70BA\u7A7A\u4E14\u4E0D\u80FD\u91CD\u8907 +Application=\u61C9\u7528\u7A0B\u5F0F +Formula_Dictionary_Display_Examples_Html= +ECP-error_pwd=\u5BC6\u78BC\u932F\u8AA4 +FR-Hyperlink_ChartHyperlink=\u5716\u8868\u8D85\u93C8 +M_Edit-FormatBrush=\u8907\u88FD\u683C\u5F0F(B) +Indent-Pixel=\u50CF\u7D20 +FR-Designer-Widget-Style_Border_Line=\u6846\u7DDA\u7C97\u7D30 +Widget-Default_Widget_Config=\u57FA\u672C\u63A7\u5236\u9805 +Version-does-not-support=\u60A8\u7576\u524D\u4F7F\u7528\u7684lic\u4E0D\u652F\u6301\u9060\u7A0B\u8A2D\u8A08\u529F\u80FD\uFF0C\u8ACB\u5347\u7D1A\u60A8\u7684lic +StyleAlignment-Right_To_Left=\u5F9E\u53F3\u5411\u5DE6 +Style-Spacing_Before=\u6BB5\u524D +Has_Existed=\u5DF2\u7D93\u5B58\u5728 +FR-Designer_DisplayNothingBeforeQuery=\u9EDE\u6483\u67E5\u8A62\u524D\u4E15\u986F\u793A\u68CA\u4ED6\u5167\u84C9 +Still=\u4ECD\u7136 +JS_WARNING2=\ \u4F8B\uFF1Ahttp\://localhost\:8075/WebReport/demo.js +JS_WARNING1=\ \u76F8\u5C0D\u5831\u8868\u5DE5\u7A0B\u76EE\u9304\u5982WebReport,\u5982WebReport\\js\u4E0B\u6709\u5F15\u7528\u7684js\u6A94\u6848test.js\uFF0C\u5247\u76F8\u5C0D\u8DEF\u5F91\u70BAjs/test.js +Connectionline=\u9023\u7DDA\u6A21\u5F0F +Utils-Insert_Record=\u63D2\u5165\u8A18\u9304 +Set-Parameter-Name=\u8ACB\u5148\u8A2D\u5B9A\u53C3\u6578\u540D +More-information=\u66F4\u591A\u8A0A\u606F +Parameter-Boolean=\u5E03\u723E\u578B +FRFont-Strikethrough=\u522A\u9664\u7DDA +Server-version-tip=\u60A8\u7576\u524D\u9023\u63A5\u7684\u4F3A\u670D\u5668\u7248\u672C\u4F4E\u65BC\u60A8\u4F7F\u7528\u7684\u8A2D\u8A08\u5668\u7248\u672C\u865F\uFF0C\u7E7C\u7E8C\u9023\u63A5\uFF0C\u60A8\u7DE8\u8F2F\u7684\u4E00\u4E9B\u5C6C\u6027\u53EF\u80FD\u7121\u6CD5\u6709\u6548\u5132\u5B58\u3002\u5047\u5982\u9700\u8981\u9023\u63A5\u8ACB\u5C07\u60A8\u7684\u8A2D\u8A08\u5668\u7248\u672C\u8207\u4F3A\u670D\u5668\u7248\u672C\u4FDD\u6301\u4E00\u81F4 +Form-All_Files=\u5168\u90E8\u6A94\u6848 +DBCP_NUM_TEST_PER_EVCTION_RUN=\u7A7A\u9591\u93C8\u63A5\u56DE\u6536\u6AA2\u67E5\u6578 +FR-Designer-FRFont_Family=\u540D\u5B57 +Device=\u8A2D\u5099 +M_Insert-Cell=\u5132\u5B58\u683C\u5143\u7D20 +Present-Formula_Present=\u516C\u5F0F\u6A21\u5F0F +FRFont-Superscript=\u4E0A\u6A19 +CellWrite-Page_Before_Column=\u6B04\u524D\u5206\u9801 +Golden=\u91D1\u8272 +Preference-Support_Cell_Editor_Definition=\u652F\u6301\u5132\u5B58\u683C\u7DE8\u8F2F\u5668 +M-Page_Preview=\u5206\u9801\u9810\u89BD +HJS-CC_to=\u6284\u9001 +Tree-Select_Leaf_Only=\u53EA\u8FD4\u56DE\u8449\u5B50\u7BC0\u9EDE +Pointer-A-Tick-Order=\u6307\u91DD\u503C\u53CA\u523B\u5EA6\u503C\u6578\u91CF\u7D1A +Pink=\u7C89\u7D05 +StyleAlignment-Distibuted=\u5206\u6563\u5C0D\u9F4A +Odd=\u5947\u6578 +already-saved=\u5DF2\u7D93\u5132\u5B58 +FR-Hyperlink_Chart_Cell=\u5716\u8868\u8D85\u93C8-\u806F\u52D5\u5132\u5B58\u683C +Style-Left_Indent=\u5DE6\u7E2E\u9032 +Offline=\u96E2\u7DDA +Form-Hierarchy_Tree_Next=\u4E0B\u4E00\u500B +Needle=\u6307\u91DD +GoogleMap=\u8C37\u6B4C\u5730\u5716 +Running=\u904B\u884C\u4E2D +M_Edit-Unmerge_Cell=\u53D6\u6D88\u5408\u4F75\u5132\u5B58\u683C +Out_Border_Line=\u5916\u5074\u6846\u7DDA +Style-Spacing=\u9593\u8DDD +FR-Utils_Submit=\u63D0\u4EA4 +ReportServerP-Previous=\u4E0A\u4E00\u9801 +StyleAlignment-Text_Style=\u6587\u672C\u63A7\u5236 +RelatedChart=\u5716\u8868\u806F\u52D5 +ProcessManager=\u6D41\u7A0B\u7BA1\u7406 +Cancel_Repeat_Attributes=\u53D6\u6D88\u91CD\u8907\u5217\u6B04 +FR-App-File_Message=\u8A0A\u606F +Datasource-Stored_Procedure=\u5132\u5B58\u7A0B\u5E8F +RWA-Row_Offset=\u5217\u504F\u79FB +M_Format-Style=\u6A23\u5F0F +detail_description=\u8A73\u7D30\u63CF\u8FF0 +FR-Designer-Widget-Style_Title_Content=\u6A19\u984C\u5167\u5BB9 +ParameterD-Report_Parameter=\u6A21\u7D44\u53C3\u6578 +HF-Edit_Header=\u7DE8\u8F2F\u9801\u9996 +Sytle-FRFont=\u5B57\u9AD4 +FR-Designer_Finish_Export=\u532F\u51FA\u5B8C\u7562 +MultiFileUpload=\u591A\u6A94\u6848\u4E0A\u50B3 +HF-Page_Number=\u9801\u78BC +Style-Right_Indent=\u53F3\u7E2E\u9032 +Desktop=\u684C\u9762 +FR-Server-All_Error=\u932F\u8AA4 +ConditionB-Operator=\u64CD\u4F5C +Today=\u4ECA\u5929 +Form-Widget_Name=\u63A7\u5236\u9805\u540D +Covered_All=\u5168\u90E8\u8986\u84CB +Day=\u5929 +External=\u5916\u90E8 +Black_Font=\u9ED1\u9AD4 +LOG-Report_Server_IS_Started=\u5831\u8868\u4F3A\u670D\u5668\u5DF2\u555F\u52D5 +Tips\:You_Can_Input_B1_To_Input_The_Data_Of_The_First_Row_Second_Column=\u63D0\u793A\:\u60A8\u53EF\u4EE5\u901A\u904E\u8F38\u5165B1\u4F86\u5BEB\u5165\u7B2C\u4E00\u5217\u7B2C\u4E8C\u6B04\u7684\u8CC7\u6599\u3002 +FR-Designer_ChooseOneButton=\u8ACB\u9078\u64C7\u4E00\u500B\u63A7\u5236\u9805\u5F8C\u518D\u65B0\u589E +Widget-Sizing=\u5927\u5C0F\u8ABF\u6574 +NO_Border_Line=\u7121\u6846\u7DDA +Cell_Data=\u5132\u5B58\u683C\u8CC7\u6599 +StyleAlignment-Vertical_Text=\u6587\u5B57\u8C4E\u6392 +Label=\u6A19\u7C64 +Orange=\u6854\u9EC3 +zeroMarginWarn=\u7531\u65BC\u5370\u8868\u6A5F\u5B58\u5728\u7269\u7406\u908A\u8DDD
\u5831\u8868\u7684\u9801\u908A\u8DDD\u8A2D\u5B9A\u904E\u5C0F\u53EF
\u80FD\u6703\u51FA\u73FE\u5167\u5BB9\u5217\u5370\u4E0D\u5168.
  +Widget-Date_Selector_Return_Type=\u8FD4\u56DE\u503C\u985E\u578B +Utils-Switch_To_Template_Reportlet=\u5207\u63DB\u5230\u7BC4\u672C\u7DB2\u8DEF\u5831\u8868 +satisfy=\u6EFF\u8DB3\u689D\u4EF6 +FR-Designer_WidgetDisplyPosition=\u63A7\u5236\u9805\u986F\u793A\u4F4D\u7F6E +FR-Base_Top=\u4E0A +FR-Designer_Form-CheckBox=\u5FA9\u9078\u6846 +Reportlet-Parameter_Type=\u53C3\u6578\u50B3\u905E\u65B9\u5F0F +sending=\u6B63\u5728\u767C\u9001... +FR-Designer-FRFont_Foreground=\u984F\u8272 +FR-Import-Export_SVG=SVG\u683C\u5F0F +M_Edit-Clear_Contents=\u5167\u5BB9(C) +Session=\u6703\u8A71 +Widget-Load_Type=\u8F09\u5165 +template_unsaved=\u7BC4\u672C\u7121\u6CD5\u5132\u5B58 +check_communication=\u8ACB\u6AA2\u67E5\u7DB2\u8DEF\u901A\u8A0A\u662F\u5426\u6B63\u5E38\u53CA\u4F3A\u670D\u5668\u662F\u5426\u6B63\u5E38\u904B\u884C +List-Need_Head=\u9700\u8981\u6B04\u8868\u982D +FR-Designer-Plugin_Has_Been_Installed=Plugin has been installed +FR-Widget_Tree_And_Table=\u63A7\u5236\u9805\u6A39\u548C\u63A7\u5236\u9805\u8868 +FR-Base_Help=\u8AAA\u660E +FR-Designer-Plugin_Update_Successful=Update successfully +August=\u516B\u6708 +LOG-Is_Being_Openned=\u6B63\u5728\u6253\u958B +BackgroundTexture-Oak=\u6A61\u6728 +Multi_nam_formula=\ \u8CC7\u6599\u96C6\u540D\: \u8CC7\u6599\u96C6\u689D\u4EF6\: +TurnOn=\u958B\u5553 +HJS-Send_Successfully=\u767C\u9001\u6210\u529F +Mon=\u661F\u671F\u4E00 +Inner_Parameter=Inner Parameter +Required=\u5FC5\u586B +Summary=\u532F\u7E3D +template_unopened=\u7121\u6CD5\u6253\u958B\u7BC4\u672C +FR-Base_Bottom=\u4E0B +DataFunction-Min=\u6700\u5C0F\u503C +StyleFormat-Percent=\u767E\u5206\u6BD4 +FR-App-All_Custom=\u81EA\u5B9A\u7FA9 +M_Insert-Data_Column=\u63D2\u5165\u8CC7\u6599\u6B04 +PLEASE=Please +Numbers=\u6578\u76EE +Release_Lock=\u89E3\u9396 +Background-Background_is_NULL=\u6C92\u6709\u80CC\u666F +FR-Designer_Sytle-FRFont=\u5B57\u9AD4 +Gradation=\u5C64\u6B21 +The_current_list_is_empty=\u7576\u524D\u6B04\u8868\u70BA\u7A7A +Formula_Dictionary_Display_Examples= +Schedule-Template_Parameter=\u7BC4\u672C\u53C3\u6578 +JSShow=\u52D5\u614B\u5C55\u793A +Level_coordinates=\u5C64\u6B21\u5750\u6A19 +MainGraduationLine=\u4E3B\u8981\u523B\u5EA6\u7DDA +Hyperlink-Web_link=\u7DB2\u9801\u93C8\u63A5 +StyleAlignment-between_-90_and_90=\u5728-90\u548C90\u4E4B\u9593 +FormulaD-Custom_Function=\u81EA\u5B9A\u7FA9\u51FD\u6578 +FR-Designer_Integer=\u6574\u6578 +PageSetup-Finis_Start_Row=\u91CD\u8907\u7D50\u5C3E\u5217 +RWA-Remove_Field=\u79FB\u9664\u6B04\u4F4D +Form-Desin_Width=\u8A2D\u8A08\u5BEC\u5EA6 +No-tableData=\u6C92\u6709\u8FD4\u56DE\u8CC7\u6599\u96C6 +Page_Total=\u5171 +FR-Designer-Plugin_Connect_Server_Error=Error to connect plugin store +Import-Excel_Source=Excel\u6E90\u6A94\u6848 +Utils-Left_to_Right_a=\u5F9E\u5DE6\u5F80\u53F3 +ExpandD-Expand_Attribute=\u64F4\u5C55\u5C6C\u6027 +Report-Write_Attributes=\u5831\u8868\u586B\u5831\u5C6C\u6027 +Utils-Current_Column=\u7576\u524D\u6B04 +Need_Max_Value=\u9700\u8981\u6700\u5927\u503C +Report_Not_Exist=\u6240\u9078\u5831\u8868\u4E0D\u5B58\u5728\uFF01 +HF-Insert_Content=\u63D2\u5165\u5167\u5BB9 +UpParent=\u4E0A\u7236\u683C +PageSetup-Page=\u9801\u9762 +Utils-Move_Up=\u4E0A\u79FB +BackgroundTexture-PurpleMesh=\u7D2B\u8272\u7DB2\u8DEF +Export-Word=Word\u683C\u5F0F +ServerM-Widget_Manager=\u5143\u4EF6\u7BA1\u7406 +FR-Designer-Basic_Activation_Key=Activation Key\: +FR-App-Template_Report_Not_Exist=\u6240\u9078\u5831\u8868\u4E0D\u5B58\u5728 +Protected=\u4FDD\u8B77 +Skip=\u8DF3\u904E +FR-Designer_PageSetup-Vertically=\u5782\u76F4\u7F6E\u4E2D +revert=\u5FA9\u539F +PageSetup-Predefined=\u9810\u5B9A\u7FA9 +Border-Style-Radius=\u5713\u89D2\u6846\u7DDA +IntPart=\u6574\u6578\u90E8\u4EFD +ExpandD-Data_Column=\u8CC7\u6599\u6B04 +Sort-Ascending=\u5347\u51AA +FR-Designer-Widget_Style=\u6A23\u5F0F +parameter_name_exist=\u8A72\u53C3\u6578\u540D\u5DF2\u5B58\u5728 +FR-Designer_Layer-Build=\u666E\u901A\u5206\u5C64\u69CB\u5EFA +Please_Rename=\u8ACB\u91CD\u547D\u540D +Form-Editing_Listeners=\u4E8B\u4EF6\u7DE8\u8F2F +RWA-Smart_Add_Fields=\u667A\u80FD\u65B0\u589E\u6B04\u4F4D +FR-Designer-Tree_Width=\u5BEC\u5EA6 +Record=\u8A18\u9304 +Poly-Report_Component=\u8907\u5408\u5F0F\u5831\u8868\u5143\u4EF6 +Options=\u9078\u9805 +NS-war-remote=\u932F\u8AA4\u4EE3\u78BC\:1117 \u58D3\u7E2E\u90E8\u7F72\u4E0D\u652F\u6301\u9060\u7A0B\u8A2D\u8A08 +Sche-Minute=\u5206 +Three_Rows_Of_Three_Grid=\u4E09\u5217\u4E09\u6B04\u7684\u683C\u5B50 +WorkSheet=\u81EA\u7531\u5831\u8868 +FR-Designer-Widget_Size=\u63A7\u5236\u9805\u5927\u5C0F +BindColumn-Select=\u6B04\u8868 +FR-Widget_Mobile_Terminal=\u884C\u52D5\u8A2D\u5099 +FR-Background_Image_Titled=\u5E73\u92EA +SetPrinterOffset=\u5370\u8868\u6A5F\u504F\u79FB +FR-Designer-Plugin_Installed=Installed +FR-Designer-Hyperlink_Name=\u540D\u5B57 +FR-Designer_Form-Button=\u6309\u9215 +Black=\u9ED1\u8272 +FR-Designer-Widget-Style_Border_Color=\u6846\u7DDA\u984F\u8272 +Set_Submit_Event=\u8A2D\u5B9A\u63D0\u4EA4\u4E8B\u4EF6 +PDF-Print_isPopup=\u662F\u5426\u5F48\u51FA\u8A2D\u5B9A\u6846 +LayerPageReport_CountPerPage=\u6BCF\u9801\u8A18\u9304\u6578 +Display_Modes=\u986F\u793A\u6A21\u5F0F +RowSpan=\u5217\u8DE8\u5EA6 +Datasource-Test_Connection=\u6E2C\u8A66\u93C8\u63A5 +Function-Function_Manager=\u51FD\u6578\u7BA1\u7406\u5668 +Host_Name=\u4E3B\u6A5F\u540D +CellWrite-Show_As_HTML=\u7528HTML\u986F\u793A\u5167\u5BB9 +FR-Designer-Widget-Style_Shadow=\u9670\u5F71 +FR-Designer_Parameter_String=\u5B57\u5143\u4E32 +Form-SupportTag=\u6A19\u7C64\u5F62\u5F0F\u986F\u793A +ReportD-Report_Write_Attributes=\u5831\u8868\u586B\u5831\u5C6C\u6027 +DataFunction-Count=\u500B\u6578 +Top_And_Thick_Bottom_Border_Line=\u4E0A\u6846\u7DDA\u548C\u7C97\u4E0B\u6846\u7DDA +Client=Client +BindColumn-Result_Serial_Number_Start_From_1=\u5E8F\u865F\u5F9E1\u958B\u59CB +History=\u6B77\u53F2 +Already_exists=\u5DF2\u5B58\u5728\uFF0C\u8ACB\u91CD\u65B0\u8F38\u5165\uFF01 +Datasource-Original_Charset=\u539F\u59CB\u7DE8\u78BC +FR-Base_Left=\u5DE6 +ReportServerP-Next=\u4E0B\u4E00\u9801 +BindColumn-Top_N=\u524DN\u500B +Animation_Special=\u7279\u6548 +Widget-Chart_Widget_Config=\u5716\u8868\u63A7\u5236\u9805 +FR-Designer-Plugin_Cannot_Update_Not_Install=\u7121\u6CD5\u66F4\u65B0\u63D2\u4EF6\uFF0C\u8ACB\u6AA2\u67E5\u8A72\u63D2\u4EF6\u662F\u5426\u5DF2\u7D93\u6210\u529F\u5B89\u88DD +After_Changed_Some_Attributes_Are_Different=\u8F49\u63DB\u5F8C\u5831\u8868\u7684\u67D0\u4E9B\u5C6C\u6027\u6703\u767C\u751F\u6539\u8B8A\uFF0C\u662F\u5426\u7E7C\u7E8C +PieStyle=\u9905\u72C0 +HF-Are_you_sure_to_delete_it=\u4F60\u78BA\u5BE6\u60F3\u8981\u522A\u9664\u9019\u500B\u5143\u7D20\u55CE +Utils-Design-File_Open=\u958B\u555F\u820A\u6A94 +FR-Utils_Label=\u6A19\u7C3D +Data-Label=\u8CC7\u6599\u6A19\u7C64 +M_Insert-Text=\u63D2\u5165\u6587\u5B57 +Form-View_Tree=\u6AA2\u8996\u8868\u6A39 +M_Insert-Chart=\u63D2\u5165\u5716\u8868 +HF-Even_Page=\u5076\u6578\u9801 +ReportServerP-Report_server_parameter=\u5831\u8868\u4F3A\u670D\u5668\u53C3\u6578 +JavaScript-Form_Submit=\u8868\u55AE\u63D0\u4EA4 +Horizontal-Split_Layout=\u6C34\u5E73\u5206\u5272\u5E03\u5C40 +BorderLayout-Center=\u4E2D +INFO-Reset_Webapp=\u91CD\u7F6E\u61C9\u7528\u4F3A\u670D\u5668 +FR-Designer_Text=\u6587\u672C +IN_and_INOUT_type_not_as_cursor=IN\u548CINOUT\u985E\u578B\u4E0D\u53EF\u4EE5\u4F5C\u70BA\u6E38\u6A19 +Main_Axis=\u4E3B\u5750\u6A19\u8EF8 +M_Edit-Cut=\u526A\u4E0B(T) +Utils-The_Name_has_been_existed=\u6B64\u540D\u5DF2\u7D93\u5B58\u5728 +FR-Background_Image=\u5716\u7247 +Character=\u6587\u5B57 +Unit_Thousand=\u4EDF +Test=\u6E2C\u8A66 +Utils-Would_you_like_to_save=\u4F60\u662F\u5426\u9700\u8981\u5132\u5B58 +HF-Header_and_Footer=\u7709\u982D\u548C\u7709\u8173 +LIST_MODE=\u6B04\u8868 +HF-Insert_Image=\u63D2\u5165\u5716\u7247 +FR-Designer-Widget-Style_Standard=\u6A19\u51C6 +FR-Designer_Form-List=\u6B04\u8868 +BackgroundTexture-Denim=\u659C\u7D0B\u5E03 +Execute_Report_by_Layer_Engine=\u7528\u5217\u5F0F\u7684\u5F15\u64CE\u4F86\u57F7\u884C\u5831\u8868 +M_Edit-Bring_Forward=\u4E0A\u79FB\u4E00\u5C64(F) +Choose_All=\u5168\u9078 +Form-RadioGroup=\u55AE\u9078\u6309\u9215\u7D44 +FR-Base_Remove=\u522A\u9664 +FR-Remote_Connect2Server_Again=\u9023\u63A5\u4E2D\u65B7\uFF0C\u662F\u5426\u91CD\u65B0\u9023\u63A5\u4F3A\u670D\u5668? +Semicolon=\u5206\u865F +StyleFormat-Category=\u5206\u985E +Report_Template=\u5831\u8868\u7BC4\u672C +Utils-Beyond_the_right_side_of_Border=\u8D85\u51FA\u53F3\u908A\u754C +BackgroundTexture-Papyrus=\u7D19\u838E\u8349\u7D19 +LayerPageReport_PageEngine=\u4F7F\u7528\u6309\u9801\u904B\u7B97\u5206\u6BB5\u57F7\u884C\u5831\u8868 +Schedule-The_selected_file_must_be_end_with_filter=\u9078\u64C7\u7684\u6A94\u6848\u5FC5\u9808\u4EE5.cpt\u6216\u8005.class\u6216\u8005.frm\u7D50\u5C3E\u3002 +Provide=\u63D0\u4F9B +FormulaD-Math_&_Trig=\u6578\u5B78\u548C\u4E09\u89D2\u51FD\u6578 +FR-Designer-StyleAlignment_Right=\u9760\u53F3\u5C0D\u9F4A +Error_TableDataNameRepeat=\u5DF2\u7D93\u5728\u4F3A\u670D\u5668\u8CC7\u6599\u96C6\u4E2D\u5B58\u5728\u6216\u8005\u591A\u500B\u8CC7\u6599\u96C6\u540D\u91CD\u8907\u3002 +Choose_None=\u4E0D\u9078 +File-tree=\u6A94\u6848\u6A39 +FRFont-bold=\u7C97\u9AD4 +FR-Designer_Set_Submit_Condition=\u8A2D\u5B9A\u63D0\u4EA4\u689D\u4EF6 +Form-Change_Widget_Name=\u66F4\u6539\u63A7\u5236\u9805\u540D +ReportColumns-Report_Columns=\u5831\u8868\u5206\u6B04 +Can_not_use_FormatBursh=\u7121\u6CD5\u4F7F\u7528\u8907\u88FD\u683C\u5F0F +CellElement-Property_Table=\u5132\u5B58\u683C\u5C6C\u6027\u8868 +Dictionary-Dynamic_SQL=\u52D5\u614BSQL +FR-Designer_Form-CheckBoxGroup=\u5FA9\u9078\u6846\u7D44 +DBCP_TIME_BETWEEN_EVICTIONRUNSMILLIS=\u7A7A\u9591\u9023\u63A5\u56DE\u6536\u5668\u4F11\u7720\u6642\u9593 +ReportD-Export_Hided_Column=\u532F\u51FA\u96B1\u85CF\u6B04 +Preference-Support_Undo=\u652F\u6301\u5FA9\u539F +FR-mobile_report_analysis=\u5831\u8868\u89E3\u6790 +Month=\u6708 +Utils-Column_Width=\u6B04\u5BEC +Collect-Use_Designer=\u4F7F\u7528\u8A2D\u8A08\u5668 +Widget-User_Defined_Editor=\u9810\u5B9A\u7FA9\u7DE8\u8F2F\u5668\uFF0C\u8A72\u7DE8\u8F2F\u5668\u53EA\u80FD\u5728\u5143\u4EF6\u7BA1\u7406\u83DC\u55AE\u91CC\u66F4\u6539\u5176\u5C6C\u6027 +Unit_Ten_Thousand=\u842C +Data_Setting=\u8CC7\u6599\u8A2D\u5B9A +ECP_input_pwd=\u8ACB\u8F38\u5165\u5BC6\u78BC\: +period=\u3002 +Note=\u5099\u6CE8 +Multiline=\u591A\u5217\u7DE8\u8F2F +Datasource-Convert_Charset=\u7DE8\u78BC\u8F49\u63DB +DashBoard-ConnectionList=\u8CC7\u6599\u9023\u63A5 +Utils-Submit_Forcibly=\u5F37\u884C\u63D0\u4EA4 +Parent_Marked_Field=\u7236\u6A19\u8A18\u6B04\u4F4D +Logout=\u9000\u51FA +FR-Designer_Show_Blank_Row=\u88DC\u5145\u7A7A\u767D\u5217 +FR-Base_Format=\u683C\u5F0F +FR-App-Export_png=png\u683C\u5F0F +Delete_Column=\u522A\u9664\u6B04 +SecondGraduationLine=\u6B21\u8981\u523B\u5EA6\u7DDA +SpecifiedG-Groups=\u7D44 +CONTINUUM_MODE=\u76F8\u9130\u9023\u7E8C\u5206\u7D44 +Datasource-Connection_failed=\u93C8\u63A5\u5931\u6557 +CategoryName=\u5206\u985E\u540D +DBCP_INITIAL_SIZE=\u521D\u59CB\u5316\u9023\u63A5\u6578 +Colors=\u984F\u8272 +FR-Import-Export_CSV=CSV\u683C\u5F0F(\u9017\u865F\u5206\u9694) +FR-Designer-StyleAlignment_Left=\u9760\u5DE6\u5C0D\u9F4A +BackgroundTexture-PaperBag=\u7D19\u888B +RWA-BuildIn_SQL=\u5167\u7F6ESQL +SingleLayer=\u55AE\u5C64 +Or-you=\u6216\u8005\u60A8 +FR-Designer_Certificate_Path=\u8B49\u66F8\u8DEF\u5F91 +Utils-Last_Page=\u6700\u5F8C\u4E00\u9801 +BarCodeD-Drawing_Text=\u986F\u793A\u689D\u78BC\u7684\u6587\u672C +Warning-Template_Do_Not_Exsit=\u7BC4\u672C\u4E0D\u5B58\u5728 +BindColumn-Group=\u5206\u7D44 +Export-SVG=SVG\u683C\u5F0F +Plane3D=\u5E73\u97623D +SessionID=sessionID\u662F\u7576\u524D\u8A2A\u554F\u6A21\u677F\u7684\u6703\u8A71\u6A19\u8B58\u53C3\u6578\u3002 +FR-Designer_Height=\u9AD8 +HF-Odd_Page=\u5947\u6578\u9801 +About-All_Rights_Reserved=\u4FDD\u7559\u6240\u6709\u7684\u6B0A\u5229 +Utils-Current_Cell=\u7576\u524D\u683C\u5B50 +Web_Preview_Message=\u8ACB\u5C07\u6A21\u677F\u6A94\u6848\u5132\u5B58\u7576\u524D\u904B\u884C\u74B0\u5883\u76EE\u9304\u4E0B +FR-Hyperlink_Chart_Float=\u5716\u8868\u8D85\u93C8-\u806F\u52D5\u61F8\u6D6E\u5143\u7D20 +Dic-Data_Query=\u8CC7\u6599\u67E5\u8A62 +CellWrite-Print_Content=\u5217\u5370/\u532F\u51FA\u5132\u5B58\u683C\u5167\u5BB9 +Privilege-Selected_None_Of_Any_Items=\u6C92\u6709\u9078\u4E2D\u4EFB\u4F55\u4E00\u9805 +FRFont-Size=\u5927\u5C0F +Function-J2EE_server=J2EE\u4F3A\u670D\u5668 +FR-Designer_Allow_Blank=\u5141\u8A31\u70BA\u7A7A +Build_Tree_Accord_Parent_Marked_Filed=\u4F9D\u8CF4\u6240\u9078\u8CC7\u6599\u96C6\u7684\u7236\u6A19\u8A18\u6B04\u4F4D\u69CB\u5EFA\u6A39 +Preference-Horizontal_Scroll_Bar_Visible=\u6C34\u5E73\u6EFE\u52D5\u689D\u53EF\u898B +Scope=\u7BC4\u570D +Save_All_Records_In_Memory=\u6240\u6709\u8A18\u9304\u90FD\u5132\u5B58\u5728\u5167\u5B58\u4E2D +FreezeWarning1=\u521D\u59CB\u503C\u4E0D\u5927\u65BC\u5C3E\u503C +FlowLayout=\u6D41\u5F0F\u5E03\u5C40 +M_Report-Report_Footer=\u5831\u8868\u9801\u5C3E +FR-Action_Add=\u589E\u52A0 +BorderLayout-East=\u6771 +feedback_tip=\u8ACB\u8F38\u5165\u4E0D\u8D85\u904E400\u500B\u5B57\u7684\u554F\u984C\u63CF\u8FF0 +FS_Start_Date=\u958B\u59CB\u65E5\u671F +FR-ConditionB_Operator=\u64CD\u4F5C\u7B26 +Printer-Alias=\u5225\u540D +DS-Class_Name=\u985E\u540D +FR-Designer-Plugin_Has_Been_Disabled=Plugin has been disabled +Sort-Original=\u4E0D\u6392\u5E8F +Utils-Top_to_Bottom_a=\u5F9E\u4E0A\u5F80\u4E0B +Parameter-String=\u5B57\u5143\u4E32 +InnerRadis=\u5167\u5F91\u5927\u5C0F +Want_To_Cover_It=\u662F\u5426\u60F3\u8981\u8986\u84CB\u5854 +Divided_stage=\u5283\u5206\u968E\u6BB5 +Seriously=\u56B4\u91CD +ReportServerP-PDF=PDF +Utils-Switch_To_Class_Reportlet=\u5207\u63DB\u5230\u985E\u5225\u7DB2\u8DEF\u5831\u8868 +FR-Designer_Show_Blank_Column=\u88DC\u5145\u7A7A\u767D\u6B04 +M_Edit-Redo=\u53D6\u6D88\u5FA9\u539F +Visibility=\u53EF\u898B\u6027 +Series_Use_Default=\u7CFB\u5217\u9810\u8A2D\u4F7F\u7528 +Has_Selected=\u5DF2\u7D93\u9078\u64C7 +BackgroundTexture-Walnut=\u8B77\u5957 +FormulaD-Function_category=\u51FD\u6578\u985E\u578B +Interface=\u4ECB\u9762 +FR-Designer-Beyond_Bounds=\u8D85\u51FA\u6216\u8005\u5C0F\u65BCbody\u908A\u754C\uFF0C\u4E0D\u80FD\u8ABF\u6574\u5927\u5C0F +seconds=\u79D2 +Auto-Build=\u81EA\u52D5\u69CB\u5EFA +FR-Designer-Plugin_Install_Successful=Install successful +Template_Path=\u7BC4\u672C\u8DEF\u5F91 +FR-Designer-FRFont_Bold=\u7C97\u9AD4 +Poly_Name=\u805A\u5408\u584A\u540D +WorkBook=\u5DE5\u4F5C\u7C3F +Hyperlink-Self_Window=\u7576\u524D\u7A97\u53E3 +FR-Designer-Widget-Style_Title=\u6A19\u984C +FR-Designer-FRFont_Size=\u5927\u5C0F +M_File-Export-SVG=SVG\u683C\u5F0F +Capacity=Capacity +Rose_Red=\u73AB\u7470\u7D05 +StyleAlignment-The_value_of_rotation_must_between_-90_and_90_degrees=\u65CB\u8F49\u503C\u5FC5\u9808\u5728\u8CA090\u5EA6\u523090\u5EA6 +HF-Move_Left=\u5DE6\u79FB +Cell_Group=\u5132\u5B58\u683C\u7D44 +Week=\u5468 +PageSetup-Orientation=\u65B9\u5411 +M-Open_Recent=\u958B\u555F\u6700\u8FD1\u4F7F\u7528\u6A94 +NNormal=\u6B63\u5E38 +Integer=\u6574\u6578 +Select_The_Source_To_Save=\u9078\u64C7\u8981\u5B58\u5132\u7684\u9805\u76EE +Transition=\u5206\u652F +FR-Designer_Get_Lock=\u52A0\u9396 +one_record_exists_in_many_groups=\u4E00\u500B\u8A18\u9304\u53EF\u4EE5\u5B58\u5728\u8207\u591A\u500B\u7D44\u4E2D +FR-Designer_Cover_None=\u5168\u4E0D\u8986\u84CB +DeciPart=\u5C0F\u6578\u90E8\u4EFD +ExpandD-Up_Father_Cell=\u4E0A\u7236\u683C +Deep=\u6DF1\u5EA6 +FRFont-Shadow=\u9670\u5F71 +Reportlet=\u7DB2\u8DEF\u5831\u8868 +Calendar=\u65E5\u66C6 +DateFormat-Custom_Warning=\u8A3B\uFF1A\u81EA\u5B9A\u7FA9\u65E5\u671F\u683C\u5F0F\u4E0D\u652F\u6301\u683C\u5F0F\u6821\u9A57 +Unit_MM=\u516C\u5398 +Server-Start=\u555F\u52D5 +CellPage-Can_Break_On_Paginate=\u5206\u9801\u6642\u53EF\u4EE5\u65B7\u958B +Build_Tree_Accord_Marked_Filed_Length=\u4F9D\u8CF4\u6240\u9078\u8CC7\u6599\u96C6\u7684\u6A19\u8A18\u6B04\u4F4D\u7684\u9577\u5EA6\u69CB\u5EFA\u6A39\u72C0 +ComboCheckBox-Start_Symbol=\u8D77\u59CB\u7B26 +Real=\u5BE6\u969B +RWA-Batch_Modify_Cells=\u6279\u91CF\u4FEE\u6539\u5132\u5B58\u683C +FR-Designer_Build-Way=\u69CB\u5EFA\u65B9\u5F0F +Read=\u8B80\u53D6 +StyleAlignment-Degrees=\u5EA6\u6578 +M_Format_A-Border=\u6846\u7DDA(B) +Utils-Delete_Record=\u522A\u9664\u8A18\u9304 +Reload=\u91CD\u8F09 +Image-Select_Picture=\u9078\u64C7\u5716\u7247 +RWA-Submit=\u63D0\u4EA4 +the_template=\u8A72\u7BC4\u672C +FR-Designer_Component_Scale=\u5143\u4EF6\u7E2E\u653E +FRFont-italic=\u659C\u9AD4 +Year=\u5E74 +HF-Move_Right=\u53F3\u79FB +Data-Check=\u8CC7\u6599\u76E3\u63A7 +Unknown=\u672A\u77E5 +Submit_Style=\u63D0\u4EA4\u65B9\u5F0F +Left_Border_Line=\u5DE6\u6846\u7DDA +Brown=\u8910\u8272 +Select_A_Tree_DataSource_To_Build=\u9078\u64C7\u4E00\u500B\u6A39\u72C0\u8CC7\u6599\u96C6\u4F86\u69CB\u5EFA +Overlapping=\u91CD\u66E1\u578B +DS-Class_TableData=\u985E\u5225\u8CC7\u6599\u96C6 +FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install=Illegal plugin,cannot be installed +DisplayNothingBeforeQuery=\u9EDE\u64CA\u67E5\u8A62\u524D\u4E0D\u986F\u793A\u5176\u4ED6\u5167\u5BB9 +Y_Axis=Y\u8EF8 +FormulaD-Most_Recently_Used=\u5E38\u7528\u51FD\u6578 +FormulaD-Input_formula_in_the_text_area_below=\u8ACB\u5728\u4E0B\u9762\u7684\u6587\u672C\u7DE8\u8F2F\u6846\u88E1\u9762\u8F38\u5165\u516C\u5F0F +Build-Way=\u69CB\u5EFA\u65B9\u5F0F +M_Edit-Undo=\u5FA9\u539F +Line-Style=\u7DAB\u578B +Datasource-Other_Attributes=\u5176\u4ED6\u5C6C\u6027 +M_Server-Global_Parameters=\u5168\u5C40\u53C3\u6578 +Suffix=\u5F8C\u7DB4 +Image-Image_Files=\u5716\u7247\u6A94\u6848 +EditRC-Entire_row=\u6574\u5217(R) +HF-First_Page=\u9996\u9801 +BackgroundTexture-Granite=\u82B1\u5D17\u77F3 +DataList=\u8CC7\u6599\u93C8 +Recursion=\u905E\u6B78 +BarStyle=\u689D\u5F62 +FR-Designer-Min_Width=\u6700\u5C0F\u5BEC\u5EA6 +Utils-Report-Env_Directory=\u5831\u8868\u5DE5\u4F5C\u76EE\u9304 +D-ChartArea=\u5716\u8868\u5340 +Only=\u53EA +FR-Base_No=\u5426 +SpecifiedG-Put_all_others_together=\u5C07\u5176\u4ED6\u6240\u6709\u7684\u5408\u5E76 +HF-NewLine_Des=\u53EF\u4EE5\u9EDE\u64CA\u4E0A\u9762\u7684\u79FB\u52D5\u548C\u522A\u9664\u6309\u9215\u4F86\u64CD\u4F5C\u63DB\u5217\u7B26 +WLayout-Border-ThreeContainer=\u64C1\u6709\u5317\u3001\u897F\u548C\u4E2D\u4E09\u584A\u7684\u908A\u754C\u4F48\u5C40\u5BB9\u5668\uFF0C\u5176\u4E2D\u5317\u90E8\u584A\u53EF\u4EE5\u6839\u64DA\u9700\u8981\u8ABF\u6574\u9AD8\u5EA6\uFF0C\u897F\u90E8\u584A\u53EF\u4EE5\u6839\u64DA\u9700\u8981\u8ABF\u6574\u5BEC\u5EA6\u3002 +Parameter_Name=\u53C3\u6578\u540D +FR-Base_Table=\u8868 +Des-Remove_WorkSheet=\u8981\u522A\u9664\u7684\u8868\u53EF\u80FD\u5B58\u5728\u8CC7\u6599,\u5982\u679C\u8981\u6C38\u4E45\u522A\u9664\u9019\u4E9B\u8CC7\u6599,\u8ACB\u6309'\u78BA\u5B9A'\u6309\u9215. +Rotation=\u65CB\u8F49 +Undefined=\u672A\u5B9A\u7FA9 +Support-Auto_Complete_Shortcut=Auto Complete Shortcut +Set_Column_Title_End=\u8A2D\u5B9A\u91CD\u8907\u7D50\u5C3E\u6B04 +Submit_Url=\u63D0\u4EA4\u5730\u5740 +ReportServerP-Are_you_sure_to_delete_the_selected_printer=\u4F60\u78BA\u5BE6\u60F3\u522A\u9664\u9078\u4E2D\u7684\u5370\u8868\u6A5F\u55CE +long_data_can_not_show_fully=\u9577\u8CC7\u6599\u986F\u793A\u4E0D\u5168 +Utils-Beyond_the_bottom_side_of_Border=\u8D85\u51FA\u4E0B\u908A\u754C +FR-Import-Export_PDF=PDF\u683C\u5F0F +Form-CheckBoxGroup=\u5FA9\u9078\u6846\u7D44 +Click-Me=\u9EDE\u6211\u6709\u9A5A\u559C\u54E6\uFF01 +Hyperlink-Self=\u5728\u539F\u7DB2\u9801\u4E2D\u6253\u958B\u93C8\u63A5(S) +Tree-Select_Leaf_Only_Tips=(\u4E0D\u52FE\u9078\u6B64\u9805\u6642\uFF0C\u8FD4\u56DE\u503C\u50C5\u70BA\u7528\u6236\u52FE\u9078\u7684\u7576\u524D\u7BC0\u9EDE\u800C\u4E0D\u5305\u62EC\u5176\u5B50\u7BC0\u9EDE) +StyleAlignment-Text_Rotation=\u6587\u672C\u65B9\u5411 +Format-Error=\u8F38\u5165\u7684\u503C\u683C\u5F0F\u4E0D\u6B63\u78BA +Server-Stop=\u505C\u6B62 +Preference-Setting_Grid=\u7DB2\u683C\u8A2D\u5B9A +ReportServerP-Add_Printer=\u589E\u52A0\u5370\u8868\u6A5F +FR-Designer-Plugin_Active=Active +Utils-File_name=\u6A94\u6848\u540D +NOT_NULL_Des=\u4E0D\u80FD\u70BA\u7A7A +Right_Border_Line=\u53F3\u6846\u7DDA +EditRC-Entire_column=\u6574\u6B04 (c) +PageSetup-Top_to_bottom=\u5148\u6B04\u5F8C\u5217 +Click-Get_Default_URL=\u9EDE\u64CA\u6B64\u6309\u9215\u7372\u5F97\u9810\u8A2DURL +StyleAlignment-Wrap_Text=\u81EA\u52D5\u63DB\u5217 +Remove_All_Button=\u6E05\u9664\u6240\u6709\u6309\u9215 +FR-Designer_Component_Interval=\u5143\u4EF6\u9593\u9694 +ReportColumns-Columns_vertically=\u6B04\u5206\u6B04 +ReportGUI-Print_Background=\u5217\u5370/\u532F\u51FA\u5831\u8868\u80CC\u666F +Export-CSV=CSV\u683C\u5F0F(\u9017\u865F\u5206\u9694) +M_Edit-Paste=\u8CBC\u4E0A(P) +FR-Designer-Basic_Restart_Designer=Restart designer +ReportServerP-PDF2-INFO=\u50C5\u5728LINUX/UNIX\u4E0B\u672A\u5B89\u88DD\u4E2D\u6587\u5B57\u9AD4\u6642\u4F7F\u7528 +FormulaD-Check_Valid=\u6AA2\u67E5\u5408\u6CD5\u6027 +server_disconnected=\u9023\u63A5\u5DF2\u65B7\u958B +ParameterD-Parameter_name_cannot_be_null=\u53C3\u6578\u7684\u540D\u5B57\u4E0D\u53EF\u4EE5\u70BA\u7A7A +FR-Designer-Plugin_Version_Is_Lower_Than_Current=The version of plugin is lower than current +RWA-NotChange_Unmodified=\u4E0D\u6539\u8B8A\u6642\u4E0D\u66F4\u65B0 +User_Information=\u7528\u6236\u8A0A\u606F +Custom_styles_lost=\u81EA\u5B9A\u7FA9\u6A23\u5F0F\u5DF2\u4E1F\u5931 +PageSetup-Margin=\u9801\u908A\u8DDD +M-New_FormBook=\u5EFA\u7ACB\u65B0\u5831\u8868 +Widget-TreeNode=\u6A39\u7BC0\u9EDE\u6309\u9215 +Form-Url=\u5730\u5740 +Utils-Beyond_the_left_side_of_Border=\u8D85\u51FA\u5DE6\u908A\u754C +Float_Element_Name=\u61F8\u6D6E\u5143\u7D20\u540D\u7A31 +Purple=\u7C89\u7D2B +DashBoard-Potence=\u6B0A\u9650 +M-Close_Template=\u95DC\u9589\u7BC4\u672C(C) +paper=\u7D19\u5F35 +Not_Exsit=\u4E0D\u5B58\u5728\u65BC\u5831\u8868 +Utils-Insert_Row=\u63D2\u5165\u5217 +Utils-Delete_Row=\u522A\u9664\u5217 +not_support_authority_edit=\u8A72\u5143\u7D20\u4E0D\u652F\u6301\u8A31\u53EF\u6B0A\u63A7\u5236 +Formula_Tips=\u516C\u5F0F\u5FC5\u9808\u4EE5"\ +FR-Action_Copy=\u8907\u88FD +Compile_Success=Compile Success +BackgroundTexture-RecycledPaper=\u518D\u751F\u7D19 +StyleAlignment-Single_Line=\u55AE\u5217\u986F\u793A +Utils-Move_Down=\u4E0B\u79FB +Please_Set_Repeat_First=\u8ACB\u5148\u8A2D\u5B9A\u91CD\u8907\u6A19\u984C\u5217\u548C\u6B04 +Writer-ShortCuts_Setting=\u586B\u5831\u5FEB\u6377\u9375\u8A2D\u5B9A +Verify-Data_Verify=\u8CC7\u6599\u6821\u9A57 +FR-mobile_analysis_style=\u89E3\u6790\u65B9\u5F0F +Confirm-Delete-File=\u662F\u5426\u522A\u9664\u6240\u9078\u6A94\u6848\uFF1F +PageSetup-Header=\u9801\u9996 +JavaScrit-Asynch=\u975E\u540C\u6B65 +ReportServerP-Toolbar=\u5DE5\u5177\u6B04 +Utils-Top_to_Bottom=\u7E31\u5411 +Platform=\u5E73\u53F0 +FR-Designer-FRFont_Underline=\u5E95\u7DDA +Show_in_Containing_Folder=\u6253\u958B\u6240\u5728\u8CC7\u6599\u593E +BackgroundTexture-WaterDroplets=\u6C34\u6EF4 +FR-Designer-Dependence_Install_Failed=\u4F9D\u8CF4\u5B89\u88DD\u5931\u6557 +Layout-Padding=\u5167\u908A\u8DDD +roles_already_authority_edited=\u5DF2\u914D\u7F6E\u89D2\u8272 +WidgetDisplyPosition=\u63A7\u5236\u9805\u986F\u793A\u4F4D\u7F6E +SpecifiedG-Force_Group=\u5F37\u5236\u5206\u7D44 +FormulaD-Formula_Definition=\u516C\u5F0F\u5B9A\u7FA9 +I-xyScatterStyle_Marker=\u6563\u9EDE\u5716 +Hour=\u5C0F\u6642 +ColorMatch=\u914D\u8272 +M_Edit-Order=\u758A\u653E\u9806\u5E8F(O) +BackgroundTexture-Bouquet=\u82B1\u675F +Verify-Error_Information=\u6821\u9A57\u51FA\u932F\u8A0A\u606F +LayerData=\u5E95\u5C64\u8CC7\u6599 +Rename=\u91CD\u547D\u540D +Widget-Load_By_Async=\u975E\u540C\u6B65\u8F09\u5165 +Shape=\u5716\u5F62 +BindColumn-This_Condition_has_been_existed=\u6B64\u689D\u4EF6\u5DF2\u7D93\u5B58\u5728 +NS-exception_readError=\u932F\u8AA4\u4EE3\u78BC\:1305 \u6A21\u677F\u6A94\u6848\u89E3\u6790\u51FA\u932F +Set_Column_Title_Start=\u8A2D\u5B9A\u91CD\u8907\u6A19\u984C\u6B04 +Fri=\u4E94 +M_Report-Report_Parameter=\u6A21\u677F\u53C3\u6578 +REPORTLETS=\u8A2A\u554F\u591A\u5F35\u6A21\u677F\u7684\u8DEF\u5F91\u7684\u53C3\u6578 +WLayout-Card-ToolTip=\u5361\u7247\u5F0F\u4F48\u5C40\uFF0C\u8A72\u4F48\u5C40\u5BB9\u5668\u4E2D\u53EF\u4EE5\u65B0\u589E\u591A\u500B\u5176\u5B83\u5143\u4EF6\u3002 +M-Popup_ChartType=\u5716\u8868\u985E\u578B +Please-Wait=\u8ACB\u7A0D\u5019 +FR-Designer-Form-ToolBar_Widget=\u63A7\u5236\u9805 +Widget-Array=\u6578\u7D44 +FieldBinding=\u7D81\u5B9A\u6B04\u4F4D +Top_Bottom_Border_Line=\u4E0A\u4E0B\u6846\u7DDA +M-Others=\u5176\u5B83... +Hyperlink-Link_Opened_in=\u9023\u7D50\u6253\u958B\u65BC +FR-Utils_WorkBook=\u5DE5\u4F5C\u7C3F +M_Insert-Float=\u61F8\u6D6E\u5143\u7D20 +Out_Thick_Border_Line=\u7C97\u5323\u6846\u7DDA +FR-App-File_Lookup_range=\u67E5\u627E\u7BC4\u570D +ReportColumns-Columns_to=\u5206\u6B04\u6210 +Transparent=\u900F\u660E +Parameter-Integer=\u6574\u578B +PDF-Print_Setting=PDF\u5217\u5370\u8A2D\u5B9A +Server-Embedded_Server=\u5167\u7F6E\u7684\u4F3A\u670D\u5668 +M_Server-Server_Config_Manager=\u4F3A\u670D\u5668\u914D\u7F6E(S) +FR-Utils-Would_you_like_to_cover_the_current_file=\u4F60\u5E0C\u671B\u8986\u84CB\u7576\u524D\u6A94\u6848\u55CE +CellWrite-InsertRow_COPY=\u539F\u503C +Edit_String_To_Formula=\u662F\u5426\u5C07\u5B57\u5143\u4E32\u7DE8\u8F2F\u70BA\u516C\u5F0F +Edit-Column_Count=\u6B04\u6578 +Father=\u7236 +ReportColumns-Columns_after=\u8D85\u904E +FR-Designer_Undo=\u5FA9\u539F +DBCP_MIN_IDLE=\u6700\u5C0F\u7A7A\u9591\u9023\u63A5\u6578 +M-Data_Analysis_Settings=\u8CC7\u6599\u5206\u6790\u8A2D\u5B9A +M-Form_Preview=\u8868\u55AE\u9810\u89BD +Form-Basic_Properties=\u57FA\u672C\u5C6C\u6027 +quote=\u5F15\u7528 +Thu=\u56DB +Collect-Collect_User_Information=\u6536\u96C6\u7528\u6236\u8A0A\u606F +Layer-Build=\u5206\u5C64\u69CB\u5EFA +FR-Designer-FRFont_Line_Style=\u7DDA\u578B +BackgroundTexture-BrownMarble=\u68D5\u8272\u5927\u7406\u77F3 +PageSetup-Page_Setup=\u9801\u9762\u8A2D\u5B9A +Form-Semicolon=\u5206\u865F +ECP_re_input=\u8ACB\u91CD\u65B0\u8F38\u5165\u5BC6\u78BC\: +ExpandD-Sort_After_Expand=\u64F4\u5C55\u5F8C +FR-Designer-Dependence_Install_Succeed=\u4F9D\u8CF4\u5B89\u88DD\u6210\u529F +Env-Configure_Workspace=\u914D\u7F6E\u5DE5\u4F5C\u76EE\u9304 +feedback_info=\u6B61\u8FCE\u60A8\u63D0\u51FA\u5BF6\u8CB4\u7684\u610F\u898B\u548C\u5EFA\u8B70\uFF0C\u8ACB\u5C07\u8A0A\u606F\u586B\u5BEB\u5F97\u76E1\u91CF\u8A73\u7D30\uFF0C\u6211\u5011\u6703\u76E1\u5FEB\u806F\u7E6B\u4F60 +Ratio=\u6BD4\u7387 +DBCP_TEST_ON_BORROW=\u7372\u53D6\u9023\u63A5\u524D\u6AA2\u9A57 +FR-Designer_layerIndex=\u4F9D\u8CF4\u7684\u5C64\u6578 +WEB-Write_Setting=\u586B\u5831\u9762\u9762\u8A2D\u5B9A +M-New_WorkBook=\u65B0\u589E\u5DE5\u4F5C\u7C3F +FR-Designer-Plugin_Has_Been_Actived=Plugin is now active +Datasource-Maximum_Number_of_Preview_Rows=\u6700\u5927\u7684\u9810\u89BD\u5217\u6578 +ExpandD-Cell_Expand_Attributes=\u64F4\u5C55\u5C6C\u6027 +Select_the_repeated_row_and_column=\u9078\u64C7\u9700\u8981\u91CD\u8907\u7684\u5217\u6B04 +FormulaD-Date_&_Time=\u65E5\u671F\u548C\u6642\u9593\u51FD\u6578 +Max-Mem-Row-Count=\u7DE9\u5B58\u81F3\u78C1\u7247\u7576\u8A18\u9304\u6578\u5927\u65BC +BorderLayout-South=\u5357 +Export-Text=\u6587\u5B57\u6A94\u6848(\u88FD\u9304\u7B26\u5206\u9694) +JavaScript-Synch=\u540C\u6B65 +FR-App-All_Warning=\u8B66\u544A +M_Edit-Send_Backward=\u4E0B\u79FB\u4E00\u5C64(B) +Form-Layout=\u5E03\u5C40 +FR-Designer-Plugin_Shop_Need_Update=\u63D2\u4EF6\u5546\u5E97\u6709\u65B0\u7248\u672C,\u662F\u5426\u66F4\u65B0? +FR-Designer_WorkBook=\u5DE5\u4F5C\u7C3F +UpBarBorderStyleAndColor=\u6F32\u67F1\u6A23\u5F0F +GridLayout=\u683C\u5B50\u5E03\u5C40 +Utils-Default_Value=\u9810\u8A2D\u503C +Widget-Comb_Widget_Config=\u7D44\u5408\u63A7\u5236\u9805 +Import-Excel2007_Source=Excel2007\u6E90\u6A94\u6848 +Y-Coordinate=\u7E31\u5EA7\u6A19 +FR-Base_SimSun_Not_Found=\u7121\u6CD5\u627E\u5230\u5B8B\u9AD4, \u8ACB\u9078\u64C7\u7576\u524D\u7CFB\u7D71\u4E0B\u9810\u8A2D\u8A9E\u8A00\u4F5C\u70BA\u8A2D\u8A08\u5668\u5B57\u9AD4. +FR-Designer_Seriously=\u56B4\u91CD +Upload=\u4E0A\u50B3 +Form-Widget_Property_Table=\u5C6C\u6027\u8868 +Des-Merger_Cell=\u9078\u64C7\u7684\u5340\u57DF\u5305\u542B\u591A\u500B\u8CC7\u6599\uFF0C\u5408\u5E76\u5132\u5B58\u683C\u5F8C\u5C07\u53EA\u4FDD\u7559\u7DE8\u8F2F\u904E\u7684\u6240\u6709\u5132\u5B58\u683C\u4E2D\u6700\u5DE6\u4E0A\u89D2\u7684\u6578\u503C. +FR-Designer-Basic_Copy_Build_NO=\u96D9\u64CA\u8907\u88FD\u69CB\u5EFA\u7248\u672C\u865F +FR-Base_TurnOn=\u958B\u5553 +FR-Base_Rows=\u5217 +Form-Remove_Repeat=\u53BB\u6389\u91CD\u8907\u9805 +Yes=\u662F +Datasource-JNDI_Name=JNDI\u7684\u540D\u5B57 +Utils-Delete_Column=\u522A\u9664\u6B04 +HF-Delete_it=\u522A\u9664 +JavaScript-Dynamic_Parameters=\u52D5\u614B\u53C3\u6578 +px=\u50CF\u7D20 +FR-App-Report_Template=\u5831\u8868\u7BC4\u672C +Verify-Message=\u932F\u8AA4\u8A0A\u606F +Plan=\u8A08\u756B +Vertical-Split_Layout=\u5782\u76F4\u5206\u5272\u5E03\u5C40 +ParameterD-Delay_Playing=\u9EDE\u64CA\u67E5\u8A62\u524D\u4E0D\u986F\u793A\u5831\u8868\u5167\u5BB9 +TurnOff=\u95DC\u9589 +FR-Please_Rename=\u8ACB\u91CD\u547D\u540D +Select_Data_Set=\u9078\u64C7\u8CC7\u6599\u96C6 +Name_has_Colon=\u540D\u5B57\: +ReportColumns-Columns_horizontally=\u5217\u5206\u6B04 +FR-Base_Yes=\u662F +ReportColumns-Repeat_Row=\u8907\u88FD\u5217\u5E8F\u6B04 +Print_Setting=\u5217\u5370\u8A2D\u5B9A +Registration-User_Name=\u5E33\u865F +Datasource-User_Defined=\u81EA\u5B9A\u7FA9 +FR-Designer-Plugin_DownLoadMessage=\u63D2\u4EF6\u9700\u8981\u4F9D\u8CF4\u7684\u652F\u6301\uFF0C\u662F\u5426\u5B89\u88DD({R1} m)? +Delay=\u5EF6\u9072 +FR-Designer-All_MSBold=\u5FAE\u8EDF\u96C5\u9ED1 +Utils-Now_create_connection=\u6B63\u5728\u5EFA\u7ACB\u8CC7\u6599\u9023\u63A5 +FR-Template-Path_chooseRightPath=\u8ACB\u9078\u64C7\u6B63\u78BA\u8DEF\u5F91 +FR-Remote_Re_Connect_to_Server=\u4F3A\u670D\u5668\u5DF2\u95DC\u9589\uFF0C\u662F\u5426\u91CD\u65B0\u9023\u63A5\u4F3A\u670D\u5668? +Nation=\u570B\u5BB6 +DBCP_MAX_WAIT=\u6700\u5927\u7B49\u5F85\u6642\u9593 +FR-App-Template_Form=\u8868\u55AE +Address=\u5730\u5740 +Sub_Report=\u5B50\u5831\u8868 +FR-Import-Export_Word=Word\u683C\u5F0F +FR-Server_Version_Tip=\u60A8\u7576\u524D\u9023\u63A5\u7684\u4F3A\u670D\u5668\u7248\u672C\u4F4E\u65BC\u60A8\u4F7F\u7528\u7684\u8A2D\u8A08\u5668\u7248\u672C\u865F\uFF0C\u7E7C\u7E8C\u9023\u63A5\uFF0C\u60A8\u7DE8\u8F2F\u7684\u4E00\u4E9B\u5C6C\u6027\u53EF\u80FD\u7121\u6CD5\u6709\u6548\u5132\u5B58\u3002 \u5047\u5982\u9700\u8981\u9023\u63A5\u8ACB\u5C07\u60A8\u7684\u8A2D\u8A08\u5668\u7248\u672C\u8207\u4F3A\u670D\u5668\u7248\u672C\u4FDD\u6301\u4E00\u81F4 +StyleAlignment-Left_To_Right=\u5F9E\u5DE6\u5411\u53F3 +Verify-ToolTips=\u4E0D\u6EFF\u8DB3\u516C\u5F0F\u63D0\u793A\u6821\u9A57\u51FA\u932F\u8A0A\u606F +BackgroundTexture-Stationery=\u4FE1\u7D19 +FR-Designer_RWA-Help=\u8A2D\u5B9A\u672A\u4FEE\u6539\u4E0D\u66F4\u65B0\u5F8C\uFF0C\u586B\u5831\u9810\u89BD\u5831\u8868\uFF0C\u8A18\u9304\u6240\u5728\u5132\u5B58\u683C\u6C92\u6709\u88AB\u7DE8\u8F2F\u4FEE\u6539\uFF0C\u5247\u6B64\u8A18\u9304\u4E0D\u6703\u9032\u884C\u66F4\u65B0\uFF1B\n\u5728\u5927\u8CC7\u6599\u91CF\u8A18\u9304\u67E5\u8A62\u4E26\u56DE\u586B\u60C5\u6CC1\u4E0B\uFF0C\u555F\u7528\u8A72\u8A2D\u5B9A\uFF0C\u53EF\u4EE5\u63D0\u9AD8\u586B\u5831\u63D0\u4EA4\u6027\u80FD\u3002 +M_Insert-Barcode=\u689D\u78BC +Bounds=\u908A\u754C +FR-Designer-Undo_All_Authority_Operations=\u5FA9\u539F\u524D\u4E00\u6B21\u7DE8\u8F2F +Datasource-Context=\u4E0A\u4E0B\u6587 +CellWrite-Page_After_Column=\u6B04\u5F8C\u5206\u9801 +FR-Designer_Cancel=\u53D6\u6D88 +Button-Group-Display-Columns=\u5C55\u793A\u6B04\u6578 +Widget-Height=\u63A7\u5236\u9805\u9AD8\u5EA6 +Examples=\u4F8B\u5B50 +Formula_Dictionary_Display_Example=\u5BE6\u969B\u503C\u7BC4\u570D\u70BA Formula_Dictionary_Display_Examples\ +StyleAlignment-Horizontal=\u6C34\u5E73\u5C0D\u9F4A +HyperLink_Must_Alone_Reset=\u591A\u500B\u8D85\u93C8 +ExpandD-Expand_Direction=\u64F4\u5C55\u65B9\u5411 +Include=\u5305\u62EC +Export-Excel-Page=\u5206\u9801\u532F\u51FA +FR-Designer-Min_Height=\u6700\u5C0F\u9AD8\u5EA6 +Filed=\u5340\u57DF +ReportServerP-Import_Css=\u5F15\u7528Css +M_Insert-Formula=\u63D2\u5165\u516C\u5F0F +FR-Designer_Auto-Build=\u81EA\u52D5\u69CB\u5EFA +FRFont-Foreground=\u984F\u8272 +Bubble-Width=\u6C23\u6CE1\u5BEC\u5EA6 +Form-Hierarchy_Tree=\u7D50\u69CB\u6A39 +WLayout-Border-LayoutContainer=\u64C1\u6709\u4E2D\u90E8\u548C\u5317\u90E8\u5169\u584A\u7684\u908A\u754C\u4F48\u5C40\u5BB9\u5668\uFF0C\u5176\u4E2D\u5317\u90E8\u584A\u53EF\u4EE5\u6839\u64DA\u9700\u8981\u8ABF\u6574\u9AD8\u5EA6 +Preference-JDK_Home=JDK\u8DEF\u5F91 +Utils-Insert_Column=\u63D2\u5165\u6B04 +FR-Designer_ToolBar_Top=\u9802\u90E8\u5DE5\u5177\u6B04 +BindColumn-The_Conditions_of_FatherCell=\u7236\u683C\u689D\u4EF6 +Links=\u93C8\u63A5 +M_Report-Report_Header=\u5831\u8868\u9801\u9996 +Sub_Report_Description=\u5B50\u5831\u8868\u9700\u8981\u5B58\u5728\u65BC\u7236\u8868\u904B\u884C\u74B0\u5883\u4E0B\uFF0C\u4E14\u5169\u8005\u4E0D\u80FD\u662F\u540C\u4E00\u6A21\u677F +T_Insert-Float=\u63D2\u5165\u61F8\u6D6E\u5143\u7D20 +BackgroundTexture-FishFossil=\u9B5A\u985E\u5316\u77F3 +My_Computer=\u6211\u7684\u96FB\u8166 +FORMLET=\u8A2A\u554F\u4E0D\u540C\u8868\u55AE\u7684\u8DEF\u5F91\u7684\u53C3\u6578 +HF-Undefined=\u6C92\u6709\u5B9A\u7FA9 +Widget-User_Defined_Widget_Config=\u9810\u5B9A\u7FA9\u63A7\u5236\u9805 +Report-Write_Attributes_Group_Warning=\u8A2D\u5B9A\u7232\u5132\u5B58\u683C\u7D44\u7684\u5404\u6B04\u4F4D\u4E2D\u7684\u5132\u5B58\u683C\u500B\u6578\u5FC5\u9808\u76F8\u540C +Form-Single_quote=\u55AE\u5F15\u865F +Compile_Success_And_Then_Save=Compile Success And Then Save +FR-Designer_Layout-Padding=\u5167\u908A\u8DDD +Layout_Container=\u4F48\u5C40\u5BB9\u5668 +Admin=\u7BA1\u7406\u54E1 +Form-EC_toolbar=\u5831\u8868\u584A\u5DE5\u5177\u6B04 +FR-App-All_Auto=\u81EA\u52D5 +Utils-Available_Columns=\u53EF\u9078\u6B04 +Form-Change_Widget_Name_Discription=\u8ACB\u8F38\u5165\u4E00\u500B\u65B0\u7684\u63A7\u5236\u9805\u540D +FR-Module_Designer=\u8A2D\u8A08\u5668\u6A21\u584A +FR-Import-Export_Text=\u6587\u5B57\u6A94\u6848(\u88FD\u8868\u7B26\u5206\u9694) +Values-Editor=\u503C\u7DE8\u8F2F\u5668 +FR-Designer_Yes=\u662F +ExpandD-Expandable=\u53EF\u4F38\u5C55\u6027 +Tree-Return_Full_Path=\u7D50\u679C\u8FD4\u56DE\u5B8C\u6574\u5C64\u6B21\u8DEF\u5F91 +FRFont-bolditalic=\u7C97\u9AD4\u659C\u9AD4 +FR-Base_StyleFormat_Sample=\u793A\u4F8B +Area_Value=\u5340\u57DF\u503C +FR-Designer-Plugin_Disable=Disable +Utils-Are_you_sure_to_remove_the_selected_item=\u4F60\u78BA\u5BE6\u6C7A\u5B9A\u522A\u9664\u9078\u4E2D\u7684\u9805 +Face_Write=\u586B\u5831 +Poly-Report_Block=\u8868\u683C\u985E\u578B\u805A\u5408\u584A +Vgap=\u5782\u76F4\u9593\u9699 +FR-Designer_HyperLink_Must_Alone_Reset=\u591A\u500B\u8D85\u93C8 +DS-Class=\u985E\u5225 +FR-Hyperlink_Please_Select_Reportlet=\u8ACB\u9078\u64C7\u7DB2\u8DEF\u5831\u8868 +FS_Report_Type=\u985E\u578B +HF-New_Line=\u63DB\u5217\u7B26 +Privilege=\u6B0A\u9650 +Export-Offline-Html=\u8F38\u51FA\u96E2\u7DDAhtml\u5831\u8868 +FR-Designer_open-new-form-tip=\u7576\u524D\u6A21\u677F\u70BA711\u4EE5\u4E0B\u7248\u672C\u88FD\u4F5C, \u7121\u6CD5\u517C\u5BB9, \u4E0D\u80FD\u6253\u958B. \u5047\u5982\u60F3\u6253\u958B\u4FEE\u6539\u6B64\u8868\u55AE, \u8ACB\u4F7F\u7528\u5C0D\u61C9\u7248\u672C\u8A2D\u8A08\u5668\u6253\u958B. +FR-Designer-Widget-Style_Frame_Style=\u6846\u67B6\u6A23\u5F0F +Present-No_Present=\u53D6\u6D88\u6A21\u5F0F\u8A2D\u5B9A +FR-Designer_Form-Password=\u5BC6\u78BC +X_Axis=X\u8EF8 +FR-mobile_html_analysis=HTML5\u89E3\u6790 +M_Edit-Bring_to_Front=\u7F6E\u65BC\u9802\u5C64(T) +Null_Value_Show=\u7A7A\u503C\u986F\u793A +Datasource-JNDI_DES=\u6CE8\u610F\:\u9700\u8981\u628A\u5305\u542BINITIAL_CONTEXT_FACTORY\u985E\u7684.jar\u6A94\u6848\u8907\u88FD\u5230\u8EDF\u9AD4\u5B89\u88DD\u6A94\u6848\u4E0B\u7684/lib\u76EE\u9304\u4E0B +PrintP-Print_Preview=\u5217\u5370\u9810\u89BD +Form-Hierarchy_Tree_Last=\u4E0A\u4E00\u500B +Has_been_gone=\ \u5DF2\u4E1F\u5931\uFF0C\u662F\u5426\u589E\u52A0\u8A72\u6A23\u5F0F\uFF1F +RWA-Add_Field=\u65B0\u589E\u6B04\u4F4D +newNode=\u65B0\u589E\u7BC0\u9EDE +PageSetup-Shrink_to_fit_content=\u6839\u64DA\u5132\u5B58\u683C\u5167\u5BB9\u81EA\u52D5\u8ABF\u6574 +FR-Designer_Date=\u65E5\u671F +Column_Multiple=\u8CC7\u6599\u500D\u6578 +FR-App-All_File=\u6A94\u6848 +Sort-Descending=\u964D\u51AA +FR-Designer-Plugin_Delete=Delete +Above=\u4EE5\u4E0A\u7248\u672C +Utils-The-Chart=\u5716\u8868 +FRFont-plain=\u5E38\u898F +Calculating=\u8655\u7406\u4E2D +Form-Object=\u8868\u55AE\u5C0D\u8C61 +May=\u4E94\u6708 +FR-Designer_Plugin_Normal_Update=Update +FR-Hyperlink_Reportlet=\u7DB2\u8DEF\u5831\u8868 +M_Edit-Copy=\u8907\u88FD(C) +Sub_Report_Message2=\u7236\u5831\u8868\u4E0D\u5728\u7576\u524D\u904B\u884C\u74B0\u5883\u4E0B +Sub_Report_Message3=\u4E0D\u80FD\u9078\u64C7\u81EA\u8EAB +Sub_Report_Message1=\u8ACB\u9078\u64C7\u6B63\u78BA\u8DEF\u5F91 +Form-Allow_CustomData=\u5141\u8A31\u81EA\u5B9A\u7FA9\u503C +FR-Server_Version_Tip_MoreInfo=\u5EFA\u8B70\u60A8\u6240\u5C6C\u5718\u968A\u4F7F\u7528\u7684\u6211\u65B9FineReport\u7523\u54C1\u7684\u8A2D\u8A08\u5668\u7248\u672C\u865F\u4EE5\u53CA\u90E8\u7F72\u7684\u4F3A\u670D\u5668\u7248\u672C\u865F\u4FDD\u6301\u4E00\u81F4\uFF0C\u4EE5\u907F\u514D\u7248\u672C\u4E0D\u4E00\u81F4\u9020\u6210\u7684\u554F\u984C\u98A8\u96AA\u3002\n\u5047\u5982\u60A8\u6253\u958B\u66F4\u9AD8\u8A2D\u8A08\u5668\u7248\u672C\u88FD\u4F5C\u7684\u6A21\u677F\uFF0C\u53EF\u80FD\u6253\u958B\u51FA\u932F\uFF0C\u4E5F\u53EF\u80FD\u4E1F\u5931\u539F\u6709\u6A21\u677F\u5C6C\u6027\u3002\u5047\u5982\u60A8\u88FD\u4F5C\u7684\u6A21\u677F\u4F7F\u7528\u7684\u8A2D\u8A08\u5668\u7248\u672C\u9AD8\u65BC\u60A8\u6700\u7D42\u90E8\u7F72\u6240\u7528\u7684\u4F3A\u670D\u5668\u7248\u672C\uFF0C\u4F3A\u670D\u5668\u53EF\u80FD\u7121\u6CD5\u6B63\u5E38\u8F09\u5165\u60A8\u88FD\u4F5C\u7684\u6A21\u677F\u3002 +FR-Designer_Server-version-tip-moreInfo=\u5EFA\u8B70\u60A8\u6240\u5C6C\u5718\u968A\u4F7F\u7528\u7684\u6211\u65B9FineReport\u7522\u54C1\u7684\u8A2D\u8A08\u5668\u7248\u672C\u865F\u4EE5\u53CA\u90E8\u7F72\u7684\u4F3A\u670D\u5668\u7248\u672C\u865F\u4FDD\u6301\u4E00\u81F4\uFF0C\u4EE5\u907F\u514D\u7248\u672C\u4E0D\u4E00\u81F4\u9020\u6210\u7684\u554F\u984C\u98A8\u96AA\u3002\u5047\u5982\u60A8\u6253\u958B\u66F4\u9AD8\u8A2D\u8A08\u5668\u7248\u672C\u88FD\u4F5C\u7684\u6A21\u677F\uFF0C\u53EF\u80FD\u6253\u958B\u51FA\u932F\uFF0C\u4E5F\u53EF\u80FD\u4E1F\u5931\u539F\u6709\u6A21\u677F\u5C6C\u6027\u3002\u5047\u5982\u60A8\u88FD\u4F5C\u7684\u6A21\u677F\u4F7F\u7528\u7684\u8A2D\u8A08\u5668\u7248\u672C\u9AD8\u65BC\u60A8\u6700\u7D42\u90E8\u7F72\u6240\u7528\u7684\u4F3A\u670D\u5668\u7248\u672C\uFF0C\u4F3A\u670D\u5668\u53EF\u80FD\u7121\u6CD5\u6B63\u5E38\u8F09\u5165\u60A8\u88FD\u4F5C\u7684\u6A21\u677F +Get_Lock=\u52A0\u9396 +HF-Edit_Footer=\u7DE8\u8F2F\u9801\u5C3E +Datasource-New_Charset=\u65B0\u7DE8\u78BC +Preference-Custom=Custom +BackgroundTexture-Newsprint=\u65B0\u805E\u7D19 +ConditionB-Add_bracket=\u65B0\u589E\u62EC\u865F +Datasource-Connection_successfully=\u93C8\u63A5\u6210\u529F +Function-The_class_must_implement_the_interface=\u6539\u985E\u5FC5\u9808\u5BE6\u73FE\u4ECB\u9762 +FR-Designer_ChartF-Transparency=\u900F\u660E +Crimson=\u6DF1\u7D05 +FR-Hyperlink_Dialog=\u5C0D\u8A71\u6846 +FR-Designer_Covered_All=\u5168\u90E8\u8986\u84CB +Hyperlink-New_Window=\u65B0\u7A97\u53E3 +Style_Name=\u683C\u5F0F\u540D +CSS_warning=\ \u76F8\u5C0D\u5831\u8868\u5DE5\u7A0B\u76EE\u9304\u5982WebReport,\u5982WebReport\\css\u4E0B\u6709\u5F15\u7528\u7684css\u6A94\u6848test.css\uFF0C\u5247\u76F8\u5C0D\u8DEF\u5F91\u70BAcss/test.css +FR-Base_Column=\u6B04 +Three_Rows_Of_Two_Grid=\u4E09\u5217\u5169\u6B04\u7684\u683C\u5B50 +DBCP_VALIDATION_QUERY=SQL\u9A57\u8B49\u67E5\u8A62 +M_Edit-Clear_Formats=\u683C\u5F0F(F) +Parameter_Setting=\u53C3\u6578\u8A2D\u5B9A +Related=\u806F\u52D5 +BorderLayout-Constraints=\u4F4D\u7F6E +Write_Preview=\u586B\u5831\u9810\u89BD +PageSetup-Page_Order=\u5217\u5370\u9806\u5E8F +Verify-Verify_Formula=\u6821\u9A57\u516C\u5F0F +State=\u7701\u5E02 +FR-Designer-Widget-Style_Body_Background=\u4E3B\u9AD4\u80CC\u666F +FR-App-Privilege_No=\u6C92\u6709\u6B0A\u9650 +Please_Drag_ParaPane= +Come_True=\u5BE6\u73FE +ISEMPTY=is empty +Background-Texture=\u7D0B\u7406 +FR-Designer_Verify-Message=\u932F\u8AA4\u8A0A\u606F +Locked=\uFF08\u5DF2\u9396\u5B9A\uFF09 +Utils-Design-Action_Cancel=\u53D6\u6D88 +Image-Titled=\u5E73\u92EA +Gradient-Direction=\u6F38\u8B8A\u65B9\u5411 +Green=\u9752\u7DA0 +Report_Engine=\u5831\u8868\u5F15\u64CE +Return-String=\u8FD4\u56DE\u5B57\u5143\u4E32 +Margin=\u908A\u8DDD +Pitch_Percentage=\u9593\u8DDD\u767E\u5206\u6BD4 +FR-Base_TurnOff=\u95DC\u9589 +Utils-has_been_existed=\u5DF2\u5B58\u5728 +HF-Insert_Formula=\u63D2\u5165\u516C\u5F0F +Utils-Exit_Designer=\u9000\u51FA\u8A2D\u8A08\u5668 +Formula_Dictionary_Display=\u5C0D\u65BC\u4E0A\u9762\u5BE6\u969B\u503C\u7BC4\u570D\u5167\u7684\u6BCF\u500B\u503C($$$)\uFF0C\u5176\u986F\u793A\u503C\u70BA +PageSetup-Left_to_right=\u5148\u5217\u5F8C\u6B04 +Utils-Import_Excel_Data=\u532F\u5165[Excel] +M-Save=\u5132\u5B58 +redo=\u53D6\u6D88\u5FA9\u539F +Status=\u72C0\u614B +Draw=\u7E6A\u88FD +FR-Designer_Message=\u8A0A\u606F +Records=\u689D\u8A18\u9304 +FR-Designer_ComboBox=\u4E0B\u62C9\u6846 +Driver=\u9A45\u52D5\u5668 +Template_Parameters=\u7BC4\u672C\u53C3\u6578 +Form-Remove_Repeat_Data=\u53BB\u9664\u91CD\u8907\u8CC7\u6599 +ECP_decode=\u6A21\u677F\u89E3\u5BC6 +Area_Name=\u5340\u57DF\u540D +Others=\u5176\u5B83 +Merge=\u5408\u5E76 +BackgroundTexture-Parchment=\u7F8A\u76AE\u7D19 +BindColumn-Bottom_N=\u5F8CN\u500B +Frame=\u6846\u67B6 +Bottom_Border_Line=\u4E0B\u6846\u7DDA +Muiti_In=\u591A\u5C64\u947D\u53D6 +FR-Designer-Dependence_Install_Online=\u5728\u7DDA\u5B89\u88DD\u4F9D\u8CF4\u74B0\u5883 +Use_Default_ToolBar=\u4F7F\u7528\u9810\u8A2D\u5DE5\u5177\u6B04 +M_Server-Platform_Manager=\u5831\u8868\u5E73\u81FA\u7BA1\u7406(P) +PageSetup-inches=\u82F1\u5BF8 +Form-Widget_Property=\u5C6C\u6027\u540D +FR-Layout_Padding=\u5167\u908A\u8DDD +Schema=\u4E3B\u984C +Server_Path=\u4E3B\u6A5F\u4F4D\u7F6E +Condition_Display=\u689D\u4EF6\u986F\u793A +FR-Server-Design_template_unopened=\u7121\u6CD5\u6253\u958B\u7BC4\u672C +Function-Function_Class_Name=\u51FD\u6578\u985E\u540D +Schedule-Template=\u7BC4\u672C\u540D\u7A31 +Tree_Data_Field=\u6A39\u72C0\u8CC7\u6599\u6B04\u4F4D +Border-Style-Normal=\u76F4\u89D2\u6846\u7DDA +Top_And_Double_Bottom_Border_Line=\u4E0A\u6846\u7DDA\u548C\u96D9\u4E0B\u6846\u7DDA +FR-Server_Embedded_Server_Start=\u5167\u7F6E\u7684\u4F3A\u670D\u5668-\u555F\u52D5 +FR-Designer-Basic_Restart_Designer_Later=Restart later +StyleAlignment-Top=\u9760\u4E0A\u5C0D\u9F4A +ReportServerP-First=\u9996\u9801 +Not_Exist=\u4E0D\u5B58\u5728 +FR-Remote_File_is_Locked=\u60A8\u6240\u8981\u6253\u958B\u7684\u5831\u8868\u6B63\u5728\u88AB\u5176\u4ED6\u4EBA\u7DE8\u8F2F\uFF0C\u8ACB\u7A0D\u5019\u6253\u958B +Apply=\u61C9\u7528 +Sytle-Indentation=\u7E2E\u9032 +Parameter-Float=\u55AE\u7CBE\u5EA6\u578B +HF-Center_Section=\u4E2D\u9593\u5340\u57DF +Form-Double_quotes=\u96D9\u5F15\u865F +M_File-Export-Word=Word\u683C\u5F0F +M_File-Export-Text=\u6587\u5B57\u6A94\u6848(\u88FD\u9304\u7B26\u5206\u9694) +PageSetup-First_Page_Number=\u8D77\u59CB\u9801\u78BC +Execute=\u57F7\u884C +Task=\u4EFB\u52D9 +Custom_Button_Type_Submit=\u63D0\u4EA4 +FR-Designer-Widget_Settings=\u63A7\u5236\u9805\u8A2D\u5B9A +IS_Need_Password=\u9700\u8981\u5BC6\u78BC +PageSetup-Horizontally=\u6C34\u5E73\u7F6E\u4E2D +No_Editor_Property_Definition=\u8A72\u7DE8\u8F2F\u5668\u6C92\u6709\u5C6C\u6027\u5B9A\u7FA9 +Env-Remote_Server=\u9060\u7A0B\u4F3A\u670D\u5668 +FR-Utils_Background=\u80CC\u666F +FR-Designer-Plugin_Warning=Warning +Server-version-info=\u60A8\u7576\u524D\u6253\u958B\u7684\u6A21\u677F\u6A94\u6848\u662F\u7531\u66F4\u9AD8\u7248\u672C\u7684\u8A2D\u8A08\u5668\u88FD\u4F5C\u7684\uFF0C\u6253\u958B\u6703\u6709\u51FA\u932F\u6216\u8005\u4E1F\u5931\u539F\u6709\u6A21\u677F\u5C6C\u6027\u7684\u98A8\u96AA\u3002\u5047\u5982\u9700\u8981\u6253\u958B\u6B64\u6A21\u677F\u8ACB\u60A8\u5C07\u60A8\u7684\u8A2D\u8A08\u5668\u5347\u7D1A\u81F3 +CellWrite-Page_After_Row=\u5217\u5F8C\u5206\u9801 +HF-Right_Section=\u53F3\u5340\u57DF +PageSetup-Title_Start_Row=\u91CD\u8907\u6A19\u984C\u5217 +From=\u5F9E\u7B2C +Preference-Grid_Line_Color=\u7DB2\u683C\u7DDA\u984F\u8272 +RowTo=\u5217\u81F3\u7B2C +FR-Designer_ReportColumns-Repeat_Column=\u91CD\u8907\u6B04\u5E8F\u6B04 +M_Server-Function_Manager=\u51FD\u6578\u7BA1\u7406\u5668 +KeyWord=\u95DC\u9375\u5B57 +DS-Multi_Dimensional_Database=\u591A\u7DAD\u8CC7\u6599\u5EAB +BiasD-Slope_Line=\u659C\u7DDA +Tue=\u4E8C +ReportServerP-Last=\u672B\u9801 +FR-Base_Columns=\u6B04 +SpecifiedG-Leave_in_their_own_groups=\u7559\u5728\u5404\u81EA\u7684\u7D44\u5167 +LOG-Please_Wait=\u8ACB\u7A0D\u5019 +Form-ToolBar=\u8868\u55AE\u5DE5\u5177\u6B04 +FR-Base_sure_remove_item=\u4F60\u78BA\u5BE6\u6C7A\u5B9A\u522A\u9664\u9078\u4E2D\u7684\u9805 +Component_Scale=\u5143\u4EF6\u7E2E\u653E +Hyperlink-Use_CJK_to_encode_parameter=\u4F7F\u7528CJK\u8655\u7406\u53C3\u6578 +LOG-Has_Been_Openned=\u5DF2\u7D93\u6253\u958B +FR-Designer-Dependence= +ECP_error_pwd=\u5BC6\u78BC\u932F\u8AA4 +REPORTLET=\u8A2A\u554F\u6A21\u677F\u7684\u8DEF\u5F91\u7684\u53C3\u6578\u3002 +RWA-Column_Offset=\u6B04\u504F\u79FB +Forecast=\u9810\u6E2C +Light_Orange=\u6DFA\u6854\u9EC3 +StyleAlignment-Vertical=\u5782\u76F4\u5C0D\u9F4A +Form-List=\u6B04\u8868 +ParameterD-Show_Parameter_Window=\u986F\u793A\u53C3\u6578\u7A97\u9AD4 +FR-Designer_Set_Submit_Event=\u8A2D\u5B9A\u63D0\u4EA4\u4E8B\u4EF6 +Value_Percent=\u503C\u6240\u4F54\u6BD4\u4F8B +DBCP_MIN_EVICTABLE_IDLE_TIMEMILLIS=\u4FDD\u6301\u7A7A\u9591\u6700\u5C0F\u6642\u9593\u503C +Function-The_class_must_be_located_in=\u6539\u985E\u5FC5\u9808\u653E\u7F6E\u5728 +FR-Action_Sort=\u6392\u5E8F +DataFunction-Average=\u5E73\u5747 +FR-Designer_Show_in_Containing_Folder=\u6253\u958B\u6240\u5728\u8CC7\u6599\u593E +M_File-Export-Excel=Excel\u683C\u5F0F +DataFunction-Max=\u6700\u5927\u503C +FR-Designer_Form-Widget_Name=\u63A7\u5236\u9805\u540D +FS_End_Date=\u7D50\u675F\u65E5\u671F +Export-Excel-Simple=\u539F\u6A23\u532F\u51FA +ColumnTo=\u6B04\u81F3\u7B2C +SpecifiedG-Discard_all_others=\u4E1F\u68C4\u5176\u4ED6\u6240\u6709\u7684 +DS-TableData=\u8CC7\u6599\u96C6 +Form-DataTable=\u8CC7\u6599\u8868 +Sub_Report_ToolTips=\u5B50\u5831\u8868\u63D0\u793A +Right_Top=\u53F3\u4E0A +M_Edit-Merge_Cell=\u5408\u5E76\u5132\u5B58\u683C +FR-Designer_Restore_Default=\u6062\u5FA9\u9810\u8A2D +Component_Interval=\u5143\u4EF6\u9593\u9694 +Cover_None=\u5168\u4E0D\u8986\u84CB +Datasource-From_Database=\u8CC7\u6599\u5EAB\u8868 +Folder=\u76EE\u9304 +Form-Allow_Edit=\u5141\u8A31\u76F4\u63A5\u7DE8\u8F2F +M_Edit-Clear=\u6E05\u9664(A) +ParentCell_Setting=\u7236\u683C\u8A2D\u5B9A +Only_selected_cell_can_paste_only=\u53EA\u6709\u9078\u4E2D\u5132\u5B58\u683C\u6642\u624D\u53EF\u4EE5\u8CBC\u4E0A +M_Report-Report_Columns=\u5831\u8868\u5206\u6B04 +Unit_Hundred=\u4F70 +FR-Designer_DataTable-Build=\u6975\u901F\u5206\u5C64\u69CB\u5EFA +Widget-Form_Widget_Config=\u8868\u55AE\u63A7\u5236\u9805 +Server-version-tip-moreInfo=\u5EFA\u8B70\u60A8\u6240\u5C6C\u5718\u968A\u4F7F\u7528\u7684\u6211\u65B9FineReport\u7522\u54C1\u7684\u8A2D\u8A08\u5668\u7248\u672C\u865F\u4EE5\u53CA\u90E8\u7F72\u7684\u4F3A\u670D\u5668\u7248\u672C\u865F\u4FDD\u6301\u4E00\u81F4\uFF0C\u4EE5\u907F\u514D\u7248\u672C\u4E0D\u4E00\u81F4\u9020\u6210\u7684\u554F\u984C\u98A8\u96AA\u3002\u5047\u5982\u60A8\u6253\u958B\u66F4\u9AD8\u8A2D\u8A08\u5668\u7248\u672C\u88FD\u4F5C\u7684\u6A21\u677F\uFF0C\u53EF\u80FD\u6253\u958B\u51FA\u932F\uFF0C\u4E5F\u53EF\u80FD\u4E1F\u5931\u539F\u6709\u6A21\u677F\u5C6C\u6027\u3002\u5047\u5982\u60A8\u88FD\u4F5C\u7684\u6A21\u677F\u4F7F\u7528\u7684\u8A2D\u8A08\u5668\u7248\u672C\u9AD8\u65BC\u60A8\u6700\u7D42\u90E8\u7F72\u6240\u7528\u7684\u4F3A\u670D\u5668\u7248\u672C\uFF0C\u4F3A\u670D\u5668\u53EF\u80FD\u7121\u6CD5\u6B63\u5E38\u8F09\u5165\u60A8\u88FD\u4F5C\u7684\u6A21\u677F +Actions=\u4EFB\u52D9 +FR-Designer-Dependence_Connect_Server_Error=\u7121\u6CD5\u9023\u63A5\u670D\u52D9\u5668\uFF0C\u8ACB\u7A0D\u5F8C\u518D\u8A66 +High=\u9AD8 +HJS-Send_Failed=\u767C\u9001\u5931\u6557 +HJS-Message=\u5167\u5BB9 +File-Allow_Upload_Files=\u5141\u8A31\u4E0A\u50B3\u6A94\u6848\u985E\u578B +FR-Designer-Form-ToolBar_Chart=\u5716\u8868 +Thick_Bottom_Border_Line=\u7C97\u5730\u6846\u7DDA +FR-Action_Remove=\u522A\u9664 +FRFont-Style=\u5B57\u5F62 +Select_DataColumn=\u9078\u64C7\u8CC7\u6599\u6B04 +StartValue=\u958B\u59CB\u503C +SINGLE_FILE_UPLOAD=\u53EA\u652F\u6301\u55AE\u6A94\u6848\u4E0A\u50B3 +BackgroundTexture-Cork=\u8EDF\u6728\u585E +M_Format-Data_Map=\u8CC7\u6599\u5B57\u5178 +FR-mobile_native_analysis=\u539F\u751F\u89E3\u6790 +HighLight=\u9AD8\u5149 +FR-Designer_Dropdown-More-Preview=\u4E0B\u62C9\u7372\u5F97\u66F4\u591A..... +local=\u672C\u6A5F +FR-Designer_Gradation=\u5C64\u6B21 +PageSetup-Finis_Start_Column=\u91CD\u8907\u7D50\u5C3E\u6B04 +Env-Invalid_User_and_Password=\u975E\u6CD5\u7684\u5E33\u865F\u6216\u5BC6\u78BC +FR-Designer-Plugin_All_Plugins=All plugins +FR-Designer_Prepare_Export=\u958B\u59CB\u532F\u51FA\uFF0C\u8ACB\u7A0D\u5019 +DBCP_TEST_ON_RETURN=\u6B78\u9084\u93C8\u63A5\u524D\u6AA2\u9A57 +no-alternatives=\u6C92\u6709\u9078\u64C7\u9805 +FR-Designer_Submmit_WClass=\u5F8C\u53F0\u985E\u63D0\u4EA4 +M_Insert-Slope_Line=\u63D2\u5165\u659C\u7DDA +FR-Designer-Plugin_Plugin_Description=Description +ExpandD-Not_Expand=\u4E0D\u64F4\u5C55 +Utils-Bottom_to_Top=\u5F9E\u4E0B\u5230\u4E0A +Collect-Click\!_Get_user_information_code=\u9EDE\u64CA\!\u7372\u53D6\u7528\u6236\u8A0A\u606F\u78BC +FR-Already_exist=\u7576\u524D\u74B0\u5883\u5DF2\u5B58\u5728 +Send=\u767C\u9001 +M_Edit-Clear_All=\u5168\u90E8(A) +Brown_Orange=\u68D5\u9EC3 +PageSetup-Portrait=\u7E31\u5411 +FR-Designer_Form-RadioGroup=\u55AE\u9078\u6309\u9215\u7D44 +FR-Utils-App_AllFiles=\u6240\u6709\u6A94\u6848 +Popup=\u5F48\u51FA +Server_Charset=\u4F3A\u670D\u5668\u7DE8\u78BC +CellWrite-Repeat_Content_When_Paging=\u5206\u9801\u65B7\u958B\u6642\u503C\u91CD\u8907\u986F\u793A +Utils-No_Pagination=\u4E0D\u5206\u9801 +Form-NullLayout=\u7D55\u5C0D\u5B9A\u4F4D +ConditionB-Remove_bracket=\u53BB\u6389\u62EC\u865F +email=\u90F5\u7BB1 +Minute=\u5206\u9418 +FR-Designer-Plugin_Update=Plugins to update +alraedy_close=\u5DF2\u7D93\u95DC\u9589 +ComboCheckBox-End_Symbol=\u7D50\u675F\u7B26 +DataColumn=\u8CC7\u6599\u6B04 +Form-Password=\u5BC6\u78BC +FR-Background_Image_Adjust=\u9069\u61C9 +Export-Excel-PageToSheet=\u5206\u9801\u5206Sheet\u532F\u51FA +Edit-Row_Count=\u5217\u6578 +DS-Report_TableData=\u5831\u8868\u8CC7\u6599\u96C6 +Sche-Hour=\u6642 +Group_Count=Group Count +EndValue=\u7D50\u675F\u503C +FR-Designer_Sytle-Indentation=\u7E2E\u9032 +DownBarBorderStyleAndColor=\u8DCC\u67F1\u6A23\u5F0F +World=\u4E16\u754C +FR-Designer-Basic_Cancel=Cancel +Finally=\u6700\u5F8C +Low=\u4F4E +Please_Input_The_Key=\u8ACB\u8F38\u5165\u5C0D\u61C9\u5730\u5716\u4F7F\u7528\u7684key +Smart=\u667A\u80FD +Preference-Predefined=Predefined +Current_custom_global=\u7576\u524D\u5831\u8868\u6240\u7528\u81EA\u5B9A\u7FA9\u5168\u5C40\u6A23\u5F0F +FR-Designer-Plugin_Shop_Need_Install=\u60A8\u9084\u6C92\u6709\u63D2\u4EF6\u5546\u5E97\u7684\u8CC7\u6E90,\u662F\u5426\u4E0B\u8F09? +WEB-Pagination_Setting=\u5206\u9801\u9810\u89BD\u8A2D\u5B9A +RCodeDrawPix=\u50CF\u7D20 +FR-Designer-Widget-Style_Alpha=\u4E0D\u900F\u660E\u5EA6 +BorderLayout-North=\u5317 +HJS-Current_Page=\u7576\u524D\u9801 +Compile=Compile +Show_Blank_Row=\u88DC\u5145\u7A7A\u767D\u5217 +TableData_Dynamic_Parameter_Setting=\u52D5\u614B\u53C3\u6578\u6CE8\u5165 +FR-Background_Image_Default=\u9810\u8A2D +BackgroundTexture-WhiteMarble=\u767D\u8272\u5927\u7406\u77F3 +DataFunction-Sum=\u6C42\u548C +Collect-The_user_information_code_is_invalid=\u9019\u500B\u7528\u6236\u8A0A\u606F\u78BC\u662F\u975E\u6CD5\u7684 +Preference-Locale=Locale +M_File-Export-PDF=PDF\u683C\u5F0F +BiasD-From-lower_left_to_upper_right=\u7E3D\u5DE6\u4E0B\u5230\u53F3\u4E0A\u767C\u6563 +Border-Style=\u6846\u7DDA\u6A23\u5F0F +Sort=\u6392\u5E8F +Image-Image_Layout=\u5716\u7247\u5E03\u5C40 +Panel=\u9762\u677F +FR-Designer-Basic_Copy_Build_NO_OK=\u69CB\u5EFA\u7248\u672C\u865F\u5DF2\u7D93\u5FA9\u88FD\u5230\u526A\u8CBC\u677F +All_Border_Line=\u6240\u6709\u6846\u7DDA +FR-Utils-Please_Input_a_New_Name=\u8ACB\u8F38\u5165\u65B0\u7684\u540D\u5B57 +FR-Base_Formula_Plugin=\u63D2\u4EF6\u51FD\u6578 +Two_Rows_Of_Three_Grid=\u5169\u5217\u4E09\u6B04\u7684\u683C\u5B50 +FR-Designer_Certificate_Pass=https\u79D8\u9470 +Bubble-Series_Name=\u7CFB\u5217\u540D +M-New_Multi_Report=\u65B0\u589E\u8907\u5408\u5F0F\u5831\u8868 +BackgroundTexture-PinkTissuePaper=\u7C89\u8272\u7802\u7D19 +Preference-Support_Default_Parent_Calculate=\u9810\u8A2D\u7236\u683C\u8A08\u7B97 +Show_Blank_Column=\u88DC\u5145\u7A7A\u767D\u6B04 +BaiduMap=\u767E\u5EA6\u5730\u5716 +Report-Web_Attributes=\u5831\u8868Web\u5C6C\u6027 +FR-Designer_StyleAlignment-Wrap_Text=\u81EA\u52D5\u63DB\u5217 +Need=\u9700\u8981 +Parameter-Double=\u96D9\u7CBE\u5EA6\u578B +Config_Servlet=\u914D\u7F6E\u9060\u7A0B\u4F3A\u670D\u5668 +Form-Comma=\u9017\u865F +Verify=\u6821\u9A57 +PageSetup-Landscape=\u6A6B\u5411 +Weeks=\u500B\u661F\u671F +FR-Designer-Widget-Style_Title_Background=\u6A19\u984C\u80CC\u666F +Preference-Pagination_Line_Color=\u5206\u9801\u7DDA\u984F\u8272 +Test_URL=\u6E2C\u8A66\u9023\u63A5 +Fill_blank_Data=\u88DC\u5145\u7A7A\u767D\u8CC7\u6599 +ReportServerP-The_name_of_printer_cannot_be_null=\u5370\u8868\u6A5F\u7684\u540D\u5B57\u4E0D\u80FD\u70BA\u7A7A +FR-Designer-Basic_Copy_Activation_Key=Double click to copy key to clipboard +Continuum=\u76F8\u9130\u9023\u7E8C +BackgroundTexture-MediumWood=\u6DF1\u8272\u6728\u88FD +Datasource-Column_Index=\u6B04\u5E8F\u865F +Function-Function_File=\u51FD\u6578\u6A94\u6848 +Form-Component_Bounds=\u5143\u4EF6\u908A\u754C +Utils-Submit=\u63D0\u4EA4 +Conditions_formula=\u689D\u4EF6\u516C\u5F0F +M_Insert-Image=\u63D2\u5165\u5716\u7247 +FR-Designer-Plugin_Will_Be_Delete=Delete plugin +FormulaD-Functions=\u51FD\u6578 +Mobile_Terminal=\u884C\u52D5\u8A2D\u5099 +CheckBox=\u5FA9\u9078\u6846 +FR-Designer-Plugin_Install=Install +Sun=\u65E5 +FR-Designer_ToolBar_Bottom=\u5E95\u90E8\u5DE5\u5177\u6B04 +Widget-Width=\u63A7\u5236\u9805\u5BEC\u5EA6 +Series_Name=\u7CFB\u5217\u540D +Set_Row_Title_Start=\u8A2D\u5B9A\u91CD\u8907\u6A19\u984C\u5217 +HF-Default_Page=\u9810\u8A2D\u9801 +Env_Des=\u5982\u679C\u767B\u9304\u74B0\u5883\u4E2D\u7684\u5831\u8868\u5DE5\u7A0B\u555F\u7528\u4E86\u6B0A\u9650\uFF0C\u5E33\u865F\u548C\u5BC6\u78BC\u7684\u586B\u5BEB\u5FC5\u9808\u5C0D\u61C9\u767B\u9304\u74B0\u5883\u7684\u7528\u6236\u548C\u5BC6\u78BC\u3002 +Widget-User_Defined=\u9810\u5B9A\u7FA9 +Url_location=\u7D55\u5C0D\u8DEF\u5F91 +Disk_File=\u78C1\u789F\u6A94\u6848 +Inside=\u5167\u90E8 +FR-Designer_filedChosen=\u4F9D\u8CF4\u7684\u5B57\u6BB5 +ServerM-Predefined_Styles=\u9810\u5B9A\u7FA9\u6A23\u5F0F +is_need_word_adjust=\u4E0D\u56FA\u5B9A\u5217\u9AD8\u532F\u51FA +Background-Null=\u6C92\u6709\u80CC\u666F +PageSetup-Vertically=\u5782\u76F4\u7F6E\u4E2D +FR-Designer_Root=\u6839\u7BC0\u9EDE +FR-Designer_Form-TextArea=\u6587\u672C\u57DF +ReportServerP-Import_JavaScript=\u5F15\u7528JavaScript +Form-TableTree=\u8868\u683C\u6A39 +Opened=\u5DF2\u958B\u5553 +M_Edit-Delete=\u522A\u9664(D) +Widget-Form_Widget_Container=\u8868\u55AE\u5BB9\u5668 +BindColumn-Summary=\u532F\u7E3D +Sche-Second=\u79D2 +Server-Open_Service_Manager=\u6253\u958B\u4F3A\u670D\u5668\u7BA1\u7406\u5668 +FRFont-Effects=\u7279\u6B8A\u6548\u679C +OtherGroup_Name=\u5176\u4ED6\u7D44\u7684\u540D\u5B57 +Specify=\u6307\u5B9A +Highlight-Click_to_Choose_Property_To_Modify=\u9EDE\u64CA\u9078\u64C7\u8981\u6539\u8B8A\u7684\u5C6C\u6027 +triggered=\u88AB\u89F8\u767C +Double_Bottom_BorderLine=\u96D9\u5E95\u6846\u7DDA +M_Insert-Sub_Report=\u63D2\u5165\u5B50\u5831\u8868 +Unit_Ten=\u5341 +Polybolck=\u805A\u5408\u584A +Select_sort_order=\u9078\u64C7\u6392\u6B04\u9806\u5E8F +HJS-Mail_to=\u6536\u4EF6\u4EBA +StyleAlignment-Left=\u9760\u5DE6\u5C0D\u9F4A +Two_Rows_Of_Two_Grid=\u5169\u5217\u5169\u6B04\u7684\u683C\u5B50 +FR-Designer-Form-Please_Drag_ParaPane=\u8ACB\u62D6\u5165\u53C3\u6578\u9762\u677F +Milliseconds=\u6BEB\u79D2 +DataFunction-None=\u7121 +Delivery=\u50B3\u905E +ColumnSpan=\u6B04\u8DE8\u5EA6 +StyleAlignment-Bottom=\u9760\u4E0B\u5C0D\u9F4A +Read_failure=\u8B80\u53D6\u5931\u6557\uFF0C\u53EF\u80FD\u6E90\u6A94\u6848\u5DF2\u640D\u58DE +Verify-Verify=\u8CC7\u6599\u6821\u9A57 +FR-Designer-Widget-Style_Title_Format=\u6A19\u984C\u683C\u5F0F +FR-Designer_Edit_String_To_Formula=\u662F\u5426\u5C07\u5B57\u5143\u4E32\u7DE8\u8F2F\u70BA\u516C\u5F0F +FR-Base_UnSignIn=\u672A\u767B\u9304 +Every=\u6BCF +CellWrite-Preview_Cell_Content=\u9810\u89BD\u5132\u5B58\u683C\u5167\u5BB9 +FormulaD-Data_Fields=\u8CC7\u6599\u9805 \ No newline at end of file