From 658e5912b06b62df1b11e28bf12f469960474f77 Mon Sep 17 00:00:00 2001 From: Lee Date: Thu, 28 Apr 2016 19:48:54 +0800 Subject: [PATCH 01/54] =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=99=A8=E8=B5=84?= =?UTF-8?q?=E8=AE=AF=E6=A1=86=E5=85=BC=E5=AE=B9=EF=BC=8C=E6=96=B0=E7=9A=84?= =?UTF-8?q?=E8=B5=84=E8=AE=AF=E6=A1=86=E6=8E=A5=E5=8F=97=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/design/mainframe/bbs/bbs.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer/src/com/fr/design/mainframe/bbs/bbs.properties b/designer/src/com/fr/design/mainframe/bbs/bbs.properties index 44db03d46e..0a387ef9ea 100644 --- a/designer/src/com/fr/design/mainframe/bbs/bbs.properties +++ b/designer/src/com/fr/design/mainframe/bbs/bbs.properties @@ -16,4 +16,4 @@ USER2=\u963F\u8FEA(\u8C22\u8FEA) USER3=bingjie(\u5F20\u8BB0\u82B1) USER4=\u6D77\u7EF5\u5B9D\u5B9D(\u90DD\u6B63) VERIFY_URL=http://www.finereporthelp.com:8081/bbs/ReportServer?op=bbs&cmd=verify -UPDATE_INFO_URL=http://bbs.finereport.com/source/plugin/infor/infor.html +UPDATE_INFO_URL=http://bbs.finereport.com/source/plugin/infor/newinfor.html From 05c3e3b86ea4c41185e4f610bcb54e88967291af Mon Sep 17 00:00:00 2001 From: Lee Date: Mon, 16 May 2016 23:51:36 +0800 Subject: [PATCH 02/54] =?UTF-8?q?=E6=96=B0=E5=8A=9F=E8=83=BD=E5=B7=B2?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=EF=BC=8C=E6=89=8B=E6=9C=BA=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E6=9C=80=E5=A4=A7=E9=AB=98=E5=BA=A6=E7=9A=84=E9=99=90=E5=88=B6?= =?UTF-8?q?=EF=BC=8C=E6=B5=8B=E8=AF=95=E5=8F=AF=E8=A1=8C=E3=80=82=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E9=AB=98=E5=BA=A6=E6=AF=94=EF=BC=9A0.75=EF=BC=8875%?= =?UTF-8?q?=EF=BC=89=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/designer/creator/XElementCase.java | 103 ++++++++++++------ 1 file changed, 69 insertions(+), 34 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 32af5487a2..c0c859f1f8 100644 --- a/designer_form/src/com/fr/design/designer/creator/XElementCase.java +++ b/designer_form/src/com/fr/design/designer/creator/XElementCase.java @@ -7,9 +7,7 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.mainframe.CoverReportPane; import com.fr.design.mainframe.EditingMouseListener; import com.fr.design.mainframe.FormDesigner; -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.editors.*; import com.fr.design.mainframe.widget.renderer.LayoutBorderStyleRenderer; import com.fr.design.mainframe.widget.renderer.PaddingMarginCellRenderer; import com.fr.form.FormElementCaseContainerProvider; @@ -53,37 +51,74 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme * @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("borderStyle", this.data.getClass()).setEditorClass( - WLayoutBorderStyleEditor.class).setRendererClass(LayoutBorderStyleRenderer.class).setI18NName( - Inter.getLocText("FR-Designer-Widget_Style")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced") - .setPropertyChangeListener(new PropertyChangeAdapter() { - - @Override - public void propertyChange() { - initStyle(); - } - }), - new CRPropertyDescriptor("margin", this.data.getClass()).setEditorClass(PaddingMarginEditor.class) - .setRendererClass(PaddingMarginCellRenderer.class).setI18NName(Inter.getLocText("FR-Layout_Padding")) - .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), - new CRPropertyDescriptor("showToolBar", this.data.getClass()).setEditorClass(BooleanEditor.class) - .setI18NName(Inter.getLocText("Form-EC_toolbar")) - .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), - - }; - - FormElementCaseEditorProcessor processor = ExtraDesignClassManager.getInstance().getPropertyTableEditor(); - if (processor == null){ - return propertyTableEditor; - } - PropertyDescriptor[] extraEditor = processor.createPropertyDescriptor(this.data.getClass()); - return (CRPropertyDescriptor[]) ArrayUtils.addAll(propertyTableEditor, extraEditor); - } + public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { + CRPropertyDescriptor[] crp = ((ElementCaseEditor) data).isHeightRestrict() ? revealHeightLimit() : getDefault(); + FormElementCaseEditorProcessor processor = ExtraDesignClassManager.getInstance().getPropertyTableEditor(); + if (processor == null) { + return crp; + } + PropertyDescriptor[] extraEditor = processor.createPropertyDescriptor(this.data.getClass()); + return (CRPropertyDescriptor[]) ArrayUtils.addAll(crp, extraEditor); + } + + protected CRPropertyDescriptor createNonListenerProperties(int i) throws IntrospectionException { + CRPropertyDescriptor[] propertyTableEditor = { + new CRPropertyDescriptor("widgetName", this.data.getClass()) + .setI18NName(Inter.getLocText("Form-Widget_Name")), + new CRPropertyDescriptor("borderStyle", this.data.getClass()).setEditorClass( + WLayoutBorderStyleEditor.class).setRendererClass(LayoutBorderStyleRenderer.class).setI18NName( + Inter.getLocText("FR-Designer-Widget_Style")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), + new CRPropertyDescriptor("margin", this.data.getClass()).setEditorClass(PaddingMarginEditor.class) + .setRendererClass(PaddingMarginCellRenderer.class).setI18NName(Inter.getLocText("FR-Layout_Padding")) + .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), + new CRPropertyDescriptor("showToolBar", this.data.getClass()).setEditorClass(BooleanEditor.class) + .setI18NName(Inter.getLocText("Form-EC_toolbar")) + .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), + new CRPropertyDescriptor("heightRestrict", this.data.getClass()).setEditorClass(InChangeBooleanEditor.class) + .setI18NName(Inter.getLocText("Form-EC_heightrestrict")) + .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), + new CRPropertyDescriptor("heightPercent", this.data.getClass()).setEditorClass(DoubleEditor.class) + .setI18NName(Inter.getLocText("Form-EC_heightpercent")) + .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced") + }; + return propertyTableEditor[i]; + } + + protected CRPropertyDescriptor[] revealHeightLimit() throws IntrospectionException { + return new CRPropertyDescriptor[] { + createNonListenerProperties(0), + createNonListenerProperties(1). + setPropertyChangeListener(new PropertyChangeAdapter() { + + @Override + public void propertyChange() { + initStyle(); + } + }), + createNonListenerProperties(2), + createNonListenerProperties(3), + createNonListenerProperties(4), + createNonListenerProperties(5) + }; + } + + protected CRPropertyDescriptor[] getDefault() throws IntrospectionException { + return new CRPropertyDescriptor[] { + createNonListenerProperties(0), + createNonListenerProperties(1). + setPropertyChangeListener(new PropertyChangeAdapter() { + + @Override + public void propertyChange() { + initStyle(); + } + }), + createNonListenerProperties(2), + createNonListenerProperties(3), + createNonListenerProperties(4) + }; + } + @Override protected String getIconName() { From e294105982aa64bd6ac0189f01480050f1daa943 Mon Sep 17 00:00:00 2001 From: Lee Date: Mon, 16 May 2016 23:56:48 +0800 Subject: [PATCH 03/54] =?UTF-8?q?=E4=B8=8A=E4=B8=8A=E6=AC=A1=E5=AF=B9?= =?UTF-8?q?=E8=B5=84=E8=AE=AF=E6=A1=86=E7=9A=84=E6=9B=B4=E6=94=B9=E6=92=A4?= =?UTF-8?q?=E9=94=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/design/mainframe/bbs/bbs.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer/src/com/fr/design/mainframe/bbs/bbs.properties b/designer/src/com/fr/design/mainframe/bbs/bbs.properties index 0a387ef9ea..44db03d46e 100644 --- a/designer/src/com/fr/design/mainframe/bbs/bbs.properties +++ b/designer/src/com/fr/design/mainframe/bbs/bbs.properties @@ -16,4 +16,4 @@ USER2=\u963F\u8FEA(\u8C22\u8FEA) USER3=bingjie(\u5F20\u8BB0\u82B1) USER4=\u6D77\u7EF5\u5B9D\u5B9D(\u90DD\u6B63) VERIFY_URL=http://www.finereporthelp.com:8081/bbs/ReportServer?op=bbs&cmd=verify -UPDATE_INFO_URL=http://bbs.finereport.com/source/plugin/infor/newinfor.html +UPDATE_INFO_URL=http://bbs.finereport.com/source/plugin/infor/infor.html From 301628c23b6d9d5afc157c517c9d743022c138bc Mon Sep 17 00:00:00 2001 From: vito Date: Tue, 17 May 2016 09:24:13 +0800 Subject: [PATCH 04/54] =?UTF-8?q?=E7=A7=BB=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/design/report/ExcelExportPane.java | 1 - designer/src/com/fr/design/report/ReportExportAttrPane.java | 1 - designer_base/src/com/fr/design/fun/ExportAttrTabProvider.java | 1 + .../src/com/fr/design/{fun => report}/AbstractExportPane.java | 2 +- 4 files changed, 2 insertions(+), 3 deletions(-) rename designer_base/src/com/fr/design/{fun => report}/AbstractExportPane.java (88%) diff --git a/designer/src/com/fr/design/report/ExcelExportPane.java b/designer/src/com/fr/design/report/ExcelExportPane.java index f2b699f3b9..3bd7378c97 100644 --- a/designer/src/com/fr/design/report/ExcelExportPane.java +++ b/designer/src/com/fr/design/report/ExcelExportPane.java @@ -4,7 +4,6 @@ package com.fr.design.report; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import com.fr.design.fun.AbstractExportPane; import com.fr.design.gui.ilable.UILabel; import javax.swing.*; diff --git a/designer/src/com/fr/design/report/ReportExportAttrPane.java b/designer/src/com/fr/design/report/ReportExportAttrPane.java index 93a690bb91..f3df79528e 100644 --- a/designer/src/com/fr/design/report/ReportExportAttrPane.java +++ b/designer/src/com/fr/design/report/ReportExportAttrPane.java @@ -4,7 +4,6 @@ import javax.swing.*; import com.fr.design.ExtraDesignClassManager; import com.fr.design.dialog.BasicPane; -import com.fr.design.fun.AbstractExportPane; import com.fr.design.fun.ExportAttrTabProvider; import com.fr.design.gui.frpane.UITabbedPane; import com.fr.general.Inter; diff --git a/designer_base/src/com/fr/design/fun/ExportAttrTabProvider.java b/designer_base/src/com/fr/design/fun/ExportAttrTabProvider.java index d16db4ea1b..7a71615316 100644 --- a/designer_base/src/com/fr/design/fun/ExportAttrTabProvider.java +++ b/designer_base/src/com/fr/design/fun/ExportAttrTabProvider.java @@ -1,5 +1,6 @@ package com.fr.design.fun; +import com.fr.design.report.AbstractExportPane; import com.fr.stable.fun.Level; import javax.swing.*; diff --git a/designer_base/src/com/fr/design/fun/AbstractExportPane.java b/designer_base/src/com/fr/design/report/AbstractExportPane.java similarity index 88% rename from designer_base/src/com/fr/design/fun/AbstractExportPane.java rename to designer_base/src/com/fr/design/report/AbstractExportPane.java index bb585a02d2..efbde8d37d 100644 --- a/designer_base/src/com/fr/design/fun/AbstractExportPane.java +++ b/designer_base/src/com/fr/design/report/AbstractExportPane.java @@ -1,4 +1,4 @@ -package com.fr.design.fun; +package com.fr.design.report; import com.fr.design.dialog.BasicPane; From d5e6b3fcdf9403945f398a8a4a6c9af3aa8a639d Mon Sep 17 00:00:00 2001 From: Lee Date: Tue, 17 May 2016 10:17:21 +0800 Subject: [PATCH 05/54] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=8F=AF=E8=AF=BB?= =?UTF-8?q?=E6=80=A7=E6=94=B9=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/designer/creator/XElementCase.java | 62 +++++++++---------- 1 file changed, 28 insertions(+), 34 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 c0c859f1f8..0e45b426d9 100644 --- a/designer_form/src/com/fr/design/designer/creator/XElementCase.java +++ b/designer_form/src/com/fr/design/designer/creator/XElementCase.java @@ -23,6 +23,8 @@ import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.beans.IntrospectionException; import java.beans.PropertyDescriptor; +import java.util.ArrayList; +import java.util.List; public class XElementCase extends XBorderStyleWidgetCreator implements FormElementCaseContainerProvider{ private UILabel imageLable; @@ -61,13 +63,20 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme return (CRPropertyDescriptor[]) ArrayUtils.addAll(crp, extraEditor); } - protected CRPropertyDescriptor createNonListenerProperties(int i) throws IntrospectionException { + protected List createNonListenerProperties() throws IntrospectionException { CRPropertyDescriptor[] propertyTableEditor = { new CRPropertyDescriptor("widgetName", this.data.getClass()) .setI18NName(Inter.getLocText("Form-Widget_Name")), new CRPropertyDescriptor("borderStyle", this.data.getClass()).setEditorClass( WLayoutBorderStyleEditor.class).setRendererClass(LayoutBorderStyleRenderer.class).setI18NName( - Inter.getLocText("FR-Designer-Widget_Style")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), + Inter.getLocText("FR-Designer-Widget_Style")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"). + setPropertyChangeListener(new PropertyChangeAdapter() { + + @Override + public void propertyChange() { + initStyle(); + } + }), new CRPropertyDescriptor("margin", this.data.getClass()).setEditorClass(PaddingMarginEditor.class) .setRendererClass(PaddingMarginCellRenderer.class).setI18NName(Inter.getLocText("FR-Layout_Padding")) .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), @@ -76,47 +85,32 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), new CRPropertyDescriptor("heightRestrict", this.data.getClass()).setEditorClass(InChangeBooleanEditor.class) .setI18NName(Inter.getLocText("Form-EC_heightrestrict")) - .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), - new CRPropertyDescriptor("heightPercent", this.data.getClass()).setEditorClass(DoubleEditor.class) - .setI18NName(Inter.getLocText("Form-EC_heightpercent")) .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced") }; - return propertyTableEditor[i]; + + List defaultList = new ArrayList<>(); + + for (CRPropertyDescriptor propertyDescriptor : propertyTableEditor) { + defaultList.add(propertyDescriptor); + } + return defaultList; } protected CRPropertyDescriptor[] revealHeightLimit() throws IntrospectionException { - return new CRPropertyDescriptor[] { - createNonListenerProperties(0), - createNonListenerProperties(1). - setPropertyChangeListener(new PropertyChangeAdapter() { + CRPropertyDescriptor heightLimitProperty = new CRPropertyDescriptor("heightPercent", this.data.getClass()) + .setEditorClass(DoubleEditor.class) + .setI18NName(Inter.getLocText("Form-EC_heightpercent")) + .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"); - @Override - public void propertyChange() { - initStyle(); - } - }), - createNonListenerProperties(2), - createNonListenerProperties(3), - createNonListenerProperties(4), - createNonListenerProperties(5) - }; + ArrayList defaultList = (ArrayList) createNonListenerProperties(); + defaultList.add(heightLimitProperty); + + return defaultList.toArray(new CRPropertyDescriptor[defaultList.size()]); } protected CRPropertyDescriptor[] getDefault() throws IntrospectionException { - return new CRPropertyDescriptor[] { - createNonListenerProperties(0), - createNonListenerProperties(1). - setPropertyChangeListener(new PropertyChangeAdapter() { - - @Override - public void propertyChange() { - initStyle(); - } - }), - createNonListenerProperties(2), - createNonListenerProperties(3), - createNonListenerProperties(4) - }; + ArrayList defaultList = (ArrayList) createNonListenerProperties(); + return defaultList.toArray(new CRPropertyDescriptor[defaultList.size()]); } From 3b4d25b2ab2414cc4e781cb72e482016d0ad7b3b Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Tue, 17 May 2016 12:59:43 +0800 Subject: [PATCH 06/54] =?UTF-8?q?=E8=87=AA=E9=80=82=E5=BA=94=E7=95=8C?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/ReportMobileAttrAction.java | 74 +++++++++++ .../com/fr/design/mainframe/JWorkBook.java | 3 +- .../report/mobile/MobileRadioGroupPane.java | 118 ++++++++++++++++++ .../report/mobile/ReportMobileAttrPane.java | 62 +++++++++ .../com/fr/design/images/m_report/mobile.png | Bin 0 -> 928 bytes .../fr/design/designer/creator/XCreator.java | 10 ++ .../design/designer/creator/XElementCase.java | 8 +- .../designer/creator/XWTitleLayout.java | 13 +- .../mobile/ElementCasePropertyTable.java | 68 ++++++++++ .../mobile/ElementCasePropertyUI.java | 29 +++++ .../mobile/MobileFitAlignmentItems.java | 25 ++++ .../properties/mobile/MobileFitEditor.java | 50 ++++++++ .../properties/mobile/MobileFitRender.java | 10 ++ .../properties/mobile/MobileFitWrapper.java | 9 ++ .../design/gui/xtable/PropertyGroupModel.java | 4 + .../design/mainframe/WidgetPropertyPane.java | 43 +++++-- 16 files changed, 508 insertions(+), 18 deletions(-) create mode 100644 designer/src/com/fr/design/actions/report/ReportMobileAttrAction.java create mode 100644 designer/src/com/fr/design/report/mobile/MobileRadioGroupPane.java create mode 100644 designer/src/com/fr/design/report/mobile/ReportMobileAttrPane.java create mode 100644 designer_base/src/com/fr/design/images/m_report/mobile.png create mode 100644 designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java create mode 100644 designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyUI.java create mode 100644 designer_form/src/com/fr/design/designer/properties/mobile/MobileFitAlignmentItems.java create mode 100644 designer_form/src/com/fr/design/designer/properties/mobile/MobileFitEditor.java create mode 100644 designer_form/src/com/fr/design/designer/properties/mobile/MobileFitRender.java create mode 100644 designer_form/src/com/fr/design/designer/properties/mobile/MobileFitWrapper.java diff --git a/designer/src/com/fr/design/actions/report/ReportMobileAttrAction.java b/designer/src/com/fr/design/actions/report/ReportMobileAttrAction.java new file mode 100644 index 0000000000..3248370ef6 --- /dev/null +++ b/designer/src/com/fr/design/actions/report/ReportMobileAttrAction.java @@ -0,0 +1,74 @@ +package com.fr.design.actions.report; + +import com.fr.base.BaseUtils; +import com.fr.design.actions.JWorkBookAction; +import com.fr.design.dialog.BasicDialog; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.JWorkBook; +import com.fr.design.menu.MenuKeySet; +import com.fr.design.report.mobile.ReportMobileAttrPane; +import com.fr.general.Inter; +import com.fr.main.TemplateWorkBook; +import com.fr.report.mobile.ElementCaseMobileAttr; + +import javax.swing.*; +import java.awt.event.ActionEvent; + +/** + * 设置cpt在移动端的一些属性, 包括自适应以及以后可能加展示区域之类的东西. + * + * Created by Administrator on 2016/5/12/0012. + */ +public class ReportMobileAttrAction extends JWorkBookAction{ + + public ReportMobileAttrAction(JWorkBook jwb) { + super(jwb); + this.setMenuKeySet(REPORT_APP_ATTR); + this.setName(getMenuKeySet().getMenuKeySetName() + "..."); + this.setMnemonic(getMenuKeySet().getMnemonic()); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_report/mobile.png")); + } + + /** + * 执行动作 + * + * @return 是否执行成功 + */ + public void actionPerformed(ActionEvent evt) { + final JWorkBook jwb = getEditingComponent(); + if (jwb == null) { + return; + } + final TemplateWorkBook wbTpl = jwb.getTarget(); + ElementCaseMobileAttr mobileAttr = wbTpl.getReportMobileAttr(); + + final ReportMobileAttrPane mobileAttrPane = new ReportMobileAttrPane(); + mobileAttrPane.populateBean(mobileAttr); + BasicDialog dialog = mobileAttrPane.showMediumWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { + @Override + public void doOk() { + wbTpl.setReportMobileAttr(mobileAttrPane.updateBean()); + jwb.fireTargetModified(); + } + }); + dialog.setVisible(true); + } + + private static final MenuKeySet REPORT_APP_ATTR = new MenuKeySet() { + @Override + public char getMnemonic() { + return 'P'; + } + + @Override + public String getMenuName() { + return Inter.getLocText("FR-Designer_Mobile-Attr"); + } + + @Override + public KeyStroke getKeyStroke() { + return null; + } + }; +} diff --git a/designer/src/com/fr/design/mainframe/JWorkBook.java b/designer/src/com/fr/design/mainframe/JWorkBook.java index d3e63782df..1455ee011f 100644 --- a/designer/src/com/fr/design/mainframe/JWorkBook.java +++ b/designer/src/com/fr/design/mainframe/JWorkBook.java @@ -7,10 +7,10 @@ import com.fr.design.DesignModelAdapter; import com.fr.design.ExtraDesignClassManager; import com.fr.design.actions.AllowAuthorityEditAction; import com.fr.design.actions.ExitAuthorityEditAction; -import com.fr.design.actions.core.WorkBookSupportable; import com.fr.design.actions.file.WebPreviewUtils; import com.fr.design.actions.file.export.*; import com.fr.design.actions.report.ReportExportAttrAction; +import com.fr.design.actions.report.ReportMobileAttrAction; import com.fr.design.actions.report.ReportParameterAction; import com.fr.design.actions.report.ReportWebAttrAction; import com.fr.design.constants.UIConstants; @@ -478,6 +478,7 @@ public class JWorkBook extends JTemplate { new ReportWebAttrAction(this), new ReportExportAttrAction(this), new ReportParameterAction(this), + new ReportMobileAttrAction(this), new NameSeparator(Inter.getLocText("Utils-Current_Sheet")), }, this.reportComposite.getEditingReportComponent().shortcut4TemplateMenu()); } diff --git a/designer/src/com/fr/design/report/mobile/MobileRadioGroupPane.java b/designer/src/com/fr/design/report/mobile/MobileRadioGroupPane.java new file mode 100644 index 0000000000..85cee58e8f --- /dev/null +++ b/designer/src/com/fr/design/report/mobile/MobileRadioGroupPane.java @@ -0,0 +1,118 @@ +package com.fr.design.report.mobile; + +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.gui.ibutton.UIRadioButton; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.base.mobile.MobileFitAttrState; +import com.fr.stable.StringUtils; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Administrator on 2016/5/16/0016. + */ +public class MobileRadioGroupPane extends BasicBeanPane{ + + private List radioButtons = new ArrayList(); + + public MobileRadioGroupPane(String title) { + initComponents(title); + } + + private void initComponents(String title) { + double p = TableLayout.PREFERRED; + double[] rowSize = {p}; + double[] columnSize = {p, p, p, p, p}; + + UIRadioButton defaultRadio = new UIRadioButton(MobileFitAttrState.DEFAULT.description()); + defaultRadio.setSelected(true); + UIRadioButton horizonRadio = new UIRadioButton(MobileFitAttrState.HORIZONTAL.description()); + UIRadioButton verticalRadio = new UIRadioButton(MobileFitAttrState.VERTICAL.description()); + UIRadioButton notFitRadio = new UIRadioButton(MobileFitAttrState.NONE.description()); + + addToButtonGroup(defaultRadio, horizonRadio, verticalRadio, notFitRadio); + + Component[][] components = new Component[][]{ + new Component[]{new UILabel(title), defaultRadio, horizonRadio, verticalRadio, notFitRadio} + }; + JPanel fitOpsPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); + fitOpsPane.setBorder(BorderFactory.createEmptyBorder(10, 13, 10, 10)); + + this.add(fitOpsPane); + } + + private void addToButtonGroup(UIRadioButton... radios) { + ButtonGroup buttonGroup = new ButtonGroup(); + for (UIRadioButton radio : radios) { + radioButtons.add(radio); + buttonGroup.add(radio); + } + } + + /** + * 设置按钮状态 + */ + public void setEnabled(boolean enabled) { + for (UIRadioButton radioButton : radioButtons) { + radioButton.setEnabled(enabled); + } + } + + /** + * 获取当前选中的按钮index + * + * @return 按钮index + */ + public int getSelectRadioIndex() { + for (int i = 0, len = radioButtons.size(); i < len; i++) { + if (radioButtons.get(i).isSelected()) { + return i; + } + } + + return 0; + } + + /** + * 选中指定index的按钮 + */ + public void selectIndexButton(int index) { + if (index < 0 || index > radioButtons.size() - 1) { + return; + } + + UIRadioButton button = radioButtons.get(index); + button.setSelected(true); + } + + /** + * 给所有的按钮加上监听 + */ + public void addActionListener(ActionListener actionListener) { + for (UIRadioButton radioButton : radioButtons) { + radioButton.addActionListener(actionListener); + } + } + + @Override + public void populateBean(MobileFitAttrState ob) { + selectIndexButton(ob.getState()); + } + + @Override + public MobileFitAttrState updateBean() { + int index = getSelectRadioIndex(); + return MobileFitAttrState.parse(index); + } + + @Override + protected String title4PopupWindow() { + return StringUtils.EMPTY; + } +} diff --git a/designer/src/com/fr/design/report/mobile/ReportMobileAttrPane.java b/designer/src/com/fr/design/report/mobile/ReportMobileAttrPane.java new file mode 100644 index 0000000000..67f0ab825b --- /dev/null +++ b/designer/src/com/fr/design/report/mobile/ReportMobileAttrPane.java @@ -0,0 +1,62 @@ +package com.fr.design.report.mobile; + +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.general.Inter; +import com.fr.report.mobile.ElementCaseMobileAttr; +import com.fr.base.mobile.MobileFitAttrState; + +import javax.swing.*; +import java.awt.*; + +/** + * Created by Administrator on 2016/5/12/0012. + */ +public class ReportMobileAttrPane extends BasicBeanPane{ + + //横屏设置面板 + private MobileRadioGroupPane horizionPane; + //竖屏设置面板 + private MobileRadioGroupPane verticalPane; + + public ReportMobileAttrPane() { + initComponents(); + } + + private void initComponents() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + JPanel borderPane = FRGUIPaneFactory.createTitledBorderPane(this.title4PopupWindow()); + + JPanel fitOpsPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + horizionPane = new MobileRadioGroupPane(Inter.getLocText("FR-Designer_Mobile-Horizontal")); + verticalPane = new MobileRadioGroupPane(Inter.getLocText("FR-Designer_Mobile-Vertical")); + fitOpsPane.add(horizionPane, BorderLayout.NORTH); + fitOpsPane.add(verticalPane, BorderLayout.SOUTH); + + borderPane.add(fitOpsPane); + this.add(borderPane); + } + + @Override + public void populateBean(ElementCaseMobileAttr ob) { + if (ob == null) { + ob = new ElementCaseMobileAttr(); + } + + horizionPane.populateBean(ob.getHorziontalAttr()); + verticalPane.populateBean(ob.getVerticalAttr()); + } + + @Override + public ElementCaseMobileAttr updateBean() { + MobileFitAttrState horizonState = horizionPane.updateBean(); + MobileFitAttrState verticalState = verticalPane.updateBean(); + + return new ElementCaseMobileAttr(horizonState, verticalState); + } + + @Override + protected String title4PopupWindow() { + return Inter.getLocText("FR-Designer_Fit-App"); + } +} diff --git a/designer_base/src/com/fr/design/images/m_report/mobile.png b/designer_base/src/com/fr/design/images/m_report/mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..69600f5154465877e70b70fb83597d6ecea2ef8d GIT binary patch literal 928 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>P#=1J2l)T-B#IQDo7|%2C!a7=KuP~pm)>g5 zS>0K?|Lx3HkXT+Bc`bMO+Nx43dW2{FKbJN{|K}$cBcl*Q11m!dD^p8| zhFz~O>H{_Sfov$wPb(=;EJ|hY%uP&B^-WCAOwLv?)3eaC&^0tr2sAWPsIV}LH#1Ry zS#M~mkWo@nV5P5LUS6)33DO0`KwWzIMd_?Ob4-CIOMpxc$tcZDva)i?PcF?(%`368 z3IHlCW-wg-e>cc>WHn&Bt*ks!Gt)Cl7>rEKULJOl1ga57G6$+AJTs*v1Ei$NNW=xG zL=s7fZ)R?4No7GQ1K3si1$pWAo5K9i%<&BYs$wuSwzM!bHU?5FonEX4DiK05CpfbT z7~Fbh-cC+m7kcFaWuuT}LxVgS(lT>Wfgzxuk)N9i3WuWn{1R|@q$UE)%C y=qIP->1O7p>%j$+^Yn|0lJyM@P0S1-q=C5}(3y$f8DfC8FnGH9xvX(); + CRPropertyDescriptor[] propertyTableEditor = null; + try { + propertyTableEditor = new CRPropertyDescriptor[]{ + new CRPropertyDescriptor("horziontalAttr", this.xCreator.toData().getClass()).setEditorClass(MobileFitEditor.class) + .setRendererClass(MobileFitRender.class) + .setI18NName(Inter.getLocText("FR-Designer_Mobile-Horizontal")) + .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, Inter.getLocText("FR-Designer_Fit-App")), + new CRPropertyDescriptor("verticalAttr", this.xCreator.toData().getClass()).setEditorClass(MobileFitEditor.class) + .setRendererClass(MobileFitRender.class) + .setI18NName(Inter.getLocText("FR-Designer_Mobile-Vertical")) + .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, Inter.getLocText("FR-Designer_Fit-App")) + + }; + } catch (IntrospectionException e) { + FRContext.getLogger().error(e.getMessage()); + } + + + groups.add(new PropertyGroup(new PropertyGroupModel(Inter.getLocText("FR-Designer_Fit-App"), xCreator, propertyTableEditor, designer))); + + TableModel model = new BeanTableModel(); + setModel(model); + this.repaint(); + } + + @Override + public void firePropertyEdit() { + } + + public void populate(FormDesigner designer) { + this.designer = designer; + initPropertyGroups(this.designer.getTarget()); + } +} diff --git a/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyUI.java b/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyUI.java new file mode 100644 index 0000000000..5e7721a2e6 --- /dev/null +++ b/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyUI.java @@ -0,0 +1,29 @@ +package com.fr.design.designer.properties.mobile; + +import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XElementCase; +import com.fr.design.fun.impl.AbstractWidgetPropertyUIProvider; +import com.fr.design.gui.itable.AbstractPropertyTable; +import com.fr.general.Inter; + +/** + * Created by Administrator on 2016/5/16/0016. + */ +public class ElementCasePropertyUI extends AbstractWidgetPropertyUIProvider{ + + private XCreator xCreator; + + public ElementCasePropertyUI(XElementCase xElementCase) { + this.xCreator = xElementCase; + } + + @Override + public AbstractPropertyTable createWidgetAttrTable() { + return new ElementCasePropertyTable(xCreator); + } + + @Override + public String tableTitle() { + return Inter.getLocText("FR-Designer_Mobile-Attr"); + } +} diff --git a/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitAlignmentItems.java b/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitAlignmentItems.java new file mode 100644 index 0000000000..094249bf50 --- /dev/null +++ b/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitAlignmentItems.java @@ -0,0 +1,25 @@ +package com.fr.design.designer.properties.mobile; + +import com.fr.base.mobile.MobileFitAttrState; +import com.fr.design.designer.properties.items.Item; +import com.fr.design.designer.properties.items.ItemProvider; + +public class MobileFitAlignmentItems implements ItemProvider{ + + private static Item[] VALUE_ITEMS; + + static { + MobileFitAttrState[] allStates = MobileFitAttrState.values(); + int len = allStates.length; + VALUE_ITEMS = new Item[len]; + for (int i = 0; i < len ; i++) { + VALUE_ITEMS[i] = new Item(allStates[i].description(), allStates[i]); + } + } + + @Override + public Item[] getItems() { + return VALUE_ITEMS; + } + +} diff --git a/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitEditor.java b/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitEditor.java new file mode 100644 index 0000000000..6591b90592 --- /dev/null +++ b/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitEditor.java @@ -0,0 +1,50 @@ +package com.fr.design.designer.properties.mobile; + +import com.fr.design.designer.properties.items.Item; +import com.fr.design.designer.properties.items.ItemProvider; +import com.fr.design.mainframe.widget.editors.ComboEditor; + +import java.util.Vector; + +public class MobileFitEditor extends ComboEditor{ + public MobileFitEditor() { + this(new MobileFitAlignmentItems()); + } + + public MobileFitEditor(ItemProvider provider) { + this(provider.getItems()); + } + + public MobileFitEditor(Item[] items) { + super(items); + } + + public MobileFitEditor(Vector items) { + super(items); + } + + @Override + public void setValue(Object value) { + if (value == null) { + return; + } + + Item item = new Item(value.toString(), value); + comboBox.setSelectedItem(item); + } + + @Override + public Object getValue() { + Item item = (Item) comboBox.getSelectedItem(); + return item.getValue(); + } + + /** + * 是否立即刷新 + * @return 是或者否 + */ + @Override + public boolean refreshInTime() { + return false; + } +} diff --git a/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitRender.java b/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitRender.java new file mode 100644 index 0000000000..6f560e4e36 --- /dev/null +++ b/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitRender.java @@ -0,0 +1,10 @@ +package com.fr.design.designer.properties.mobile; + +import com.fr.design.mainframe.widget.renderer.EncoderCellRenderer; + +public class MobileFitRender extends EncoderCellRenderer{ + + public MobileFitRender(){ + super(new MobileFitWrapper()); + } +} diff --git a/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitWrapper.java b/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitWrapper.java new file mode 100644 index 0000000000..164bcc5c06 --- /dev/null +++ b/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitWrapper.java @@ -0,0 +1,9 @@ +package com.fr.design.designer.properties.mobile; + +import com.fr.design.designer.properties.ItemWrapper; + +public class MobileFitWrapper extends ItemWrapper{ + public MobileFitWrapper(){ + super(new MobileFitAlignmentItems()); + } +} diff --git a/designer_form/src/com/fr/design/gui/xtable/PropertyGroupModel.java b/designer_form/src/com/fr/design/gui/xtable/PropertyGroupModel.java index 926cbcaa6b..143176553c 100644 --- a/designer_form/src/com/fr/design/gui/xtable/PropertyGroupModel.java +++ b/designer_form/src/com/fr/design/gui/xtable/PropertyGroupModel.java @@ -133,6 +133,10 @@ public class PropertyGroupModel extends AbstractPropertyGroupModel { editors[row].stopCellEditing(); } else { setValue(extendEditor.getValue(), row, 1); + + if (designer == null) { + return; + } if ("widgetName".equals(properties[row].getName())) { designer.getEditListenerTable().fireCreatorModified(creator, DesignerEvent.CREATOR_RENAMED); } else { diff --git a/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java b/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java index d0d011328c..57087597e5 100644 --- a/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java +++ b/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java @@ -1,23 +1,23 @@ package com.fr.design.mainframe; -import java.awt.BorderLayout; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.*; - import com.fr.base.BaseUtils; import com.fr.design.ExtraDesignClassManager; +import com.fr.design.designer.beans.events.DesignerEditListener; +import com.fr.design.designer.beans.events.DesignerEvent; +import com.fr.design.designer.properties.EventPropertyTable; +import com.fr.design.designer.properties.WidgetPropertyTable; import com.fr.design.fun.WidgetPropertyUIProvider; import com.fr.design.gui.frpane.UITabbedPane; -import com.fr.general.Inter; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.itable.AbstractPropertyTable; import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.designer.beans.events.DesignerEditListener; -import com.fr.design.designer.beans.events.DesignerEvent; -import com.fr.design.designer.properties.EventPropertyTable; -import com.fr.design.designer.properties.WidgetPropertyTable; +import com.fr.general.Inter; +import com.fr.stable.ArrayUtils; + +import javax.swing.*; +import java.awt.*; +import java.util.ArrayList; +import java.util.List; /** * 控件属性表Docking @@ -88,7 +88,7 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper tabbedPane.addTab(Inter.getLocText("Form-Properties"), psp); tabbedPane.addTab(Inter.getLocText("Form-Events"), esp); - WidgetPropertyUIProvider[] widgetAttrProviders = ExtraDesignClassManager.getInstance().getWidgetAttrProviders(); + WidgetPropertyUIProvider[] widgetAttrProviders = getExtraPropertyUIProviders(); for (WidgetPropertyUIProvider widgetAttrProvider : widgetAttrProviders) { AbstractPropertyTable propertyTable = widgetAttrProvider.createWidgetAttrTable(); widgetPropertyTables.add(propertyTable); @@ -106,6 +106,25 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper } } + /** + * 获取当前控件扩展的属性tab + * 来源有两个: + * 1, 各个控件从各自的Xcreator里扩展; + * 2, 所有的控件从插件里扩展. + * + * @return 扩展的tab + */ + private WidgetPropertyUIProvider[] getExtraPropertyUIProviders() { + FormSelection selection = designer.getSelectionModel().getSelection(); + WidgetPropertyUIProvider[] embeddedPropertyUIProviders = null; + if (selection != null && selection.getSelectedCreator() != null) { + embeddedPropertyUIProviders = selection.getSelectedCreator().getWidgetPropertyUIProviders(); + } + WidgetPropertyUIProvider[] widgetAttrProviders = ExtraDesignClassManager.getInstance().getWidgetAttrProviders(); + widgetAttrProviders = (WidgetPropertyUIProvider[]) ArrayUtils.addAll(embeddedPropertyUIProviders, widgetAttrProviders); + return widgetAttrProviders; + } + public void setEditingFormDesigner(BaseFormDesigner editor) { FormDesigner fd = (FormDesigner) editor; super.setEditingFormDesigner(fd); From eefa01daaefdafd974dd9aaa8ca5a5d104810434 Mon Sep 17 00:00:00 2001 From: richie Date: Tue, 17 May 2016 14:29:17 +0800 Subject: [PATCH 07/54] =?UTF-8?q?=20=E5=8D=95=E5=85=83=E6=A0=BCTag?= =?UTF-8?q?=E5=A2=9E=E9=87=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/fun/ExportToolBarProvider.java | 13 ++----------- .../com/fr/design/fun/GlobalListenerProvider.java | 6 +++++- .../src/com/fr/design/fun/HighlightProvider.java | 6 +----- .../design/fun/ServerTableDataDefineProvider.java | 3 +-- .../com/fr/design/fun/TableDataDefineProvider.java | 14 +++++++------- 5 files changed, 16 insertions(+), 26 deletions(-) diff --git a/designer_base/src/com/fr/design/fun/ExportToolBarProvider.java b/designer_base/src/com/fr/design/fun/ExportToolBarProvider.java index d09817401e..c2c560260e 100644 --- a/designer_base/src/com/fr/design/fun/ExportToolBarProvider.java +++ b/designer_base/src/com/fr/design/fun/ExportToolBarProvider.java @@ -6,9 +6,6 @@ import javax.swing.*; /** * 导出菜单设计器端拓展,用于控制该菜单是否在web端显示 - * @author focus - * @date Jul 2, 2015 - * @since 8.0 */ public interface ExportToolBarProvider extends Level{ @@ -16,8 +13,6 @@ public interface ExportToolBarProvider extends Level{ int CURRENT_LEVEL = 1; - - /** * * 用于添加 控制web端是否显示该菜单的checkbox的面板 @@ -28,16 +23,12 @@ public interface ExportToolBarProvider extends Level{ JPanel updateCenterPane(JPanel pane); /** - * 根据xml里面存的web段按钮显示状态更新对应的checkbox - * + * 更新界面 */ void populate(); /** - * 根据checkbox控制web段菜单是否显示 - * - * @return + * 保存界面设置 */ void update(); - } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/fun/GlobalListenerProvider.java b/designer_base/src/com/fr/design/fun/GlobalListenerProvider.java index 87e3f99ee2..7fbd9b3716 100644 --- a/designer_base/src/com/fr/design/fun/GlobalListenerProvider.java +++ b/designer_base/src/com/fr/design/fun/GlobalListenerProvider.java @@ -7,6 +7,7 @@ import java.awt.event.AWTEventListener; /** * Created by zack on 2015/8/17. + * 全局事件监听 */ public interface GlobalListenerProvider extends Level{ @@ -14,6 +15,9 @@ public interface GlobalListenerProvider extends Level{ int CURRENT_LEVEL = 1; - + /** + * 返回一个AWT监听事件给系统注册 + * @return AWT监听事件 + */ AWTEventListener listener(); } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/fun/HighlightProvider.java b/designer_base/src/com/fr/design/fun/HighlightProvider.java index 5961340737..ebee36932c 100644 --- a/designer_base/src/com/fr/design/fun/HighlightProvider.java +++ b/designer_base/src/com/fr/design/fun/HighlightProvider.java @@ -5,10 +5,7 @@ import com.fr.design.condition.ConditionAttributesPane; import com.fr.stable.fun.Level; /** - * @author richie - * @date 2015-03-26 - * @since 8.0 - * 条件属性接口 + * 条件属性界面设计接口 */ public interface HighlightProvider extends Level{ @@ -16,7 +13,6 @@ public interface HighlightProvider extends Level{ int CURRENT_LEVEL = 1; - /** * 条件属性的实现类 * @return 实现类 diff --git a/designer_base/src/com/fr/design/fun/ServerTableDataDefineProvider.java b/designer_base/src/com/fr/design/fun/ServerTableDataDefineProvider.java index 63d8d6221c..5b38cae35c 100644 --- a/designer_base/src/com/fr/design/fun/ServerTableDataDefineProvider.java +++ b/designer_base/src/com/fr/design/fun/ServerTableDataDefineProvider.java @@ -7,6 +7,5 @@ package com.fr.design.fun; */ public interface ServerTableDataDefineProvider extends TableDataDefineProvider { - public static final String XML_TAG = "ServerTableDataDefineProvider"; - + String XML_TAG = "ServerTableDataDefineProvider"; } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/fun/TableDataDefineProvider.java b/designer_base/src/com/fr/design/fun/TableDataDefineProvider.java index 8eb8359038..4ddfa9a951 100644 --- a/designer_base/src/com/fr/design/fun/TableDataDefineProvider.java +++ b/designer_base/src/com/fr/design/fun/TableDataDefineProvider.java @@ -11,7 +11,7 @@ import com.fr.stable.fun.Level; */ public interface TableDataDefineProvider extends Level { - public static final String XML_TAG = "TableDataDefineProvider"; + String XML_TAG = "TableDataDefineProvider"; int CURRENT_LEVEL = 1; @@ -19,35 +19,35 @@ public interface TableDataDefineProvider extends Level { * 自定义的数据集设置界面所对应的数据集类型 * @return 数据集的类型 */ - public Class classForTableData(); + Class classForTableData(); /** * 自定义数据集设置界面所对应的初始化数据集类型,在一种数据集有多个实现的时候有效 * @return 数据集类型 */ - public Class classForInitTableData(); + Class classForInitTableData(); /** * 自定义的数据集设置界面所对应的界面类型 * @return 数据集界面类型 */ - public Class appearanceForTableData(); + Class appearanceForTableData(); /** * 自定义数据集设置界面在菜单上的现实名字 * @return 名字 */ - public String nameForTableData(); + String nameForTableData(); /** * 自定义数据集在新建的时候名字前缀 * @return 名字前缀 */ - public String prefixForTableData(); + String prefixForTableData(); /** * 自定义数据集在菜单上现实的图标 * @return 图标 */ - public String iconPathForTableData(); + String iconPathForTableData(); } \ No newline at end of file From cef2c42140903950f7268ce89c5c3fa20a5edae8 Mon Sep 17 00:00:00 2001 From: zack Date: Tue, 17 May 2016 17:27:47 +0800 Subject: [PATCH 08/54] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8=EF=BC=8C?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E6=95=B0=E6=8D=AE=E9=9B=86=E5=88=86=E7=BB=84?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/designer.iml | 1 + .../present/ConditionAttributesGroupPane.java | 4 +- .../com/fr/design/present/StyleArrayPane.java | 4 +- .../report/share/ConfusionManagerPane.java | 4 +- .../fr/design/widget/WidgetConfigPane.java | 4 +- designer_base/designer_base.iml | 2 +- .../fr/design/ExtraDesignClassManager.java | 16 +- .../data/datapane/ReportTableDataPane.java | 24 +- .../data/datapane/TableDataListPane.java | 6 +- .../data/datapane/TableDataTreePane.java | 4 +- .../datapane/connect/ConnectionListPane.java | 4 +- .../tabledatapane/ProcedureListPane.java | 4 +- .../tabledatapane/TableDataManagerPane.java | 36 +- .../design/formula/FunctionManagerPane.java | 4 +- ...essor.java => TableDataPaneProcessor.java} | 11 +- ...ssor.java => AbstractTDPaneProcessor.java} | 4 +- .../design/gui/controlpane/JControlPane.java | 1273 ++++------------- .../gui/controlpane/JListControlPane.java | 1028 +++++++++++++ .../gui/controlpane/ObjectJControlPane.java | 2 +- .../design/gui/frpane/HyperlinkGroupPane.java | 4 +- .../design/parameter/ParameterArrayPane.java | 4 +- designer_base/src/com/fr/env/EnvListPane.java | 4 +- .../com/fr/design/chart/ChartControlPane.java | 4 +- .../design/chart/axis/ChartAlertLinePane.java | 4 +- .../SeriesCondition/DataSeriesAttrPane.java | 4 +- .../SeriesCondition/TrendLineControlPane.java | 4 +- .../com/fr/design/mainframe/MapArrayPane.java | 2 +- .../module/ChartPreStyleManagerPane.java | 4 +- 28 files changed, 1370 insertions(+), 1099 deletions(-) rename designer_base/src/com/fr/design/fun/{TableDataTreePaneProcessor.java => TableDataPaneProcessor.java} (60%) rename designer_base/src/com/fr/design/fun/impl/{AbstractTDTreePaneProcessor.java => AbstractTDPaneProcessor.java} (55%) create mode 100644 designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java diff --git a/designer/designer.iml b/designer/designer.iml index c798a6fe09..276f91e810 100644 --- a/designer/designer.iml +++ b/designer/designer.iml @@ -17,5 +17,6 @@ + \ No newline at end of file diff --git a/designer/src/com/fr/design/present/ConditionAttributesGroupPane.java b/designer/src/com/fr/design/present/ConditionAttributesGroupPane.java index 0632fe01db..5cfcb6261b 100644 --- a/designer/src/com/fr/design/present/ConditionAttributesGroupPane.java +++ b/designer/src/com/fr/design/present/ConditionAttributesGroupPane.java @@ -6,7 +6,7 @@ import java.util.List; import com.fr.base.FRContext; import com.fr.general.NameObject; import com.fr.design.condition.HighLightConditionAttributesPane; -import com.fr.design.gui.controlpane.JControlPane; +import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.general.Inter; @@ -15,7 +15,7 @@ import com.fr.report.cell.cellattr.highlight.Highlight; import com.fr.report.cell.cellattr.highlight.HighlightGroup; import com.fr.stable.Nameable; -public class ConditionAttributesGroupPane extends JControlPane { +public class ConditionAttributesGroupPane extends JListControlPane { @Override public NameableCreator[] createNameableCreators() { diff --git a/designer/src/com/fr/design/present/StyleArrayPane.java b/designer/src/com/fr/design/present/StyleArrayPane.java index 6107da1b7b..061107462e 100644 --- a/designer/src/com/fr/design/present/StyleArrayPane.java +++ b/designer/src/com/fr/design/present/StyleArrayPane.java @@ -2,7 +2,7 @@ package com.fr.design.present; import com.fr.base.Style; import com.fr.design.gui.controlpane.AbstractNameableCreator; -import com.fr.design.gui.controlpane.JControlPane; +import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.UnrepeatedNameHelper; import com.fr.design.gui.ilist.ListModelElement; @@ -18,7 +18,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -public class StyleArrayPane extends JControlPane { +public class StyleArrayPane extends JListControlPane { /** * Constructor. diff --git a/designer/src/com/fr/design/report/share/ConfusionManagerPane.java b/designer/src/com/fr/design/report/share/ConfusionManagerPane.java index eac62da913..89b3dbb9e8 100644 --- a/designer/src/com/fr/design/report/share/ConfusionManagerPane.java +++ b/designer/src/com/fr/design/report/share/ConfusionManagerPane.java @@ -10,7 +10,7 @@ import java.util.List; import com.fr.data.TableDataSource; import com.fr.data.impl.EmbeddedTableData; import com.fr.design.file.HistoryTemplateListPane; -import com.fr.design.gui.controlpane.JControlPane; +import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.ShortCut4JControlPane; @@ -23,7 +23,7 @@ import com.fr.general.NameObject; * * @date: 2015-3-9-上午9:10:20 */ -public class ConfusionManagerPane extends JControlPane { +public class ConfusionManagerPane extends JListControlPane { /** * 获取当前面板的编辑对象 diff --git a/designer/src/com/fr/design/widget/WidgetConfigPane.java b/designer/src/com/fr/design/widget/WidgetConfigPane.java index a362af72f7..78088920f2 100644 --- a/designer/src/com/fr/design/widget/WidgetConfigPane.java +++ b/designer/src/com/fr/design/widget/WidgetConfigPane.java @@ -1,6 +1,6 @@ package com.fr.design.widget; -import com.fr.design.gui.controlpane.JControlPane; +import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.core.WidgetConstants; @@ -17,7 +17,7 @@ import java.util.List; /** * Widget配置面板 */ -public class WidgetConfigPane extends JControlPane { +public class WidgetConfigPane extends JListControlPane { /** * 创建用户自定义widget组件 diff --git a/designer_base/designer_base.iml b/designer_base/designer_base.iml index 9f8c89a0b5..15ff9cc8c6 100644 --- a/designer_base/designer_base.iml +++ b/designer_base/designer_base.iml @@ -1,7 +1,7 @@ - + diff --git a/designer_base/src/com/fr/design/ExtraDesignClassManager.java b/designer_base/src/com/fr/design/ExtraDesignClassManager.java index 76d5d88afb..a11ff53a6c 100644 --- a/designer_base/src/com/fr/design/ExtraDesignClassManager.java +++ b/designer_base/src/com/fr/design/ExtraDesignClassManager.java @@ -126,7 +126,7 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi private DesignerEnvProcessor envProcessor; - private TableDataTreePaneProcessor tableDataTreePaneProcessor; + private TableDataPaneProcessor tableDataPaneProcessor; private Set elementUIProviders; @@ -134,13 +134,13 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi private Set exportAttrTabProviders; - public TableDataTreePaneProcessor getTableDataTreePaneProcessor() { - return tableDataTreePaneProcessor; + public TableDataPaneProcessor getTableDataPaneProcessor() { + return tableDataPaneProcessor; } - public void setTableDataSourceOPProcessor(Level level, PluginSimplify simplify) { - validAPILevel(level, TableDataTreePaneProcessor.CURRENT_LEVEL, simplify.getPluginName()); - tableDataTreePaneProcessor = (TableDataTreePaneProcessor) level; + public void setTableDataPaneProcessor(Level level, PluginSimplify simplify) { + validAPILevel(level, TableDataPaneProcessor.CURRENT_LEVEL, simplify.getPluginName()); + tableDataPaneProcessor = (TableDataPaneProcessor) level; } public DesignerEnvProcessor getEnvProcessor() { @@ -858,8 +858,8 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi addSupportDesignApps(impl, simplify); } else if (tagName.equals(DesignerEnvProcessor.XML_TAG)) { setEnvProcessor(impl, simplify); - } else if (tagName.equals(TableDataTreePaneProcessor.XML_TAG)) { - setTableDataSourceOPProcessor(impl, simplify); + } else if (tagName.equals(TableDataPaneProcessor.XML_TAG)) { + setTableDataPaneProcessor(impl, simplify); } else if (tagName.equals(ElementUIProvider.MARK_STRING)) { addElementUIProvider(impl, simplify); } else if (tagName.equals(WidgetPropertyUIProvider.XML_TAG)) { diff --git a/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java b/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java index e62aaa5304..003a478b17 100644 --- a/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java +++ b/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java @@ -4,6 +4,9 @@ package com.fr.design.data.datapane; import com.fr.data.TableDataSource; +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.fun.TableDataPaneProcessor; +import com.fr.design.gui.controlpane.JControlPane; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.frpane.LoadingBasicPane; import com.fr.design.layout.FRGUIPaneFactory; @@ -19,19 +22,24 @@ import java.util.Map; * 创建于2011-6-14 */ public class ReportTableDataPane extends LoadingBasicPane { - private TableDataListPane tdListPane; + private JControlPane tdPane; @Override protected void initComponents(JPanel container) { container.setLayout(FRGUIPaneFactory.createBorderLayout()); - this.tdListPane = new TableDataListPane() { + TableDataPaneProcessor paneProcessor = ExtraDesignClassManager.getInstance().getTableDataPaneProcessor(); + JControlPane pane = null; + if (paneProcessor != null) { + pane = paneProcessor.createServerTableDataPane(); + } + tdPane = pane == null ? new TableDataListPane() { @Override public NameableCreator[] createNameableCreators() { return TableDataCreatorProducer.getInstance().createReportTableDataCreator(); } - }; - container.add(tdListPane, BorderLayout.CENTER); + } : pane; + container.add(tdPane, BorderLayout.CENTER); } @Override @@ -40,11 +48,11 @@ public class ReportTableDataPane extends LoadingBasicPane { } public void populate(TableDataSource tds) { - tdListPane.populate(tds); + tdPane.populate(tds); } public void update(TableDataSource tds) { - tdListPane.update(tds); + tdPane.update(tds); } /** @@ -53,10 +61,10 @@ public class ReportTableDataPane extends LoadingBasicPane { * @throws Exception 异常 */ public void checkValid() throws Exception { - this.tdListPane.checkValid(); + this.tdPane.checkValid(); } public Map getDsNameChangedMap() { - return tdListPane.getDsNameChangedMap(); + return tdPane.getDsNameChangedMap(); } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/data/datapane/TableDataListPane.java b/designer_base/src/com/fr/design/data/datapane/TableDataListPane.java index 8de293f292..5c641d5151 100644 --- a/designer_base/src/com/fr/design/data/datapane/TableDataListPane.java +++ b/designer_base/src/com/fr/design/data/datapane/TableDataListPane.java @@ -4,7 +4,7 @@ import com.fr.base.TableData; import com.fr.data.TableDataSource; import com.fr.data.impl.storeproc.StoreProcedure; import com.fr.design.data.DesignTableDataManager; -import com.fr.design.gui.controlpane.JControlPane; +import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.ilist.ListModelElement; import com.fr.file.DatasourceManagerProvider; @@ -21,9 +21,7 @@ import java.util.*; /** * TableDataList Pane. */ -public class TableDataListPane extends JControlPane { - private Map dsNameChangedMap = new HashMap(); - private boolean isNamePermitted = true; +public class TableDataListPane extends JListControlPane { public TableDataListPane() { super(); diff --git a/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java b/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java index 1065783624..fcaa7c6e71 100644 --- a/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java +++ b/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java @@ -14,7 +14,7 @@ import com.fr.design.data.tabledata.wrapper.AbstractTableDataWrapper; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; -import com.fr.design.fun.TableDataTreePaneProcessor; +import com.fr.design.fun.TableDataPaneProcessor; import com.fr.design.gui.ibutton.UIHeadGroup; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.itextfield.UITextField; @@ -47,7 +47,7 @@ public class TableDataTreePane extends BasicTableDataTreePane { public synchronized static BasicTableDataTreePane getInstance(DesignModelAdapter tc) { - TableDataTreePaneProcessor treePaneProcessor = ExtraDesignClassManager.getInstance().getTableDataTreePaneProcessor(); + TableDataPaneProcessor treePaneProcessor = ExtraDesignClassManager.getInstance().getTableDataPaneProcessor(); if (treePaneProcessor != null) { return treePaneProcessor.createTableDataTreePane(tc); } 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 1d5dd260aa..725a65ad33 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 @@ -4,7 +4,7 @@ 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.gui.controlpane.JControlPane; +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; @@ -22,7 +22,7 @@ import java.util.*; /** * Connection List Pane. */ -public class ConnectionListPane extends JControlPane { +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(); diff --git a/designer_base/src/com/fr/design/data/tabledata/tabledatapane/ProcedureListPane.java b/designer_base/src/com/fr/design/data/tabledata/tabledatapane/ProcedureListPane.java index 5f56516280..636bc4b768 100644 --- a/designer_base/src/com/fr/design/data/tabledata/tabledatapane/ProcedureListPane.java +++ b/designer_base/src/com/fr/design/data/tabledata/tabledatapane/ProcedureListPane.java @@ -3,7 +3,7 @@ package com.fr.design.data.tabledata.tabledatapane; import com.fr.data.TableDataSource; import com.fr.data.impl.storeproc.StoreProcedure; import com.fr.design.data.DesignTableDataManager; -import com.fr.design.gui.controlpane.JControlPane; +import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.ilist.ListModelElement; @@ -19,7 +19,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -public class ProcedureListPane extends JControlPane { +public class ProcedureListPane extends JListControlPane { public ProcedureListPane() { super(); this.addEditingListner(new PropertyChangeAdapter() { diff --git a/designer_base/src/com/fr/design/data/tabledata/tabledatapane/TableDataManagerPane.java b/designer_base/src/com/fr/design/data/tabledata/tabledatapane/TableDataManagerPane.java index 55f975e385..0ff2ec8816 100644 --- a/designer_base/src/com/fr/design/data/tabledata/tabledatapane/TableDataManagerPane.java +++ b/designer_base/src/com/fr/design/data/tabledata/tabledatapane/TableDataManagerPane.java @@ -1,7 +1,10 @@ package com.fr.design.data.tabledata.tabledatapane; import com.fr.base.FRContext; +import com.fr.design.ExtraDesignClassManager; import com.fr.design.data.datapane.TableDataListPane; +import com.fr.design.fun.TableDataPaneProcessor; +import com.fr.design.gui.controlpane.JControlPane; import com.fr.design.gui.frpane.LoadingBasicPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; @@ -18,7 +21,7 @@ import java.util.Map; public class TableDataManagerPane extends LoadingBasicPane { private UITextField tableDataTextField; - private TableDataListPane tableDataListPane; + private JControlPane tableDataPane; @Override protected void initComponents(JPanel container) { @@ -36,13 +39,18 @@ public class TableDataManagerPane extends LoadingBasicPane { this.tableDataTextField = new UITextField(); tableDataPathPane.add(tableDataTextField, BorderLayout.CENTER); this.tableDataTextField.setEditable(false); - tableDataListPane = new TableDataListPane(){ - protected void rename(String oldName,String newName){ - super.rename(oldName,newName); - renameConnection(oldName, newName); - } - }; - container.add(tableDataListPane, BorderLayout.CENTER); + TableDataPaneProcessor paneProcessor = ExtraDesignClassManager.getInstance().getTableDataPaneProcessor(); + JControlPane pane = null; + if (paneProcessor != null) { + pane = paneProcessor.createServerTableDataPane(); + } + tableDataPane = pane == null ? new TableDataListPane() { + protected void rename(String oldName, String newName) { + super.rename(oldName, newName); + renameConnection(oldName, newName); + } + } : pane; + container.add(tableDataPane, BorderLayout.CENTER); } @@ -51,7 +59,7 @@ public class TableDataManagerPane extends LoadingBasicPane { * @return 是则返回true */ public boolean isNamePermitted(){ - return tableDataListPane.isNamePermitted(); + return tableDataPane.isNamePermitted(); } /** @@ -59,7 +67,7 @@ public class TableDataManagerPane extends LoadingBasicPane { * @throws Exception 异常 */ public void checkValid() throws Exception { - tableDataListPane.checkValid(); + tableDataPane.checkValid(); } @Override @@ -70,15 +78,15 @@ public class TableDataManagerPane extends LoadingBasicPane { public void populate(DatasourceManagerProvider datasourceManager) { this.tableDataTextField.setText(FRContext.getCurrentEnv().getPath() + File.separator + ProjectConstants.RESOURCES_NAME + File.separator + datasourceManager.fileName()); - this.tableDataListPane.populate(datasourceManager); + this.tableDataPane.populate(datasourceManager); } public void update(DatasourceManagerProvider datasourceManager) { - this.tableDataListPane.update(datasourceManager); + this.tableDataPane.update(datasourceManager); } public Map getDsChangedNameMap () { - return this.tableDataListPane.getDsNameChangedMap(); + return this.tableDataPane.getDsNameChangedMap(); } /** @@ -87,6 +95,6 @@ public class TableDataManagerPane extends LoadingBasicPane { * @param index 选中项的序列号 */ public void setSelectedIndex(int index) { - this.tableDataListPane.setSelectedIndex(index); + this.tableDataPane.setSelectedIndex(index); } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/formula/FunctionManagerPane.java b/designer_base/src/com/fr/design/formula/FunctionManagerPane.java index 4af0c27997..fd41df3256 100644 --- a/designer_base/src/com/fr/design/formula/FunctionManagerPane.java +++ b/designer_base/src/com/fr/design/formula/FunctionManagerPane.java @@ -6,7 +6,7 @@ import com.fr.design.data.tabledata.tabledatapane.ClassNameSelectPane; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; -import com.fr.design.gui.controlpane.JControlPane; +import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.ibutton.UIButton; @@ -97,7 +97,7 @@ public class FunctionManagerPane extends BasicPane { /** * CellRenderer. */ - class FunctionControlPane extends JControlPane { + class FunctionControlPane extends JListControlPane { public FunctionControlPane() { super(); diff --git a/designer_base/src/com/fr/design/fun/TableDataTreePaneProcessor.java b/designer_base/src/com/fr/design/fun/TableDataPaneProcessor.java similarity index 60% rename from designer_base/src/com/fr/design/fun/TableDataTreePaneProcessor.java rename to designer_base/src/com/fr/design/fun/TableDataPaneProcessor.java index 1789c2ca26..f1f4ac2182 100644 --- a/designer_base/src/com/fr/design/fun/TableDataTreePaneProcessor.java +++ b/designer_base/src/com/fr/design/fun/TableDataPaneProcessor.java @@ -2,6 +2,7 @@ package com.fr.design.fun; import com.fr.design.DesignModelAdapter; import com.fr.design.data.BasicTableDataTreePane; +import com.fr.design.gui.controlpane.JControlPane; import com.fr.stable.fun.Level; /** @@ -10,8 +11,8 @@ import com.fr.stable.fun.Level; * Date: 2016/4/18 * Time: 9:04 */ -public interface TableDataTreePaneProcessor extends Level { - String XML_TAG = "TableDataTreePaneProcessor"; +public interface TableDataPaneProcessor extends Level { + String XML_TAG = "TableDataPaneProcessor"; int CURRENT_LEVEL = 1; /** @@ -20,4 +21,10 @@ public interface TableDataTreePaneProcessor extends Level { */ BasicTableDataTreePane createTableDataTreePane(DesignModelAdapter tc); + /** + * 服务器数据集面板(模板数据集面板) + * @return 服务器数据集面板 + */ + JControlPane createServerTableDataPane(); + } diff --git a/designer_base/src/com/fr/design/fun/impl/AbstractTDTreePaneProcessor.java b/designer_base/src/com/fr/design/fun/impl/AbstractTDPaneProcessor.java similarity index 55% rename from designer_base/src/com/fr/design/fun/impl/AbstractTDTreePaneProcessor.java rename to designer_base/src/com/fr/design/fun/impl/AbstractTDPaneProcessor.java index 635739a07b..e5f591a65c 100644 --- a/designer_base/src/com/fr/design/fun/impl/AbstractTDTreePaneProcessor.java +++ b/designer_base/src/com/fr/design/fun/impl/AbstractTDPaneProcessor.java @@ -1,13 +1,13 @@ package com.fr.design.fun.impl; -import com.fr.design.fun.TableDataTreePaneProcessor; +import com.fr.design.fun.TableDataPaneProcessor; /** * Coder: zack * Date: 2016/4/18 * Time: 10:30 */ -public abstract class AbstractTDTreePaneProcessor implements TableDataTreePaneProcessor { +public abstract class AbstractTDPaneProcessor implements TableDataPaneProcessor { @Override public int currentAPILevel() { return CURRENT_LEVEL; diff --git a/designer_base/src/com/fr/design/gui/controlpane/JControlPane.java b/designer_base/src/com/fr/design/gui/controlpane/JControlPane.java index e58a136150..615cee6a0e 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/JControlPane.java +++ b/designer_base/src/com/fr/design/gui/controlpane/JControlPane.java @@ -1,1026 +1,247 @@ -package com.fr.design.gui.controlpane; - -import com.fr.base.BaseUtils; -import com.fr.base.FRContext; -import com.fr.design.data.tabledata.tabledatapane.GlobalMultiTDTableDataPane; -import com.fr.design.data.tabledata.tabledatapane.GlobalTreeTableDataPane; -import com.fr.design.data.tabledata.tabledatapane.MultiTDTableDataPane; -import com.fr.design.data.tabledata.tabledatapane.TreeTableDataPane; -import com.fr.design.actions.UpdateAction; -import com.fr.design.beans.BasicBeanPane; -import com.fr.design.file.HistoryTemplateListPane; -import com.fr.design.gui.icontainer.UIScrollPane; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.itoolbar.UIToolbar; -import com.fr.design.gui.ilist.JNameEdList; -import com.fr.design.gui.ilist.ListModelElement; -import com.fr.design.gui.ilist.ModNameActionListener; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.mainframe.JTemplate; -import com.fr.design.menu.*; -import com.fr.design.dialog.BasicPane; -import com.fr.general.ComparatorUtils; -import com.fr.general.Inter; -import com.fr.stable.ArrayUtils; -import com.fr.stable.Nameable; -import com.fr.stable.core.PropertyChangeAdapter; -import com.fr.design.utils.gui.GUICoreUtils; - -import javax.swing.*; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.Arrays; -import java.util.Comparator; - -public abstract class JControlPane extends BasicPane implements UnrepeatedNameHelper { - public static final String LIST_NAME = "JControl_List"; - private static final int SHORT_WIDTH = 30; //每加一个short Divider位置加30 - - private ShortCut4JControlPane[] shorts; - private NameableCreator[] creators; - protected JNameEdList nameableList; - protected JControlUpdatePane controlUpdatePane; - - private ToolBarDef toolbarDef; - private UIToolbar toolBar; - - // peter:这是整体的一个cardLayout Pane - private CardLayout cardLayout; - private JPanel cardPane; - protected int editingIndex; - protected String selectedName; - private boolean isNameRepeated = false; - - public JControlPane() { - this.initComponentPane(); - } - - /** - * 生成添加按钮的NameableCreator - * @return 按钮的NameableCreator - */ - public abstract NameableCreator[] createNameableCreators(); - - protected void initComponentPane() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - this.creators = this.createNameableCreators(); - this.controlUpdatePane = new JControlUpdatePane(); - - // p: edit card layout - this.cardLayout = new CardLayout(); - cardPane = FRGUIPaneFactory.createCardLayout_S_Pane(); - cardPane.setLayout(this.cardLayout); - // p:选择的Label - UILabel selectLabel = new UILabel(); - cardPane.add(selectLabel, "SELECT"); - cardPane.add(controlUpdatePane, "EDIT"); - // SplitPane - JSplitPane mainSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, getLeftPane(), cardPane); - mainSplitPane.setBorder(BorderFactory.createLineBorder(GUICoreUtils.getTitleLineBorderColor())); - mainSplitPane.setOneTouchExpandable(true); - - this.add(mainSplitPane, BorderLayout.CENTER); - mainSplitPane.setDividerLocation(getLeftPreferredSize()); - this.checkButtonEnabled(); - } - - - protected JPanel getLeftPane(){ - // LeftPane - JPanel leftPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - - initNameList(leftPane); - - shorts = this.createShortcuts(); - if (ArrayUtils.isEmpty(shorts)) { - return leftPane; - } - - toolbarDef = new ToolBarDef(); - for (ShortCut4JControlPane sj : shorts) { - toolbarDef.addShortCut(sj.getShortCut()); - } - toolBar = ToolBarDef.createJToolBar(); - toolbarDef.updateToolBar(toolBar); - leftPane.add(toolBar, BorderLayout.NORTH); - return leftPane; - } - - - private void initNameList(JPanel leftPane) { - nameableList = createJNameList(); - nameableList.setName(LIST_NAME); - leftPane.add(new UIScrollPane(nameableList), BorderLayout.CENTER); - - - nameableList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); - nameableList.addMouseListener(listMouseListener); - nameableList.addListSelectionListener(new ListSelectionListener() { - public void valueChanged(ListSelectionEvent evt) { - // richie:避免多次update和populate大大降低效率 - if (!evt.getValueIsAdjusting()) { - // shoc 切换的时候加检验 - if (hasInvalid(false)) { - return; - } - JControlPane.this.controlUpdatePane.update(); - JControlPane.this.controlUpdatePane.populate(); - JControlPane.this.checkButtonEnabled(); - } - } - }); - } - - public JNameEdList createJNameList() { - JNameEdList nameEdList = new JNameEdList(new DefaultListModel()) { - protected void doAfterLostFocus() { - JControlPane.this.updateControlUpdatePane(); - } - }; - nameEdList.setCellRenderer(new NameableListCellRenderer()); - return nameEdList; - } - - public void updateControlUpdatePane() { - controlUpdatePane.update(); - } - - protected void doWhenPopulate(BasicBeanPane beanPane){ - - } - - protected int getLeftPreferredSize() { - return shorts.length * SHORT_WIDTH; - } - - protected ShortCut4JControlPane[] createShortcuts() { - return new ShortCut4JControlPane[]{ - addItemShortCut(), - removeItemShortCut(), - copyItemShortCut(), - moveUpItemShortCut(), - moveDownItemShortCut(), - sortItemShortCut() - }; - } - - protected ShortCut4JControlPane addItemShortCut() { - ShortCut addItemShortCut; - if (creators.length == 1) { - addItemShortCut = new AddItemUpdateAction(creators); - } else { - addItemShortCut = new AddItemMenuDef(creators); - } - return new AbsoluteEnableShortCut(addItemShortCut); - } - - protected ShortCut4JControlPane removeItemShortCut() { - return new NormalEnableShortCut(new RemoveItemAction()); - } - - protected ShortCut4JControlPane copyItemShortCut() { - return new NormalEnableShortCut(new CopyItemAction()); - } - - protected ShortCut4JControlPane moveUpItemShortCut() { - return new NormalEnableShortCut(new MoveUpItemAction()); - } - - protected ShortCut4JControlPane moveDownItemShortCut() { - return new NormalEnableShortCut(new MoveDownItemAction()); - } - - protected ShortCut4JControlPane sortItemShortCut() { - return new NormalEnableShortCut(new SortItemAction()); - } - - public void setNameListEditable(boolean editable) { - this.nameableList.setEditable(editable); - } - - public Nameable[] update() { - java.util.List res = new java.util.ArrayList(); - this.controlUpdatePane.update(); - DefaultListModel listModel = (DefaultListModel) this.nameableList.getModel(); - for (int i = 0, len = listModel.getSize(); i < len; i++) { - res.add(((ListModelElement) listModel.getElementAt(i)).wrapper); - } - - return res.toArray(new Nameable[res.size()]); - } - - public void populate(Nameable[] nameableArray) { - DefaultListModel listModel = (DefaultListModel) this.nameableList.getModel(); - listModel.removeAllElements(); - if (ArrayUtils.isEmpty(nameableArray)) { - return; - } - - for (Nameable aNameableArray : nameableArray) { - listModel.addElement(new ListModelElement(aNameableArray)); - } - - if (listModel.size() > 0) { - this.nameableList.setSelectedIndex(0); - } - this.checkButtonEnabled(); - } - - /** - * 添加名字改变时的listener - * - * @param l 名字改变时的监听 - */ - public void addModNameActionListener(ModNameActionListener l) { - this.nameableList.addModNameActionListener(l); - } - - /** - * 添加Editinglistener - * - * @param l 监听 - */ - public void addEditingListner(PropertyChangeAdapter l) { - this.nameableList.addEditingListner(l); - } - - /* - * 刷新当前的选中的UpdatePane - */ - protected void populateSelectedValue() { - JControlPane.this.controlUpdatePane.populate(); - } - - /** - * 根据name,选中JNameEdList中的item - */ - public void setSelectedName(String name) { - DefaultListModel listModel = (DefaultListModel) this.nameableList.getModel(); - for (int i = 0, len = listModel.getSize(); i < len; i++) { - Nameable item = ((ListModelElement) listModel.getElementAt(i)).wrapper; - if (ComparatorUtils.equals(name, item.getName())) { - this.nameableList.setSelectedIndex(i); - break; - } - } - } - - public String getEditingName() { - return this.nameableList.getEditingName(); - } - - public Object getEditingType() { - return this.nameableList.getAllTypes()[editingIndex]; - } - - public void setWarnigText(int index) { - this.nameableList.setWarnigText(index); - } - - /** - * 获取选中的名字 - */ - public String getSelectedName() { - ListModelElement el = (ListModelElement) this.nameableList.getSelectedValue(); - - return el == null ? null : el.wrapper.getName(); - } - - /** - * 刷新 NameableCreator - * - * @param creators 生成器 - */ - public void refreshNameableCreator(NameableCreator[] creators) { - this.creators = creators; - shorts = this.createShortcuts(); - toolbarDef.clearShortCuts(); - for (ShortCut4JControlPane sj : shorts) { - toolbarDef.addShortCut(sj.getShortCut()); - } - - toolbarDef.updateToolBar(toolBar); - toolBar.validate(); - toolBar.repaint(); - this.repaint(); - } - - protected boolean isNameRepeted(java.util.List[] list, String name) { - for (int i = 0; i < list.length; i++) { - if (list[i].contains(name)) { - isNameRepeated = true; - return true; - } - } - isNameRepeated = false; - return false; - } - - /** - * 名字是否重复 - * @return 重复则返回true - */ - public boolean isNameRepeated() { - return isNameRepeated; - } - - /** - * 添加 Nameable - * - * @param nameable 添加的Nameable - * @param index 序号 - */ - public void addNameable(Nameable nameable, int index) { - JNameEdList nameEdList = JControlPane.this.nameableList; - DefaultListModel model = (DefaultListModel) nameEdList.getModel(); - - ListModelElement el = new ListModelElement(nameable); - model.add(index, el); - nameableList.setSelectedIndex(index); - nameableList.ensureIndexIsVisible(index); - - nameEdList.repaint(); - } - - /** - * 是否重命名 - * @return 是则true - */ - public boolean isContainsRename() { - String rename = Inter.getLocText("FR-Please_Rename") + "!"; - String[] names = this.nameableList.getAllNames(); - for (int i = names.length - 1; i >= 0; i--) { - if (ComparatorUtils.equals(names[i], rename)) { - return true; - } - } - return false; - } - - protected DefaultListModel getModel() { - return (DefaultListModel) JControlPane.this.nameableList.getModel(); - } - - private String createUnrepeatedCopyName(String suffix) { - DefaultListModel model = this.getModel(); - String[] names = new String[model.getSize()]; - for (int i = 0; i < model.size(); i++) { - names[i] = ((ListModelElement) model.get(i)).wrapper.getName(); - } - String lastName = "CopyOf" + suffix; - while (ArrayUtils.contains(names, lastName)) { - lastName = "CopyOf" + lastName; - } - return lastName; - } - - - /** - * 生成不重复的名字 - * - * @param prefix 名字前缀 - * @return 名字 - */ - public String createUnrepeatedName(String prefix) { - DefaultListModel model = this.getModel(); - Nameable[] all = new Nameable[model.getSize()]; - for (int i = 0; i < model.size(); i++) { - all[i] = ((ListModelElement) model.get(i)).wrapper; - } - // richer:生成的名字从1开始. kunsnat: 添加属性从0开始. - int count = all.length + 1; - while (true) { - String name_test = prefix + count; - boolean repeated = false; - for (int i = 0, len = model.size(); i < len; i++) { - Nameable nameable = all[i]; - if (ComparatorUtils.equals(nameable.getName(), name_test)) { - repeated = true; - break; - } - } - - if (!repeated) { - return name_test; - } - - count++; - } - } - - /** - * 增加项的UpdateAction - */ - protected class AddItemUpdateAction extends UpdateAction { - final NameableCreator creator; - - public AddItemUpdateAction(NameableCreator[] creators) { - this.creator = creators[0]; - this.setName(Inter.getLocText("FR-Action_Add")); - this.setMnemonic('A'); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/base/images/cell/control/add.png")); - } - - public void actionPerformed(ActionEvent e) { - Nameable nameable = creator.createNameable(JControlPane.this); - - JControlPane.this.addNameable(nameable, getModel().getSize()); - } - } - - /* - * 增加项的MenuDef - */ - protected class AddItemMenuDef extends MenuDef { - public AddItemMenuDef(NameableCreator[] creators) { - this.setName(Inter.getLocText("FR-Action_Add")); - this.setMnemonic('A'); - this.setIconPath("/com/fr/design/images/control/addPopup.png"); - wrapActionListener(creators); - } - - private void wrapActionListener(NameableCreator[] creators) { - for (final NameableCreator creator : creators) { - if (!whetherAdd(creator.menuName())){ - continue; - } - boolean isTrue = ComparatorUtils.equals(creator.menuName(), Inter.getLocText("Datasource-Stored_Procedure")) || - ComparatorUtils.equals(creator.menuName(), Inter.getLocText("DS-Relation_TableData")) || ComparatorUtils.equals(creator.menuName(), Inter.getLocText("DS-Multi_Dimensional_Database")); - if (isTrue) { - this.addShortCut(new LineSeparator()); - } - this.addShortCut(new UpdateAction() { - { - this.setName(creator.menuName()); - Icon icon = creator.menuIcon(); - if (icon != null) { - this.setSmallIcon(icon); - } - } - - public void actionPerformed(ActionEvent e) { - if (hasInvalid(true)) { - return; - } - - Nameable nameable = creator.createNameable(JControlPane.this); - - JControlPane.this.addNameable(nameable, getModel().getSize()); - } - }); - } - } - - private boolean whetherAdd(String itemName){ - JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if (jTemplate == null) { - return false; - } - //先屏蔽掉这个,之后还有别的 - String[] names = {Inter.getLocText("FR-Hyperlink_Chart_Float")}; - for (String name : names){ - if(!jTemplate.isJWorkBook() && ComparatorUtils.equals(itemName, name)){ - return false; - } - } - String formName = Inter.getLocText("Hyperlink-Form_link"); - return !(jTemplate.isJWorkBook() && ComparatorUtils.equals(itemName, formName)); - } - } - - /* - * 移除item - */ - private class RemoveItemAction extends UpdateAction { - public RemoveItemAction() { - this.setName(Inter.getLocText("FR-Action_Remove")); - this.setMnemonic('R'); - this.setSmallIcon(BaseUtils - .readIcon("/com/fr/base/images/cell/control/remove.png")); - } - - public void actionPerformed(ActionEvent evt) { - try { - JControlPane.this.nameableList.getCellEditor() - .stopCellEditing(); - } catch (Exception ignored) { - } - // bug:在选中一个NameObject并删除,会遗留下Name. - doBeforeRemove(); - if (GUICoreUtils.removeJListSelectedNodes(SwingUtilities - .getWindowAncestor(JControlPane.this), nameableList)) { - checkButtonEnabled(); - doAfterRemove(); - } - } - } - - /* - * CopyItem - */ - private class CopyItemAction extends UpdateAction { - public CopyItemAction() { - this.setName(Inter.getLocText("FR-Action_Copy")); - this.setMnemonic('C'); - this.setSmallIcon(BaseUtils - .readIcon("/com/fr/base/images/cell/control/copy.png")); - } - - public void actionPerformed(ActionEvent evt) { - // p:选中的值. - ListModelElement selectedValue = (ListModelElement) nameableList.getSelectedValue(); - if (selectedValue == null) { - return; - } - - controlUpdatePane.update(); - - Nameable selectedNameable = selectedValue.wrapper; - - // p: 用反射机制实现 - try { - Nameable newNameable = (Nameable) BaseUtils.cloneObject(selectedNameable); - newNameable.setName(createUnrepeatedCopyName(selectedNameable.getName())); - - JControlPane.this.addNameable(newNameable, nameableList.getSelectedIndex() + 1); - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); - } - } - } - - /* - * 上移Item - */ - private class MoveUpItemAction extends UpdateAction { - public MoveUpItemAction() { - this.setName(Inter.getLocText("Utils-Move_Up")); - this.setMnemonic('U'); - this.setSmallIcon(BaseUtils - .readIcon("/com/fr/design/images/control/up.png")); - } - - public void actionPerformed(ActionEvent evt) { - int selectedIndex = nameableList.getSelectedIndex(); - if (selectedIndex == -1) { - return; - } - - // 上移 - if (selectedIndex > 0) { - DefaultListModel listModel = (DefaultListModel) nameableList - .getModel(); - - Object selecteObj1 = listModel.get(selectedIndex - 1); - listModel.set(selectedIndex - 1, listModel.get(selectedIndex)); - listModel.set(selectedIndex, selecteObj1); - - nameableList.setSelectedIndex(selectedIndex - 1); - nameableList.ensureIndexIsVisible(selectedIndex - 1); - } - } - } - - /* - * 下移Item - */ - private class MoveDownItemAction extends UpdateAction { - public MoveDownItemAction() { - this.setName(Inter.getLocText("Utils-Move_Down")); - this.setMnemonic('D'); - this.setSmallIcon(BaseUtils - .readIcon("/com/fr/design/images/control/down.png")); - } - - public void actionPerformed(ActionEvent evt) { - int selectedIndex = nameableList.getSelectedIndex(); - if (selectedIndex == -1) { - return; - } - - if (selectedIndex < nameableList.getModel().getSize() - 1) { - DefaultListModel listModel = (DefaultListModel) nameableList - .getModel(); - - Object selecteObj1 = listModel.get(selectedIndex + 1); - listModel.set(selectedIndex + 1, listModel.get(selectedIndex)); - listModel.set(selectedIndex, selecteObj1); - - nameableList.setSelectedIndex(selectedIndex + 1); - nameableList.ensureIndexIsVisible(selectedIndex + 1); - } - } - } - - private class SortItemAction extends UpdateAction { - private boolean isAtoZ = false; - - public SortItemAction() { - this.setName(Inter.getLocText("FR-Action_Sort")); - this.setMnemonic('S'); - this.setSmallIcon(BaseUtils - .readIcon("/com/fr/design/images/control/sortAsc.png")); - } - - public void actionPerformed(ActionEvent evt) { - // p:选中的值. - Object selectedValue = nameableList.getSelectedValue(); - - DefaultListModel listModel = (DefaultListModel) nameableList - .getModel(); - Nameable[] nameableArray = new Nameable[listModel.getSize()]; - if (nameableArray.length <= 0) { - return; - } - - for (int i = 0; i < listModel.getSize(); i++) { - nameableArray[i] = ((ListModelElement) listModel.getElementAt(i)).wrapper; - } - - // p:排序. - if (isAtoZ) { - Comparator nameableComparator = new Comparator() { - public int compare(Nameable o1, Nameable o2) { - return -ComparatorUtils.compare(o1.getName(), o2 - .getName()); - } - }; - isAtoZ = !isAtoZ; - Arrays.sort(nameableArray, nameableComparator); - } else { - Comparator nameableComparator = new Comparator() { - public int compare(Nameable o1, Nameable o2) { - return ComparatorUtils.compare(o1.getName(), o2 - .getName()); - } - }; - isAtoZ = !isAtoZ; - Arrays.sort(nameableArray, nameableComparator); - } - - for (int i = 0; i < nameableArray.length; i++) { - listModel.set(i, new ListModelElement(nameableArray[i])); - } - - // p:需要选中以前的那个值. - if (selectedValue != null) { - nameableList.setSelectedValue(selectedValue, true); - } - - checkButtonEnabled(); - // p:需要repaint. - nameableList.repaint(); - } - } - - /* - * JNameEdList的鼠标事件 - */ - private MouseListener listMouseListener = new MouseAdapter() { - public void mouseReleased(MouseEvent evt) { - nameableList.stopEditing(); - if (evt.getClickCount() >= 2 - && SwingUtilities.isLeftMouseButton(evt)) { - editingIndex = nameableList.getSelectedIndex(); - selectedName = nameableList.getNameAt(editingIndex); - nameableList.editItemAt(nameableList.getSelectedIndex()); - } - // peter:处理右键的弹出菜单 - if (!SwingUtilities.isRightMouseButton(evt)) { - return; - } - - // peter: 注意,在checkButtonEnabled()方法里面,设置了所有的Action的Enabled. - checkButtonEnabled(); - - // p:右键菜单. - JPopupMenu popupMenu = new JPopupMenu(); - - for (ShortCut4JControlPane sj : shorts) { - sj.getShortCut().intoJPopupMenu(popupMenu); - } - - // peter: 只有弹出菜单有子菜单的时候,才需要弹出来. - GUICoreUtils.showPopupMenu(popupMenu, nameableList, evt.getX() - 1, - evt.getY() - 1); - } - - public void mouseMoved(MouseEvent e) { - - } - }; - - /** - * 检查按钮可用状态 Check button enabled. - */ - public void checkButtonEnabled() { - int selectedIndex = nameableList.getSelectedIndex(); - if (selectedIndex == -1) { - this.cardLayout.show(cardPane, "SELECT"); - } else { - this.cardLayout.show(cardPane, "EDIT"); - } - for (ShortCut4JControlPane sj : this.shorts) { - sj.checkEnable(); - } - } - - protected void doBeforeRemove(){ - - } - - protected void doAfterRemove(){ - - } - - public NameableCreator[] creators() { - return creators == null ? new NameableCreator[0] : creators; - } - - /* - * Nameable的ListCellRenerer - */ - private class NameableListCellRenderer extends - DefaultListCellRenderer { - public Component getListCellRendererComponent(JList list, Object value, - int index, boolean isSelected, boolean cellHasFocus) { - super.getListCellRendererComponent(list, value, index, isSelected, - cellHasFocus); - - if (value instanceof ListModelElement) { - Nameable wrappee = ((ListModelElement) value).wrapper; - this.setText(((ListModelElement) value).wrapper.getName()); - - boolean iconSet = false; - for (NameableCreator creator : JControlPane.this.creators) { - if (creator.menuIcon() != null && creator.acceptObject2Populate(wrappee) != null) { - this.setIcon(creator.menuIcon()); - this.setToolTipText(creator.createTooltip()); - iconSet = true; - break; - } - } - if (!iconSet) { - this.setIcon(BaseUtils.readIcon("/com/fr/base/images/oem/cpt.png")); - } - } - - return this; - } - } - - public class AbsoluteEnableShortCut extends ShortCut4JControlPane { - public AbsoluteEnableShortCut(ShortCut shortCut) { - this.shortCut = shortCut; - } - - /** - * 检查是否可用 - */ - public void checkEnable() { - this.shortCut.setEnabled(true); - } - } - - public class NormalEnableShortCut extends ShortCut4JControlPane { - public NormalEnableShortCut(ShortCut shortCut) { - this.shortCut = shortCut; - } - - /** - * 检查是否可用 - */ - public void checkEnable() { - this.shortCut.setEnabled(getModel() - .getSize() > 0 - && JControlPane.this.nameableList.getSelectedIndex() != -1); - } - } - - public class SortEnableShortCut extends ShortCut4JControlPane { - public SortEnableShortCut(ShortCut shortCut) { - this.shortCut = shortCut; - } - - /** - * 检查是否可用 - */ - @Override - public void checkEnable() { - this.shortCut.setEnabled(getModel().getSize() > 1); - } - - } - - public class MoveUpEnableShortCut extends ShortCut4JControlPane { - public MoveUpEnableShortCut(ShortCut shortCut) { - this.shortCut = shortCut; - } - - /** - * 检查是否可用 - */ - @Override - public void checkEnable() { - this.shortCut.setEnabled(getModel().getSize() > 1 - && JControlPane.this.nameableList.getSelectedIndex() > 0); - } - - } - - public class MoveDownEnableShortCut extends ShortCut4JControlPane { - public MoveDownEnableShortCut(ShortCut shortCut) { - this.shortCut = shortCut; - } - - /** - * 检查是否可用 - */ - @Override - public void checkEnable() { - this.shortCut.setEnabled(getModel().getSize() > 1 - && JControlPane.this.nameableList.getSelectedIndex() < JControlPane.this.nameableList.getModel().getSize() - 1); - } - - } - - private class JControlUpdatePane extends JPanel { - private CardLayout card; - private JPanel cardPane; - private BasicBeanPane[] updatePanes; - - private ListModelElement elEditing; - - public JControlUpdatePane() { - initUpdatePane(); - } - - private void initUpdatePane() { - if (creators == null) { - return; - } - card = new CardLayout(); - cardPane = FRGUIPaneFactory.createCardLayout_S_Pane(); - cardPane.setLayout(card); - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - this.add(cardPane); - int len = creators.length; - updatePanes = new BasicBeanPane[len]; - } - - public void populate() { - ListModelElement el = (ListModelElement) JControlPane.this.nameableList.getSelectedValue(); - if (el == null) { - return; - } - - elEditing = el; - - for (int i = 0, len = updatePanes.length; i < len; i++) { - Object ob2Populate = creators[i].acceptObject2Populate(el.wrapper); - if (ob2Populate != null) { - if (updatePanes[i] == null) { - if (isMulti(creators[i].getUpdatePane()) || isTree(creators[i].getUpdatePane())) { - updatePanes[i] = createPaneByCreators(creators[i], el.wrapper.getName()); - } else { - updatePanes[i] = createPaneByCreators(creators[i]); - } - cardPane.add(updatePanes[i], String.valueOf(i)); - } - card.show(cardPane, String.valueOf(i)); - updatePanes[i].populateBean(ob2Populate); - doWhenPopulate(updatePanes[i]); - break; - } - } - } - - public boolean isMulti(Class _class){ - return ComparatorUtils.equals(_class, GlobalMultiTDTableDataPane.class) || ComparatorUtils.equals(_class, MultiTDTableDataPane.class); - } - - public boolean isTree(Class _class){ - return ComparatorUtils.equals(_class, GlobalTreeTableDataPane.class) || ComparatorUtils.equals(_class, TreeTableDataPane.class); - } - - public void update() { - for (int i = 0; i < updatePanes.length; i++) { - BasicBeanPane pane = updatePanes[i]; - - if (pane != null && pane.isVisible()) { - Object bean = pane.updateBean(); - if (i < JControlPane.this.creators.length) { - JControlPane.this.creators[i].saveUpdatedBean(elEditing, bean); - } - } - } - } - - public void checkValid() throws Exception { - if (updatePanes != null) { - for (int i = 0; i < updatePanes.length; i++) { - if (updatePanes[i] != null) { - updatePanes[i].checkValid(); - } - } - } - } - } - - protected BasicBeanPane createPaneByCreators(NameableCreator creator) { - try { - return creator.getUpdatePane().newInstance(); - } catch (InstantiationException e) { - throw new RuntimeException(e); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } - } - - protected BasicBeanPane createPaneByCreators(NameableCreator creator, String string) { - Constructor constructor = null; - try { - constructor = creator.getUpdatePane().getDeclaredConstructor(new Class[]{String.class}); - constructor.setAccessible(true); - return (BasicBeanPane) constructor.newInstance(string); - } catch (NoSuchMethodException e) { - throw new RuntimeException(e); - } catch (InstantiationException e) { - throw new RuntimeException(e); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } catch (InvocationTargetException e) { - throw new RuntimeException(e); - } - - } - - // 选项添加个数有限制等情况下 要求能控制快捷按钮的状态 - protected void setToolbarDefEnable(int shortCutIndex, int itemIndex, boolean enabled) { - if (this.toolbarDef.getShortCutCount() > shortCutIndex) { - ShortCut sc = this.toolbarDef.getShortCut(shortCutIndex); - if (sc instanceof AddItemMenuDef) { - AddItemMenuDef am = (AddItemMenuDef) sc; - if (am.getShortCutCount() > itemIndex) { - am.getShortCut(itemIndex).setEnabled(enabled); - } - } - } - } - - /** - * 检查是否符合规范 - * - * @throws Exception - */ - public void checkValid() throws Exception { - this.controlUpdatePane.checkValid(); - } - - private int getInValidIndex() { - BasicBeanPane[] p = controlUpdatePane.updatePanes; - if (p != null) { - for (int i = 0; i < p.length; i++) { - if (p[i] != null) { - try { - p[i].checkValid(); - } catch (Exception e) { - return i; - } - } - } - } - return -1; - } - - private boolean hasInvalid(boolean isAdd) { - int idx = JControlPane.this.getInValidIndex(); - if (isAdd || nameableList.getSelectedIndex() != idx) { - try { - checkValid(); - } catch (Exception exp) { - JOptionPane.showMessageDialog(JControlPane.this, exp.getMessage()); - nameableList.setSelectedIndex(idx); - return true; - } - } - return false; - } - - - /** - * 设置选中项 - * - * @param index 选中项的序列号 - */ - public void setSelectedIndex(int index) { - nameableList.setSelectedIndex(index); - } -} \ No newline at end of file +package com.fr.design.gui.controlpane; + +import com.fr.data.TableDataSource; +import com.fr.design.dialog.BasicPane; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.itoolbar.UIToolbar; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.menu.ToolBarDef; +import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.file.DatasourceManagerProvider; +import com.fr.stable.ArrayUtils; +import com.fr.stable.Nameable; + +import javax.swing.*; +import java.awt.*; +import java.util.HashMap; +import java.util.Map; + +/** + * Coder: zack + * Date: 2016/5/17 + * Time: 15:07 + */ +public abstract class JControlPane extends BasicPane implements UnrepeatedNameHelper { + private static final int SHORT_WIDTH = 30; //每加一个short Divider位置加30 + + private ShortCut4JControlPane[] shorts; + private NameableCreator[] creators; + protected JPanel controlUpdatePane; + + private ToolBarDef toolbarDef; + private UIToolbar toolBar; + + // peter:这是整体的一个cardLayout Pane + private CardLayout cardLayout; + private JPanel cardPane; + protected String selectedName; + protected boolean isNamePermitted = true; + protected Map dsNameChangedMap = new HashMap(); + private boolean isNameRepeated = false; + + public JControlPane() { + this.initComponentPane(); + } + + /** + * 生成添加按钮的NameableCreator + * + * @return 按钮的NameableCreator + */ + public abstract NameableCreator[] createNameableCreators(); + + protected void initComponentPane() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + this.creators = this.createNameableCreators(); + this.controlUpdatePane = new JPanel(); + + // p: edit card layout + this.cardLayout = new CardLayout(); + cardPane = FRGUIPaneFactory.createCardLayout_S_Pane(); + cardPane.setLayout(this.cardLayout); + // p:选择的Label + UILabel selectLabel = new UILabel(); + cardPane.add(selectLabel, "SELECT"); + cardPane.add(controlUpdatePane, "EDIT"); + // SplitPane + JSplitPane mainSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, getLeftPane(), cardPane); + mainSplitPane.setBorder(BorderFactory.createLineBorder(GUICoreUtils.getTitleLineBorderColor())); + mainSplitPane.setOneTouchExpandable(true); + + this.add(mainSplitPane, BorderLayout.CENTER); + mainSplitPane.setDividerLocation(getLeftPreferredSize()); + this.checkButtonEnabled(); + } + + + protected JPanel getLeftPane() { + // LeftPane + JPanel leftPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + + init(leftPane); + + shorts = this.createShortcuts(); + if (ArrayUtils.isEmpty(shorts)) { + return leftPane; + } + + toolbarDef = new ToolBarDef(); + for (ShortCut4JControlPane sj : shorts) { + toolbarDef.addShortCut(sj.getShortCut()); + } + toolBar = ToolBarDef.createJToolBar(); + toolbarDef.updateToolBar(toolBar); + leftPane.add(toolBar, BorderLayout.NORTH); + return leftPane; + } + + /** + * 初始化 + */ + protected void init(JPanel leftPane) { + + } + + protected int getLeftPreferredSize() { + return shorts.length * SHORT_WIDTH; + } + + public Map getDsNameChangedMap() { + return dsNameChangedMap; + } + + public void setDsNameChangedMap(Map dsNameChangedMap) { + this.dsNameChangedMap = dsNameChangedMap; + } + + protected ShortCut4JControlPane[] createShortcuts() { + return new ShortCut4JControlPane[]{ + addItemShortCut(), + removeItemShortCut(), + copyItemShortCut(), + moveUpItemShortCut(), + moveDownItemShortCut(), + sortItemShortCut() + }; + } + + protected abstract ShortCut4JControlPane addItemShortCut(); + + protected abstract ShortCut4JControlPane removeItemShortCut(); + + protected abstract ShortCut4JControlPane copyItemShortCut(); + + protected abstract ShortCut4JControlPane moveUpItemShortCut(); + + protected abstract ShortCut4JControlPane moveDownItemShortCut(); + + protected abstract ShortCut4JControlPane sortItemShortCut(); + + public void setNameListEditable(boolean editable) { + } + + public abstract Nameable[] update(); + + + public void populate(Nameable[] nameableArray) { + } + + public void update(DatasourceManagerProvider datasourceManager) { + } + + public void populate(DatasourceManagerProvider datasourceManager) { + } + + public void populate(TableDataSource tds) { + } + + public void update(TableDataSource tds) { + } + + + /** + * 根据name,选中JNameEdList中的item + */ + public void setSelectedName(String name) { + } + + /** + * 获取选中的名字 + */ + public abstract String getSelectedName(); + + /** + * 名字是否重复 + * + * @return 重复则返回true + */ + public boolean isNameRepeated() { + return isNameRepeated; + } + + /** + * 名字是否允许 + * + * @return 是则返回true + */ + public boolean isNamePermitted() { + return isNamePermitted; + } + + /** + * 是否重命名 + * + * @return 是则true + */ + public abstract boolean isContainsRename(); + + /** + * 生成不重复的名字 + * + * @param prefix 名字前缀 + * @return 名字 + */ + public abstract String createUnrepeatedName(String prefix); + + + /** + * 检查按钮可用状态 Check button enabled. + */ + public void checkButtonEnabled() { + } + + protected void doBeforeRemove() { + + } + + protected void doAfterRemove() { + + } + + public NameableCreator[] creators() { + return creators == null ? new NameableCreator[0] : creators; + } + + /** + * 检查是否符合规范 + * + * @throws Exception + */ + public void checkValid() throws Exception { + } + + protected abstract boolean hasInvalid(boolean isAdd); + + /** + * 设置选中项 + * + * @param index 选中项的序列号 + */ + public void setSelectedIndex(int index) { + } + + + protected void rename(String oldName, String newName) { + dsNameChangedMap.put(oldName, newName); + } +} diff --git a/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java b/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java new file mode 100644 index 0000000000..debfc0a39f --- /dev/null +++ b/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java @@ -0,0 +1,1028 @@ +package com.fr.design.gui.controlpane; + +import com.fr.base.BaseUtils; +import com.fr.base.FRContext; +import com.fr.design.actions.UpdateAction; +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.data.tabledata.tabledatapane.GlobalMultiTDTableDataPane; +import com.fr.design.data.tabledata.tabledatapane.GlobalTreeTableDataPane; +import com.fr.design.data.tabledata.tabledatapane.MultiTDTableDataPane; +import com.fr.design.data.tabledata.tabledatapane.TreeTableDataPane; +import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.gui.icontainer.UIScrollPane; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.ilist.JNameEdList; +import com.fr.design.gui.ilist.ListModelElement; +import com.fr.design.gui.ilist.ModNameActionListener; +import com.fr.design.gui.itoolbar.UIToolbar; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.mainframe.JTemplate; +import com.fr.design.menu.LineSeparator; +import com.fr.design.menu.MenuDef; +import com.fr.design.menu.ShortCut; +import com.fr.design.menu.ToolBarDef; +import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.ComparatorUtils; +import com.fr.general.Inter; +import com.fr.stable.ArrayUtils; +import com.fr.stable.Nameable; +import com.fr.stable.core.PropertyChangeAdapter; + +import javax.swing.*; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.util.Arrays; +import java.util.Comparator; + +public abstract class JListControlPane extends JControlPane { + public static final String LIST_NAME = "JControl_List"; + private static final int SHORT_WIDTH = 30; //每加一个short Divider位置加30 + + private ShortCut4JControlPane[] shorts; + private NameableCreator[] creators; + protected JNameEdList nameableList; + protected JControlUpdatePane controlUpdatePane; + + private ToolBarDef toolbarDef; + private UIToolbar toolBar; + + // peter:这是整体的一个cardLayout Pane + private CardLayout cardLayout; + private JPanel cardPane; + protected int editingIndex; + protected String selectedName; + private boolean isNameRepeated = false; + + public JListControlPane() { + this.initComponentPane(); + } + + /** + * 生成添加按钮的NameableCreator + * @return 按钮的NameableCreator + */ + public abstract NameableCreator[] createNameableCreators(); + + protected void initComponentPane() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + this.creators = this.createNameableCreators(); + this.controlUpdatePane = new JControlUpdatePane(); + + // p: edit card layout + this.cardLayout = new CardLayout(); + cardPane = FRGUIPaneFactory.createCardLayout_S_Pane(); + cardPane.setLayout(this.cardLayout); + // p:选择的Label + UILabel selectLabel = new UILabel(); + cardPane.add(selectLabel, "SELECT"); + cardPane.add(controlUpdatePane, "EDIT"); + // SplitPane + JSplitPane mainSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, getLeftPane(), cardPane); + mainSplitPane.setBorder(BorderFactory.createLineBorder(GUICoreUtils.getTitleLineBorderColor())); + mainSplitPane.setOneTouchExpandable(true); + + this.add(mainSplitPane, BorderLayout.CENTER); + mainSplitPane.setDividerLocation(getLeftPreferredSize()); + this.checkButtonEnabled(); + } + + + protected JPanel getLeftPane(){ + // LeftPane + JPanel leftPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + + initNameList(leftPane); + + shorts = this.createShortcuts(); + if (ArrayUtils.isEmpty(shorts)) { + return leftPane; + } + + toolbarDef = new ToolBarDef(); + for (ShortCut4JControlPane sj : shorts) { + toolbarDef.addShortCut(sj.getShortCut()); + } + toolBar = ToolBarDef.createJToolBar(); + toolbarDef.updateToolBar(toolBar); + leftPane.add(toolBar, BorderLayout.NORTH); + return leftPane; + } + + + private void initNameList(JPanel leftPane) { + nameableList = createJNameList(); + nameableList.setName(LIST_NAME); + leftPane.add(new UIScrollPane(nameableList), BorderLayout.CENTER); + + + nameableList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); + nameableList.addMouseListener(listMouseListener); + nameableList.addListSelectionListener(new ListSelectionListener() { + public void valueChanged(ListSelectionEvent evt) { + // richie:避免多次update和populate大大降低效率 + if (!evt.getValueIsAdjusting()) { + // shoc 切换的时候加检验 + if (hasInvalid(false)) { + return; + } + JListControlPane.this.controlUpdatePane.update(); + JListControlPane.this.controlUpdatePane.populate(); + JListControlPane.this.checkButtonEnabled(); + } + } + }); + } + + public JNameEdList createJNameList() { + JNameEdList nameEdList = new JNameEdList(new DefaultListModel()) { + protected void doAfterLostFocus() { + JListControlPane.this.updateControlUpdatePane(); + } + }; + nameEdList.setCellRenderer(new NameableListCellRenderer()); + return nameEdList; + } + + public void updateControlUpdatePane() { + controlUpdatePane.update(); + } + + protected void doWhenPopulate(BasicBeanPane beanPane){ + + } + + protected int getLeftPreferredSize() { + return shorts.length * SHORT_WIDTH; + } + + protected ShortCut4JControlPane[] createShortcuts() { + return new ShortCut4JControlPane[]{ + addItemShortCut(), + removeItemShortCut(), + copyItemShortCut(), + moveUpItemShortCut(), + moveDownItemShortCut(), + sortItemShortCut() + }; + } + + protected ShortCut4JControlPane addItemShortCut() { + ShortCut addItemShortCut; + if (creators.length == 1) { + addItemShortCut = new AddItemUpdateAction(creators); + } else { + addItemShortCut = new AddItemMenuDef(creators); + } + return new AbsoluteEnableShortCut(addItemShortCut); + } + + protected ShortCut4JControlPane removeItemShortCut() { + return new NormalEnableShortCut(new RemoveItemAction()); + } + + protected ShortCut4JControlPane copyItemShortCut() { + return new NormalEnableShortCut(new CopyItemAction()); + } + + protected ShortCut4JControlPane moveUpItemShortCut() { + return new NormalEnableShortCut(new MoveUpItemAction()); + } + + protected ShortCut4JControlPane moveDownItemShortCut() { + return new NormalEnableShortCut(new MoveDownItemAction()); + } + + protected ShortCut4JControlPane sortItemShortCut() { + return new NormalEnableShortCut(new SortItemAction()); + } + + public void setNameListEditable(boolean editable) { + this.nameableList.setEditable(editable); + } + + public Nameable[] update() { + java.util.List res = new java.util.ArrayList(); + this.controlUpdatePane.update(); + DefaultListModel listModel = (DefaultListModel) this.nameableList.getModel(); + for (int i = 0, len = listModel.getSize(); i < len; i++) { + res.add(((ListModelElement) listModel.getElementAt(i)).wrapper); + } + + return res.toArray(new Nameable[res.size()]); + } + + public void populate(Nameable[] nameableArray) { + DefaultListModel listModel = (DefaultListModel) this.nameableList.getModel(); + listModel.removeAllElements(); + if (ArrayUtils.isEmpty(nameableArray)) { + return; + } + + for (Nameable aNameableArray : nameableArray) { + listModel.addElement(new ListModelElement(aNameableArray)); + } + + if (listModel.size() > 0) { + this.nameableList.setSelectedIndex(0); + } + this.checkButtonEnabled(); + } + + /** + * 添加名字改变时的listener + * + * @param l 名字改变时的监听 + */ + public void addModNameActionListener(ModNameActionListener l) { + this.nameableList.addModNameActionListener(l); + } + + /** + * 添加Editinglistener + * + * @param l 监听 + */ + public void addEditingListner(PropertyChangeAdapter l) { + this.nameableList.addEditingListner(l); + } + + /* + * 刷新当前的选中的UpdatePane + */ + protected void populateSelectedValue() { + JListControlPane.this.controlUpdatePane.populate(); + } + + /** + * 根据name,选中JNameEdList中的item + */ + public void setSelectedName(String name) { + DefaultListModel listModel = (DefaultListModel) this.nameableList.getModel(); + for (int i = 0, len = listModel.getSize(); i < len; i++) { + Nameable item = ((ListModelElement) listModel.getElementAt(i)).wrapper; + if (ComparatorUtils.equals(name, item.getName())) { + this.nameableList.setSelectedIndex(i); + break; + } + } + } + + public String getEditingName() { + return this.nameableList.getEditingName(); + } + + public Object getEditingType() { + return this.nameableList.getAllTypes()[editingIndex]; + } + + public void setWarnigText(int index) { + this.nameableList.setWarnigText(index); + } + + /** + * 获取选中的名字 + */ + public String getSelectedName() { + ListModelElement el = (ListModelElement) this.nameableList.getSelectedValue(); + + return el == null ? null : el.wrapper.getName(); + } + + /** + * 刷新 NameableCreator + * + * @param creators 生成器 + */ + public void refreshNameableCreator(NameableCreator[] creators) { + this.creators = creators; + shorts = this.createShortcuts(); + toolbarDef.clearShortCuts(); + for (ShortCut4JControlPane sj : shorts) { + toolbarDef.addShortCut(sj.getShortCut()); + } + + toolbarDef.updateToolBar(toolBar); + toolBar.validate(); + toolBar.repaint(); + this.repaint(); + } + + protected boolean isNameRepeted(java.util.List[] list, String name) { + for (int i = 0; i < list.length; i++) { + if (list[i].contains(name)) { + isNameRepeated = true; + return true; + } + } + isNameRepeated = false; + return false; + } + + /** + * 名字是否重复 + * @return 重复则返回true + */ + public boolean isNameRepeated() { + return isNameRepeated; + } + + /** + * 添加 Nameable + * + * @param nameable 添加的Nameable + * @param index 序号 + */ + public void addNameable(Nameable nameable, int index) { + JNameEdList nameEdList = JListControlPane.this.nameableList; + DefaultListModel model = (DefaultListModel) nameEdList.getModel(); + + ListModelElement el = new ListModelElement(nameable); + model.add(index, el); + nameableList.setSelectedIndex(index); + nameableList.ensureIndexIsVisible(index); + + nameEdList.repaint(); + } + + /** + * 是否重命名 + * @return 是则true + */ + public boolean isContainsRename() { + String rename = Inter.getLocText("FR-Please_Rename") + "!"; + String[] names = this.nameableList.getAllNames(); + for (int i = names.length - 1; i >= 0; i--) { + if (ComparatorUtils.equals(names[i], rename)) { + return true; + } + } + return false; + } + + protected DefaultListModel getModel() { + return (DefaultListModel) JListControlPane.this.nameableList.getModel(); + } + + private String createUnrepeatedCopyName(String suffix) { + DefaultListModel model = this.getModel(); + String[] names = new String[model.getSize()]; + for (int i = 0; i < model.size(); i++) { + names[i] = ((ListModelElement) model.get(i)).wrapper.getName(); + } + String lastName = "CopyOf" + suffix; + while (ArrayUtils.contains(names, lastName)) { + lastName = "CopyOf" + lastName; + } + return lastName; + } + + + /** + * 生成不重复的名字 + * + * @param prefix 名字前缀 + * @return 名字 + */ + public String createUnrepeatedName(String prefix) { + DefaultListModel model = this.getModel(); + Nameable[] all = new Nameable[model.getSize()]; + for (int i = 0; i < model.size(); i++) { + all[i] = ((ListModelElement) model.get(i)).wrapper; + } + // richer:生成的名字从1开始. kunsnat: 添加属性从0开始. + int count = all.length + 1; + while (true) { + String name_test = prefix + count; + boolean repeated = false; + for (int i = 0, len = model.size(); i < len; i++) { + Nameable nameable = all[i]; + if (ComparatorUtils.equals(nameable.getName(), name_test)) { + repeated = true; + break; + } + } + + if (!repeated) { + return name_test; + } + + count++; + } + } + + /** + * 增加项的UpdateAction + */ + protected class AddItemUpdateAction extends UpdateAction { + final NameableCreator creator; + + public AddItemUpdateAction(NameableCreator[] creators) { + this.creator = creators[0]; + this.setName(Inter.getLocText("FR-Action_Add")); + this.setMnemonic('A'); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/base/images/cell/control/add.png")); + } + + public void actionPerformed(ActionEvent e) { + Nameable nameable = creator.createNameable(JListControlPane.this); + + JListControlPane.this.addNameable(nameable, getModel().getSize()); + } + } + + /* + * 增加项的MenuDef + */ + protected class AddItemMenuDef extends MenuDef { + public AddItemMenuDef(NameableCreator[] creators) { + this.setName(Inter.getLocText("FR-Action_Add")); + this.setMnemonic('A'); + this.setIconPath("/com/fr/design/images/control/addPopup.png"); + wrapActionListener(creators); + } + + private void wrapActionListener(NameableCreator[] creators) { + for (final NameableCreator creator : creators) { + if (!whetherAdd(creator.menuName())){ + continue; + } + boolean isTrue = ComparatorUtils.equals(creator.menuName(), Inter.getLocText("Datasource-Stored_Procedure")) || + ComparatorUtils.equals(creator.menuName(), Inter.getLocText("DS-Relation_TableData")) || ComparatorUtils.equals(creator.menuName(), Inter.getLocText("DS-Multi_Dimensional_Database")); + if (isTrue) { + this.addShortCut(new LineSeparator()); + } + this.addShortCut(new UpdateAction() { + { + this.setName(creator.menuName()); + Icon icon = creator.menuIcon(); + if (icon != null) { + this.setSmallIcon(icon); + } + } + + public void actionPerformed(ActionEvent e) { + if (hasInvalid(true)) { + return; + } + + Nameable nameable = creator.createNameable(JListControlPane.this); + + JListControlPane.this.addNameable(nameable, getModel().getSize()); + } + }); + } + } + + private boolean whetherAdd(String itemName){ + JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + if (jTemplate == null) { + return false; + } + //先屏蔽掉这个,之后还有别的 + String[] names = {Inter.getLocText("FR-Hyperlink_Chart_Float")}; + for (String name : names){ + if(!jTemplate.isJWorkBook() && ComparatorUtils.equals(itemName, name)){ + return false; + } + } + String formName = Inter.getLocText("Hyperlink-Form_link"); + return !(jTemplate.isJWorkBook() && ComparatorUtils.equals(itemName, formName)); + } + } + + /* + * 移除item + */ + private class RemoveItemAction extends UpdateAction { + public RemoveItemAction() { + this.setName(Inter.getLocText("FR-Action_Remove")); + this.setMnemonic('R'); + this.setSmallIcon(BaseUtils + .readIcon("/com/fr/base/images/cell/control/remove.png")); + } + + public void actionPerformed(ActionEvent evt) { + try { + JListControlPane.this.nameableList.getCellEditor() + .stopCellEditing(); + } catch (Exception ignored) { + } + // bug:在选中一个NameObject并删除,会遗留下Name. + doBeforeRemove(); + if (GUICoreUtils.removeJListSelectedNodes(SwingUtilities + .getWindowAncestor(JListControlPane.this), nameableList)) { + checkButtonEnabled(); + doAfterRemove(); + } + } + } + + /* + * CopyItem + */ + private class CopyItemAction extends UpdateAction { + public CopyItemAction() { + this.setName(Inter.getLocText("FR-Action_Copy")); + this.setMnemonic('C'); + this.setSmallIcon(BaseUtils + .readIcon("/com/fr/base/images/cell/control/copy.png")); + } + + public void actionPerformed(ActionEvent evt) { + // p:选中的值. + ListModelElement selectedValue = (ListModelElement) nameableList.getSelectedValue(); + if (selectedValue == null) { + return; + } + + controlUpdatePane.update(); + + Nameable selectedNameable = selectedValue.wrapper; + + // p: 用反射机制实现 + try { + Nameable newNameable = (Nameable) BaseUtils.cloneObject(selectedNameable); + newNameable.setName(createUnrepeatedCopyName(selectedNameable.getName())); + + JListControlPane.this.addNameable(newNameable, nameableList.getSelectedIndex() + 1); + } catch (Exception e) { + FRContext.getLogger().error(e.getMessage(), e); + } + } + } + + /* + * 上移Item + */ + private class MoveUpItemAction extends UpdateAction { + public MoveUpItemAction() { + this.setName(Inter.getLocText("Utils-Move_Up")); + this.setMnemonic('U'); + this.setSmallIcon(BaseUtils + .readIcon("/com/fr/design/images/control/up.png")); + } + + public void actionPerformed(ActionEvent evt) { + int selectedIndex = nameableList.getSelectedIndex(); + if (selectedIndex == -1) { + return; + } + + // 上移 + if (selectedIndex > 0) { + DefaultListModel listModel = (DefaultListModel) nameableList + .getModel(); + + Object selecteObj1 = listModel.get(selectedIndex - 1); + listModel.set(selectedIndex - 1, listModel.get(selectedIndex)); + listModel.set(selectedIndex, selecteObj1); + + nameableList.setSelectedIndex(selectedIndex - 1); + nameableList.ensureIndexIsVisible(selectedIndex - 1); + } + } + } + + /* + * 下移Item + */ + private class MoveDownItemAction extends UpdateAction { + public MoveDownItemAction() { + this.setName(Inter.getLocText("Utils-Move_Down")); + this.setMnemonic('D'); + this.setSmallIcon(BaseUtils + .readIcon("/com/fr/design/images/control/down.png")); + } + + public void actionPerformed(ActionEvent evt) { + int selectedIndex = nameableList.getSelectedIndex(); + if (selectedIndex == -1) { + return; + } + + if (selectedIndex < nameableList.getModel().getSize() - 1) { + DefaultListModel listModel = (DefaultListModel) nameableList + .getModel(); + + Object selecteObj1 = listModel.get(selectedIndex + 1); + listModel.set(selectedIndex + 1, listModel.get(selectedIndex)); + listModel.set(selectedIndex, selecteObj1); + + nameableList.setSelectedIndex(selectedIndex + 1); + nameableList.ensureIndexIsVisible(selectedIndex + 1); + } + } + } + + private class SortItemAction extends UpdateAction { + private boolean isAtoZ = false; + + public SortItemAction() { + this.setName(Inter.getLocText("FR-Action_Sort")); + this.setMnemonic('S'); + this.setSmallIcon(BaseUtils + .readIcon("/com/fr/design/images/control/sortAsc.png")); + } + + public void actionPerformed(ActionEvent evt) { + // p:选中的值. + Object selectedValue = nameableList.getSelectedValue(); + + DefaultListModel listModel = (DefaultListModel) nameableList + .getModel(); + Nameable[] nameableArray = new Nameable[listModel.getSize()]; + if (nameableArray.length <= 0) { + return; + } + + for (int i = 0; i < listModel.getSize(); i++) { + nameableArray[i] = ((ListModelElement) listModel.getElementAt(i)).wrapper; + } + + // p:排序. + if (isAtoZ) { + Comparator nameableComparator = new Comparator() { + public int compare(Nameable o1, Nameable o2) { + return -ComparatorUtils.compare(o1.getName(), o2 + .getName()); + } + }; + isAtoZ = !isAtoZ; + Arrays.sort(nameableArray, nameableComparator); + } else { + Comparator nameableComparator = new Comparator() { + public int compare(Nameable o1, Nameable o2) { + return ComparatorUtils.compare(o1.getName(), o2 + .getName()); + } + }; + isAtoZ = !isAtoZ; + Arrays.sort(nameableArray, nameableComparator); + } + + for (int i = 0; i < nameableArray.length; i++) { + listModel.set(i, new ListModelElement(nameableArray[i])); + } + + // p:需要选中以前的那个值. + if (selectedValue != null) { + nameableList.setSelectedValue(selectedValue, true); + } + + checkButtonEnabled(); + // p:需要repaint. + nameableList.repaint(); + } + } + + /* + * JNameEdList的鼠标事件 + */ + private MouseListener listMouseListener = new MouseAdapter() { + public void mouseReleased(MouseEvent evt) { + nameableList.stopEditing(); + if (evt.getClickCount() >= 2 + && SwingUtilities.isLeftMouseButton(evt)) { + editingIndex = nameableList.getSelectedIndex(); + selectedName = nameableList.getNameAt(editingIndex); + nameableList.editItemAt(nameableList.getSelectedIndex()); + } + // peter:处理右键的弹出菜单 + if (!SwingUtilities.isRightMouseButton(evt)) { + return; + } + + // peter: 注意,在checkButtonEnabled()方法里面,设置了所有的Action的Enabled. + checkButtonEnabled(); + + // p:右键菜单. + JPopupMenu popupMenu = new JPopupMenu(); + + for (ShortCut4JControlPane sj : shorts) { + sj.getShortCut().intoJPopupMenu(popupMenu); + } + + // peter: 只有弹出菜单有子菜单的时候,才需要弹出来. + GUICoreUtils.showPopupMenu(popupMenu, nameableList, evt.getX() - 1, + evt.getY() - 1); + } + + public void mouseMoved(MouseEvent e) { + + } + }; + + /** + * 检查按钮可用状态 Check button enabled. + */ + public void checkButtonEnabled() { + int selectedIndex = nameableList.getSelectedIndex(); + if (selectedIndex == -1) { + this.cardLayout.show(cardPane, "SELECT"); + } else { + this.cardLayout.show(cardPane, "EDIT"); + } + for (ShortCut4JControlPane sj : this.shorts) { + sj.checkEnable(); + } + } + + protected void doBeforeRemove(){ + + } + + protected void doAfterRemove(){ + + } + + public NameableCreator[] creators() { + return creators == null ? new NameableCreator[0] : creators; + } + + /* + * Nameable的ListCellRenerer + */ + private class NameableListCellRenderer extends + DefaultListCellRenderer { + public Component getListCellRendererComponent(JList list, Object value, + int index, boolean isSelected, boolean cellHasFocus) { + super.getListCellRendererComponent(list, value, index, isSelected, + cellHasFocus); + + if (value instanceof ListModelElement) { + Nameable wrappee = ((ListModelElement) value).wrapper; + this.setText(((ListModelElement) value).wrapper.getName()); + + boolean iconSet = false; + for (NameableCreator creator : JListControlPane.this.creators) { + if (creator.menuIcon() != null && creator.acceptObject2Populate(wrappee) != null) { + this.setIcon(creator.menuIcon()); + this.setToolTipText(creator.createTooltip()); + iconSet = true; + break; + } + } + if (!iconSet) { + this.setIcon(BaseUtils.readIcon("/com/fr/base/images/oem/cpt.png")); + } + } + + return this; + } + } + + public class AbsoluteEnableShortCut extends ShortCut4JControlPane { + public AbsoluteEnableShortCut(ShortCut shortCut) { + this.shortCut = shortCut; + } + + /** + * 检查是否可用 + */ + public void checkEnable() { + this.shortCut.setEnabled(true); + } + } + + public class NormalEnableShortCut extends ShortCut4JControlPane { + public NormalEnableShortCut(ShortCut shortCut) { + this.shortCut = shortCut; + } + + /** + * 检查是否可用 + */ + public void checkEnable() { + this.shortCut.setEnabled(getModel() + .getSize() > 0 + && JListControlPane.this.nameableList.getSelectedIndex() != -1); + } + } + + public class SortEnableShortCut extends ShortCut4JControlPane { + public SortEnableShortCut(ShortCut shortCut) { + this.shortCut = shortCut; + } + + /** + * 检查是否可用 + */ + @Override + public void checkEnable() { + this.shortCut.setEnabled(getModel().getSize() > 1); + } + + } + + public class MoveUpEnableShortCut extends ShortCut4JControlPane { + public MoveUpEnableShortCut(ShortCut shortCut) { + this.shortCut = shortCut; + } + + /** + * 检查是否可用 + */ + @Override + public void checkEnable() { + this.shortCut.setEnabled(getModel().getSize() > 1 + && JListControlPane.this.nameableList.getSelectedIndex() > 0); + } + + } + + public class MoveDownEnableShortCut extends ShortCut4JControlPane { + public MoveDownEnableShortCut(ShortCut shortCut) { + this.shortCut = shortCut; + } + + /** + * 检查是否可用 + */ + @Override + public void checkEnable() { + this.shortCut.setEnabled(getModel().getSize() > 1 + && JListControlPane.this.nameableList.getSelectedIndex() < JListControlPane.this.nameableList.getModel().getSize() - 1); + } + + } + + private class JControlUpdatePane extends JPanel { + private CardLayout card; + private JPanel cardPane; + private BasicBeanPane[] updatePanes; + + private ListModelElement elEditing; + + public JControlUpdatePane() { + initUpdatePane(); + } + + private void initUpdatePane() { + if (creators == null) { + return; + } + card = new CardLayout(); + cardPane = FRGUIPaneFactory.createCardLayout_S_Pane(); + cardPane.setLayout(card); + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + this.add(cardPane); + int len = creators.length; + updatePanes = new BasicBeanPane[len]; + } + + public void populate() { + ListModelElement el = (ListModelElement) JListControlPane.this.nameableList.getSelectedValue(); + if (el == null) { + return; + } + + elEditing = el; + + for (int i = 0, len = updatePanes.length; i < len; i++) { + Object ob2Populate = creators[i].acceptObject2Populate(el.wrapper); + if (ob2Populate != null) { + if (updatePanes[i] == null) { + if (isMulti(creators[i].getUpdatePane()) || isTree(creators[i].getUpdatePane())) { + updatePanes[i] = createPaneByCreators(creators[i], el.wrapper.getName()); + } else { + updatePanes[i] = createPaneByCreators(creators[i]); + } + cardPane.add(updatePanes[i], String.valueOf(i)); + } + card.show(cardPane, String.valueOf(i)); + updatePanes[i].populateBean(ob2Populate); + doWhenPopulate(updatePanes[i]); + break; + } + } + } + + public boolean isMulti(Class _class){ + return ComparatorUtils.equals(_class, GlobalMultiTDTableDataPane.class) || ComparatorUtils.equals(_class, MultiTDTableDataPane.class); + } + + public boolean isTree(Class _class){ + return ComparatorUtils.equals(_class, GlobalTreeTableDataPane.class) || ComparatorUtils.equals(_class, TreeTableDataPane.class); + } + + public void update() { + for (int i = 0; i < updatePanes.length; i++) { + BasicBeanPane pane = updatePanes[i]; + + if (pane != null && pane.isVisible()) { + Object bean = pane.updateBean(); + if (i < JListControlPane.this.creators.length) { + JListControlPane.this.creators[i].saveUpdatedBean(elEditing, bean); + } + } + } + } + + public void checkValid() throws Exception { + if (updatePanes != null) { + for (int i = 0; i < updatePanes.length; i++) { + if (updatePanes[i] != null) { + updatePanes[i].checkValid(); + } + } + } + } + } + + protected BasicBeanPane createPaneByCreators(NameableCreator creator) { + try { + return creator.getUpdatePane().newInstance(); + } catch (InstantiationException e) { + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + } + + protected BasicBeanPane createPaneByCreators(NameableCreator creator, String string) { + Constructor constructor = null; + try { + constructor = creator.getUpdatePane().getDeclaredConstructor(new Class[]{String.class}); + constructor.setAccessible(true); + return (BasicBeanPane) constructor.newInstance(string); + } catch (NoSuchMethodException e) { + throw new RuntimeException(e); + } catch (InstantiationException e) { + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } catch (InvocationTargetException e) { + throw new RuntimeException(e); + } + + } + + // 选项添加个数有限制等情况下 要求能控制快捷按钮的状态 + protected void setToolbarDefEnable(int shortCutIndex, int itemIndex, boolean enabled) { + if (this.toolbarDef.getShortCutCount() > shortCutIndex) { + ShortCut sc = this.toolbarDef.getShortCut(shortCutIndex); + if (sc instanceof AddItemMenuDef) { + AddItemMenuDef am = (AddItemMenuDef) sc; + if (am.getShortCutCount() > itemIndex) { + am.getShortCut(itemIndex).setEnabled(enabled); + } + } + } + } + + /** + * 检查是否符合规范 + * + * @throws Exception + */ + public void checkValid() throws Exception { + this.controlUpdatePane.checkValid(); + } + + private int getInValidIndex() { + BasicBeanPane[] p = controlUpdatePane.updatePanes; + if (p != null) { + for (int i = 0; i < p.length; i++) { + if (p[i] != null) { + try { + p[i].checkValid(); + } catch (Exception e) { + return i; + } + } + } + } + return -1; + } + + protected boolean hasInvalid(boolean isAdd) { + int idx = JListControlPane.this.getInValidIndex(); + if (isAdd || nameableList.getSelectedIndex() != idx) { + try { + checkValid(); + } catch (Exception exp) { + JOptionPane.showMessageDialog(JListControlPane.this, exp.getMessage()); + nameableList.setSelectedIndex(idx); + return true; + } + } + return false; + } + + + /** + * 设置选中项 + * + * @param index 选中项的序列号 + */ + public void setSelectedIndex(int index) { + nameableList.setSelectedIndex(index); + } +} \ No newline at end of file diff --git a/designer_base/src/com/fr/design/gui/controlpane/ObjectJControlPane.java b/designer_base/src/com/fr/design/gui/controlpane/ObjectJControlPane.java index fb944b93b5..69fe1d642b 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/ObjectJControlPane.java +++ b/designer_base/src/com/fr/design/gui/controlpane/ObjectJControlPane.java @@ -11,7 +11,7 @@ import com.fr.design.beans.BasicBeanPane; * @author zhou * @since 2012-4-5上午9:29:20 */ -public abstract class ObjectJControlPane extends JControlPane { +public abstract class ObjectJControlPane extends JListControlPane { private Object object; public ObjectJControlPane() { diff --git a/designer_base/src/com/fr/design/gui/frpane/HyperlinkGroupPane.java b/designer_base/src/com/fr/design/gui/frpane/HyperlinkGroupPane.java index fe14127725..b7992e60e7 100644 --- a/designer_base/src/com/fr/design/gui/frpane/HyperlinkGroupPane.java +++ b/designer_base/src/com/fr/design/gui/frpane/HyperlinkGroupPane.java @@ -4,7 +4,7 @@ import com.fr.design.ExtraDesignClassManager; import com.fr.design.actions.HyperlinkPluginAction; import com.fr.design.actions.UpdateAction; import com.fr.design.fun.HyperlinkProvider; -import com.fr.design.gui.controlpane.JControlPane; +import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.module.DesignModuleFactory; import com.fr.general.Inter; @@ -25,7 +25,7 @@ import java.util.List; * @author kunsnat E-mail:kunsnat@gmail.com * @version 创建时间:2013-6-25 上午11:17:57 */ -public class HyperlinkGroupPane extends JControlPane { +public class HyperlinkGroupPane extends JListControlPane { /** * 生成添加按钮的NameableCreator diff --git a/designer_base/src/com/fr/design/parameter/ParameterArrayPane.java b/designer_base/src/com/fr/design/parameter/ParameterArrayPane.java index 5a36ece136..223c930788 100644 --- a/designer_base/src/com/fr/design/parameter/ParameterArrayPane.java +++ b/designer_base/src/com/fr/design/parameter/ParameterArrayPane.java @@ -2,7 +2,7 @@ package com.fr.design.parameter; import com.fr.base.ConfigManager; import com.fr.base.Parameter; -import com.fr.design.gui.controlpane.JControlPane; +import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.NameableSelfCreator; import com.fr.design.gui.controlpane.UnrepeatedNameHelper; @@ -18,7 +18,7 @@ import javax.swing.*; import java.util.Arrays; import java.util.List; -public class ParameterArrayPane extends JControlPane { +public class ParameterArrayPane extends JListControlPane { /** * Constructor. */ diff --git a/designer_base/src/com/fr/env/EnvListPane.java b/designer_base/src/com/fr/env/EnvListPane.java index a59d6ba915..0f81215825 100644 --- a/designer_base/src/com/fr/env/EnvListPane.java +++ b/designer_base/src/com/fr/env/EnvListPane.java @@ -41,7 +41,7 @@ import com.fr.dav.LocalEnv; import com.fr.design.DesignerEnvManager; import com.fr.design.beans.BasicBeanPane; import com.fr.design.dialog.InformationWarnPane; -import com.fr.design.gui.controlpane.JControlPane; +import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.ipasswordfield.UIPassWordField; @@ -63,7 +63,7 @@ import com.fr.stable.ProductConstants; import com.fr.stable.StringUtils; import com.fr.stable.core.PropertyChangeAdapter; -public class EnvListPane extends JControlPane { +public class EnvListPane extends JListControlPane { public EnvListPane() { super(); addEditingListner(new PropertyChangeAdapter() { diff --git a/designer_chart/src/com/fr/design/chart/ChartControlPane.java b/designer_chart/src/com/fr/design/chart/ChartControlPane.java index 390d780fb1..1ac74dbeab 100644 --- a/designer_chart/src/com/fr/design/chart/ChartControlPane.java +++ b/designer_chart/src/com/fr/design/chart/ChartControlPane.java @@ -3,7 +3,7 @@ package com.fr.design.chart; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.ChartCollection; import com.fr.design.beans.BasicBeanPane; -import com.fr.design.gui.controlpane.JControlPane; +import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.layout.FRGUIPaneFactory; @@ -18,7 +18,7 @@ import java.util.HashMap; * 管理图表类型Pane * @author kunsnat: ChartComponent移出. */ -public class ChartControlPane extends JControlPane { +public class ChartControlPane extends JListControlPane { private static final long serialVersionUID = 7336270815128413184L; public ChartControlPane() { diff --git a/designer_chart/src/com/fr/design/chart/axis/ChartAlertLinePane.java b/designer_chart/src/com/fr/design/chart/axis/ChartAlertLinePane.java index 28a06e22a2..e6bde825ab 100644 --- a/designer_chart/src/com/fr/design/chart/axis/ChartAlertLinePane.java +++ b/designer_chart/src/com/fr/design/chart/axis/ChartAlertLinePane.java @@ -4,14 +4,14 @@ import com.fr.general.Inter; import com.fr.general.NameObject; import com.fr.stable.Nameable; import com.fr.chart.chartattr.ChartAlertValue; -import com.fr.design.gui.controlpane.JControlPane; +import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import java.util.ArrayList; import java.util.List; -public class ChartAlertLinePane extends JControlPane { +public class ChartAlertLinePane extends JListControlPane { public NameableCreator[] createNameableCreators() { return new NameableCreator[]{ diff --git a/designer_chart/src/com/fr/design/chart/series/SeriesCondition/DataSeriesAttrPane.java b/designer_chart/src/com/fr/design/chart/series/SeriesCondition/DataSeriesAttrPane.java index 7fb006c849..a5f8b6d0a0 100644 --- a/designer_chart/src/com/fr/design/chart/series/SeriesCondition/DataSeriesAttrPane.java +++ b/designer_chart/src/com/fr/design/chart/series/SeriesCondition/DataSeriesAttrPane.java @@ -7,7 +7,7 @@ import com.fr.chart.chartattr.Plot; import com.fr.chart.chartglyph.ConditionAttr; import com.fr.chart.chartglyph.ConditionCollection; import com.fr.design.chart.series.SeriesCondition.impl.DataSeriesConditionPaneFactory; -import com.fr.design.gui.controlpane.JControlPane; +import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; @@ -20,7 +20,7 @@ import java.util.List; * * @see DataSeriesConditionPane */ -public class DataSeriesAttrPane extends JControlPane { +public class DataSeriesAttrPane extends JListControlPane { private static final long serialVersionUID = -7265389532959632525L; private Plot plot; diff --git a/designer_chart/src/com/fr/design/chart/series/SeriesCondition/TrendLineControlPane.java b/designer_chart/src/com/fr/design/chart/series/SeriesCondition/TrendLineControlPane.java index 583d2c3bd2..b59c5df6b6 100644 --- a/designer_chart/src/com/fr/design/chart/series/SeriesCondition/TrendLineControlPane.java +++ b/designer_chart/src/com/fr/design/chart/series/SeriesCondition/TrendLineControlPane.java @@ -5,14 +5,14 @@ import com.fr.general.NameObject; import com.fr.stable.Nameable; import com.fr.chart.base.AttrTrendLine; import com.fr.chart.base.ConditionTrendLine; -import com.fr.design.gui.controlpane.JControlPane; +import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import java.util.ArrayList; import java.util.List; -public class TrendLineControlPane extends JControlPane { +public class TrendLineControlPane extends JListControlPane { public NameableCreator[] createNameableCreators() { return new NameableCreator[] { diff --git a/designer_chart/src/com/fr/design/mainframe/MapArrayPane.java b/designer_chart/src/com/fr/design/mainframe/MapArrayPane.java index 14926e71cf..3dd189d30a 100644 --- a/designer_chart/src/com/fr/design/mainframe/MapArrayPane.java +++ b/designer_chart/src/com/fr/design/mainframe/MapArrayPane.java @@ -32,7 +32,7 @@ import java.util.List; * Date: 14/12/3 * Time: 上午10:00 */ -public class MapArrayPane extends JControlPane { +public class MapArrayPane extends JListControlPane { private static final int LEFT_WIDTH = 180; private static final Color LINE_COLOR = new Color(176, 176, 176); private static final int TOP_GAP = 5; diff --git a/designer_chart/src/com/fr/design/module/ChartPreStyleManagerPane.java b/designer_chart/src/com/fr/design/module/ChartPreStyleManagerPane.java index 5d1b246d49..87d9577bd4 100644 --- a/designer_chart/src/com/fr/design/module/ChartPreStyleManagerPane.java +++ b/designer_chart/src/com/fr/design/module/ChartPreStyleManagerPane.java @@ -4,7 +4,7 @@ import com.fr.base.ChartPreStyleManagerProvider; import com.fr.base.ChartPreStyleServerManager; import com.fr.base.Utils; import com.fr.chart.base.ChartPreStyle; -import com.fr.design.gui.controlpane.JControlPane; +import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.mainframe.DesignerContext; @@ -22,7 +22,7 @@ import java.util.Iterator; * @author kunsnat E-mail:kunsnat@gmail.com * @version 创建时间:2013-8-21 下午02:33:48 */ -public class ChartPreStyleManagerPane extends JControlPane { +public class ChartPreStyleManagerPane extends JListControlPane { @Override /** From f5e26549e5ba933e817ddbb9281d8ac47f56c0dc Mon Sep 17 00:00:00 2001 From: fr_shine Date: Tue, 17 May 2016 17:44:48 +0800 Subject: [PATCH 09/54] =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table/SeriesNameUseFieldNamePane.java | 18 +++++-- .../table/SeriesNameUseFieldValuePane.java | 47 ++++++++++++++----- .../data/table/SeriesTypeUseComboxPane.java | 12 ++++- 3 files changed, 59 insertions(+), 18 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldNamePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldNamePane.java index 8e6784d927..f9258bc81e 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldNamePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldNamePane.java @@ -89,15 +89,25 @@ public class SeriesNameUseFieldNamePane extends FurtherBasicBeanPane { @Override protected List> initPaneList() { - nameFieldValuePane = new SeriesNameUseFieldValuePane(); - nameFieldNamePane = new SeriesNameUseFieldNamePane(); + nameFieldValuePane = createValuePane(); + nameFieldNamePane = createNamePane(); List> paneList = new ArrayList>(); paneList.add(nameFieldValuePane); paneList.add(nameFieldNamePane); return paneList; } + protected SeriesNameUseFieldValuePane createValuePane() { + return new SeriesNameUseFieldValuePane(); + } + + protected SeriesNameUseFieldNamePane createNamePane() { + return new SeriesNameUseFieldNamePane(); + } + public void populateBean(ChartCollection ob, boolean isNeedSummary) { this.isNeedSummary = isNeedSummary; TopDefinitionProvider definition = ob.getSelectedChart().getFilterDefinition(); From 34b1582c04bf6ddb076e65c7f3beda726e0fcc7e Mon Sep 17 00:00:00 2001 From: zack Date: Wed, 18 May 2016 09:28:09 +0800 Subject: [PATCH 10/54] =?UTF-8?q?=E5=B1=9E=E6=80=A7=E8=BF=99=E8=BE=B9?= =?UTF-8?q?=E5=8D=95=E7=8B=AC=E6=95=B4=E7=90=86=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/datapane/TableDataListPane.java | 1 + .../design/gui/controlpane/JControlPane.java | 115 ++++++++++-------- .../gui/controlpane/JListControlPane.java | 87 +++++-------- 3 files changed, 92 insertions(+), 111 deletions(-) diff --git a/designer_base/src/com/fr/design/data/datapane/TableDataListPane.java b/designer_base/src/com/fr/design/data/datapane/TableDataListPane.java index 5c641d5151..d3a2265203 100644 --- a/designer_base/src/com/fr/design/data/datapane/TableDataListPane.java +++ b/designer_base/src/com/fr/design/data/datapane/TableDataListPane.java @@ -22,6 +22,7 @@ import java.util.*; * TableDataList Pane. */ public class TableDataListPane extends JListControlPane { + private boolean isNamePermitted = true; public TableDataListPane() { super(); diff --git a/designer_base/src/com/fr/design/gui/controlpane/JControlPane.java b/designer_base/src/com/fr/design/gui/controlpane/JControlPane.java index 615cee6a0e..f577d3cc89 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/JControlPane.java +++ b/designer_base/src/com/fr/design/gui/controlpane/JControlPane.java @@ -22,22 +22,18 @@ import java.util.Map; * Time: 15:07 */ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHelper { - private static final int SHORT_WIDTH = 30; //每加一个short Divider位置加30 - - private ShortCut4JControlPane[] shorts; - private NameableCreator[] creators; + protected static final int SHORT_WIDTH = 30; //每加一个short Divider位置加30 protected JPanel controlUpdatePane; + protected Map dsNameChangedMap = new HashMap(); + protected ShortCut4JControlPane[] shorts; + protected NameableCreator[] creators; + protected ToolBarDef toolbarDef; - private ToolBarDef toolbarDef; - private UIToolbar toolBar; - + protected UIToolbar toolBar; // peter:这是整体的一个cardLayout Pane - private CardLayout cardLayout; - private JPanel cardPane; - protected String selectedName; - protected boolean isNamePermitted = true; - protected Map dsNameChangedMap = new HashMap(); - private boolean isNameRepeated = false; + protected CardLayout cardLayout; + + protected JPanel cardPane; public JControlPane() { this.initComponentPane(); @@ -53,7 +49,7 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe protected void initComponentPane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.creators = this.createNameableCreators(); - this.controlUpdatePane = new JPanel(); + this.controlUpdatePane = createControlUpdatePane(); // p: edit card layout this.cardLayout = new CardLayout(); @@ -73,6 +69,7 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe this.checkButtonEnabled(); } + protected abstract JPanel createControlUpdatePane(); protected JPanel getLeftPane() { // LeftPane @@ -95,6 +92,55 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe return leftPane; } + + public ShortCut4JControlPane[] getShorts() { + return shorts; + } + + public void setShorts(ShortCut4JControlPane[] shorts) { + this.shorts = shorts; + } + + public NameableCreator[] getCreators() { + return creators; + } + + public void setCreators(NameableCreator[] creators) { + this.creators = creators; + } + + public ToolBarDef getToolbarDef() { + return toolbarDef; + } + + public void setToolbarDef(ToolBarDef toolbarDef) { + this.toolbarDef = toolbarDef; + } + + public UIToolbar getToolBar() { + return toolBar; + } + + public void setToolBar(UIToolbar toolBar) { + this.toolBar = toolBar; + } + + public CardLayout getCardLayout() { + return cardLayout; + } + + public void setCardLayout(CardLayout cardLayout) { + this.cardLayout = cardLayout; + } + + public JPanel getCardPane() { + return cardPane; + } + + public void setCardPane(JPanel cardPane) { + this.cardPane = cardPane; + } + /** * 初始化 */ @@ -158,52 +204,15 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe public void update(TableDataSource tds) { } - - /** - * 根据name,选中JNameEdList中的item - */ - public void setSelectedName(String name) { - } - - /** - * 获取选中的名字 - */ - public abstract String getSelectedName(); - - /** - * 名字是否重复 - * - * @return 重复则返回true - */ - public boolean isNameRepeated() { - return isNameRepeated; - } - /** * 名字是否允许 * - * @return 是则返回true + * @return 默认返回true */ public boolean isNamePermitted() { - return isNamePermitted; + return true; } - /** - * 是否重命名 - * - * @return 是则true - */ - public abstract boolean isContainsRename(); - - /** - * 生成不重复的名字 - * - * @param prefix 名字前缀 - * @return 名字 - */ - public abstract String createUnrepeatedName(String prefix); - - /** * 检查按钮可用状态 Check button enabled. */ diff --git a/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java b/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java index debfc0a39f..cd32fde569 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java +++ b/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java @@ -10,11 +10,9 @@ import com.fr.design.data.tabledata.tabledatapane.MultiTDTableDataPane; import com.fr.design.data.tabledata.tabledatapane.TreeTableDataPane; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.gui.icontainer.UIScrollPane; -import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilist.JNameEdList; import com.fr.design.gui.ilist.ListModelElement; import com.fr.design.gui.ilist.ModNameActionListener; -import com.fr.design.gui.itoolbar.UIToolbar; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.JTemplate; import com.fr.design.menu.LineSeparator; @@ -43,19 +41,8 @@ import java.util.Comparator; public abstract class JListControlPane extends JControlPane { public static final String LIST_NAME = "JControl_List"; - private static final int SHORT_WIDTH = 30; //每加一个short Divider位置加30 - private ShortCut4JControlPane[] shorts; - private NameableCreator[] creators; protected JNameEdList nameableList; - protected JControlUpdatePane controlUpdatePane; - - private ToolBarDef toolbarDef; - private UIToolbar toolBar; - - // peter:这是整体的一个cardLayout Pane - private CardLayout cardLayout; - private JPanel cardPane; protected int editingIndex; protected String selectedName; private boolean isNameRepeated = false; @@ -64,38 +51,20 @@ public abstract class JListControlPane extends JControlPane { this.initComponentPane(); } + protected JPanel createControlUpdatePane() { + return new JControlUpdatePane(); + } + /** * 生成添加按钮的NameableCreator + * * @return 按钮的NameableCreator */ public abstract NameableCreator[] createNameableCreators(); - protected void initComponentPane() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - this.creators = this.createNameableCreators(); - this.controlUpdatePane = new JControlUpdatePane(); - - // p: edit card layout - this.cardLayout = new CardLayout(); - cardPane = FRGUIPaneFactory.createCardLayout_S_Pane(); - cardPane.setLayout(this.cardLayout); - // p:选择的Label - UILabel selectLabel = new UILabel(); - cardPane.add(selectLabel, "SELECT"); - cardPane.add(controlUpdatePane, "EDIT"); - // SplitPane - JSplitPane mainSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, getLeftPane(), cardPane); - mainSplitPane.setBorder(BorderFactory.createLineBorder(GUICoreUtils.getTitleLineBorderColor())); - mainSplitPane.setOneTouchExpandable(true); - - this.add(mainSplitPane, BorderLayout.CENTER); - mainSplitPane.setDividerLocation(getLeftPreferredSize()); - this.checkButtonEnabled(); - } - - protected JPanel getLeftPane(){ - // LeftPane + protected JPanel getLeftPane() { + // LeftPane JPanel leftPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); initNameList(leftPane); @@ -132,8 +101,8 @@ public abstract class JListControlPane extends JControlPane { if (hasInvalid(false)) { return; } - JListControlPane.this.controlUpdatePane.update(); - JListControlPane.this.controlUpdatePane.populate(); + ((JControlUpdatePane) JListControlPane.this.controlUpdatePane).update(); + ((JControlUpdatePane) JListControlPane.this.controlUpdatePane).populate(); JListControlPane.this.checkButtonEnabled(); } } @@ -151,15 +120,15 @@ public abstract class JListControlPane extends JControlPane { } public void updateControlUpdatePane() { - controlUpdatePane.update(); + ((JControlUpdatePane) controlUpdatePane).update(); } - protected void doWhenPopulate(BasicBeanPane beanPane){ + protected void doWhenPopulate(BasicBeanPane beanPane) { } protected int getLeftPreferredSize() { - return shorts.length * SHORT_WIDTH; + return shorts.length * JControlPane.SHORT_WIDTH; } protected ShortCut4JControlPane[] createShortcuts() { @@ -209,7 +178,7 @@ public abstract class JListControlPane extends JControlPane { public Nameable[] update() { java.util.List res = new java.util.ArrayList(); - this.controlUpdatePane.update(); + ((JControlUpdatePane) this.controlUpdatePane).update(); DefaultListModel listModel = (DefaultListModel) this.nameableList.getModel(); for (int i = 0, len = listModel.getSize(); i < len; i++) { res.add(((ListModelElement) listModel.getElementAt(i)).wrapper); @@ -257,7 +226,7 @@ public abstract class JListControlPane extends JControlPane { * 刷新当前的选中的UpdatePane */ protected void populateSelectedValue() { - JListControlPane.this.controlUpdatePane.populate(); + ((JControlUpdatePane) JListControlPane.this.controlUpdatePane).populate(); } /** @@ -327,7 +296,8 @@ public abstract class JListControlPane extends JControlPane { /** * 名字是否重复 - * @return 重复则返回true + * + * @return 重复则返回true */ public boolean isNameRepeated() { return isNameRepeated; @@ -353,6 +323,7 @@ public abstract class JListControlPane extends JControlPane { /** * 是否重命名 + * * @return 是则true */ public boolean isContainsRename() { @@ -450,7 +421,7 @@ public abstract class JListControlPane extends JControlPane { private void wrapActionListener(NameableCreator[] creators) { for (final NameableCreator creator : creators) { - if (!whetherAdd(creator.menuName())){ + if (!whetherAdd(creator.menuName())) { continue; } boolean isTrue = ComparatorUtils.equals(creator.menuName(), Inter.getLocText("Datasource-Stored_Procedure")) || @@ -480,15 +451,15 @@ public abstract class JListControlPane extends JControlPane { } } - private boolean whetherAdd(String itemName){ + private boolean whetherAdd(String itemName) { JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (jTemplate == null) { - return false; + return false; } //先屏蔽掉这个,之后还有别的 String[] names = {Inter.getLocText("FR-Hyperlink_Chart_Float")}; - for (String name : names){ - if(!jTemplate.isJWorkBook() && ComparatorUtils.equals(itemName, name)){ + for (String name : names) { + if (!jTemplate.isJWorkBook() && ComparatorUtils.equals(itemName, name)) { return false; } } @@ -542,7 +513,7 @@ public abstract class JListControlPane extends JControlPane { return; } - controlUpdatePane.update(); + ((JControlUpdatePane) controlUpdatePane).update(); Nameable selectedNameable = selectedValue.wrapper; @@ -734,11 +705,11 @@ public abstract class JListControlPane extends JControlPane { } } - protected void doBeforeRemove(){ + protected void doBeforeRemove() { } - protected void doAfterRemove(){ + protected void doAfterRemove() { } @@ -904,11 +875,11 @@ public abstract class JListControlPane extends JControlPane { } } - public boolean isMulti(Class _class){ + public boolean isMulti(Class _class) { return ComparatorUtils.equals(_class, GlobalMultiTDTableDataPane.class) || ComparatorUtils.equals(_class, MultiTDTableDataPane.class); } - public boolean isTree(Class _class){ + public boolean isTree(Class _class) { return ComparatorUtils.equals(_class, GlobalTreeTableDataPane.class) || ComparatorUtils.equals(_class, TreeTableDataPane.class); } @@ -983,11 +954,11 @@ public abstract class JListControlPane extends JControlPane { * @throws Exception */ public void checkValid() throws Exception { - this.controlUpdatePane.checkValid(); + ((JControlUpdatePane) this.controlUpdatePane).checkValid(); } private int getInValidIndex() { - BasicBeanPane[] p = controlUpdatePane.updatePanes; + BasicBeanPane[] p = ((JControlUpdatePane) controlUpdatePane).updatePanes; if (p != null) { for (int i = 0; i < p.length; i++) { if (p[i] != null) { From 7c80cb51a24eb0fd19452838c2049f74e27950c2 Mon Sep 17 00:00:00 2001 From: zack Date: Wed, 18 May 2016 11:37:45 +0800 Subject: [PATCH 11/54] =?UTF-8?q?=E5=8A=A0=E4=B8=80=E4=B8=AA=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=9B=86=E9=9D=A2=E6=9D=BF=E5=A4=84=E7=90=86=E5=99=A8?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=92=8Cjcontrolpane?= =?UTF-8?q?=E5=88=86=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/datapane/ReportTableDataPane.java | 9 +- .../datapane/TableDataPaneController.java | 62 +++ ...stPane.java => TableDataPaneListPane.java} | 523 +++++++++--------- .../tabledatapane/TableDataManagerPane.java | 14 +- .../fr/design/fun/TableDataPaneProcessor.java | 4 +- .../design/gui/controlpane/JControlPane.java | 174 +++--- .../gui/controlpane/JListControlPane.java | 82 +-- 7 files changed, 418 insertions(+), 450 deletions(-) create mode 100644 designer_base/src/com/fr/design/data/datapane/TableDataPaneController.java rename designer_base/src/com/fr/design/data/datapane/{TableDataListPane.java => TableDataPaneListPane.java} (93%) diff --git a/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java b/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java index 003a478b17..339a227a40 100644 --- a/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java +++ b/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java @@ -6,7 +6,6 @@ package com.fr.design.data.datapane; import com.fr.data.TableDataSource; import com.fr.design.ExtraDesignClassManager; import com.fr.design.fun.TableDataPaneProcessor; -import com.fr.design.gui.controlpane.JControlPane; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.frpane.LoadingBasicPane; import com.fr.design.layout.FRGUIPaneFactory; @@ -22,24 +21,24 @@ import java.util.Map; * 创建于2011-6-14 */ public class ReportTableDataPane extends LoadingBasicPane { - private JControlPane tdPane; + private TableDataPaneController tdPane; @Override protected void initComponents(JPanel container) { container.setLayout(FRGUIPaneFactory.createBorderLayout()); TableDataPaneProcessor paneProcessor = ExtraDesignClassManager.getInstance().getTableDataPaneProcessor(); - JControlPane pane = null; + TableDataPaneController pane = null; if (paneProcessor != null) { pane = paneProcessor.createServerTableDataPane(); } - tdPane = pane == null ? new TableDataListPane() { + tdPane = pane == null ? new TableDataPaneListPane() { @Override public NameableCreator[] createNameableCreators() { return TableDataCreatorProducer.getInstance().createReportTableDataCreator(); } } : pane; - container.add(tdPane, BorderLayout.CENTER); + container.add(tdPane.getPanel(), BorderLayout.CENTER); } @Override diff --git a/designer_base/src/com/fr/design/data/datapane/TableDataPaneController.java b/designer_base/src/com/fr/design/data/datapane/TableDataPaneController.java new file mode 100644 index 0000000000..ed29702c4f --- /dev/null +++ b/designer_base/src/com/fr/design/data/datapane/TableDataPaneController.java @@ -0,0 +1,62 @@ +package com.fr.design.data.datapane; + +import com.fr.data.TableDataSource; +import com.fr.file.DatasourceManagerProvider; + +import javax.swing.*; +import java.util.Map; + +/** + * Coder: zack + * Date: 2016/5/18 + * Time: 10:13 + */ +public interface TableDataPaneController { + /** + * 获取数据集名字变更集合 + * + * @return + */ + Map getDsNameChangedMap(); + + /** + * 数据集重命名 + * + * @param oldName + * @param newName + */ + void rename(String oldName, String newName); + + /** + * 是否合法 + * @throws Exception + */ + void checkValid() throws Exception; + + /** + * 名字是否允许 + * @return + */ + boolean isNamePermitted(); + + void populate(DatasourceManagerProvider datasourceManagerProvider); + + void update(DatasourceManagerProvider datasourceManagerProvider); + + void populate(TableDataSource datasourceManagerProvider); + + void update(TableDataSource datasourceManagerProvider); + + /** + * 设置选中项 + * @param index + */ + void setSelectedIndex(int index); + + /** + * 返回当前数据集面板 + * @return + */ + JPanel getPanel(); + +} diff --git a/designer_base/src/com/fr/design/data/datapane/TableDataListPane.java b/designer_base/src/com/fr/design/data/datapane/TableDataPaneListPane.java similarity index 93% rename from designer_base/src/com/fr/design/data/datapane/TableDataListPane.java rename to designer_base/src/com/fr/design/data/datapane/TableDataPaneListPane.java index d3a2265203..7b24195e3f 100644 --- a/designer_base/src/com/fr/design/data/datapane/TableDataListPane.java +++ b/designer_base/src/com/fr/design/data/datapane/TableDataPaneListPane.java @@ -1,260 +1,265 @@ -package com.fr.design.data.datapane; - -import com.fr.base.TableData; -import com.fr.data.TableDataSource; -import com.fr.data.impl.storeproc.StoreProcedure; -import com.fr.design.data.DesignTableDataManager; -import com.fr.design.gui.controlpane.JListControlPane; -import com.fr.design.gui.controlpane.NameableCreator; -import com.fr.design.gui.ilist.ListModelElement; -import com.fr.file.DatasourceManagerProvider; -import com.fr.general.ComparatorUtils; -import com.fr.general.Inter; -import com.fr.general.NameObject; -import com.fr.stable.Nameable; -import com.fr.stable.StringUtils; -import com.fr.stable.core.PropertyChangeAdapter; - -import javax.swing.*; -import java.util.*; - -/** - * TableDataList Pane. - */ -public class TableDataListPane extends JListControlPane { - private boolean isNamePermitted = true; - - public TableDataListPane() { - super(); - dsNameChangedMap.clear(); - this.addEditingListner(new PropertyChangeAdapter() { - @Override - public void propertyChange() { - isNamePermitted = true; - TableDataSource source = DesignTableDataManager.getEditingTableDataSource(); - String[] allDSNames = DesignTableDataManager.getAllDSNames(source); - String[] allListNames = nameableList.getAllNames(); - allListNames[nameableList.getSelectedIndex()] = StringUtils.EMPTY; - String tempName = getEditingName(); - Object editingType = getEditingType(); - if (StringUtils.isEmpty(tempName)) { - String[] warning = new String[]{"NOT_NULL_Des", "Please_Rename"}; - String[] sign = new String[]{",", "!"}; - isNamePermitted = false; - nameableList.stopEditing(); - JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TableDataListPane.this), Inter.getLocText(warning, sign)); - setWarnigText(editingIndex); - return; - } - - if (!ComparatorUtils.equals(tempName, selectedName) - && isNameRepeted(new List[]{Arrays.asList(allDSNames), Arrays.asList(allListNames)}, tempName)) { - String[] waning = new String[]{"already_exists", "TableData", "Please_Rename"}; - String[] sign = new String[]{"", tempName + ",", "!"}; - isNamePermitted = false; - nameableList.stopEditing(); - JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TableDataListPane.this), Inter.getLocText(waning, sign)); - setWarnigText(editingIndex); - } else if (editingType instanceof StoreProcedure && isIncludeUnderline(tempName)) { - String[] datasource_underline = new String[]{"Datasource-Stored_Procedure", "Name", "can_not_include_underline"}; - String[] sign = new String[]{"", "", "!"}; - isNamePermitted = false; - nameableList.stopEditing(); - JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TableDataListPane.this), Inter.getLocText(datasource_underline, sign)); - setWarnigText(editingIndex); - } - if (nameableList.getSelectedValue() instanceof ListModelElement) { - Nameable selected = ((ListModelElement) nameableList.getSelectedValue()).wrapper; - if (!ComparatorUtils.equals(tempName, selected.getName())) { - rename(selected.getName(), tempName); - - } - } - } - }); - } - - protected void rename(String oldName, String newName) { - dsNameChangedMap.put(oldName, newName); - } - - /** - * 名字是否允许 - * - * @return 是/否 - */ - public boolean isNamePermitted() { - return isNamePermitted; - } - - - /** - * 检查按钮可用状态 Check button enabled. - */ - public void checkButtonEnabled() { - super.checkButtonEnabled(); - isNamePermitted = !isContainsRename(); - } - - private boolean isIncludeUnderline(String name) { - return ComparatorUtils.equals(name.indexOf(StoreProcedure.SPLIT), -1) ? false : true; - } - - /** - * 创建服务器数据集所需要的NameableCreator数组 - * - * @return 数组 - */ - public NameableCreator[] createNameableCreators() { - return TableDataCreatorProducer.getInstance().createServerTableDataCreator(); - } - - - // 只能保证当前模板不重名了 - - /** - * 新建不重名的面板 - * - * @param prefix 前缀字符 - * @return 生成的名字 - */ - @Override - public String createUnrepeatedName(String prefix) { - TableDataSource source = DesignTableDataManager.getEditingTableDataSource(); - if (source == null) { - return super.createUnrepeatedName(prefix); - } - String[] allDsNames = DesignTableDataManager.getAllDSNames(source); - DefaultListModel model = this.getModel(); - Nameable[] all = new Nameable[model.getSize()]; - for (int i = 0; i < model.size(); i++) { - all[i] = ((ListModelElement) model.get(i)).wrapper; - } - // richer:生成的名字从1开始. kunsnat: 添加属性从0开始. - int count = all.length + 1; - while (true) { - String name_test = prefix + count; - boolean repeated = false; - for (int i = 0, len = model.size(); i < len; i++) { - Nameable nameable = all[i]; - if (ComparatorUtils.equals(nameable.getName(), name_test)) { - repeated = true; - break; - } - } - for (String dsname : allDsNames) { - if (ComparatorUtils.equals(dsname, name_test)) { - repeated = true; - break; - } - } - - if (!repeated) { - return name_test; - } - - count++; - } - } - - @Override - protected String title4PopupWindow() { - return "TableData"; - } - - /** - * Populate. - */ - public void populate(TableDataSource tds) { - List nameObjectList = new ArrayList(); - - Iterator tableDataNameIterator = tds.getTableDataNameIterator(); - while (tableDataNameIterator.hasNext()) { - String tableDataName = (String) tableDataNameIterator.next(); - TableData tableData = tds.getTableData(tableDataName); - - if (tableData != null) { - nameObjectList.add(new NameObject(tableDataName, tableData)); - } - } - - populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); - } - - /** - * Populate. - */ - public void populate(DatasourceManagerProvider datasourceManager) { - Iterator nameIt = datasourceManager.getTableDataNameIterator(); - Iterator procedurenameIt = datasourceManager.getProcedureNameIterator(); - List nameObjectList = new ArrayList(); - while (nameIt.hasNext()) { - String name = nameIt.next(); - nameObjectList.add(new NameObject(name, datasourceManager.getTableData(name))); - } - while (procedurenameIt.hasNext()) { - String name = procedurenameIt.next(); - nameObjectList.add(new NameObject(name, datasourceManager.getProcedureByName(name))); - } - - populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); - } - - public void update(DatasourceManagerProvider datasourceManager) { - datasourceManager.clearAllTableData(); - datasourceManager.clearAllProcedure(); - Nameable[] tableDataArray = this.update(); - for (int i = 0; i < tableDataArray.length; i++) { - NameObject nameObject = (NameObject) tableDataArray[i]; - datasourceManager.putTableData(nameObject.getName(), (TableData) nameObject.getObject()); - } - } - - public void update(TableDataSource tds) { - tds.clearAllTableData(); - - Nameable[] tableDataArray = this.update(); - for (int i = 0; i < tableDataArray.length; i++) { - NameObject nameObject = (NameObject) tableDataArray[i]; - tds.putTableData(nameObject.getName(), (TableData) nameObject.getObject()); - } - } - - /** - * 判断数据集是否重名 - */ - public void checkValid() throws Exception { - List exsitTableDataNameList = new ArrayList(); - // _denny: 判断是否有重复的数据集名 - checkRepeatedDSName(exsitTableDataNameList); - - Nameable[] tableDataArray = this.update(); - for (int i = 0; i < tableDataArray.length; i++) { - NameObject nameObject = (NameObject) tableDataArray[i]; - - if (exsitTableDataNameList.contains(nameObject.getName())) { - String[] waring = new String[]{"TableData", "Error_TableDataNameRepeat"}; - String[] sign = new String[]{": " + nameObject.getName()}; - throw new Exception(Inter.getLocText(waring, sign)); - } - - exsitTableDataNameList.add(nameObject.getName()); - } - } - - protected void checkRepeatedDSName(List exsitTableDataNameList) { - } - - /** - * 在JJControlPane的左侧Tree里面选中某一Item - * - * @param name 被选择的Item名称 - */ - public void selectName(String name) { - this.setSelectedName(name); - } - - public Map getDsNameChangedMap() { - return this.dsNameChangedMap; - } +package com.fr.design.data.datapane; + +import com.fr.base.TableData; +import com.fr.data.TableDataSource; +import com.fr.data.impl.storeproc.StoreProcedure; +import com.fr.design.data.DesignTableDataManager; +import com.fr.design.gui.controlpane.JListControlPane; +import com.fr.design.gui.controlpane.NameableCreator; +import com.fr.design.gui.ilist.ListModelElement; +import com.fr.file.DatasourceManagerProvider; +import com.fr.general.ComparatorUtils; +import com.fr.general.Inter; +import com.fr.general.NameObject; +import com.fr.stable.Nameable; +import com.fr.stable.StringUtils; +import com.fr.stable.core.PropertyChangeAdapter; + +import javax.swing.*; +import java.util.*; + +/** + * TableDataList Pane. + */ +public class TableDataPaneListPane extends JListControlPane implements TableDataPaneController { + private boolean isNamePermitted = true; + private Map dsNameChangedMap = new HashMap(); + + public TableDataPaneListPane() { + super(); + dsNameChangedMap.clear(); + this.addEditingListner(new PropertyChangeAdapter() { + @Override + public void propertyChange() { + isNamePermitted = true; + TableDataSource source = DesignTableDataManager.getEditingTableDataSource(); + String[] allDSNames = DesignTableDataManager.getAllDSNames(source); + String[] allListNames = nameableList.getAllNames(); + allListNames[nameableList.getSelectedIndex()] = StringUtils.EMPTY; + String tempName = getEditingName(); + Object editingType = getEditingType(); + if (StringUtils.isEmpty(tempName)) { + String[] warning = new String[]{"NOT_NULL_Des", "Please_Rename"}; + String[] sign = new String[]{",", "!"}; + isNamePermitted = false; + nameableList.stopEditing(); + JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TableDataPaneListPane.this), Inter.getLocText(warning, sign)); + setWarnigText(editingIndex); + return; + } + + if (!ComparatorUtils.equals(tempName, selectedName) + && isNameRepeted(new List[]{Arrays.asList(allDSNames), Arrays.asList(allListNames)}, tempName)) { + String[] waning = new String[]{"already_exists", "TableData", "Please_Rename"}; + String[] sign = new String[]{"", tempName + ",", "!"}; + isNamePermitted = false; + nameableList.stopEditing(); + JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TableDataPaneListPane.this), Inter.getLocText(waning, sign)); + setWarnigText(editingIndex); + } else if (editingType instanceof StoreProcedure && isIncludeUnderline(tempName)) { + String[] datasource_underline = new String[]{"Datasource-Stored_Procedure", "Name", "can_not_include_underline"}; + String[] sign = new String[]{"", "", "!"}; + isNamePermitted = false; + nameableList.stopEditing(); + JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TableDataPaneListPane.this), Inter.getLocText(datasource_underline, sign)); + setWarnigText(editingIndex); + } + if (nameableList.getSelectedValue() instanceof ListModelElement) { + Nameable selected = ((ListModelElement) nameableList.getSelectedValue()).wrapper; + if (!ComparatorUtils.equals(tempName, selected.getName())) { + rename(selected.getName(), tempName); + + } + } + } + }); + } + + public void rename(String oldName, String newName) { + dsNameChangedMap.put(oldName, newName); + } + + /** + * 名字是否允许 + * + * @return 是/否 + */ + public boolean isNamePermitted() { + return isNamePermitted; + } + + + /** + * 检查按钮可用状态 Check button enabled. + */ + public void checkButtonEnabled() { + super.checkButtonEnabled(); + isNamePermitted = !isContainsRename(); + } + + private boolean isIncludeUnderline(String name) { + return ComparatorUtils.equals(name.indexOf(StoreProcedure.SPLIT), -1) ? false : true; + } + + /** + * 创建服务器数据集所需要的NameableCreator数组 + * + * @return 数组 + */ + public NameableCreator[] createNameableCreators() { + return TableDataCreatorProducer.getInstance().createServerTableDataCreator(); + } + + + // 只能保证当前模板不重名了 + + /** + * 新建不重名的面板 + * + * @param prefix 前缀字符 + * @return 生成的名字 + */ + @Override + public String createUnrepeatedName(String prefix) { + TableDataSource source = DesignTableDataManager.getEditingTableDataSource(); + if (source == null) { + return super.createUnrepeatedName(prefix); + } + String[] allDsNames = DesignTableDataManager.getAllDSNames(source); + DefaultListModel model = this.getModel(); + Nameable[] all = new Nameable[model.getSize()]; + for (int i = 0; i < model.size(); i++) { + all[i] = ((ListModelElement) model.get(i)).wrapper; + } + // richer:生成的名字从1开始. kunsnat: 添加属性从0开始. + int count = all.length + 1; + while (true) { + String name_test = prefix + count; + boolean repeated = false; + for (int i = 0, len = model.size(); i < len; i++) { + Nameable nameable = all[i]; + if (ComparatorUtils.equals(nameable.getName(), name_test)) { + repeated = true; + break; + } + } + for (String dsname : allDsNames) { + if (ComparatorUtils.equals(dsname, name_test)) { + repeated = true; + break; + } + } + + if (!repeated) { + return name_test; + } + + count++; + } + } + + @Override + protected String title4PopupWindow() { + return "TableData"; + } + + /** + * Populate. + */ + public void populate(TableDataSource tds) { + List nameObjectList = new ArrayList(); + + Iterator tableDataNameIterator = tds.getTableDataNameIterator(); + while (tableDataNameIterator.hasNext()) { + String tableDataName = (String) tableDataNameIterator.next(); + TableData tableData = tds.getTableData(tableDataName); + + if (tableData != null) { + nameObjectList.add(new NameObject(tableDataName, tableData)); + } + } + + populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); + } + + /** + * Populate. + */ + public void populate(DatasourceManagerProvider datasourceManager) { + Iterator nameIt = datasourceManager.getTableDataNameIterator(); + Iterator procedurenameIt = datasourceManager.getProcedureNameIterator(); + List nameObjectList = new ArrayList(); + while (nameIt.hasNext()) { + String name = nameIt.next(); + nameObjectList.add(new NameObject(name, datasourceManager.getTableData(name))); + } + while (procedurenameIt.hasNext()) { + String name = procedurenameIt.next(); + nameObjectList.add(new NameObject(name, datasourceManager.getProcedureByName(name))); + } + + populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); + } + + public void update(DatasourceManagerProvider datasourceManager) { + datasourceManager.clearAllTableData(); + datasourceManager.clearAllProcedure(); + Nameable[] tableDataArray = this.update(); + for (int i = 0; i < tableDataArray.length; i++) { + NameObject nameObject = (NameObject) tableDataArray[i]; + datasourceManager.putTableData(nameObject.getName(), (TableData) nameObject.getObject()); + } + } + + public void update(TableDataSource tds) { + tds.clearAllTableData(); + + Nameable[] tableDataArray = this.update(); + for (int i = 0; i < tableDataArray.length; i++) { + NameObject nameObject = (NameObject) tableDataArray[i]; + tds.putTableData(nameObject.getName(), (TableData) nameObject.getObject()); + } + } + + /** + * 判断数据集是否重名 + */ + public void checkValid() throws Exception { + List exsitTableDataNameList = new ArrayList(); + // _denny: 判断是否有重复的数据集名 + checkRepeatedDSName(exsitTableDataNameList); + + Nameable[] tableDataArray = this.update(); + for (int i = 0; i < tableDataArray.length; i++) { + NameObject nameObject = (NameObject) tableDataArray[i]; + + if (exsitTableDataNameList.contains(nameObject.getName())) { + String[] waring = new String[]{"TableData", "Error_TableDataNameRepeat"}; + String[] sign = new String[]{": " + nameObject.getName()}; + throw new Exception(Inter.getLocText(waring, sign)); + } + + exsitTableDataNameList.add(nameObject.getName()); + } + } + + protected void checkRepeatedDSName(List exsitTableDataNameList) { + } + + /** + * 在JJControlPane的左侧Tree里面选中某一Item + * + * @param name 被选择的Item名称 + */ + public void selectName(String name) { + this.setSelectedName(name); + } + + public Map getDsNameChangedMap() { + return this.dsNameChangedMap; + } + + public JPanel getPanel() { + return this; + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/data/tabledata/tabledatapane/TableDataManagerPane.java b/designer_base/src/com/fr/design/data/tabledata/tabledatapane/TableDataManagerPane.java index 0ff2ec8816..b2c8427afa 100644 --- a/designer_base/src/com/fr/design/data/tabledata/tabledatapane/TableDataManagerPane.java +++ b/designer_base/src/com/fr/design/data/tabledata/tabledatapane/TableDataManagerPane.java @@ -2,9 +2,9 @@ package com.fr.design.data.tabledata.tabledatapane; import com.fr.base.FRContext; import com.fr.design.ExtraDesignClassManager; -import com.fr.design.data.datapane.TableDataListPane; +import com.fr.design.data.datapane.TableDataPaneController; +import com.fr.design.data.datapane.TableDataPaneListPane; import com.fr.design.fun.TableDataPaneProcessor; -import com.fr.design.gui.controlpane.JControlPane; import com.fr.design.gui.frpane.LoadingBasicPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; @@ -21,7 +21,7 @@ import java.util.Map; public class TableDataManagerPane extends LoadingBasicPane { private UITextField tableDataTextField; - private JControlPane tableDataPane; + private TableDataPaneController tableDataPane; @Override protected void initComponents(JPanel container) { @@ -40,17 +40,17 @@ public class TableDataManagerPane extends LoadingBasicPane { tableDataPathPane.add(tableDataTextField, BorderLayout.CENTER); this.tableDataTextField.setEditable(false); TableDataPaneProcessor paneProcessor = ExtraDesignClassManager.getInstance().getTableDataPaneProcessor(); - JControlPane pane = null; + TableDataPaneController pane = null; if (paneProcessor != null) { pane = paneProcessor.createServerTableDataPane(); } - tableDataPane = pane == null ? new TableDataListPane() { - protected void rename(String oldName, String newName) { + tableDataPane = pane == null ? new TableDataPaneListPane() { + public void rename(String oldName, String newName) { super.rename(oldName, newName); renameConnection(oldName, newName); } } : pane; - container.add(tableDataPane, BorderLayout.CENTER); + container.add(tableDataPane.getPanel(), BorderLayout.CENTER); } diff --git a/designer_base/src/com/fr/design/fun/TableDataPaneProcessor.java b/designer_base/src/com/fr/design/fun/TableDataPaneProcessor.java index f1f4ac2182..dd4c8068a1 100644 --- a/designer_base/src/com/fr/design/fun/TableDataPaneProcessor.java +++ b/designer_base/src/com/fr/design/fun/TableDataPaneProcessor.java @@ -2,7 +2,7 @@ package com.fr.design.fun; import com.fr.design.DesignModelAdapter; import com.fr.design.data.BasicTableDataTreePane; -import com.fr.design.gui.controlpane.JControlPane; +import com.fr.design.data.datapane.TableDataPaneController; import com.fr.stable.fun.Level; /** @@ -25,6 +25,6 @@ public interface TableDataPaneProcessor extends Level { * 服务器数据集面板(模板数据集面板) * @return 服务器数据集面板 */ - JControlPane createServerTableDataPane(); + TableDataPaneController createServerTableDataPane(); } diff --git a/designer_base/src/com/fr/design/gui/controlpane/JControlPane.java b/designer_base/src/com/fr/design/gui/controlpane/JControlPane.java index f577d3cc89..53dfc54af9 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/JControlPane.java +++ b/designer_base/src/com/fr/design/gui/controlpane/JControlPane.java @@ -1,20 +1,16 @@ package com.fr.design.gui.controlpane; -import com.fr.data.TableDataSource; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itoolbar.UIToolbar; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.menu.ToolBarDef; import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.file.DatasourceManagerProvider; import com.fr.stable.ArrayUtils; import com.fr.stable.Nameable; import javax.swing.*; import java.awt.*; -import java.util.HashMap; -import java.util.Map; /** * Coder: zack @@ -24,12 +20,12 @@ import java.util.Map; public abstract class JControlPane extends BasicPane implements UnrepeatedNameHelper { protected static final int SHORT_WIDTH = 30; //每加一个short Divider位置加30 protected JPanel controlUpdatePane; - protected Map dsNameChangedMap = new HashMap(); - protected ShortCut4JControlPane[] shorts; - protected NameableCreator[] creators; - protected ToolBarDef toolbarDef; - protected UIToolbar toolBar; + private ShortCut4JControlPane[] shorts; + private NameableCreator[] creators; + private ToolBarDef toolbarDef; + + private UIToolbar toolBar; // peter:这是整体的一个cardLayout Pane protected CardLayout cardLayout; @@ -46,6 +42,50 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe */ public abstract NameableCreator[] createNameableCreators(); + public ShortCut4JControlPane[] getShorts() { + return shorts; + } + + public void setShorts(ShortCut4JControlPane[] shorts) { + this.shorts = shorts; + } + + public void setCreators(NameableCreator[] creators) { + this.creators = creators; + } + + public ToolBarDef getToolbarDef() { + return toolbarDef; + } + + public void setToolbarDef(ToolBarDef toolbarDef) { + this.toolbarDef = toolbarDef; + } + + public UIToolbar getToolBar() { + return toolBar; + } + + public void setToolBar(UIToolbar toolBar) { + this.toolBar = toolBar; + } + + public CardLayout getCardLayout() { + return cardLayout; + } + + public void setCardLayout(CardLayout cardLayout) { + this.cardLayout = cardLayout; + } + + public JPanel getCardPane() { + return cardPane; + } + + public void setCardPane(JPanel cardPane) { + this.cardPane = cardPane; + } + protected void initComponentPane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.creators = this.createNameableCreators(); @@ -75,7 +115,7 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe // LeftPane JPanel leftPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - init(leftPane); + initLeftPane(leftPane); shorts = this.createShortcuts(); if (ArrayUtils.isEmpty(shorts)) { @@ -92,59 +132,10 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe return leftPane; } - - public ShortCut4JControlPane[] getShorts() { - return shorts; - } - - public void setShorts(ShortCut4JControlPane[] shorts) { - this.shorts = shorts; - } - - public NameableCreator[] getCreators() { - return creators; - } - - public void setCreators(NameableCreator[] creators) { - this.creators = creators; - } - - public ToolBarDef getToolbarDef() { - return toolbarDef; - } - - public void setToolbarDef(ToolBarDef toolbarDef) { - this.toolbarDef = toolbarDef; - } - - public UIToolbar getToolBar() { - return toolBar; - } - - public void setToolBar(UIToolbar toolBar) { - this.toolBar = toolBar; - } - - public CardLayout getCardLayout() { - return cardLayout; - } - - public void setCardLayout(CardLayout cardLayout) { - this.cardLayout = cardLayout; - } - - public JPanel getCardPane() { - return cardPane; - } - - public void setCardPane(JPanel cardPane) { - this.cardPane = cardPane; - } - /** - * 初始化 + * 初始化左边面板 */ - protected void init(JPanel leftPane) { + protected void initLeftPane(JPanel leftPane) { } @@ -152,13 +143,6 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe return shorts.length * SHORT_WIDTH; } - public Map getDsNameChangedMap() { - return dsNameChangedMap; - } - - public void setDsNameChangedMap(Map dsNameChangedMap) { - this.dsNameChangedMap = dsNameChangedMap; - } protected ShortCut4JControlPane[] createShortcuts() { return new ShortCut4JControlPane[]{ @@ -183,36 +167,12 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe protected abstract ShortCut4JControlPane sortItemShortCut(); - public void setNameListEditable(boolean editable) { - } - public abstract Nameable[] update(); public void populate(Nameable[] nameableArray) { } - public void update(DatasourceManagerProvider datasourceManager) { - } - - public void populate(DatasourceManagerProvider datasourceManager) { - } - - public void populate(TableDataSource tds) { - } - - public void update(TableDataSource tds) { - } - - /** - * 名字是否允许 - * - * @return 默认返回true - */ - public boolean isNamePermitted() { - return true; - } - /** * 检查按钮可用状态 Check button enabled. */ @@ -220,37 +180,33 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe } protected void doBeforeRemove() { - } protected void doAfterRemove() { - } public NameableCreator[] creators() { return creators == null ? new NameableCreator[0] : creators; } - /** - * 检查是否符合规范 - * - * @throws Exception - */ - public void checkValid() throws Exception { - } - protected abstract boolean hasInvalid(boolean isAdd); /** - * 设置选中项 + * 刷新 NameableCreator * - * @param index 选中项的序列号 + * @param creators 生成器 */ - public void setSelectedIndex(int index) { - } - + public void refreshNameableCreator(NameableCreator[] creators) { + this.creators = creators; + shorts = this.createShortcuts(); + toolbarDef.clearShortCuts(); + for (ShortCut4JControlPane sj : shorts) { + toolbarDef.addShortCut(sj.getShortCut()); + } - protected void rename(String oldName, String newName) { - dsNameChangedMap.put(oldName, newName); + toolbarDef.updateToolBar(toolBar); + toolBar.validate(); + toolBar.repaint(); + this.repaint(); } } diff --git a/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java b/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java index cd32fde569..70bacecda6 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java +++ b/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java @@ -63,29 +63,7 @@ public abstract class JListControlPane extends JControlPane { public abstract NameableCreator[] createNameableCreators(); - protected JPanel getLeftPane() { - // LeftPane - JPanel leftPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - - initNameList(leftPane); - - shorts = this.createShortcuts(); - if (ArrayUtils.isEmpty(shorts)) { - return leftPane; - } - - toolbarDef = new ToolBarDef(); - for (ShortCut4JControlPane sj : shorts) { - toolbarDef.addShortCut(sj.getShortCut()); - } - toolBar = ToolBarDef.createJToolBar(); - toolbarDef.updateToolBar(toolBar); - leftPane.add(toolBar, BorderLayout.NORTH); - return leftPane; - } - - - private void initNameList(JPanel leftPane) { + protected void initLeftPane(JPanel leftPane) { nameableList = createJNameList(); nameableList.setName(LIST_NAME); leftPane.add(new UIScrollPane(nameableList), BorderLayout.CENTER); @@ -127,23 +105,9 @@ public abstract class JListControlPane extends JControlPane { } - protected int getLeftPreferredSize() { - return shorts.length * JControlPane.SHORT_WIDTH; - } - - protected ShortCut4JControlPane[] createShortcuts() { - return new ShortCut4JControlPane[]{ - addItemShortCut(), - removeItemShortCut(), - copyItemShortCut(), - moveUpItemShortCut(), - moveDownItemShortCut(), - sortItemShortCut() - }; - } - protected ShortCut4JControlPane addItemShortCut() { ShortCut addItemShortCut; + NameableCreator[] creators = creators(); if (creators.length == 1) { addItemShortCut = new AddItemUpdateAction(creators); } else { @@ -264,25 +228,6 @@ public abstract class JListControlPane extends JControlPane { return el == null ? null : el.wrapper.getName(); } - /** - * 刷新 NameableCreator - * - * @param creators 生成器 - */ - public void refreshNameableCreator(NameableCreator[] creators) { - this.creators = creators; - shorts = this.createShortcuts(); - toolbarDef.clearShortCuts(); - for (ShortCut4JControlPane sj : shorts) { - toolbarDef.addShortCut(sj.getShortCut()); - } - - toolbarDef.updateToolBar(toolBar); - toolBar.validate(); - toolBar.repaint(); - this.repaint(); - } - protected boolean isNameRepeted(java.util.List[] list, String name) { for (int i = 0; i < list.length; i++) { if (list[i].contains(name)) { @@ -676,7 +621,7 @@ public abstract class JListControlPane extends JControlPane { // p:右键菜单. JPopupMenu popupMenu = new JPopupMenu(); - for (ShortCut4JControlPane sj : shorts) { + for (ShortCut4JControlPane sj : getShorts()) { sj.getShortCut().intoJPopupMenu(popupMenu); } @@ -694,13 +639,14 @@ public abstract class JListControlPane extends JControlPane { * 检查按钮可用状态 Check button enabled. */ public void checkButtonEnabled() { + int selectedIndex = nameableList.getSelectedIndex(); if (selectedIndex == -1) { this.cardLayout.show(cardPane, "SELECT"); } else { this.cardLayout.show(cardPane, "EDIT"); } - for (ShortCut4JControlPane sj : this.shorts) { + for (ShortCut4JControlPane sj : getShorts()) { sj.checkEnable(); } } @@ -713,10 +659,6 @@ public abstract class JListControlPane extends JControlPane { } - public NameableCreator[] creators() { - return creators == null ? new NameableCreator[0] : creators; - } - /* * Nameable的ListCellRenerer */ @@ -732,7 +674,7 @@ public abstract class JListControlPane extends JControlPane { this.setText(((ListModelElement) value).wrapper.getName()); boolean iconSet = false; - for (NameableCreator creator : JListControlPane.this.creators) { + for (NameableCreator creator : JListControlPane.this.creators()) { if (creator.menuIcon() != null && creator.acceptObject2Populate(wrappee) != null) { this.setIcon(creator.menuIcon()); this.setToolTipText(creator.createTooltip()); @@ -836,6 +778,7 @@ public abstract class JListControlPane extends JControlPane { } private void initUpdatePane() { + NameableCreator[] creators = creators(); if (creators == null) { return; } @@ -855,6 +798,7 @@ public abstract class JListControlPane extends JControlPane { } elEditing = el; + NameableCreator[] creators = creators(); for (int i = 0, len = updatePanes.length; i < len; i++) { Object ob2Populate = creators[i].acceptObject2Populate(el.wrapper); @@ -884,13 +828,14 @@ public abstract class JListControlPane extends JControlPane { } public void update() { + NameableCreator[] creators = creators(); for (int i = 0; i < updatePanes.length; i++) { BasicBeanPane pane = updatePanes[i]; if (pane != null && pane.isVisible()) { Object bean = pane.updateBean(); - if (i < JListControlPane.this.creators.length) { - JListControlPane.this.creators[i].saveUpdatedBean(elEditing, bean); + if (i < creators.length) { + creators[i].saveUpdatedBean(elEditing, bean); } } } @@ -937,8 +882,9 @@ public abstract class JListControlPane extends JControlPane { // 选项添加个数有限制等情况下 要求能控制快捷按钮的状态 protected void setToolbarDefEnable(int shortCutIndex, int itemIndex, boolean enabled) { - if (this.toolbarDef.getShortCutCount() > shortCutIndex) { - ShortCut sc = this.toolbarDef.getShortCut(shortCutIndex); + ToolBarDef toolbarDef = getToolbarDef(); + if (toolbarDef.getShortCutCount() > shortCutIndex) { + ShortCut sc = toolbarDef.getShortCut(shortCutIndex); if (sc instanceof AddItemMenuDef) { AddItemMenuDef am = (AddItemMenuDef) sc; if (am.getShortCutCount() > itemIndex) { From 282b7302671fa2e819e1f219aefea2538d96037f Mon Sep 17 00:00:00 2001 From: zack Date: Wed, 18 May 2016 12:47:56 +0800 Subject: [PATCH 12/54] =?UTF-8?q?=E5=8A=A0=E4=B8=8Aoverride?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/datapane/TableDataPaneListPane.java | 10 ++++++++ .../gui/controlpane/JListControlPane.java | 24 ++++++------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/designer_base/src/com/fr/design/data/datapane/TableDataPaneListPane.java b/designer_base/src/com/fr/design/data/datapane/TableDataPaneListPane.java index 7b24195e3f..76a199d04d 100644 --- a/designer_base/src/com/fr/design/data/datapane/TableDataPaneListPane.java +++ b/designer_base/src/com/fr/design/data/datapane/TableDataPaneListPane.java @@ -224,6 +224,7 @@ public class TableDataPaneListPane extends JListControlPane implements TableData /** * 判断数据集是否重名 */ + @Override public void checkValid() throws Exception { List exsitTableDataNameList = new ArrayList(); // _denny: 判断是否有重复的数据集名 @@ -262,4 +263,13 @@ public class TableDataPaneListPane extends JListControlPane implements TableData public JPanel getPanel() { return this; } + + /** + * 设置选中项 + * + * @param index 选中项的序列号 + */ + public void setSelectedIndex(int index) { + nameableList.setSelectedIndex(index); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java b/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java index 70bacecda6..f6ff9c1ed7 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java +++ b/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java @@ -63,6 +63,7 @@ public abstract class JListControlPane extends JControlPane { public abstract NameableCreator[] createNameableCreators(); + @Override protected void initLeftPane(JPanel leftPane) { nameableList = createJNameList(); nameableList.setName(LIST_NAME); @@ -89,6 +90,7 @@ public abstract class JListControlPane extends JControlPane { public JNameEdList createJNameList() { JNameEdList nameEdList = new JNameEdList(new DefaultListModel()) { + @Override protected void doAfterLostFocus() { JListControlPane.this.updateControlUpdatePane(); } @@ -151,6 +153,7 @@ public abstract class JListControlPane extends JControlPane { return res.toArray(new Nameable[res.size()]); } + @Override public void populate(Nameable[] nameableArray) { DefaultListModel listModel = (DefaultListModel) this.nameableList.getModel(); listModel.removeAllElements(); @@ -602,6 +605,7 @@ public abstract class JListControlPane extends JControlPane { * JNameEdList的鼠标事件 */ private MouseListener listMouseListener = new MouseAdapter() { + @Override public void mouseReleased(MouseEvent evt) { nameableList.stopEditing(); if (evt.getClickCount() >= 2 @@ -638,6 +642,7 @@ public abstract class JListControlPane extends JControlPane { /** * 检查按钮可用状态 Check button enabled. */ + @Override public void checkButtonEnabled() { int selectedIndex = nameableList.getSelectedIndex(); @@ -651,19 +656,12 @@ public abstract class JListControlPane extends JControlPane { } } - protected void doBeforeRemove() { - - } - - protected void doAfterRemove() { - - } - /* * Nameable的ListCellRenerer */ private class NameableListCellRenderer extends DefaultListCellRenderer { + @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, @@ -899,6 +897,7 @@ public abstract class JListControlPane extends JControlPane { * * @throws Exception */ + @Override public void checkValid() throws Exception { ((JControlUpdatePane) this.controlUpdatePane).checkValid(); } @@ -933,13 +932,4 @@ public abstract class JListControlPane extends JControlPane { return false; } - - /** - * 设置选中项 - * - * @param index 选中项的序列号 - */ - public void setSelectedIndex(int index) { - nameableList.setSelectedIndex(index); - } } \ No newline at end of file From 909b4b1a0bd7fd2d357f6b4fded0681ff041a8c8 Mon Sep 17 00:00:00 2001 From: xiaohu Date: Wed, 18 May 2016 15:04:15 +0800 Subject: [PATCH 13/54] =?UTF-8?q?=E6=95=B8=E6=93=9A=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table/MeterPlotTableDataContentPane.java | 44 +++++++++++++------ 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/MeterPlotTableDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/MeterPlotTableDataContentPane.java index 5ea4e8fe63..22deb51016 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/MeterPlotTableDataContentPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/MeterPlotTableDataContentPane.java @@ -49,14 +49,7 @@ public class MeterPlotTableDataContentPane extends AbstractTableDataContentPane double[] columnSize = { p,f}; double[] rowSize = { p, p,p,p,p,p,p,p, p}; - Component[][] components = new Component[][]{ - new Component[]{new BoldFontTextLabel(METER_NAME, SwingConstants.RIGHT), nameBox}, - new Component[]{new BoldFontTextLabel(METER_VALUE, SwingConstants.RIGHT), valueBox}, - new Component[]{new JSeparator(), null}, - new Component[]{new BoldFontTextLabel(Inter.getLocText("Chart-Data_Filter"))}, - new Component[]{filterPane, null} - - } ; + Component[][] components = createComponents(); JPanel panel = TableLayoutHelper.createTableLayoutPane(components,rowSize,columnSize); this.add(panel,BorderLayout.CENTER); @@ -65,7 +58,17 @@ public class MeterPlotTableDataContentPane extends AbstractTableDataContentPane valueBox.addItemListener(tooltipListener); } - protected void refreshBoxListWithSelectTableData(List list) { + private Component[][] createComponents() { + return new Component[][]{ + new Component[]{new BoldFontTextLabel(METER_NAME, SwingConstants.RIGHT), getNameComponent()}, + new Component[]{new BoldFontTextLabel(METER_VALUE, SwingConstants.RIGHT), valueBox}, + new Component[]{new JSeparator(), null}, + new Component[]{new BoldFontTextLabel(Inter.getLocText("Chart-Data_Filter"))}, + new Component[]{filterPane, null} + }; + } + + protected void refreshBoxListWithSelectTableData(List list) { refreshBoxItems(nameBox, list); refreshBoxItems(valueBox, list); } @@ -84,14 +87,19 @@ public class MeterPlotTableDataContentPane extends AbstractTableDataContentPane public void populateBean(ChartCollection ob) { if(ob != null && ob.getSelectedChart().getFilterDefinition() instanceof MeterTableDefinition) { MeterTableDefinition meter = (MeterTableDefinition)ob.getSelectedChart().getFilterDefinition(); - - nameBox.setSelectedItem(meter.getName()); + + populateNameComponent(meter.getName()); + valueBox.setSelectedItem(meter.getValue()); filterPane.populateBean(ob); } } - /** + protected void populateNameComponent(String name) { + nameBox.setSelectedItem(name); + } + + /** * 保存界面属性. */ public void updateBean(ChartCollection ob) { @@ -99,13 +107,18 @@ public class MeterPlotTableDataContentPane extends AbstractTableDataContentPane MeterTableDefinition meter = new MeterTableDefinition(); ob.getSelectedChart().setFilterDefinition(meter); - meter.setName(Utils.objectToString(nameBox.getSelectedItem())); + updateNameComponent(meter); + meter.setValue(Utils.objectToString(valueBox.getSelectedItem())); filterPane.updateBean(ob); } } - /** + protected void updateNameComponent(MeterTableDefinition meter) { + meter.setName(Utils.objectToString(nameBox.getSelectedItem())); + } + + /** * 重新布局整个面板 */ public void redoLayoutPane(){ @@ -113,4 +126,7 @@ public class MeterPlotTableDataContentPane extends AbstractTableDataContentPane } + protected Component getNameComponent() { + return nameBox; + } } \ No newline at end of file From b6433715ba84e504e5224e2f4c42ed2060570406 Mon Sep 17 00:00:00 2001 From: zack Date: Wed, 18 May 2016 15:08:54 +0800 Subject: [PATCH 14/54] =?UTF-8?q?=E5=8A=A0override?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/datapane/TableDataPaneListPane.java | 11 +++++++++ .../gui/controlpane/JListControlPane.java | 23 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/designer_base/src/com/fr/design/data/datapane/TableDataPaneListPane.java b/designer_base/src/com/fr/design/data/datapane/TableDataPaneListPane.java index 76a199d04d..90d6ca5dff 100644 --- a/designer_base/src/com/fr/design/data/datapane/TableDataPaneListPane.java +++ b/designer_base/src/com/fr/design/data/datapane/TableDataPaneListPane.java @@ -75,6 +75,7 @@ public class TableDataPaneListPane extends JListControlPane implements TableData }); } + @Override public void rename(String oldName, String newName) { dsNameChangedMap.put(oldName, newName); } @@ -84,6 +85,7 @@ public class TableDataPaneListPane extends JListControlPane implements TableData * * @return 是/否 */ + @Override public boolean isNamePermitted() { return isNamePermitted; } @@ -92,6 +94,7 @@ public class TableDataPaneListPane extends JListControlPane implements TableData /** * 检查按钮可用状态 Check button enabled. */ + @Override public void checkButtonEnabled() { super.checkButtonEnabled(); isNamePermitted = !isContainsRename(); @@ -106,6 +109,7 @@ public class TableDataPaneListPane extends JListControlPane implements TableData * * @return 数组 */ + @Override public NameableCreator[] createNameableCreators() { return TableDataCreatorProducer.getInstance().createServerTableDataCreator(); } @@ -166,6 +170,7 @@ public class TableDataPaneListPane extends JListControlPane implements TableData /** * Populate. */ + @Override public void populate(TableDataSource tds) { List nameObjectList = new ArrayList(); @@ -185,6 +190,7 @@ public class TableDataPaneListPane extends JListControlPane implements TableData /** * Populate. */ + @Override public void populate(DatasourceManagerProvider datasourceManager) { Iterator nameIt = datasourceManager.getTableDataNameIterator(); Iterator procedurenameIt = datasourceManager.getProcedureNameIterator(); @@ -201,6 +207,7 @@ public class TableDataPaneListPane extends JListControlPane implements TableData populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); } + @Override public void update(DatasourceManagerProvider datasourceManager) { datasourceManager.clearAllTableData(); datasourceManager.clearAllProcedure(); @@ -211,6 +218,7 @@ public class TableDataPaneListPane extends JListControlPane implements TableData } } + @Override public void update(TableDataSource tds) { tds.clearAllTableData(); @@ -256,10 +264,12 @@ public class TableDataPaneListPane extends JListControlPane implements TableData this.setSelectedName(name); } + @Override public Map getDsNameChangedMap() { return this.dsNameChangedMap; } + @Override public JPanel getPanel() { return this; } @@ -269,6 +279,7 @@ public class TableDataPaneListPane extends JListControlPane implements TableData * * @param index 选中项的序列号 */ + @Override public void setSelectedIndex(int index) { nameableList.setSelectedIndex(index); } diff --git a/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java b/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java index f6ff9c1ed7..3ed10c3b1a 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java +++ b/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java @@ -51,6 +51,7 @@ public abstract class JListControlPane extends JControlPane { this.initComponentPane(); } + @Override protected JPanel createControlUpdatePane() { return new JControlUpdatePane(); } @@ -60,6 +61,7 @@ public abstract class JListControlPane extends JControlPane { * * @return 按钮的NameableCreator */ + @Override public abstract NameableCreator[] createNameableCreators(); @@ -107,6 +109,7 @@ public abstract class JListControlPane extends JControlPane { } + @Override protected ShortCut4JControlPane addItemShortCut() { ShortCut addItemShortCut; NameableCreator[] creators = creators(); @@ -118,22 +121,27 @@ public abstract class JListControlPane extends JControlPane { return new AbsoluteEnableShortCut(addItemShortCut); } + @Override protected ShortCut4JControlPane removeItemShortCut() { return new NormalEnableShortCut(new RemoveItemAction()); } + @Override protected ShortCut4JControlPane copyItemShortCut() { return new NormalEnableShortCut(new CopyItemAction()); } + @Override protected ShortCut4JControlPane moveUpItemShortCut() { return new NormalEnableShortCut(new MoveUpItemAction()); } + @Override protected ShortCut4JControlPane moveDownItemShortCut() { return new NormalEnableShortCut(new MoveDownItemAction()); } + @Override protected ShortCut4JControlPane sortItemShortCut() { return new NormalEnableShortCut(new SortItemAction()); } @@ -142,6 +150,7 @@ public abstract class JListControlPane extends JControlPane { this.nameableList.setEditable(editable); } + @Override public Nameable[] update() { java.util.List res = new java.util.ArrayList(); ((JControlUpdatePane) this.controlUpdatePane).update(); @@ -309,6 +318,7 @@ public abstract class JListControlPane extends JControlPane { * @param prefix 名字前缀 * @return 名字 */ + @Override public String createUnrepeatedName(String prefix) { DefaultListModel model = this.getModel(); Nameable[] all = new Nameable[model.getSize()]; @@ -349,6 +359,7 @@ public abstract class JListControlPane extends JControlPane { this.setSmallIcon(BaseUtils.readIcon("/com/fr/base/images/cell/control/add.png")); } + @Override public void actionPerformed(ActionEvent e) { Nameable nameable = creator.createNameable(JListControlPane.this); @@ -386,6 +397,7 @@ public abstract class JListControlPane extends JControlPane { } } + @Override public void actionPerformed(ActionEvent e) { if (hasInvalid(true)) { return; @@ -427,6 +439,7 @@ public abstract class JListControlPane extends JControlPane { .readIcon("/com/fr/base/images/cell/control/remove.png")); } + @Override public void actionPerformed(ActionEvent evt) { try { JListControlPane.this.nameableList.getCellEditor() @@ -454,6 +467,7 @@ public abstract class JListControlPane extends JControlPane { .readIcon("/com/fr/base/images/cell/control/copy.png")); } + @Override public void actionPerformed(ActionEvent evt) { // p:选中的值. ListModelElement selectedValue = (ListModelElement) nameableList.getSelectedValue(); @@ -488,6 +502,7 @@ public abstract class JListControlPane extends JControlPane { .readIcon("/com/fr/design/images/control/up.png")); } + @Override public void actionPerformed(ActionEvent evt) { int selectedIndex = nameableList.getSelectedIndex(); if (selectedIndex == -1) { @@ -520,6 +535,7 @@ public abstract class JListControlPane extends JControlPane { .readIcon("/com/fr/design/images/control/down.png")); } + @Override public void actionPerformed(ActionEvent evt) { int selectedIndex = nameableList.getSelectedIndex(); if (selectedIndex == -1) { @@ -550,6 +566,7 @@ public abstract class JListControlPane extends JControlPane { .readIcon("/com/fr/design/images/control/sortAsc.png")); } + @Override public void actionPerformed(ActionEvent evt) { // p:选中的值. Object selectedValue = nameableList.getSelectedValue(); @@ -568,6 +585,7 @@ public abstract class JListControlPane extends JControlPane { // p:排序. if (isAtoZ) { Comparator nameableComparator = new Comparator() { + @Override public int compare(Nameable o1, Nameable o2) { return -ComparatorUtils.compare(o1.getName(), o2 .getName()); @@ -577,6 +595,7 @@ public abstract class JListControlPane extends JControlPane { Arrays.sort(nameableArray, nameableComparator); } else { Comparator nameableComparator = new Comparator() { + @Override public int compare(Nameable o1, Nameable o2) { return ComparatorUtils.compare(o1.getName(), o2 .getName()); @@ -634,6 +653,7 @@ public abstract class JListControlPane extends JControlPane { evt.getY() - 1); } + @Override public void mouseMoved(MouseEvent e) { } @@ -697,6 +717,7 @@ public abstract class JListControlPane extends JControlPane { /** * 检查是否可用 */ + @Override public void checkEnable() { this.shortCut.setEnabled(true); } @@ -710,6 +731,7 @@ public abstract class JListControlPane extends JControlPane { /** * 检查是否可用 */ + @Override public void checkEnable() { this.shortCut.setEnabled(getModel() .getSize() > 0 @@ -918,6 +940,7 @@ public abstract class JListControlPane extends JControlPane { return -1; } + @Override protected boolean hasInvalid(boolean isAdd) { int idx = JListControlPane.this.getInValidIndex(); if (isAdd || nameableList.getSelectedIndex() != idx) { From 758bc577759910f30098d4d8237a06c0f7666920 Mon Sep 17 00:00:00 2001 From: richie Date: Wed, 18 May 2016 15:36:32 +0800 Subject: [PATCH 15/54] =?UTF-8?q?=E8=83=8C=E6=99=AF=E9=83=A8=E5=88=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E9=87=8D=E6=9E=84,=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=83=8C=E6=99=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/webattr/ReportWebAttrPane.java | 3 +- .../fr/design/ExtraDesignClassManager.java | 44 + .../design/fun/BackgroundQuickUIProvider.java | 22 + .../fr/design/fun/BackgroundUIProvider.java | 34 + .../AbstractBackgroundQuickUIProvider.java | 20 + .../impl/AbstractBackgroundUIProvider.java | 20 + ...tingPane.java => BackgroundQuickPane.java} | 64 +- ...ane.java => ColorBackgroundQuickPane.java} | 142 +-- ...ane.java => ImageBackgroundQuickPane.java} | 368 ++++---- ...Pane.java => NullBackgroundQuickPane.java} | 106 +-- ...e.java => PatternBackgroundQuickPane.java} | 420 ++++---- ...e.java => TextureBackgroundQuickPane.java} | 344 +++---- .../com/fr/design/style/AbstractPopBox.java | 6 +- .../background/BackgroundDetailPane.java | 18 + .../style/background/BackgroundFactory.java | 121 +++ .../style/background/BackgroundPane.java | 893 +----------------- .../background/BackgroundPane4Browser.java | 47 + .../background/BackgroundSelectPane.java | 5 +- .../style/background/BackgroundUIWrapper.java | 49 + ...tPane.java => GradientBackgroundPane.java} | 268 +++--- .../design/style/background/impl/BPane.java | 46 + .../background/impl/ColorBackgroundPane.java | 42 + .../background/impl/ImageBackgroundPane.java | 230 +++++ .../impl/ImageBackgroundPane4Browser.java | 25 + .../background/impl/NullBackgroundPane.java | 39 + .../impl/PatternBackgroundPane.java | 208 ++++ .../impl/PatternBackgroundPaneNoFore.java | 24 + .../impl/TextureBackgroundPane.java | 197 ++++ .../background/pattern/PatternSelectPane.java | 6 +- .../background/texture/TextureSelectPane.java | 6 +- .../gui/style/ChartBackgroundNoImagePane.java | 12 +- .../chart/gui/style/ChartBackgroundPane.java | 26 +- 32 files changed, 2119 insertions(+), 1736 deletions(-) create mode 100644 designer_base/src/com/fr/design/fun/BackgroundQuickUIProvider.java create mode 100644 designer_base/src/com/fr/design/fun/BackgroundUIProvider.java create mode 100644 designer_base/src/com/fr/design/fun/impl/AbstractBackgroundQuickUIProvider.java create mode 100644 designer_base/src/com/fr/design/fun/impl/AbstractBackgroundUIProvider.java rename designer_base/src/com/fr/design/mainframe/backgroundpane/{BackgroundSettingPane.java => BackgroundQuickPane.java} (83%) rename designer_base/src/com/fr/design/mainframe/backgroundpane/{ColorBackgroundPane.java => ColorBackgroundQuickPane.java} (91%) rename designer_base/src/com/fr/design/mainframe/backgroundpane/{ImageBackgroundPane.java => ImageBackgroundQuickPane.java} (93%) rename designer_base/src/com/fr/design/mainframe/backgroundpane/{NullBackgroundPane.java => NullBackgroundQuickPane.java} (89%) rename designer_base/src/com/fr/design/mainframe/backgroundpane/{PatternBackgroundPane.java => PatternBackgroundQuickPane.java} (92%) rename designer_base/src/com/fr/design/mainframe/backgroundpane/{TextureBackgroundPane.java => TextureBackgroundQuickPane.java} (94%) create mode 100644 designer_base/src/com/fr/design/style/background/BackgroundDetailPane.java create mode 100644 designer_base/src/com/fr/design/style/background/BackgroundFactory.java create mode 100644 designer_base/src/com/fr/design/style/background/BackgroundPane4Browser.java create mode 100644 designer_base/src/com/fr/design/style/background/BackgroundUIWrapper.java rename designer_base/src/com/fr/design/style/background/gradient/{GradientPane.java => GradientBackgroundPane.java} (93%) create mode 100644 designer_base/src/com/fr/design/style/background/impl/BPane.java create mode 100644 designer_base/src/com/fr/design/style/background/impl/ColorBackgroundPane.java create mode 100644 designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java create mode 100644 designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane4Browser.java create mode 100644 designer_base/src/com/fr/design/style/background/impl/NullBackgroundPane.java create mode 100644 designer_base/src/com/fr/design/style/background/impl/PatternBackgroundPane.java create mode 100644 designer_base/src/com/fr/design/style/background/impl/PatternBackgroundPaneNoFore.java create mode 100644 designer_base/src/com/fr/design/style/background/impl/TextureBackgroundPane.java diff --git a/designer/src/com/fr/design/webattr/ReportWebAttrPane.java b/designer/src/com/fr/design/webattr/ReportWebAttrPane.java index cd761199be..6330ee87fd 100644 --- a/designer/src/com/fr/design/webattr/ReportWebAttrPane.java +++ b/designer/src/com/fr/design/webattr/ReportWebAttrPane.java @@ -10,6 +10,7 @@ import javax.swing.JPanel; import com.fr.design.gui.frpane.LoadingBasicPane; import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.style.background.BackgroundPane4Browser; import com.fr.general.Inter; import com.fr.design.style.background.BackgroundPane; import com.fr.web.attr.ReportWebAttr; @@ -50,7 +51,7 @@ public class ReportWebAttrPane extends LoadingBasicPane { tabbedPane.add(Inter.getLocText("WEB-Write_Setting"), writeWeb = new WriteWebSettingPane()); tabbedPane.add(Inter.getLocText("M-Data_Analysis_Settings"), viewWeb = new ViewWebSettingPane()); - tabbedPane.addTab(Inter.getLocText("ReportServerP-Browser_Background"), backgroundPane = new BackgroundPane(true)); + tabbedPane.addTab(Inter.getLocText("ReportServerP-Browser_Background"), backgroundPane = new BackgroundPane4Browser()); tabbedPane.addTab(Inter.getLocText("ReportServerP-Import_Css"), cssPane = new WebCssPane()); tabbedPane.addTab(Inter.getLocText("ReportServerP-Import_JavaScript"), jsPane = new WebJsPane()); } diff --git a/designer_base/src/com/fr/design/ExtraDesignClassManager.java b/designer_base/src/com/fr/design/ExtraDesignClassManager.java index a11ff53a6c..d676381678 100644 --- a/designer_base/src/com/fr/design/ExtraDesignClassManager.java +++ b/designer_base/src/com/fr/design/ExtraDesignClassManager.java @@ -134,6 +134,10 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi private Set exportAttrTabProviders; + private Set backgroundQuickUIProviders; + + private Set backgroundUIProviders; + public TableDataPaneProcessor getTableDataPaneProcessor() { return tableDataPaneProcessor; } @@ -770,6 +774,36 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi exportAttrTabProviders.add((ExportAttrTabProvider) level); } + public BackgroundQuickUIProvider[] getBackgroundQuickUIProviders() { + if (backgroundQuickUIProviders == null) { + return new BackgroundQuickUIProvider[0]; + } + return backgroundQuickUIProviders.toArray(new BackgroundQuickUIProvider[backgroundQuickUIProviders.size()]); + } + + public void addBackgroundQuickUIProvider(Level level, PluginSimplify simplify) throws Exception { + if (backgroundQuickUIProviders == null) { + backgroundQuickUIProviders = new HashSet<>(); + } + validAPILevel(level, BackgroundQuickUIProvider.CURRENT_LEVEL, simplify.getPluginName()); + backgroundQuickUIProviders.add((BackgroundQuickUIProvider) level); + } + + public BackgroundUIProvider[] getBackgroundUIProviders() { + if (backgroundUIProviders == null) { + return new BackgroundUIProvider[0]; + } + return backgroundUIProviders.toArray(new BackgroundUIProvider[backgroundUIProviders.size()]); + } + + public void addBackgroundUIProvider(Level level, PluginSimplify simplify) throws Exception { + if (backgroundUIProviders == null) { + backgroundUIProviders = new HashSet<>(); + } + validAPILevel(level, BackgroundUIProvider.CURRENT_LEVEL, simplify.getPluginName()); + backgroundUIProviders.add((BackgroundUIProvider) level); + } + /** * 文件名 * @@ -824,6 +858,8 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi readWidgetRelated(tagName, impl, simplify); //数据集, 数据连接 readTableDataRelated(tagName, className, simplify); + // 样式相关的 + readStyleRelated(tagName, impl, simplify); if (tagName.equals(ParameterWidgetOptionProvider.XML_TAG)) { addParameterWidgetOption(impl, simplify); } else if (tagName.equals(PreviewProvider.MARK_STRING)) { @@ -898,6 +934,14 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi } } + private void readStyleRelated(String tagName, Level impl, PluginSimplify simplify) throws Exception { + if (tagName.equals(BackgroundQuickUIProvider.MARK_STRING)) { + addBackgroundQuickUIProvider(impl, simplify); + } else if (tagName.equals(BackgroundUIProvider.MARK_STRING)) { + addBackgroundUIProvider(impl, simplify); + } + } + /** * 写xml * diff --git a/designer_base/src/com/fr/design/fun/BackgroundQuickUIProvider.java b/designer_base/src/com/fr/design/fun/BackgroundQuickUIProvider.java new file mode 100644 index 0000000000..257d257a3f --- /dev/null +++ b/designer_base/src/com/fr/design/fun/BackgroundQuickUIProvider.java @@ -0,0 +1,22 @@ +package com.fr.design.fun; + +import com.fr.design.mainframe.backgroundpane.BackgroundQuickPane; +import com.fr.stable.fun.Level; +import com.fr.stable.fun.Provider; + +/** + * Created by richie on 16/5/18. + * 背景设置界面接口,用于扩展设置更多类型的背景 + */ +public interface BackgroundQuickUIProvider extends Level, Provider { + + String MARK_STRING = "BackgroundQuickUIProvider"; + + int CURRENT_LEVEL = 1; + + /** + * 背景设置界面 + * @return 设置界面 + */ + BackgroundQuickPane appearanceForBackground(); +} diff --git a/designer_base/src/com/fr/design/fun/BackgroundUIProvider.java b/designer_base/src/com/fr/design/fun/BackgroundUIProvider.java new file mode 100644 index 0000000000..0ae87b9d7d --- /dev/null +++ b/designer_base/src/com/fr/design/fun/BackgroundUIProvider.java @@ -0,0 +1,34 @@ +package com.fr.design.fun; + +import com.fr.design.style.background.BackgroundDetailPane; +import com.fr.general.Background; +import com.fr.stable.fun.Level; +import com.fr.stable.fun.Provider; + +/** + * Created by richie on 16/5/18. + */ +public interface BackgroundUIProvider extends Level, Provider { + + String MARK_STRING = "BackgroundUIProvider"; + + int CURRENT_LEVEL = 1; + + /** + * 对应的背景具体类型 + * @return 背景 + */ + Class targetClass(); + + /** + * 背景设置界面 + * @return 界面 + */ + Class targetUIClass(); + + /** + * 标题 + * @return 在设计界面上这个选项的显示标题 + */ + String targetTitle(); +} diff --git a/designer_base/src/com/fr/design/fun/impl/AbstractBackgroundQuickUIProvider.java b/designer_base/src/com/fr/design/fun/impl/AbstractBackgroundQuickUIProvider.java new file mode 100644 index 0000000000..82da697c12 --- /dev/null +++ b/designer_base/src/com/fr/design/fun/impl/AbstractBackgroundQuickUIProvider.java @@ -0,0 +1,20 @@ +package com.fr.design.fun.impl; + +import com.fr.design.fun.BackgroundQuickUIProvider; +import com.fr.stable.fun.impl.AbstractProvider; + +/** + * Created by richie on 16/5/18. + */ +public abstract class AbstractBackgroundQuickUIProvider extends AbstractProvider implements BackgroundQuickUIProvider { + + @Override + public int currentAPILevel() { + return CURRENT_LEVEL; + } + + @Override + public String mark4Provider() { + return getClass().getName(); + } +} diff --git a/designer_base/src/com/fr/design/fun/impl/AbstractBackgroundUIProvider.java b/designer_base/src/com/fr/design/fun/impl/AbstractBackgroundUIProvider.java new file mode 100644 index 0000000000..ad95e3684f --- /dev/null +++ b/designer_base/src/com/fr/design/fun/impl/AbstractBackgroundUIProvider.java @@ -0,0 +1,20 @@ +package com.fr.design.fun.impl; + +import com.fr.design.fun.BackgroundUIProvider; +import com.fr.stable.fun.impl.AbstractProvider; + +/** + * Created by richie on 16/5/18. + */ +public abstract class AbstractBackgroundUIProvider extends AbstractProvider implements BackgroundUIProvider { + + @Override + public int currentAPILevel() { + return CURRENT_LEVEL; + } + + @Override + public String mark4Provider() { + return getClass().getName(); + } +} diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/BackgroundSettingPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/BackgroundQuickPane.java similarity index 83% rename from designer_base/src/com/fr/design/mainframe/backgroundpane/BackgroundSettingPane.java rename to designer_base/src/com/fr/design/mainframe/backgroundpane/BackgroundQuickPane.java index 82eafecb7c..1b796c438b 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/BackgroundSettingPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/BackgroundQuickPane.java @@ -1,33 +1,33 @@ -package com.fr.design.mainframe.backgroundpane; - -import com.fr.design.beans.BasicBeanPane; -import com.fr.design.event.UIObserver; -import com.fr.general.Background; - -/** - * @author zhou - * @since 2012-5-29下午1:12:28 - */ -public abstract class BackgroundSettingPane extends BasicBeanPane implements UIObserver { - - public abstract boolean accept(Background background); - - @Override - public abstract void populateBean(Background background); - - @Override - public abstract Background updateBean(); - - @Override - public abstract String title4PopupWindow(); - - /** - * 组件是否需要响应添加的观察者事件 - * - * @return 如果需要响应观察者事件则返回true,否则返回false - */ - public boolean shouldResponseChangeListener() { - - return true; - } +package com.fr.design.mainframe.backgroundpane; + +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.event.UIObserver; +import com.fr.general.Background; + +/** + * @author zhou + * @since 2012-5-29下午1:12:28 + */ +public abstract class BackgroundQuickPane extends BasicBeanPane implements UIObserver { + + public abstract boolean accept(Background background); + + @Override + public abstract void populateBean(Background background); + + @Override + public abstract Background updateBean(); + + @Override + public abstract String title4PopupWindow(); + + /** + * 组件是否需要响应添加的观察者事件 + * + * @return 如果需要响应观察者事件则返回true,否则返回false + */ + public boolean shouldResponseChangeListener() { + + return true; + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/ColorBackgroundPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/ColorBackgroundQuickPane.java similarity index 91% rename from designer_base/src/com/fr/design/mainframe/backgroundpane/ColorBackgroundPane.java rename to designer_base/src/com/fr/design/mainframe/backgroundpane/ColorBackgroundQuickPane.java index 1b7fea0ebd..f08b0a89b2 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/ColorBackgroundPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/ColorBackgroundQuickPane.java @@ -1,72 +1,72 @@ -package com.fr.design.mainframe.backgroundpane; - -import com.fr.base.background.ColorBackground; -import com.fr.design.event.UIObserverListener; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.general.Background; -import com.fr.general.Inter; -import com.fr.design.style.color.NewColorSelectPane; - -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import java.awt.*; - -/** - * @author zhou - * @since 2012-5-29下午1:12:14 - */ -public class ColorBackgroundPane extends BackgroundSettingPane { - - private NewColorSelectPane detailColorSelectPane; - - public ColorBackgroundPane() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - - detailColorSelectPane = new NewColorSelectPane(); - this.add(detailColorSelectPane, BorderLayout.NORTH); - } - - public void populateBean(Background background) { - ColorBackground colorBackgroud = (ColorBackground) background; - this.detailColorSelectPane.setColor(colorBackgroud.getColor()); - } - - public Background updateBean() { - this.detailColorSelectPane.updateUsedColor(); - return ColorBackground.getInstance(this.detailColorSelectPane.getNotNoneColor()); - } - - /** - * 给组件登记一个观察者监听事件 - * - * @param listener 观察者监听事件 - */ - public void registerChangeListener(final UIObserverListener listener) { - detailColorSelectPane.addChangeListener(new ChangeListener() { - public void stateChanged(ChangeEvent e) { - listener.doChange(); - } - }); - } - - @Override - /** - * 是否为ColorBackground 类型 - * - * @param background 背景 - * @return 同上 - * - */ - public boolean accept(Background background) { - return background instanceof ColorBackground; - } - - @Override - /** - * 窗口名称 - * @return 同上 - */ - public String title4PopupWindow() { - return Inter.getLocText("Color"); - } +package com.fr.design.mainframe.backgroundpane; + +import com.fr.base.background.ColorBackground; +import com.fr.design.event.UIObserverListener; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.general.Background; +import com.fr.general.Inter; +import com.fr.design.style.color.NewColorSelectPane; + +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.*; + +/** + * @author zhou + * @since 2012-5-29下午1:12:14 + */ +public class ColorBackgroundQuickPane extends BackgroundQuickPane { + + private NewColorSelectPane detailColorSelectPane; + + public ColorBackgroundQuickPane() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + + detailColorSelectPane = new NewColorSelectPane(); + this.add(detailColorSelectPane, BorderLayout.NORTH); + } + + public void populateBean(Background background) { + ColorBackground colorBackgroud = (ColorBackground) background; + this.detailColorSelectPane.setColor(colorBackgroud.getColor()); + } + + public Background updateBean() { + this.detailColorSelectPane.updateUsedColor(); + return ColorBackground.getInstance(this.detailColorSelectPane.getNotNoneColor()); + } + + /** + * 给组件登记一个观察者监听事件 + * + * @param listener 观察者监听事件 + */ + public void registerChangeListener(final UIObserverListener listener) { + detailColorSelectPane.addChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + listener.doChange(); + } + }); + } + + @Override + /** + * 是否为ColorBackground 类型 + * + * @param background 背景 + * @return 同上 + * + */ + public boolean accept(Background background) { + return background instanceof ColorBackground; + } + + @Override + /** + * 窗口名称 + * @return 同上 + */ + public String title4PopupWindow() { + return Inter.getLocText("Color"); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java similarity index 93% rename from designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundPane.java rename to designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java index 7565d7d78a..114b704c05 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java @@ -1,185 +1,185 @@ -package com.fr.design.mainframe.backgroundpane; - -import com.fr.base.BaseUtils; -import com.fr.base.Style; -import com.fr.base.background.ImageBackground; -import com.fr.design.constants.UIConstants; -import com.fr.design.border.UIRoundedBorder; -import com.fr.design.event.UIObserverListener; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.ibutton.UIButtonGroup; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.mainframe.DesignerContext; -import com.fr.general.Background; -import com.fr.general.Inter; -import com.fr.stable.Constants; -import com.fr.stable.CoreGraphHelper; -import com.fr.design.style.background.image.ImageFileChooser; - -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.io.File; - -/** - * @author zhou - * @since 2012-5-29下午1:12:06 - */ -public class ImageBackgroundPane extends BackgroundSettingPane { - - private ImagePreviewPane previewPane; - private Style imageStyle = null; - private ChangeListener changeListener = null; - private ImageFileChooser imageFileChooser; - - private UIButtonGroup imageLayoutPane; - - public ImageBackgroundPane() { - this(true); - } - - public ImageBackgroundPane(boolean hasImageLayout) { - this.setLayout(new BorderLayout(0, 4)); - String[] nameArray = {Inter.getLocText("FR-Background_Image_Default"), Inter.getLocText("FR-Background_Image_Titled"), Inter.getLocText("FR-Background_Image_Adjust"), Inter.getLocText("FR-Background_Image_Extend")}; - Byte[] valueArray = {Constants.IMAGE_CENTER, Constants.IMAGE_TILED, Constants.IMAGE_EXTEND, Constants.IMAGE_ADJUST}; - imageLayoutPane = new UIButtonGroup(nameArray, valueArray); - imageLayoutPane.setSelectedIndex(0); - - previewPane = new ImagePreviewPane(); - JPanel borderPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - borderPane.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 5)); - borderPane.setPreferredSize(new Dimension(0, 145)); - borderPane.add(previewPane, BorderLayout.CENTER); - this.add(borderPane, BorderLayout.NORTH); - previewPane.addChangeListener(imageSizeChangeListener); - - JPanel southPane = new JPanel(new BorderLayout(0, 4)); - JPanel contentPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - contentPane.add(southPane, BorderLayout.NORTH); - this.add(contentPane, BorderLayout.CENTER); - - JPanel selectFilePane = new JPanel(new GridLayout(0, 2)); - - UIButton selectPictureButton = new UIButton(Inter.getLocText("Image-Select_Picture")); - selectFilePane.add(new JPanel()); - selectFilePane.add(selectPictureButton); - selectPictureButton.addActionListener(selectPictureActionListener); - - if(hasImageLayout){ - southPane.add(imageLayoutPane, BorderLayout.CENTER); - } - southPane.add(selectFilePane, BorderLayout.SOUTH); - - imageLayoutPane.addChangeListener(new ChangeListener() { - - @Override - public void stateChanged(ChangeEvent e) { - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(imageLayoutPane.getSelectedItem()); - previewPane.setImageStyle(imageStyle); - previewPane.repaint(); - } - }); - } - - /** - * Select picture. - */ - ActionListener selectPictureActionListener = new ActionListener() { - - public void actionPerformed(ActionEvent evt) { - if (imageFileChooser == null) { - imageFileChooser = new ImageFileChooser(); - imageFileChooser.setMultiSelectionEnabled(false); - } - int returnVal = imageFileChooser.showOpenDialog(DesignerContext.getDesignerFrame()); - if (returnVal != JFileChooser.CANCEL_OPTION) { - File selectedFile = imageFileChooser.getSelectedFile(); - - if (selectedFile != null && selectedFile.isFile()) { - Image image = BaseUtils.readImage(selectedFile.getPath()); - CoreGraphHelper.waitForImage(image); - - previewPane.setImage(image); - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(imageLayoutPane.getSelectedItem()); - previewPane.setImageStyle(imageStyle); - previewPane.repaint(); - } else { - previewPane.setImage(null); - } - fireChagneListener(); - } - - } - }; - - public void populateBean(Background background) { - - ImageBackground imageBackground = (ImageBackground) background; - imageLayoutPane.setSelectedItem((byte) imageBackground.getLayout()); - Style.DEFAULT_STYLE.deriveImageLayout(imageBackground.getLayout()); - - previewPane.setImageStyle(ImageBackgroundPane.this.imageStyle); - previewPane.setImage(imageBackground.getImage()); - previewPane.repaint(); - } - - public Background updateBean() { - ImageBackground imageBackground = new ImageBackground(previewPane.getImage()); - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(imageLayoutPane.getSelectedItem()); - imageBackground.setLayout(imageStyle.getImageLayout()); - return imageBackground; - } - - /** - * 给组件登记一个观察者监听事件 - * - * @param listener 观察者监听事件 - */ - public void registerChangeListener(final UIObserverListener listener) { - changeListener = new ChangeListener() { - public void stateChanged(ChangeEvent e) { - listener.doChange(); - } - }; - imageLayoutPane.addChangeListener(changeListener); - } - - - private void fireChagneListener() { - if (this.changeListener != null) { - ChangeEvent evt = new ChangeEvent(this); - this.changeListener.stateChanged(evt); - } - } - - ChangeListener imageSizeChangeListener = new ChangeListener() { - - public void stateChanged(ChangeEvent evt) { - if (imageLayoutPane.getSelectedItem() != null) { - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(imageLayoutPane.getSelectedItem()); - previewPane.setImageStyle(imageStyle); - previewPane.repaint(); - } - } - }; - - /** - * 判断是否是图片背景 - * @param background 背景 - * @return 判断是否是图片背景 - */ - public boolean accept(Background background) { - return background instanceof ImageBackground; - } - - /** - * 标题 - * @return 标题 - */ - public String title4PopupWindow() { - return Inter.getLocText("FR-Background_Image"); - } +package com.fr.design.mainframe.backgroundpane; + +import com.fr.base.BaseUtils; +import com.fr.base.Style; +import com.fr.base.background.ImageBackground; +import com.fr.design.constants.UIConstants; +import com.fr.design.border.UIRoundedBorder; +import com.fr.design.event.UIObserverListener; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.ibutton.UIButtonGroup; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.mainframe.DesignerContext; +import com.fr.general.Background; +import com.fr.general.Inter; +import com.fr.stable.Constants; +import com.fr.stable.CoreGraphHelper; +import com.fr.design.style.background.image.ImageFileChooser; + +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.io.File; + +/** + * @author zhou + * @since 2012-5-29下午1:12:06 + */ +public class ImageBackgroundQuickPane extends BackgroundQuickPane { + + private ImagePreviewPane previewPane; + private Style imageStyle = null; + private ChangeListener changeListener = null; + private ImageFileChooser imageFileChooser; + + private UIButtonGroup imageLayoutPane; + + public ImageBackgroundQuickPane() { + this(true); + } + + public ImageBackgroundQuickPane(boolean hasImageLayout) { + this.setLayout(new BorderLayout(0, 4)); + String[] nameArray = {Inter.getLocText("FR-Background_Image_Default"), Inter.getLocText("FR-Background_Image_Titled"), Inter.getLocText("FR-Background_Image_Adjust"), Inter.getLocText("FR-Background_Image_Extend")}; + Byte[] valueArray = {Constants.IMAGE_CENTER, Constants.IMAGE_TILED, Constants.IMAGE_EXTEND, Constants.IMAGE_ADJUST}; + imageLayoutPane = new UIButtonGroup(nameArray, valueArray); + imageLayoutPane.setSelectedIndex(0); + + previewPane = new ImagePreviewPane(); + JPanel borderPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + borderPane.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 5)); + borderPane.setPreferredSize(new Dimension(0, 145)); + borderPane.add(previewPane, BorderLayout.CENTER); + this.add(borderPane, BorderLayout.NORTH); + previewPane.addChangeListener(imageSizeChangeListener); + + JPanel southPane = new JPanel(new BorderLayout(0, 4)); + JPanel contentPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + contentPane.add(southPane, BorderLayout.NORTH); + this.add(contentPane, BorderLayout.CENTER); + + JPanel selectFilePane = new JPanel(new GridLayout(0, 2)); + + UIButton selectPictureButton = new UIButton(Inter.getLocText("Image-Select_Picture")); + selectFilePane.add(new JPanel()); + selectFilePane.add(selectPictureButton); + selectPictureButton.addActionListener(selectPictureActionListener); + + if(hasImageLayout){ + southPane.add(imageLayoutPane, BorderLayout.CENTER); + } + southPane.add(selectFilePane, BorderLayout.SOUTH); + + imageLayoutPane.addChangeListener(new ChangeListener() { + + @Override + public void stateChanged(ChangeEvent e) { + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(imageLayoutPane.getSelectedItem()); + previewPane.setImageStyle(imageStyle); + previewPane.repaint(); + } + }); + } + + /** + * Select picture. + */ + ActionListener selectPictureActionListener = new ActionListener() { + + public void actionPerformed(ActionEvent evt) { + if (imageFileChooser == null) { + imageFileChooser = new ImageFileChooser(); + imageFileChooser.setMultiSelectionEnabled(false); + } + int returnVal = imageFileChooser.showOpenDialog(DesignerContext.getDesignerFrame()); + if (returnVal != JFileChooser.CANCEL_OPTION) { + File selectedFile = imageFileChooser.getSelectedFile(); + + if (selectedFile != null && selectedFile.isFile()) { + Image image = BaseUtils.readImage(selectedFile.getPath()); + CoreGraphHelper.waitForImage(image); + + previewPane.setImage(image); + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(imageLayoutPane.getSelectedItem()); + previewPane.setImageStyle(imageStyle); + previewPane.repaint(); + } else { + previewPane.setImage(null); + } + fireChagneListener(); + } + + } + }; + + public void populateBean(Background background) { + + ImageBackground imageBackground = (ImageBackground) background; + imageLayoutPane.setSelectedItem((byte) imageBackground.getLayout()); + Style.DEFAULT_STYLE.deriveImageLayout(imageBackground.getLayout()); + + previewPane.setImageStyle(ImageBackgroundQuickPane.this.imageStyle); + previewPane.setImage(imageBackground.getImage()); + previewPane.repaint(); + } + + public Background updateBean() { + ImageBackground imageBackground = new ImageBackground(previewPane.getImage()); + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(imageLayoutPane.getSelectedItem()); + imageBackground.setLayout(imageStyle.getImageLayout()); + return imageBackground; + } + + /** + * 给组件登记一个观察者监听事件 + * + * @param listener 观察者监听事件 + */ + public void registerChangeListener(final UIObserverListener listener) { + changeListener = new ChangeListener() { + public void stateChanged(ChangeEvent e) { + listener.doChange(); + } + }; + imageLayoutPane.addChangeListener(changeListener); + } + + + private void fireChagneListener() { + if (this.changeListener != null) { + ChangeEvent evt = new ChangeEvent(this); + this.changeListener.stateChanged(evt); + } + } + + ChangeListener imageSizeChangeListener = new ChangeListener() { + + public void stateChanged(ChangeEvent evt) { + if (imageLayoutPane.getSelectedItem() != null) { + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(imageLayoutPane.getSelectedItem()); + previewPane.setImageStyle(imageStyle); + previewPane.repaint(); + } + } + }; + + /** + * 判断是否是图片背景 + * @param background 背景 + * @return 判断是否是图片背景 + */ + public boolean accept(Background background) { + return background instanceof ImageBackground; + } + + /** + * 标题 + * @return 标题 + */ + public String title4PopupWindow() { + return Inter.getLocText("FR-Background_Image"); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/NullBackgroundPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/NullBackgroundQuickPane.java similarity index 89% rename from designer_base/src/com/fr/design/mainframe/backgroundpane/NullBackgroundPane.java rename to designer_base/src/com/fr/design/mainframe/backgroundpane/NullBackgroundQuickPane.java index 6edd7c7fcd..60d39ed2d6 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/NullBackgroundPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/NullBackgroundQuickPane.java @@ -1,54 +1,54 @@ -package com.fr.design.mainframe.backgroundpane; - -import com.fr.design.event.UIObserverListener; -import com.fr.general.Background; -import com.fr.general.Inter; - -import java.awt.*; - -/** - * @author zhou - * @since 2012-5-29下午1:12:24 - */ -public class NullBackgroundPane extends BackgroundSettingPane { - - public Dimension getPreferredSize(){ - return new Dimension(0,0); - } - - public void populateBean(Background background) { - // do nothing. - } - - public Background updateBean() { - return null; - } - - /** - * 给组件登记一个观察者监听事件 - * - * @param listener 观察者监听事件 - */ - public void registerChangeListener(final UIObserverListener listener) { - - } - - - /** - * 是否接受 - * @param background 背景 - * @return 是则返回true - */ - public boolean accept(Background background) { - return background == null; - } - - /** - * 名称 - * @return 名称 - */ - public String title4PopupWindow() { - return Inter.getLocText("Background-Null"); - } - +package com.fr.design.mainframe.backgroundpane; + +import com.fr.design.event.UIObserverListener; +import com.fr.general.Background; +import com.fr.general.Inter; + +import java.awt.*; + +/** + * @author zhou + * @since 2012-5-29下午1:12:24 + */ +public class NullBackgroundQuickPane extends BackgroundQuickPane { + + public Dimension getPreferredSize(){ + return new Dimension(0,0); + } + + public void populateBean(Background background) { + // do nothing. + } + + public Background updateBean() { + return null; + } + + /** + * 给组件登记一个观察者监听事件 + * + * @param listener 观察者监听事件 + */ + public void registerChangeListener(final UIObserverListener listener) { + + } + + + /** + * 是否接受 + * @param background 背景 + * @return 是则返回true + */ + public boolean accept(Background background) { + return background == null; + } + + /** + * 名称 + * @return 名称 + */ + public String title4PopupWindow() { + return Inter.getLocText("Background-Null"); + } + } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java similarity index 92% rename from designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundPane.java rename to designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java index 7e3e150426..4e31405d11 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java @@ -1,211 +1,211 @@ -package com.fr.design.mainframe.backgroundpane; - -import com.fr.base.GraphHelper; -import com.fr.base.background.PatternBackground; -import com.fr.design.constants.UIConstants; -import com.fr.design.border.UIRoundedBorder; -import com.fr.design.event.UIObserverListener; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.general.Background; -import com.fr.general.Inter; -import com.fr.design.style.color.ColorSelectBox; - -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.geom.Rectangle2D; - -/** - * @author zhou - * @since 2012-5-29下午1:12:33 - */ -public class PatternBackgroundPane extends BackgroundSettingPane { - - private int patternIndex = 0; // pattern index. - private ColorSelectBox foregroundColorPane; - private ColorSelectBox backgroundColorPane; - private PatternButton[] patternButtonArray; - - public PatternBackgroundPane() { - 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)); - typePane2.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8)); - ButtonGroup patternButtonGroup = new ButtonGroup(); - patternButtonArray = new PatternButton[PatternBackground.PATTERN_COUNT]; - for (int i = 0; i < PatternBackground.PATTERN_COUNT; i++) { - patternButtonArray[i] = new PatternButton(i); - patternButtonGroup.add(patternButtonArray[i]); - typePane2.add(patternButtonArray[i]); - } - - 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)); - this.add(colorPane, BorderLayout.CENTER); - foregroundColorPane.addSelectChangeListener(colorChangeListener); - backgroundColorPane.addSelectChangeListener(colorChangeListener); - } - - @Override - public Dimension getPreferredSize() { - Dimension dim = super.getPreferredSize(); - dim.height = 190; - return dim; - } - - private JPanel createLabelColorPane(String text, JComponent colorPane) { - JPanel labelColorPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)); - labelColorPane.add(new UILabel(text)); - labelColorPane.add(colorPane); - - return labelColorPane; - } - - public void populateBean(Background background) { - PatternBackground patternBackground = (PatternBackground) background; - int patternIndex = patternBackground.getPatternIndex(); - - if (patternIndex >= 0 && patternIndex < this.patternButtonArray.length) { - this.patternButtonArray[patternIndex].setSelected(true); - this.patternIndex = patternIndex; - } else { - this.patternIndex = 0; - } - - foregroundColorPane.setSelectObject(patternBackground.getForeground()); - backgroundColorPane.setSelectObject(patternBackground.getBackground()); - } - - public Background updateBean() { - return new PatternBackground(patternIndex, foregroundColorPane.getSelectObject(), backgroundColorPane.getSelectObject()); - } - - - /** - * 给组件登记一个观察者监听事件 - * - * @param listener 观察者监听事件 - */ - public void registerChangeListener(final UIObserverListener listener) { - foregroundColorPane.addSelectChangeListener(new ChangeListener() { - public void stateChanged(ChangeEvent e) { - listener.doChange(); - } - }); - backgroundColorPane.addSelectChangeListener(new ChangeListener() { - public void stateChanged(ChangeEvent e) { - listener.doChange(); - } - }); - for (int i = 0, count = patternButtonArray.length; i < count; i ++) { - patternButtonArray[i].addChangeListener(new ChangeListener() { - public void stateChanged(ChangeEvent e) { - listener.doChange(); - } - }); - } - } - - - // Foreground or Background changed. - ChangeListener colorChangeListener = new ChangeListener() { - - public void stateChanged(ChangeEvent e) { - for (int i = 0; i < patternButtonArray.length; i++) { - patternButtonArray[i].setPatternForeground(foregroundColorPane.getSelectObject()); - patternButtonArray[i].setPatternBackground(backgroundColorPane.getSelectObject()); - } - - PatternBackgroundPane.this.repaint();// repaint - } - }; - - /** - * Pattern type button. - */ - class PatternButton extends JToggleButton implements ActionListener { - - public PatternButton(int pIndex) { - this.pIndex = pIndex; - this.addActionListener(this); - - this.setCursor(new Cursor(Cursor.HAND_CURSOR)); - this.setBorder(null); - this.patternBackground = new PatternBackground(this.pIndex, Color.lightGray, Color.black); - } - - public void paintComponent(Graphics g) { - Graphics2D g2d = (Graphics2D) g; - - Dimension d = getSize(); - this.patternBackground.paint(g2d, new Rectangle2D.Double(0, 0, d.width - 1, d.height - 1)); - - if (this.pIndex == patternIndex) {// it's selected. - g2d.setPaint(UIConstants.LINE_COLOR); - GraphHelper.draw(g2d, new Rectangle2D.Double(0, 0, d.width - 1, d.height - 1)); - } - } - - public Dimension getPreferredSize() { - return new Dimension(super.getPreferredSize().width, 20); - } - - public void setPatternForeground(Color foreground) { - this.patternBackground.setForeground(foreground); - } - - public void setPatternBackground(Color background) { - this.patternBackground.setBackground(background); - } - - /** - * set Pattern index. - */ - public void actionPerformed(ActionEvent evt) { - PatternBackgroundPane.this.patternIndex = pIndex; - - fireChagneListener(); - PatternBackgroundPane.this.repaint();// repaint - } - - public void addChangeListener(ChangeListener changeListener) { - this.changeListener = changeListener; - } - - private void fireChagneListener() { - if (this.changeListener != null) { - ChangeEvent evt = new ChangeEvent(this); - this.changeListener.stateChanged(evt); - } - } - - private int pIndex = 0; - private PatternBackground patternBackground; - } - - @Override - public boolean accept(Background background) { - return background instanceof PatternBackground; - } - - @Override - public String title4PopupWindow() { - return Inter.getLocText("Background-Pattern"); - } +package com.fr.design.mainframe.backgroundpane; + +import com.fr.base.GraphHelper; +import com.fr.base.background.PatternBackground; +import com.fr.design.constants.UIConstants; +import com.fr.design.border.UIRoundedBorder; +import com.fr.design.event.UIObserverListener; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.general.Background; +import com.fr.general.Inter; +import com.fr.design.style.color.ColorSelectBox; + +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.geom.Rectangle2D; + +/** + * @author zhou + * @since 2012-5-29下午1:12:33 + */ +public class PatternBackgroundQuickPane extends BackgroundQuickPane { + + private int patternIndex = 0; // pattern setIndex. + 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)); + typePane2.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8)); + ButtonGroup patternButtonGroup = new ButtonGroup(); + patternButtonArray = new PatternButton[PatternBackground.PATTERN_COUNT]; + for (int i = 0; i < PatternBackground.PATTERN_COUNT; i++) { + patternButtonArray[i] = new PatternButton(i); + patternButtonGroup.add(patternButtonArray[i]); + typePane2.add(patternButtonArray[i]); + } + + 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)); + this.add(colorPane, BorderLayout.CENTER); + foregroundColorPane.addSelectChangeListener(colorChangeListener); + backgroundColorPane.addSelectChangeListener(colorChangeListener); + } + + @Override + public Dimension getPreferredSize() { + Dimension dim = super.getPreferredSize(); + dim.height = 190; + return dim; + } + + private JPanel createLabelColorPane(String text, JComponent colorPane) { + JPanel labelColorPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)); + labelColorPane.add(new UILabel(text)); + labelColorPane.add(colorPane); + + return labelColorPane; + } + + public void populateBean(Background background) { + PatternBackground patternBackground = (PatternBackground) background; + int patternIndex = patternBackground.getPatternIndex(); + + if (patternIndex >= 0 && patternIndex < this.patternButtonArray.length) { + this.patternButtonArray[patternIndex].setSelected(true); + this.patternIndex = patternIndex; + } else { + this.patternIndex = 0; + } + + foregroundColorPane.setSelectObject(patternBackground.getForeground()); + backgroundColorPane.setSelectObject(patternBackground.getBackground()); + } + + public Background updateBean() { + return new PatternBackground(patternIndex, foregroundColorPane.getSelectObject(), backgroundColorPane.getSelectObject()); + } + + + /** + * 给组件登记一个观察者监听事件 + * + * @param listener 观察者监听事件 + */ + public void registerChangeListener(final UIObserverListener listener) { + foregroundColorPane.addSelectChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + listener.doChange(); + } + }); + backgroundColorPane.addSelectChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + listener.doChange(); + } + }); + for (int i = 0, count = patternButtonArray.length; i < count; i ++) { + patternButtonArray[i].addChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + listener.doChange(); + } + }); + } + } + + + // Foreground or Background changed. + ChangeListener colorChangeListener = new ChangeListener() { + + public void stateChanged(ChangeEvent e) { + for (int i = 0; i < patternButtonArray.length; i++) { + patternButtonArray[i].setPatternForeground(foregroundColorPane.getSelectObject()); + patternButtonArray[i].setPatternBackground(backgroundColorPane.getSelectObject()); + } + + PatternBackgroundQuickPane.this.repaint();// repaint + } + }; + + /** + * Pattern type button. + */ + class PatternButton extends JToggleButton implements ActionListener { + + public PatternButton(int pIndex) { + this.pIndex = pIndex; + this.addActionListener(this); + + this.setCursor(new Cursor(Cursor.HAND_CURSOR)); + this.setBorder(null); + this.patternBackground = new PatternBackground(this.pIndex, Color.lightGray, Color.black); + } + + public void paintComponent(Graphics g) { + Graphics2D g2d = (Graphics2D) g; + + Dimension d = getSize(); + this.patternBackground.paint(g2d, new Rectangle2D.Double(0, 0, d.width - 1, d.height - 1)); + + if (this.pIndex == patternIndex) {// it's selected. + g2d.setPaint(UIConstants.LINE_COLOR); + GraphHelper.draw(g2d, new Rectangle2D.Double(0, 0, d.width - 1, d.height - 1)); + } + } + + public Dimension getPreferredSize() { + return new Dimension(super.getPreferredSize().width, 20); + } + + public void setPatternForeground(Color foreground) { + this.patternBackground.setForeground(foreground); + } + + public void setPatternBackground(Color background) { + this.patternBackground.setBackground(background); + } + + /** + * set Pattern setIndex. + */ + public void actionPerformed(ActionEvent evt) { + PatternBackgroundQuickPane.this.patternIndex = pIndex; + + fireChagneListener(); + PatternBackgroundQuickPane.this.repaint();// repaint + } + + public void addChangeListener(ChangeListener changeListener) { + this.changeListener = changeListener; + } + + private void fireChagneListener() { + if (this.changeListener != null) { + ChangeEvent evt = new ChangeEvent(this); + this.changeListener.stateChanged(evt); + } + } + + private int pIndex = 0; + private PatternBackground patternBackground; + } + + @Override + public boolean accept(Background background) { + return background instanceof PatternBackground; + } + + @Override + public String title4PopupWindow() { + return Inter.getLocText("Background-Pattern"); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/TextureBackgroundPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/TextureBackgroundQuickPane.java similarity index 94% rename from designer_base/src/com/fr/design/mainframe/backgroundpane/TextureBackgroundPane.java rename to designer_base/src/com/fr/design/mainframe/backgroundpane/TextureBackgroundQuickPane.java index caff963d63..dcd386343e 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/TextureBackgroundPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/TextureBackgroundQuickPane.java @@ -1,173 +1,173 @@ -package com.fr.design.mainframe.backgroundpane; - -import com.fr.base.GraphHelper; -import com.fr.base.background.TextureBackground; -import com.fr.design.constants.UIConstants; -import com.fr.design.border.UIRoundedBorder; -import com.fr.design.event.UIObserverListener; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.general.Background; -import com.fr.general.ComparatorUtils; -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.geom.Rectangle2D; - -public class TextureBackgroundPane extends BackgroundSettingPane { - - private TexturePaint texturePaint; - private TextureButton[] textureButtonArray; - - public TextureBackgroundPane() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - - JPanel borderPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - borderPane.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 5)); - JPanel contentPane = new JPanel(); - borderPane.add(contentPane, BorderLayout.NORTH); - this.add(borderPane, BorderLayout.NORTH); - contentPane.setLayout(new GridLayout(0, 8, 1, 1)); - contentPane.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8)); - borderPane.setPreferredSize(new Dimension(0, 145)); - ButtonGroup patternButtonGroup = new ButtonGroup(); - textureButtonArray = new TextureButton[EMBED_TEXTURE_PAINT_ARRAY.length]; - for (int i = 0; i < EMBED_TEXTURE_PAINT_ARRAY.length; i++) { - textureButtonArray[i] = new TextureButton(EMBED_TEXTURE_PAINT_ARRAY[i], EMBED_TEXTURE_PAINT_DES_ARRAY[i]); - patternButtonGroup.add(textureButtonArray[i]); - contentPane.add(textureButtonArray[i]); - } - } - - public void populateBean(Background background) { - TextureBackground textureBackground = (TextureBackground) background; - - this.texturePaint = textureBackground.getTexturePaint(); - - - for (int i = 0; i < textureButtonArray.length; i++) { - if (ComparatorUtils.equals(textureButtonArray[i].getTexturePaint(), this.texturePaint)) { - textureButtonArray[i].setSelected(true); - break; - } - } - } - - public Background updateBean() { - if (this.texturePaint == null) { - textureButtonArray[0].doClick(); - } - return new TextureBackground(this.texturePaint); - } - - /** - * 给组件登记一个观察者监听事件 - * - * @param listener 观察者监听事件 - */ - public void registerChangeListener(final UIObserverListener listener) { - for (int i = 0, count = textureButtonArray.length; i < count; i++) { - textureButtonArray[i].addChangeListener(new ChangeListener() { - public void stateChanged(ChangeEvent e) { - listener.doChange(); - } - }); - } - } - - - /** - * Texture type button. - */ - class TextureButton extends JToggleButton implements ActionListener { - - private TexturePaint buttonTexturePaint; - - public TextureButton(TexturePaint buttonTexturePaint, String tooltip) { - this.buttonTexturePaint = buttonTexturePaint; - this.setToolTipText(tooltip); - - this.setCursor(new Cursor(Cursor.HAND_CURSOR)); - this.addActionListener(this); - this.setBorder(null); - } - - public void paintComponent(Graphics g) { - Graphics2D g2d = (Graphics2D) g; - - Dimension d = getSize(); - - g2d.setPaint(this.buttonTexturePaint); - GraphHelper.fill(g2d, new Rectangle2D.Double(0, 0, d.width - 1, d.height - 1)); - - if (ComparatorUtils.equals(texturePaint, this.buttonTexturePaint)) {// it's - // selected. - g2d.setPaint(UIConstants.LINE_COLOR); - } else { - g2d.setPaint(null); - } - GraphHelper.draw(g2d, new Rectangle2D.Double(0, 0, d.width - 1, d.height - 1)); - } - - public Dimension getPreferredSize() { - return new Dimension(super.getPreferredSize().width, 20); - } - - public TexturePaint getTexturePaint() { - return this.buttonTexturePaint; - } - - /** - * set Pattern index. - */ - public void actionPerformed(ActionEvent evt) { - TextureBackgroundPane.this.texturePaint = this.getTexturePaint(); - - fireChagneListener(); - TextureBackgroundPane.this.repaint(); // repaint. - } - - public void addChangeListener(ChangeListener changeListener) { - this.changeListener = changeListener; - } - - private void fireChagneListener() { - if (this.changeListener != null) { - ChangeEvent evt = new ChangeEvent(this); - this.changeListener.stateChanged(evt); - } - } - } - - public static final TexturePaint[] EMBED_TEXTURE_PAINT_ARRAY = new TexturePaint[]{TextureBackground.NEWSPRINT_TEXTURE_PAINT, TextureBackground.RECYCLED_PAPER_TEXTURE_PAINT, - TextureBackground.PARCHMENT_TEXTURE_PAINT, TextureBackground.STATIONERY_TEXTURE_PAINT, TextureBackground.GREEN_MARBLE_TEXTURE_PAINT, - TextureBackground.WHITE_MARBLE_TEXTURE_PAINT, TextureBackground.BROWN_MARBLE_TEXTURE_PAINT, TextureBackground.GRANITE_TEXTURE_PAINT, - TextureBackground.BLUE_TISSUE_PAPER_TEXTURE_PAINT, TextureBackground.PINK_TISSUE_PAPER_TEXTURE_PAINT, TextureBackground.PURPLE_MESH_TEXTURE_PAINT, - TextureBackground.BOUQUET_TEXTURE_PAINT, TextureBackground.PAPYRUS_TEXTURE_PAINT, TextureBackground.CANVAS_TEXTURE_PAINT, TextureBackground.DENIM_TEXTURE_PAINT, - TextureBackground.WOVEN_MAT_TEXTURE_PAINT, TextureBackground.WATER_DROPLETS_TEXTURE_PAINT, TextureBackground.PAPER_BAG_TEXTURE_PAINT, TextureBackground.FISH_FOSSIL_TEXTURE_PAINT, - TextureBackground.SAND_TEXTURE_PAINT, TextureBackground.CORK_TEXTURE_PAINT, TextureBackground.WALNUT_TEXTURE_PAINT, TextureBackground.OAK_TEXTURE_PAINT, - TextureBackground.MEDIUM_WOOD_TEXTURE_PAINT}; - private static final String[] EMBED_TEXTURE_PAINT_DES_ARRAY = new String[]{Inter.getLocText("BackgroundTexture-Newsprint"), Inter.getLocText("BackgroundTexture-RecycledPaper"), - Inter.getLocText("BackgroundTexture-Parchment"), Inter.getLocText("BackgroundTexture-Stationery"), Inter.getLocText("BackgroundTexture-GreenMarble"), - Inter.getLocText("BackgroundTexture-WhiteMarble"), Inter.getLocText("BackgroundTexture-BrownMarble"), Inter.getLocText("BackgroundTexture-Granite"), - Inter.getLocText("BackgroundTexture-BlueTissuePaper"), Inter.getLocText("BackgroundTexture-PinkTissuePaper"), Inter.getLocText("BackgroundTexture-PurpleMesh"), - Inter.getLocText("BackgroundTexture-Bouquet"), Inter.getLocText("BackgroundTexture-Papyrus"), Inter.getLocText("BackgroundTexture-Canvas"), - Inter.getLocText("BackgroundTexture-Denim"), Inter.getLocText("BackgroundTexture-WovenMat"), Inter.getLocText("BackgroundTexture-WaterDroplets"), - Inter.getLocText("BackgroundTexture-PaperBag"), Inter.getLocText("BackgroundTexture-FishFossil"), Inter.getLocText("BackgroundTexture-Sand"), - Inter.getLocText("BackgroundTexture-Cork"), Inter.getLocText("BackgroundTexture-Walnut"), Inter.getLocText("BackgroundTexture-Oak"), - Inter.getLocText("BackgroundTexture-MediumWood")}; - - @Override - public boolean accept(Background background) { - return background instanceof TextureBackground; - } - - @Override - public String title4PopupWindow() { - return Inter.getLocText("Background-Texture"); - } +package com.fr.design.mainframe.backgroundpane; + +import com.fr.base.GraphHelper; +import com.fr.base.background.TextureBackground; +import com.fr.design.constants.UIConstants; +import com.fr.design.border.UIRoundedBorder; +import com.fr.design.event.UIObserverListener; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.general.Background; +import com.fr.general.ComparatorUtils; +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.geom.Rectangle2D; + +public class TextureBackgroundQuickPane extends BackgroundQuickPane { + + private TexturePaint texturePaint; + private TextureButton[] textureButtonArray; + + public TextureBackgroundQuickPane() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + + JPanel borderPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + borderPane.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 5)); + JPanel contentPane = new JPanel(); + borderPane.add(contentPane, BorderLayout.NORTH); + this.add(borderPane, BorderLayout.NORTH); + contentPane.setLayout(new GridLayout(0, 8, 1, 1)); + contentPane.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8)); + borderPane.setPreferredSize(new Dimension(0, 145)); + ButtonGroup patternButtonGroup = new ButtonGroup(); + textureButtonArray = new TextureButton[EMBED_TEXTURE_PAINT_ARRAY.length]; + for (int i = 0; i < EMBED_TEXTURE_PAINT_ARRAY.length; i++) { + textureButtonArray[i] = new TextureButton(EMBED_TEXTURE_PAINT_ARRAY[i], EMBED_TEXTURE_PAINT_DES_ARRAY[i]); + patternButtonGroup.add(textureButtonArray[i]); + contentPane.add(textureButtonArray[i]); + } + } + + public void populateBean(Background background) { + TextureBackground textureBackground = (TextureBackground) background; + + this.texturePaint = textureBackground.getTexturePaint(); + + + for (int i = 0; i < textureButtonArray.length; i++) { + if (ComparatorUtils.equals(textureButtonArray[i].getTexturePaint(), this.texturePaint)) { + textureButtonArray[i].setSelected(true); + break; + } + } + } + + public Background updateBean() { + if (this.texturePaint == null) { + textureButtonArray[0].doClick(); + } + return new TextureBackground(this.texturePaint); + } + + /** + * 给组件登记一个观察者监听事件 + * + * @param listener 观察者监听事件 + */ + public void registerChangeListener(final UIObserverListener listener) { + for (int i = 0, count = textureButtonArray.length; i < count; i++) { + textureButtonArray[i].addChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + listener.doChange(); + } + }); + } + } + + + /** + * Texture type button. + */ + class TextureButton extends JToggleButton implements ActionListener { + + private TexturePaint buttonTexturePaint; + + public TextureButton(TexturePaint buttonTexturePaint, String tooltip) { + this.buttonTexturePaint = buttonTexturePaint; + this.setToolTipText(tooltip); + + this.setCursor(new Cursor(Cursor.HAND_CURSOR)); + this.addActionListener(this); + this.setBorder(null); + } + + public void paintComponent(Graphics g) { + Graphics2D g2d = (Graphics2D) g; + + Dimension d = getSize(); + + g2d.setPaint(this.buttonTexturePaint); + GraphHelper.fill(g2d, new Rectangle2D.Double(0, 0, d.width - 1, d.height - 1)); + + if (ComparatorUtils.equals(texturePaint, this.buttonTexturePaint)) {// it's + // selected. + g2d.setPaint(UIConstants.LINE_COLOR); + } else { + g2d.setPaint(null); + } + GraphHelper.draw(g2d, new Rectangle2D.Double(0, 0, d.width - 1, d.height - 1)); + } + + public Dimension getPreferredSize() { + return new Dimension(super.getPreferredSize().width, 20); + } + + public TexturePaint getTexturePaint() { + return this.buttonTexturePaint; + } + + /** + * set Pattern setIndex. + */ + public void actionPerformed(ActionEvent evt) { + TextureBackgroundQuickPane.this.texturePaint = this.getTexturePaint(); + + fireChagneListener(); + TextureBackgroundQuickPane.this.repaint(); // repaint. + } + + public void addChangeListener(ChangeListener changeListener) { + this.changeListener = changeListener; + } + + private void fireChagneListener() { + if (this.changeListener != null) { + ChangeEvent evt = new ChangeEvent(this); + this.changeListener.stateChanged(evt); + } + } + } + + public static final TexturePaint[] EMBED_TEXTURE_PAINT_ARRAY = new TexturePaint[]{TextureBackground.NEWSPRINT_TEXTURE_PAINT, TextureBackground.RECYCLED_PAPER_TEXTURE_PAINT, + TextureBackground.PARCHMENT_TEXTURE_PAINT, TextureBackground.STATIONERY_TEXTURE_PAINT, TextureBackground.GREEN_MARBLE_TEXTURE_PAINT, + TextureBackground.WHITE_MARBLE_TEXTURE_PAINT, TextureBackground.BROWN_MARBLE_TEXTURE_PAINT, TextureBackground.GRANITE_TEXTURE_PAINT, + TextureBackground.BLUE_TISSUE_PAPER_TEXTURE_PAINT, TextureBackground.PINK_TISSUE_PAPER_TEXTURE_PAINT, TextureBackground.PURPLE_MESH_TEXTURE_PAINT, + TextureBackground.BOUQUET_TEXTURE_PAINT, TextureBackground.PAPYRUS_TEXTURE_PAINT, TextureBackground.CANVAS_TEXTURE_PAINT, TextureBackground.DENIM_TEXTURE_PAINT, + TextureBackground.WOVEN_MAT_TEXTURE_PAINT, TextureBackground.WATER_DROPLETS_TEXTURE_PAINT, TextureBackground.PAPER_BAG_TEXTURE_PAINT, TextureBackground.FISH_FOSSIL_TEXTURE_PAINT, + TextureBackground.SAND_TEXTURE_PAINT, TextureBackground.CORK_TEXTURE_PAINT, TextureBackground.WALNUT_TEXTURE_PAINT, TextureBackground.OAK_TEXTURE_PAINT, + TextureBackground.MEDIUM_WOOD_TEXTURE_PAINT}; + private static final String[] EMBED_TEXTURE_PAINT_DES_ARRAY = new String[]{Inter.getLocText("BackgroundTexture-Newsprint"), Inter.getLocText("BackgroundTexture-RecycledPaper"), + Inter.getLocText("BackgroundTexture-Parchment"), Inter.getLocText("BackgroundTexture-Stationery"), Inter.getLocText("BackgroundTexture-GreenMarble"), + Inter.getLocText("BackgroundTexture-WhiteMarble"), Inter.getLocText("BackgroundTexture-BrownMarble"), Inter.getLocText("BackgroundTexture-Granite"), + Inter.getLocText("BackgroundTexture-BlueTissuePaper"), Inter.getLocText("BackgroundTexture-PinkTissuePaper"), Inter.getLocText("BackgroundTexture-PurpleMesh"), + Inter.getLocText("BackgroundTexture-Bouquet"), Inter.getLocText("BackgroundTexture-Papyrus"), Inter.getLocText("BackgroundTexture-Canvas"), + Inter.getLocText("BackgroundTexture-Denim"), Inter.getLocText("BackgroundTexture-WovenMat"), Inter.getLocText("BackgroundTexture-WaterDroplets"), + Inter.getLocText("BackgroundTexture-PaperBag"), Inter.getLocText("BackgroundTexture-FishFossil"), Inter.getLocText("BackgroundTexture-Sand"), + Inter.getLocText("BackgroundTexture-Cork"), Inter.getLocText("BackgroundTexture-Walnut"), Inter.getLocText("BackgroundTexture-Oak"), + Inter.getLocText("BackgroundTexture-MediumWood")}; + + @Override + public boolean accept(Background background) { + return background instanceof TextureBackground; + } + + @Override + public String title4PopupWindow() { + return Inter.getLocText("Background-Texture"); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/style/AbstractPopBox.java b/designer_base/src/com/fr/design/style/AbstractPopBox.java index a9001b6b59..4630c51ae7 100644 --- a/designer_base/src/com/fr/design/style/AbstractPopBox.java +++ b/designer_base/src/com/fr/design/style/AbstractPopBox.java @@ -2,7 +2,7 @@ package com.fr.design.style; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.style.background.BackgroundJComponent; -import com.fr.design.style.background.gradient.GradientPane; +import com.fr.design.style.background.gradient.GradientBackgroundPane; import com.fr.general.Background; import javax.swing.*; @@ -96,8 +96,8 @@ public abstract class AbstractPopBox extends JPanel { mouseClick(evt); } }; - if (!this.isWindowEventInit && SwingUtilities.getAncestorOfClass(GradientPane.class, this) != null) { - SwingUtilities.getAncestorOfClass(GradientPane.class, this).addMouseListener(parentMouseListener); + if (!this.isWindowEventInit && SwingUtilities.getAncestorOfClass(GradientBackgroundPane.class, this) != null) { + SwingUtilities.getAncestorOfClass(GradientBackgroundPane.class, this).addMouseListener(parentMouseListener); this.isWindowEventInit = true; } } diff --git a/designer_base/src/com/fr/design/style/background/BackgroundDetailPane.java b/designer_base/src/com/fr/design/style/background/BackgroundDetailPane.java new file mode 100644 index 0000000000..694f2c8c17 --- /dev/null +++ b/designer_base/src/com/fr/design/style/background/BackgroundDetailPane.java @@ -0,0 +1,18 @@ +package com.fr.design.style.background; + +import com.fr.general.Background; + +import javax.swing.*; +import javax.swing.event.ChangeListener; + +/** + * Created by richie on 16/5/18. + */ +public abstract class BackgroundDetailPane extends JPanel { + + public abstract void populate(Background background); + + public abstract Background update() throws Exception; + + public abstract void addChangeListener(ChangeListener changeListener); +} diff --git a/designer_base/src/com/fr/design/style/background/BackgroundFactory.java b/designer_base/src/com/fr/design/style/background/BackgroundFactory.java new file mode 100644 index 0000000000..c41639c8a2 --- /dev/null +++ b/designer_base/src/com/fr/design/style/background/BackgroundFactory.java @@ -0,0 +1,121 @@ +package com.fr.design.style.background; + + +import com.fr.base.background.*; +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.fun.BackgroundUIProvider; +import com.fr.design.style.background.gradient.GradientBackgroundPane; +import com.fr.design.style.background.impl.*; +import com.fr.general.Background; +import com.fr.general.Inter; + +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +/** + * Created by richie on 16/5/18. + */ +public class BackgroundFactory { + + private static Map, BackgroundUIWrapper> map = new HashMap<>(); + private static Map, BackgroundUIWrapper> browser = new HashMap<>(); + + static { + registerUniversal(map); + registerImageBackground(map); + registerUniversal(browser); + registerBrowserImageBackground(browser); + registerExtra(map); + registerExtra(browser); + } + + private static void registerUniversal(Map, BackgroundUIWrapper> map) { + map.put(null, BackgroundUIWrapper.create() + .setType(NullBackgroundPane.class).setTitle(Inter.getLocText("Background-Null"))); + map.put(ColorBackground.class, BackgroundUIWrapper.create() + .setType(ColorBackgroundPane.class).setTitle(Inter.getLocText("Color"))); + map.put(TextureBackground.class, BackgroundUIWrapper.create() + .setType(TextureBackgroundPane.class).setTitle(Inter.getLocText("Background-Texture"))); + map.put(PatternBackground.class, BackgroundUIWrapper.create() + .setType(PatternBackgroundPane.class).setTitle(Inter.getLocText("Background-Pattern"))); + map.put(GradientBackground.class, BackgroundUIWrapper.create() + .setType(GradientBackgroundPane.class).setTitle(Inter.getLocText("Gradient-Color"))); + } + + private static void registerImageBackground(Map, BackgroundUIWrapper> map) { + map.put(ImageBackground.class, BackgroundUIWrapper.create() + .setType(ImageBackgroundPane.class).setTitle(Inter.getLocText("Image"))); + } + + private static void registerBrowserImageBackground(Map, BackgroundUIWrapper> map) { + map.put(ImageBackground.class, BackgroundUIWrapper.create() + .setType(ImageBackgroundPane4Browser.class).setTitle(Inter.getLocText("Image"))); + } + + private static void registerExtra(Map, BackgroundUIWrapper> map) { + for (BackgroundUIProvider provider : ExtraDesignClassManager.getInstance().getBackgroundUIProviders()) { + map.put(provider.targetClass(), BackgroundUIWrapper.create() + .setType(provider.targetUIClass()).setTitle(provider.targetTitle())); + } + } + + + public static Set> kindsOfKey() { + return map.keySet(); + } + + public static BackgroundUIWrapper getWrapper(Class category) { + return map.get(category); + } + + public static BackgroundDetailPane createIfAbsent(Class category) { + BackgroundUIWrapper wrapper = map.get(category); + return createByWrapper(wrapper); + } + + public static BackgroundDetailPane createIfAbsent(int index) { + for (BackgroundUIWrapper wrapper : map.values()) { + if (wrapper.getIndex() == index) { + return createByWrapper(wrapper); + } + } + return new NullBackgroundPane(); + } + + public static Set> browserKindsOfKey() { + return browser.keySet(); + } + + public static BackgroundUIWrapper getBrosweWrapper(Class category) { + return browser.get(category); + } + + public static BackgroundDetailPane createBrowserIfAbsent(Class category) { + BackgroundUIWrapper wrapper = browser.get(category); + return createByWrapper(wrapper); + } + + public static BackgroundDetailPane createBrowerIfAbsent(int index) { + for (BackgroundUIWrapper wrapper : browser.values()) { + if (wrapper.getIndex() == index) { + return createByWrapper(wrapper); + } + } + return new NullBackgroundPane(); + } + + private static BackgroundDetailPane createByWrapper(BackgroundUIWrapper wrapper) { + Class clazz = wrapper.getType(); + if (clazz == null) { + clazz = NullBackgroundPane.class; + } + BackgroundDetailPane quickPane; + try { + quickPane = clazz.newInstance(); + } catch (Exception e) { + quickPane = new NullBackgroundPane(); + } + return quickPane; + } +} diff --git a/designer_base/src/com/fr/design/style/background/BackgroundPane.java b/designer_base/src/com/fr/design/style/background/BackgroundPane.java index 679a9a4a15..6a9c3d70f8 100644 --- a/designer_base/src/com/fr/design/style/background/BackgroundPane.java +++ b/designer_base/src/com/fr/design/style/background/BackgroundPane.java @@ -4,87 +4,32 @@ package com.fr.design.style.background; import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.Cursor; import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.GridLayout; -import java.awt.Image; -import java.awt.LayoutManager; -import java.awt.TexturePaint; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.geom.Rectangle2D; -import java.io.File; - -import javax.swing.BorderFactory; -import javax.swing.Box; -import javax.swing.ButtonGroup; -import javax.swing.JFileChooser; +import java.util.HashMap; +import java.util.Map; import com.fr.design.gui.frpane.UITabbedPane; -import com.fr.design.gui.ibutton.UIRadioButton; -import com.fr.design.gui.ilable.UILabel; -import javax.swing.JPanel; -import javax.swing.JRadioButton; -import javax.swing.JScrollPane; -import javax.swing.JToggleButton; -import javax.swing.SwingConstants; + import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.EventListenerList; -import com.fr.base.BaseUtils; -import com.fr.base.FRContext; -import com.fr.base.GraphHelper; -import com.fr.base.Style; -import com.fr.base.background.ColorBackground; -import com.fr.base.background.GradientBackground; -import com.fr.base.background.ImageBackground; -import com.fr.base.background.PatternBackground; -import com.fr.base.background.TextureBackground; -import com.fr.design.gui.ibutton.UIButton; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.dialog.BasicPane; import com.fr.general.Background; -import com.fr.general.ComparatorUtils; +import com.fr.general.FRLogger; import com.fr.general.Inter; -import com.fr.stable.Constants; -import com.fr.stable.CoreGraphHelper; -import com.fr.design.style.background.gradient.GradientPane; -import com.fr.design.style.background.image.ImageFileChooser; -import com.fr.design.style.background.image.ImagePreviewPane; -import com.fr.design.style.color.ColorSelectBox; -import com.fr.design.style.color.DetailColorSelectPane; -import com.fr.design.utils.gui.GUICoreUtils; public class BackgroundPane extends BasicPane { - private static final int BACKGROUND_NULL = 0; - private static final int BACKGROUND_COLOR = 1; - private static final int BACKGROUND_TEXTURE = 2; - private static final int BACKGROUND_PATTERN = 3; - private static final int BACKGROUND_IMAGE = 4; - private static final int BACKGROUND_GRADIENT_COLOR = 5; - private UITabbedPane tabbedPane = null; - private NullBackgroundPane nullBackgroundPane = null; - private ColorBackgroundPane colorBackgroundPane = null; - private TextureBackgroundPane textureBackgroundPane = null; - private PatternBackgroundPane patternBackgroundPane = null; - private ImageBackgroundPane imageBackgroundPane = null; - private GradientPane gradientPane = null; + protected UITabbedPane tabbedPane = null; + private EventListenerList eventChangeList = new EventListenerList(); - private static boolean isBrowserBackgroundPane; + protected Map cacheMap = new HashMap<>(); - public BackgroundPane(){ - this(false); - } //需求说: 如果是浏览器背景, 隐藏掉几个button - public BackgroundPane(boolean isBrowserBackgroundPane) { - BackgroundPane.isBrowserBackgroundPane = isBrowserBackgroundPane; + public BackgroundPane() { this.initComponents(); this.setPreferredSize(new Dimension(400, 300)); } @@ -103,16 +48,21 @@ public class BackgroundPane extends BasicPane { tabbedPane = new UITabbedPane(); this.add(tabbedPane, BorderLayout.CENTER); - tabbedPane.addTab(Inter.getLocText("Background-Null"), FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane()); - tabbedPane.addTab(Inter.getLocText("Color"), FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane()); - tabbedPane.addTab(Inter.getLocText("Background-Texture"),FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane()); - tabbedPane.addTab(Inter.getLocText("Background-Pattern"), FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane()); - tabbedPane.addTab(Inter.getLocText("Image"), FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane()); - tabbedPane.addTab(Inter.getLocText("Gradient-Color"), FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane()); + initTabPane(); + tabbedPane.addChangeListener(backgroundChangeListener); tabbedPane.setPreferredSize(new Dimension(200, 210)); } + protected void initTabPane() { + int index = 0; + for (Class key : BackgroundFactory.kindsOfKey()) { + BackgroundUIWrapper wrapper = BackgroundFactory.getWrapper(key); + wrapper.setIndex(index++); + tabbedPane.addTab(Inter.getLocText(wrapper.getTitle()), FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane()); + } + } + public void addChangeListener(ChangeListener changeListener) { eventChangeList.add(ChangeListener.class, changeListener); } @@ -138,86 +88,39 @@ public class BackgroundPane extends BasicPane { return Inter.getLocText("Background"); } - private NullBackgroundPane getNullBackgroundPane() { - if (this.nullBackgroundPane == null) { - this.nullBackgroundPane = new NullBackgroundPane(); - nullBackgroundPane.addChangeListener(backgroundChangeListener); - } - return this.nullBackgroundPane; - } - private ColorBackgroundPane getColorBackgroundPane() { - if (this.colorBackgroundPane == null) { - this.colorBackgroundPane = new ColorBackgroundPane(); - colorBackgroundPane.addChangeListener(backgroundChangeListener); + protected BackgroundDetailPane getTabItemPane(Background background, int index) { + BackgroundDetailPane quickPane = cacheMap.get(index); + if (quickPane == null) { + quickPane = BackgroundFactory.createIfAbsent(background == null ? null : background.getClass()); + quickPane.addChangeListener(backgroundChangeListener); + cacheMap.put(index, quickPane); } - return this.colorBackgroundPane; + tabbedPane.setComponentAt(index, quickPane); + tabbedPane.setSelectedIndex(index); + return quickPane; } - private TextureBackgroundPane getTextureBackgroundPane() { - if (this.textureBackgroundPane == null) { - this.textureBackgroundPane = new TextureBackgroundPane(); - textureBackgroundPane.addChangeListener(backgroundChangeListener); + protected BackgroundDetailPane getTabItemPaneByIndex(int index) { + BackgroundDetailPane quickPane = cacheMap.get(index); + if (quickPane == null) { + quickPane = BackgroundFactory.createIfAbsent(index); + tabbedPane.setComponentAt(index, quickPane); + cacheMap.put(index, quickPane); + quickPane.addChangeListener(backgroundChangeListener); } - return this.textureBackgroundPane; + return quickPane; } - private PatternBackgroundPane getPatternBackgroundPane() { - if (this.patternBackgroundPane == null) { - this.patternBackgroundPane = new PatternBackgroundPane(); - patternBackgroundPane.addChangeListener(backgroundChangeListener); - } - return this.patternBackgroundPane; - } - - private ImageBackgroundPane getImageBackgroundPane() { - if (this.imageBackgroundPane == null) { - this.imageBackgroundPane = new ImageBackgroundPane(); - imageBackgroundPane.addChangeListener(backgroundChangeListener); - } - return this.imageBackgroundPane; - } - - private GradientPane getGradientPane() { - if (this.gradientPane == null) { - this.gradientPane = new GradientPane(); - gradientPane.addChangeListener(backgroundChangeListener); - } - - return this.gradientPane; - } /** * Populate background. */ public void populate(Background background) { - if (background == null) { - tabbedPane.setComponentAt(0, this.getNullBackgroundPane()); - tabbedPane.setSelectedIndex(0); - nullBackgroundPane.populate(background); - } else { - if (background instanceof ColorBackground) { - tabbedPane.setComponentAt(1, this.getColorBackgroundPane()); - tabbedPane.setSelectedIndex(1); - colorBackgroundPane.populate(background); - } else if (background instanceof TextureBackground) { - tabbedPane.setComponentAt(2, this.getTextureBackgroundPane()); - tabbedPane.setSelectedIndex(2); - textureBackgroundPane.populate(background); - } else if (background instanceof PatternBackground) { - tabbedPane.setComponentAt(3, this.getPatternBackgroundPane()); - tabbedPane.setSelectedIndex(3); - patternBackgroundPane.populate(background); - } else if (background instanceof ImageBackground) { - tabbedPane.setComponentAt(4, this.getImageBackgroundPane()); - tabbedPane.setSelectedIndex(4); - imageBackgroundPane.populate(background); - } else if (background instanceof GradientBackground) { - tabbedPane.setComponentAt(5, this.getGradientPane()); - tabbedPane.setSelectedIndex(5); - gradientPane.populate(background); - } - } + BackgroundUIWrapper wrapper = BackgroundFactory.getWrapper(background == null ? null : background.getClass()); + int index = wrapper.getIndex(); + BackgroundDetailPane quickPane = getTabItemPane(background, index); + quickPane.populate(background); tabbedPane.doLayout(); tabbedPane.validate(); @@ -227,42 +130,19 @@ public class BackgroundPane extends BasicPane { * Update background. */ public Background update() { + int index = tabbedPane.getSelectedIndex(); + BackgroundDetailPane quickPane = getTabItemPaneByIndex(index); try { - Component selectComponent = tabbedPane.getSelectedComponent(); - if (selectComponent.getClass() == JPanel.class) {//需要初始化. - int selectedIndex = tabbedPane.getSelectedIndex(); - if (selectedIndex == BACKGROUND_NULL) { - selectComponent = this.getNullBackgroundPane(); - } else if (selectedIndex == BACKGROUND_COLOR) { - selectComponent = this.getColorBackgroundPane(); - } else if (selectedIndex == BACKGROUND_TEXTURE) { - selectComponent = this.getTextureBackgroundPane(); - } else if (selectedIndex == BACKGROUND_PATTERN) { - selectComponent = this.getPatternBackgroundPane(); - } else if (selectedIndex == BACKGROUND_IMAGE) { - selectComponent = this.getImageBackgroundPane(); - } else if (selectedIndex == BACKGROUND_GRADIENT_COLOR) { - selectComponent = this.getGradientPane(); - } - - tabbedPane.setComponentAt(selectedIndex, selectComponent); - } - - if (selectComponent instanceof BackgroundSettingPane) { - return ((BackgroundSettingPane) selectComponent).update(); - } else if (selectComponent instanceof GradientPane) { - return ((GradientPane) selectComponent).update(); - } + return quickPane.update(); } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); + FRLogger.getLogger().error(e.getMessage(), e); } - return null; } /** * Change listener. */ - private ChangeListener backgroundChangeListener = new ChangeListener() { + protected ChangeListener backgroundChangeListener = new ChangeListener() { public void stateChanged(ChangeEvent evt) { previewPane.setBackgroundObject(update()); @@ -271,687 +151,4 @@ public class BackgroundPane extends BasicPane { }; private BackgroundPreviewLabel previewPane = null; - public static abstract class BackgroundSettingPane extends JPanel { - - public abstract void populate(Background background); - - public abstract Background update() throws Exception; - - public abstract void addChangeListener(ChangeListener changeListener); - } - - /** - * Null background pane. - */ - private static class NullBackgroundPane extends BackgroundSettingPane { - - public NullBackgroundPane() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - - UILabel centerLabel = new UILabel( - Inter.getLocText("Background-Background_is_NULL") + "..."); - this.add(centerLabel); - centerLabel.setHorizontalAlignment(SwingConstants.CENTER); - centerLabel.setBorder(BorderFactory.createLineBorder(GUICoreUtils.getTitleLineBorderColor())); - } - - public void populate(Background background) { - // do nothing. - } - - public Background update() throws Exception { - return null; - } - - public void addChangeListener(ChangeListener changeListener) { - // do nothing. - } - } - - /** - * Color background pane. - */ - private static class ColorBackgroundPane extends BackgroundSettingPane { - - private DetailColorSelectPane detailColorSelectPane; - - public ColorBackgroundPane() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - - detailColorSelectPane = new DetailColorSelectPane(); - this.add(detailColorSelectPane, BorderLayout.CENTER); - } - - public void populate(Background background) { - if (background instanceof ColorBackground) { - ColorBackground colorBackgroud = (ColorBackground) background; - this.detailColorSelectPane.populate(colorBackgroud.getColor()); - } else { - this.detailColorSelectPane.populate(Color.white); - } - } - - public Background update() throws Exception { - return ColorBackground.getInstance(this.detailColorSelectPane.update()); - } - - public void addChangeListener(ChangeListener changeListener) { - detailColorSelectPane.addChangeListener(changeListener); - } - } - - private static abstract class BPane extends BackgroundSettingPane { - BPane(int nColumn) { - this.initComponents(nColumn); - } - - private void initComponents(int nColumn) { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - this.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); - - JPanel contentPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); - this.add(contentPane, BorderLayout.NORTH); -// contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS)); - - // type type. - - JPanel typePane=FRGUIPaneFactory.createTitledBorderPane(titleOfTypePane()); - contentPane.add(typePane); - JPanel typePane2 = new JPanel(); - typePane.add(typePane2); - typePane2.setLayout(layoutOfTypePane(nColumn)); - setChildrenOfTypePane(typePane2); - - setChildrenOfContentPane(contentPane); - } - - protected abstract String titleOfTypePane(); - protected abstract LayoutManager layoutOfTypePane(int nColumn); - protected abstract void setChildrenOfTypePane(JPanel typePane2); - protected void setChildrenOfContentPane(JPanel contentPane) {} - } - - /** - * Texture background pane. TODO kunsnat: 拆出去. 真特么的长.. - */ - public static class TextureBackgroundPane extends BPane { - - private TexturePaint texturePaint; - private TextureButton[] textureButtonArray; - - public TextureBackgroundPane() { - super(8);// 默认的. - } - - public TextureBackgroundPane(int colum) { - super(colum);// 自定义的. - } - - protected LayoutManager layoutOfTypePane(int nColumn) { - return FRGUIPaneFactory.createNColumnGridLayout(nColumn); - } - - protected String titleOfTypePane() { - return Inter.getLocText("Background-Texture"); - } - protected void setChildrenOfTypePane(JPanel typePane2) { - ButtonGroup patternButtonGroup = new ButtonGroup(); - textureButtonArray = new TextureButton[EMBED_TEXTURE_PAINT_ARRAY.length]; - for (int i = 0; i < EMBED_TEXTURE_PAINT_ARRAY.length; i++) { - textureButtonArray[i] = new TextureButton( - EMBED_TEXTURE_PAINT_ARRAY[i], EMBED_TEXTURE_PAINT_DES_ARRAY[i]); - patternButtonGroup.add(textureButtonArray[i]); - typePane2.add(textureButtonArray[i]); - } - } - - public void populate(Background background) { - if (background instanceof TextureBackground) { - TextureBackground textureBackground = (TextureBackground) background; - - this.texturePaint = textureBackground.getTexturePaint(); - - for (int i = 0; i < textureButtonArray.length; i++) { - if (ComparatorUtils.equals(textureButtonArray[i].getTexturePaint(), this.texturePaint)) { - textureButtonArray[i].setSelected(true); - break; - } - } - } else { - this.textureButtonArray[0].setSelected(true); - this.texturePaint = textureButtonArray[0].getTexturePaint(); - } - } - - public Background update() throws Exception { - return new TextureBackground(this.texturePaint); - } - - public void addChangeListener(ChangeListener changeListener) { - for (int i = 0; i < this.textureButtonArray.length; i++) { - this.textureButtonArray[i].addChangeListener(changeListener); - } - } - - /** - * Texture type button. - */ - class TextureButton extends JToggleButton implements ActionListener { - - private TexturePaint buttonTexturePaint; - - public TextureButton(TexturePaint buttonTexturePaint, String tooltip) { - this.buttonTexturePaint = buttonTexturePaint; - this.setToolTipText(tooltip); - - this.setCursor(new Cursor(Cursor.HAND_CURSOR)); - this.addActionListener(this); - this.setBorder(null); - } - - public void paintComponent(Graphics g) { - Graphics2D g2d = (Graphics2D) g; - - Dimension d = getSize(); - - g2d.setPaint(this.buttonTexturePaint); - GraphHelper.fill(g2d, new Rectangle2D.Double(0, 0, d.width - 1, - d.height - 1)); - - if (ComparatorUtils.equals(texturePaint, this.buttonTexturePaint)) {// it's - // selected. - g2d.setPaint(Color.black); - } else { - g2d.setPaint(Color.gray); - } - GraphHelper.draw(g2d, new Rectangle2D.Double(0, 0, d.width - 1, - d.height - 1)); - } - - public Dimension getPreferredSize() { - return new Dimension(36, 32); - } - - public TexturePaint getTexturePaint() { - return this.buttonTexturePaint; - } - - /** - * set Pattern index. - */ - public void actionPerformed(ActionEvent evt) { - TextureBackgroundPane.this.texturePaint = this.getTexturePaint(); - - fireChagneListener(); - TextureBackgroundPane.this.repaint(); // repaint. - } - - public void addChangeListener(ChangeListener changeListener) { - this.changeListener = changeListener; - } - - private void fireChagneListener() { - if (this.changeListener != null) { - ChangeEvent evt = new ChangeEvent(this); - this.changeListener.stateChanged(evt); - } - } - } - } - - public static class PatternBackgroundPaneNoFore extends PatternBackgroundPane { - - public PatternBackgroundPaneNoFore(int nColumn) { - super(nColumn); - } - - // 重载 不加载两个前后按钮 - protected void setChildrenOfContentPane(JPanel contentPane) { - foregroundColorPane = new ColorSelectBox(80); - backgroundColorPane = new ColorSelectBox(80); - foregroundColorPane.setSelectObject(Color.lightGray); - backgroundColorPane.setSelectObject(Color.black); - } - } - - /** - * Pattern background pane. - */ - public static class PatternBackgroundPane extends BPane { - - private int patternIndex = 0; // pattern index. - protected ColorSelectBox foregroundColorPane; - protected ColorSelectBox backgroundColorPane; - private PatternButton[] patternButtonArray; - - public PatternBackgroundPane() { - super(12); - - foregroundColorPane.addSelectChangeListener(colorChangeListener); - backgroundColorPane.addSelectChangeListener(colorChangeListener); - } - - public PatternBackgroundPane(int nColumn) { - super(nColumn); - - if(foregroundColorPane != null) { - foregroundColorPane.addSelectChangeListener(colorChangeListener); - } - if(backgroundColorPane != null) { - backgroundColorPane.addSelectChangeListener(colorChangeListener); - } - } - - protected String titleOfTypePane() { - return Inter.getLocText("Background-Pattern"); - } - protected LayoutManager layoutOfTypePane(int nColumn) { - return FRGUIPaneFactory.createNColumnGridLayout(nColumn); - } - - protected void setChildrenOfTypePane(JPanel typePane2) { - ButtonGroup patternButtonGroup = new ButtonGroup(); - patternButtonArray = new PatternButton[PatternBackground.PATTERN_COUNT]; - for (int i = 0; i < PatternBackground.PATTERN_COUNT; i++) { - patternButtonArray[i] = new PatternButton(i); - patternButtonGroup.add(patternButtonArray[i]); - typePane2.add(patternButtonArray[i]); - } - } - - protected void setChildrenOfContentPane(JPanel contentPane) { - // colors - JPanel colorPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("Colors")); - contentPane.add(colorPane); - - foregroundColorPane = new ColorSelectBox(80); - backgroundColorPane = new ColorSelectBox(80); - foregroundColorPane.setSelectObject(Color.lightGray); - backgroundColorPane.setSelectObject(Color.black); - - colorPane.add(Box.createHorizontalStrut(2)); - colorPane.add(this.createLabelColorPane(Inter.getLocText("Foreground") - + ":", foregroundColorPane)); - - colorPane.add(Box.createHorizontalStrut(8)); - - colorPane.add(this.createLabelColorPane(Inter.getLocText("Background") - + ":", backgroundColorPane)); - } - - private JPanel createLabelColorPane(String text, - ColorSelectBox colorPane) { - JPanel labelColorPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - labelColorPane.add(new UILabel(text)); - labelColorPane.add(colorPane); - - return labelColorPane; - } - - public void populate(Background background) { - if (background != null && background instanceof PatternBackground) { - PatternBackground patternBackground = (PatternBackground) background; - int patternIndex = patternBackground.getPatternIndex(); - - if (patternIndex >= 0 - && patternIndex < this.patternButtonArray.length) { - this.patternButtonArray[patternIndex].setSelected(true); - this.patternIndex = patternIndex; - } else { - this.patternIndex = 0; - } - - foregroundColorPane.setSelectObject(patternBackground.getForeground()); - backgroundColorPane.setSelectObject(patternBackground.getBackground()); - } else { - patternIndex = 0; - this.patternButtonArray[0].setSelected(true); - - foregroundColorPane.setSelectObject(Color.lightGray); - backgroundColorPane.setSelectObject(Color.black); - } - } - - public Background update() throws Exception { - return new PatternBackground(patternIndex, foregroundColorPane.getSelectObject(), backgroundColorPane.getSelectObject()); - } - - public void addChangeListener(ChangeListener changeListener) { - foregroundColorPane.addSelectChangeListener(changeListener); - backgroundColorPane.addSelectChangeListener(changeListener); - - for (int i = 0; i < this.patternButtonArray.length; i++) { - this.patternButtonArray[i].addChangeListener(changeListener); - } - } - // Foreground or Background changed. - ChangeListener colorChangeListener = new ChangeListener() { - - public void stateChanged(ChangeEvent e) { - for (int i = 0; i < patternButtonArray.length; i++) { - patternButtonArray[i].setPatternForeground(foregroundColorPane.getSelectObject()); - patternButtonArray[i].setPatternBackground(backgroundColorPane.getSelectObject()); - } - - PatternBackgroundPane.this.repaint();// repaint - } - }; - - /** - * Pattern type button. - */ - class PatternButton extends JToggleButton implements ActionListener { - - public PatternButton(int pIndex) { - this.pIndex = pIndex; - this.addActionListener(this); - - this.setCursor(new Cursor(Cursor.HAND_CURSOR)); - this.setBorder(null); - this.patternBackground = new PatternBackground(this.pIndex, - Color.lightGray, Color.black); - } - - public void paintComponent(Graphics g) { - Graphics2D g2d = (Graphics2D) g; - - Dimension d = getSize(); - this.patternBackground.paint(g2d, new Rectangle2D.Double(0, 0, - d.width - 1, d.height - 1)); - - if (this.pIndex == patternIndex) {// it's selected. - g2d.setPaint(new Color(255, 51, 0)); - } else { - g2d.setPaint(Color.gray); - } - GraphHelper.draw(g2d, new Rectangle2D.Double(0, 0, d.width - 1, - d.height - 1)); - } - - public Dimension getPreferredSize() { - return new Dimension(24, 24); - } - - public void setPatternForeground(Color foreground) { - this.patternBackground.setForeground(foreground); - } - - public void setPatternBackground(Color background) { - this.patternBackground.setBackground(background); - } - - /** - * set Pattern index. - */ - public void actionPerformed(ActionEvent evt) { - PatternBackgroundPane.this.patternIndex = pIndex; - - fireChagneListener(); - PatternBackgroundPane.this.repaint();// repaint - } - - public void addChangeListener(ChangeListener changeListener) { - this.changeListener = changeListener; - } - - private void fireChagneListener() { - if (this.changeListener != null) { - ChangeEvent evt = new ChangeEvent(this); - this.changeListener.stateChanged(evt); - } - } - private int pIndex = 0; - private PatternBackground patternBackground; - } - } - - /** - * Image background pane. - */ - private static class ImageBackgroundPane extends BackgroundSettingPane { - - private ImagePreviewPane previewPane = null; - private Style imageStyle = null; - private ChangeListener changeListener = null; - private ImageFileChooser imageFileChooser = null; - private UILabel imageSizeLabel = new UILabel(); - - private JRadioButton defaultRadioButton = null; - private JRadioButton tiledRadioButton = null; - private JRadioButton extendRadioButton = null; - private JRadioButton adjustRadioButton = null; - - public ImageBackgroundPane() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - - // preview pane - JPanel previewContainerPane = FRGUIPaneFactory.createBorderLayout_L_Pane(); - this.add(previewContainerPane, BorderLayout.CENTER); - - JPanel previewOwnerPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("Preview")); - previewOwnerPane.setLayout(new BorderLayout()); - previewContainerPane.add(previewOwnerPane, BorderLayout.CENTER); - - - previewPane = new ImagePreviewPane(); - previewOwnerPane.add(new JScrollPane(previewPane)); - previewPane.addChangeListener(imageSizeChangeListener); - - JPanel selectFilePane = FRGUIPaneFactory.createBorderLayout_L_Pane(); - previewContainerPane.add(selectFilePane, BorderLayout.EAST); - selectFilePane.setBorder(BorderFactory.createEmptyBorder(8, 2, 4, 0)); - - UIButton selectPictureButton = new UIButton( - Inter.getLocText("Image-Select_Picture")); - selectFilePane.add(selectPictureButton, BorderLayout.NORTH); - selectPictureButton.setMnemonic('S'); - selectPictureButton.addActionListener(selectPictureActionListener); - JPanel layoutPane=FRGUIPaneFactory.createMediumHGapHighTopFlowInnerContainer_M_Pane(); - selectFilePane.add(layoutPane, BorderLayout.CENTER); - - //布局 - defaultRadioButton = new UIRadioButton(Inter.getLocText("Default")); - tiledRadioButton = new UIRadioButton(Inter.getLocText("Image-Titled")); - extendRadioButton = new UIRadioButton(Inter.getLocText("Image-Extend")); - adjustRadioButton = new UIRadioButton(Inter.getLocText("Image-Adjust")); - - defaultRadioButton.addActionListener(layoutActionListener); - tiledRadioButton.addActionListener(layoutActionListener); - extendRadioButton.addActionListener(layoutActionListener); - adjustRadioButton.addActionListener(layoutActionListener); - - JPanel jp = new JPanel(new GridLayout(4, 1, 15, 15)); - jp.add(defaultRadioButton); - jp.add(tiledRadioButton); - if(!isBrowserBackgroundPane){ - jp.add(extendRadioButton); - jp.add(adjustRadioButton); - } - layoutPane.add(jp); - - ButtonGroup layoutBG = new ButtonGroup(); - layoutBG.add(defaultRadioButton); - layoutBG.add(tiledRadioButton); - layoutBG.add(extendRadioButton); - layoutBG.add(adjustRadioButton); - - defaultRadioButton.setSelected(true); - - // init image file chooser. - imageFileChooser = new ImageFileChooser(); - imageFileChooser.setMultiSelectionEnabled(false); - } - /** - * Select picture. - */ - ActionListener selectPictureActionListener = new ActionListener() { - - public void actionPerformed(ActionEvent evt) { - int returnVal = imageFileChooser.showOpenDialog(ImageBackgroundPane.this); - if (returnVal != JFileChooser.CANCEL_OPTION) { - File selectedFile = imageFileChooser.getSelectedFile(); - - if (selectedFile != null && selectedFile.isFile()) { - Image image = BaseUtils.readImage(selectedFile.getPath()); - CoreGraphHelper.waitForImage(image); - - previewPane.setImage(image); - setImageStyle(); - previewPane.setImageStyle(imageStyle); - previewPane.repaint(); - } else { - previewPane.setImage(null); - } - } - - fireChagneListener(); - } - }; - - private void setImageStyle(){ - if(tiledRadioButton.isSelected()){ - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_TILED); - }else if(adjustRadioButton.isSelected()){ - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_ADJUST); - }else if(extendRadioButton.isSelected()){ - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_EXTEND); - }else{ - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_CENTER); - } - } - - ActionListener layoutActionListener = new ActionListener() { - - public void actionPerformed(ActionEvent evt) { - setImageStyle(); - changeImageStyle(); - } - - private void changeImageStyle() { - previewPane.setImageStyle(ImageBackgroundPane.this.imageStyle); - previewPane.repaint(); - } - }; - - public void populate(Background background) { - - if (background instanceof ImageBackground) { - ImageBackground imageBackground = (ImageBackground) background; - - if (imageBackground.getLayout() == Constants.IMAGE_CENTER) { - defaultRadioButton.setSelected(true); - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_CENTER); - }else if(imageBackground.getLayout() == Constants.IMAGE_EXTEND){ - extendRadioButton.setSelected(true); - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_EXTEND); - }else if(imageBackground.getLayout() == Constants.IMAGE_ADJUST){ - adjustRadioButton.setSelected(true); - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_ADJUST); - }else { - tiledRadioButton.setSelected(true); - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_TILED); - } - - previewPane.setImageStyle(ImageBackgroundPane.this.imageStyle); - if (imageBackground.getImage() != null) { - previewPane.setImage(imageBackground.getImage()); - imageSizeLabel.setText(previewPane.getImage().getWidth(null) - + " X " + previewPane.getImage().getHeight(null)); - } - - if (imageBackground.getImage() != null) { - previewPane.setImage(imageBackground.getImage()); - } - } else { - previewPane.setImage(null); - tiledRadioButton.setSelected(true); - - imageSizeLabel.setText(""); - } - - fireChagneListener(); - } - - public Background update() throws Exception { - ImageBackground imageBackground = new ImageBackground(previewPane.getImage()); - setImageStyle(); - imageBackground.setLayout(imageStyle.getImageLayout()); - return imageBackground; - } - - public void addChangeListener(ChangeListener changeListener) { - this.changeListener = changeListener; - } - - private void fireChagneListener() { - if (this.changeListener != null) { - ChangeEvent evt = new ChangeEvent(this); - this.changeListener.stateChanged(evt); - } - } - ChangeListener imageSizeChangeListener = new ChangeListener() { - - public void stateChanged(ChangeEvent evt) { - Image image = ((ImagePreviewPane) evt.getSource()).getImage(); - - if (image == null) { - imageSizeLabel.setText(""); - } else { - imageSizeLabel.setText(Inter.getLocText(new String[] {"Size", "px"}, new String[] {": " + image.getWidth(null) + "x" + image.getHeight(null)})); - } - } - }; - } - - public static final TexturePaint[] EMBED_TEXTURE_PAINT_ARRAY = new TexturePaint[]{ - TextureBackground.NEWSPRINT_TEXTURE_PAINT, - TextureBackground.RECYCLED_PAPER_TEXTURE_PAINT, - TextureBackground.PARCHMENT_TEXTURE_PAINT, - TextureBackground.STATIONERY_TEXTURE_PAINT, - TextureBackground.GREEN_MARBLE_TEXTURE_PAINT, - TextureBackground.WHITE_MARBLE_TEXTURE_PAINT, - TextureBackground.BROWN_MARBLE_TEXTURE_PAINT, - TextureBackground.GRANITE_TEXTURE_PAINT, - TextureBackground.BLUE_TISSUE_PAPER_TEXTURE_PAINT, - TextureBackground.PINK_TISSUE_PAPER_TEXTURE_PAINT, - TextureBackground.PURPLE_MESH_TEXTURE_PAINT, - TextureBackground.BOUQUET_TEXTURE_PAINT, - TextureBackground.PAPYRUS_TEXTURE_PAINT, - TextureBackground.CANVAS_TEXTURE_PAINT, - TextureBackground.DENIM_TEXTURE_PAINT, - TextureBackground.WOVEN_MAT_TEXTURE_PAINT, - TextureBackground.WATER_DROPLETS_TEXTURE_PAINT, - TextureBackground.PAPER_BAG_TEXTURE_PAINT, - TextureBackground.FISH_FOSSIL_TEXTURE_PAINT, - TextureBackground.SAND_TEXTURE_PAINT, - TextureBackground.CORK_TEXTURE_PAINT, - TextureBackground.WALNUT_TEXTURE_PAINT, - TextureBackground.OAK_TEXTURE_PAINT, - TextureBackground.MEDIUM_WOOD_TEXTURE_PAINT}; - private static final String[] EMBED_TEXTURE_PAINT_DES_ARRAY = new String[]{ - Inter.getLocText("BackgroundTexture-Newsprint"), - Inter.getLocText("BackgroundTexture-RecycledPaper"), - Inter.getLocText("BackgroundTexture-Parchment"), - Inter.getLocText("BackgroundTexture-Stationery"), - Inter.getLocText("BackgroundTexture-GreenMarble"), - Inter.getLocText("BackgroundTexture-WhiteMarble"), - Inter.getLocText("BackgroundTexture-BrownMarble"), - Inter.getLocText("BackgroundTexture-Granite"), - Inter.getLocText("BackgroundTexture-BlueTissuePaper"), - Inter.getLocText("BackgroundTexture-PinkTissuePaper"), - Inter.getLocText("BackgroundTexture-PurpleMesh"), - Inter.getLocText("BackgroundTexture-Bouquet"), - Inter.getLocText("BackgroundTexture-Papyrus"), - Inter.getLocText("BackgroundTexture-Canvas"), - Inter.getLocText("BackgroundTexture-Denim"), - Inter.getLocText("BackgroundTexture-WovenMat"), - Inter.getLocText("BackgroundTexture-WaterDroplets"), - Inter.getLocText("BackgroundTexture-PaperBag"), - Inter.getLocText("BackgroundTexture-FishFossil"), - Inter.getLocText("BackgroundTexture-Sand"), - Inter.getLocText("BackgroundTexture-Cork"), - Inter.getLocText("BackgroundTexture-Walnut"), - Inter.getLocText("BackgroundTexture-Oak"), - Inter.getLocText("BackgroundTexture-MediumWood") - }; } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/style/background/BackgroundPane4Browser.java b/designer_base/src/com/fr/design/style/background/BackgroundPane4Browser.java new file mode 100644 index 0000000000..490cb82e49 --- /dev/null +++ b/designer_base/src/com/fr/design/style/background/BackgroundPane4Browser.java @@ -0,0 +1,47 @@ +package com.fr.design.style.background; + +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.general.Background; +import com.fr.general.Inter; + +/** + * Created by richie on 16/5/18. + */ +public class BackgroundPane4Browser extends BackgroundPane { + + public BackgroundPane4Browser() { + super(); + } + + protected void initTabPane() { + int index = 0; + for (Class key : BackgroundFactory.browserKindsOfKey()) { + BackgroundUIWrapper wrapper = BackgroundFactory.getWrapper(key); + wrapper.setIndex(index++); + tabbedPane.addTab(Inter.getLocText(wrapper.getTitle()), FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane()); + } + } + + protected BackgroundDetailPane getTabItemPane(Background background, int index) { + BackgroundDetailPane quickPane = cacheMap.get(index); + if (quickPane == null) { + quickPane = BackgroundFactory.createBrowserIfAbsent(background == null ? null : background.getClass()); + quickPane.addChangeListener(backgroundChangeListener); + cacheMap.put(index, quickPane); + } + tabbedPane.setComponentAt(index, quickPane); + tabbedPane.setSelectedIndex(index); + return quickPane; + } + + protected BackgroundDetailPane getTabItemPaneByIndex(int index) { + BackgroundDetailPane quickPane = cacheMap.get(index); + if (quickPane == null) { + quickPane = BackgroundFactory.createBrowerIfAbsent(index); + tabbedPane.setComponentAt(index, quickPane); + cacheMap.put(index, quickPane); + quickPane.addChangeListener(backgroundChangeListener); + } + return quickPane; + } +} diff --git a/designer_base/src/com/fr/design/style/background/BackgroundSelectPane.java b/designer_base/src/com/fr/design/style/background/BackgroundSelectPane.java index 0dc68a8a2b..1262d2ab4e 100644 --- a/designer_base/src/com/fr/design/style/background/BackgroundSelectPane.java +++ b/designer_base/src/com/fr/design/style/background/BackgroundSelectPane.java @@ -13,7 +13,6 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.dialog.BasicPane; import com.fr.general.Background; import com.fr.general.Inter; -import com.fr.design.style.background.BackgroundPane.BackgroundSettingPane; /** * @author kunsnat E-mail:kunsnat@gmail.com @@ -26,9 +25,9 @@ public abstract class BackgroundSelectPane extends BasicPane { private Background background; private ArrayList listenerList = new ArrayList(); - public abstract BackgroundSettingPane getShowPane(double preWidth); + public abstract BackgroundDetailPane getShowPane(double preWidth); - protected void initBackgroundShowPane(final BackgroundSettingPane backgroundPane) { + protected void initBackgroundShowPane(final BackgroundDetailPane backgroundPane) { this.setLayout(FRGUIPaneFactory.createBorderLayout()); backgroundPane.addChangeListener(new ChangeListener() { diff --git a/designer_base/src/com/fr/design/style/background/BackgroundUIWrapper.java b/designer_base/src/com/fr/design/style/background/BackgroundUIWrapper.java new file mode 100644 index 0000000000..9502674a36 --- /dev/null +++ b/designer_base/src/com/fr/design/style/background/BackgroundUIWrapper.java @@ -0,0 +1,49 @@ +package com.fr.design.style.background; + +/** + * Created by richie on 16/5/18. + */ +public class BackgroundUIWrapper { + + public static BackgroundUIWrapper create() { + return new BackgroundUIWrapper(); + } + + private int index = -1; + private String title; + private Class clazz; + + private BackgroundUIWrapper() { + + } + + public Class getType() { + return clazz; + } + + public BackgroundUIWrapper setType(Class clazz) { + this.clazz = clazz; + return this; + } + + public String getTitle() { + return title; + } + + public BackgroundUIWrapper setTitle(String title) { + this.title = title; + return this; + } + + public int getIndex() { + return index; + } + + + public BackgroundUIWrapper setIndex(int index) { + if (this.index == -1) { + this.index = index; + } + return this; + } +} diff --git a/designer_base/src/com/fr/design/style/background/gradient/GradientPane.java b/designer_base/src/com/fr/design/style/background/gradient/GradientBackgroundPane.java similarity index 93% rename from designer_base/src/com/fr/design/style/background/gradient/GradientPane.java rename to designer_base/src/com/fr/design/style/background/gradient/GradientBackgroundPane.java index 232b7e225e..9ab11eb147 100644 --- a/designer_base/src/com/fr/design/style/background/gradient/GradientPane.java +++ b/designer_base/src/com/fr/design/style/background/gradient/GradientBackgroundPane.java @@ -1,135 +1,135 @@ -package com.fr.design.style.background.gradient; - -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.ButtonGroup; - -import com.fr.design.gui.ibutton.UIRadioButton; -import com.fr.design.gui.ilable.UILabel; -import javax.swing.JPanel; -import javax.swing.SwingConstants; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - -import com.fr.base.background.GradientBackground; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.general.Background; -import com.fr.general.Inter; -import com.fr.design.style.background.BackgroundPane.BackgroundSettingPane; - -/** - * 渐变色的面板,不是很pp,面板应用显得繁琐,有写可以写成控件类型,比如色彩选择的。。,可以做得花哨点 - * @author ben - */ -public class GradientPane extends BackgroundSettingPane { - private static final long serialVersionUID = -6854603990673031897L; - - private UIRadioButton left2right, top2bottom; - private GradientBar gradientBar; - private ChangeListener changeListener = null; - - public GradientPane() { - - // bug 5452 简化GradientPane - JPanel jpanel = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText(new String[]{"Gradient-Color", "Set"})); - jpanel.setPreferredSize(new Dimension(450, 320)); - jpanel.setLayout(new BorderLayout()); - - // neil:增加渐变色拖动条 - JPanel gradientPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); - JPanel blankJp = new JPanel(); - gradientBar = new GradientBar(4, 254); - blankJp.add(gradientBar); - UILabel jl = new UILabel(Inter.getLocText("Drag_to_select_gradient")); - jl.setHorizontalAlignment(SwingConstants.CENTER); - gradientPanel.add(jl, BorderLayout.NORTH); - gradientPanel.add(blankJp, BorderLayout.SOUTH); - jpanel.add(gradientPanel, BorderLayout.NORTH); - - JPanel centerPane = FRGUIPaneFactory.createNormalFlowInnerContainer_M_Pane(); - JPanel innercenterPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - centerPane.add(new UILabel(" ")); - centerPane.add(innercenterPane); - innercenterPane.add(new UILabel(Inter.getLocText("Gradient-Direction") + ":")); - - left2right = new UIRadioButton(Inter.getLocText("PageSetup-Landscape")); - innercenterPane.add(left2right); - left2right.setSelected(true); - left2right.addActionListener(reviewListener); - - top2bottom = new UIRadioButton(Inter.getLocText("PageSetup-Portrait")); - innercenterPane.add(top2bottom); - top2bottom.addActionListener(reviewListener); - - ButtonGroup toggle = new ButtonGroup(); - toggle.add(left2right); - toggle.add(top2bottom); - jpanel.add(centerPane, BorderLayout.CENTER); - - this.add(jpanel); - } - - - public void populate(Background background) { - if (!(background instanceof GradientBackground)) { - return; - } - GradientBackground bg = (GradientBackground) background; - this.gradientBar.getSelectColorPointBtnP1().setColorInner(bg.getStartColor()); - this.gradientBar.getSelectColorPointBtnP2().setColorInner(bg.getEndColor()); - if (bg.getDirection() == GradientBackground.LEFT2RIGHT) { - left2right.setSelected(true); - } else { - top2bottom.setSelected(true); - } - if (bg.isUseCell()) { - return; - } - double startValue = (double) bg.getBeginPlace(); - double endValue = (double) bg.getFinishPlace(); - gradientBar.setStartValue(startValue); - gradientBar.setEndValue(endValue); - this.gradientBar.repaint(); - } - - public GradientBackground update() { - GradientBackground gb = new GradientBackground( - gradientBar.getSelectColorPointBtnP1().getColorInner(), - gradientBar.getSelectColorPointBtnP2().getColorInner()); - if (left2right.isSelected()) { - gb.setDirection(GradientBackground.LEFT2RIGHT); - } else { - gb.setDirection(GradientBackground.TOP2BOTTOM); - } - if (gradientBar.isOriginalPlace()) { - gb.setUseCell(true); - } else { - gb.setUseCell(false); - gb.setBeginPlace((float) gradientBar.getStartValue()); - gb.setFinishPlace((float) gradientBar.getEndValue()); - } - return gb; - } - - - ActionListener reviewListener = new ActionListener() { - public void actionPerformed(ActionEvent e) { - fireChagneListener(); - } - }; - - public void addChangeListener(ChangeListener changeListener) { - this.changeListener = changeListener; - gradientBar.addChangeListener(changeListener); - } - - public void fireChagneListener() { - if (this.changeListener != null) { - ChangeEvent evt = new ChangeEvent(this); - this.changeListener.stateChanged(evt); - } - } +package com.fr.design.style.background.gradient; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.ButtonGroup; + +import com.fr.design.gui.ibutton.UIRadioButton; +import com.fr.design.gui.ilable.UILabel; +import javax.swing.JPanel; +import javax.swing.SwingConstants; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +import com.fr.base.background.GradientBackground; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.general.Background; +import com.fr.general.Inter; +import com.fr.design.style.background.BackgroundDetailPane; + +/** + * 渐变色的面板,不是很pp,面板应用显得繁琐,有写可以写成控件类型,比如色彩选择的。。,可以做得花哨点 + * @author ben + */ +public class GradientBackgroundPane extends BackgroundDetailPane { + private static final long serialVersionUID = -6854603990673031897L; + + private UIRadioButton left2right, top2bottom; + private GradientBar gradientBar; + private ChangeListener changeListener = null; + + public GradientBackgroundPane() { + + // bug 5452 简化GradientPane + JPanel jpanel = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText(new String[]{"Gradient-Color", "Set"})); + jpanel.setPreferredSize(new Dimension(450, 320)); + jpanel.setLayout(new BorderLayout()); + + // neil:增加渐变色拖动条 + JPanel gradientPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); + JPanel blankJp = new JPanel(); + gradientBar = new GradientBar(4, 254); + blankJp.add(gradientBar); + UILabel jl = new UILabel(Inter.getLocText("Drag_to_select_gradient")); + jl.setHorizontalAlignment(SwingConstants.CENTER); + gradientPanel.add(jl, BorderLayout.NORTH); + gradientPanel.add(blankJp, BorderLayout.SOUTH); + jpanel.add(gradientPanel, BorderLayout.NORTH); + + JPanel centerPane = FRGUIPaneFactory.createNormalFlowInnerContainer_M_Pane(); + JPanel innercenterPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + centerPane.add(new UILabel(" ")); + centerPane.add(innercenterPane); + innercenterPane.add(new UILabel(Inter.getLocText("Gradient-Direction") + ":")); + + left2right = new UIRadioButton(Inter.getLocText("PageSetup-Landscape")); + innercenterPane.add(left2right); + left2right.setSelected(true); + left2right.addActionListener(reviewListener); + + top2bottom = new UIRadioButton(Inter.getLocText("PageSetup-Portrait")); + innercenterPane.add(top2bottom); + top2bottom.addActionListener(reviewListener); + + ButtonGroup toggle = new ButtonGroup(); + toggle.add(left2right); + toggle.add(top2bottom); + jpanel.add(centerPane, BorderLayout.CENTER); + + this.add(jpanel); + } + + + public void populate(Background background) { + if (!(background instanceof GradientBackground)) { + return; + } + GradientBackground bg = (GradientBackground) background; + this.gradientBar.getSelectColorPointBtnP1().setColorInner(bg.getStartColor()); + this.gradientBar.getSelectColorPointBtnP2().setColorInner(bg.getEndColor()); + if (bg.getDirection() == GradientBackground.LEFT2RIGHT) { + left2right.setSelected(true); + } else { + top2bottom.setSelected(true); + } + if (bg.isUseCell()) { + return; + } + double startValue = (double) bg.getBeginPlace(); + double endValue = (double) bg.getFinishPlace(); + gradientBar.setStartValue(startValue); + gradientBar.setEndValue(endValue); + this.gradientBar.repaint(); + } + + public GradientBackground update() { + GradientBackground gb = new GradientBackground( + gradientBar.getSelectColorPointBtnP1().getColorInner(), + gradientBar.getSelectColorPointBtnP2().getColorInner()); + if (left2right.isSelected()) { + gb.setDirection(GradientBackground.LEFT2RIGHT); + } else { + gb.setDirection(GradientBackground.TOP2BOTTOM); + } + if (gradientBar.isOriginalPlace()) { + gb.setUseCell(true); + } else { + gb.setUseCell(false); + gb.setBeginPlace((float) gradientBar.getStartValue()); + gb.setFinishPlace((float) gradientBar.getEndValue()); + } + return gb; + } + + + ActionListener reviewListener = new ActionListener() { + public void actionPerformed(ActionEvent e) { + fireChagneListener(); + } + }; + + public void addChangeListener(ChangeListener changeListener) { + this.changeListener = changeListener; + gradientBar.addChangeListener(changeListener); + } + + public void fireChagneListener() { + if (this.changeListener != null) { + ChangeEvent evt = new ChangeEvent(this); + this.changeListener.stateChanged(evt); + } + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/style/background/impl/BPane.java b/designer_base/src/com/fr/design/style/background/impl/BPane.java new file mode 100644 index 0000000000..9a9805a5cd --- /dev/null +++ b/designer_base/src/com/fr/design/style/background/impl/BPane.java @@ -0,0 +1,46 @@ +package com.fr.design.style.background.impl; + +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.style.background.BackgroundDetailPane; + +import javax.swing.*; +import java.awt.*; + +/** + * Created by richie on 16/5/18. + */ +public abstract class BPane extends BackgroundDetailPane { + + public BPane(int nColumn) { + this.initComponents(nColumn); + } + + private void initComponents(int nColumn) { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + this.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); + + JPanel contentPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); + this.add(contentPane, BorderLayout.NORTH); +// contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS)); + + // type type. + + JPanel typePane = FRGUIPaneFactory.createTitledBorderPane(titleOfTypePane()); + contentPane.add(typePane); + JPanel typePane2 = new JPanel(); + typePane.add(typePane2); + typePane2.setLayout(layoutOfTypePane(nColumn)); + setChildrenOfTypePane(typePane2); + + setChildrenOfContentPane(contentPane); + } + + protected abstract String titleOfTypePane(); + + protected abstract LayoutManager layoutOfTypePane(int nColumn); + + protected abstract void setChildrenOfTypePane(JPanel typePane2); + + protected void setChildrenOfContentPane(JPanel contentPane) { + } +} diff --git a/designer_base/src/com/fr/design/style/background/impl/ColorBackgroundPane.java b/designer_base/src/com/fr/design/style/background/impl/ColorBackgroundPane.java new file mode 100644 index 0000000000..effbe6328c --- /dev/null +++ b/designer_base/src/com/fr/design/style/background/impl/ColorBackgroundPane.java @@ -0,0 +1,42 @@ +package com.fr.design.style.background.impl; + +import com.fr.base.background.ColorBackground; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.style.background.BackgroundDetailPane; +import com.fr.design.style.color.DetailColorSelectPane; +import com.fr.general.Background; + +import javax.swing.event.ChangeListener; +import java.awt.*; + +/** + * Color background pane. + */ +public class ColorBackgroundPane extends BackgroundDetailPane { + + private DetailColorSelectPane detailColorSelectPane; + + public ColorBackgroundPane() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + + detailColorSelectPane = new DetailColorSelectPane(); + this.add(detailColorSelectPane, BorderLayout.CENTER); + } + + public void populate(Background background) { + if (background instanceof ColorBackground) { + ColorBackground colorBackgroud = (ColorBackground) background; + this.detailColorSelectPane.populate(colorBackgroud.getColor()); + } else { + this.detailColorSelectPane.populate(Color.white); + } + } + + public Background update() throws Exception { + return ColorBackground.getInstance(this.detailColorSelectPane.update()); + } + + public void addChangeListener(ChangeListener changeListener) { + detailColorSelectPane.addChangeListener(changeListener); + } +} diff --git a/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java b/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java new file mode 100644 index 0000000000..62ad05485f --- /dev/null +++ b/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java @@ -0,0 +1,230 @@ +package com.fr.design.style.background.impl; + +import com.fr.base.BaseUtils; +import com.fr.base.Style; +import com.fr.base.background.ImageBackground; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.ibutton.UIRadioButton; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.style.background.BackgroundDetailPane; +import com.fr.design.style.background.image.ImageFileChooser; +import com.fr.design.style.background.image.ImagePreviewPane; +import com.fr.general.Background; +import com.fr.general.Inter; +import com.fr.stable.Constants; +import com.fr.stable.CoreGraphHelper; + +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.io.File; + +/** + * Image background pane. + */ +public class ImageBackgroundPane extends BackgroundDetailPane { + + private ImagePreviewPane previewPane = null; + private Style imageStyle = null; + private ChangeListener changeListener = null; + private ImageFileChooser imageFileChooser = null; + private UILabel imageSizeLabel = new UILabel(); + + protected JRadioButton defaultRadioButton = null; + protected JRadioButton tiledRadioButton = null; + private JRadioButton extendRadioButton = null; + private JRadioButton adjustRadioButton = null; + + public ImageBackgroundPane() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + + // preview pane + JPanel previewContainerPane = FRGUIPaneFactory.createBorderLayout_L_Pane(); + this.add(previewContainerPane, BorderLayout.CENTER); + + JPanel previewOwnerPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("Preview")); + previewOwnerPane.setLayout(new BorderLayout()); + previewContainerPane.add(previewOwnerPane, BorderLayout.CENTER); + + + previewPane = new ImagePreviewPane(); + previewOwnerPane.add(new JScrollPane(previewPane)); + previewPane.addChangeListener(imageSizeChangeListener); + + JPanel selectFilePane = FRGUIPaneFactory.createBorderLayout_L_Pane(); + previewContainerPane.add(selectFilePane, BorderLayout.EAST); + selectFilePane.setBorder(BorderFactory.createEmptyBorder(8, 2, 4, 0)); + + UIButton selectPictureButton = new UIButton( + Inter.getLocText("Image-Select_Picture")); + selectFilePane.add(selectPictureButton, BorderLayout.NORTH); + selectPictureButton.setMnemonic('S'); + selectPictureButton.addActionListener(selectPictureActionListener); + JPanel layoutPane = FRGUIPaneFactory.createMediumHGapHighTopFlowInnerContainer_M_Pane(); + selectFilePane.add(layoutPane, BorderLayout.CENTER); + + //布局 + defaultRadioButton = new UIRadioButton(Inter.getLocText("Default")); + tiledRadioButton = new UIRadioButton(Inter.getLocText("Image-Titled")); + extendRadioButton = new UIRadioButton(Inter.getLocText("Image-Extend")); + adjustRadioButton = new UIRadioButton(Inter.getLocText("Image-Adjust")); + + defaultRadioButton.addActionListener(layoutActionListener); + tiledRadioButton.addActionListener(layoutActionListener); + extendRadioButton.addActionListener(layoutActionListener); + adjustRadioButton.addActionListener(layoutActionListener); + + JPanel jp = new JPanel(new GridLayout(4, 1, 15, 15)); + for (JRadioButton button : imageLayoutButtons()) { + jp.add(button); + } + layoutPane.add(jp); + + ButtonGroup layoutBG = new ButtonGroup(); + layoutBG.add(defaultRadioButton); + layoutBG.add(tiledRadioButton); + layoutBG.add(extendRadioButton); + layoutBG.add(adjustRadioButton); + + defaultRadioButton.setSelected(true); + + // init image file chooser. + imageFileChooser = new ImageFileChooser(); + imageFileChooser.setMultiSelectionEnabled(false); + } + + protected JRadioButton[] imageLayoutButtons() { + return new JRadioButton[]{ + defaultRadioButton, + tiledRadioButton, + extendRadioButton, + adjustRadioButton + }; + } + + /** + * Select picture. + */ + ActionListener selectPictureActionListener = new ActionListener() { + + public void actionPerformed(ActionEvent evt) { + int returnVal = imageFileChooser.showOpenDialog(ImageBackgroundPane.this); + if (returnVal != JFileChooser.CANCEL_OPTION) { + File selectedFile = imageFileChooser.getSelectedFile(); + + if (selectedFile != null && selectedFile.isFile()) { + Image image = BaseUtils.readImage(selectedFile.getPath()); + CoreGraphHelper.waitForImage(image); + + previewPane.setImage(image); + setImageStyle(); + previewPane.setImageStyle(imageStyle); + previewPane.repaint(); + } else { + previewPane.setImage(null); + } + } + + fireChagneListener(); + } + }; + + private void setImageStyle() { + if (tiledRadioButton.isSelected()) { + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_TILED); + } else if (adjustRadioButton.isSelected()) { + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_ADJUST); + } else if (extendRadioButton.isSelected()) { + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_EXTEND); + } else { + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_CENTER); + } + } + + ActionListener layoutActionListener = new ActionListener() { + + public void actionPerformed(ActionEvent evt) { + setImageStyle(); + changeImageStyle(); + } + + private void changeImageStyle() { + previewPane.setImageStyle(ImageBackgroundPane.this.imageStyle); + previewPane.repaint(); + } + }; + + public void populate(Background background) { + + if (background instanceof ImageBackground) { + ImageBackground imageBackground = (ImageBackground) background; + + if (imageBackground.getLayout() == Constants.IMAGE_CENTER) { + defaultRadioButton.setSelected(true); + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_CENTER); + } else if (imageBackground.getLayout() == Constants.IMAGE_EXTEND) { + extendRadioButton.setSelected(true); + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_EXTEND); + } else if (imageBackground.getLayout() == Constants.IMAGE_ADJUST) { + adjustRadioButton.setSelected(true); + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_ADJUST); + } else { + tiledRadioButton.setSelected(true); + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_TILED); + } + + previewPane.setImageStyle(ImageBackgroundPane.this.imageStyle); + if (imageBackground.getImage() != null) { + previewPane.setImage(imageBackground.getImage()); + imageSizeLabel.setText(previewPane.getImage().getWidth(null) + + " X " + previewPane.getImage().getHeight(null)); + } + + if (imageBackground.getImage() != null) { + previewPane.setImage(imageBackground.getImage()); + } + } else { + previewPane.setImage(null); + tiledRadioButton.setSelected(true); + + imageSizeLabel.setText(""); + } + + fireChagneListener(); + } + + public Background update() throws Exception { + ImageBackground imageBackground = new ImageBackground(previewPane.getImage()); + setImageStyle(); + imageBackground.setLayout(imageStyle.getImageLayout()); + return imageBackground; + } + + public void addChangeListener(ChangeListener changeListener) { + this.changeListener = changeListener; + } + + private void fireChagneListener() { + if (this.changeListener != null) { + ChangeEvent evt = new ChangeEvent(this); + this.changeListener.stateChanged(evt); + } + } + + ChangeListener imageSizeChangeListener = new ChangeListener() { + + public void stateChanged(ChangeEvent evt) { + Image image = ((ImagePreviewPane) evt.getSource()).getImage(); + + if (image == null) { + imageSizeLabel.setText(""); + } else { + imageSizeLabel.setText(Inter.getLocText(new String[]{"Size", "px"}, new String[]{": " + image.getWidth(null) + "x" + image.getHeight(null)})); + } + } + }; +} diff --git a/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane4Browser.java b/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane4Browser.java new file mode 100644 index 0000000000..4d15f18ac3 --- /dev/null +++ b/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane4Browser.java @@ -0,0 +1,25 @@ +package com.fr.design.style.background.impl; + +import com.fr.stable.ArrayUtils; + +import javax.swing.*; + +/** + * Created by richie on 16/5/18. + */ +public class ImageBackgroundPane4Browser extends ImageBackgroundPane { + + + public ImageBackgroundPane4Browser() { + super(); + } + + @Override + protected JRadioButton[] imageLayoutButtons() { + + return (JRadioButton[]) ArrayUtils.addAll(super.imageLayoutButtons(), new JRadioButton[] { + defaultRadioButton, + tiledRadioButton, + }); + } +} diff --git a/designer_base/src/com/fr/design/style/background/impl/NullBackgroundPane.java b/designer_base/src/com/fr/design/style/background/impl/NullBackgroundPane.java new file mode 100644 index 0000000000..ea108019ac --- /dev/null +++ b/designer_base/src/com/fr/design/style/background/impl/NullBackgroundPane.java @@ -0,0 +1,39 @@ +package com.fr.design.style.background.impl; + +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.style.background.BackgroundDetailPane; +import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.Background; +import com.fr.general.Inter; + +import javax.swing.*; +import javax.swing.event.ChangeListener; + +/** + * Null background pane. + */ +public class NullBackgroundPane extends BackgroundDetailPane { + + public NullBackgroundPane() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + + UILabel centerLabel = new UILabel( + Inter.getLocText("Background-Background_is_NULL") + "..."); + this.add(centerLabel); + centerLabel.setHorizontalAlignment(SwingConstants.CENTER); + centerLabel.setBorder(BorderFactory.createLineBorder(GUICoreUtils.getTitleLineBorderColor())); + } + + public void populate(Background background) { + // do nothing. + } + + public Background update() throws Exception { + return null; + } + + public void addChangeListener(ChangeListener changeListener) { + // do nothing. + } +} diff --git a/designer_base/src/com/fr/design/style/background/impl/PatternBackgroundPane.java b/designer_base/src/com/fr/design/style/background/impl/PatternBackgroundPane.java new file mode 100644 index 0000000000..a1481e6d69 --- /dev/null +++ b/designer_base/src/com/fr/design/style/background/impl/PatternBackgroundPane.java @@ -0,0 +1,208 @@ +package com.fr.design.style.background.impl; + +import com.fr.base.GraphHelper; +import com.fr.base.background.PatternBackground; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.style.color.ColorSelectBox; +import com.fr.general.Background; +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.geom.Rectangle2D; + +/** + * Pattern background pane. + */ +public class PatternBackgroundPane extends BPane { + + private int patternIndex = 0; // pattern setIndex. + protected ColorSelectBox foregroundColorPane; + protected ColorSelectBox backgroundColorPane; + private PatternButton[] patternButtonArray; + + public PatternBackgroundPane() { + super(12); + + foregroundColorPane.addSelectChangeListener(colorChangeListener); + backgroundColorPane.addSelectChangeListener(colorChangeListener); + } + + public PatternBackgroundPane(int nColumn) { + super(nColumn); + + if(foregroundColorPane != null) { + foregroundColorPane.addSelectChangeListener(colorChangeListener); + } + if(backgroundColorPane != null) { + backgroundColorPane.addSelectChangeListener(colorChangeListener); + } + } + + protected String titleOfTypePane() { + return Inter.getLocText("Background-Pattern"); + } + protected LayoutManager layoutOfTypePane(int nColumn) { + return FRGUIPaneFactory.createNColumnGridLayout(nColumn); + } + + protected void setChildrenOfTypePane(JPanel typePane2) { + ButtonGroup patternButtonGroup = new ButtonGroup(); + patternButtonArray = new PatternButton[PatternBackground.PATTERN_COUNT]; + for (int i = 0; i < PatternBackground.PATTERN_COUNT; i++) { + patternButtonArray[i] = new PatternButton(i); + patternButtonGroup.add(patternButtonArray[i]); + typePane2.add(patternButtonArray[i]); + } + } + + protected void setChildrenOfContentPane(JPanel contentPane) { + // colors + JPanel colorPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("Colors")); + contentPane.add(colorPane); + + foregroundColorPane = new ColorSelectBox(80); + backgroundColorPane = new ColorSelectBox(80); + foregroundColorPane.setSelectObject(Color.lightGray); + backgroundColorPane.setSelectObject(Color.black); + + colorPane.add(Box.createHorizontalStrut(2)); + colorPane.add(this.createLabelColorPane(Inter.getLocText("Foreground") + + ":", foregroundColorPane)); + + colorPane.add(Box.createHorizontalStrut(8)); + + colorPane.add(this.createLabelColorPane(Inter.getLocText("Background") + + ":", backgroundColorPane)); + } + + private JPanel createLabelColorPane(String text, + ColorSelectBox colorPane) { + JPanel labelColorPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + labelColorPane.add(new UILabel(text)); + labelColorPane.add(colorPane); + + return labelColorPane; + } + + public void populate(Background background) { + if (background != null && background instanceof PatternBackground) { + PatternBackground patternBackground = (PatternBackground) background; + int patternIndex = patternBackground.getPatternIndex(); + + if (patternIndex >= 0 + && patternIndex < this.patternButtonArray.length) { + this.patternButtonArray[patternIndex].setSelected(true); + this.patternIndex = patternIndex; + } else { + this.patternIndex = 0; + } + + foregroundColorPane.setSelectObject(patternBackground.getForeground()); + backgroundColorPane.setSelectObject(patternBackground.getBackground()); + } else { + patternIndex = 0; + this.patternButtonArray[0].setSelected(true); + + foregroundColorPane.setSelectObject(Color.lightGray); + backgroundColorPane.setSelectObject(Color.black); + } + } + + public Background update() throws Exception { + return new PatternBackground(patternIndex, foregroundColorPane.getSelectObject(), backgroundColorPane.getSelectObject()); + } + + public void addChangeListener(ChangeListener changeListener) { + foregroundColorPane.addSelectChangeListener(changeListener); + backgroundColorPane.addSelectChangeListener(changeListener); + + for (int i = 0; i < this.patternButtonArray.length; i++) { + this.patternButtonArray[i].addChangeListener(changeListener); + } + } + // Foreground or Background changed. + ChangeListener colorChangeListener = new ChangeListener() { + + public void stateChanged(ChangeEvent e) { + for (int i = 0; i < patternButtonArray.length; i++) { + patternButtonArray[i].setPatternForeground(foregroundColorPane.getSelectObject()); + patternButtonArray[i].setPatternBackground(backgroundColorPane.getSelectObject()); + } + + PatternBackgroundPane.this.repaint();// repaint + } + }; + + /** + * Pattern type button. + */ + class PatternButton extends JToggleButton implements ActionListener { + + public PatternButton(int pIndex) { + this.pIndex = pIndex; + this.addActionListener(this); + + this.setCursor(new Cursor(Cursor.HAND_CURSOR)); + this.setBorder(null); + this.patternBackground = new PatternBackground(this.pIndex, + Color.lightGray, Color.black); + } + + public void paintComponent(Graphics g) { + Graphics2D g2d = (Graphics2D) g; + + Dimension d = getSize(); + this.patternBackground.paint(g2d, new Rectangle2D.Double(0, 0, + d.width - 1, d.height - 1)); + + if (this.pIndex == patternIndex) {// it's selected. + g2d.setPaint(new Color(255, 51, 0)); + } else { + g2d.setPaint(Color.gray); + } + GraphHelper.draw(g2d, new Rectangle2D.Double(0, 0, d.width - 1, + d.height - 1)); + } + + public Dimension getPreferredSize() { + return new Dimension(24, 24); + } + + public void setPatternForeground(Color foreground) { + this.patternBackground.setForeground(foreground); + } + + public void setPatternBackground(Color background) { + this.patternBackground.setBackground(background); + } + + /** + * set Pattern setIndex. + */ + public void actionPerformed(ActionEvent evt) { + PatternBackgroundPane.this.patternIndex = pIndex; + + fireChagneListener(); + PatternBackgroundPane.this.repaint();// repaint + } + + public void addChangeListener(ChangeListener changeListener) { + this.changeListener = changeListener; + } + + private void fireChagneListener() { + if (this.changeListener != null) { + ChangeEvent evt = new ChangeEvent(this); + this.changeListener.stateChanged(evt); + } + } + private int pIndex = 0; + private PatternBackground patternBackground; + } +} diff --git a/designer_base/src/com/fr/design/style/background/impl/PatternBackgroundPaneNoFore.java b/designer_base/src/com/fr/design/style/background/impl/PatternBackgroundPaneNoFore.java new file mode 100644 index 0000000000..79fdaf3898 --- /dev/null +++ b/designer_base/src/com/fr/design/style/background/impl/PatternBackgroundPaneNoFore.java @@ -0,0 +1,24 @@ +package com.fr.design.style.background.impl; + +import com.fr.design.style.color.ColorSelectBox; + +import javax.swing.*; +import java.awt.*; + +/** + * Created by richie on 16/5/18. + */ +public class PatternBackgroundPaneNoFore extends PatternBackgroundPane { + + public PatternBackgroundPaneNoFore(int nColumn) { + super(nColumn); + } + + // 重载 不加载两个前后按钮 + protected void setChildrenOfContentPane(JPanel contentPane) { + foregroundColorPane = new ColorSelectBox(80); + backgroundColorPane = new ColorSelectBox(80); + foregroundColorPane.setSelectObject(Color.lightGray); + backgroundColorPane.setSelectObject(Color.black); + } +} diff --git a/designer_base/src/com/fr/design/style/background/impl/TextureBackgroundPane.java b/designer_base/src/com/fr/design/style/background/impl/TextureBackgroundPane.java new file mode 100644 index 0000000000..9800675c1d --- /dev/null +++ b/designer_base/src/com/fr/design/style/background/impl/TextureBackgroundPane.java @@ -0,0 +1,197 @@ +package com.fr.design.style.background.impl; + +import com.fr.base.GraphHelper; +import com.fr.base.background.TextureBackground; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.general.Background; +import com.fr.general.ComparatorUtils; +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.geom.Rectangle2D; + +/** + * Texture background pane. TODO kunsnat: 拆出去. 真特么的长.. + */ +public class TextureBackgroundPane extends BPane { + + private static final TexturePaint[] EMBED_TEXTURE_PAINT_ARRAY = new TexturePaint[]{ + TextureBackground.NEWSPRINT_TEXTURE_PAINT, + TextureBackground.RECYCLED_PAPER_TEXTURE_PAINT, + TextureBackground.PARCHMENT_TEXTURE_PAINT, + TextureBackground.STATIONERY_TEXTURE_PAINT, + TextureBackground.GREEN_MARBLE_TEXTURE_PAINT, + TextureBackground.WHITE_MARBLE_TEXTURE_PAINT, + TextureBackground.BROWN_MARBLE_TEXTURE_PAINT, + TextureBackground.GRANITE_TEXTURE_PAINT, + TextureBackground.BLUE_TISSUE_PAPER_TEXTURE_PAINT, + TextureBackground.PINK_TISSUE_PAPER_TEXTURE_PAINT, + TextureBackground.PURPLE_MESH_TEXTURE_PAINT, + TextureBackground.BOUQUET_TEXTURE_PAINT, + TextureBackground.PAPYRUS_TEXTURE_PAINT, + TextureBackground.CANVAS_TEXTURE_PAINT, + TextureBackground.DENIM_TEXTURE_PAINT, + TextureBackground.WOVEN_MAT_TEXTURE_PAINT, + TextureBackground.WATER_DROPLETS_TEXTURE_PAINT, + TextureBackground.PAPER_BAG_TEXTURE_PAINT, + TextureBackground.FISH_FOSSIL_TEXTURE_PAINT, + TextureBackground.SAND_TEXTURE_PAINT, + TextureBackground.CORK_TEXTURE_PAINT, + TextureBackground.WALNUT_TEXTURE_PAINT, + TextureBackground.OAK_TEXTURE_PAINT, + TextureBackground.MEDIUM_WOOD_TEXTURE_PAINT}; + + private static final String[] EMBED_TEXTURE_PAINT_DES_ARRAY = new String[]{ + Inter.getLocText("BackgroundTexture-Newsprint"), + Inter.getLocText("BackgroundTexture-RecycledPaper"), + Inter.getLocText("BackgroundTexture-Parchment"), + Inter.getLocText("BackgroundTexture-Stationery"), + Inter.getLocText("BackgroundTexture-GreenMarble"), + Inter.getLocText("BackgroundTexture-WhiteMarble"), + Inter.getLocText("BackgroundTexture-BrownMarble"), + Inter.getLocText("BackgroundTexture-Granite"), + Inter.getLocText("BackgroundTexture-BlueTissuePaper"), + Inter.getLocText("BackgroundTexture-PinkTissuePaper"), + Inter.getLocText("BackgroundTexture-PurpleMesh"), + Inter.getLocText("BackgroundTexture-Bouquet"), + Inter.getLocText("BackgroundTexture-Papyrus"), + Inter.getLocText("BackgroundTexture-Canvas"), + Inter.getLocText("BackgroundTexture-Denim"), + Inter.getLocText("BackgroundTexture-WovenMat"), + Inter.getLocText("BackgroundTexture-WaterDroplets"), + Inter.getLocText("BackgroundTexture-PaperBag"), + Inter.getLocText("BackgroundTexture-FishFossil"), + Inter.getLocText("BackgroundTexture-Sand"), + Inter.getLocText("BackgroundTexture-Cork"), + Inter.getLocText("BackgroundTexture-Walnut"), + Inter.getLocText("BackgroundTexture-Oak"), + Inter.getLocText("BackgroundTexture-MediumWood") + }; + + private TexturePaint texturePaint; + private TextureButton[] textureButtonArray; + + public TextureBackgroundPane() { + super(8);// 默认的. + } + + public TextureBackgroundPane(int colum) { + super(colum);// 自定义的. + } + + protected LayoutManager layoutOfTypePane(int nColumn) { + return FRGUIPaneFactory.createNColumnGridLayout(nColumn); + } + + protected String titleOfTypePane() { + return Inter.getLocText("Background-Texture"); + } + protected void setChildrenOfTypePane(JPanel typePane2) { + ButtonGroup patternButtonGroup = new ButtonGroup(); + textureButtonArray = new TextureButton[EMBED_TEXTURE_PAINT_ARRAY.length]; + for (int i = 0; i < EMBED_TEXTURE_PAINT_ARRAY.length; i++) { + textureButtonArray[i] = new TextureButton( + EMBED_TEXTURE_PAINT_ARRAY[i], EMBED_TEXTURE_PAINT_DES_ARRAY[i]); + patternButtonGroup.add(textureButtonArray[i]); + typePane2.add(textureButtonArray[i]); + } + } + + public void populate(Background background) { + if (background instanceof TextureBackground) { + TextureBackground textureBackground = (TextureBackground) background; + + this.texturePaint = textureBackground.getTexturePaint(); + + for (int i = 0; i < textureButtonArray.length; i++) { + if (ComparatorUtils.equals(textureButtonArray[i].getTexturePaint(), this.texturePaint)) { + textureButtonArray[i].setSelected(true); + break; + } + } + } else { + this.textureButtonArray[0].setSelected(true); + this.texturePaint = textureButtonArray[0].getTexturePaint(); + } + } + + public Background update() throws Exception { + return new TextureBackground(this.texturePaint); + } + + public void addChangeListener(ChangeListener changeListener) { + for (int i = 0; i < this.textureButtonArray.length; i++) { + this.textureButtonArray[i].addChangeListener(changeListener); + } + } + + /** + * Texture type button. + */ + class TextureButton extends JToggleButton implements ActionListener { + + private TexturePaint buttonTexturePaint; + + public TextureButton(TexturePaint buttonTexturePaint, String tooltip) { + this.buttonTexturePaint = buttonTexturePaint; + this.setToolTipText(tooltip); + + this.setCursor(new Cursor(Cursor.HAND_CURSOR)); + this.addActionListener(this); + this.setBorder(null); + } + + public void paintComponent(Graphics g) { + Graphics2D g2d = (Graphics2D) g; + + Dimension d = getSize(); + + g2d.setPaint(this.buttonTexturePaint); + GraphHelper.fill(g2d, new Rectangle2D.Double(0, 0, d.width - 1, + d.height - 1)); + + if (ComparatorUtils.equals(texturePaint, this.buttonTexturePaint)) {// it's + // selected. + g2d.setPaint(Color.black); + } else { + g2d.setPaint(Color.gray); + } + GraphHelper.draw(g2d, new Rectangle2D.Double(0, 0, d.width - 1, + d.height - 1)); + } + + public Dimension getPreferredSize() { + return new Dimension(36, 32); + } + + public TexturePaint getTexturePaint() { + return this.buttonTexturePaint; + } + + /** + * set Pattern setIndex. + */ + public void actionPerformed(ActionEvent evt) { + TextureBackgroundPane.this.texturePaint = this.getTexturePaint(); + + fireChagneListener(); + TextureBackgroundPane.this.repaint(); // repaint. + } + + public void addChangeListener(ChangeListener changeListener) { + this.changeListener = changeListener; + } + + private void fireChagneListener() { + if (this.changeListener != null) { + ChangeEvent evt = new ChangeEvent(this); + this.changeListener.stateChanged(evt); + } + } + } +} diff --git a/designer_base/src/com/fr/design/style/background/pattern/PatternSelectPane.java b/designer_base/src/com/fr/design/style/background/pattern/PatternSelectPane.java index b8f9ea3843..47a3524475 100644 --- a/designer_base/src/com/fr/design/style/background/pattern/PatternSelectPane.java +++ b/designer_base/src/com/fr/design/style/background/pattern/PatternSelectPane.java @@ -1,8 +1,8 @@ package com.fr.design.style.background.pattern; import com.fr.general.Inter; -import com.fr.design.style.background.BackgroundPane.BackgroundSettingPane; -import com.fr.design.style.background.BackgroundPane.PatternBackgroundPaneNoFore; +import com.fr.design.style.background.BackgroundDetailPane; +import com.fr.design.style.background.impl.PatternBackgroundPaneNoFore; import com.fr.design.style.background.BackgroundSelectPane; @@ -20,7 +20,7 @@ public class PatternSelectPane extends BackgroundSelectPane { } @Override - public BackgroundSettingPane getShowPane(double preWidth) { + public BackgroundDetailPane getShowPane(double preWidth) { // 最少6个. 因为项目太多了. 会拉的很长 int column = Math.max((int)preWidth / 25, 6); return new PatternBackgroundPaneNoFore(column); diff --git a/designer_base/src/com/fr/design/style/background/texture/TextureSelectPane.java b/designer_base/src/com/fr/design/style/background/texture/TextureSelectPane.java index 86d36bbfbd..ea7af5bc41 100644 --- a/designer_base/src/com/fr/design/style/background/texture/TextureSelectPane.java +++ b/designer_base/src/com/fr/design/style/background/texture/TextureSelectPane.java @@ -1,8 +1,8 @@ package com.fr.design.style.background.texture; import com.fr.general.Inter; -import com.fr.design.style.background.BackgroundPane.BackgroundSettingPane; -import com.fr.design.style.background.BackgroundPane.TextureBackgroundPane; +import com.fr.design.style.background.BackgroundDetailPane; +import com.fr.design.style.background.impl.TextureBackgroundPane; import com.fr.design.style.background.BackgroundSelectPane; @@ -19,7 +19,7 @@ public class TextureSelectPane extends BackgroundSelectPane { initBackgroundShowPane(getShowPane(preWidth)); } - public BackgroundSettingPane getShowPane(double preWidth) { + public BackgroundDetailPane getShowPane(double preWidth) { // 计算合适的列. 至少4个. 最多8个. int column = Math.max((int)preWidth / 40, 4); return new TextureBackgroundPane(column); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundNoImagePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundNoImagePane.java index 447ba1107e..532f0d2166 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundNoImagePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundNoImagePane.java @@ -1,8 +1,8 @@ package com.fr.design.mainframe.chart.gui.style; -import com.fr.design.gui.style.GradientPane; -import com.fr.design.mainframe.backgroundpane.ColorBackgroundPane; -import com.fr.design.mainframe.backgroundpane.NullBackgroundPane; +import com.fr.design.gui.style.GradientQuickPane; +import com.fr.design.mainframe.backgroundpane.ColorBackgroundQuickPane; +import com.fr.design.mainframe.backgroundpane.NullBackgroundQuickPane; /** * 背景界面, 无图片和纹理选项. @@ -16,8 +16,8 @@ public class ChartBackgroundNoImagePane extends ChartBackgroundPane { } protected void initList() { - paneList.add(new NullBackgroundPane()); - paneList.add(new ColorBackgroundPane()); - paneList.add(new GradientPane(CHART_GRADIENT_WIDTH)); + paneList.add(new NullBackgroundQuickPane()); + paneList.add(new ColorBackgroundQuickPane()); + paneList.add(new GradientQuickPane(CHART_GRADIENT_WIDTH)); } } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundPane.java index 7cbffadfdc..ef61297100 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundPane.java @@ -4,13 +4,13 @@ import com.fr.chart.chartglyph.GeneralInfo; import com.fr.design.gui.frpane.UINumberDragPane; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.style.GradientPane; +import com.fr.design.gui.style.GradientQuickPane; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.mainframe.backgroundpane.BackgroundSettingPane; -import com.fr.design.mainframe.backgroundpane.ColorBackgroundPane; -import com.fr.design.mainframe.backgroundpane.ImageBackgroundPane; -import com.fr.design.mainframe.backgroundpane.NullBackgroundPane; +import com.fr.design.mainframe.backgroundpane.BackgroundQuickPane; +import com.fr.design.mainframe.backgroundpane.ColorBackgroundQuickPane; +import com.fr.design.mainframe.backgroundpane.ImageBackgroundQuickPane; +import com.fr.design.mainframe.backgroundpane.NullBackgroundQuickPane; import com.fr.design.dialog.BasicPane; import com.fr.general.Background; import com.fr.general.Inter; @@ -33,7 +33,7 @@ public class ChartBackgroundPane extends BasicPane{ private static final long serialVersionUID = 6955952013135176051L; private static final double ALPHA_V = 100.0; protected static final int CHART_GRADIENT_WIDTH = 150; - protected List paneList; + protected List paneList; private UIComboBox typeComboBox; private UINumberDragPane transparent; @@ -41,7 +41,7 @@ public class ChartBackgroundPane extends BasicPane{ public ChartBackgroundPane() { typeComboBox = new UIComboBox(); final CardLayout cardlayout = new CardLayout(); - paneList = new ArrayList(); + paneList = new ArrayList(); initList(); @@ -54,7 +54,7 @@ public class ChartBackgroundPane extends BasicPane{ } }; for (int i = 0; i < paneList.size(); i++) { - BackgroundSettingPane pane = paneList.get(i); + BackgroundQuickPane pane = paneList.get(i); typeComboBox.addItem(pane.title4PopupWindow()); centerPane.add(pane, pane.title4PopupWindow()); } @@ -89,10 +89,10 @@ public class ChartBackgroundPane extends BasicPane{ } protected void initList() { - paneList.add(new NullBackgroundPane()); - paneList.add(new ColorBackgroundPane()); - paneList.add(new ImageBackgroundPane()); - paneList.add(new GradientPane(CHART_GRADIENT_WIDTH)); + paneList.add(new NullBackgroundQuickPane()); + paneList.add(new ColorBackgroundQuickPane()); + paneList.add(new ImageBackgroundQuickPane()); + paneList.add(new GradientQuickPane(CHART_GRADIENT_WIDTH)); } /** @@ -127,7 +127,7 @@ public class ChartBackgroundPane extends BasicPane{ double alpha = attr.getAlpha() * ALPHA_V; transparent.populateBean(alpha); for (int i = 0; i < paneList.size(); i++) { - BackgroundSettingPane pane = paneList.get(i); + BackgroundQuickPane pane = paneList.get(i); if (pane.accept(background)) { pane.populateBean(background); typeComboBox.setSelectedIndex(i); From 8c543728f6e5dec9a9cd7ad943f29a5d53106daf Mon Sep 17 00:00:00 2001 From: richie Date: Wed, 18 May 2016 17:09:06 +0800 Subject: [PATCH 16/54] =?UTF-8?q?=E5=BC=95=E7=94=A8=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/style/BackgroundNoImagePane.java | 25 +- .../fr/design/gui/style/BackgroundPane.java | 291 +++++++++--------- .../gui/style/BackgroundSpecialPane.java | 28 +- .../GradientBackgroundQuickPane.java} | 243 ++++++++------- .../gui/style/ChartBackgroundNoImagePane.java | 4 +- .../chart/gui/style/ChartBackgroundPane.java | 8 +- 6 files changed, 294 insertions(+), 305 deletions(-) rename designer_base/src/com/fr/design/{gui/style/GradientPane.java => mainframe/backgroundpane/GradientBackgroundQuickPane.java} (91%) diff --git a/designer_base/src/com/fr/design/gui/style/BackgroundNoImagePane.java b/designer_base/src/com/fr/design/gui/style/BackgroundNoImagePane.java index 7e2680eef4..00465d83e5 100644 --- a/designer_base/src/com/fr/design/gui/style/BackgroundNoImagePane.java +++ b/designer_base/src/com/fr/design/gui/style/BackgroundNoImagePane.java @@ -1,10 +1,10 @@ package com.fr.design.gui.style; import com.fr.design.event.UIObserverListener; -import com.fr.design.mainframe.backgroundpane.BackgroundSettingPane; -import com.fr.design.mainframe.backgroundpane.ColorBackgroundPane; -import com.fr.design.mainframe.backgroundpane.NullBackgroundPane; -import java.util.ArrayList; +import com.fr.design.mainframe.backgroundpane.BackgroundQuickPane; +import com.fr.design.mainframe.backgroundpane.ColorBackgroundQuickPane; +import com.fr.design.mainframe.backgroundpane.GradientBackgroundQuickPane; +import com.fr.design.mainframe.backgroundpane.NullBackgroundQuickPane; /** * Created with IntelliJ IDEA. @@ -18,8 +18,9 @@ public class BackgroundNoImagePane extends BackgroundPane{ super(); } - protected void initPaneList(){ - ColorBackgroundPane colorBackgroundPane = new ColorBackgroundPane(); + @Override + protected BackgroundQuickPane[] supportKindsOfBackgroundUI() { + ColorBackgroundQuickPane colorBackgroundPane = new ColorBackgroundQuickPane(); colorBackgroundPane.registerChangeListener(new UIObserverListener() { @Override @@ -27,7 +28,7 @@ public class BackgroundNoImagePane extends BackgroundPane{ fireStateChanged(); } }); - GradientPane gradientPane = new GradientPane(); + GradientBackgroundQuickPane gradientPane = new GradientBackgroundQuickPane(); gradientPane.registerChangeListener(new UIObserverListener() { @Override @@ -35,10 +36,10 @@ public class BackgroundNoImagePane extends BackgroundPane{ fireStateChanged(); } }); - paneList = new ArrayList(); - paneList.add(new NullBackgroundPane()); - paneList.add(colorBackgroundPane); - paneList.add(gradientPane); - + return new BackgroundQuickPane[]{ + new NullBackgroundQuickPane(), + colorBackgroundPane, + gradientPane + }; } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/gui/style/BackgroundPane.java b/designer_base/src/com/fr/design/gui/style/BackgroundPane.java index 8c03e6202f..1bf6d7e4b2 100644 --- a/designer_base/src/com/fr/design/gui/style/BackgroundPane.java +++ b/designer_base/src/com/fr/design/gui/style/BackgroundPane.java @@ -1,148 +1,145 @@ -package com.fr.design.gui.style; - -/* - * Copyright(c) 2001-2010, FineReport Inc, All Rights Reserved. - */ - -import java.awt.BorderLayout; -import java.awt.CardLayout; -import java.awt.Dimension; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.*; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - -import com.fr.base.Style; -import com.fr.design.gui.icombobox.UIComboBox; -import com.fr.design.mainframe.backgroundpane.BackgroundSettingPane; -import com.fr.design.mainframe.backgroundpane.ColorBackgroundPane; -import com.fr.design.mainframe.backgroundpane.ImageBackgroundPane; -import com.fr.design.mainframe.backgroundpane.NullBackgroundPane; -import com.fr.design.mainframe.backgroundpane.PatternBackgroundPane; -import com.fr.design.mainframe.backgroundpane.TextureBackgroundPane; -import com.fr.general.Background; -import com.fr.general.Inter; - -/** - * - * @author zhou - * @since 2012-5-28下午6:22:09 - */ -public class BackgroundPane extends AbstractBasicStylePane { - - private UIComboBox typeComboBox; - - protected List paneList; - - public BackgroundPane() { - this.initComponents(); - } - - protected void initComponents() { - this.setLayout(new BorderLayout(0, 6)); - typeComboBox = new UIComboBox(); - final CardLayout cardlayout = new CardLayout(); - this.add(typeComboBox, BorderLayout.NORTH); - - initPaneList(); - final JPanel centerPane = new JPanel(cardlayout) { - @Override - public Dimension getPreferredSize() {// AUGUST:使用当前面板的的高度 - int index = typeComboBox.getSelectedIndex(); - return new Dimension(super.getPreferredSize().width, paneList.get(index).getPreferredSize().height); - } - }; - for (int i = 0; i < paneList.size(); i++) { - BackgroundSettingPane pane = paneList.get(i); - typeComboBox.addItem(pane.title4PopupWindow()); - centerPane.add(pane, pane.title4PopupWindow()); - } - this.add(centerPane, BorderLayout.CENTER); - typeComboBox.addItemListener(new ItemListener() { - - @Override - public void itemStateChanged(ItemEvent e) { - cardlayout.show(centerPane, (String)typeComboBox.getSelectedItem()); - fireStateChanged(); - } - }); - } - - protected void initPaneList(){ - paneList = new ArrayList(); - paneList.add(new NullBackgroundPane()); - paneList.add(new ColorBackgroundPane()); - paneList.add(new TextureBackgroundPane()); - paneList.add(new PatternBackgroundPane()); - paneList.add(new ImageBackgroundPane()); - paneList.add(new GradientPane()); - } - - /** - * 事件监听 - * @param changeListener 事件 - */ - public void addChangeListener(ChangeListener changeListener) { - listenerList.add(ChangeListener.class, changeListener); - } - - /** - */ - protected void fireStateChanged() { - Object[] listeners = listenerList.getListenerList(); - ChangeEvent e = null; - - for (int i = listeners.length - 2; i >= 0; i -= 2) { - if (listeners[i] == ChangeListener.class) { - if (e == null) { - e = new ChangeEvent(this); - } - ((ChangeListener)listeners[i + 1]).stateChanged(e); - } - } - } - - /** - * 名称 - * @return 名称 - */ - public String title4PopupWindow() { - return Inter.getLocText("FR-Utils_Background"); - } - - /** - * Populate background. - */ - public void populateBean(Background background) { - for (int i = 0; i < paneList.size(); i++) { - BackgroundSettingPane pane = paneList.get(i); - if (pane.accept(background)) { - pane.populateBean(background); - typeComboBox.setSelectedIndex(i); - return; - } - } - } - - /** - * Update background. - */ - public Background update() { - return paneList.get(typeComboBox.getSelectedIndex()).updateBean(); - } - - @Override - public void populateBean(Style style) { - this.populateBean(style.getBackground()); - } - - @Override - public Style update(Style style) { - return style.deriveBackground(this.update()); - } - +package com.fr.design.gui.style; + +import com.fr.base.Style; +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.fun.BackgroundQuickUIProvider; +import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.design.mainframe.backgroundpane.*; +import com.fr.general.Background; +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.ItemEvent; +import java.awt.event.ItemListener; +import java.util.ArrayList; + +/** + * @author zhou + * @since 2012-5-28下午6:22:09 + */ +public class BackgroundPane extends AbstractBasicStylePane { + + private UIComboBox typeComboBox; + + protected BackgroundQuickPane[] paneList; + + public BackgroundPane() { + this.initComponents(); + } + + protected void initComponents() { + this.setLayout(new BorderLayout(0, 6)); + typeComboBox = new UIComboBox(); + final CardLayout cardlayout = new CardLayout(); + this.add(typeComboBox, BorderLayout.NORTH); + + paneList = supportKindsOfBackgroundUI(); + + final JPanel centerPane = new JPanel(cardlayout) { + @Override + public Dimension getPreferredSize() {// AUGUST:使用当前面板的的高度 + int index = typeComboBox.getSelectedIndex(); + return new Dimension(super.getPreferredSize().width, paneList[index].getPreferredSize().height); + } + }; + for (BackgroundQuickPane pane : paneList) { + typeComboBox.addItem(pane.title4PopupWindow()); + centerPane.add(pane, pane.title4PopupWindow()); + } + this.add(centerPane, BorderLayout.CENTER); + typeComboBox.addItemListener(new ItemListener() { + + @Override + public void itemStateChanged(ItemEvent e) { + cardlayout.show(centerPane, (String) typeComboBox.getSelectedItem()); + fireStateChanged(); + } + }); + } + + protected BackgroundQuickPane[] supportKindsOfBackgroundUI() { + java.util.List kinds = new ArrayList<>(); + kinds.add(new NullBackgroundQuickPane()); + kinds.add(new ColorBackgroundQuickPane()); + kinds.add(new TextureBackgroundQuickPane()); + kinds.add(new PatternBackgroundQuickPane()); + kinds.add(new ImageBackgroundQuickPane()); + kinds.add(new GradientBackgroundQuickPane()); + BackgroundQuickUIProvider[] providers = ExtraDesignClassManager.getInstance().getBackgroundQuickUIProviders(); + for (BackgroundQuickUIProvider provider : providers) { + kinds.add(provider.appearanceForBackground()); + + } + return kinds.toArray(new BackgroundQuickPane[kinds.size()]); + } + + + /** + * 事件监听 + * + * @param changeListener 事件 + */ + public void addChangeListener(ChangeListener changeListener) { + listenerList.add(ChangeListener.class, changeListener); + } + + /** + */ + protected void fireStateChanged() { + Object[] listeners = listenerList.getListenerList(); + ChangeEvent e = null; + + for (int i = listeners.length - 2; i >= 0; i -= 2) { + if (listeners[i] == ChangeListener.class) { + if (e == null) { + e = new ChangeEvent(this); + } + ((ChangeListener) listeners[i + 1]).stateChanged(e); + } + } + } + + /** + * 名称 + * + * @return 名称 + */ + public String title4PopupWindow() { + return Inter.getLocText("FR-Utils_Background"); + } + + /** + * Populate background. + */ + public void populateBean(Background background) { + for (int i = 0; i < paneList.length; i++) { + BackgroundQuickPane pane = paneList[i]; + if (pane.accept(background)) { + pane.populateBean(background); + typeComboBox.setSelectedIndex(i); + return; + } + } + } + + /** + * Update background. + */ + public Background update() { + return paneList[typeComboBox.getSelectedIndex()].updateBean(); + } + + @Override + public void populateBean(Style style) { + this.populateBean(style.getBackground()); + } + + @Override + public Style update(Style style) { + return style.deriveBackground(this.update()); + } + } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/gui/style/BackgroundSpecialPane.java b/designer_base/src/com/fr/design/gui/style/BackgroundSpecialPane.java index 59efe3a531..43c1d133c2 100644 --- a/designer_base/src/com/fr/design/gui/style/BackgroundSpecialPane.java +++ b/designer_base/src/com/fr/design/gui/style/BackgroundSpecialPane.java @@ -1,12 +1,7 @@ package com.fr.design.gui.style; import com.fr.design.event.UIObserverListener; -import com.fr.design.mainframe.backgroundpane.BackgroundSettingPane; -import com.fr.design.mainframe.backgroundpane.ColorBackgroundPane; -import com.fr.design.mainframe.backgroundpane.ImageBackgroundPane; -import com.fr.design.mainframe.backgroundpane.NullBackgroundPane; - -import java.util.ArrayList; +import com.fr.design.mainframe.backgroundpane.*; /** * Created with IntelliJ IDEA. @@ -20,8 +15,9 @@ public class BackgroundSpecialPane extends BackgroundPane{ super(); } - protected void initPaneList(){ - ColorBackgroundPane colorBackgroundPane = new ColorBackgroundPane(); + @Override + protected BackgroundQuickPane[] supportKindsOfBackgroundUI() { + ColorBackgroundQuickPane colorBackgroundPane = new ColorBackgroundQuickPane(); colorBackgroundPane.registerChangeListener(new UIObserverListener() { @Override @@ -29,7 +25,7 @@ public class BackgroundSpecialPane extends BackgroundPane{ fireStateChanged(); } }); - ImageBackgroundPane imageBackgroundPane = new ImageBackgroundPane(); + ImageBackgroundQuickPane imageBackgroundPane = new ImageBackgroundQuickPane(); imageBackgroundPane.registerChangeListener(new UIObserverListener() { @Override @@ -37,18 +33,18 @@ public class BackgroundSpecialPane extends BackgroundPane{ fireStateChanged(); } }); - GradientPane gradientPane = new GradientPane(); + GradientBackgroundQuickPane gradientPane = new GradientBackgroundQuickPane(); gradientPane.registerChangeListener(new UIObserverListener() { @Override public void doChange() { fireStateChanged(); } }); - paneList = new ArrayList(); - paneList.add(new NullBackgroundPane()); - paneList.add(colorBackgroundPane); - paneList.add(imageBackgroundPane); - paneList.add(gradientPane); - + return new BackgroundQuickPane[] { + new NullBackgroundQuickPane(), + colorBackgroundPane, + imageBackgroundPane, + gradientPane + }; } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/gui/style/GradientPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/GradientBackgroundQuickPane.java similarity index 91% rename from designer_base/src/com/fr/design/gui/style/GradientPane.java rename to designer_base/src/com/fr/design/mainframe/backgroundpane/GradientBackgroundQuickPane.java index ed713ffe70..08ef9e61c4 100644 --- a/designer_base/src/com/fr/design/gui/style/GradientPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/GradientBackgroundQuickPane.java @@ -1,123 +1,122 @@ -package com.fr.design.gui.style; - -import com.fr.base.background.GradientBackground; -import com.fr.design.event.UIObserverListener; -import com.fr.design.gui.ibutton.UIButtonGroup; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.layout.TableLayout; -import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.mainframe.backgroundpane.BackgroundSettingPane; -import com.fr.general.Background; -import com.fr.general.Inter; -import com.fr.design.style.background.gradient.GradientBar; - -import javax.swing.*; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import java.awt.*; - -/** - * @author zhou - * @since 2012-5-30上午10:36:21 - */ -public class GradientPane extends BackgroundSettingPane { - private static final long serialVersionUID = -6854603990673031897L; - - private static final int DEFAULT_GRADIENT_WIDTH = 185; - - private int gradientBarWidth = DEFAULT_GRADIENT_WIDTH; - - private GradientBar gradientBar; - private UIButtonGroup directionPane; - - public GradientPane() { - constructPane(); - } - - public GradientPane(int gradientBarWidth) { - this.gradientBarWidth = gradientBarWidth; - constructPane(); - } - - private void constructPane(){ - String[] textArray = {Inter.getLocText("Utils-Left_to_Right"), Inter.getLocText("Utils-Top_to_Bottom")}; - Integer[] valueArray = {GradientBackground.LEFT2RIGHT, GradientBackground.TOP2BOTTOM}; - directionPane = new UIButtonGroup(textArray, valueArray); - directionPane.setSelectedIndex(0); - gradientBar = new GradientBar(4, this.gradientBarWidth); - - double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double[] columnSize = {p, f}; - double[] rowSize = {p, p,}; - - Component[][] components = new Component[][]{ - new Component[]{gradientBar, null}, - new Component[]{new UILabel(Inter.getLocText("Gradient-Direction") + ":"), directionPane} - }; - JPanel Gradient = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - this.setLayout(new BorderLayout()); - this.add(Gradient, BorderLayout.CENTER); - } - - public void populateBean(Background background) { - GradientBackground bg = (GradientBackground) background; - this.gradientBar.getSelectColorPointBtnP1().setColorInner(bg.getStartColor()); - this.gradientBar.getSelectColorPointBtnP2().setColorInner(bg.getEndColor()); - directionPane.setSelectedItem(bg.getDirection()); - if (bg.isUseCell()) { - return; - } - double startValue = (double) bg.getBeginPlace(); - double endValue = (double) bg.getFinishPlace(); - gradientBar.setStartValue(startValue); - gradientBar.setEndValue(endValue); - if(this.gradientBar.getSelectColorPointBtnP1() != null && this.gradientBar.getSelectColorPointBtnP2() != null){ - this.gradientBar.getSelectColorPointBtnP1().setX(startValue); - this.gradientBar.getSelectColorPointBtnP2().setX(endValue); - } - this.gradientBar.repaint(); - } - - public GradientBackground updateBean() { - GradientBackground gb = new GradientBackground(gradientBar.getSelectColorPointBtnP1().getColorInner(), gradientBar.getSelectColorPointBtnP2().getColorInner()); - gb.setDirection(directionPane.getSelectedItem()); - if (gradientBar.isOriginalPlace()) { - gb.setUseCell(true); - } else { - gb.setUseCell(false); - gb.setBeginPlace((float) gradientBar.getStartValue()); - gb.setFinishPlace((float) gradientBar.getEndValue()); - } - return gb; - } - - /** - * 给组件登记一个观察者监听事件 - * - * @param listener 观察者监听事件 - */ - public void registerChangeListener(final UIObserverListener listener) { - gradientBar.addChangeListener(new ChangeListener() { - public void stateChanged(ChangeEvent e) { - listener.doChange(); - } - }); - directionPane.addChangeListener(new ChangeListener() { - public void stateChanged(ChangeEvent e) { - listener.doChange(); - } - }); - } - - @Override - public boolean accept(Background background) { - return background instanceof GradientBackground; - } - - @Override - public String title4PopupWindow() { - return Inter.getLocText("Gradient-Color"); - } - +package com.fr.design.mainframe.backgroundpane; + +import com.fr.base.background.GradientBackground; +import com.fr.design.event.UIObserverListener; +import com.fr.design.gui.ibutton.UIButtonGroup; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.style.background.gradient.GradientBar; +import com.fr.general.Background; +import com.fr.general.Inter; + +import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.*; + +/** + * @author zhou + * @since 2012-5-30上午10:36:21 + */ +public class GradientBackgroundQuickPane extends BackgroundQuickPane { + private static final long serialVersionUID = -6854603990673031897L; + + private static final int DEFAULT_GRADIENT_WIDTH = 185; + + private int gradientBarWidth = DEFAULT_GRADIENT_WIDTH; + + private GradientBar gradientBar; + private UIButtonGroup directionPane; + + public GradientBackgroundQuickPane() { + constructPane(); + } + + public GradientBackgroundQuickPane(int gradientBarWidth) { + this.gradientBarWidth = gradientBarWidth; + constructPane(); + } + + private void constructPane(){ + String[] textArray = {Inter.getLocText("Utils-Left_to_Right"), Inter.getLocText("Utils-Top_to_Bottom")}; + Integer[] valueArray = {GradientBackground.LEFT2RIGHT, GradientBackground.TOP2BOTTOM}; + directionPane = new UIButtonGroup(textArray, valueArray); + directionPane.setSelectedIndex(0); + gradientBar = new GradientBar(4, this.gradientBarWidth); + + double p = TableLayout.PREFERRED; + double f = TableLayout.FILL; + double[] columnSize = {p, f}; + double[] rowSize = {p, p,}; + + Component[][] components = new Component[][]{ + new Component[]{gradientBar, null}, + new Component[]{new UILabel(Inter.getLocText("Gradient-Direction") + ":"), directionPane} + }; + JPanel Gradient = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); + this.setLayout(new BorderLayout()); + this.add(Gradient, BorderLayout.CENTER); + } + + public void populateBean(Background background) { + GradientBackground bg = (GradientBackground) background; + this.gradientBar.getSelectColorPointBtnP1().setColorInner(bg.getStartColor()); + this.gradientBar.getSelectColorPointBtnP2().setColorInner(bg.getEndColor()); + directionPane.setSelectedItem(bg.getDirection()); + if (bg.isUseCell()) { + return; + } + double startValue = (double) bg.getBeginPlace(); + double endValue = (double) bg.getFinishPlace(); + gradientBar.setStartValue(startValue); + gradientBar.setEndValue(endValue); + if(this.gradientBar.getSelectColorPointBtnP1() != null && this.gradientBar.getSelectColorPointBtnP2() != null){ + this.gradientBar.getSelectColorPointBtnP1().setX(startValue); + this.gradientBar.getSelectColorPointBtnP2().setX(endValue); + } + this.gradientBar.repaint(); + } + + public GradientBackground updateBean() { + GradientBackground gb = new GradientBackground(gradientBar.getSelectColorPointBtnP1().getColorInner(), gradientBar.getSelectColorPointBtnP2().getColorInner()); + gb.setDirection(directionPane.getSelectedItem()); + if (gradientBar.isOriginalPlace()) { + gb.setUseCell(true); + } else { + gb.setUseCell(false); + gb.setBeginPlace((float) gradientBar.getStartValue()); + gb.setFinishPlace((float) gradientBar.getEndValue()); + } + return gb; + } + + /** + * 给组件登记一个观察者监听事件 + * + * @param listener 观察者监听事件 + */ + public void registerChangeListener(final UIObserverListener listener) { + gradientBar.addChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + listener.doChange(); + } + }); + directionPane.addChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + listener.doChange(); + } + }); + } + + @Override + public boolean accept(Background background) { + return background instanceof GradientBackground; + } + + @Override + public String title4PopupWindow() { + return Inter.getLocText("Gradient-Color"); + } + } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundNoImagePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundNoImagePane.java index 532f0d2166..439d2efe64 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundNoImagePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundNoImagePane.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.chart.gui.style; -import com.fr.design.gui.style.GradientQuickPane; import com.fr.design.mainframe.backgroundpane.ColorBackgroundQuickPane; +import com.fr.design.mainframe.backgroundpane.GradientBackgroundQuickPane; import com.fr.design.mainframe.backgroundpane.NullBackgroundQuickPane; /** @@ -18,6 +18,6 @@ public class ChartBackgroundNoImagePane extends ChartBackgroundPane { protected void initList() { paneList.add(new NullBackgroundQuickPane()); paneList.add(new ColorBackgroundQuickPane()); - paneList.add(new GradientQuickPane(CHART_GRADIENT_WIDTH)); + paneList.add(new GradientBackgroundQuickPane(CHART_GRADIENT_WIDTH)); } } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundPane.java index ef61297100..13c4269e8e 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundPane.java @@ -4,13 +4,9 @@ import com.fr.chart.chartglyph.GeneralInfo; import com.fr.design.gui.frpane.UINumberDragPane; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.style.GradientQuickPane; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.mainframe.backgroundpane.BackgroundQuickPane; -import com.fr.design.mainframe.backgroundpane.ColorBackgroundQuickPane; -import com.fr.design.mainframe.backgroundpane.ImageBackgroundQuickPane; -import com.fr.design.mainframe.backgroundpane.NullBackgroundQuickPane; +import com.fr.design.mainframe.backgroundpane.*; import com.fr.design.dialog.BasicPane; import com.fr.general.Background; import com.fr.general.Inter; @@ -92,7 +88,7 @@ public class ChartBackgroundPane extends BasicPane{ paneList.add(new NullBackgroundQuickPane()); paneList.add(new ColorBackgroundQuickPane()); paneList.add(new ImageBackgroundQuickPane()); - paneList.add(new GradientQuickPane(CHART_GRADIENT_WIDTH)); + paneList.add(new GradientBackgroundQuickPane(CHART_GRADIENT_WIDTH)); } /** From 27086ced570966ac064185c04c67fde45a447ab1 Mon Sep 17 00:00:00 2001 From: zack Date: Wed, 18 May 2016 17:32:02 +0800 Subject: [PATCH 17/54] =?UTF-8?q?=E8=AF=AF=E5=88=A0=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/data/datapane/connect/ConnectionListPane.java | 8 ++++++++ 1 file changed, 8 insertions(+) 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 725a65ad33..91d362a481 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 @@ -150,4 +150,12 @@ public class ConnectionListPane extends JListControlPane { datasourceManager.putConnection(nameObject.getName(), (Connection) nameObject.getObject()); } } + /** + * 设置选中项 + * + * @param index 选中项的序列号 + */ + public void setSelectedIndex(int index) { + nameableList.setSelectedIndex(index); + } } \ No newline at end of file From 52336f6123c22191cc2f386542ba088439999db8 Mon Sep 17 00:00:00 2001 From: zack Date: Wed, 18 May 2016 17:44:02 +0800 Subject: [PATCH 18/54] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/data/datapane/TableDataPaneListPane.java | 10 ---------- .../data/datapane/connect/ConnectionListPane.java | 8 -------- .../fr/design/gui/controlpane/JListControlPane.java | 8 ++++++++ 3 files changed, 8 insertions(+), 18 deletions(-) diff --git a/designer_base/src/com/fr/design/data/datapane/TableDataPaneListPane.java b/designer_base/src/com/fr/design/data/datapane/TableDataPaneListPane.java index 90d6ca5dff..97240dd945 100644 --- a/designer_base/src/com/fr/design/data/datapane/TableDataPaneListPane.java +++ b/designer_base/src/com/fr/design/data/datapane/TableDataPaneListPane.java @@ -273,14 +273,4 @@ public class TableDataPaneListPane extends JListControlPane implements TableData public JPanel getPanel() { return this; } - - /** - * 设置选中项 - * - * @param index 选中项的序列号 - */ - @Override - public void setSelectedIndex(int index) { - nameableList.setSelectedIndex(index); - } } \ 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 91d362a481..725a65ad33 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 @@ -150,12 +150,4 @@ public class ConnectionListPane extends JListControlPane { datasourceManager.putConnection(nameObject.getName(), (Connection) nameObject.getObject()); } } - /** - * 设置选中项 - * - * @param index 选中项的序列号 - */ - public void setSelectedIndex(int index) { - nameableList.setSelectedIndex(index); - } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java b/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java index 3ed10c3b1a..dd91b7824b 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java +++ b/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java @@ -954,5 +954,13 @@ public abstract class JListControlPane extends JControlPane { } return false; } + /** + * 设置选中项 + * + * @param index 选中项的序列号 + */ + public void setSelectedIndex(int index) { + nameableList.setSelectedIndex(index); + } } \ No newline at end of file From 3d5b65368a5b1c017b76324d3ae6e37d22d27d66 Mon Sep 17 00:00:00 2001 From: richie Date: Wed, 18 May 2016 19:18:22 +0800 Subject: [PATCH 19/54] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E8=83=8C?= =?UTF-8?q?=E6=99=AF=E7=9A=84=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/designer.iml | 1 - designer_base/designer_base.iml | 2 +- .../com/fr/design/style/background/BackgroundFactory.java | 6 +++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/designer/designer.iml b/designer/designer.iml index 276f91e810..c798a6fe09 100644 --- a/designer/designer.iml +++ b/designer/designer.iml @@ -17,6 +17,5 @@ - \ No newline at end of file diff --git a/designer_base/designer_base.iml b/designer_base/designer_base.iml index 15ff9cc8c6..d20642b282 100644 --- a/designer_base/designer_base.iml +++ b/designer_base/designer_base.iml @@ -1,7 +1,7 @@ - + diff --git a/designer_base/src/com/fr/design/style/background/BackgroundFactory.java b/designer_base/src/com/fr/design/style/background/BackgroundFactory.java index c41639c8a2..c44752203a 100644 --- a/designer_base/src/com/fr/design/style/background/BackgroundFactory.java +++ b/designer_base/src/com/fr/design/style/background/BackgroundFactory.java @@ -9,7 +9,7 @@ import com.fr.design.style.background.impl.*; import com.fr.general.Background; import com.fr.general.Inter; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; @@ -18,8 +18,8 @@ import java.util.Set; */ public class BackgroundFactory { - private static Map, BackgroundUIWrapper> map = new HashMap<>(); - private static Map, BackgroundUIWrapper> browser = new HashMap<>(); + private static Map, BackgroundUIWrapper> map = new LinkedHashMap<>(); + private static Map, BackgroundUIWrapper> browser = new LinkedHashMap<>(); static { registerUniversal(map); From 3d73fade2ddd1d5a69298a7042db6e94647aaf43 Mon Sep 17 00:00:00 2001 From: vito Date: Wed, 18 May 2016 19:21:06 +0800 Subject: [PATCH 20/54] =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E5=88=86=E7=B1=BBapi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/extra/PluginWebBridge.java | 10 ++++++ .../exe/GetPluginCategoriesExecutor.java | 35 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 designer_base/src/com/fr/design/extra/exe/GetPluginCategoriesExecutor.java diff --git a/designer_base/src/com/fr/design/extra/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index 25d9c20cf5..5c7c2e8a37 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/PluginWebBridge.java @@ -243,6 +243,16 @@ public class PluginWebBridge { new Thread(task).start(); } + /** + * 在线获取插件分类 + * + * @param callback 回调函数 + */ + public void getPluginCategories(final JSObject callback) { + Task task = new PluginTask<>(webEngine, callback, new GetPluginCategoriesExecutor()); + new Thread(task).start(); + } + /** * 展示一个重启的对话框(少用,莫名其妙会有bug) * diff --git a/designer_base/src/com/fr/design/extra/exe/GetPluginCategoriesExecutor.java b/designer_base/src/com/fr/design/extra/exe/GetPluginCategoriesExecutor.java new file mode 100644 index 0000000000..81bdb8f8c7 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/exe/GetPluginCategoriesExecutor.java @@ -0,0 +1,35 @@ +package com.fr.design.extra.exe; + +import com.fr.design.extra.Process; +import com.fr.general.SiteCenter; +import com.fr.general.http.HttpClient; + +/** + * Created by vito on 16/5/16. + */ +public class GetPluginCategoriesExecutor implements Executor { + private String result = "[]"; + + @Override + public String getTaskFinishMessage() { + return result; + } + + @Override + public Command[] getCommands() { + return new Command[]{ + new Command() { + @Override + public String getExecuteMessage() { + return null; + } + + @Override + public void run(Process process) { + HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("plugin.category")); + result = httpClient.getResponseText(); + } + } + }; + } +} From 6c3c766fdc5cbbf8d8db5834b09ae647b1a8d16d Mon Sep 17 00:00:00 2001 From: richie Date: Wed, 18 May 2016 19:23:38 +0800 Subject: [PATCH 21/54] =?UTF-8?q?=E6=96=B9=E6=B3=95=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E4=B8=80=E7=82=B9=E5=B0=8F=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/style/background/BackgroundFactory.java | 2 +- .../fr/design/style/background/BackgroundPane4Browser.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/style/background/BackgroundFactory.java b/designer_base/src/com/fr/design/style/background/BackgroundFactory.java index c44752203a..2706f81b1e 100644 --- a/designer_base/src/com/fr/design/style/background/BackgroundFactory.java +++ b/designer_base/src/com/fr/design/style/background/BackgroundFactory.java @@ -96,7 +96,7 @@ public class BackgroundFactory { return createByWrapper(wrapper); } - public static BackgroundDetailPane createBrowerIfAbsent(int index) { + public static BackgroundDetailPane createBrowserIfAbsent(int index) { for (BackgroundUIWrapper wrapper : browser.values()) { if (wrapper.getIndex() == index) { return createByWrapper(wrapper); diff --git a/designer_base/src/com/fr/design/style/background/BackgroundPane4Browser.java b/designer_base/src/com/fr/design/style/background/BackgroundPane4Browser.java index 490cb82e49..705bbc2dea 100644 --- a/designer_base/src/com/fr/design/style/background/BackgroundPane4Browser.java +++ b/designer_base/src/com/fr/design/style/background/BackgroundPane4Browser.java @@ -16,7 +16,7 @@ public class BackgroundPane4Browser extends BackgroundPane { protected void initTabPane() { int index = 0; for (Class key : BackgroundFactory.browserKindsOfKey()) { - BackgroundUIWrapper wrapper = BackgroundFactory.getWrapper(key); + BackgroundUIWrapper wrapper = BackgroundFactory.getBrosweWrapper(key); wrapper.setIndex(index++); tabbedPane.addTab(Inter.getLocText(wrapper.getTitle()), FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane()); } @@ -37,7 +37,7 @@ public class BackgroundPane4Browser extends BackgroundPane { protected BackgroundDetailPane getTabItemPaneByIndex(int index) { BackgroundDetailPane quickPane = cacheMap.get(index); if (quickPane == null) { - quickPane = BackgroundFactory.createBrowerIfAbsent(index); + quickPane = BackgroundFactory.createBrowserIfAbsent(index); tabbedPane.setComponentAt(index, quickPane); cacheMap.put(index, quickPane); quickPane.addChangeListener(backgroundChangeListener); From a5929659051b1b0a56824d5f79c368a7802c36c6 Mon Sep 17 00:00:00 2001 From: fr_shine Date: Thu, 19 May 2016 11:50:31 +0800 Subject: [PATCH 22/54] =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chart/gui/data/table/SeriesNameUseFieldNamePane.java | 6 +++++- .../chart/gui/data/table/SeriesNameUseFieldValuePane.java | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldNamePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldNamePane.java index f9258bc81e..b8fb5ae745 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldNamePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldNamePane.java @@ -224,6 +224,10 @@ public class SeriesNameUseFieldNamePane extends FurtherBasicBeanPane data = seriesDataPane.updateBean(); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldValuePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldValuePane.java index a1eed21384..2d5099db4d 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldValuePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldValuePane.java @@ -278,7 +278,7 @@ public class SeriesNameUseFieldValuePane extends FurtherBasicBeanPane Date: Thu, 19 May 2016 18:35:15 +0800 Subject: [PATCH 23/54] =?UTF-8?q?=E5=8A=A0=E4=B8=AA=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/fun/TableDataPaneProcessor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/fun/TableDataPaneProcessor.java b/designer_base/src/com/fr/design/fun/TableDataPaneProcessor.java index dd4c8068a1..3ed05bdf70 100644 --- a/designer_base/src/com/fr/design/fun/TableDataPaneProcessor.java +++ b/designer_base/src/com/fr/design/fun/TableDataPaneProcessor.java @@ -25,6 +25,6 @@ public interface TableDataPaneProcessor extends Level { * 服务器数据集面板(模板数据集面板) * @return 服务器数据集面板 */ - TableDataPaneController createServerTableDataPane(); + TableDataPaneController createServerTableDataPane(DesignModelAdapter tc); } From eafb2c51ade3dd3a6de5c00b27b3eae4734ca290 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9D=99=E5=90=AC=E7=A6=85=E9=B8=A3?= Date: Fri, 20 May 2016 07:21:40 +0800 Subject: [PATCH 24/54] sk c --- designer_base/src/com/fr/design/mingche.java | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 designer_base/src/com/fr/design/mingche.java diff --git a/designer_base/src/com/fr/design/mingche.java b/designer_base/src/com/fr/design/mingche.java new file mode 100644 index 0000000000..da6ffa948c --- /dev/null +++ b/designer_base/src/com/fr/design/mingche.java @@ -0,0 +1,6 @@ +package com.fr.design; + +public class mingche +{ + +} From 31421f64e3189222545e5bacde453a5c335d2f7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9D=99=E5=90=AC=E7=A6=85=E9=B8=A3?= Date: Fri, 20 May 2016 07:27:21 +0800 Subject: [PATCH 25/54] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E7=A4=BE?= =?UTF-8?q?=E5=B7=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/community/BBSAction.java | 74 + .../design/actions/community/BugAction.java | 72 + .../design/actions/community/NeedAction.java | 70 + .../actions/community/QuestionAction.java | 69 + .../design/actions/community/SignAction.java | 70 + .../fr/design/actions/community/UpAction.java | 70 + .../design/actions/community/VideoAction.java | 70 + .../design/actions/help/TutorialAction.java | 9 +- .../src/com/fr/design/images/bbs.png | Bin 0 -> 1352 bytes .../src/com/fr/design/images/bug.png | Bin 0 -> 1519 bytes .../src/com/fr/design/images/help.png | Bin 0 -> 522 bytes .../src/com/fr/design/images/need.png | Bin 0 -> 1454 bytes .../src/com/fr/design/images/questions.png | Bin 0 -> 1381 bytes .../src/com/fr/design/images/signature.png | Bin 0 -> 403 bytes .../src/com/fr/design/images/update.png | Bin 0 -> 1433 bytes .../src/com/fr/design/images/video.png | Bin 0 -> 1124 bytes .../mainframe/toolbar/ToolBarMenuDock.java | 40 +- .../com/fr/general/locale/fr_zh_CN.properties | 4084 +++++++++++++++++ 18 files changed, 4620 insertions(+), 8 deletions(-) create mode 100644 designer_base/src/com/fr/design/actions/community/BBSAction.java create mode 100644 designer_base/src/com/fr/design/actions/community/BugAction.java create mode 100644 designer_base/src/com/fr/design/actions/community/NeedAction.java create mode 100644 designer_base/src/com/fr/design/actions/community/QuestionAction.java create mode 100644 designer_base/src/com/fr/design/actions/community/SignAction.java create mode 100644 designer_base/src/com/fr/design/actions/community/UpAction.java create mode 100644 designer_base/src/com/fr/design/actions/community/VideoAction.java create mode 100644 designer_base/src/com/fr/design/images/bbs.png create mode 100644 designer_base/src/com/fr/design/images/bug.png create mode 100644 designer_base/src/com/fr/design/images/help.png create mode 100644 designer_base/src/com/fr/design/images/need.png create mode 100644 designer_base/src/com/fr/design/images/questions.png create mode 100644 designer_base/src/com/fr/design/images/signature.png create mode 100644 designer_base/src/com/fr/design/images/update.png create mode 100644 designer_base/src/com/fr/design/images/video.png create mode 100644 designer_base/src/com/fr/general/locale/fr_zh_CN.properties diff --git a/designer_base/src/com/fr/design/actions/community/BBSAction.java b/designer_base/src/com/fr/design/actions/community/BBSAction.java new file mode 100644 index 0000000000..1f13c7000e --- /dev/null +++ b/designer_base/src/com/fr/design/actions/community/BBSAction.java @@ -0,0 +1,74 @@ +package com.fr.design.actions.community; + +import java.awt.Desktop; +import java.awt.event.ActionEvent; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; + +import javax.swing.JOptionPane; +import javax.swing.KeyStroke; + +import com.fr.base.BaseUtils; +import com.fr.base.FRContext; +import com.fr.design.actions.UpdateAction; +import com.fr.design.menu.MenuKeySet; +import com.fr.general.Inter; +import com.fr.general.SiteCenter; +import com.fr.stable.StringUtils; + +public class BBSAction extends UpdateAction +{ + + + public BBSAction() + { + this.setMenuKeySet(BBS); + this.setName(getMenuKeySet().getMenuName()); + this.setMnemonic(getMenuKeySet().getMnemonic()); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/bbs.png")); + // TODO Auto-generated constructor stub + } + + /** + * 动作 + * @param e 事件 + */ + @Override + public void actionPerformed(ActionEvent arg0) + { + String url = SiteCenter.getInstance().acquireUrlByKind("bbs"); + if (StringUtils.isEmpty(url)) { + FRContext.getLogger().info("The URL is empty!"); + return; + } + try { + Desktop.getDesktop().browse(new URI(url)); + } catch (IOException exp) { + JOptionPane.showMessageDialog(null, Inter.getLocText("Set_default_browser")); + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + } catch (URISyntaxException exp) { + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + } catch (Exception exp) { + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FRContext.getLogger().error("Can not open the browser for URL: " + url); + } + } + public static final MenuKeySet BBS = new MenuKeySet() { + @Override + public char getMnemonic() { + return 'B'; + } + + @Override + public String getMenuName() { + return Inter.getLocText("FR-Designer_COMMUNITY_BBS"); + } + + @Override + public KeyStroke getKeyStroke() { + return null; + } + }; + +} diff --git a/designer_base/src/com/fr/design/actions/community/BugAction.java b/designer_base/src/com/fr/design/actions/community/BugAction.java new file mode 100644 index 0000000000..f399bae980 --- /dev/null +++ b/designer_base/src/com/fr/design/actions/community/BugAction.java @@ -0,0 +1,72 @@ +package com.fr.design.actions.community; + +import java.awt.Desktop; +import java.awt.event.ActionEvent; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; + +import javax.swing.JOptionPane; +import javax.swing.KeyStroke; + +import com.fr.base.BaseUtils; +import com.fr.base.FRContext; +import com.fr.design.actions.UpdateAction; +import com.fr.design.menu.MenuKeySet; +import com.fr.general.Inter; +import com.fr.general.SiteCenter; +import com.fr.stable.StringUtils; + +public class BugAction extends UpdateAction +{ + + public BugAction() + { this.setMenuKeySet(BUG); + this.setName(getMenuKeySet().getMenuName()); + this.setMnemonic(getMenuKeySet().getMnemonic()); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/bug.png")); + // TODO Auto-generated constructor stub +} + +@Override +public void actionPerformed(ActionEvent arg0) +{ + String url = SiteCenter.getInstance().acquireUrlByKind("bbs.bugs"); + if (StringUtils.isEmpty(url)) { + FRContext.getLogger().info("The URL is empty!"); + return; + } + try { + Desktop.getDesktop().browse(new URI(url)); + } catch (IOException exp) { + JOptionPane.showMessageDialog(null, Inter.getLocText("Set_default_browser")); + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + } catch (URISyntaxException exp) { + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + } catch (Exception exp) { + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FRContext.getLogger().error("Can not open the browser for URL: " + url); + } + +} + public static final MenuKeySet BUG = new MenuKeySet() { + + @Override + public String getMenuName() { + return Inter.getLocText("FR-Designer_COMMUNITY_BUG"); + } + + @Override + public KeyStroke getKeyStroke() { + return null; + } + + @Override + public char getMnemonic() + { + // TODO Auto-generated method stub + return 'U'; + } + }; + +} diff --git a/designer_base/src/com/fr/design/actions/community/NeedAction.java b/designer_base/src/com/fr/design/actions/community/NeedAction.java new file mode 100644 index 0000000000..c7f4f54507 --- /dev/null +++ b/designer_base/src/com/fr/design/actions/community/NeedAction.java @@ -0,0 +1,70 @@ +package com.fr.design.actions.community; + +import java.awt.Desktop; +import java.awt.event.ActionEvent; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; + +import javax.swing.JOptionPane; +import javax.swing.KeyStroke; + +import com.fr.base.BaseUtils; +import com.fr.base.FRContext; +import com.fr.design.actions.UpdateAction; +import com.fr.design.menu.MenuKeySet; +import com.fr.general.Inter; +import com.fr.general.SiteCenter; +import com.fr.stable.StringUtils; + +public class NeedAction extends UpdateAction +{ + + public NeedAction() + { + this.setMenuKeySet(NEED); + this.setName(getMenuKeySet().getMenuName()); + this.setMnemonic(getMenuKeySet().getMnemonic()); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/need.png")); + // TODO Auto-generated constructor stub + } + + @Override + public void actionPerformed(ActionEvent arg0) + { + String url = SiteCenter.getInstance().acquireUrlByKind("bbs.needs"); + if (StringUtils.isEmpty(url)) { + FRContext.getLogger().info("The URL is empty!"); + return; + } + try { + Desktop.getDesktop().browse(new URI(url)); + } catch (IOException exp) { + JOptionPane.showMessageDialog(null, Inter.getLocText("Set_default_browser")); + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + } catch (URISyntaxException exp) { + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + } catch (Exception exp) { + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FRContext.getLogger().error("Can not open the browser for URL: " + url); + } + + } + public static final MenuKeySet NEED = new MenuKeySet() { + @Override + public char getMnemonic() { + return 'N'; + } + + @Override + public String getMenuName() { + return Inter.getLocText("FR-Designer_COMMUNITY_NEED"); + } + + @Override + public KeyStroke getKeyStroke() { + return null; + } + }; + +} diff --git a/designer_base/src/com/fr/design/actions/community/QuestionAction.java b/designer_base/src/com/fr/design/actions/community/QuestionAction.java new file mode 100644 index 0000000000..f1a9d7c0a6 --- /dev/null +++ b/designer_base/src/com/fr/design/actions/community/QuestionAction.java @@ -0,0 +1,69 @@ +package com.fr.design.actions.community; + +import java.awt.Desktop; +import java.awt.event.ActionEvent; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; + +import javax.swing.JOptionPane; +import javax.swing.KeyStroke; + +import com.fr.base.BaseUtils; +import com.fr.base.FRContext; +import com.fr.design.actions.UpdateAction; +import com.fr.design.menu.MenuKeySet; +import com.fr.general.Inter; +import com.fr.general.SiteCenter; +import com.fr.stable.StringUtils; + +public class QuestionAction extends UpdateAction +{ + + public QuestionAction() + { this.setMenuKeySet(QUESTIONS); + this.setName(getMenuKeySet().getMenuName()); + this.setMnemonic(getMenuKeySet().getMnemonic()); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/questions.png")); + // TODO Auto-generated constructor stub +} + +@Override +public void actionPerformed(ActionEvent arg0) +{ + String url = SiteCenter.getInstance().acquireUrlByKind("bbs.questions"); + if (StringUtils.isEmpty(url)) { + FRContext.getLogger().info("The URL is empty!"); + return; + } + try { + Desktop.getDesktop().browse(new URI(url)); + } catch (IOException exp) { + JOptionPane.showMessageDialog(null, Inter.getLocText("Set_default_browser")); + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + } catch (URISyntaxException exp) { + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + } catch (Exception exp) { + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FRContext.getLogger().error("Can not open the browser for URL: " + url); + } + +} + public static final MenuKeySet QUESTIONS = new MenuKeySet() { + @Override + public char getMnemonic() { + return 'Q'; + } + + @Override + public String getMenuName() { + return Inter.getLocText("FR-Designer_COMMUNITY_QUESTIONS"); + } + + @Override + public KeyStroke getKeyStroke() { + return null; + } + }; + +} diff --git a/designer_base/src/com/fr/design/actions/community/SignAction.java b/designer_base/src/com/fr/design/actions/community/SignAction.java new file mode 100644 index 0000000000..e216a90290 --- /dev/null +++ b/designer_base/src/com/fr/design/actions/community/SignAction.java @@ -0,0 +1,70 @@ +package com.fr.design.actions.community; + +import java.awt.Desktop; +import java.awt.event.ActionEvent; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; + +import javax.swing.JOptionPane; +import javax.swing.KeyStroke; + +import com.fr.base.BaseUtils; +import com.fr.base.FRContext; +import com.fr.design.actions.UpdateAction; +import com.fr.design.menu.MenuKeySet; +import com.fr.general.Inter; +import com.fr.general.SiteCenter; +import com.fr.stable.StringUtils; + +public class SignAction extends UpdateAction +{ + + public SignAction() + { + this.setMenuKeySet(SIGN); + this.setName(getMenuKeySet().getMenuName()); + this.setMnemonic(getMenuKeySet().getMnemonic()); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/signature.png")); + // TODO Auto-generated constructor stub + } + + @Override + public void actionPerformed(ActionEvent arg0) + { + String url = SiteCenter.getInstance().acquireUrlByKind("bbs.aut"); + if (StringUtils.isEmpty(url)) { + FRContext.getLogger().info("The URL is empty!"); + return; + } + try { + Desktop.getDesktop().browse(new URI(url)); + } catch (IOException exp) { + JOptionPane.showMessageDialog(null, Inter.getLocText("Set_default_browser")); + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + } catch (URISyntaxException exp) { + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + } catch (Exception exp) { + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FRContext.getLogger().error("Can not open the browser for URL: " + url); + } + + } + public static final MenuKeySet SIGN = new MenuKeySet() { + @Override + public char getMnemonic() { + return 'S'; + } + + @Override + public String getMenuName() { + return Inter.getLocText("FR-Designer_COMMUNITY_SIGN"); + } + + @Override + public KeyStroke getKeyStroke() { + return null; + } + }; + +} diff --git a/designer_base/src/com/fr/design/actions/community/UpAction.java b/designer_base/src/com/fr/design/actions/community/UpAction.java new file mode 100644 index 0000000000..4a8b8a270b --- /dev/null +++ b/designer_base/src/com/fr/design/actions/community/UpAction.java @@ -0,0 +1,70 @@ +package com.fr.design.actions.community; + +import java.awt.Desktop; +import java.awt.event.ActionEvent; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; + +import javax.swing.JOptionPane; +import javax.swing.KeyStroke; + +import com.fr.base.BaseUtils; +import com.fr.base.FRContext; +import com.fr.design.actions.UpdateAction; +import com.fr.design.menu.MenuKeySet; +import com.fr.general.Inter; +import com.fr.general.SiteCenter; +import com.fr.stable.StringUtils; + +public class UpAction extends UpdateAction +{ + + public UpAction() + { + this.setMenuKeySet(UPDATE); + this.setName(getMenuKeySet().getMenuName()); + this.setMnemonic(getMenuKeySet().getMnemonic()); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/update.png")); + // TODO Auto-generated constructor stub + } + + @Override + public void actionPerformed(ActionEvent arg0) + { + String url = SiteCenter.getInstance().acquireUrlByKind("bbs.update"); + if (StringUtils.isEmpty(url)) { + FRContext.getLogger().info("The URL is empty!"); + return; + } + try { + Desktop.getDesktop().browse(new URI(url)); + } catch (IOException exp) { + JOptionPane.showMessageDialog(null, Inter.getLocText("Set_default_browser")); + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + } catch (URISyntaxException exp) { + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + } catch (Exception exp) { + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FRContext.getLogger().error("Can not open the browser for URL: " + url); + } + + } + public static final MenuKeySet UPDATE = new MenuKeySet() { + @Override + public char getMnemonic() { + return 'U'; + } + + @Override + public String getMenuName() { + return Inter.getLocText("FR-Designer_COMMUNITY_UPDATE"); + } + + @Override + public KeyStroke getKeyStroke() { + return null; + } + }; + +} diff --git a/designer_base/src/com/fr/design/actions/community/VideoAction.java b/designer_base/src/com/fr/design/actions/community/VideoAction.java new file mode 100644 index 0000000000..97a53569a2 --- /dev/null +++ b/designer_base/src/com/fr/design/actions/community/VideoAction.java @@ -0,0 +1,70 @@ +package com.fr.design.actions.community; + +import java.awt.Desktop; +import java.awt.event.ActionEvent; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; + +import javax.swing.JOptionPane; +import javax.swing.KeyStroke; + +import com.fr.base.BaseUtils; +import com.fr.base.FRContext; +import com.fr.design.actions.UpdateAction; +import com.fr.design.menu.MenuKeySet; +import com.fr.general.Inter; +import com.fr.general.SiteCenter; +import com.fr.stable.StringUtils; + +public class VideoAction extends UpdateAction +{ + + public VideoAction() + { + this.setMenuKeySet(VIDEO); + this.setName(getMenuKeySet().getMenuName()); + this.setMnemonic(getMenuKeySet().getMnemonic()); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/video.png")); + // TODO Auto-generated constructor stub + } + + @Override + public void actionPerformed(ActionEvent arg0) + { + String url = SiteCenter.getInstance().acquireUrlByKind("bbs.video"); + if (StringUtils.isEmpty(url)) { + FRContext.getLogger().info("The URL is empty!"); + return; + } + try { + Desktop.getDesktop().browse(new URI(url)); + } catch (IOException exp) { + JOptionPane.showMessageDialog(null, Inter.getLocText("Set_default_browser")); + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + } catch (URISyntaxException exp) { + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + } catch (Exception exp) { + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FRContext.getLogger().error("Can not open the browser for URL: " + url); + } + + } + public static final MenuKeySet VIDEO = new MenuKeySet() { + @Override + public char getMnemonic() { + return 'V'; + } + + @Override + public String getMenuName() { + return Inter.getLocText("FR-Designer_COMMUNITY_VIDEO"); + } + + @Override + public KeyStroke getKeyStroke() { + return null; + } + }; + +} diff --git a/designer_base/src/com/fr/design/actions/help/TutorialAction.java b/designer_base/src/com/fr/design/actions/help/TutorialAction.java index b2f83e4948..b238359455 100644 --- a/designer_base/src/com/fr/design/actions/help/TutorialAction.java +++ b/designer_base/src/com/fr/design/actions/help/TutorialAction.java @@ -17,6 +17,7 @@ import com.fr.design.actions.UpdateAction; import com.fr.design.menu.MenuKeySet; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; +import com.fr.general.SiteCenter; import com.fr.general.http.HttpClient; import com.fr.stable.OperatingSystem; import com.fr.stable.ProductConstants; @@ -28,7 +29,7 @@ public class TutorialAction extends UpdateAction { this.setMenuKeySet(HELP_TUTORIAL); this.setName(getMenuKeySet().getMenuName()); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_help/help.png")); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/help.png")); this.setAccelerator(getMenuKeySet().getKeyStroke()); } @@ -60,10 +61,10 @@ public class TutorialAction extends UpdateAction { public void actionPerformed(ActionEvent evt) { Locale locale = FRContext.getLocale(); if (ComparatorUtils.equals(locale, Locale.CHINA) || ComparatorUtils.equals(locale, Locale.TAIWAN)){ - HttpClient client = new HttpClient(ProductConstants.HELP_URL); + HttpClient client = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("help")); if(client.getResponseCode() != -1) { try { - Desktop.getDesktop().browse(new URI(ProductConstants.HELP_URL)); + Desktop.getDesktop().browse(new URI(SiteCenter.getInstance().acquireUrlByKind("help"))); return; } catch (Exception e) { //出了异常的话, 依然打开本地教程 @@ -86,7 +87,7 @@ public class TutorialAction extends UpdateAction { @Override public String getMenuName() { - return Inter.getLocText("M_Help-Tutorial"); + return Inter.getLocText("FR-Designer_COMMUNITY_HELP"); } @Override diff --git a/designer_base/src/com/fr/design/images/bbs.png b/designer_base/src/com/fr/design/images/bbs.png new file mode 100644 index 0000000000000000000000000000000000000000..7321bc72e579b70db16868508d3360d83f3ad11e GIT binary patch literal 1352 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDkcY-DQbX5wOC=wc2GbyqVB6H8-9Hzz|!LkkN> zH)ltfUYGpj(%jU%5}4i;gkD3OdO=Acw*Y9fOKMSOS!#+~QGTuh*vnR#INjpxiqkx( z-V~f}adyM0S0CsYeNeQy{bVa!2&T7D;o8bI_^$sQi{@WjahB|pHVzdWMRi? zC-Jh&dQ0w#I%Z^w$8sojFP2ylro)M`Pj45NHNb#Eba$y`^?{b-}hC!f41R& z+Tt)%@pJz-|LlL|=TBO63Qg9Sr11Wv&dIwf>-e@z4f)Vmqk4DAvV?@mW=76tCm-*Q z+HgXq^6mbK)+H_nqDySHXc5qRd7U;4z8nlEOBEjlm5>ic5twiA7BPYNeG zn*6^wMXK(rt)q?1p@*%(i{eeflb@V_h ziF;;KqL;Ja;G`vsJdTT93rzRAanL=(urDLU=1cg8X@C7c$z6~!O7Lc!&Rw=R)bafa zwGs(Vp78%Iui3u+Vf%Sg@2~de13QfhR_QF6+G+2ndu?-~&1Q2$`MUNA^Zv~U`et6w zU1;RG&7vbx%0)VL*L>*|4gUpui`Z=&dH1aR*|^}ugY};uY`-A#hb{U^XkDO4w^gC8 z&y`xqYRMScTW7BxdzE@>)fNBm>+h^OZ*%9+VgH%8J@~d%|DSovY=>9^!ycbGlV7U) Q>VV2NPgg&ebxsLQ0OW4y_W%F@ literal 0 HcmV?d00001 diff --git a/designer_base/src/com/fr/design/images/bug.png b/designer_base/src/com/fr/design/images/bug.png new file mode 100644 index 0000000000000000000000000000000000000000..81f0b81f3b9a4bbec9f841c5f88970de29a6f2aa GIT binary patch literal 1519 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDkcW@zeUVeaH&=wc2GbyqV>7gsYUCs!jU7h`90 zGiOVfUYGpj(%jU%5}4i;gkD#idO=Acw*Y9fOKMSOS!#+~QGTuh*vnR#xZUD}(>$o& z6x?oc#;I2y=oo!a#3DsBObD2IKumbD1#;jCKQ#}S+KYh6I(TO4BL)VhWKS2zkcwMN zCVOWK2g)2hUwg)9lG<4l;n$0^9F>C%Lj<_EwnoHqD2aqOabMiKt0>%j(fx(iu1EP5 zG6FKPFScH26%*98b4r?@dFjZO$tja&R`2!P>X}n+YhWBRi$i;vFWvkFUx_MzuSU~4u5XB z!SrBGs<`;Gi64I%Uhp=2)RUy|og5pr!jV}}&g5L3tMbAWz5Q)#8TK-t_FipJyuNVh zWw$H88}ABj2_!R z2~3%Pc};Nc7hmi54e84t>ZrW-UcL55ulWgyCDSLr+jZyLeF0N}RVxMGH-$%5Iz<>W jP7F#?Uvy*PKMn(i8iu!Pzp|B01r@=bu6{1-oD!M<=XX8S literal 0 HcmV?d00001 diff --git a/designer_base/src/com/fr/design/images/help.png b/designer_base/src/com/fr/design/images/help.png new file mode 100644 index 0000000000000000000000000000000000000000..b339cfe7c0acaa8e9dde870be4b81bb5894adbfe GIT binary patch literal 522 zcmV+l0`>igP)Px#=aqrwi-XmJeCLso;r0LDZf4(=PRnLq)ro`OQcTl6Mk^UO3B6 zFzxsM)!5nB+S={^|KIZU>Hq)L*VpCbh9x0Nabie)6>(}a#rWJv*l7w({yy(IxyKxG~cy&*)Sl} zqo3oEiRZ(?*Qajrr%2nKnbqOx>+jvwx3$;5y`%n*kN^MxA#_qsQvhR1RtP!=si_b0 zR;gq0FzfZ7sj27f!R@KJpM$BZ9Ph_PHzfc70H;YrK~xyih0n(hf}VY*aX>>YuH zr5C}1y_ffYA6KF#9E|^I<~vL>81^f=Q_AhV=V5RF&eWa*h_| zI?p>@1gvHptZ18D=W(nSG6<~Q%6DP_Kn68sW?kISlYuN}(7&A?u4%$Au$mJ>JqHka z2*BqCt7s@cF;vxX+X%$tBuxW-yti%pF20_S1c8tmEu0`poW}n51ScRBe6vi@1ONa4 M07*qoM6N<$g60c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDkcWa?(_YHn<1=wc2GbyqV-OE*V17gslDQ&(3r zQzsLcUYGpj(%jU%5}4i;gkE!;dO=Acw*Y9fOKMSOS!#+~QGTuh*vnR#xZPrc(>$o& z6x?nx#i>^x=oo!a#3DsBObD2IKumbD1#;jCKQ#}S+KYh6nlUzgDgy(PlBbJfNX4xs z!MpQ>9Yt(6TR**~ zc2T2}zPF-TdpD~cuR=L>5l)7Z%x@YHXzt1a9>zE>>9$8{vvH6aB$d<(X z`r~`U{R27nRwYHO-z>xZS3L0Kzi}%e6 zt@9i2-{q@$AGPi5JGb=WC3d^xir;pw&4Zl2id3aspg-mlo) zos@OdRMs~xT-3qr{aW+ZqNbC9P1kN2{c>bFCGqE<-nw~#d$Rd7L@OEQzIn-De)U4B za)k-oM|OcariHI36tXOuSif6fNyAEJQEg^V!??u;=kEs0JnSkn|5mg|kS>41N{tYa zD#j1SOCs)eZv6O>c~>(>Pf$f&!)x)^8kXV#92Ig3g3erhm%6f6ay2K|YOJvgm;O4CA( zfVuMeiF2v;23?#wlM@o%l_o0k zS%(Md)rOW^Bvvw9&Di&Jve)UO4yBKRp4py%@^I4JCco$Z=gs|M{a-MF!S>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`X>Mq0XyoW<=wc2GbyqV-R|5+dGgm`Xb60aW zCku0!UYGpj(%jU%5}4i;gkC3{dO=Acw*Y9fOKMSOS!#+~QGTuh*vnR#xZPrb(>$o& z6x?pH#Hm*w=oo!a#3DsBObD2IKumbD1#;jCKQ#}S+KYh6x~wx(iGhLfrl*TzNX4xq z!M+~Sfdc>Ty-S-M`suQFhH0aVEC1B0PeD4OT3k&_#r2c&MQy*XN?O6r`Z0>7`a=pU z|6Y+dzB)^)gw7~(xMjE&Y~^UXaWqAGbN>9zSy%p4e0p%;c=ev2X*2TEhkvgs22>{{ zEU#wp_AZq9R&vm_dDEFSkF_38Q(LjSa*IVzfPnwk{SuY88MP-L`*lHOhRT68PMX_q zW%$hJ_vb6&si|N+yf(4&q57q@`W{`5T$1my9|Ukq3WpuWiX(%Xp t{j)zi|Lx@b)`HEaT$B6%N$aynFhrRyQmXp)vkO%4dAjP)eg7`;&yUr4Z>Sq0yanL_NDX8>57l&^&laFF&`Xl%n*)TjqfjNgASFQV z4!%`|0vX4l8XW^@3Aoq+n8l&;4+DH%mm1&yoWKrthB_g5S?S;`3RQYAffaat-4vHE zg;+%H;s+HRy@hIueH*Yw(UV$Mw_r=`0oW`o6>=2ccV|UH<6z{h;YU-o$^o7&?}X1k zm*+dJ$cGX5?k5scL*M{O1~e!LoHbf@*vfK1XP_gJ-OY0vBMJ`c4%lNRH#yVcf=1dl zdZEn$-GN?#JS{b!$%Szd&>l%(-BO{vR_{X&xEgBT5ll)DLBzFOXEk`mKSH+FSuU}! xn{ZJ#Kr4@Iu$n)ri8Y|0xoe$UkLkCs`wK}*n-LmwP6hw~002ovPDHLkV1oDHqj~@U literal 0 HcmV?d00001 diff --git a/designer_base/src/com/fr/design/images/update.png b/designer_base/src/com/fr/design/images/update.png new file mode 100644 index 0000000000000000000000000000000000000000..700ee451bba25dec72df47527123ed41a438146c GIT binary patch literal 1433 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDkc?B?WXU}#`r=wc2GbyqVBXG3F03j;SNV@oGj z10zeAUYGpj(%jU%5}4i;gkDRWdO=Acw*Y9fOKMSOS!#+~QGTuh*vnR#xZPrg(>$o& z6x?nx$EjBz=oo!a#3DsBObD2IKumbD1#;jCKQ#}S+KYh6TDN+^b_NC}UQZXtkcwMJ zf_*cD9Yy}7rIk;6|zFac8kkvf9c)6yH3AL+ibu2_38x@-;|y_Xzn+++4u9uy=r5fzT_>! zGP!M^ei!`s_Bj6L2AMCsZw{WU-Tm;^Ik(IShCPA%JUIUCv$=G8ZpnqYK^qdPc6`s1 zEKi$m`1h*LbJM~;#@YW?vO1no=n5=ls@Z6B^~0fyy|ZR{d7iV(NHgyY^V{MuQCX(b z!`a|jS;iibj7MF^Zi=b3NU~m9RybenoWR36r-s79>6cQEvAke%RITSSx~Zci`BdKL z&W-8^FE(ChX6N5)^19UeV$+v9i@waB(8zu>$H7d;#aDXc`-3aiCjNUnd*!YERVPXw zXkDByQ))7^Ko~YnkeApz5MLw$Jf_=|N4EtQPwezi}8Y5x=j22)gFxbWsq1q z@A%AqeZ8FS=7((_yslq@B$Ic(-D};tENgP146jhFg(359qxPQXFRIpM^sZ;?K6grJ zSJ|6cfyJ@?5=m}<({nGk1WeiNGT)b@K-ZT$n;{Fljcj2xOQ^lzx3+=e~q{5eh6-0WH`6s;-OR18LdEtrKhW(%Q~loCIC668nXZZ literal 0 HcmV?d00001 diff --git a/designer_base/src/com/fr/design/images/video.png b/designer_base/src/com/fr/design/images/video.png new file mode 100644 index 0000000000000000000000000000000000000000..ed8b67c98bf0965b8ff4a5865ace53e618a79375 GIT binary patch literal 1124 zcmaJ=TWHi+7)}+t^#%(oUaI0T^{$gll9`MXJJxa1u_LAo(}5OowVC8}8ftQ4a=Mci zS=_Q+E9*iZM9>#SP`n}Plc3`0gCgG0rFeT#P|z1?@d7>+#*^BqJ~)OX=fd}W|9}4f zJNwejn`Ta{okmgA%v6({A>*(9S5r;?i$0W8GR(t`ZMX$>;DYKvDz2j(1SwO^!wgjQ zo?W+LJw;8XjcglkQ?^JNG8xs!FrH}>HbvDpc($r_K@4&*Z&)#U`0_Ox7xmz0Fyzw@Zuabi;a3?@2_!gjfZhxzlnbFGi2)N@VVDvosik;I0_`HK{fw z4HC$KAj}8>Ey!^|6d5iQ7Da9i;Da2`2FWW1xR4YUB|ZYiADTpS^bRQ_C&y!vRgCV$ z*p^tfP$)13fk955<)YE3ufg*Hf(W=h7FNB0<<^xIWaw&+VPgYXz*kgrs2j&q=ZCVT zgacKKoGd~+%T-KwB8=QlWP?PD2v)QjmW~SU$}zm6NGZ$3s-?k{9HWT>V;H(5h;lS8 zLYHyITyYnmnF%teq+CDba{)o$DdBvmMkWW4=v($huC_{;YTaTm3Wep z<5}-nZnRWtn7nk)zP~mWC(-Nge)#-gq{I&1x?UW4^Gnsjba?;W8Iw}$=FZ!&-5UZU ziw@n~`*7&S)sc7Y%Qv@={)rdlUxG9J^NVoD{eiP@U%hYoC-U3J^R<0vXIsVLy|>b{ zgz0Dafmz#fyPtx;)tZZ2FIBC{RG&OOck#i2$Q5n(|I0>8FYXAX3#X1Zhx&>~@^jMg z=+qgnrwpzhJU%#dEo i4lIE;s~-GERaH}U@qbU)_dfCdy-zhZ%jY(>_k97GS$t{$ literal 0 HcmV?d00001 diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index d0ecec9d6c..14dc74a8d7 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -8,6 +8,13 @@ import com.fr.base.FRContext; import com.fr.design.DesignState; import com.fr.design.ExtraDesignClassManager; import com.fr.design.actions.UpdateAction; +import com.fr.design.actions.community.BBSAction; +import com.fr.design.actions.community.BugAction; +import com.fr.design.actions.community.NeedAction; +import com.fr.design.actions.community.QuestionAction; +import com.fr.design.actions.community.SignAction; +import com.fr.design.actions.community.UpAction; +import com.fr.design.actions.community.VideoAction; import com.fr.design.actions.file.CloseCurrentTemplateAction; import com.fr.design.actions.file.ExitDesignerAction; import com.fr.design.actions.file.OpenRecentReportMenuDef; @@ -148,6 +155,8 @@ public abstract class ToolBarMenuDock { // 添加帮助菜单 menuList.add(createHelpMenuDef()); + // 添加社区菜单 + menuList.add(CreateCommunityMenuDef()); return menuList.toArray(new MenuDef[menuList.size()]); } @@ -300,14 +309,14 @@ public abstract class ToolBarMenuDock { java.util.List shortCuts = new ArrayList(); shortCuts.add(new WebDemoAction()); shortCuts.add(SeparatorDef.DEFAULT); - shortCuts.add(new TutorialAction()); + //shortCuts.add(new TutorialAction()); shortCuts.add(SeparatorDef.DEFAULT); if (ComparatorUtils.equals(ProductConstants.APP_NAME,FINEREPORT)) { shortCuts.add(new FeedBackAction()); shortCuts.add(SeparatorDef.DEFAULT); shortCuts.add(new SupportQQAction()); shortCuts.add(SeparatorDef.DEFAULT); - shortCuts.add(new ForumAction()); + // shortCuts.add(new ForumAction()); } shortCuts.add(SeparatorDef.DEFAULT); shortCuts.add(new AboutAction()); @@ -315,7 +324,22 @@ public abstract class ToolBarMenuDock { return shortCuts.toArray(new ShortCut[shortCuts.size()]); } - + /** + * 创建社区子菜单 + * @return 社区菜单的子菜单 + */ + public ShortCut[] createCommunityShortCuts() { + java.util.List shortCuts = new ArrayList(); + shortCuts.add(new BBSAction()); + shortCuts.add(new VideoAction()); + shortCuts.add(new TutorialAction()); + shortCuts.add(new QuestionAction()); + shortCuts.add(new UpAction()); + shortCuts.add(new NeedAction()); + shortCuts.add(new BugAction()); + shortCuts.add(new SignAction()); + return shortCuts.toArray(new ShortCut[shortCuts.size()]); + } private MenuDef createHelpMenuDef() { MenuDef menuDef = new MenuDef(Inter.getLocText("FR-Designer_Help"), 'H'); ShortCut[] otherHelpShortCuts = createHelpShortCuts(); @@ -325,7 +349,15 @@ public abstract class ToolBarMenuDock { insertMenu(menuDef, MenuHandler.HELP); return menuDef; } - + private MenuDef CreateCommunityMenuDef() { + MenuDef menuDef = new MenuDef(Inter.getLocText("FR-Designer_COMMUNITY"), 'C'); + ShortCut[] otherCommunityShortCuts = createCommunityShortCuts(); + for (ShortCut shortCut : otherCommunityShortCuts) { + menuDef.addShortCut(shortCut); + } + insertMenu(menuDef, MenuHandler.HELP); + return menuDef; + } /** * 生成工具栏 * diff --git a/designer_base/src/com/fr/general/locale/fr_zh_CN.properties b/designer_base/src/com/fr/general/locale/fr_zh_CN.properties new file mode 100644 index 0000000000..7a61b14372 --- /dev/null +++ b/designer_base/src/com/fr/general/locale/fr_zh_CN.properties @@ -0,0 +1,4084 @@ +#Created by JInto - www.guh-software.de +#Thu Apr 16 18:27:18 CST 2015 +3D-Style=\u4E09\u7EF4\u683C\u5F0F +3DSimulation=\u7ACB\u4F53\u611F +3DSpace=\u7A7A\u95F4 +ADD_Department_Failure=\u90E8\u95E8\u6DFB\u52A0\u5931\u8D25\uFF0C\u8BE5\u90E8\u95E8\u540D\u5DF2\u88AB\u5360\u7528\uFF01 +ALL_WORK=\u6240\u6709\u4E8B\u52A1 +APP_LAUNCHING=APP\u542F\u52A8\u753B\u9762 +Abnormal_Communication=\u901A\u4FE1\u5F02\u5E38 +About=\u5173\u4E8E +About-All_Rights_Reserved=\u4FDD\u7559\u6240\u6709\u7684\u6743\u5229 +About-CopyRight=\u7248\u6743\u6240\u6709 +About-Version=\u7248\u672C +About_The_Column=\u5173\u4E8E\u6B64\u5217 +Above=\u4EE5\u4E0A\u7248\u672C +AbsoluteLayout=\u7EDD\u5BF9\u5B9A\u4F4D +According_Cell_Set_Size=\u6839\u636E\u9009\u4E2D\u7684\u5355\u5143\u683C\u7684\u5927\u5C0F\u52A8\u6001\u8BBE\u7F6E\u6E10\u53D8\u8272\u7684\u533A\u57DF +Action-Type=\u64CD\u4F5C\u7C7B\u578B +Actions=\u4EFB\u52A1 +Active_Connection_Size=\u6D3B\u52A8\u8FDE\u63A5\u6570 +Actived=\u6D3B\u52A8\u7684 +Activity=\u6D3B\u52A8 +Actual_Value=\u5B9E\u9645\u503C +Adaptive=\u81EA\u9002\u5E94 +Adaptive_Full_Area=\u5145\u6EE1\u5C55\u73B0\u533A\u57DF +Adaptive_Layout=\u81EA\u9002\u5E94\u5E03\u5C40 +Adaptive_Original_Scale=\u81EA\u9002\u5E94\u539F\u6837\u7F29\u653E +Add=\u589E\u52A0 +Add-all=\u5168\u90E8\u6DFB\u52A0 +AddFailed=\u6DFB\u52A0\u5931\u8D25 +Add_Analysis=\u6DFB\u52A0\u6570\u636E\u5206\u6790 +Add_Browser=\u6DFB\u52A0\u6D4F\u89C8\u5668 +Add_Chart_Map=\u6DFB\u52A0\u5730\u56FE +Add_Column=\u6DFB\u52A0\u5217 +Add_Department_Failure=\u90E8\u95E8\u6DFB\u52A0\u5931\u8D25\uFF0C\u8BE5\u90E8\u95E8\u540D\u5DF2\u88AB\u5360\u7528 +Add_Department_Member=\u6DFB\u52A0\u90E8\u95E8\u4EBA\u5458 +Add_From_Report=\u4ECE\u62A5\u8868\u6DFB\u52A0 +Add_From_Server=\u4ECE\u670D\u52A1\u5668\u6DFB\u52A0 +Add_JS_warning=\u8BF7\u8F93\u5165\u5982\u5B9E\u4F8B\u6240\u793A\u7684\u6B63\u786E\u7684url\u5730\u5740\! +Add_Member=\u6DFB\u52A0\u4EBA\u5458 +Add_NewUser=\u6DFB\u52A0\u65B0\u7528\u6237 +Add_Position=\u6DFB\u52A0\u804C\u4F4D +Add_Role=\u6DFB\u52A0\u89D2\u8272 +Add_TableData=\u589E\u52A0\u6570\u636E\u96C6 +Add_Task=\u6DFB\u52A0\u4EFB\u52A1 +Add_summary_fields=\u6DFB\u52A0\u6C47\u603B\u5B57\u6BB5 +Add_summary_info=\u5C06\u6C47\u603B\u4FE1\u606F\u52A0\u5165\u62A5\u8868\u4E2D +Address=\u5730\u5740 +Admin=\u7BA1\u7406\u5458 +Advanced=\u9AD8\u7EA7 +AffairToHandle=\u5F85\u5904\u7406\u4E8B\u52A1 +After=\u7ED3\u675F +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 +After_Click_Widget_Show=\u70B9\u51FB\u5355\u5143\u683C\u540E\u663E\u793A\u63A7\u4EF6 +Agency=\u673A\u6784 +Alert=\u8B66\u544A +Alignment=\u5BF9\u9F50 +Alignment-Style=\u5BF9\u9F50\u65B9\u5F0F +All=\u6240\u6709 +AllRotationType=\u65CB\u8F6C\u578B +All_Border_Line=\u6240\u6709\u6846\u7EBF +All_File_Uploaded=\u6240\u6709\u6587\u4EF6\u5DF2\u4E0A\u4F20 +Allow=\u8FDB\u5165 +Allow_Blank=\u5141\u8BB8\u4E3A\u7A7A +Allow_Decimals=\u5141\u8BB8\u5C0F\u6570 +Allow_Negative=\u5141\u8BB8\u8D1F\u6570 +Allow_To_Upload_Contains=\u5141\u8BB8\u4E0A\u4F20\u7684\u6587\u4EF6\u5305\u62EC +Already_End=\u5DF2\u7ED3\u675F +Already_Pause=\u5DF2\u6682\u505C +Already_exist=\u5F53\u524D\u73AF\u5883\u5DF2\u5B58\u5728\: +Already_exists=\u5DF2\u5B58\u5728\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165\uFF01 +Already_exists_not_add_repeat=\u5DF2\u7ECF\u5B58\u5728\uFF0C\u8BF7\u4E0D\u8981\u91CD\u590D\u6DFB\u52A0 +Always=\u9ED8\u8BA4\u6267\u884C\u8BE5\u64CD\u4F5C +Always_Execute=\u59CB\u7EC8\u6267\u884C +AnalysisLine=\u5206\u6790\u7EBF +And=\u4E14 +And_A=\u53CA\u5176 +Anhui=\u5B89\u5FBD\u7701 +Animation_Special=\u7279\u6548 +Any_Result=\u7684\u4EFB\u4F55\u7ED3\u679C +Aomen=\u6FB3\u95E8\u7279\u522B\u884C\u653F\u533A +AomenBandao=\u6FB3\u95E8\u534A\u5C9B +Append_Delete_Row_Message=\u6CE8\u610F\uFF01\u6307\u5B9A\u7684\u5355\u5143\u683C\u9700\u8981\u8BBE\u7F6E\u6269\u5C55\u5C5E\u6027 +Applet_Print=Applet\u6253\u5370 +Application=\u5E94\u7528\u7A0B\u5E8F +Application_name=\u5E94\u7528 +Apply=\u5E94\u7528 +April=\u56DB\u6708 +Are_You_Sure_To_Delete_The_Data=\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u6570\u636E\u5417 +Area_Name=\u533A\u57DF\u540D +Area_Value=\u533A\u57DF\u503C +At=\u5728 +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 +Attach_File=\u9644\u4EF6 +AttenchmentsByReceiver=\u6839\u636E\u6536\u4EF6\u4EBA\u4E0D\u540C\u751F\u6210\u4E0D\u540C\u9644\u4EF6 +Attention=\u6CE8\u610F +Attribute=\u5C5E\u6027 +Attributes=\u5C5E\u6027 +August=\u516B\u6708 +Authrized=\u6388\u6743 +Auto=\u81EA\u52A8 +Auto-Build=\u81EA\u52A8\u6784\u5EFA +Auto_Adjust_Size=\u81EA\u52A8\u8C03\u6574 +Axis=\u8F74 +Axis-Style-Option=\u5750\u6807\u8F74\u9009\u9879 +AxisInside=\u8F74\u5185\u4FA7 +AxisReversed=\u8F74\u9006\u5E8F +AxisValue=\u5750\u6807\u8F74\u503C +Axis_Title=\u8F74\u6807\u9898 +B-PrintSetup=\u6253\u5370\u8BBE\u7F6E(P) +BI_Global_Config=BI\u5168\u5C40\u914D\u7F6E +BS-Design=B/S\u5168\u5C40\u914D\u7F6E +Back=\u8FD4\u56DE +Background=\u80CC\u666F +Background-Background_is_NULL=\u6CA1\u6709\u80CC\u666F +Background-Click=\u9F20\u6807\u70B9\u51FB\u80CC\u666F +Background-Initial=\u521D\u59CB\u80CC\u666F +Background-Null=\u6CA1\u6709\u80CC\u666F +Background-Over=\u9F20\u6807\u60AC\u6D6E\u80CC\u666F +Background-Pattern=\u56FE\u6848 +Background-Texture=\u7EB9\u7406 +BackgroundTexture-BlueTissuePaper=\u84DD\u8272\u7802\u7EB8 +BackgroundTexture-Bouquet=\u82B1\u675F +BackgroundTexture-BrownMarble=\u68D5\u8272\u5927\u7406\u77F3 +BackgroundTexture-Canvas=\u753B\u5E03 +BackgroundTexture-Cork=\u8F6F\u6728\u585E +BackgroundTexture-Denim=\u659C\u7EB9\u5E03 +BackgroundTexture-FishFossil=\u9C7C\u7C7B\u5316\u77F3 +BackgroundTexture-Granite=\u82B1\u5C97\u5CA9 +BackgroundTexture-GreenMarble=\u7EFF\u8272\u5927\u7406\u77F3 +BackgroundTexture-MediumWood=\u6DF1\u8272\u6728\u8D28 +BackgroundTexture-Newsprint=\u65B0\u95FB\u7EB8 +BackgroundTexture-Oak=\u6A61\u6728 +BackgroundTexture-PaperBag=\u7EB8\u888B +BackgroundTexture-Papyrus=\u7EB8\u838E\u8349\u7EB8 +BackgroundTexture-Parchment=\u7F8A\u76AE\u7EB8 +BackgroundTexture-PinkTissuePaper=\u7C89\u8272\u7802\u7EB8 +BackgroundTexture-PurpleMesh=\u7D2B\u8272\u7F51\u683C +BackgroundTexture-RecycledPaper=\u518D\u751F\u7EB8 +BackgroundTexture-Sand=\u6C99\u6EE9 +BackgroundTexture-Stationery=\u4FE1\u7EB8 +BackgroundTexture-Walnut=\u80E1\u6843 +BackgroundTexture-WaterDroplets=\u6C34\u6EF4 +BackgroundTexture-WhiteMarble=\u767D\u8272\u5927\u7406\u77F3 +BackgroundTexture-WovenMat=\u7F16\u7EC7\u7269 +Background_Settings=\u80CC\u666F\u8BBE\u7F6E +Backup=\u5907\u4EFD +Backup_Cpt=\u5907\u4EFD\u6A21\u677F +Backup_To=\u5907\u4EFD\u5230 +BaiduMap=\u767E\u5EA6\u5730\u56FE +Banner-And-Title=\u4E3B\u9875\u548C\u6A2A\u5E45 +BarCodeD-Define_BarCode=\u5B9A\u4E49\u6761\u5F62\u7801 +BarCodeD-Drawing_Text=\u663E\u793A\u6761\u5F62\u7801\u7684\u6587\u672C +BarInside=\u67F1\u5B50\u5185\u4FA7 +BarOutSide=\u67F1\u5B50\u5916\u4FA7 +BarStyle=\u6761\u5F62 +Basic=\u57FA\u672C +Basic_Config=\u57FA\u672C\u914D\u7F6E +Basic_Information=\u57FA\u672C\u4FE1\u606F +Basic_Setting=\u57FA\u672C\u8BBE\u7F6E +Beijing=\u5317\u4EAC +BeijingInCity=\u5317\u4EAC\u5E02\u533A +BiasD-From-lower_left_to_upper_right=\u4ECE\u5DE6\u4E0B\u5230\u53F3\u4E0A\u53D1\u6563 +BiasD-From-upper_left_to_lower_right=\u4ECE\u5DE6\u4E0A\u5230\u53F3\u4E0B\u53D1\u6563 +BiasD-Input_Slope_Line_text_separated_by_'|'=\u8F93\u5165\u659C\u7EBF\u6587\u5B57,\u4EE5'|'\u5206\u9694 +BiasD-Slope_Line=\u659C\u7EBF +BindCellD-Define_Value=\u9ED8\u8BA4\u503C +BindColumn-Advanced_Summary=\u9AD8\u7EA7\u6458\u8981 +BindColumn-Bottom_N=\u540EN\u4E2A +BindColumn-Choose_The_Display_Type_of_Column=\u9009\u62E9\u5217\u663E\u793A\u7C7B\u578B +BindColumn-Control=\u63A7\u5236 +BindColumn-Custom_Data_Appearance=\u81EA\u5B9A\u4E49\u663E\u793A +BindColumn-Custom_Left_Father=\u81EA\u5B9A\u4E49\u5DE6\u7236\u683C +BindColumn-Custom_Up_Father=\u81EA\u5B9A\u4E49\u4E0A\u7236\u683C +BindColumn-Decrease=\u51CF\u5C11 +BindColumn-Default_Father_Cell=\u9ED8\u8BA4\u7236\u683C +BindColumn-Even_Selected_(2,4,6...)=\u9009\u62E9\u4E86\u5076\u6570\u96C6(2,4,6...) +BindColumn-Expansion_Direction=\u6269\u5C55\u65B9\u5411 +BindColumn-Extend_the_conditions_of_fatherCell(Applied_to_the_data_contains_other_data)=\u5C06\u7236\u683C\u5B50\u4F5C\u4E3A\u8FC7\u6EE4\u6761\u4EF6(\u9002\u7528\u4E8E\u7236\u5B50\u683C\u6765\u81EA\u4E8E\u540C\u4E00\u4E2A\u6570\u636E\u96C6) +BindColumn-Group=\u5206\u7EC4 +BindColumn-Group(Merger_the_Items_Which_Have_The_Same_Value_in_Column)=\u5206\u7EC4(\u5C06\u6570\u636E\u5217\u4E2D\u76F8\u540C\u5185\u5BB9\u7684\u503C\u8FDB\u884C\u5408\u5E76) +BindColumn-Have_Father_Cell=\u6709\u7236\u683C +BindColumn-Have_Left_Parent_Cell=\u6709\u5DE6\u7236\u683C +BindColumn-Have_Up_Parent_Cell=\u6709\u4E0A\u7236\u683C +BindColumn-Increase=\u589E\u52A0 +BindColumn-NoSort=\u65E0\u6392\u5E8F +BindColumn-Odd_Selected_(1,3,5...)=\u9009\u62E9\u4E86\u5947\u6570\u96C6(1,3,5...) +BindColumn-Result_Serial_Number_Start_From_1=\u5E8F\u53F7\u4ECE1\u5F00\u59CB +BindColumn-Results_Filter=\u7ED3\u679C\u96C6\u7B5B\u9009 +BindColumn-Select=\u5217\u8868 +BindColumn-Select(Regardless_of_Having_the_Same_Value,Display_all_Item_in_Column)=\u5217\u8868(\u6570\u636E\u5217\u4E2D\u7684\u6240\u6709\u6570\u636E\u8BB0\u5F55\u5C55\u793A\u51FA\u6765\uFF0C\u65E0\u8BBA\u6570\u636E\u662F\u5426\u91CD\u590D) +BindColumn-Setting_Data=\u8BBE\u7F6E\u6570\u636E +BindColumn-Specify_Rows=\u6307\u5B9A\u884C +BindColumn-Summary=\u6C47\u603B +BindColumn-Summary(Including_SUM_,_AVERAGE_,_MAX_,_MIN_And_So_On)=\u6C47\u603B(\u5305\u62EC\u6C42\u548C\uFF0C\u53D6\u5E73\u5747\u6570\uFF0C\u6700\u5927\u503C\u548C\u6700\u5C0F\u503C\u7B49) +BindColumn-Summary_Parameters=\u6C47\u603B\u53C2\u6570 +BindColumn-The_Conditions_of_FatherCell=\u7236\u683C\u6761\u4EF6 +BindColumn-This_Condition_has_been_existed=\u6B64\u6761\u4EF6\u5DF2\u7ECF\u5B58\u5728 +BindColumn-Top_N=\u524DN\u4E2A +BindD-Bind_Data=\u7ED1\u5B9A\u6570\u636E +BindD-Define_Datasource=\u5B9A\u4E49\u6570\u636E\u6E90 +BindD-Need_to_select_columns_to_display=\u9700\u8981\u9009\u62E9\u5217 +BindD-Should_select_a_datasource=\u9700\u8981\u9009\u62E9\u4E00\u4E2A\u6570\u636E\u6E90 +Black=\u9ED1\u8272 +Black_Font=\u9ED1\u4F53 +FR-Engine_Block_extended=\u53EF\u6269\u5C55\u5757\uFF1A +FR-Engine_Block_unextended=\u4E0D\u53EF\u6269\u5C55\u5757\uFF1A +Blow_set=\u4EE5\u4E0B\u8BBE\u7F6E +Body-Background=\u4E3B\u4F53\u80CC\u666F +Border=\u8FB9\u6846 +Border-Color=\u8FB9\u6846\u989C\u8272 +Border-Line=\u8FB9\u6846\u7C97\u7EC6 +Border-Style=\u8FB9\u6846\u6837\u5F0F +Border-Style-Normal=\u76F4\u89D2\u8FB9\u6846 +Border-Style-Radius=\u5706\u89D2\u8FB9\u6846 +BorderLayout=\u8FB9\u754C\u5E03\u5C40 +BorderLayout-Center=\u4E2D +BorderLayout-Constraints=\u4F4D\u7F6E +BorderLayout-East=\u4E1C +BorderLayout-North=\u5317 +BorderLayout-South=\u5357 +BorderLayout-West=\u897F +Bottom=\u4E0B +Bottom_Border_Line=\u4E0B\u6846\u7EBF +Bottom_Margin=\u4E0B\u8FB9\u8DDD +Bounds=\u8FB9\u754C +Break=\u65AD\u5F00 +Bright-Style=\u660E\u4EAE +Brown=\u8910\u8272 +Brown_Orange=\u68D5\u9EC4 +Browser=\u6D4F\u89C8\u5668 +Browser-Are_you_sure_to_delete_the_selected_browser=\u4F60\u786E\u5B9E\u60F3\u5220\u9664\u9009\u4E2D\u7684\u6D4F\u89C8\u5668\u5417 +Browser_Address=\u6D4F\u89C8\u5730\u5740 +Bubble-Series_Name=\u7CFB\u5217\u540D +Bubble-Width=\u6C14\u6CE1\u5BBD\u5EA6 +Build=\u751F\u6210 +Build-Way=\u6784\u5EFA\u65B9\u5F0F +BuildIn=\u5185\u7F6E +Build_Tree_Accord_Marked_Filed_Length=\u4F9D\u8D56\u6240\u9009\u6570\u636E\u96C6\u7684\u6807\u8BB0\u5B57\u6BB5\u7684\u957F\u5EA6\u6784\u5EFA\u6811 +Build_Tree_Accord_Parent_Marked_Filed=\u4F9D\u8D56\u6240\u9009\u6570\u636E\u96C6\u7684\u7236\u6807\u8BB0\u5B57\u6BB5\u6784\u5EFA\u6811 +Bulletin=\u516C\u544A +Button-Group-Display-Columns=\u5C55\u793A\u5217\u6570 +Button-Hotkeys=\u5FEB\u6377\u952E +CLUSTER_REDIRECT=\u96C6\u7FA4\u91CD\u5B9A\u5411\u53C2\u6570 +CLUSTER_REDIRECT_SHEAR=\u96C6\u7FA4\u91CD\u5B9A\u5411\u53C2\u6570 +CONTINUUM_MODE=\u76F8\u90BB\u8FDE\u7EED\u5206\u7EC4 +CSS_Import_Description=\u53EA\u80FD\u901A\u8FC7\u76F8\u5BF9\u8DEF\u5F84\u5F15\u7528CSS\: \n\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 +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 +CUSTOM_MODE=\u81EA\u5B9A\u4E49\u5206\u7EC4 +Cache-Book-Parameters-Setting=\u5185\u5B58\u7F13\u5B58\u5C5E\u6027\u8BBE\u7F6E +Cache-Cpt-Parameters-Setting=\u6A21\u677F\u7F13\u5B58\u5C5E\u6027\u8BBE\u7F6E +Cache-DataBase-Parameters-Setting=\u6570\u636E\u96C6\u5171\u4EAB\u5C5E\u6027\u8BBE\u7F6E +Cache-Disk_Memory_Page_Size=\u78C1\u76D8\u7F13\u5B58\u5206\u9875\u5927\u5C0F +Cache-Local_Disk_Cache-Setting=\u672C\u5730\u78C1\u76D8\u7F13\u5B58\u8BBE\u7F6E +Cache-Max-Elements-In-Memory=\u6700\u5927\u6D3B\u52A8\u5BF9\u8C61\u6570 +Cache-Message1=0\u8868\u793A\u65E0\u9650 +Cache-Path-Setting=\u7F13\u5B58\u8DEF\u5F84\u8BBE\u7F6E +Cache-Policy=\u7F13\u5B58\u7B56\u7565 +CacheValidateTime=\u62A5\u8868\u7F13\u5B58\u6709\u6548\u65F6\u95F4 +Cache_Dir_File_Permission_Error=\u6587\u4EF6\u65E0\u6CD5\u8BFB\u53D6\u6216\u521B\u5EFA\uFF0C\u8BF7\u68C0\u67E5cache.xml\u4E0B\u9762\u7684\u7F13\u5B58\u76EE\u5F55\u8BBF\u95EE\u6743\u9650 +Calculating=\u5904\u7406\u4E2D +Calendar=\u65E5\u5386 +Call_Back_Function=\u56DE\u8C03\u51FD\u6570 +CanNotBigger=\u4E0D\u80FD\u5927\u4E8E +Can_Be_Unselected=\u53EF\u4E0D\u9009 +Can_not_find_Data_Connection=\u627E\u4E0D\u5230\u6570\u636E\u8FDE\u63A5 +Can_not_use_FormatBursh=\u4E0D\u80FD\u5BF9\u591A\u91CD\u9009\u5B9A\u533A\u57DF\u4F7F\u7528\u683C\u5F0F\u5237\! +Cancel=\u53D6\u6D88 +CancelJSShow=\u53D6\u6D88\u52A8\u6001\u5C55\u793A +Cancel_Repeat_Attributes=\u53D6\u6D88\u91CD\u590D\u884C\u5217 +Cannot\ find=\u6CA1\u6709\u627E\u5230 +Cannot-Add_To_This_Area=\u65E0\u6CD5\u6DFB\u52A0\u5230\u8BE5\u533A\u57DF +Cannot-Find=\u6CA1\u6709\u627E\u6253 +Cannot_Do_This_Command_When_You_Choose_One_More_Areas=\u4E0D\u80FD\u5BF9\u591A\u91CD\u9009\u5B9A\u533A\u57DF\u4F7F\u7528\u6B64\u547D\u4EE4 +Cannot_Found_Result_File=\u6CA1\u6709\u627E\u5230\u7ED3\u679C\u6587\u4EF6 +Cannot_Found_Template_File=\u6CA1\u6709\u627E\u5230\u6A21\u677F\u6587\u4EF6 +Cannot_Get_Date=\u4E0D\u80FD\u83B7\u53D6\u65E5\u671F +Cannot_Get_Date_Format=\u4E0D\u80FD\u83B7\u53D6\u65E5\u671F\u683C\u5F0F +Cannot_Parse_Template_File=\u65E0\u6CD5\u89E3\u6790\u6A21\u677F\u6587\u4EF6 +Cannot_Set_Date=\u4E0D\u80FD\u8BBE\u7F6E\u65E5\u671F +Cannot_Set_Duplicate_Role_Name=\u4E0D\u80FD\u8BBE\u7F6E\u91CD\u590D\u7684\u89D2\u8272\u540D +Capacity=\u5BB9\u91CF +CapsLock=\u5927\u5199\u9501\u5B9A\u5DF2\u6253\u5F00 +Card=\u5361\u7247 +CardLayout=\u5361\u7247\u5E03\u5C40 +CardinalNumber=\u57FA\u6570 +CategoryName=\u5206\u7C7B\u540D +Cell=\u5355\u5143\u683C +Cell-Cell_Attributes=\u5355\u5143\u683C\u5C5E\u6027 +Cell-Location_And_Span=\u4F4D\u7F6E\u548C\u8DE8\u5EA6 +CellElement-Property_Table=\u5355\u5143\u683C\u5C5E\u6027\u8868 +CellPage-Can_Break_On_Paginate=\u5206\u9875\u65F6\u53EF\u4EE5\u65AD\u5F00 +CellWrite-Append_Row(Used_in_Web_Write_Report)=\u6DFB\u52A0\u884C(Web\u586B\u62A5\u4F7F\u7528) +CellWrite-Default_Value_To_Insert=\u9ED8\u8BA4\u7684\u63D2\u5165\u503C +CellWrite-Editable=\u53EF\u4EE5\u7F16\u8F91\u5355\u5143\u683C\u5185\u5BB9 +CellWrite-Flag=\u6807\u5FD7 +CellWrite-Hide_Cell=\u9690\u85CF\u5355\u5143\u683C +CellWrite-Hide_Column_If_Null=\u5F53\u7A7A\u503C\u65F6\u9690\u85CF\u5F53\u524D\u5217 +CellWrite-Hide_Column_Row=\u9690\u85CF\u884C\u5217 +CellWrite-Hide_Row_If_Null=\u5F53\u7A7A\u503C\u65F6\u9690\u85CF\u5F53\u524D\u884C +CellWrite-Hide_Same_Cell_Vertically(Used_in_Group_Report)=\u7EB5\u5411\u9690\u85CF\u76F8\u540C\u7684\u5355\u5143\u683C(\u5206\u7EC4\u62A5\u8868\u4F7F\u7528) +CellWrite-Hide_on_Print=\u5728\u6253\u5370\u65F6\u5019\u9690\u85CF\u5355\u5143\u683C +CellWrite-Including_Current_Cell=\u5305\u62EC\u5F53\u524D\u683C\u5B50 +CellWrite-InsertRow_COPY=\u539F\u503C +CellWrite-InsertRow_DEFAULT=\u9ED8\u8BA4\u503C +CellWrite-InsertRow_Label=\u63D2\u5165\u884C\u65F6\u63D2\u5165 +CellWrite-InsertRow_NULL=\u7A7A\u503C +CellWrite-InsertRow_Policy=\u63D2\u5165\u884C\u7B56\u7565 +CellWrite-Merge_Extra_Blank_Cell(Used_in_Group_Report)=\u5408\u5E76\u8865\u7A7A\u884C\u7684\u7A7A\u767D\u683C\u5B50(\u5206\u7EC4\u62A5\u8868\u4F7F\u7528) +CellWrite-Page_After_Column=\u5217\u540E\u5206\u9875 +CellWrite-Page_After_Row=\u884C\u540E\u5206\u9875 +CellWrite-Page_Before_Column=\u5217\u524D\u5206\u9875 +CellWrite-Page_Before_Row=\u884C\u524D\u5206\u9875 +CellWrite-Preview_Border=\u9884\u89C8\u8FB9\u6846 +CellWrite-Preview_Cell_Content=\u9884\u89C8\u5355\u5143\u683C\u5185\u5BB9 +CellWrite-Print_Background=\u6253\u5370/\u5BFC\u51FA\u5355\u5143\u683C\u80CC\u666F +CellWrite-Print_Border=\u6253\u5370\u8FB9\u6846 +CellWrite-Print_Content=\u6253\u5370/\u5BFC\u51FA\u5355\u5143\u683C\u5185\u5BB9 +CellWrite-Print_Export=\u6253\u5370\u5BFC\u51FA +CellWrite-Print_Zero_Value=\u6253\u5370\u96F6\u503C +CellWrite-Repeat_Content_When_Paging=\u5206\u9875\u65AD\u5F00\u65F6\u503C\u91CD\u590D\u663E\u793A +CellWrite-Show_As_HTML=\u7528HTML\u663E\u793A\u5185\u5BB9 +CellWrite-Show_As_Image=\u7528\u56FE\u7247\u663E\u793A\u5185\u5BB9 +CellWrite-Show_Content=\u663E\u793A\u5185\u5BB9 +CellWrite-Support_Smart_Delete=\u652F\u6301\u667A\u80FD\u5220\u9664\u884C +CellWrite-Support_Smart_Insert=\u652F\u6301\u667A\u80FD\u63D2\u5165\u884C +CellWrite-Suppress_If_Duplicated(Used_in_Group_Report)=\u7EB5\u5411\u5408\u5E76\u5185\u5BB9\u76F8\u540C\u7684\u5355\u5143\u683C(\u5206\u7EC4\u62A5\u8868\u4F7F\u7528) +CellWrite-ToolTip=\u5185\u5BB9\u63D0\u793A +Cell_Data=\u5355\u5143\u683C\u6570\u636E +Cell_Group=\u5355\u5143\u683C\u7EC4 +Cell_Point=\u5355\u5143\u683C\u5B9A\u4F4D +Center=\u5C45\u4E2D +Center-Cannnot_Be_Null=\u8FB9\u754C\u5E03\u5C40\u7684\u4E2D\u95F4\u7EC4\u4EF6\u4E0D\u80FD\u4E3A\u7A7A +Certification_Type=\u8BA4\u8BC1\u7C7B\u578B +ChangChunCity=\u957F\u6625\u5E02 +Change=\u6539\u53D8 +Change_To_LayerReport=\u8F6C\u6362\u6210\u5C42\u5F0F\u62A5\u8868 +ChangshaCity=\u957F\u6C99\u5E02 +Character=\u6587\u5B57 +CheckBox=\u590D\u9009\u6846 +CheckBoxField=\u590D\u9009\u6846 +ChengduCity=\u6210\u90FD\u5E02 +China=\u4E2D\u56FD +Choice_Type=\u5907\u9009\u9879\u7C7B\u578B +Chongqing=\u91CD\u5E86\u5E02 +ChongqingInCity=\u91CD\u5E86\u5E02\u533A +Choose=\u9009\u62E9 +Choose-Key-point=\u9009\u62E9\u5173\u952E\u8282\u70B9 +ChooseContentByUser=\u6839\u636E\u7528\u6237\u9009\u62E9\u4E0D\u540C\u7684\u5185\u5BB9 +ChooseOneButton=\u8BF7\u9009\u62E9\u4E00\u4E2A\u63A7\u4EF6\u540E\u518D\u6DFB\u52A0 +Choose_All=\u5168\u9009 +Choose_AnalysisData=\u8BF7\u9009\u62E9\u5206\u6790\u6570\u636E\uFF01 +Choose_DS-Server_TableData=\u9009\u62E9\u670D\u52A1\u5668\u6570\u636E\u96C6 +Choose_Date_Time=\u9009\u62E9\u65E5\u671F\u65F6\u95F4 +Choose_Different_Server_Data=\u8BF7\u9009\u62E9\u4E0D\u540C\u670D\u52A1\u5668\u6570\u636E\u96C6\u8FDB\u884C\u5173\u8054 +Choose_Language=\u8BED\u8A00\u9009\u62E9 +Choose_None=\u4E0D\u9009 +Choose_Role=\u6743\u9650\u63A7\u5236 +Choose_Role_Create=\u9009\u62E9\u89D2\u8272(\u8BF7\u5148\u8BBE\u7F6E\u89D2\u8272) +Choose_Use_Authority=\u60A8\u53EF\u4EE5\u9009\u62E9\u4F7F\u7528\u6743\u9650\u6765\u8FDB\u884C\u6743\u9650\u7684\u8BBE\u7F6E +Choose_columns=\u9009\u62E9\u5217 +Choose_to_generate_file_displayed_in_the_virtual_directory=\u9009\u62E9\u751F\u6210\u6587\u4EF6\u663E\u793A\u5728\u7684\u865A\u62DF\u76EE\u5F55 +Class=\u7C7B +ClassName=\u7C7B\u540D +Class_Processor=\u7C7B\u5904\u7406\u5668 +Classifier-Ge=\u4E2A +Classpath=\u7C7B\u8DEF\u5F84 +Classpath-Add_Folder=\u6DFB\u52A0\u6587\u4EF6\u5939 +Classpath-Add_Folder_to_Classpath=\u6DFB\u52A0\u6587\u4EF6\u5939\u5230Classpath +Classpath-Add_Jar=\u6DFB\u52A0Jar +Classpath-Add_Jar_to_Classpath=\u6DFB\u52A0Jar\u5230Classpath +Clear=\u6E05\u9664 +Clear_All=\u6E05\u7A7A +Click-Get_Default_URL=\u70B9\u51FB\u6B64\u6309\u94AE\u83B7\u5F97\u9ED8\u8BA4URL +Click-Me=\u70B9\u6211\u6709\u60CA\u559C\u54E6\uFF01 +Click_RadioButton_Change_Semantic=\u70B9\u51FB\u5355\u9009\u6309\u94AE\u66F4\u6539\u8BED\u4E49\u5C42\u7684\u8BBE\u7F6E +Click_To_Change_Value=\u70B9\u51FB\u6539\u53D8\u503C +Click_To_Shrink_Panel=\u70B9\u51FB\u6536\u7F29\u9762\u677F +Click_this_button=\u70B9\u51FB\u6B64\u6309\u94AE\u8FDB\u884C\u8DEF\u5F84\u9009\u62E9 +Client=\u5BA2\u6237\u7AEF +Close=\u5173\u95ED +CloseAuthConfirm=\u662F\u5426\u53D6\u6D88\u5206\u7EA7\u6743\u9650\u63A7\u5236 +Close_Synchronized_DataSet=\u5173\u95ED\u540C\u6B65\u6570\u636E\u96C6 +Closed=\u5DF2\u5173\u95ED +Collect-Click\!_Get_user_information_code=\u70B9\u51FB\!\u83B7\u53D6\u6FC0\u6D3B\u7801 +Collect-Collect_User_Information=\u6536\u96C6\u7528\u6237\u4FE1\u606F +Collect-Enter_your_user_information_code(It's_free_to_get_from_product's_official_website)=\u8BF7\u8F93\u5165\u60A8\u7684\u6FC0\u6D3B\u7801(\u5B83\u662F\u514D\u8D39\u4ECE\u4EA7\u54C1\u7684\u5B98\u65B9\u7F51\u7AD9\u83B7\u5F97\u7684) +Collect-Successfully=\u6536\u96C6\u6210\u529F +Collect-The_user_information_code_is_invalid=\u8FD9\u4E2A\u6FC0\u6D3B\u7801\u662F\u65E0\u6548\u7684, \u8BF7\u5230\u5B98\u7F51\u7533\u8BF7 +Collect-Use_Designer=\u4F7F\u7528\u8BBE\u8BA1\u5668 +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 +Color=\u989C\u8272 +ColorMatch=\u914D\u8272 +Colors=\u989C\u8272 +Column=\u5217 +Column\ Type= +Column-Axis=\u5217\u8F74 +Column-Fields=\u5217\u5B57\u6BB5 +Column-Number-OR-Row-Number=\u5217\u53F7\u6216\u884C\u53F7 +ColumnName=\u5217\u540D +ColumnSpan=\u5217\u8DE8\u5EA6 +ColumnTo=\u5217\u81F3\u7B2C +Column_Cell=\u6A2A\u683C +Column_Does_Not_Exsit=\u5217\u4E0D\u5B58\u5728 +Column_Measure=\u5217\u8F74/\u5EA6\u91CF\u503C +Column_Multiple=\u6570\u636E\u500D\u6570 +Column_tag=\u5217\u6807\u7B7E +Columns=\u5217 +Columns_choosed=\u9009\u62E9\u7684\u5217 +Combine\ Other\ to\ Other=\u5408\u5E76\u5269\u4F59\u9879\u4E3A"\u5176\u5B83" +ComboBox=\u4E0B\u62C9\u6846 +ComboCheckBox-End_Symbol=\u7ED3\u675F\u7B26 +ComboCheckBox-Start_Symbol=\u8D77\u59CB\u7B26 +Come_True=\u5B9E\u73B0 +Comfirm_To_Save=\u786E\u8BA4\u4FDD\u5B58 +CommaDismenber=\u9017\u53F7 +Common=\u666E\u901A +Common_Condition=\u666E\u901A\u6761\u4EF6 +Compart=\u5206\u9694 +Compile=\u7F16\u8BD1 +Compile-Not_Support=\u4E0D\u652F\u6301\u52A8\u6001\u7F16\u8BD1 +Compile_Failed=\u7F16\u8BD1\u5931\u8D25 +Compile_Success=\u7F16\u8BD1\u6210\u529F +Compile_Success_And_Then_Save=\u7F16\u8BD1\u6210\u529F\u624D\u80FD\u6B63\u786E\u4FDD\u5B58 +Component_Interval=\u7EC4\u4EF6\u95F4\u9694 +Component_Scale=\u7EC4\u4EF6\u7F29\u653E +Condition=\u6761\u4EF6 +ConditionB-AND=\u4E0E(AND) +ConditionB-Add_bracket=\u6DFB\u52A0\u62EC\u53F7 +ConditionB-Conditions=\u4F9D\u6761\u4EF6\u9009\u62E9 +ConditionB-Input_Condition_Parameter=\u8F93\u5165\u8FC7\u6EE4\u6761\u4EF6\u7684\u53C2\u6570 +ConditionB-OR=\u6216(OR) +ConditionB-Operator=\u64CD\u4F5C\u7B26 +ConditionB-Parameter_name_cannot_be_null=\u53C2\u6570\u540D\u5B57\u4E0D\u80FD\u4E3A\u7A7A +ConditionB-Remove_bracket=\u53BB\u6389\u62EC\u53F7 +ConditionB-begins_with=\u5F00\u5934\u662F +ConditionB-contains=\u5305\u542B +ConditionB-does_not_begin_with=\u5F00\u5934\u4E0D\u662F +ConditionB-does_not_contain=\u4E0D\u5305\u542B +ConditionB-does_not_end_with=\u7ED3\u5C3E\u4E0D\u662F +ConditionB-does_not_equal_to=\u4E0D\u7B49\u4E8E +ConditionB-does_not_in=\u4E0D\u5305\u542B\u4E8E +ConditionB-ends_with=\u7ED3\u5C3E\u662F +ConditionB-equals=\u7B49\u4E8E +ConditionB-in=\u5305\u542B\u4E8E +ConditionB-is_empty=\u4E3A\u7A7A +ConditionB-is_greater_than=\u5927\u4E8E +ConditionB-is_greater_than_or_equal_to=\u5927\u4E8E\u6216\u7B49\u4E8E +ConditionB-is_less_than=\u5C0F\u4E8E +ConditionB-is_less_than_or_equal_to=\u5C0F\u4E8E\u6216\u7B49\u4E8E +ConditionB-is_not_empty=\u4E0D\u4E3A\u7A7A +ConditionB-not_null=\u4E0D\u4E3A\u7A7A +ConditionB-null=\u4E3A\u7A7A +Condition_Attributes=\u6761\u4EF6\u5C5E\u6027 +Condition_Display=\u6761\u4EF6\u663E\u793A +Conditions_formula=\u6761\u4EF6\u516C\u5F0F +Config_Servlet=\u914D\u7F6E\u8FDC\u7A0B\u670D\u52A1\u5668 +Config_Synchronized_DataSet=\u914D\u7F6E\u540C\u6B65\u6570\u636E\u96C6 +Confirm=\u786E\u8BA4 +Confirm-Delete-File=\u662F\u5426\u5220\u9664\u6240\u9009\u6587\u4EF6\uFF1F +Connect_SQL_Cannot_Null=\u6570\u636E\u8FDE\u63A5\u548CSQL\u9762\u677F\u4E0D\u80FD\u4E3A\u7A7A +Connection=\u8FDE\u63A5 +ConnectionPool_Attr=\u8FDE\u63A5\u6C60\u5C5E\u6027 +Connectionline=\u8FDE\u7EBF\u6A21\u5F0F +Content=\u5185\u5BB9 +Content-empty=\ \u5185\u5BB9\u5C06\u663E\u793A\u4E3A\u7A7A\u3002 +ContentDisplay=\u663E\u793A\u65B9\u5F0F +Continent=\u6D32\u9645 +Continue_add=\u7EE7\u7EED\u6DFB\u52A0 +Continuum=\u76F8\u90BB\u8FDE\u7EED +Convert=\u8F6C\u6362 +Copy=\u590D\u5236 +CopyRight=\u7248\u6743\u6240\u6709 +Corre_parameter=\u5BF9\u5E94\u53C2\u6570 +Corresponding_Fields=\u5BF9\u5E94\u5B57\u6BB5 +Corresponding_Layer=\u5BF9\u5E94\u5C42\u7EA7 +CountStyle=\u8BA1\u7B97\u65B9\u5F0F +Cover_None=\u5168\u4E0D\u8986\u76D6 +Covered_All=\u5168\u90E8\u8986\u76D6 +Cpt_Backup=\u52A0\u5BC6\u524D\u5148\u8FDB\u884C\u6A21\u677F\u5907\u4EFD +Cpt_Backup_Sure=\u5907\u4EFD\u6A21\u677F\u53EF\u4EE5\u9632\u6B62\u6570\u636E\u4E22\u5931\uFF0C\u60A8\u786E\u5B9A\u4E0D\u5907\u4EFD\u5417\uFF1F +Create_Cross_Report=\u521B\u5EFA\u4EA4\u53C9\u62A5\u8868 +Create_Free_Report=\u521B\u5EFA\u81EA\u7531\u62A5\u8868 +Create_Grouping_Report=\u521B\u5EFA\u5206\u7EC4\u62A5\u8868 +Create_QRCode=\u751F\u6210\u4E8C\u7EF4\u7801 +Create_Time=\u521B\u5EFA\u65F6\u95F4 +Create_Tree=\u6784\u5EFA\u6811 +Crimson=\u6DF1\u7EA2 +CrossReport_Fields=\u4EA4\u53C9\u62A5\u8868\u5B57\u6BB5 +CrossTable=\u4EA4\u53C9\u8868 +Cross_Report=\u4EA4\u53C9\u62A5\u8868 +Cross_Report_Wizard=\u4EA4\u53C9\u62A5\u8868\u5411\u5BFC +Currency_Line=\u91D1\u989D\u7EBF +Current=\u5F53\u524D +Current_Node_Staff=\u672C\u8282\u70B9\u4EBA\u5458 +Current_Preview_Rows=\u5F53\u524D\u9884\u89C8\u884C\u6570 +Current_custom_global=\u5F53\u524D\u62A5\u8868\u6240\u7528\u81EA\u5B9A\u4E49\u5168\u5C40\u6837\u5F0F +Current_keys=\u5F53\u524D\u5FEB\u6377\u952E\uFF1A +Cursor=\u6E38\u6807 +Cursor_to_next_column=\u5149\u6807\u79FB\u5230\u4E0B\u4E00\u5217 +Cursor_to_next_row=\u5149\u6807\u79FB\u5230\u4E0B\u4E00\u884C +Cursor_to_previous_column=\u5149\u6807\u79FB\u5230\u4E0A\u4E00\u5217\u4E3A\uFF1A +Cursor_to_previous_row=\u5149\u6807\u79FB\u5230\u4E0A\u4E00\u884C\u4E3A\uFF1A +Custom=\u81EA\u5B9A\u4E49 +CustomLoginPage=\u81EA\u5B9A\u4E49\u767B\u5F55\u7F51\u9875 +Custom_Button_Message=\u81EA\u5B9A\u4E49button\u5177\u4F53\u4F7F\u7528\u65B9\u6CD5\u8BF7\u53C2\u8003\u5E2E\u52A9\u6587\u6863 +Custom_Button_Submit_URL=\u63D0\u4EA4\u5730\u5740 +Custom_Button_Target_Type=\u63D0\u4EA4\u7A97\u53E3\u6A21\u5F0F +Custom_Button_Type_Simple=\u666E\u901A +Custom_Button_Type_Submit=\u63D0\u4EA4 +Custom_Define_Types=\u81EA\u5B9A\u4E49\u7C7B\u578B +Custom_FS_Process=\u81EA\u5B9A\u4E49\u6D41\u7A0B\u5339\u914D +Custom_FS_Roles=\u81EA\u5B9A\u4E49\u89D2\u8272 +Custom_FS_Users=\u81EA\u5B9A\u4E49\u7528\u6237 +Custom_Icon_Message1=\u5EFA\u8BAE\u4F7F\u752816 \u00D7 16\u89C4\u683C\u7684PNG\u56FE\u7247 +Custom_Icon_Message2=\u60A8\u7684\u64CD\u4F5C\u5B58\u5728\u4E0D\u5408\u7406\u4E4B\u5904\u3002 +Custom_Icon_Message3=\u56FE\u6807\u540D\u79F0\u5DF2\u7ECF\u5B58\u5728\u3002 +Custom_Icon_RemoveIcon=\u79FB\u9664\u56FE\u6807 +Custom_Icon_SelectIcon=\u9009\u62E9\u56FE\u6807 +Custom_Login_Page=\u81EA\u5B9A\u4E49\u767B\u5F55\u9875\u9762 +Custom_Processor=\u81EA\u5B9A\u4E49\u5904\u7406\u5668 +Custom_Roles=\u81EA\u5B9A\u4E49\u89D2\u8272 +Custom_Type_Set=\u7EC4\u5408\u7C7B\u578B\u8BBE\u7F6E +Custom_styles_lost=\u81EA\u5B9A\u4E49\u6837\u5F0F\u5DF2\u4E22\u5931 +Customs=\u5B9A\u5236 +D-ChartArea=\u56FE\u8868\u533A +D-ChartStyle_Info=\u4ECB\u7ECD +D-ChartStyle_SubStyle= +D-ChartValues=\u56FE\u8868\u6570\u503C +D-DataSeries=\u6570\u636E\u5E8F\u5217 +D-Dispaly_Divide_Result_Set_into_Groups=\u5C06\u7ED3\u679C\u96C6\u8FDB\u884C\u5206\u7EC4 +D-HotHyperlink=\u70ED\u94FE\u63A5 +D-Step=\u6B65\u9AA4 +DBCP_INITIAL_SIZE=\u521D\u59CB\u5316\u8FDE\u63A5\u6570 +DBCP_MAX_ACTIVE=\u6700\u5927\u6D3B\u52A8\u8FDE\u63A5\u6570 +DBCP_MAX_IDLE=\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5\u6570 +DBCP_MAX_WAIT=\u6700\u5927\u7B49\u5F85\u65F6\u95F4 +DBCP_MIN_EVICTABLE_IDLE_TIMEMILLIS=\u4FDD\u6301\u7A7A\u95F2\u6700\u5C0F\u65F6\u95F4\u503C +DBCP_MIN_IDLE=\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5\u6570 +DBCP_NUM_TEST_PER_EVCTION_RUN=\u7A7A\u95F2\u8FDE\u63A5\u56DE\u6536\u68C0\u67E5\u6570 +DBCP_TEST_ON_BORROW=\u83B7\u53D6\u8FDE\u63A5\u524D\u68C0\u9A8C +DBCP_TEST_ON_RETURN=\u5F52\u8FD8\u8FDE\u63A5\u524D\u68C0\u9A8C +DBCP_TEST_WHILE_IDLE=\u5F00\u542F\u7A7A\u95F2\u56DE\u6536\u5668\u68C0\u9A8C +DBCP_TIME_BETWEEN_EVICTIONRUNSMILLIS=\u7A7A\u95F2\u8FDE\u63A5\u56DE\u6536\u5668\u4F11\u7720\u65F6\u95F4 +DBCP_VALIDATION_QUERY=SQL\u9A8C\u8BC1\u67E5\u8BE2 +DBTableData_Not_Get_RowCount=\u4E0D\u80FD\u53D6\u5F97\u603B\u884C\u6570 +DEFAULT=\u9ED8\u8BA4 +DONE_WORK=\u5DF2\u5904\u7406\u4E8B\u52A1 +DS-Class=\u7A0B\u5E8F +DS-Class_Name=\u7C7B\u540D +DS-Class_TableData=\u7A0B\u5E8F\u6570\u636E\u96C6 +DS-Convert_to_Private=\u8F6C\u4E3A\u79C1\u6709 +DS-Database_Query=\u6570\u636E\u5E93\u67E5\u8BE2 +DS-Database_TableData=\u6570\u636E\u5E93\u6570\u636E\u96C6 +DS-Databse_Info_Save_Des=\u5168\u5C40\u6570\u636E\u5E93\u8FDE\u63A5\u4FE1\u606F\u4FDD\u5B58\u5728\u5168\u5C40\u6587\u4EF6"/WEB-INF/resources/datasource.xml"\uFF0C\u91CC\u9762\u4F9B\u6240\u6709\u7684\u6A21\u677F\u6587\u4EF6\u8C03\u7528\u3002 +DS-Define_Semantic=\u5B9A\u4E49\u8BED\u4E49\u5C42 +DS-Dictionary=\u6570\u636E\u5B57\u5178 +DS-Embedded_TableData=\u5185\u7F6E\u6570\u636E\u96C6 +DS-Form_DataSource=\u8868\u5355\u6570\u636E\u6E90 +DS-Multi_Dimensional_Database=\u591A\u7EF4\u6570\u636E\u5E93 +DS-No_Dictionary=\u6CA1\u6709\u6570\u636E\u5B57\u5178 +DS-Real_Name_<->_Display_Name=\u5B9E\u9645\u540D\u5B57 <-> \u663E\u793A\u540D\u5B57 +DS-Relation_TableData=\u5173\u8054\u6570\u636E\u96C6 +DS-Report_DataList=\u62A5\u8868\u6570\u636E\u94FE +DS-Report_Dictionary=\u62A5\u8868\u6570\u636E\u5B57\u5178 +DS-Report_TableData=\u6A21\u677F\u6570\u636E\u96C6 +DS-Select_Data_Column=\u9009\u62E9\u6570\u636E\u5217 +DS-Select_Data_Column_from_Left_Data_Tree=\u4ECE\u5DE6\u8FB9\u7684\u6570\u636E\u6811\u4E2D\u9009\u62E9\u6570\u636E\u5217 +DS-Select_Database=\u9009\u62E9\u6570\u636E\u5E93 +DS-Server_Dictionary=\u670D\u52A1\u5668\u6570\u636E\u5B57\u5178 +DS-Server_TableData=\u670D\u52A1\u5668\u6570\u636E\u96C6 +DS-Should_select_a_bind_column=\u9700\u8981\u7ED1\u5B9A\u4E00\u4E2A\u6570\u636E\u5217 +DS-TableData=\u6570\u636E\u96C6 +DS-Text_TableData=\u6587\u672C\u6570\u636E\u96C6 +DS-XML_TableData=XML\u6570\u636E\u96C6 +DashBoard-Adhoc=\u5373\u5E2D\u62A5\u8868 +DashBoard-AdhocSetting=B/S\u8BBE\u8BA1\u5668\u5DE5\u5177 +DashBoard-BeautyReport=\u5F62\u8C61\u7F8E\u89C2\u7684\u56FE\u8868 +DashBoard-ChartFloat=\u56FE\u8868 +DashBoard-ChartRecord=\u96F6\u5BA2\u6237\u7AEF\u8868\u5355\u5F55\u5165 +DashBoard-ConnectionList=\u6570\u636E\u8FDE\u63A5 +DashBoard-DashBoard=\u663E\u793A\u6B22\u8FCE\u754C\u9762 +DashBoard-DashBoradSetting=\u6B22\u8FCE\u754C\u9762\u8BBE\u7F6E +DashBoard-Dateunfurl=\u6570\u636E\u5C55\u793A +DashBoard-FindDashBorad=\u4EE5\u540E\u542F\u52A8\u5C06\u4E0D\u518D\u663E\u793A\uFF0C\u60A8\u53EF\u4EE5\u5728\u7A97\u53E3\u9009\u9879\u680F\u4E2D\u91CD\u65B0\u8BBE\u7F6E\u5B83 +DashBoard-FormBook=\u8868\u5355 +DashBoard-GuideAction=\u62A5\u8868\u9884\u5904\u7406\u5411\u5BFC +DashBoard-LearnTutorial=\u9AD8\u624B\u8FDB\u9636 \u8FDB\u5165FineReport v6.5\u7684\u5B66\u4E60\u6559\u7A0B +DashBoard-MainFunction=\u4E3B\u8981\u529F\u80FD\u4E00\u89C8 +DashBoard-More=\u66F4\u591A... +DashBoard-NewTemplate=\u6A21\u677F +DashBoard-NoMoreReminder=\u4E0D\u518D\u663E\u793A +DashBoard-Online_Document=\u5728\u7EBF\u6587\u6863 +DashBoard-OpenRecentReport=\u6253\u5F00\u6700\u8FD1\u7684\u6587\u4EF6 +DashBoard-Potence=\u6743\u9650 +DashBoard-QucikAccidence=\u5FEB\u901F\u5165\u95E8(\u63A8\u8350) >> +DashBoard-ReportShowPlatform=\u62A5\u8868\u5C55\u793A\u5E73\u53F0 +DashBoard-ReportsPrint=\u96F6\u5BA2\u6237\u7AEF\u62A5\u8868\u6253\u5370 +Data=\u6570\u636E +Data-Check=\u6570\u636E\u76D1\u63A7 +Data-Get_Data_Error=\u83B7\u53D6\u6570\u636E\u65F6\u53D1\u751F\u9519\u8BEF +Data-Label=\u6807\u7B7E +DataBinding=\u6570\u636E\u7ED1\u5B9A +DataColumn=\u6570\u636E\u5217 +DataFunction-Average=\u5E73\u5747 +DataFunction-Count=\u4E2A\u6570 +DataFunction-Max=\u6700\u5927\u503C +DataFunction-Min=\u6700\u5C0F\u503C +DataFunction-None=\u65E0 +DataFunction-Sum=\u6C42\u548C +DataFunction_Percent=\u5360\u6BD4 +DataList=\u6570\u636E\u94FE +DataList-Set_Value_Of_DataList=\u8BBE\u7F6E\u6570\u636E\u94FE\u7684\u503C +Data_Connection_Driver_Name=\u6570\u636E\u8FDE\u63A5\u9A71\u52A8\u5668\u540D\u79F0 +Data_Fields_can_be_used=\u53EF\u7528\u7684\u6570\u636E\u5B57\u6BB5 +Data_Fields_will_be_displayed=\u5C06\u8981\u663E\u793A\u7684\u6570\u636E\u5B57\u6BB5 +Data_Filter=\u6570\u636E\u7B5B\u9009 +Data_Rollback_Failed=\u6570\u636E\u56DE\u6EDA\u5931\u8D25 +Data_Setting=\u6570\u636E\u8BBE\u7F6E +Data_Submit_Error=\u6570\u636E\u63D0\u4EA4\u51FA\u9519 +Data_Type=\u6570\u636E\u683C\u5F0F +Data_range_configuration=\u6570\u636E\u533A\u95F4\u914D\u7F6E +Database=\u6570\u636E\u5E93 +Database_Connection=\u6570\u636E\u5E93\u8FDE\u63A5 +Database_User=\u6570\u636E\u5E93\u7528\u6237 +Datasource-Add_DataConnection=\u6DFB\u52A0\u6570\u636E\u8FDE\u63A5 +Datasource-Add_Database=\u6DFB\u52A0\u6570\u636E\u5E93 +Datasource-Add_Directory_of_hibernate.cfg.xml_to_Classpath=\u628Ahibernate.cfg.xml\u6587\u4EF6\u52A0\u5230Classpath\u4E0B +Datasource-Add_TableData=\u6DFB\u52A0\u6570\u636E\u96C6 +Datasource-Are_you_sure_to_delete_the_selected_SAP_datasource=\u4F60\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u7684SAP\u6570\u636E\u6E90\u5417 +Datasource-Are_you_sure_to_delete_the_selected_class_datasource=\u4F60\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u7684\u7A0B\u5E8F\u6570\u636E\u6E90\u5417 +Datasource-Are_you_sure_to_delete_the_selected_hibernate_datasource=\u4F60\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u7684Hibernate\u6570\u636E\u6E90\u5417 +Datasource-Are_you_sure_to_delete_the_selected_remedy_datasource=\u4F60\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u7684Remedy\u6570\u636E\u6E90\u5417 +Datasource-Class_datasource_name_cannot_be_null=\u7A0B\u5E8F\u6570\u636E\u6E90\u7684\u540D\u5B57\u4E0D\u53EF\u4EE5\u4E3A\u7A7A +Datasource-Column_Index=\u5217\u5E8F\u53F7 +Datasource-Connection_failed=\u8FDE\u63A5\u5931\u8D25 +Datasource-Connection_successfully=\u8FDE\u63A5\u6210\u529F +Datasource-Context=\u4E0A\u4E0B\u6587 +Datasource-Convert_Charset=\u7F16\u7801\u8F6C\u6362 +Datasource-Data_Map_Source=\u6570\u636E\u5B57\u5178\u6765\u6E90 +Datasource-Database_Type=\u6570\u636E\u5E93\u7C7B\u578B +Datasource-Datasource=\u6570\u636E\u6E90 +Datasource-Datasource-name=\u6570\u636E\u6E90\u540D +Datasource-Datasource-value=\u6570\u636E\u6E90\u503C +Datasource-Datasoure_File=\u6570\u636E\u6E90\u6587\u4EF6 +Datasource-From_Database=\u6570\u636E\u5E93\u8868 +Datasource-JDBC_Datasource=JDBC\u6570\u636E\u6E90 +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. +Datasource-JNDI_Name=JNDI\u7684\u540D\u5B57 +Datasource-Key=\u952E\u503C +Datasource-Maximum_Number_of_Preview_Rows=\u6700\u5927\u7684\u9884\u89C8\u884C\u6570 +Datasource-New_Charset=\u65B0\u7F16\u7801 +Datasource-Original_Charset=\u539F\u59CB\u7F16\u7801 +Datasource-Other_Attributes=\u5176\u4ED6\u5C5E\u6027 +Datasource-Param_DES= \u60A8\u53EF\u4EE5\u952E\u5165"${abc}"\u505A\u4E3A\u4E00\u4E2A\u53C2\u6570\uFF0C\u8FD9\u91CCabc\u662F\u53C2\u6570\u7684\u540D\u79F0\u3002\u4F8B\u5982\uFF1A
 select * from table where id\=${abc}\u3002
 select * from table where id\='${abc}'\u3002(\u5982\u679Cid\u5B57\u6BB5\u4E3A\u5B57\u7B26\u4E32\u7C7B\u578B) +Datasource-Procedurewaring=\u7CFB\u7EDF\u4E0D\u80FD\u81EA\u52A8\u83B7\u53D6\u8BE5\u5B58\u50A8\u8FC7\u7A0B\u7684\u53C2\u6570\uFF0C\u8BF7\u624B\u52A8\u6DFB\u52A0\! +Datasource-Public_Datasource_Manager=\u516C\u6709\u6570\u636E\u6E90\u7BA1\u7406\u5668 +Datasource-Query_Type=\u67E5\u8BE2\u7C7B\u578B +Datasource-Read_Type=\u8BFB\u53D6\u65B9\u5F0F +Datasource-Rename_SAP_datasource=\u91CD\u547D\u540DSAP\u6570\u636E\u6E90 +Datasource-Rename_class_datasource=\u91CD\u547D\u540D\u7A0B\u5E8F\u6570\u636E\u6E90 +Datasource-Rename_hibernate_datasource=\u91CD\u547D\u540DHibernate\u6570\u636E\u6E90 +Datasource-Rename_remedy_datasource=\u91CD\u547D\u540DRemedy\u6570\u636E\u6E90 +Datasource-SAP_datasource=SAP \u6570\u636E\u6E90 +Datasource-SAP_datasource_name_cannot_be_null=SAP \u6570\u636E\u6E90\u540D\u4E0D\u80FD\u4E3A\u7A7A +Datasource-SQL=\u7531SQL\u521B\u5EFA +Datasource-SQL_Query=SQL\u67E5\u8BE2 +Datasource-Select_the_class_name=\u9009\u62E9\u7A0B\u5E8F\u6570\u636E\u6E90\u7684\u7C7B\u540D +Datasource-Set_Classpath=\u8BBE\u7F6EClasspath +Datasource-Single=\u5355\u4E2A\u8BFB\u53D6 +Datasource-Stored_Procedure=\u5B58\u50A8\u8FC7\u7A0B +Datasource-TabeData=\u7531TableData\u521B\u5EFA +Datasource-TableData_Name=\u6570\u636E\u96C6\u540D\u79F0 +Datasource-Table_Name=\u8868\u540D +Datasource-Test_Connection=\u6D4B\u8BD5\u8FDE\u63A5 +Datasource-Text_datasource=\u6587\u672C\u6570\u636E +Datasource-The_name_of_database_cannot_be_null=\u6570\u636E\u5E93\u7684\u540D\u5B57\u4E0D\u80FD\u4E3A\u7A7A +Datasource-The_name_of_datasource_cannot_be_null=\u6570\u636E\u67E5\u8BE2\u7684\u540D\u5B57\u4E0D\u80FD\u4E3A\u7A7A +Datasource-User_Defined=\u81EA\u5B9A\u4E49 +Datasource-Whole=\u5B8C\u5168\u8BFB\u53D6 +Datatype=\u6570\u636E\u7C7B\u578B +Date=\u65E5\u671F +DateFormat-Custom_Warning=\u6CE8\uFF1A\u81EA\u5B9A\u4E49\u65E5\u671F\u683C\u5F0F\u4E0D\u652F\u6301\u683C\u5F0F\u6821\u9A8C +DateFormat-yyyyMM=yyyy\u5E74MM\u6708 +DateFormat-yyyyMMdd=yyyy\u5E74MM\u6708dd\u65E5 +DateFormat-yyyyMd=yyyy\u5E74M\u6708d\u65E5 +Date_Attention=\u683C\u5F0F\u5FC5\u987B\u4E3AMM/dd/yyyy +Date_Time_Attention=\u683C\u5F0F\u5FC5\u987B\u4E3AMM/dd/yyyy HH\:mm\:ss +Day=\u5929 +De=\u7684 +December=\u5341\u4E8C\u6708 +DeciPart=\u5C0F\u6570\u90E8\u5206 +DecimalNumber_Out=\u5C0F\u6570\u4F4D\u8FC7\u591A +Deep=\u6DF1\u5EA6 +DeepSeriesCap=\u6DF1\u5EA6\u7CFB\u5217\u95F4\u8DDD +Default=\u9ED8\u8BA4 +Default-Browser=\u9ED8\u8BA4\u6D4F\u89C8\u5668 +Default_Certification=\u9ED8\u8BA4\u8BA4\u8BC1 +Default_Data_Connect=\u9ED8\u8BA4\u6570\u636E\u8FDE\u63A5 +Default_ParameterWindow_Attribute_Setting=\u9ED8\u8BA4\u53C2\u6570\u7A97\u53E3\u5C5E\u6027\u8BBE\u7F6E +Default_ParameterWindow_CountPerRow=\u6BCF\u884C\u53C2\u6570\u4E2A\u6570 +Default_ParameterWindow_EditorWidth=\u53C2\u6570\u7F16\u8F91\u5668\u5BBD\u5EA6 +Default_ParameterWindow_TextWidth=\u53C2\u6570\u6587\u672C\u5BBD\u5EA6 +Default_Parameter_Attribute_Setting=\u9ED8\u8BA4\u53C2\u6570\u9875\u9762\u5C5E\u6027\u8BBE\u7F6E +Default_View=\u9ED8\u8BA4\u89C6\u56FE\u5E03\u5C40 +Default_value=\u53C2\u6570\u9ED8\u8BA4\u503C +Define=\u5B9A\u4E49 +Define_Filter=\u5B9A\u4E49\u5B57\u6BB5\u8FC7\u6EE4 +Definition=\u5B9A\u4E49 +Delay=\u5EF6\u8FDF +Delete=\u5220\u9664 +Delete_Button=\u5220\u9664\u6B64\u6309\u94AE +Delete_Column=\u5220\u9664\u5217 +Delete_Data=\u5220\u9664\u6570\u636E +Delivery=\u4F20\u9012 +Denied_To_Upload_Contains=\u7981\u6B62\u4E0A\u4F20\u7684\u6587\u4EF6\u5305\u62EC +Department_Roles=\u90E8\u95E8\u89D2\u8272 +Deploy-Page=\u90E8\u7F72\u9875\u9762 +Deploy-Success_Info=\u770B\u5230\u6B64\u9875\u9762\uFF0C\u8BF4\u660E\u60A8\u5DF2\u7ECF\u6210\u529F\u90E8\u7F72\u4E86\u62A5\u8868\u670D\u52A1\u5668 +Deploy-You_Could_Access=\u60A8\u8FD8\u53EF\u4EE5\u7531\u6B64\u8FDB\u5165 +Depth_Style=\u539A\u5EA6\u8BBE\u7F6E +Des-MapManager=\u670D\u52A1\u5668\u6570\u636E\u5B57\u5178\u5C06\u4FDD\u5B58\u5230"WEB-INF\\resources\\datasource.xml"\u6587\u4EF6\u91CC\u9762\uFF0C\u662F\u5171\u4EAB\u7684\uFF0C\u4F9B\u6240\u6709\u7684\u6A21\u677F\u8C03\u7528\u3002 +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. +Des-Private_Data_Source=\u6240\u6709\u5B9A\u4E49\u7684\u8FD9\u4E9B\u6570\u636E\u6E90,\u5C06\u4FDD\u5B58\u5728Report\u62A5\u8868\u5BF9\u8C61\u91CC\u9762,\u53EA\u4F9B\u5F53\u524D\u62A5\u8868\u4F7F\u7528 +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. +Des-Show_private_data_dialog_when_creating_new_worksheet=\u6BCF\u6B21\u65B0\u5EFA\u81EA\u7531\u62A5\u8868\u65F6\u663E\u793A\u79C1\u6709\u6570\u636E\u5BF9\u8BDD\u6846 +Des-Would_you_like_to_cover_the_current_file=\u662F\u5426\u8981\u8986\u76D6\u5F53\u524D\u6587\u4EF6 +Description=\u63CF\u8FF0 +Description_things=\u63CF\u8FF0 +Deselect_All=\u4E0D\u9009 +Design=\u8BBE\u8BA1 +Designer-Preview=\u8BBE\u8BA1\u5668\u9884\u89C8 +Designer_Language=\u8BBE\u8BA1\u5668\u8BED\u8A00 +Desktop=\u684C\u9762 +Detail-Information=\u8BE6\u7EC6\u4FE1\u606F +Device=\u8BBE\u5907 +Dialog=\u5BF9\u8BDD\u6846 +Dic-Choose_Database_And_Table=\u9009\u62E9\u6570\u636E\u5E93\u548C\u8868 +Dic-Data_Query=\u6570\u636E\u67E5\u8BE2 +Dic-Database_Table=\u6570\u636E\u5E93\u8868 +Dic-Only_Can_Delete_DataDictionary=\u53EA\u80FD\u5220\u9664\u6570\u636E\u5B57\u5178 +Dic-Only_Can_Rename_DataDictionary=\u53EA\u80FD\u91CD\u547D\u540D\u6570\u636E\u5B57\u5178 +Dic-Set_Actual_Value_And_Display_Value=\u8BBE\u5B9A\u5B9E\u9645\u503C\u548C\u663E\u793A\u503C +Dic-Set_Key_And_Value=\u8BBE\u5B9A\u952E\u503C\u548C\u6570\u503C +Dictionary-Dynamic_SQL=\u52A8\u6001SQL +Dictionary_Name_Exsited_Next_Choose_ReportDictionary=\u670D\u52A1\u5668\u6570\u636E\u5B57\u5178\u547D\u540D\u4E0E\u62A5\u8868\u6570\u636E\u5B57\u5178\u547D\u540D\u6709\u91CD\u590D\uFF0C\u4E0B\u6B21\u6253\u5F00\u9ED8\u8BA4\u9009\u62E9\u540C\u540D\u62A5\u8868\u6570\u636E\u5B57\u5178\u3002 +Dictionary_Name_Has_Exsited=\u6570\u636E\u5B57\u5178\u540D\u5DF2\u7ECF\u5B58\u5728 +Dimension=\u7EF4\u5EA6 +Directory=\u76EE\u5F55 +Directory_Used_For_Text_Excel=\u76EE\u5F55\u662F\u5E94\u7528\u4E8E\u6587\u672C\u6570\u636E\u96C6\u548CEXCEL\u6570\u636E\u96C6\u7684\u6587\u4EF6\u5939\u76EE\u5F55\uFF0C\u91CC\u9762\u5305\u542B\u4E86\u666E\u901A\u6587\u672C\u6216\u8005EXCEL\u6587\u4EF6 +DisPlay_Proportion=\u663E\u793A\u6BD4\u4F8B +Disk_File=\u78C1\u76D8\u6587\u4EF6 +Dismenber=\u5206\u9694\u7B26 +Display=\u5C55\u793A +Display\ position=\u663E\u793A\u4F4D\u7F6E +Display-Style=\u62A5\u8868\u5C55\u793A\u6837\u5F0F +DisplayNothingBeforeQuery=\u70B9\u51FB\u67E5\u8BE2\u524D\u4E0D\u663E\u793A\u62A5\u8868\u5185\u5BB9 +DisplayTheLabel-In-Chart=\u5728\u56FE\u8868\u4E0A\u663E\u793A\u523B\u5EA6\u5355\u4F4D\u6807\u7B7E +DisplayUnit=\u663E\u793A\u5355\u4F4D +Display_Modes=\u663E\u793A\u6A21\u5F0F +Display_Value=\u663E\u793A\u503C +Divided_stage=\u5212\u5206\u9636\u6BB5 +DoSelectPosition=\u8BF7\u9009\u62E9\u804C\u4F4D +DoSelectUser=\u8BF7\u9009\u62E9\u7528\u6237 +Do_not_remind=\u4E0B\u6B21\u63D0\u9192 +Docking-Aggregate=\u805A\u5408 +Docking-Dock=\u505C\u9760 +Docking-Docked_Mode=\u505C\u9760\u6A21\u5F0F +Docking-Fix=\u56FA\u5B9A +Docking-Float=\u6D6E\u52A8 +Docking-Floating_Mode=\u6D6E\u52A8\u6A21\u5F0F +Docking-Pin=\u56FA\u5B9A +Docking-Pinned_Mode=\u56FA\u5B9A\u6A21\u5F0F +Docking-Undock=\u4E0D\u505C\u9760 +Docking-Unpin=\u4E0D\u56FA\u5B9A +Docking-Views_Menu=\u89C6\u56FE\u83DC\u5355 +Donot_Repeat_Data=\u6570\u636E\u91CD\u590D +Double=\u5C0F\u6570 +Double_Bottom_BorderLine=\u53CC\u5E95\u6846\u7EBF +Double_Click_Edit_OR_Clear=\u53CC\u51FB\u8FDB\u884C\u7F16\u8F91\u6216\u6E05\u9664 +Down=\u4E0B +DownBarBorderStyleAndColor=\u8DCC\u67F1\u6837\u5F0F +Download=\u4E0B\u8F7D +Drag_To_Move=\u70B9\u6B64\u62C9\u52A8 +Drag_the_selected_field=\u5B57\u6BB5\u5217\u8868(\u5C1D\u8BD5\u62D6\u62FD) +Drag_to_select_gradient=\ \u62D6\u52A8\u4E0B\u65B9\u6309\u94AE\u9009\u62E9\u6E10\u53D8\u533A\u57DF\uFF0C\u5355\u51FB\u6309\u94AE\u9009\u62E9\u5BF9\u5E94\u989C\u8272 +Draw=\u7ED8\u5236 +DrawChart=\u7ED8\u56FE +Driver=\u9A71\u52A8\u5668 +Drop_down_for_more_preview= +FR-Designer_Dropdown-More-Preview=\u4E0B\u62C9\u83B7\u53D6\u66F4\u591A\u9884\u89C8\u65B9\u5F0F +ECP-error_pwd=\u5BC6\u7801\u9519\u8BEF +ECP_decode=\u6A21\u677F\u89E3\u5BC6 +ECP_decode_failed=\u89E3\u5BC6\u5931\u8D25, \u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u68C0\u67E5\u5BC6\u7801\u6587\u4EF6\u662F\u5426\u5B58\u5728 +ECP_encode_failed=\u52A0\u5BC6\u5931\u8D25, \u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u68C0\u67E5\u5BC6\u7801\u6587\u4EF6\u662F\u5426\u635F\u574F +ECP_error_input=\u5BC6\u7801\u683C\u5F0F\u4E0D\u7B26 +ECP_error_pwd=\u5BC6\u7801\u9519\u8BEF +ECP_error_same=\u5BC6\u7801\u4E0D\u80FD\u4E0E\u539F\u59CB\u5BC6\u7801\u76F8\u540C +ECP_input_pwd=\u8BF7\u8F93\u5165\u5BC6\u7801\: +ECP_re_input=\u5BC6\u7801\u9519\u8BEF, \u8BF7\u91CD\u65B0\u8F93\u5165 +ECP_start_encode=\u5F00\u59CB\u52A0\u5BC6 +EDIT_REPORT_XML=\u5728\u7EBF\u7F16\u8F91\u62A5\u8868\u5185\u5BB9\u4F20\u8F93 +ES_Role_Instruction1=\u8BF7\u914D\u7F6E\u89D2\u8272\u6743\u9650\uFF0C\u7F16\u8F91\u89D2\u8272\u8BF7\u767B\u5F55\u6570\u636E\u51B3\u7B56\u7CFB\u7EDF +ES_Role_Instruction2=\u60A8\u6CA1\u6709\u4F7F\u7528\u670D\u52A1\u5668\u6570\u636E\u96C6\u8EAB\u4EFD\u9A8C\u8BC1\uFF0C\u8BF7\u6DFB\u52A0\u89D2\u8272\u5E76\u914D\u7F6E\u6743\u9650 +ES_Role_Instruction3=\u60A8\u4F7F\u7528\u7684\u662F\u670D\u52A1\u5668\u6570\u636E\u96C6\u8EAB\u4EFD\u9A8C\u8BC1\uFF0C\u8BF7\u914D\u7F6E\u89D2\u8272\u6743\u9650 +EX-Can_not_create_WorkBook_from_Reportlet=\u65E0\u6CD5\u4ECE\u7F51\u7EDC\u62A5\u8868\u751F\u6210\u5DE5\u4F5C\u7C3F +EX-Can_not_create_WorkBook_from_Reportlets=\u65E0\u6CD5\u4ECE\u7F51\u7EDC\u62A5\u8868\u96C6\u751F\u6210\u5DE5\u4F5C\u7C3F +EX-Hierarchy_Analysis_is_not_Supported_in_this_Edition=\u8BE5\u7248\u672C\u4E0D\u652F\u6301\u5C42\u6B21\u5750\u6807\u89E3\u6790 +EX-IP_Address_Overflow=IP\u5730\u5740\u6570\u91CF\u8D85\u8FC7\u9650\u5236 +EX-Image_stored_is_broken=\u4FDD\u5B58\u7684\u56FE\u7247\u88AB\u7834\u574F\u4E86 +EX-Reportlets_Count_Overflow=reportlets\u4E0B\u6A21\u677F\u7684\u6570\u76EE\u8D85\u51FA\u6CE8\u518C\u6570 +EXPORT_PDF_EMBED=\u5BFC\u51FAPDF\u662F\u5426\u5185\u5D4C\u663E\u793A +Ean13_less_than_12=\u8F93\u5165\u4F4D\u6570\u4E0D\u8DB3\uFF0CEan13\u7801\u9700\u8981\u8F93\u516512\u4F4D\u5B57\u7B26\uFF0C\u6700\u540E\u4E00\u4F4D\u7531\u7CFB\u7EDF\u81EA\u52A8\u751F\u6210\u3002 +Ean13_more_than_12=Ean13\u7801\u4EC5\u9700\u8F93\u5165\u524D12\u4F4D\u5B57\u7B26\uFF0C\u6700\u540E\u4E00\u4F4D\u7531\u7CFB\u7EDF\u81EA\u52A8\u751F\u6210\uFF0C\u8D85\u51FA12\u4F4D\u90E8\u5206\u7CFB\u7EDF\u5C06\u81EA\u52A8\u622A\u53D6\u3002 +Ecp_Being=\u6B63\u5728\u52A0\u5BC6\u2026\u2026 +Ecp_Convert=\u6CE8\uFF1A\u52A0\u5BC6\u540Ereportlets\u6587\u4EF6\u5939\u7684\u6587\u4EF6\u5C06\u8F6C\u4E3A\u5BC6\u6587\u3002 +Ecp_Failed=\u52A0\u5BC6\u5931\u8D25 +Ecp_Input_Oldpwd=\u8BF7\u8F93\u5165\u65E7\u5BC6\u7801 +Ecp_Pwd_Long=\u5BC6\u7801\u957F\u5EA6\u8FC7\u957F +Ecp_Pwd_Short=\u5BC6\u7801\u957F\u5EA6\u8FC7\u77ED +Ecp_Re=\u8BF7\u91CD\u65B0\u8FDB\u884C\u52A0\u5BC6 +Ecp_Start=\u5F00\u59CB\u52A0\u5BC6 +Ecp_Success=\u52A0\u5BC6\u6210\u529F +Edit=\u7F16\u8F91 +Edit-Browser-List=\u7F16\u8F91\u6D4F\u89C8\u5668\u5217\u8868 +Edit-Column_Count=\u5217\u6570 +Edit-Row_Count=\u884C\u6570 +EditFailed=\u7F16\u8F91\u5931\u8D25 +EditRC-Entire_column=\u6574\u5217(C) +EditRC-Entire_row=\u6574\u884C(R) +Edit_Analysis=\u7F16\u8F91\u5206\u6790 +Edit_Button_ToolBar=\u7F16\u8F91\u6309\u94AE\u6240\u5728\u5DE5\u5177\u680F +Edit_Position=\u7F16\u8F91\u804C\u4F4D +Edit_String_To_Formula=\u662F\u5426\u5C06\u5B57\u7B26\u4E32\u7F16\u8F91\u4E3A\u516C\u5F0F +Editor=\u7F16\u8F91\u5668 +Email=\u90AE\u4EF6 +Email-Can-Preview_JForm_Content=\u6B63\u6587\u9884\u89C8\u8868\u5355\u5185\u5BB9 +Email-Can_Preview_Report_Content=\u6B63\u6587\u9884\u89C8\u62A5\u8868\u5185\u5BB9 +Email-Sending=\u6B63\u5728\u53D1\u9001\u90AE\u4EF6 +EmailNotice=\u90AE\u4EF6\u901A\u77E5 +EmailPane-BCC=\u5BC6\u9001 +EmailPane-mailContent=\u90AE\u4EF6\u6B63\u6587 +EmailPane-mailSubject=\u90AE\u4EF6\u6807\u9898 +EmailPane-tips=\u60A8\u53EF\u4EE5\u952E\u5165${abc}\u4F5C\u4E3A\u4E00\u4E2A\u53C2\u6570\uFF0Cabc\u4E3A\u53C2\u6570\u540D\u79F0\uFF1B${today()}\u4F5C\u4E3A\u516C\u5F0F\uFF0C\u4F8B\u5982\uFF1A\u6807\u9898\u6B63\u6587\u4E3A"${today()}\u7EDF\u8BA1\u60C5\u51B5"\uFF0C\u6536\u4EF6\u4EBA\u4E3A"${p},123@gmail.com,mike"\uFF0C\u8FD9\u91CCmike\u5FC5\u987B\u662F\u5DF2\u4FDD\u5B58\u5728\u5E73\u53F0\u7528\u6237\u7BA1\u7406\u91CC\u7684\u7528\u6237\u540D +EmailPane-warnings=\u60A8\u5C1A\u672A\u914D\u7F6E\u53D1\u4EF6\u90AE\u7BB1\uFF0C\u8BF7\u767B\u5F55\u5E73\u53F0\u8FDB\u884C\u914D\u7F6E\u6216\u8005\u8054\u7CFB\u7BA1\u7406\u5458 +Email_Des=\u53EF\u4EE5\u4F7F\u7528\u5206\u53F7\u6765\u533A\u5206\u591A\u4E2Aemail\u5730\u5740 +Email_sentEmail=\u53D1\u9001\u90AE\u4EF6 +Embed=\u5185\u5D4C +Embed_User=\u5185\u7F6E\u7528\u6237 +Empty_Input=\u8F93\u5165\u5185\u5BB9\u4E3A\u7A7A +Enable=\u542F\u7528 +Enabled=\u53EF\u7528 +Encoding_Type=\u7F16\u7801\u7C7B\u578B +EndValue=\u7ED3\u675F\u503C +English_Language=\u82F1\u8BED +Enlarge_Or_Reduce=\u7F29\u653E +Enter-New-FileName=\u8BF7\u8F93\u5165\u65B0\u7684\u6587\u4EF6\u540D +EnterTrueTimeFormat=\u8BF7\u8F93\u5165\u6B63\u786E\u683C\u5F0F\u7684\u65F6\u95F4 +Enter_Analysis_Name=\u8BF7\u8F93\u5165\u5206\u6790\u540D\u79F0\uFF01 +Enter_Login_Page_URL=\u8BF7\u8F93\u5165\u767B\u5F55\u9875\u9762url +Enter_Pwd_Ecp=\u8BF7\u8F93\u5165\u5BC6\u7801\u8FDB\u884C\u52A0\u5BC6 +Enter_Task_Name=\u8BF7\u8F93\u5165\u4EFB\u52A1\u540D\u79F0 +Env-Configure_Workspace=\u914D\u7F6E\u5DE5\u4F5C\u76EE\u5F55 +Env-Des1=\u8BF7\u9009\u62E9\u62A5\u8868\u670D\u52A1\u5668\u6240\u5728\u7684WEB-INF\u76EE\u5F55 +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-Invalid_User_and_Password=\u975E\u6CD5\u7684\u7528\u6237\u540D\u6216\u5BC6\u7801 +Env-Invalid_User_or_Password=\u7528\u6237\u540D\u6216\u5BC6\u7801\u9519\u8BEF +Env-Local_Directory=\u672C\u5730\u76EE\u5F55 +Env-Remote_Server=\u8FDC\u7A0B\u670D\u52A1\u5668 +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 +Err-The_number_is_larger_than_the_maximum_value=\u503C\u5927\u4E8E\u5141\u8BB8\u8F93\u5165\u7684\u6700\u5927\u503C +Err-The_number_is_less_than_the_minimum_value=\u503C\u5C0F\u4E8E\u5141\u8BB8\u8F93\u5165\u7684\u6700\u5C0F\u503C +Err-The_value_cannot_be_negative=\u4E0D\u80FD\u4E3A\u8D1F\u6570 +Err-The_value_must_be_integer=\u5FC5\u987B\u4E3A\u6574\u6570 +Err-The_value_must_be_number=\u503C\u5FC5\u987B\u662F\u4E00\u4E2A\u6570\u5B57 +Error=\u9519\u8BEF +ErrorHandlerTemplate=\u51FA\u9519\u6A21\u677F\u5B9A\u4E49 +Error_Cell=\u9519\u8BEF\u7684\u683C\u5B50 +Error_Input_Value=\u9519\u8BEF\u7684\u8F93\u5165\u503C +Error_Statement_Is=\u9519\u8BEF\u7684\u63CF\u8FF0\u4E3A +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 +Error_Template_File=\u6A21\u677F\u6587\u4EF6\u9519\u8BEF +Error_To_Create_Report_From=\u751F\u6210\u62A5\u8868\u65F6\u4EA7\u751F\u9519\u8BEF +Error_WidgetNameRepeat=\u5DF2\u7ECF\u5B58\u5728 +Error_With_Non_Template=\u975E\u6A21\u677F\u89E6\u53D1\u9519\u8BEF +Even=\u5076\u6570 +Event=\u4E8B\u4EF6 +Event-afterappend=\u6DFB\u52A0\u884C\u540E +Event-afterappletprint=Applet\u6253\u5370\u540E +Event-afterdelete=\u5220\u9664\u884C\u540E +Event-afteredit=\u7F16\u8F91\u540E +Event-afteremail=Email\u540E +Event-afterflashprint=Flash\u6253\u5370\u540E +Event-afterimportexcel=Excel\u5BFC\u5165\u540E +Event-afterinit=\u521D\u59CB\u5316\u540E +Event-afterload=\u52A0\u8F7D\u7ED3\u675F +Event-afterpdfprint=PDF\u6253\u5370\u540E +Event-aftersubmit=\u63D0\u4EA4\u540E +Event-aftertoexcel=Excel\u5BFC\u51FA\u540E +Event-aftertoimage=\u5BFC\u51FA\u56FE\u7247\u540E +Event-aftertopdf=PDF\u5BFC\u51FA\u540E +Event-aftertoword=Word\u5BFC\u51FA\u540E +Event-afterverify=\u6821\u9A8C\u540E +Event-afterverifywrite=\u6821\u9A8C\u63D0\u4EA4\u540E +Event-afterwrite=\u586B\u62A5\u540E +Event-beforeappend=\u6DFB\u52A0\u884C\u524D +Event-beforeappletprint=Applet\u6253\u5370\u524D +Event-beforedelete=\u5220\u9664\u884C\u524D +Event-beforeedit=\u7F16\u8F91\u524D +Event-beforeemail=Email\u524D +Event-beforeflashprint=Flash\u6253\u5370\u524D +Event-beforeimportexcel=Excel\u5BFC\u5165\u524D +Event-beforepdfprint=PDF\u6253\u5370\u524D +Event-beforesubmit=\u63D0\u4EA4\u524D +Event-beforetoexcel=Excel\u5BFC\u51FA\u524D +Event-beforetoimage=\u5BFC\u51FA\u56FE\u7247\u524D +Event-beforetopdf=PDF\u5BFC\u51FA\u524D +Event-beforetoword=Word\u5BFC\u51FA\u524D +Event-beforeverifywrite=\u6821\u9A8C\u63D0\u4EA4\u524D +Event-beforewrite=\u586B\u62A5\u524D +Event-callback=\u4E0A\u4F20\u540E +Event-change=\u503C\u6539\u53D8 +Event-click=\u70B9\u51FB +Event-nodeadd=\u8282\u70B9\u751F\u6210 +Event-startload=\u52A0\u8F7D\u8D77\u59CB +Event-statechange=\u72B6\u6001\u6539\u53D8 +Event-stopedit=\u7F16\u8F91\u7ED3\u675F +Event-success=\u6210\u529F +Event-unloadcheck=\u672A\u63D0\u4EA4\u79BB\u5F00 +Event-writefailure=\u586B\u62A5\u5931\u8D25 +Event-writesuccess=\u586B\u62A5\u6210\u529F +Event_Name=\u4E8B\u4EF6\u540D +Event_Name_Type=\u4E8B\u4EF6\u540D\u5B57\u548C\u7C7B\u578B +Event_Set=\u4E8B\u4EF6\u8BBE\u7F6E +Event_Type=\u4E8B\u4EF6\u7C7B\u578B +Every=\u6BCF +EveryInterval=\u6BCF\u9694 +Example=\u4F8B\u5982 +Examples=\u4F8B\u5B50 +Excel=Excel +Excel2007-not-support-pwd=Excel2007\u5BFC\u51FA\u4E0D\u652F\u6301\u5DE5\u4F5C\u7C3F\u52A0\u5BC6 +ExcelImportD-Excel_Source_File=Excel \u6E90\u6587\u4EF6\u5217\u8868 +ExcelImportD-Save=\u4FDD\u5B58\u5230\u76EE\u5F55 +ExcelImport_Write_Match_Error_Info=\u5339\u914D\u6A21\u677F\u5931\u8D25\uFF0C\u8BF7\u786E\u8BA4\u6587\u4EF6\u683C\u5F0F\u662F\u5426\u4E0E\u6A21\u677F\u4E00\u81F4\uFF01 +Excel_formula_error=\u5BFC\u51FA\u516C\u5F0F\u89E3\u6790\u9519\u8BEF +Exception_StackTrace=\u9519\u8BEF\u5F02\u5E38\u5806\u6808\u4FE1\u606F +Exchange_key=\u70B9\u51FB\u4E92\u6362\u5FEB\u6377\u952E +Execute=\u6267\u884C +ExecuteFrequency=\u6267\u884C\u9891\u7387 +ExecuteOneTime=\u6267\u884C\u4E00\u6B21 +ExecuteSimpleRepeat=\u7B80\u5355\u91CD\u590D\u6267\u884C +Execute_Error_info_forbid_formula=\u975E\u6CD5\u4F20\u5165\u53C2\u6570\uFF0C\u7981\u6B62\u4E3A\u516C\u5F0F +Execute_Report_by_Layer_Engine=\u7528\u884C\u5F0F\u7684\u5F15\u64CE\u6765\u6267\u884C\u62A5\u8868 +Executing_Report=\u62A5\u8868\u8BA1\u7B97\u4E2D +Exist_The_Same=\u5DF2\u7ECF\u6709\u540C\u540D\u53C2\u6570\uFF0C\u8BF7\u91CD\u65B0\u6DFB\u52A0 +Exit=\u9000\u51FA +Exit_Tutorial=\u9000\u51FA\u6559\u7A0B +Expand=\u6269\u5C55 +ExpandD-Add_Datasource=\u6DFB\u52A0\u6570\u636E\u6E90 +ExpandD-Cell_Expand_Attributes=\u6269\u5C55\u5C5E\u6027 +ExpandD-Child_Cell_Follows_Father_Cell_to_Expand=\u5B50\u683C\u8DDF\u968F\u7236\u683C\u6269\u5C55 +ExpandD-Data_Column=\u6570\u636E\u5217 +ExpandD-Define_Father_Cell=\u5B9A\u4E49\u7236\u683C +ExpandD-Expand_Attribute=\u6269\u5C55\u5C5E\u6027 +ExpandD-Expand_Cell=\u6269\u5C55\u5355\u5143\u683C +ExpandD-Expand_Direction=\u6269\u5C55\u65B9\u5411 +ExpandD-Expand_Type=\u6269\u5C55\u65B9\u5F0F +ExpandD-Expandable=\u53EF\u4F38\u5C55\u6027 +ExpandD-Extend=\u5411\u4E0B\u5EF6\u4F38 +ExpandD-Father_Cell=\u7236\u683C +ExpandD-Father_Cell_Setting=\u7236\u683C\u8BBE\u7F6E +ExpandD-Fill_Cell=\u8986\u76D6\u5355\u5143\u683C +ExpandD-Horizontal_Extendable=\u6A2A\u5411\u53EF\u4F38\u5C55 +ExpandD-Inherit_All_Condition=\u7EE7\u627F\u6240\u6709\u6761\u4EF6 +ExpandD-Insert_Cell=\u63D2\u5165\u5355\u5143\u683C +ExpandD-Left_Father_Cell=\u5DE6\u7236\u683C +ExpandD-Left_to_Right=\u4ECE\u5DE6\u5411\u53F3 +ExpandD-Not_Expand=\u4E0D\u6269\u5C55 +ExpandD-Push_Cell=\u540E\u63A8\u5355\u5143\u683C +ExpandD-Remove_Datasource=\u5220\u9664\u6570\u636E\u6E90 +ExpandD-Rename_Datasource=\u91CD\u547D\u540D\u6570\u636E\u6E90 +ExpandD-Repeat_Row_Height_Or_Column_Width=\u91CD\u590D\u884C\u9AD8\u6216\u8005\u5217\u5BBD +ExpandD-Rules_to_Find_Default_Father_Cell=\u9ED8\u8BA4\u7236\u683C\u5BFB\u627E\u89C4\u5219 +ExpandD-Select_Datasource=\u9009\u62E9\u6570\u636E\u6E90 +ExpandD-Sort_After_Expand=\u6269\u5C55\u540E +ExpandD-Top_to_Bottom=\u4ECE\u4E0A\u5411\u4E0B +ExpandD-Up_Father_Cell=\u4E0A\u7236\u683C +ExpandD-Vertical_Extendable=\u7EB5\u5411\u53EF\u4F38\u5C55 +Export=\u8F93\u51FA +Export-CSV=CSV\u683C\u5F0F(\u9017\u53F7\u5206\u9694) +Export-Excel=Excel\u683C\u5F0F +Export-Excel-LargeData-Page=\u5927\u6570\u636E\u91CF\u5206\u9875\u5BFC\u51FA +Export-Excel-LargeData-Page-Info=\u8BF7\u8010\u5FC3\u7B49\u5F85\u6587\u4EF6\u7684\u751F\u6210\uFF0C\u6240\u82B1\u8D39\u7684\u65F6\u95F4\u5C06\u89C6\u6570\u636E\u91CF\u7684\u5927\u5C0F\u800C\u5B9A\uFF0C\u5728\u6B64\u8FC7\u7A0B\u4E2D\u8BF7\u52FF\u5173\u95ED\u5F53\u524D\u9875\u9762\u6216\u6D4F\u89C8\u5668\u3002 +Export-Excel-Page=\u5206\u9875\u5BFC\u51FA +Export-Excel-PageToSheet=\u5206\u9875\u5206Sheet\u5BFC\u51FA +Export-Excel-Setting=Excel\u5BFC\u51FA\u65B9\u5F0F\u8BBE\u7F6E +Export-Excel-Simple=\u539F\u6837\u5BFC\u51FA +Export-Offline-Html=\u8F93\u51FA\u79BB\u7EBFhtml\u62A5\u8868 +Export-PDF=PDF\u683C\u5F0F +Export-SVG=SVG\u683C\u5F0F +Export-Template(embedded_data)=\u6A21\u677F(\u5185\u7F6E\u6570\u636E) +Export-Text=\u6587\u672C\u6587\u4EF6(\u5236\u8868\u7B26\u5206\u9694) +Export-Word=Word\u683C\u5F0F +ExportAndOutput=\u5BFC\u51FA +Export_Set=\u8F93\u51FA\u8BBE\u7F6E +Export_Setting=\u5BFC\u51FA\u914D\u7F6E +Export_failed=\u5BFC\u51FA\u5931\u8D25 +Exported_successfully=\u5BFC\u51FA\u6210\u529F +Exporting=\u6B63\u5728\u5BFC\u51FA +Expression=\u8868\u8FBE\u5F0F +ExpressionSet=\u8868\u8FBE\u5F0F\u8BBE\u5B9A +External=\u5916\u90E8 +ExtraRepeatTime=\u989D\u5916\u91CD\u590D\u6267\u884C\u6B21\u6570 +FORMLET=\u8BBF\u95EE\u4E0D\u540C\u8868\u5355\u7684\u8DEF\u5F84\u7684\u53C2\u6570 +FR-Action_Add=\u589E\u52A0 +FR-Action_Copy=\u590D\u5236 +FR-Action_Remove=\u5220\u9664 +FR-Action_Sort=\u6392\u5E8F +FR-Already_exist=\u5F53\u524D\u73AF\u5883\u5DF2\u5B58\u5728\: +FR-App-All_Auto=\u81EA\u52A8 +FR-App-All_Custom=\u81EA\u5B9A\u4E49 +FR-App-All_File=\u6587\u4EF6 +FR-App-All_Warning=\u8B66\u544A +FR-App-Export_png=PNG\u683C\u5F0F +FR-App-File_Lookup_range=\u67E5\u627E\u8303\u56F4 +FR-App-File_Message=\u4FE1\u606F +FR-App-Privilege_No=\u6CA1\u6709\u6743\u9650 +FR-App-Report_Template=\u62A5\u8868\u6A21\u7248 +FR-App-Template_Form=\u8868\u5355 +FR-App-Template_Report_Not_Exist=\u6240\u9009\u62A5\u8868\u4E0D\u5B58\u5728\! +FR-App-Template_Save=\u4FDD\u5B58 +FR-Base-EX-IP_Address_Overflow=IP\u5730\u5740\u6570\u91CF\u8D85\u8FC7\u9650\u5236 +FR-Base-Error_Cell=\u9519\u8BEF\u7684\u683C\u5B50 +FR-Base-Error_Statement_Is=\u9519\u8BEF\u7684\u63CF\u8FF0\u4E3A +FR-Base-Load_Resource_File=\u52A0\u8F7D\u914D\u7F6E\u6587\u4EF6 +FR-Base-NS_Cell_Formula=\u9519\u8BEF\u4EE3\u7801\:1203 \u9519\u8BEF\u7684\u516C\u5F0F\u53C2\u6570 +FR-Base-NS_register_ipFull=\u9519\u8BEF\u4EE3\u7801\:1115 \u7CFB\u7EDF\u5E76\u53D1\u6570\u5DF2\u6EE1 +FR-Base-Need_Purchase_Info=\u60A8\u9700\u8981\u4E00\u4E2A\u6CE8\u518C\u7801\u6216\u8005\u8BE5\u62A5\u8868\u670D\u52A1\u5668\u7684\u4F7F\u7528\u4EBA\u6570\u8D85\u8FC7\u4E86\u6CE8\u518C\u9650\u5236\u7684\u6570\u91CF +FR-Base-Song_TypeFace=\u5B8B\u4F53 +FR-Base-Time_Back_In_Time=\u65F6\u5149\u5012\u6D41 +FR-Base-Time_Day=\u5929 +FR-Base-Time_Hour=\u5C0F\u65F6 +FR-Base-Time_Milliseconds=\u6BEB\u79D2 +FR-Base-Time_Minute=\u5206 +FR-Base-Time_Second=\u79D2 +FR-Base-Time_Year=\u5E74 +FR-BaseFile-Cancel=\u53D6\u6D88 +FR-Base_Bottom=\u4E0B +FR-Base_Column=\u5217 +FR-Base_Columns=\u5217 +FR-Base_DecimalNumber_Out=\u5C0F\u6570\u4F4D\u8FC7\u591A +FR-Base_Error_Input_Value=\u9519\u8BEF\u7684\u8F93\u5165\u503C +FR-Base_Format=\u683C\u5F0F +FR-Base_Help=\u5E2E\u52A9 +FR-Base_Left=\u5DE6 +FR-Base_Margin=\u8FB9\u8DDD +FR-Base_NOT_NULL_Des=\u4E0D\u80FD\u4E3A\u7A7A +FR-Base_New-Title=\u65B0\u5EFA\u6807\u9898 +FR-Base_No=\u5426 +FR-Base_Not_Appendable=\u4E0D\u53EF\u6269\u5C55 +FR-Base_Not_exist=\u4E0D\u5B58\u5728 +FR-Base_RWA-Key=\u4E3B\u952E +FR-Base_Remove=\u5220\u9664 +FR-Base_Right=\u53F3 +FR-Base_Rows=\u884C +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-Base_Table=\u8868 +FR-Base_Top=\u4E0A +FR-Base_TurnOff=\u5173\u95ED +FR-Base_TurnOn=\u5F00\u542F +FR-Base_UnSignIn=\ \u672A\u767B\u5F55 +FR-Base_Value=\u503C +FR-Base_Yes=\u662F +FR-Base_is=\u662F +FR-Base_sure_remove_item=\u4F60\u786E\u5B9E\u51B3\u5B9A\u5220\u9664\u9009\u4E2D\u7684\u9879 +FR-Basic-Email_Format=\u683C\u5F0F +FR-Basic-Email_From=\u53D1\u4EF6\u4EBA +FR-Basic-Email_Message=\u5185\u5BB9 +FR-Basic-Email_Sending=\u6B63\u5728\u53D1\u9001\u90AE\u4EF6 +FR-Basic-Email_Subject=\u4E3B\u9898 +FR-Basic-File_All_File_Uploaded=\u6240\u6709\u6587\u4EF6\u5DF2\u4E0A\u4F20 +FR-Basic-File_Uping_File=\u6B63\u5728\u4E0A\u4F20\u6587\u4EF6 +FR-Basic-File_Upload=\u6587\u4EF6\u4E0A\u4F20 +FR-Basic-File_Uploaded_File=\u8BE5\u6587\u4EF6\u5DF2\u4E0A\u4F20 +FR-Basic_Calculating=\u5904\u7406\u4E2D +FR-Basic_Calendar=\u65E5\u5386 +FR-Basic_Cancel=\u53D6\u6D88 +FR-Basic_Choose_None=\u4E0D\u9009 +FR-Basic_Clear=\u6E05\u9664 +FR-Basic_Current=\u5F53\u524D +FR-Basic_Email=\u90AE\u4EF6 +FR-Basic_Email_Send_Error=\u8BF7\u68C0\u67E5\u90AE\u4EF6\u670D\u52A1\u5668\u914D\u7F6E\uFF0C\u786E\u8BA4SMTP\u90AE\u4EF6\u670D\u52A1\u5668\u4EE5\u53CA\u7528\u6237\u540D\u5BC6\u7801\u548C\u6536\u4EF6\u4EBA\u5730\u5740\u586B\u5199\u6B63\u786E\uFF0C\u5E76\u786E\u4FDD\u7F51\u7EDC\u7545\u901A\u3002 +FR-Basic_Email_Send_Failed=\u90AE\u4EF6\u53D1\u9001\u5931\u8D25 +FR-Basic_Email_Send_Success=\u90AE\u4EF6\u5DF2\u53D1\u9001 +FR-Basic_Fail_Location=\u5931\u8D25 +FR-Basic_Failed=\u5931\u8D25 +FR-Basic_File_Allow_To_Upload_Contains=\u5141\u8BB8\u4E0A\u4F20\u7684\u6587\u4EF6\u5305\u62EC +FR-Basic_File_Not_Allow_To_Upload=\u662F\u7981\u6B62\u4E0A\u4F20\u7684\u6587\u4EF6\u7C7B\u578B +FR-Basic_File_Should_Select_Excel_File=\u9700\u8981\u9009\u62E9\u4E00\u4E2AExcel\u6587\u4EF6\u6765\u6E90 +FR-Basic_File_Upload=\u6587\u4EF6\u4E0A\u4F20 +FR-Basic_Loading=\u6B63\u5728\u52A0\u8F7D +FR-Basic_NS_mail_config=\u9519\u8BEF\u4EE3\u7801\:1204 \u90AE\u4EF6\u914D\u7F6E\u53C2\u6570\u4E0D\u6B63\u786E +FR-Basic_Not_In_List=\u503C\u4E0D\u5728\u4E0B\u62C9\u5217\u8868\u5185 +FR-Basic_OK=\u786E\u5B9A +FR-Basic_Offline-Connect_Failed=\u65E0\u6CD5\u8FDE\u63A5\u5230\u670D\u52A1\u5668\u3002\u8BF7\u786E\u8BA4\u672C\u673A\u7684\u7F51\u7EDC\u8FDE\u63A5\u72B6\u51B5\u548C\u670D\u52A1\u5668\u7684\u5DE5\u4F5C\u72B6\u6001\u540E\u91CD\u8BD5\u3002 +FR-Basic_Report=\u62A5\u8868 +FR-Basic_Successfully=\u6210\u529F +FR-Basic_Time=\u65F6\u95F4 +FR-Basic_Today=\u4ECA\u5929 +FR-Basic_Week=\u5468 +FR-ConditionB_Operator=\u64CD\u4F5C\u7B26 +FR-Custom_styles_lost=\u81EA\u5B9A\u4E49\u6837\u5F0F\u5DF2\u4E22\u5931 +FR-Designer-All_MSBold=\u5FAE\u8F6F\u96C5\u9ED1 +FR-Designer-Basic_Cancel=\u53D6\u6D88 +FR-Designer-Basic_More_Color=\u66F4\u591A\u989C\u8272 +FR-Designer-Basic_Restart_Designer=\u91CD\u542F\u8BBE\u8BA1\u5668 +FR-Designer-Basic_Restart_Designer_Later=\u7A0D\u540E\u91CD\u542F +FR-Designer-FRFont_Bold=\u52A0\u7C97 +FR-Designer-FRFont_Family=\u540D\u5B57 +FR-Designer-FRFont_Foreground=\u989C\u8272 +FR-Designer-FRFont_Italic=\u503E\u659C +FR-Designer-FRFont_Line_Style=\u7EBF\u578B +FR-Designer-FRFont_Size=\u5927\u5C0F +FR-Designer-FRFont_Underline=\u4E0B\u5212\u7EBF +FR-Designer-Form-Please_Drag_ParaPane=\u8BF7\u62D6\u5165\u53C2\u6570\u9762\u677F +FR-Designer-Form-ToolBar_Chart=\u56FE\u8868 +FR-Designer-Form-ToolBar_Report=\u62A5\u8868 +FR-Designer-Form-ToolBar_Widget=\u63A7\u4EF6 +FR-Designer-Hyperlink_Name=\u540D\u5B57 +FR-Designer-Layout_Adaptive_Layout=\u81EA\u9002\u5E94\u5E03\u5C40 +FR-Designer-Plugin_Active=\u542F\u7528 +FR-Designer-Plugin_All_Plugins=\u5168\u90E8\u63D2\u4EF6 +FR-Designer-Plugin_Connect_Server_Error=\u65E0\u6CD5\u8FDE\u63A5\u63D2\u4EF6\u5546\u5E97\uFF0C\u8BF7\u7A0D\u5019\u518D\u8BD5 +FR-Designer-Plugin_Delete=\u5220\u9664 +FR-Designer-Plugin_Detecting_Update=\u6B63\u5728\u68C0\u6D4B\u66F4\u65B0 +FR-Designer-Plugin_Disable=\u7981\u7528 +FR-Designer-Plugin_Duplicate_ID=\u8BE5\u63D2\u4EF6\u548C\u5DF2\u5B89\u88C5\u7684\u63D2\u4EF6id\u91CD\u590D +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 +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 +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-Designer-Plugin_Illegal_Plugin_Zip=\u4E0D\u662F\u5408\u6CD5\u7684\u63D2\u4EF6\u5305 +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 +FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install=\u4E0D\u53EF\u8BC6\u522B\u7684\u63D2\u4EF6\uFF0C\u65E0\u6CD5\u5B89\u88C5 +FR-Designer-Plugin_Install=\u5B89\u88C5 +FR-Designer-Plugin_Install_Failed=\u63D2\u4EF6\u5B89\u88C5\u5931\u8D25 +FR-Designer-Plugin_Install_From_Local=\u4ECE\u672C\u5730\u6587\u4EF6\u5B89\u88C5 +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 +FR-Designer-Plugin_Installed=\u5DF2\u5B89\u88C5 +FR-Designer-Plugin_Load_Plugins_From_Server=\u6B63\u5728\u4ECE\u63D2\u4EF6\u5546\u5E97\u83B7\u53D6\u6570\u636E +FR-Designer-Plugin_Manager=\u63D2\u4EF6\u7BA1\u7406 +FR-Designer-Plugin_Plugin=\u63D2\u4EF6 +FR-Designer-Plugin_Plugin_Description=\u63D2\u4EF6\u63CF\u8FF0 +FR-Designer-Plugin_Read_Plugin_List_Error=\u53BB\u8BFB\u63D2\u4EF6\u5217\u8868\u65F6\u53D1\u751F\u9519\u8BEF +FR-Designer-Plugin_Search=\u641C\u7D22 +FR-Designer-Plugin_Uninstall_Successful=\u63D2\u4EF6\u5378\u8F7D\u6210\u529F\uFF0C\u8BF7\u91CD\u542F\u670D\u52A1\u5668 +FR-Designer-Plugin_Update=\u63D2\u4EF6\u66F4\u65B0 +FR-Designer-Plugin_Update_Successful=\u63D2\u4EF6\u5347\u7EA7\u6210\u529F\uFF0C\u91CD\u542F\u670D\u52A1\u5668\u4EE5\u751F\u6548 +FR-Designer-Plugin_Version_Is_Lower_Than_Current=\u5347\u7EA7\u5305\u7684\u63D2\u4EF6\u7248\u672C\u6CA1\u6709\u6BD4\u5F53\u524D\u7684\u9AD8 +FR-Designer-Plugin_Warning=\u8B66\u544A +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 +FR-Designer-StyleAlignment_Center=\u5C45\u4E2D +FR-Designer-StyleAlignment_Left=\u9760\u5DE6 +FR-Designer-StyleAlignment_Right=\u9760\u53F3 +FR-Designer-Undo_All_Authority_Operations=\u64A4\u9500\u524D\u4E00\u6B21\u6743\u9650\u7F16\u8F91\u7684\u6240\u6709\u64CD\u4F5C +FR-Designer-Widget-Style_Alpha=\u4E0D\u900F\u660E\u5EA6 +FR-Designer-Widget-Style_Body_Background=\u4E3B\u4F53\u80CC\u666F +FR-Designer-Widget-Style_Border_Color=\u8FB9\u6846\u989C\u8272 +FR-Designer-Widget-Style_Border_Line=\u8FB9\u6846\u7C97\u7EC6 +FR-Designer-Widget-Style_Common=\u666E\u901A +FR-Designer-Widget-Style_Frame=\u6846\u67B6 +FR-Designer-Widget-Style_Frame_Style=\u6846\u67B6\u6837\u5F0F +FR-Designer-Widget-Style_Preview=\u9884\u89C8 +FR-Designer-Widget-Style_Render_Style=\u6E32\u67D3\u98CE\u683C +FR-Designer-Widget-Style_Shadow=\u9634\u5F71 +FR-Designer-Widget-Style_Standard=\u6807\u51C6 +FR-Designer-Widget-Style_Title=\u6807\u9898 +FR-Designer-Widget-Style_Title_Background=\u6807\u9898\u80CC\u666F +FR-Designer-Widget-Style_Title_Content=\u6807\u9898\u5185\u5BB9 +FR-Designer-Widget-Style_Title_Format=\u6807\u9898\u683C\u5F0F +FR-Designer-Widget_Settings=\u63A7\u4EF6\u8BBE\u7F6E +FR-Designer-Widget_Style=\u6837\u5F0F +FR-Designer_Add=\u589E\u52A0 +FR-Designer_Alert=\u8B66\u544A +FR-Designer_Alignment-Style=\u5BF9\u9F50\u65B9\u5F0F +FR-Designer_Allow_Blank=\u5141\u8BB8\u4E3A\u7A7A +FR-Designer_Background=\u80CC\u666F +FR-Designer_Border=\u8FB9\u6846 +FR-Designer_ChartF-Transparency=\u900F\u660E +FR-Designer_Chart_Field_Name=\u5B57\u6BB5\u540D +FR-Designer_ComboBox=\u4E0B\u62C9\u6846 +FR-Designer_Component_Interval=\u7EC4\u4EF6\u95F4\u9694 +FR-Designer_Component_Scale=\u7EC4\u4EF6\u7F29\u653E +FR-Designer_ConditionB-AND=\u4E0E(AND) +FR-Designer_ConditionB-OR=\u6216(OR) +FR-Designer_ConditionB-Operator=\u64CD\u4F5C\u7B26 +FR-Designer_Connect_SQL_Cannot_Null=\u6570\u636E\u8FDE\u63A5\u548CSQL\u9762\u677F\u4E0D\u80FD\u4E3A\u7A7A +FR-Designer_Cover_None=\u5168\u4E0D\u8986\u76D6 +FR-Designer_Covered_All=\u5168\u90E8\u8986\u76D6 +FR-Designer_DS-Dictionary=\u6570\u636E\u5B57\u5178 +FR-Designer_Datasource-Stored_Procedure=\u5B58\u50A8\u8FC7\u7A0B +FR-Designer_Date=\u65E5\u671F +FR-Designer_Dimension=\u7EF4\u5EA6 +FR-Designer_DisplayNothingBeforeQuery=\u70B9\u51FB\u67E5\u8BE2\u524D\u4E0D\u663E\u793A\u62A5\u8868\u5185\u5BB9 +FR-Designer_Edit=\u7F16\u8F91 +FR-Designer_Email=\u90AE\u4EF6 +FR-Designer_Env-Des1=\u8BF7\u9009\u62E9\u62A5\u8868\u670D\u52A1\u5668\u6240\u5728\u7684WEB-INF\u76EE\u5F55 +FR-Designer_Error=\u9519\u8BEF +FR-Designer_FS_Close_Other_Templates=\u5173\u95ED\u5176\u4ED6\u6A21\u7248 +FR-Designer_File=\u6587\u4EF6 +FR-Designer_Filter_Conditions=\u8FC7\u6EE4\u6761\u4EF6 +FR-Designer_Font=\u5B57\u4F53 +FR-Designer_Foreground=\u524D\u666F +FR-Designer_Form-Button=\u6309\u94AE +FR-Designer_Form-CheckBox=\u590D\u9009\u6846 +FR-Designer_Form-CheckBoxGroup=\u590D\u9009\u6846\u7EC4 +FR-Designer_Form-ComboCheckBox=\u4E0B\u62C9\u590D\u9009\u6846 +FR-Designer_Form-Iframe=\u7F51\u9875\u6846 +FR-Designer_Form-List=\u5217\u8868 +FR-Designer_Form-Password=\u5BC6\u7801 +FR-Designer_Form-RadioGroup=\u5355\u9009\u6309\u94AE\u7EC4 +FR-Designer_Form-TextArea=\u6587\u672C\u57DF +FR-Designer_Form-Widget_Name=\u63A7\u4EF6\u540D +FR-Designer_Height=\u9AD8 +FR-Designer_HyperLink_Must_Alone_Reset=\u591A\u4E2A\u8D85\u94FE +FR-Designer_Hyperlink=\u8D85\u7EA7\u94FE\u63A5 +FR-Designer_Indent-Pixel=\u50CF\u7D20 +FR-Designer_Input_Rule=\u586B\u5199\u89C4\u5219 +FR-Designer_Is_Share_DBTableData=\u5171\u4EAB\u6570\u636E\u96C6 +FR-Designer_JavaScript=JavaScript\u811A\u672C +FR-Designer_Layout-Padding=\u5185\u8FB9\u8DDD +FR-Designer_Message=\u4FE1\u606F +FR-Designer_Modify=\u4FEE\u6539 +FR-Designer_Month=\u6708 +FR-Designer_New_Value=\u65B0\u503C +FR-Designer_No=\u5426 +FR-Designer_No-Privilege=\u6CA1\u6709\u6743\u9650 +FR-Designer_Number=\u6570\u5B57 +FR-Designer_PageSetup-Vertically=\u5782\u76F4\u5C45\u4E2D +FR-Designer_Pagination=\u5206\u9875 +FR-Designer_Parameter=\u53C2\u6570 +FR-Designer_Please_input_with_right_format=\u8BF7\u7528\u6B63\u786E\u7684\u683C\u5F0F\u8F93\u5165 +FR-Designer_Plugin_Normal_Update=\u66F4\u65B0 +FR-Designer_Plugin_Normal_Update_From_Local=\u4ECE\u672C\u5730\u6587\u4EF6\u66F4\u65B0 +FR-Designer_Present=\u5F62\u6001 +FR-Designer_Quarter=\u5B63\u5EA6 +FR-Designer_Query=\u67E5\u8BE2 +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 +FR-Designer_Record-Number=\u8BB0\u5F55\u6570 +FR-Designer_Refresh=\u5237\u65B0 +FR-Designer_Remove=\u5220\u9664 +FR-Designer_ReportColumns-Columns=\u5217\u5206\u680F +FR-Designer_ReportColumns-Repeat_Column=\u590D\u5236\u5217\u5E8F\u5217 +FR-Designer_ReportColumns-Repeat_Row=\u590D\u5236\u884C\u5E8F\u5217 +FR-Designer_Row-Axis=\u884C\u8F74 +FR-Designer_Sche-Week=\u661F\u671F +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 +FR-Designer_Set_Submit_Condition=\u8BBE\u7F6E\u63D0\u4EA4\u6761\u4EF6 +FR-Designer_Set_Submit_Event=\u8BBE\u7F6E\u63D0\u4EA4\u4E8B\u4EF6 +FR-Designer_Show_Blank_Column=\u8865\u5145\u7A7A\u767D\u5217 +FR-Designer_Show_Blank_Row=\u8865\u5145\u7A7A\u767D\u884C +FR-Designer_Song_TypeFace=\u5B8B\u4F53 +FR-Designer_Style=\u6837\u5F0F +FR-Designer_StyleAlignment-Wrap_Text=\u81EA\u52A8\u6362\u884C +FR-Designer_Sytle-FRFont=\u5B57\u4F53 +FR-Designer_Sytle-Indentation=\u7F29\u8FDB +FR-Designer_Text=\u6587\u672C +FR-Designer_Thanks-To=\u9E23\u8C22 +FR-Designer_Tooltips=\u63D0\u793A +FR-Designer_Tree-ComboBox=\u4E0B\u62C9\u6811 +FR-Designer_Undo=\u64A4\u9500 +FR-Designer_Unit_CM=\u5398\u7C73 +FR-Designer_Unit_INCH=\u82F1\u5BF8 +FR-Designer_Unit_MM=\u6BEB\u7C73 +FR-Designer_Unit_PT=\u78C5 +FR-Designer_Utils-Available_Columns=\u53EF\u9009\u5217 +FR-Designer_Utils-Move_Down=\u4E0B\u79FB +FR-Designer_Utils-Move_Up=\u4E0A\u79FB +FR-Designer_Values-Editor=\u503C\u7F16\u8F91\u5668 +FR-Designer_Verify-Message=\u9519\u8BEF\u4FE1\u606F +FR-Designer_WaterMark=\u6C34\u5370 +FR-Designer_Widget=\u63A7\u4EF6 +FR-Designer_WidgetDisplyPosition=\u63A7\u4EF6\u663E\u793A\u4F4D\u7F6E +FR-Designer_Width=\u5BBD +FR-Designer_WorkBook=\u5DE5\u4F5C\u7C3F +FR-Designer_Year=\u5E74 +FR-Designer_Yes=\u662F +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-Export_Excel=Excel\u683C\u5F0F +FR-Export_PDF=PDF\u683C\u5F0F +FR-Export_SVG=SVG\u683C\u5F0F +FR-Export_Word=Word\u683C\u5F0F +FR-Hyperlink_ChartHyperlink=\u56FE\u8868\u8D85\u94FE +FR-Hyperlink_Chart_Cell=\u56FE\u8868\u8D85\u94FE-\u8054\u52A8\u5355\u5143\u683C +FR-Hyperlink_Chart_Float=\u56FE\u8868\u8D85\u94FE-\u8054\u52A8\u60AC\u6D6E\u5143\u7D20 +FR-Hyperlink_Dialog=\u5BF9\u8BDD\u6846 +FR-Hyperlink_Please_Select_Reportlet=\u8BF7\u9009\u62E9\u7F51\u7EDC\u62A5\u8868 +FR-Hyperlink_Reportlet=\u7F51\u7EDC\u62A5\u8868 +FR-Import-Export_CSV=CSV\u683C\u5F0F(\u9017\u53F7\u5206\u9694) +FR-Import-Export_PDF=PDF\u683C\u5F0F +FR-Import-Export_SVG=SVG\u683C\u5F0F +FR-Import-Export_Text=\u6587\u672C\u6587\u4EF6(\u5236\u8868\u7B26\u5206\u9694) +FR-Import-Export_Word=Word\u683C\u5F0F +FR-Layout_Padding=\u5185\u8FB9\u8DDD +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 +FR-Menu-Server_Chart_PreStyle=\u56FE\u8868\u9884\u5B9A\u4E49\u914D\u8272 +FR-Module_Designer=\u8BBE\u8BA1\u5668\u6A21\u5757 +FR-Module_Engine=\u5F15\u64CE\u6A21\u5757 +FR-Please_Rename=\u8BF7\u91CD\u547D\u540D +FR-Remote_Connect2Server_Again=\u8FDE\u63A5\u4E2D\u65AD\uFF0C\u662F\u5426\u91CD\u65B0\u8FDE\u63A5\u670D\u52A1\u5668? +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 +FR-Remote_Re_Connect_to_Server=\u670D\u52A1\u5668\u5DF2\u5173\u95ED\uFF0C\u662F\u5426\u91CD\u65B0\u8FDE\u63A5\u670D\u52A1\u5668? +FR-Report-Write_Attributes_Msg=\u6CA1\u6709\u8BBE\u7F6E\u586B\u62A5\u5C5E\u6027 +FR-Report-Write_Offline-Verify_ToolTips=\u63D0\u4EA4\u6821\u9A8C\u4E2D\u5305\u542B\u79BB\u7EBF\u72B6\u6001\u65E0\u6CD5\u6267\u884C\u7684\u6821\u9A8C\u89C4\u5219\uFF0C\u7EE7\u7EED\u5C06\u5FFD\u7565\u8FD9\u4E9B\u6821\u9A8C\u89C4\u5219\uFF0C\u4F46\u662F\u5728\u8054\u7F51\u63D0\u4EA4\u65F6\u4F1A\u88AB\u91CD\u65B0\u6267\u884C\uFF0C\u662F\u5426\u7EE7\u7EED\u6821\u9A8C\uFF1F +FR-Report_Invalid_Cell=\u65E0\u6548\u7684\u5355\u5143\u683C +FR-Server-All_Error=\u9519\u8BEF +FR-Server-Design_template_unopened=\u65E0\u6CD5\u6253\u5F00\u6A21\u7248 +FR-Server_Embedded_Server_Start=\u5167\u7F6E\u7684\u670D\u52A1\u5668-\u6253\u5F00 +FR-Server_Embedded_Server_Stop=\u5167\u7F6E\u7684\u670D\u52A1\u5668-\u505C\u6B62 +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 +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-Template-Path_chooseRightPath=\u8BF7\u9009\u62E9\u6B63\u786E\u8DEF\u5F84 +FR-Utils-App_AllFiles=\u6240\u6709\u6587\u4EF6 +FR-Utils-New_Folder=\u65B0\u5EFA\u6587\u4EF6\u5939 +FR-Utils-Please_Input_a_New_Name=\u8BF7\u8F93\u5165\u65B0\u7684\u540D\u5B57 +FR-Utils-Would_you_like_to_cover_the_current_file=\u4F60\u5E0C\u671B\u8986\u76D6\u5F53\u524D\u6587\u4EF6\u5417 +FR-Utils_Background=\u80CC\u666F +FR-Utils_Label=\u6807\u7B7E +FR-Utils_Submit=\u63D0\u4EA4 +FR-Utils_WorkBook=\u5DE5\u4F5C\u7C3F +FR-Widget_Message_Letter_Space=8 +FR-Widget_Mobile_Table=\u79FB\u52A8\u7AEF\u63A7\u4EF6\u5217\u8868 +FR-Widget_Mobile_Terminal=\u79FB\u52A8\u7AEF +FR-Widget_Mobile_Tree=\u63A7\u4EF6\u6811 +FR-Widget_Tree_And_Table=\u63A7\u4EF6\u6811\u548C\u63A7\u4EF6\u8868 +FRFont=\u5B57\u4F53 +FRFont-Effects=\u7279\u6B8A\u6548\u679C +FRFont-Family=\u540D\u5B57 +FRFont-Foreground=\u989C\u8272 +FRFont-Pick_A_Color=\u9009\u62E9\u989C\u8272 +FRFont-Shadow=\u9634\u5F71 +FRFont-Size=\u5927\u5C0F +FRFont-Strikethrough=\u5220\u9664\u7EBF +FRFont-Style=\u5B57\u5F62 +FRFont-Subscript=\u4E0B\u6807 +FRFont-Superscript=\u4E0A\u6807 +FRFont-Underline=\u4E0B\u5212\u7EBF +FRFont-bold=\u52A0\u7C97 +FRFont-bolditalic=\u52A0\u7C97\u503E\u659C +FRFont-italic=\u503E\u659C +FRFont-plain=\u5E38\u89C4 +FS_BI=\u51B3\u7B56\u5E73\u53F0 +FS_Close_Other_Templates=\u5173\u95ED\u5176\u4ED6\u6A21\u677F +FS_End_Date=\u7ED3\u675F\u65E5\u671F +FS_End_Time=\u7ED3\u675F\u65F6\u95F4 +FS_Name=\u6570\u636E\u51B3\u7B56\u7CFB\u7EDF +FS_New_Password=\u65B0\u5BC6\u7801 +FS_Old_Password=\u65E7\u5BC6\u7801 +FS_Report_Type=\u7C7B\u578B +FS_Start_Date=\u8D77\u59CB\u65E5\u671F +FS_Start_Time=\u5F00\u59CB\u65F6\u95F4 +FS_Task_End=\u5185\u622A\u6B62 +FS_Task_Start=\u4EFB\u52A1\u5F00\u59CB\u540E +Face-Outlook_Structure=Outlook\u7ED3\u6784 +Face_View=\u67E5\u770B +Face_Write=\u586B\u62A5 +FailAndRestart=\u4EFB\u52A1\u91CD\u542F +FailPass_ImproveYourVersion=\u5F53\u524D\u7248\u672C\u65E0\u6B64\u529F\u80FD\uFF0C\u8BF7\u4F7F\u7528\u9AD8\u7EA7\u7248\u672C\u3002 +Fail_To_Select_A_Data_Field=\u9009\u53D6\u6570\u636E\u5B57\u6BB5\u5931\u8D25 +Failed=\u5931\u8D25 +Father=\u7236 +Favorite=\u6536\u85CF\u5939 +Feature_Name=\u529F\u80FD\u540D\u79F0\uFF1A +February=\u4E8C\u6708 +Feburary= +Female=\u5973 +Field=\u5B57\u6BB5 +FieldBinding=\u7ED1\u5B9A\u5B57\u6BB5 +Field_Filtration=\u5B57\u6BB5\u8FC7\u6EE4 +File=\u6587\u4EF6 +File-Allow_Upload_Files=\u5141\u8BB8\u4E0A\u4F20\u6587\u4EF6\u7C7B\u578B +File-Auto_Upload=\u81EA\u52A8\u4E0A\u4F20 +File-Create-Failed=\u6587\u4EF6\u521B\u5EFA\u5931\u8D25 +File-Default_URL=\u9ED8\u8BA4\u6587\u4EF6\u4E0A\u4F20\u5730\u5740 +File-Denied_Upload_Files=\u7981\u6B62\u4E0A\u4F20\u6587\u4EF6\u7C7B\u578B +File-Des=\u9ED8\u8BA4\u5730\u5740\uFF0C\u4E00\u822C\u65E0\u9700\u6539\u53D8\uFF0C\u53EF\u4EE5\u4F7F\u7528\u4E0B\u62C9\u7684\u201C\u5B57\u7B26\u4E32\u201D\u9009\u9879\u6765\u8F93\u5165\u4F60\u60F3\u6307\u5B9A\u7684\u6587\u4EF6\u4E0A\u4F20\u5730\u5740 +File-File_Size_Limit=\u6587\u4EF6\u5927\u5C0F\u9650\u5236 +File-File_Too_Big=\u6587\u4EF6\u8FC7\u5927\uFF0C\u4E0A\u9650\u4E3A +File-address=\u6587\u4EF6\u5730\u5740 +File-tree=\u6587\u4EF6\u6811 +FileNameForDownload=\u4E0B\u8F7D\u6587\u4EF6\u540D +File_Description=\u6587\u4EF6\u63CF\u8FF0 +File_Display_Name=\u6587\u4EF6\u663E\u793A\u540D +File_Error=\u6587\u4EF6\u89E3\u6790\u9519\u8BEF +File_Is_Being_Used=\u6587\u4EF6\u6B63\u5728\u4F7F\u7528 +File_Upload=\u6587\u4EF6\u4E0A\u4F20 +Filed=\u533A\u57DF +Fill_blank_Data=\u8865\u5145\u7A7A\u767D\u6570\u636E +Filter=\u8FC7\u6EE4 +Filter_Conditions=\u8FC7\u6EE4\u6761\u4EF6 +Finally=\u6700\u540E +FineReport_Embbeded_Report_Server=FineReport\u7684\u5185\u7F6E\u670D\u52A1\u5668 +Finish=\u5B8C\u6210 +Finish_Export=\u5BFC\u51FA\u5B8C\u6BD5 +Finish_Save=\u4FDD\u5B58\u5B8C\u6BD5 +First=\u9996\u9875 +FirstRow_IS_ColumnName=\u7B2C\u4E00\u884C\u5305\u542B\u5217\u6807\u9898 +First_Of_Week=\u4E3A\u5468\u8D77\u59CB +Flash/PdfInstallSet_Message=\u6587\u4EF6\u4E0D\u80FD\u5728\u2018WEB-INF\u2019\u6587\u4EF6\u5939\u4E0B\uFF0C\u4E5F\u4E0D\u80FD\u5728web\u5E94\u7528\u76EE\u5F55\u5916\u3002 +Flash_Print=Flash\u6253\u5370 +Float=\u6D6E\u70B9\u578B +Float_Element_Name=\u60AC\u6D6E\u5143\u7D20\u540D\u79F0 +FlowLayout=\u6D41\u5F0F\u5E03\u5C40 +FlowLayout-Center=\u4E2D\u95F4 +FlowLayout-Left=\u5DE6 +FlowLayout-Right=\u53F3 +Folder=\u76EE\u5F55 +Follow=\u9644\u5C5E +Following_parameters_are_not_generated=\u4EE5\u4E0B\u53C2\u6570\u672A\u751F\u6210 +Fomr-NameWidget-Name=\u9884\u5B9A\u4E49\u63A7\u4EF6\u540D\u79F0 +Font\ Style\ Elements=\u5B57\u4F53\u6837\u5F0F\u5143\u7D20 +For_Help_press\ F1=\u5BFB\u6C42\u5E2E\u52A9\uFF0C\u8BF7\u6309F1 +Forbid_Drag_into_Adapt_Pane=\u8BE5\u5BF9\u8C61\u4E0D\u5141\u8BB8\u62D6\u5165\u8868\u5355\u4E3B\u4F53 +Forbid_Drag_into_Para_Pane=\u8BE5\u5BF9\u8C61\u4E0D\u80FD\u62D6\u5165\u53C2\u6570\u9762\u677F +Forecast=\u9884\u6D4B +Foreground=\u524D\u666F +Form=\u8868\u5355 +Form-Action=\u64CD\u4F5C +Form-All_Files=\u5168\u90E8\u6587\u4EF6 +Form-Allow_CustomData=\u5141\u8BB8\u81EA\u5B9A\u4E49\u503C +Form-Allow_Edit=\u5141\u8BB8\u76F4\u63A5\u7F16\u8F91 +Form-Basic_Properties=\u57FA\u672C\u5C5E\u6027 +Form-Bottom_Align=\u5E95\u8FB9\u5BF9\u9F50 +Form-Button=\u6309\u94AE +Form-Center_Align=\u4E2D\u95F4\u5BF9\u9F50 +Form-Change_Widget_Name=\u66F4\u6539\u63A7\u4EF6\u540D +Form-Change_Widget_Name_Discription=\u8BF7\u8F93\u5165\u4E00\u4E2A\u65B0\u7684\u63A7\u4EF6\u540D +Form-CheckBox=\u590D\u9009\u6846 +Form-CheckBoxGroup=\u590D\u9009\u6846\u7EC4 +Form-Colon=\u5192\u53F7 +Form-ComboBox=\u4E0B\u62C9\u6846 +Form-ComboCheckBox=\u4E0B\u62C9\u590D\u9009\u6846 +Form-Comma=\u9017\u53F7 +Form-Component_Bounds=\u63A7\u4EF6\u8FB9\u754C +Form-Copy=\u590D\u5236 +Form-Cut=\u526A\u5207 +Form-DataTable=\u6570\u636E\u8868 +Form-Delete=\u5220\u9664 +Form-Delimiter=\u5206\u9694\u7B26 +Form-Design_Height=\u8BBE\u8BA1\u9AD8\u5EA6 +Form-Design_Size=\u8BBE\u8BA1\u5C3A\u5BF8 +Form-Desin_Width=\u8BBE\u8BA1\u5BBD\u5EA6 +Form-Double_quotes=\u53CC\u5F15\u53F7 +Form-EC-WebAttr-toolbar=\u662F\u5426\u9700\u8981\u8868\u5355\u5DE5\u5177\u680F +Form-EC-toolbar=\u62A5\u8868\u5757\u5DE5\u5177\u680F +Form-EC_toolbar=\u62A5\u8868\u5757\u5DE5\u5177\u680F +Form-Edit_Text=\u7F16\u8F91\u6587\u672C +Form-Editing_Listeners=\u4E8B\u4EF6\u7F16\u8F91 +Form-Empty=\u7A7A\u503C +Form-Events=\u4E8B\u4EF6 +Form-Form_Definition=\u8868\u5355\u5B9A\u4E49 +Form-Form_Element=\u8868\u5355\u5143\u7D20 +Form-Height_Des=\u8BBE\u8BA1\u8868\u5355\u8BBE\u8BA1\u7A97\u53E3\u7684\u9AD8\u5EA6 +Form-Hierarchy_Tree=\u7ED3\u6784\u6811 +Form-Hierarchy_Tree_Last=\u4E0A\u4E00\u4E2A +Form-Hierarchy_Tree_Next=\u4E0B\u4E00\u4E2A +Form-Iframe=\u7F51\u9875\u6846 +Form-Layout=\u5E03\u5C40 +Form-Left_Align=\u5DE6\u5BF9\u9F50 +Form-List=\u5217\u8868 +Form-Method=\u65B9\u6CD5 +Form-Middle_Align=\u4E2D\u7EBF\u5BF9\u9F50 +Form-NameWidget-Invalid=\u9884\u5B9A\u4E49\u63A7\u4EF6\u7F3A\u5931 +Form-Name_For_Empty=\u7A7A\u503C\u5C06\u663E\u793A\u4E3A +Form-Newline=\u6362\u884C\u7B26 +Form-No_Selected_Will_Be=\u672A\u9009\u4E2D\u5C06\u628A\u503C\u4F5C\u4E3A +Form-NullLayout=\u7EDD\u5BF9\u5B9A\u4F4D +Form-Object=\u8868\u5355\u5BF9\u8C61\: +Form-Password=\u5BC6\u7801 +Form-Paste=\u7C98\u8D34 +Form-Please_Select_A_Kind_Of_Form_Container=\u8BF7\u9009\u62E9\u4E00\u79CD\u8868\u5355\u5BB9\u5668 +Form-Properties=\u5C5E\u6027 +Form-RadioButton=\u5355\u9009\u6309\u94AE +Form-RadioGroup=\u5355\u9009\u6309\u94AE\u7EC4 +Form-Remove_Repeat=\u53BB\u6389\u91CD\u590D\u9879 +Form-Remove_Repeat_Data=\u53BB\u9664\u91CD\u590D\u6570\u636E +Form-Report=\u62A5\u8868\u5757 +Form-Reset=\u91CD\u7F6E +Form-Right_Align=\u53F3\u5BF9\u9F50 +Form-RoleTableTree=\u89D2\u8272\u8868\u683C\u6811 +Form-Same_Height=\u7B49\u9AD8 +Form-Same_Height_Des=\u5C06\u9009\u4E2D\u7684\u63A7\u4EF6\u7684\u9AD8\u5EA6\u8BBE\u7F6E\u4E3A\u548C\u7B2C\u4E00\u4E2A\u9009\u4E2D\u7684\u63A7\u4EF6\u4E00\u6837\u7684\u9AD8\u5EA6 +Form-Same_Width=\u7B49\u5BBD +Form-Semicolon=\u5206\u53F7 +Form-Single_quote=\u5355\u5F15\u53F7 +Form-Split_Horizontal=\u6C34\u5E73\u5206\u5272 +Form-Split_Pane=\u4E8C\u5206\u9762\u677F +Form-Split_Vertical=\u5782\u76F4\u5206\u5272 +Form-SupportTag=\u6807\u7B7E\u5F62\u5F0F\u663E\u793A +Form-TableTree=\u8868\u683C\u6811 +Form-Target=\u76EE\u6807 +Form-TextArea=\u6587\u672C\u57DF +Form-Text_File=\u6587\u672C\u6587\u4EF6 +Form-ToolBar=\u8868\u5355\u5DE5\u5177\u680F +Form-Top_Align=\u9876\u90E8\u5BF9\u9F50 +Form-Url=\u5730\u5740 +Form-View_Tree=\u89C6\u56FE\u6811 +Form-Widget_Name=\u63A7\u4EF6\u540D +Form-Widget_Property=\u5C5E\u6027\u540D +Form-Widget_Property_Table=\u5C5E\u6027\u8868 +Form-Widget_Property_Value=\u5C5E\u6027\u503C +Form-Widget_Scrollable=\u6EDA\u52A8\u6761 +Form-Width_Des=\u8BBE\u7F6E\u8868\u5355\u8BBE\u8BA1\u7A97\u53E3\u7684\u5BBD\u5EA6 +Format=\u683C\u5F0F +Format-Error=\u8F93\u5165\u7684\u503C\u683C\u5F0F\u4E0D\u6B63\u786E +Format_explan=\u683C\u5F0F\u8BF4\u660E +Formula=\u516C\u5F0F +FormulaD-All=\u5168\u90E8\u51FD\u6570 +FormulaD-Array=\u6570\u7EC4\u51FD\u6570 +FormulaD-Check_Valid=\u68C0\u67E5\u5408\u6CD5\u6027 +FormulaD-Custom_Function=\u81EA\u5B9A\u4E49\u51FD\u6570 +FormulaD-Data_Fields=\u6570\u636E\u9879 +FormulaD-Date_&_Time=\u65E5\u671F\u548C\u65F6\u95F4\u51FD\u6570 +FormulaD-Define_Execute_Script=\u5B9A\u4E49\u8FD0\u884C\u671F\u811A\u672C +FormulaD-Formula_Definition=\u516C\u5F0F\u5B9A\u4E49 +FormulaD-Function_category=\u51FD\u6570\u7C7B\u578B +FormulaD-Function_name=\u51FD\u6570\u540D +FormulaD-Functions=\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 +FormulaD-Invalid_Formula=\u975E\u6CD5\u7684\u516C\u5F0F +FormulaD-Invalid_SQL=\u975E\u6CD5\u7684SQL\u8BED\u53E5 +FormulaD-Logical=\u903B\u8F91\u51FD\u6570 +FormulaD-Math_&_Trig=\u6570\u5B66\u548C\u4E09\u89D2\u51FD\u6570 +FormulaD-Most_Recently_Used=\u5E38\u7528\u51FD\u6570 +FormulaD-Operations=\u64CD\u4F5C\u7B26 +FormulaD-Other=\u5176\u5B83\u51FD\u6570 +FormulaD-Report=\u62A5\u8868\u51FD\u6570 +FormulaD-Reserve_when_bs-write_or_analy=\u586B\u62A5/\u5206\u6790\u65F6\uFF0C\u4FDD\u7559\u516C\u5F0F\u7528\u4E8E\u8BA1\u7B97 +FormulaD-Reserve_when_export-edit_result=\u5BFC\u51FA/\u7F16\u8F91\u7ED3\u679C\u65F6,\u4FDD\u7559\u516C\u5F0F +FormulaD-Script=\u811A\u672C +FormulaD-Text=\u6587\u672C\u51FD\u6570 +FormulaD-Valid_Formula=\u5408\u6CD5\u7684\u516C\u5F0F +FormulaD-Valid_Script=\u5408\u6CD5\u7684\u811A\u672C +Formula_Condition=\u516C\u5F0F\u6761\u4EF6 +Formula_Description=\u516C\u5F0F\u8BF4\u660E +Formula_Dictionary_Display=\u5BF9\u4E8E\u4E0A\u9762\u5B9E\u9645\u503C\u8303\u56F4\u5185\u7684\u6BCF\u4E2A\u503C($$$)\uFF0C\u5176\u663E\u793A\u503C\u4E3A +Formula_Dictionary_Display_Example=\u5B9E\u9645\u503C\u8303\u56F4\u4E3A \=range(100), \u5BF9\u5B9E\u9645\u503C\u8303\u56F4\u5185\u7684\u6BCF\u4E2A$$$\u7684\u663E\u793A\u516C\u5F0F\u4E3A \=0 - $$$\uFF0C\n\u5219\u6700\u7EC8\u7684\u7ED3\u679C\u5B9E\u9645\u503C\u4E3A1, 2, ..., 100, \u663E\u793A\u503C\u4E3A-1, -2, ... , -100\u3002 +Formula_Dictionary_Display_Examples=\ \u5B9E\u9645\u503C\u8303\u56F4\u4E3A \=range(100),\u5BF9\u5B9E\u9645\u503C\u8303\u56F4\n \u5185\u7684\u6BCF\u4E2A$$$\u7684\u663E\u793A\u516C\u5F0F\u4E3A \=0 - $$$\uFF0C\n \u5219\u6700\u7EC8\u7684\u7ED3\u679C\u5B9E\u9645\u503C\u4E3A1, 2, ..., 100, \n \u663E\u793A\u503C\u4E3A-1, -2, ... , -100\u3002 +Formula_Dictionary_Display_Examples_Html=\u5B9E\u9645\u503C\u8303\u56F4\u4E3A \=range(100),\u5BF9\u5B9E\u9645\u503C\u8303\u56F4\u5185\u7684\u6BCF\u4E2A$$$\u7684\u663E\u793A\u516C\u5F0F\u4E3A \=0 - $$$\uFF0C
\u5219\u6700\u7EC8\u7684\u7ED3\u679C\u5B9E\u9645\u503C\u4E3A1, 2, ..., 100,\u663E\u793A\u503C\u4E3A-1, -2, ... , -100\u3002
  +Formula_Editor=\u516C\u5F0F\u7F16\u8F91\u5668 +Formula_Tips=\u516C\u5F0F\u5FC5\u987B\u4EE5"\="\u53F7\u5F00\u5934\uFF01 +Forum=\u8BBA\u575B +Frame=\u6846\u67B6 +FrameStyle=\u6846\u67B6\u6837\u5F0F +Free=\u514D\u8D39 +Free_Report_Wizard=\u81EA\u7531\u62A5\u8868\u5411\u5BFC +Freeze-Page_Column=\u51BB\u7ED3\u91CD\u590D\u6807\u9898\u7ED3\u675F\u5217 +Freeze-Page_Row=\u51BB\u7ED3\u91CD\u590D\u6807\u9898\u7ED3\u675F\u884C +Freeze-Use_In_Write=\u4F7F\u7528\u586B\u62A5\u51BB\u7ED3\u884C\u5217 +FreezeWarning1=\u521D\u59CB\u503C\u4E0D\u5927\u4E8E\u5C3E\u503C +FreezeWarning2=\u8BF7\u8F93\u5165\u6B63\u6574\u6570\uFF01 +FreezeWarning3=\u8BF7\u8F93\u5165A-Z\u7684\u5B57\u6BCD +FrequencySet=\u660E\u7EC6\u9891\u7387\u8BBE\u7F6E +Fri=\u4E94 +From=\u4ECE\u7B2C +Frozen=\u51BB\u7ED3 +Fuction-The_compiled_class_should_be_copied_to=\u5E94\u5C06\u7F16\u8BD1\u540E\u7684\u7C7B\u6587\u4EF6\u62F7\u8D1D\u5230 +Fujian=\u798F\u5EFA\u7701 +Function=\u51FD\u6570 +Function-Are_you_sure_to_delete_selected_function=\u4F60\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u7684\u51FD\u6570\u5417 +Function-Choose_Function_Class=\u9009\u62E9\u51FD\u6570\u7C7B +Function-Content_Function=\u5185\u5BB9\u51FD\u6570 +Function-Function_Class_Name=\u51FD\u6570\u7C7B\u540D +Function-Function_File=\u51FD\u6570\u6587\u4EF6 +Function-Function_Manager=\u51FD\u6570\u7BA1\u7406\u5668 +Function-Function_Name_is_Null=\u51FD\u6570\u540D\u4E0D\u80FD\u4E3A\u7A7A +Function-Function_has_Existed=\u51FD\u6570\u5DF2\u7ECF\u5B58\u5728 +Function-J2EE_server=J2EE\u670D\u52A1\u5668 +Function-New_Function_Name=\u65B0\u51FD\u6570\u540D +Function-Program_Function=\u7A0B\u5E8F\u51FD\u6570 +Function-Rename_Function=\u91CD\u547D\u540D\u51FD\u6570 +Function-Source_Code=\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 +Function-The_class_must_be_located_in=\u8BE5\u7C7B\u5FC5\u987B\u653E\u7F6E\u5728 +Function-The_class_must_implement_the_interface=\u8BE5\u7C7B\u5FC5\u987B\u5B9E\u73B0\u63A5\u53E3 +Function-The_class_must_inherit=\u8BE5\u7C7B\u5FC5\u987B\u7EE7\u627F +Function-The_selected_file_cannot_be_null=\u6587\u4EF6\u4E0D\u80FD\u4E3A\u7A7A +Function-The_selected_file_must_end_with=\u6587\u4EF6\u540E\u7F00\u5FC5\u987B\u662F +Function_Detail=\u51FD\u6570\u660E\u7EC6 +Function_Name_Should_Not_Be=\u51FD\u6570\u540D\u4E0D\u5E94\u8BE5\u662F +Function_browser=\u51FD\u6570\u6D4F\u89C8 +FuzhouCity=\u798F\u5DDE\u5E02 +GIVE-NAME=\u547D\u540D +GROUPING_MODE=\u666E\u901A\u5206\u7EC4 +Gansu=\u7518\u8083\u7701 +Ge=\u4E2A +General=\u5E38\u7528 +General-ToolBar=\u666E\u901A\u5DE5\u5177\u680F +Get=\u83B7\u53D6 +Get-Cube=\u6B63\u5728\u83B7\u53D6cube +Get_Catalog=\u6B63\u5728\u83B7\u53D6catalog +Get_Lock=\u52A0\u9501 +GisTableDataError=Gis\u5730\u56FE\u6570\u636E\u96C6\u6570\u636E\u9519\u8BEF +Golden=\u91D1\u8272 +GoogleMap=\u8C37\u6B4C\u5730\u56FE +Gradation=\u5C42\u6B21 +Gradient=\u6E10\u53D8 +Gradient-Color=\u6E10\u53D8\u8272 +Gradient-Direction=\u6E10\u53D8\u65B9\u5411 +Gradient_Left_Color=\u6E10\u53D8\u8272\u5DE6\u533A\u57DF +Gradient_Right_Color=\u6E10\u53D8\u8272\u53F3\u533A\u57DF +Green=\u9752\u7EFF +GridLayout=\u683C\u5B50\u5E03\u5C40 +Group=\u5206\u7EC4 +GroupB-Add_Condition_to_List=\u662F\u5426\u5C06\u4EE5\u4E0B\u6761\u4EF6\u6DFB\u52A0\u5230\u6761\u4EF6\u5217\u8868\u4E2D +GroupB-Group_Columns=\u5206\u7EC4\u5217 +GroupB-Page=\u5206\u9875 +GroupB-Report_Footer_Page=\u62A5\u8868\u811A\u5206\u9875 +GroupB-Report_Header_Page=\u62A5\u8868\u7709\u5206\u9875 +GroupB-Summary_Columns=\u6C47\u603B\u5217 +GroupReport-GroupReport_Attributes=\u5206\u7EC4\u62A5\u8868\u5C5E\u6027 +GroupReport-Hide_Detail_When_There's_No_Data=\u5F53\u6CA1\u6709\u6570\u636E\u65F6\u4E0D\u663E\u793A\u4E3B\u4F53 +GroupReport-Make_Up_Blank_Detail_Area=\u8865\u8DB3\u7A7A\u767D\u7684\u4E3B\u4F53\u533A\u57DF +GroupReport-Only_Display_Grand_Total_Function_At_Last_Page=\u4EC5\u5728\u6700\u540E\u4E00\u9875\u663E\u793A\u603B\u6C47\u603B\u7684\u503C +GroupReport-Page_Break_After_Detail_Repeat_Times=\u4E3B\u4F53\u90E8\u5206\u5FAA\u73AF\u6307\u5B9A\u6B21\u6570\u540E\u5F3A\u5236\u5206\u9875 +GroupReport-Set_Page_Footer_Of_Last_Page_Under_Report_Footer=\u6700\u540E\u4E00\u9875\u9875\u8868\u811A\u7F6E\u4E8E\u62A5\u8868\u811A\u4E0B\u65B9 +GroupReport-Set_Page_Footer_To_Page_Bottom=\u9875\u8868\u811A\u653E\u5728\u4E00\u9875\u6700\u4E0B\u9762 +GroupTable=\u5206\u7EC4\u8868 +Group_Count=\u8868\u793A\u603B\u4E2A\u6570 +Group_by=\u5206\u7EC4\u4F9D\u636E +Group_name=\u7EC4\u540D +Grouping_Report=\u5206\u7EC4\u62A5\u8868 +Grouping_Report_Wizard=\u5206\u7EC4\u62A5\u8868\u5411\u5BFC +Guangdong=\u5E7F\u4E1C\u7701 +Guangxi=\u5E7F\u897F\u58EE\u65CF\u81EA\u6CBB\u533A +GuangzhouCity=\u5E7F\u5DDE\u5E02 +GuiyangCity=\u8D35\u9633\u5E02 +Guizhou=\u8D35\u5DDE\u7701 +HF-Are_you_sure_to_delete_it=\u4F60\u786E\u5B9E\u60F3\u5220\u9664\u8FD9\u4E2A\u5143\u7D20\u5417 +HF-Center_Section=\u4E2D\u95F4\u533A\u57DF +HF-Default_Page=\u9ED8\u8BA4\u9875 +HF-Defined=\u5DF2\u5B9A\u4E49 +HF-Delete_it=\u5220\u9664 +HF-Edit_Footer=\u7F16\u8F91\u9875\u811A +HF-Edit_Header=\u7F16\u8F91\u9875\u7709 +HF-Edit_Header/Footer=\u7F16\u8F91\u9875\u7709/\u9875\u811A +HF-Even_Page=\u5076\u6570\u9875 +HF-First_Page=\u9996\u9875 +HF-Header_and_Footer=\u7709\u5934\u548C\u7709\u811A +HF-Insert_Content=\u63D2\u5165\u5185\u5BB9 +HF-Insert_Date=\u63D2\u5165\u65E5\u671F +HF-Insert_Formula=\u63D2\u5165\u516C\u5F0F +HF-Insert_Image=\u63D2\u5165\u56FE\u7247 +HF-Insert_New_Line=\u63D2\u5165\u6362\u884C\u7B26 +HF-Insert_Number_of_Page=\u63D2\u5165\u603B\u9875\u6570 +HF-Insert_Page_Number=\u63D2\u5165\u9875\u7801 +HF-Insert_Parameter=\u63D2\u5165\u53C2\u6570 +HF-Insert_Text=\u63D2\u5165\u6587\u672C +HF-Insert_Time=\u63D2\u5165\u65F6\u95F4 +HF-Left_Section=\u5DE6\u533A\u57DF +HF-Move_Left=\u5DE6\u79FB +HF-Move_Right=\u53F3\u79FB +HF-NewLine_Des=\u53EF\u4EE5\u70B9\u51FB\u4E0A\u9762\u7684\u79FB\u52A8\u548C\u5220\u9664\u6309\u94AE\u6765\u64CD\u4F5C\u6362\u884C\u7B26 +HF-New_Line=\u6362\u884C\u7B26 +HF-Number_of_Page=\u603B\u9875\u6570 +HF-Odd_Page=\u5947\u6570\u9875 +HF-Page_Number=\u9875\u7801 +HF-Right_Section=\u53F3\u533A\u57DF +HF-The_Page_Number=\u9875\u7801 +HF-Undefined=\u6CA1\u6709\u5B9A\u4E49 +HF-Whether_to_define_the_selected_type=\u662F\u5426\u5B9A\u4E49\u9009\u4E2D\u7684\u7C7B\u578B +HJS-All_Pages=\u6240\u6709\u9875 +HJS-BCC_to=\u5BC6\u4EF6\u6284\u9001 +HJS-CC_to=\u6284\u9001 +HJS-Current_Page=\u5F53\u524D\u9875 +HJS-From=\u53D1\u4EF6\u4EBA +HJS-Mail_to=\u6536\u4EF6\u4EBA +HJS-Message=\u5185\u5BB9 +HJS-Print_Failed=\u6253\u5370\u5931\u8D25 +HJS-Print_Successfully=\u6253\u5370\u6210\u529F +HJS-Range=\u8303\u56F4 +HJS-Send_Failed=\u53D1\u9001\u5931\u8D25 +HJS-Send_Successfully=\u53D1\u9001\u6210\u529F +HJS-Server_Print=\u670D\u52A1\u5668\u7AEF\u6253\u5370 +HJS-Server_Printer=\u670D\u52A1\u5668\u7AEF\u7684\u6253\u5370\u673A +HJS-Specified_Pages=\u6307\u5B9A\u9875 +HJS-Subject=\u4E3B\u9898 +HTML-Report_Mail_Server=\u62A5\u8868\u90AE\u4EF6\u670D\u52A1\u5668 +HTML-Write_Content_Save_Failed=\u586B\u5199\u5185\u5BB9\u4FDD\u5B58\u5931\u8D25 +HTML-Write_Content_Save_Successfully=\u586B\u5199\u5185\u5BB9\u4FDD\u5B58\u6210\u529F +HTML-Write_Insert_Data_Failed=\u6570\u636E\u63D2\u5165\u5931\u8D25 +HTML-Write_Insert_Data_Successfully=\u6570\u636E\u63D2\u5165\u6210\u529F +HaikouCity=\u6D77\u53E3\u5E02 +Hainan=\u6D77\u5357\u7701 +Handle_Affairs=\u5904\u7406\u4E8B\u52A1 +HangzhouCity=\u676D\u5DDE\u5E02 +HarbinCity=\u54C8\u5C14\u6EE8\u5E02 +Has=\u62E5\u6709 +Has_Existed=\u5DF2\u7ECF\u5B58\u5728 +Has_Selected=\u5DF2\u7ECF\u9009\u62E9 +Has_been_gone=\ \u5DF2\u4E22\u5931\uFF0C\u662F\u5426\u589E\u52A0\u8BE5\u6837\u5F0F\uFF1F +Hebei=\u6CB3\u5317\u7701 +HefeiCity=\u5408\u80A5\u5E02 +Height=\u9AD8\u5EA6 +Heilongjiang=\u9ED1\u9F99\u6C5F\u7701 +Help=\u5E2E\u52A9 +Henan=\u6CB3\u5357\u7701 +Hgap=\u6C34\u5E73\u95F4\u9699 +Hide=\u9690\u85CF +High=\u9AD8 +High-Low-Line=\u9AD8\u4F4E\u7EBF +HighLight=\u9AD8\u5149 +HighLightChart=\u9AD8\u4EAE +Highlight-Barcode=\u6761\u5F62\u7801 +Highlight-Choose_Property_To_Modify=\u9009\u62E9\u8981\u6539\u53D8\u7684\u5C5E\u6027 +Highlight-Click_to_Choose_Property_To_Modify=\u70B9\u51FB\u9009\u62E9\u8981\u6539\u53D8\u7684\u5C5E\u6027 +History=\u5386\u53F2 +HohhotCity=\u547C\u548C\u6D69\u7279\u5E02 +Home=\u4E3B\u9875 +Horizontal=\u6C34\u5E73 +Horizontal-Split_Layout=\u6C34\u5E73\u5206\u5272\u5E03\u5C40 +Horizontal_Layout=\u6C34\u5E73\u5E03\u5C40 +Host_\ Name=\u4E3B\u673A\u540D +Host_Name=\u4E3B\u673A\u540D +HotHyperlink-Bring_Parameter_Automatically=\u81EA\u52A8\u751F\u6210\u53C2\u6570 +HotHyperlink-Des1=\u5229\u7528\u70ED\u70B9\u94FE\u63A5\u53EF\u4EE5\u6307\u5411\u53E6\u4E00\u5F20\u62A5\u8868\uFF0C\u5728B\\S\u73AF\u5883\u4E0B\uFF0C\u52A8\u6001\u5B9E\u73B0\u56FE\u8868\u7684\u6570\u636E\u6570\u636E\u7684\u94BB\u53D6\u6548\u679C\u3002 +HotHyperlink-Hot_Hyperlink=\u70ED\u70B9\u94FE\u63A5 +HotHyperlink-No_Hot_Hyperlink=\u6CA1\u6709\u70ED\u70B9\u94FE\u63A5 +Hour=\u5C0F\u65F6 +HourWrong=\u6267\u884C\u65F6\u70B9\u7684\u5C0F\u65F6\u586B\u5199\u9519\u8BEF +Hubei=\u6E56\u5317\u7701 +Hunan=\u6E56\u5357\u7701 +HyperLink_Must_Alone_Reset=\u591A\u4E2A\u8D85\u94FE +Hyperlink=\u8D85\u7EA7\u94FE\u63A5 +Hyperlink(failure)=\u8D85\u7EA7\u94FE\u63A5\uFF08\u5931\u8D25\u65F6\uFF09 +Hyperlink(success)=\u8D85\u7EA7\u94FE\u63A5\uFF08\u6210\u529F\u65F6\uFF09 +Hyperlink-Choose=\u9009\u62E9(C) +Hyperlink-Configuration_Of_New_Window=\u65B0\u7A97\u53E3\u914D\u7F6E\u4FE1\u606F +Hyperlink-Des1=\u5229\u7528\u8D85\u7EA7\u94FE\u63A5\u53EF\u4EE5\u6307\u5411\u53E6\u4E00\u5F20\u62A5\u8868\uFF0C\u5728B\\S\u73AF\u5883\u4E0B\uFF0C\u52A8\u6001\u5B9E\u73B0\u6570\u636E\u7684\u94BB\u53D6\u6548\u679C\u3002 +Hyperlink-Email_cannot_be_null=Email\u4E0D\u80FD\u4E3A\u7A7A +Hyperlink-Extends_Report_Parameters=\u7EE7\u627F\u62A5\u8868\u7684\u53C2\u6570 +Hyperlink-Features=\u7279\u5F81 +Hyperlink-Form_link=\u5F53\u524D\u8868\u5355\u5BF9\u8C61 +Hyperlink-Height_Of_New_Window=\u65B0\u7A97\u53E3\u9AD8\u5EA6 +Hyperlink-Link_Opened_in=\u94FE\u63A5\u6253\u5F00\u4E8E +Hyperlink-New_Window=\u65B0\u7A97\u53E3 +Hyperlink-No_Hyperlink=\u6CA1\u6709\u8D85\u7EA7\u94FE\u63A5 +Hyperlink-Reportlet_name_cannot_be_null=\u7F51\u7EDC\u62A5\u8868\u540D\u5B57\u4E0D\u53EF\u4E3A\u7A7A +Hyperlink-Resizable=\u662F\u5426\u53EF\u8C03\u6574\u7A97\u53E3\u5927\u5C0F +Hyperlink-Self=\u5728\u539F\u7F51\u9875\u4E2D\u6253\u5F00\u94FE\u63A5(S) +Hyperlink-Self_Window=\u5F53\u524D\u7A97\u53E3 +Hyperlink-Show_Directories=\u663E\u793A\u5FEB\u901F\u94FE\u63A5\u680F +Hyperlink-Show_Location=\u663E\u793A\u5730\u5740\u680F +Hyperlink-Show_Menubar=\u663E\u793A\u83DC\u5355\u680F +Hyperlink-Show_Scrollbars=\u663E\u793A\u7A97\u53E3\u6EDA\u52A8\u6761 +Hyperlink-Show_Status=\u663E\u793A\u72B6\u6001\u680F +Hyperlink-Show_Toolbar=\u663E\u793A\u5DE5\u5177\u680F +Hyperlink-Target_Frame=\u6253\u5F00\u94FE\u63A5\u7684\u7A97\u53E3 +Hyperlink-URL_cannot_be_null=URL\u4E0D\u80FD\u4E3A\u7A7A +Hyperlink-Use_CJK_to_encode_parameter=\u4F7F\u7528CJK\u5904\u7406\u53C2\u6570 +Hyperlink-Web_link=\u7F51\u9875\u94FE\u63A5 +Hyperlink-Width_Of_New_Window=\u65B0\u7A97\u53E3\u5BBD\u5EA6 +I-xyScatterStyle_Marker=\u6563\u70B9\u56FE +ID=\u5E8F\u53F7 +IDCard=\u8EAB\u4EFD\u8BC1 +IDLE=\u7A7A\u95F2 +INFO-Current_Role=\u5F53\u524D\u89D2\u8272 +INFO-End_Converting_ReportPage_To_Html=\u62A5\u8868\u9875\u8F6CHtml\u7ED3\u675F +INFO-End_Executing_Report=\u5B8C\u6210\u62A5\u8868\u8BA1\u7B97 +INFO-End_Reading_XML=\u7ED3\u675FXML\u8BFB\u53D6 +INFO-Page_is_Generated=\u9875\u9762\u5DF2\u751F\u6210 +INFO-Reset_Webapp=\u91CD\u7F6E\u5E94\u7528\u670D\u52A1\u5668 +INFO-Server_Started_Successfully=\u6210\u529F\u542F\u52A8\u670D\u52A1\u5668 +INFO-Start_Converting_ReportPage_To_Html=\u5F00\u59CB\u8F6C\u62A5\u8868\u9875\u4E3AHtml +INFO-Start_Executing_Report=\u5F00\u59CB\u8BA1\u7B97\u62A5\u8868 +INFO-Start_Reading_XML=\u5F00\u59CB\u8BFBXML +INFO-Time_Taken=\u8017\u65F6 +INFO-Try_to_set_the_port_of_the_server_to=\u8BBE\u7F6E\u670D\u52A1\u5668\u7AEF\u53E3\u4E3A +IN_and_INOUT_type_not_as_cursor=IN\u548CINOUT\u7C7B\u578B\u4E0D\u53EF\u4EE5\u4F5C\u4E3A\u6E38\u6807 +ISEMPTY=\u4E3A\u7A7A +IS_Auto_Scale=iframe\u5D4C\u5165\u65F6\u81EA\u52A8\u7F29\u653E +IS_Key_Equals_Value=\u5B9E\u9645\u503C\u548C\u663E\u793A\u503C\u76F8\u540C +IS_Need_Password=\u9700\u8981\u5BC6\u7801 +IS_TD_HEAVY_EXPORT=\u91CD\u65B9\u5F0F\u8F93\u51FA\u683C\u5B50 +I_Created=\u6211\u521B\u5EFA\u7684 +I_Want_To_Set_Single=\u4E3A\u8BE5\u6A21\u677F\u5355\u72EC\u8BBE\u7F6E +Icon=\u56FE\u6807 +Icon_And_Text_Cannot_Be_Empty_In_The_Same_Time=\u56FE\u6807\u548C\u6587\u672C\u4E0D\u80FD\u540C\u65F6\u4E3A\u7A7A +Idle_Connection_Size=\u7A7A\u95F2\u8FDE\u63A5\u6570 +Ignore_All=\u5FFD\u7565\u5168\u90E8 +Image=\u56FE\u7247 +Image-Adjust=\u9002\u5E94 +Image-Extend=\u62C9\u4F38 +Image-Image_Files=\u56FE\u7247\u6587\u4EF6 +Image-Image_Layout=\u56FE\u7247\u5E03\u5C40 +Image-Layout=\u5E03\u5C40 +Image-Select_Picture=\u9009\u62E9\u56FE\u7247 +Image-Specified_Size=\u6307\u5B9A\u5C3A\u5BF8 +Image-Titled=\u5E73\u94FA +ImgBoard=\u56FE\u7247\u9762\u677F +Implement-Description=\u6CA1\u6709\u5B9E\u73B0\u63A5\u53E3SubmitJob +Import=\u8F93\u5165 +Import-Datasource_Files=\u6570\u636E\u6E90\u6587\u4EF6 +Import-Excel2007_Source=Excel2007\u6E90\u6587\u4EF6 +Import-Excel_File=Excel\u6587\u4EF6 +Import-Excel_Import=Excel\u8F93\u5165 +Import-Excel_Source=Excel\u6E90\u6587\u4EF6 +Import-Save=\u4FDD\u5B58\u5230\u76EE\u5F55 +Import-Translate=\u8F6C\u6362 +Import-Unconverted_Formula=\u4E0D\u80FD\u8F6C\u6362\u7684\u516C\u5F0F +Import2=\u5BFC\u5165 +ImportMap=\u5BFC\u5165\u5730\u56FE +Import_Again=\u91CD\u65B0\u5BFC\u5165 +Import_Export-Excel=Excel\u683C\u5F0F +Import_Failed=\u5BFC\u5165\u5931\u8D25 +Importing=\u5BFC\u5165\u4E2D +InColumn=\u5217(L) +InRow=\u884C(R) +Inc_All_rights_Reserved=\u4FDD\u7559\u6240\u6709\u6743\u5229\u3002 +Include=\u5305\u62EC +Indent-Character=\u5B57\u7B26 +Indent-Indentation_Unit=\u7F29\u8FDB\u5355\u4F4D +Indent-Indentation_Value=\u7F29\u8FDB\u503C +Indent-Pixel=\u50CF\u7D20 +Index=\u5217\u8F74/\u6307\u6807 +Info=\u4FE1\u606F +InnerRadis=\u5185\u5F84\u5927\u5C0F +Inner_Parameter=\u5185\u7F6E\u53C2\u6570 +Input-New_Name=\u8F93\u5165\u65B0\u540D\u5B57 +Input-To_Search=\u641C\u7D22\u9009\u9879\u7ED3\u679C +Input_Keyword=\u952E\u5165\u5173\u952E\u5B57 +Input_Rule=\u586B\u5199\u89C4\u5219 +Input_The_Name_Of_Gloabel_Style=\u8F93\u5165\u6240\u4FDD\u5B58\u7684\u5168\u5C40\u683C\u5F0F\u540D\u79F0 +Insert=\u63D2\u5165 +Insert-Formula_Edit=\u516C\u5F0F\u7F16\u8F91 +InsertBackward=\u5411\u540E\u63D2\u5165 +InsertForward=\u5411\u524D\u63D2\u5165 +Inside=\u5185\u90E8 +Institution=\u673A\u6784\u90E8\u95E8 +IntPart=\u6574\u6570\u90E8\u5206 +Integer=\u6574\u6570 +Interactive-chart=\u56FE\u8868\u8054\u52A8 +Interface=\u63A5\u53E3 +InterfaceStyle=\u98CE\u683C +Interval=\u65F6\u95F4\u95F4\u9694 +Interval_Gap=\u95F4\u9694 +Invalid_Cell=\u65E0\u6548\u7684\u5355\u5143\u683C +Invert_Selection=\u53CD\u5411\u9009\u5B9A +Is-Cache=\u542F\u7528\u7F13\u5B58 +Is_Need=\u5FC5\u9700 +Is_Paint_Page=\u4EE5\u56FE\u7247\u65B9\u5F0F\u663E\u793A +Is_Share_DBTableData=\u5171\u4EAB\u6570\u636E\u96C6 +JSON-Error=\u6CA1\u6709\u751F\u6210\u6B63\u786E\u7684JSON\u6570\u7EC4 +JSShow=\u52A8\u6001\u5C55\u793A +JS_Import_Description=\u5982\u679C\u901A\u8FC7\u76F8\u5BF9\u8DEF\u5F84\u5F15\u7528js\: \n\u76F8\u5BF9\u4E8E\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;\n\u5982\u679C\u901A\u8FC7\u7EDD\u5BF9\u8DEF\u5F84\u5F15\u7528js\:\n\u793A\u4F8B\:D\:\\tomcat\\webapps\\WebReport\\WEB-INF\\scripts\\script.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 +JS_WARNING2=\ \u4F8B\uFF1Ahttp\://localhost\:8075/WebReport/demo.js +January=\u4E00\u6708 +Japanese_Language=\u65E5\u8BED +JavaScript=JavaScript\u811A\u672C +JavaScript-Commit_to_Database=\u63D0\u4EA4\u5165\u5E93 +JavaScript-Dynamic_Parameters=\u52A8\u6001\u53C2\u6570 +JavaScript-Form_Submit=\u8868\u5355\u63D0\u4EA4 +JavaScript-Parameter_Refresh= +JavaScript-Synch=\u540C\u6B65 +JavaScript_Set=JS\u8BBE\u7F6E +JavaScrit-Asynch=\u5F02\u6B65 +Jiangsu=\u6C5F\u82CF\u7701 +Jiangxi=\u6C5F\u897F\u7701 +Jilin=\u5409\u6797\u7701 +JinanCity=\u6D4E\u5357\u5E02 +Join_Product_improve=\u52A0\u5165\u4EA7\u54C1\u6539\u826F\u8BA1\u5212 +Judge=\u5224\u65AD +July=\u4E03\u6708 +June=\u516D\u6708 +Key=\u952E +KeyPoint=\u5173\u952E\u8282\u70B9 +KeyWord=\u5173\u952E\u5B57 +KunmingCity=\u6606\u660E\u5E02 +LDAP_User=LDAP\u7528\u6237 +LIC-Support_ADHOC=\u5373\u5E2D\u62A5\u8868 +LIC-Support_Advanced_Chart=\u590D\u6742\u7EDF\u8BA1\u56FE +LIC-Support_Advanced_DataSource=\u589E\u5F3A\u6570\u636E\u6E90\u6A21\u5757 +LIC-Support_Advanced_Formula=\u589E\u5F3A\u5206\u6790\u7EDF\u8BA1\u6A21\u5757 +LIC-Support_Advanced_Online_Writer=\u591A\u6E90\u586B\u62A5 +LIC-Support_Collapable_Tree_View=\u591A\u7EF4\u5EA6\u5206\u6790 +LIC-Support_Dynamic_Chart=HTML5\u52A8\u6001\u56FE\u8868 +LIC-Support_Dynamic_Meter_Chart= +LIC-Support_Flash_Print=Flash\u96F6\u5BA2\u6237\u7AEF\u6253\u5370 +LIC-Support_Frozen_View=\u51BB\u7ED3\u8868\u5934 +LIC-Support_Global_Style=\u62A5\u8868\u5168\u5C40\u6837\u5F0F +LIC-Support_Meter_Chart=\u4EEA\u8868\u76D8 +LIC-Support_Multi_Env=\u591A\u62A5\u8868\u8FD0\u884C\u73AF\u5883 +LIC-Support_Multi_Web_App=\u670D\u52A1\u5668\u652F\u6301\u591A\u4E2A\u5E94\u7528 +LIC-Support_Online_Edit=\u5728\u7EBF\u5B9E\u65F6\u7F16\u8F91\u5668 +LIC-Support_Online_Write=\u586B\u62A5\uFF08\u975E\u591A\u6E90\uFF09 +LIC-Support_Parameter_Interface=\u53C2\u6570\u67E5\u8BE2\u754C\u9762 +LIC-Support_Performce_Optimise=\u6027\u80FD\u8C03\u4F18 +LIC-Support_Predefined_Widget=\u7F16\u8F91\u5668\u63A7\u4EF6\u7BA1\u7406 +LIC-Support_Privilege=\u6743\u9650\u914D\u7F6E +LIC-Support_Remote_Design=\u8FDC\u7A0B\u8BBE\u8BA1 +LIC-Support_Schedule=\u62A5\u8868\u5B9A\u65F6\u8C03\u5EA6 +LIC-Support_Server_Cluster=\u62A5\u8868\u670D\u52A1\u5668\u96C6\u7FA4 +LIC-Support_Source_Relation=\u591A\u6570\u636E\u6E90\u5173\u8054 +LIC-Support_WorkBook=\u591Asheet\u62A5\u8868\u8BBE\u8BA1 +LIST_MODE=\u5217\u8868 +LOG-Close_Session=\u5173\u95EDSession +LOG-Has_Been_Openned=\u5DF2\u7ECF\u6253\u5F00 +LOG-Is_Being_Openned=\u6B63\u5728\u6253\u5F00 +LOG-Please_Wait=\u8BF7\u7A0D\u5019 +LOG-Report_Server_IS_Started=\u62A5\u8868\u670D\u52A1\u5668\u5DF2\u542F\u52A8 +Label=\u6807\u7B7E +Language=\u8BED\u8A00 +LanguageSetUp=\u8BED\u8A00\u914D\u7F6E +LanzhouCity=\u5170\u5DDE\u5E02 +Large-pitch-based=\u5927\u95F4\u8DDD +LasaCity=\u62C9\u8428\u5E02 +Last_Day=\u6700\u540E\u4E00\u5929 +Last_Submit_Time=\u4E0A\u6B21\u63D0\u4EA4\u65F6\u95F4 +LatLng=\u7ECF\u7EAC\u5EA6 +Layer-Build=\u5206\u5C42\u6784\u5EFA +Layer-Generated_Pages=\u5DF2\u751F\u6210\u7684\u9875\u6570 +Layer-Sleep_Thread_For_Calculating=\u4F11\u7720\u8BA1\u7B97\u7EBF\u7A0B +Layer-Waiting_For_Page_Number=\u7B49\u5F85\u9875\u7801 +Layer-Wake_Up_Thread_For_Calculating=\u5524\u9192\u8BA1\u7B97\u7EBF\u7A0B +Layer-Wake_Up_Thread_For_Page_Retriever=\u5524\u9192\u53D6\u9875\u9762\u7EBF\u7A0B +LayerData=\u5E95\u5C42\u6570\u636E +LayerGrade=\u94BB\u53D6\u5C42\u7EA7 +LayerPageReport_CountPerPage=\u6BCF\u9875\u8BB0\u5F55\u6570 +LayerPageReport_Define_PageQuerySQL=\u5B9A\u4E49\u5206\u9875\u67E5\u8BE2sql +LayerPageReport_PageEngine=\u4F7F\u7528\u6309\u9875\u8FD0\u7B97\u5206\u6BB5\u6267\u884C\u62A5\u8868 +LayerPageReport_PageQuery=\u5206\u9875\u67E5\u8BE2 +LayerPageReport_PageQuery_Unsupport_Msg1=\u65E0\u6CD5\u81EA\u52A8\u8F6C\u5316\u6210\u5206\u9875\u8BED\u53E5\uFF0C\u8BF7\u81EA\u5B9A\u4E49\u5206\u9875SQL\! +LayerPageReport_WN_CellExpand=\u6309\u9875\u8FD0\u7B97\u65F6\uFF0C\u53EA\u652F\u6301\u4ECE\u4E0A\u5230\u4E0B\u6269\u5C55\u5C5E\u6027\uFF0C\u5176\u5B83\u5C5E\u6027\u8BBE\u7F6E\u5747\u4E0D\u652F\u6301 +LayerPageReport_WN_CellPage=\u6309\u9875\u8FD0\u7B97\u5F15\u64CE\u4E0D\u652F\u6301\u5355\u5143\u683C\u5206\u9875\u5C5E\u6027 +LayerPageReport_WN_Chart=\u6309\u9875\u8FD0\u7B97\u5F15\u64CE\u6682\u4E0D\u652F\u6301\u56FE\u8868 +LayerPageReport_WN_DSColumn=\u6309\u9875\u8FD0\u7B97\u5F15\u64CE\u53EA\u652F\u6301\u5217\u8868\u4EE5\u53CA\u7B80\u5355\u5206\u7EC4\uFF0C\u5176\u4F59\u5C5E\u6027\u529F\u80FD\u5747\u4E0D\u652F\u6301 +LayerPageReport_WN_Float=\u6309\u9875\u8FD0\u7B97\u5F15\u64CE\u6682\u4E0D\u652F\u6301\u60AC\u6D6E\u5143\u7D20 +LayerPageReport_WN_Hierarchy=\u6309\u9875\u8FD0\u7B97\u5F15\u64CE\u4E0D\u652F\u6301\u5C42\u6B21\u5750\u6807 +LayerPageReport_WN_RepeatCR=\u6309\u9875\u8FD0\u7B97\u5F15\u64CE\u6682\u53EA\u652F\u6301\u91CD\u590D\u6807\u9898\u884C\u5217 +LayerPageReport_WN_Report_Columns=\u6309\u9875\u8FD0\u7B97\u5F15\u64CE\u6682\u4E0D\u652F\u6301\u62A5\u8868\u5206\u680F +LayerPageReport_WN_SIL=\u6309\u9875\u8FD0\u7B97\u5F15\u64CE\u6682\u4E0D\u652F\u6301Sheet\u95F4\u8FD0\u7B97 +LayerPageReport_WN_SubReport=\u6309\u9875\u8FD0\u7B97\u5F15\u64CE\u6682\u4E0D\u652F\u6301\u5B50\u62A5\u8868 +Layer_Authentication=\u9A8C\u8BC1 +Layer_Corresponding_Map=\u94BB\u53D6\u5BF9\u5E94\u5730\u56FE +Layer_Report=\u5C42\u5F0F\u62A5\u8868 +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 +Layer_Report_alert_info=\u6CE8\u610F\uFF01\u60A8\u6B63\u5728\u4F7F\u7528\u884C\u5F0F\u5F15\u64CE\uFF0C\u6B64\u5F15\u64CE\u4E0B\u4E00\u4E9B\u62A5\u8868\u7279\u6027\u5C06\u4E0D\u518D\u652F\u6301\u3002 +Layout=\u4F4D\u7F6E +Layout-HBox=\u6C34\u5E73\u76D2\u5B50\u5E03\u5C40 +Layout-Index=\u7D22\u5F15 +Layout-Margin=\u5916\u8FB9\u8DDD +Layout-Padding=\u5185\u8FB9\u8DDD +Layout_Constraints=\u4F4D\u7F6E\u548C\u5927\u5C0F +Layout_Container=\u5E03\u5C40\u5BB9\u5668 +Left=\u5DE6 +LeftParent=\u5DE6\u7236\u683C +Left_Border_Line=\u5DE6\u6846\u7EBF +Left_Margin=\u5DE6\u8FB9\u8DDD +Length=\u957F\u5EA6 +Level=\u7EA7 +Level_Setting=\u7EA7\u522B\u8BBE\u7F6E +Level_coordinates=\u5C42\u6B21\u5750\u6807 +Liaoning=\u8FBD\u5B81\u7701 +License-Your_license_is_not_support_multiple_connection=\u5F53\u524DLicense\u4E0D\u652F\u6301\u591A\u6570\u636E\u8FDE\u63A5 +Light_Blue=\u6DE1\u84DD +Light_Orange=\u6D45\u6A58\u9EC4 +Line=\u7EBF\u6761 +Line-Color=\u7EBF\u6761\u989C\u8272 +Line-Style=\u7EBF\u578B +Line_Width=\u7EBF\u5BBD +Link=\u94FE\u63A5 +Links=\u94FE\u63A5 +List=\u5217\u8868 +List-Filter=\u5217\u8868\u7B5B\u9009 +List-Need_Head=\u9700\u8981\u5217\u8868\u5934 +Load=\u52A0\u8F7D +Load-Pull_Up=\u5411\u4E0A\u62C9\u52A8\u52A0\u8F7D\u66F4\u591A\u6570\u636E +Load_Resource_File=\u52A0\u8F7D\u914D\u7F6E\u6587\u4EF6 +Loading=\u6B63\u5728\u52A0\u8F7D +Loading_Applet=\u6B63\u5728\u52A0\u8F7DApplet +Loading_Component=\u6B63\u5728\u52A0\u8F7D\u63A7\u4EF6 +Loading_Data=\u6B63\u5728\u52A0\u8F7D\u6570\u636E +Loading_PDF=\u6B63\u5728\u52A0\u8F7DPDF +Local-file=\u672C\u5730\u6587\u4EF6 +Local_offset=\u672C\u673A\u504F\u79FB +Location=\u4F4D\u7F6E +Locked=\uFF08\u5DF2\u9501\u5B9A\uFF09 +Log=\u65E5\u5FD7 +Log_Declare_Head_Execute=\u62A5\u8868\u8BA1\u7B97\u4E2D +Log_Declare_Head_Export=\u62A5\u8868\u5BFC\u51FA\u4E2D +Log_Declare_Head_Print=\u62A5\u8868\u6253\u5370\u4E2D +Log_Declare_Head_Res_Read=\u6587\u4EF6\u8BFB\u53D6\u4E2D +Log_Declare_Head_Res_Write=\u6587\u4EF6\u5199\u51FA\u4E2D +Log_Declare_Head_Web_Write=\u9875\u9762\u5199\u51FA\u4E2D +Log_Level_INFO=\u666E\u901A\u7EA7\u522B,\u663E\u793ASQL\u8BED\u53E5\u7B49\u4FE1\u606F +Log_Level_SEVERE=\u4E25\u91CD\u7EA7\u522B,\u663E\u793A\u9519\u8BEF\u4FE1\u606F +Log_Level_WARNING=\u8B66\u544A\u7EA7\u522B,\u663E\u793A\u8B66\u544A\u4FE1\u606F +Logarithmic=\u5BF9\u6570\u523B\u5EA6 +LogarithmicValue=\u5BF9\u6570\u523B\u5EA6\u503C +Login=\u767B\u5F55 +Login_Setting=\u767B\u5F55\u8BBE\u7F6E +Logout=\u9000\u51FA +Lookup_Range=\u67E5\u627E\u8303\u56F4 +Low=\u4F4E +Lower_LayerSet=\u4E0B\u5C42\u94BB\u53D6\u8BBE\u7F6E +M-Cell=\u5355\u5143\u683C +M-Chart_Preview=\u56FE\u8868\u9884\u89C8 +M-Close_Template=\u5173\u95ED\u6A21\u677F(C) +M-Data_Analysis=\u6570\u636E\u5206\u6790 +M-Data_Analysis_Settings=\u6570\u636E\u5206\u6790\u8BBE\u7F6E +M-Design_Report=\u8BBE\u8BA1\u62A5\u8868(D) +M-Edit=\u7F16\u8F91(E) +M-Excel_File=Excel\u6587\u4EF6(E) +M-Exit=\u9000\u51FA +M-File=\u6587\u4EF6 +M-Form_Preview=\u8868\u5355\u9884\u89C8 +M-Help=\u5E2E\u52A9 +M-Insert=\u63D2\u5165 +M-New_ChartBook=\u65B0\u5EFA\u56FE\u8868 +M-New_FormBook=\u65B0\u5EFA\u8868\u5355 +M-New_Multi_Report=\u65B0\u5EFA\u805A\u5408\u62A5\u8868(M) +M-New_Report=\u65B0\u5EFA\u62A5\u8868(R) +M-New_WorkBook=\u65B0\u5EFA\u5DE5\u4F5C\u7C3F +M-Open_Recent=\u6700\u8FD1\u6253\u5F00\u7684 +M-Open_Report=\u6253\u5F00... +M-Others=\u5176\u5B83... +M-Page_Preview=\u5206\u9875\u9884\u89C8 +M-Page_Setup=\u9875\u9762\u8BBE\u7F6E +M-Popup_ChartData=\u56FE\u8868\u6570\u636E +M-Popup_ChartOption=\u56FE\u8868\u9009\u9879 +M-Popup_ChartType=\u56FE\u8868\u7C7B\u578B +M-Print_Preview=\u6253\u5370\u9884\u89C8(V) +M-Print_Report=\u6253\u5370\u62A5\u8868(P) +M-Repeat-Freeze=\u91CD\u590D\u4E0E\u51BB\u7ED3\u8BBE\u7F6E +M-Report=\u62A5\u8868(R) +M-Save=\u4FDD\u5B58 +M-Save_As=\u53E6\u5B58\u4E3A +M-Server=\u670D\u52A1\u5668 +M-SwitchWorkspace=\u5207\u6362\u5DE5\u4F5C\u76EE\u5F55 +M-Template=\u6A21\u677F +M-Window=\u7A97\u53E3(N) +M-Write_Preview=\u586B\u62A5\u9884\u89C8 +MConfig-BorderTitle=\u56FE\u7247 +MConfig-CancelButton=\u53D6\u6D88 +MConfig-CompanyName=\u516C\u53F8\u540D\u79F0 +MConfig-ProductName=\u4EA7\u54C1\u540D\u79F0 +MConfig-SaveButton=\u4FDD\u5B58 +MConfig-SupportEmail=\u7535\u5B50\u90AE\u4EF6 +MConfig-User_Defined_Designer=\u914D\u7F6E\u4E2A\u6027\u6A21\u677F\u8BBE\u8BA1\u5668 +MConfig-WebsiteURL=\u516C\u53F8\u7F51\u5740 +MDX_Explain=\u8BED\u6CD5\u683C\u5F0F\u53C2\u8003MDX\u8BED\u6CD5\u3002\n\u4F8B\u5982\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\u53EF\u4EE5\u4F7F\u75280\u30011\u4EE3\u66FF\uFF0C\u67E5\u8BE2\u8F74\u53EA\u652F\u6301\u8FD4\u56DE\u4E24\u4E2A\u8F74\u3002 +MSBold=\u5FAE\u8F6F\u96C5\u9ED1 +M_Close_Current=\u5173\u95ED +M_Edit-Bring_Forward=\u4E0A\u79FB\u4E00\u5C42(F) +M_Edit-Bring_to_Front=\u7F6E\u4E8E\u9876\u5C42(T) +M_Edit-Clear=\u6E05\u9664(A) +M_Edit-Clear_All=\u5168\u90E8(A) +M_Edit-Clear_Contents=\u5185\u5BB9(C) +M_Edit-Clear_Formats=\u683C\u5F0F(F) +M_Edit-Copy=\u590D\u5236(C) +M_Edit-Cut=\u526A\u5207(T) +M_Edit-Delete=\u5220\u9664(D) +M_Edit-DeleteColumn=\u5220\u9664\u5149\u6807\u6240\u5728\u5217 +M_Edit-DeleteFloat=\u5220\u9664\u60AC\u6D6E\u5143\u7D20 +M_Edit-DeleteRow=\u5220\u9664\u5149\u6807\u6240\u5728\u884C +M_Edit-FormatBrush=\u683C\u5F0F\u5237(B) +M_Edit-Free_Ajust_Size=\u81EA\u7531\u8C03\u6574\u5C3A\u5BF8(S) +M_Edit-Merge_Cell=\u5408\u5E76\u5355\u5143\u683C +M_Edit-Order=\u53E0\u653E\u6B21\u5E8F(O) +M_Edit-Paste=\u7C98\u8D34(P) +M_Edit-Redo=\u91CD\u505A +M_Edit-Send_Backward=\u4E0B\u79FB\u4E00\u5C42(B) +M_Edit-Send_to_Back=\u7F6E\u4E8E\u5E95\u5C42(K) +M_Edit-Undo=\u64A4\u9500 +M_Edit-Unmerge_Cell=\u53D6\u6D88\u5408\u5E76\u5355\u5143\u683C +M_File-Excel_Import=Excel\u8F93\u5165(I) +M_File-Export-CSV=CSV\u683C\u5F0F(\u9017\u53F7\u5206\u9694) +M_File-Export-Excel=Excel\u683C\u5F0F +M_File-Export-PDF=PDF\u683C\u5F0F +M_File-Export-SVG=SVG\u683C\u5F0F +M_File-Export-Text=\u6587\u672C\u6587\u4EF6(\u5236\u8868\u7B26\u5206\u9694) +M_File-Export-Word=Word\u683C\u5F0F +M_File-ExportT-Template(embedded_data)=\u6A21\u677F(\u5185\u7F6E\u6570\u636E) +M_Format-Add_Column_After=\u5728\u540E\u9762\u6DFB\u52A0\u5217(L) +M_Format-Add_Column_Before=\u5728\u524D\u9762\u6DFB\u52A0\u5217(O) +M_Format-Add_Row_After=\u5728\u540E\u9762\u6DFB\u52A0\u884C(D) +M_Format-Add_Row_Before=\u5728\u524D\u9762\u6DFB\u52A0\u884C(A) +M_Format-Add_Row_at=\u6DFB\u52A0\u884C +M_Format-Data_Map=\u6570\u636E\u5B57\u5178 +M_Format-Remove_Column=\u5220\u9664\u5217(C) +M_Format-Remove_Row=\u5220\u9664\u884C(R) +M_Format-Style=\u6837\u5F0F +M_Format_A-Border=\u8FB9\u6846(B) +M_Format_A-Cell_Attributes=\u5176\u4ED6\u5C5E\u6027 +M_Format_E-Cell_Expand_And_FatherCell=\u6269\u5C55\u4E0E\u7236\u683C(E) +M_Format_W-Support_Write=\u662F\u5426\u53EF\u5199 +M_Help-API_Document=\u4E8C\u6B21\u5F00\u53D1\u7684API\u6587\u6863(A) +M_Help-About_Software=\u5173\u4E8E\u8F6F\u4EF6 +M_Help-Demo=\u793A\u4F8B(D) +M_Help-Quick_Start=\u5FEB\u901F\u5165\u95E8 +M_Help-Tutorial=\u5B66\u4E60\u6559\u7A0B +M_Help_Licence=\u6388\u6743\u8BB8\u53EF +M_Insert-Barcode=\u6761\u5F62\u7801 +M_Insert-BindValue=\u7ED1\u5B9A\u6570\u503C(B) +M_Insert-Boolean=\u5E03\u5C14\u6570\u503C(O) +M_Insert-Cell=\u5355\u5143\u683C\u5143\u7D20 +M_Insert-Chart=\u63D2\u5165\u56FE\u8868 +M_Insert-Columns=\u5217(C) +M_Insert-Data_Column=\u63D2\u5165\u6570\u636E\u5217 +M_Insert-Date=\u65E5\u671F(D) +M_Insert-Float=\u60AC\u6D6E\u5143\u7D20 +M_Insert-Formula=\u63D2\u5165\u516C\u5F0F +M_Insert-Hyperlink=\u8D85\u7EA7\u94FE\u63A5 +M_Insert-Image=\u63D2\u5165\u56FE\u7247 +M_Insert-Rows=\u884C(R) +M_Insert-Serial_Number=\u7F16\u53F7(S) +M_Insert-Shape_Isosceles_Triangle=\u7B49\u8170\u4E09\u89D2\u5F62(I) +M_Insert-Shape_Line=\u76F4\u7EBF(L) +M_Insert-Shape_None=\u9009\u62E9\u56FE\u5F62(N) +M_Insert-Shape_Oval=\u692D\u5706(O) +M_Insert-Shape_Rectangle=\u77E9\u5F62(R) +M_Insert-Shape_Rounded_Rectangle=\u5706\u89D2\u77E9\u5F62(U) +M_Insert-Slope_Line=\u63D2\u5165\u659C\u7EBF +M_Insert-Sub_Report=\u63D2\u5165\u5B50\u62A5\u8868 +M_Insert-Text=\u63D2\u5165\u666E\u901A\u6587\u672C +M_Insert-TextBox=\u6587\u672C\u6846(B) +M_Report-Bind_Data=\u7ED1\u5B9A\u6570\u636E(B) +M_Report-Execute_Script=\u8FD0\u884C\u671F\u811A\u672C(S) +M_Report-Formula_Parameter=\u516C\u5F0F\u53C2\u6570(P) +M_Report-GroupReport_Attributes=\u5206\u7EC4\u62A5\u8868\u5C5E\u6027(G) +M_Report-Report_Background=\u7EB8\u5F20\u80CC\u666F +M_Report-Report_Columns=\u62A5\u8868\u5206\u680F +M_Report-Report_Footer=\u62A5\u8868\u9875\u811A +M_Report-Report_Header=\u62A5\u8868\u9875\u7709 +M_Report-Report_Interface=\u53C2\u6570\u754C\u9762(I) +M_Report-Report_Parameter=\u6A21\u677F\u53C2\u6570 +M_Server-Function_Manager=\u51FD\u6570\u7BA1\u7406\u5668 +M_Server-Global_Parameters=\u5168\u5C40\u53C2\u6570 +M_Server-Platform_Manager=\u62A5\u8868\u5E73\u53F0\u7BA1\u7406 +M_Server-Printer_Manager=\u6253\u5370\u673A\u7BA1\u7406\u5668(P) +M_Server-Public_Datasource_Manager=\u516C\u6709\u6570\u636E\u6E90\u7BA1\u7406\u5668(D) +M_Server-Scheduled_Task_Manager(T)=\u5B9A\u65F6\u4EFB\u52A1\u7BA1\u7406\u5668(T) +M_Server-Server_Config_Manager=\u670D\u52A1\u5668\u914D\u7F6E +M_Window-Cascade(C)=\u5C42\u53E0(C) +M_Window-Frozen_WindowGrid=\u51BB\u7ED3\u7A97\u683C(F) +M_Window-Next_Window=\u4E0B\u4E00\u4E2A\u7A97\u53E3(N) +M_Window-Preference=\u9009\u9879 +M_Window-Previous_Window=\u4E0A\u4E00\u4E2A\u7A97\u53E3(P) +M_Window-Title_Horizontal(H)=\u6C34\u5E73\u5E73\u94FA(H) +M_Window-Title_Vertical=\u5782\u76F4\u5E73\u94FA(V) +M_Window-Unfrozen_WindowGrid=\u53D6\u6D88\u51BB\u7ED3\u7A97\u683C(F) +Mail=\u90AE\u4EF6 +Mail-BCopy_Adress=\u5BC6\u9001\u5730\u5740 +Mail-Contacts=\u901A\u8BAF\u5F55 +Mail-Copy_Adress=\u6284\u9001\u5730\u5740 +Mail-Send_Adress=\u53D1\u9001\u5730\u5740 +Mail_Setting=\u90AE\u4EF6\u8BBE\u7F6E +MainGraduationLine=\u4E3B\u8981\u523B\u5EA6\u7EBF +MainGraduationLineStyle=\u4E3B\u8981\u523B\u5EA6\u7EBF\u7C7B\u578B +MainGraduationUnit=\u4E3B\u8981\u523B\u5EA6\u5355\u4F4D +Main_Axis=\u4E3B\u5750\u6807\u8F74 +Main_Value_Axis=\u4E3B\u503C\u8F74 +MakeSureOfCloseSyncDataSet=\u60A8\u786E\u8BA4\u8981\u5173\u95ED\u6570\u636E\u96C6\u540C\u6B65\u5417\uFF1F\u60A8\u8FD8\u53EF\u4EE5\u901A\u8FC7"\u5F00\u542F\u6570\u636E\u96C6\u540C\u6B65"\u6309\u94AE\u6765\u542F\u7528\u5B83\u3002 +Male=\u7537 +Managed=\u53EF\u7BA1\u7406 +Management=\u7BA1\u7406 +ManagerSystem=\u7BA1\u7406\u7CFB\u7EDF +Map\ Show\ Type=\u5730\u56FE\u5C55\u73B0\u65B9\u5F0F +March=\u4E09\u6708 +Margin=\u8FB9\u8DDD +Marker=\u6807\u8BB0 +Max=\u6700\u5927 +Max\ Alpha=\u4E0D\u900F\u660E +Max-Decimal_Length=\u6700\u5927\u5C0F\u6570\u957F\u5EA6 +Max-Files_Length=\u6700\u591A\u4E0A\u4F20\u6587\u4EF6\u6570 +Max-Mem-Row-Count=\u7F13\u5B58\u81F3\u78C1\u76D8\u5F53\u8BB0\u5F55\u6570\u5927\u4E8E +MaxMarker=\u5927\u6807\u8BB0 +Max_Peak_Limit=\u6700\u5927\u8FDE\u63A5\u6570 +Max_Value=\u6700\u5927\u503C +May=\u4E94\u6708 +Means=\u8868\u793A +Measure=\u5EA6\u91CF\u503C +Memory_Usage=\u5185\u5B58\u4F7F\u7528\u60C5\u51B5 +Merge=\u5408\u5E76 +Message=\u4FE1\u606F +Meter-Style=\u4EEA\u8868\u76D8\u98CE\u683C +MeterAngle=\u4EEA\u8868\u76D8\u89D2\u5EA6 +Meter_More=\u591A\u6307\u9488\u4EEA\u8868\u76D8 +Meter_Single=\u5355\u6307\u9488\u4EEA\u8868\u76D8 +Meter_Style_Set=\u98CE\u683C\u8BBE\u7F6E +MicrosoftYaHeiInCN=\u5FAE\u8F6F\u96C5\u9ED1 +Milliseconds=\u6BEB\u79D2 +Min-Height=\u6700\u5C0F\u9AD8\u5EA6 +Min_Value=\u6700\u5C0F\u503C +Minute=\u5206\u949F +MinuteWrong=\u6267\u884C\u65F6\u70B9\u7684\u5206\u949F\u586B\u5199\u9519\u8BEF +Mobile-show=\u79FB\u52A8\u7EC8\u7AEF\u62A5\u8868\u5C55\u73B0 +MobilePad=\u5E73\u677F +MobilePhone=\u624B\u673A +Mobile_BI=\u79FB\u52A8\u51B3\u7B56\u5E73\u53F0 +Mobile_Terminal=\u79FB\u52A8\u7AEF +Mobile_Widget_Table=\u79FB\u52A8\u7AEF\u63A7\u4EF6\u5217\u8868 +Mobile_Widget_Tree=\u63A7\u4EF6\u6811 +Model=\u6A21\u5F0F +Model_Selection=\u5173\u8054\u65B9\u5F0F +ModifiedColumnName=\u4FEE\u6539\u540E\u5217\u540D +Modify=\u4FEE\u6539 +ModifySecretWillRemoveUser=\u4FEE\u6539\u52A0\u5BC6\u65B9\u5F0F\u4F1A\u6E05\u7A7A\u5DF2\u6709\u7528\u6237\u6570\u636E +Modify_Column=\u4FEE\u6539\u5217 +Modify_Column_Attibute=\u4FEE\u6539\u5217\u5C5E\u6027 +Moment=\u65F6\u523B +Mon=\u4E00 +Month=\u6708 +More=\u66F4\u591A +More-Field_Name=\u591A\u4E2A\u5B57\u6BB5\u7684\u540D +More-information=\u66F4\u591A\u4FE1\u606F +MostTimeRestart=\u5C1D\u8BD5\u91CD\u65B0\u542F\u52A8\u6700\u591A\u6B21\u6570 +Mouse_move-background=\u9F20\u6807\u79FB\u52A8\u5230\u6309\u94AE\u4E0A\u7684\u80CC\u666F\uFF0C\u82E5\u65E0\u5219\u4E0D\u6539\u53D8\u80CC\u666F +Muiti_In=\u591A\u5C42\u94BB\u53D6 +Multi-Excel-Import=\u6279\u91CFExcel\u6570\u636E\u5BFC\u5165 +MultiFileUpload=\u591A\u6587\u4EF6\u4E0A\u4F20 +Multi_nam_formula=\ \u6570\u636E\u96C6\u540D\: \u6570\u636E\u96C6\u6761\u4EF6\: +Multiline=\u591A\u884C\u7F16\u8F91 +My_Computer=\u6211\u7684\u7535\u8111 +N.O.=\u7B2C +NC-Des=\u8BE5\u5BB9\u5668\u5E94\u8BE5\u5305\u542B\u5317\u90E8\u548C\u4E2D\u90E8\u5757 +NNormal=\u6B63\u5E38 +NO=\u5426 +NOT_NULL_Des=\u4E0D\u80FD\u4E3A\u7A7A +NO_Border_Line=\u65E0\u6846\u7EBF +NS-exception_readError=\u9519\u8BEF\u4EE3\u7801\:1305 \u6A21\u677F\u6587\u4EF6\u89E3\u6790\u51FA\u9519 +NS-war-remote=\u9519\u8BEF\u4EE3\u7801\:1117 \u538B\u7F29\u90E8\u7F72\u4E0D\u652F\u6301\u8FDC\u7A0B\u8BBE\u8BA1 +NS_LayerReport_MultiDs=\u9519\u8BEF\u4EE3\u7801\:1101 \u884C\u5F0F\u5F15\u64CE\u4E0D\u652F\u6301\u591A\u6570\u636E\u6E90\u5C55\u793A +NS_LayerReport_RowCol=\u9519\u8BEF\u4EE3\u7801\:1102 \u884C\u5F0F\u5F15\u64CE\u4E0D\u652F\u6301\u6761\u4EF6\u5C5E\u6027\u4FEE\u6539\u884C\u9AD8\u5217\u5BBD +NS_LayerReport_adFormula=\u9519\u8BEF\u4EE3\u7801\:1106 \u884C\u5F0F\u5F15\u64CE\u4E0D\u652F\u6301\u5C42\u6B21\u5750\u6807 +NS_LayerReport_columns=\u9519\u8BEF\u4EE3\u7801\:1107 \u884C\u5F0F\u5F15\u64CE\u4E0D\u652F\u6301\u5206\u680F +NS_LayerReport_expandAttr=\u9519\u8BEF\u4EE3\u7801\:1104 \u884C\u5F0F\u5F15\u64CE\u53EA\u652F\u6301\u4ECE\u4E0A\u5230\u4E0B\u6269\u5C55\u5C5E\u6027\uFF0C\u5176\u5B83\u5C5E\u6027\u8BBE\u7F6E\u5747\u4E0D\u652F\u6301 +NS_LayerReport_float=\u9519\u8BEF\u4EE3\u7801\:1105 \u884C\u5F0F\u5F15\u64CE\u4E0D\u652F\u6301\u60AC\u6D6E\u5143\u7D20 +NS_LayerReport_present=\u9519\u8BEF\u4EE3\u7801\:1103 \u884C\u5F0F\u5F15\u64CE\u4E0D\u652F\u6301\u5F62\u6001 +NS_LayerReport_sheets=\u9519\u8BEF\u4EE3\u7801\:1108 \u884C\u5F0F\u5F15\u64CE\u4E0D\u652F\u6301Sheet\u95F4\u8FD0\u7B97 +NS_LayerReport_subreport=\u9519\u8BEF\u4EE3\u7801\:1109 \u884C\u5F0F\u5F15\u64CE\u4E0D\u652F\u6301\u5B50\u62A5\u8868 +NS_browser_lang=\u9519\u8BEF\u4EE3\u7801\:1119 \u672A\u627E\u5230\u5F53\u524D\u6D4F\u89C8\u5668\u8BED\u8A00\u5BF9\u5E94\u7684\u56FD\u9645\u5316\u6587\u4EF6,\u5C06\u4EE5\u4E2D\u6587\u4F5C\u4E3A\u9ED8\u8BA4\u8BED\u8A00 +NS_cell_formula=\u9519\u8BEF\u4EE3\u7801\:1203 \u9519\u8BEF\u7684\u516C\u5F0F\u53C2\u6570 +NS_exception_deathCircle=\u9519\u8BEF\u4EE3\u7801\:1303 \u5355\u5143\u683C\u8BA1\u7B97\u6B7B\u5FAA\u73AF +NS_exception_noTemplate=\u9519\u8BEF\u4EE3\u7801\:1304 \u6CA1\u6709\u627E\u5230\u6A21\u677F\u6587\u4EF6 +NS_exception_ps=\u9519\u8BEF\u4EE3\u7801\:1302 \u884C\u9AD8\u5217\u5BBD\u8D85\u51FA\u9875\u9762\u5927\u5C0F\u8BBE\u7F6E +NS_exception_readError=\u9519\u8BEF\u4EE3\u7801\:1305 \u6A21\u677F\u6587\u4EF6\u89E3\u6790\u51FA\u9519 +NS_exception_readExcelError=\u9519\u8BEF\u4EE3\u7801\:1306 \u6587\u4EF6\u89E3\u6790\u51FA\u9519 +NS_exception_td=\u9519\u8BEF\u4EE3\u7801\:1301 \u6570\u636E\u96C6\u914D\u7F6E\u9519\u8BEF +NS_export_2007=\u9519\u8BEF\u4EE3\u7801\:1122 \u5BFC\u51FAExcel2007\u9700\u8981jdk\u7248\u672C1.5\u4EE5\u4E0A +NS_export_excelCellBg=\u9519\u8BEF\u4EE3\u7801\:1112 \u5BFC\u51FAExcel\u5355\u5143\u683C\u80CC\u666F\u53EA\u652F\u6301\u7EAF\u8272 +NS_export_excelFormula=\u9519\u8BEF\u4EE3\u7801\:1110 \u5BFC\u51FAExel\u4E0D\u652F\u6301\u8BE5\u516C\u5F0F +NS_export_excelHtml=\u9519\u8BEF\u4EE3\u7801\:1111 \u5BFC\u51FAExcel\u4E0D\u652F\u6301Html\u4E2D\u90E8\u5206\u6807\u7B7E +NS_export_wordPageSize=\u9519\u8BEF\u4EE3\u7801\:1114 \u5BFC\u51FAWord\u4E0D\u652F\u6301\u591ASheet\u4E0B\u7684\u4E0D\u540C\u9875\u9762\u8BBE\u7F6E +NS_print_flashPaperSetting=\u9519\u8BEF\u4EE3\u7801\:1118 Flash\u6253\u5370\u4E0D\u652F\u6301\u5C06\u9875\u9762\u8BBE\u7F6E\u4F20\u9012\u7ED9\u6253\u5370\u673A +NS_print_noApplet=\u9519\u8BEF\u4EE3\u7801\:1202 \u5F53\u524D\u5DE5\u7A0B\u76EE\u5F55\u4E0B\u672A\u53D1\u73B0Applet\u5305 +NS_print_pdf=\u9519\u8BEF\u4EE3\u7801\:1121 PDF\u6253\u5370\u53EA\u652F\u6301IE\u5185\u6838\u6D4F\u89C8\u5668,\u5176\u4ED6\u6D4F\u89C8\u5668\u5C06\u5BFC\u51FAPDF\u6587\u4EF6 +NS_print_plugin=\u9519\u8BEF\u4EE3\u7801\:1201 \u5F53\u524D\u6D4F\u89C8\u5668\u672A\u5B89\u88C5\u6253\u5370\u6240\u9700\u63D2\u4EF6 +NS_register_ipFull=\u9519\u8BEF\u4EE3\u7801\:1115 \u7CFB\u7EDF\u5E76\u53D1\u6570\u5DF2\u6EE1 +NS_register_lic=\u9519\u8BEF\u4EE3\u7801\:1206 \u5F53\u524D\u914D\u7F6E\u76EE\u5F55\u4E0B\u672A\u53D1\u73B0\u6CE8\u518C\u6587\u4EF6 +NS_register_sense=\u9519\u8BEF\u4EE3\u7801\:1205 \u52A0\u5BC6\u72D7\u8BFB\u53D6\u5931\u8D25 +Name=\u540D\u5B57 +Name_has_Colon=\u540D\u5B57\: +NanchangCity=\u5357\u660C\u5E02 +NanjingCity=\u5357\u4EAC\u5E02 +NanningCity=\u5357\u5B81\u5E02 +Nation=\u56FD\u5BB6 +Need=\u9700\u8981 +Need_Max_Value=\u9700\u8981\u6700\u5927\u503C +Need_Min_Value=\u9700\u8981\u6700\u5C0F\u503C +Need_Purchase_Info=\u60A8\u9700\u8981\u4E00\u4E2A\u6CE8\u518C\u7801\u6216\u8005\u8BE5\u62A5\u8868\u670D\u52A1\u5668\u7684\u4F7F\u7528\u4EBA\u6570\u8D85\u8FC7\u4E86\u6CE8\u518C\u9650\u5236\u7684\u6570\u91CF +Need_Select_SAP_Task=\u5FC5\u987B\u9009\u62E9\u4E00\u4E2A\u8F6C\u6362\u4EFB\u52A1 +Needle=\u6307\u9488 +Needle\ Value=\u6307\u9488\u5BF9\u5E94\u7684\u503C +Neimenggu=\u5185\u8499\u53E4\u81EA\u6CBB\u533A +New=\u65B0\u5EFA +NewAffairToHandle=\u60A8\u6709\u65B0\u7684\u4EE3\u529E\u4E8B\u52A1\u9700\u8981\u5904\u7406 +New_Value=\u65B0\u503C +New_name=\u65B0\u540D\u79F0 +New_offset=\u65B0\u5EFA\u504F\u79FB +Next=\u4E0B\u4E00\u6B65 +NextToAxis=\u8F74\u65C1 +Next_Month=\u4E0B\u4E00\u6708 +Next_Year=\u4E0B\u4E00\u5E74 +Ningxia=\u5B81\u590F\u56DE\u65CF\u81EA\u6CBB\u533A +No=\u5426 +No-Privilege=\u6CA1\u6709\u6743\u9650 +No-Supported-File-Types=\u4E0D\u652F\u6301\u7684\u6587\u4EF6\u7C7B\u578B +No-tableData=\u6CA1\u6709\u8FD4\u56DE\u6570\u636E\u96C6 +NoAffairToHandle=\u6682\u65F6\u6CA1\u6709\u4E8B\u52A1 +NoLimit=\u65E0\u9650\u671F +No_Advanced_Chart=\u5F53\u524D\u7248\u672C \u65E0\u590D\u6742\u7EDF\u8BA1\u56FE \u6B64\u529F\u80FD\uFF0C\u8BF7\u8D2D\u4E70\u9AD8\u7EA7\u7248\u672C\u3002 +No_Editor_Property_Definition=\u8BE5\u7F16\u8F91\u5668\u6CA1\u6709\u5C5E\u6027\u5B9A\u4E49 +No_Processor=\u6CA1\u6709\u5904\u7406\u5668 +No_Wanted_Result=\u6CA1\u6709\u6EE1\u8DB3\u6761\u4EF6\u7684\u7ED3\u679C +No_offset=\u65E0\u504F\u79FB +None=\u65E0 +Normal=\u666E\u901A +NotAllow=\u4E0D\u5408\u6CD5 +NotSupportIMG&ReportData=\u4E0D\u652F\u6301\u56FE\u7247\u5F62\u5F0F\u548C\u5355\u5143\u683C\u6570\u636E\u6E90 +Not_Allow_To_Upload_File=\u662F\u7981\u6B62\u4E0A\u4F20\u7684\u6587\u4EF6\u7C7B\u578B +Not_Appendable=\u4E0D\u53EF\u6269\u5C55 +Not_Exist=\u4E0D\u5B58\u5728 +Not_Exsit=\u4E0D\u5B58\u5728\u4E8E\u62A5\u8868 +Not_Found_Reportlet=\u6CA1\u6709\u627E\u5230\u7F51\u7EDC\u62A5\u8868 +Not_Found_XML_File=\u6CA1\u6709\u627E\u5230XML\u6587\u4EF6 +Not_Imported=\u5C1A\u672A\u5BFC\u5165 +Not_In_List=\u503C\u4E0D\u5728\u4E0B\u62C9\u5217\u8868\u5185 +Not_Layer_Report=\u975E\u5C42\u5F0F\u62A5\u8868 +Not_Logged_In=\u672A\u767B\u5F55 +Not_Set_Verify_Attribute=\u6CA1\u6709\u8BBE\u7F6E\u6821\u9A8C\u5C5E\u6027 +Not_Set_Verify_Class_Path=\u627E\u4E0D\u5230\u6821\u9A8C\u7C7B +Not_Support_This_Method=\u4E0D\u652F\u6301\u8BE5\u65B9\u6CD5 +Not_limited_IP=\u4E0D\u9650\u5E76\u53D1 +Not_use_a_cell_attribute_table_editing=\u60A8\u4E0D\u53EF\u4EE5\u7528\u5355\u5143\u683C\u5C5E\u6027\u8868\u7F16\u8F91 +Note=\u5907\u6CE8 +Note_Normal-Formula=\u666E\u901A\u5206\u7EC4\u53EA\u80FD\u5904\u7406\u7B80\u5355\u7684\u5206\u7EC4\uFF0C\u516C\u5F0F\u5206\u7EC4\u53EF\u4EE5\u5728\u590D\u6742\u60C5\u51B5\u4E0B\u4F7F\u7528\u7A0B\u5E8F\uFF08\u516C\u5F0F\uFF0C\u51FD\u6570\uFF09\u8FDB\u884C\u5206\u7EC4\u3002 +NoticeAndSave=\u901A\u77E5\u4E0E\u5B58\u6863 +November=\u5341\u4E00\u6708 +Null=\u7A7A\u503C +Null_Value_Show=\u7A7A\u503C\u663E\u793A +Number=\u6570\u5B57 +Number-Format=\u6570\u5B57\u683C\u5F0F +Number-Max_Int_Length=\u6700\u5927\u6574\u6570\u957F\u5EA6 +Numbers=\u6570\u76EE +OK=\u786E\u5B9A +October=\u5341\u6708 +Odd=\u5947\u6570 +Offline=\u79BB\u7EBF +Offline-Connect_Failed=\u65E0\u6CD5\u8FDE\u63A5\u5230\u670D\u52A1\u5668\u3002\u8BF7\u786E\u8BA4\u672C\u673A\u7684\u7F51\u7EDC\u8FDE\u63A5\u72B6\u51B5\u548C\u670D\u52A1\u5668\u7684\u5DE5\u4F5C\u72B6\u6001\u540E\u91CD\u8BD5\u3002 +Offline-Contain_Unsupport_Function=\u5305\u542B\u4E0D\u8BC6\u522B\u7684\u516C\u5F0F +Offline-ReadMe=\u6253\u5F00html\u6587\u4EF6\u8FDB\u884C\u79BB\u7EBF\u586B\u62A5\uFF0C\u6570\u636E\u5C06\u5B9E\u65F6\u4FDD\u5B58\u5728\u672C\u5730\u3002\r\n\u8054\u7F51\u540E\u53EF\u4EE5\u5C06\u672C\u5730\u6570\u636E\u63D0\u4EA4\u81F3\u670D\u52A1\u5668\u7AEF\u3002\r\n\u82E5\u8981\u79FB\u52A8\u6587\u4EF6\uFF0C\u8BF7\u62F7\u8D1D\u6574\u4E2A\u6587\u4EF6\u5939\u3002\r\n\u6CE8\uFF1A\u624B\u52A8\u6E05\u9664\u6D4F\u89C8\u5668\u7F13\u5B58(Cookie)\u4F1A\u5BFC\u81F4\u6570\u636E\u4E22\u5931\u3002 +Offline-Verify_ToolTips=\u63D0\u4EA4\u6821\u9A8C\u4E2D\u5305\u542B\u79BB\u7EBF\u72B6\u6001\u65E0\u6CD5\u6267\u884C\u7684\u6821\u9A8C\u89C4\u5219\uFF0C\u7EE7\u7EED\u5C06\u5FFD\u7565\u8FD9\u4E9B\u6821\u9A8C\u89C4\u5219\uFF0C\u4F46\u662F\u5728\u8054\u7F51\u63D0\u4EA4\u65F6\u4F1A\u88AB\u91CD\u65B0\u6267\u884C\uFF0C\u662F\u5426\u7EE7\u7EED\u6821\u9A8C\uFF1F +Old-Style=\u590D\u53E4 +One-Name_Value=\u4E00\u4E2A\u5B57\u6BB5\u7684\u503C +Only=\u53EA +Only\ Use\ Before=\u4EC5\u4F7F\u7528\u524D +Only_selected_cell_can_paste_only=\u53EA\u6709\u9009\u4E2D\u5355\u5143\u683C\u65F6\u624D\u53EF\u4EE5\u7C98\u8D34 +Open=\u6253\u5F00 +OpenAuthConfirm=\u662F\u5426\u542F\u7528\u5206\u7EA7\u6743\u9650\u63A7\u5236 +Open_Synchronized_DataSet=\u5F00\u542F\u540C\u6B65\u6570\u636E\u96C6 +Opened=\u5DF2\u5F00\u542F +Opening_Report=\u6B63\u5728\u6253\u5F00\u62A5\u8868 +Openning=\u6253\u5F00\u4E2D +Operating-Parameters=\u4E0D\u540C\u64CD\u4F5C\u7684\u53C2\u6570\u3002 +Optionns=\u5907\u9009\u9879 +Options=\u9009\u9879 +Options_Sources=\u5907\u9009\u9879\u6765\u6E90 +Or=\u6216 +Or-you=\u6216\u8005\u60A8 +Oracle_All_Tables=\u6240\u6709\u8868 +Orange=\u6A58\u9EC4 +Organization=\u7EC4\u7EC7 +Organization_User=\u7EC4\u7EC7\u7528\u6237 +Original=\u539F\u6709 +OriginalImage=\u539F\u56FE +Original_Marked_Filed=\u539F\u59CB\u6807\u8BB0\u5B57\u6BB5 +Orthogonal\ Projection=\u6B63\u4EA4\u6295\u5F71 +Other=\u5176\u4ED6 +OtherGroup_Name=\u5176\u4ED6\u7EC4\u7684\u540D\u5B57 +Others=\u5176\u5B83 +Out_Border_Line=\u5916\u4FA7\u6846\u7EBF +Out_Thick_Border_Line=\u7C97\u5323\u6846\u7EBF +Output_Excel=Excel\u8F93\u51FA +Output_PDF=PDF\u8F93\u51FA +Output_Word=Word\u8F93\u51FA +Over-Sheet=\u8DE8Sheet\u8BA1\u7B97 +OverLap=\u91CD\u53E0 +Overlapping=\u91CD\u53E0\u578B +Owner=\u4E3B +PDF-Print_Setting=PDF\u6253\u5370\u8BBE\u7F6E +PDF-Print_isPopup=\u662F\u5426\u5F39\u51FA\u8BBE\u7F6E\u6846 +PDF_Print=PDF\u6253\u5370 +PLEASE=\u8BF7 +PM-Privilege_Setting=\u6743\u9650\u8BBE\u7F6E +PM-Use_Custom_Privilege=\u4F7F\u7528\u81EA\u5B9A\u4E49\u6743\u9650 +Page-Attribute=\u5206\u9875\u9875\u9762\u5C5E\u6027 +Page-Setup-Scale-Units=\u9875\u9762\u8BBE\u7F6E\u6807\u5C3A\u5355\u4F4D +PageSetup-End_Column=\u7ED3\u675F\u5217 +PageSetup-End_Row=\u7ED3\u675F\u884C +PageSetup-Finis_Start_Column=\u91CD\u590D\u7ED3\u5C3E\u5217 +PageSetup-Finis_Start_Row=\u91CD\u590D\u7ED3\u5C3E\u884C +PageSetup-First_Page_Number=\u8D77\u59CB\u9875\u7801 +PageSetup-Footer=\u9875\u811A +PageSetup-Header=\u9875\u7709 +PageSetup-Horizontally=\u6C34\u5E73\u5C45\u4E2D +PageSetup-Landscape=\u6A2A\u5411 +PageSetup-Left_to_right=\u5148\u884C\u540E\u5217 +PageSetup-Margin=\u9875\u8FB9\u8DDD +PageSetup-Orientation=\u65B9\u5411 +PageSetup-Overlap_Content=\u91CD\u590D\u5185\u5BB9 +PageSetup-Page=\u9875\u9762 +PageSetup-Page_Order=\u6253\u5370\u987A\u5E8F +PageSetup-Page_Setup=\u9875\u9762\u8BBE\u7F6E +PageSetup-Paper_Size=\u7EB8\u5F20\u5927\u5C0F +PageSetup-Placement_Center_on_Page=\u5C45\u4E2D\u65B9\u5F0F +PageSetup-Portrait=\u7EB5\u5411 +PageSetup-Predefined=\u9884\u5B9A\u4E49 +PageSetup-Repeated_Title=\u91CD\u590D\u7684\u6807\u9898 +PageSetup-Resolution(PPI-Pixel_Per_Inch)=\u5206\u8FA8\u7387(PPI-\u6BCF\u82F1\u5BF8\u50CF\u7D20\u6570) +PageSetup-Saving_current_settings_to_server=\u4FDD\u5B58\u5F53\u524D\u8BBE\u7F6E\u5230\u670D\u52A1\u5668 +PageSetup-Shrink_to_fit_content=\u6839\u636E\u5355\u5143\u683C\u5185\u5BB9\u81EA\u52A8\u8C03\u6574 +PageSetup-Start_Column=\u8D77\u59CB\u5217 +PageSetup-Start_Row=\u8D77\u59CB\u884C +PageSetup-Title_Start_Column=\u91CD\u590D\u6807\u9898\u5217 +PageSetup-Title_Start_Row=\u91CD\u590D\u6807\u9898\u884C +PageSetup-Top_to_bottom=\u5148\u5217\u540E\u884C +PageSetup-Vertically=\u5782\u76F4\u5C45\u4E2D +PageSetup-inches=\u82F1\u5BF8 +PageSetup-mm=\u6BEB\u7C73 +PageURL=\u7F51\u9875URL +Page_Layout=\u9875\u9762\u5E03\u5C40 +Page_Number=\u9875 +Page_Setup=\u9875\u9762\u8BBE\u7F6E +Page_ToolBar_Event=\u9875\u9762\u5DE5\u5177\u680F\u548C\u4E8B\u4EF6 +Page_Total=\u5171 +Pagination=\u5206\u9875 +Panel=\u9762\u677F +PaperSize_ML=\u52A0\u5927 +PaperSize_Rotate=\u65CB\u8F6C +PaperSize_XL=\u7279\u5927 +Para-Body=\u53C2\u6570\u754C\u9762 +Para-Help_Info=\u60A8\u53EF\u4EE5\u70B9\u51FB\u4E0B\u65B9\u5DE5\u5177\u680F\u6700\u5DE6\u4FA7\u6309\u94AE\u6216\u53F3\u952E\u5355\u5143\u683C\u6765\u6DFB\u52A0\u53C2\u6570\u63A7\u4EF6\u3001\u67E5\u8BE2\u6309\u94AE\u7B49\u5143\u7D20 +Para-Shown_On_Default_Parameter_Page=\u663E\u793A\u4E8E\u9ED8\u8BA4\u53C2\u6570\u9875\u9762 +Parameter=\u53C2\u6570 +Parameter-Add_Parameter=\u6DFB\u52A0\u53C2\u6570 +Parameter-Boolean=\u5E03\u5C14\u578B +Parameter-Current=\u5F53\u524D\u6570\u503C +Parameter-Dealwith_Parameter_Result=\u53C2\u6570\u9884\u5904\u7406 +Parameter-Design=\u53C2\u6570\u8BBE\u8BA1 +Parameter-Design_DES=\u6CA1\u6709\u53C2\u6570\u754C\u9762,\u662F\u5426\u9700\u8981\u4F7F\u7528\u9ED8\u8BA4\u7684 +Parameter-Double=\u53CC\u7CBE\u5EA6\u578B +Parameter-Float=\u5355\u7CBE\u5EA6\u578B +Parameter-Formula=\u516C\u5F0F +Parameter-Integer=\u6574\u578B +Parameter-Refresh_Parameter_UI=\u5237\u65B0\u53C2\u6570\u754C\u9762 +Parameter-String=\u5B57\u7B26\u4E32 +ParameterD-Are_you_sure_to_delete_the_selected_parameter=\u4F60\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u7684\u53C2\u6570\u5417? +ParameterD-Background=\u53C2\u6570\u7A97\u4F53\u80CC\u666F +ParameterD-Custom_Parameter=\u81EA\u5B9A\u4E49\u53C2\u6570 +ParameterD-DClick_Edit=\u53CC\u51FB\u4FEE\u6539 +ParameterD-DClick_New_Parameter=\u53CC\u51FB\u65B0\u5EFA\u53C2\u6570 +ParameterD-Delay_Playing=\u70B9\u51FB\u67E5\u8BE2\u524D\u4E0D\u663E\u793A\u62A5\u8868\u5185\u5BB9 +ParameterD-Des1=\u62D6\u62FD\u6216\u8005\u53CC\u51FB\u53C2\u6570\u5217\u8868,\u5F80\u683C\u5B50\u91CC\u9762\u6DFB\u52A0\u53C2\u6570 +ParameterD-Interface=\u754C\u9762 +ParameterD-New_parameter_name=\u65B0\u53C2\u6570\u7684\u540D\u5B57 +ParameterD-Parameter_Interface=\u53C2\u6570\u754C\u9762 +ParameterD-Parameter_name_cannot_be_null=\u53C2\u6570\u7684\u540D\u5B57\u4E0D\u53EF\u4EE5\u4E3A\u7A7A +ParameterD-Parameters_Processor=\u53C2\u6570\u5904\u7406\u5668 +ParameterD-Rename_parameter=\u91CD\u547D\u540D\u53C2\u6570 +ParameterD-Report_Parameter=\u62A5\u8868\u53C2\u6570 +ParameterD-Should_select_a_reportlet_first=\u9700\u8981\u5148\u9009\u62E9\u4E00\u4E2AReportlet +ParameterD-Show_Parameter_Window=\u663E\u793A\u53C2\u6570\u7A97\u4F53 +ParameterD-Show_Window=\u663E\u793A\u7A97\u53E3 +ParameterD-The_First_List=\u7B2C\u4E00\u4E2A\u5217\u8868 +ParameterD-The_Other=\u5176\u5B83 +ParameterD-The_Second_List=\u7B2C\u4E8C\u4E2A\u5217\u8868 +Parameter_Name=\u53C2\u6570\u540D +Parameter_Name_Can_Not_Be_Empty=\u53C2\u6570\u540D\u4E0D\u80FD\u4E3A\u7A7A +Parameter_Query=\u53C2\u6570\u67E5\u8BE2 +Parameter_Refresh_Waring=\u5237\u65B0\u53C2\u6570\u5C06\u4F1A\u628A\u5F53\u524D\u5E03\u5C40\u6062\u590D\u5230\u9ED8\u8BA4\u5E03\u5C40\uFF0C\u4F46\u4E0D\u4F1A\u6539\u53D8\u683C\u5185\u5BB9\uFF0C\u662F\u5426\u7EE7\u7EED +Parameter_Setting=\u53C2\u6570\u8BBE\u7F6E +Parameters=\u53C2\u6570 +Parameters_name=\u53C2\u6570\u540D\u79F0 +Parameters_use_default_formula=\u4F7F\u7528\u9ED8\u8BA4\u7684\u53C2\u6570\u516C\u5F0F\u503C +Parent=\u7236 +Parent-Directory=\u8BBE\u7F6E\u6D4F\u89C8\u5668\u7236\u76EE\u5F55 +ParentCell_Setting=\u7236\u683C\u8BBE\u7F6E +Parent_Marked_Field=\u7236\u6807\u8BB0\u5B57\u6BB5 +Participants=\u53C2\u4E0E\u8005 +Password=\u5BC6\u7801 +Password_Changed_Successfully=\u5BC6\u7801\u4FEE\u6539\u6210\u529F +Password_Has_Been_Reset_To=\u8BE5\u7528\u6237\u7684\u5BC6\u7801\u5DF2\u7ECF\u91CD\u7F6E\u4E3A +Path=\u8DEF\u5F84 +Pause=\u6682\u505C +PendingVitureDirectiry=\u6302\u8F7D\u865A\u62DF\u76EE\u5F55 +Percent_Stacked_Bar_Chart=\u767E\u5206\u6BD4\u5806\u79EF\u67F1\u5F62\u56FE +Percent_Stacked_Column_Chart=\u767E\u5206\u6BD4\u5806\u79EF\u6761\u5F62\u56FE +Period=\u53E5\u53F7 +Perspective=\u89C6\u7A97 +Perspective\ Deep=\u900F\u89C6\u6DF1\u5EA6 +Perspective\ Projection=\u900F\u89C6\u6295\u5F71 +Phone=\u7535\u8BDD +Pick_One_Column_And_Present_To_Display_Value=\u9009\u4E00\u5217\u4F5C\u4E3A\u5B9E\u9645\u503C\u53CA\u5F62\u6001\u8F6C\u6362\u4E3A\u663E\u793A\u503C +Pick_Two_Columns_As_Actual_And_Display_Value=\u9009\u4E24\u5217\u4F5C\u4E3A\u5B9E\u9645\u503C\u548C\u663E\u793A\u503C +PieStyle=\u997C\u72B6 +Pink=\u7C89\u7EA2 +Pitch_Percentage=\u95F4\u8DDD\u767E\u5206\u6BD4 +Plan=\u8BA1\u5212 +Plane3D=\u5E73\u97623D +Platform=\u5E73\u53F0 +Platform-Create_Table=\u521B\u5EFA\u8868 +Platform-DB_Connection_Create_Failure=\u6570\u636E\u5E93\u8FDE\u63A5\u521B\u5EFA\u5931\u8D25 +Platform-DB_Connection_Create_Successful=\u6570\u636E\u5E93\u8FDE\u63A5\u521B\u5EFA\u6210\u529F +Platform-Table_Create_Failure=\u6570\u636E\u5E93\u8868\u521B\u5EFA\u5931\u8D25 +Platform_Module_DataSetting=B/S\u8BBE\u8BA1\u5668\u914D\u7F6E +Platform_Module_Log=\u65E5\u5FD7 +Platform_Module_PostManager=\u516C\u544A\u7BA1\u7406 +Platform_Module_WidgetletManager=\u4E3B\u9875\u63A7\u4EF6\u5E93\u7BA1\u7406 +Platform_Roles_Has_Changed=\u5E73\u53F0\u89D2\u8272\u5DF2\u4FEE\u6539\uFF0C\u662F\u5426\u91CD\u65B0\u8F7D\u5165\uFF1F +Please-Select-Cell-E=\u8BF7\u9009\u4E2D\u8981\u5220\u9664\u7684\u884C +Please-Select-Float-E=\u8BF7\u9009\u4E2D\u8981\u5220\u9664\u7684\u60AC\u6D6E\u5143\u7D20 +Please-Wait=\u8BF7\u7A0D\u5019 +Please_Drag=\u8BF7\u62D6\u5165\u884C\u5217\u5B57\u6BB5\u3001\u6C47\u603B\u5B57\u6BB5 +Please_Drag_ParaPane= +Please_Enter=\u8BF7\u8F93\u5165 +Please_Input_A_Effect_One=\u8BF7\u8F93\u5165\u4E00\u4E2A\u6709\u6548\u7684\u53C2\u6570\u540D +Please_Input_A_Widget_Name=\u8BF7\u8F93\u5165\u63A7\u4EF6\u540D +Please_Input_The_Key=\u8BF7\u8F93\u5165\u5BF9\u5E94\u5730\u56FE\u4F7F\u7528\u7684key +Please_Install=\u8BF7\u5B89\u88C5 +Please_Rename=\u8BF7\u91CD\u547D\u540D +Please_Select=\u8BF7\u9009\u62E9 +Please_Set_Repeat_First=\u8BF7\u5148\u8BBE\u7F6E\u91CD\u590D\u6807\u9898\u884C\u548C\u5217 +Please_enter_the_export_file_name=\u8BF7\u8F93\u5165\u5BFC\u51FA\u6587\u4EF6\u540D +Please_input_with_right_format=\u8BF7\u7528\u6B63\u786E\u7684\u683C\u5F0F\u8F93\u5165 +Pointer-A-Tick-Order=\u6307\u9488\u503C\u53CA\u523B\u5EA6\u503C\u6570\u91CF\u7EA7 +Poly=\u805A\u5408\u62A5\u8868 +Poly-Block_Attr=\u9648\u745C +Poly-Report_Block=\u62A5\u8868\u7C7B\u578B\u805A\u5408\u5757 +Poly-Report_Component=\u805A\u5408\u62A5\u8868\u7EC4\u4EF6 +PolyAccessWarning-NotSupport=\u60A8\u6240\u8BBF\u95EE\u7684\u6A21\u677F\u542B\u6709\u805A\u5408\u62A5\u8868\uFF0C\u5B83\u5E76\u4E0D\u652F\u6301 +Poly_Name=\u805A\u5408\u5757\u540D +Polyblock-Attribute=\u805A\u5408\u5757\u5C5E\u6027 +Polyblock-Fixed_Height=\u56FA\u5B9A\u805A\u5408\u5757\u9AD8\u5EA6 +Polyblock-Fixed_Width=\u56FA\u5B9A\u805A\u5408\u5757\u5BBD\u5EA6 +Polybolck=\u805A\u5408\u5757 +PopChart=\u60AC\u6D6E\u7A97\u56FE\u8868 +Popup=\u5F39\u51FA +Port=\u7AEF\u53E3 +Position=\u4F4D\u7F6E +Position_Name=\u804C\u4F4D\u540D\u79F0 +Post=\u804C\u52A1 +PostAttachment=\u4E0A\u4F20\u9644\u4EF6 +PostCode=\u90AE\u653F\u7F16\u7801 +PreStyle=\u9884\u5B9A\u4E49\u914D\u8272 +Preference-Choose_Configuration_File=\u9009\u62E9\u914D\u7F6E\u6587\u4EF6 +Preference-Column_Header_Visible=\u5217\u6807\u9898\u53EF\u89C1 +Preference-Custom=\u81EA\u5B9A\u4E49 +Preference-Export_Configuration_File=\u5BFC\u51FA\u914D\u7F6E\u6587\u4EF6 +Preference-Function=\u529F\u80FD\u8BBE\u7F6E +Preference-Grid_Line_Color=\u7F51\u683C\u7EBF\u989C\u8272 +Preference-Horizontal_Scroll_Bar_Visible=\u6C34\u5E73\u6EDA\u52A8\u6761\u53EF\u89C1 +Preference-Is_Drag_Permited=\u652F\u6301\u62D6\u62FD +Preference-JDK_Home=JDK\u8DEF\u5F84 +Preference-Locale=\u56FD\u9645\u5316 +Preference-Menu_Configuration=\u83DC\u5355\u914D\u7F6E +Preference-Pagination_Line_Color=\u5206\u9875\u7EBF\u989C\u8272 +Preference-Predefined=\u9884\u5B9A\u4E49 +Preference-Row_Header_Visible=\u884C\u6807\u9898\u53EF\u89C1 +Preference-Setting_Colors=\u989C\u8272\u8BBE\u7F6E +Preference-Setting_Grid=\u7F51\u683C\u8BBE\u7F6E +Preference-Setting_Visible=\u53EF\u89C1\u8BBE\u7F6E +Preference-Support_Cell_Editor_Definition=\u652F\u6301\u5355\u5143\u683C\u7F16\u8F91\u5668 +Preference-Support_Default_Parent_Calculate=\u9ED8\u8BA4\u7236\u683C\u8BA1\u7B97 +Preference-Support_Undo=\u652F\u6301\u64A4\u9500 +Preference-Undo_Cacheable=\u64A4\u9500\u4E4B\u78C1\u76D8\u7F13\u5B58 +Preference-Vertical_Scroll_Bar_Visible=\u7AD6\u76F4\u6EDA\u52A8\u6761\u53EF\u89C1 +PrepareExpression=\u9884\u7F6E\u8868\u8FBE\u5F0F +Prepare_Export=\u5F00\u59CB\u5BFC\u51FA\uFF0C\u8BF7\u7A0D\u5019 +Present=\u5F62\u6001 +Present-Formula_Present=\u516C\u5F0F\u5F62\u6001 +Present-No_Present=\u53D6\u6D88\u5F62\u6001\u8BBE\u7F6E +Prev_Month=\u4E0A\u4E00\u6708 +Prev_Year=\u4E0A\u4E00\u5E74 +FR-Designer_Preview=\u9884\u89C8 +Preview-Assign_Margin=\u8C03\u6574\u8FB9\u8DDD +Preview_ToolTips=\u9884\u89C8\u63D0\u793A +Preview_Used_Time=\u9884\u89C8\u5DF2\u7528\u65F6\u95F4 +Previous=\u4E0A\u4E00\u6B65 +Previous_Node_Staff=\u4E0A\u8282\u70B9\u4EBA\u5458 +Print=\u6253\u5370 +Print-Print_To_Fit_Paper_Size=\u6839\u636E\u7EB8\u5F20\u5927\u5C0F\u7F29\u653E\u6253\u5370 +PrintFile=\u6253\u5370\u751F\u6210\u7684\u6587\u4EF6 +PrintP-First=\u9996\u9875(F) +PrintP-Last=\u672B\u9875(L) +PrintP-Next=\u4E0B\u4E00\u9875(N) +PrintP-PageSetup=\u9875\u9762\u8BBE\u7F6E(S) +PrintP-Previous=\u4E0A\u4E00\u9875(P) +PrintP-Print=\u6253\u5370(T) +PrintP-Print_Preview=\u6253\u5370\u9884\u89C8 +Print_As_Image=\u4EE5\u56FE\u7247\u65B9\u5F0F\u6253\u5370( \u9488\u5F0F\u6253\u5370\u673A\u63A8\u8350\u4F7F\u7528 ) +Print_Setting=\u6253\u5370\u8BBE\u7F6E +Print_copy=\u6253\u5370\u4EFD\u6570 +Printer=\u6253\u5370\u673A +Printer-Alias=\u522B\u540D +Printer-All_Printer_Groups=\u6240\u6709\u6253\u5370\u673A\u7EC4 +Printer-All_Printers=\u6240\u6709\u6253\u5370\u673A +Printer-Are_you_sure_to_delete_the_selected_printer_group=\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u6253\u5370\u673A\u7EC4 +Printer-Are_you_sure_to_delete_this_alias=\u786E\u5B9A\u5220\u9664\u8BE5\u522B\u540D +Printer-Define_Printer_Group=\u5B9A\u4E49\u7684\u6253\u5370\u673A\u7EC4 +Printer-Defined_Printer_Groups=\u5DF2\u5B9A\u4E49\u7684\u6253\u5370\u673A\u7EC4 +Printer-Edit_All_Printer_Groups=\u7F16\u8F91\u6240\u6709\u6253\u5370\u673A\u7EC4 +Printer-New_Printer_Group=\u65B0\u5EFA\u6253\u5370\u673A\u7EC4 +Printer-Printer_Group=\u6253\u5370\u673A\u7EC4 +Printer-Printer_Manager=\u6253\u5370\u673A\u7BA1\u7406 +Printer-Remove_Alias=\u79FB\u9664\u522B\u540D +Printer-Remove_Printer_Group=\u5220\u9664\u6253\u5370\u673A\u7EC4 +Printer-Rename_Printer=\u91CD\u547D\u540D\u6253\u5370\u673A +Printer-Rename_Printer_Group=\u91CD\u547D\u540D\u6253\u5370\u673A\u7EC4 +Printer-Save_Current_Work=\u662F\u5426\u4FDD\u5B58\u73B0\u6709\u5DE5\u4F5C +Printer-Selected_Printer_Groups=\u5DF2\u9009\u62E9\u7684\u6253\u5370\u673A\u7EC4 +Printer-Selected_Printers=\u5DF2\u9009\u62E9\u7684\u6253\u5370\u673A +Printer-Set_Alias=\u8BBE\u7F6E\u522B\u540D +Printing=\u6B63\u5728\u6253\u5370 +Priority=\u4F18\u5148\u7EA7 +Privilege=\u6743\u9650 +Privilege-Authority_Must_Be=\u6743\u9650\u5FC5\u987B\u662F +Privilege-Can_Not_Find_The_User_With_The_Name=\u627E\u4E0D\u5230\u7528\u6237\u540D +Privilege-Cannot_Load_User_Just_With_Username_When_Use_LDAP=LDAP\u7528\u6237\u65E0\u6CD5\u52A0\u8F7D\u7528\u6237\u540D +Privilege-Invalid_User_Or_Password=\u7528\u6237\u540D\u6216\u5BC6\u7801\u9519\u8BEF +Privilege-Keep_Login_State=\u4FDD\u6301\u767B\u5F55\u72B6\u6001 +Privilege-Name_Not_Match_Password=\u7528\u6237\u540D\u548C\u5BC6\u7801\u4E0D\u5339\u914D +Privilege-No_Authentication=\u6CA1\u6709\u8BA4\u8BC1 +Privilege-No_Privilege=\u6CA1\u6709\u6743\u9650\u67E5\u770B\u6B64\u9875\u9762 +Privilege-No_Such_Authority=\u6CA1\u6709\u6743\u9650\u8BBE\u8BA1\u6A21\u677F +Privilege-Password_Can_Not_Be_Null=\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A +Privilege-Post_List=\u804C\u4F4D\u5217\u8868 +Privilege-Select_Organization=\u9009\u62E9\u7EC4\u7EC7 +Privilege-Select_Organizations=\u9009\u62E9\u7EC4\u7EC7 +Privilege-Select_Role=\u9009\u62E9\u89D2\u8272 +Privilege-Select_Roles=\u9009\u62E9\u89D2\u8272 +Privilege-Select_User=\u9009\u62E9\u7528\u6237 +Privilege-Selected_None_Of_Any_Items=\u6CA1\u6709\u9009\u4E2D\u4EFB\u4F55\u4E00\u9879 +Privilege-The_Authentication_Can_Not_Be_Null=\u8BA4\u8BC1\u4E0D\u80FD\u4E3A\u7A7A +Privilege-The_Authentication_Is_Not_Supported=\u65E0\u6CD5\u652F\u6301\u8BA4\u8BC1 +Privilege-The_Password_Of_The_User_Is_Invalid=\u9519\u8BEF\u7684\u5BC6\u7801 +Privilege-The_Request_Is_Not_Instanceof_HttpServletRequest=\u8BE5\u8BF7\u6C42\u4E0D\u662FHTTP\u8BF7\u6C42 +Privilege-The_Response_Is_Not_Instanceof_HttpServletResponse=\u8BE5\u54CD\u5E94\u4E0D\u662FHTTP\u54CD\u5E94 +Privilege-The_Role_Config_Can_Not_Be_Null=\u89D2\u8272\u914D\u7F6E\u4E0D\u80FD\u4E3A\u7A7A +Privilege-The_Url_Can_Not_Be_Null=\u8BA4\u8BC1\u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A +Privilege-The_Url_Must_Be_Specified=\u5FC5\u987B\u6307\u5B9AURL +Privilege-The_User_Account_Is_Expired=\u6B64\u7528\u6237\u540D\u5DF2\u7ECF\u8FC7\u671F +Privilege-The_User_Account_Is_Locked=\u6B64\u7528\u6237\u540D\u5DF2\u88AB\u9501\u5B9A +Privilege-The_User_Config_Can_Not_Be_Null=\u7528\u6237\u914D\u7F6E\u4E0D\u80FD\u4E3A\u7A7A +Privilege-The_User_Service_Can_Not_Be_Null=\u7528\u6237\u670D\u52A1\u4E0D\u80FD\u4E3A\u7A7A +Privilege-The_User_Service_Must_Be_LDAPUserService=\u5FC5\u987B\u662FLDAP\u7528\u6237 +Privilege-Your_Authentication_Can_Not_Access_The_Reportlet=\u4F60\u7684\u8BA4\u8BC1\u65E0\u6743\u8BBF\u95EE\u8BE5\u76EE\u5F55 +Privilege_Allocate=\u6743\u9650\u5206\u914D +Privilege_Form=\u8868\u5355 +Privilege_Login_Name=\u767B\u5F55\u540D +Privilege_Use_Privilege=\u542F\u7528\u5185\u7F6E\u6743\u9650 +Procedure-Warning=\u5F53\u524D\u5B58\u50A8\u8FC7\u7A0B\u4E0D\u5305\u542B\u53C2\u6570\u6216\u60A8\u5F53\u524D\u767B\u5F55\u7528\u6237\u540D\u4E0ESchema\u4E0D\u5339\u914D\uFF0C
\u7CFB\u7EDF\u65E0\u6CD5\u4E3A\u60A8\u81EA\u52A8\u52A0\u8F7D\u53C2\u6570\uFF0C\u8BF7\u624B\u52A8\u6DFB\u52A0 +ProcedureSameWarning=\u5B58\u50A8\u8FC7\u7A0B\u4E2D\u6709\u6570\u636E\u96C6\u540D\u5B57\u548C\u5176\u4ED6\u6570\u636E\u96C6\u540D\u5B57\u4E00\u6837\uFF0C\u8BF7\u4FEE\u6539\uFF01 +ProcessManager=\u6D41\u7A0B\u7BA1\u7406 +ProcessName=\u6D41\u7A0B\u540D\u79F0 +ProcessStartedBySelf=\u6211\u5F00\u59CB\u7684\u6D41\u7A0B +Processor_Parameter=\u5904\u7406\u5668\u53C2\u6570 +Product_Demo=\u4EA7\u54C1\u6F14\u793A +Product_improve=\u4EA7\u54C1\u6539\u826F +Projection=\u6295\u5F71 +Property=\u5C5E\u6027 +Prospecting_File=\u52D8\u9519\u6587\u4EF6 +Prospecting_File_Error=\u52D8\u9519\u6587\u4EF6\u5BFC\u51FA\u65F6\u53D1\u751F\u9519\u8BEF +Protected=\u4FDD\u62A4 +Provide=\u63D0\u4F9B +Purple=\u7C89\u7D2B +Pwd_Format=6-16\u4E2A\u5B57\u7B26\uFF0C\u652F\u6301\u5B57\u6BCD\u3001\u6570\u5B57 +QRCode_Config=\u4E8C\u7EF4\u7801\u914D\u7F6E +Qinghai=\u9752\u6D77\u7701 +Quarter=\u5B63\u5EA6 +Query=\u67E5\u8BE2 +QueryResult=\u67E5\u8BE2\u7ED3\u679C +Query_Type=\u67E5\u8BE2\u65B9\u5F0F\: +RCodeDrawPix=\u50CF\u7D20 +RCodeErrorCorrect=\u7EA0\u9519 +RCodeVersion=\u7248\u672C +REDIRECT_FROM=\u6743\u9650\u8DF3\u8F6CFROM\u7684URL +REPORTLET=\u8BBF\u95EE\u6A21\u677F\u7684\u8DEF\u5F84\u7684\u53C2\u6570\u3002 +REPORTLETS=\u8BBF\u95EE\u591A\u5F20\u6A21\u677F\u7684\u8DEF\u5F84\u7684\u53C2\u6570 +REPORT_XML=\u62A5\u8868\u5185\u5BB9\u4F20\u8F93 +RESTART=\u91CD\u542F +RESULTLET=\u8BBF\u95EE\u62A5\u8868\u7ED3\u679C\u8DEF\u5F84\u7684\u53C2\u6570 +RP_Add_MultiNode=\u6DFB\u52A0\u8054\u5408\u586B\u62A5\u8282\u70B9 +RP_Add_Note=\u6DFB\u52A0\u5907\u6CE8 +RP_Add_Process=\u6DFB\u52A0\u6D41\u7A0B +RP_Add_SimpleNode=\u6DFB\u52A0\u666E\u901A\u8282\u70B9 +RP_Add_Task=\u6DFB\u52A0\u4EFB\u52A1 +RP_After_Use=\u540E\uFF0C\u4F7F\u7528 +RP_Alert_Mode=\u63D0\u9192\u65B9\u5F0F +RP_Alert_Setting=\u9884\u8B66\u8BBE\u7F6E +RP_AllProcesses=\u6240\u6709\u6D41\u7A0B +RP_All_Tasks=\u6240\u6709\u4EFB\u52A1 +RP_Authority_Edit=\u6743\u9650\u7F16\u8F91 +RP_Content=\u6B63\u6587 +RP_Cpt_Name=\u6A21\u677F\u540D\u79F0 +RP_Cpt_Operation=\u6A21\u677F\u64CD\u4F5C +RP_Creator=\u521B\u5EFA\u4EBA +RP_Deal_With_It_As_Soon_As_Possible=\u8BF7\u5C3D\u5FEB\u5904\u7406 +RP_Deliver=\u5206\u53D1 +RP_Edit_Process=\u7F16\u8F91\u6D41\u7A0B +RP_Edit_Task=\u7F16\u8F91\u4EFB\u52A1 +RP_Email=\u90AE\u4EF6\u63D0\u9192 +RP_End=\u7ED3\u675F +RP_Everyday=\u6BCF\u65E5 +RP_Execute_Day=\u6267\u884C\u65E5 +RP_Execute_Month=\u6267\u884C\u6708 +RP_Execute_Time=\u6267\u884C\u65F6\u95F4 +RP_Exist_Null_Node=\u8BE5\u8282\u70B9\u4E2D\u5B58\u5728\u672A\u586B\u5199\u9879 +RP_Finished_Task=\u5DF2\u5904\u7406\u4EFB\u52A1 +RP_Have_Come_To_You_For=\u5DF2\u7ECF\u5230\u4F60\u8FD9\u91CC +RP_Invalid_Task_Or_Process=\u4EFB\u52A1\u540D\u79F0\u6216\u6D41\u7A0B\u540D\u79F0\u4E0D\u7B26\u5408\u89C4\u8303 +RP_NO_Privilege=\u6CA1\u6709\u64CD\u4F5C\u6743\u9650 +RP_Node_Description=\u8282\u70B9\u63CF\u8FF0 +RP_Node_Name=\u8282\u70B9\u540D\u79F0 +RP_Operator=\u64CD\u4F5C\u4EBA\u5458 +RP_Overtime=\u8D85\u65F6 +RP_Page_Write=\u9875\u9762\u586B\u62A5 +RP_Pass=\u901A\u8FC7 +RP_Pass_After_All_Operations=\u8BE5\u8282\u70B9\u6240\u6709\u64CD\u4F5C\u4EBA\u5458\u5B8C\u6210\u540E\u6D41\u8F6C +RP_Process_Created_By_Me=\u6211\u521B\u5EFA\u7684\u6D41\u7A0B +RP_Process_Name_Not_Null=\u6D41\u7A0B\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A +RP_Process_Select=\u6D41\u7A0B\u9009\u62E9 +RP_Process_Type=\u6D41\u7A0B\u7C7B\u578B +RP_Process_View=\u4EFB\u52A1\u6D41\u7A0B\u67E5\u770B +RP_Reach_Node=\u5230\u8FBE\u8BE5\u8282\u70B9 +RP_Remove_Process=\u5220\u9664\u6D41\u7A0B +RP_Remove_Task=\u5220\u9664\u4EFB\u52A1 +RP_Report=\u4E0A\u62A5 +RP_Report_Deadline=\u586B\u62A5\u65F6\u9650 +RP_Review=\u5BA1\u6838 +RP_Rollback=\u56DE\u9000 +RP_Rollback_To=\u56DE\u9000\u5230 +RP_Send_Offline_Report=\u53D1\u9001\u79BB\u7EBF\u62A5\u8868 +RP_Send_Time=\u53D1\u9001\u65F6\u95F4 +RP_Sender=\u53D1\u9001\u4EBA +RP_Son_Task=\u5B50\u4EFB\u52A1 +RP_Son_Task_Not_Complete=\u5B50\u4EFB\u52A1\u5C1A\u672A\u5B8C\u6210 +RP_Sponsor=\u53D1\u8D77\u4EBA +RP_Support_Offline=\u652F\u6301\u79BB\u7EBF\u586B\u62A5 +RP_Sure_to_delete_process=\u5220\u9664\u8BE5\u6D41\u7A0B\uFF0C\u5C06\u540C\u65F6\u5220\u9664\u7ED1\u5B9A\u8BE5\u6D41\u7A0B\u7684\u4EFB\u52A1\u3002\u662F\u5426\u5220\u9664\u8BE5\u6D41\u7A0B +RP_System_Message=\u7CFB\u7EDF\u6D88\u606F +RP_Task_Created_By_Me=\u6211\u521B\u5EFA\u7684\u4EFB\u52A1 +RP_Task_List=\u4EFB\u52A1\u5217\u8868 +RP_Task_Operation=\u4EFB\u52A1\u64CD\u4F5C +RP_Task_Operations=\u4EFB\u52A1\u64CD\u4F5C +RP_Task_Status=\u4EFB\u52A1\u72B6\u6001 +RP_Task_Type=\u4EFB\u52A1\u7C7B\u578B +RP_Timed_Write=\u9650\u65F6\u586B\u62A5 +RP_Timing_Issue=\u5B9A\u65F6\u4E0B\u53D1 +RP_To_Check=\u5F85\u5BA1\u6838 +RP_To_Report=\u5F85\u4E0A\u62A5 +RP_Unfinished_Task_Name=\u672A\u5904\u7406\u4EFB\u52A1 +RP_Unlimited=\u4E0D\u9650 +RP_Urgent=\u7D27\u6025 +RP_View_Task=\u67E5\u770B\u4EFB\u52A1 +RWA-Add_Field=\u6DFB\u52A0\u5B57\u6BB5 +RWA-Batch_Modify_Cells=\u6279\u91CF\u4FEE\u6539\u5355\u5143\u683C +RWA-BuildIn_SQL=\u5185\u7F6ESQL +RWA-Class=\u7A0B\u5E8F +RWA-Click_Cell_To_Edit_Value=\u5355\u51FB\u6A21\u677F\u5355\u5143\u683C\u4FEE\u6539\u503C +RWA-Column_Offset=\u5217\u504F\u79FB +RWA-Des1=\u91CD\u65B0\u5237\u65B0\u6240\u6709\u5217\u540D\u4F1A\u6E05\u9664\u5F53\u524D\u8BB0\u5F55 +RWA-Free_SQL=\u81EA\u7531SQL +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 +RWA-Key=\u4E3B\u952E +RWA-NotChange_Unmodified=\u672A\u4FEE\u6539\u4E0D\u66F4\u65B0 +RWA-Remove_Field=\u79FB\u9664\u5B57\u6BB5 +RWA-Row_Offset=\u884C\u504F\u79FB +RWA-Skip_Unmodified=\u503C\u4E0D\u6539\u53D8\u4E0D\u66F4\u65B0 +RWA-Smart_Add_Cell_Group=\u667A\u80FD\u6DFB\u52A0\u5355\u5143\u683C\u7EC4 +RWA-Smart_Add_Cells=\u667A\u80FD\u6DFB\u52A0\u5355\u5143\u683C +RWA-Smart_Add_Fields=\u667A\u80FD\u6DFB\u52A0\u5B57\u6BB5 +RWA-Submit=\u63D0\u4EA4 +Radio=\u5355\u9009\u6846 +RadioField=\u5355\u9009\u6846 +Ratio=\u6BD4\u7387 +Re-Group-edition=\u96C6\u56E2\u7248 +Re-Multi-privilege=\u591A\u7EA7\u6743\u9650\u914D\u7F6E +Re-all-server-mac=\u670D\u52A1\u5668\u6240\u6709mac\u5730\u5740 +Re-appname-in-lic=lic\u4E2D\u7684AppName +Re-appname-match=AppName\u5339\u914D +Re-binding-mac=lic\u4E2D\u5DF2\u7ED1\u5B9A\u7684mac\u5730\u5740 +Re-connect-to-remote-server=\u670D\u52A1\u5668\u5DF2\u5173\u95ED\uFF0C\u662F\u5426\u91CD\u65B0\u8FDE\u63A5\u670D\u52A1\u5668? +Re-first-mac=\u670D\u52A1\u5668\u9996\u4E2Amac\u5730\u5740 +Re-lic-out-date=lic\u8FC7\u671F +Re-lock-serial=\u52A0\u5BC6\u72D7\u5E8F\u5217\u53F7 +Re-mac-match=Mac\u5730\u5740\u5339\u914D +Re-not-start-in-jar=\u60A8\u4F7F\u7528\u7684\u7248\u672C\u4E0D\u662F\u901A\u8FC7JAR\u5305\u542F\u52A8. +Re-sametime-ip=\u53EF\u540C\u65F6\u8BBF\u95EE\u6A21\u677FIP\u7684\u4E2A\u6570 +Re-system-version=\u7CFB\u7EDF\u7248\u672C\u53F7 +Re-version-in-lic=lic\u4E2D\u7248\u672C\u53F7 +Re-version-match=\u7248\u672C\u53F7\u5339\u914D +Read=\u8BFB\u53D6 +Read_Map_Use_Time=\u8BFB\u53D6\u5730\u56FE\u8017\u65F6\: +Read_failure=\u8BFB\u53D6\u5931\u8D25\uFF0C\u53EF\u80FD\u6E90\u6587\u4EF6\u5DF2\u635F\u574F +Real=\u5B9E\u9645 +Receiver=\u6536\u4EF6\u4EBA +Receiving_Page=\u6B63\u5728\u63A5\u6536\u9875\u7801 +Record=\u8BB0\u5F55 +Record\ In\ Category=\u6761\u5206\u7C7B\u8BB0\u5F55 +Record\ In\ Series=\u6761\u7CFB\u5217\u8BB0\u5F55 +Record-Number=\u8BB0\u5F55\u6570 +Records=\u6761\u8BB0\u5F55 +Rectangular\ Coordinates\ Projection=\u76F4\u89D2\u5750\u6807\u6295\u5F71 +Recursion=\u9012\u5F52 +Recursion_Pane_Only=\u6B64\u9762\u677F\u4EC5\u7528\u4E8E\u9012\u5F52\u6811\u7ED3\u6784\u7684\u6570\u636E\u5E93\u8868 +Red=\u7EA2\u8272 +Refresh=\u5237\u65B0 +Refresh_Database=\u5237\u65B0\u6570\u636E\u5E93 +Refresh_Parameter_In_SQL=\u662F\u5426\u5237\u65B0SQL\u4E2D\u7684\u53C2\u6570 +Refresh_Successfully=\u5237\u65B0\u6210\u529F +Reg_\ Expressions= +Reg_Expressions=\u6B63\u5219\u8868\u8FBE\u5F0F +Reg_Max_Length=\u6700\u5927\u957F\u5EA6 +Reg_Min_Length=\u6700\u5C0F\u957F\u5EA6 +Register_Version=\u6CE8\u518C\u7248\u672C +Register_failed=\u63D0\u793A\uFF1A\u5F53\u524D\u5E94\u7528\u7684WEB-INF/resources\u8DEF\u5F84\u4E0B\u672A\u53D1\u73B0\u670D\u52A1\u5668\u6388\u6743\u6587\u4EF6\uFF01\u8BF7\u5C3D\u5FEB\u5BFC\u5165\u6388\u6743\u6587\u4EF6\u5E76\u5B8C\u6210 +Registration-Basic_Edition=\u57FA\u672C\u7248 +Registration-CPU_Number=\u5904\u7406\u5668\u6570\u76EE +Registration-Company_Name=\u516C\u53F8\u540D\u79F0 +Registration-Concurrency=\u5E76\u53D1\u6570 +Registration-Customize_Edition=\u5B9A\u5236\u7248 +Registration-Develop_Edition=\u5F00\u53D1\u7248 +Registration-Enterprise_Edition=\u4F01\u4E1A\u7248 +Registration-Error_Registration_Information=\u9519\u8BEF\u7684\u6CE8\u518C\u4FE1\u606F +Registration-Input_Registration_Information=\u8F93\u5165\u6CE8\u518C\u4FE1\u606F +Registration-Please_Purchase=\u62A5\u8868\u7CFB\u7EDF\u5C1A\u672A\u6CE8\u518C, \u8BF7\u8D2D\u4E70 +Registration-Professional_Edition=\u4E13\u4E1A\u7248 +Registration-Project_Name=\u9879\u76EE\u540D\u79F0 +Registration-Purchase_Enterprise=\u8D2D\u4E70\u4F01\u4E1A\u7248 +Registration-Standard_Edition=\u6807\u51C6\u7248 +Registration-The_Registration_code_is_invalid=\u6CE8\u518C\u7801\u65E0\u6548 +Registration-Use_Authorization_File=\u4F7F\u7528\u6388\u6743\u6587\u4EF6 +Registration-User_Email=\u7528\u6237\u90AE\u4EF6 +Registration-User_Name=\u7528\u6237\u540D +Reinstate_Report=\u6062\u590D\u6210\u975E\u5C42\u5F0F\u62A5\u8868 +Related=\u8054\u52A8 +RelatedChart=\u56FE\u8868\u8054\u52A8 +Relationship=\u5173\u8054 +Release-To_Load_Data=\u677E\u5F00\u5C06\u52A0\u8F7D\u6570\u636E +Release_Lock=\u89E3\u9501 +Reload=\u91CD\u8F7D +Remedy=Remedy +Remember-Username_And_Password=\u8BB0\u4F4F\u7528\u6237\u540D\u548C\u5BC6\u7801 +Remove=\u5220\u9664 +Remove_All_Button=\u6E05\u9664\u6240\u6709\u6309\u94AE +Remove_Button_ToolBar=\u79FB\u9664\u6309\u94AE\u6240\u5728\u5DE5\u5177\u680F +Remove_Selected_Button=\u79FB\u9664\u9009\u4E2D\u6309\u94AE +Rename=\u91CD\u547D\u540D +Rename-Block=\u91CD\u547D\u540D\u5757 +Rename_Column=\u91CD\u547D\u540D\u5217 +RenderStyle=\u6E32\u67D3\u98CE\u683C +Repagination=\u9875\u7801\u91CD\u7F6E +Repeat=\u91CD\u590D +Repeat-Block_Name=\u6B64\u5757\u540D\u5DF2\u7ECF\u5B58\u5728 +Repeat-Freeze=\u91CD\u590D\u4E0E\u51BB\u7ED3\u8BBE\u7F6E +Report=\u62A5\u8868 +Report-Body=\u62A5\u8868\u4E3B\u4F53 +Report-Design-Ruler-Units=\u62A5\u8868\u8BBE\u8BA1\u6807\u5C3A\u5355\u4F4D +Report-Subtitle=\u62A5\u8868\u526F\u6807\u9898 +Report-Title=\u62A5\u8868\u6807\u9898 +Report-Web_Attributes=\u6A21\u677FWeb\u5C5E\u6027 +Report-WorkFlow_Attributes=\u5DE5\u4F5C\u6D41\u5C5E\u6027 +Report-Write_Attributes=\u62A5\u8868\u586B\u62A5\u5C5E\u6027 +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 +Report-Write_Attributes_Msg=\u6CA1\u6709\u8BBE\u7F6E\u586B\u62A5\u5C5E\u6027 +ReportColumns-Begin_at_Column=\u5F00\u59CB\u5206\u680F\u5217\u5E8F\u53F7 +ReportColumns-Begin_at_Row=\u5F00\u59CB\u5206\u680F\u884C\u5E8F\u53F7 +ReportColumns-Columns=\u5206\u680F +ReportColumns-Columns_Style_horizontally=\u884C\u5206\u680F\u6837\u5F0F +ReportColumns-Columns_Style_vertically=\u5217\u5206\u680F\u6837\u5F0F +ReportColumns-Columns_after=\u8D85\u8FC7 +ReportColumns-Columns_horizontally=\u884C\u5206\u680F +ReportColumns-Columns_to=\u5206\u680F\u6210 +ReportColumns-Columns_vertically=\u5217\u5206\u680F +ReportColumns-End_at_Column=\u7ED3\u675F\u5206\u680F\u5217\u5E8F\u53F7 +ReportColumns-End_at_Row=\u7ED3\u675F\u5206\u680F\u884C\u5E8F\u53F7 +ReportColumns-None=\u4E0D\u5206\u680F +ReportColumns-Repeat_Column=\u590D\u5236\u5217\u5E8F\u5217 +ReportColumns-Repeat_Row=\u590D\u5236\u884C\u5E8F\u5217 +ReportColumns-Report_Columns=\u62A5\u8868\u5206\u680F +ReportD-Excel_Export=\u6A21\u677F\u5BFC\u51FA\u5C5E\u6027 +ReportD-Export_Hided_Column=\u5BFC\u51FA\u9690\u85CF\u5217 +ReportD-Export_Hided_Row=\u5BFC\u51FA\u9690\u85CF\u884C +ReportD-Html_Export=\u62A5\u8868HTML\u5BFC\u51FA\u5C5E\u6027 +ReportD-Report_Export_Attributes=\u62A5\u8868\u5C5E\u6027 +ReportD-Report_Web_Attributes=\u62A5\u8868Web\u5C5E\u6027 +ReportD-Report_Write_Attributes=\u62A5\u8868\u586B\u62A5\u5C5E\u6027 +ReportDir=\u62A5\u8868\u76EE\u5F55 +ReportGUI-Print_Background=\u6253\u5370/\u5BFC\u51FA\u62A5\u8868\u80CC\u666F +ReportPageSetting_Message=-1\u8868\u793A\u81EA\u9002\u5E94\u4E0D\u9650\u5236\u5927\u5C0F +ReportServer-Frozen_Column=\u51BB\u7ED3\u5217 +ReportServer-Frozen_Column_Row=\u51BB\u7ED3\u884C\u5217 +ReportServer-Frozen_Row=\u51BB\u7ED3\u884C +ReportServerP-Add_Printer=\u589E\u52A0\u6253\u5370\u673A +ReportServerP-Are_you_sure_to_delete_the_selected_printer=\u4F60\u786E\u5B9E\u60F3\u5220\u9664\u9009\u4E2D\u7684\u6253\u5370\u673A\u5417 +ReportServerP-Basic=\u57FA\u672C +ReportServerP-Browser=\u4F7F\u7528\u6B64\u6D4F\u89C8\u5668\u9884\u89C8 +ReportServerP-Browser_Background=\u6D4F\u89C8\u5668\u80CC\u666F +ReportServerP-Choose_Printer=\u9009\u62E9\u6253\u5370\u673A +ReportServerP-Congratulation_Email_Test_Success=\u606D\u559C\u60A8\uFF01\u60A8\u7684\u90AE\u4EF6\u670D\u52A1\u5668\u5DF2\u7ECF\u914D\u7F6E\u6210\u529F +ReportServerP-Custom_Toolbar=\u5B9A\u5236\u5DE5\u5177\u680F +ReportServerP-Edit_Printer=\u7F16\u8F91\u6253\u5370\u673A +ReportServerP-Email_Receiver=\u90AE\u4EF6\u63A5\u6536\u4EBA +ReportServerP-First=\u9996\u9875 +ReportServerP-FormToolBar=\u8868\u5355\u5DE5\u5177\u680F +ReportServerP-From_Email_Address=\u53D1\u4EF6\u4EBA\u5730\u5740 +ReportServerP-Import_Css=\u5F15\u7528Css +ReportServerP-Import_JavaScript=\u5F15\u7528JavaScript +ReportServerP-Last=\u672B\u9875 +ReportServerP-Next=\u4E0B\u4E00\u9875 +ReportServerP-PDF=PDF +ReportServerP-PDF2-INFO=\u4EC5\u5728LINUX/UNIX\u4E0B\u672A\u5B89\u88C5\u4E2D\u6587\u5B57\u4F53\u65F6\u4F7F\u7528 +ReportServerP-Pre_concurrency=\u4F18\u5148\u8BBF\u95EE\u7684\u5E76\u53D1\u6570 +ReportServerP-Previous=\u4E0A\u4E00\u9875 +ReportServerP-Print[Server]=\u6253\u5370[\u670D\u52A1\u5668] +ReportServerP-Printers(Server)=\u6253\u5370\u673A(\u670D\u52A1\u5668) +ReportServerP-Report_server_parameter=\u62A5\u8868\u670D\u52A1\u5668\u53C2\u6570 +ReportServerP-Server_Printers=\u670D\u52A1\u5668\u7AEF\u7684\u6253\u5370\u673A +ReportServerP-Show_Toolbar=\u663E\u793A\u5DE5\u5177\u680F +ReportServerP-The_name_of_printer_cannot_be_null=\u6253\u5370\u673A\u7684\u540D\u5B57\u4E0D\u80FD\u4E3A\u7A7A +ReportServerP-Toolbar=\u5DE5\u5177\u680F +ReportServerP-User_concurrency=\u7528\u6237\u5E76\u53D1\u6570 +ReportServerP-Write_Processor=\u586B\u62A5\u5904\u7406\u5668 +ReportServerP-ms=\u6BEB\u79D2 +ReportWebAttr-General_Css=\u4E00\u822C\u81EA\u5B9A\u4E49\u6837\u5F0F\u8868 +ReportWebAttr-Widget_Css=\u63A7\u4EF6\u81EA\u5B9A\u4E49\u6837\u5F0F\u8868 +ReportWebAttr-Write_Css=\u586B\u62A5\u81EA\u5B9A\u4E49\u6837\u5F0F\u8868 +Report_Certification=\u62A5\u8868\u8BA4\u8BC1 +Report_Designer=\u62A5\u8868\u8BBE\u8BA1\u5668 +Report_Display=\u62A5\u8868\u5C55\u793A +Report_Engine=\u62A5\u8868\u5F15\u64CE +Report_Is_Being_Openned=\u6B63\u5728\u6253\u5F00\u62A5\u8868 +Report_Not_Exist=\u6240\u9009\u62A5\u8868\u4E0D\u5B58\u5728\uFF01 +Report_Path=\u62A5\u8868\u8DEF\u5F84 +Report_Query_Result_AS=\u62A5\u8868\u641C\u7D22\u7ED3\u679C\u5982\u4E0B +Report_Show_Location=\u62A5\u8868\u663E\u793A\u4F4D\u7F6E +Report_Template=\u62A5\u8868\u6A21\u677F +Reportlet=\u7F51\u7EDC\u62A5\u8868 +Reportlet-Parameter_Type=\u53C2\u6570\u4F20\u9012\u65B9\u5F0F +Reportlet-Schedule-Action=\u5B9A\u65F6\u751F\u6210 +ReportletParameterTip=\u5F53\u53C2\u6570\u503C\u4E3ACategory\u65F6\u5BF9\u5E94\u56FE\u8868\u4E2D\u7684\u5206\u7C7B\u540D, \u540C\u7406\: Series, Value \u5206\u522B\u5BF9\u5E94\u7CFB\u5217\u540D\u548C\u7CFB\u5217\u503C +Required=\u5FC5\u586B +Reset=\u91CD\u7F6E +RestartAfterSet=\u914D\u7F6E\u7ED3\u675F\u7ACB\u523B\u5F00\u59CB +RestartByCondition=\u5982\u679C\u4EFB\u52A1\u4E2D\u65AD\u6309\u4EE5\u4E0B\u9891\u7387\u91CD\u65B0\u542F\u52A8 +Restore-Default=\u6062\u590D\u9ED8\u8BA4 +Return-Date=\u8FD4\u56DE\u65E5\u671F +Return-String=\u8FD4\u56DE\u5B57\u7B26\u4E32 +Return-Value=\u8FD4\u56DE\u503C +Return_set_name=\u8FD4\u56DE\u96C6 +Reverse-Scale-Value=\u9006\u5E8F\u523B\u5EA6\u503C +Right=\u53F3 +Right_Border_Line=\u53F3\u6846\u7EBF +Right_Margin=\u53F3\u8FB9\u8DDD +Right_Top=\u53F3\u4E0A +Role=\u89D2\u8272 +RoleName_Can_Not_Be_Null=\u89D2\u8272\u540D\u4E0D\u5141\u8BB8\u4E3A\u7A7A\u4E14\u4E0D\u80FD\u91CD\u590D +Role_Information=\u89D2\u8272\u4FE1\u606F +Role_List=\u89D2\u8272\u5217\u8868 +Role_Name=\u89D2\u8272\u540D +Role_Source=\u89D2\u8272\u6765\u6E90 +Role_changed_isRefresh=\u89D2\u8272\u5DF2\u53D8\u52A8\uFF0C\u662F\u5426\u5237\u65B0 +Root=\u6839\u8282\u70B9 +Root_Path_Cannot_Remove=\u6839\u8282\u70B9\u4E0D\u53EF\u5220\u9664 +Rose_Red=\u73AB\u7470\u7EA2 +Rotation=\u65CB\u8F6C +Row=\u884C +Row-Axis=\u884C\u8F74 +Row-Fields=\u884C\u5B57\u6BB5 +RowSpan=\u884C\u8DE8\u5EA6 +RowTo=\u884C\u81F3\u7B2C +Row_Cell=\u7AD6\u683C +Row_Dimension=\u884C\u8F74/\u7EF4\u5EA6 +Row_tag=\u884C\u6807\u7B7E +Rows=\u884C +Run=\u8FD0\u884C +Running=\u8FD0\u884C\u4E2D +SAP=SAP +SAP-System_Number=System Number +SAP-Transfer_type_relation_setting=\u8F6C\u6362\u7C7B\u578B\u4EE5\u53CA\u5173\u7CFB +SAP_column_name=SAP\u5217\u540D +SAP_datatype=SAP\u6570\u636E\u7C7B\u578B +SINGLE_FILE_UPLOAD=\u53EA\u652F\u6301\u5355\u6587\u4EF6\u4E0A\u4F20 +SQL=SQL +SQL-Procedure=\u8FC7\u7A0B +SQL-Table=\u8868 +SQL-View=\u89C6\u56FE +SQLWizard-add_condition=\u589E\u52A0\u6761\u4EF6 +SQLWizard-add_expression=\u589E\u52A0\u8868\u8FBE\u5F0F +SQLWizard-add_having_condition=\u589E\u52A0HAVING\u6761\u4EF6 +SQLWizard-add_subquery=\u589E\u52A0\u5B50\u67E5\u8BE2 +SQLWizard-add_to_group_by=\u6DFB\u52A0\u5230group by\u5B50\u53E5\u4E2D +SQLWizard-add_to_order_by=\u6DFB\u52A0\u5230order by\u5B50\u53E5\u4E2D +SQLWizard-add_where_condition=\u589E\u52A0WHERE\u6761\u4EF6 +SQLWizard-all_Rows_From=\u6240\u6709\u7684\u8868\u6765\u81EA{0} +SQLWizard-arrange_entities=\u91CD\u65B0\u5B89\u6392\u5B9E\u4F53 +SQLWizard-choose_function=\u9009\u62E9\u4E00\u4E2A\u51FD\u6570 +SQLWizard-deselect_all=\u5168\u4E0D\u9009 +SQLWizard-distinct=\u6D88\u9664\u91CD\u590D\u884C +SQLWizard-edit_condition=\u7F16\u8F91\u6761\u4EF6 +SQLWizard-join=\u8054\u5408 +SQLWizard-join_expression=\u8054\u5408\u8868\u8FBE\u5F0F +SQLWizard-pack=\u6700\u5C0F\u5316 +SQLWizard-pack_all_entities=\u6700\u5C0F\u5316\u6240\u6709\u5B9E\u4F53 +SQLWizard-reading=\u8BFB\u53D6\u4E2D +SQLWizard-remove_all=\u5168\u5220\u9664 +SQLWizard-remove_entities=\u5220\u9664\u6240\u6709\u7684\u5B9E\u4F53 +SQLWizard-select_all=\u5168\u9009 +SQLWizard-select_expression=select\u8868\u8FBE\u5F0F +SQLWizard-union=\u5E76\u64CD\u4F5C +SQLWizard-unpack_all_entities=\u6700\u5927\u5316\u6240\u6709\u5B9E\u4F53 +SQLWizard-wait=\u7A0D\u5019 +SQLWizard-would_you_like_to_continue=\u662F\u5426\u60F3\u7EE7\u7EED +SUMMARY_MODE=\u6C47\u603B +Sat=\u516D +Save=\u4FDD\u5B58 +Save_All_Records_In_Memory=\u6240\u6709\u8BB0\u5F55\u90FD\u4FDD\u5B58\u5728\u5185\u5B58\u4E2D +Save_As_Global_Style=\u4FDD\u5B58\u4E3A\u5168\u5C40\u683C\u5F0F +Save_Definition=\u4FDD\u5B58\u5B9A\u4E49 +Save_Or_Not=\u662F\u5426\u4FDD\u5B58 +Save_Path=\u4FDD\u5B58\u8DEF\u5F84 +Save_Result=\u4FDD\u5B58\u7ED3\u679C +Saved_Connection_Count=\u4FDD\u5B58\u7684\u8FDE\u63A5\u6570 +Saving=\u4FDD\u5B58\u4E2D +Sche-Day=\u65E5\u671F +Sche-Friday=\u661F\u671F\u4E94 +Sche-Hour=\u65F6 +Sche-Minute=\u5206 +Sche-Monday=\u661F\u671F\u4E00 +Sche-Month=\u6708\u4EFD +Sche-Saturday=\u661F\u671F\u516D +Sche-Second=\u79D2 +Sche-Sunday=\u661F\u671F\u65E5 +Sche-Thursday=\u661F\u671F\u56DB +Sche-Tuesday=\u661F\u671F\u4E8C +Sche-Wednesday=\u661F\u671F\u4E09 +Sche-Week=\u661F\u671F +Schedule-Are_you_sure_to_delete_the_selected_task=\u786E\u8BA4\u5220\u9664\u6240\u9009\u4EFB\u52A1 +Schedule-Daily=\u6BCF\u5929 +Schedule-Defined_Tasks=\u5B9A\u4E49\u7684\u4EFB\u52A1 +Schedule-Duplicate_Task_Name=\u4EFB\u52A1\u540D\u91CD\u590D +Schedule-Edit_Start_Time=\u7F16\u8F91\u8D77\u59CB\u65F6\u95F4 +Schedule-Edit_Time=\u7F16\u8F91\u65F6\u95F4 +Schedule-Excute_Type=\u751F\u6210\u7C7B\u578B +Schedule-File_Prefix=\u6587\u4EF6\u524D\u7F00 +Schedule-Frequency=\u9891\u7387\u8BBE\u5B9A +Schedule-Generate_Parameters=\u751F\u6210\u53C2\u6570 +Schedule-Handle_Type=\u5904\u7406\u65B9\u5F0F +Schedule-Hourly=\u6BCF\u5C0F\u65F6 +Schedule-Index=\u7F16\u53F7 +Schedule-Mail_To=\u4EE5\u90AE\u4EF6\u53D1\u9001\u5230 +Schedule-Monthly=\u6BCF\u6708 +Schedule-New_Task=\u6DFB\u52A0\u4EFB\u52A1 +Schedule-Please_select_a_directory=\u8BF7\u9009\u62E9\u4E00\u4E2A\u76EE\u5F55 +Schedule-Remove_Task=\u5220\u9664\u4EFB\u52A1 +Schedule-Rename_Task=\u91CD\u547D\u540D\u4EFB\u52A1 +Schedule-Report_File_Directory=\u62A5\u8868\u6587\u4EF6\u76EE\u5F55 +Schedule-Reportlet_Group=\u7F51\u7EDC\u62A5\u8868\u7EC4 +Schedule-Reportlet_Info=\u7F51\u7EDC\u62A5\u8868\u4FE1\u606F +Schedule-Save_As=\u53E6\u5B58\u4E3A +Schedule-Save_To=\u4FDD\u5B58\u4F4D\u7F6E +Schedule-Scheduled_Task_Manager=\u5B9A\u65F6\u4EFB\u52A1\u7BA1\u7406\u5668 +Schedule-Select_Path=\u9009\u62E9\u76EE\u5F55 +Schedule-Select_Report_File_Directory=\u9009\u62E9\u62A5\u8868\u76EE\u5F55 +Schedule-Select_Template=\u9009\u62E9\u6A21\u677F +Schedule-Start_at=\u9996\u6B21\u6267\u884C +Schedule-Task_Content=\u4EFB\u52A1\u5185\u5BB9 +Schedule-Task_Name=\u4EFB\u52A1\u540D +Schedule-Template=\u6A21\u677F\u540D\u79F0 +Schedule-Template_File=\u6A21\u677F\u6587\u4EF6 +Schedule-Template_Parameter=\u6A21\u677F\u53C2\u6570 +Schedule-The_selected_file_must_be_end_with_'.xls'=\u9009\u62E9\u7684\u6587\u4EF6\u5FC5\u987B\u4EE5.xls\u7ED3\u5C3E +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 +Schedule-Unspecified_Report_File_Prefix=\u672A\u6307\u5B9A\u62A5\u8868\u6587\u4EF6\u524D\u7F00 +Schedule-Unspecified_Report_File_Save_Location=\u672A\u6307\u5B9A\u62A5\u8868\u6587\u4EF6\u4FDD\u5B58\u4F4D\u7F6E +Schedule-Unspecified_Template_File_Name=\u672A\u6307\u5B9A\u6A21\u677F\u6587\u4EF6\u540D +Schedule-Weekly=\u6BCF\u5468 +Schedule-Yearly=\u6BCF\u5E74 +ScheduleCycle=\u8C03\u5EA6\u5468\u671F +Schedule_DEC= +Scheduler-parameters_were_found_,_Are_you_sure_to_apply_now=\u53C2\u6570\u88AB\u53D1\u73B0\uFF0C\u60A8\u662F\u5426\u8981\u5E94\u7528 +Schema=\u4E3B\u9898 +Scheudle-Invalid_Template_File_Name=\u65E0\u6548\u7684\u6A21\u677F\u6587\u4EF6\u540D +Scope=\u8303\u56F4 +Search=\u641C\u7D22 +Search_Result=\u641C\u7D22\u7ED3\u679C +Second=\u7B2C\u4E8C +SecondGraduationLine=\u6B21\u8981\u523B\u5EA6\u7EBF +SecondGraduationLineStyle=\u6B21\u8981\u523B\u5EA6\u7EBF\u7C7B\u578B +SecondGraduationUnit=\u6B21\u8981\u523B\u5EA6\u5355\u4F4D +Second_Axis=\u6B21\u5750\u6807\u8F74 +Second_Value_Axis=\u6B21\u503C\u8F74 +Select=\u9009\u62E9 +Select-Color=\u9009\u62E9\u989C\u8272 +Select-Folder=\u8BF7\u9009\u62E9\u6D4F\u89C8\u5668\u6240\u5728\u7684\u6587\u4EF6\u5939 +Select_A_Tree_DataSource_To_Build=\u9009\u62E9\u4E00\u4E2A\u6811\u6570\u636E\u96C6\u6765\u6784\u5EFA +Select_All=\u5168\u9009 +Select_Create_Role=\u8BF7\u5148\u9009\u62E9\u89D2\u8272\u6216\u65B0\u5EFA\u89D2\u8272 +Select_DataColumn=\u9009\u62E9\u6570\u636E\u5217 +Select_DataFields=\u9009\u62E9\u6570\u636E\u5B57\u6BB5 +Select_Data_Set=\u9009\u62E9\u6570\u636E\u96C6 +Select_Date=\u9009\u62E9\u65E5\u671F +Select_Export_Log_Directory=\u9009\u62E9\u5BFC\u51FA\u76EE\u5F55 +Select_FS_Roles=\u9009\u62E9\u5E73\u53F0\u89D2\u8272 +Select_FS_Users=\u9009\u62E9\u5E73\u53F0\u7528\u6237 +Select_Fields=\u9009\u62E9\u5B57\u6BB5 +Select_Mail_Column=\u9009\u62E9\u90AE\u7BB1\u5BF9\u5E94\u5217 +Select_Name_Column=\u9009\u62E9\u59D3\u540D\u5BF9\u5E94\u5217 +Select_Specified_Grouping=\u9009\u62E9\u81EA\u5B9A\u4E49\u5206\u7EC4 +Select_The_Source_To_Save=\u9009\u62E9\u8981\u5B58\u50A8\u7684\u9879\u76EE +Select_Username_Column=\u9009\u62E9\u7528\u6237\u540D\u5BF9\u5E94\u5217 +Select_sort_order=\u9009\u62E9\u6392\u5217\u987A\u5E8F +Select_the_repeated_row_and_column=\u9009\u62E9\u9700\u8981\u91CD\u590D\u7684\u884C\u5217 +Selected=\u5DF2\u9009\u4E2D +Selected-Index=\u521D\u59CB\u9009\u4E2D\u9879 +Selected_Dictionary=\u5F53\u524D\u6570\u636E\u5B57\u5178 +Selection=\u9009\u62E9 +Selection-Background=\u9009\u4E2D\u9879\u80CC\u666F\u8272 +Selection-Filter=\u6761\u4EF6\u7B5B\u9009 +Selection-Foreground=\u9009\u4E2D\u9879\u524D\u666F\u8272 +SelfDefineAttachmentDeal=\u81EA\u5B9A\u4E49\u9644\u4EF6\u5904\u7406 +SelfDefineClassName=\u81EA\u5B9A\u4E49\u7C7B\u540D +Semicolon=\u5206\u53F7 +Send=\u53D1\u9001 +Send-Email_Schedule_Action=\u5B9A\u65F6\u53D1\u9001\u90AE\u4EF6 +September=\u4E5D\u6708 +Sequenced_number=\u5E8F\u53F7 +Ser=\u7B2C +Series=\u5E8F\u5217 +Series_Dismenber_As_Single=\u8FDE\u7EED\u5206\u9694\u7B26\u89C6\u4E3A\u5355\u4E2A\u5904\u7406 +Series_Name=\u7CFB\u5217\u540D +Series_Use_Default=\u7CFB\u5217\u9ED8\u8BA4\u4F7F\u7528 +Seriously=\u4E25\u91CD +Server=\u670D\u52A1\u5668 +Server-Always_Reload_Template=\u603B\u662F\u91CD\u65B0\u8BFB\u53D6\u6A21\u677F +Server-Define_Data_Connection=\u5B9A\u4E49\u6570\u636E\u8FDE\u63A5 +Server-Demo_Server= +Server-Embedded_Server=\u5167\u7F6E\u7684\u670D\u52A1\u5668 +Server-Open_Service_Manager=\u6253\u5F00\u670D\u52A1\u7BA1\u7406\u5668 +Server-Start=\u542F\u52A8 +Server-Stop=\u505C\u6B62 +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 +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 +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 +Server-version-warging="\u60A8\u5F53\u524D\u6253\u5F00\u7684\u6A21\u677F\u6587\u4EF6\u662F\u7531\u66F4\u9AD8\u7248\u672C\u7684\u8BBE\u8BA1\u5668\u5236\u4F5C\u7684\uFF0C\u7EE7\u7EED\u6253\u5F00\u4F1A\u6709\u51FA\u9519\u6216\u8005\u4E22\u5931\u539F\u6709\u6A21\u677F\u5C5E\u6027\u7684\u98CE\u9669\u3002 \u8BF7\u786E\u4FDD\u60A8\u8BBE\u8BA1\u7684\u6A21\u677F\u7684\u8BBE\u8BA1\u5668\u7248\u672C\u4F4E\u4E8E\u90E8\u7F72\u7684\u670D\u52A1\u5668\u7248\u672C\u3002" +ServerM-Define_Styles= +ServerM-Face_Manager=\u754C\u9762\u8BBE\u7F6E +ServerM-Predefined_Styles=\u9884\u5B9A\u4E49\u6837\u5F0F +ServerM-Privilege_Manager=\u6743\u9650\u7BA1\u7406 +ServerM-SapSync_Manager=SAP\u6570\u636E\u540C\u6B65 +ServerM-Widget_Manager=\u63A7\u4EF6\u7BA1\u7406 +ServerM-Workflow_Manager=\u5DE5\u4F5C\u6D41\u7BA1\u7406 +ServerMenu_Privilege=\u670D\u52A1\u5668\u6743\u9650\u83DC\u5355 +Server_Address=\u670D\u52A1\u5668\u5730\u5740 +Server_Charset=\u670D\u52A1\u5668\u7F16\u7801 +Server_Data_Relations=\u670D\u52A1\u5668\u6570\u636E\u96C6\u5173\u7CFB +Server_Data_Relations_Table=\u670D\u52A1\u5668\u6570\u636E\u96C6\u5173\u7CFB\u8868 +Server_Flash=\u9700\u8981Flash\u6253\u5370\u8BBE\u7F6E\u7A97\u53E3 +Server_FlashInstallPath=Flash\u5B89\u88C5\u6587\u4EF6\u8DEF\u5F84 +Server_Language=\u670D\u52A1\u5668\u8BED\u8A00 +Server_Name=\u670D\u52A1\u5668\u540D\u79F0 +Server_Path=\u4E3B\u673A\u4F4D\u7F6E +Server_PdfInstallPath=Pdf\u5B89\u88C5\u6587\u4EF6\u8DEF\u5F84 +Server_Print=\u670D\u52A1\u5668\u7AEF\u6253\u5370 +Server_Usage=\u670D\u52A1\u5668\u4F7F\u7528\u60C5\u51B5 +ServerdatasourceSameWarning=\u670D\u52A1\u5668\u6570\u636E\u96C6\u4E2D\u6709\u6570\u636E\u96C6\u540D\u5B57\u548C\u5176\u4ED6\u6570\u636E\u96C6\u540D\u5B57\u4E00\u6837\uFF0C\u8BF7\u4FEE\u6539\uFF01 +Service_Phone=\u670D\u52A1\u7535\u8BDD\uFF1A +ServletMapping_msg=\u5B9E\u73B0\u4FEE\u6539\u9700\u8981\u76F8\u5E94\u4FEE\u6539"(\u62A5\u8868\u8FD0\u884C\u73AF\u5883)\://web.xml"\u6587\u4EF6\u4E2D\u7684url-pattern\u5C5E\u6027 +Session=\u4F1A\u8BDD +SessionID=sessionID\u662F\u5F53\u524D\u8BBF\u95EE\u6A21\u677F\u7684\u4F1A\u8BDD\u6807\u8BC6\u53C2\u6570\u3002 +Set=\u8BBE\u7F6E +Set-Parameter-Name=\u8BF7\u5148\u8BBE\u7F6E\u53C2\u6570\u540D +Set-Parent-Directory=\u70B9\u51FB\u76F8\u5E94\u56FE\u6807\u8BBE\u7F6E\u5404\u6D4F\u89C8\u5668\u6240\u5728\u7684\u6587\u4EF6\u5939 +SetEndTime=\u8BBE\u5B9A\u7ED3\u675F\u65F6\u95F4 +SetLoginBackground=\u8BBE\u7F6E\u767B\u5F55\u80CC\u666F\u56FE\u7247 +SetLoginPage=\u8BBE\u7F6E\u767B\u5F55\u7F51\u9875 +SetPrinterOffset=\u6253\u5370\u673A\u504F\u79FB +SetStartTime=\u8BBE\u5B9A\u5F00\u59CB\u65F6\u95F4 +Set_CallBefore_Function=\u8BBE\u7F6E\u524D\u7F6E\u51FD\u6570 +Set_Callback_Function=\u8BBE\u7F6E\u56DE\u8C03\u51FD\u6570 +Set_Certification=\u8BA4\u8BC1\u914D\u7F6E +Set_Chart_Style=\u8BBE\u7F6E\u56FE\u8868\u533A\u683C\u5F0F +Set_Column_Title_End=\u8BBE\u7F6E\u91CD\u590D\u7ED3\u5C3E\u5217 +Set_Column_Title_Start=\u8BBE\u7F6E\u91CD\u590D\u6807\u9898\u5217 +Set_Default_Data_Connect=\u662F\u5426\u5C06\u5176\u8BBE\u7F6E\u4E3A\u9ED8\u8BA4\u6570\u636E\u8FDE\u63A5 +Set_Frozen_Cell=\u8BBE\u7F6E\u51BB\u7ED3\u5355\u5143\u683C +Set_Legend_Sytle=\u8BBE\u7F6E\u56FE\u4F8B\u683C\u5F0F +Set_More=\u8BE6\u7EC6\u8BBE\u7F6E +Set_Role=\u89D2\u8272\u8BBE\u7F6E +Set_Role_Authorized=\u89D2\u8272\u6743\u9650\u914D\u7F6E +Set_Row_Title_End=\u8BBE\u7F6E\u91CD\u590D\u7ED3\u5C3E\u884C +Set_Row_Title_Start=\u8BBE\u7F6E\u91CD\u590D\u6807\u9898\u884C +Set_Submit_Condition=\u8BBE\u7F6E\u63D0\u4EA4\u6761\u4EF6 +Set_Submit_Event=\u8BBE\u7F6E\u63D0\u4EA4\u4E8B\u4EF6 +Set_User=\u7528\u6237\u914D\u7F6E +Set_User_Type=\u8BBE\u7F6E\u7528\u6237\u7C7B\u578B +Set_data_fields=\u8BBE\u7F6E\u6570\u636E\u5B57\u6BB5 +Set_default_browser=\u6CA1\u6709\u627E\u5230\u9ED8\u8BA4\u6D4F\u89C8\u5668\uFF0C\u8BF7\u5728Intenet\u9009\u9879\u4E2D\u8BBE\u7F6E\u7CFB\u7EDF\u9ED8\u8BA4\u6D4F\u89C8\u5668\u3002 +Set_group_fields=\u5C06\u62A5\u8868\u4E2D\u7684\u4FE1\u606F\u5206\u7EC4 +Setting=\u9009\u9879 +Setting-Ruler-Units=\u6807\u5C3A\u5355\u4F4D\u8BBE\u7F6E +Shaanxi=\u9655\u897F\u7701 +Shandong=\u5C71\u4E1C\u7701 +Shanghai=\u4E0A\u6D77\u5E02 +ShanghaiInCity=\u4E0A\u6D77\u5E02\u533A +Shanxi=\u5C71\u897F\u7701 +Shape=\u56FE\u5F62 +Shared_To_Me=\u5206\u4EAB\u7ED9\u6211\u7684 +Sheet=\u5DE5\u4F5C\u8868 +ShenyangCity=\u6C88\u9633\u5E02 +ShijiazhuangCity=\u77F3\u5BB6\u5E84\u5E02 +Short-Apr=\u56DB +Short-Aug=\u516B +Short-Dec=\u5341\u4E8C +Short-Feb=\u4E8C +Short-Jan=\u4E00 +Short-Jul=\u4E03 +Short-Jun=\u516D +Short-Mar=\u4E09 +Short-May=\u4E94 +Short-Nov=\u5341\u4E00 +Short-Oct=\u5341 +Short-Sep=\u4E5D +FR-Base_Short_Apr=\u56DB +FR-Base_Short_Aug=\u516B +FR-Base_Short_Dec=\u5341\u4E8C +FR-Base_Short_Feb=\u4E8C +FR-Base_Short_Jan=\u4E00 +FR-Base_Short_Jul=\u4E03 +FR-Base_Short_Jun=\u516D +FR-Base_Short_Mar=\u4E09 +FR-Base_Short_May=\u4E94 +FR-Base_Short_Nov=\u5341\u4E00 +FR-Base_Short_Oct=\u5341 +FR-Base_Short_Sep=\u4E5D +Shortcut_Set=\u5FEB\u6377\u952E\u8BBE\u7F6E +Should_select_an_Excel_file=\u9700\u8981\u9009\u62E9\u4E00\u4E2AExcel\u6587\u4EF6\u6765\u6E90 +Show=\u663E\u793A +Show\ Home\ Page=\u663E\u793A\u4E3B\u9875 +ShowAsDownload=\u7528\u4E0B\u8F7D\u94FE\u63A5\u663E\u793A\u4E8C\u8FDB\u5236\u5185\u5BB9 +Show_Blank_Column=\u8865\u5145\u7A7A\u767D\u5217 +Show_Blank_Row=\u8865\u5145\u7A7A\u767D\u884C +Show_Content=\u663E\u793A\u5185\u5BB9 +Show_Demo_Connection=\u663E\u793A\u9ED8\u8BA4demo\u8FDE\u63A5 +Show_Grid_Column=\u663E\u793A\u683C\u5B50\u5217 +Show_Grid_Line=\u663E\u793A\u7F51\u683C\u7EBF +Show_Grid_Row=\u663E\u793A\u683C\u5B50\u884C +Show_Icon=\u663E\u793A\u6309\u94AE\u56FE\u6807 +Show_Text=\u663E\u793A\u6309\u94AE\u540D\u5B57 +Show_in_Containing_Folder=\u6253\u5F00\u6240\u5728\u6587\u4EF6\u5939 +Sichuan=\u56DB\u5DDD\u7701 +SignIn-Confirm_Closing_The_Designer=\u786E\u8BA4\u9000\u51FA\u8BBE\u8BA1\u5668\uFF1F +Sign_In=\u767B\u5F55 +SimgleNumber=\u53F7 +Simple_general=\u7B80\u5355\u901A\u7528\u67E5\u8BE2 +Simple_general_forV6=\u901A\u7528\u67E5\u8BE2(\u9002\u7528\u4E8EECC 6\u4EE5\u4E0A\u7248\u672C) +Simplified_Chinese_Language=\u7B80\u4F53\u4E2D\u6587 +Single=\u4E00\u4E2A +SingleAfter=\u540E +SingleLayer=\u5355\u5C42 +SingleMan=\u8005 +SingleMulti=\u591A +SingleName=\u540D +SingleNew=\u65B0 +SingleOne=\u5355 +SingleTime=\u6B21 +Single_Close=\u5173 +Single_Open=\u5F00 +Size=\u5C3A\u5BF8 +Skip=\u8DF3\u8FC7 +Smart=\u667A\u80FD +Son=\u5B50 +Song_TypeFace=\u5B8B\u4F53 +Sort=\u6392\u5E8F +Sort-Ascending=\u5347\u5E8F +Sort-Descending=\u964D\u5E8F +Sort-Original=\u4E0D\u6392\u5E8F +Sort-Sort_Order=\u6392\u5217\u987A\u5E8F +Sorting=\u6392\u5E8F\u4E2D +Space=\u7A7A\u683C +SpecifiedG-Discard_all_others=\u4E22\u5F03\u5176\u5B83\u6240\u6709\u7684 +SpecifiedG-Force_Group=\u5F3A\u5236\u5206\u7EC4 +SpecifiedG-Group_Name=\u7EC4\u540D +SpecifiedG-Groups=\u7EC4 +SpecifiedG-Leave_in_their_own_groups=\u7559\u5728\u5404\u81EA\u7684\u7EC4\u5185 +SpecifiedG-New_Group=\u65B0\u5EFA\u7EC4 +SpecifiedG-Put_all_others_together=\u628A\u5176\u5B83\u6240\u6709\u7684\u5408\u5E76 +SpecifiedG-Specified_Group=\u81EA\u5B9A\u4E49\u5206\u7EC4 +Specify=\u6307\u5B9A +Stacked_Bar_Chart=\u5806\u79EF\u67F1\u5F62\u56FE +Stacked_Column_Chart=\u5806\u79EF\u6761\u5F62\u56FE +Staff=\u4EBA\u5458 +Staff_Management_InDepartment=\u673A\u6784\u90E8\u95E8\u5185\u4EBA\u5458\u7BA1\u7406 +StandardType=\u6807\u51C6\u7C7B\u578B +Standerd=\u6807\u51C6 +Start=\u5F00\u59CB +StartFailed=\u542F\u52A8\u5931\u8D25 +StartProcess=\u5F00\u59CB\u6D41\u7A0B +StartSuccessfully=\u542F\u52A8\u6210\u529F +StartValue=\u5F00\u59CB\u503C +Start_Print=\u5F00\u59CB\u6253\u5370 +Start_Process=\u53D1\u8D77\u6D41\u7A0B +Start_automatically_when_starting=\u542F\u52A8\u65F6\u81EA\u52A8\u663E\u793A\u6B64\u7A97\u53E3 +State=\u7701\u5E02 +State-Toggle=\u72B6\u6001\u5207\u6362 +Static_Setting=\u7EDF\u8BA1\u8BBE\u7F6E +Statistic=\u7EDF\u8BA1 +Status=\u72B6\u6001 +Still=\u4ECD\u7136 +String=\u5B57\u7B26\u4E32 +Style=\u6837\u5F0F +Style-Left_Indent=\u5DE6\u7F29\u8FDB +Style-Line_Spacing=\u884C\u95F4\u8DDD +Style-Right_Indent=\u53F3\u7F29\u8FDB +Style-Spacing=\u95F4\u8DDD +Style-Spacing_After=\u6BB5\u540E +Style-Spacing_Before=\u6BB5\u524D +StyleAlignment-Bottom=\u9760\u4E0B +StyleAlignment-Degrees=\u5EA6\u6570 +StyleAlignment-Distibuted=\u5206\u6563\u5BF9\u9F50 +StyleAlignment-Horizontal=\u6C34\u5E73\u5BF9\u9F50 +StyleAlignment-Left=\u9760\u5DE6 +StyleAlignment-Left_To_Right=\u4ECE\u5DE6\u5411\u53F3 +StyleAlignment-Multi_Line(Adjust_Font)=\u591A\u884C\u663E\u793A(\u8C03\u6574\u5B57\u4F53) +StyleAlignment-Right=\u9760\u53F3 +StyleAlignment-Right_To_Left=\u4ECE\u53F3\u5411\u5DE6 +StyleAlignment-Single_Line=\u5355\u884C\u663E\u793A +StyleAlignment-Single_Line(Adjust_Font)=\u5355\u884C\u663E\u793A(\u8C03\u6574\u5B57\u4F53) +StyleAlignment-TextAndImage=\u6587\u672C\u4E0E\u56FE\u7247 +StyleAlignment-Text_Rotation=\u6587\u672C\u65B9\u5411 +StyleAlignment-Text_Style=\u6587\u672C\u63A7\u5236 +StyleAlignment-The_value_of_rotation_must_between_-90_and_90_degrees=\u65CB\u8F6C\u503C\u5FC5\u987B\u5728\u8D1F90\u5EA6\u523090\u5EA6 +StyleAlignment-Top=\u9760\u4E0A +StyleAlignment-Vertical=\u5782\u76F4\u5BF9\u9F50 +StyleAlignment-Vertical_Text=\u6587\u5B57\u7AD6\u6392 +StyleAlignment-Wrap_Text=\u81EA\u52A8\u6362\u884C +StyleAlignment-between_-90_and_90=\u5728-90\u548C90\u4E4B\u95F4 +StyleFormat-Category=\u5206\u7C7B +StyleFormat-Currency=\u8D27\u5E01 +StyleFormat-Date=\u65E5\u671F\u578B +StyleFormat-None=\u5E38\u89C4 +StyleFormat-Percent=\u767E\u5206\u6BD4 +StyleFormat-Sample=\u793A\u4F8B +StyleFormat-Scientific=\u79D1\u5B66\u8BA1\u6570 +StyleFormat-Text=\u6587\u672C\u578B +StyleFormat-Time=\u65F6\u95F4\u578B +Style_Name=\u683C\u5F0F\u540D +Sub_Report=\u5B50\u62A5\u8868 +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 +Sub_Report_Message1=\u8BF7\u9009\u62E9\u6B63\u786E\u8DEF\u5F84 +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_ToolTips=\u5B50\u62A5\u8868\u63D0\u793A +Submit=\u63D0\u4EA4 +Submit_Style=\u63D0\u4EA4\u65B9\u5F0F +Submit_Url=\u63D0\u4EA4\u5730\u5740 +Subquery=\u5B50\u67E5\u8BE2 +Successfully=\u6210\u529F +Suffix=\u540E\u7F00 +Summary=\u6C47\u603B +SummaryFields=\u6C47\u603B\u5B57\u6BB5 +Summary_Method=\u6C47\u603B\u65B9\u5F0F +Sun=\u65E5 +Superio=\u4E0A\u7EA7 +Support=\u652F\u6301 +Support-Auto_Complete_Shortcut=\u81EA\u52A8\u8865\u5168\u5FEB\u6377\u952E +Support-Current_Auto_Complete_Shortcut=\u5F53\u524D\u5FEB\u6377\u952E +Support_QQ=\u6280\u672FQQ +Sure_To_Close_Synch_Data_Sets=\u786E\u5B9A\u8981\u5173\u95ED\u540C\u6B65\u6570\u636E\u96C6 +Sure_To_Leave=\u4F60\u786E\u5B9A\u8981\u79BB\u5F00\u5417 +Sure_To_Open_Synch_Data_Sets=\u786E\u5B9A\u8981\u5F00\u542F\u540C\u6B65\u6570\u636E\u96C6 +Sure_To_Remove_This_Role=\u4F60\u786E\u5B9A\u5220\u9664\u8BE5\u89D2\u8272\u5417 +Surport_String_To_Formula=\u652F\u6301\u5B57\u7B26\u4E32\u7F16\u8F91\u4E3A\u516C\u5F0F +Switch=\u5207\u6362 +Switch-Form-Mode=\u5207\u6362\u4E3A\u8868\u5355\u8BBE\u8BA1\u6A21\u5F0F +Syn-transfer=\u8F6C\u6362 +SyncFailed=\u540C\u6B65\u6570\u636E\u96C6\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u60A8\u7684\u6570\u636E\u96C6 +SyncSuccess=\u540C\u6B65\u6570\u636E\u96C6\u6210\u529F +System=\u7CFB\u7EDF +System_Status=\u7CFB\u7EDF\u72B6\u6001 +System_default=\u7CFB\u7EDF\u5C06\u9ED8\u8BA4 +Sytle-FRFont=\u5B57\u4F53 +Sytle-Indentation=\u7F29\u8FDB +TODO_WORK=\u5F85\u529E\u4E8B\u52A1 +T_Insert-Float=\u63D2\u5165\u60AC\u6D6E\u5143\u7D20 +Table=\u8868 +TableData=\u6570\u636E\u96C6 +TableData_Dynamic_Parameter_Setting=\u52A8\u6001\u53C2\u6570\u6CE8\u5165 +TableData_Query=\u6570\u636E\u67E5\u8BE2 +TableDismember=\u5236\u8868\u7B26 +Table_name=\u8868\u7684\u540D\u79F0 +TaipeiCity=\u53F0\u5317\u5E02 +Taiwan=\u53F0\u6E7E\u7701 +TaiyuanCity=\u592A\u539F\u5E02 +Task=\u4EFB\u52A1 +TaskEndWhenOneTime=\u4EFB\u52A1\u6267\u884C\u4E00\u6B21\u540E\u5373\u7ED3\u675F +TaskName=\u4EFB\u52A1\u540D\u79F0 +Task_Has_Been_Closed=\u8FD9\u4E2A\u4EFB\u52A1\u5DF2\u7ECF\u5173\u95ED +Task_List_Chosen=\u5DF2\u9009\u4EFB\u52A1\u5217\u8868 +Task_List_To_Choose=\u53EF\u9009\u4EFB\u52A1\u5217\u8868 +Task_Name_Exist=\u4EFB\u52A1\u540D\u79F0\u5DF2\u7ECF\u5B58\u5728 +Template=\u6A21\u7248 +Template-Design=\u6A21\u677F\u8BBE\u8BA1 +Template_Parameters=\u6A21\u677F\u53C2\u6570 +Template_Path=\u6A21\u677F\u8DEF\u5F84 +TemplatedatasourceSameWarning=\u6A21\u677F\u6570\u636E\u96C6\u4E2D\u6709\u6570\u636E\u96C6\u540D\u5B57\u91CD\u590D\uFF0C\u8BF7\u4FEE\u6539\uFF01 +Test=\u6D4B\u8BD5 +Test_URL=\u6D4B\u8BD5\u8FDE\u63A5 +Test_Value=\u793A\u4F8B\u6570\u636E +Text=\u6587\u672C +Text_IsVertical=\u7AD6\u6392 +The_Columns_Hava_Relations_Whether_Add=\u68C0\u6D4B\u5230\u6570\u636E\u5217\u4E4B\u95F4\u6709\u8FC7\u6EE4\u5173\u7CFB\uFF0C\u662F\u5426\u6DFB\u52A0 +The_Num=\u7B2C +The_current_list_is_empty=\u5F53\u524D\u5217\u8868\u4E3A\u7A7A +The_file_is_already_selected.=\u8FD9\u4E2A\u6587\u4EF6\u5DF2\u7ECF\u88AB\u9009\u62E9 +The_file_is_already_slected.=\u8BE5\u6587\u4EF6\u5DF2\u9009\u62E9 +The_file_name_already_exists_,_override_it_?=\u8BE5\u6587\u4EF6\u540D\u5DF2\u5B58\u5728\uFF0C\u8981\u8986\u76D6\u5B83\u5417\uFF1F +The_initial_background_of_the_button=\u6309\u94AE\u7684\u521D\u59CB\u80CC\u666F +ThereIs_No_keyword_Named=\u6CA1\u6709\u67E5\u8BE2\u5230\u5173\u952E\u5B57\u4E3A +These_Parameters\ haven't\ produced\ Widgets=\u4EE5\u4E0B\u53C2\u6570\u672A\u751F\u6210 +Thick_Bottom_Border_Line=\u7C97\u5E95\u6846\u7EBF +This_Name_Has_Exsit=\u8FD9\u4E2A\u540D\u5B57\u5DF2\u7ECF\u5B58\u5728 +This_Parameter_Is_Not_Exist=\u6B64\u53C2\u6570\u4E0D\u5B58\u5728 +This_ScheduleAction_Cannot_Be_Viewed=\u8FD9\u4E2A\u5B9A\u65F6\u52A8\u4F5C\u65E0\u6CD5\u67E5\u770B +This_ScheduleAction_Is_Not_Exsit=\u8FD9\u4E2A\u5B9A\u65F6\u52A8\u4F5C\u4E0D\u5B58\u5728 +This_ScheduleTask_Is_Not_Exsit=\u8FD9\u4E2A\u5B9A\u65F6\u4EFB\u52A1\u4E0D\u5B58\u5728 +This_Template_Has_Exist=\u8FD9\u4E2A\u6A21\u677F\u5DF2\u7ECF\u5B58\u5728 +This_product_is_licensed_to=\u672C\u8F6F\u4EF6\u4F7F\u7528\u6743\u5C5E\u4E8E +This_program_is_protected_by_international_copyright_laws=\u672C\u8F6F\u4EF6\u53D7\u4E2D\u56FD\u7248\u6743\u6CD5\u53CA\u56FD\u9645\u7248\u6743\u516C\u7EA6\u4FDD\u62A4 +ThreeD_Bar_Chart=\u4E09\u7EF4\u67F1\u5F62\u56FE +ThreeD_Bar_Chart_Horizontal=\u4E09\u7EF4\u67F1\u5F62\u56FE(\u6A2A\u5411) +ThreeD_Column_Chart=\u4E09\u7EF4\u6761\u5F62\u56FE +ThreeD_Column_Chart_Horizontal=\u4E09\u7EF4\u6761\u5F62\u56FE(\u6A2A\u5411) +ThreeD_Percent_Stacked_Bar_Chart=\u4E09\u7EF4\u767E\u5206\u6BD4\u5806\u79EF\u67F1\u5F62\u56FE +ThreeD_Percent_Stacked_Column_Chart=\u4E09\u7EF4\u767E\u5206\u6BD4\u5806\u79EF\u6761\u5F62\u56FE +ThreeD_Stacked_Bar_Chart=\u4E09\u7EF4\u5806\u79EF\u67F1\u5F62\u56FE +ThreeD_Stacked_Column_Chart=\u4E09\u7EF4\u5806\u79EF\u6761\u5F62\u56FE +Three_Rows_Of_Three_Grid=\u4E09\u884C\u4E09\u5217\u7684\u683C\u5B50 +Three_Rows_Of_Two_Grid=\u4E09\u884C\u4E24\u5217\u7684\u683C\u5B50 +Thu=\u56DB +Tianjin=\u5929\u6D25 +TianjinInCity=\u5929\u6D25\u5E02\u533A +Tick\ Interval=\u523B\u5EA6\u95F4\u9694 +Time=\u65F6\u95F4 +TimesSum=\u6B21\u6570 +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 +Title=\u6807\u9898 +Title-Background=\u6807\u9898\u80CC\u666F +Title-Content=\u6807\u9898\u5185\u5BB9 +Title-Format=\u6807\u9898\u683C\u5F0F +Title_End_ColumnOrRow=\u91CD\u590D\u884C\u5217\u7ED3\u5C3E +Title_Name=\u6807\u9898\u540D +Title_Start_ColumnOrRow=\u91CD\u590D\u884C\u5217\u8D77\u59CB +To=\u5230 +Today=\u4ECA\u5929 +ToolBar_Bottom=\u5E95\u90E8\u5DE5\u5177\u680F +ToolBar_Top=\u9876\u90E8\u5DE5\u5177\u680F +Tooltips=\u63D0\u793A +Top=\u4E0A +TopDownShade=\u4E0A\u4E0B\u6E10\u53D8 +TopNavigation=\u9876\u90E8\u5BFC\u822A\u680F +Top_And_Double_Bottom_Border_Line=\u4E0A\u6846\u7EBF\u548C\u53CC\u4E0B\u6846\u7EBF +Top_And_Thick_Bottom_Border_Line=\u4E0A\u6846\u7EBF\u548C\u7C97\u4E0B\u6846\u7EBF +Top_Bottom_Border_Line=\u4E0A\u4E0B\u6846\u7EBF +Top_Margin=\u4E0A\u8FB9\u8DDD +Total=\u603B\u5171 +Traditional_Chinese_Language=\u7E41\u4F53\u4E2D\u6587 +Transition=\u5206\u652F +Transmission_Encryption=\u4F20\u8F93\u52A0\u5BC6 +Transparent=\u900F\u660E +Tree=\u6811 +Tree-ComboBox=\u4E0B\u62C9\u6811 +Tree-Filter_Condition=\u8FC7\u6EE4\u6761\u4EF6 +Tree-Grade=\u5C42 +Tree-Height=\u9AD8\u5EA6 +Tree-Mutiple_Selection_Or_Not=\u591A\u9009 +Tree-Return_Full_Path=\u7ED3\u679C\u8FD4\u56DE\u5B8C\u6574\u5C42\u6B21\u8DEF\u5F84 +Tree-Root_Name=\u6839\u8282\u70B9\u540D +Tree-Select_Leaf_Only=\u53EA\u8FD4\u56DE\u53F6\u5B50\u8282\u70B9 +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 +Tree-Show_Root_Or_Not=\u662F\u5426\u663E\u793A\u6839\u8282\u70B9 +Tree-Width=\u5BBD\u5EA6 +Tree_Data_Field=\u6811\u6570\u636E\u5B57\u6BB5 +Trillion=\u5146 +TrueExtraRunTimes=\u6B63\u786E\u7684\u989D\u5916\u6267\u884C\u6B21\u6570 +TrueFormatIs=\u6B63\u786E\u683C\u5F0F\u4E3A +TrueRunInterval=\u6B63\u786E\u7684\u8FD0\u884C\u95F4\u9694\u65F6\u95F4\u5355\u4F4D +TrueRunTimes=\u6B63\u786E\u7684\u8FD0\u884C\u6B21\u6570 +Tue=\u4E8C +TurnOff=\u5173\u95ED +TurnOn=\u5F00\u542F +TurnScreenVerticalToGetBestEffect=\u8BF7\u7FFB\u8F6C\u5C4F\u5E55\uFF0C\u7EB5\u5411\u663E\u793A\u6548\u679C\u66F4\u4F73 +Two_Rows_Of_Three_Grid=\u4E24\u884C\u4E09\u5217\u7684\u683C\u5B50 +Two_Rows_Of_Two_Grid=\u4E24\u884C\u4E24\u5217\u7684\u683C\u5B50 +Two_rows_of_two_grid= +Type=\u7C7B\u578B +Type-Parameter= \u60A8\u53EF\u4EE5\u952E\u5165${abc}\u4F5C\u4E3A\u4E00\u4E2A\u53C2\u6570\uFF0C\u8FD9\u91CCabc\u662F\u53C2\u6570\u7684\u540D\u79F0\u3002\u4F8B\u5982\uFF1A
+Type_Set=\u7C7B\u578B\u8BBE\u7F6E +URL_Certification=URL\u8BA4\u8BC1 +Undefined=\u672A\u5B9A\u4E49 +Undo=\u64A4\u9500 +Undo_Authority=\u64A4\u9500\u524D\u4E00\u6B21\u6743\u9650\u7F16\u8F91\u7684\u6240\u6709\u64CD\u4F5C +Unfrozen=\u89E3\u51BB +Unit=\u5355\u4F4D +Unit_Billion=\u5341\u4EBF +Unit_CM=\u5398\u7C73 +Unit_Hundred=\u767E +Unit_Hundred_Million=\u4EBF +Unit_Hundred_Thousand=\u5341\u4E07 +Unit_INCH=\u82F1\u5BF8 +Unit_MM=\u6BEB\u7C73 +Unit_Million=\u767E\u4E07 +Unit_PT=\u78C5 +Unit_Ten=\u5341 +Unit_Ten_Million=\u5343\u4E07 +Unit_Ten_Thousand=\u4E07 +Unit_Thousand=\u5343 +Unknown=\u672A\u77E5 +Unload_Check_Msg=\u6709\u6570\u636E\u6CA1\u6709\u63D0\u4EA4 +Unregistered=\u672A\u6CE8\u518C +Until=\u81F3 +Up=\u4E0A +UpBarBorderStyleAndColor=\u6DA8\u67F1\u6837\u5F0F +UpParent=\u4E0A\u7236\u683C +Update=\u66F4\u65B0 +Update_OfflineWrite_Lic=\u5F53\u524D\u7248\u672C\u4E0D\u652F\u6301\u8F93\u51FA\u79BB\u7EBFhtml\u62A5\u8868\uFF0C\u8BF7\u5347\u7EA7\u60A8\u7684lic +Uping_File=\u6B63\u5728\u4E0A\u4F20\u6587\u4EF6 +Upload=\u4E0A\u4F20 +Upload-Select_a_File=\u9009\u62E9\u6587\u4EF6 +UploadFileTip=\u63D0\u793A\uFF1A\u4E0A\u4F20\u56FE\u7247\u5C3A\u5BF8\u8BF7\u53C2\u7167\u79FB\u52A8\u8BBE\u5907\u5206\u8FA8\u7387 +Uploaded_File=\u8BE5\u6587\u4EF6\u5DF2\u4E0A\u4F20 +Url_location=\u7EDD\u5BF9\u8DEF\u5F84 +UrumqiCity=\u4E4C\u9C81\u6728\u9F50\u5E02 +Usable_ParameterList=\u53EF\u7528\u53C2\u6570\u5217\u8868 +Use=\u4F7F\u7528 +UseTreeWillRemoveUser=\u4F7F\u7528\u6811\u6570\u636E\u96C6\u4F1A\u6E05\u7A7A\u5DF2\u6709\u7528\u6237\u6570\u636E +Use_Current_Configuration=\u4F7F\u7528\u7684\u662F\u5F53\u524D\u914D\u7F6E +Use_Default_ToolBar=\u4F7F\u7528\u9ED8\u8BA4\u5DE5\u5177\u680F +Use_FormulaGroup=\u4F7F\u7528\u516C\u5F0F\u5206\u7EC4 +Use_Global_Configuration=\u4F7F\u7528\u7684\u662F\u5168\u5C40\u914D\u7F6E +Use_NormalGroup=\u4F7F\u7528\u666E\u901A\u5206\u7EC4 +Use_Semantic=\u4F7F\u7528\u8BED\u4E49\u5C42 +Use_ToolBar=\u4F7F\u7528\u5DE5\u5177\u680F +User=\u7528\u6237 +User-DefinedType=\u81EA\u5B9A\u4E49\u7C7B\u578B +User-defined=\u81EA\u5B9A\u4E49 +User-defined-MDX=\u81EA\u5B9A\u4E49MDX\u67E5\u8BE2 +User_Already_Logged=\u7528\u6237\u5DF2\u5728\u522B\u5904\u767B\u5F55 +User_Authentification_Mode=\u7528\u6237\u8BA4\u8BC1\u65B9\u5F0F +User_Defined_Event=\u81EA\u5B9A\u4E49\u4E8B\u4EF6 +User_Information=\u7528\u6237\u4FE1\u606F +User_TableData=\u7528\u6237\u6570\u636E\u96C6 +Username=\u7528\u6237\u540D +Using_Global_Offset=\u4F7F\u7528\u5168\u5C40\u504F\u79FB\u8BBE\u7F6E +Using_Server_Report_View_Settings=\u91C7\u7528\u670D\u52A1\u5668\u8BBE\u7F6E +Using_single_template_set=\u4F7F\u7528\u5355\u6A21\u677F\u504F\u79FB +Utils-Activate_Designer=\u6FC0\u6D3B\u8BBE\u8BA1\u5668 +Utils-Actual_Value=\u5B9E\u9645\u503C +Utils-Add_Column=\u6DFB\u52A0\u5217 +Utils-Add_Row=\u6DFB\u52A0\u884C +Utils-All_Sheets=\u6240\u6709\u7684Sheet +Utils-Append_Column=\u6DFB\u52A0\u884C +Utils-Append_Row=\u6DFB\u52A0\u884C +Utils-Are_you_sure_to_delete_the_role=\u786E\u5B9E\u8981\u5220\u9664\u8BE5\u89D2\u8272\u5417 +Utils-Are_you_sure_to_refresh_all=\u5237\u65B0\u6240\u6709\u884C\u5C06\u5220\u9664\u60A8\u6240\u6709\u7684\u884C\u8BBE\u7F6E\uFF0C\u786E\u5B9A\u7EE7\u7EED +Utils-Are_you_sure_to_remove_the_selected_item=\u4F60\u786E\u5B9E\u51B3\u5B9A\u5220\u9664\u9009\u4E2D\u7684\u9879 +Utils-Available_Columns=\u53EF\u9009\u5217 +Utils-Available_DataSets=\u53EF\u7528\u6570\u636E\u96C6 +Utils-Beyond_the_bottom_side_of_Border=\u8D85\u51FA\u4E0B\u8FB9\u754C +Utils-Beyond_the_left_side_of_Border=\u8D85\u51FA\u5DE6\u8FB9\u754C +Utils-Beyond_the_right_side_of_Border=\u8D85\u51FA\u53F3\u8FB9\u754C +Utils-Beyond_the_top_side_of_Border=\u8D85\u51FA\u4E0A\u8FB9\u754C +Utils-Bottom_to_Top=\u4ECE\u4E0B\u5230\u4E0A +Utils-Can't_Paste_to_Uneditable_Area=\u4E0D\u5141\u8BB8\u526A\u5207\u5230\u4E0D\u53EF\u7F16\u8F91\u7684\u533A\u57DF +Utils-Can_not_create_connection=\u65E0\u6CD5\u5EFA\u7ACB\u6570\u636E\u8FDE\u63A5 +Utils-Can_not_find_the_corresponding_TableData=\u672A\u627E\u5230\u5BF9\u5E94\u7684\u6570\u636E\u96C6 +Utils-Check_Data_Consistency=\u6570\u636E\u4E00\u81F4\u6027\u6821\u9A8C +Utils-Click_the_database_button_to_add_database=\u70B9\u51FB\u6570\u636E\u6309\u94AE\u6765\u6DFB\u52A0\u6570\u636E\u5E93 +Utils-Click_the_left_plus_button_to_add_item=\u70B9\u51FB\u5DE6\u8FB9\u7684\u52A0\u53F7\u6309\u94AE\u6765\u6DFB\u52A0\u9879\u76EE +Utils-Click_the_left_plus_button_to_add_tree_node=\u70B9\u51FB\u5DE6\u8FB9\u7684\u52A0\u53F7\u6765\u6DFB\u52A0\u6811\u8282\u70B9 +Utils-Column_Name=\u5217\u540D +Utils-Column_Serial_Number=\u5217\u5E8F\u53F7 +Utils-Column_Width=\u5217\u5BBD +Utils-Connection_can_not_be_null=\u6570\u636E\u8FDE\u63A5\u4E0D\u53EF\u4E3A\u7A7A +Utils-Current_Cell=\u5F53\u524D\u683C\u5B50 +Utils-Current_Column=\u5F53\u524D\u5217 +Utils-Current_Row=\u5F53\u524D\u884C +Utils-Current_Sheet=\u5F53\u524DSheet +Utils-Current_Value=\u5F53\u524D\u503C +Utils-Data_consistency_check_successfully_Passed=\u6210\u529F\u901A\u8FC7\u6570\u636E\u4E00\u81F4\u6027\u68C0\u9A8C +Utils-Default_Value=\u9ED8\u8BA4\u503C +Utils-Delete_Column=\u5220\u9664\u5217 +Utils-Delete_Directory=\u5220\u9664\u76EE\u5F55 +Utils-Delete_Record=\u5220\u9664\u8BB0\u5F55 +Utils-Delete_Row=\u5220\u9664\u884C +Utils-Design-Action_Cancel=\u53D6\u6D88 +Utils-Design-File_Open=\u6253\u5F00 +Utils-Display_Value=\u663E\u793A\u503C +Utils-Enter_reportlet_name_prefix_or_pattern=\u8F93\u5165\u62A5\u8868\u6A21\u677F\u524D\u7F00\u6216\u8005\u6A21\u5F0F +Utils-Exit_Designer=\u9000\u51FA\u8BBE\u8BA1\u5668 +Utils-File_name=\u6587\u4EF6\u540D +Utils-File_type=\u6587\u4EF6\u7C7B\u578B +Utils-Flash_Print[Client]=Flash\u6253\u5370[\u5BA2\u6237\u7AEF] +Utils-Font_Not_Found=\u672A\u627E\u5230\u5B57\u4F53 +Utils-Global_Parameters= +Utils-Group_Detail= +Utils-Group_Footer= +Utils-Group_Header= +Utils-Import_Excel_Data=\u5BFC\u5165[Excel] +Utils-Insert_Column=\u63D2\u5165\u5217 +Utils-Insert_Record=\u63D2\u5165\u8BB0\u5F55 +Utils-Insert_Row=\u63D2\u5165\u884C +Utils-Last_Page=\u6700\u540E\u4E00\u9875 +Utils-Left_to_Right=\u6A2A\u5411 +Utils-Left_to_Right_a=\u4ECE\u5DE6\u5F80\u53F3 +Utils-Matching_Items=\u5339\u914D\u9879\u76EE +Utils-Merge_Cell=\u5408\u5E76\u5355\u5143\u683C +Utils-Merge_datasource_files_successfully=\u5408\u5E76\u6570\u636E\u6E90\u6587\u4EF6\u6210\u529F +Utils-Move_Down=\u4E0B\u79FB +Utils-Move_To=\u79FB\u5230 +Utils-Move_Up=\u4E0A\u79FB +Utils-Need_to_select_a_datasource_file=\u9700\u8981\u9009\u62E9\u4E00\u4E2A\u6570\u636E\u6E90\u6587\u4EF6 +Utils-NewDemoEnv=\u4EA7\u54C1\u6F14\u793A\uFF0C\u5C06\u4E3A\u60A8\u81EA\u52A8\u521B\u5EFA\u5DE5\u4F5C\u76EE\u5F55\uFF1A +Utils-New_Directory= +Utils-New_Report=\u65B0\u5EFA\u62A5\u8868 +Utils-New_name_cannot_be_null=\u65B0\u540D\u5B57\u4E0D\u5141\u8BB8\u4E3A\u7A7A\u5B57\u7B26\u4E32 +Utils-No_Data=\u6CA1\u6709\u6570\u636E +Utils-No_File_Selected=\u6CA1\u6709\u9009\u62E9\u6587\u4EF6 +Utils-No_Pagination=\u4E0D\u5206\u9875 +Utils-Now_create_connection=\u6B63\u5728\u5EFA\u7ACB\u6570\u636E\u8FDE\u63A5 +Utils-Only_Rename_File_Under_Reportlets=\u4EC5\u91CD\u547D\u540D\u5728reportlets\u76EE\u5F55\u4E0B\u7684\u6587\u4EF6 +Utils-OpenDemoEnv=\u4EA7\u54C1\u6F14\u793A\uFF0C\u9700\u8981\u81EA\u52A8\u5207\u6362\u81F3\u5DE5\u4F5C\u76EE\u5F55\uFF1A +Utils-Open_File=\u6253\u5F00\u6587\u4EF6 +Utils-PDF_Print[Client]=PDF\u6253\u5370[\u5BA2\u6237\u7AEF] +Utils-Print[Client]=\u6253\u5370[\u5BA2\u6237\u7AEF] +Utils-Print[PDF]=\u6253\u5370[PDF] +Utils-Print[Server]=\u6253\u5370[\u670D\u52A1] +Utils-Remove_Row=\u5220\u9664\u8BB0\u5F55 +Utils-Rename_Column=\u91CD\u547D\u540D\u5217 +Utils-Rename_File=\u6587\u4EF6\u91CD\u547D\u540D +Utils-Repeat_ReportFooter=\u91CD\u590D\u8868\u811A +Utils-Report-Env_Directory=\u62A5\u8868\u5DE5\u4F5C\u76EE\u5F55 +Utils-Report_Footer=\u62A5\u8868\u811A +Utils-Report_Header=\u62A5\u8868\u7709 +Utils-Report_Name=\u62A5\u8868\u540D +Utils-Report_Runtime_Env=\u62A5\u8868\u5DE5\u4F5C\u76EE\u5F55 +Utils-Resign_in=\u91CD\u767B\u5F55 +Utils-Right_to_Left=\u4ECE\u53F3\u5230\u5DE6 +Utils-Row_Height=\u884C\u9AD8 +Utils-Segment_Not_existed=\u4E0D\u5B58\u5728\u8868\u5B57\u6BB5 +Utils-Selected_Option=\u5DF2\u9009\u9879 +Utils-Server_Parameters=\u670D\u52A1\u5668\u53C2\u6570 +Utils-Set_ClassPath=\u8BBE\u7F6EClasspath\u8DEF\u5F84 +Utils-Set_Default=\u8BBE\u7F6E\u4E3A\u9ED8\u8BA4 +Utils-Set_Default_Database=\u8BBE\u4E3A\u9ED8\u8BA4\u6570\u636E\u5E93 +Utils-Should_select_a_template_first=\u5FC5\u987B\u5148\u9009\u62E9\u4E00\u5F20\u6A21\u677F +Utils-Show_Cell_Value=\u663E\u793A\u5355\u5143\u683C\u503C +Utils-Show_View=\u89C6\u56FE +Utils-Source_File=\u6E90\u6587\u4EF6 +Utils-Submit=\u63D0\u4EA4 +Utils-Submit_Forcibly=\u5F3A\u884C\u63D0\u4EA4 +Utils-Switch_To_Class_Reportlet=\u5207\u6362\u5230\u7A0B\u5E8F\u7F51\u7EDC\u62A5\u8868 +Utils-Switch_To_Template_Reportlet=\u5207\u6362\u5230\u6A21\u677F\u7F51\u7EDC\u62A5\u8868 +Utils-Template_File=\u6A21\u677F\u6587\u4EF6 +Utils-The-Chart=\u56FE\u8868 +Utils-The-Form=\u8868\u5355 +Utils-The-PolyReport=\u805A\u5408\u62A5\u8868 +Utils-The-WorkBook=\u6A21\u677F +Utils-The_Name_has_been_existed=\u6B64\u540D\u5DF2\u7ECF\u5B58\u5728 +Utils-The_data_dictionary_is_not_exist=\u6570\u636E\u5B57\u5178\u4E0D\u5B58\u5728 +Utils-The_private_table_has_been_existed=\u6B64\u79C1\u6709\u6570\u636E\u8868\u5DF2\u7ECF\u5B58\u5728 +Utils-The_selected_reportlet_do_not_contain_any_parameter=\u9009\u62E9\u7684\u7F51\u7EDC\u62A5\u8868\u4E0D\u5305\u542B\u4EFB\u4F55\u53C2\u6570 +Utils-The_selected_reportlet_is_not_a_reportlet_,_=\u60A8\u9009\u62E9\u7684\u6587\u4EF6\u4E0D\u662F\u62A5\u8868\u6A21\u677F\uFF0C\u4E0D\u80FD\u751F\u6210\u53C2\u6570 +Utils-This_file_has_been_existed=\u6B64\u6587\u4EF6\u5DF2\u7ECF\u5B58\u5728 +Utils-This_name_has_been_existed=\u6B64\u540D\u5DF2\u7ECF\u5B58\u5728 +Utils-Top_to_Bottom=\u7EB5\u5411 +Utils-Top_to_Bottom_a=\u4ECE\u4E0A\u5F80\u4E0B +Utils-Total_Option=\u53EF\u9009\u9879 +Utils-Unregistered_Version=\u672A\u6388\u6743\u7248\u672C(\u5305\u542B\u5168\u90E8\u529F\u80FD,\u4E0D\u5141\u8BB8\u7528\u4E8E\u5546\u4E1A\u76EE\u7684) +Utils-User_Definition=\u7528\u6237\u81EA\u5B9A\u4E49 +Utils-Would_you_like_to_save=\u4F60\u662F\u5426\u9700\u8981\u4FDD\u5B58 +Utils-Would_you_like_to_save_the_report= +Utils-You_will_rename_the_following_file=\u4F60\u8981\u91CD\u547D\u540D\u5982\u4E0B\u6587\u4EF6 +Utils-has_been_existed=\u5DF2\u5B58\u5728 +Utils-please_waiting=\u8BF7\u7A0D\u5019 +Utils-submitAll=\u6279\u91CF\u63D0\u4EA4 +Utils-switch=\n\u60A8\u5F53\u524D\u672A\u88AB\u4FDD\u5B58\u6587\u4EF6\u5C06\u88AB\u4FDD\u5B58\u5728\u5F53\u524D\u76EE\u5F55\u4E0B\uFF0C\n\u662F\u5426\u7EE7\u7EED\uFF1F +Utils_UnDelete_Column=\u64A4\u9500\u5220\u9664\u5217 +Utils_UnDelete_Row=\u64A4\u9500\u5220\u9664\u884C +Value=\u503C +Value_Not_Match=\u952E\u5165\u503C\u4E0D\u7B26\u5408\u89C4\u8303 +Value_Percent=\u503C\u6240\u5360\u6BD4\u4F8B +Values=\u503C +Values-Editor=\u503C\u7F16\u8F91\u5668 +Variables=\u53D8\u91CF +Verify=\u6821\u9A8C +Verify-Data_Verify=\u6570\u636E\u6821\u9A8C +Verify-Error_Information=\u6821\u9A8C\u51FA\u9519\u4FE1\u606F +Verify-Expression=\u6821\u9A8C\u516C\u5F0F +Verify-Formular_Parser_Error=\u516C\u5F0F\u89E3\u6790\u9519\u8BEF +Verify-Message=\u9519\u8BEF\u4FE1\u606F +Verify-ToolTips=\u4E0D\u6EE1\u8DB3\u516C\u5F0F\u63D0\u793A\u6821\u9A8C\u51FA\u9519\u4FE1\u606F +Verify-Verify=\u6570\u636E\u6821\u9A8C +Verify-Verify_Formula=\u6821\u9A8C\u516C\u5F0F +Verify-Verify_Result=\u6821\u9A8C\u7ED3\u679C +Verify-Verify_Success=\u6821\u9A8C\u6210\u529F +Verify_Error=\u6821\u9A8C\u51FA\u9519 +Verify_Fail=\u6821\u9A8C\u5931\u8D25 +Verifying=\u6821\u9A8C\u4E2D +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 +Version-does-not-support-map=\u60A8\u5F53\u524D\u4F7F\u7528\u7684lic\u4E0D\u652F\u6301\u5730\u56FE\u529F\u80FD\uFF0C\u8BF7\u5347\u7EA7\u60A8\u7684lic +Vertical=\u5782\u76F4 +Vertical-SplitPane=\u5DE6\u53F3\u5206\u5272\u5E03\u5C40\u9762\u677F +Vertical-Split_Layout=\u5782\u76F4\u5206\u5272\u5E03\u5C40 +VerticalBoxLayout=\u5782\u76F4\u76D2\u5B50\u5E03\u5C40 +Vertical_Layout=\u5782\u76F4\u5E03\u5C40 +Vgap=\u5782\u76F4\u95F4\u9699 +View_Combo=\u4E0B\u62C9\u89C6\u56FE +Visibility=\u53EF\u89C1\u6027 +Visit=\u8BBF\u95EE +VisitTime=\u8BBF\u95EE\u65F6\u95F4 +WARNING-Fail_to_Delete_Cache_File=\u5220\u9664\u672C\u5730\u7F13\u5B58\u6587\u4EF6\u5931\u8D25 +WEB-Pagination_Setting=\u5206\u9875\u9884\u89C8\u8BBE\u7F6E +WEB-Write_Setting=\u586B\u62A5\u9875\u9762\u8BBE\u7F6E +WF-Assigned_Role=\u6307\u5B9A\u89D2\u8272 +WF-Assigned_User=\u6307\u5B9A\u7528\u6237 +WF-Auto_Task_Node=\u81EA\u52A8\u4EFB\u52A1\u8282\u70B9 +WF-Basis=\u57FA\u672C\u5C5E\u6027 +WF-Communion_Task_Node=\u4EA4\u4E92\u4EFB\u52A1\u8282\u70B9 +WF-Description=\u63CF\u8FF0 +WF-End_Node=\u7ED3\u675F\u8282\u70B9 +WF-Equal=\u540C\u7EA7 +WF-ID=\u7F16\u53F7 +WF-Junior=\u4E0B\u7EA7 +WF-Name=\u540D\u79F0 +WF-Previous_User=\u5148\u524D\u7528\u6237 +WF-Previous_User_Relation=\u4E0E\u5148\u524D\u7528\u6237\u5173\u7CFB +WF-Privilege_Setting=\u6743\u9650\u8BBE\u7F6E +WF-Reportlet_Field=\u6765\u81EA\u7F51\u7EDC\u62A5\u8868\u6307\u5B9A\u533A\u57DF +WF-Reportlet_Info=\u7F51\u7EDC\u62A5\u8868\u4FE1\u606F +WF-Router_Task_Node=\u8DEF\u7531\u4EFB\u52A1\u8282\u70B9 +WF-Select_Field=\u9009\u62E9\u533A\u57DF +WF-Start_Node=\u5F00\u59CB\u8282\u70B9 +WF-Superior=\u4E0A\u7EA7 +WF-Transition=\u8FC1\u79FB +WF-Work_Flow=\u5DE5\u4F5C\u6D41 +WLayout-Absolute-ToolTips=\u81EA\u7531\u5F0F\u5E03\u5C40\uFF0C\u53EF\u4EE5\u5728\u5E03\u5C40\u5185\u4EFB\u610F\u4F4D\u7F6E\u6DFB\u52A0\u63A7\u4EF6 +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 +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 +WLayout-Border-ToolTips=\u5B8C\u6574\u7684\u8FB9\u754C\u5E03\u5C40\u5BB9\u5668\uFF0C\u7531\u4E1C\u5357\u897F\u5317\u4E2D\u4E94\u5757\u5171\u540C\u6784\u6210\uFF0C\n\u5176\u4E2D\u5357\u5317\u5757\u53EF\u4EE5\u6839\u636E\u9700\u8981\u8C03\u6574\u9AD8\u5EA6\uFF0C\u4E1C\u897F\u5757\u53EF\u4EE5\u6839\u636E\u9700\u8981\u8C03\u6574\u5BBD\u5EA6\u3002 +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 +WLayout-Card-ToolTips=\u5361\u7247\u5F0F\u5E03\u5C40\uFF0C\u8BE5\u5E03\u5C40\u5BB9\u5668\u4E2D\u53EF\u4EE5\u6DFB\u52A0\u591A\u4E2A\u5176\u5B83\u7EC4\u4EF6\uFF0C\u5E76\u901A\u8FC7\u8BBE\u7F6E\u4EE5\u5C55\u793A\u5176\u4E2D\u7684\u4E00\u4E2A +WLayout-Grid-ToolTips=\u7F51\u683C\u5F0F\u5E03\u5C40\uFF0C\u53EF\u901A\u8FC7\u8BBE\u7F6E\u5C06\u6574\u4E2A\u5BB9\u5668\u5E73\u5747\u5206\u6210N\u884C,N\u5217 +WLayout-Horizontail-ToolTips=\u6C34\u5E73\u6D41\u5F0F\u5E03\u5C40\uFF0C\u8BE5\u5E03\u5C40\u5BB9\u5668\u4E2D\u53EF\u4EE5\u6DFB\u52A0\u591A\u4E2A\u5176\u5B83\u7EC4\u4EF6\uFF0C\u6839\u636E\u8BBE\u5B9A\u4ECE\u5DE6\u5230\u53F3\u3001\u5C45\u4E2D\u6216\u8005\u4ECE\u53F3\u5230\u5DE6\u5206\u5E03 +WLayout-Split-ToolTips=\u6309\u7167\u6BD4\u7387\u53EF\u4EE5\u5C06\u5E03\u5C40\u5206\u5272\u4E24\u90E8\u5206 +WLayout-Vertical-ToolTips=\u5782\u76F4\u6D41\u5F0F\u5E03\u5C40\uFF0C\u8BE5\u5E03\u5C40\u5BB9\u5668\u4E2D\u53EF\u4EE5\u6DFB\u52A0\u591A\u4E2A\u5176\u5B83\u7EC4\u4EF6\uFF0C\u6839\u636E\u8BBE\u5B9A\u4ECE\u4E0A\u5230\u4E0B\u3001\u6216\u8005\u5C45\u4E2D\u5206\u5E03 +Want_To_Cover_It=\u662F\u5426\u60F3\u8986\u76D6\u5B83 +Want_To_New_Parameter=\u662F\u5426\u60F3\u6DFB\u52A0\u53C2\u6570 +Waring_you=\u60A8\u9009\u4E2D\u4E86\u591A\u4E2A\u5355\u5143\u683C\uFF01 +Warning=\u8B66\u544A +Warning-Template_Do_Not_Exsit=\u6A21\u677F\u4E0D\u5B58\u5728 +Warnning=\u63D0\u9192 +WaterMark=\u6C34\u5370 +Web=\u7F51\u7EDC +Web-Please_input_parameter_vlaues= +Web-The_selected_directory_must_be_named_WEB-INF= +Web-URL=\u7F51\u7EDC\u8868\u5355\u6570\u636E\u6E90\u5730\u5740 +Web-WEB-INF_Directory= +Web_Apply=WEB\u5E94\u7528 +Web_Preview_Message=\u8BF7\u5C06\u6A21\u677F\u6587\u4EF6\u4FDD\u5B58\u5728\u5F53\u524D\u8FD0\u884C\u73AF\u5883\u76EE\u5F55\u4E0B +Web_Preview_Port=\u7AEF\u53E3\u53F7 +Web_Preview_Port-Conflict-Message1=\u5185\u7F6E\u670D\u52A1\u5668\u7AEF\u53E3( +Web_Preview_Port-Conflict-Message2=)\u540C\u60A8\u7684\u5176\u5B83\u7AEF\u53E3\u53D1\u751F\u51B2\u7A81\uFF0C\u8BF7\u8BBE\u7F6E\u4E00\u4E2A\u65B0\u7AEF\u53E3\u4EE5\u91CD\u542F\u670D\u52A1\u3002 +Web_Preview_Port_Setting=\u7AEF\u53E3\u8BBE\u7F6E +Wed=\u4E09 +Week=\u5468 +Weeks=\u4E2A\u661F\u671F +Welcome=\u6B22\u8FCE +Where_claus=\u8FC7\u6EE4\u6761\u4EF6 +Whether_Change_To_LayerReport=\u662F\u5426\u8F6C\u6362\u6210\u5C42\u5F0F\u62A5\u8868 +Whether_Query_Result_When_Paging_Preview_Timer=\u5206\u9875\u9884\u89C8\u662F\u5426\u67E5\u8BE2\u5B9A\u65F6\u5668\u7ED3\u679C +Whether_Reinstate_Report=\u662F\u5426\u6062\u590D\u539F\u6709\u62A5\u8868 +Widget=\u63A7\u4EF6 +Widget-Array=\u6570\u7EC4 +Widget-Chart_Widget_Config=\u56FE\u8868\u63A7\u4EF6 +Widget-Comb_Widget_Config=\u7EC4\u5408\u63A7\u4EF6 +Widget-Comb_Widget_Report_Path=\u7EC4\u5408\u63A7\u4EF6\u6A21\u677F\u8DEF\u5F84 +Widget-Custom_Widget_Config=\u81EA\u5B9A\u4E49\u63A7\u4EF6 +Widget-Data_URL=\u6570\u636EURL +Widget-Date_Selector_Return_Type=\u8FD4\u56DE\u503C\u7C7B\u578B +Widget-Default_Widget_Config=\u57FA\u672C\u63A7\u4EF6 +Widget-Disabled=\u4E0D\u53EF\u7528 +Widget-Form_Widget_Config=\u8868\u5355\u63A7\u4EF6 +Widget-Form_Widget_Container=\u8868\u5355\u5BB9\u5668 +Widget-Height=\u63A7\u4EF6\u9AD8\u5EA6 +Widget-Load_By_Async=\u5F02\u6B65\u52A0\u8F7D +Widget-Load_By_Complete=\u5B8C\u5168\u52A0\u8F7D +Widget-Load_Type=\u52A0\u8F7D +Widget-Multi_Report_Widget=\u62A5\u8868\u63A7\u4EF6 +Widget-NeedSubmit=\u9700\u8981\u63D0\u4EA4 +Widget-Parameter-Name=\u60A8\u53EF\u4EE5\u70B9\u51FB\u4E0B\u62C9\u6309\u94AE\u9009\u62E9\u53C2\u6570\u540D\u4F5C\u4E3A\u63A7\u4EF6\u540D\u5B57 +Widget-Report_Widget=\u5FAE\u578B\u62A5\u8868 +Widget-Role_Table_Tree=\u89D2\u8272\u8868\u683C\u6811\uFF0C\u8BE5\u63A7\u4EF6\u4EC5\u4EC5\u7528\u5728\u6743\u9650\u914D\u7F6E\u4E2D +Widget-Settings=\u63A7\u4EF6\u8BBE\u7F6E +Widget-Size=\u63A7\u4EF6\u5927\u5C0F +Widget-Sizing=\u5927\u5C0F\u8C03\u6574 +Widget-TreeNode=\u6811\u8282\u70B9\u6309\u94AE +Widget-TreeNode-Grade=\u5C42\u7EA7 +Widget-User_Defined=\u9884\u5B9A\u4E49 +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 +Widget-User_Defined_Widget_Config=\u9884\u5B9A\u4E49\u63A7\u4EF6 +Widget-Visible=\u53EF\u89C1 +Widget-Widget_Config=\u63A7\u4EF6\u914D\u7F6E +Widget-Widget_Css_Path=CSS\u6837\u5F0F\u8868\u8DEF\u5F84 +Widget-Widget_JS_Path=JavaScript\u8DEF\u5F84 +Widget-Widget_Type=\u63A7\u4EF6\u7C7B\u578B\u540D +Widget-Width=\u63A7\u4EF6\u5BBD\u5EA6 +WidgetDisplyPosition=\u63A7\u4EF6\u663E\u793A\u4F4D\u7F6E +Widget_Cascade=\u7EA7\u8054 +Width=\u5BBD +Window=\u7A97\u53E3 +Wizard=\u5411\u5BFC +Word=Word +WorkBook=\u5DE5\u4F5C\u7C3F +WorkSheet=\u81EA\u7531\u62A5\u8868 +Work_After_Restart_Designer=\u91CD\u542F\u8BBE\u8BA1\u5668\u540E\u751F\u6548 +World=\u4E16\u754C +World\ Map=\u4E16\u754C\u5730\u56FE +Write-Custom_Css_Style_Path=\u81EA\u5B9A\u4E49\u6837\u5F0F\u8868\u76F8\u5BF9\u8DEF\u5F84 +Write-Display\ Type\ After\ Edit=\u7F16\u8F91\u540E\u683C\u5B50\u7684\u503C\u663E\u793A\u4E3A\u63A7\u4EF6\u7684 +Write_Preview=\u586B\u62A5\u9884\u89C8 +Writer-ShortCuts_Setting=\u586B\u62A5\u5FEB\u6377\u952E\u8BBE\u7F6E +Writer_ShortCuts_Setting=\u586B\u62A5\u5FEB\u6377\u952E\u8BBE\u7F6E +WuhanCity=\u6B66\u6C49\u5E02 +X-Coordinate=\u6A2A\u5750\u6807 +XMLA=\u591A\u7EF4\u6570\u636E\u5E93 +XMLA_Explain=\u5728\u4F7F\u7528\u591A\u7EF4\u6570\u636E\u96C6\u53D6\u6570\u524D\uFF0C\u60A8\u9996\u5148\u9700\u8981\u4E00\u4E2A\u53EF\u6210\u529F\u8FDE\u63A5\u7684\u591A\u7EF4\u6570\u636E\u5E93\u8FDE\u63A5\u3002\n\u8BBE\u7F6E\u5B8C\u6570\u636E\u8FDE\u63A5\u540E\uFF0C\u67E5\u8BE2\u6570\u636E\u65F6,\u6709\u4E24\u79CD\u4E0D\u540C\u7684\u53D6\u6570\u624B\u6BB5\u3002\n1.\u7B80\u5355\u901A\u7528\u67E5\u8BE2\uFF1A\n\u7B80\u5355\u901A\u7528\u67E5\u8BE2\u9002\u7528\u4E8EFineBI\u53CA\u5176\u4ED6\u591A\u7EF4\u6570\u636E\u5E93\u3002\n\u4F7F\u7528\u7B80\u5355\u901A\u7528\u67E5\u8BE2\uFF0CFR\u5C06\u81EA\u52A8\u8BFB\u53D6\u9009\u62E9cube\u7684\u5C42\u6B21\u7ED3\u6784\uFF0C\u60A8\u53EF\u4EE5\u76F4\u63A5\u9009\u62E9\u6240\u9700\u7684\u5EA6\u91CF\u503C\u53CA\u7EF4\u5EA6\uFF0C\u5E76\u6DFB\u52A0\u7B5B\u9009\u6761\u4EF6\uFF0CFR\u4F1A\u6839\u636E\u60A8\u7684\u9009\u62E9\u81EA\u52A8\u67E5\u8BE2\u6570\u636E\u3002\n\u7B80\u5355\u901A\u7528\u67E5\u8BE2\u4EC5\u652F\u6301\u7EF4\u5EA6\u53CA\u5EA6\u91CF\u503C\u4E24\u4E2A\u8F74\u7684\u67E5\u8BE2\u3002\n\u5728\u5EA6\u91CF\u503C\u53CA\u7EF4\u5EA6\u8BBE\u7F6E\u4E2D\uFF0C\u76EE\u524D\u60A8\u53EA\u80FD\u9009\u62E9\u6240\u9700\u7EF4\u5EA6\uFF0C\u65E0\u6CD5\u624B\u52A8\u4FEE\u6539\u3002\n\u8FC7\u6EE4\u6761\u4EF6\u91C7\u7528OPEN SQL\u8BED\u6CD5\uFF0C\u60A8\u53EF\u4EE5\u952E\u5165${abc}\u4F5C\u4E3A\u4E00\u4E2A\u53C2\u6570\uFF0C\u7528\u6CD5\u540C\u6570\u636E\u5E93\u6570\u636E\u96C6\u3002\n2.\u81EA\u5B9A\u4E49MDX\u67E5\u8BE2\uFF1A\n\u4F7F\u7528\u81EA\u5B9A\u4E49MDX\u67E5\u8BE2\uFF0C\u60A8\u53EF\u4EE5\u81EA\u5B9A\u4E49MDX\u8BED\u53E5\u67E5\u8BE2\u6240\u9700\u7ED3\u679C\u3002\n\u6CE8\u610F\uFF0C\u81EA\u5B9A\u4E49MDX\u67E5\u8BE2\u4E5F\u53EA\u652F\u6301\u4E24\u4E2A\u8F74\u7684\u67E5\u8BE2\u3002\n\u60A8\u53EF\u952E\u5165${abc}\u505A\u4E3A\u4E00\u4E2A\u53C2\u6570\uFF0C\u7528\u6CD5\u540C\u6570\u636E\u5E93\u6570\u636E\u96C6\u3002\nFineBI\u7684cube\u4E0D\u652F\u6301MDX\u67E5\u8BE2\u3002 +XML_File_Cannot_Be_Resolved=xml\u6587\u4EF6\u65E0\u6CD5\u89E3\u6790 +XML_TREE_Wait=\u7B49\u5F85\u5237\u65B0 +XML_XPath_Message=\u70B9\u51FB\u5DE6\u4FA7\u6811\u8282\u70B9\u9009\u62E9 +X_Axis=X\u8F74 +X_offset=X\u65B9\u5411\u504F\u79FB +XianCity=\u897F\u5B89\u5E02 +Xianggang=\ \u9999\u6E2F\u7279\u522B\u884C\u653F\u533A +XiningCity=\u897F\u5B81\u5E02 +Xinjiang=\u65B0\u7586\u7EF4\u543E\u5C14\u81EA\u6CBB\u533A +Xizang=\u897F\u85CF\u81EA\u6CBB\u533A +Y-Coordinate=\u7EB5\u5750\u6807 +Y_Axis=Y\u8F74 +Y_offset=Y\u65B9\u5411\u504F\u79FB +Year=\u5E74 +Yes=\u662F +YinchuanCity=\u94F6\u5DDD\u5E02 +Yong-Style=\u6E05\u65B0 +You_Choose_An_Empty_Directory=\u4F60\u6240\u9009\u76EE\u5F55\u662F\u7A7A\u7684 +You_are_using_unregisted_function=\u9519\u8BEF\u4EE3\u7801\:1116 \u60A8\u4F7F\u7528\u4E86\u672A\u6CE8\u518C\u7684\u529F\u80FD +You_have_not_made_a_report=\u60A8\u8FD8\u6CA1\u6709\u5236\u4F5C\u62A5\u8868 +Yuan=\u5143 +Yunnan=\u4E91\u5357\u7701 +Zhejiang=\u6D59\u6C5F\u7701 +ZhengzhouCity=\u90D1\u5DDE\u5E02 +Zhongxi=\u4E2D\u897F\u533A +__BYPAGESIZE__=\u5206\u9875\u7684\u65F6\u5019\u6309\u4EC0\u4E48\u7EB8\u5F20\u5927\u5C0F\u5206\u9875 +__CUMULATE_PAGE_NUMBER__=reportlets\u8BBF\u95EE\u591A\u6A21\u677F\u65F6\u662F\u5426\u7D2F\u79EF\u9875\u7801 +__FILENAME__=\u62A5\u8868\u5BFC\u51FA\u7684\u81EA\u5B9A\u4E49\u6587\u4EF6\u540D +__FLASH_FIRSTPAGEMARK__=Flash\u6253\u5370\u7528\u9014 +__ISDEBUG__=\u662F\u5426\u8C03\u8BD5 +__ISJMETER__=\u662F\u5426JMETER\u6D4B\u8BD5 +__PARAMETERS__=\u7528JSON\u683C\u5F0F\u8868\u793A\u7684\u8BBF\u95EE\u53C2\u6570 +__PI__=\u662F\u5426\u663E\u793A\u53C2\u6570\u754C\u9762 +__SHOWTOOLBAR__=\u662F\u5426\u663E\u793A\u5DE5\u5177\u680F +__SINGLESHEET__=\u662F\u5426\u5355\u9875\u663E\u793A +__locale__=\u6D4F\u89C8\u5668\u56FD\u9645\u5316\u53C2\u6570 +add=\u6DFB\u52A0 +add_schedule_task=\u6DFB\u52A0\u5B9A\u65F6\u4EFB\u52A1 +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. +alraedy_close=\u5DF2\u7ECF\u5173\u95ED +already-saved=\u5DF2\u7ECF\u4FDD\u5B58 +already_exists=\u5DF2\u7ECF\u5B58\u5728 +and=\u548C +baseModule=\u57FA\u7840\u6A21\u5757 +can_not_include_underline=\u4E0D\u80FD\u5305\u542B"_" +chart-PreStyle=\u56FE\u8868\u9884\u5B9A\u4E49\u914D\u8272 +chartDesignerModule=\u8BBE\u8BA1\u5668\u56FE\u8868\u6A21\u5757 +chartModule=\u56FE\u8868\u6A21\u5757 +check_communication=\u8BF7\u68C0\u67E5\u7F51\u7EDC\u901A\u8BAF\u662F\u5426\u6B63\u5E38\u53CA\u670D\u52A1\u5668\u662F\u5426\u6B63\u5E38\u8FD0\u884C +choose_schedule_type=\u8BF7\u9009\u62E9\u5B9A\u65F6\u4EFB\u52A1\u7684\u7C7B\u578B +clickToCancel=\u5DF2\u7ECF\u88AB\u5220\u9664\uFF0C\u65E0\u6CD5\u64CD\u4F5C\uFF01 +clickToCover=\u5DF2\u7ECF\u88AB\u4FEE\u6539\uFF0C\u662F\u5426\u8986\u76D6\uFF1F +clickToRefresh=\u662F\u5426\u7EE7\u7EED\uFF1F\u70B9\u51FB\u662F\u5237\u65B0 +column_and_row=\u884C\u5217 +confirm_server=\u8BF7\u786E\u8BA4\u670D\u52A1\u5668\u5730\u5740\u3001\u7AEF\u53E3\u3001\u5E94\u7528\u662F\u5426\u6B63\u786E\u4E14\u670D\u52A1\u5668\u662F\u5426\u5F00\u542F +connection_to_server_again=\u8FDE\u63A5\u4E2D\u65AD\uFF0C\u662F\u5426\u91CD\u65B0\u8FDE\u63A5\u670D\u52A1\u5668? +contact_info=\u8054\u7CFB\u4FE1\u606F(\u9009\u586B) +croExpression1=\u6BCF\u6708\u6700\u540E\u4E00\u592919\u70B950\u5206 +croExpression2=\u6BCF\u6708\u6700\u540E\u4E00\u4E2A\u5DE5\u4F5C\u65E519\u70B950\u5206 +croExpression3=\u6BCF\u6708\u7B2C4\u4E2A\u5468\u4E9419\u70B950\u5206 +croExpression4=2013\u5E74\u7B2C4\u5B63\u5EA6\u6BCF\u592919\u70B950\u5206 +croExpression5=\u6BCF\u4E2A\u5DE5\u4F5C\u65E5\u65E9\u4E0A9\u70B9\u548C\u665A\u4E0A6\u70B9 +current_not_support=\u5F53\u524D\u9884\u89C8\u65B9\u5F0F\u4E0D\u652F\u6301\u6761\u4EF6\u5C5E\u6027\u8BBE\u7F6E\u5F62\u6001 +cycle=\u5468\u671F +data_configuration=\u6570\u636E\u914D\u7F6E +data_import=\u6570\u636E\u5BFC\u5165 +del_schedule_task=\u5220\u9664\u5B9A\u65F6\u4EFB\u52A1 +designerModule=\u8BBE\u8BA1\u5668\u6A21\u5757 +detail_description=\u8BE6\u7EC6\u63CF\u8FF0 +eg=\u4F8B\u5982 +email=\u90AE\u7BB1 +f\#Created= +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 +feedback_tip=\u8BF7\u8F93\u5165\u4E0D\u8D85\u8FC7400\u4E2A\u5B57\u7684\u95EE\u9898\u63CF\u8FF0 +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 +fileLocked_undeleted=\u6A21\u677F\u88AB\u9501\u5B9A\uFF0C\u4E0D\u80FD\u5220\u9664\uFF01\u70B9\u51FB\u786E\u5B9A\uFF0C\u5237\u65B0\u6A21\u677F\u5217\u8868 +fixedTime=\u5B9A\u65F6 +formDesignerModule=\u8BBE\u8BA1\u5668\u8868\u5355\u6A21\u5757 +formModule=\u8868\u5355\u6A21\u5757 +fs_initDragBar_circle_tip=\u7ED3\u675F\u4EFB\u52A1\:\u6B64\u4EFB\u52A1\u89E6\u53D1\u65F6\u6574\u4E2A\u6D41\u7A0B\u7ACB\u523B\u7ED3\u675F,\u5355\u51FB\u7F16\u8F91\u5C5E\u6027\u3002 +fs_initDragBar_rect_tip=\u8868\u5355\u4EFB\u52A1\:\u6B64\u4EFB\u52A1\u53EF\u4EE5\u8BBE\u7F6E\u62A5\u8868\u6216\u8005\u8868\u5355\u7528\u4E8E\u5C55\u73B0\u6240\u9700\u6570\u636E,\u5355\u51FB\u7F16\u8F91\u5C5E\u6027\uFF0C\u53CC\u51FB\u53EF\u4EE5\u6539\u540D\u3002 +fs_initDragBar_subpro_tip=\u5B50\u6D41\u7A0B\u4EFB\u52A1\:\u6B64\u4EFB\u52A1\u53EF\u4EE5\u9009\u62E9\u5176\u4ED6\u6D41\u7A0B\u4F5C\u4E3A\u5F53\u524D\u6D41\u7A0B\u7684\u4EFB\u52A1\u6765\u5904\u7406\u3002 +fs_initDragBar_title_tip=\u62D6\u62FD\u5DE6\u8FB9\u56FE\u6807\u81F3\u8BBE\u8BA1\u533A\u57DF\u53EF\u4EE5\u8BBE\u8BA1\u6D41\u7A0B\uFF0C\u8BBE\u8BA1\u533A\u57DF\u9ED8\u8BA4\u6709\u5F00\u59CB\u4EFB\u52A1\uFF0C\u9F20\u6807\u79FB\u5165\u4EFB\u52A1\u65F6\u89E6\u53D1\u53EF\u62D6\u62FD\u70B9\u62D6\u62FD\u81F3\u5176\u4ED6\u4EFB\u52A1\u7684\u62D6\u62FD\u70B9\u5373\u53EF\u65B0\u5EFA\u5206\u652F\u3002 +fs_process_delete_tip=\u5220\u9664\u6D41\u7A0B\u7684\u64CD\u4F5C\u4E0D\u53EF\u9006\uFF0C\u60A8\u786E\u5B9A\u8981\u5220\u9664\u6B64\u6D41\u7A0B\u5417\uFF1F +fs_process_endtask_tip=\u7ED3\u675F\u4EFB\u52A1\:\u6B64\u4EFB\u52A1\u89E6\u53D1\u65F6\u6574\u4E2A\u6D41\u7A0B\u7ACB\u523B\u7ED3\u675F,\u5355\u51FB\u7F16\u8F91\u5C5E\u6027\u3002 +fs_process_log_tip=\u7B80\u5355\u65F6\u62A5\uFF0C\u65E5\u62A5\uFF0C\u5468\u62A5\u8BBE\u7F6E +fs_process_one_time_task_tip=\u4EFB\u52A1\u5F00\u59CB\u540E\u53EA\u6267\u884C\u4E00\u6B21 +fs_process_p_tip=\u6CE8\u610F\uFF1A\u6267\u884C\u9891\u7387\u4E2D\u7684\u53EA\u6267\u884C\u4E00\u6B21\u548C\u7B80\u5355\u91CD\u590D\u6267\u884C\u5728\u4EFB\u52A1\u5F00\u59CB\u65F6\u5C31\u4F1A\u6267\u884C\uFF0C\u800C\u81EA\u5B9A\u4E49\u91CD\u590D\u6267\u884C\u5219\u5C06\u5728\u4EFB\u52A1\u5F00\u59CB\u540E\u6839\u636E\u5176\u81EA\u8EAB\u5B9A\u4E49\u6267\u884C\u3002 +fs_process_para_message_tip=\u6CE8\uFF1A\u7F16\u8F91\u540E\u4F1A\u540C\u65F6\u4FEE\u6539\u9009\u4E2D\u6D41\u7A0B\u4E2D\u7684\u6D41\u7A0B\u6570\u636E\u9879 +fs_process_reporttask_tip=\u8868\u5355\u4EFB\u52A1\:\u6B64\u4EFB\u52A1\u53EF\u4EE5\u8BBE\u7F6E\u62A5\u8868\u6216\u8005\u8868\u5355\u7528\u4E8E\u5C55\u73B0\u6240\u9700\u6570\u636E,\u5355\u51FB\u7F16\u8F91\u5C5E\u6027\uFF0C\u53CC\u51FB\u53EF\u4EE5\u6539\u540D\u3002 +fs_process_sontask_tip=\u5B50\u6D41\u7A0B\u4EFB\u52A1\:\u6B64\u4EFB\u52A1\u53EF\u4EE5\u9009\u62E9\u5176\u4ED6\u6D41\u7A0B\u4F5C\u4E3A\u5F53\u524D\u6D41\u7A0B\u7684\u4EFB\u52A1\u6765\u5904\u7406\u3002 +fs_process_user_pane_tip=\u4E3A\u5F53\u524D\u6D3B\u52A8\u9009\u62E9\u53EF\u6267\u884C\u4EBA\u5458 +get-uuid-failed=\u8BF7\u4EE5root\u8EAB\u4EFD\u8FD0\u884Cweb\u670D\u52A1\u5668 +getDataFromCache=\u4ECE\u5171\u4EAB\u6570\u636E\u96C6\u7F13\u5B58\u4E2D\u83B7\u53D6\u6570\u636E +hasRelation=\u76F8\u5173 +has_saved=\u4EE5\u4FDD\u5B58 +FR-Designer_Edit_String_To_Formula=\u662F\u5426\u5C06\u5B57\u7B26\u4E32\u7F16\u8F91\u4E3A\u516C\u5F0F +FR-Designer_Seriously=\u4E25\u91CD +FR-Designer_Tree-Grade=\u5C42 +FR-Designer_Auto-Build=\u81EA\u52A8\u6784\u5EFA +FR-Designer_Root=\u6839\u8282\u70B9 +FR-Designer_Gradation=\u5C42\u6B21 +FR-Designer_Layer-Build=\u5206\u5C42\u6784\u5EFA +FR-Designer_Build-Way=\u6784\u5EFA\u65B9\u5F0F +FR-Designer_Create_Tree=\u6784\u5EFA\u6811 +FR-Engine_Function_Undefined=\u529F\u80FD\u70B9\u672A\u5B9A\u4E49 +invalid\ user\ or\ password.=\u7528\u6237\u540D\u6216\u5BC6\u7801\u9519\u8BEF +is=\u4E3A +is_need_word_adjust=\u4E0D\u56FA\u5B9A\u884C\u9AD8\u5BFC\u51FA +ispageBoxMemo=\u52FE\u9009\u5219\u7EB8\u5F20\u9ED8\u8BA4\u5C45\u4E2D\uFF0C\u53D6\u6D88\u52FE\u9009\u7EB8\u5F20\u9ED8\u8BA4\u5C45\u5DE6 +lic-same-content=\u5F53\u524D\u73AF\u5883\u5DF2\u5B58\u5728\u76F8\u540Clic\u6587\u4EF6 +loadedTreeModel=\u52A0\u8F7D\u5931\u8D25,\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5 +local=\u672C\u5730 +long_data_can_not_show_fully=\u957F\u6570\u636E\u663E\u793A\u4E0D\u5168 +max_undo_limit=\u6700\u5927\u64A4\u9500\u6B21\u6570 +mobile_number=\u624B\u673A\u53F7\u7801 +multiple_choice=\u591A\u9879\u9009\u62E9 +must_choose_one_report=\u5FC5\u987B\u9009\u62E9\u4E00\u5F20\u62A5\u8868\uFF01 +newNode=\u65B0\u589E\u8282\u70B9 +no-alternatives=\u6CA1\u6709\u9009\u62E9\u9879 +not-found=\u672A\u53D1\u73B0 +not_support_authority_edit=\u8BE5\u5143\u7D20\u4E0D\u652F\u6301\u6743\u9650\u63A7\u5236 +one_record_exists_in_many_groups=\u4E00\u4E2A\u8BB0\u5F55\u53EF\u4EE5\u5B58\u5728\u4E8E\u591A\u4E2A\u7EC4\u4E2D +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 +original=\u539F\u59CB +pageModule=\u5206\u9875\u9884\u89C8\u6A21\u5757 +paper=\u7EB8\u5F20 +parameter_name_exist=\u8BE5\u53C2\u6570\u540D\u5DF2\u5B58\u5728 +performanceModule=\u6027\u80FD\u6A21\u5757 +period=\u3002 +product_feedback=\u4EA7\u54C1\u53CD\u9988 +px=\u50CF\u7D20 +quote=\u5F15\u7528 +read_time_out=\u52A0\u8F7D\u8D85\u65F6 +redo=\u91CD\u505A +revert=\u64A4\u9500 +roles_already_authority_edited=\u5DF2\u914D\u7F6E\u89D2\u8272 +ruleSet=\u89C4\u5219\u8BBE\u7F6E +satisfy=\u6EE1\u8DB3\u6761\u4EF6 +schedule_email_notice_tip_first=\u90AE\u4EF6\u5C5E\u6027\u914D\u7F6E\u53EF\u5728 +schedule_email_notice_tip_second=\u4E2D\u7684 +schedule_email_notice_tip_third=\u91CC\u8FDB\u884C\u914D\u7F6E\u4E0E\u67E5\u770B\u3002 +schedule_email_tip_first=\u542F\u7528\u8BE5\u9009\u9879\u9700\u5728 +schedule_email_tip_second=\u4E2D\u586B\u5199 +seconds=\u79D2 +select_data_set=\u8BF7\u9009\u62E9\u9700\u8981\u5408\u5E76\u7684\u6570\u636E\u96C6 +select_path=\u9009\u62E9\u8DEF\u5F84 +FR-Designer-Plugin_Jar_Expired=Jar\u5305\u8FC7\u65E7 +FR-Base_January=\u4E00\u6708 +FR-Base_February=\u4E8C\u6708 +FR-Base_March=\u4E09\u6708 +FR-Base_April=\u56DB\u6708 +FR-Base_May=\u4E94\u6708 +FR-Base_June=\u516D\u6708 +FR-Base_July=\u4E03\u6708 +FR-Base_August=\u516B\u6708 +FR-Base_October=\u5341\u6708 +FR-Base_November=\u5341\u4E00\u6708 +FR-Base_December=\u5341\u4E8C\u6708 +FR-Base_September=\u4E5D\u6708 +select_same_data_to_\ merge=\u8BF7\u9009\u62E9\u5305\u542B\u76F8\u540C\u5B57\u6BB5\u7684\u6570\u636E\u96C6\u8FDB\u884C\u5408\u5E76 +sending=\u6B63\u5728\u53D1\u9001... +server_disconnected=\u8FDE\u63A5\u5DF2\u65AD\u5F00 +single_choice=\u5355\u9879\u9009\u62E9 +start_immidiately=\u7ACB\u523B\u5F00\u59CB +sure_to_delete=\u786E\u8BA4\u5220\u9664 +template_unopened=\u65E0\u6CD5\u6253\u5F00\u6A21\u677F +template_unsaved=\u65E0\u6CD5\u4FDD\u5B58\u6A21\u677F +the_target_cell_is_at=\u8BA1\u7B97\u7684\u76EE\u6807\u683C\u5B50\u5728 +the_template=\u8BE5\u6A21\u677F +tick-and-value=\u523B\u5EA6\u548C\u914D\u8272 +time(s)= +timePoint=\u65F6\u70B9 +title=\u6807\u9898 +trigger=\u89E6\u53D1 +triggered=\u88AB\u89E6\u53D1 +try_resending=\u8BF7\u5C1D\u8BD5\u91CD\u65B0\u53D1\u9001 +turn=\u8F6C\u5411 +undo=\u64A4\u9500 +viewModule=\u6570\u636E\u5206\u6790\u6A21\u5757 +writeModule=\u586B\u62A5\u9884\u89C8\u6A21\u5757 +wrong=\u51FA\u9519\u4E86 +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.
  +FR-Base_Not_Exsit=\u4E0D\u5B58\u5728\u4E8E\u62A5\u8868 +FR-Designer-Basic_Activation_Key=\u8BBE\u8BA1\u5668\u7F16\u53F7\uFF1A +FR-Designer-Basic_Copy_Activation_Key=\u53CC\u51FB\u8BBE\u8BA1\u5668\u7F16\u53F7\u53EF\u590D\u5236\u5230\u526A\u8D34\u677F +FR-Designer-Basic_Activation_Key_Copy_OK=\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F +FR-Plugin-Plugin_Name=\u63D2\u4EF6\u540D\u79F0 +FR-Plugin-Plugin_Version=\u63D2\u4EF6\u7248\u672C +FR-Plugin-Start_Version=\u652F\u6301\u7684\u6700\u4F4E\u62A5\u8868\u7248\u672C +FR-Plugin_Developer=\u5F00\u53D1\u8005 +FR-Plugin-Function_Description=\u63D2\u4EF6\u529F\u80FD\u63CF\u8FF0 +FR-Plugin-Update_Log=\u66F4\u65B0\u65E5\u5FD7 +FR-Designer_Https_Enable=\u542F\u7528https +FR-Designer_Certificate_Pass=https\u79D8\u94A5 +FR-Designer_Certificate_Path=\u8BC1\u4E66\u8DEF\u5F84 +FR-Basic_About_No_Build=\u4E0D\u662F\u5B89\u88C5\u7248\u672C +FR-Designer-Basic_Copy_Build_NO=\u53CC\u51FB\u6784\u5EFA\u7248\u672C\u53F7\u53EF\u590D\u5236\u5230\u526A\u8D34\u677F +FR-Designer-Basic_Copy_Build_NO_OK=\u6784\u5EFA\u7248\u672C\u53F7\u5DF2\u7ECF\u590D\u5236\u5230\u526A\u8D34\u677F +FR-Designer_Submmit_WClass=\u540E\u53F0\u7C7B\u63D0\u4EA4 +FR-Base_Sche_Day=\u65E5\u671F +FR-Base_Sche_Friday=\u661F\u671F\u4E94 +FR-Base_Sche_Hour=\u65F6 +FR-Base_Sche_Minute=\u5206 +FR-Base_Sche_Monday=\u661F\u671F\u4E00 +FR-Base_Sche_Month=\u6708\u4EFD +FR-Base_Sche_Saturday=\u661F\u671F\u516D +FR-Base_Sche_Second=\u79D2 +FR-Base_Sche_Sunday=\u661F\u671F\u65E5 +FR-Base_Sche_Thursday=\u661F\u671F\u56DB +FR-Base_Sche_Tuesday=\u661F\u671F\u4E8C +FR-Base_Sche_Wednesday=\u661F\u671F\u4E09 +FR-Base_Sche_Week=\u661F\u671F +FR-Base_Sun=\u65E5 +FR-Base_Mon=\u4E00 +FR-Base_Tue=\u4E8C +FR-Base_Wed=\u4E09 +FR-Base_Thu=\u56DB +FR-Base_Fri=\u4E94 +FR-Base_Sat=\u516D +FR-Base_Formula_Plugin=\u63D2\u4EF6\u51FD\u6570 +FR-Basic_Page_Number=\u9875 +Preview=\u9884\u89C8 +FR-Designer_Cancel=\u53D6\u6D88 +FR-Designer_Enter-New-FileName=\u8BF7\u8F93\u5165\u65B0\u7684\u6587\u4EF6\u540D +FR-Designer_Rename=\u91CD\u547D\u540D +FR-Designer_Get_Lock=\u52A0\u9501 +FR-Designer_Release_Lock=\u89E3\u9501 +FR-Designer_Confirm=\u786E\u8BA4 +FR-Designer_Show_in_Containing_Folder=\u6253\u5F00\u6240\u5728\u6587\u4EF6\u5939 +FR-Background_Image=\u56FE\u7247 +FR-Background_Image_Default=\u9ED8\u8BA4 +FR-Background_Image_Titled=\u5E73\u94FA +FR-Background_Image_Adjust=\u9002\u5E94 +FR-Background_Image_Extend=\u62C9\u4F38 +FR-Engine_WriteModule=\u586B\u62A5\u9884\u89C8\u6A21\u5757 +FR-Designer_Restore_Default=\u6062\u590D\u9ED8\u8BA4 +FR-Designer_ChooseOneButton=\u8BF7\u9009\u62E9\u4E00\u4E2A\u63A7\u4EF6\u540E\u518D\u6DFB\u52A0 +FR-Designer_ToolBar_Top=\u9876\u90E8\u5DE5\u5177\u680F +FR-Designer_ToolBar_Bottom=\u5E95\u90E8\u5DE5\u5177\u680F +FR-Basic_Plugin_Version_Warning=\u63D2\u4EF6\u7248\u672C\u8FC7\u4F4E,\u8BF7\u5347\u7EA7\u63D2\u4EF6,\u5F53\u524D\u63D2\u4EF6\u5C06\u65E0\u6CD5\u52A0\u8F7D +FR-Designer_Plugin_Should_Update=\u63D2\u4EF6\u7248\u672C\u8FC7\u4F4E,\u9700\u8981\u5347\u7EA7 +FR-Designer_Plugin_Should_Update_Title=\u63D2\u4EF6\u5347\u7EA7\u63D0\u9192 +FR-Plugin_API-Need-Update=\u63D2\u4EF6\u4F9D\u8D56\u7684API\u6709\u66F4\u65B0. +FR-Designer-Plugin_Please_Update_Jar=\u8BF7\u66F4\u65B0Jar\u5305\u81F3\: +FR-Designer-Plugin_Shop_Installed=\u63D2\u4EF6\u5546\u5E97\u5B89\u88C5\u5B8C\u6BD5,\u662F\u5426\u7ACB\u523B\u542F\u52A8? +FR-Designer-Plugin_Shop_Need_Install=\u60A8\u8FD8\u6CA1\u6709\u63D2\u4EF6\u5546\u5E97\u7684\u8D44\u6E90,\u662F\u5426\u4E0B\u8F7D? +FR-Designer-Plugin_Shop_Need_Update=\u63D2\u4EF6\u5546\u5E97\u6709\u65B0\u7248\u672C,\u662F\u5426\u66F4\u65B0? +FR-Designer_COMMUNITY=\u793e\u533a +FR-Designer_COMMUNITY_BBS=\u5e06\u8f6f\u8bba\u575b +FR-Designer_COMMUNITY_VIDEO=\u5165\u95e8\u89c6\u9891 +FR-Designer_COMMUNITY_HELP=\u5e2e\u52a9\u6587\u6863 +FR-Designer_COMMUNITY_UPDATE=\u4ea7\u54c1\u66f4\u65b0 +FR-Designer_COMMUNITY_NEED=\u9700\u6c42\u63d0\u4ea4 +FR-Designer_COMMUNITY_BUG=\u0042\u0055\u0047\u0020\u53cd\u9988 +FR-Designer_COMMUNITY_SIGN=\u5e06\u8f6f\u8ba4\u8bc1 +FR-Designer_COMMUNITY_QUESTIONS=\u95ee\u9898\u6c42\u52a9 From 86255b9997de24264207c0de963e222c54f74e15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9D=99=E5=90=AC=E7=A6=85=E9=B8=A3?= Date: Fri, 20 May 2016 07:30:50 +0800 Subject: [PATCH 26/54] x --- designer_base/.classpath | 31 ++++--------------------------- 1 file changed, 4 insertions(+), 27 deletions(-) diff --git a/designer_base/.classpath b/designer_base/.classpath index b7ba91ed1f..cc6f823ac8 100644 --- a/designer_base/.classpath +++ b/designer_base/.classpath @@ -1,33 +1,10 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + From e3a8cdd999aa1cf05db368c9c02deea0db3f23d8 Mon Sep 17 00:00:00 2001 From: zack Date: Fri, 20 May 2016 09:39:50 +0800 Subject: [PATCH 27/54] =?UTF-8?q?=E5=88=86=E7=BB=84=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E6=8A=8Aaction=E5=BC=80=E5=87=BA=E5=8E=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/data/datapane/ReportTableDataPane.java | 4 +++- .../tabledata/tabledatapane/TableDataManagerPane.java | 4 +++- .../src/com/fr/design/fun/TableDataPaneProcessor.java | 6 ++++++ .../com/fr/design/mainframe/toolbar/ToolBarMenuDock.java | 8 +++++++- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java b/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java index 339a227a40..3b968f2052 100644 --- a/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java +++ b/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java @@ -4,6 +4,7 @@ package com.fr.design.data.datapane; import com.fr.data.TableDataSource; +import com.fr.design.DesignModelAdapter; import com.fr.design.ExtraDesignClassManager; import com.fr.design.fun.TableDataPaneProcessor; import com.fr.design.gui.controlpane.NameableCreator; @@ -29,7 +30,8 @@ public class ReportTableDataPane extends LoadingBasicPane { TableDataPaneProcessor paneProcessor = ExtraDesignClassManager.getInstance().getTableDataPaneProcessor(); TableDataPaneController pane = null; if (paneProcessor != null) { - pane = paneProcessor.createServerTableDataPane(); + pane = paneProcessor.createServerTableDataPane(DesignModelAdapter.getCurrentModelAdapter() + ); } tdPane = pane == null ? new TableDataPaneListPane() { @Override diff --git a/designer_base/src/com/fr/design/data/tabledata/tabledatapane/TableDataManagerPane.java b/designer_base/src/com/fr/design/data/tabledata/tabledatapane/TableDataManagerPane.java index b2c8427afa..daf2ed1f5d 100644 --- a/designer_base/src/com/fr/design/data/tabledata/tabledatapane/TableDataManagerPane.java +++ b/designer_base/src/com/fr/design/data/tabledata/tabledatapane/TableDataManagerPane.java @@ -1,6 +1,7 @@ package com.fr.design.data.tabledata.tabledatapane; import com.fr.base.FRContext; +import com.fr.design.DesignModelAdapter; import com.fr.design.ExtraDesignClassManager; import com.fr.design.data.datapane.TableDataPaneController; import com.fr.design.data.datapane.TableDataPaneListPane; @@ -42,7 +43,8 @@ public class TableDataManagerPane extends LoadingBasicPane { TableDataPaneProcessor paneProcessor = ExtraDesignClassManager.getInstance().getTableDataPaneProcessor(); TableDataPaneController pane = null; if (paneProcessor != null) { - pane = paneProcessor.createServerTableDataPane(); + pane = paneProcessor.createServerTableDataPane(DesignModelAdapter.getCurrentModelAdapter() + ); } tableDataPane = pane == null ? new TableDataPaneListPane() { public void rename(String oldName, String newName) { diff --git a/designer_base/src/com/fr/design/fun/TableDataPaneProcessor.java b/designer_base/src/com/fr/design/fun/TableDataPaneProcessor.java index 3ed05bdf70..06db5c974b 100644 --- a/designer_base/src/com/fr/design/fun/TableDataPaneProcessor.java +++ b/designer_base/src/com/fr/design/fun/TableDataPaneProcessor.java @@ -3,6 +3,7 @@ package com.fr.design.fun; import com.fr.design.DesignModelAdapter; import com.fr.design.data.BasicTableDataTreePane; import com.fr.design.data.datapane.TableDataPaneController; +import com.fr.design.menu.ShortCut; import com.fr.stable.fun.Level; /** @@ -27,4 +28,9 @@ public interface TableDataPaneProcessor extends Level { */ TableDataPaneController createServerTableDataPane(DesignModelAdapter tc); + /** + * 自定义服务器数据集菜单项 + * @return + */ + ShortCut createServerTDAction(); } diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index d0ecec9d6c..ea8dd28e37 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -28,6 +28,7 @@ import com.fr.design.actions.server.PlatformManagerAction; import com.fr.design.actions.server.PluginManagerAction; import com.fr.design.file.NewTemplatePane; import com.fr.design.fun.MenuHandler; +import com.fr.design.fun.TableDataPaneProcessor; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.imenu.UIMenu; @@ -263,7 +264,7 @@ public abstract class ToolBarMenuDock { if (!BaseUtils.isAuthorityEditing()) { menuDef.addShortCut( new ConnectionListAction(), - new GlobalTableDataAction() + createGlobalTDAction() ); } @@ -288,6 +289,11 @@ public abstract class ToolBarMenuDock { return menuDef; } + private ShortCut createGlobalTDAction() { + TableDataPaneProcessor processor = ExtraDesignClassManager.getInstance().getTableDataPaneProcessor(); + return processor == null ? new GlobalTableDataAction() : processor.createServerTDAction(); + } + private boolean shouldShowPlugin() { return FRContext.isChineseEnv() || ComparatorUtils.equals(GeneralContext.getLocale(), Locale.TAIWAN); } From 959c9eb30cb067e33dbfa6326dc5f78b5f900977 Mon Sep 17 00:00:00 2001 From: richie Date: Fri, 20 May 2016 16:03:07 +0800 Subject: [PATCH 28/54] =?UTF-8?q?=E7=BB=99=E5=86=B3=E7=AD=96=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E4=BF=AE=E6=94=B9=E5=AF=86=E7=A0=81=E5=92=8C=E8=AE=A4?= =?UTF-8?q?=E8=AF=81=E7=AD=89=E5=8A=A0=E4=B8=80=E4=B8=AA=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E7=9B=91=E5=90=AC,=E5=89=A9=E4=B8=8B=E7=9A=84=E4=BB=80?= =?UTF-8?q?=E4=B9=88=E5=88=A0=E9=99=A4=E7=94=A8=E6=88=B7=E7=AD=89=E8=BF=98?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/fun/ElementUIProvider.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/designer_base/src/com/fr/design/fun/ElementUIProvider.java b/designer_base/src/com/fr/design/fun/ElementUIProvider.java index e527218582..cb960564f5 100644 --- a/designer_base/src/com/fr/design/fun/ElementUIProvider.java +++ b/designer_base/src/com/fr/design/fun/ElementUIProvider.java @@ -7,6 +7,7 @@ import com.fr.stable.fun.Level; /** * Created by richie on 16/4/25. + * 单元格元素和悬浮元素扩展,通过实现这个接口,可以在单元格中添加更多类型的元素. */ public interface ElementUIProvider extends Level { @@ -14,13 +15,33 @@ public interface ElementUIProvider extends Level { int CURRENT_LEVEL = 1; + /** + * 单元格元素编辑器 + * @return 编辑器 + */ Class targetCellEditorClass(); + /** + * 单元格内容 + * @return 单元格内容 + */ Class targetObjectClass(); + /** + * 右侧的快速编辑器 + * @return 编辑器 + */ QuickEditor quickEditor(); + /** + * 插件单元格元素 + * @return 插入操作类 + */ Class actionForInsertCellElement(); + /** + * 插入悬浮元素 + * @return 插入操作类 + */ Class actionForInsertFloatElement(); } From 0f54734d5afc7e9ba005c3d6df6e9def8caf5baf Mon Sep 17 00:00:00 2001 From: richie Date: Fri, 20 May 2016 17:21:40 +0800 Subject: [PATCH 29/54] =?UTF-8?q?web=E5=B1=9E=E6=80=A7=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E6=89=93=E4=B8=8D=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/style/background/BackgroundFactory.java | 2 +- .../src/com/fr/design/style/background/BackgroundPane.java | 6 +++++- .../fr/design/style/background/BackgroundPane4Browser.java | 6 +++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/style/background/BackgroundFactory.java b/designer_base/src/com/fr/design/style/background/BackgroundFactory.java index 2706f81b1e..6dd04773a2 100644 --- a/designer_base/src/com/fr/design/style/background/BackgroundFactory.java +++ b/designer_base/src/com/fr/design/style/background/BackgroundFactory.java @@ -87,7 +87,7 @@ public class BackgroundFactory { return browser.keySet(); } - public static BackgroundUIWrapper getBrosweWrapper(Class category) { + public static BackgroundUIWrapper getBrowserWrapper(Class category) { return browser.get(category); } diff --git a/designer_base/src/com/fr/design/style/background/BackgroundPane.java b/designer_base/src/com/fr/design/style/background/BackgroundPane.java index 6a9c3d70f8..07a1e2131a 100644 --- a/designer_base/src/com/fr/design/style/background/BackgroundPane.java +++ b/designer_base/src/com/fr/design/style/background/BackgroundPane.java @@ -117,7 +117,7 @@ public class BackgroundPane extends BasicPane { * Populate background. */ public void populate(Background background) { - BackgroundUIWrapper wrapper = BackgroundFactory.getWrapper(background == null ? null : background.getClass()); + BackgroundUIWrapper wrapper = getBackgroundUIWrapper(background); int index = wrapper.getIndex(); BackgroundDetailPane quickPane = getTabItemPane(background, index); quickPane.populate(background); @@ -126,6 +126,10 @@ public class BackgroundPane extends BasicPane { tabbedPane.validate(); } + protected BackgroundUIWrapper getBackgroundUIWrapper(Background background) { + return BackgroundFactory.getWrapper(background == null ? null : background.getClass()); + } + /** * Update background. */ diff --git a/designer_base/src/com/fr/design/style/background/BackgroundPane4Browser.java b/designer_base/src/com/fr/design/style/background/BackgroundPane4Browser.java index 705bbc2dea..a1f06f0655 100644 --- a/designer_base/src/com/fr/design/style/background/BackgroundPane4Browser.java +++ b/designer_base/src/com/fr/design/style/background/BackgroundPane4Browser.java @@ -16,12 +16,16 @@ public class BackgroundPane4Browser extends BackgroundPane { protected void initTabPane() { int index = 0; for (Class key : BackgroundFactory.browserKindsOfKey()) { - BackgroundUIWrapper wrapper = BackgroundFactory.getBrosweWrapper(key); + BackgroundUIWrapper wrapper = BackgroundFactory.getBrowserWrapper(key); wrapper.setIndex(index++); tabbedPane.addTab(Inter.getLocText(wrapper.getTitle()), FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane()); } } + protected BackgroundUIWrapper getBackgroundUIWrapper(Background background) { + return BackgroundFactory.getBrowserWrapper(background == null ? null : background.getClass()); + } + protected BackgroundDetailPane getTabItemPane(Background background, int index) { BackgroundDetailPane quickPane = cacheMap.get(index); if (quickPane == null) { From de842c99a39e330dc270219e1a075c159a93ae05 Mon Sep 17 00:00:00 2001 From: zack Date: Fri, 20 May 2016 17:26:32 +0800 Subject: [PATCH 30/54] =?UTF-8?q?=E8=BF=99=E4=B8=AA=E5=85=A5=E5=8F=A3?= =?UTF-8?q?=E5=88=A0=E6=8E=89=EF=BC=8C=E4=B8=8D=E9=9C=80=E8=A6=81=E5=81=9A?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E6=95=B0=E6=8D=AE=E9=9B=86=E5=88=86=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/data/datapane/ReportTableDataPane.java | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java b/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java index 3b968f2052..c9279ca42d 100644 --- a/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java +++ b/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java @@ -4,9 +4,6 @@ package com.fr.design.data.datapane; import com.fr.data.TableDataSource; -import com.fr.design.DesignModelAdapter; -import com.fr.design.ExtraDesignClassManager; -import com.fr.design.fun.TableDataPaneProcessor; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.frpane.LoadingBasicPane; import com.fr.design.layout.FRGUIPaneFactory; @@ -27,19 +24,13 @@ public class ReportTableDataPane extends LoadingBasicPane { @Override protected void initComponents(JPanel container) { container.setLayout(FRGUIPaneFactory.createBorderLayout()); - TableDataPaneProcessor paneProcessor = ExtraDesignClassManager.getInstance().getTableDataPaneProcessor(); - TableDataPaneController pane = null; - if (paneProcessor != null) { - pane = paneProcessor.createServerTableDataPane(DesignModelAdapter.getCurrentModelAdapter() - ); - } - tdPane = pane == null ? new TableDataPaneListPane() { + tdPane = new TableDataPaneListPane() { @Override public NameableCreator[] createNameableCreators() { return TableDataCreatorProducer.getInstance().createReportTableDataCreator(); } - } : pane; + }; container.add(tdPane.getPanel(), BorderLayout.CENTER); } From 263a699affa7c5d50b653851c34b2513db58a440 Mon Sep 17 00:00:00 2001 From: zack Date: Fri, 20 May 2016 17:27:16 +0800 Subject: [PATCH 31/54] d --- .../src/com/fr/design/data/datapane/ReportTableDataPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java b/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java index c9279ca42d..d78ce45d7b 100644 --- a/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java +++ b/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java @@ -31,7 +31,7 @@ public class ReportTableDataPane extends LoadingBasicPane { return TableDataCreatorProducer.getInstance().createReportTableDataCreator(); } }; - container.add(tdPane.getPanel(), BorderLayout.CENTER); + container.add(tdPane.getPanel(), BorderLayout.CENTER); } @Override From 5bf2b7faa3508d5a0379d47e1546f4a1970bd5cd Mon Sep 17 00:00:00 2001 From: zack Date: Fri, 20 May 2016 17:29:44 +0800 Subject: [PATCH 32/54] d --- .../src/com/fr/design/data/datapane/ReportTableDataPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java b/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java index d78ce45d7b..c9279ca42d 100644 --- a/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java +++ b/designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java @@ -31,7 +31,7 @@ public class ReportTableDataPane extends LoadingBasicPane { return TableDataCreatorProducer.getInstance().createReportTableDataCreator(); } }; - container.add(tdPane.getPanel(), BorderLayout.CENTER); + container.add(tdPane.getPanel(), BorderLayout.CENTER); } @Override From e6295278f45261dcb041feaa54b3e18f5afa6459 Mon Sep 17 00:00:00 2001 From: vito Date: Fri, 20 May 2016 17:44:43 +0800 Subject: [PATCH 33/54] =?UTF-8?q?1=E3=80=81=E5=88=A0=E9=99=A4=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E8=BF=94=E5=9B=9E=E4=B8=80=E4=B8=AA=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E6=B6=88=E6=81=AF=EF=BC=8C=E4=BE=9B=E7=95=8C=E9=9D=A2=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=202=E3=80=81=E6=9B=B4=E6=96=B0=E8=BF=87=E6=9C=9F?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E5=BC=B9=E5=87=BA=E4=B8=A4=E4=B8=AA=E5=AF=B9?= =?UTF-8?q?=E8=AF=9D=E6=A1=86=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/extra/PluginWebBridge.java | 1 + .../design/extra/exe/UninstallExecutor.java | 6 +- .../extra/exe/UpdateOnlineExecutor.java | 112 +++++++++--------- 3 files changed, 63 insertions(+), 56 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index 5c7c2e8a37..947104bf99 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/PluginWebBridge.java @@ -153,6 +153,7 @@ public class PluginWebBridge { * @param des 过滤文件描述 * @param filter 文件的后缀 * @return 选择的文件的路径 + * 这里换用JFileChooser会卡死,不知道为什么 */ public String showFileChooserWithFilter(String des, String filter) { FileChooser fileChooser = new FileChooser(); diff --git a/designer_base/src/com/fr/design/extra/exe/UninstallExecutor.java b/designer_base/src/com/fr/design/extra/exe/UninstallExecutor.java index 3f0845a7af..d8fc7d9ec6 100644 --- a/designer_base/src/com/fr/design/extra/exe/UninstallExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/UninstallExecutor.java @@ -16,6 +16,7 @@ import javax.swing.*; public class UninstallExecutor implements Executor { private String[] pluginIDs; + private String result = "undo"; public UninstallExecutor(String[] pluginIDs) { this.pluginIDs = pluginIDs; @@ -23,7 +24,7 @@ public class UninstallExecutor implements Executor { @Override public String getTaskFinishMessage() { - return "插件已卸载完毕,重启后生效"; + return result; } @Override @@ -32,7 +33,7 @@ public class UninstallExecutor implements Executor { new Command() { @Override public String getExecuteMessage() { - return "删除成功"; + return null; } @Override @@ -62,6 +63,7 @@ public class UninstallExecutor implements Executor { JOptionPane.showMessageDialog(null, e.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } } + result = "done"; if (rv == JOptionPane.OK_OPTION) { RestartHelper.restart(); } diff --git a/designer_base/src/com/fr/design/extra/exe/UpdateOnlineExecutor.java b/designer_base/src/com/fr/design/extra/exe/UpdateOnlineExecutor.java index 30fe078969..0d3a03fc1b 100644 --- a/designer_base/src/com/fr/design/extra/exe/UpdateOnlineExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/UpdateOnlineExecutor.java @@ -10,6 +10,7 @@ import com.fr.design.extra.Process; import com.fr.general.Inter; import com.fr.plugin.Plugin; import com.fr.plugin.PluginLoader; +import com.fr.plugin.PluginVerifyException; import com.fr.stable.StringUtils; import javax.swing.*; @@ -43,44 +44,51 @@ public class UpdateOnlineExecutor implements Executor { @Override public void run(Process process) { - if(StringUtils.isBlank(DesignerEnvManager.getEnvManager().getBBSName())){ + if (StringUtils.isBlank(DesignerEnvManager.getEnvManager().getBBSName())) { LoginCheckContext.fireLoginCheckListener(); } - if(StringUtils.isNotBlank(DesignerEnvManager.getEnvManager().getBBSName())){ - for (int i = 0; i < pluginIDs.length; i++) { - Plugin plugin = PluginLoader.getLoader().getPluginById(pluginIDs[i]); - String id = null; - if (plugin != null) { - id = plugin.getId(); - } - String username = DesignerEnvManager.getEnvManager().getBBSName(); - String password = DesignerEnvManager.getEnvManager().getBBSPassword(); - try { - PluginHelper.downloadPluginFile(id, username, password, new Process() { - @Override - public void process(Double integer) { + if (StringUtils.isNotBlank(DesignerEnvManager.getEnvManager().getBBSName())) { + try { + for (int i = 0; i < pluginIDs.length; i++) { + try { + Plugin plugin = PluginLoader.getLoader().getPluginById(pluginIDs[i]); + String id = null; + if (plugin != null) { + id = plugin.getId(); + } + String username = DesignerEnvManager.getEnvManager().getBBSName(); + String password = DesignerEnvManager.getEnvManager().getBBSPassword(); + PluginHelper.downloadPluginFile(id, username, password, new Process() { + @Override + public void process(Double integer) { + } + }); + updateFileFromDisk(PluginHelper.getDownloadTempFile()); + process.process(PERCENT_100 / pluginIDs.length * (i + 1) + "%"); + } catch (Exception e) { + if (e instanceof PluginVerifyException) { + throw (PluginVerifyException) e; } - }); - updateFileFromDisk(PluginHelper.getDownloadTempFile()); - process.process(PERCENT_100 / pluginIDs.length * (i + 1) + "%"); - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); + FRContext.getLogger().error(e.getMessage()); + } } - } - int rv = JOptionPane.showOptionDialog( - null, - Inter.getLocText("FR-Designer-Plugin_Update_Successful"), - Inter.getLocText("FR-Designer-Plugin_Warning"), - JOptionPane.YES_NO_OPTION, - JOptionPane.INFORMATION_MESSAGE, - null, - new String[]{Inter.getLocText("FR-Designer-Basic_Restart_Designer"), - Inter.getLocText("FR-Designer-Basic_Restart_Designer_Later") - }, - null - ); - if (rv == JOptionPane.OK_OPTION) { - RestartHelper.restart(); + int rv = JOptionPane.showOptionDialog( + null, + Inter.getLocText("FR-Designer-Plugin_Update_Successful"), + Inter.getLocText("FR-Designer-Plugin_Warning"), + JOptionPane.YES_NO_OPTION, + JOptionPane.INFORMATION_MESSAGE, + null, + new String[]{Inter.getLocText("FR-Designer-Basic_Restart_Designer"), + Inter.getLocText("FR-Designer-Basic_Restart_Designer_Later") + }, + null + ); + if (rv == JOptionPane.OK_OPTION) { + RestartHelper.restart(); + } + } catch (PluginVerifyException e) { + JOptionPane.showMessageDialog(null, e.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } } } @@ -88,26 +96,22 @@ public class UpdateOnlineExecutor implements Executor { }; } - private void updateFileFromDisk(File fileOnDisk) { - try { - Plugin plugin = PluginHelper.readPlugin(fileOnDisk); - if (plugin == null) { - JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Illegal_Plugin_Zip"), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); - return; - } - Plugin oldPlugin = PluginLoader.getLoader().getPluginById(plugin.getId()); - if (oldPlugin != null) { - String[] files = PluginHelper.uninstallPlugin(FRContext.getCurrentEnv(), oldPlugin); - PluginHelper.installPluginFromUnzippedTempDir(FRContext.getCurrentEnv(), plugin, new After() { - @Override - public void done() { - } - }); - } else { - JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Cannot_Update_Not_Install"), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); - } - } catch (Exception e1) { - JOptionPane.showMessageDialog(null, e1.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + private void updateFileFromDisk(File fileOnDisk) throws Exception { + Plugin plugin = PluginHelper.readPlugin(fileOnDisk); + if (plugin == null) { + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Illegal_Plugin_Zip"), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + return; + } + Plugin oldPlugin = PluginLoader.getLoader().getPluginById(plugin.getId()); + if (oldPlugin != null) { + String[] files = PluginHelper.uninstallPlugin(FRContext.getCurrentEnv(), oldPlugin); + PluginHelper.installPluginFromUnzippedTempDir(FRContext.getCurrentEnv(), plugin, new After() { + @Override + public void done() { + } + }); + } else { + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Cannot_Update_Not_Install"), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } } } From c573179143ccb976891ccc146515bcf492df359a Mon Sep 17 00:00:00 2001 From: vito Date: Mon, 23 May 2016 09:13:05 +0800 Subject: [PATCH 34/54] =?UTF-8?q?catch=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/extra/exe/UpdateOnlineExecutor.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/exe/UpdateOnlineExecutor.java b/designer_base/src/com/fr/design/extra/exe/UpdateOnlineExecutor.java index 0d3a03fc1b..fa295cd368 100644 --- a/designer_base/src/com/fr/design/extra/exe/UpdateOnlineExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/UpdateOnlineExecutor.java @@ -65,11 +65,10 @@ public class UpdateOnlineExecutor implements Executor { }); updateFileFromDisk(PluginHelper.getDownloadTempFile()); process.process(PERCENT_100 / pluginIDs.length * (i + 1) + "%"); + } catch (PluginVerifyException e) { + throw e; } catch (Exception e) { - if (e instanceof PluginVerifyException) { - throw (PluginVerifyException) e; - } - FRContext.getLogger().error(e.getMessage()); + FRContext.getLogger().error(e.getMessage(), e); } } int rv = JOptionPane.showOptionDialog( From a41a51ddaef4bf40563f2e2d655372eee68bfa48 Mon Sep 17 00:00:00 2001 From: xiaohu Date: Mon, 23 May 2016 10:23:32 +0800 Subject: [PATCH 35/54] =?UTF-8?q?=E6=95=B8=E6=93=9A=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MeterPlotReportDataContentPane.java | 30 ++++++++++++++----- .../table/MeterPlotTableDataContentPane.java | 12 +++++--- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/MeterPlotReportDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/MeterPlotReportDataContentPane.java index e4001079b8..b785373bc2 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/MeterPlotReportDataContentPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/MeterPlotReportDataContentPane.java @@ -46,7 +46,7 @@ public class MeterPlotReportDataContentPane extends AbstractReportDataContentPan double[] rowSize = { p, p, p}; Component[][] components = new Component[][]{ - new Component[]{new UILabel(CATENAME), singCatePane = new TinyFormulaPane()}, + new Component[]{new UILabel(CATENAME), getSingCatePane()}, new Component[]{new UILabel(NVALUE), singValuePane = new TinyFormulaPane()}, new Component[]{null, null} }; @@ -73,7 +73,7 @@ public class MeterPlotReportDataContentPane extends AbstractReportDataContentPan MeterReportDefinition meterDefinition = (MeterReportDefinition)definition; if (meterDefinition.getName() != null) { - singCatePane.getUITextField().setText(meterDefinition.getName().toString()); + populateSingCatePane(meterDefinition.getName().toString()); } if (meterDefinition.getValue() != null) { singValuePane.getUITextField().setText(meterDefinition.getValue().toString()); @@ -82,13 +82,18 @@ public class MeterPlotReportDataContentPane extends AbstractReportDataContentPan filterPane.populateBean(collection); } - - public void updateBean(ChartCollection collection) { + + protected void populateSingCatePane(String name) { + singCatePane.getUITextField().setText(name); + } + + public void updateBean(ChartCollection collection) { if (collection != null) { MeterReportDefinition meterDefinition = new MeterReportDefinition(); - - meterDefinition.setName(canBeFormula(singCatePane.getUITextField().getText())); + + updateSingCatePane(meterDefinition); + meterDefinition.setValue(canBeFormula(singValuePane.getUITextField().getText())); collection.getSelectedChart().setFilterDefinition(meterDefinition); @@ -96,10 +101,19 @@ public class MeterPlotReportDataContentPane extends AbstractReportDataContentPan filterPane.updateBean(collection); } } - - @Override + + protected void updateSingCatePane(MeterReportDefinition meterDefinition) { + + meterDefinition.setName(canBeFormula(singCatePane.getUITextField().getText())); + + } + + @Override protected String[] columnNames() { return new String[]{"", ""}; } + protected Component getSingCatePane() { + return singCatePane = new TinyFormulaPane(); + } } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/MeterPlotTableDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/MeterPlotTableDataContentPane.java index 22deb51016..a12f4370a4 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/MeterPlotTableDataContentPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/MeterPlotTableDataContentPane.java @@ -88,15 +88,15 @@ public class MeterPlotTableDataContentPane extends AbstractTableDataContentPane if(ob != null && ob.getSelectedChart().getFilterDefinition() instanceof MeterTableDefinition) { MeterTableDefinition meter = (MeterTableDefinition)ob.getSelectedChart().getFilterDefinition(); - populateNameComponent(meter.getName()); + populateNameComponent(meter); valueBox.setSelectedItem(meter.getValue()); filterPane.populateBean(ob); } } - protected void populateNameComponent(String name) { - nameBox.setSelectedItem(name); + protected void populateNameComponent(MeterTableDefinition meter) { + nameBox.setSelectedItem(meter.getName()); } /** @@ -104,7 +104,7 @@ public class MeterPlotTableDataContentPane extends AbstractTableDataContentPane */ public void updateBean(ChartCollection ob) { if(ob != null) { - MeterTableDefinition meter = new MeterTableDefinition(); + MeterTableDefinition meter = getMeterTableDefinition(); ob.getSelectedChart().setFilterDefinition(meter); updateNameComponent(meter); @@ -114,6 +114,10 @@ public class MeterPlotTableDataContentPane extends AbstractTableDataContentPane } } + protected MeterTableDefinition getMeterTableDefinition(){ + return new MeterTableDefinition(); + } + protected void updateNameComponent(MeterTableDefinition meter) { meter.setName(Utils.objectToString(nameBox.getSelectedItem())); } From 22ea2b5e33d45ca7b5734d65c8efc8dfad83f97d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9D=99=E5=90=AC=E7=A6=85=E9=B8=A3?= Date: Mon, 23 May 2016 21:07:20 +0800 Subject: [PATCH 36/54] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E5=90=8D=E7=A7=B0=E4=B8=BA=E5=B0=8F=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index 14dc74a8d7..561da37f34 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -156,7 +156,7 @@ public abstract class ToolBarMenuDock { menuList.add(createHelpMenuDef()); // 添加社区菜单 - menuList.add(CreateCommunityMenuDef()); + menuList.add(createCommunityMenuDef()); return menuList.toArray(new MenuDef[menuList.size()]); } @@ -349,7 +349,7 @@ public abstract class ToolBarMenuDock { insertMenu(menuDef, MenuHandler.HELP); return menuDef; } - private MenuDef CreateCommunityMenuDef() { + private MenuDef createCommunityMenuDef() { MenuDef menuDef = new MenuDef(Inter.getLocText("FR-Designer_COMMUNITY"), 'C'); ShortCut[] otherCommunityShortCuts = createCommunityShortCuts(); for (ShortCut shortCut : otherCommunityShortCuts) { From c501574367819d6d94b9a4f611551ec48e58172a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9D=99=E5=90=AC=E7=A6=85=E9=B8=A3?= Date: Tue, 24 May 2016 09:43:28 +0800 Subject: [PATCH 37/54] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E4=BA=86todo=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/actions/community/BBSAction.java | 2 +- .../src/com/fr/design/actions/community/BugAction.java | 4 ++-- .../src/com/fr/design/actions/community/NeedAction.java | 2 +- .../src/com/fr/design/actions/community/QuestionAction.java | 2 +- .../src/com/fr/design/actions/community/SignAction.java | 2 +- .../src/com/fr/design/actions/community/UpAction.java | 2 +- .../src/com/fr/design/actions/community/VideoAction.java | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/designer_base/src/com/fr/design/actions/community/BBSAction.java b/designer_base/src/com/fr/design/actions/community/BBSAction.java index 1f13c7000e..09add551d2 100644 --- a/designer_base/src/com/fr/design/actions/community/BBSAction.java +++ b/designer_base/src/com/fr/design/actions/community/BBSAction.java @@ -27,7 +27,7 @@ public class BBSAction extends UpdateAction this.setName(getMenuKeySet().getMenuName()); this.setMnemonic(getMenuKeySet().getMnemonic()); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/bbs.png")); - // TODO Auto-generated constructor stub + } /** diff --git a/designer_base/src/com/fr/design/actions/community/BugAction.java b/designer_base/src/com/fr/design/actions/community/BugAction.java index f399bae980..497a12caab 100644 --- a/designer_base/src/com/fr/design/actions/community/BugAction.java +++ b/designer_base/src/com/fr/design/actions/community/BugAction.java @@ -25,7 +25,7 @@ public class BugAction extends UpdateAction this.setName(getMenuKeySet().getMenuName()); this.setMnemonic(getMenuKeySet().getMnemonic()); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/bug.png")); - // TODO Auto-generated constructor stub + } @Override @@ -64,7 +64,7 @@ public void actionPerformed(ActionEvent arg0) @Override public char getMnemonic() { - // TODO Auto-generated method stub + return 'U'; } }; diff --git a/designer_base/src/com/fr/design/actions/community/NeedAction.java b/designer_base/src/com/fr/design/actions/community/NeedAction.java index c7f4f54507..bf9b3a5097 100644 --- a/designer_base/src/com/fr/design/actions/community/NeedAction.java +++ b/designer_base/src/com/fr/design/actions/community/NeedAction.java @@ -26,7 +26,7 @@ public class NeedAction extends UpdateAction this.setName(getMenuKeySet().getMenuName()); this.setMnemonic(getMenuKeySet().getMnemonic()); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/need.png")); - // TODO Auto-generated constructor stub + } @Override diff --git a/designer_base/src/com/fr/design/actions/community/QuestionAction.java b/designer_base/src/com/fr/design/actions/community/QuestionAction.java index f1a9d7c0a6..7e8ced10bb 100644 --- a/designer_base/src/com/fr/design/actions/community/QuestionAction.java +++ b/designer_base/src/com/fr/design/actions/community/QuestionAction.java @@ -25,7 +25,7 @@ public class QuestionAction extends UpdateAction this.setName(getMenuKeySet().getMenuName()); this.setMnemonic(getMenuKeySet().getMnemonic()); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/questions.png")); - // TODO Auto-generated constructor stub + } @Override diff --git a/designer_base/src/com/fr/design/actions/community/SignAction.java b/designer_base/src/com/fr/design/actions/community/SignAction.java index e216a90290..30170bc860 100644 --- a/designer_base/src/com/fr/design/actions/community/SignAction.java +++ b/designer_base/src/com/fr/design/actions/community/SignAction.java @@ -26,7 +26,7 @@ public class SignAction extends UpdateAction this.setName(getMenuKeySet().getMenuName()); this.setMnemonic(getMenuKeySet().getMnemonic()); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/signature.png")); - // TODO Auto-generated constructor stub + } @Override diff --git a/designer_base/src/com/fr/design/actions/community/UpAction.java b/designer_base/src/com/fr/design/actions/community/UpAction.java index 4a8b8a270b..999b7e9e8f 100644 --- a/designer_base/src/com/fr/design/actions/community/UpAction.java +++ b/designer_base/src/com/fr/design/actions/community/UpAction.java @@ -26,7 +26,7 @@ public class UpAction extends UpdateAction this.setName(getMenuKeySet().getMenuName()); this.setMnemonic(getMenuKeySet().getMnemonic()); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/update.png")); - // TODO Auto-generated constructor stub + } @Override diff --git a/designer_base/src/com/fr/design/actions/community/VideoAction.java b/designer_base/src/com/fr/design/actions/community/VideoAction.java index 97a53569a2..86b411ace4 100644 --- a/designer_base/src/com/fr/design/actions/community/VideoAction.java +++ b/designer_base/src/com/fr/design/actions/community/VideoAction.java @@ -26,7 +26,7 @@ public class VideoAction extends UpdateAction this.setName(getMenuKeySet().getMenuName()); this.setMnemonic(getMenuKeySet().getMnemonic()); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/video.png")); - // TODO Auto-generated constructor stub + } @Override From 51bdaf47b6150f2155ab611c97b2bac6178f2a1f Mon Sep 17 00:00:00 2001 From: vito Date: Tue, 24 May 2016 12:10:04 +0800 Subject: [PATCH 38/54] =?UTF-8?q?=E6=97=A0=E7=AA=97=E5=8F=A3=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/extra/PluginShopDialog.java | 10 ++++++++-- .../src/com/fr/design/extra/PluginWebBridge.java | 10 ++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginShopDialog.java b/designer_base/src/com/fr/design/extra/PluginShopDialog.java index 01e966116e..f2e1e93ec8 100644 --- a/designer_base/src/com/fr/design/extra/PluginShopDialog.java +++ b/designer_base/src/com/fr/design/extra/PluginShopDialog.java @@ -4,17 +4,23 @@ import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.UIDialog; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; +import javafx.embed.swing.JFXPanel; +import javax.swing.*; import java.awt.*; /** * Created by vito on 16/4/18. */ public class PluginShopDialog extends UIDialog { - private static final Dimension DEFAULT_SHOP = new Dimension(900, 684); + private static final Dimension DEFAULT_SHOP = new Dimension(900, 700); public PluginShopDialog(Frame frame, BasicPane pane) { - super(frame, pane, false); + super(frame); + setUndecorated(true); + JPanel panel = (JPanel) getContentPane(); + panel.setLayout(new BorderLayout()); + add(pane, BorderLayout.CENTER); setSize(DEFAULT_SHOP); GUICoreUtils.centerWindow(this); setResizable(false); diff --git a/designer_base/src/com/fr/design/extra/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index 947104bf99..07d37b86a5 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/PluginWebBridge.java @@ -285,6 +285,16 @@ public class PluginWebBridge { } } + /** + * 窗口是否无装饰(判断是否使用系统标题栏) + */ + public boolean isCustomTitleBar() { + if (uiDialog != null) { + return uiDialog.isUndecorated(); + } + return false; + } + /** * 在本地浏览器里打开url * tips:重载的时候,需要给js调用的方法需要放在前面,否则可能不会被调用(此乃坑) From 94dd5950dbf2c7103342f5d453f9fb4f557d9e87 Mon Sep 17 00:00:00 2001 From: xiaxiang <1438003374@qq.com> Date: Tue, 24 May 2016 23:32:44 +0800 Subject: [PATCH 39/54] rt --- designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java b/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java index 27c2c1ec0c..80f40cadfe 100644 --- a/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java +++ b/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java @@ -1 +1 @@ -package com.fr.design.mainframe; import com.fr.base.ConfigManager; import com.fr.base.FRContext; import com.fr.design.beans.BasicBeanPane; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.mainframe.toolbar.AuthorityEditToolBarComponent; import com.fr.design.mainframe.toolbar.ToolBarMenuDock; import com.fr.design.roleAuthority.RolesAlreadyEditedPane; import com.fr.design.webattr.ReportWebWidgetConstants; import com.fr.design.webattr.ToolBarButton; import com.fr.design.webattr.ToolBarPane; import com.fr.form.ui.Button; import com.fr.form.ui.ToolBar; import com.fr.form.ui.Widget; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.main.TemplateWorkBook; import com.fr.report.web.Location; import com.fr.report.web.ToolBarManager; import com.fr.report.web.WebContent; import com.fr.base.ConfigManagerProvider; import com.fr.stable.ArrayUtils; import com.fr.web.attr.ReportWebAttr; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.List; /** * Author : daisy * Date: 13-9-9 * Time: 下午4:58 */ public class AuthorityToolBarPane extends BasicBeanPane implements AuthorityEditToolBarComponent { private static final int SMALL_GAP = 13; private static final int GAP = 25; private static final int PRE_GAP = 9; private static final int COMBOX_WIDTH = 144; private static final String[] CHOOSEITEM = new String[]{Inter.getLocText("M-Page_Preview"), Inter.getLocText(new String[]{"Face_Write", "PageSetup-Page"}), Inter.getLocText("M-Data_Analysis")}; private UIComboBox choseComboBox; private ToolBarPane toolBarPane; private AuthorityEditToolBarPane authorityEditToolBarPane = null; private int selectedIndex = -1; private UILabel title = null; private MouseListener mouseListener = new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (!toolBarPane.isEnabled()) { return; } java.util.List buttonlists = toolBarPane.getToolBarButtons(); int oldIndex = selectedIndex; selectedIndex = pressButtonIndex(e, buttonlists); //实现shift多选 if (e.isShiftDown()) { if (oldIndex == -1) { removeSelection(); ((ToolBarButton) e.getSource()).setSelected(true); } else { int max = oldIndex >= selectedIndex ? oldIndex : selectedIndex; int min = oldIndex <= selectedIndex ? oldIndex : selectedIndex; for (int i = min; i <= max; i++) { buttonlists.get(i).setSelected(true); } } } else if (!e.isControlDown()) { //实现单选 removeSelection(); if (selectedIndex != -1) { ((ToolBarButton) e.getSource()).setSelected(true); } } authorityEditToolBarPane.populate(); EastRegionContainerPane.getInstance().replaceUpPane(authorityEditToolBarPane); } }; private int pressButtonIndex(MouseEvent e, java.util.List buttonlists) { if (!(e.getSource() instanceof ToolBarButton)) { return -1; } ToolBarButton button = (ToolBarButton) e.getSource(); for (int i = 0; i < buttonlists.size(); i++) { if (ComparatorUtils.equals(button, buttonlists.get(i))) { return i; } } return -1; } /** * 去掉选择 */ public void removeSelection() { for (ToolBarButton button : toolBarPane.getToolBarButtons()) { button.setSelected(false); } } private ItemListener itemListener = new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.DESELECTED) { selectedIndex = -1; populateToolBarPane(); authorityEditToolBarPane = new AuthorityEditToolBarPane(toolBarPane.getToolBarButtons()); authorityEditToolBarPane.setAuthorityToolBarPane(AuthorityToolBarPane.this); EastRegionContainerPane.getInstance().replaceUpPane(authorityEditToolBarPane); EastRegionContainerPane.getInstance().replaceDownPane(RolesAlreadyEditedPane.getInstance()); } } }; public AuthorityToolBarPane() { this.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 3)); this.setBorder(BorderFactory.createEmptyBorder(0, PRE_GAP, 0, 0)); title = new UILabel(Inter.getLocText(new String[]{"ReportServerP-Toolbar", "Choose_Role"})); title.setHorizontalAlignment(SwingConstants.CENTER); this.add(title, 0); choseComboBox = new UIComboBox(CHOOSEITEM) { public Dimension getPreferredSize() { Dimension dim = super.getPreferredSize(); dim.width = COMBOX_WIDTH; return dim; } }; choseComboBox.addItemListener(itemListener); //默认选择第一个 choseComboBox.setSelectedIndex(0); this.add(createGapPanel(SMALL_GAP)); this.add(choseComboBox); toolBarPane = new ToolBarPane(); toolBarPane.setBorder(null); toolBarPane.removeDefaultMouseListener(); this.add(createGapPanel(GAP)); this.add(toolBarPane); populateDefaultToolBarWidgets(); populateBean(getReportWebAttr()); toolBarPane.addAuthorityListener(mouseListener); authorityEditToolBarPane = new AuthorityEditToolBarPane(toolBarPane.getToolBarButtons()); authorityEditToolBarPane.setAuthorityToolBarPane(this); checkToolBarPaneEnable(); } private JPanel createGapPanel(final int gap) { return new JPanel() { public Dimension getPreferredSize() { Dimension dim = super.getPreferredSize(); dim.width = gap; return dim; } }; } private void populateToolBarPane() { toolBarPane.removeAll(); populateDefaultToolBarWidgets(); populateBean(getReportWebAttr()); toolBarPane.addAuthorityListener(mouseListener); toolBarPane.repaint(); authorityEditToolBarPane = new AuthorityEditToolBarPane(toolBarPane.getToolBarButtons()); checkToolBarPaneEnable(); } /** * 使用普通用户远程设计时,如果工具栏使用的是“采用服务器设置”,则工具栏按钮为灰不可用 */ private void checkToolBarPaneEnable() { List toolBarButtons = toolBarPane.getToolBarButtons(); boolean isnotEnable = ComparatorUtils.equals(title.getText(), Inter.getLocText(new String[]{"Server", "ReportServerP-Toolbar", "Choose_Role"})) && !FRContext.getCurrentEnv().isRoot(); for (ToolBarButton button : toolBarButtons) { button.setEnabled(!isnotEnable); } toolBarPane.setEnabled(!isnotEnable); } /** * 更新权限工具栏面板 */ public void populateAuthority() { toolBarPane.repaint(); } private ReportWebAttr getReportWebAttr() { JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (!editingTemplate.isJWorkBook()) { return null; } JWorkBook editingWorkBook = (JWorkBook) editingTemplate; TemplateWorkBook wbTpl = editingWorkBook.getTarget(); return wbTpl.getReportWebAttr(); } //将该报表的设置过权限的属性记录一下 public void setAuthorityWebAttr(Widget widget, boolean isSelected, String selectedRole) { JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (!editingTemplate.isJWorkBook()) { return; } JWorkBook editingWorkBook = (JWorkBook) editingTemplate; TemplateWorkBook wbTpl = editingWorkBook.getTarget(); ReportWebAttr rw = wbTpl.getReportWebAttr(); ConfigManagerProvider cm = ConfigManager.getProviderInstance(); ReportWebAttr webAttr = ((ReportWebAttr) cm.getGlobalAttribute(ReportWebAttr.class)); //wbTpl.clear先清空 //再将所有的保存进去 //看是存在服务器还存在模板里面 if (choseComboBox.getSelectedIndex() == 0) { //分页 if (rw == null || rw.getWebPage() == null) { dealWithWebContent(webAttr.getWebPage(), widget, isSelected, selectedRole); } } else if (choseComboBox.getSelectedIndex() == 1) { //填报 if (rw == null || rw.getWebPage() == null) { dealWithWebContent(webAttr.getWebWrite(), widget, isSelected, selectedRole); } } else { //view if (rw == null || rw.getWebPage() == null) { dealWithWebContent(webAttr.getWebView(), widget, isSelected, selectedRole); } } try { FRContext.getCurrentEnv().writeResource(cm); } catch (Exception e) { FRLogger.getLogger().error(e.getMessage()); } } private void dealWithWebContent(WebContent wc, Widget widget, boolean isSelected, String selectedRole) { ToolBarManager[] managers = wc.getToolBarManagers(); if (managers == null) { return; } for (int i = 0; i < managers.length; i++) { ToolBar tb = managers[i].getToolBar(); for (int j = 0; j < tb.getWidgetSize(); j++) { if (widget instanceof Button && tb.getWidget(j) instanceof Button) { if (ComparatorUtils.equals(((Button) widget).getIconName(), ((Button) tb.getWidget(j)).getIconName())) { if (!isSelected) { tb.getWidget(j).getWidgetPrivilegeControl().addInvisibleRole(selectedRole); } else { tb.getWidget(j).getWidgetPrivilegeControl().removeInvisibleRole(selectedRole); } } } } } wc.setToolBarManagers(managers); } public void populateBean(ReportWebAttr reportWebAttr) { this.remove(title); // 如果是空值就说明采用服务器配置了 if (reportWebAttr == null || this.getWebContent(reportWebAttr) == null) { title = new UILabel(Inter.getLocText(new String[]{"Server", "ReportServerP-Toolbar", "Choose_Role"})); populateServerSettings(); this.add(title, 0); return; } // 模板设置 T webContent = this.getWebContent(reportWebAttr); title = new UILabel(Inter.getLocText(new String[]{"the_template", "ReportServerP-Toolbar", "Choose_Role"})); this.add(title, 0); populate(webContent.getToolBarManagers()); } public ReportWebAttr updateBean() { return null; } public void populate(ToolBarManager[] toolBarManager) { if (ArrayUtils.isEmpty(toolBarManager)) { return; } if (toolBarManager.length == 0) { return; } for (int i = 0; i < toolBarManager.length; i++) { toolBarPane.populateBean(toolBarManager[i].getToolBar()); } } public Dimension getPreferredSize() { Dimension dim = super.getPreferredSize(); dim.height = ToolBarMenuDock.PANLE_HEIGNT; return dim; } public void populateBean(ToolBarManager[] toolBarManager) { if (ArrayUtils.isEmpty(toolBarManager)) { return; } for (int i = 0; i < toolBarManager.length; i++) { Location location = toolBarManager[i].getToolBarLocation(); if (location instanceof Location.Embed) { toolBarPane.populateBean(toolBarManager[i].getToolBar()); } } } private void populateServerSettings() { ConfigManagerProvider cm = ConfigManager.getProviderInstance(); ReportWebAttr webAttr = ((ReportWebAttr) cm.getGlobalAttribute(ReportWebAttr.class)); if (this.getWebContent(webAttr) != null) { populate(this.getWebContent(webAttr).getToolBarManagers()); } } protected String title4PopupWindow() { return null; } private T getWebContent(ReportWebAttr reportWebAttr) { if (choseComboBox.getSelectedIndex() == 0) { return reportWebAttr == null ? null : (T) reportWebAttr.getWebPage(); } else if (choseComboBox.getSelectedIndex() == 1) { return reportWebAttr == null ? null : (T) reportWebAttr.getWebWrite(); } else { return reportWebAttr == null ? null : (T) reportWebAttr.getWebView(); } } private void populateDefaultToolBarWidgets() { if (choseComboBox.getSelectedIndex() == 0) { ReportWebWidgetConstants.getPageToolBarInstance(); } else if (choseComboBox.getSelectedIndex() == 1) { ReportWebWidgetConstants.getWriteToolBarInstance(); } else { ReportWebWidgetConstants.getViewToolBarInstance(); } } private ToolBarManager getDefaultToolBarManager() { if (choseComboBox.getSelectedIndex() == 0) { return ToolBarManager.createDefaultToolBar(); } else if (choseComboBox.getSelectedIndex() == 1) { return ToolBarManager.createDefaultWriteToolBar(); } else { return ToolBarManager.createDefaultViewToolBar(); } } } \ No newline at end of file +package com.fr.design.mainframe; import com.fr.base.ConfigManager; import com.fr.base.ConfigManagerProvider; import com.fr.base.FRContext; import com.fr.design.beans.BasicBeanPane; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.mainframe.toolbar.AuthorityEditToolBarComponent; import com.fr.design.mainframe.toolbar.ToolBarMenuDock; import com.fr.design.roleAuthority.RolesAlreadyEditedPane; import com.fr.design.webattr.ReportWebWidgetConstants; import com.fr.design.webattr.ToolBarButton; import com.fr.design.webattr.ToolBarPane; import com.fr.form.ui.Button; import com.fr.form.ui.ToolBar; import com.fr.form.ui.Widget; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; import com.fr.main.TemplateWorkBook; import com.fr.report.web.Location; import com.fr.report.web.ToolBarManager; import com.fr.report.web.WebContent; import com.fr.stable.ArrayUtils; import com.fr.web.attr.ReportWebAttr; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.List; /** * Author : daisy * Date: 13-9-9 * Time: 下午4:58 */ public class AuthorityToolBarPane extends BasicBeanPane implements AuthorityEditToolBarComponent { private static final int SMALL_GAP = 13; private static final int GAP = 25; private static final int PRE_GAP = 9; private static final int COMBOX_WIDTH = 144; private static final String[] CHOOSEITEM = new String[]{Inter.getLocText("M-Page_Preview"), Inter.getLocText(new String[]{"Face_Write", "PageSetup-Page"}), Inter.getLocText("M-Data_Analysis")}; private UIComboBox choseComboBox; private ToolBarPane toolBarPane; private AuthorityEditToolBarPane authorityEditToolBarPane = null; private int selectedIndex = -1; private UILabel title = null; private MouseListener mouseListener = new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (!toolBarPane.isEnabled()) { return; } java.util.List buttonlists = toolBarPane.getToolBarButtons(); int oldIndex = selectedIndex; selectedIndex = pressButtonIndex(e, buttonlists); //实现shift多选 if (e.isShiftDown()) { if (oldIndex == -1) { removeSelection(); ((ToolBarButton) e.getSource()).setSelected(true); } else { int max = oldIndex >= selectedIndex ? oldIndex : selectedIndex; int min = oldIndex <= selectedIndex ? oldIndex : selectedIndex; for (int i = min; i <= max; i++) { buttonlists.get(i).setSelected(true); } } } else if (!e.isControlDown()) { //实现单选 removeSelection(); if (selectedIndex != -1) { ((ToolBarButton) e.getSource()).setSelected(true); } } authorityEditToolBarPane.populate(); EastRegionContainerPane.getInstance().replaceUpPane(authorityEditToolBarPane); } }; private int pressButtonIndex(MouseEvent e, java.util.List buttonlists) { if (!(e.getSource() instanceof ToolBarButton)) { return -1; } ToolBarButton button = (ToolBarButton) e.getSource(); for (int i = 0; i < buttonlists.size(); i++) { if (ComparatorUtils.equals(button, buttonlists.get(i))) { return i; } } return -1; } /** * 去掉选择 */ public void removeSelection() { for (ToolBarButton button : toolBarPane.getToolBarButtons()) { button.setSelected(false); } } private ItemListener itemListener = new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.DESELECTED) { selectedIndex = -1; populateToolBarPane(); authorityEditToolBarPane = new AuthorityEditToolBarPane(toolBarPane.getToolBarButtons()); authorityEditToolBarPane.setAuthorityToolBarPane(AuthorityToolBarPane.this); EastRegionContainerPane.getInstance().replaceUpPane(authorityEditToolBarPane); EastRegionContainerPane.getInstance().replaceDownPane(RolesAlreadyEditedPane.getInstance()); } } }; public AuthorityToolBarPane() { this.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 3)); this.setBorder(BorderFactory.createEmptyBorder(0, PRE_GAP, 0, 0)); title = new UILabel(Inter.getLocText(new String[]{"ReportServerP-Toolbar", "Choose_Role"})); title.setHorizontalAlignment(SwingConstants.CENTER); this.add(title, 0); choseComboBox = new UIComboBox(CHOOSEITEM) { public Dimension getPreferredSize() { Dimension dim = super.getPreferredSize(); dim.width = COMBOX_WIDTH; return dim; } }; choseComboBox.addItemListener(itemListener); //默认选择第一个 choseComboBox.setSelectedIndex(0); this.add(createGapPanel(SMALL_GAP)); this.add(choseComboBox); toolBarPane = new ToolBarPane(); toolBarPane.setBorder(null); toolBarPane.removeDefaultMouseListener(); this.add(createGapPanel(GAP)); this.add(toolBarPane); populateDefaultToolBarWidgets(); populateBean(getReportWebAttr()); toolBarPane.addAuthorityListener(mouseListener); authorityEditToolBarPane = new AuthorityEditToolBarPane(toolBarPane.getToolBarButtons()); authorityEditToolBarPane.setAuthorityToolBarPane(this); checkToolBarPaneEnable(); } private JPanel createGapPanel(final int gap) { return new JPanel() { public Dimension getPreferredSize() { Dimension dim = super.getPreferredSize(); dim.width = gap; return dim; } }; } private void populateToolBarPane() { toolBarPane.removeAll(); populateDefaultToolBarWidgets(); populateBean(getReportWebAttr()); toolBarPane.addAuthorityListener(mouseListener); toolBarPane.repaint(); authorityEditToolBarPane = new AuthorityEditToolBarPane(toolBarPane.getToolBarButtons()); checkToolBarPaneEnable(); } /** * 使用普通用户远程设计时,如果工具栏使用的是“采用服务器设置”,则工具栏按钮为灰不可用 */ private void checkToolBarPaneEnable() { List toolBarButtons = toolBarPane.getToolBarButtons(); boolean isnotEnable = ComparatorUtils.equals(title.getText(), Inter.getLocText(new String[]{"Server", "ReportServerP-Toolbar", "Choose_Role"})) && !FRContext.getCurrentEnv().isRoot(); for (ToolBarButton button : toolBarButtons) { button.setEnabled(!isnotEnable); } toolBarPane.setEnabled(!isnotEnable); } /** * 更新权限工具栏面板 */ public void populateAuthority() { toolBarPane.repaint(); } private ReportWebAttr getReportWebAttr() { JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (!editingTemplate.isJWorkBook()) { return null; } JWorkBook editingWorkBook = (JWorkBook) editingTemplate; TemplateWorkBook wbTpl = editingWorkBook.getTarget(); return wbTpl.getReportWebAttr(); } //将该报表的设置过权限的属性记录一下 public void setAuthorityWebAttr(Widget widget, boolean isSelected, String selectedRole) { JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (!editingTemplate.isJWorkBook()) { return; } JWorkBook editingWorkBook = (JWorkBook) editingTemplate; TemplateWorkBook wbTpl = editingWorkBook.getTarget(); ReportWebAttr rw = wbTpl.getReportWebAttr(); ConfigManagerProvider cm = ConfigManager.getProviderInstance(); ReportWebAttr webAttr = ((ReportWebAttr) cm.getGlobalAttribute(ReportWebAttr.class)); //wbTpl.clear先清空 //再将所有的保存进去 //看是存在服务器还存在模板里面 if (choseComboBox.getSelectedIndex() == 0) { //分页 if (rw == null || rw.getWebPage() == null) { dealWithWebContent(webAttr.getWebPage(), widget, isSelected, selectedRole); } } else if (choseComboBox.getSelectedIndex() == 1) { //填报 if (rw == null || rw.getWebPage() == null) { dealWithWebContent(webAttr.getWebWrite(), widget, isSelected, selectedRole); } } else { //view if (rw == null || rw.getWebPage() == null) { dealWithWebContent(webAttr.getWebView(), widget, isSelected, selectedRole); } } } private void dealWithWebContent(WebContent wc, Widget widget, boolean isSelected, String selectedRole) { ToolBarManager[] managers = wc.getToolBarManagers(); if (managers == null) { return; } for (int i = 0; i < managers.length; i++) { ToolBar tb = managers[i].getToolBar(); for (int j = 0; j < tb.getWidgetSize(); j++) { if (widget instanceof Button && tb.getWidget(j) instanceof Button) { if (ComparatorUtils.equals(((Button) widget).getIconName(), ((Button) tb.getWidget(j)).getIconName())) { if (!isSelected) { tb.getWidget(j).getWidgetPrivilegeControl().addInvisibleRole(selectedRole); } else { tb.getWidget(j).getWidgetPrivilegeControl().removeInvisibleRole(selectedRole); } } } } } wc.setToolBarManagers(managers); } public void populateBean(ReportWebAttr reportWebAttr) { this.remove(title); // 如果是空值就说明采用服务器配置了 if (reportWebAttr == null || this.getWebContent(reportWebAttr) == null) { title = new UILabel(Inter.getLocText(new String[]{"Server", "ReportServerP-Toolbar", "Choose_Role"})); populateServerSettings(); this.add(title, 0); return; } // 模板设置 T webContent = this.getWebContent(reportWebAttr); title = new UILabel(Inter.getLocText(new String[]{"the_template", "ReportServerP-Toolbar", "Choose_Role"})); this.add(title, 0); populate(webContent.getToolBarManagers()); } public ReportWebAttr updateBean() { return null; } public void populate(ToolBarManager[] toolBarManager) { if (ArrayUtils.isEmpty(toolBarManager)) { return; } if (toolBarManager.length == 0) { return; } for (int i = 0; i < toolBarManager.length; i++) { toolBarPane.populateBean(toolBarManager[i].getToolBar()); } } public Dimension getPreferredSize() { Dimension dim = super.getPreferredSize(); dim.height = ToolBarMenuDock.PANLE_HEIGNT; return dim; } public void populateBean(ToolBarManager[] toolBarManager) { if (ArrayUtils.isEmpty(toolBarManager)) { return; } for (int i = 0; i < toolBarManager.length; i++) { Location location = toolBarManager[i].getToolBarLocation(); if (location instanceof Location.Embed) { toolBarPane.populateBean(toolBarManager[i].getToolBar()); } } } private void populateServerSettings() { ConfigManagerProvider cm = ConfigManager.getProviderInstance(); ReportWebAttr webAttr = ((ReportWebAttr) cm.getGlobalAttribute(ReportWebAttr.class)); if (this.getWebContent(webAttr) != null) { populate(this.getWebContent(webAttr).getToolBarManagers()); } } protected String title4PopupWindow() { return null; } private T getWebContent(ReportWebAttr reportWebAttr) { if (choseComboBox.getSelectedIndex() == 0) { return reportWebAttr == null ? null : (T) reportWebAttr.getWebPage(); } else if (choseComboBox.getSelectedIndex() == 1) { return reportWebAttr == null ? null : (T) reportWebAttr.getWebWrite(); } else { return reportWebAttr == null ? null : (T) reportWebAttr.getWebView(); } } private void populateDefaultToolBarWidgets() { if (choseComboBox.getSelectedIndex() == 0) { ReportWebWidgetConstants.getPageToolBarInstance(); } else if (choseComboBox.getSelectedIndex() == 1) { ReportWebWidgetConstants.getWriteToolBarInstance(); } else { ReportWebWidgetConstants.getViewToolBarInstance(); } } private ToolBarManager getDefaultToolBarManager() { if (choseComboBox.getSelectedIndex() == 0) { return ToolBarManager.createDefaultToolBar(); } else if (choseComboBox.getSelectedIndex() == 1) { return ToolBarManager.createDefaultWriteToolBar(); } else { return ToolBarManager.createDefaultViewToolBar(); } } } \ No newline at end of file From 2079274c45e679a31cfde2331114de7bcf04ccc0 Mon Sep 17 00:00:00 2001 From: vito Date: Wed, 25 May 2016 21:03:44 +0800 Subject: [PATCH 40/54] =?UTF-8?q?=E6=94=B9=E4=B8=BA=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E8=8E=B7=E5=8F=96sitecenter=E5=86=85=E5=AE=B9=EF=BC=8C?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E4=BC=9A=E5=87=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/extra/PluginWebBridge.java | 2 -- .../com/fr/design/extra/exe/GetPluginFromStoreExecutor.java | 4 ++-- .../src/com/fr/design/extra/exe/SearchOnlineExecutor.java | 4 ++-- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index 25d9c20cf5..07c404ab09 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/PluginWebBridge.java @@ -36,8 +36,6 @@ public class PluginWebBridge { private UIDialog uiDialog; - public static final String PLUGIN_SHOP = SiteCenter.getInstance().acquireUrlByKind("plugin.plist"); - public static PluginWebBridge getHelper() { if (helper != null) { return helper; diff --git a/designer_base/src/com/fr/design/extra/exe/GetPluginFromStoreExecutor.java b/designer_base/src/com/fr/design/extra/exe/GetPluginFromStoreExecutor.java index 030b22f216..35fde2e139 100644 --- a/designer_base/src/com/fr/design/extra/exe/GetPluginFromStoreExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/GetPluginFromStoreExecutor.java @@ -1,8 +1,8 @@ package com.fr.design.extra.exe; -import com.fr.design.extra.PluginWebBridge; import com.fr.design.extra.Process; import com.fr.general.FRLogger; +import com.fr.general.SiteCenter; import com.fr.general.http.HttpClient; import com.fr.stable.StringUtils; @@ -38,7 +38,7 @@ public class GetPluginFromStoreExecutor implements Executor { @Override public void run(Process process) { - StringBuilder url = new StringBuilder(PluginWebBridge.PLUGIN_SHOP); + StringBuilder url = new StringBuilder(SiteCenter.getInstance().acquireUrlByKind("plugin.plist")); if (StringUtils.isNotBlank(category)) { url.append("&cid=").append(category.split("-")[1]); } diff --git a/designer_base/src/com/fr/design/extra/exe/SearchOnlineExecutor.java b/designer_base/src/com/fr/design/extra/exe/SearchOnlineExecutor.java index a94fcc5f20..089173c984 100644 --- a/designer_base/src/com/fr/design/extra/exe/SearchOnlineExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/SearchOnlineExecutor.java @@ -1,8 +1,8 @@ package com.fr.design.extra.exe; -import com.fr.design.extra.PluginWebBridge; import com.fr.design.extra.Process; import com.fr.general.FRLogger; +import com.fr.general.SiteCenter; import com.fr.general.http.HttpClient; import com.fr.stable.StringUtils; @@ -34,7 +34,7 @@ public class SearchOnlineExecutor implements Executor { @Override public void run(Process process) { try { - HttpClient httpClient = new HttpClient(PluginWebBridge.PLUGIN_SHOP + "&keyword=" + keyword); + HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("plugin.plist") + "&keyword=" + keyword); result = httpClient.getResponseText(); } catch (Exception e) { From e681fde3c279cf9253638b25a1817c1b36962a6d Mon Sep 17 00:00:00 2001 From: fr_shine Date: Thu, 26 May 2016 14:22:46 +0800 Subject: [PATCH 41/54] api level --- .../src/com/fr/design/chart/fun/IndependentChartUIProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/chart/fun/IndependentChartUIProvider.java b/designer_chart/src/com/fr/design/chart/fun/IndependentChartUIProvider.java index e2afed9948..a919143967 100644 --- a/designer_chart/src/com/fr/design/chart/fun/IndependentChartUIProvider.java +++ b/designer_chart/src/com/fr/design/chart/fun/IndependentChartUIProvider.java @@ -22,7 +22,7 @@ public interface IndependentChartUIProvider extends Level { String XML_TAG = "IndependentChartUIProvider"; - int CURRENT_API_LEVEL = 2; + int CURRENT_API_LEVEL = 3; /** * 图表的类型定义界面类型,就是属性表的第一个界面 From e4588625d90632b435a89b3c29df6151fa51f2b9 Mon Sep 17 00:00:00 2001 From: fr_shine Date: Thu, 26 May 2016 19:36:12 +0800 Subject: [PATCH 42/54] old plugin level --- .../fun/impl/AbstractIndependentChartUIWithAPILevel.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java index b1361b21f6..ffe91cd0d0 100644 --- a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java +++ b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java @@ -15,9 +15,13 @@ import com.fr.general.ComparatorUtils; * Created by Mitisky on 16/3/7. */ public abstract class AbstractIndependentChartUIWithAPILevel implements IndependentChartUIProvider { + private static final int OLD_PLUGIN_LEVEL = -2; + @Override + //以前的插件没有覆写这个方法,所以始终获取到-2,比当前level低,提示更新. + //新的插件编译进去的是当前LEVEL,当之后LEVEL增加,会比编译进去的LEVEL大,提示更新. public int currentAPILevel() { - return CURRENT_API_LEVEL; + return OLD_PLUGIN_LEVEL; } public AbstractChartAttrPane[] getAttrPaneArray(AttributeChangeListener listener){ From 0df8ff6097be91efefdc4a20546fc60325104016 Mon Sep 17 00:00:00 2001 From: neil Date: Fri, 27 May 2016 14:40:52 +0800 Subject: [PATCH 43/54] =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/report/mobile/MobileRadioGroupPane.java | 4 ++-- .../src/com/fr/design/report/mobile/ReportMobileAttrPane.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/designer/src/com/fr/design/report/mobile/MobileRadioGroupPane.java b/designer/src/com/fr/design/report/mobile/MobileRadioGroupPane.java index 85cee58e8f..9e66389264 100644 --- a/designer/src/com/fr/design/report/mobile/MobileRadioGroupPane.java +++ b/designer/src/com/fr/design/report/mobile/MobileRadioGroupPane.java @@ -1,11 +1,11 @@ package com.fr.design.report.mobile; +import com.fr.base.mobile.MobileFitAttrState; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; -import com.fr.base.mobile.MobileFitAttrState; import com.fr.stable.StringUtils; import javax.swing.*; @@ -17,7 +17,7 @@ import java.util.List; /** * Created by Administrator on 2016/5/16/0016. */ -public class MobileRadioGroupPane extends BasicBeanPane{ +public class MobileRadioGroupPane extends BasicBeanPane { private List radioButtons = new ArrayList(); diff --git a/designer/src/com/fr/design/report/mobile/ReportMobileAttrPane.java b/designer/src/com/fr/design/report/mobile/ReportMobileAttrPane.java index 67f0ab825b..1cd04e8d03 100644 --- a/designer/src/com/fr/design/report/mobile/ReportMobileAttrPane.java +++ b/designer/src/com/fr/design/report/mobile/ReportMobileAttrPane.java @@ -1,10 +1,10 @@ package com.fr.design.report.mobile; +import com.fr.base.mobile.MobileFitAttrState; import com.fr.design.beans.BasicBeanPane; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.general.Inter; import com.fr.report.mobile.ElementCaseMobileAttr; -import com.fr.base.mobile.MobileFitAttrState; import javax.swing.*; import java.awt.*; @@ -12,7 +12,7 @@ import java.awt.*; /** * Created by Administrator on 2016/5/12/0012. */ -public class ReportMobileAttrPane extends BasicBeanPane{ +public class ReportMobileAttrPane extends BasicBeanPane { //横屏设置面板 private MobileRadioGroupPane horizionPane; From 9e607e097c683cdf2707ed181eb466343511d5a7 Mon Sep 17 00:00:00 2001 From: neil Date: Fri, 27 May 2016 15:23:07 +0800 Subject: [PATCH 44/54] =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/ExtraDesignClassManager.java | 97 +++++++------------ .../mobile/ElementCasePropertyTable.java | 2 +- .../mobile/ElementCasePropertyUI.java | 2 +- .../mobile/MobileFitAlignmentItems.java | 2 +- .../properties/mobile/MobileFitEditor.java | 2 +- .../properties/mobile/MobileFitRender.java | 2 +- .../properties/mobile/MobileFitWrapper.java | 2 +- .../design/gui/xtable/PropertyGroupModel.java | 88 ++++++++--------- 8 files changed, 86 insertions(+), 111 deletions(-) diff --git a/designer_base/src/com/fr/design/ExtraDesignClassManager.java b/designer_base/src/com/fr/design/ExtraDesignClassManager.java index f191827c5b..009cff1c6e 100644 --- a/designer_base/src/com/fr/design/ExtraDesignClassManager.java +++ b/designer_base/src/com/fr/design/ExtraDesignClassManager.java @@ -126,11 +126,13 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi private DesignerEnvProcessor envProcessor; - private TableDataPaneProcessor tableDataPaneProcessor; + private TableDataTreePaneProcessor tableDataTreePaneProcessor; private Set elementUIProviders; - private Set widgetAttrProviders; + private Set widgetAttrProviders; + + private Set exportAttrTabProviders; private WidgetDesignHandler widgetDesignHandler; @@ -142,17 +144,13 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi widgetDesignHandler = (WidgetDesignHandler) level; } - private Set backgroundQuickUIProviders; - - private Set backgroundUIProviders; - - public TableDataPaneProcessor getTableDataPaneProcessor() { - return tableDataPaneProcessor; + public TableDataTreePaneProcessor getTableDataTreePaneProcessor() { + return tableDataTreePaneProcessor; } - public void setTableDataPaneProcessor(Level level, PluginSimplify simplify) { - validAPILevel(level, TableDataPaneProcessor.CURRENT_LEVEL, simplify.getPluginName()); - tableDataPaneProcessor = (TableDataPaneProcessor) level; + public void setTableDataSourceOPProcessor(Level level, PluginSimplify simplify) { + validAPILevel(level, TableDataTreePaneProcessor.CURRENT_LEVEL, simplify.getPluginName()); + tableDataTreePaneProcessor = (TableDataTreePaneProcessor) level; } public DesignerEnvProcessor getEnvProcessor() { @@ -752,49 +750,19 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi elementUIProviders.add((ElementUIProvider) level); } - public WidgetAttrProvider[] getWidgetAttrProviders() { + public WidgetPropertyUIProvider[] getWidgetAttrProviders() { if (widgetAttrProviders == null) { - return new WidgetAttrProvider[0]; + return new WidgetPropertyUIProvider[0]; } - return widgetAttrProviders.toArray(new WidgetAttrProvider[widgetAttrProviders.size()]); + return widgetAttrProviders.toArray(new WidgetPropertyUIProvider[widgetAttrProviders.size()]); } public void addWidgetAttrProvider(Level level, PluginSimplify simplify) throws Exception { if (widgetAttrProviders == null) { - widgetAttrProviders = new HashSet(); - } - validAPILevel(level, WidgetAttrProvider.CURRENT_LEVEL, simplify.getPluginName()); - widgetAttrProviders.add((WidgetAttrProvider) level); - } - - public BackgroundQuickUIProvider[] getBackgroundQuickUIProviders() { - if (backgroundQuickUIProviders == null) { - return new BackgroundQuickUIProvider[0]; - } - return backgroundQuickUIProviders.toArray(new BackgroundQuickUIProvider[backgroundQuickUIProviders.size()]); - } - - public void addBackgroundQuickUIProvider(Level level, PluginSimplify simplify) throws Exception { - if (backgroundQuickUIProviders == null) { - backgroundQuickUIProviders = new HashSet<>(); - } - validAPILevel(level, BackgroundQuickUIProvider.CURRENT_LEVEL, simplify.getPluginName()); - backgroundQuickUIProviders.add((BackgroundQuickUIProvider) level); - } - - public BackgroundUIProvider[] getBackgroundUIProviders() { - if (backgroundUIProviders == null) { - return new BackgroundUIProvider[0]; - } - return backgroundUIProviders.toArray(new BackgroundUIProvider[backgroundUIProviders.size()]); - } - - public void addBackgroundUIProvider(Level level, PluginSimplify simplify) throws Exception { - if (backgroundUIProviders == null) { - backgroundUIProviders = new HashSet<>(); + widgetAttrProviders = new HashSet(); } - validAPILevel(level, BackgroundUIProvider.CURRENT_LEVEL, simplify.getPluginName()); - backgroundUIProviders.add((BackgroundUIProvider) level); + validAPILevel(level, WidgetPropertyUIProvider.CURRENT_LEVEL, simplify.getPluginName()); + widgetAttrProviders.add((WidgetPropertyUIProvider) level); } /** @@ -851,8 +819,6 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi readWidgetRelated(tagName, impl, simplify); //数据集, 数据连接 readTableDataRelated(tagName, className, simplify); - // 样式相关的 - readStyleRelated(tagName, impl, simplify); if (tagName.equals(ParameterWidgetOptionProvider.XML_TAG)) { addParameterWidgetOption(impl, simplify); } else if (tagName.equals(PreviewProvider.MARK_STRING)) { @@ -887,14 +853,16 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi addSupportDesignApps(impl, simplify); } else if (tagName.equals(DesignerEnvProcessor.XML_TAG)) { setEnvProcessor(impl, simplify); - } else if (tagName.equals(TableDataPaneProcessor.XML_TAG)) { - setTableDataPaneProcessor(impl, simplify); + } else if (tagName.equals(TableDataTreePaneProcessor.XML_TAG)) { + setTableDataSourceOPProcessor(impl, simplify); } else if (tagName.equals(ElementUIProvider.MARK_STRING)) { addElementUIProvider(impl, simplify); - } else if (tagName.equals(WidgetAttrProvider.XML_TAG)) { - addWidgetAttrProvider(impl, simplify); } else if (tagName.equals(WidgetDesignHandler.XML_TAG)) { setWidgetDesignHandler(impl, simplify); + }else if (tagName.equals(WidgetPropertyUIProvider.XML_TAG)) { + addWidgetAttrProvider(impl, simplify); + } else if (tagName.equals(ExportAttrTabProvider.XML_TAG)) { + addExportAttrTabProvider(impl, simplify); } } catch (PluginInvalidLevelException e) { PluginMessage.remindUpdate(e.getMessage()); @@ -903,6 +871,21 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi } } + public ExportAttrTabProvider[] getExportAttrTabProviders() { + if (exportAttrTabProviders == null) { + return new ExportAttrTabProvider[0]; + } + return exportAttrTabProviders.toArray(new ExportAttrTabProvider[exportAttrTabProviders.size()]); + } + + public void addExportAttrTabProvider(Level level, PluginSimplify simplify) throws Exception { + if (exportAttrTabProviders == null) { + exportAttrTabProviders = new HashSet(); + } + validAPILevel(level, ExportAttrTabProvider.CURRENT_LEVEL, simplify.getPluginName()); + exportAttrTabProviders.add((ExportAttrTabProvider) level); + } + private void readTableDataRelated(String tagName, String className, PluginSimplify simplify) { if (tagName.equals(TableDataCreatorProvider.XML_TAG)) { setTableDataCreatorProvider(className); @@ -927,14 +910,6 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi } } - private void readStyleRelated(String tagName, Level impl, PluginSimplify simplify) throws Exception { - if (tagName.equals(BackgroundQuickUIProvider.MARK_STRING)) { - addBackgroundQuickUIProvider(impl, simplify); - } else if (tagName.equals(BackgroundUIProvider.MARK_STRING)) { - addBackgroundUIProvider(impl, simplify); - } - } - /** * 写xml * diff --git a/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java b/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java index 7e37fefc3a..06e2a520e1 100644 --- a/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java +++ b/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java @@ -18,7 +18,7 @@ import java.util.ArrayList; /** * Created by Administrator on 2016/5/16/0016. */ -public class ElementCasePropertyTable extends AbstractPropertyTable{ +public class ElementCasePropertyTable extends AbstractPropertyTable { private XCreator xCreator; private FormDesigner designer; diff --git a/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyUI.java b/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyUI.java index 5e7721a2e6..ac0ba0094d 100644 --- a/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyUI.java +++ b/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyUI.java @@ -9,7 +9,7 @@ import com.fr.general.Inter; /** * Created by Administrator on 2016/5/16/0016. */ -public class ElementCasePropertyUI extends AbstractWidgetPropertyUIProvider{ +public class ElementCasePropertyUI extends AbstractWidgetPropertyUIProvider { private XCreator xCreator; diff --git a/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitAlignmentItems.java b/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitAlignmentItems.java index 094249bf50..552589b71a 100644 --- a/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitAlignmentItems.java +++ b/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitAlignmentItems.java @@ -4,7 +4,7 @@ import com.fr.base.mobile.MobileFitAttrState; import com.fr.design.designer.properties.items.Item; import com.fr.design.designer.properties.items.ItemProvider; -public class MobileFitAlignmentItems implements ItemProvider{ +public class MobileFitAlignmentItems implements ItemProvider { private static Item[] VALUE_ITEMS; diff --git a/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitEditor.java b/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitEditor.java index 6591b90592..97c6938fc5 100644 --- a/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitEditor.java +++ b/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitEditor.java @@ -6,7 +6,7 @@ import com.fr.design.mainframe.widget.editors.ComboEditor; import java.util.Vector; -public class MobileFitEditor extends ComboEditor{ +public class MobileFitEditor extends ComboEditor { public MobileFitEditor() { this(new MobileFitAlignmentItems()); } diff --git a/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitRender.java b/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitRender.java index 6f560e4e36..e8932459ba 100644 --- a/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitRender.java +++ b/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitRender.java @@ -2,7 +2,7 @@ package com.fr.design.designer.properties.mobile; import com.fr.design.mainframe.widget.renderer.EncoderCellRenderer; -public class MobileFitRender extends EncoderCellRenderer{ +public class MobileFitRender extends EncoderCellRenderer { public MobileFitRender(){ super(new MobileFitWrapper()); diff --git a/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitWrapper.java b/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitWrapper.java index 164bcc5c06..2e4c219b97 100644 --- a/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitWrapper.java +++ b/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitWrapper.java @@ -2,7 +2,7 @@ package com.fr.design.designer.properties.mobile; import com.fr.design.designer.properties.ItemWrapper; -public class MobileFitWrapper extends ItemWrapper{ +public class MobileFitWrapper extends ItemWrapper { public MobileFitWrapper(){ super(new MobileFitAlignmentItems()); } diff --git a/designer_form/src/com/fr/design/gui/xtable/PropertyGroupModel.java b/designer_form/src/com/fr/design/gui/xtable/PropertyGroupModel.java index 143176553c..8e8cadad14 100644 --- a/designer_form/src/com/fr/design/gui/xtable/PropertyGroupModel.java +++ b/designer_form/src/com/fr/design/gui/xtable/PropertyGroupModel.java @@ -17,16 +17,16 @@ import java.lang.reflect.Method; import java.util.ArrayList; public class PropertyGroupModel extends AbstractPropertyGroupModel { - - private FormDesigner designer; + + private FormDesigner designer; public PropertyGroupModel(String name, XCreator creator, CRPropertyDescriptor[] propArray, - FormDesigner designer) { - super(name, creator, propArray); - this.designer = designer; - } + FormDesigner designer) { + super(name, creator, propArray); + this.designer = designer; + } - @Override + @Override public Object getValue(int row, int column) { if (column == 0) { return properties[row].getDisplayName(); @@ -49,9 +49,9 @@ public class PropertyGroupModel extends AbstractPropertyGroupModel { try { Method m = properties[row].getWriteMethod(); m.invoke(dealCreatorData(), value); - //属性名称为控件名时,单独处理下 + //属性名称为控件名时,单独处理下 if(ComparatorUtils.equals(FormConstants.NAME, properties[row].getName())){ - creator.resetCreatorName(value.toString()); + creator.resetCreatorName(value.toString()); } properties[row].firePropertyChanged(); return true; @@ -103,49 +103,49 @@ public class PropertyGroupModel extends AbstractPropertyGroupModel { PROPERTIES.add("Properties"); PROPERTIES.add("Others"); } - + /** * 控件属性赋值和取值时,针对scale和title做下处理 * @return */ private Object dealCreatorData() { - return creator.getPropertyDescriptorCreator().toData(); + return creator.getPropertyDescriptorCreator().toData(); } - - @Override - protected void initEditor(final int row) throws Exception { - ExtendedPropertyEditor editor = (ExtendedPropertyEditor) properties[row].createPropertyEditor(dealCreatorData()); - if (editor == null) { - Class propType = properties[row].getPropertyType(); - editor = TableUtils.getPropertyEditorClass(propType).newInstance(); - } - if (editor != null) { - final ExtendedPropertyEditor extendEditor = editor; - editors[row] = new PropertyCellEditor(editor); - extendEditor.addPropertyChangeListener(new PropertyChangeListener() { - - @Override - public void propertyChange(PropertyChangeEvent evt) { - if(ComparatorUtils.equals(extendEditor.getValue(),getValue(row,1))) { - return; - } - if (extendEditor.refreshInTime()) { - editors[row].stopCellEditing(); - } else { - setValue(extendEditor.getValue(), row, 1); + + @Override + protected void initEditor(final int row) throws Exception { + ExtendedPropertyEditor editor = (ExtendedPropertyEditor) properties[row].createPropertyEditor(dealCreatorData()); + if (editor == null) { + Class propType = properties[row].getPropertyType(); + editor = TableUtils.getPropertyEditorClass(propType).newInstance(); + } + if (editor != null) { + final ExtendedPropertyEditor extendEditor = editor; + editors[row] = new PropertyCellEditor(editor); + extendEditor.addPropertyChangeListener(new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + if(ComparatorUtils.equals(extendEditor.getValue(),getValue(row,1))) { + return; + } + if (extendEditor.refreshInTime()) { + editors[row].stopCellEditing(); + } else { + setValue(extendEditor.getValue(), row, 1); if (designer == null) { return; } - if ("widgetName".equals(properties[row].getName())) { - designer.getEditListenerTable().fireCreatorModified(creator, DesignerEvent.CREATOR_RENAMED); - } else { - designer.fireTargetModified(); - } - designer.refreshDesignerUI(); - } - } - }); - } - } + if ("widgetName".equals(properties[row].getName())) { + designer.getEditListenerTable().fireCreatorModified(creator, DesignerEvent.CREATOR_RENAMED); + } else { + designer.fireTargetModified(); + } + designer.refreshDesignerUI(); + } + } + }); + } + } } \ No newline at end of file From b5588b54d37a1f82ab732c235ebf084e93319d12 Mon Sep 17 00:00:00 2001 From: neil Date: Fri, 27 May 2016 15:23:44 +0800 Subject: [PATCH 45/54] 1 --- .../src/com/fr/design/gui/xtable/PropertyGroupModel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_form/src/com/fr/design/gui/xtable/PropertyGroupModel.java b/designer_form/src/com/fr/design/gui/xtable/PropertyGroupModel.java index 8e8cadad14..8918d857d0 100644 --- a/designer_form/src/com/fr/design/gui/xtable/PropertyGroupModel.java +++ b/designer_form/src/com/fr/design/gui/xtable/PropertyGroupModel.java @@ -105,7 +105,7 @@ public class PropertyGroupModel extends AbstractPropertyGroupModel { } /** - * 控件属性赋值和取值时,针对scale和title做下处理 + * 控件属性赋值和取值时,针对scale和title做下处理 * @return */ private Object dealCreatorData() { From b1c040aff4e7f7f63c33a227ce20cb6b21b4f064 Mon Sep 17 00:00:00 2001 From: neil Date: Fri, 27 May 2016 15:23:53 +0800 Subject: [PATCH 46/54] 1 --- .../src/com/fr/design/gui/xtable/PropertyGroupModel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_form/src/com/fr/design/gui/xtable/PropertyGroupModel.java b/designer_form/src/com/fr/design/gui/xtable/PropertyGroupModel.java index 8918d857d0..8e8cadad14 100644 --- a/designer_form/src/com/fr/design/gui/xtable/PropertyGroupModel.java +++ b/designer_form/src/com/fr/design/gui/xtable/PropertyGroupModel.java @@ -105,7 +105,7 @@ public class PropertyGroupModel extends AbstractPropertyGroupModel { } /** - * 控件属性赋值和取值时,针对scale和title做下处理 + * 控件属性赋值和取值时,针对scale和title做下处理 * @return */ private Object dealCreatorData() { From 8ce32a4fffdb348e71f7a1d186a62245713b1d5c Mon Sep 17 00:00:00 2001 From: neil Date: Fri, 27 May 2016 15:51:20 +0800 Subject: [PATCH 47/54] 1 --- .../src/com/fr/design/condition/LiteConditionPane.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/designer_base/src/com/fr/design/condition/LiteConditionPane.java b/designer_base/src/com/fr/design/condition/LiteConditionPane.java index 5c5eea0fff..a32a112396 100644 --- a/designer_base/src/com/fr/design/condition/LiteConditionPane.java +++ b/designer_base/src/com/fr/design/condition/LiteConditionPane.java @@ -517,6 +517,8 @@ public abstract class LiteConditionPane extends BasicBeanPa // formulaPane JPanel formulaPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + // 95106 公式区域限定宽高, 显示两行即可, 在新窗口编辑. + formulaPane.setPreferredSize(new Dimension(450, 40)); formulaConditionPane.add(formulaPane, BorderLayout.CENTER); formulaPane.setBorder(BorderFactory.createEmptyBorder(2, 0, 2, 2)); formulaPane.add(GUICoreUtils.createBorderPane(new UILabel(Inter.getLocText("FR-Designer_LiteCondition_Formula") + "="), BorderLayout.NORTH), BorderLayout.WEST); From 63a5286f07b877a44a9064d1903a0ff53d248f2b Mon Sep 17 00:00:00 2001 From: neil Date: Fri, 27 May 2016 16:54:39 +0800 Subject: [PATCH 48/54] build failed --- .../fr/design/ExtraDesignClassManager.java | 96 ++++++++++++++----- 1 file changed, 70 insertions(+), 26 deletions(-) diff --git a/designer_base/src/com/fr/design/ExtraDesignClassManager.java b/designer_base/src/com/fr/design/ExtraDesignClassManager.java index 009cff1c6e..8bc70cf4dc 100644 --- a/designer_base/src/com/fr/design/ExtraDesignClassManager.java +++ b/designer_base/src/com/fr/design/ExtraDesignClassManager.java @@ -126,7 +126,7 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi private DesignerEnvProcessor envProcessor; - private TableDataTreePaneProcessor tableDataTreePaneProcessor; + private TableDataPaneProcessor tableDataPaneProcessor; private Set elementUIProviders; @@ -136,6 +136,10 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi private WidgetDesignHandler widgetDesignHandler; + private Set backgroundQuickUIProviders; + + private Set backgroundUIProviders; + public WidgetDesignHandler getWidgetDesignHandler() { return widgetDesignHandler; } @@ -144,13 +148,13 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi widgetDesignHandler = (WidgetDesignHandler) level; } - public TableDataTreePaneProcessor getTableDataTreePaneProcessor() { - return tableDataTreePaneProcessor; + public TableDataPaneProcessor getTableDataPaneProcessor() { + return tableDataPaneProcessor; } - public void setTableDataSourceOPProcessor(Level level, PluginSimplify simplify) { - validAPILevel(level, TableDataTreePaneProcessor.CURRENT_LEVEL, simplify.getPluginName()); - tableDataTreePaneProcessor = (TableDataTreePaneProcessor) level; + public void setTableDataPaneProcessor(Level level, PluginSimplify simplify) { + validAPILevel(level, TableDataPaneProcessor.CURRENT_LEVEL, simplify.getPluginName()); + tableDataPaneProcessor = (TableDataPaneProcessor) level; } public DesignerEnvProcessor getEnvProcessor() { @@ -765,6 +769,51 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi widgetAttrProviders.add((WidgetPropertyUIProvider) level); } + public ExportAttrTabProvider[] getExportAttrTabProviders() { + if (exportAttrTabProviders == null) { + return new ExportAttrTabProvider[0]; + } + return exportAttrTabProviders.toArray(new ExportAttrTabProvider[exportAttrTabProviders.size()]); + } + + public void addExportAttrTabProvider(Level level, PluginSimplify simplify) throws Exception { + if (exportAttrTabProviders == null) { + exportAttrTabProviders = new HashSet(); + } + validAPILevel(level, ExportAttrTabProvider.CURRENT_LEVEL, simplify.getPluginName()); + exportAttrTabProviders.add((ExportAttrTabProvider) level); + } + + public BackgroundQuickUIProvider[] getBackgroundQuickUIProviders() { + if (backgroundQuickUIProviders == null) { + return new BackgroundQuickUIProvider[0]; + } + return backgroundQuickUIProviders.toArray(new BackgroundQuickUIProvider[backgroundQuickUIProviders.size()]); + } + + public void addBackgroundQuickUIProvider(Level level, PluginSimplify simplify) throws Exception { + if (backgroundQuickUIProviders == null) { + backgroundQuickUIProviders = new HashSet<>(); + } + validAPILevel(level, BackgroundQuickUIProvider.CURRENT_LEVEL, simplify.getPluginName()); + backgroundQuickUIProviders.add((BackgroundQuickUIProvider) level); + } + + public BackgroundUIProvider[] getBackgroundUIProviders() { + if (backgroundUIProviders == null) { + return new BackgroundUIProvider[0]; + } + return backgroundUIProviders.toArray(new BackgroundUIProvider[backgroundUIProviders.size()]); + } + + public void addBackgroundUIProvider(Level level, PluginSimplify simplify) throws Exception { + if (backgroundUIProviders == null) { + backgroundUIProviders = new HashSet<>(); + } + validAPILevel(level, BackgroundUIProvider.CURRENT_LEVEL, simplify.getPluginName()); + backgroundUIProviders.add((BackgroundUIProvider) level); + } + /** * 文件名 * @@ -819,6 +868,8 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi readWidgetRelated(tagName, impl, simplify); //数据集, 数据连接 readTableDataRelated(tagName, className, simplify); + // 样式相关的 + readStyleRelated(tagName, impl, simplify); if (tagName.equals(ParameterWidgetOptionProvider.XML_TAG)) { addParameterWidgetOption(impl, simplify); } else if (tagName.equals(PreviewProvider.MARK_STRING)) { @@ -853,13 +904,13 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi addSupportDesignApps(impl, simplify); } else if (tagName.equals(DesignerEnvProcessor.XML_TAG)) { setEnvProcessor(impl, simplify); - } else if (tagName.equals(TableDataTreePaneProcessor.XML_TAG)) { - setTableDataSourceOPProcessor(impl, simplify); - } else if (tagName.equals(ElementUIProvider.MARK_STRING)) { - addElementUIProvider(impl, simplify); } else if (tagName.equals(WidgetDesignHandler.XML_TAG)) { setWidgetDesignHandler(impl, simplify); - }else if (tagName.equals(WidgetPropertyUIProvider.XML_TAG)) { + } else if (tagName.equals(TableDataPaneProcessor.XML_TAG)) { + setTableDataPaneProcessor(impl, simplify); + } else if (tagName.equals(ElementUIProvider.MARK_STRING)) { + addElementUIProvider(impl, simplify); + } else if (tagName.equals(WidgetPropertyUIProvider.XML_TAG)) { addWidgetAttrProvider(impl, simplify); } else if (tagName.equals(ExportAttrTabProvider.XML_TAG)) { addExportAttrTabProvider(impl, simplify); @@ -871,21 +922,6 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi } } - public ExportAttrTabProvider[] getExportAttrTabProviders() { - if (exportAttrTabProviders == null) { - return new ExportAttrTabProvider[0]; - } - return exportAttrTabProviders.toArray(new ExportAttrTabProvider[exportAttrTabProviders.size()]); - } - - public void addExportAttrTabProvider(Level level, PluginSimplify simplify) throws Exception { - if (exportAttrTabProviders == null) { - exportAttrTabProviders = new HashSet(); - } - validAPILevel(level, ExportAttrTabProvider.CURRENT_LEVEL, simplify.getPluginName()); - exportAttrTabProviders.add((ExportAttrTabProvider) level); - } - private void readTableDataRelated(String tagName, String className, PluginSimplify simplify) { if (tagName.equals(TableDataCreatorProvider.XML_TAG)) { setTableDataCreatorProvider(className); @@ -910,6 +946,14 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi } } + private void readStyleRelated(String tagName, Level impl, PluginSimplify simplify) throws Exception { + if (tagName.equals(BackgroundQuickUIProvider.MARK_STRING)) { + addBackgroundQuickUIProvider(impl, simplify); + } else if (tagName.equals(BackgroundUIProvider.MARK_STRING)) { + addBackgroundUIProvider(impl, simplify); + } + } + /** * 写xml * From 309943f3ab2c7990b05f3c9468bf0a1c4890434f Mon Sep 17 00:00:00 2001 From: eason-skx Date: Mon, 30 May 2016 11:24:42 +0800 Subject: [PATCH 49/54] =?UTF-8?q?=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/chart/gui/style/ChartFillStylePane.java | 1 + 1 file changed, 1 insertion(+) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartFillStylePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartFillStylePane.java index fbe51e7948..5de599d9a5 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartFillStylePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartFillStylePane.java @@ -199,6 +199,7 @@ public class ChartFillStylePane extends BasicBeanPane{ condition.setColorStyle(ChartConstants.COLOR_DEFAULT); } } else { + condition.setCustomFillStyle(true); if(gradientButton.isSelected()) { condition.setColorStyle(ChartConstants.COLOR_GRADIENT); Color start = colorGradient.getSelectColorPointBtnP1().getColorInner(); From 2cb6db5d2926149fc317f84115e7fefbff05fd80 Mon Sep 17 00:00:00 2001 From: neil Date: Mon, 30 May 2016 11:42:11 +0800 Subject: [PATCH 50/54] del --- .../com/fr/general/locale/fr_zh_CN.properties | 4084 ----------------- 1 file changed, 4084 deletions(-) delete mode 100644 designer_base/src/com/fr/general/locale/fr_zh_CN.properties diff --git a/designer_base/src/com/fr/general/locale/fr_zh_CN.properties b/designer_base/src/com/fr/general/locale/fr_zh_CN.properties deleted file mode 100644 index 7a61b14372..0000000000 --- a/designer_base/src/com/fr/general/locale/fr_zh_CN.properties +++ /dev/null @@ -1,4084 +0,0 @@ -#Created by JInto - www.guh-software.de -#Thu Apr 16 18:27:18 CST 2015 -3D-Style=\u4E09\u7EF4\u683C\u5F0F -3DSimulation=\u7ACB\u4F53\u611F -3DSpace=\u7A7A\u95F4 -ADD_Department_Failure=\u90E8\u95E8\u6DFB\u52A0\u5931\u8D25\uFF0C\u8BE5\u90E8\u95E8\u540D\u5DF2\u88AB\u5360\u7528\uFF01 -ALL_WORK=\u6240\u6709\u4E8B\u52A1 -APP_LAUNCHING=APP\u542F\u52A8\u753B\u9762 -Abnormal_Communication=\u901A\u4FE1\u5F02\u5E38 -About=\u5173\u4E8E -About-All_Rights_Reserved=\u4FDD\u7559\u6240\u6709\u7684\u6743\u5229 -About-CopyRight=\u7248\u6743\u6240\u6709 -About-Version=\u7248\u672C -About_The_Column=\u5173\u4E8E\u6B64\u5217 -Above=\u4EE5\u4E0A\u7248\u672C -AbsoluteLayout=\u7EDD\u5BF9\u5B9A\u4F4D -According_Cell_Set_Size=\u6839\u636E\u9009\u4E2D\u7684\u5355\u5143\u683C\u7684\u5927\u5C0F\u52A8\u6001\u8BBE\u7F6E\u6E10\u53D8\u8272\u7684\u533A\u57DF -Action-Type=\u64CD\u4F5C\u7C7B\u578B -Actions=\u4EFB\u52A1 -Active_Connection_Size=\u6D3B\u52A8\u8FDE\u63A5\u6570 -Actived=\u6D3B\u52A8\u7684 -Activity=\u6D3B\u52A8 -Actual_Value=\u5B9E\u9645\u503C -Adaptive=\u81EA\u9002\u5E94 -Adaptive_Full_Area=\u5145\u6EE1\u5C55\u73B0\u533A\u57DF -Adaptive_Layout=\u81EA\u9002\u5E94\u5E03\u5C40 -Adaptive_Original_Scale=\u81EA\u9002\u5E94\u539F\u6837\u7F29\u653E -Add=\u589E\u52A0 -Add-all=\u5168\u90E8\u6DFB\u52A0 -AddFailed=\u6DFB\u52A0\u5931\u8D25 -Add_Analysis=\u6DFB\u52A0\u6570\u636E\u5206\u6790 -Add_Browser=\u6DFB\u52A0\u6D4F\u89C8\u5668 -Add_Chart_Map=\u6DFB\u52A0\u5730\u56FE -Add_Column=\u6DFB\u52A0\u5217 -Add_Department_Failure=\u90E8\u95E8\u6DFB\u52A0\u5931\u8D25\uFF0C\u8BE5\u90E8\u95E8\u540D\u5DF2\u88AB\u5360\u7528 -Add_Department_Member=\u6DFB\u52A0\u90E8\u95E8\u4EBA\u5458 -Add_From_Report=\u4ECE\u62A5\u8868\u6DFB\u52A0 -Add_From_Server=\u4ECE\u670D\u52A1\u5668\u6DFB\u52A0 -Add_JS_warning=\u8BF7\u8F93\u5165\u5982\u5B9E\u4F8B\u6240\u793A\u7684\u6B63\u786E\u7684url\u5730\u5740\! -Add_Member=\u6DFB\u52A0\u4EBA\u5458 -Add_NewUser=\u6DFB\u52A0\u65B0\u7528\u6237 -Add_Position=\u6DFB\u52A0\u804C\u4F4D -Add_Role=\u6DFB\u52A0\u89D2\u8272 -Add_TableData=\u589E\u52A0\u6570\u636E\u96C6 -Add_Task=\u6DFB\u52A0\u4EFB\u52A1 -Add_summary_fields=\u6DFB\u52A0\u6C47\u603B\u5B57\u6BB5 -Add_summary_info=\u5C06\u6C47\u603B\u4FE1\u606F\u52A0\u5165\u62A5\u8868\u4E2D -Address=\u5730\u5740 -Admin=\u7BA1\u7406\u5458 -Advanced=\u9AD8\u7EA7 -AffairToHandle=\u5F85\u5904\u7406\u4E8B\u52A1 -After=\u7ED3\u675F -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 -After_Click_Widget_Show=\u70B9\u51FB\u5355\u5143\u683C\u540E\u663E\u793A\u63A7\u4EF6 -Agency=\u673A\u6784 -Alert=\u8B66\u544A -Alignment=\u5BF9\u9F50 -Alignment-Style=\u5BF9\u9F50\u65B9\u5F0F -All=\u6240\u6709 -AllRotationType=\u65CB\u8F6C\u578B -All_Border_Line=\u6240\u6709\u6846\u7EBF -All_File_Uploaded=\u6240\u6709\u6587\u4EF6\u5DF2\u4E0A\u4F20 -Allow=\u8FDB\u5165 -Allow_Blank=\u5141\u8BB8\u4E3A\u7A7A -Allow_Decimals=\u5141\u8BB8\u5C0F\u6570 -Allow_Negative=\u5141\u8BB8\u8D1F\u6570 -Allow_To_Upload_Contains=\u5141\u8BB8\u4E0A\u4F20\u7684\u6587\u4EF6\u5305\u62EC -Already_End=\u5DF2\u7ED3\u675F -Already_Pause=\u5DF2\u6682\u505C -Already_exist=\u5F53\u524D\u73AF\u5883\u5DF2\u5B58\u5728\: -Already_exists=\u5DF2\u5B58\u5728\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165\uFF01 -Already_exists_not_add_repeat=\u5DF2\u7ECF\u5B58\u5728\uFF0C\u8BF7\u4E0D\u8981\u91CD\u590D\u6DFB\u52A0 -Always=\u9ED8\u8BA4\u6267\u884C\u8BE5\u64CD\u4F5C -Always_Execute=\u59CB\u7EC8\u6267\u884C -AnalysisLine=\u5206\u6790\u7EBF -And=\u4E14 -And_A=\u53CA\u5176 -Anhui=\u5B89\u5FBD\u7701 -Animation_Special=\u7279\u6548 -Any_Result=\u7684\u4EFB\u4F55\u7ED3\u679C -Aomen=\u6FB3\u95E8\u7279\u522B\u884C\u653F\u533A -AomenBandao=\u6FB3\u95E8\u534A\u5C9B -Append_Delete_Row_Message=\u6CE8\u610F\uFF01\u6307\u5B9A\u7684\u5355\u5143\u683C\u9700\u8981\u8BBE\u7F6E\u6269\u5C55\u5C5E\u6027 -Applet_Print=Applet\u6253\u5370 -Application=\u5E94\u7528\u7A0B\u5E8F -Application_name=\u5E94\u7528 -Apply=\u5E94\u7528 -April=\u56DB\u6708 -Are_You_Sure_To_Delete_The_Data=\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u6570\u636E\u5417 -Area_Name=\u533A\u57DF\u540D -Area_Value=\u533A\u57DF\u503C -At=\u5728 -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 -Attach_File=\u9644\u4EF6 -AttenchmentsByReceiver=\u6839\u636E\u6536\u4EF6\u4EBA\u4E0D\u540C\u751F\u6210\u4E0D\u540C\u9644\u4EF6 -Attention=\u6CE8\u610F -Attribute=\u5C5E\u6027 -Attributes=\u5C5E\u6027 -August=\u516B\u6708 -Authrized=\u6388\u6743 -Auto=\u81EA\u52A8 -Auto-Build=\u81EA\u52A8\u6784\u5EFA -Auto_Adjust_Size=\u81EA\u52A8\u8C03\u6574 -Axis=\u8F74 -Axis-Style-Option=\u5750\u6807\u8F74\u9009\u9879 -AxisInside=\u8F74\u5185\u4FA7 -AxisReversed=\u8F74\u9006\u5E8F -AxisValue=\u5750\u6807\u8F74\u503C -Axis_Title=\u8F74\u6807\u9898 -B-PrintSetup=\u6253\u5370\u8BBE\u7F6E(P) -BI_Global_Config=BI\u5168\u5C40\u914D\u7F6E -BS-Design=B/S\u5168\u5C40\u914D\u7F6E -Back=\u8FD4\u56DE -Background=\u80CC\u666F -Background-Background_is_NULL=\u6CA1\u6709\u80CC\u666F -Background-Click=\u9F20\u6807\u70B9\u51FB\u80CC\u666F -Background-Initial=\u521D\u59CB\u80CC\u666F -Background-Null=\u6CA1\u6709\u80CC\u666F -Background-Over=\u9F20\u6807\u60AC\u6D6E\u80CC\u666F -Background-Pattern=\u56FE\u6848 -Background-Texture=\u7EB9\u7406 -BackgroundTexture-BlueTissuePaper=\u84DD\u8272\u7802\u7EB8 -BackgroundTexture-Bouquet=\u82B1\u675F -BackgroundTexture-BrownMarble=\u68D5\u8272\u5927\u7406\u77F3 -BackgroundTexture-Canvas=\u753B\u5E03 -BackgroundTexture-Cork=\u8F6F\u6728\u585E -BackgroundTexture-Denim=\u659C\u7EB9\u5E03 -BackgroundTexture-FishFossil=\u9C7C\u7C7B\u5316\u77F3 -BackgroundTexture-Granite=\u82B1\u5C97\u5CA9 -BackgroundTexture-GreenMarble=\u7EFF\u8272\u5927\u7406\u77F3 -BackgroundTexture-MediumWood=\u6DF1\u8272\u6728\u8D28 -BackgroundTexture-Newsprint=\u65B0\u95FB\u7EB8 -BackgroundTexture-Oak=\u6A61\u6728 -BackgroundTexture-PaperBag=\u7EB8\u888B -BackgroundTexture-Papyrus=\u7EB8\u838E\u8349\u7EB8 -BackgroundTexture-Parchment=\u7F8A\u76AE\u7EB8 -BackgroundTexture-PinkTissuePaper=\u7C89\u8272\u7802\u7EB8 -BackgroundTexture-PurpleMesh=\u7D2B\u8272\u7F51\u683C -BackgroundTexture-RecycledPaper=\u518D\u751F\u7EB8 -BackgroundTexture-Sand=\u6C99\u6EE9 -BackgroundTexture-Stationery=\u4FE1\u7EB8 -BackgroundTexture-Walnut=\u80E1\u6843 -BackgroundTexture-WaterDroplets=\u6C34\u6EF4 -BackgroundTexture-WhiteMarble=\u767D\u8272\u5927\u7406\u77F3 -BackgroundTexture-WovenMat=\u7F16\u7EC7\u7269 -Background_Settings=\u80CC\u666F\u8BBE\u7F6E -Backup=\u5907\u4EFD -Backup_Cpt=\u5907\u4EFD\u6A21\u677F -Backup_To=\u5907\u4EFD\u5230 -BaiduMap=\u767E\u5EA6\u5730\u56FE -Banner-And-Title=\u4E3B\u9875\u548C\u6A2A\u5E45 -BarCodeD-Define_BarCode=\u5B9A\u4E49\u6761\u5F62\u7801 -BarCodeD-Drawing_Text=\u663E\u793A\u6761\u5F62\u7801\u7684\u6587\u672C -BarInside=\u67F1\u5B50\u5185\u4FA7 -BarOutSide=\u67F1\u5B50\u5916\u4FA7 -BarStyle=\u6761\u5F62 -Basic=\u57FA\u672C -Basic_Config=\u57FA\u672C\u914D\u7F6E -Basic_Information=\u57FA\u672C\u4FE1\u606F -Basic_Setting=\u57FA\u672C\u8BBE\u7F6E -Beijing=\u5317\u4EAC -BeijingInCity=\u5317\u4EAC\u5E02\u533A -BiasD-From-lower_left_to_upper_right=\u4ECE\u5DE6\u4E0B\u5230\u53F3\u4E0A\u53D1\u6563 -BiasD-From-upper_left_to_lower_right=\u4ECE\u5DE6\u4E0A\u5230\u53F3\u4E0B\u53D1\u6563 -BiasD-Input_Slope_Line_text_separated_by_'|'=\u8F93\u5165\u659C\u7EBF\u6587\u5B57,\u4EE5'|'\u5206\u9694 -BiasD-Slope_Line=\u659C\u7EBF -BindCellD-Define_Value=\u9ED8\u8BA4\u503C -BindColumn-Advanced_Summary=\u9AD8\u7EA7\u6458\u8981 -BindColumn-Bottom_N=\u540EN\u4E2A -BindColumn-Choose_The_Display_Type_of_Column=\u9009\u62E9\u5217\u663E\u793A\u7C7B\u578B -BindColumn-Control=\u63A7\u5236 -BindColumn-Custom_Data_Appearance=\u81EA\u5B9A\u4E49\u663E\u793A -BindColumn-Custom_Left_Father=\u81EA\u5B9A\u4E49\u5DE6\u7236\u683C -BindColumn-Custom_Up_Father=\u81EA\u5B9A\u4E49\u4E0A\u7236\u683C -BindColumn-Decrease=\u51CF\u5C11 -BindColumn-Default_Father_Cell=\u9ED8\u8BA4\u7236\u683C -BindColumn-Even_Selected_(2,4,6...)=\u9009\u62E9\u4E86\u5076\u6570\u96C6(2,4,6...) -BindColumn-Expansion_Direction=\u6269\u5C55\u65B9\u5411 -BindColumn-Extend_the_conditions_of_fatherCell(Applied_to_the_data_contains_other_data)=\u5C06\u7236\u683C\u5B50\u4F5C\u4E3A\u8FC7\u6EE4\u6761\u4EF6(\u9002\u7528\u4E8E\u7236\u5B50\u683C\u6765\u81EA\u4E8E\u540C\u4E00\u4E2A\u6570\u636E\u96C6) -BindColumn-Group=\u5206\u7EC4 -BindColumn-Group(Merger_the_Items_Which_Have_The_Same_Value_in_Column)=\u5206\u7EC4(\u5C06\u6570\u636E\u5217\u4E2D\u76F8\u540C\u5185\u5BB9\u7684\u503C\u8FDB\u884C\u5408\u5E76) -BindColumn-Have_Father_Cell=\u6709\u7236\u683C -BindColumn-Have_Left_Parent_Cell=\u6709\u5DE6\u7236\u683C -BindColumn-Have_Up_Parent_Cell=\u6709\u4E0A\u7236\u683C -BindColumn-Increase=\u589E\u52A0 -BindColumn-NoSort=\u65E0\u6392\u5E8F -BindColumn-Odd_Selected_(1,3,5...)=\u9009\u62E9\u4E86\u5947\u6570\u96C6(1,3,5...) -BindColumn-Result_Serial_Number_Start_From_1=\u5E8F\u53F7\u4ECE1\u5F00\u59CB -BindColumn-Results_Filter=\u7ED3\u679C\u96C6\u7B5B\u9009 -BindColumn-Select=\u5217\u8868 -BindColumn-Select(Regardless_of_Having_the_Same_Value,Display_all_Item_in_Column)=\u5217\u8868(\u6570\u636E\u5217\u4E2D\u7684\u6240\u6709\u6570\u636E\u8BB0\u5F55\u5C55\u793A\u51FA\u6765\uFF0C\u65E0\u8BBA\u6570\u636E\u662F\u5426\u91CD\u590D) -BindColumn-Setting_Data=\u8BBE\u7F6E\u6570\u636E -BindColumn-Specify_Rows=\u6307\u5B9A\u884C -BindColumn-Summary=\u6C47\u603B -BindColumn-Summary(Including_SUM_,_AVERAGE_,_MAX_,_MIN_And_So_On)=\u6C47\u603B(\u5305\u62EC\u6C42\u548C\uFF0C\u53D6\u5E73\u5747\u6570\uFF0C\u6700\u5927\u503C\u548C\u6700\u5C0F\u503C\u7B49) -BindColumn-Summary_Parameters=\u6C47\u603B\u53C2\u6570 -BindColumn-The_Conditions_of_FatherCell=\u7236\u683C\u6761\u4EF6 -BindColumn-This_Condition_has_been_existed=\u6B64\u6761\u4EF6\u5DF2\u7ECF\u5B58\u5728 -BindColumn-Top_N=\u524DN\u4E2A -BindD-Bind_Data=\u7ED1\u5B9A\u6570\u636E -BindD-Define_Datasource=\u5B9A\u4E49\u6570\u636E\u6E90 -BindD-Need_to_select_columns_to_display=\u9700\u8981\u9009\u62E9\u5217 -BindD-Should_select_a_datasource=\u9700\u8981\u9009\u62E9\u4E00\u4E2A\u6570\u636E\u6E90 -Black=\u9ED1\u8272 -Black_Font=\u9ED1\u4F53 -FR-Engine_Block_extended=\u53EF\u6269\u5C55\u5757\uFF1A -FR-Engine_Block_unextended=\u4E0D\u53EF\u6269\u5C55\u5757\uFF1A -Blow_set=\u4EE5\u4E0B\u8BBE\u7F6E -Body-Background=\u4E3B\u4F53\u80CC\u666F -Border=\u8FB9\u6846 -Border-Color=\u8FB9\u6846\u989C\u8272 -Border-Line=\u8FB9\u6846\u7C97\u7EC6 -Border-Style=\u8FB9\u6846\u6837\u5F0F -Border-Style-Normal=\u76F4\u89D2\u8FB9\u6846 -Border-Style-Radius=\u5706\u89D2\u8FB9\u6846 -BorderLayout=\u8FB9\u754C\u5E03\u5C40 -BorderLayout-Center=\u4E2D -BorderLayout-Constraints=\u4F4D\u7F6E -BorderLayout-East=\u4E1C -BorderLayout-North=\u5317 -BorderLayout-South=\u5357 -BorderLayout-West=\u897F -Bottom=\u4E0B -Bottom_Border_Line=\u4E0B\u6846\u7EBF -Bottom_Margin=\u4E0B\u8FB9\u8DDD -Bounds=\u8FB9\u754C -Break=\u65AD\u5F00 -Bright-Style=\u660E\u4EAE -Brown=\u8910\u8272 -Brown_Orange=\u68D5\u9EC4 -Browser=\u6D4F\u89C8\u5668 -Browser-Are_you_sure_to_delete_the_selected_browser=\u4F60\u786E\u5B9E\u60F3\u5220\u9664\u9009\u4E2D\u7684\u6D4F\u89C8\u5668\u5417 -Browser_Address=\u6D4F\u89C8\u5730\u5740 -Bubble-Series_Name=\u7CFB\u5217\u540D -Bubble-Width=\u6C14\u6CE1\u5BBD\u5EA6 -Build=\u751F\u6210 -Build-Way=\u6784\u5EFA\u65B9\u5F0F -BuildIn=\u5185\u7F6E -Build_Tree_Accord_Marked_Filed_Length=\u4F9D\u8D56\u6240\u9009\u6570\u636E\u96C6\u7684\u6807\u8BB0\u5B57\u6BB5\u7684\u957F\u5EA6\u6784\u5EFA\u6811 -Build_Tree_Accord_Parent_Marked_Filed=\u4F9D\u8D56\u6240\u9009\u6570\u636E\u96C6\u7684\u7236\u6807\u8BB0\u5B57\u6BB5\u6784\u5EFA\u6811 -Bulletin=\u516C\u544A -Button-Group-Display-Columns=\u5C55\u793A\u5217\u6570 -Button-Hotkeys=\u5FEB\u6377\u952E -CLUSTER_REDIRECT=\u96C6\u7FA4\u91CD\u5B9A\u5411\u53C2\u6570 -CLUSTER_REDIRECT_SHEAR=\u96C6\u7FA4\u91CD\u5B9A\u5411\u53C2\u6570 -CONTINUUM_MODE=\u76F8\u90BB\u8FDE\u7EED\u5206\u7EC4 -CSS_Import_Description=\u53EA\u80FD\u901A\u8FC7\u76F8\u5BF9\u8DEF\u5F84\u5F15\u7528CSS\: \n\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 -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 -CUSTOM_MODE=\u81EA\u5B9A\u4E49\u5206\u7EC4 -Cache-Book-Parameters-Setting=\u5185\u5B58\u7F13\u5B58\u5C5E\u6027\u8BBE\u7F6E -Cache-Cpt-Parameters-Setting=\u6A21\u677F\u7F13\u5B58\u5C5E\u6027\u8BBE\u7F6E -Cache-DataBase-Parameters-Setting=\u6570\u636E\u96C6\u5171\u4EAB\u5C5E\u6027\u8BBE\u7F6E -Cache-Disk_Memory_Page_Size=\u78C1\u76D8\u7F13\u5B58\u5206\u9875\u5927\u5C0F -Cache-Local_Disk_Cache-Setting=\u672C\u5730\u78C1\u76D8\u7F13\u5B58\u8BBE\u7F6E -Cache-Max-Elements-In-Memory=\u6700\u5927\u6D3B\u52A8\u5BF9\u8C61\u6570 -Cache-Message1=0\u8868\u793A\u65E0\u9650 -Cache-Path-Setting=\u7F13\u5B58\u8DEF\u5F84\u8BBE\u7F6E -Cache-Policy=\u7F13\u5B58\u7B56\u7565 -CacheValidateTime=\u62A5\u8868\u7F13\u5B58\u6709\u6548\u65F6\u95F4 -Cache_Dir_File_Permission_Error=\u6587\u4EF6\u65E0\u6CD5\u8BFB\u53D6\u6216\u521B\u5EFA\uFF0C\u8BF7\u68C0\u67E5cache.xml\u4E0B\u9762\u7684\u7F13\u5B58\u76EE\u5F55\u8BBF\u95EE\u6743\u9650 -Calculating=\u5904\u7406\u4E2D -Calendar=\u65E5\u5386 -Call_Back_Function=\u56DE\u8C03\u51FD\u6570 -CanNotBigger=\u4E0D\u80FD\u5927\u4E8E -Can_Be_Unselected=\u53EF\u4E0D\u9009 -Can_not_find_Data_Connection=\u627E\u4E0D\u5230\u6570\u636E\u8FDE\u63A5 -Can_not_use_FormatBursh=\u4E0D\u80FD\u5BF9\u591A\u91CD\u9009\u5B9A\u533A\u57DF\u4F7F\u7528\u683C\u5F0F\u5237\! -Cancel=\u53D6\u6D88 -CancelJSShow=\u53D6\u6D88\u52A8\u6001\u5C55\u793A -Cancel_Repeat_Attributes=\u53D6\u6D88\u91CD\u590D\u884C\u5217 -Cannot\ find=\u6CA1\u6709\u627E\u5230 -Cannot-Add_To_This_Area=\u65E0\u6CD5\u6DFB\u52A0\u5230\u8BE5\u533A\u57DF -Cannot-Find=\u6CA1\u6709\u627E\u6253 -Cannot_Do_This_Command_When_You_Choose_One_More_Areas=\u4E0D\u80FD\u5BF9\u591A\u91CD\u9009\u5B9A\u533A\u57DF\u4F7F\u7528\u6B64\u547D\u4EE4 -Cannot_Found_Result_File=\u6CA1\u6709\u627E\u5230\u7ED3\u679C\u6587\u4EF6 -Cannot_Found_Template_File=\u6CA1\u6709\u627E\u5230\u6A21\u677F\u6587\u4EF6 -Cannot_Get_Date=\u4E0D\u80FD\u83B7\u53D6\u65E5\u671F -Cannot_Get_Date_Format=\u4E0D\u80FD\u83B7\u53D6\u65E5\u671F\u683C\u5F0F -Cannot_Parse_Template_File=\u65E0\u6CD5\u89E3\u6790\u6A21\u677F\u6587\u4EF6 -Cannot_Set_Date=\u4E0D\u80FD\u8BBE\u7F6E\u65E5\u671F -Cannot_Set_Duplicate_Role_Name=\u4E0D\u80FD\u8BBE\u7F6E\u91CD\u590D\u7684\u89D2\u8272\u540D -Capacity=\u5BB9\u91CF -CapsLock=\u5927\u5199\u9501\u5B9A\u5DF2\u6253\u5F00 -Card=\u5361\u7247 -CardLayout=\u5361\u7247\u5E03\u5C40 -CardinalNumber=\u57FA\u6570 -CategoryName=\u5206\u7C7B\u540D -Cell=\u5355\u5143\u683C -Cell-Cell_Attributes=\u5355\u5143\u683C\u5C5E\u6027 -Cell-Location_And_Span=\u4F4D\u7F6E\u548C\u8DE8\u5EA6 -CellElement-Property_Table=\u5355\u5143\u683C\u5C5E\u6027\u8868 -CellPage-Can_Break_On_Paginate=\u5206\u9875\u65F6\u53EF\u4EE5\u65AD\u5F00 -CellWrite-Append_Row(Used_in_Web_Write_Report)=\u6DFB\u52A0\u884C(Web\u586B\u62A5\u4F7F\u7528) -CellWrite-Default_Value_To_Insert=\u9ED8\u8BA4\u7684\u63D2\u5165\u503C -CellWrite-Editable=\u53EF\u4EE5\u7F16\u8F91\u5355\u5143\u683C\u5185\u5BB9 -CellWrite-Flag=\u6807\u5FD7 -CellWrite-Hide_Cell=\u9690\u85CF\u5355\u5143\u683C -CellWrite-Hide_Column_If_Null=\u5F53\u7A7A\u503C\u65F6\u9690\u85CF\u5F53\u524D\u5217 -CellWrite-Hide_Column_Row=\u9690\u85CF\u884C\u5217 -CellWrite-Hide_Row_If_Null=\u5F53\u7A7A\u503C\u65F6\u9690\u85CF\u5F53\u524D\u884C -CellWrite-Hide_Same_Cell_Vertically(Used_in_Group_Report)=\u7EB5\u5411\u9690\u85CF\u76F8\u540C\u7684\u5355\u5143\u683C(\u5206\u7EC4\u62A5\u8868\u4F7F\u7528) -CellWrite-Hide_on_Print=\u5728\u6253\u5370\u65F6\u5019\u9690\u85CF\u5355\u5143\u683C -CellWrite-Including_Current_Cell=\u5305\u62EC\u5F53\u524D\u683C\u5B50 -CellWrite-InsertRow_COPY=\u539F\u503C -CellWrite-InsertRow_DEFAULT=\u9ED8\u8BA4\u503C -CellWrite-InsertRow_Label=\u63D2\u5165\u884C\u65F6\u63D2\u5165 -CellWrite-InsertRow_NULL=\u7A7A\u503C -CellWrite-InsertRow_Policy=\u63D2\u5165\u884C\u7B56\u7565 -CellWrite-Merge_Extra_Blank_Cell(Used_in_Group_Report)=\u5408\u5E76\u8865\u7A7A\u884C\u7684\u7A7A\u767D\u683C\u5B50(\u5206\u7EC4\u62A5\u8868\u4F7F\u7528) -CellWrite-Page_After_Column=\u5217\u540E\u5206\u9875 -CellWrite-Page_After_Row=\u884C\u540E\u5206\u9875 -CellWrite-Page_Before_Column=\u5217\u524D\u5206\u9875 -CellWrite-Page_Before_Row=\u884C\u524D\u5206\u9875 -CellWrite-Preview_Border=\u9884\u89C8\u8FB9\u6846 -CellWrite-Preview_Cell_Content=\u9884\u89C8\u5355\u5143\u683C\u5185\u5BB9 -CellWrite-Print_Background=\u6253\u5370/\u5BFC\u51FA\u5355\u5143\u683C\u80CC\u666F -CellWrite-Print_Border=\u6253\u5370\u8FB9\u6846 -CellWrite-Print_Content=\u6253\u5370/\u5BFC\u51FA\u5355\u5143\u683C\u5185\u5BB9 -CellWrite-Print_Export=\u6253\u5370\u5BFC\u51FA -CellWrite-Print_Zero_Value=\u6253\u5370\u96F6\u503C -CellWrite-Repeat_Content_When_Paging=\u5206\u9875\u65AD\u5F00\u65F6\u503C\u91CD\u590D\u663E\u793A -CellWrite-Show_As_HTML=\u7528HTML\u663E\u793A\u5185\u5BB9 -CellWrite-Show_As_Image=\u7528\u56FE\u7247\u663E\u793A\u5185\u5BB9 -CellWrite-Show_Content=\u663E\u793A\u5185\u5BB9 -CellWrite-Support_Smart_Delete=\u652F\u6301\u667A\u80FD\u5220\u9664\u884C -CellWrite-Support_Smart_Insert=\u652F\u6301\u667A\u80FD\u63D2\u5165\u884C -CellWrite-Suppress_If_Duplicated(Used_in_Group_Report)=\u7EB5\u5411\u5408\u5E76\u5185\u5BB9\u76F8\u540C\u7684\u5355\u5143\u683C(\u5206\u7EC4\u62A5\u8868\u4F7F\u7528) -CellWrite-ToolTip=\u5185\u5BB9\u63D0\u793A -Cell_Data=\u5355\u5143\u683C\u6570\u636E -Cell_Group=\u5355\u5143\u683C\u7EC4 -Cell_Point=\u5355\u5143\u683C\u5B9A\u4F4D -Center=\u5C45\u4E2D -Center-Cannnot_Be_Null=\u8FB9\u754C\u5E03\u5C40\u7684\u4E2D\u95F4\u7EC4\u4EF6\u4E0D\u80FD\u4E3A\u7A7A -Certification_Type=\u8BA4\u8BC1\u7C7B\u578B -ChangChunCity=\u957F\u6625\u5E02 -Change=\u6539\u53D8 -Change_To_LayerReport=\u8F6C\u6362\u6210\u5C42\u5F0F\u62A5\u8868 -ChangshaCity=\u957F\u6C99\u5E02 -Character=\u6587\u5B57 -CheckBox=\u590D\u9009\u6846 -CheckBoxField=\u590D\u9009\u6846 -ChengduCity=\u6210\u90FD\u5E02 -China=\u4E2D\u56FD -Choice_Type=\u5907\u9009\u9879\u7C7B\u578B -Chongqing=\u91CD\u5E86\u5E02 -ChongqingInCity=\u91CD\u5E86\u5E02\u533A -Choose=\u9009\u62E9 -Choose-Key-point=\u9009\u62E9\u5173\u952E\u8282\u70B9 -ChooseContentByUser=\u6839\u636E\u7528\u6237\u9009\u62E9\u4E0D\u540C\u7684\u5185\u5BB9 -ChooseOneButton=\u8BF7\u9009\u62E9\u4E00\u4E2A\u63A7\u4EF6\u540E\u518D\u6DFB\u52A0 -Choose_All=\u5168\u9009 -Choose_AnalysisData=\u8BF7\u9009\u62E9\u5206\u6790\u6570\u636E\uFF01 -Choose_DS-Server_TableData=\u9009\u62E9\u670D\u52A1\u5668\u6570\u636E\u96C6 -Choose_Date_Time=\u9009\u62E9\u65E5\u671F\u65F6\u95F4 -Choose_Different_Server_Data=\u8BF7\u9009\u62E9\u4E0D\u540C\u670D\u52A1\u5668\u6570\u636E\u96C6\u8FDB\u884C\u5173\u8054 -Choose_Language=\u8BED\u8A00\u9009\u62E9 -Choose_None=\u4E0D\u9009 -Choose_Role=\u6743\u9650\u63A7\u5236 -Choose_Role_Create=\u9009\u62E9\u89D2\u8272(\u8BF7\u5148\u8BBE\u7F6E\u89D2\u8272) -Choose_Use_Authority=\u60A8\u53EF\u4EE5\u9009\u62E9\u4F7F\u7528\u6743\u9650\u6765\u8FDB\u884C\u6743\u9650\u7684\u8BBE\u7F6E -Choose_columns=\u9009\u62E9\u5217 -Choose_to_generate_file_displayed_in_the_virtual_directory=\u9009\u62E9\u751F\u6210\u6587\u4EF6\u663E\u793A\u5728\u7684\u865A\u62DF\u76EE\u5F55 -Class=\u7C7B -ClassName=\u7C7B\u540D -Class_Processor=\u7C7B\u5904\u7406\u5668 -Classifier-Ge=\u4E2A -Classpath=\u7C7B\u8DEF\u5F84 -Classpath-Add_Folder=\u6DFB\u52A0\u6587\u4EF6\u5939 -Classpath-Add_Folder_to_Classpath=\u6DFB\u52A0\u6587\u4EF6\u5939\u5230Classpath -Classpath-Add_Jar=\u6DFB\u52A0Jar -Classpath-Add_Jar_to_Classpath=\u6DFB\u52A0Jar\u5230Classpath -Clear=\u6E05\u9664 -Clear_All=\u6E05\u7A7A -Click-Get_Default_URL=\u70B9\u51FB\u6B64\u6309\u94AE\u83B7\u5F97\u9ED8\u8BA4URL -Click-Me=\u70B9\u6211\u6709\u60CA\u559C\u54E6\uFF01 -Click_RadioButton_Change_Semantic=\u70B9\u51FB\u5355\u9009\u6309\u94AE\u66F4\u6539\u8BED\u4E49\u5C42\u7684\u8BBE\u7F6E -Click_To_Change_Value=\u70B9\u51FB\u6539\u53D8\u503C -Click_To_Shrink_Panel=\u70B9\u51FB\u6536\u7F29\u9762\u677F -Click_this_button=\u70B9\u51FB\u6B64\u6309\u94AE\u8FDB\u884C\u8DEF\u5F84\u9009\u62E9 -Client=\u5BA2\u6237\u7AEF -Close=\u5173\u95ED -CloseAuthConfirm=\u662F\u5426\u53D6\u6D88\u5206\u7EA7\u6743\u9650\u63A7\u5236 -Close_Synchronized_DataSet=\u5173\u95ED\u540C\u6B65\u6570\u636E\u96C6 -Closed=\u5DF2\u5173\u95ED -Collect-Click\!_Get_user_information_code=\u70B9\u51FB\!\u83B7\u53D6\u6FC0\u6D3B\u7801 -Collect-Collect_User_Information=\u6536\u96C6\u7528\u6237\u4FE1\u606F -Collect-Enter_your_user_information_code(It's_free_to_get_from_product's_official_website)=\u8BF7\u8F93\u5165\u60A8\u7684\u6FC0\u6D3B\u7801(\u5B83\u662F\u514D\u8D39\u4ECE\u4EA7\u54C1\u7684\u5B98\u65B9\u7F51\u7AD9\u83B7\u5F97\u7684) -Collect-Successfully=\u6536\u96C6\u6210\u529F -Collect-The_user_information_code_is_invalid=\u8FD9\u4E2A\u6FC0\u6D3B\u7801\u662F\u65E0\u6548\u7684, \u8BF7\u5230\u5B98\u7F51\u7533\u8BF7 -Collect-Use_Designer=\u4F7F\u7528\u8BBE\u8BA1\u5668 -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 -Color=\u989C\u8272 -ColorMatch=\u914D\u8272 -Colors=\u989C\u8272 -Column=\u5217 -Column\ Type= -Column-Axis=\u5217\u8F74 -Column-Fields=\u5217\u5B57\u6BB5 -Column-Number-OR-Row-Number=\u5217\u53F7\u6216\u884C\u53F7 -ColumnName=\u5217\u540D -ColumnSpan=\u5217\u8DE8\u5EA6 -ColumnTo=\u5217\u81F3\u7B2C -Column_Cell=\u6A2A\u683C -Column_Does_Not_Exsit=\u5217\u4E0D\u5B58\u5728 -Column_Measure=\u5217\u8F74/\u5EA6\u91CF\u503C -Column_Multiple=\u6570\u636E\u500D\u6570 -Column_tag=\u5217\u6807\u7B7E -Columns=\u5217 -Columns_choosed=\u9009\u62E9\u7684\u5217 -Combine\ Other\ to\ Other=\u5408\u5E76\u5269\u4F59\u9879\u4E3A"\u5176\u5B83" -ComboBox=\u4E0B\u62C9\u6846 -ComboCheckBox-End_Symbol=\u7ED3\u675F\u7B26 -ComboCheckBox-Start_Symbol=\u8D77\u59CB\u7B26 -Come_True=\u5B9E\u73B0 -Comfirm_To_Save=\u786E\u8BA4\u4FDD\u5B58 -CommaDismenber=\u9017\u53F7 -Common=\u666E\u901A -Common_Condition=\u666E\u901A\u6761\u4EF6 -Compart=\u5206\u9694 -Compile=\u7F16\u8BD1 -Compile-Not_Support=\u4E0D\u652F\u6301\u52A8\u6001\u7F16\u8BD1 -Compile_Failed=\u7F16\u8BD1\u5931\u8D25 -Compile_Success=\u7F16\u8BD1\u6210\u529F -Compile_Success_And_Then_Save=\u7F16\u8BD1\u6210\u529F\u624D\u80FD\u6B63\u786E\u4FDD\u5B58 -Component_Interval=\u7EC4\u4EF6\u95F4\u9694 -Component_Scale=\u7EC4\u4EF6\u7F29\u653E -Condition=\u6761\u4EF6 -ConditionB-AND=\u4E0E(AND) -ConditionB-Add_bracket=\u6DFB\u52A0\u62EC\u53F7 -ConditionB-Conditions=\u4F9D\u6761\u4EF6\u9009\u62E9 -ConditionB-Input_Condition_Parameter=\u8F93\u5165\u8FC7\u6EE4\u6761\u4EF6\u7684\u53C2\u6570 -ConditionB-OR=\u6216(OR) -ConditionB-Operator=\u64CD\u4F5C\u7B26 -ConditionB-Parameter_name_cannot_be_null=\u53C2\u6570\u540D\u5B57\u4E0D\u80FD\u4E3A\u7A7A -ConditionB-Remove_bracket=\u53BB\u6389\u62EC\u53F7 -ConditionB-begins_with=\u5F00\u5934\u662F -ConditionB-contains=\u5305\u542B -ConditionB-does_not_begin_with=\u5F00\u5934\u4E0D\u662F -ConditionB-does_not_contain=\u4E0D\u5305\u542B -ConditionB-does_not_end_with=\u7ED3\u5C3E\u4E0D\u662F -ConditionB-does_not_equal_to=\u4E0D\u7B49\u4E8E -ConditionB-does_not_in=\u4E0D\u5305\u542B\u4E8E -ConditionB-ends_with=\u7ED3\u5C3E\u662F -ConditionB-equals=\u7B49\u4E8E -ConditionB-in=\u5305\u542B\u4E8E -ConditionB-is_empty=\u4E3A\u7A7A -ConditionB-is_greater_than=\u5927\u4E8E -ConditionB-is_greater_than_or_equal_to=\u5927\u4E8E\u6216\u7B49\u4E8E -ConditionB-is_less_than=\u5C0F\u4E8E -ConditionB-is_less_than_or_equal_to=\u5C0F\u4E8E\u6216\u7B49\u4E8E -ConditionB-is_not_empty=\u4E0D\u4E3A\u7A7A -ConditionB-not_null=\u4E0D\u4E3A\u7A7A -ConditionB-null=\u4E3A\u7A7A -Condition_Attributes=\u6761\u4EF6\u5C5E\u6027 -Condition_Display=\u6761\u4EF6\u663E\u793A -Conditions_formula=\u6761\u4EF6\u516C\u5F0F -Config_Servlet=\u914D\u7F6E\u8FDC\u7A0B\u670D\u52A1\u5668 -Config_Synchronized_DataSet=\u914D\u7F6E\u540C\u6B65\u6570\u636E\u96C6 -Confirm=\u786E\u8BA4 -Confirm-Delete-File=\u662F\u5426\u5220\u9664\u6240\u9009\u6587\u4EF6\uFF1F -Connect_SQL_Cannot_Null=\u6570\u636E\u8FDE\u63A5\u548CSQL\u9762\u677F\u4E0D\u80FD\u4E3A\u7A7A -Connection=\u8FDE\u63A5 -ConnectionPool_Attr=\u8FDE\u63A5\u6C60\u5C5E\u6027 -Connectionline=\u8FDE\u7EBF\u6A21\u5F0F -Content=\u5185\u5BB9 -Content-empty=\ \u5185\u5BB9\u5C06\u663E\u793A\u4E3A\u7A7A\u3002 -ContentDisplay=\u663E\u793A\u65B9\u5F0F -Continent=\u6D32\u9645 -Continue_add=\u7EE7\u7EED\u6DFB\u52A0 -Continuum=\u76F8\u90BB\u8FDE\u7EED -Convert=\u8F6C\u6362 -Copy=\u590D\u5236 -CopyRight=\u7248\u6743\u6240\u6709 -Corre_parameter=\u5BF9\u5E94\u53C2\u6570 -Corresponding_Fields=\u5BF9\u5E94\u5B57\u6BB5 -Corresponding_Layer=\u5BF9\u5E94\u5C42\u7EA7 -CountStyle=\u8BA1\u7B97\u65B9\u5F0F -Cover_None=\u5168\u4E0D\u8986\u76D6 -Covered_All=\u5168\u90E8\u8986\u76D6 -Cpt_Backup=\u52A0\u5BC6\u524D\u5148\u8FDB\u884C\u6A21\u677F\u5907\u4EFD -Cpt_Backup_Sure=\u5907\u4EFD\u6A21\u677F\u53EF\u4EE5\u9632\u6B62\u6570\u636E\u4E22\u5931\uFF0C\u60A8\u786E\u5B9A\u4E0D\u5907\u4EFD\u5417\uFF1F -Create_Cross_Report=\u521B\u5EFA\u4EA4\u53C9\u62A5\u8868 -Create_Free_Report=\u521B\u5EFA\u81EA\u7531\u62A5\u8868 -Create_Grouping_Report=\u521B\u5EFA\u5206\u7EC4\u62A5\u8868 -Create_QRCode=\u751F\u6210\u4E8C\u7EF4\u7801 -Create_Time=\u521B\u5EFA\u65F6\u95F4 -Create_Tree=\u6784\u5EFA\u6811 -Crimson=\u6DF1\u7EA2 -CrossReport_Fields=\u4EA4\u53C9\u62A5\u8868\u5B57\u6BB5 -CrossTable=\u4EA4\u53C9\u8868 -Cross_Report=\u4EA4\u53C9\u62A5\u8868 -Cross_Report_Wizard=\u4EA4\u53C9\u62A5\u8868\u5411\u5BFC -Currency_Line=\u91D1\u989D\u7EBF -Current=\u5F53\u524D -Current_Node_Staff=\u672C\u8282\u70B9\u4EBA\u5458 -Current_Preview_Rows=\u5F53\u524D\u9884\u89C8\u884C\u6570 -Current_custom_global=\u5F53\u524D\u62A5\u8868\u6240\u7528\u81EA\u5B9A\u4E49\u5168\u5C40\u6837\u5F0F -Current_keys=\u5F53\u524D\u5FEB\u6377\u952E\uFF1A -Cursor=\u6E38\u6807 -Cursor_to_next_column=\u5149\u6807\u79FB\u5230\u4E0B\u4E00\u5217 -Cursor_to_next_row=\u5149\u6807\u79FB\u5230\u4E0B\u4E00\u884C -Cursor_to_previous_column=\u5149\u6807\u79FB\u5230\u4E0A\u4E00\u5217\u4E3A\uFF1A -Cursor_to_previous_row=\u5149\u6807\u79FB\u5230\u4E0A\u4E00\u884C\u4E3A\uFF1A -Custom=\u81EA\u5B9A\u4E49 -CustomLoginPage=\u81EA\u5B9A\u4E49\u767B\u5F55\u7F51\u9875 -Custom_Button_Message=\u81EA\u5B9A\u4E49button\u5177\u4F53\u4F7F\u7528\u65B9\u6CD5\u8BF7\u53C2\u8003\u5E2E\u52A9\u6587\u6863 -Custom_Button_Submit_URL=\u63D0\u4EA4\u5730\u5740 -Custom_Button_Target_Type=\u63D0\u4EA4\u7A97\u53E3\u6A21\u5F0F -Custom_Button_Type_Simple=\u666E\u901A -Custom_Button_Type_Submit=\u63D0\u4EA4 -Custom_Define_Types=\u81EA\u5B9A\u4E49\u7C7B\u578B -Custom_FS_Process=\u81EA\u5B9A\u4E49\u6D41\u7A0B\u5339\u914D -Custom_FS_Roles=\u81EA\u5B9A\u4E49\u89D2\u8272 -Custom_FS_Users=\u81EA\u5B9A\u4E49\u7528\u6237 -Custom_Icon_Message1=\u5EFA\u8BAE\u4F7F\u752816 \u00D7 16\u89C4\u683C\u7684PNG\u56FE\u7247 -Custom_Icon_Message2=\u60A8\u7684\u64CD\u4F5C\u5B58\u5728\u4E0D\u5408\u7406\u4E4B\u5904\u3002 -Custom_Icon_Message3=\u56FE\u6807\u540D\u79F0\u5DF2\u7ECF\u5B58\u5728\u3002 -Custom_Icon_RemoveIcon=\u79FB\u9664\u56FE\u6807 -Custom_Icon_SelectIcon=\u9009\u62E9\u56FE\u6807 -Custom_Login_Page=\u81EA\u5B9A\u4E49\u767B\u5F55\u9875\u9762 -Custom_Processor=\u81EA\u5B9A\u4E49\u5904\u7406\u5668 -Custom_Roles=\u81EA\u5B9A\u4E49\u89D2\u8272 -Custom_Type_Set=\u7EC4\u5408\u7C7B\u578B\u8BBE\u7F6E -Custom_styles_lost=\u81EA\u5B9A\u4E49\u6837\u5F0F\u5DF2\u4E22\u5931 -Customs=\u5B9A\u5236 -D-ChartArea=\u56FE\u8868\u533A -D-ChartStyle_Info=\u4ECB\u7ECD -D-ChartStyle_SubStyle= -D-ChartValues=\u56FE\u8868\u6570\u503C -D-DataSeries=\u6570\u636E\u5E8F\u5217 -D-Dispaly_Divide_Result_Set_into_Groups=\u5C06\u7ED3\u679C\u96C6\u8FDB\u884C\u5206\u7EC4 -D-HotHyperlink=\u70ED\u94FE\u63A5 -D-Step=\u6B65\u9AA4 -DBCP_INITIAL_SIZE=\u521D\u59CB\u5316\u8FDE\u63A5\u6570 -DBCP_MAX_ACTIVE=\u6700\u5927\u6D3B\u52A8\u8FDE\u63A5\u6570 -DBCP_MAX_IDLE=\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5\u6570 -DBCP_MAX_WAIT=\u6700\u5927\u7B49\u5F85\u65F6\u95F4 -DBCP_MIN_EVICTABLE_IDLE_TIMEMILLIS=\u4FDD\u6301\u7A7A\u95F2\u6700\u5C0F\u65F6\u95F4\u503C -DBCP_MIN_IDLE=\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5\u6570 -DBCP_NUM_TEST_PER_EVCTION_RUN=\u7A7A\u95F2\u8FDE\u63A5\u56DE\u6536\u68C0\u67E5\u6570 -DBCP_TEST_ON_BORROW=\u83B7\u53D6\u8FDE\u63A5\u524D\u68C0\u9A8C -DBCP_TEST_ON_RETURN=\u5F52\u8FD8\u8FDE\u63A5\u524D\u68C0\u9A8C -DBCP_TEST_WHILE_IDLE=\u5F00\u542F\u7A7A\u95F2\u56DE\u6536\u5668\u68C0\u9A8C -DBCP_TIME_BETWEEN_EVICTIONRUNSMILLIS=\u7A7A\u95F2\u8FDE\u63A5\u56DE\u6536\u5668\u4F11\u7720\u65F6\u95F4 -DBCP_VALIDATION_QUERY=SQL\u9A8C\u8BC1\u67E5\u8BE2 -DBTableData_Not_Get_RowCount=\u4E0D\u80FD\u53D6\u5F97\u603B\u884C\u6570 -DEFAULT=\u9ED8\u8BA4 -DONE_WORK=\u5DF2\u5904\u7406\u4E8B\u52A1 -DS-Class=\u7A0B\u5E8F -DS-Class_Name=\u7C7B\u540D -DS-Class_TableData=\u7A0B\u5E8F\u6570\u636E\u96C6 -DS-Convert_to_Private=\u8F6C\u4E3A\u79C1\u6709 -DS-Database_Query=\u6570\u636E\u5E93\u67E5\u8BE2 -DS-Database_TableData=\u6570\u636E\u5E93\u6570\u636E\u96C6 -DS-Databse_Info_Save_Des=\u5168\u5C40\u6570\u636E\u5E93\u8FDE\u63A5\u4FE1\u606F\u4FDD\u5B58\u5728\u5168\u5C40\u6587\u4EF6"/WEB-INF/resources/datasource.xml"\uFF0C\u91CC\u9762\u4F9B\u6240\u6709\u7684\u6A21\u677F\u6587\u4EF6\u8C03\u7528\u3002 -DS-Define_Semantic=\u5B9A\u4E49\u8BED\u4E49\u5C42 -DS-Dictionary=\u6570\u636E\u5B57\u5178 -DS-Embedded_TableData=\u5185\u7F6E\u6570\u636E\u96C6 -DS-Form_DataSource=\u8868\u5355\u6570\u636E\u6E90 -DS-Multi_Dimensional_Database=\u591A\u7EF4\u6570\u636E\u5E93 -DS-No_Dictionary=\u6CA1\u6709\u6570\u636E\u5B57\u5178 -DS-Real_Name_<->_Display_Name=\u5B9E\u9645\u540D\u5B57 <-> \u663E\u793A\u540D\u5B57 -DS-Relation_TableData=\u5173\u8054\u6570\u636E\u96C6 -DS-Report_DataList=\u62A5\u8868\u6570\u636E\u94FE -DS-Report_Dictionary=\u62A5\u8868\u6570\u636E\u5B57\u5178 -DS-Report_TableData=\u6A21\u677F\u6570\u636E\u96C6 -DS-Select_Data_Column=\u9009\u62E9\u6570\u636E\u5217 -DS-Select_Data_Column_from_Left_Data_Tree=\u4ECE\u5DE6\u8FB9\u7684\u6570\u636E\u6811\u4E2D\u9009\u62E9\u6570\u636E\u5217 -DS-Select_Database=\u9009\u62E9\u6570\u636E\u5E93 -DS-Server_Dictionary=\u670D\u52A1\u5668\u6570\u636E\u5B57\u5178 -DS-Server_TableData=\u670D\u52A1\u5668\u6570\u636E\u96C6 -DS-Should_select_a_bind_column=\u9700\u8981\u7ED1\u5B9A\u4E00\u4E2A\u6570\u636E\u5217 -DS-TableData=\u6570\u636E\u96C6 -DS-Text_TableData=\u6587\u672C\u6570\u636E\u96C6 -DS-XML_TableData=XML\u6570\u636E\u96C6 -DashBoard-Adhoc=\u5373\u5E2D\u62A5\u8868 -DashBoard-AdhocSetting=B/S\u8BBE\u8BA1\u5668\u5DE5\u5177 -DashBoard-BeautyReport=\u5F62\u8C61\u7F8E\u89C2\u7684\u56FE\u8868 -DashBoard-ChartFloat=\u56FE\u8868 -DashBoard-ChartRecord=\u96F6\u5BA2\u6237\u7AEF\u8868\u5355\u5F55\u5165 -DashBoard-ConnectionList=\u6570\u636E\u8FDE\u63A5 -DashBoard-DashBoard=\u663E\u793A\u6B22\u8FCE\u754C\u9762 -DashBoard-DashBoradSetting=\u6B22\u8FCE\u754C\u9762\u8BBE\u7F6E -DashBoard-Dateunfurl=\u6570\u636E\u5C55\u793A -DashBoard-FindDashBorad=\u4EE5\u540E\u542F\u52A8\u5C06\u4E0D\u518D\u663E\u793A\uFF0C\u60A8\u53EF\u4EE5\u5728\u7A97\u53E3\u9009\u9879\u680F\u4E2D\u91CD\u65B0\u8BBE\u7F6E\u5B83 -DashBoard-FormBook=\u8868\u5355 -DashBoard-GuideAction=\u62A5\u8868\u9884\u5904\u7406\u5411\u5BFC -DashBoard-LearnTutorial=\u9AD8\u624B\u8FDB\u9636 \u8FDB\u5165FineReport v6.5\u7684\u5B66\u4E60\u6559\u7A0B -DashBoard-MainFunction=\u4E3B\u8981\u529F\u80FD\u4E00\u89C8 -DashBoard-More=\u66F4\u591A... -DashBoard-NewTemplate=\u6A21\u677F -DashBoard-NoMoreReminder=\u4E0D\u518D\u663E\u793A -DashBoard-Online_Document=\u5728\u7EBF\u6587\u6863 -DashBoard-OpenRecentReport=\u6253\u5F00\u6700\u8FD1\u7684\u6587\u4EF6 -DashBoard-Potence=\u6743\u9650 -DashBoard-QucikAccidence=\u5FEB\u901F\u5165\u95E8(\u63A8\u8350) >> -DashBoard-ReportShowPlatform=\u62A5\u8868\u5C55\u793A\u5E73\u53F0 -DashBoard-ReportsPrint=\u96F6\u5BA2\u6237\u7AEF\u62A5\u8868\u6253\u5370 -Data=\u6570\u636E -Data-Check=\u6570\u636E\u76D1\u63A7 -Data-Get_Data_Error=\u83B7\u53D6\u6570\u636E\u65F6\u53D1\u751F\u9519\u8BEF -Data-Label=\u6807\u7B7E -DataBinding=\u6570\u636E\u7ED1\u5B9A -DataColumn=\u6570\u636E\u5217 -DataFunction-Average=\u5E73\u5747 -DataFunction-Count=\u4E2A\u6570 -DataFunction-Max=\u6700\u5927\u503C -DataFunction-Min=\u6700\u5C0F\u503C -DataFunction-None=\u65E0 -DataFunction-Sum=\u6C42\u548C -DataFunction_Percent=\u5360\u6BD4 -DataList=\u6570\u636E\u94FE -DataList-Set_Value_Of_DataList=\u8BBE\u7F6E\u6570\u636E\u94FE\u7684\u503C -Data_Connection_Driver_Name=\u6570\u636E\u8FDE\u63A5\u9A71\u52A8\u5668\u540D\u79F0 -Data_Fields_can_be_used=\u53EF\u7528\u7684\u6570\u636E\u5B57\u6BB5 -Data_Fields_will_be_displayed=\u5C06\u8981\u663E\u793A\u7684\u6570\u636E\u5B57\u6BB5 -Data_Filter=\u6570\u636E\u7B5B\u9009 -Data_Rollback_Failed=\u6570\u636E\u56DE\u6EDA\u5931\u8D25 -Data_Setting=\u6570\u636E\u8BBE\u7F6E -Data_Submit_Error=\u6570\u636E\u63D0\u4EA4\u51FA\u9519 -Data_Type=\u6570\u636E\u683C\u5F0F -Data_range_configuration=\u6570\u636E\u533A\u95F4\u914D\u7F6E -Database=\u6570\u636E\u5E93 -Database_Connection=\u6570\u636E\u5E93\u8FDE\u63A5 -Database_User=\u6570\u636E\u5E93\u7528\u6237 -Datasource-Add_DataConnection=\u6DFB\u52A0\u6570\u636E\u8FDE\u63A5 -Datasource-Add_Database=\u6DFB\u52A0\u6570\u636E\u5E93 -Datasource-Add_Directory_of_hibernate.cfg.xml_to_Classpath=\u628Ahibernate.cfg.xml\u6587\u4EF6\u52A0\u5230Classpath\u4E0B -Datasource-Add_TableData=\u6DFB\u52A0\u6570\u636E\u96C6 -Datasource-Are_you_sure_to_delete_the_selected_SAP_datasource=\u4F60\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u7684SAP\u6570\u636E\u6E90\u5417 -Datasource-Are_you_sure_to_delete_the_selected_class_datasource=\u4F60\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u7684\u7A0B\u5E8F\u6570\u636E\u6E90\u5417 -Datasource-Are_you_sure_to_delete_the_selected_hibernate_datasource=\u4F60\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u7684Hibernate\u6570\u636E\u6E90\u5417 -Datasource-Are_you_sure_to_delete_the_selected_remedy_datasource=\u4F60\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u7684Remedy\u6570\u636E\u6E90\u5417 -Datasource-Class_datasource_name_cannot_be_null=\u7A0B\u5E8F\u6570\u636E\u6E90\u7684\u540D\u5B57\u4E0D\u53EF\u4EE5\u4E3A\u7A7A -Datasource-Column_Index=\u5217\u5E8F\u53F7 -Datasource-Connection_failed=\u8FDE\u63A5\u5931\u8D25 -Datasource-Connection_successfully=\u8FDE\u63A5\u6210\u529F -Datasource-Context=\u4E0A\u4E0B\u6587 -Datasource-Convert_Charset=\u7F16\u7801\u8F6C\u6362 -Datasource-Data_Map_Source=\u6570\u636E\u5B57\u5178\u6765\u6E90 -Datasource-Database_Type=\u6570\u636E\u5E93\u7C7B\u578B -Datasource-Datasource=\u6570\u636E\u6E90 -Datasource-Datasource-name=\u6570\u636E\u6E90\u540D -Datasource-Datasource-value=\u6570\u636E\u6E90\u503C -Datasource-Datasoure_File=\u6570\u636E\u6E90\u6587\u4EF6 -Datasource-From_Database=\u6570\u636E\u5E93\u8868 -Datasource-JDBC_Datasource=JDBC\u6570\u636E\u6E90 -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. -Datasource-JNDI_Name=JNDI\u7684\u540D\u5B57 -Datasource-Key=\u952E\u503C -Datasource-Maximum_Number_of_Preview_Rows=\u6700\u5927\u7684\u9884\u89C8\u884C\u6570 -Datasource-New_Charset=\u65B0\u7F16\u7801 -Datasource-Original_Charset=\u539F\u59CB\u7F16\u7801 -Datasource-Other_Attributes=\u5176\u4ED6\u5C5E\u6027 -Datasource-Param_DES= \u60A8\u53EF\u4EE5\u952E\u5165"${abc}"\u505A\u4E3A\u4E00\u4E2A\u53C2\u6570\uFF0C\u8FD9\u91CCabc\u662F\u53C2\u6570\u7684\u540D\u79F0\u3002\u4F8B\u5982\uFF1A
 select * from table where id\=${abc}\u3002
 select * from table where id\='${abc}'\u3002(\u5982\u679Cid\u5B57\u6BB5\u4E3A\u5B57\u7B26\u4E32\u7C7B\u578B) -Datasource-Procedurewaring=\u7CFB\u7EDF\u4E0D\u80FD\u81EA\u52A8\u83B7\u53D6\u8BE5\u5B58\u50A8\u8FC7\u7A0B\u7684\u53C2\u6570\uFF0C\u8BF7\u624B\u52A8\u6DFB\u52A0\! -Datasource-Public_Datasource_Manager=\u516C\u6709\u6570\u636E\u6E90\u7BA1\u7406\u5668 -Datasource-Query_Type=\u67E5\u8BE2\u7C7B\u578B -Datasource-Read_Type=\u8BFB\u53D6\u65B9\u5F0F -Datasource-Rename_SAP_datasource=\u91CD\u547D\u540DSAP\u6570\u636E\u6E90 -Datasource-Rename_class_datasource=\u91CD\u547D\u540D\u7A0B\u5E8F\u6570\u636E\u6E90 -Datasource-Rename_hibernate_datasource=\u91CD\u547D\u540DHibernate\u6570\u636E\u6E90 -Datasource-Rename_remedy_datasource=\u91CD\u547D\u540DRemedy\u6570\u636E\u6E90 -Datasource-SAP_datasource=SAP \u6570\u636E\u6E90 -Datasource-SAP_datasource_name_cannot_be_null=SAP \u6570\u636E\u6E90\u540D\u4E0D\u80FD\u4E3A\u7A7A -Datasource-SQL=\u7531SQL\u521B\u5EFA -Datasource-SQL_Query=SQL\u67E5\u8BE2 -Datasource-Select_the_class_name=\u9009\u62E9\u7A0B\u5E8F\u6570\u636E\u6E90\u7684\u7C7B\u540D -Datasource-Set_Classpath=\u8BBE\u7F6EClasspath -Datasource-Single=\u5355\u4E2A\u8BFB\u53D6 -Datasource-Stored_Procedure=\u5B58\u50A8\u8FC7\u7A0B -Datasource-TabeData=\u7531TableData\u521B\u5EFA -Datasource-TableData_Name=\u6570\u636E\u96C6\u540D\u79F0 -Datasource-Table_Name=\u8868\u540D -Datasource-Test_Connection=\u6D4B\u8BD5\u8FDE\u63A5 -Datasource-Text_datasource=\u6587\u672C\u6570\u636E -Datasource-The_name_of_database_cannot_be_null=\u6570\u636E\u5E93\u7684\u540D\u5B57\u4E0D\u80FD\u4E3A\u7A7A -Datasource-The_name_of_datasource_cannot_be_null=\u6570\u636E\u67E5\u8BE2\u7684\u540D\u5B57\u4E0D\u80FD\u4E3A\u7A7A -Datasource-User_Defined=\u81EA\u5B9A\u4E49 -Datasource-Whole=\u5B8C\u5168\u8BFB\u53D6 -Datatype=\u6570\u636E\u7C7B\u578B -Date=\u65E5\u671F -DateFormat-Custom_Warning=\u6CE8\uFF1A\u81EA\u5B9A\u4E49\u65E5\u671F\u683C\u5F0F\u4E0D\u652F\u6301\u683C\u5F0F\u6821\u9A8C -DateFormat-yyyyMM=yyyy\u5E74MM\u6708 -DateFormat-yyyyMMdd=yyyy\u5E74MM\u6708dd\u65E5 -DateFormat-yyyyMd=yyyy\u5E74M\u6708d\u65E5 -Date_Attention=\u683C\u5F0F\u5FC5\u987B\u4E3AMM/dd/yyyy -Date_Time_Attention=\u683C\u5F0F\u5FC5\u987B\u4E3AMM/dd/yyyy HH\:mm\:ss -Day=\u5929 -De=\u7684 -December=\u5341\u4E8C\u6708 -DeciPart=\u5C0F\u6570\u90E8\u5206 -DecimalNumber_Out=\u5C0F\u6570\u4F4D\u8FC7\u591A -Deep=\u6DF1\u5EA6 -DeepSeriesCap=\u6DF1\u5EA6\u7CFB\u5217\u95F4\u8DDD -Default=\u9ED8\u8BA4 -Default-Browser=\u9ED8\u8BA4\u6D4F\u89C8\u5668 -Default_Certification=\u9ED8\u8BA4\u8BA4\u8BC1 -Default_Data_Connect=\u9ED8\u8BA4\u6570\u636E\u8FDE\u63A5 -Default_ParameterWindow_Attribute_Setting=\u9ED8\u8BA4\u53C2\u6570\u7A97\u53E3\u5C5E\u6027\u8BBE\u7F6E -Default_ParameterWindow_CountPerRow=\u6BCF\u884C\u53C2\u6570\u4E2A\u6570 -Default_ParameterWindow_EditorWidth=\u53C2\u6570\u7F16\u8F91\u5668\u5BBD\u5EA6 -Default_ParameterWindow_TextWidth=\u53C2\u6570\u6587\u672C\u5BBD\u5EA6 -Default_Parameter_Attribute_Setting=\u9ED8\u8BA4\u53C2\u6570\u9875\u9762\u5C5E\u6027\u8BBE\u7F6E -Default_View=\u9ED8\u8BA4\u89C6\u56FE\u5E03\u5C40 -Default_value=\u53C2\u6570\u9ED8\u8BA4\u503C -Define=\u5B9A\u4E49 -Define_Filter=\u5B9A\u4E49\u5B57\u6BB5\u8FC7\u6EE4 -Definition=\u5B9A\u4E49 -Delay=\u5EF6\u8FDF -Delete=\u5220\u9664 -Delete_Button=\u5220\u9664\u6B64\u6309\u94AE -Delete_Column=\u5220\u9664\u5217 -Delete_Data=\u5220\u9664\u6570\u636E -Delivery=\u4F20\u9012 -Denied_To_Upload_Contains=\u7981\u6B62\u4E0A\u4F20\u7684\u6587\u4EF6\u5305\u62EC -Department_Roles=\u90E8\u95E8\u89D2\u8272 -Deploy-Page=\u90E8\u7F72\u9875\u9762 -Deploy-Success_Info=\u770B\u5230\u6B64\u9875\u9762\uFF0C\u8BF4\u660E\u60A8\u5DF2\u7ECF\u6210\u529F\u90E8\u7F72\u4E86\u62A5\u8868\u670D\u52A1\u5668 -Deploy-You_Could_Access=\u60A8\u8FD8\u53EF\u4EE5\u7531\u6B64\u8FDB\u5165 -Depth_Style=\u539A\u5EA6\u8BBE\u7F6E -Des-MapManager=\u670D\u52A1\u5668\u6570\u636E\u5B57\u5178\u5C06\u4FDD\u5B58\u5230"WEB-INF\\resources\\datasource.xml"\u6587\u4EF6\u91CC\u9762\uFF0C\u662F\u5171\u4EAB\u7684\uFF0C\u4F9B\u6240\u6709\u7684\u6A21\u677F\u8C03\u7528\u3002 -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. -Des-Private_Data_Source=\u6240\u6709\u5B9A\u4E49\u7684\u8FD9\u4E9B\u6570\u636E\u6E90,\u5C06\u4FDD\u5B58\u5728Report\u62A5\u8868\u5BF9\u8C61\u91CC\u9762,\u53EA\u4F9B\u5F53\u524D\u62A5\u8868\u4F7F\u7528 -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. -Des-Show_private_data_dialog_when_creating_new_worksheet=\u6BCF\u6B21\u65B0\u5EFA\u81EA\u7531\u62A5\u8868\u65F6\u663E\u793A\u79C1\u6709\u6570\u636E\u5BF9\u8BDD\u6846 -Des-Would_you_like_to_cover_the_current_file=\u662F\u5426\u8981\u8986\u76D6\u5F53\u524D\u6587\u4EF6 -Description=\u63CF\u8FF0 -Description_things=\u63CF\u8FF0 -Deselect_All=\u4E0D\u9009 -Design=\u8BBE\u8BA1 -Designer-Preview=\u8BBE\u8BA1\u5668\u9884\u89C8 -Designer_Language=\u8BBE\u8BA1\u5668\u8BED\u8A00 -Desktop=\u684C\u9762 -Detail-Information=\u8BE6\u7EC6\u4FE1\u606F -Device=\u8BBE\u5907 -Dialog=\u5BF9\u8BDD\u6846 -Dic-Choose_Database_And_Table=\u9009\u62E9\u6570\u636E\u5E93\u548C\u8868 -Dic-Data_Query=\u6570\u636E\u67E5\u8BE2 -Dic-Database_Table=\u6570\u636E\u5E93\u8868 -Dic-Only_Can_Delete_DataDictionary=\u53EA\u80FD\u5220\u9664\u6570\u636E\u5B57\u5178 -Dic-Only_Can_Rename_DataDictionary=\u53EA\u80FD\u91CD\u547D\u540D\u6570\u636E\u5B57\u5178 -Dic-Set_Actual_Value_And_Display_Value=\u8BBE\u5B9A\u5B9E\u9645\u503C\u548C\u663E\u793A\u503C -Dic-Set_Key_And_Value=\u8BBE\u5B9A\u952E\u503C\u548C\u6570\u503C -Dictionary-Dynamic_SQL=\u52A8\u6001SQL -Dictionary_Name_Exsited_Next_Choose_ReportDictionary=\u670D\u52A1\u5668\u6570\u636E\u5B57\u5178\u547D\u540D\u4E0E\u62A5\u8868\u6570\u636E\u5B57\u5178\u547D\u540D\u6709\u91CD\u590D\uFF0C\u4E0B\u6B21\u6253\u5F00\u9ED8\u8BA4\u9009\u62E9\u540C\u540D\u62A5\u8868\u6570\u636E\u5B57\u5178\u3002 -Dictionary_Name_Has_Exsited=\u6570\u636E\u5B57\u5178\u540D\u5DF2\u7ECF\u5B58\u5728 -Dimension=\u7EF4\u5EA6 -Directory=\u76EE\u5F55 -Directory_Used_For_Text_Excel=\u76EE\u5F55\u662F\u5E94\u7528\u4E8E\u6587\u672C\u6570\u636E\u96C6\u548CEXCEL\u6570\u636E\u96C6\u7684\u6587\u4EF6\u5939\u76EE\u5F55\uFF0C\u91CC\u9762\u5305\u542B\u4E86\u666E\u901A\u6587\u672C\u6216\u8005EXCEL\u6587\u4EF6 -DisPlay_Proportion=\u663E\u793A\u6BD4\u4F8B -Disk_File=\u78C1\u76D8\u6587\u4EF6 -Dismenber=\u5206\u9694\u7B26 -Display=\u5C55\u793A -Display\ position=\u663E\u793A\u4F4D\u7F6E -Display-Style=\u62A5\u8868\u5C55\u793A\u6837\u5F0F -DisplayNothingBeforeQuery=\u70B9\u51FB\u67E5\u8BE2\u524D\u4E0D\u663E\u793A\u62A5\u8868\u5185\u5BB9 -DisplayTheLabel-In-Chart=\u5728\u56FE\u8868\u4E0A\u663E\u793A\u523B\u5EA6\u5355\u4F4D\u6807\u7B7E -DisplayUnit=\u663E\u793A\u5355\u4F4D -Display_Modes=\u663E\u793A\u6A21\u5F0F -Display_Value=\u663E\u793A\u503C -Divided_stage=\u5212\u5206\u9636\u6BB5 -DoSelectPosition=\u8BF7\u9009\u62E9\u804C\u4F4D -DoSelectUser=\u8BF7\u9009\u62E9\u7528\u6237 -Do_not_remind=\u4E0B\u6B21\u63D0\u9192 -Docking-Aggregate=\u805A\u5408 -Docking-Dock=\u505C\u9760 -Docking-Docked_Mode=\u505C\u9760\u6A21\u5F0F -Docking-Fix=\u56FA\u5B9A -Docking-Float=\u6D6E\u52A8 -Docking-Floating_Mode=\u6D6E\u52A8\u6A21\u5F0F -Docking-Pin=\u56FA\u5B9A -Docking-Pinned_Mode=\u56FA\u5B9A\u6A21\u5F0F -Docking-Undock=\u4E0D\u505C\u9760 -Docking-Unpin=\u4E0D\u56FA\u5B9A -Docking-Views_Menu=\u89C6\u56FE\u83DC\u5355 -Donot_Repeat_Data=\u6570\u636E\u91CD\u590D -Double=\u5C0F\u6570 -Double_Bottom_BorderLine=\u53CC\u5E95\u6846\u7EBF -Double_Click_Edit_OR_Clear=\u53CC\u51FB\u8FDB\u884C\u7F16\u8F91\u6216\u6E05\u9664 -Down=\u4E0B -DownBarBorderStyleAndColor=\u8DCC\u67F1\u6837\u5F0F -Download=\u4E0B\u8F7D -Drag_To_Move=\u70B9\u6B64\u62C9\u52A8 -Drag_the_selected_field=\u5B57\u6BB5\u5217\u8868(\u5C1D\u8BD5\u62D6\u62FD) -Drag_to_select_gradient=\ \u62D6\u52A8\u4E0B\u65B9\u6309\u94AE\u9009\u62E9\u6E10\u53D8\u533A\u57DF\uFF0C\u5355\u51FB\u6309\u94AE\u9009\u62E9\u5BF9\u5E94\u989C\u8272 -Draw=\u7ED8\u5236 -DrawChart=\u7ED8\u56FE -Driver=\u9A71\u52A8\u5668 -Drop_down_for_more_preview= -FR-Designer_Dropdown-More-Preview=\u4E0B\u62C9\u83B7\u53D6\u66F4\u591A\u9884\u89C8\u65B9\u5F0F -ECP-error_pwd=\u5BC6\u7801\u9519\u8BEF -ECP_decode=\u6A21\u677F\u89E3\u5BC6 -ECP_decode_failed=\u89E3\u5BC6\u5931\u8D25, \u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u68C0\u67E5\u5BC6\u7801\u6587\u4EF6\u662F\u5426\u5B58\u5728 -ECP_encode_failed=\u52A0\u5BC6\u5931\u8D25, \u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u68C0\u67E5\u5BC6\u7801\u6587\u4EF6\u662F\u5426\u635F\u574F -ECP_error_input=\u5BC6\u7801\u683C\u5F0F\u4E0D\u7B26 -ECP_error_pwd=\u5BC6\u7801\u9519\u8BEF -ECP_error_same=\u5BC6\u7801\u4E0D\u80FD\u4E0E\u539F\u59CB\u5BC6\u7801\u76F8\u540C -ECP_input_pwd=\u8BF7\u8F93\u5165\u5BC6\u7801\: -ECP_re_input=\u5BC6\u7801\u9519\u8BEF, \u8BF7\u91CD\u65B0\u8F93\u5165 -ECP_start_encode=\u5F00\u59CB\u52A0\u5BC6 -EDIT_REPORT_XML=\u5728\u7EBF\u7F16\u8F91\u62A5\u8868\u5185\u5BB9\u4F20\u8F93 -ES_Role_Instruction1=\u8BF7\u914D\u7F6E\u89D2\u8272\u6743\u9650\uFF0C\u7F16\u8F91\u89D2\u8272\u8BF7\u767B\u5F55\u6570\u636E\u51B3\u7B56\u7CFB\u7EDF -ES_Role_Instruction2=\u60A8\u6CA1\u6709\u4F7F\u7528\u670D\u52A1\u5668\u6570\u636E\u96C6\u8EAB\u4EFD\u9A8C\u8BC1\uFF0C\u8BF7\u6DFB\u52A0\u89D2\u8272\u5E76\u914D\u7F6E\u6743\u9650 -ES_Role_Instruction3=\u60A8\u4F7F\u7528\u7684\u662F\u670D\u52A1\u5668\u6570\u636E\u96C6\u8EAB\u4EFD\u9A8C\u8BC1\uFF0C\u8BF7\u914D\u7F6E\u89D2\u8272\u6743\u9650 -EX-Can_not_create_WorkBook_from_Reportlet=\u65E0\u6CD5\u4ECE\u7F51\u7EDC\u62A5\u8868\u751F\u6210\u5DE5\u4F5C\u7C3F -EX-Can_not_create_WorkBook_from_Reportlets=\u65E0\u6CD5\u4ECE\u7F51\u7EDC\u62A5\u8868\u96C6\u751F\u6210\u5DE5\u4F5C\u7C3F -EX-Hierarchy_Analysis_is_not_Supported_in_this_Edition=\u8BE5\u7248\u672C\u4E0D\u652F\u6301\u5C42\u6B21\u5750\u6807\u89E3\u6790 -EX-IP_Address_Overflow=IP\u5730\u5740\u6570\u91CF\u8D85\u8FC7\u9650\u5236 -EX-Image_stored_is_broken=\u4FDD\u5B58\u7684\u56FE\u7247\u88AB\u7834\u574F\u4E86 -EX-Reportlets_Count_Overflow=reportlets\u4E0B\u6A21\u677F\u7684\u6570\u76EE\u8D85\u51FA\u6CE8\u518C\u6570 -EXPORT_PDF_EMBED=\u5BFC\u51FAPDF\u662F\u5426\u5185\u5D4C\u663E\u793A -Ean13_less_than_12=\u8F93\u5165\u4F4D\u6570\u4E0D\u8DB3\uFF0CEan13\u7801\u9700\u8981\u8F93\u516512\u4F4D\u5B57\u7B26\uFF0C\u6700\u540E\u4E00\u4F4D\u7531\u7CFB\u7EDF\u81EA\u52A8\u751F\u6210\u3002 -Ean13_more_than_12=Ean13\u7801\u4EC5\u9700\u8F93\u5165\u524D12\u4F4D\u5B57\u7B26\uFF0C\u6700\u540E\u4E00\u4F4D\u7531\u7CFB\u7EDF\u81EA\u52A8\u751F\u6210\uFF0C\u8D85\u51FA12\u4F4D\u90E8\u5206\u7CFB\u7EDF\u5C06\u81EA\u52A8\u622A\u53D6\u3002 -Ecp_Being=\u6B63\u5728\u52A0\u5BC6\u2026\u2026 -Ecp_Convert=\u6CE8\uFF1A\u52A0\u5BC6\u540Ereportlets\u6587\u4EF6\u5939\u7684\u6587\u4EF6\u5C06\u8F6C\u4E3A\u5BC6\u6587\u3002 -Ecp_Failed=\u52A0\u5BC6\u5931\u8D25 -Ecp_Input_Oldpwd=\u8BF7\u8F93\u5165\u65E7\u5BC6\u7801 -Ecp_Pwd_Long=\u5BC6\u7801\u957F\u5EA6\u8FC7\u957F -Ecp_Pwd_Short=\u5BC6\u7801\u957F\u5EA6\u8FC7\u77ED -Ecp_Re=\u8BF7\u91CD\u65B0\u8FDB\u884C\u52A0\u5BC6 -Ecp_Start=\u5F00\u59CB\u52A0\u5BC6 -Ecp_Success=\u52A0\u5BC6\u6210\u529F -Edit=\u7F16\u8F91 -Edit-Browser-List=\u7F16\u8F91\u6D4F\u89C8\u5668\u5217\u8868 -Edit-Column_Count=\u5217\u6570 -Edit-Row_Count=\u884C\u6570 -EditFailed=\u7F16\u8F91\u5931\u8D25 -EditRC-Entire_column=\u6574\u5217(C) -EditRC-Entire_row=\u6574\u884C(R) -Edit_Analysis=\u7F16\u8F91\u5206\u6790 -Edit_Button_ToolBar=\u7F16\u8F91\u6309\u94AE\u6240\u5728\u5DE5\u5177\u680F -Edit_Position=\u7F16\u8F91\u804C\u4F4D -Edit_String_To_Formula=\u662F\u5426\u5C06\u5B57\u7B26\u4E32\u7F16\u8F91\u4E3A\u516C\u5F0F -Editor=\u7F16\u8F91\u5668 -Email=\u90AE\u4EF6 -Email-Can-Preview_JForm_Content=\u6B63\u6587\u9884\u89C8\u8868\u5355\u5185\u5BB9 -Email-Can_Preview_Report_Content=\u6B63\u6587\u9884\u89C8\u62A5\u8868\u5185\u5BB9 -Email-Sending=\u6B63\u5728\u53D1\u9001\u90AE\u4EF6 -EmailNotice=\u90AE\u4EF6\u901A\u77E5 -EmailPane-BCC=\u5BC6\u9001 -EmailPane-mailContent=\u90AE\u4EF6\u6B63\u6587 -EmailPane-mailSubject=\u90AE\u4EF6\u6807\u9898 -EmailPane-tips=\u60A8\u53EF\u4EE5\u952E\u5165${abc}\u4F5C\u4E3A\u4E00\u4E2A\u53C2\u6570\uFF0Cabc\u4E3A\u53C2\u6570\u540D\u79F0\uFF1B${today()}\u4F5C\u4E3A\u516C\u5F0F\uFF0C\u4F8B\u5982\uFF1A\u6807\u9898\u6B63\u6587\u4E3A"${today()}\u7EDF\u8BA1\u60C5\u51B5"\uFF0C\u6536\u4EF6\u4EBA\u4E3A"${p},123@gmail.com,mike"\uFF0C\u8FD9\u91CCmike\u5FC5\u987B\u662F\u5DF2\u4FDD\u5B58\u5728\u5E73\u53F0\u7528\u6237\u7BA1\u7406\u91CC\u7684\u7528\u6237\u540D -EmailPane-warnings=\u60A8\u5C1A\u672A\u914D\u7F6E\u53D1\u4EF6\u90AE\u7BB1\uFF0C\u8BF7\u767B\u5F55\u5E73\u53F0\u8FDB\u884C\u914D\u7F6E\u6216\u8005\u8054\u7CFB\u7BA1\u7406\u5458 -Email_Des=\u53EF\u4EE5\u4F7F\u7528\u5206\u53F7\u6765\u533A\u5206\u591A\u4E2Aemail\u5730\u5740 -Email_sentEmail=\u53D1\u9001\u90AE\u4EF6 -Embed=\u5185\u5D4C -Embed_User=\u5185\u7F6E\u7528\u6237 -Empty_Input=\u8F93\u5165\u5185\u5BB9\u4E3A\u7A7A -Enable=\u542F\u7528 -Enabled=\u53EF\u7528 -Encoding_Type=\u7F16\u7801\u7C7B\u578B -EndValue=\u7ED3\u675F\u503C -English_Language=\u82F1\u8BED -Enlarge_Or_Reduce=\u7F29\u653E -Enter-New-FileName=\u8BF7\u8F93\u5165\u65B0\u7684\u6587\u4EF6\u540D -EnterTrueTimeFormat=\u8BF7\u8F93\u5165\u6B63\u786E\u683C\u5F0F\u7684\u65F6\u95F4 -Enter_Analysis_Name=\u8BF7\u8F93\u5165\u5206\u6790\u540D\u79F0\uFF01 -Enter_Login_Page_URL=\u8BF7\u8F93\u5165\u767B\u5F55\u9875\u9762url -Enter_Pwd_Ecp=\u8BF7\u8F93\u5165\u5BC6\u7801\u8FDB\u884C\u52A0\u5BC6 -Enter_Task_Name=\u8BF7\u8F93\u5165\u4EFB\u52A1\u540D\u79F0 -Env-Configure_Workspace=\u914D\u7F6E\u5DE5\u4F5C\u76EE\u5F55 -Env-Des1=\u8BF7\u9009\u62E9\u62A5\u8868\u670D\u52A1\u5668\u6240\u5728\u7684WEB-INF\u76EE\u5F55 -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-Invalid_User_and_Password=\u975E\u6CD5\u7684\u7528\u6237\u540D\u6216\u5BC6\u7801 -Env-Invalid_User_or_Password=\u7528\u6237\u540D\u6216\u5BC6\u7801\u9519\u8BEF -Env-Local_Directory=\u672C\u5730\u76EE\u5F55 -Env-Remote_Server=\u8FDC\u7A0B\u670D\u52A1\u5668 -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 -Err-The_number_is_larger_than_the_maximum_value=\u503C\u5927\u4E8E\u5141\u8BB8\u8F93\u5165\u7684\u6700\u5927\u503C -Err-The_number_is_less_than_the_minimum_value=\u503C\u5C0F\u4E8E\u5141\u8BB8\u8F93\u5165\u7684\u6700\u5C0F\u503C -Err-The_value_cannot_be_negative=\u4E0D\u80FD\u4E3A\u8D1F\u6570 -Err-The_value_must_be_integer=\u5FC5\u987B\u4E3A\u6574\u6570 -Err-The_value_must_be_number=\u503C\u5FC5\u987B\u662F\u4E00\u4E2A\u6570\u5B57 -Error=\u9519\u8BEF -ErrorHandlerTemplate=\u51FA\u9519\u6A21\u677F\u5B9A\u4E49 -Error_Cell=\u9519\u8BEF\u7684\u683C\u5B50 -Error_Input_Value=\u9519\u8BEF\u7684\u8F93\u5165\u503C -Error_Statement_Is=\u9519\u8BEF\u7684\u63CF\u8FF0\u4E3A -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 -Error_Template_File=\u6A21\u677F\u6587\u4EF6\u9519\u8BEF -Error_To_Create_Report_From=\u751F\u6210\u62A5\u8868\u65F6\u4EA7\u751F\u9519\u8BEF -Error_WidgetNameRepeat=\u5DF2\u7ECF\u5B58\u5728 -Error_With_Non_Template=\u975E\u6A21\u677F\u89E6\u53D1\u9519\u8BEF -Even=\u5076\u6570 -Event=\u4E8B\u4EF6 -Event-afterappend=\u6DFB\u52A0\u884C\u540E -Event-afterappletprint=Applet\u6253\u5370\u540E -Event-afterdelete=\u5220\u9664\u884C\u540E -Event-afteredit=\u7F16\u8F91\u540E -Event-afteremail=Email\u540E -Event-afterflashprint=Flash\u6253\u5370\u540E -Event-afterimportexcel=Excel\u5BFC\u5165\u540E -Event-afterinit=\u521D\u59CB\u5316\u540E -Event-afterload=\u52A0\u8F7D\u7ED3\u675F -Event-afterpdfprint=PDF\u6253\u5370\u540E -Event-aftersubmit=\u63D0\u4EA4\u540E -Event-aftertoexcel=Excel\u5BFC\u51FA\u540E -Event-aftertoimage=\u5BFC\u51FA\u56FE\u7247\u540E -Event-aftertopdf=PDF\u5BFC\u51FA\u540E -Event-aftertoword=Word\u5BFC\u51FA\u540E -Event-afterverify=\u6821\u9A8C\u540E -Event-afterverifywrite=\u6821\u9A8C\u63D0\u4EA4\u540E -Event-afterwrite=\u586B\u62A5\u540E -Event-beforeappend=\u6DFB\u52A0\u884C\u524D -Event-beforeappletprint=Applet\u6253\u5370\u524D -Event-beforedelete=\u5220\u9664\u884C\u524D -Event-beforeedit=\u7F16\u8F91\u524D -Event-beforeemail=Email\u524D -Event-beforeflashprint=Flash\u6253\u5370\u524D -Event-beforeimportexcel=Excel\u5BFC\u5165\u524D -Event-beforepdfprint=PDF\u6253\u5370\u524D -Event-beforesubmit=\u63D0\u4EA4\u524D -Event-beforetoexcel=Excel\u5BFC\u51FA\u524D -Event-beforetoimage=\u5BFC\u51FA\u56FE\u7247\u524D -Event-beforetopdf=PDF\u5BFC\u51FA\u524D -Event-beforetoword=Word\u5BFC\u51FA\u524D -Event-beforeverifywrite=\u6821\u9A8C\u63D0\u4EA4\u524D -Event-beforewrite=\u586B\u62A5\u524D -Event-callback=\u4E0A\u4F20\u540E -Event-change=\u503C\u6539\u53D8 -Event-click=\u70B9\u51FB -Event-nodeadd=\u8282\u70B9\u751F\u6210 -Event-startload=\u52A0\u8F7D\u8D77\u59CB -Event-statechange=\u72B6\u6001\u6539\u53D8 -Event-stopedit=\u7F16\u8F91\u7ED3\u675F -Event-success=\u6210\u529F -Event-unloadcheck=\u672A\u63D0\u4EA4\u79BB\u5F00 -Event-writefailure=\u586B\u62A5\u5931\u8D25 -Event-writesuccess=\u586B\u62A5\u6210\u529F -Event_Name=\u4E8B\u4EF6\u540D -Event_Name_Type=\u4E8B\u4EF6\u540D\u5B57\u548C\u7C7B\u578B -Event_Set=\u4E8B\u4EF6\u8BBE\u7F6E -Event_Type=\u4E8B\u4EF6\u7C7B\u578B -Every=\u6BCF -EveryInterval=\u6BCF\u9694 -Example=\u4F8B\u5982 -Examples=\u4F8B\u5B50 -Excel=Excel -Excel2007-not-support-pwd=Excel2007\u5BFC\u51FA\u4E0D\u652F\u6301\u5DE5\u4F5C\u7C3F\u52A0\u5BC6 -ExcelImportD-Excel_Source_File=Excel \u6E90\u6587\u4EF6\u5217\u8868 -ExcelImportD-Save=\u4FDD\u5B58\u5230\u76EE\u5F55 -ExcelImport_Write_Match_Error_Info=\u5339\u914D\u6A21\u677F\u5931\u8D25\uFF0C\u8BF7\u786E\u8BA4\u6587\u4EF6\u683C\u5F0F\u662F\u5426\u4E0E\u6A21\u677F\u4E00\u81F4\uFF01 -Excel_formula_error=\u5BFC\u51FA\u516C\u5F0F\u89E3\u6790\u9519\u8BEF -Exception_StackTrace=\u9519\u8BEF\u5F02\u5E38\u5806\u6808\u4FE1\u606F -Exchange_key=\u70B9\u51FB\u4E92\u6362\u5FEB\u6377\u952E -Execute=\u6267\u884C -ExecuteFrequency=\u6267\u884C\u9891\u7387 -ExecuteOneTime=\u6267\u884C\u4E00\u6B21 -ExecuteSimpleRepeat=\u7B80\u5355\u91CD\u590D\u6267\u884C -Execute_Error_info_forbid_formula=\u975E\u6CD5\u4F20\u5165\u53C2\u6570\uFF0C\u7981\u6B62\u4E3A\u516C\u5F0F -Execute_Report_by_Layer_Engine=\u7528\u884C\u5F0F\u7684\u5F15\u64CE\u6765\u6267\u884C\u62A5\u8868 -Executing_Report=\u62A5\u8868\u8BA1\u7B97\u4E2D -Exist_The_Same=\u5DF2\u7ECF\u6709\u540C\u540D\u53C2\u6570\uFF0C\u8BF7\u91CD\u65B0\u6DFB\u52A0 -Exit=\u9000\u51FA -Exit_Tutorial=\u9000\u51FA\u6559\u7A0B -Expand=\u6269\u5C55 -ExpandD-Add_Datasource=\u6DFB\u52A0\u6570\u636E\u6E90 -ExpandD-Cell_Expand_Attributes=\u6269\u5C55\u5C5E\u6027 -ExpandD-Child_Cell_Follows_Father_Cell_to_Expand=\u5B50\u683C\u8DDF\u968F\u7236\u683C\u6269\u5C55 -ExpandD-Data_Column=\u6570\u636E\u5217 -ExpandD-Define_Father_Cell=\u5B9A\u4E49\u7236\u683C -ExpandD-Expand_Attribute=\u6269\u5C55\u5C5E\u6027 -ExpandD-Expand_Cell=\u6269\u5C55\u5355\u5143\u683C -ExpandD-Expand_Direction=\u6269\u5C55\u65B9\u5411 -ExpandD-Expand_Type=\u6269\u5C55\u65B9\u5F0F -ExpandD-Expandable=\u53EF\u4F38\u5C55\u6027 -ExpandD-Extend=\u5411\u4E0B\u5EF6\u4F38 -ExpandD-Father_Cell=\u7236\u683C -ExpandD-Father_Cell_Setting=\u7236\u683C\u8BBE\u7F6E -ExpandD-Fill_Cell=\u8986\u76D6\u5355\u5143\u683C -ExpandD-Horizontal_Extendable=\u6A2A\u5411\u53EF\u4F38\u5C55 -ExpandD-Inherit_All_Condition=\u7EE7\u627F\u6240\u6709\u6761\u4EF6 -ExpandD-Insert_Cell=\u63D2\u5165\u5355\u5143\u683C -ExpandD-Left_Father_Cell=\u5DE6\u7236\u683C -ExpandD-Left_to_Right=\u4ECE\u5DE6\u5411\u53F3 -ExpandD-Not_Expand=\u4E0D\u6269\u5C55 -ExpandD-Push_Cell=\u540E\u63A8\u5355\u5143\u683C -ExpandD-Remove_Datasource=\u5220\u9664\u6570\u636E\u6E90 -ExpandD-Rename_Datasource=\u91CD\u547D\u540D\u6570\u636E\u6E90 -ExpandD-Repeat_Row_Height_Or_Column_Width=\u91CD\u590D\u884C\u9AD8\u6216\u8005\u5217\u5BBD -ExpandD-Rules_to_Find_Default_Father_Cell=\u9ED8\u8BA4\u7236\u683C\u5BFB\u627E\u89C4\u5219 -ExpandD-Select_Datasource=\u9009\u62E9\u6570\u636E\u6E90 -ExpandD-Sort_After_Expand=\u6269\u5C55\u540E -ExpandD-Top_to_Bottom=\u4ECE\u4E0A\u5411\u4E0B -ExpandD-Up_Father_Cell=\u4E0A\u7236\u683C -ExpandD-Vertical_Extendable=\u7EB5\u5411\u53EF\u4F38\u5C55 -Export=\u8F93\u51FA -Export-CSV=CSV\u683C\u5F0F(\u9017\u53F7\u5206\u9694) -Export-Excel=Excel\u683C\u5F0F -Export-Excel-LargeData-Page=\u5927\u6570\u636E\u91CF\u5206\u9875\u5BFC\u51FA -Export-Excel-LargeData-Page-Info=\u8BF7\u8010\u5FC3\u7B49\u5F85\u6587\u4EF6\u7684\u751F\u6210\uFF0C\u6240\u82B1\u8D39\u7684\u65F6\u95F4\u5C06\u89C6\u6570\u636E\u91CF\u7684\u5927\u5C0F\u800C\u5B9A\uFF0C\u5728\u6B64\u8FC7\u7A0B\u4E2D\u8BF7\u52FF\u5173\u95ED\u5F53\u524D\u9875\u9762\u6216\u6D4F\u89C8\u5668\u3002 -Export-Excel-Page=\u5206\u9875\u5BFC\u51FA -Export-Excel-PageToSheet=\u5206\u9875\u5206Sheet\u5BFC\u51FA -Export-Excel-Setting=Excel\u5BFC\u51FA\u65B9\u5F0F\u8BBE\u7F6E -Export-Excel-Simple=\u539F\u6837\u5BFC\u51FA -Export-Offline-Html=\u8F93\u51FA\u79BB\u7EBFhtml\u62A5\u8868 -Export-PDF=PDF\u683C\u5F0F -Export-SVG=SVG\u683C\u5F0F -Export-Template(embedded_data)=\u6A21\u677F(\u5185\u7F6E\u6570\u636E) -Export-Text=\u6587\u672C\u6587\u4EF6(\u5236\u8868\u7B26\u5206\u9694) -Export-Word=Word\u683C\u5F0F -ExportAndOutput=\u5BFC\u51FA -Export_Set=\u8F93\u51FA\u8BBE\u7F6E -Export_Setting=\u5BFC\u51FA\u914D\u7F6E -Export_failed=\u5BFC\u51FA\u5931\u8D25 -Exported_successfully=\u5BFC\u51FA\u6210\u529F -Exporting=\u6B63\u5728\u5BFC\u51FA -Expression=\u8868\u8FBE\u5F0F -ExpressionSet=\u8868\u8FBE\u5F0F\u8BBE\u5B9A -External=\u5916\u90E8 -ExtraRepeatTime=\u989D\u5916\u91CD\u590D\u6267\u884C\u6B21\u6570 -FORMLET=\u8BBF\u95EE\u4E0D\u540C\u8868\u5355\u7684\u8DEF\u5F84\u7684\u53C2\u6570 -FR-Action_Add=\u589E\u52A0 -FR-Action_Copy=\u590D\u5236 -FR-Action_Remove=\u5220\u9664 -FR-Action_Sort=\u6392\u5E8F -FR-Already_exist=\u5F53\u524D\u73AF\u5883\u5DF2\u5B58\u5728\: -FR-App-All_Auto=\u81EA\u52A8 -FR-App-All_Custom=\u81EA\u5B9A\u4E49 -FR-App-All_File=\u6587\u4EF6 -FR-App-All_Warning=\u8B66\u544A -FR-App-Export_png=PNG\u683C\u5F0F -FR-App-File_Lookup_range=\u67E5\u627E\u8303\u56F4 -FR-App-File_Message=\u4FE1\u606F -FR-App-Privilege_No=\u6CA1\u6709\u6743\u9650 -FR-App-Report_Template=\u62A5\u8868\u6A21\u7248 -FR-App-Template_Form=\u8868\u5355 -FR-App-Template_Report_Not_Exist=\u6240\u9009\u62A5\u8868\u4E0D\u5B58\u5728\! -FR-App-Template_Save=\u4FDD\u5B58 -FR-Base-EX-IP_Address_Overflow=IP\u5730\u5740\u6570\u91CF\u8D85\u8FC7\u9650\u5236 -FR-Base-Error_Cell=\u9519\u8BEF\u7684\u683C\u5B50 -FR-Base-Error_Statement_Is=\u9519\u8BEF\u7684\u63CF\u8FF0\u4E3A -FR-Base-Load_Resource_File=\u52A0\u8F7D\u914D\u7F6E\u6587\u4EF6 -FR-Base-NS_Cell_Formula=\u9519\u8BEF\u4EE3\u7801\:1203 \u9519\u8BEF\u7684\u516C\u5F0F\u53C2\u6570 -FR-Base-NS_register_ipFull=\u9519\u8BEF\u4EE3\u7801\:1115 \u7CFB\u7EDF\u5E76\u53D1\u6570\u5DF2\u6EE1 -FR-Base-Need_Purchase_Info=\u60A8\u9700\u8981\u4E00\u4E2A\u6CE8\u518C\u7801\u6216\u8005\u8BE5\u62A5\u8868\u670D\u52A1\u5668\u7684\u4F7F\u7528\u4EBA\u6570\u8D85\u8FC7\u4E86\u6CE8\u518C\u9650\u5236\u7684\u6570\u91CF -FR-Base-Song_TypeFace=\u5B8B\u4F53 -FR-Base-Time_Back_In_Time=\u65F6\u5149\u5012\u6D41 -FR-Base-Time_Day=\u5929 -FR-Base-Time_Hour=\u5C0F\u65F6 -FR-Base-Time_Milliseconds=\u6BEB\u79D2 -FR-Base-Time_Minute=\u5206 -FR-Base-Time_Second=\u79D2 -FR-Base-Time_Year=\u5E74 -FR-BaseFile-Cancel=\u53D6\u6D88 -FR-Base_Bottom=\u4E0B -FR-Base_Column=\u5217 -FR-Base_Columns=\u5217 -FR-Base_DecimalNumber_Out=\u5C0F\u6570\u4F4D\u8FC7\u591A -FR-Base_Error_Input_Value=\u9519\u8BEF\u7684\u8F93\u5165\u503C -FR-Base_Format=\u683C\u5F0F -FR-Base_Help=\u5E2E\u52A9 -FR-Base_Left=\u5DE6 -FR-Base_Margin=\u8FB9\u8DDD -FR-Base_NOT_NULL_Des=\u4E0D\u80FD\u4E3A\u7A7A -FR-Base_New-Title=\u65B0\u5EFA\u6807\u9898 -FR-Base_No=\u5426 -FR-Base_Not_Appendable=\u4E0D\u53EF\u6269\u5C55 -FR-Base_Not_exist=\u4E0D\u5B58\u5728 -FR-Base_RWA-Key=\u4E3B\u952E -FR-Base_Remove=\u5220\u9664 -FR-Base_Right=\u53F3 -FR-Base_Rows=\u884C -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-Base_Table=\u8868 -FR-Base_Top=\u4E0A -FR-Base_TurnOff=\u5173\u95ED -FR-Base_TurnOn=\u5F00\u542F -FR-Base_UnSignIn=\ \u672A\u767B\u5F55 -FR-Base_Value=\u503C -FR-Base_Yes=\u662F -FR-Base_is=\u662F -FR-Base_sure_remove_item=\u4F60\u786E\u5B9E\u51B3\u5B9A\u5220\u9664\u9009\u4E2D\u7684\u9879 -FR-Basic-Email_Format=\u683C\u5F0F -FR-Basic-Email_From=\u53D1\u4EF6\u4EBA -FR-Basic-Email_Message=\u5185\u5BB9 -FR-Basic-Email_Sending=\u6B63\u5728\u53D1\u9001\u90AE\u4EF6 -FR-Basic-Email_Subject=\u4E3B\u9898 -FR-Basic-File_All_File_Uploaded=\u6240\u6709\u6587\u4EF6\u5DF2\u4E0A\u4F20 -FR-Basic-File_Uping_File=\u6B63\u5728\u4E0A\u4F20\u6587\u4EF6 -FR-Basic-File_Upload=\u6587\u4EF6\u4E0A\u4F20 -FR-Basic-File_Uploaded_File=\u8BE5\u6587\u4EF6\u5DF2\u4E0A\u4F20 -FR-Basic_Calculating=\u5904\u7406\u4E2D -FR-Basic_Calendar=\u65E5\u5386 -FR-Basic_Cancel=\u53D6\u6D88 -FR-Basic_Choose_None=\u4E0D\u9009 -FR-Basic_Clear=\u6E05\u9664 -FR-Basic_Current=\u5F53\u524D -FR-Basic_Email=\u90AE\u4EF6 -FR-Basic_Email_Send_Error=\u8BF7\u68C0\u67E5\u90AE\u4EF6\u670D\u52A1\u5668\u914D\u7F6E\uFF0C\u786E\u8BA4SMTP\u90AE\u4EF6\u670D\u52A1\u5668\u4EE5\u53CA\u7528\u6237\u540D\u5BC6\u7801\u548C\u6536\u4EF6\u4EBA\u5730\u5740\u586B\u5199\u6B63\u786E\uFF0C\u5E76\u786E\u4FDD\u7F51\u7EDC\u7545\u901A\u3002 -FR-Basic_Email_Send_Failed=\u90AE\u4EF6\u53D1\u9001\u5931\u8D25 -FR-Basic_Email_Send_Success=\u90AE\u4EF6\u5DF2\u53D1\u9001 -FR-Basic_Fail_Location=\u5931\u8D25 -FR-Basic_Failed=\u5931\u8D25 -FR-Basic_File_Allow_To_Upload_Contains=\u5141\u8BB8\u4E0A\u4F20\u7684\u6587\u4EF6\u5305\u62EC -FR-Basic_File_Not_Allow_To_Upload=\u662F\u7981\u6B62\u4E0A\u4F20\u7684\u6587\u4EF6\u7C7B\u578B -FR-Basic_File_Should_Select_Excel_File=\u9700\u8981\u9009\u62E9\u4E00\u4E2AExcel\u6587\u4EF6\u6765\u6E90 -FR-Basic_File_Upload=\u6587\u4EF6\u4E0A\u4F20 -FR-Basic_Loading=\u6B63\u5728\u52A0\u8F7D -FR-Basic_NS_mail_config=\u9519\u8BEF\u4EE3\u7801\:1204 \u90AE\u4EF6\u914D\u7F6E\u53C2\u6570\u4E0D\u6B63\u786E -FR-Basic_Not_In_List=\u503C\u4E0D\u5728\u4E0B\u62C9\u5217\u8868\u5185 -FR-Basic_OK=\u786E\u5B9A -FR-Basic_Offline-Connect_Failed=\u65E0\u6CD5\u8FDE\u63A5\u5230\u670D\u52A1\u5668\u3002\u8BF7\u786E\u8BA4\u672C\u673A\u7684\u7F51\u7EDC\u8FDE\u63A5\u72B6\u51B5\u548C\u670D\u52A1\u5668\u7684\u5DE5\u4F5C\u72B6\u6001\u540E\u91CD\u8BD5\u3002 -FR-Basic_Report=\u62A5\u8868 -FR-Basic_Successfully=\u6210\u529F -FR-Basic_Time=\u65F6\u95F4 -FR-Basic_Today=\u4ECA\u5929 -FR-Basic_Week=\u5468 -FR-ConditionB_Operator=\u64CD\u4F5C\u7B26 -FR-Custom_styles_lost=\u81EA\u5B9A\u4E49\u6837\u5F0F\u5DF2\u4E22\u5931 -FR-Designer-All_MSBold=\u5FAE\u8F6F\u96C5\u9ED1 -FR-Designer-Basic_Cancel=\u53D6\u6D88 -FR-Designer-Basic_More_Color=\u66F4\u591A\u989C\u8272 -FR-Designer-Basic_Restart_Designer=\u91CD\u542F\u8BBE\u8BA1\u5668 -FR-Designer-Basic_Restart_Designer_Later=\u7A0D\u540E\u91CD\u542F -FR-Designer-FRFont_Bold=\u52A0\u7C97 -FR-Designer-FRFont_Family=\u540D\u5B57 -FR-Designer-FRFont_Foreground=\u989C\u8272 -FR-Designer-FRFont_Italic=\u503E\u659C -FR-Designer-FRFont_Line_Style=\u7EBF\u578B -FR-Designer-FRFont_Size=\u5927\u5C0F -FR-Designer-FRFont_Underline=\u4E0B\u5212\u7EBF -FR-Designer-Form-Please_Drag_ParaPane=\u8BF7\u62D6\u5165\u53C2\u6570\u9762\u677F -FR-Designer-Form-ToolBar_Chart=\u56FE\u8868 -FR-Designer-Form-ToolBar_Report=\u62A5\u8868 -FR-Designer-Form-ToolBar_Widget=\u63A7\u4EF6 -FR-Designer-Hyperlink_Name=\u540D\u5B57 -FR-Designer-Layout_Adaptive_Layout=\u81EA\u9002\u5E94\u5E03\u5C40 -FR-Designer-Plugin_Active=\u542F\u7528 -FR-Designer-Plugin_All_Plugins=\u5168\u90E8\u63D2\u4EF6 -FR-Designer-Plugin_Connect_Server_Error=\u65E0\u6CD5\u8FDE\u63A5\u63D2\u4EF6\u5546\u5E97\uFF0C\u8BF7\u7A0D\u5019\u518D\u8BD5 -FR-Designer-Plugin_Delete=\u5220\u9664 -FR-Designer-Plugin_Detecting_Update=\u6B63\u5728\u68C0\u6D4B\u66F4\u65B0 -FR-Designer-Plugin_Disable=\u7981\u7528 -FR-Designer-Plugin_Duplicate_ID=\u8BE5\u63D2\u4EF6\u548C\u5DF2\u5B89\u88C5\u7684\u63D2\u4EF6id\u91CD\u590D -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 -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 -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-Designer-Plugin_Illegal_Plugin_Zip=\u4E0D\u662F\u5408\u6CD5\u7684\u63D2\u4EF6\u5305 -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 -FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install=\u4E0D\u53EF\u8BC6\u522B\u7684\u63D2\u4EF6\uFF0C\u65E0\u6CD5\u5B89\u88C5 -FR-Designer-Plugin_Install=\u5B89\u88C5 -FR-Designer-Plugin_Install_Failed=\u63D2\u4EF6\u5B89\u88C5\u5931\u8D25 -FR-Designer-Plugin_Install_From_Local=\u4ECE\u672C\u5730\u6587\u4EF6\u5B89\u88C5 -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 -FR-Designer-Plugin_Installed=\u5DF2\u5B89\u88C5 -FR-Designer-Plugin_Load_Plugins_From_Server=\u6B63\u5728\u4ECE\u63D2\u4EF6\u5546\u5E97\u83B7\u53D6\u6570\u636E -FR-Designer-Plugin_Manager=\u63D2\u4EF6\u7BA1\u7406 -FR-Designer-Plugin_Plugin=\u63D2\u4EF6 -FR-Designer-Plugin_Plugin_Description=\u63D2\u4EF6\u63CF\u8FF0 -FR-Designer-Plugin_Read_Plugin_List_Error=\u53BB\u8BFB\u63D2\u4EF6\u5217\u8868\u65F6\u53D1\u751F\u9519\u8BEF -FR-Designer-Plugin_Search=\u641C\u7D22 -FR-Designer-Plugin_Uninstall_Successful=\u63D2\u4EF6\u5378\u8F7D\u6210\u529F\uFF0C\u8BF7\u91CD\u542F\u670D\u52A1\u5668 -FR-Designer-Plugin_Update=\u63D2\u4EF6\u66F4\u65B0 -FR-Designer-Plugin_Update_Successful=\u63D2\u4EF6\u5347\u7EA7\u6210\u529F\uFF0C\u91CD\u542F\u670D\u52A1\u5668\u4EE5\u751F\u6548 -FR-Designer-Plugin_Version_Is_Lower_Than_Current=\u5347\u7EA7\u5305\u7684\u63D2\u4EF6\u7248\u672C\u6CA1\u6709\u6BD4\u5F53\u524D\u7684\u9AD8 -FR-Designer-Plugin_Warning=\u8B66\u544A -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 -FR-Designer-StyleAlignment_Center=\u5C45\u4E2D -FR-Designer-StyleAlignment_Left=\u9760\u5DE6 -FR-Designer-StyleAlignment_Right=\u9760\u53F3 -FR-Designer-Undo_All_Authority_Operations=\u64A4\u9500\u524D\u4E00\u6B21\u6743\u9650\u7F16\u8F91\u7684\u6240\u6709\u64CD\u4F5C -FR-Designer-Widget-Style_Alpha=\u4E0D\u900F\u660E\u5EA6 -FR-Designer-Widget-Style_Body_Background=\u4E3B\u4F53\u80CC\u666F -FR-Designer-Widget-Style_Border_Color=\u8FB9\u6846\u989C\u8272 -FR-Designer-Widget-Style_Border_Line=\u8FB9\u6846\u7C97\u7EC6 -FR-Designer-Widget-Style_Common=\u666E\u901A -FR-Designer-Widget-Style_Frame=\u6846\u67B6 -FR-Designer-Widget-Style_Frame_Style=\u6846\u67B6\u6837\u5F0F -FR-Designer-Widget-Style_Preview=\u9884\u89C8 -FR-Designer-Widget-Style_Render_Style=\u6E32\u67D3\u98CE\u683C -FR-Designer-Widget-Style_Shadow=\u9634\u5F71 -FR-Designer-Widget-Style_Standard=\u6807\u51C6 -FR-Designer-Widget-Style_Title=\u6807\u9898 -FR-Designer-Widget-Style_Title_Background=\u6807\u9898\u80CC\u666F -FR-Designer-Widget-Style_Title_Content=\u6807\u9898\u5185\u5BB9 -FR-Designer-Widget-Style_Title_Format=\u6807\u9898\u683C\u5F0F -FR-Designer-Widget_Settings=\u63A7\u4EF6\u8BBE\u7F6E -FR-Designer-Widget_Style=\u6837\u5F0F -FR-Designer_Add=\u589E\u52A0 -FR-Designer_Alert=\u8B66\u544A -FR-Designer_Alignment-Style=\u5BF9\u9F50\u65B9\u5F0F -FR-Designer_Allow_Blank=\u5141\u8BB8\u4E3A\u7A7A -FR-Designer_Background=\u80CC\u666F -FR-Designer_Border=\u8FB9\u6846 -FR-Designer_ChartF-Transparency=\u900F\u660E -FR-Designer_Chart_Field_Name=\u5B57\u6BB5\u540D -FR-Designer_ComboBox=\u4E0B\u62C9\u6846 -FR-Designer_Component_Interval=\u7EC4\u4EF6\u95F4\u9694 -FR-Designer_Component_Scale=\u7EC4\u4EF6\u7F29\u653E -FR-Designer_ConditionB-AND=\u4E0E(AND) -FR-Designer_ConditionB-OR=\u6216(OR) -FR-Designer_ConditionB-Operator=\u64CD\u4F5C\u7B26 -FR-Designer_Connect_SQL_Cannot_Null=\u6570\u636E\u8FDE\u63A5\u548CSQL\u9762\u677F\u4E0D\u80FD\u4E3A\u7A7A -FR-Designer_Cover_None=\u5168\u4E0D\u8986\u76D6 -FR-Designer_Covered_All=\u5168\u90E8\u8986\u76D6 -FR-Designer_DS-Dictionary=\u6570\u636E\u5B57\u5178 -FR-Designer_Datasource-Stored_Procedure=\u5B58\u50A8\u8FC7\u7A0B -FR-Designer_Date=\u65E5\u671F -FR-Designer_Dimension=\u7EF4\u5EA6 -FR-Designer_DisplayNothingBeforeQuery=\u70B9\u51FB\u67E5\u8BE2\u524D\u4E0D\u663E\u793A\u62A5\u8868\u5185\u5BB9 -FR-Designer_Edit=\u7F16\u8F91 -FR-Designer_Email=\u90AE\u4EF6 -FR-Designer_Env-Des1=\u8BF7\u9009\u62E9\u62A5\u8868\u670D\u52A1\u5668\u6240\u5728\u7684WEB-INF\u76EE\u5F55 -FR-Designer_Error=\u9519\u8BEF -FR-Designer_FS_Close_Other_Templates=\u5173\u95ED\u5176\u4ED6\u6A21\u7248 -FR-Designer_File=\u6587\u4EF6 -FR-Designer_Filter_Conditions=\u8FC7\u6EE4\u6761\u4EF6 -FR-Designer_Font=\u5B57\u4F53 -FR-Designer_Foreground=\u524D\u666F -FR-Designer_Form-Button=\u6309\u94AE -FR-Designer_Form-CheckBox=\u590D\u9009\u6846 -FR-Designer_Form-CheckBoxGroup=\u590D\u9009\u6846\u7EC4 -FR-Designer_Form-ComboCheckBox=\u4E0B\u62C9\u590D\u9009\u6846 -FR-Designer_Form-Iframe=\u7F51\u9875\u6846 -FR-Designer_Form-List=\u5217\u8868 -FR-Designer_Form-Password=\u5BC6\u7801 -FR-Designer_Form-RadioGroup=\u5355\u9009\u6309\u94AE\u7EC4 -FR-Designer_Form-TextArea=\u6587\u672C\u57DF -FR-Designer_Form-Widget_Name=\u63A7\u4EF6\u540D -FR-Designer_Height=\u9AD8 -FR-Designer_HyperLink_Must_Alone_Reset=\u591A\u4E2A\u8D85\u94FE -FR-Designer_Hyperlink=\u8D85\u7EA7\u94FE\u63A5 -FR-Designer_Indent-Pixel=\u50CF\u7D20 -FR-Designer_Input_Rule=\u586B\u5199\u89C4\u5219 -FR-Designer_Is_Share_DBTableData=\u5171\u4EAB\u6570\u636E\u96C6 -FR-Designer_JavaScript=JavaScript\u811A\u672C -FR-Designer_Layout-Padding=\u5185\u8FB9\u8DDD -FR-Designer_Message=\u4FE1\u606F -FR-Designer_Modify=\u4FEE\u6539 -FR-Designer_Month=\u6708 -FR-Designer_New_Value=\u65B0\u503C -FR-Designer_No=\u5426 -FR-Designer_No-Privilege=\u6CA1\u6709\u6743\u9650 -FR-Designer_Number=\u6570\u5B57 -FR-Designer_PageSetup-Vertically=\u5782\u76F4\u5C45\u4E2D -FR-Designer_Pagination=\u5206\u9875 -FR-Designer_Parameter=\u53C2\u6570 -FR-Designer_Please_input_with_right_format=\u8BF7\u7528\u6B63\u786E\u7684\u683C\u5F0F\u8F93\u5165 -FR-Designer_Plugin_Normal_Update=\u66F4\u65B0 -FR-Designer_Plugin_Normal_Update_From_Local=\u4ECE\u672C\u5730\u6587\u4EF6\u66F4\u65B0 -FR-Designer_Present=\u5F62\u6001 -FR-Designer_Quarter=\u5B63\u5EA6 -FR-Designer_Query=\u67E5\u8BE2 -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 -FR-Designer_Record-Number=\u8BB0\u5F55\u6570 -FR-Designer_Refresh=\u5237\u65B0 -FR-Designer_Remove=\u5220\u9664 -FR-Designer_ReportColumns-Columns=\u5217\u5206\u680F -FR-Designer_ReportColumns-Repeat_Column=\u590D\u5236\u5217\u5E8F\u5217 -FR-Designer_ReportColumns-Repeat_Row=\u590D\u5236\u884C\u5E8F\u5217 -FR-Designer_Row-Axis=\u884C\u8F74 -FR-Designer_Sche-Week=\u661F\u671F -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 -FR-Designer_Set_Submit_Condition=\u8BBE\u7F6E\u63D0\u4EA4\u6761\u4EF6 -FR-Designer_Set_Submit_Event=\u8BBE\u7F6E\u63D0\u4EA4\u4E8B\u4EF6 -FR-Designer_Show_Blank_Column=\u8865\u5145\u7A7A\u767D\u5217 -FR-Designer_Show_Blank_Row=\u8865\u5145\u7A7A\u767D\u884C -FR-Designer_Song_TypeFace=\u5B8B\u4F53 -FR-Designer_Style=\u6837\u5F0F -FR-Designer_StyleAlignment-Wrap_Text=\u81EA\u52A8\u6362\u884C -FR-Designer_Sytle-FRFont=\u5B57\u4F53 -FR-Designer_Sytle-Indentation=\u7F29\u8FDB -FR-Designer_Text=\u6587\u672C -FR-Designer_Thanks-To=\u9E23\u8C22 -FR-Designer_Tooltips=\u63D0\u793A -FR-Designer_Tree-ComboBox=\u4E0B\u62C9\u6811 -FR-Designer_Undo=\u64A4\u9500 -FR-Designer_Unit_CM=\u5398\u7C73 -FR-Designer_Unit_INCH=\u82F1\u5BF8 -FR-Designer_Unit_MM=\u6BEB\u7C73 -FR-Designer_Unit_PT=\u78C5 -FR-Designer_Utils-Available_Columns=\u53EF\u9009\u5217 -FR-Designer_Utils-Move_Down=\u4E0B\u79FB -FR-Designer_Utils-Move_Up=\u4E0A\u79FB -FR-Designer_Values-Editor=\u503C\u7F16\u8F91\u5668 -FR-Designer_Verify-Message=\u9519\u8BEF\u4FE1\u606F -FR-Designer_WaterMark=\u6C34\u5370 -FR-Designer_Widget=\u63A7\u4EF6 -FR-Designer_WidgetDisplyPosition=\u63A7\u4EF6\u663E\u793A\u4F4D\u7F6E -FR-Designer_Width=\u5BBD -FR-Designer_WorkBook=\u5DE5\u4F5C\u7C3F -FR-Designer_Year=\u5E74 -FR-Designer_Yes=\u662F -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-Export_Excel=Excel\u683C\u5F0F -FR-Export_PDF=PDF\u683C\u5F0F -FR-Export_SVG=SVG\u683C\u5F0F -FR-Export_Word=Word\u683C\u5F0F -FR-Hyperlink_ChartHyperlink=\u56FE\u8868\u8D85\u94FE -FR-Hyperlink_Chart_Cell=\u56FE\u8868\u8D85\u94FE-\u8054\u52A8\u5355\u5143\u683C -FR-Hyperlink_Chart_Float=\u56FE\u8868\u8D85\u94FE-\u8054\u52A8\u60AC\u6D6E\u5143\u7D20 -FR-Hyperlink_Dialog=\u5BF9\u8BDD\u6846 -FR-Hyperlink_Please_Select_Reportlet=\u8BF7\u9009\u62E9\u7F51\u7EDC\u62A5\u8868 -FR-Hyperlink_Reportlet=\u7F51\u7EDC\u62A5\u8868 -FR-Import-Export_CSV=CSV\u683C\u5F0F(\u9017\u53F7\u5206\u9694) -FR-Import-Export_PDF=PDF\u683C\u5F0F -FR-Import-Export_SVG=SVG\u683C\u5F0F -FR-Import-Export_Text=\u6587\u672C\u6587\u4EF6(\u5236\u8868\u7B26\u5206\u9694) -FR-Import-Export_Word=Word\u683C\u5F0F -FR-Layout_Padding=\u5185\u8FB9\u8DDD -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 -FR-Menu-Server_Chart_PreStyle=\u56FE\u8868\u9884\u5B9A\u4E49\u914D\u8272 -FR-Module_Designer=\u8BBE\u8BA1\u5668\u6A21\u5757 -FR-Module_Engine=\u5F15\u64CE\u6A21\u5757 -FR-Please_Rename=\u8BF7\u91CD\u547D\u540D -FR-Remote_Connect2Server_Again=\u8FDE\u63A5\u4E2D\u65AD\uFF0C\u662F\u5426\u91CD\u65B0\u8FDE\u63A5\u670D\u52A1\u5668? -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 -FR-Remote_Re_Connect_to_Server=\u670D\u52A1\u5668\u5DF2\u5173\u95ED\uFF0C\u662F\u5426\u91CD\u65B0\u8FDE\u63A5\u670D\u52A1\u5668? -FR-Report-Write_Attributes_Msg=\u6CA1\u6709\u8BBE\u7F6E\u586B\u62A5\u5C5E\u6027 -FR-Report-Write_Offline-Verify_ToolTips=\u63D0\u4EA4\u6821\u9A8C\u4E2D\u5305\u542B\u79BB\u7EBF\u72B6\u6001\u65E0\u6CD5\u6267\u884C\u7684\u6821\u9A8C\u89C4\u5219\uFF0C\u7EE7\u7EED\u5C06\u5FFD\u7565\u8FD9\u4E9B\u6821\u9A8C\u89C4\u5219\uFF0C\u4F46\u662F\u5728\u8054\u7F51\u63D0\u4EA4\u65F6\u4F1A\u88AB\u91CD\u65B0\u6267\u884C\uFF0C\u662F\u5426\u7EE7\u7EED\u6821\u9A8C\uFF1F -FR-Report_Invalid_Cell=\u65E0\u6548\u7684\u5355\u5143\u683C -FR-Server-All_Error=\u9519\u8BEF -FR-Server-Design_template_unopened=\u65E0\u6CD5\u6253\u5F00\u6A21\u7248 -FR-Server_Embedded_Server_Start=\u5167\u7F6E\u7684\u670D\u52A1\u5668-\u6253\u5F00 -FR-Server_Embedded_Server_Stop=\u5167\u7F6E\u7684\u670D\u52A1\u5668-\u505C\u6B62 -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 -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-Template-Path_chooseRightPath=\u8BF7\u9009\u62E9\u6B63\u786E\u8DEF\u5F84 -FR-Utils-App_AllFiles=\u6240\u6709\u6587\u4EF6 -FR-Utils-New_Folder=\u65B0\u5EFA\u6587\u4EF6\u5939 -FR-Utils-Please_Input_a_New_Name=\u8BF7\u8F93\u5165\u65B0\u7684\u540D\u5B57 -FR-Utils-Would_you_like_to_cover_the_current_file=\u4F60\u5E0C\u671B\u8986\u76D6\u5F53\u524D\u6587\u4EF6\u5417 -FR-Utils_Background=\u80CC\u666F -FR-Utils_Label=\u6807\u7B7E -FR-Utils_Submit=\u63D0\u4EA4 -FR-Utils_WorkBook=\u5DE5\u4F5C\u7C3F -FR-Widget_Message_Letter_Space=8 -FR-Widget_Mobile_Table=\u79FB\u52A8\u7AEF\u63A7\u4EF6\u5217\u8868 -FR-Widget_Mobile_Terminal=\u79FB\u52A8\u7AEF -FR-Widget_Mobile_Tree=\u63A7\u4EF6\u6811 -FR-Widget_Tree_And_Table=\u63A7\u4EF6\u6811\u548C\u63A7\u4EF6\u8868 -FRFont=\u5B57\u4F53 -FRFont-Effects=\u7279\u6B8A\u6548\u679C -FRFont-Family=\u540D\u5B57 -FRFont-Foreground=\u989C\u8272 -FRFont-Pick_A_Color=\u9009\u62E9\u989C\u8272 -FRFont-Shadow=\u9634\u5F71 -FRFont-Size=\u5927\u5C0F -FRFont-Strikethrough=\u5220\u9664\u7EBF -FRFont-Style=\u5B57\u5F62 -FRFont-Subscript=\u4E0B\u6807 -FRFont-Superscript=\u4E0A\u6807 -FRFont-Underline=\u4E0B\u5212\u7EBF -FRFont-bold=\u52A0\u7C97 -FRFont-bolditalic=\u52A0\u7C97\u503E\u659C -FRFont-italic=\u503E\u659C -FRFont-plain=\u5E38\u89C4 -FS_BI=\u51B3\u7B56\u5E73\u53F0 -FS_Close_Other_Templates=\u5173\u95ED\u5176\u4ED6\u6A21\u677F -FS_End_Date=\u7ED3\u675F\u65E5\u671F -FS_End_Time=\u7ED3\u675F\u65F6\u95F4 -FS_Name=\u6570\u636E\u51B3\u7B56\u7CFB\u7EDF -FS_New_Password=\u65B0\u5BC6\u7801 -FS_Old_Password=\u65E7\u5BC6\u7801 -FS_Report_Type=\u7C7B\u578B -FS_Start_Date=\u8D77\u59CB\u65E5\u671F -FS_Start_Time=\u5F00\u59CB\u65F6\u95F4 -FS_Task_End=\u5185\u622A\u6B62 -FS_Task_Start=\u4EFB\u52A1\u5F00\u59CB\u540E -Face-Outlook_Structure=Outlook\u7ED3\u6784 -Face_View=\u67E5\u770B -Face_Write=\u586B\u62A5 -FailAndRestart=\u4EFB\u52A1\u91CD\u542F -FailPass_ImproveYourVersion=\u5F53\u524D\u7248\u672C\u65E0\u6B64\u529F\u80FD\uFF0C\u8BF7\u4F7F\u7528\u9AD8\u7EA7\u7248\u672C\u3002 -Fail_To_Select_A_Data_Field=\u9009\u53D6\u6570\u636E\u5B57\u6BB5\u5931\u8D25 -Failed=\u5931\u8D25 -Father=\u7236 -Favorite=\u6536\u85CF\u5939 -Feature_Name=\u529F\u80FD\u540D\u79F0\uFF1A -February=\u4E8C\u6708 -Feburary= -Female=\u5973 -Field=\u5B57\u6BB5 -FieldBinding=\u7ED1\u5B9A\u5B57\u6BB5 -Field_Filtration=\u5B57\u6BB5\u8FC7\u6EE4 -File=\u6587\u4EF6 -File-Allow_Upload_Files=\u5141\u8BB8\u4E0A\u4F20\u6587\u4EF6\u7C7B\u578B -File-Auto_Upload=\u81EA\u52A8\u4E0A\u4F20 -File-Create-Failed=\u6587\u4EF6\u521B\u5EFA\u5931\u8D25 -File-Default_URL=\u9ED8\u8BA4\u6587\u4EF6\u4E0A\u4F20\u5730\u5740 -File-Denied_Upload_Files=\u7981\u6B62\u4E0A\u4F20\u6587\u4EF6\u7C7B\u578B -File-Des=\u9ED8\u8BA4\u5730\u5740\uFF0C\u4E00\u822C\u65E0\u9700\u6539\u53D8\uFF0C\u53EF\u4EE5\u4F7F\u7528\u4E0B\u62C9\u7684\u201C\u5B57\u7B26\u4E32\u201D\u9009\u9879\u6765\u8F93\u5165\u4F60\u60F3\u6307\u5B9A\u7684\u6587\u4EF6\u4E0A\u4F20\u5730\u5740 -File-File_Size_Limit=\u6587\u4EF6\u5927\u5C0F\u9650\u5236 -File-File_Too_Big=\u6587\u4EF6\u8FC7\u5927\uFF0C\u4E0A\u9650\u4E3A -File-address=\u6587\u4EF6\u5730\u5740 -File-tree=\u6587\u4EF6\u6811 -FileNameForDownload=\u4E0B\u8F7D\u6587\u4EF6\u540D -File_Description=\u6587\u4EF6\u63CF\u8FF0 -File_Display_Name=\u6587\u4EF6\u663E\u793A\u540D -File_Error=\u6587\u4EF6\u89E3\u6790\u9519\u8BEF -File_Is_Being_Used=\u6587\u4EF6\u6B63\u5728\u4F7F\u7528 -File_Upload=\u6587\u4EF6\u4E0A\u4F20 -Filed=\u533A\u57DF -Fill_blank_Data=\u8865\u5145\u7A7A\u767D\u6570\u636E -Filter=\u8FC7\u6EE4 -Filter_Conditions=\u8FC7\u6EE4\u6761\u4EF6 -Finally=\u6700\u540E -FineReport_Embbeded_Report_Server=FineReport\u7684\u5185\u7F6E\u670D\u52A1\u5668 -Finish=\u5B8C\u6210 -Finish_Export=\u5BFC\u51FA\u5B8C\u6BD5 -Finish_Save=\u4FDD\u5B58\u5B8C\u6BD5 -First=\u9996\u9875 -FirstRow_IS_ColumnName=\u7B2C\u4E00\u884C\u5305\u542B\u5217\u6807\u9898 -First_Of_Week=\u4E3A\u5468\u8D77\u59CB -Flash/PdfInstallSet_Message=\u6587\u4EF6\u4E0D\u80FD\u5728\u2018WEB-INF\u2019\u6587\u4EF6\u5939\u4E0B\uFF0C\u4E5F\u4E0D\u80FD\u5728web\u5E94\u7528\u76EE\u5F55\u5916\u3002 -Flash_Print=Flash\u6253\u5370 -Float=\u6D6E\u70B9\u578B -Float_Element_Name=\u60AC\u6D6E\u5143\u7D20\u540D\u79F0 -FlowLayout=\u6D41\u5F0F\u5E03\u5C40 -FlowLayout-Center=\u4E2D\u95F4 -FlowLayout-Left=\u5DE6 -FlowLayout-Right=\u53F3 -Folder=\u76EE\u5F55 -Follow=\u9644\u5C5E -Following_parameters_are_not_generated=\u4EE5\u4E0B\u53C2\u6570\u672A\u751F\u6210 -Fomr-NameWidget-Name=\u9884\u5B9A\u4E49\u63A7\u4EF6\u540D\u79F0 -Font\ Style\ Elements=\u5B57\u4F53\u6837\u5F0F\u5143\u7D20 -For_Help_press\ F1=\u5BFB\u6C42\u5E2E\u52A9\uFF0C\u8BF7\u6309F1 -Forbid_Drag_into_Adapt_Pane=\u8BE5\u5BF9\u8C61\u4E0D\u5141\u8BB8\u62D6\u5165\u8868\u5355\u4E3B\u4F53 -Forbid_Drag_into_Para_Pane=\u8BE5\u5BF9\u8C61\u4E0D\u80FD\u62D6\u5165\u53C2\u6570\u9762\u677F -Forecast=\u9884\u6D4B -Foreground=\u524D\u666F -Form=\u8868\u5355 -Form-Action=\u64CD\u4F5C -Form-All_Files=\u5168\u90E8\u6587\u4EF6 -Form-Allow_CustomData=\u5141\u8BB8\u81EA\u5B9A\u4E49\u503C -Form-Allow_Edit=\u5141\u8BB8\u76F4\u63A5\u7F16\u8F91 -Form-Basic_Properties=\u57FA\u672C\u5C5E\u6027 -Form-Bottom_Align=\u5E95\u8FB9\u5BF9\u9F50 -Form-Button=\u6309\u94AE -Form-Center_Align=\u4E2D\u95F4\u5BF9\u9F50 -Form-Change_Widget_Name=\u66F4\u6539\u63A7\u4EF6\u540D -Form-Change_Widget_Name_Discription=\u8BF7\u8F93\u5165\u4E00\u4E2A\u65B0\u7684\u63A7\u4EF6\u540D -Form-CheckBox=\u590D\u9009\u6846 -Form-CheckBoxGroup=\u590D\u9009\u6846\u7EC4 -Form-Colon=\u5192\u53F7 -Form-ComboBox=\u4E0B\u62C9\u6846 -Form-ComboCheckBox=\u4E0B\u62C9\u590D\u9009\u6846 -Form-Comma=\u9017\u53F7 -Form-Component_Bounds=\u63A7\u4EF6\u8FB9\u754C -Form-Copy=\u590D\u5236 -Form-Cut=\u526A\u5207 -Form-DataTable=\u6570\u636E\u8868 -Form-Delete=\u5220\u9664 -Form-Delimiter=\u5206\u9694\u7B26 -Form-Design_Height=\u8BBE\u8BA1\u9AD8\u5EA6 -Form-Design_Size=\u8BBE\u8BA1\u5C3A\u5BF8 -Form-Desin_Width=\u8BBE\u8BA1\u5BBD\u5EA6 -Form-Double_quotes=\u53CC\u5F15\u53F7 -Form-EC-WebAttr-toolbar=\u662F\u5426\u9700\u8981\u8868\u5355\u5DE5\u5177\u680F -Form-EC-toolbar=\u62A5\u8868\u5757\u5DE5\u5177\u680F -Form-EC_toolbar=\u62A5\u8868\u5757\u5DE5\u5177\u680F -Form-Edit_Text=\u7F16\u8F91\u6587\u672C -Form-Editing_Listeners=\u4E8B\u4EF6\u7F16\u8F91 -Form-Empty=\u7A7A\u503C -Form-Events=\u4E8B\u4EF6 -Form-Form_Definition=\u8868\u5355\u5B9A\u4E49 -Form-Form_Element=\u8868\u5355\u5143\u7D20 -Form-Height_Des=\u8BBE\u8BA1\u8868\u5355\u8BBE\u8BA1\u7A97\u53E3\u7684\u9AD8\u5EA6 -Form-Hierarchy_Tree=\u7ED3\u6784\u6811 -Form-Hierarchy_Tree_Last=\u4E0A\u4E00\u4E2A -Form-Hierarchy_Tree_Next=\u4E0B\u4E00\u4E2A -Form-Iframe=\u7F51\u9875\u6846 -Form-Layout=\u5E03\u5C40 -Form-Left_Align=\u5DE6\u5BF9\u9F50 -Form-List=\u5217\u8868 -Form-Method=\u65B9\u6CD5 -Form-Middle_Align=\u4E2D\u7EBF\u5BF9\u9F50 -Form-NameWidget-Invalid=\u9884\u5B9A\u4E49\u63A7\u4EF6\u7F3A\u5931 -Form-Name_For_Empty=\u7A7A\u503C\u5C06\u663E\u793A\u4E3A -Form-Newline=\u6362\u884C\u7B26 -Form-No_Selected_Will_Be=\u672A\u9009\u4E2D\u5C06\u628A\u503C\u4F5C\u4E3A -Form-NullLayout=\u7EDD\u5BF9\u5B9A\u4F4D -Form-Object=\u8868\u5355\u5BF9\u8C61\: -Form-Password=\u5BC6\u7801 -Form-Paste=\u7C98\u8D34 -Form-Please_Select_A_Kind_Of_Form_Container=\u8BF7\u9009\u62E9\u4E00\u79CD\u8868\u5355\u5BB9\u5668 -Form-Properties=\u5C5E\u6027 -Form-RadioButton=\u5355\u9009\u6309\u94AE -Form-RadioGroup=\u5355\u9009\u6309\u94AE\u7EC4 -Form-Remove_Repeat=\u53BB\u6389\u91CD\u590D\u9879 -Form-Remove_Repeat_Data=\u53BB\u9664\u91CD\u590D\u6570\u636E -Form-Report=\u62A5\u8868\u5757 -Form-Reset=\u91CD\u7F6E -Form-Right_Align=\u53F3\u5BF9\u9F50 -Form-RoleTableTree=\u89D2\u8272\u8868\u683C\u6811 -Form-Same_Height=\u7B49\u9AD8 -Form-Same_Height_Des=\u5C06\u9009\u4E2D\u7684\u63A7\u4EF6\u7684\u9AD8\u5EA6\u8BBE\u7F6E\u4E3A\u548C\u7B2C\u4E00\u4E2A\u9009\u4E2D\u7684\u63A7\u4EF6\u4E00\u6837\u7684\u9AD8\u5EA6 -Form-Same_Width=\u7B49\u5BBD -Form-Semicolon=\u5206\u53F7 -Form-Single_quote=\u5355\u5F15\u53F7 -Form-Split_Horizontal=\u6C34\u5E73\u5206\u5272 -Form-Split_Pane=\u4E8C\u5206\u9762\u677F -Form-Split_Vertical=\u5782\u76F4\u5206\u5272 -Form-SupportTag=\u6807\u7B7E\u5F62\u5F0F\u663E\u793A -Form-TableTree=\u8868\u683C\u6811 -Form-Target=\u76EE\u6807 -Form-TextArea=\u6587\u672C\u57DF -Form-Text_File=\u6587\u672C\u6587\u4EF6 -Form-ToolBar=\u8868\u5355\u5DE5\u5177\u680F -Form-Top_Align=\u9876\u90E8\u5BF9\u9F50 -Form-Url=\u5730\u5740 -Form-View_Tree=\u89C6\u56FE\u6811 -Form-Widget_Name=\u63A7\u4EF6\u540D -Form-Widget_Property=\u5C5E\u6027\u540D -Form-Widget_Property_Table=\u5C5E\u6027\u8868 -Form-Widget_Property_Value=\u5C5E\u6027\u503C -Form-Widget_Scrollable=\u6EDA\u52A8\u6761 -Form-Width_Des=\u8BBE\u7F6E\u8868\u5355\u8BBE\u8BA1\u7A97\u53E3\u7684\u5BBD\u5EA6 -Format=\u683C\u5F0F -Format-Error=\u8F93\u5165\u7684\u503C\u683C\u5F0F\u4E0D\u6B63\u786E -Format_explan=\u683C\u5F0F\u8BF4\u660E -Formula=\u516C\u5F0F -FormulaD-All=\u5168\u90E8\u51FD\u6570 -FormulaD-Array=\u6570\u7EC4\u51FD\u6570 -FormulaD-Check_Valid=\u68C0\u67E5\u5408\u6CD5\u6027 -FormulaD-Custom_Function=\u81EA\u5B9A\u4E49\u51FD\u6570 -FormulaD-Data_Fields=\u6570\u636E\u9879 -FormulaD-Date_&_Time=\u65E5\u671F\u548C\u65F6\u95F4\u51FD\u6570 -FormulaD-Define_Execute_Script=\u5B9A\u4E49\u8FD0\u884C\u671F\u811A\u672C -FormulaD-Formula_Definition=\u516C\u5F0F\u5B9A\u4E49 -FormulaD-Function_category=\u51FD\u6570\u7C7B\u578B -FormulaD-Function_name=\u51FD\u6570\u540D -FormulaD-Functions=\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 -FormulaD-Invalid_Formula=\u975E\u6CD5\u7684\u516C\u5F0F -FormulaD-Invalid_SQL=\u975E\u6CD5\u7684SQL\u8BED\u53E5 -FormulaD-Logical=\u903B\u8F91\u51FD\u6570 -FormulaD-Math_&_Trig=\u6570\u5B66\u548C\u4E09\u89D2\u51FD\u6570 -FormulaD-Most_Recently_Used=\u5E38\u7528\u51FD\u6570 -FormulaD-Operations=\u64CD\u4F5C\u7B26 -FormulaD-Other=\u5176\u5B83\u51FD\u6570 -FormulaD-Report=\u62A5\u8868\u51FD\u6570 -FormulaD-Reserve_when_bs-write_or_analy=\u586B\u62A5/\u5206\u6790\u65F6\uFF0C\u4FDD\u7559\u516C\u5F0F\u7528\u4E8E\u8BA1\u7B97 -FormulaD-Reserve_when_export-edit_result=\u5BFC\u51FA/\u7F16\u8F91\u7ED3\u679C\u65F6,\u4FDD\u7559\u516C\u5F0F -FormulaD-Script=\u811A\u672C -FormulaD-Text=\u6587\u672C\u51FD\u6570 -FormulaD-Valid_Formula=\u5408\u6CD5\u7684\u516C\u5F0F -FormulaD-Valid_Script=\u5408\u6CD5\u7684\u811A\u672C -Formula_Condition=\u516C\u5F0F\u6761\u4EF6 -Formula_Description=\u516C\u5F0F\u8BF4\u660E -Formula_Dictionary_Display=\u5BF9\u4E8E\u4E0A\u9762\u5B9E\u9645\u503C\u8303\u56F4\u5185\u7684\u6BCF\u4E2A\u503C($$$)\uFF0C\u5176\u663E\u793A\u503C\u4E3A -Formula_Dictionary_Display_Example=\u5B9E\u9645\u503C\u8303\u56F4\u4E3A \=range(100), \u5BF9\u5B9E\u9645\u503C\u8303\u56F4\u5185\u7684\u6BCF\u4E2A$$$\u7684\u663E\u793A\u516C\u5F0F\u4E3A \=0 - $$$\uFF0C\n\u5219\u6700\u7EC8\u7684\u7ED3\u679C\u5B9E\u9645\u503C\u4E3A1, 2, ..., 100, \u663E\u793A\u503C\u4E3A-1, -2, ... , -100\u3002 -Formula_Dictionary_Display_Examples=\ \u5B9E\u9645\u503C\u8303\u56F4\u4E3A \=range(100),\u5BF9\u5B9E\u9645\u503C\u8303\u56F4\n \u5185\u7684\u6BCF\u4E2A$$$\u7684\u663E\u793A\u516C\u5F0F\u4E3A \=0 - $$$\uFF0C\n \u5219\u6700\u7EC8\u7684\u7ED3\u679C\u5B9E\u9645\u503C\u4E3A1, 2, ..., 100, \n \u663E\u793A\u503C\u4E3A-1, -2, ... , -100\u3002 -Formula_Dictionary_Display_Examples_Html=\u5B9E\u9645\u503C\u8303\u56F4\u4E3A \=range(100),\u5BF9\u5B9E\u9645\u503C\u8303\u56F4\u5185\u7684\u6BCF\u4E2A$$$\u7684\u663E\u793A\u516C\u5F0F\u4E3A \=0 - $$$\uFF0C
\u5219\u6700\u7EC8\u7684\u7ED3\u679C\u5B9E\u9645\u503C\u4E3A1, 2, ..., 100,\u663E\u793A\u503C\u4E3A-1, -2, ... , -100\u3002
  -Formula_Editor=\u516C\u5F0F\u7F16\u8F91\u5668 -Formula_Tips=\u516C\u5F0F\u5FC5\u987B\u4EE5"\="\u53F7\u5F00\u5934\uFF01 -Forum=\u8BBA\u575B -Frame=\u6846\u67B6 -FrameStyle=\u6846\u67B6\u6837\u5F0F -Free=\u514D\u8D39 -Free_Report_Wizard=\u81EA\u7531\u62A5\u8868\u5411\u5BFC -Freeze-Page_Column=\u51BB\u7ED3\u91CD\u590D\u6807\u9898\u7ED3\u675F\u5217 -Freeze-Page_Row=\u51BB\u7ED3\u91CD\u590D\u6807\u9898\u7ED3\u675F\u884C -Freeze-Use_In_Write=\u4F7F\u7528\u586B\u62A5\u51BB\u7ED3\u884C\u5217 -FreezeWarning1=\u521D\u59CB\u503C\u4E0D\u5927\u4E8E\u5C3E\u503C -FreezeWarning2=\u8BF7\u8F93\u5165\u6B63\u6574\u6570\uFF01 -FreezeWarning3=\u8BF7\u8F93\u5165A-Z\u7684\u5B57\u6BCD -FrequencySet=\u660E\u7EC6\u9891\u7387\u8BBE\u7F6E -Fri=\u4E94 -From=\u4ECE\u7B2C -Frozen=\u51BB\u7ED3 -Fuction-The_compiled_class_should_be_copied_to=\u5E94\u5C06\u7F16\u8BD1\u540E\u7684\u7C7B\u6587\u4EF6\u62F7\u8D1D\u5230 -Fujian=\u798F\u5EFA\u7701 -Function=\u51FD\u6570 -Function-Are_you_sure_to_delete_selected_function=\u4F60\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u7684\u51FD\u6570\u5417 -Function-Choose_Function_Class=\u9009\u62E9\u51FD\u6570\u7C7B -Function-Content_Function=\u5185\u5BB9\u51FD\u6570 -Function-Function_Class_Name=\u51FD\u6570\u7C7B\u540D -Function-Function_File=\u51FD\u6570\u6587\u4EF6 -Function-Function_Manager=\u51FD\u6570\u7BA1\u7406\u5668 -Function-Function_Name_is_Null=\u51FD\u6570\u540D\u4E0D\u80FD\u4E3A\u7A7A -Function-Function_has_Existed=\u51FD\u6570\u5DF2\u7ECF\u5B58\u5728 -Function-J2EE_server=J2EE\u670D\u52A1\u5668 -Function-New_Function_Name=\u65B0\u51FD\u6570\u540D -Function-Program_Function=\u7A0B\u5E8F\u51FD\u6570 -Function-Rename_Function=\u91CD\u547D\u540D\u51FD\u6570 -Function-Source_Code=\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 -Function-The_class_must_be_located_in=\u8BE5\u7C7B\u5FC5\u987B\u653E\u7F6E\u5728 -Function-The_class_must_implement_the_interface=\u8BE5\u7C7B\u5FC5\u987B\u5B9E\u73B0\u63A5\u53E3 -Function-The_class_must_inherit=\u8BE5\u7C7B\u5FC5\u987B\u7EE7\u627F -Function-The_selected_file_cannot_be_null=\u6587\u4EF6\u4E0D\u80FD\u4E3A\u7A7A -Function-The_selected_file_must_end_with=\u6587\u4EF6\u540E\u7F00\u5FC5\u987B\u662F -Function_Detail=\u51FD\u6570\u660E\u7EC6 -Function_Name_Should_Not_Be=\u51FD\u6570\u540D\u4E0D\u5E94\u8BE5\u662F -Function_browser=\u51FD\u6570\u6D4F\u89C8 -FuzhouCity=\u798F\u5DDE\u5E02 -GIVE-NAME=\u547D\u540D -GROUPING_MODE=\u666E\u901A\u5206\u7EC4 -Gansu=\u7518\u8083\u7701 -Ge=\u4E2A -General=\u5E38\u7528 -General-ToolBar=\u666E\u901A\u5DE5\u5177\u680F -Get=\u83B7\u53D6 -Get-Cube=\u6B63\u5728\u83B7\u53D6cube -Get_Catalog=\u6B63\u5728\u83B7\u53D6catalog -Get_Lock=\u52A0\u9501 -GisTableDataError=Gis\u5730\u56FE\u6570\u636E\u96C6\u6570\u636E\u9519\u8BEF -Golden=\u91D1\u8272 -GoogleMap=\u8C37\u6B4C\u5730\u56FE -Gradation=\u5C42\u6B21 -Gradient=\u6E10\u53D8 -Gradient-Color=\u6E10\u53D8\u8272 -Gradient-Direction=\u6E10\u53D8\u65B9\u5411 -Gradient_Left_Color=\u6E10\u53D8\u8272\u5DE6\u533A\u57DF -Gradient_Right_Color=\u6E10\u53D8\u8272\u53F3\u533A\u57DF -Green=\u9752\u7EFF -GridLayout=\u683C\u5B50\u5E03\u5C40 -Group=\u5206\u7EC4 -GroupB-Add_Condition_to_List=\u662F\u5426\u5C06\u4EE5\u4E0B\u6761\u4EF6\u6DFB\u52A0\u5230\u6761\u4EF6\u5217\u8868\u4E2D -GroupB-Group_Columns=\u5206\u7EC4\u5217 -GroupB-Page=\u5206\u9875 -GroupB-Report_Footer_Page=\u62A5\u8868\u811A\u5206\u9875 -GroupB-Report_Header_Page=\u62A5\u8868\u7709\u5206\u9875 -GroupB-Summary_Columns=\u6C47\u603B\u5217 -GroupReport-GroupReport_Attributes=\u5206\u7EC4\u62A5\u8868\u5C5E\u6027 -GroupReport-Hide_Detail_When_There's_No_Data=\u5F53\u6CA1\u6709\u6570\u636E\u65F6\u4E0D\u663E\u793A\u4E3B\u4F53 -GroupReport-Make_Up_Blank_Detail_Area=\u8865\u8DB3\u7A7A\u767D\u7684\u4E3B\u4F53\u533A\u57DF -GroupReport-Only_Display_Grand_Total_Function_At_Last_Page=\u4EC5\u5728\u6700\u540E\u4E00\u9875\u663E\u793A\u603B\u6C47\u603B\u7684\u503C -GroupReport-Page_Break_After_Detail_Repeat_Times=\u4E3B\u4F53\u90E8\u5206\u5FAA\u73AF\u6307\u5B9A\u6B21\u6570\u540E\u5F3A\u5236\u5206\u9875 -GroupReport-Set_Page_Footer_Of_Last_Page_Under_Report_Footer=\u6700\u540E\u4E00\u9875\u9875\u8868\u811A\u7F6E\u4E8E\u62A5\u8868\u811A\u4E0B\u65B9 -GroupReport-Set_Page_Footer_To_Page_Bottom=\u9875\u8868\u811A\u653E\u5728\u4E00\u9875\u6700\u4E0B\u9762 -GroupTable=\u5206\u7EC4\u8868 -Group_Count=\u8868\u793A\u603B\u4E2A\u6570 -Group_by=\u5206\u7EC4\u4F9D\u636E -Group_name=\u7EC4\u540D -Grouping_Report=\u5206\u7EC4\u62A5\u8868 -Grouping_Report_Wizard=\u5206\u7EC4\u62A5\u8868\u5411\u5BFC -Guangdong=\u5E7F\u4E1C\u7701 -Guangxi=\u5E7F\u897F\u58EE\u65CF\u81EA\u6CBB\u533A -GuangzhouCity=\u5E7F\u5DDE\u5E02 -GuiyangCity=\u8D35\u9633\u5E02 -Guizhou=\u8D35\u5DDE\u7701 -HF-Are_you_sure_to_delete_it=\u4F60\u786E\u5B9E\u60F3\u5220\u9664\u8FD9\u4E2A\u5143\u7D20\u5417 -HF-Center_Section=\u4E2D\u95F4\u533A\u57DF -HF-Default_Page=\u9ED8\u8BA4\u9875 -HF-Defined=\u5DF2\u5B9A\u4E49 -HF-Delete_it=\u5220\u9664 -HF-Edit_Footer=\u7F16\u8F91\u9875\u811A -HF-Edit_Header=\u7F16\u8F91\u9875\u7709 -HF-Edit_Header/Footer=\u7F16\u8F91\u9875\u7709/\u9875\u811A -HF-Even_Page=\u5076\u6570\u9875 -HF-First_Page=\u9996\u9875 -HF-Header_and_Footer=\u7709\u5934\u548C\u7709\u811A -HF-Insert_Content=\u63D2\u5165\u5185\u5BB9 -HF-Insert_Date=\u63D2\u5165\u65E5\u671F -HF-Insert_Formula=\u63D2\u5165\u516C\u5F0F -HF-Insert_Image=\u63D2\u5165\u56FE\u7247 -HF-Insert_New_Line=\u63D2\u5165\u6362\u884C\u7B26 -HF-Insert_Number_of_Page=\u63D2\u5165\u603B\u9875\u6570 -HF-Insert_Page_Number=\u63D2\u5165\u9875\u7801 -HF-Insert_Parameter=\u63D2\u5165\u53C2\u6570 -HF-Insert_Text=\u63D2\u5165\u6587\u672C -HF-Insert_Time=\u63D2\u5165\u65F6\u95F4 -HF-Left_Section=\u5DE6\u533A\u57DF -HF-Move_Left=\u5DE6\u79FB -HF-Move_Right=\u53F3\u79FB -HF-NewLine_Des=\u53EF\u4EE5\u70B9\u51FB\u4E0A\u9762\u7684\u79FB\u52A8\u548C\u5220\u9664\u6309\u94AE\u6765\u64CD\u4F5C\u6362\u884C\u7B26 -HF-New_Line=\u6362\u884C\u7B26 -HF-Number_of_Page=\u603B\u9875\u6570 -HF-Odd_Page=\u5947\u6570\u9875 -HF-Page_Number=\u9875\u7801 -HF-Right_Section=\u53F3\u533A\u57DF -HF-The_Page_Number=\u9875\u7801 -HF-Undefined=\u6CA1\u6709\u5B9A\u4E49 -HF-Whether_to_define_the_selected_type=\u662F\u5426\u5B9A\u4E49\u9009\u4E2D\u7684\u7C7B\u578B -HJS-All_Pages=\u6240\u6709\u9875 -HJS-BCC_to=\u5BC6\u4EF6\u6284\u9001 -HJS-CC_to=\u6284\u9001 -HJS-Current_Page=\u5F53\u524D\u9875 -HJS-From=\u53D1\u4EF6\u4EBA -HJS-Mail_to=\u6536\u4EF6\u4EBA -HJS-Message=\u5185\u5BB9 -HJS-Print_Failed=\u6253\u5370\u5931\u8D25 -HJS-Print_Successfully=\u6253\u5370\u6210\u529F -HJS-Range=\u8303\u56F4 -HJS-Send_Failed=\u53D1\u9001\u5931\u8D25 -HJS-Send_Successfully=\u53D1\u9001\u6210\u529F -HJS-Server_Print=\u670D\u52A1\u5668\u7AEF\u6253\u5370 -HJS-Server_Printer=\u670D\u52A1\u5668\u7AEF\u7684\u6253\u5370\u673A -HJS-Specified_Pages=\u6307\u5B9A\u9875 -HJS-Subject=\u4E3B\u9898 -HTML-Report_Mail_Server=\u62A5\u8868\u90AE\u4EF6\u670D\u52A1\u5668 -HTML-Write_Content_Save_Failed=\u586B\u5199\u5185\u5BB9\u4FDD\u5B58\u5931\u8D25 -HTML-Write_Content_Save_Successfully=\u586B\u5199\u5185\u5BB9\u4FDD\u5B58\u6210\u529F -HTML-Write_Insert_Data_Failed=\u6570\u636E\u63D2\u5165\u5931\u8D25 -HTML-Write_Insert_Data_Successfully=\u6570\u636E\u63D2\u5165\u6210\u529F -HaikouCity=\u6D77\u53E3\u5E02 -Hainan=\u6D77\u5357\u7701 -Handle_Affairs=\u5904\u7406\u4E8B\u52A1 -HangzhouCity=\u676D\u5DDE\u5E02 -HarbinCity=\u54C8\u5C14\u6EE8\u5E02 -Has=\u62E5\u6709 -Has_Existed=\u5DF2\u7ECF\u5B58\u5728 -Has_Selected=\u5DF2\u7ECF\u9009\u62E9 -Has_been_gone=\ \u5DF2\u4E22\u5931\uFF0C\u662F\u5426\u589E\u52A0\u8BE5\u6837\u5F0F\uFF1F -Hebei=\u6CB3\u5317\u7701 -HefeiCity=\u5408\u80A5\u5E02 -Height=\u9AD8\u5EA6 -Heilongjiang=\u9ED1\u9F99\u6C5F\u7701 -Help=\u5E2E\u52A9 -Henan=\u6CB3\u5357\u7701 -Hgap=\u6C34\u5E73\u95F4\u9699 -Hide=\u9690\u85CF -High=\u9AD8 -High-Low-Line=\u9AD8\u4F4E\u7EBF -HighLight=\u9AD8\u5149 -HighLightChart=\u9AD8\u4EAE -Highlight-Barcode=\u6761\u5F62\u7801 -Highlight-Choose_Property_To_Modify=\u9009\u62E9\u8981\u6539\u53D8\u7684\u5C5E\u6027 -Highlight-Click_to_Choose_Property_To_Modify=\u70B9\u51FB\u9009\u62E9\u8981\u6539\u53D8\u7684\u5C5E\u6027 -History=\u5386\u53F2 -HohhotCity=\u547C\u548C\u6D69\u7279\u5E02 -Home=\u4E3B\u9875 -Horizontal=\u6C34\u5E73 -Horizontal-Split_Layout=\u6C34\u5E73\u5206\u5272\u5E03\u5C40 -Horizontal_Layout=\u6C34\u5E73\u5E03\u5C40 -Host_\ Name=\u4E3B\u673A\u540D -Host_Name=\u4E3B\u673A\u540D -HotHyperlink-Bring_Parameter_Automatically=\u81EA\u52A8\u751F\u6210\u53C2\u6570 -HotHyperlink-Des1=\u5229\u7528\u70ED\u70B9\u94FE\u63A5\u53EF\u4EE5\u6307\u5411\u53E6\u4E00\u5F20\u62A5\u8868\uFF0C\u5728B\\S\u73AF\u5883\u4E0B\uFF0C\u52A8\u6001\u5B9E\u73B0\u56FE\u8868\u7684\u6570\u636E\u6570\u636E\u7684\u94BB\u53D6\u6548\u679C\u3002 -HotHyperlink-Hot_Hyperlink=\u70ED\u70B9\u94FE\u63A5 -HotHyperlink-No_Hot_Hyperlink=\u6CA1\u6709\u70ED\u70B9\u94FE\u63A5 -Hour=\u5C0F\u65F6 -HourWrong=\u6267\u884C\u65F6\u70B9\u7684\u5C0F\u65F6\u586B\u5199\u9519\u8BEF -Hubei=\u6E56\u5317\u7701 -Hunan=\u6E56\u5357\u7701 -HyperLink_Must_Alone_Reset=\u591A\u4E2A\u8D85\u94FE -Hyperlink=\u8D85\u7EA7\u94FE\u63A5 -Hyperlink(failure)=\u8D85\u7EA7\u94FE\u63A5\uFF08\u5931\u8D25\u65F6\uFF09 -Hyperlink(success)=\u8D85\u7EA7\u94FE\u63A5\uFF08\u6210\u529F\u65F6\uFF09 -Hyperlink-Choose=\u9009\u62E9(C) -Hyperlink-Configuration_Of_New_Window=\u65B0\u7A97\u53E3\u914D\u7F6E\u4FE1\u606F -Hyperlink-Des1=\u5229\u7528\u8D85\u7EA7\u94FE\u63A5\u53EF\u4EE5\u6307\u5411\u53E6\u4E00\u5F20\u62A5\u8868\uFF0C\u5728B\\S\u73AF\u5883\u4E0B\uFF0C\u52A8\u6001\u5B9E\u73B0\u6570\u636E\u7684\u94BB\u53D6\u6548\u679C\u3002 -Hyperlink-Email_cannot_be_null=Email\u4E0D\u80FD\u4E3A\u7A7A -Hyperlink-Extends_Report_Parameters=\u7EE7\u627F\u62A5\u8868\u7684\u53C2\u6570 -Hyperlink-Features=\u7279\u5F81 -Hyperlink-Form_link=\u5F53\u524D\u8868\u5355\u5BF9\u8C61 -Hyperlink-Height_Of_New_Window=\u65B0\u7A97\u53E3\u9AD8\u5EA6 -Hyperlink-Link_Opened_in=\u94FE\u63A5\u6253\u5F00\u4E8E -Hyperlink-New_Window=\u65B0\u7A97\u53E3 -Hyperlink-No_Hyperlink=\u6CA1\u6709\u8D85\u7EA7\u94FE\u63A5 -Hyperlink-Reportlet_name_cannot_be_null=\u7F51\u7EDC\u62A5\u8868\u540D\u5B57\u4E0D\u53EF\u4E3A\u7A7A -Hyperlink-Resizable=\u662F\u5426\u53EF\u8C03\u6574\u7A97\u53E3\u5927\u5C0F -Hyperlink-Self=\u5728\u539F\u7F51\u9875\u4E2D\u6253\u5F00\u94FE\u63A5(S) -Hyperlink-Self_Window=\u5F53\u524D\u7A97\u53E3 -Hyperlink-Show_Directories=\u663E\u793A\u5FEB\u901F\u94FE\u63A5\u680F -Hyperlink-Show_Location=\u663E\u793A\u5730\u5740\u680F -Hyperlink-Show_Menubar=\u663E\u793A\u83DC\u5355\u680F -Hyperlink-Show_Scrollbars=\u663E\u793A\u7A97\u53E3\u6EDA\u52A8\u6761 -Hyperlink-Show_Status=\u663E\u793A\u72B6\u6001\u680F -Hyperlink-Show_Toolbar=\u663E\u793A\u5DE5\u5177\u680F -Hyperlink-Target_Frame=\u6253\u5F00\u94FE\u63A5\u7684\u7A97\u53E3 -Hyperlink-URL_cannot_be_null=URL\u4E0D\u80FD\u4E3A\u7A7A -Hyperlink-Use_CJK_to_encode_parameter=\u4F7F\u7528CJK\u5904\u7406\u53C2\u6570 -Hyperlink-Web_link=\u7F51\u9875\u94FE\u63A5 -Hyperlink-Width_Of_New_Window=\u65B0\u7A97\u53E3\u5BBD\u5EA6 -I-xyScatterStyle_Marker=\u6563\u70B9\u56FE -ID=\u5E8F\u53F7 -IDCard=\u8EAB\u4EFD\u8BC1 -IDLE=\u7A7A\u95F2 -INFO-Current_Role=\u5F53\u524D\u89D2\u8272 -INFO-End_Converting_ReportPage_To_Html=\u62A5\u8868\u9875\u8F6CHtml\u7ED3\u675F -INFO-End_Executing_Report=\u5B8C\u6210\u62A5\u8868\u8BA1\u7B97 -INFO-End_Reading_XML=\u7ED3\u675FXML\u8BFB\u53D6 -INFO-Page_is_Generated=\u9875\u9762\u5DF2\u751F\u6210 -INFO-Reset_Webapp=\u91CD\u7F6E\u5E94\u7528\u670D\u52A1\u5668 -INFO-Server_Started_Successfully=\u6210\u529F\u542F\u52A8\u670D\u52A1\u5668 -INFO-Start_Converting_ReportPage_To_Html=\u5F00\u59CB\u8F6C\u62A5\u8868\u9875\u4E3AHtml -INFO-Start_Executing_Report=\u5F00\u59CB\u8BA1\u7B97\u62A5\u8868 -INFO-Start_Reading_XML=\u5F00\u59CB\u8BFBXML -INFO-Time_Taken=\u8017\u65F6 -INFO-Try_to_set_the_port_of_the_server_to=\u8BBE\u7F6E\u670D\u52A1\u5668\u7AEF\u53E3\u4E3A -IN_and_INOUT_type_not_as_cursor=IN\u548CINOUT\u7C7B\u578B\u4E0D\u53EF\u4EE5\u4F5C\u4E3A\u6E38\u6807 -ISEMPTY=\u4E3A\u7A7A -IS_Auto_Scale=iframe\u5D4C\u5165\u65F6\u81EA\u52A8\u7F29\u653E -IS_Key_Equals_Value=\u5B9E\u9645\u503C\u548C\u663E\u793A\u503C\u76F8\u540C -IS_Need_Password=\u9700\u8981\u5BC6\u7801 -IS_TD_HEAVY_EXPORT=\u91CD\u65B9\u5F0F\u8F93\u51FA\u683C\u5B50 -I_Created=\u6211\u521B\u5EFA\u7684 -I_Want_To_Set_Single=\u4E3A\u8BE5\u6A21\u677F\u5355\u72EC\u8BBE\u7F6E -Icon=\u56FE\u6807 -Icon_And_Text_Cannot_Be_Empty_In_The_Same_Time=\u56FE\u6807\u548C\u6587\u672C\u4E0D\u80FD\u540C\u65F6\u4E3A\u7A7A -Idle_Connection_Size=\u7A7A\u95F2\u8FDE\u63A5\u6570 -Ignore_All=\u5FFD\u7565\u5168\u90E8 -Image=\u56FE\u7247 -Image-Adjust=\u9002\u5E94 -Image-Extend=\u62C9\u4F38 -Image-Image_Files=\u56FE\u7247\u6587\u4EF6 -Image-Image_Layout=\u56FE\u7247\u5E03\u5C40 -Image-Layout=\u5E03\u5C40 -Image-Select_Picture=\u9009\u62E9\u56FE\u7247 -Image-Specified_Size=\u6307\u5B9A\u5C3A\u5BF8 -Image-Titled=\u5E73\u94FA -ImgBoard=\u56FE\u7247\u9762\u677F -Implement-Description=\u6CA1\u6709\u5B9E\u73B0\u63A5\u53E3SubmitJob -Import=\u8F93\u5165 -Import-Datasource_Files=\u6570\u636E\u6E90\u6587\u4EF6 -Import-Excel2007_Source=Excel2007\u6E90\u6587\u4EF6 -Import-Excel_File=Excel\u6587\u4EF6 -Import-Excel_Import=Excel\u8F93\u5165 -Import-Excel_Source=Excel\u6E90\u6587\u4EF6 -Import-Save=\u4FDD\u5B58\u5230\u76EE\u5F55 -Import-Translate=\u8F6C\u6362 -Import-Unconverted_Formula=\u4E0D\u80FD\u8F6C\u6362\u7684\u516C\u5F0F -Import2=\u5BFC\u5165 -ImportMap=\u5BFC\u5165\u5730\u56FE -Import_Again=\u91CD\u65B0\u5BFC\u5165 -Import_Export-Excel=Excel\u683C\u5F0F -Import_Failed=\u5BFC\u5165\u5931\u8D25 -Importing=\u5BFC\u5165\u4E2D -InColumn=\u5217(L) -InRow=\u884C(R) -Inc_All_rights_Reserved=\u4FDD\u7559\u6240\u6709\u6743\u5229\u3002 -Include=\u5305\u62EC -Indent-Character=\u5B57\u7B26 -Indent-Indentation_Unit=\u7F29\u8FDB\u5355\u4F4D -Indent-Indentation_Value=\u7F29\u8FDB\u503C -Indent-Pixel=\u50CF\u7D20 -Index=\u5217\u8F74/\u6307\u6807 -Info=\u4FE1\u606F -InnerRadis=\u5185\u5F84\u5927\u5C0F -Inner_Parameter=\u5185\u7F6E\u53C2\u6570 -Input-New_Name=\u8F93\u5165\u65B0\u540D\u5B57 -Input-To_Search=\u641C\u7D22\u9009\u9879\u7ED3\u679C -Input_Keyword=\u952E\u5165\u5173\u952E\u5B57 -Input_Rule=\u586B\u5199\u89C4\u5219 -Input_The_Name_Of_Gloabel_Style=\u8F93\u5165\u6240\u4FDD\u5B58\u7684\u5168\u5C40\u683C\u5F0F\u540D\u79F0 -Insert=\u63D2\u5165 -Insert-Formula_Edit=\u516C\u5F0F\u7F16\u8F91 -InsertBackward=\u5411\u540E\u63D2\u5165 -InsertForward=\u5411\u524D\u63D2\u5165 -Inside=\u5185\u90E8 -Institution=\u673A\u6784\u90E8\u95E8 -IntPart=\u6574\u6570\u90E8\u5206 -Integer=\u6574\u6570 -Interactive-chart=\u56FE\u8868\u8054\u52A8 -Interface=\u63A5\u53E3 -InterfaceStyle=\u98CE\u683C -Interval=\u65F6\u95F4\u95F4\u9694 -Interval_Gap=\u95F4\u9694 -Invalid_Cell=\u65E0\u6548\u7684\u5355\u5143\u683C -Invert_Selection=\u53CD\u5411\u9009\u5B9A -Is-Cache=\u542F\u7528\u7F13\u5B58 -Is_Need=\u5FC5\u9700 -Is_Paint_Page=\u4EE5\u56FE\u7247\u65B9\u5F0F\u663E\u793A -Is_Share_DBTableData=\u5171\u4EAB\u6570\u636E\u96C6 -JSON-Error=\u6CA1\u6709\u751F\u6210\u6B63\u786E\u7684JSON\u6570\u7EC4 -JSShow=\u52A8\u6001\u5C55\u793A -JS_Import_Description=\u5982\u679C\u901A\u8FC7\u76F8\u5BF9\u8DEF\u5F84\u5F15\u7528js\: \n\u76F8\u5BF9\u4E8E\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;\n\u5982\u679C\u901A\u8FC7\u7EDD\u5BF9\u8DEF\u5F84\u5F15\u7528js\:\n\u793A\u4F8B\:D\:\\tomcat\\webapps\\WebReport\\WEB-INF\\scripts\\script.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 -JS_WARNING2=\ \u4F8B\uFF1Ahttp\://localhost\:8075/WebReport/demo.js -January=\u4E00\u6708 -Japanese_Language=\u65E5\u8BED -JavaScript=JavaScript\u811A\u672C -JavaScript-Commit_to_Database=\u63D0\u4EA4\u5165\u5E93 -JavaScript-Dynamic_Parameters=\u52A8\u6001\u53C2\u6570 -JavaScript-Form_Submit=\u8868\u5355\u63D0\u4EA4 -JavaScript-Parameter_Refresh= -JavaScript-Synch=\u540C\u6B65 -JavaScript_Set=JS\u8BBE\u7F6E -JavaScrit-Asynch=\u5F02\u6B65 -Jiangsu=\u6C5F\u82CF\u7701 -Jiangxi=\u6C5F\u897F\u7701 -Jilin=\u5409\u6797\u7701 -JinanCity=\u6D4E\u5357\u5E02 -Join_Product_improve=\u52A0\u5165\u4EA7\u54C1\u6539\u826F\u8BA1\u5212 -Judge=\u5224\u65AD -July=\u4E03\u6708 -June=\u516D\u6708 -Key=\u952E -KeyPoint=\u5173\u952E\u8282\u70B9 -KeyWord=\u5173\u952E\u5B57 -KunmingCity=\u6606\u660E\u5E02 -LDAP_User=LDAP\u7528\u6237 -LIC-Support_ADHOC=\u5373\u5E2D\u62A5\u8868 -LIC-Support_Advanced_Chart=\u590D\u6742\u7EDF\u8BA1\u56FE -LIC-Support_Advanced_DataSource=\u589E\u5F3A\u6570\u636E\u6E90\u6A21\u5757 -LIC-Support_Advanced_Formula=\u589E\u5F3A\u5206\u6790\u7EDF\u8BA1\u6A21\u5757 -LIC-Support_Advanced_Online_Writer=\u591A\u6E90\u586B\u62A5 -LIC-Support_Collapable_Tree_View=\u591A\u7EF4\u5EA6\u5206\u6790 -LIC-Support_Dynamic_Chart=HTML5\u52A8\u6001\u56FE\u8868 -LIC-Support_Dynamic_Meter_Chart= -LIC-Support_Flash_Print=Flash\u96F6\u5BA2\u6237\u7AEF\u6253\u5370 -LIC-Support_Frozen_View=\u51BB\u7ED3\u8868\u5934 -LIC-Support_Global_Style=\u62A5\u8868\u5168\u5C40\u6837\u5F0F -LIC-Support_Meter_Chart=\u4EEA\u8868\u76D8 -LIC-Support_Multi_Env=\u591A\u62A5\u8868\u8FD0\u884C\u73AF\u5883 -LIC-Support_Multi_Web_App=\u670D\u52A1\u5668\u652F\u6301\u591A\u4E2A\u5E94\u7528 -LIC-Support_Online_Edit=\u5728\u7EBF\u5B9E\u65F6\u7F16\u8F91\u5668 -LIC-Support_Online_Write=\u586B\u62A5\uFF08\u975E\u591A\u6E90\uFF09 -LIC-Support_Parameter_Interface=\u53C2\u6570\u67E5\u8BE2\u754C\u9762 -LIC-Support_Performce_Optimise=\u6027\u80FD\u8C03\u4F18 -LIC-Support_Predefined_Widget=\u7F16\u8F91\u5668\u63A7\u4EF6\u7BA1\u7406 -LIC-Support_Privilege=\u6743\u9650\u914D\u7F6E -LIC-Support_Remote_Design=\u8FDC\u7A0B\u8BBE\u8BA1 -LIC-Support_Schedule=\u62A5\u8868\u5B9A\u65F6\u8C03\u5EA6 -LIC-Support_Server_Cluster=\u62A5\u8868\u670D\u52A1\u5668\u96C6\u7FA4 -LIC-Support_Source_Relation=\u591A\u6570\u636E\u6E90\u5173\u8054 -LIC-Support_WorkBook=\u591Asheet\u62A5\u8868\u8BBE\u8BA1 -LIST_MODE=\u5217\u8868 -LOG-Close_Session=\u5173\u95EDSession -LOG-Has_Been_Openned=\u5DF2\u7ECF\u6253\u5F00 -LOG-Is_Being_Openned=\u6B63\u5728\u6253\u5F00 -LOG-Please_Wait=\u8BF7\u7A0D\u5019 -LOG-Report_Server_IS_Started=\u62A5\u8868\u670D\u52A1\u5668\u5DF2\u542F\u52A8 -Label=\u6807\u7B7E -Language=\u8BED\u8A00 -LanguageSetUp=\u8BED\u8A00\u914D\u7F6E -LanzhouCity=\u5170\u5DDE\u5E02 -Large-pitch-based=\u5927\u95F4\u8DDD -LasaCity=\u62C9\u8428\u5E02 -Last_Day=\u6700\u540E\u4E00\u5929 -Last_Submit_Time=\u4E0A\u6B21\u63D0\u4EA4\u65F6\u95F4 -LatLng=\u7ECF\u7EAC\u5EA6 -Layer-Build=\u5206\u5C42\u6784\u5EFA -Layer-Generated_Pages=\u5DF2\u751F\u6210\u7684\u9875\u6570 -Layer-Sleep_Thread_For_Calculating=\u4F11\u7720\u8BA1\u7B97\u7EBF\u7A0B -Layer-Waiting_For_Page_Number=\u7B49\u5F85\u9875\u7801 -Layer-Wake_Up_Thread_For_Calculating=\u5524\u9192\u8BA1\u7B97\u7EBF\u7A0B -Layer-Wake_Up_Thread_For_Page_Retriever=\u5524\u9192\u53D6\u9875\u9762\u7EBF\u7A0B -LayerData=\u5E95\u5C42\u6570\u636E -LayerGrade=\u94BB\u53D6\u5C42\u7EA7 -LayerPageReport_CountPerPage=\u6BCF\u9875\u8BB0\u5F55\u6570 -LayerPageReport_Define_PageQuerySQL=\u5B9A\u4E49\u5206\u9875\u67E5\u8BE2sql -LayerPageReport_PageEngine=\u4F7F\u7528\u6309\u9875\u8FD0\u7B97\u5206\u6BB5\u6267\u884C\u62A5\u8868 -LayerPageReport_PageQuery=\u5206\u9875\u67E5\u8BE2 -LayerPageReport_PageQuery_Unsupport_Msg1=\u65E0\u6CD5\u81EA\u52A8\u8F6C\u5316\u6210\u5206\u9875\u8BED\u53E5\uFF0C\u8BF7\u81EA\u5B9A\u4E49\u5206\u9875SQL\! -LayerPageReport_WN_CellExpand=\u6309\u9875\u8FD0\u7B97\u65F6\uFF0C\u53EA\u652F\u6301\u4ECE\u4E0A\u5230\u4E0B\u6269\u5C55\u5C5E\u6027\uFF0C\u5176\u5B83\u5C5E\u6027\u8BBE\u7F6E\u5747\u4E0D\u652F\u6301 -LayerPageReport_WN_CellPage=\u6309\u9875\u8FD0\u7B97\u5F15\u64CE\u4E0D\u652F\u6301\u5355\u5143\u683C\u5206\u9875\u5C5E\u6027 -LayerPageReport_WN_Chart=\u6309\u9875\u8FD0\u7B97\u5F15\u64CE\u6682\u4E0D\u652F\u6301\u56FE\u8868 -LayerPageReport_WN_DSColumn=\u6309\u9875\u8FD0\u7B97\u5F15\u64CE\u53EA\u652F\u6301\u5217\u8868\u4EE5\u53CA\u7B80\u5355\u5206\u7EC4\uFF0C\u5176\u4F59\u5C5E\u6027\u529F\u80FD\u5747\u4E0D\u652F\u6301 -LayerPageReport_WN_Float=\u6309\u9875\u8FD0\u7B97\u5F15\u64CE\u6682\u4E0D\u652F\u6301\u60AC\u6D6E\u5143\u7D20 -LayerPageReport_WN_Hierarchy=\u6309\u9875\u8FD0\u7B97\u5F15\u64CE\u4E0D\u652F\u6301\u5C42\u6B21\u5750\u6807 -LayerPageReport_WN_RepeatCR=\u6309\u9875\u8FD0\u7B97\u5F15\u64CE\u6682\u53EA\u652F\u6301\u91CD\u590D\u6807\u9898\u884C\u5217 -LayerPageReport_WN_Report_Columns=\u6309\u9875\u8FD0\u7B97\u5F15\u64CE\u6682\u4E0D\u652F\u6301\u62A5\u8868\u5206\u680F -LayerPageReport_WN_SIL=\u6309\u9875\u8FD0\u7B97\u5F15\u64CE\u6682\u4E0D\u652F\u6301Sheet\u95F4\u8FD0\u7B97 -LayerPageReport_WN_SubReport=\u6309\u9875\u8FD0\u7B97\u5F15\u64CE\u6682\u4E0D\u652F\u6301\u5B50\u62A5\u8868 -Layer_Authentication=\u9A8C\u8BC1 -Layer_Corresponding_Map=\u94BB\u53D6\u5BF9\u5E94\u5730\u56FE -Layer_Report=\u5C42\u5F0F\u62A5\u8868 -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 -Layer_Report_alert_info=\u6CE8\u610F\uFF01\u60A8\u6B63\u5728\u4F7F\u7528\u884C\u5F0F\u5F15\u64CE\uFF0C\u6B64\u5F15\u64CE\u4E0B\u4E00\u4E9B\u62A5\u8868\u7279\u6027\u5C06\u4E0D\u518D\u652F\u6301\u3002 -Layout=\u4F4D\u7F6E -Layout-HBox=\u6C34\u5E73\u76D2\u5B50\u5E03\u5C40 -Layout-Index=\u7D22\u5F15 -Layout-Margin=\u5916\u8FB9\u8DDD -Layout-Padding=\u5185\u8FB9\u8DDD -Layout_Constraints=\u4F4D\u7F6E\u548C\u5927\u5C0F -Layout_Container=\u5E03\u5C40\u5BB9\u5668 -Left=\u5DE6 -LeftParent=\u5DE6\u7236\u683C -Left_Border_Line=\u5DE6\u6846\u7EBF -Left_Margin=\u5DE6\u8FB9\u8DDD -Length=\u957F\u5EA6 -Level=\u7EA7 -Level_Setting=\u7EA7\u522B\u8BBE\u7F6E -Level_coordinates=\u5C42\u6B21\u5750\u6807 -Liaoning=\u8FBD\u5B81\u7701 -License-Your_license_is_not_support_multiple_connection=\u5F53\u524DLicense\u4E0D\u652F\u6301\u591A\u6570\u636E\u8FDE\u63A5 -Light_Blue=\u6DE1\u84DD -Light_Orange=\u6D45\u6A58\u9EC4 -Line=\u7EBF\u6761 -Line-Color=\u7EBF\u6761\u989C\u8272 -Line-Style=\u7EBF\u578B -Line_Width=\u7EBF\u5BBD -Link=\u94FE\u63A5 -Links=\u94FE\u63A5 -List=\u5217\u8868 -List-Filter=\u5217\u8868\u7B5B\u9009 -List-Need_Head=\u9700\u8981\u5217\u8868\u5934 -Load=\u52A0\u8F7D -Load-Pull_Up=\u5411\u4E0A\u62C9\u52A8\u52A0\u8F7D\u66F4\u591A\u6570\u636E -Load_Resource_File=\u52A0\u8F7D\u914D\u7F6E\u6587\u4EF6 -Loading=\u6B63\u5728\u52A0\u8F7D -Loading_Applet=\u6B63\u5728\u52A0\u8F7DApplet -Loading_Component=\u6B63\u5728\u52A0\u8F7D\u63A7\u4EF6 -Loading_Data=\u6B63\u5728\u52A0\u8F7D\u6570\u636E -Loading_PDF=\u6B63\u5728\u52A0\u8F7DPDF -Local-file=\u672C\u5730\u6587\u4EF6 -Local_offset=\u672C\u673A\u504F\u79FB -Location=\u4F4D\u7F6E -Locked=\uFF08\u5DF2\u9501\u5B9A\uFF09 -Log=\u65E5\u5FD7 -Log_Declare_Head_Execute=\u62A5\u8868\u8BA1\u7B97\u4E2D -Log_Declare_Head_Export=\u62A5\u8868\u5BFC\u51FA\u4E2D -Log_Declare_Head_Print=\u62A5\u8868\u6253\u5370\u4E2D -Log_Declare_Head_Res_Read=\u6587\u4EF6\u8BFB\u53D6\u4E2D -Log_Declare_Head_Res_Write=\u6587\u4EF6\u5199\u51FA\u4E2D -Log_Declare_Head_Web_Write=\u9875\u9762\u5199\u51FA\u4E2D -Log_Level_INFO=\u666E\u901A\u7EA7\u522B,\u663E\u793ASQL\u8BED\u53E5\u7B49\u4FE1\u606F -Log_Level_SEVERE=\u4E25\u91CD\u7EA7\u522B,\u663E\u793A\u9519\u8BEF\u4FE1\u606F -Log_Level_WARNING=\u8B66\u544A\u7EA7\u522B,\u663E\u793A\u8B66\u544A\u4FE1\u606F -Logarithmic=\u5BF9\u6570\u523B\u5EA6 -LogarithmicValue=\u5BF9\u6570\u523B\u5EA6\u503C -Login=\u767B\u5F55 -Login_Setting=\u767B\u5F55\u8BBE\u7F6E -Logout=\u9000\u51FA -Lookup_Range=\u67E5\u627E\u8303\u56F4 -Low=\u4F4E -Lower_LayerSet=\u4E0B\u5C42\u94BB\u53D6\u8BBE\u7F6E -M-Cell=\u5355\u5143\u683C -M-Chart_Preview=\u56FE\u8868\u9884\u89C8 -M-Close_Template=\u5173\u95ED\u6A21\u677F(C) -M-Data_Analysis=\u6570\u636E\u5206\u6790 -M-Data_Analysis_Settings=\u6570\u636E\u5206\u6790\u8BBE\u7F6E -M-Design_Report=\u8BBE\u8BA1\u62A5\u8868(D) -M-Edit=\u7F16\u8F91(E) -M-Excel_File=Excel\u6587\u4EF6(E) -M-Exit=\u9000\u51FA -M-File=\u6587\u4EF6 -M-Form_Preview=\u8868\u5355\u9884\u89C8 -M-Help=\u5E2E\u52A9 -M-Insert=\u63D2\u5165 -M-New_ChartBook=\u65B0\u5EFA\u56FE\u8868 -M-New_FormBook=\u65B0\u5EFA\u8868\u5355 -M-New_Multi_Report=\u65B0\u5EFA\u805A\u5408\u62A5\u8868(M) -M-New_Report=\u65B0\u5EFA\u62A5\u8868(R) -M-New_WorkBook=\u65B0\u5EFA\u5DE5\u4F5C\u7C3F -M-Open_Recent=\u6700\u8FD1\u6253\u5F00\u7684 -M-Open_Report=\u6253\u5F00... -M-Others=\u5176\u5B83... -M-Page_Preview=\u5206\u9875\u9884\u89C8 -M-Page_Setup=\u9875\u9762\u8BBE\u7F6E -M-Popup_ChartData=\u56FE\u8868\u6570\u636E -M-Popup_ChartOption=\u56FE\u8868\u9009\u9879 -M-Popup_ChartType=\u56FE\u8868\u7C7B\u578B -M-Print_Preview=\u6253\u5370\u9884\u89C8(V) -M-Print_Report=\u6253\u5370\u62A5\u8868(P) -M-Repeat-Freeze=\u91CD\u590D\u4E0E\u51BB\u7ED3\u8BBE\u7F6E -M-Report=\u62A5\u8868(R) -M-Save=\u4FDD\u5B58 -M-Save_As=\u53E6\u5B58\u4E3A -M-Server=\u670D\u52A1\u5668 -M-SwitchWorkspace=\u5207\u6362\u5DE5\u4F5C\u76EE\u5F55 -M-Template=\u6A21\u677F -M-Window=\u7A97\u53E3(N) -M-Write_Preview=\u586B\u62A5\u9884\u89C8 -MConfig-BorderTitle=\u56FE\u7247 -MConfig-CancelButton=\u53D6\u6D88 -MConfig-CompanyName=\u516C\u53F8\u540D\u79F0 -MConfig-ProductName=\u4EA7\u54C1\u540D\u79F0 -MConfig-SaveButton=\u4FDD\u5B58 -MConfig-SupportEmail=\u7535\u5B50\u90AE\u4EF6 -MConfig-User_Defined_Designer=\u914D\u7F6E\u4E2A\u6027\u6A21\u677F\u8BBE\u8BA1\u5668 -MConfig-WebsiteURL=\u516C\u53F8\u7F51\u5740 -MDX_Explain=\u8BED\u6CD5\u683C\u5F0F\u53C2\u8003MDX\u8BED\u6CD5\u3002\n\u4F8B\u5982\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\u53EF\u4EE5\u4F7F\u75280\u30011\u4EE3\u66FF\uFF0C\u67E5\u8BE2\u8F74\u53EA\u652F\u6301\u8FD4\u56DE\u4E24\u4E2A\u8F74\u3002 -MSBold=\u5FAE\u8F6F\u96C5\u9ED1 -M_Close_Current=\u5173\u95ED -M_Edit-Bring_Forward=\u4E0A\u79FB\u4E00\u5C42(F) -M_Edit-Bring_to_Front=\u7F6E\u4E8E\u9876\u5C42(T) -M_Edit-Clear=\u6E05\u9664(A) -M_Edit-Clear_All=\u5168\u90E8(A) -M_Edit-Clear_Contents=\u5185\u5BB9(C) -M_Edit-Clear_Formats=\u683C\u5F0F(F) -M_Edit-Copy=\u590D\u5236(C) -M_Edit-Cut=\u526A\u5207(T) -M_Edit-Delete=\u5220\u9664(D) -M_Edit-DeleteColumn=\u5220\u9664\u5149\u6807\u6240\u5728\u5217 -M_Edit-DeleteFloat=\u5220\u9664\u60AC\u6D6E\u5143\u7D20 -M_Edit-DeleteRow=\u5220\u9664\u5149\u6807\u6240\u5728\u884C -M_Edit-FormatBrush=\u683C\u5F0F\u5237(B) -M_Edit-Free_Ajust_Size=\u81EA\u7531\u8C03\u6574\u5C3A\u5BF8(S) -M_Edit-Merge_Cell=\u5408\u5E76\u5355\u5143\u683C -M_Edit-Order=\u53E0\u653E\u6B21\u5E8F(O) -M_Edit-Paste=\u7C98\u8D34(P) -M_Edit-Redo=\u91CD\u505A -M_Edit-Send_Backward=\u4E0B\u79FB\u4E00\u5C42(B) -M_Edit-Send_to_Back=\u7F6E\u4E8E\u5E95\u5C42(K) -M_Edit-Undo=\u64A4\u9500 -M_Edit-Unmerge_Cell=\u53D6\u6D88\u5408\u5E76\u5355\u5143\u683C -M_File-Excel_Import=Excel\u8F93\u5165(I) -M_File-Export-CSV=CSV\u683C\u5F0F(\u9017\u53F7\u5206\u9694) -M_File-Export-Excel=Excel\u683C\u5F0F -M_File-Export-PDF=PDF\u683C\u5F0F -M_File-Export-SVG=SVG\u683C\u5F0F -M_File-Export-Text=\u6587\u672C\u6587\u4EF6(\u5236\u8868\u7B26\u5206\u9694) -M_File-Export-Word=Word\u683C\u5F0F -M_File-ExportT-Template(embedded_data)=\u6A21\u677F(\u5185\u7F6E\u6570\u636E) -M_Format-Add_Column_After=\u5728\u540E\u9762\u6DFB\u52A0\u5217(L) -M_Format-Add_Column_Before=\u5728\u524D\u9762\u6DFB\u52A0\u5217(O) -M_Format-Add_Row_After=\u5728\u540E\u9762\u6DFB\u52A0\u884C(D) -M_Format-Add_Row_Before=\u5728\u524D\u9762\u6DFB\u52A0\u884C(A) -M_Format-Add_Row_at=\u6DFB\u52A0\u884C -M_Format-Data_Map=\u6570\u636E\u5B57\u5178 -M_Format-Remove_Column=\u5220\u9664\u5217(C) -M_Format-Remove_Row=\u5220\u9664\u884C(R) -M_Format-Style=\u6837\u5F0F -M_Format_A-Border=\u8FB9\u6846(B) -M_Format_A-Cell_Attributes=\u5176\u4ED6\u5C5E\u6027 -M_Format_E-Cell_Expand_And_FatherCell=\u6269\u5C55\u4E0E\u7236\u683C(E) -M_Format_W-Support_Write=\u662F\u5426\u53EF\u5199 -M_Help-API_Document=\u4E8C\u6B21\u5F00\u53D1\u7684API\u6587\u6863(A) -M_Help-About_Software=\u5173\u4E8E\u8F6F\u4EF6 -M_Help-Demo=\u793A\u4F8B(D) -M_Help-Quick_Start=\u5FEB\u901F\u5165\u95E8 -M_Help-Tutorial=\u5B66\u4E60\u6559\u7A0B -M_Help_Licence=\u6388\u6743\u8BB8\u53EF -M_Insert-Barcode=\u6761\u5F62\u7801 -M_Insert-BindValue=\u7ED1\u5B9A\u6570\u503C(B) -M_Insert-Boolean=\u5E03\u5C14\u6570\u503C(O) -M_Insert-Cell=\u5355\u5143\u683C\u5143\u7D20 -M_Insert-Chart=\u63D2\u5165\u56FE\u8868 -M_Insert-Columns=\u5217(C) -M_Insert-Data_Column=\u63D2\u5165\u6570\u636E\u5217 -M_Insert-Date=\u65E5\u671F(D) -M_Insert-Float=\u60AC\u6D6E\u5143\u7D20 -M_Insert-Formula=\u63D2\u5165\u516C\u5F0F -M_Insert-Hyperlink=\u8D85\u7EA7\u94FE\u63A5 -M_Insert-Image=\u63D2\u5165\u56FE\u7247 -M_Insert-Rows=\u884C(R) -M_Insert-Serial_Number=\u7F16\u53F7(S) -M_Insert-Shape_Isosceles_Triangle=\u7B49\u8170\u4E09\u89D2\u5F62(I) -M_Insert-Shape_Line=\u76F4\u7EBF(L) -M_Insert-Shape_None=\u9009\u62E9\u56FE\u5F62(N) -M_Insert-Shape_Oval=\u692D\u5706(O) -M_Insert-Shape_Rectangle=\u77E9\u5F62(R) -M_Insert-Shape_Rounded_Rectangle=\u5706\u89D2\u77E9\u5F62(U) -M_Insert-Slope_Line=\u63D2\u5165\u659C\u7EBF -M_Insert-Sub_Report=\u63D2\u5165\u5B50\u62A5\u8868 -M_Insert-Text=\u63D2\u5165\u666E\u901A\u6587\u672C -M_Insert-TextBox=\u6587\u672C\u6846(B) -M_Report-Bind_Data=\u7ED1\u5B9A\u6570\u636E(B) -M_Report-Execute_Script=\u8FD0\u884C\u671F\u811A\u672C(S) -M_Report-Formula_Parameter=\u516C\u5F0F\u53C2\u6570(P) -M_Report-GroupReport_Attributes=\u5206\u7EC4\u62A5\u8868\u5C5E\u6027(G) -M_Report-Report_Background=\u7EB8\u5F20\u80CC\u666F -M_Report-Report_Columns=\u62A5\u8868\u5206\u680F -M_Report-Report_Footer=\u62A5\u8868\u9875\u811A -M_Report-Report_Header=\u62A5\u8868\u9875\u7709 -M_Report-Report_Interface=\u53C2\u6570\u754C\u9762(I) -M_Report-Report_Parameter=\u6A21\u677F\u53C2\u6570 -M_Server-Function_Manager=\u51FD\u6570\u7BA1\u7406\u5668 -M_Server-Global_Parameters=\u5168\u5C40\u53C2\u6570 -M_Server-Platform_Manager=\u62A5\u8868\u5E73\u53F0\u7BA1\u7406 -M_Server-Printer_Manager=\u6253\u5370\u673A\u7BA1\u7406\u5668(P) -M_Server-Public_Datasource_Manager=\u516C\u6709\u6570\u636E\u6E90\u7BA1\u7406\u5668(D) -M_Server-Scheduled_Task_Manager(T)=\u5B9A\u65F6\u4EFB\u52A1\u7BA1\u7406\u5668(T) -M_Server-Server_Config_Manager=\u670D\u52A1\u5668\u914D\u7F6E -M_Window-Cascade(C)=\u5C42\u53E0(C) -M_Window-Frozen_WindowGrid=\u51BB\u7ED3\u7A97\u683C(F) -M_Window-Next_Window=\u4E0B\u4E00\u4E2A\u7A97\u53E3(N) -M_Window-Preference=\u9009\u9879 -M_Window-Previous_Window=\u4E0A\u4E00\u4E2A\u7A97\u53E3(P) -M_Window-Title_Horizontal(H)=\u6C34\u5E73\u5E73\u94FA(H) -M_Window-Title_Vertical=\u5782\u76F4\u5E73\u94FA(V) -M_Window-Unfrozen_WindowGrid=\u53D6\u6D88\u51BB\u7ED3\u7A97\u683C(F) -Mail=\u90AE\u4EF6 -Mail-BCopy_Adress=\u5BC6\u9001\u5730\u5740 -Mail-Contacts=\u901A\u8BAF\u5F55 -Mail-Copy_Adress=\u6284\u9001\u5730\u5740 -Mail-Send_Adress=\u53D1\u9001\u5730\u5740 -Mail_Setting=\u90AE\u4EF6\u8BBE\u7F6E -MainGraduationLine=\u4E3B\u8981\u523B\u5EA6\u7EBF -MainGraduationLineStyle=\u4E3B\u8981\u523B\u5EA6\u7EBF\u7C7B\u578B -MainGraduationUnit=\u4E3B\u8981\u523B\u5EA6\u5355\u4F4D -Main_Axis=\u4E3B\u5750\u6807\u8F74 -Main_Value_Axis=\u4E3B\u503C\u8F74 -MakeSureOfCloseSyncDataSet=\u60A8\u786E\u8BA4\u8981\u5173\u95ED\u6570\u636E\u96C6\u540C\u6B65\u5417\uFF1F\u60A8\u8FD8\u53EF\u4EE5\u901A\u8FC7"\u5F00\u542F\u6570\u636E\u96C6\u540C\u6B65"\u6309\u94AE\u6765\u542F\u7528\u5B83\u3002 -Male=\u7537 -Managed=\u53EF\u7BA1\u7406 -Management=\u7BA1\u7406 -ManagerSystem=\u7BA1\u7406\u7CFB\u7EDF -Map\ Show\ Type=\u5730\u56FE\u5C55\u73B0\u65B9\u5F0F -March=\u4E09\u6708 -Margin=\u8FB9\u8DDD -Marker=\u6807\u8BB0 -Max=\u6700\u5927 -Max\ Alpha=\u4E0D\u900F\u660E -Max-Decimal_Length=\u6700\u5927\u5C0F\u6570\u957F\u5EA6 -Max-Files_Length=\u6700\u591A\u4E0A\u4F20\u6587\u4EF6\u6570 -Max-Mem-Row-Count=\u7F13\u5B58\u81F3\u78C1\u76D8\u5F53\u8BB0\u5F55\u6570\u5927\u4E8E -MaxMarker=\u5927\u6807\u8BB0 -Max_Peak_Limit=\u6700\u5927\u8FDE\u63A5\u6570 -Max_Value=\u6700\u5927\u503C -May=\u4E94\u6708 -Means=\u8868\u793A -Measure=\u5EA6\u91CF\u503C -Memory_Usage=\u5185\u5B58\u4F7F\u7528\u60C5\u51B5 -Merge=\u5408\u5E76 -Message=\u4FE1\u606F -Meter-Style=\u4EEA\u8868\u76D8\u98CE\u683C -MeterAngle=\u4EEA\u8868\u76D8\u89D2\u5EA6 -Meter_More=\u591A\u6307\u9488\u4EEA\u8868\u76D8 -Meter_Single=\u5355\u6307\u9488\u4EEA\u8868\u76D8 -Meter_Style_Set=\u98CE\u683C\u8BBE\u7F6E -MicrosoftYaHeiInCN=\u5FAE\u8F6F\u96C5\u9ED1 -Milliseconds=\u6BEB\u79D2 -Min-Height=\u6700\u5C0F\u9AD8\u5EA6 -Min_Value=\u6700\u5C0F\u503C -Minute=\u5206\u949F -MinuteWrong=\u6267\u884C\u65F6\u70B9\u7684\u5206\u949F\u586B\u5199\u9519\u8BEF -Mobile-show=\u79FB\u52A8\u7EC8\u7AEF\u62A5\u8868\u5C55\u73B0 -MobilePad=\u5E73\u677F -MobilePhone=\u624B\u673A -Mobile_BI=\u79FB\u52A8\u51B3\u7B56\u5E73\u53F0 -Mobile_Terminal=\u79FB\u52A8\u7AEF -Mobile_Widget_Table=\u79FB\u52A8\u7AEF\u63A7\u4EF6\u5217\u8868 -Mobile_Widget_Tree=\u63A7\u4EF6\u6811 -Model=\u6A21\u5F0F -Model_Selection=\u5173\u8054\u65B9\u5F0F -ModifiedColumnName=\u4FEE\u6539\u540E\u5217\u540D -Modify=\u4FEE\u6539 -ModifySecretWillRemoveUser=\u4FEE\u6539\u52A0\u5BC6\u65B9\u5F0F\u4F1A\u6E05\u7A7A\u5DF2\u6709\u7528\u6237\u6570\u636E -Modify_Column=\u4FEE\u6539\u5217 -Modify_Column_Attibute=\u4FEE\u6539\u5217\u5C5E\u6027 -Moment=\u65F6\u523B -Mon=\u4E00 -Month=\u6708 -More=\u66F4\u591A -More-Field_Name=\u591A\u4E2A\u5B57\u6BB5\u7684\u540D -More-information=\u66F4\u591A\u4FE1\u606F -MostTimeRestart=\u5C1D\u8BD5\u91CD\u65B0\u542F\u52A8\u6700\u591A\u6B21\u6570 -Mouse_move-background=\u9F20\u6807\u79FB\u52A8\u5230\u6309\u94AE\u4E0A\u7684\u80CC\u666F\uFF0C\u82E5\u65E0\u5219\u4E0D\u6539\u53D8\u80CC\u666F -Muiti_In=\u591A\u5C42\u94BB\u53D6 -Multi-Excel-Import=\u6279\u91CFExcel\u6570\u636E\u5BFC\u5165 -MultiFileUpload=\u591A\u6587\u4EF6\u4E0A\u4F20 -Multi_nam_formula=\ \u6570\u636E\u96C6\u540D\: \u6570\u636E\u96C6\u6761\u4EF6\: -Multiline=\u591A\u884C\u7F16\u8F91 -My_Computer=\u6211\u7684\u7535\u8111 -N.O.=\u7B2C -NC-Des=\u8BE5\u5BB9\u5668\u5E94\u8BE5\u5305\u542B\u5317\u90E8\u548C\u4E2D\u90E8\u5757 -NNormal=\u6B63\u5E38 -NO=\u5426 -NOT_NULL_Des=\u4E0D\u80FD\u4E3A\u7A7A -NO_Border_Line=\u65E0\u6846\u7EBF -NS-exception_readError=\u9519\u8BEF\u4EE3\u7801\:1305 \u6A21\u677F\u6587\u4EF6\u89E3\u6790\u51FA\u9519 -NS-war-remote=\u9519\u8BEF\u4EE3\u7801\:1117 \u538B\u7F29\u90E8\u7F72\u4E0D\u652F\u6301\u8FDC\u7A0B\u8BBE\u8BA1 -NS_LayerReport_MultiDs=\u9519\u8BEF\u4EE3\u7801\:1101 \u884C\u5F0F\u5F15\u64CE\u4E0D\u652F\u6301\u591A\u6570\u636E\u6E90\u5C55\u793A -NS_LayerReport_RowCol=\u9519\u8BEF\u4EE3\u7801\:1102 \u884C\u5F0F\u5F15\u64CE\u4E0D\u652F\u6301\u6761\u4EF6\u5C5E\u6027\u4FEE\u6539\u884C\u9AD8\u5217\u5BBD -NS_LayerReport_adFormula=\u9519\u8BEF\u4EE3\u7801\:1106 \u884C\u5F0F\u5F15\u64CE\u4E0D\u652F\u6301\u5C42\u6B21\u5750\u6807 -NS_LayerReport_columns=\u9519\u8BEF\u4EE3\u7801\:1107 \u884C\u5F0F\u5F15\u64CE\u4E0D\u652F\u6301\u5206\u680F -NS_LayerReport_expandAttr=\u9519\u8BEF\u4EE3\u7801\:1104 \u884C\u5F0F\u5F15\u64CE\u53EA\u652F\u6301\u4ECE\u4E0A\u5230\u4E0B\u6269\u5C55\u5C5E\u6027\uFF0C\u5176\u5B83\u5C5E\u6027\u8BBE\u7F6E\u5747\u4E0D\u652F\u6301 -NS_LayerReport_float=\u9519\u8BEF\u4EE3\u7801\:1105 \u884C\u5F0F\u5F15\u64CE\u4E0D\u652F\u6301\u60AC\u6D6E\u5143\u7D20 -NS_LayerReport_present=\u9519\u8BEF\u4EE3\u7801\:1103 \u884C\u5F0F\u5F15\u64CE\u4E0D\u652F\u6301\u5F62\u6001 -NS_LayerReport_sheets=\u9519\u8BEF\u4EE3\u7801\:1108 \u884C\u5F0F\u5F15\u64CE\u4E0D\u652F\u6301Sheet\u95F4\u8FD0\u7B97 -NS_LayerReport_subreport=\u9519\u8BEF\u4EE3\u7801\:1109 \u884C\u5F0F\u5F15\u64CE\u4E0D\u652F\u6301\u5B50\u62A5\u8868 -NS_browser_lang=\u9519\u8BEF\u4EE3\u7801\:1119 \u672A\u627E\u5230\u5F53\u524D\u6D4F\u89C8\u5668\u8BED\u8A00\u5BF9\u5E94\u7684\u56FD\u9645\u5316\u6587\u4EF6,\u5C06\u4EE5\u4E2D\u6587\u4F5C\u4E3A\u9ED8\u8BA4\u8BED\u8A00 -NS_cell_formula=\u9519\u8BEF\u4EE3\u7801\:1203 \u9519\u8BEF\u7684\u516C\u5F0F\u53C2\u6570 -NS_exception_deathCircle=\u9519\u8BEF\u4EE3\u7801\:1303 \u5355\u5143\u683C\u8BA1\u7B97\u6B7B\u5FAA\u73AF -NS_exception_noTemplate=\u9519\u8BEF\u4EE3\u7801\:1304 \u6CA1\u6709\u627E\u5230\u6A21\u677F\u6587\u4EF6 -NS_exception_ps=\u9519\u8BEF\u4EE3\u7801\:1302 \u884C\u9AD8\u5217\u5BBD\u8D85\u51FA\u9875\u9762\u5927\u5C0F\u8BBE\u7F6E -NS_exception_readError=\u9519\u8BEF\u4EE3\u7801\:1305 \u6A21\u677F\u6587\u4EF6\u89E3\u6790\u51FA\u9519 -NS_exception_readExcelError=\u9519\u8BEF\u4EE3\u7801\:1306 \u6587\u4EF6\u89E3\u6790\u51FA\u9519 -NS_exception_td=\u9519\u8BEF\u4EE3\u7801\:1301 \u6570\u636E\u96C6\u914D\u7F6E\u9519\u8BEF -NS_export_2007=\u9519\u8BEF\u4EE3\u7801\:1122 \u5BFC\u51FAExcel2007\u9700\u8981jdk\u7248\u672C1.5\u4EE5\u4E0A -NS_export_excelCellBg=\u9519\u8BEF\u4EE3\u7801\:1112 \u5BFC\u51FAExcel\u5355\u5143\u683C\u80CC\u666F\u53EA\u652F\u6301\u7EAF\u8272 -NS_export_excelFormula=\u9519\u8BEF\u4EE3\u7801\:1110 \u5BFC\u51FAExel\u4E0D\u652F\u6301\u8BE5\u516C\u5F0F -NS_export_excelHtml=\u9519\u8BEF\u4EE3\u7801\:1111 \u5BFC\u51FAExcel\u4E0D\u652F\u6301Html\u4E2D\u90E8\u5206\u6807\u7B7E -NS_export_wordPageSize=\u9519\u8BEF\u4EE3\u7801\:1114 \u5BFC\u51FAWord\u4E0D\u652F\u6301\u591ASheet\u4E0B\u7684\u4E0D\u540C\u9875\u9762\u8BBE\u7F6E -NS_print_flashPaperSetting=\u9519\u8BEF\u4EE3\u7801\:1118 Flash\u6253\u5370\u4E0D\u652F\u6301\u5C06\u9875\u9762\u8BBE\u7F6E\u4F20\u9012\u7ED9\u6253\u5370\u673A -NS_print_noApplet=\u9519\u8BEF\u4EE3\u7801\:1202 \u5F53\u524D\u5DE5\u7A0B\u76EE\u5F55\u4E0B\u672A\u53D1\u73B0Applet\u5305 -NS_print_pdf=\u9519\u8BEF\u4EE3\u7801\:1121 PDF\u6253\u5370\u53EA\u652F\u6301IE\u5185\u6838\u6D4F\u89C8\u5668,\u5176\u4ED6\u6D4F\u89C8\u5668\u5C06\u5BFC\u51FAPDF\u6587\u4EF6 -NS_print_plugin=\u9519\u8BEF\u4EE3\u7801\:1201 \u5F53\u524D\u6D4F\u89C8\u5668\u672A\u5B89\u88C5\u6253\u5370\u6240\u9700\u63D2\u4EF6 -NS_register_ipFull=\u9519\u8BEF\u4EE3\u7801\:1115 \u7CFB\u7EDF\u5E76\u53D1\u6570\u5DF2\u6EE1 -NS_register_lic=\u9519\u8BEF\u4EE3\u7801\:1206 \u5F53\u524D\u914D\u7F6E\u76EE\u5F55\u4E0B\u672A\u53D1\u73B0\u6CE8\u518C\u6587\u4EF6 -NS_register_sense=\u9519\u8BEF\u4EE3\u7801\:1205 \u52A0\u5BC6\u72D7\u8BFB\u53D6\u5931\u8D25 -Name=\u540D\u5B57 -Name_has_Colon=\u540D\u5B57\: -NanchangCity=\u5357\u660C\u5E02 -NanjingCity=\u5357\u4EAC\u5E02 -NanningCity=\u5357\u5B81\u5E02 -Nation=\u56FD\u5BB6 -Need=\u9700\u8981 -Need_Max_Value=\u9700\u8981\u6700\u5927\u503C -Need_Min_Value=\u9700\u8981\u6700\u5C0F\u503C -Need_Purchase_Info=\u60A8\u9700\u8981\u4E00\u4E2A\u6CE8\u518C\u7801\u6216\u8005\u8BE5\u62A5\u8868\u670D\u52A1\u5668\u7684\u4F7F\u7528\u4EBA\u6570\u8D85\u8FC7\u4E86\u6CE8\u518C\u9650\u5236\u7684\u6570\u91CF -Need_Select_SAP_Task=\u5FC5\u987B\u9009\u62E9\u4E00\u4E2A\u8F6C\u6362\u4EFB\u52A1 -Needle=\u6307\u9488 -Needle\ Value=\u6307\u9488\u5BF9\u5E94\u7684\u503C -Neimenggu=\u5185\u8499\u53E4\u81EA\u6CBB\u533A -New=\u65B0\u5EFA -NewAffairToHandle=\u60A8\u6709\u65B0\u7684\u4EE3\u529E\u4E8B\u52A1\u9700\u8981\u5904\u7406 -New_Value=\u65B0\u503C -New_name=\u65B0\u540D\u79F0 -New_offset=\u65B0\u5EFA\u504F\u79FB -Next=\u4E0B\u4E00\u6B65 -NextToAxis=\u8F74\u65C1 -Next_Month=\u4E0B\u4E00\u6708 -Next_Year=\u4E0B\u4E00\u5E74 -Ningxia=\u5B81\u590F\u56DE\u65CF\u81EA\u6CBB\u533A -No=\u5426 -No-Privilege=\u6CA1\u6709\u6743\u9650 -No-Supported-File-Types=\u4E0D\u652F\u6301\u7684\u6587\u4EF6\u7C7B\u578B -No-tableData=\u6CA1\u6709\u8FD4\u56DE\u6570\u636E\u96C6 -NoAffairToHandle=\u6682\u65F6\u6CA1\u6709\u4E8B\u52A1 -NoLimit=\u65E0\u9650\u671F -No_Advanced_Chart=\u5F53\u524D\u7248\u672C \u65E0\u590D\u6742\u7EDF\u8BA1\u56FE \u6B64\u529F\u80FD\uFF0C\u8BF7\u8D2D\u4E70\u9AD8\u7EA7\u7248\u672C\u3002 -No_Editor_Property_Definition=\u8BE5\u7F16\u8F91\u5668\u6CA1\u6709\u5C5E\u6027\u5B9A\u4E49 -No_Processor=\u6CA1\u6709\u5904\u7406\u5668 -No_Wanted_Result=\u6CA1\u6709\u6EE1\u8DB3\u6761\u4EF6\u7684\u7ED3\u679C -No_offset=\u65E0\u504F\u79FB -None=\u65E0 -Normal=\u666E\u901A -NotAllow=\u4E0D\u5408\u6CD5 -NotSupportIMG&ReportData=\u4E0D\u652F\u6301\u56FE\u7247\u5F62\u5F0F\u548C\u5355\u5143\u683C\u6570\u636E\u6E90 -Not_Allow_To_Upload_File=\u662F\u7981\u6B62\u4E0A\u4F20\u7684\u6587\u4EF6\u7C7B\u578B -Not_Appendable=\u4E0D\u53EF\u6269\u5C55 -Not_Exist=\u4E0D\u5B58\u5728 -Not_Exsit=\u4E0D\u5B58\u5728\u4E8E\u62A5\u8868 -Not_Found_Reportlet=\u6CA1\u6709\u627E\u5230\u7F51\u7EDC\u62A5\u8868 -Not_Found_XML_File=\u6CA1\u6709\u627E\u5230XML\u6587\u4EF6 -Not_Imported=\u5C1A\u672A\u5BFC\u5165 -Not_In_List=\u503C\u4E0D\u5728\u4E0B\u62C9\u5217\u8868\u5185 -Not_Layer_Report=\u975E\u5C42\u5F0F\u62A5\u8868 -Not_Logged_In=\u672A\u767B\u5F55 -Not_Set_Verify_Attribute=\u6CA1\u6709\u8BBE\u7F6E\u6821\u9A8C\u5C5E\u6027 -Not_Set_Verify_Class_Path=\u627E\u4E0D\u5230\u6821\u9A8C\u7C7B -Not_Support_This_Method=\u4E0D\u652F\u6301\u8BE5\u65B9\u6CD5 -Not_limited_IP=\u4E0D\u9650\u5E76\u53D1 -Not_use_a_cell_attribute_table_editing=\u60A8\u4E0D\u53EF\u4EE5\u7528\u5355\u5143\u683C\u5C5E\u6027\u8868\u7F16\u8F91 -Note=\u5907\u6CE8 -Note_Normal-Formula=\u666E\u901A\u5206\u7EC4\u53EA\u80FD\u5904\u7406\u7B80\u5355\u7684\u5206\u7EC4\uFF0C\u516C\u5F0F\u5206\u7EC4\u53EF\u4EE5\u5728\u590D\u6742\u60C5\u51B5\u4E0B\u4F7F\u7528\u7A0B\u5E8F\uFF08\u516C\u5F0F\uFF0C\u51FD\u6570\uFF09\u8FDB\u884C\u5206\u7EC4\u3002 -NoticeAndSave=\u901A\u77E5\u4E0E\u5B58\u6863 -November=\u5341\u4E00\u6708 -Null=\u7A7A\u503C -Null_Value_Show=\u7A7A\u503C\u663E\u793A -Number=\u6570\u5B57 -Number-Format=\u6570\u5B57\u683C\u5F0F -Number-Max_Int_Length=\u6700\u5927\u6574\u6570\u957F\u5EA6 -Numbers=\u6570\u76EE -OK=\u786E\u5B9A -October=\u5341\u6708 -Odd=\u5947\u6570 -Offline=\u79BB\u7EBF -Offline-Connect_Failed=\u65E0\u6CD5\u8FDE\u63A5\u5230\u670D\u52A1\u5668\u3002\u8BF7\u786E\u8BA4\u672C\u673A\u7684\u7F51\u7EDC\u8FDE\u63A5\u72B6\u51B5\u548C\u670D\u52A1\u5668\u7684\u5DE5\u4F5C\u72B6\u6001\u540E\u91CD\u8BD5\u3002 -Offline-Contain_Unsupport_Function=\u5305\u542B\u4E0D\u8BC6\u522B\u7684\u516C\u5F0F -Offline-ReadMe=\u6253\u5F00html\u6587\u4EF6\u8FDB\u884C\u79BB\u7EBF\u586B\u62A5\uFF0C\u6570\u636E\u5C06\u5B9E\u65F6\u4FDD\u5B58\u5728\u672C\u5730\u3002\r\n\u8054\u7F51\u540E\u53EF\u4EE5\u5C06\u672C\u5730\u6570\u636E\u63D0\u4EA4\u81F3\u670D\u52A1\u5668\u7AEF\u3002\r\n\u82E5\u8981\u79FB\u52A8\u6587\u4EF6\uFF0C\u8BF7\u62F7\u8D1D\u6574\u4E2A\u6587\u4EF6\u5939\u3002\r\n\u6CE8\uFF1A\u624B\u52A8\u6E05\u9664\u6D4F\u89C8\u5668\u7F13\u5B58(Cookie)\u4F1A\u5BFC\u81F4\u6570\u636E\u4E22\u5931\u3002 -Offline-Verify_ToolTips=\u63D0\u4EA4\u6821\u9A8C\u4E2D\u5305\u542B\u79BB\u7EBF\u72B6\u6001\u65E0\u6CD5\u6267\u884C\u7684\u6821\u9A8C\u89C4\u5219\uFF0C\u7EE7\u7EED\u5C06\u5FFD\u7565\u8FD9\u4E9B\u6821\u9A8C\u89C4\u5219\uFF0C\u4F46\u662F\u5728\u8054\u7F51\u63D0\u4EA4\u65F6\u4F1A\u88AB\u91CD\u65B0\u6267\u884C\uFF0C\u662F\u5426\u7EE7\u7EED\u6821\u9A8C\uFF1F -Old-Style=\u590D\u53E4 -One-Name_Value=\u4E00\u4E2A\u5B57\u6BB5\u7684\u503C -Only=\u53EA -Only\ Use\ Before=\u4EC5\u4F7F\u7528\u524D -Only_selected_cell_can_paste_only=\u53EA\u6709\u9009\u4E2D\u5355\u5143\u683C\u65F6\u624D\u53EF\u4EE5\u7C98\u8D34 -Open=\u6253\u5F00 -OpenAuthConfirm=\u662F\u5426\u542F\u7528\u5206\u7EA7\u6743\u9650\u63A7\u5236 -Open_Synchronized_DataSet=\u5F00\u542F\u540C\u6B65\u6570\u636E\u96C6 -Opened=\u5DF2\u5F00\u542F -Opening_Report=\u6B63\u5728\u6253\u5F00\u62A5\u8868 -Openning=\u6253\u5F00\u4E2D -Operating-Parameters=\u4E0D\u540C\u64CD\u4F5C\u7684\u53C2\u6570\u3002 -Optionns=\u5907\u9009\u9879 -Options=\u9009\u9879 -Options_Sources=\u5907\u9009\u9879\u6765\u6E90 -Or=\u6216 -Or-you=\u6216\u8005\u60A8 -Oracle_All_Tables=\u6240\u6709\u8868 -Orange=\u6A58\u9EC4 -Organization=\u7EC4\u7EC7 -Organization_User=\u7EC4\u7EC7\u7528\u6237 -Original=\u539F\u6709 -OriginalImage=\u539F\u56FE -Original_Marked_Filed=\u539F\u59CB\u6807\u8BB0\u5B57\u6BB5 -Orthogonal\ Projection=\u6B63\u4EA4\u6295\u5F71 -Other=\u5176\u4ED6 -OtherGroup_Name=\u5176\u4ED6\u7EC4\u7684\u540D\u5B57 -Others=\u5176\u5B83 -Out_Border_Line=\u5916\u4FA7\u6846\u7EBF -Out_Thick_Border_Line=\u7C97\u5323\u6846\u7EBF -Output_Excel=Excel\u8F93\u51FA -Output_PDF=PDF\u8F93\u51FA -Output_Word=Word\u8F93\u51FA -Over-Sheet=\u8DE8Sheet\u8BA1\u7B97 -OverLap=\u91CD\u53E0 -Overlapping=\u91CD\u53E0\u578B -Owner=\u4E3B -PDF-Print_Setting=PDF\u6253\u5370\u8BBE\u7F6E -PDF-Print_isPopup=\u662F\u5426\u5F39\u51FA\u8BBE\u7F6E\u6846 -PDF_Print=PDF\u6253\u5370 -PLEASE=\u8BF7 -PM-Privilege_Setting=\u6743\u9650\u8BBE\u7F6E -PM-Use_Custom_Privilege=\u4F7F\u7528\u81EA\u5B9A\u4E49\u6743\u9650 -Page-Attribute=\u5206\u9875\u9875\u9762\u5C5E\u6027 -Page-Setup-Scale-Units=\u9875\u9762\u8BBE\u7F6E\u6807\u5C3A\u5355\u4F4D -PageSetup-End_Column=\u7ED3\u675F\u5217 -PageSetup-End_Row=\u7ED3\u675F\u884C -PageSetup-Finis_Start_Column=\u91CD\u590D\u7ED3\u5C3E\u5217 -PageSetup-Finis_Start_Row=\u91CD\u590D\u7ED3\u5C3E\u884C -PageSetup-First_Page_Number=\u8D77\u59CB\u9875\u7801 -PageSetup-Footer=\u9875\u811A -PageSetup-Header=\u9875\u7709 -PageSetup-Horizontally=\u6C34\u5E73\u5C45\u4E2D -PageSetup-Landscape=\u6A2A\u5411 -PageSetup-Left_to_right=\u5148\u884C\u540E\u5217 -PageSetup-Margin=\u9875\u8FB9\u8DDD -PageSetup-Orientation=\u65B9\u5411 -PageSetup-Overlap_Content=\u91CD\u590D\u5185\u5BB9 -PageSetup-Page=\u9875\u9762 -PageSetup-Page_Order=\u6253\u5370\u987A\u5E8F -PageSetup-Page_Setup=\u9875\u9762\u8BBE\u7F6E -PageSetup-Paper_Size=\u7EB8\u5F20\u5927\u5C0F -PageSetup-Placement_Center_on_Page=\u5C45\u4E2D\u65B9\u5F0F -PageSetup-Portrait=\u7EB5\u5411 -PageSetup-Predefined=\u9884\u5B9A\u4E49 -PageSetup-Repeated_Title=\u91CD\u590D\u7684\u6807\u9898 -PageSetup-Resolution(PPI-Pixel_Per_Inch)=\u5206\u8FA8\u7387(PPI-\u6BCF\u82F1\u5BF8\u50CF\u7D20\u6570) -PageSetup-Saving_current_settings_to_server=\u4FDD\u5B58\u5F53\u524D\u8BBE\u7F6E\u5230\u670D\u52A1\u5668 -PageSetup-Shrink_to_fit_content=\u6839\u636E\u5355\u5143\u683C\u5185\u5BB9\u81EA\u52A8\u8C03\u6574 -PageSetup-Start_Column=\u8D77\u59CB\u5217 -PageSetup-Start_Row=\u8D77\u59CB\u884C -PageSetup-Title_Start_Column=\u91CD\u590D\u6807\u9898\u5217 -PageSetup-Title_Start_Row=\u91CD\u590D\u6807\u9898\u884C -PageSetup-Top_to_bottom=\u5148\u5217\u540E\u884C -PageSetup-Vertically=\u5782\u76F4\u5C45\u4E2D -PageSetup-inches=\u82F1\u5BF8 -PageSetup-mm=\u6BEB\u7C73 -PageURL=\u7F51\u9875URL -Page_Layout=\u9875\u9762\u5E03\u5C40 -Page_Number=\u9875 -Page_Setup=\u9875\u9762\u8BBE\u7F6E -Page_ToolBar_Event=\u9875\u9762\u5DE5\u5177\u680F\u548C\u4E8B\u4EF6 -Page_Total=\u5171 -Pagination=\u5206\u9875 -Panel=\u9762\u677F -PaperSize_ML=\u52A0\u5927 -PaperSize_Rotate=\u65CB\u8F6C -PaperSize_XL=\u7279\u5927 -Para-Body=\u53C2\u6570\u754C\u9762 -Para-Help_Info=\u60A8\u53EF\u4EE5\u70B9\u51FB\u4E0B\u65B9\u5DE5\u5177\u680F\u6700\u5DE6\u4FA7\u6309\u94AE\u6216\u53F3\u952E\u5355\u5143\u683C\u6765\u6DFB\u52A0\u53C2\u6570\u63A7\u4EF6\u3001\u67E5\u8BE2\u6309\u94AE\u7B49\u5143\u7D20 -Para-Shown_On_Default_Parameter_Page=\u663E\u793A\u4E8E\u9ED8\u8BA4\u53C2\u6570\u9875\u9762 -Parameter=\u53C2\u6570 -Parameter-Add_Parameter=\u6DFB\u52A0\u53C2\u6570 -Parameter-Boolean=\u5E03\u5C14\u578B -Parameter-Current=\u5F53\u524D\u6570\u503C -Parameter-Dealwith_Parameter_Result=\u53C2\u6570\u9884\u5904\u7406 -Parameter-Design=\u53C2\u6570\u8BBE\u8BA1 -Parameter-Design_DES=\u6CA1\u6709\u53C2\u6570\u754C\u9762,\u662F\u5426\u9700\u8981\u4F7F\u7528\u9ED8\u8BA4\u7684 -Parameter-Double=\u53CC\u7CBE\u5EA6\u578B -Parameter-Float=\u5355\u7CBE\u5EA6\u578B -Parameter-Formula=\u516C\u5F0F -Parameter-Integer=\u6574\u578B -Parameter-Refresh_Parameter_UI=\u5237\u65B0\u53C2\u6570\u754C\u9762 -Parameter-String=\u5B57\u7B26\u4E32 -ParameterD-Are_you_sure_to_delete_the_selected_parameter=\u4F60\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u7684\u53C2\u6570\u5417? -ParameterD-Background=\u53C2\u6570\u7A97\u4F53\u80CC\u666F -ParameterD-Custom_Parameter=\u81EA\u5B9A\u4E49\u53C2\u6570 -ParameterD-DClick_Edit=\u53CC\u51FB\u4FEE\u6539 -ParameterD-DClick_New_Parameter=\u53CC\u51FB\u65B0\u5EFA\u53C2\u6570 -ParameterD-Delay_Playing=\u70B9\u51FB\u67E5\u8BE2\u524D\u4E0D\u663E\u793A\u62A5\u8868\u5185\u5BB9 -ParameterD-Des1=\u62D6\u62FD\u6216\u8005\u53CC\u51FB\u53C2\u6570\u5217\u8868,\u5F80\u683C\u5B50\u91CC\u9762\u6DFB\u52A0\u53C2\u6570 -ParameterD-Interface=\u754C\u9762 -ParameterD-New_parameter_name=\u65B0\u53C2\u6570\u7684\u540D\u5B57 -ParameterD-Parameter_Interface=\u53C2\u6570\u754C\u9762 -ParameterD-Parameter_name_cannot_be_null=\u53C2\u6570\u7684\u540D\u5B57\u4E0D\u53EF\u4EE5\u4E3A\u7A7A -ParameterD-Parameters_Processor=\u53C2\u6570\u5904\u7406\u5668 -ParameterD-Rename_parameter=\u91CD\u547D\u540D\u53C2\u6570 -ParameterD-Report_Parameter=\u62A5\u8868\u53C2\u6570 -ParameterD-Should_select_a_reportlet_first=\u9700\u8981\u5148\u9009\u62E9\u4E00\u4E2AReportlet -ParameterD-Show_Parameter_Window=\u663E\u793A\u53C2\u6570\u7A97\u4F53 -ParameterD-Show_Window=\u663E\u793A\u7A97\u53E3 -ParameterD-The_First_List=\u7B2C\u4E00\u4E2A\u5217\u8868 -ParameterD-The_Other=\u5176\u5B83 -ParameterD-The_Second_List=\u7B2C\u4E8C\u4E2A\u5217\u8868 -Parameter_Name=\u53C2\u6570\u540D -Parameter_Name_Can_Not_Be_Empty=\u53C2\u6570\u540D\u4E0D\u80FD\u4E3A\u7A7A -Parameter_Query=\u53C2\u6570\u67E5\u8BE2 -Parameter_Refresh_Waring=\u5237\u65B0\u53C2\u6570\u5C06\u4F1A\u628A\u5F53\u524D\u5E03\u5C40\u6062\u590D\u5230\u9ED8\u8BA4\u5E03\u5C40\uFF0C\u4F46\u4E0D\u4F1A\u6539\u53D8\u683C\u5185\u5BB9\uFF0C\u662F\u5426\u7EE7\u7EED -Parameter_Setting=\u53C2\u6570\u8BBE\u7F6E -Parameters=\u53C2\u6570 -Parameters_name=\u53C2\u6570\u540D\u79F0 -Parameters_use_default_formula=\u4F7F\u7528\u9ED8\u8BA4\u7684\u53C2\u6570\u516C\u5F0F\u503C -Parent=\u7236 -Parent-Directory=\u8BBE\u7F6E\u6D4F\u89C8\u5668\u7236\u76EE\u5F55 -ParentCell_Setting=\u7236\u683C\u8BBE\u7F6E -Parent_Marked_Field=\u7236\u6807\u8BB0\u5B57\u6BB5 -Participants=\u53C2\u4E0E\u8005 -Password=\u5BC6\u7801 -Password_Changed_Successfully=\u5BC6\u7801\u4FEE\u6539\u6210\u529F -Password_Has_Been_Reset_To=\u8BE5\u7528\u6237\u7684\u5BC6\u7801\u5DF2\u7ECF\u91CD\u7F6E\u4E3A -Path=\u8DEF\u5F84 -Pause=\u6682\u505C -PendingVitureDirectiry=\u6302\u8F7D\u865A\u62DF\u76EE\u5F55 -Percent_Stacked_Bar_Chart=\u767E\u5206\u6BD4\u5806\u79EF\u67F1\u5F62\u56FE -Percent_Stacked_Column_Chart=\u767E\u5206\u6BD4\u5806\u79EF\u6761\u5F62\u56FE -Period=\u53E5\u53F7 -Perspective=\u89C6\u7A97 -Perspective\ Deep=\u900F\u89C6\u6DF1\u5EA6 -Perspective\ Projection=\u900F\u89C6\u6295\u5F71 -Phone=\u7535\u8BDD -Pick_One_Column_And_Present_To_Display_Value=\u9009\u4E00\u5217\u4F5C\u4E3A\u5B9E\u9645\u503C\u53CA\u5F62\u6001\u8F6C\u6362\u4E3A\u663E\u793A\u503C -Pick_Two_Columns_As_Actual_And_Display_Value=\u9009\u4E24\u5217\u4F5C\u4E3A\u5B9E\u9645\u503C\u548C\u663E\u793A\u503C -PieStyle=\u997C\u72B6 -Pink=\u7C89\u7EA2 -Pitch_Percentage=\u95F4\u8DDD\u767E\u5206\u6BD4 -Plan=\u8BA1\u5212 -Plane3D=\u5E73\u97623D -Platform=\u5E73\u53F0 -Platform-Create_Table=\u521B\u5EFA\u8868 -Platform-DB_Connection_Create_Failure=\u6570\u636E\u5E93\u8FDE\u63A5\u521B\u5EFA\u5931\u8D25 -Platform-DB_Connection_Create_Successful=\u6570\u636E\u5E93\u8FDE\u63A5\u521B\u5EFA\u6210\u529F -Platform-Table_Create_Failure=\u6570\u636E\u5E93\u8868\u521B\u5EFA\u5931\u8D25 -Platform_Module_DataSetting=B/S\u8BBE\u8BA1\u5668\u914D\u7F6E -Platform_Module_Log=\u65E5\u5FD7 -Platform_Module_PostManager=\u516C\u544A\u7BA1\u7406 -Platform_Module_WidgetletManager=\u4E3B\u9875\u63A7\u4EF6\u5E93\u7BA1\u7406 -Platform_Roles_Has_Changed=\u5E73\u53F0\u89D2\u8272\u5DF2\u4FEE\u6539\uFF0C\u662F\u5426\u91CD\u65B0\u8F7D\u5165\uFF1F -Please-Select-Cell-E=\u8BF7\u9009\u4E2D\u8981\u5220\u9664\u7684\u884C -Please-Select-Float-E=\u8BF7\u9009\u4E2D\u8981\u5220\u9664\u7684\u60AC\u6D6E\u5143\u7D20 -Please-Wait=\u8BF7\u7A0D\u5019 -Please_Drag=\u8BF7\u62D6\u5165\u884C\u5217\u5B57\u6BB5\u3001\u6C47\u603B\u5B57\u6BB5 -Please_Drag_ParaPane= -Please_Enter=\u8BF7\u8F93\u5165 -Please_Input_A_Effect_One=\u8BF7\u8F93\u5165\u4E00\u4E2A\u6709\u6548\u7684\u53C2\u6570\u540D -Please_Input_A_Widget_Name=\u8BF7\u8F93\u5165\u63A7\u4EF6\u540D -Please_Input_The_Key=\u8BF7\u8F93\u5165\u5BF9\u5E94\u5730\u56FE\u4F7F\u7528\u7684key -Please_Install=\u8BF7\u5B89\u88C5 -Please_Rename=\u8BF7\u91CD\u547D\u540D -Please_Select=\u8BF7\u9009\u62E9 -Please_Set_Repeat_First=\u8BF7\u5148\u8BBE\u7F6E\u91CD\u590D\u6807\u9898\u884C\u548C\u5217 -Please_enter_the_export_file_name=\u8BF7\u8F93\u5165\u5BFC\u51FA\u6587\u4EF6\u540D -Please_input_with_right_format=\u8BF7\u7528\u6B63\u786E\u7684\u683C\u5F0F\u8F93\u5165 -Pointer-A-Tick-Order=\u6307\u9488\u503C\u53CA\u523B\u5EA6\u503C\u6570\u91CF\u7EA7 -Poly=\u805A\u5408\u62A5\u8868 -Poly-Block_Attr=\u9648\u745C -Poly-Report_Block=\u62A5\u8868\u7C7B\u578B\u805A\u5408\u5757 -Poly-Report_Component=\u805A\u5408\u62A5\u8868\u7EC4\u4EF6 -PolyAccessWarning-NotSupport=\u60A8\u6240\u8BBF\u95EE\u7684\u6A21\u677F\u542B\u6709\u805A\u5408\u62A5\u8868\uFF0C\u5B83\u5E76\u4E0D\u652F\u6301 -Poly_Name=\u805A\u5408\u5757\u540D -Polyblock-Attribute=\u805A\u5408\u5757\u5C5E\u6027 -Polyblock-Fixed_Height=\u56FA\u5B9A\u805A\u5408\u5757\u9AD8\u5EA6 -Polyblock-Fixed_Width=\u56FA\u5B9A\u805A\u5408\u5757\u5BBD\u5EA6 -Polybolck=\u805A\u5408\u5757 -PopChart=\u60AC\u6D6E\u7A97\u56FE\u8868 -Popup=\u5F39\u51FA -Port=\u7AEF\u53E3 -Position=\u4F4D\u7F6E -Position_Name=\u804C\u4F4D\u540D\u79F0 -Post=\u804C\u52A1 -PostAttachment=\u4E0A\u4F20\u9644\u4EF6 -PostCode=\u90AE\u653F\u7F16\u7801 -PreStyle=\u9884\u5B9A\u4E49\u914D\u8272 -Preference-Choose_Configuration_File=\u9009\u62E9\u914D\u7F6E\u6587\u4EF6 -Preference-Column_Header_Visible=\u5217\u6807\u9898\u53EF\u89C1 -Preference-Custom=\u81EA\u5B9A\u4E49 -Preference-Export_Configuration_File=\u5BFC\u51FA\u914D\u7F6E\u6587\u4EF6 -Preference-Function=\u529F\u80FD\u8BBE\u7F6E -Preference-Grid_Line_Color=\u7F51\u683C\u7EBF\u989C\u8272 -Preference-Horizontal_Scroll_Bar_Visible=\u6C34\u5E73\u6EDA\u52A8\u6761\u53EF\u89C1 -Preference-Is_Drag_Permited=\u652F\u6301\u62D6\u62FD -Preference-JDK_Home=JDK\u8DEF\u5F84 -Preference-Locale=\u56FD\u9645\u5316 -Preference-Menu_Configuration=\u83DC\u5355\u914D\u7F6E -Preference-Pagination_Line_Color=\u5206\u9875\u7EBF\u989C\u8272 -Preference-Predefined=\u9884\u5B9A\u4E49 -Preference-Row_Header_Visible=\u884C\u6807\u9898\u53EF\u89C1 -Preference-Setting_Colors=\u989C\u8272\u8BBE\u7F6E -Preference-Setting_Grid=\u7F51\u683C\u8BBE\u7F6E -Preference-Setting_Visible=\u53EF\u89C1\u8BBE\u7F6E -Preference-Support_Cell_Editor_Definition=\u652F\u6301\u5355\u5143\u683C\u7F16\u8F91\u5668 -Preference-Support_Default_Parent_Calculate=\u9ED8\u8BA4\u7236\u683C\u8BA1\u7B97 -Preference-Support_Undo=\u652F\u6301\u64A4\u9500 -Preference-Undo_Cacheable=\u64A4\u9500\u4E4B\u78C1\u76D8\u7F13\u5B58 -Preference-Vertical_Scroll_Bar_Visible=\u7AD6\u76F4\u6EDA\u52A8\u6761\u53EF\u89C1 -PrepareExpression=\u9884\u7F6E\u8868\u8FBE\u5F0F -Prepare_Export=\u5F00\u59CB\u5BFC\u51FA\uFF0C\u8BF7\u7A0D\u5019 -Present=\u5F62\u6001 -Present-Formula_Present=\u516C\u5F0F\u5F62\u6001 -Present-No_Present=\u53D6\u6D88\u5F62\u6001\u8BBE\u7F6E -Prev_Month=\u4E0A\u4E00\u6708 -Prev_Year=\u4E0A\u4E00\u5E74 -FR-Designer_Preview=\u9884\u89C8 -Preview-Assign_Margin=\u8C03\u6574\u8FB9\u8DDD -Preview_ToolTips=\u9884\u89C8\u63D0\u793A -Preview_Used_Time=\u9884\u89C8\u5DF2\u7528\u65F6\u95F4 -Previous=\u4E0A\u4E00\u6B65 -Previous_Node_Staff=\u4E0A\u8282\u70B9\u4EBA\u5458 -Print=\u6253\u5370 -Print-Print_To_Fit_Paper_Size=\u6839\u636E\u7EB8\u5F20\u5927\u5C0F\u7F29\u653E\u6253\u5370 -PrintFile=\u6253\u5370\u751F\u6210\u7684\u6587\u4EF6 -PrintP-First=\u9996\u9875(F) -PrintP-Last=\u672B\u9875(L) -PrintP-Next=\u4E0B\u4E00\u9875(N) -PrintP-PageSetup=\u9875\u9762\u8BBE\u7F6E(S) -PrintP-Previous=\u4E0A\u4E00\u9875(P) -PrintP-Print=\u6253\u5370(T) -PrintP-Print_Preview=\u6253\u5370\u9884\u89C8 -Print_As_Image=\u4EE5\u56FE\u7247\u65B9\u5F0F\u6253\u5370( \u9488\u5F0F\u6253\u5370\u673A\u63A8\u8350\u4F7F\u7528 ) -Print_Setting=\u6253\u5370\u8BBE\u7F6E -Print_copy=\u6253\u5370\u4EFD\u6570 -Printer=\u6253\u5370\u673A -Printer-Alias=\u522B\u540D -Printer-All_Printer_Groups=\u6240\u6709\u6253\u5370\u673A\u7EC4 -Printer-All_Printers=\u6240\u6709\u6253\u5370\u673A -Printer-Are_you_sure_to_delete_the_selected_printer_group=\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u6253\u5370\u673A\u7EC4 -Printer-Are_you_sure_to_delete_this_alias=\u786E\u5B9A\u5220\u9664\u8BE5\u522B\u540D -Printer-Define_Printer_Group=\u5B9A\u4E49\u7684\u6253\u5370\u673A\u7EC4 -Printer-Defined_Printer_Groups=\u5DF2\u5B9A\u4E49\u7684\u6253\u5370\u673A\u7EC4 -Printer-Edit_All_Printer_Groups=\u7F16\u8F91\u6240\u6709\u6253\u5370\u673A\u7EC4 -Printer-New_Printer_Group=\u65B0\u5EFA\u6253\u5370\u673A\u7EC4 -Printer-Printer_Group=\u6253\u5370\u673A\u7EC4 -Printer-Printer_Manager=\u6253\u5370\u673A\u7BA1\u7406 -Printer-Remove_Alias=\u79FB\u9664\u522B\u540D -Printer-Remove_Printer_Group=\u5220\u9664\u6253\u5370\u673A\u7EC4 -Printer-Rename_Printer=\u91CD\u547D\u540D\u6253\u5370\u673A -Printer-Rename_Printer_Group=\u91CD\u547D\u540D\u6253\u5370\u673A\u7EC4 -Printer-Save_Current_Work=\u662F\u5426\u4FDD\u5B58\u73B0\u6709\u5DE5\u4F5C -Printer-Selected_Printer_Groups=\u5DF2\u9009\u62E9\u7684\u6253\u5370\u673A\u7EC4 -Printer-Selected_Printers=\u5DF2\u9009\u62E9\u7684\u6253\u5370\u673A -Printer-Set_Alias=\u8BBE\u7F6E\u522B\u540D -Printing=\u6B63\u5728\u6253\u5370 -Priority=\u4F18\u5148\u7EA7 -Privilege=\u6743\u9650 -Privilege-Authority_Must_Be=\u6743\u9650\u5FC5\u987B\u662F -Privilege-Can_Not_Find_The_User_With_The_Name=\u627E\u4E0D\u5230\u7528\u6237\u540D -Privilege-Cannot_Load_User_Just_With_Username_When_Use_LDAP=LDAP\u7528\u6237\u65E0\u6CD5\u52A0\u8F7D\u7528\u6237\u540D -Privilege-Invalid_User_Or_Password=\u7528\u6237\u540D\u6216\u5BC6\u7801\u9519\u8BEF -Privilege-Keep_Login_State=\u4FDD\u6301\u767B\u5F55\u72B6\u6001 -Privilege-Name_Not_Match_Password=\u7528\u6237\u540D\u548C\u5BC6\u7801\u4E0D\u5339\u914D -Privilege-No_Authentication=\u6CA1\u6709\u8BA4\u8BC1 -Privilege-No_Privilege=\u6CA1\u6709\u6743\u9650\u67E5\u770B\u6B64\u9875\u9762 -Privilege-No_Such_Authority=\u6CA1\u6709\u6743\u9650\u8BBE\u8BA1\u6A21\u677F -Privilege-Password_Can_Not_Be_Null=\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A -Privilege-Post_List=\u804C\u4F4D\u5217\u8868 -Privilege-Select_Organization=\u9009\u62E9\u7EC4\u7EC7 -Privilege-Select_Organizations=\u9009\u62E9\u7EC4\u7EC7 -Privilege-Select_Role=\u9009\u62E9\u89D2\u8272 -Privilege-Select_Roles=\u9009\u62E9\u89D2\u8272 -Privilege-Select_User=\u9009\u62E9\u7528\u6237 -Privilege-Selected_None_Of_Any_Items=\u6CA1\u6709\u9009\u4E2D\u4EFB\u4F55\u4E00\u9879 -Privilege-The_Authentication_Can_Not_Be_Null=\u8BA4\u8BC1\u4E0D\u80FD\u4E3A\u7A7A -Privilege-The_Authentication_Is_Not_Supported=\u65E0\u6CD5\u652F\u6301\u8BA4\u8BC1 -Privilege-The_Password_Of_The_User_Is_Invalid=\u9519\u8BEF\u7684\u5BC6\u7801 -Privilege-The_Request_Is_Not_Instanceof_HttpServletRequest=\u8BE5\u8BF7\u6C42\u4E0D\u662FHTTP\u8BF7\u6C42 -Privilege-The_Response_Is_Not_Instanceof_HttpServletResponse=\u8BE5\u54CD\u5E94\u4E0D\u662FHTTP\u54CD\u5E94 -Privilege-The_Role_Config_Can_Not_Be_Null=\u89D2\u8272\u914D\u7F6E\u4E0D\u80FD\u4E3A\u7A7A -Privilege-The_Url_Can_Not_Be_Null=\u8BA4\u8BC1\u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A -Privilege-The_Url_Must_Be_Specified=\u5FC5\u987B\u6307\u5B9AURL -Privilege-The_User_Account_Is_Expired=\u6B64\u7528\u6237\u540D\u5DF2\u7ECF\u8FC7\u671F -Privilege-The_User_Account_Is_Locked=\u6B64\u7528\u6237\u540D\u5DF2\u88AB\u9501\u5B9A -Privilege-The_User_Config_Can_Not_Be_Null=\u7528\u6237\u914D\u7F6E\u4E0D\u80FD\u4E3A\u7A7A -Privilege-The_User_Service_Can_Not_Be_Null=\u7528\u6237\u670D\u52A1\u4E0D\u80FD\u4E3A\u7A7A -Privilege-The_User_Service_Must_Be_LDAPUserService=\u5FC5\u987B\u662FLDAP\u7528\u6237 -Privilege-Your_Authentication_Can_Not_Access_The_Reportlet=\u4F60\u7684\u8BA4\u8BC1\u65E0\u6743\u8BBF\u95EE\u8BE5\u76EE\u5F55 -Privilege_Allocate=\u6743\u9650\u5206\u914D -Privilege_Form=\u8868\u5355 -Privilege_Login_Name=\u767B\u5F55\u540D -Privilege_Use_Privilege=\u542F\u7528\u5185\u7F6E\u6743\u9650 -Procedure-Warning=\u5F53\u524D\u5B58\u50A8\u8FC7\u7A0B\u4E0D\u5305\u542B\u53C2\u6570\u6216\u60A8\u5F53\u524D\u767B\u5F55\u7528\u6237\u540D\u4E0ESchema\u4E0D\u5339\u914D\uFF0C
\u7CFB\u7EDF\u65E0\u6CD5\u4E3A\u60A8\u81EA\u52A8\u52A0\u8F7D\u53C2\u6570\uFF0C\u8BF7\u624B\u52A8\u6DFB\u52A0 -ProcedureSameWarning=\u5B58\u50A8\u8FC7\u7A0B\u4E2D\u6709\u6570\u636E\u96C6\u540D\u5B57\u548C\u5176\u4ED6\u6570\u636E\u96C6\u540D\u5B57\u4E00\u6837\uFF0C\u8BF7\u4FEE\u6539\uFF01 -ProcessManager=\u6D41\u7A0B\u7BA1\u7406 -ProcessName=\u6D41\u7A0B\u540D\u79F0 -ProcessStartedBySelf=\u6211\u5F00\u59CB\u7684\u6D41\u7A0B -Processor_Parameter=\u5904\u7406\u5668\u53C2\u6570 -Product_Demo=\u4EA7\u54C1\u6F14\u793A -Product_improve=\u4EA7\u54C1\u6539\u826F -Projection=\u6295\u5F71 -Property=\u5C5E\u6027 -Prospecting_File=\u52D8\u9519\u6587\u4EF6 -Prospecting_File_Error=\u52D8\u9519\u6587\u4EF6\u5BFC\u51FA\u65F6\u53D1\u751F\u9519\u8BEF -Protected=\u4FDD\u62A4 -Provide=\u63D0\u4F9B -Purple=\u7C89\u7D2B -Pwd_Format=6-16\u4E2A\u5B57\u7B26\uFF0C\u652F\u6301\u5B57\u6BCD\u3001\u6570\u5B57 -QRCode_Config=\u4E8C\u7EF4\u7801\u914D\u7F6E -Qinghai=\u9752\u6D77\u7701 -Quarter=\u5B63\u5EA6 -Query=\u67E5\u8BE2 -QueryResult=\u67E5\u8BE2\u7ED3\u679C -Query_Type=\u67E5\u8BE2\u65B9\u5F0F\: -RCodeDrawPix=\u50CF\u7D20 -RCodeErrorCorrect=\u7EA0\u9519 -RCodeVersion=\u7248\u672C -REDIRECT_FROM=\u6743\u9650\u8DF3\u8F6CFROM\u7684URL -REPORTLET=\u8BBF\u95EE\u6A21\u677F\u7684\u8DEF\u5F84\u7684\u53C2\u6570\u3002 -REPORTLETS=\u8BBF\u95EE\u591A\u5F20\u6A21\u677F\u7684\u8DEF\u5F84\u7684\u53C2\u6570 -REPORT_XML=\u62A5\u8868\u5185\u5BB9\u4F20\u8F93 -RESTART=\u91CD\u542F -RESULTLET=\u8BBF\u95EE\u62A5\u8868\u7ED3\u679C\u8DEF\u5F84\u7684\u53C2\u6570 -RP_Add_MultiNode=\u6DFB\u52A0\u8054\u5408\u586B\u62A5\u8282\u70B9 -RP_Add_Note=\u6DFB\u52A0\u5907\u6CE8 -RP_Add_Process=\u6DFB\u52A0\u6D41\u7A0B -RP_Add_SimpleNode=\u6DFB\u52A0\u666E\u901A\u8282\u70B9 -RP_Add_Task=\u6DFB\u52A0\u4EFB\u52A1 -RP_After_Use=\u540E\uFF0C\u4F7F\u7528 -RP_Alert_Mode=\u63D0\u9192\u65B9\u5F0F -RP_Alert_Setting=\u9884\u8B66\u8BBE\u7F6E -RP_AllProcesses=\u6240\u6709\u6D41\u7A0B -RP_All_Tasks=\u6240\u6709\u4EFB\u52A1 -RP_Authority_Edit=\u6743\u9650\u7F16\u8F91 -RP_Content=\u6B63\u6587 -RP_Cpt_Name=\u6A21\u677F\u540D\u79F0 -RP_Cpt_Operation=\u6A21\u677F\u64CD\u4F5C -RP_Creator=\u521B\u5EFA\u4EBA -RP_Deal_With_It_As_Soon_As_Possible=\u8BF7\u5C3D\u5FEB\u5904\u7406 -RP_Deliver=\u5206\u53D1 -RP_Edit_Process=\u7F16\u8F91\u6D41\u7A0B -RP_Edit_Task=\u7F16\u8F91\u4EFB\u52A1 -RP_Email=\u90AE\u4EF6\u63D0\u9192 -RP_End=\u7ED3\u675F -RP_Everyday=\u6BCF\u65E5 -RP_Execute_Day=\u6267\u884C\u65E5 -RP_Execute_Month=\u6267\u884C\u6708 -RP_Execute_Time=\u6267\u884C\u65F6\u95F4 -RP_Exist_Null_Node=\u8BE5\u8282\u70B9\u4E2D\u5B58\u5728\u672A\u586B\u5199\u9879 -RP_Finished_Task=\u5DF2\u5904\u7406\u4EFB\u52A1 -RP_Have_Come_To_You_For=\u5DF2\u7ECF\u5230\u4F60\u8FD9\u91CC -RP_Invalid_Task_Or_Process=\u4EFB\u52A1\u540D\u79F0\u6216\u6D41\u7A0B\u540D\u79F0\u4E0D\u7B26\u5408\u89C4\u8303 -RP_NO_Privilege=\u6CA1\u6709\u64CD\u4F5C\u6743\u9650 -RP_Node_Description=\u8282\u70B9\u63CF\u8FF0 -RP_Node_Name=\u8282\u70B9\u540D\u79F0 -RP_Operator=\u64CD\u4F5C\u4EBA\u5458 -RP_Overtime=\u8D85\u65F6 -RP_Page_Write=\u9875\u9762\u586B\u62A5 -RP_Pass=\u901A\u8FC7 -RP_Pass_After_All_Operations=\u8BE5\u8282\u70B9\u6240\u6709\u64CD\u4F5C\u4EBA\u5458\u5B8C\u6210\u540E\u6D41\u8F6C -RP_Process_Created_By_Me=\u6211\u521B\u5EFA\u7684\u6D41\u7A0B -RP_Process_Name_Not_Null=\u6D41\u7A0B\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A -RP_Process_Select=\u6D41\u7A0B\u9009\u62E9 -RP_Process_Type=\u6D41\u7A0B\u7C7B\u578B -RP_Process_View=\u4EFB\u52A1\u6D41\u7A0B\u67E5\u770B -RP_Reach_Node=\u5230\u8FBE\u8BE5\u8282\u70B9 -RP_Remove_Process=\u5220\u9664\u6D41\u7A0B -RP_Remove_Task=\u5220\u9664\u4EFB\u52A1 -RP_Report=\u4E0A\u62A5 -RP_Report_Deadline=\u586B\u62A5\u65F6\u9650 -RP_Review=\u5BA1\u6838 -RP_Rollback=\u56DE\u9000 -RP_Rollback_To=\u56DE\u9000\u5230 -RP_Send_Offline_Report=\u53D1\u9001\u79BB\u7EBF\u62A5\u8868 -RP_Send_Time=\u53D1\u9001\u65F6\u95F4 -RP_Sender=\u53D1\u9001\u4EBA -RP_Son_Task=\u5B50\u4EFB\u52A1 -RP_Son_Task_Not_Complete=\u5B50\u4EFB\u52A1\u5C1A\u672A\u5B8C\u6210 -RP_Sponsor=\u53D1\u8D77\u4EBA -RP_Support_Offline=\u652F\u6301\u79BB\u7EBF\u586B\u62A5 -RP_Sure_to_delete_process=\u5220\u9664\u8BE5\u6D41\u7A0B\uFF0C\u5C06\u540C\u65F6\u5220\u9664\u7ED1\u5B9A\u8BE5\u6D41\u7A0B\u7684\u4EFB\u52A1\u3002\u662F\u5426\u5220\u9664\u8BE5\u6D41\u7A0B -RP_System_Message=\u7CFB\u7EDF\u6D88\u606F -RP_Task_Created_By_Me=\u6211\u521B\u5EFA\u7684\u4EFB\u52A1 -RP_Task_List=\u4EFB\u52A1\u5217\u8868 -RP_Task_Operation=\u4EFB\u52A1\u64CD\u4F5C -RP_Task_Operations=\u4EFB\u52A1\u64CD\u4F5C -RP_Task_Status=\u4EFB\u52A1\u72B6\u6001 -RP_Task_Type=\u4EFB\u52A1\u7C7B\u578B -RP_Timed_Write=\u9650\u65F6\u586B\u62A5 -RP_Timing_Issue=\u5B9A\u65F6\u4E0B\u53D1 -RP_To_Check=\u5F85\u5BA1\u6838 -RP_To_Report=\u5F85\u4E0A\u62A5 -RP_Unfinished_Task_Name=\u672A\u5904\u7406\u4EFB\u52A1 -RP_Unlimited=\u4E0D\u9650 -RP_Urgent=\u7D27\u6025 -RP_View_Task=\u67E5\u770B\u4EFB\u52A1 -RWA-Add_Field=\u6DFB\u52A0\u5B57\u6BB5 -RWA-Batch_Modify_Cells=\u6279\u91CF\u4FEE\u6539\u5355\u5143\u683C -RWA-BuildIn_SQL=\u5185\u7F6ESQL -RWA-Class=\u7A0B\u5E8F -RWA-Click_Cell_To_Edit_Value=\u5355\u51FB\u6A21\u677F\u5355\u5143\u683C\u4FEE\u6539\u503C -RWA-Column_Offset=\u5217\u504F\u79FB -RWA-Des1=\u91CD\u65B0\u5237\u65B0\u6240\u6709\u5217\u540D\u4F1A\u6E05\u9664\u5F53\u524D\u8BB0\u5F55 -RWA-Free_SQL=\u81EA\u7531SQL -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 -RWA-Key=\u4E3B\u952E -RWA-NotChange_Unmodified=\u672A\u4FEE\u6539\u4E0D\u66F4\u65B0 -RWA-Remove_Field=\u79FB\u9664\u5B57\u6BB5 -RWA-Row_Offset=\u884C\u504F\u79FB -RWA-Skip_Unmodified=\u503C\u4E0D\u6539\u53D8\u4E0D\u66F4\u65B0 -RWA-Smart_Add_Cell_Group=\u667A\u80FD\u6DFB\u52A0\u5355\u5143\u683C\u7EC4 -RWA-Smart_Add_Cells=\u667A\u80FD\u6DFB\u52A0\u5355\u5143\u683C -RWA-Smart_Add_Fields=\u667A\u80FD\u6DFB\u52A0\u5B57\u6BB5 -RWA-Submit=\u63D0\u4EA4 -Radio=\u5355\u9009\u6846 -RadioField=\u5355\u9009\u6846 -Ratio=\u6BD4\u7387 -Re-Group-edition=\u96C6\u56E2\u7248 -Re-Multi-privilege=\u591A\u7EA7\u6743\u9650\u914D\u7F6E -Re-all-server-mac=\u670D\u52A1\u5668\u6240\u6709mac\u5730\u5740 -Re-appname-in-lic=lic\u4E2D\u7684AppName -Re-appname-match=AppName\u5339\u914D -Re-binding-mac=lic\u4E2D\u5DF2\u7ED1\u5B9A\u7684mac\u5730\u5740 -Re-connect-to-remote-server=\u670D\u52A1\u5668\u5DF2\u5173\u95ED\uFF0C\u662F\u5426\u91CD\u65B0\u8FDE\u63A5\u670D\u52A1\u5668? -Re-first-mac=\u670D\u52A1\u5668\u9996\u4E2Amac\u5730\u5740 -Re-lic-out-date=lic\u8FC7\u671F -Re-lock-serial=\u52A0\u5BC6\u72D7\u5E8F\u5217\u53F7 -Re-mac-match=Mac\u5730\u5740\u5339\u914D -Re-not-start-in-jar=\u60A8\u4F7F\u7528\u7684\u7248\u672C\u4E0D\u662F\u901A\u8FC7JAR\u5305\u542F\u52A8. -Re-sametime-ip=\u53EF\u540C\u65F6\u8BBF\u95EE\u6A21\u677FIP\u7684\u4E2A\u6570 -Re-system-version=\u7CFB\u7EDF\u7248\u672C\u53F7 -Re-version-in-lic=lic\u4E2D\u7248\u672C\u53F7 -Re-version-match=\u7248\u672C\u53F7\u5339\u914D -Read=\u8BFB\u53D6 -Read_Map_Use_Time=\u8BFB\u53D6\u5730\u56FE\u8017\u65F6\: -Read_failure=\u8BFB\u53D6\u5931\u8D25\uFF0C\u53EF\u80FD\u6E90\u6587\u4EF6\u5DF2\u635F\u574F -Real=\u5B9E\u9645 -Receiver=\u6536\u4EF6\u4EBA -Receiving_Page=\u6B63\u5728\u63A5\u6536\u9875\u7801 -Record=\u8BB0\u5F55 -Record\ In\ Category=\u6761\u5206\u7C7B\u8BB0\u5F55 -Record\ In\ Series=\u6761\u7CFB\u5217\u8BB0\u5F55 -Record-Number=\u8BB0\u5F55\u6570 -Records=\u6761\u8BB0\u5F55 -Rectangular\ Coordinates\ Projection=\u76F4\u89D2\u5750\u6807\u6295\u5F71 -Recursion=\u9012\u5F52 -Recursion_Pane_Only=\u6B64\u9762\u677F\u4EC5\u7528\u4E8E\u9012\u5F52\u6811\u7ED3\u6784\u7684\u6570\u636E\u5E93\u8868 -Red=\u7EA2\u8272 -Refresh=\u5237\u65B0 -Refresh_Database=\u5237\u65B0\u6570\u636E\u5E93 -Refresh_Parameter_In_SQL=\u662F\u5426\u5237\u65B0SQL\u4E2D\u7684\u53C2\u6570 -Refresh_Successfully=\u5237\u65B0\u6210\u529F -Reg_\ Expressions= -Reg_Expressions=\u6B63\u5219\u8868\u8FBE\u5F0F -Reg_Max_Length=\u6700\u5927\u957F\u5EA6 -Reg_Min_Length=\u6700\u5C0F\u957F\u5EA6 -Register_Version=\u6CE8\u518C\u7248\u672C -Register_failed=\u63D0\u793A\uFF1A\u5F53\u524D\u5E94\u7528\u7684WEB-INF/resources\u8DEF\u5F84\u4E0B\u672A\u53D1\u73B0\u670D\u52A1\u5668\u6388\u6743\u6587\u4EF6\uFF01\u8BF7\u5C3D\u5FEB\u5BFC\u5165\u6388\u6743\u6587\u4EF6\u5E76\u5B8C\u6210 -Registration-Basic_Edition=\u57FA\u672C\u7248 -Registration-CPU_Number=\u5904\u7406\u5668\u6570\u76EE -Registration-Company_Name=\u516C\u53F8\u540D\u79F0 -Registration-Concurrency=\u5E76\u53D1\u6570 -Registration-Customize_Edition=\u5B9A\u5236\u7248 -Registration-Develop_Edition=\u5F00\u53D1\u7248 -Registration-Enterprise_Edition=\u4F01\u4E1A\u7248 -Registration-Error_Registration_Information=\u9519\u8BEF\u7684\u6CE8\u518C\u4FE1\u606F -Registration-Input_Registration_Information=\u8F93\u5165\u6CE8\u518C\u4FE1\u606F -Registration-Please_Purchase=\u62A5\u8868\u7CFB\u7EDF\u5C1A\u672A\u6CE8\u518C, \u8BF7\u8D2D\u4E70 -Registration-Professional_Edition=\u4E13\u4E1A\u7248 -Registration-Project_Name=\u9879\u76EE\u540D\u79F0 -Registration-Purchase_Enterprise=\u8D2D\u4E70\u4F01\u4E1A\u7248 -Registration-Standard_Edition=\u6807\u51C6\u7248 -Registration-The_Registration_code_is_invalid=\u6CE8\u518C\u7801\u65E0\u6548 -Registration-Use_Authorization_File=\u4F7F\u7528\u6388\u6743\u6587\u4EF6 -Registration-User_Email=\u7528\u6237\u90AE\u4EF6 -Registration-User_Name=\u7528\u6237\u540D -Reinstate_Report=\u6062\u590D\u6210\u975E\u5C42\u5F0F\u62A5\u8868 -Related=\u8054\u52A8 -RelatedChart=\u56FE\u8868\u8054\u52A8 -Relationship=\u5173\u8054 -Release-To_Load_Data=\u677E\u5F00\u5C06\u52A0\u8F7D\u6570\u636E -Release_Lock=\u89E3\u9501 -Reload=\u91CD\u8F7D -Remedy=Remedy -Remember-Username_And_Password=\u8BB0\u4F4F\u7528\u6237\u540D\u548C\u5BC6\u7801 -Remove=\u5220\u9664 -Remove_All_Button=\u6E05\u9664\u6240\u6709\u6309\u94AE -Remove_Button_ToolBar=\u79FB\u9664\u6309\u94AE\u6240\u5728\u5DE5\u5177\u680F -Remove_Selected_Button=\u79FB\u9664\u9009\u4E2D\u6309\u94AE -Rename=\u91CD\u547D\u540D -Rename-Block=\u91CD\u547D\u540D\u5757 -Rename_Column=\u91CD\u547D\u540D\u5217 -RenderStyle=\u6E32\u67D3\u98CE\u683C -Repagination=\u9875\u7801\u91CD\u7F6E -Repeat=\u91CD\u590D -Repeat-Block_Name=\u6B64\u5757\u540D\u5DF2\u7ECF\u5B58\u5728 -Repeat-Freeze=\u91CD\u590D\u4E0E\u51BB\u7ED3\u8BBE\u7F6E -Report=\u62A5\u8868 -Report-Body=\u62A5\u8868\u4E3B\u4F53 -Report-Design-Ruler-Units=\u62A5\u8868\u8BBE\u8BA1\u6807\u5C3A\u5355\u4F4D -Report-Subtitle=\u62A5\u8868\u526F\u6807\u9898 -Report-Title=\u62A5\u8868\u6807\u9898 -Report-Web_Attributes=\u6A21\u677FWeb\u5C5E\u6027 -Report-WorkFlow_Attributes=\u5DE5\u4F5C\u6D41\u5C5E\u6027 -Report-Write_Attributes=\u62A5\u8868\u586B\u62A5\u5C5E\u6027 -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 -Report-Write_Attributes_Msg=\u6CA1\u6709\u8BBE\u7F6E\u586B\u62A5\u5C5E\u6027 -ReportColumns-Begin_at_Column=\u5F00\u59CB\u5206\u680F\u5217\u5E8F\u53F7 -ReportColumns-Begin_at_Row=\u5F00\u59CB\u5206\u680F\u884C\u5E8F\u53F7 -ReportColumns-Columns=\u5206\u680F -ReportColumns-Columns_Style_horizontally=\u884C\u5206\u680F\u6837\u5F0F -ReportColumns-Columns_Style_vertically=\u5217\u5206\u680F\u6837\u5F0F -ReportColumns-Columns_after=\u8D85\u8FC7 -ReportColumns-Columns_horizontally=\u884C\u5206\u680F -ReportColumns-Columns_to=\u5206\u680F\u6210 -ReportColumns-Columns_vertically=\u5217\u5206\u680F -ReportColumns-End_at_Column=\u7ED3\u675F\u5206\u680F\u5217\u5E8F\u53F7 -ReportColumns-End_at_Row=\u7ED3\u675F\u5206\u680F\u884C\u5E8F\u53F7 -ReportColumns-None=\u4E0D\u5206\u680F -ReportColumns-Repeat_Column=\u590D\u5236\u5217\u5E8F\u5217 -ReportColumns-Repeat_Row=\u590D\u5236\u884C\u5E8F\u5217 -ReportColumns-Report_Columns=\u62A5\u8868\u5206\u680F -ReportD-Excel_Export=\u6A21\u677F\u5BFC\u51FA\u5C5E\u6027 -ReportD-Export_Hided_Column=\u5BFC\u51FA\u9690\u85CF\u5217 -ReportD-Export_Hided_Row=\u5BFC\u51FA\u9690\u85CF\u884C -ReportD-Html_Export=\u62A5\u8868HTML\u5BFC\u51FA\u5C5E\u6027 -ReportD-Report_Export_Attributes=\u62A5\u8868\u5C5E\u6027 -ReportD-Report_Web_Attributes=\u62A5\u8868Web\u5C5E\u6027 -ReportD-Report_Write_Attributes=\u62A5\u8868\u586B\u62A5\u5C5E\u6027 -ReportDir=\u62A5\u8868\u76EE\u5F55 -ReportGUI-Print_Background=\u6253\u5370/\u5BFC\u51FA\u62A5\u8868\u80CC\u666F -ReportPageSetting_Message=-1\u8868\u793A\u81EA\u9002\u5E94\u4E0D\u9650\u5236\u5927\u5C0F -ReportServer-Frozen_Column=\u51BB\u7ED3\u5217 -ReportServer-Frozen_Column_Row=\u51BB\u7ED3\u884C\u5217 -ReportServer-Frozen_Row=\u51BB\u7ED3\u884C -ReportServerP-Add_Printer=\u589E\u52A0\u6253\u5370\u673A -ReportServerP-Are_you_sure_to_delete_the_selected_printer=\u4F60\u786E\u5B9E\u60F3\u5220\u9664\u9009\u4E2D\u7684\u6253\u5370\u673A\u5417 -ReportServerP-Basic=\u57FA\u672C -ReportServerP-Browser=\u4F7F\u7528\u6B64\u6D4F\u89C8\u5668\u9884\u89C8 -ReportServerP-Browser_Background=\u6D4F\u89C8\u5668\u80CC\u666F -ReportServerP-Choose_Printer=\u9009\u62E9\u6253\u5370\u673A -ReportServerP-Congratulation_Email_Test_Success=\u606D\u559C\u60A8\uFF01\u60A8\u7684\u90AE\u4EF6\u670D\u52A1\u5668\u5DF2\u7ECF\u914D\u7F6E\u6210\u529F -ReportServerP-Custom_Toolbar=\u5B9A\u5236\u5DE5\u5177\u680F -ReportServerP-Edit_Printer=\u7F16\u8F91\u6253\u5370\u673A -ReportServerP-Email_Receiver=\u90AE\u4EF6\u63A5\u6536\u4EBA -ReportServerP-First=\u9996\u9875 -ReportServerP-FormToolBar=\u8868\u5355\u5DE5\u5177\u680F -ReportServerP-From_Email_Address=\u53D1\u4EF6\u4EBA\u5730\u5740 -ReportServerP-Import_Css=\u5F15\u7528Css -ReportServerP-Import_JavaScript=\u5F15\u7528JavaScript -ReportServerP-Last=\u672B\u9875 -ReportServerP-Next=\u4E0B\u4E00\u9875 -ReportServerP-PDF=PDF -ReportServerP-PDF2-INFO=\u4EC5\u5728LINUX/UNIX\u4E0B\u672A\u5B89\u88C5\u4E2D\u6587\u5B57\u4F53\u65F6\u4F7F\u7528 -ReportServerP-Pre_concurrency=\u4F18\u5148\u8BBF\u95EE\u7684\u5E76\u53D1\u6570 -ReportServerP-Previous=\u4E0A\u4E00\u9875 -ReportServerP-Print[Server]=\u6253\u5370[\u670D\u52A1\u5668] -ReportServerP-Printers(Server)=\u6253\u5370\u673A(\u670D\u52A1\u5668) -ReportServerP-Report_server_parameter=\u62A5\u8868\u670D\u52A1\u5668\u53C2\u6570 -ReportServerP-Server_Printers=\u670D\u52A1\u5668\u7AEF\u7684\u6253\u5370\u673A -ReportServerP-Show_Toolbar=\u663E\u793A\u5DE5\u5177\u680F -ReportServerP-The_name_of_printer_cannot_be_null=\u6253\u5370\u673A\u7684\u540D\u5B57\u4E0D\u80FD\u4E3A\u7A7A -ReportServerP-Toolbar=\u5DE5\u5177\u680F -ReportServerP-User_concurrency=\u7528\u6237\u5E76\u53D1\u6570 -ReportServerP-Write_Processor=\u586B\u62A5\u5904\u7406\u5668 -ReportServerP-ms=\u6BEB\u79D2 -ReportWebAttr-General_Css=\u4E00\u822C\u81EA\u5B9A\u4E49\u6837\u5F0F\u8868 -ReportWebAttr-Widget_Css=\u63A7\u4EF6\u81EA\u5B9A\u4E49\u6837\u5F0F\u8868 -ReportWebAttr-Write_Css=\u586B\u62A5\u81EA\u5B9A\u4E49\u6837\u5F0F\u8868 -Report_Certification=\u62A5\u8868\u8BA4\u8BC1 -Report_Designer=\u62A5\u8868\u8BBE\u8BA1\u5668 -Report_Display=\u62A5\u8868\u5C55\u793A -Report_Engine=\u62A5\u8868\u5F15\u64CE -Report_Is_Being_Openned=\u6B63\u5728\u6253\u5F00\u62A5\u8868 -Report_Not_Exist=\u6240\u9009\u62A5\u8868\u4E0D\u5B58\u5728\uFF01 -Report_Path=\u62A5\u8868\u8DEF\u5F84 -Report_Query_Result_AS=\u62A5\u8868\u641C\u7D22\u7ED3\u679C\u5982\u4E0B -Report_Show_Location=\u62A5\u8868\u663E\u793A\u4F4D\u7F6E -Report_Template=\u62A5\u8868\u6A21\u677F -Reportlet=\u7F51\u7EDC\u62A5\u8868 -Reportlet-Parameter_Type=\u53C2\u6570\u4F20\u9012\u65B9\u5F0F -Reportlet-Schedule-Action=\u5B9A\u65F6\u751F\u6210 -ReportletParameterTip=\u5F53\u53C2\u6570\u503C\u4E3ACategory\u65F6\u5BF9\u5E94\u56FE\u8868\u4E2D\u7684\u5206\u7C7B\u540D, \u540C\u7406\: Series, Value \u5206\u522B\u5BF9\u5E94\u7CFB\u5217\u540D\u548C\u7CFB\u5217\u503C -Required=\u5FC5\u586B -Reset=\u91CD\u7F6E -RestartAfterSet=\u914D\u7F6E\u7ED3\u675F\u7ACB\u523B\u5F00\u59CB -RestartByCondition=\u5982\u679C\u4EFB\u52A1\u4E2D\u65AD\u6309\u4EE5\u4E0B\u9891\u7387\u91CD\u65B0\u542F\u52A8 -Restore-Default=\u6062\u590D\u9ED8\u8BA4 -Return-Date=\u8FD4\u56DE\u65E5\u671F -Return-String=\u8FD4\u56DE\u5B57\u7B26\u4E32 -Return-Value=\u8FD4\u56DE\u503C -Return_set_name=\u8FD4\u56DE\u96C6 -Reverse-Scale-Value=\u9006\u5E8F\u523B\u5EA6\u503C -Right=\u53F3 -Right_Border_Line=\u53F3\u6846\u7EBF -Right_Margin=\u53F3\u8FB9\u8DDD -Right_Top=\u53F3\u4E0A -Role=\u89D2\u8272 -RoleName_Can_Not_Be_Null=\u89D2\u8272\u540D\u4E0D\u5141\u8BB8\u4E3A\u7A7A\u4E14\u4E0D\u80FD\u91CD\u590D -Role_Information=\u89D2\u8272\u4FE1\u606F -Role_List=\u89D2\u8272\u5217\u8868 -Role_Name=\u89D2\u8272\u540D -Role_Source=\u89D2\u8272\u6765\u6E90 -Role_changed_isRefresh=\u89D2\u8272\u5DF2\u53D8\u52A8\uFF0C\u662F\u5426\u5237\u65B0 -Root=\u6839\u8282\u70B9 -Root_Path_Cannot_Remove=\u6839\u8282\u70B9\u4E0D\u53EF\u5220\u9664 -Rose_Red=\u73AB\u7470\u7EA2 -Rotation=\u65CB\u8F6C -Row=\u884C -Row-Axis=\u884C\u8F74 -Row-Fields=\u884C\u5B57\u6BB5 -RowSpan=\u884C\u8DE8\u5EA6 -RowTo=\u884C\u81F3\u7B2C -Row_Cell=\u7AD6\u683C -Row_Dimension=\u884C\u8F74/\u7EF4\u5EA6 -Row_tag=\u884C\u6807\u7B7E -Rows=\u884C -Run=\u8FD0\u884C -Running=\u8FD0\u884C\u4E2D -SAP=SAP -SAP-System_Number=System Number -SAP-Transfer_type_relation_setting=\u8F6C\u6362\u7C7B\u578B\u4EE5\u53CA\u5173\u7CFB -SAP_column_name=SAP\u5217\u540D -SAP_datatype=SAP\u6570\u636E\u7C7B\u578B -SINGLE_FILE_UPLOAD=\u53EA\u652F\u6301\u5355\u6587\u4EF6\u4E0A\u4F20 -SQL=SQL -SQL-Procedure=\u8FC7\u7A0B -SQL-Table=\u8868 -SQL-View=\u89C6\u56FE -SQLWizard-add_condition=\u589E\u52A0\u6761\u4EF6 -SQLWizard-add_expression=\u589E\u52A0\u8868\u8FBE\u5F0F -SQLWizard-add_having_condition=\u589E\u52A0HAVING\u6761\u4EF6 -SQLWizard-add_subquery=\u589E\u52A0\u5B50\u67E5\u8BE2 -SQLWizard-add_to_group_by=\u6DFB\u52A0\u5230group by\u5B50\u53E5\u4E2D -SQLWizard-add_to_order_by=\u6DFB\u52A0\u5230order by\u5B50\u53E5\u4E2D -SQLWizard-add_where_condition=\u589E\u52A0WHERE\u6761\u4EF6 -SQLWizard-all_Rows_From=\u6240\u6709\u7684\u8868\u6765\u81EA{0} -SQLWizard-arrange_entities=\u91CD\u65B0\u5B89\u6392\u5B9E\u4F53 -SQLWizard-choose_function=\u9009\u62E9\u4E00\u4E2A\u51FD\u6570 -SQLWizard-deselect_all=\u5168\u4E0D\u9009 -SQLWizard-distinct=\u6D88\u9664\u91CD\u590D\u884C -SQLWizard-edit_condition=\u7F16\u8F91\u6761\u4EF6 -SQLWizard-join=\u8054\u5408 -SQLWizard-join_expression=\u8054\u5408\u8868\u8FBE\u5F0F -SQLWizard-pack=\u6700\u5C0F\u5316 -SQLWizard-pack_all_entities=\u6700\u5C0F\u5316\u6240\u6709\u5B9E\u4F53 -SQLWizard-reading=\u8BFB\u53D6\u4E2D -SQLWizard-remove_all=\u5168\u5220\u9664 -SQLWizard-remove_entities=\u5220\u9664\u6240\u6709\u7684\u5B9E\u4F53 -SQLWizard-select_all=\u5168\u9009 -SQLWizard-select_expression=select\u8868\u8FBE\u5F0F -SQLWizard-union=\u5E76\u64CD\u4F5C -SQLWizard-unpack_all_entities=\u6700\u5927\u5316\u6240\u6709\u5B9E\u4F53 -SQLWizard-wait=\u7A0D\u5019 -SQLWizard-would_you_like_to_continue=\u662F\u5426\u60F3\u7EE7\u7EED -SUMMARY_MODE=\u6C47\u603B -Sat=\u516D -Save=\u4FDD\u5B58 -Save_All_Records_In_Memory=\u6240\u6709\u8BB0\u5F55\u90FD\u4FDD\u5B58\u5728\u5185\u5B58\u4E2D -Save_As_Global_Style=\u4FDD\u5B58\u4E3A\u5168\u5C40\u683C\u5F0F -Save_Definition=\u4FDD\u5B58\u5B9A\u4E49 -Save_Or_Not=\u662F\u5426\u4FDD\u5B58 -Save_Path=\u4FDD\u5B58\u8DEF\u5F84 -Save_Result=\u4FDD\u5B58\u7ED3\u679C -Saved_Connection_Count=\u4FDD\u5B58\u7684\u8FDE\u63A5\u6570 -Saving=\u4FDD\u5B58\u4E2D -Sche-Day=\u65E5\u671F -Sche-Friday=\u661F\u671F\u4E94 -Sche-Hour=\u65F6 -Sche-Minute=\u5206 -Sche-Monday=\u661F\u671F\u4E00 -Sche-Month=\u6708\u4EFD -Sche-Saturday=\u661F\u671F\u516D -Sche-Second=\u79D2 -Sche-Sunday=\u661F\u671F\u65E5 -Sche-Thursday=\u661F\u671F\u56DB -Sche-Tuesday=\u661F\u671F\u4E8C -Sche-Wednesday=\u661F\u671F\u4E09 -Sche-Week=\u661F\u671F -Schedule-Are_you_sure_to_delete_the_selected_task=\u786E\u8BA4\u5220\u9664\u6240\u9009\u4EFB\u52A1 -Schedule-Daily=\u6BCF\u5929 -Schedule-Defined_Tasks=\u5B9A\u4E49\u7684\u4EFB\u52A1 -Schedule-Duplicate_Task_Name=\u4EFB\u52A1\u540D\u91CD\u590D -Schedule-Edit_Start_Time=\u7F16\u8F91\u8D77\u59CB\u65F6\u95F4 -Schedule-Edit_Time=\u7F16\u8F91\u65F6\u95F4 -Schedule-Excute_Type=\u751F\u6210\u7C7B\u578B -Schedule-File_Prefix=\u6587\u4EF6\u524D\u7F00 -Schedule-Frequency=\u9891\u7387\u8BBE\u5B9A -Schedule-Generate_Parameters=\u751F\u6210\u53C2\u6570 -Schedule-Handle_Type=\u5904\u7406\u65B9\u5F0F -Schedule-Hourly=\u6BCF\u5C0F\u65F6 -Schedule-Index=\u7F16\u53F7 -Schedule-Mail_To=\u4EE5\u90AE\u4EF6\u53D1\u9001\u5230 -Schedule-Monthly=\u6BCF\u6708 -Schedule-New_Task=\u6DFB\u52A0\u4EFB\u52A1 -Schedule-Please_select_a_directory=\u8BF7\u9009\u62E9\u4E00\u4E2A\u76EE\u5F55 -Schedule-Remove_Task=\u5220\u9664\u4EFB\u52A1 -Schedule-Rename_Task=\u91CD\u547D\u540D\u4EFB\u52A1 -Schedule-Report_File_Directory=\u62A5\u8868\u6587\u4EF6\u76EE\u5F55 -Schedule-Reportlet_Group=\u7F51\u7EDC\u62A5\u8868\u7EC4 -Schedule-Reportlet_Info=\u7F51\u7EDC\u62A5\u8868\u4FE1\u606F -Schedule-Save_As=\u53E6\u5B58\u4E3A -Schedule-Save_To=\u4FDD\u5B58\u4F4D\u7F6E -Schedule-Scheduled_Task_Manager=\u5B9A\u65F6\u4EFB\u52A1\u7BA1\u7406\u5668 -Schedule-Select_Path=\u9009\u62E9\u76EE\u5F55 -Schedule-Select_Report_File_Directory=\u9009\u62E9\u62A5\u8868\u76EE\u5F55 -Schedule-Select_Template=\u9009\u62E9\u6A21\u677F -Schedule-Start_at=\u9996\u6B21\u6267\u884C -Schedule-Task_Content=\u4EFB\u52A1\u5185\u5BB9 -Schedule-Task_Name=\u4EFB\u52A1\u540D -Schedule-Template=\u6A21\u677F\u540D\u79F0 -Schedule-Template_File=\u6A21\u677F\u6587\u4EF6 -Schedule-Template_Parameter=\u6A21\u677F\u53C2\u6570 -Schedule-The_selected_file_must_be_end_with_'.xls'=\u9009\u62E9\u7684\u6587\u4EF6\u5FC5\u987B\u4EE5.xls\u7ED3\u5C3E -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 -Schedule-Unspecified_Report_File_Prefix=\u672A\u6307\u5B9A\u62A5\u8868\u6587\u4EF6\u524D\u7F00 -Schedule-Unspecified_Report_File_Save_Location=\u672A\u6307\u5B9A\u62A5\u8868\u6587\u4EF6\u4FDD\u5B58\u4F4D\u7F6E -Schedule-Unspecified_Template_File_Name=\u672A\u6307\u5B9A\u6A21\u677F\u6587\u4EF6\u540D -Schedule-Weekly=\u6BCF\u5468 -Schedule-Yearly=\u6BCF\u5E74 -ScheduleCycle=\u8C03\u5EA6\u5468\u671F -Schedule_DEC= -Scheduler-parameters_were_found_,_Are_you_sure_to_apply_now=\u53C2\u6570\u88AB\u53D1\u73B0\uFF0C\u60A8\u662F\u5426\u8981\u5E94\u7528 -Schema=\u4E3B\u9898 -Scheudle-Invalid_Template_File_Name=\u65E0\u6548\u7684\u6A21\u677F\u6587\u4EF6\u540D -Scope=\u8303\u56F4 -Search=\u641C\u7D22 -Search_Result=\u641C\u7D22\u7ED3\u679C -Second=\u7B2C\u4E8C -SecondGraduationLine=\u6B21\u8981\u523B\u5EA6\u7EBF -SecondGraduationLineStyle=\u6B21\u8981\u523B\u5EA6\u7EBF\u7C7B\u578B -SecondGraduationUnit=\u6B21\u8981\u523B\u5EA6\u5355\u4F4D -Second_Axis=\u6B21\u5750\u6807\u8F74 -Second_Value_Axis=\u6B21\u503C\u8F74 -Select=\u9009\u62E9 -Select-Color=\u9009\u62E9\u989C\u8272 -Select-Folder=\u8BF7\u9009\u62E9\u6D4F\u89C8\u5668\u6240\u5728\u7684\u6587\u4EF6\u5939 -Select_A_Tree_DataSource_To_Build=\u9009\u62E9\u4E00\u4E2A\u6811\u6570\u636E\u96C6\u6765\u6784\u5EFA -Select_All=\u5168\u9009 -Select_Create_Role=\u8BF7\u5148\u9009\u62E9\u89D2\u8272\u6216\u65B0\u5EFA\u89D2\u8272 -Select_DataColumn=\u9009\u62E9\u6570\u636E\u5217 -Select_DataFields=\u9009\u62E9\u6570\u636E\u5B57\u6BB5 -Select_Data_Set=\u9009\u62E9\u6570\u636E\u96C6 -Select_Date=\u9009\u62E9\u65E5\u671F -Select_Export_Log_Directory=\u9009\u62E9\u5BFC\u51FA\u76EE\u5F55 -Select_FS_Roles=\u9009\u62E9\u5E73\u53F0\u89D2\u8272 -Select_FS_Users=\u9009\u62E9\u5E73\u53F0\u7528\u6237 -Select_Fields=\u9009\u62E9\u5B57\u6BB5 -Select_Mail_Column=\u9009\u62E9\u90AE\u7BB1\u5BF9\u5E94\u5217 -Select_Name_Column=\u9009\u62E9\u59D3\u540D\u5BF9\u5E94\u5217 -Select_Specified_Grouping=\u9009\u62E9\u81EA\u5B9A\u4E49\u5206\u7EC4 -Select_The_Source_To_Save=\u9009\u62E9\u8981\u5B58\u50A8\u7684\u9879\u76EE -Select_Username_Column=\u9009\u62E9\u7528\u6237\u540D\u5BF9\u5E94\u5217 -Select_sort_order=\u9009\u62E9\u6392\u5217\u987A\u5E8F -Select_the_repeated_row_and_column=\u9009\u62E9\u9700\u8981\u91CD\u590D\u7684\u884C\u5217 -Selected=\u5DF2\u9009\u4E2D -Selected-Index=\u521D\u59CB\u9009\u4E2D\u9879 -Selected_Dictionary=\u5F53\u524D\u6570\u636E\u5B57\u5178 -Selection=\u9009\u62E9 -Selection-Background=\u9009\u4E2D\u9879\u80CC\u666F\u8272 -Selection-Filter=\u6761\u4EF6\u7B5B\u9009 -Selection-Foreground=\u9009\u4E2D\u9879\u524D\u666F\u8272 -SelfDefineAttachmentDeal=\u81EA\u5B9A\u4E49\u9644\u4EF6\u5904\u7406 -SelfDefineClassName=\u81EA\u5B9A\u4E49\u7C7B\u540D -Semicolon=\u5206\u53F7 -Send=\u53D1\u9001 -Send-Email_Schedule_Action=\u5B9A\u65F6\u53D1\u9001\u90AE\u4EF6 -September=\u4E5D\u6708 -Sequenced_number=\u5E8F\u53F7 -Ser=\u7B2C -Series=\u5E8F\u5217 -Series_Dismenber_As_Single=\u8FDE\u7EED\u5206\u9694\u7B26\u89C6\u4E3A\u5355\u4E2A\u5904\u7406 -Series_Name=\u7CFB\u5217\u540D -Series_Use_Default=\u7CFB\u5217\u9ED8\u8BA4\u4F7F\u7528 -Seriously=\u4E25\u91CD -Server=\u670D\u52A1\u5668 -Server-Always_Reload_Template=\u603B\u662F\u91CD\u65B0\u8BFB\u53D6\u6A21\u677F -Server-Define_Data_Connection=\u5B9A\u4E49\u6570\u636E\u8FDE\u63A5 -Server-Demo_Server= -Server-Embedded_Server=\u5167\u7F6E\u7684\u670D\u52A1\u5668 -Server-Open_Service_Manager=\u6253\u5F00\u670D\u52A1\u7BA1\u7406\u5668 -Server-Start=\u542F\u52A8 -Server-Stop=\u505C\u6B62 -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 -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 -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 -Server-version-warging="\u60A8\u5F53\u524D\u6253\u5F00\u7684\u6A21\u677F\u6587\u4EF6\u662F\u7531\u66F4\u9AD8\u7248\u672C\u7684\u8BBE\u8BA1\u5668\u5236\u4F5C\u7684\uFF0C\u7EE7\u7EED\u6253\u5F00\u4F1A\u6709\u51FA\u9519\u6216\u8005\u4E22\u5931\u539F\u6709\u6A21\u677F\u5C5E\u6027\u7684\u98CE\u9669\u3002 \u8BF7\u786E\u4FDD\u60A8\u8BBE\u8BA1\u7684\u6A21\u677F\u7684\u8BBE\u8BA1\u5668\u7248\u672C\u4F4E\u4E8E\u90E8\u7F72\u7684\u670D\u52A1\u5668\u7248\u672C\u3002" -ServerM-Define_Styles= -ServerM-Face_Manager=\u754C\u9762\u8BBE\u7F6E -ServerM-Predefined_Styles=\u9884\u5B9A\u4E49\u6837\u5F0F -ServerM-Privilege_Manager=\u6743\u9650\u7BA1\u7406 -ServerM-SapSync_Manager=SAP\u6570\u636E\u540C\u6B65 -ServerM-Widget_Manager=\u63A7\u4EF6\u7BA1\u7406 -ServerM-Workflow_Manager=\u5DE5\u4F5C\u6D41\u7BA1\u7406 -ServerMenu_Privilege=\u670D\u52A1\u5668\u6743\u9650\u83DC\u5355 -Server_Address=\u670D\u52A1\u5668\u5730\u5740 -Server_Charset=\u670D\u52A1\u5668\u7F16\u7801 -Server_Data_Relations=\u670D\u52A1\u5668\u6570\u636E\u96C6\u5173\u7CFB -Server_Data_Relations_Table=\u670D\u52A1\u5668\u6570\u636E\u96C6\u5173\u7CFB\u8868 -Server_Flash=\u9700\u8981Flash\u6253\u5370\u8BBE\u7F6E\u7A97\u53E3 -Server_FlashInstallPath=Flash\u5B89\u88C5\u6587\u4EF6\u8DEF\u5F84 -Server_Language=\u670D\u52A1\u5668\u8BED\u8A00 -Server_Name=\u670D\u52A1\u5668\u540D\u79F0 -Server_Path=\u4E3B\u673A\u4F4D\u7F6E -Server_PdfInstallPath=Pdf\u5B89\u88C5\u6587\u4EF6\u8DEF\u5F84 -Server_Print=\u670D\u52A1\u5668\u7AEF\u6253\u5370 -Server_Usage=\u670D\u52A1\u5668\u4F7F\u7528\u60C5\u51B5 -ServerdatasourceSameWarning=\u670D\u52A1\u5668\u6570\u636E\u96C6\u4E2D\u6709\u6570\u636E\u96C6\u540D\u5B57\u548C\u5176\u4ED6\u6570\u636E\u96C6\u540D\u5B57\u4E00\u6837\uFF0C\u8BF7\u4FEE\u6539\uFF01 -Service_Phone=\u670D\u52A1\u7535\u8BDD\uFF1A -ServletMapping_msg=\u5B9E\u73B0\u4FEE\u6539\u9700\u8981\u76F8\u5E94\u4FEE\u6539"(\u62A5\u8868\u8FD0\u884C\u73AF\u5883)\://web.xml"\u6587\u4EF6\u4E2D\u7684url-pattern\u5C5E\u6027 -Session=\u4F1A\u8BDD -SessionID=sessionID\u662F\u5F53\u524D\u8BBF\u95EE\u6A21\u677F\u7684\u4F1A\u8BDD\u6807\u8BC6\u53C2\u6570\u3002 -Set=\u8BBE\u7F6E -Set-Parameter-Name=\u8BF7\u5148\u8BBE\u7F6E\u53C2\u6570\u540D -Set-Parent-Directory=\u70B9\u51FB\u76F8\u5E94\u56FE\u6807\u8BBE\u7F6E\u5404\u6D4F\u89C8\u5668\u6240\u5728\u7684\u6587\u4EF6\u5939 -SetEndTime=\u8BBE\u5B9A\u7ED3\u675F\u65F6\u95F4 -SetLoginBackground=\u8BBE\u7F6E\u767B\u5F55\u80CC\u666F\u56FE\u7247 -SetLoginPage=\u8BBE\u7F6E\u767B\u5F55\u7F51\u9875 -SetPrinterOffset=\u6253\u5370\u673A\u504F\u79FB -SetStartTime=\u8BBE\u5B9A\u5F00\u59CB\u65F6\u95F4 -Set_CallBefore_Function=\u8BBE\u7F6E\u524D\u7F6E\u51FD\u6570 -Set_Callback_Function=\u8BBE\u7F6E\u56DE\u8C03\u51FD\u6570 -Set_Certification=\u8BA4\u8BC1\u914D\u7F6E -Set_Chart_Style=\u8BBE\u7F6E\u56FE\u8868\u533A\u683C\u5F0F -Set_Column_Title_End=\u8BBE\u7F6E\u91CD\u590D\u7ED3\u5C3E\u5217 -Set_Column_Title_Start=\u8BBE\u7F6E\u91CD\u590D\u6807\u9898\u5217 -Set_Default_Data_Connect=\u662F\u5426\u5C06\u5176\u8BBE\u7F6E\u4E3A\u9ED8\u8BA4\u6570\u636E\u8FDE\u63A5 -Set_Frozen_Cell=\u8BBE\u7F6E\u51BB\u7ED3\u5355\u5143\u683C -Set_Legend_Sytle=\u8BBE\u7F6E\u56FE\u4F8B\u683C\u5F0F -Set_More=\u8BE6\u7EC6\u8BBE\u7F6E -Set_Role=\u89D2\u8272\u8BBE\u7F6E -Set_Role_Authorized=\u89D2\u8272\u6743\u9650\u914D\u7F6E -Set_Row_Title_End=\u8BBE\u7F6E\u91CD\u590D\u7ED3\u5C3E\u884C -Set_Row_Title_Start=\u8BBE\u7F6E\u91CD\u590D\u6807\u9898\u884C -Set_Submit_Condition=\u8BBE\u7F6E\u63D0\u4EA4\u6761\u4EF6 -Set_Submit_Event=\u8BBE\u7F6E\u63D0\u4EA4\u4E8B\u4EF6 -Set_User=\u7528\u6237\u914D\u7F6E -Set_User_Type=\u8BBE\u7F6E\u7528\u6237\u7C7B\u578B -Set_data_fields=\u8BBE\u7F6E\u6570\u636E\u5B57\u6BB5 -Set_default_browser=\u6CA1\u6709\u627E\u5230\u9ED8\u8BA4\u6D4F\u89C8\u5668\uFF0C\u8BF7\u5728Intenet\u9009\u9879\u4E2D\u8BBE\u7F6E\u7CFB\u7EDF\u9ED8\u8BA4\u6D4F\u89C8\u5668\u3002 -Set_group_fields=\u5C06\u62A5\u8868\u4E2D\u7684\u4FE1\u606F\u5206\u7EC4 -Setting=\u9009\u9879 -Setting-Ruler-Units=\u6807\u5C3A\u5355\u4F4D\u8BBE\u7F6E -Shaanxi=\u9655\u897F\u7701 -Shandong=\u5C71\u4E1C\u7701 -Shanghai=\u4E0A\u6D77\u5E02 -ShanghaiInCity=\u4E0A\u6D77\u5E02\u533A -Shanxi=\u5C71\u897F\u7701 -Shape=\u56FE\u5F62 -Shared_To_Me=\u5206\u4EAB\u7ED9\u6211\u7684 -Sheet=\u5DE5\u4F5C\u8868 -ShenyangCity=\u6C88\u9633\u5E02 -ShijiazhuangCity=\u77F3\u5BB6\u5E84\u5E02 -Short-Apr=\u56DB -Short-Aug=\u516B -Short-Dec=\u5341\u4E8C -Short-Feb=\u4E8C -Short-Jan=\u4E00 -Short-Jul=\u4E03 -Short-Jun=\u516D -Short-Mar=\u4E09 -Short-May=\u4E94 -Short-Nov=\u5341\u4E00 -Short-Oct=\u5341 -Short-Sep=\u4E5D -FR-Base_Short_Apr=\u56DB -FR-Base_Short_Aug=\u516B -FR-Base_Short_Dec=\u5341\u4E8C -FR-Base_Short_Feb=\u4E8C -FR-Base_Short_Jan=\u4E00 -FR-Base_Short_Jul=\u4E03 -FR-Base_Short_Jun=\u516D -FR-Base_Short_Mar=\u4E09 -FR-Base_Short_May=\u4E94 -FR-Base_Short_Nov=\u5341\u4E00 -FR-Base_Short_Oct=\u5341 -FR-Base_Short_Sep=\u4E5D -Shortcut_Set=\u5FEB\u6377\u952E\u8BBE\u7F6E -Should_select_an_Excel_file=\u9700\u8981\u9009\u62E9\u4E00\u4E2AExcel\u6587\u4EF6\u6765\u6E90 -Show=\u663E\u793A -Show\ Home\ Page=\u663E\u793A\u4E3B\u9875 -ShowAsDownload=\u7528\u4E0B\u8F7D\u94FE\u63A5\u663E\u793A\u4E8C\u8FDB\u5236\u5185\u5BB9 -Show_Blank_Column=\u8865\u5145\u7A7A\u767D\u5217 -Show_Blank_Row=\u8865\u5145\u7A7A\u767D\u884C -Show_Content=\u663E\u793A\u5185\u5BB9 -Show_Demo_Connection=\u663E\u793A\u9ED8\u8BA4demo\u8FDE\u63A5 -Show_Grid_Column=\u663E\u793A\u683C\u5B50\u5217 -Show_Grid_Line=\u663E\u793A\u7F51\u683C\u7EBF -Show_Grid_Row=\u663E\u793A\u683C\u5B50\u884C -Show_Icon=\u663E\u793A\u6309\u94AE\u56FE\u6807 -Show_Text=\u663E\u793A\u6309\u94AE\u540D\u5B57 -Show_in_Containing_Folder=\u6253\u5F00\u6240\u5728\u6587\u4EF6\u5939 -Sichuan=\u56DB\u5DDD\u7701 -SignIn-Confirm_Closing_The_Designer=\u786E\u8BA4\u9000\u51FA\u8BBE\u8BA1\u5668\uFF1F -Sign_In=\u767B\u5F55 -SimgleNumber=\u53F7 -Simple_general=\u7B80\u5355\u901A\u7528\u67E5\u8BE2 -Simple_general_forV6=\u901A\u7528\u67E5\u8BE2(\u9002\u7528\u4E8EECC 6\u4EE5\u4E0A\u7248\u672C) -Simplified_Chinese_Language=\u7B80\u4F53\u4E2D\u6587 -Single=\u4E00\u4E2A -SingleAfter=\u540E -SingleLayer=\u5355\u5C42 -SingleMan=\u8005 -SingleMulti=\u591A -SingleName=\u540D -SingleNew=\u65B0 -SingleOne=\u5355 -SingleTime=\u6B21 -Single_Close=\u5173 -Single_Open=\u5F00 -Size=\u5C3A\u5BF8 -Skip=\u8DF3\u8FC7 -Smart=\u667A\u80FD -Son=\u5B50 -Song_TypeFace=\u5B8B\u4F53 -Sort=\u6392\u5E8F -Sort-Ascending=\u5347\u5E8F -Sort-Descending=\u964D\u5E8F -Sort-Original=\u4E0D\u6392\u5E8F -Sort-Sort_Order=\u6392\u5217\u987A\u5E8F -Sorting=\u6392\u5E8F\u4E2D -Space=\u7A7A\u683C -SpecifiedG-Discard_all_others=\u4E22\u5F03\u5176\u5B83\u6240\u6709\u7684 -SpecifiedG-Force_Group=\u5F3A\u5236\u5206\u7EC4 -SpecifiedG-Group_Name=\u7EC4\u540D -SpecifiedG-Groups=\u7EC4 -SpecifiedG-Leave_in_their_own_groups=\u7559\u5728\u5404\u81EA\u7684\u7EC4\u5185 -SpecifiedG-New_Group=\u65B0\u5EFA\u7EC4 -SpecifiedG-Put_all_others_together=\u628A\u5176\u5B83\u6240\u6709\u7684\u5408\u5E76 -SpecifiedG-Specified_Group=\u81EA\u5B9A\u4E49\u5206\u7EC4 -Specify=\u6307\u5B9A -Stacked_Bar_Chart=\u5806\u79EF\u67F1\u5F62\u56FE -Stacked_Column_Chart=\u5806\u79EF\u6761\u5F62\u56FE -Staff=\u4EBA\u5458 -Staff_Management_InDepartment=\u673A\u6784\u90E8\u95E8\u5185\u4EBA\u5458\u7BA1\u7406 -StandardType=\u6807\u51C6\u7C7B\u578B -Standerd=\u6807\u51C6 -Start=\u5F00\u59CB -StartFailed=\u542F\u52A8\u5931\u8D25 -StartProcess=\u5F00\u59CB\u6D41\u7A0B -StartSuccessfully=\u542F\u52A8\u6210\u529F -StartValue=\u5F00\u59CB\u503C -Start_Print=\u5F00\u59CB\u6253\u5370 -Start_Process=\u53D1\u8D77\u6D41\u7A0B -Start_automatically_when_starting=\u542F\u52A8\u65F6\u81EA\u52A8\u663E\u793A\u6B64\u7A97\u53E3 -State=\u7701\u5E02 -State-Toggle=\u72B6\u6001\u5207\u6362 -Static_Setting=\u7EDF\u8BA1\u8BBE\u7F6E -Statistic=\u7EDF\u8BA1 -Status=\u72B6\u6001 -Still=\u4ECD\u7136 -String=\u5B57\u7B26\u4E32 -Style=\u6837\u5F0F -Style-Left_Indent=\u5DE6\u7F29\u8FDB -Style-Line_Spacing=\u884C\u95F4\u8DDD -Style-Right_Indent=\u53F3\u7F29\u8FDB -Style-Spacing=\u95F4\u8DDD -Style-Spacing_After=\u6BB5\u540E -Style-Spacing_Before=\u6BB5\u524D -StyleAlignment-Bottom=\u9760\u4E0B -StyleAlignment-Degrees=\u5EA6\u6570 -StyleAlignment-Distibuted=\u5206\u6563\u5BF9\u9F50 -StyleAlignment-Horizontal=\u6C34\u5E73\u5BF9\u9F50 -StyleAlignment-Left=\u9760\u5DE6 -StyleAlignment-Left_To_Right=\u4ECE\u5DE6\u5411\u53F3 -StyleAlignment-Multi_Line(Adjust_Font)=\u591A\u884C\u663E\u793A(\u8C03\u6574\u5B57\u4F53) -StyleAlignment-Right=\u9760\u53F3 -StyleAlignment-Right_To_Left=\u4ECE\u53F3\u5411\u5DE6 -StyleAlignment-Single_Line=\u5355\u884C\u663E\u793A -StyleAlignment-Single_Line(Adjust_Font)=\u5355\u884C\u663E\u793A(\u8C03\u6574\u5B57\u4F53) -StyleAlignment-TextAndImage=\u6587\u672C\u4E0E\u56FE\u7247 -StyleAlignment-Text_Rotation=\u6587\u672C\u65B9\u5411 -StyleAlignment-Text_Style=\u6587\u672C\u63A7\u5236 -StyleAlignment-The_value_of_rotation_must_between_-90_and_90_degrees=\u65CB\u8F6C\u503C\u5FC5\u987B\u5728\u8D1F90\u5EA6\u523090\u5EA6 -StyleAlignment-Top=\u9760\u4E0A -StyleAlignment-Vertical=\u5782\u76F4\u5BF9\u9F50 -StyleAlignment-Vertical_Text=\u6587\u5B57\u7AD6\u6392 -StyleAlignment-Wrap_Text=\u81EA\u52A8\u6362\u884C -StyleAlignment-between_-90_and_90=\u5728-90\u548C90\u4E4B\u95F4 -StyleFormat-Category=\u5206\u7C7B -StyleFormat-Currency=\u8D27\u5E01 -StyleFormat-Date=\u65E5\u671F\u578B -StyleFormat-None=\u5E38\u89C4 -StyleFormat-Percent=\u767E\u5206\u6BD4 -StyleFormat-Sample=\u793A\u4F8B -StyleFormat-Scientific=\u79D1\u5B66\u8BA1\u6570 -StyleFormat-Text=\u6587\u672C\u578B -StyleFormat-Time=\u65F6\u95F4\u578B -Style_Name=\u683C\u5F0F\u540D -Sub_Report=\u5B50\u62A5\u8868 -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 -Sub_Report_Message1=\u8BF7\u9009\u62E9\u6B63\u786E\u8DEF\u5F84 -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_ToolTips=\u5B50\u62A5\u8868\u63D0\u793A -Submit=\u63D0\u4EA4 -Submit_Style=\u63D0\u4EA4\u65B9\u5F0F -Submit_Url=\u63D0\u4EA4\u5730\u5740 -Subquery=\u5B50\u67E5\u8BE2 -Successfully=\u6210\u529F -Suffix=\u540E\u7F00 -Summary=\u6C47\u603B -SummaryFields=\u6C47\u603B\u5B57\u6BB5 -Summary_Method=\u6C47\u603B\u65B9\u5F0F -Sun=\u65E5 -Superio=\u4E0A\u7EA7 -Support=\u652F\u6301 -Support-Auto_Complete_Shortcut=\u81EA\u52A8\u8865\u5168\u5FEB\u6377\u952E -Support-Current_Auto_Complete_Shortcut=\u5F53\u524D\u5FEB\u6377\u952E -Support_QQ=\u6280\u672FQQ -Sure_To_Close_Synch_Data_Sets=\u786E\u5B9A\u8981\u5173\u95ED\u540C\u6B65\u6570\u636E\u96C6 -Sure_To_Leave=\u4F60\u786E\u5B9A\u8981\u79BB\u5F00\u5417 -Sure_To_Open_Synch_Data_Sets=\u786E\u5B9A\u8981\u5F00\u542F\u540C\u6B65\u6570\u636E\u96C6 -Sure_To_Remove_This_Role=\u4F60\u786E\u5B9A\u5220\u9664\u8BE5\u89D2\u8272\u5417 -Surport_String_To_Formula=\u652F\u6301\u5B57\u7B26\u4E32\u7F16\u8F91\u4E3A\u516C\u5F0F -Switch=\u5207\u6362 -Switch-Form-Mode=\u5207\u6362\u4E3A\u8868\u5355\u8BBE\u8BA1\u6A21\u5F0F -Syn-transfer=\u8F6C\u6362 -SyncFailed=\u540C\u6B65\u6570\u636E\u96C6\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u60A8\u7684\u6570\u636E\u96C6 -SyncSuccess=\u540C\u6B65\u6570\u636E\u96C6\u6210\u529F -System=\u7CFB\u7EDF -System_Status=\u7CFB\u7EDF\u72B6\u6001 -System_default=\u7CFB\u7EDF\u5C06\u9ED8\u8BA4 -Sytle-FRFont=\u5B57\u4F53 -Sytle-Indentation=\u7F29\u8FDB -TODO_WORK=\u5F85\u529E\u4E8B\u52A1 -T_Insert-Float=\u63D2\u5165\u60AC\u6D6E\u5143\u7D20 -Table=\u8868 -TableData=\u6570\u636E\u96C6 -TableData_Dynamic_Parameter_Setting=\u52A8\u6001\u53C2\u6570\u6CE8\u5165 -TableData_Query=\u6570\u636E\u67E5\u8BE2 -TableDismember=\u5236\u8868\u7B26 -Table_name=\u8868\u7684\u540D\u79F0 -TaipeiCity=\u53F0\u5317\u5E02 -Taiwan=\u53F0\u6E7E\u7701 -TaiyuanCity=\u592A\u539F\u5E02 -Task=\u4EFB\u52A1 -TaskEndWhenOneTime=\u4EFB\u52A1\u6267\u884C\u4E00\u6B21\u540E\u5373\u7ED3\u675F -TaskName=\u4EFB\u52A1\u540D\u79F0 -Task_Has_Been_Closed=\u8FD9\u4E2A\u4EFB\u52A1\u5DF2\u7ECF\u5173\u95ED -Task_List_Chosen=\u5DF2\u9009\u4EFB\u52A1\u5217\u8868 -Task_List_To_Choose=\u53EF\u9009\u4EFB\u52A1\u5217\u8868 -Task_Name_Exist=\u4EFB\u52A1\u540D\u79F0\u5DF2\u7ECF\u5B58\u5728 -Template=\u6A21\u7248 -Template-Design=\u6A21\u677F\u8BBE\u8BA1 -Template_Parameters=\u6A21\u677F\u53C2\u6570 -Template_Path=\u6A21\u677F\u8DEF\u5F84 -TemplatedatasourceSameWarning=\u6A21\u677F\u6570\u636E\u96C6\u4E2D\u6709\u6570\u636E\u96C6\u540D\u5B57\u91CD\u590D\uFF0C\u8BF7\u4FEE\u6539\uFF01 -Test=\u6D4B\u8BD5 -Test_URL=\u6D4B\u8BD5\u8FDE\u63A5 -Test_Value=\u793A\u4F8B\u6570\u636E -Text=\u6587\u672C -Text_IsVertical=\u7AD6\u6392 -The_Columns_Hava_Relations_Whether_Add=\u68C0\u6D4B\u5230\u6570\u636E\u5217\u4E4B\u95F4\u6709\u8FC7\u6EE4\u5173\u7CFB\uFF0C\u662F\u5426\u6DFB\u52A0 -The_Num=\u7B2C -The_current_list_is_empty=\u5F53\u524D\u5217\u8868\u4E3A\u7A7A -The_file_is_already_selected.=\u8FD9\u4E2A\u6587\u4EF6\u5DF2\u7ECF\u88AB\u9009\u62E9 -The_file_is_already_slected.=\u8BE5\u6587\u4EF6\u5DF2\u9009\u62E9 -The_file_name_already_exists_,_override_it_?=\u8BE5\u6587\u4EF6\u540D\u5DF2\u5B58\u5728\uFF0C\u8981\u8986\u76D6\u5B83\u5417\uFF1F -The_initial_background_of_the_button=\u6309\u94AE\u7684\u521D\u59CB\u80CC\u666F -ThereIs_No_keyword_Named=\u6CA1\u6709\u67E5\u8BE2\u5230\u5173\u952E\u5B57\u4E3A -These_Parameters\ haven't\ produced\ Widgets=\u4EE5\u4E0B\u53C2\u6570\u672A\u751F\u6210 -Thick_Bottom_Border_Line=\u7C97\u5E95\u6846\u7EBF -This_Name_Has_Exsit=\u8FD9\u4E2A\u540D\u5B57\u5DF2\u7ECF\u5B58\u5728 -This_Parameter_Is_Not_Exist=\u6B64\u53C2\u6570\u4E0D\u5B58\u5728 -This_ScheduleAction_Cannot_Be_Viewed=\u8FD9\u4E2A\u5B9A\u65F6\u52A8\u4F5C\u65E0\u6CD5\u67E5\u770B -This_ScheduleAction_Is_Not_Exsit=\u8FD9\u4E2A\u5B9A\u65F6\u52A8\u4F5C\u4E0D\u5B58\u5728 -This_ScheduleTask_Is_Not_Exsit=\u8FD9\u4E2A\u5B9A\u65F6\u4EFB\u52A1\u4E0D\u5B58\u5728 -This_Template_Has_Exist=\u8FD9\u4E2A\u6A21\u677F\u5DF2\u7ECF\u5B58\u5728 -This_product_is_licensed_to=\u672C\u8F6F\u4EF6\u4F7F\u7528\u6743\u5C5E\u4E8E -This_program_is_protected_by_international_copyright_laws=\u672C\u8F6F\u4EF6\u53D7\u4E2D\u56FD\u7248\u6743\u6CD5\u53CA\u56FD\u9645\u7248\u6743\u516C\u7EA6\u4FDD\u62A4 -ThreeD_Bar_Chart=\u4E09\u7EF4\u67F1\u5F62\u56FE -ThreeD_Bar_Chart_Horizontal=\u4E09\u7EF4\u67F1\u5F62\u56FE(\u6A2A\u5411) -ThreeD_Column_Chart=\u4E09\u7EF4\u6761\u5F62\u56FE -ThreeD_Column_Chart_Horizontal=\u4E09\u7EF4\u6761\u5F62\u56FE(\u6A2A\u5411) -ThreeD_Percent_Stacked_Bar_Chart=\u4E09\u7EF4\u767E\u5206\u6BD4\u5806\u79EF\u67F1\u5F62\u56FE -ThreeD_Percent_Stacked_Column_Chart=\u4E09\u7EF4\u767E\u5206\u6BD4\u5806\u79EF\u6761\u5F62\u56FE -ThreeD_Stacked_Bar_Chart=\u4E09\u7EF4\u5806\u79EF\u67F1\u5F62\u56FE -ThreeD_Stacked_Column_Chart=\u4E09\u7EF4\u5806\u79EF\u6761\u5F62\u56FE -Three_Rows_Of_Three_Grid=\u4E09\u884C\u4E09\u5217\u7684\u683C\u5B50 -Three_Rows_Of_Two_Grid=\u4E09\u884C\u4E24\u5217\u7684\u683C\u5B50 -Thu=\u56DB -Tianjin=\u5929\u6D25 -TianjinInCity=\u5929\u6D25\u5E02\u533A -Tick\ Interval=\u523B\u5EA6\u95F4\u9694 -Time=\u65F6\u95F4 -TimesSum=\u6B21\u6570 -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 -Title=\u6807\u9898 -Title-Background=\u6807\u9898\u80CC\u666F -Title-Content=\u6807\u9898\u5185\u5BB9 -Title-Format=\u6807\u9898\u683C\u5F0F -Title_End_ColumnOrRow=\u91CD\u590D\u884C\u5217\u7ED3\u5C3E -Title_Name=\u6807\u9898\u540D -Title_Start_ColumnOrRow=\u91CD\u590D\u884C\u5217\u8D77\u59CB -To=\u5230 -Today=\u4ECA\u5929 -ToolBar_Bottom=\u5E95\u90E8\u5DE5\u5177\u680F -ToolBar_Top=\u9876\u90E8\u5DE5\u5177\u680F -Tooltips=\u63D0\u793A -Top=\u4E0A -TopDownShade=\u4E0A\u4E0B\u6E10\u53D8 -TopNavigation=\u9876\u90E8\u5BFC\u822A\u680F -Top_And_Double_Bottom_Border_Line=\u4E0A\u6846\u7EBF\u548C\u53CC\u4E0B\u6846\u7EBF -Top_And_Thick_Bottom_Border_Line=\u4E0A\u6846\u7EBF\u548C\u7C97\u4E0B\u6846\u7EBF -Top_Bottom_Border_Line=\u4E0A\u4E0B\u6846\u7EBF -Top_Margin=\u4E0A\u8FB9\u8DDD -Total=\u603B\u5171 -Traditional_Chinese_Language=\u7E41\u4F53\u4E2D\u6587 -Transition=\u5206\u652F -Transmission_Encryption=\u4F20\u8F93\u52A0\u5BC6 -Transparent=\u900F\u660E -Tree=\u6811 -Tree-ComboBox=\u4E0B\u62C9\u6811 -Tree-Filter_Condition=\u8FC7\u6EE4\u6761\u4EF6 -Tree-Grade=\u5C42 -Tree-Height=\u9AD8\u5EA6 -Tree-Mutiple_Selection_Or_Not=\u591A\u9009 -Tree-Return_Full_Path=\u7ED3\u679C\u8FD4\u56DE\u5B8C\u6574\u5C42\u6B21\u8DEF\u5F84 -Tree-Root_Name=\u6839\u8282\u70B9\u540D -Tree-Select_Leaf_Only=\u53EA\u8FD4\u56DE\u53F6\u5B50\u8282\u70B9 -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 -Tree-Show_Root_Or_Not=\u662F\u5426\u663E\u793A\u6839\u8282\u70B9 -Tree-Width=\u5BBD\u5EA6 -Tree_Data_Field=\u6811\u6570\u636E\u5B57\u6BB5 -Trillion=\u5146 -TrueExtraRunTimes=\u6B63\u786E\u7684\u989D\u5916\u6267\u884C\u6B21\u6570 -TrueFormatIs=\u6B63\u786E\u683C\u5F0F\u4E3A -TrueRunInterval=\u6B63\u786E\u7684\u8FD0\u884C\u95F4\u9694\u65F6\u95F4\u5355\u4F4D -TrueRunTimes=\u6B63\u786E\u7684\u8FD0\u884C\u6B21\u6570 -Tue=\u4E8C -TurnOff=\u5173\u95ED -TurnOn=\u5F00\u542F -TurnScreenVerticalToGetBestEffect=\u8BF7\u7FFB\u8F6C\u5C4F\u5E55\uFF0C\u7EB5\u5411\u663E\u793A\u6548\u679C\u66F4\u4F73 -Two_Rows_Of_Three_Grid=\u4E24\u884C\u4E09\u5217\u7684\u683C\u5B50 -Two_Rows_Of_Two_Grid=\u4E24\u884C\u4E24\u5217\u7684\u683C\u5B50 -Two_rows_of_two_grid= -Type=\u7C7B\u578B -Type-Parameter= \u60A8\u53EF\u4EE5\u952E\u5165${abc}\u4F5C\u4E3A\u4E00\u4E2A\u53C2\u6570\uFF0C\u8FD9\u91CCabc\u662F\u53C2\u6570\u7684\u540D\u79F0\u3002\u4F8B\u5982\uFF1A
-Type_Set=\u7C7B\u578B\u8BBE\u7F6E -URL_Certification=URL\u8BA4\u8BC1 -Undefined=\u672A\u5B9A\u4E49 -Undo=\u64A4\u9500 -Undo_Authority=\u64A4\u9500\u524D\u4E00\u6B21\u6743\u9650\u7F16\u8F91\u7684\u6240\u6709\u64CD\u4F5C -Unfrozen=\u89E3\u51BB -Unit=\u5355\u4F4D -Unit_Billion=\u5341\u4EBF -Unit_CM=\u5398\u7C73 -Unit_Hundred=\u767E -Unit_Hundred_Million=\u4EBF -Unit_Hundred_Thousand=\u5341\u4E07 -Unit_INCH=\u82F1\u5BF8 -Unit_MM=\u6BEB\u7C73 -Unit_Million=\u767E\u4E07 -Unit_PT=\u78C5 -Unit_Ten=\u5341 -Unit_Ten_Million=\u5343\u4E07 -Unit_Ten_Thousand=\u4E07 -Unit_Thousand=\u5343 -Unknown=\u672A\u77E5 -Unload_Check_Msg=\u6709\u6570\u636E\u6CA1\u6709\u63D0\u4EA4 -Unregistered=\u672A\u6CE8\u518C -Until=\u81F3 -Up=\u4E0A -UpBarBorderStyleAndColor=\u6DA8\u67F1\u6837\u5F0F -UpParent=\u4E0A\u7236\u683C -Update=\u66F4\u65B0 -Update_OfflineWrite_Lic=\u5F53\u524D\u7248\u672C\u4E0D\u652F\u6301\u8F93\u51FA\u79BB\u7EBFhtml\u62A5\u8868\uFF0C\u8BF7\u5347\u7EA7\u60A8\u7684lic -Uping_File=\u6B63\u5728\u4E0A\u4F20\u6587\u4EF6 -Upload=\u4E0A\u4F20 -Upload-Select_a_File=\u9009\u62E9\u6587\u4EF6 -UploadFileTip=\u63D0\u793A\uFF1A\u4E0A\u4F20\u56FE\u7247\u5C3A\u5BF8\u8BF7\u53C2\u7167\u79FB\u52A8\u8BBE\u5907\u5206\u8FA8\u7387 -Uploaded_File=\u8BE5\u6587\u4EF6\u5DF2\u4E0A\u4F20 -Url_location=\u7EDD\u5BF9\u8DEF\u5F84 -UrumqiCity=\u4E4C\u9C81\u6728\u9F50\u5E02 -Usable_ParameterList=\u53EF\u7528\u53C2\u6570\u5217\u8868 -Use=\u4F7F\u7528 -UseTreeWillRemoveUser=\u4F7F\u7528\u6811\u6570\u636E\u96C6\u4F1A\u6E05\u7A7A\u5DF2\u6709\u7528\u6237\u6570\u636E -Use_Current_Configuration=\u4F7F\u7528\u7684\u662F\u5F53\u524D\u914D\u7F6E -Use_Default_ToolBar=\u4F7F\u7528\u9ED8\u8BA4\u5DE5\u5177\u680F -Use_FormulaGroup=\u4F7F\u7528\u516C\u5F0F\u5206\u7EC4 -Use_Global_Configuration=\u4F7F\u7528\u7684\u662F\u5168\u5C40\u914D\u7F6E -Use_NormalGroup=\u4F7F\u7528\u666E\u901A\u5206\u7EC4 -Use_Semantic=\u4F7F\u7528\u8BED\u4E49\u5C42 -Use_ToolBar=\u4F7F\u7528\u5DE5\u5177\u680F -User=\u7528\u6237 -User-DefinedType=\u81EA\u5B9A\u4E49\u7C7B\u578B -User-defined=\u81EA\u5B9A\u4E49 -User-defined-MDX=\u81EA\u5B9A\u4E49MDX\u67E5\u8BE2 -User_Already_Logged=\u7528\u6237\u5DF2\u5728\u522B\u5904\u767B\u5F55 -User_Authentification_Mode=\u7528\u6237\u8BA4\u8BC1\u65B9\u5F0F -User_Defined_Event=\u81EA\u5B9A\u4E49\u4E8B\u4EF6 -User_Information=\u7528\u6237\u4FE1\u606F -User_TableData=\u7528\u6237\u6570\u636E\u96C6 -Username=\u7528\u6237\u540D -Using_Global_Offset=\u4F7F\u7528\u5168\u5C40\u504F\u79FB\u8BBE\u7F6E -Using_Server_Report_View_Settings=\u91C7\u7528\u670D\u52A1\u5668\u8BBE\u7F6E -Using_single_template_set=\u4F7F\u7528\u5355\u6A21\u677F\u504F\u79FB -Utils-Activate_Designer=\u6FC0\u6D3B\u8BBE\u8BA1\u5668 -Utils-Actual_Value=\u5B9E\u9645\u503C -Utils-Add_Column=\u6DFB\u52A0\u5217 -Utils-Add_Row=\u6DFB\u52A0\u884C -Utils-All_Sheets=\u6240\u6709\u7684Sheet -Utils-Append_Column=\u6DFB\u52A0\u884C -Utils-Append_Row=\u6DFB\u52A0\u884C -Utils-Are_you_sure_to_delete_the_role=\u786E\u5B9E\u8981\u5220\u9664\u8BE5\u89D2\u8272\u5417 -Utils-Are_you_sure_to_refresh_all=\u5237\u65B0\u6240\u6709\u884C\u5C06\u5220\u9664\u60A8\u6240\u6709\u7684\u884C\u8BBE\u7F6E\uFF0C\u786E\u5B9A\u7EE7\u7EED -Utils-Are_you_sure_to_remove_the_selected_item=\u4F60\u786E\u5B9E\u51B3\u5B9A\u5220\u9664\u9009\u4E2D\u7684\u9879 -Utils-Available_Columns=\u53EF\u9009\u5217 -Utils-Available_DataSets=\u53EF\u7528\u6570\u636E\u96C6 -Utils-Beyond_the_bottom_side_of_Border=\u8D85\u51FA\u4E0B\u8FB9\u754C -Utils-Beyond_the_left_side_of_Border=\u8D85\u51FA\u5DE6\u8FB9\u754C -Utils-Beyond_the_right_side_of_Border=\u8D85\u51FA\u53F3\u8FB9\u754C -Utils-Beyond_the_top_side_of_Border=\u8D85\u51FA\u4E0A\u8FB9\u754C -Utils-Bottom_to_Top=\u4ECE\u4E0B\u5230\u4E0A -Utils-Can't_Paste_to_Uneditable_Area=\u4E0D\u5141\u8BB8\u526A\u5207\u5230\u4E0D\u53EF\u7F16\u8F91\u7684\u533A\u57DF -Utils-Can_not_create_connection=\u65E0\u6CD5\u5EFA\u7ACB\u6570\u636E\u8FDE\u63A5 -Utils-Can_not_find_the_corresponding_TableData=\u672A\u627E\u5230\u5BF9\u5E94\u7684\u6570\u636E\u96C6 -Utils-Check_Data_Consistency=\u6570\u636E\u4E00\u81F4\u6027\u6821\u9A8C -Utils-Click_the_database_button_to_add_database=\u70B9\u51FB\u6570\u636E\u6309\u94AE\u6765\u6DFB\u52A0\u6570\u636E\u5E93 -Utils-Click_the_left_plus_button_to_add_item=\u70B9\u51FB\u5DE6\u8FB9\u7684\u52A0\u53F7\u6309\u94AE\u6765\u6DFB\u52A0\u9879\u76EE -Utils-Click_the_left_plus_button_to_add_tree_node=\u70B9\u51FB\u5DE6\u8FB9\u7684\u52A0\u53F7\u6765\u6DFB\u52A0\u6811\u8282\u70B9 -Utils-Column_Name=\u5217\u540D -Utils-Column_Serial_Number=\u5217\u5E8F\u53F7 -Utils-Column_Width=\u5217\u5BBD -Utils-Connection_can_not_be_null=\u6570\u636E\u8FDE\u63A5\u4E0D\u53EF\u4E3A\u7A7A -Utils-Current_Cell=\u5F53\u524D\u683C\u5B50 -Utils-Current_Column=\u5F53\u524D\u5217 -Utils-Current_Row=\u5F53\u524D\u884C -Utils-Current_Sheet=\u5F53\u524DSheet -Utils-Current_Value=\u5F53\u524D\u503C -Utils-Data_consistency_check_successfully_Passed=\u6210\u529F\u901A\u8FC7\u6570\u636E\u4E00\u81F4\u6027\u68C0\u9A8C -Utils-Default_Value=\u9ED8\u8BA4\u503C -Utils-Delete_Column=\u5220\u9664\u5217 -Utils-Delete_Directory=\u5220\u9664\u76EE\u5F55 -Utils-Delete_Record=\u5220\u9664\u8BB0\u5F55 -Utils-Delete_Row=\u5220\u9664\u884C -Utils-Design-Action_Cancel=\u53D6\u6D88 -Utils-Design-File_Open=\u6253\u5F00 -Utils-Display_Value=\u663E\u793A\u503C -Utils-Enter_reportlet_name_prefix_or_pattern=\u8F93\u5165\u62A5\u8868\u6A21\u677F\u524D\u7F00\u6216\u8005\u6A21\u5F0F -Utils-Exit_Designer=\u9000\u51FA\u8BBE\u8BA1\u5668 -Utils-File_name=\u6587\u4EF6\u540D -Utils-File_type=\u6587\u4EF6\u7C7B\u578B -Utils-Flash_Print[Client]=Flash\u6253\u5370[\u5BA2\u6237\u7AEF] -Utils-Font_Not_Found=\u672A\u627E\u5230\u5B57\u4F53 -Utils-Global_Parameters= -Utils-Group_Detail= -Utils-Group_Footer= -Utils-Group_Header= -Utils-Import_Excel_Data=\u5BFC\u5165[Excel] -Utils-Insert_Column=\u63D2\u5165\u5217 -Utils-Insert_Record=\u63D2\u5165\u8BB0\u5F55 -Utils-Insert_Row=\u63D2\u5165\u884C -Utils-Last_Page=\u6700\u540E\u4E00\u9875 -Utils-Left_to_Right=\u6A2A\u5411 -Utils-Left_to_Right_a=\u4ECE\u5DE6\u5F80\u53F3 -Utils-Matching_Items=\u5339\u914D\u9879\u76EE -Utils-Merge_Cell=\u5408\u5E76\u5355\u5143\u683C -Utils-Merge_datasource_files_successfully=\u5408\u5E76\u6570\u636E\u6E90\u6587\u4EF6\u6210\u529F -Utils-Move_Down=\u4E0B\u79FB -Utils-Move_To=\u79FB\u5230 -Utils-Move_Up=\u4E0A\u79FB -Utils-Need_to_select_a_datasource_file=\u9700\u8981\u9009\u62E9\u4E00\u4E2A\u6570\u636E\u6E90\u6587\u4EF6 -Utils-NewDemoEnv=\u4EA7\u54C1\u6F14\u793A\uFF0C\u5C06\u4E3A\u60A8\u81EA\u52A8\u521B\u5EFA\u5DE5\u4F5C\u76EE\u5F55\uFF1A -Utils-New_Directory= -Utils-New_Report=\u65B0\u5EFA\u62A5\u8868 -Utils-New_name_cannot_be_null=\u65B0\u540D\u5B57\u4E0D\u5141\u8BB8\u4E3A\u7A7A\u5B57\u7B26\u4E32 -Utils-No_Data=\u6CA1\u6709\u6570\u636E -Utils-No_File_Selected=\u6CA1\u6709\u9009\u62E9\u6587\u4EF6 -Utils-No_Pagination=\u4E0D\u5206\u9875 -Utils-Now_create_connection=\u6B63\u5728\u5EFA\u7ACB\u6570\u636E\u8FDE\u63A5 -Utils-Only_Rename_File_Under_Reportlets=\u4EC5\u91CD\u547D\u540D\u5728reportlets\u76EE\u5F55\u4E0B\u7684\u6587\u4EF6 -Utils-OpenDemoEnv=\u4EA7\u54C1\u6F14\u793A\uFF0C\u9700\u8981\u81EA\u52A8\u5207\u6362\u81F3\u5DE5\u4F5C\u76EE\u5F55\uFF1A -Utils-Open_File=\u6253\u5F00\u6587\u4EF6 -Utils-PDF_Print[Client]=PDF\u6253\u5370[\u5BA2\u6237\u7AEF] -Utils-Print[Client]=\u6253\u5370[\u5BA2\u6237\u7AEF] -Utils-Print[PDF]=\u6253\u5370[PDF] -Utils-Print[Server]=\u6253\u5370[\u670D\u52A1] -Utils-Remove_Row=\u5220\u9664\u8BB0\u5F55 -Utils-Rename_Column=\u91CD\u547D\u540D\u5217 -Utils-Rename_File=\u6587\u4EF6\u91CD\u547D\u540D -Utils-Repeat_ReportFooter=\u91CD\u590D\u8868\u811A -Utils-Report-Env_Directory=\u62A5\u8868\u5DE5\u4F5C\u76EE\u5F55 -Utils-Report_Footer=\u62A5\u8868\u811A -Utils-Report_Header=\u62A5\u8868\u7709 -Utils-Report_Name=\u62A5\u8868\u540D -Utils-Report_Runtime_Env=\u62A5\u8868\u5DE5\u4F5C\u76EE\u5F55 -Utils-Resign_in=\u91CD\u767B\u5F55 -Utils-Right_to_Left=\u4ECE\u53F3\u5230\u5DE6 -Utils-Row_Height=\u884C\u9AD8 -Utils-Segment_Not_existed=\u4E0D\u5B58\u5728\u8868\u5B57\u6BB5 -Utils-Selected_Option=\u5DF2\u9009\u9879 -Utils-Server_Parameters=\u670D\u52A1\u5668\u53C2\u6570 -Utils-Set_ClassPath=\u8BBE\u7F6EClasspath\u8DEF\u5F84 -Utils-Set_Default=\u8BBE\u7F6E\u4E3A\u9ED8\u8BA4 -Utils-Set_Default_Database=\u8BBE\u4E3A\u9ED8\u8BA4\u6570\u636E\u5E93 -Utils-Should_select_a_template_first=\u5FC5\u987B\u5148\u9009\u62E9\u4E00\u5F20\u6A21\u677F -Utils-Show_Cell_Value=\u663E\u793A\u5355\u5143\u683C\u503C -Utils-Show_View=\u89C6\u56FE -Utils-Source_File=\u6E90\u6587\u4EF6 -Utils-Submit=\u63D0\u4EA4 -Utils-Submit_Forcibly=\u5F3A\u884C\u63D0\u4EA4 -Utils-Switch_To_Class_Reportlet=\u5207\u6362\u5230\u7A0B\u5E8F\u7F51\u7EDC\u62A5\u8868 -Utils-Switch_To_Template_Reportlet=\u5207\u6362\u5230\u6A21\u677F\u7F51\u7EDC\u62A5\u8868 -Utils-Template_File=\u6A21\u677F\u6587\u4EF6 -Utils-The-Chart=\u56FE\u8868 -Utils-The-Form=\u8868\u5355 -Utils-The-PolyReport=\u805A\u5408\u62A5\u8868 -Utils-The-WorkBook=\u6A21\u677F -Utils-The_Name_has_been_existed=\u6B64\u540D\u5DF2\u7ECF\u5B58\u5728 -Utils-The_data_dictionary_is_not_exist=\u6570\u636E\u5B57\u5178\u4E0D\u5B58\u5728 -Utils-The_private_table_has_been_existed=\u6B64\u79C1\u6709\u6570\u636E\u8868\u5DF2\u7ECF\u5B58\u5728 -Utils-The_selected_reportlet_do_not_contain_any_parameter=\u9009\u62E9\u7684\u7F51\u7EDC\u62A5\u8868\u4E0D\u5305\u542B\u4EFB\u4F55\u53C2\u6570 -Utils-The_selected_reportlet_is_not_a_reportlet_,_=\u60A8\u9009\u62E9\u7684\u6587\u4EF6\u4E0D\u662F\u62A5\u8868\u6A21\u677F\uFF0C\u4E0D\u80FD\u751F\u6210\u53C2\u6570 -Utils-This_file_has_been_existed=\u6B64\u6587\u4EF6\u5DF2\u7ECF\u5B58\u5728 -Utils-This_name_has_been_existed=\u6B64\u540D\u5DF2\u7ECF\u5B58\u5728 -Utils-Top_to_Bottom=\u7EB5\u5411 -Utils-Top_to_Bottom_a=\u4ECE\u4E0A\u5F80\u4E0B -Utils-Total_Option=\u53EF\u9009\u9879 -Utils-Unregistered_Version=\u672A\u6388\u6743\u7248\u672C(\u5305\u542B\u5168\u90E8\u529F\u80FD,\u4E0D\u5141\u8BB8\u7528\u4E8E\u5546\u4E1A\u76EE\u7684) -Utils-User_Definition=\u7528\u6237\u81EA\u5B9A\u4E49 -Utils-Would_you_like_to_save=\u4F60\u662F\u5426\u9700\u8981\u4FDD\u5B58 -Utils-Would_you_like_to_save_the_report= -Utils-You_will_rename_the_following_file=\u4F60\u8981\u91CD\u547D\u540D\u5982\u4E0B\u6587\u4EF6 -Utils-has_been_existed=\u5DF2\u5B58\u5728 -Utils-please_waiting=\u8BF7\u7A0D\u5019 -Utils-submitAll=\u6279\u91CF\u63D0\u4EA4 -Utils-switch=\n\u60A8\u5F53\u524D\u672A\u88AB\u4FDD\u5B58\u6587\u4EF6\u5C06\u88AB\u4FDD\u5B58\u5728\u5F53\u524D\u76EE\u5F55\u4E0B\uFF0C\n\u662F\u5426\u7EE7\u7EED\uFF1F -Utils_UnDelete_Column=\u64A4\u9500\u5220\u9664\u5217 -Utils_UnDelete_Row=\u64A4\u9500\u5220\u9664\u884C -Value=\u503C -Value_Not_Match=\u952E\u5165\u503C\u4E0D\u7B26\u5408\u89C4\u8303 -Value_Percent=\u503C\u6240\u5360\u6BD4\u4F8B -Values=\u503C -Values-Editor=\u503C\u7F16\u8F91\u5668 -Variables=\u53D8\u91CF -Verify=\u6821\u9A8C -Verify-Data_Verify=\u6570\u636E\u6821\u9A8C -Verify-Error_Information=\u6821\u9A8C\u51FA\u9519\u4FE1\u606F -Verify-Expression=\u6821\u9A8C\u516C\u5F0F -Verify-Formular_Parser_Error=\u516C\u5F0F\u89E3\u6790\u9519\u8BEF -Verify-Message=\u9519\u8BEF\u4FE1\u606F -Verify-ToolTips=\u4E0D\u6EE1\u8DB3\u516C\u5F0F\u63D0\u793A\u6821\u9A8C\u51FA\u9519\u4FE1\u606F -Verify-Verify=\u6570\u636E\u6821\u9A8C -Verify-Verify_Formula=\u6821\u9A8C\u516C\u5F0F -Verify-Verify_Result=\u6821\u9A8C\u7ED3\u679C -Verify-Verify_Success=\u6821\u9A8C\u6210\u529F -Verify_Error=\u6821\u9A8C\u51FA\u9519 -Verify_Fail=\u6821\u9A8C\u5931\u8D25 -Verifying=\u6821\u9A8C\u4E2D -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 -Version-does-not-support-map=\u60A8\u5F53\u524D\u4F7F\u7528\u7684lic\u4E0D\u652F\u6301\u5730\u56FE\u529F\u80FD\uFF0C\u8BF7\u5347\u7EA7\u60A8\u7684lic -Vertical=\u5782\u76F4 -Vertical-SplitPane=\u5DE6\u53F3\u5206\u5272\u5E03\u5C40\u9762\u677F -Vertical-Split_Layout=\u5782\u76F4\u5206\u5272\u5E03\u5C40 -VerticalBoxLayout=\u5782\u76F4\u76D2\u5B50\u5E03\u5C40 -Vertical_Layout=\u5782\u76F4\u5E03\u5C40 -Vgap=\u5782\u76F4\u95F4\u9699 -View_Combo=\u4E0B\u62C9\u89C6\u56FE -Visibility=\u53EF\u89C1\u6027 -Visit=\u8BBF\u95EE -VisitTime=\u8BBF\u95EE\u65F6\u95F4 -WARNING-Fail_to_Delete_Cache_File=\u5220\u9664\u672C\u5730\u7F13\u5B58\u6587\u4EF6\u5931\u8D25 -WEB-Pagination_Setting=\u5206\u9875\u9884\u89C8\u8BBE\u7F6E -WEB-Write_Setting=\u586B\u62A5\u9875\u9762\u8BBE\u7F6E -WF-Assigned_Role=\u6307\u5B9A\u89D2\u8272 -WF-Assigned_User=\u6307\u5B9A\u7528\u6237 -WF-Auto_Task_Node=\u81EA\u52A8\u4EFB\u52A1\u8282\u70B9 -WF-Basis=\u57FA\u672C\u5C5E\u6027 -WF-Communion_Task_Node=\u4EA4\u4E92\u4EFB\u52A1\u8282\u70B9 -WF-Description=\u63CF\u8FF0 -WF-End_Node=\u7ED3\u675F\u8282\u70B9 -WF-Equal=\u540C\u7EA7 -WF-ID=\u7F16\u53F7 -WF-Junior=\u4E0B\u7EA7 -WF-Name=\u540D\u79F0 -WF-Previous_User=\u5148\u524D\u7528\u6237 -WF-Previous_User_Relation=\u4E0E\u5148\u524D\u7528\u6237\u5173\u7CFB -WF-Privilege_Setting=\u6743\u9650\u8BBE\u7F6E -WF-Reportlet_Field=\u6765\u81EA\u7F51\u7EDC\u62A5\u8868\u6307\u5B9A\u533A\u57DF -WF-Reportlet_Info=\u7F51\u7EDC\u62A5\u8868\u4FE1\u606F -WF-Router_Task_Node=\u8DEF\u7531\u4EFB\u52A1\u8282\u70B9 -WF-Select_Field=\u9009\u62E9\u533A\u57DF -WF-Start_Node=\u5F00\u59CB\u8282\u70B9 -WF-Superior=\u4E0A\u7EA7 -WF-Transition=\u8FC1\u79FB -WF-Work_Flow=\u5DE5\u4F5C\u6D41 -WLayout-Absolute-ToolTips=\u81EA\u7531\u5F0F\u5E03\u5C40\uFF0C\u53EF\u4EE5\u5728\u5E03\u5C40\u5185\u4EFB\u610F\u4F4D\u7F6E\u6DFB\u52A0\u63A7\u4EF6 -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 -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 -WLayout-Border-ToolTips=\u5B8C\u6574\u7684\u8FB9\u754C\u5E03\u5C40\u5BB9\u5668\uFF0C\u7531\u4E1C\u5357\u897F\u5317\u4E2D\u4E94\u5757\u5171\u540C\u6784\u6210\uFF0C\n\u5176\u4E2D\u5357\u5317\u5757\u53EF\u4EE5\u6839\u636E\u9700\u8981\u8C03\u6574\u9AD8\u5EA6\uFF0C\u4E1C\u897F\u5757\u53EF\u4EE5\u6839\u636E\u9700\u8981\u8C03\u6574\u5BBD\u5EA6\u3002 -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 -WLayout-Card-ToolTips=\u5361\u7247\u5F0F\u5E03\u5C40\uFF0C\u8BE5\u5E03\u5C40\u5BB9\u5668\u4E2D\u53EF\u4EE5\u6DFB\u52A0\u591A\u4E2A\u5176\u5B83\u7EC4\u4EF6\uFF0C\u5E76\u901A\u8FC7\u8BBE\u7F6E\u4EE5\u5C55\u793A\u5176\u4E2D\u7684\u4E00\u4E2A -WLayout-Grid-ToolTips=\u7F51\u683C\u5F0F\u5E03\u5C40\uFF0C\u53EF\u901A\u8FC7\u8BBE\u7F6E\u5C06\u6574\u4E2A\u5BB9\u5668\u5E73\u5747\u5206\u6210N\u884C,N\u5217 -WLayout-Horizontail-ToolTips=\u6C34\u5E73\u6D41\u5F0F\u5E03\u5C40\uFF0C\u8BE5\u5E03\u5C40\u5BB9\u5668\u4E2D\u53EF\u4EE5\u6DFB\u52A0\u591A\u4E2A\u5176\u5B83\u7EC4\u4EF6\uFF0C\u6839\u636E\u8BBE\u5B9A\u4ECE\u5DE6\u5230\u53F3\u3001\u5C45\u4E2D\u6216\u8005\u4ECE\u53F3\u5230\u5DE6\u5206\u5E03 -WLayout-Split-ToolTips=\u6309\u7167\u6BD4\u7387\u53EF\u4EE5\u5C06\u5E03\u5C40\u5206\u5272\u4E24\u90E8\u5206 -WLayout-Vertical-ToolTips=\u5782\u76F4\u6D41\u5F0F\u5E03\u5C40\uFF0C\u8BE5\u5E03\u5C40\u5BB9\u5668\u4E2D\u53EF\u4EE5\u6DFB\u52A0\u591A\u4E2A\u5176\u5B83\u7EC4\u4EF6\uFF0C\u6839\u636E\u8BBE\u5B9A\u4ECE\u4E0A\u5230\u4E0B\u3001\u6216\u8005\u5C45\u4E2D\u5206\u5E03 -Want_To_Cover_It=\u662F\u5426\u60F3\u8986\u76D6\u5B83 -Want_To_New_Parameter=\u662F\u5426\u60F3\u6DFB\u52A0\u53C2\u6570 -Waring_you=\u60A8\u9009\u4E2D\u4E86\u591A\u4E2A\u5355\u5143\u683C\uFF01 -Warning=\u8B66\u544A -Warning-Template_Do_Not_Exsit=\u6A21\u677F\u4E0D\u5B58\u5728 -Warnning=\u63D0\u9192 -WaterMark=\u6C34\u5370 -Web=\u7F51\u7EDC -Web-Please_input_parameter_vlaues= -Web-The_selected_directory_must_be_named_WEB-INF= -Web-URL=\u7F51\u7EDC\u8868\u5355\u6570\u636E\u6E90\u5730\u5740 -Web-WEB-INF_Directory= -Web_Apply=WEB\u5E94\u7528 -Web_Preview_Message=\u8BF7\u5C06\u6A21\u677F\u6587\u4EF6\u4FDD\u5B58\u5728\u5F53\u524D\u8FD0\u884C\u73AF\u5883\u76EE\u5F55\u4E0B -Web_Preview_Port=\u7AEF\u53E3\u53F7 -Web_Preview_Port-Conflict-Message1=\u5185\u7F6E\u670D\u52A1\u5668\u7AEF\u53E3( -Web_Preview_Port-Conflict-Message2=)\u540C\u60A8\u7684\u5176\u5B83\u7AEF\u53E3\u53D1\u751F\u51B2\u7A81\uFF0C\u8BF7\u8BBE\u7F6E\u4E00\u4E2A\u65B0\u7AEF\u53E3\u4EE5\u91CD\u542F\u670D\u52A1\u3002 -Web_Preview_Port_Setting=\u7AEF\u53E3\u8BBE\u7F6E -Wed=\u4E09 -Week=\u5468 -Weeks=\u4E2A\u661F\u671F -Welcome=\u6B22\u8FCE -Where_claus=\u8FC7\u6EE4\u6761\u4EF6 -Whether_Change_To_LayerReport=\u662F\u5426\u8F6C\u6362\u6210\u5C42\u5F0F\u62A5\u8868 -Whether_Query_Result_When_Paging_Preview_Timer=\u5206\u9875\u9884\u89C8\u662F\u5426\u67E5\u8BE2\u5B9A\u65F6\u5668\u7ED3\u679C -Whether_Reinstate_Report=\u662F\u5426\u6062\u590D\u539F\u6709\u62A5\u8868 -Widget=\u63A7\u4EF6 -Widget-Array=\u6570\u7EC4 -Widget-Chart_Widget_Config=\u56FE\u8868\u63A7\u4EF6 -Widget-Comb_Widget_Config=\u7EC4\u5408\u63A7\u4EF6 -Widget-Comb_Widget_Report_Path=\u7EC4\u5408\u63A7\u4EF6\u6A21\u677F\u8DEF\u5F84 -Widget-Custom_Widget_Config=\u81EA\u5B9A\u4E49\u63A7\u4EF6 -Widget-Data_URL=\u6570\u636EURL -Widget-Date_Selector_Return_Type=\u8FD4\u56DE\u503C\u7C7B\u578B -Widget-Default_Widget_Config=\u57FA\u672C\u63A7\u4EF6 -Widget-Disabled=\u4E0D\u53EF\u7528 -Widget-Form_Widget_Config=\u8868\u5355\u63A7\u4EF6 -Widget-Form_Widget_Container=\u8868\u5355\u5BB9\u5668 -Widget-Height=\u63A7\u4EF6\u9AD8\u5EA6 -Widget-Load_By_Async=\u5F02\u6B65\u52A0\u8F7D -Widget-Load_By_Complete=\u5B8C\u5168\u52A0\u8F7D -Widget-Load_Type=\u52A0\u8F7D -Widget-Multi_Report_Widget=\u62A5\u8868\u63A7\u4EF6 -Widget-NeedSubmit=\u9700\u8981\u63D0\u4EA4 -Widget-Parameter-Name=\u60A8\u53EF\u4EE5\u70B9\u51FB\u4E0B\u62C9\u6309\u94AE\u9009\u62E9\u53C2\u6570\u540D\u4F5C\u4E3A\u63A7\u4EF6\u540D\u5B57 -Widget-Report_Widget=\u5FAE\u578B\u62A5\u8868 -Widget-Role_Table_Tree=\u89D2\u8272\u8868\u683C\u6811\uFF0C\u8BE5\u63A7\u4EF6\u4EC5\u4EC5\u7528\u5728\u6743\u9650\u914D\u7F6E\u4E2D -Widget-Settings=\u63A7\u4EF6\u8BBE\u7F6E -Widget-Size=\u63A7\u4EF6\u5927\u5C0F -Widget-Sizing=\u5927\u5C0F\u8C03\u6574 -Widget-TreeNode=\u6811\u8282\u70B9\u6309\u94AE -Widget-TreeNode-Grade=\u5C42\u7EA7 -Widget-User_Defined=\u9884\u5B9A\u4E49 -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 -Widget-User_Defined_Widget_Config=\u9884\u5B9A\u4E49\u63A7\u4EF6 -Widget-Visible=\u53EF\u89C1 -Widget-Widget_Config=\u63A7\u4EF6\u914D\u7F6E -Widget-Widget_Css_Path=CSS\u6837\u5F0F\u8868\u8DEF\u5F84 -Widget-Widget_JS_Path=JavaScript\u8DEF\u5F84 -Widget-Widget_Type=\u63A7\u4EF6\u7C7B\u578B\u540D -Widget-Width=\u63A7\u4EF6\u5BBD\u5EA6 -WidgetDisplyPosition=\u63A7\u4EF6\u663E\u793A\u4F4D\u7F6E -Widget_Cascade=\u7EA7\u8054 -Width=\u5BBD -Window=\u7A97\u53E3 -Wizard=\u5411\u5BFC -Word=Word -WorkBook=\u5DE5\u4F5C\u7C3F -WorkSheet=\u81EA\u7531\u62A5\u8868 -Work_After_Restart_Designer=\u91CD\u542F\u8BBE\u8BA1\u5668\u540E\u751F\u6548 -World=\u4E16\u754C -World\ Map=\u4E16\u754C\u5730\u56FE -Write-Custom_Css_Style_Path=\u81EA\u5B9A\u4E49\u6837\u5F0F\u8868\u76F8\u5BF9\u8DEF\u5F84 -Write-Display\ Type\ After\ Edit=\u7F16\u8F91\u540E\u683C\u5B50\u7684\u503C\u663E\u793A\u4E3A\u63A7\u4EF6\u7684 -Write_Preview=\u586B\u62A5\u9884\u89C8 -Writer-ShortCuts_Setting=\u586B\u62A5\u5FEB\u6377\u952E\u8BBE\u7F6E -Writer_ShortCuts_Setting=\u586B\u62A5\u5FEB\u6377\u952E\u8BBE\u7F6E -WuhanCity=\u6B66\u6C49\u5E02 -X-Coordinate=\u6A2A\u5750\u6807 -XMLA=\u591A\u7EF4\u6570\u636E\u5E93 -XMLA_Explain=\u5728\u4F7F\u7528\u591A\u7EF4\u6570\u636E\u96C6\u53D6\u6570\u524D\uFF0C\u60A8\u9996\u5148\u9700\u8981\u4E00\u4E2A\u53EF\u6210\u529F\u8FDE\u63A5\u7684\u591A\u7EF4\u6570\u636E\u5E93\u8FDE\u63A5\u3002\n\u8BBE\u7F6E\u5B8C\u6570\u636E\u8FDE\u63A5\u540E\uFF0C\u67E5\u8BE2\u6570\u636E\u65F6,\u6709\u4E24\u79CD\u4E0D\u540C\u7684\u53D6\u6570\u624B\u6BB5\u3002\n1.\u7B80\u5355\u901A\u7528\u67E5\u8BE2\uFF1A\n\u7B80\u5355\u901A\u7528\u67E5\u8BE2\u9002\u7528\u4E8EFineBI\u53CA\u5176\u4ED6\u591A\u7EF4\u6570\u636E\u5E93\u3002\n\u4F7F\u7528\u7B80\u5355\u901A\u7528\u67E5\u8BE2\uFF0CFR\u5C06\u81EA\u52A8\u8BFB\u53D6\u9009\u62E9cube\u7684\u5C42\u6B21\u7ED3\u6784\uFF0C\u60A8\u53EF\u4EE5\u76F4\u63A5\u9009\u62E9\u6240\u9700\u7684\u5EA6\u91CF\u503C\u53CA\u7EF4\u5EA6\uFF0C\u5E76\u6DFB\u52A0\u7B5B\u9009\u6761\u4EF6\uFF0CFR\u4F1A\u6839\u636E\u60A8\u7684\u9009\u62E9\u81EA\u52A8\u67E5\u8BE2\u6570\u636E\u3002\n\u7B80\u5355\u901A\u7528\u67E5\u8BE2\u4EC5\u652F\u6301\u7EF4\u5EA6\u53CA\u5EA6\u91CF\u503C\u4E24\u4E2A\u8F74\u7684\u67E5\u8BE2\u3002\n\u5728\u5EA6\u91CF\u503C\u53CA\u7EF4\u5EA6\u8BBE\u7F6E\u4E2D\uFF0C\u76EE\u524D\u60A8\u53EA\u80FD\u9009\u62E9\u6240\u9700\u7EF4\u5EA6\uFF0C\u65E0\u6CD5\u624B\u52A8\u4FEE\u6539\u3002\n\u8FC7\u6EE4\u6761\u4EF6\u91C7\u7528OPEN SQL\u8BED\u6CD5\uFF0C\u60A8\u53EF\u4EE5\u952E\u5165${abc}\u4F5C\u4E3A\u4E00\u4E2A\u53C2\u6570\uFF0C\u7528\u6CD5\u540C\u6570\u636E\u5E93\u6570\u636E\u96C6\u3002\n2.\u81EA\u5B9A\u4E49MDX\u67E5\u8BE2\uFF1A\n\u4F7F\u7528\u81EA\u5B9A\u4E49MDX\u67E5\u8BE2\uFF0C\u60A8\u53EF\u4EE5\u81EA\u5B9A\u4E49MDX\u8BED\u53E5\u67E5\u8BE2\u6240\u9700\u7ED3\u679C\u3002\n\u6CE8\u610F\uFF0C\u81EA\u5B9A\u4E49MDX\u67E5\u8BE2\u4E5F\u53EA\u652F\u6301\u4E24\u4E2A\u8F74\u7684\u67E5\u8BE2\u3002\n\u60A8\u53EF\u952E\u5165${abc}\u505A\u4E3A\u4E00\u4E2A\u53C2\u6570\uFF0C\u7528\u6CD5\u540C\u6570\u636E\u5E93\u6570\u636E\u96C6\u3002\nFineBI\u7684cube\u4E0D\u652F\u6301MDX\u67E5\u8BE2\u3002 -XML_File_Cannot_Be_Resolved=xml\u6587\u4EF6\u65E0\u6CD5\u89E3\u6790 -XML_TREE_Wait=\u7B49\u5F85\u5237\u65B0 -XML_XPath_Message=\u70B9\u51FB\u5DE6\u4FA7\u6811\u8282\u70B9\u9009\u62E9 -X_Axis=X\u8F74 -X_offset=X\u65B9\u5411\u504F\u79FB -XianCity=\u897F\u5B89\u5E02 -Xianggang=\ \u9999\u6E2F\u7279\u522B\u884C\u653F\u533A -XiningCity=\u897F\u5B81\u5E02 -Xinjiang=\u65B0\u7586\u7EF4\u543E\u5C14\u81EA\u6CBB\u533A -Xizang=\u897F\u85CF\u81EA\u6CBB\u533A -Y-Coordinate=\u7EB5\u5750\u6807 -Y_Axis=Y\u8F74 -Y_offset=Y\u65B9\u5411\u504F\u79FB -Year=\u5E74 -Yes=\u662F -YinchuanCity=\u94F6\u5DDD\u5E02 -Yong-Style=\u6E05\u65B0 -You_Choose_An_Empty_Directory=\u4F60\u6240\u9009\u76EE\u5F55\u662F\u7A7A\u7684 -You_are_using_unregisted_function=\u9519\u8BEF\u4EE3\u7801\:1116 \u60A8\u4F7F\u7528\u4E86\u672A\u6CE8\u518C\u7684\u529F\u80FD -You_have_not_made_a_report=\u60A8\u8FD8\u6CA1\u6709\u5236\u4F5C\u62A5\u8868 -Yuan=\u5143 -Yunnan=\u4E91\u5357\u7701 -Zhejiang=\u6D59\u6C5F\u7701 -ZhengzhouCity=\u90D1\u5DDE\u5E02 -Zhongxi=\u4E2D\u897F\u533A -__BYPAGESIZE__=\u5206\u9875\u7684\u65F6\u5019\u6309\u4EC0\u4E48\u7EB8\u5F20\u5927\u5C0F\u5206\u9875 -__CUMULATE_PAGE_NUMBER__=reportlets\u8BBF\u95EE\u591A\u6A21\u677F\u65F6\u662F\u5426\u7D2F\u79EF\u9875\u7801 -__FILENAME__=\u62A5\u8868\u5BFC\u51FA\u7684\u81EA\u5B9A\u4E49\u6587\u4EF6\u540D -__FLASH_FIRSTPAGEMARK__=Flash\u6253\u5370\u7528\u9014 -__ISDEBUG__=\u662F\u5426\u8C03\u8BD5 -__ISJMETER__=\u662F\u5426JMETER\u6D4B\u8BD5 -__PARAMETERS__=\u7528JSON\u683C\u5F0F\u8868\u793A\u7684\u8BBF\u95EE\u53C2\u6570 -__PI__=\u662F\u5426\u663E\u793A\u53C2\u6570\u754C\u9762 -__SHOWTOOLBAR__=\u662F\u5426\u663E\u793A\u5DE5\u5177\u680F -__SINGLESHEET__=\u662F\u5426\u5355\u9875\u663E\u793A -__locale__=\u6D4F\u89C8\u5668\u56FD\u9645\u5316\u53C2\u6570 -add=\u6DFB\u52A0 -add_schedule_task=\u6DFB\u52A0\u5B9A\u65F6\u4EFB\u52A1 -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. -alraedy_close=\u5DF2\u7ECF\u5173\u95ED -already-saved=\u5DF2\u7ECF\u4FDD\u5B58 -already_exists=\u5DF2\u7ECF\u5B58\u5728 -and=\u548C -baseModule=\u57FA\u7840\u6A21\u5757 -can_not_include_underline=\u4E0D\u80FD\u5305\u542B"_" -chart-PreStyle=\u56FE\u8868\u9884\u5B9A\u4E49\u914D\u8272 -chartDesignerModule=\u8BBE\u8BA1\u5668\u56FE\u8868\u6A21\u5757 -chartModule=\u56FE\u8868\u6A21\u5757 -check_communication=\u8BF7\u68C0\u67E5\u7F51\u7EDC\u901A\u8BAF\u662F\u5426\u6B63\u5E38\u53CA\u670D\u52A1\u5668\u662F\u5426\u6B63\u5E38\u8FD0\u884C -choose_schedule_type=\u8BF7\u9009\u62E9\u5B9A\u65F6\u4EFB\u52A1\u7684\u7C7B\u578B -clickToCancel=\u5DF2\u7ECF\u88AB\u5220\u9664\uFF0C\u65E0\u6CD5\u64CD\u4F5C\uFF01 -clickToCover=\u5DF2\u7ECF\u88AB\u4FEE\u6539\uFF0C\u662F\u5426\u8986\u76D6\uFF1F -clickToRefresh=\u662F\u5426\u7EE7\u7EED\uFF1F\u70B9\u51FB\u662F\u5237\u65B0 -column_and_row=\u884C\u5217 -confirm_server=\u8BF7\u786E\u8BA4\u670D\u52A1\u5668\u5730\u5740\u3001\u7AEF\u53E3\u3001\u5E94\u7528\u662F\u5426\u6B63\u786E\u4E14\u670D\u52A1\u5668\u662F\u5426\u5F00\u542F -connection_to_server_again=\u8FDE\u63A5\u4E2D\u65AD\uFF0C\u662F\u5426\u91CD\u65B0\u8FDE\u63A5\u670D\u52A1\u5668? -contact_info=\u8054\u7CFB\u4FE1\u606F(\u9009\u586B) -croExpression1=\u6BCF\u6708\u6700\u540E\u4E00\u592919\u70B950\u5206 -croExpression2=\u6BCF\u6708\u6700\u540E\u4E00\u4E2A\u5DE5\u4F5C\u65E519\u70B950\u5206 -croExpression3=\u6BCF\u6708\u7B2C4\u4E2A\u5468\u4E9419\u70B950\u5206 -croExpression4=2013\u5E74\u7B2C4\u5B63\u5EA6\u6BCF\u592919\u70B950\u5206 -croExpression5=\u6BCF\u4E2A\u5DE5\u4F5C\u65E5\u65E9\u4E0A9\u70B9\u548C\u665A\u4E0A6\u70B9 -current_not_support=\u5F53\u524D\u9884\u89C8\u65B9\u5F0F\u4E0D\u652F\u6301\u6761\u4EF6\u5C5E\u6027\u8BBE\u7F6E\u5F62\u6001 -cycle=\u5468\u671F -data_configuration=\u6570\u636E\u914D\u7F6E -data_import=\u6570\u636E\u5BFC\u5165 -del_schedule_task=\u5220\u9664\u5B9A\u65F6\u4EFB\u52A1 -designerModule=\u8BBE\u8BA1\u5668\u6A21\u5757 -detail_description=\u8BE6\u7EC6\u63CF\u8FF0 -eg=\u4F8B\u5982 -email=\u90AE\u7BB1 -f\#Created= -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 -feedback_tip=\u8BF7\u8F93\u5165\u4E0D\u8D85\u8FC7400\u4E2A\u5B57\u7684\u95EE\u9898\u63CF\u8FF0 -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 -fileLocked_undeleted=\u6A21\u677F\u88AB\u9501\u5B9A\uFF0C\u4E0D\u80FD\u5220\u9664\uFF01\u70B9\u51FB\u786E\u5B9A\uFF0C\u5237\u65B0\u6A21\u677F\u5217\u8868 -fixedTime=\u5B9A\u65F6 -formDesignerModule=\u8BBE\u8BA1\u5668\u8868\u5355\u6A21\u5757 -formModule=\u8868\u5355\u6A21\u5757 -fs_initDragBar_circle_tip=\u7ED3\u675F\u4EFB\u52A1\:\u6B64\u4EFB\u52A1\u89E6\u53D1\u65F6\u6574\u4E2A\u6D41\u7A0B\u7ACB\u523B\u7ED3\u675F,\u5355\u51FB\u7F16\u8F91\u5C5E\u6027\u3002 -fs_initDragBar_rect_tip=\u8868\u5355\u4EFB\u52A1\:\u6B64\u4EFB\u52A1\u53EF\u4EE5\u8BBE\u7F6E\u62A5\u8868\u6216\u8005\u8868\u5355\u7528\u4E8E\u5C55\u73B0\u6240\u9700\u6570\u636E,\u5355\u51FB\u7F16\u8F91\u5C5E\u6027\uFF0C\u53CC\u51FB\u53EF\u4EE5\u6539\u540D\u3002 -fs_initDragBar_subpro_tip=\u5B50\u6D41\u7A0B\u4EFB\u52A1\:\u6B64\u4EFB\u52A1\u53EF\u4EE5\u9009\u62E9\u5176\u4ED6\u6D41\u7A0B\u4F5C\u4E3A\u5F53\u524D\u6D41\u7A0B\u7684\u4EFB\u52A1\u6765\u5904\u7406\u3002 -fs_initDragBar_title_tip=\u62D6\u62FD\u5DE6\u8FB9\u56FE\u6807\u81F3\u8BBE\u8BA1\u533A\u57DF\u53EF\u4EE5\u8BBE\u8BA1\u6D41\u7A0B\uFF0C\u8BBE\u8BA1\u533A\u57DF\u9ED8\u8BA4\u6709\u5F00\u59CB\u4EFB\u52A1\uFF0C\u9F20\u6807\u79FB\u5165\u4EFB\u52A1\u65F6\u89E6\u53D1\u53EF\u62D6\u62FD\u70B9\u62D6\u62FD\u81F3\u5176\u4ED6\u4EFB\u52A1\u7684\u62D6\u62FD\u70B9\u5373\u53EF\u65B0\u5EFA\u5206\u652F\u3002 -fs_process_delete_tip=\u5220\u9664\u6D41\u7A0B\u7684\u64CD\u4F5C\u4E0D\u53EF\u9006\uFF0C\u60A8\u786E\u5B9A\u8981\u5220\u9664\u6B64\u6D41\u7A0B\u5417\uFF1F -fs_process_endtask_tip=\u7ED3\u675F\u4EFB\u52A1\:\u6B64\u4EFB\u52A1\u89E6\u53D1\u65F6\u6574\u4E2A\u6D41\u7A0B\u7ACB\u523B\u7ED3\u675F,\u5355\u51FB\u7F16\u8F91\u5C5E\u6027\u3002 -fs_process_log_tip=\u7B80\u5355\u65F6\u62A5\uFF0C\u65E5\u62A5\uFF0C\u5468\u62A5\u8BBE\u7F6E -fs_process_one_time_task_tip=\u4EFB\u52A1\u5F00\u59CB\u540E\u53EA\u6267\u884C\u4E00\u6B21 -fs_process_p_tip=\u6CE8\u610F\uFF1A\u6267\u884C\u9891\u7387\u4E2D\u7684\u53EA\u6267\u884C\u4E00\u6B21\u548C\u7B80\u5355\u91CD\u590D\u6267\u884C\u5728\u4EFB\u52A1\u5F00\u59CB\u65F6\u5C31\u4F1A\u6267\u884C\uFF0C\u800C\u81EA\u5B9A\u4E49\u91CD\u590D\u6267\u884C\u5219\u5C06\u5728\u4EFB\u52A1\u5F00\u59CB\u540E\u6839\u636E\u5176\u81EA\u8EAB\u5B9A\u4E49\u6267\u884C\u3002 -fs_process_para_message_tip=\u6CE8\uFF1A\u7F16\u8F91\u540E\u4F1A\u540C\u65F6\u4FEE\u6539\u9009\u4E2D\u6D41\u7A0B\u4E2D\u7684\u6D41\u7A0B\u6570\u636E\u9879 -fs_process_reporttask_tip=\u8868\u5355\u4EFB\u52A1\:\u6B64\u4EFB\u52A1\u53EF\u4EE5\u8BBE\u7F6E\u62A5\u8868\u6216\u8005\u8868\u5355\u7528\u4E8E\u5C55\u73B0\u6240\u9700\u6570\u636E,\u5355\u51FB\u7F16\u8F91\u5C5E\u6027\uFF0C\u53CC\u51FB\u53EF\u4EE5\u6539\u540D\u3002 -fs_process_sontask_tip=\u5B50\u6D41\u7A0B\u4EFB\u52A1\:\u6B64\u4EFB\u52A1\u53EF\u4EE5\u9009\u62E9\u5176\u4ED6\u6D41\u7A0B\u4F5C\u4E3A\u5F53\u524D\u6D41\u7A0B\u7684\u4EFB\u52A1\u6765\u5904\u7406\u3002 -fs_process_user_pane_tip=\u4E3A\u5F53\u524D\u6D3B\u52A8\u9009\u62E9\u53EF\u6267\u884C\u4EBA\u5458 -get-uuid-failed=\u8BF7\u4EE5root\u8EAB\u4EFD\u8FD0\u884Cweb\u670D\u52A1\u5668 -getDataFromCache=\u4ECE\u5171\u4EAB\u6570\u636E\u96C6\u7F13\u5B58\u4E2D\u83B7\u53D6\u6570\u636E -hasRelation=\u76F8\u5173 -has_saved=\u4EE5\u4FDD\u5B58 -FR-Designer_Edit_String_To_Formula=\u662F\u5426\u5C06\u5B57\u7B26\u4E32\u7F16\u8F91\u4E3A\u516C\u5F0F -FR-Designer_Seriously=\u4E25\u91CD -FR-Designer_Tree-Grade=\u5C42 -FR-Designer_Auto-Build=\u81EA\u52A8\u6784\u5EFA -FR-Designer_Root=\u6839\u8282\u70B9 -FR-Designer_Gradation=\u5C42\u6B21 -FR-Designer_Layer-Build=\u5206\u5C42\u6784\u5EFA -FR-Designer_Build-Way=\u6784\u5EFA\u65B9\u5F0F -FR-Designer_Create_Tree=\u6784\u5EFA\u6811 -FR-Engine_Function_Undefined=\u529F\u80FD\u70B9\u672A\u5B9A\u4E49 -invalid\ user\ or\ password.=\u7528\u6237\u540D\u6216\u5BC6\u7801\u9519\u8BEF -is=\u4E3A -is_need_word_adjust=\u4E0D\u56FA\u5B9A\u884C\u9AD8\u5BFC\u51FA -ispageBoxMemo=\u52FE\u9009\u5219\u7EB8\u5F20\u9ED8\u8BA4\u5C45\u4E2D\uFF0C\u53D6\u6D88\u52FE\u9009\u7EB8\u5F20\u9ED8\u8BA4\u5C45\u5DE6 -lic-same-content=\u5F53\u524D\u73AF\u5883\u5DF2\u5B58\u5728\u76F8\u540Clic\u6587\u4EF6 -loadedTreeModel=\u52A0\u8F7D\u5931\u8D25,\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5 -local=\u672C\u5730 -long_data_can_not_show_fully=\u957F\u6570\u636E\u663E\u793A\u4E0D\u5168 -max_undo_limit=\u6700\u5927\u64A4\u9500\u6B21\u6570 -mobile_number=\u624B\u673A\u53F7\u7801 -multiple_choice=\u591A\u9879\u9009\u62E9 -must_choose_one_report=\u5FC5\u987B\u9009\u62E9\u4E00\u5F20\u62A5\u8868\uFF01 -newNode=\u65B0\u589E\u8282\u70B9 -no-alternatives=\u6CA1\u6709\u9009\u62E9\u9879 -not-found=\u672A\u53D1\u73B0 -not_support_authority_edit=\u8BE5\u5143\u7D20\u4E0D\u652F\u6301\u6743\u9650\u63A7\u5236 -one_record_exists_in_many_groups=\u4E00\u4E2A\u8BB0\u5F55\u53EF\u4EE5\u5B58\u5728\u4E8E\u591A\u4E2A\u7EC4\u4E2D -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 -original=\u539F\u59CB -pageModule=\u5206\u9875\u9884\u89C8\u6A21\u5757 -paper=\u7EB8\u5F20 -parameter_name_exist=\u8BE5\u53C2\u6570\u540D\u5DF2\u5B58\u5728 -performanceModule=\u6027\u80FD\u6A21\u5757 -period=\u3002 -product_feedback=\u4EA7\u54C1\u53CD\u9988 -px=\u50CF\u7D20 -quote=\u5F15\u7528 -read_time_out=\u52A0\u8F7D\u8D85\u65F6 -redo=\u91CD\u505A -revert=\u64A4\u9500 -roles_already_authority_edited=\u5DF2\u914D\u7F6E\u89D2\u8272 -ruleSet=\u89C4\u5219\u8BBE\u7F6E -satisfy=\u6EE1\u8DB3\u6761\u4EF6 -schedule_email_notice_tip_first=\u90AE\u4EF6\u5C5E\u6027\u914D\u7F6E\u53EF\u5728 -schedule_email_notice_tip_second=\u4E2D\u7684 -schedule_email_notice_tip_third=\u91CC\u8FDB\u884C\u914D\u7F6E\u4E0E\u67E5\u770B\u3002 -schedule_email_tip_first=\u542F\u7528\u8BE5\u9009\u9879\u9700\u5728 -schedule_email_tip_second=\u4E2D\u586B\u5199 -seconds=\u79D2 -select_data_set=\u8BF7\u9009\u62E9\u9700\u8981\u5408\u5E76\u7684\u6570\u636E\u96C6 -select_path=\u9009\u62E9\u8DEF\u5F84 -FR-Designer-Plugin_Jar_Expired=Jar\u5305\u8FC7\u65E7 -FR-Base_January=\u4E00\u6708 -FR-Base_February=\u4E8C\u6708 -FR-Base_March=\u4E09\u6708 -FR-Base_April=\u56DB\u6708 -FR-Base_May=\u4E94\u6708 -FR-Base_June=\u516D\u6708 -FR-Base_July=\u4E03\u6708 -FR-Base_August=\u516B\u6708 -FR-Base_October=\u5341\u6708 -FR-Base_November=\u5341\u4E00\u6708 -FR-Base_December=\u5341\u4E8C\u6708 -FR-Base_September=\u4E5D\u6708 -select_same_data_to_\ merge=\u8BF7\u9009\u62E9\u5305\u542B\u76F8\u540C\u5B57\u6BB5\u7684\u6570\u636E\u96C6\u8FDB\u884C\u5408\u5E76 -sending=\u6B63\u5728\u53D1\u9001... -server_disconnected=\u8FDE\u63A5\u5DF2\u65AD\u5F00 -single_choice=\u5355\u9879\u9009\u62E9 -start_immidiately=\u7ACB\u523B\u5F00\u59CB -sure_to_delete=\u786E\u8BA4\u5220\u9664 -template_unopened=\u65E0\u6CD5\u6253\u5F00\u6A21\u677F -template_unsaved=\u65E0\u6CD5\u4FDD\u5B58\u6A21\u677F -the_target_cell_is_at=\u8BA1\u7B97\u7684\u76EE\u6807\u683C\u5B50\u5728 -the_template=\u8BE5\u6A21\u677F -tick-and-value=\u523B\u5EA6\u548C\u914D\u8272 -time(s)= -timePoint=\u65F6\u70B9 -title=\u6807\u9898 -trigger=\u89E6\u53D1 -triggered=\u88AB\u89E6\u53D1 -try_resending=\u8BF7\u5C1D\u8BD5\u91CD\u65B0\u53D1\u9001 -turn=\u8F6C\u5411 -undo=\u64A4\u9500 -viewModule=\u6570\u636E\u5206\u6790\u6A21\u5757 -writeModule=\u586B\u62A5\u9884\u89C8\u6A21\u5757 -wrong=\u51FA\u9519\u4E86 -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.
  -FR-Base_Not_Exsit=\u4E0D\u5B58\u5728\u4E8E\u62A5\u8868 -FR-Designer-Basic_Activation_Key=\u8BBE\u8BA1\u5668\u7F16\u53F7\uFF1A -FR-Designer-Basic_Copy_Activation_Key=\u53CC\u51FB\u8BBE\u8BA1\u5668\u7F16\u53F7\u53EF\u590D\u5236\u5230\u526A\u8D34\u677F -FR-Designer-Basic_Activation_Key_Copy_OK=\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F -FR-Plugin-Plugin_Name=\u63D2\u4EF6\u540D\u79F0 -FR-Plugin-Plugin_Version=\u63D2\u4EF6\u7248\u672C -FR-Plugin-Start_Version=\u652F\u6301\u7684\u6700\u4F4E\u62A5\u8868\u7248\u672C -FR-Plugin_Developer=\u5F00\u53D1\u8005 -FR-Plugin-Function_Description=\u63D2\u4EF6\u529F\u80FD\u63CF\u8FF0 -FR-Plugin-Update_Log=\u66F4\u65B0\u65E5\u5FD7 -FR-Designer_Https_Enable=\u542F\u7528https -FR-Designer_Certificate_Pass=https\u79D8\u94A5 -FR-Designer_Certificate_Path=\u8BC1\u4E66\u8DEF\u5F84 -FR-Basic_About_No_Build=\u4E0D\u662F\u5B89\u88C5\u7248\u672C -FR-Designer-Basic_Copy_Build_NO=\u53CC\u51FB\u6784\u5EFA\u7248\u672C\u53F7\u53EF\u590D\u5236\u5230\u526A\u8D34\u677F -FR-Designer-Basic_Copy_Build_NO_OK=\u6784\u5EFA\u7248\u672C\u53F7\u5DF2\u7ECF\u590D\u5236\u5230\u526A\u8D34\u677F -FR-Designer_Submmit_WClass=\u540E\u53F0\u7C7B\u63D0\u4EA4 -FR-Base_Sche_Day=\u65E5\u671F -FR-Base_Sche_Friday=\u661F\u671F\u4E94 -FR-Base_Sche_Hour=\u65F6 -FR-Base_Sche_Minute=\u5206 -FR-Base_Sche_Monday=\u661F\u671F\u4E00 -FR-Base_Sche_Month=\u6708\u4EFD -FR-Base_Sche_Saturday=\u661F\u671F\u516D -FR-Base_Sche_Second=\u79D2 -FR-Base_Sche_Sunday=\u661F\u671F\u65E5 -FR-Base_Sche_Thursday=\u661F\u671F\u56DB -FR-Base_Sche_Tuesday=\u661F\u671F\u4E8C -FR-Base_Sche_Wednesday=\u661F\u671F\u4E09 -FR-Base_Sche_Week=\u661F\u671F -FR-Base_Sun=\u65E5 -FR-Base_Mon=\u4E00 -FR-Base_Tue=\u4E8C -FR-Base_Wed=\u4E09 -FR-Base_Thu=\u56DB -FR-Base_Fri=\u4E94 -FR-Base_Sat=\u516D -FR-Base_Formula_Plugin=\u63D2\u4EF6\u51FD\u6570 -FR-Basic_Page_Number=\u9875 -Preview=\u9884\u89C8 -FR-Designer_Cancel=\u53D6\u6D88 -FR-Designer_Enter-New-FileName=\u8BF7\u8F93\u5165\u65B0\u7684\u6587\u4EF6\u540D -FR-Designer_Rename=\u91CD\u547D\u540D -FR-Designer_Get_Lock=\u52A0\u9501 -FR-Designer_Release_Lock=\u89E3\u9501 -FR-Designer_Confirm=\u786E\u8BA4 -FR-Designer_Show_in_Containing_Folder=\u6253\u5F00\u6240\u5728\u6587\u4EF6\u5939 -FR-Background_Image=\u56FE\u7247 -FR-Background_Image_Default=\u9ED8\u8BA4 -FR-Background_Image_Titled=\u5E73\u94FA -FR-Background_Image_Adjust=\u9002\u5E94 -FR-Background_Image_Extend=\u62C9\u4F38 -FR-Engine_WriteModule=\u586B\u62A5\u9884\u89C8\u6A21\u5757 -FR-Designer_Restore_Default=\u6062\u590D\u9ED8\u8BA4 -FR-Designer_ChooseOneButton=\u8BF7\u9009\u62E9\u4E00\u4E2A\u63A7\u4EF6\u540E\u518D\u6DFB\u52A0 -FR-Designer_ToolBar_Top=\u9876\u90E8\u5DE5\u5177\u680F -FR-Designer_ToolBar_Bottom=\u5E95\u90E8\u5DE5\u5177\u680F -FR-Basic_Plugin_Version_Warning=\u63D2\u4EF6\u7248\u672C\u8FC7\u4F4E,\u8BF7\u5347\u7EA7\u63D2\u4EF6,\u5F53\u524D\u63D2\u4EF6\u5C06\u65E0\u6CD5\u52A0\u8F7D -FR-Designer_Plugin_Should_Update=\u63D2\u4EF6\u7248\u672C\u8FC7\u4F4E,\u9700\u8981\u5347\u7EA7 -FR-Designer_Plugin_Should_Update_Title=\u63D2\u4EF6\u5347\u7EA7\u63D0\u9192 -FR-Plugin_API-Need-Update=\u63D2\u4EF6\u4F9D\u8D56\u7684API\u6709\u66F4\u65B0. -FR-Designer-Plugin_Please_Update_Jar=\u8BF7\u66F4\u65B0Jar\u5305\u81F3\: -FR-Designer-Plugin_Shop_Installed=\u63D2\u4EF6\u5546\u5E97\u5B89\u88C5\u5B8C\u6BD5,\u662F\u5426\u7ACB\u523B\u542F\u52A8? -FR-Designer-Plugin_Shop_Need_Install=\u60A8\u8FD8\u6CA1\u6709\u63D2\u4EF6\u5546\u5E97\u7684\u8D44\u6E90,\u662F\u5426\u4E0B\u8F7D? -FR-Designer-Plugin_Shop_Need_Update=\u63D2\u4EF6\u5546\u5E97\u6709\u65B0\u7248\u672C,\u662F\u5426\u66F4\u65B0? -FR-Designer_COMMUNITY=\u793e\u533a -FR-Designer_COMMUNITY_BBS=\u5e06\u8f6f\u8bba\u575b -FR-Designer_COMMUNITY_VIDEO=\u5165\u95e8\u89c6\u9891 -FR-Designer_COMMUNITY_HELP=\u5e2e\u52a9\u6587\u6863 -FR-Designer_COMMUNITY_UPDATE=\u4ea7\u54c1\u66f4\u65b0 -FR-Designer_COMMUNITY_NEED=\u9700\u6c42\u63d0\u4ea4 -FR-Designer_COMMUNITY_BUG=\u0042\u0055\u0047\u0020\u53cd\u9988 -FR-Designer_COMMUNITY_SIGN=\u5e06\u8f6f\u8ba4\u8bc1 -FR-Designer_COMMUNITY_QUESTIONS=\u95ee\u9898\u6c42\u52a9 From 6256acbb1f023193a1c3695be6014e0fe88dd98b Mon Sep 17 00:00:00 2001 From: neil Date: Mon, 30 May 2016 11:45:39 +0800 Subject: [PATCH 51/54] 1 --- designer/src/com/fr/start/Designer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer/src/com/fr/start/Designer.java b/designer/src/com/fr/start/Designer.java index cea1421269..a8cb9de002 100644 --- a/designer/src/com/fr/start/Designer.java +++ b/designer/src/com/fr/start/Designer.java @@ -62,7 +62,7 @@ public class Designer extends BaseDesigner { /** - * 设计器启动的Main方法 + * 设计器启动的Main方法 * * @param args 参数 */ From ae681f8dde209c48b46d463c987ce1e15e57f724 Mon Sep 17 00:00:00 2001 From: neil Date: Mon, 30 May 2016 11:45:50 +0800 Subject: [PATCH 52/54] 1 --- designer/src/com/fr/start/Designer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer/src/com/fr/start/Designer.java b/designer/src/com/fr/start/Designer.java index a8cb9de002..cea1421269 100644 --- a/designer/src/com/fr/start/Designer.java +++ b/designer/src/com/fr/start/Designer.java @@ -62,7 +62,7 @@ public class Designer extends BaseDesigner { /** - * 设计器启动的Main方法 + * 设计器启动的Main方法 * * @param args 参数 */ From fd09cd369dce9d6c7b37be6b8774b40928b857ab Mon Sep 17 00:00:00 2001 From: vito Date: Tue, 31 May 2016 15:59:55 +0800 Subject: [PATCH 53/54] =?UTF-8?q?mac=E4=B8=8B=E6=B2=A1=E6=9C=89encode?= =?UTF-8?q?=E4=B8=AD=E6=96=87=E5=90=8D=E7=99=BB=E9=99=86=E4=B8=8D=E4=B8=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/bbs/BBSLoginDialog.java | 320 +++++++++--------- 1 file changed, 165 insertions(+), 155 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/bbs/BBSLoginDialog.java b/designer/src/com/fr/design/mainframe/bbs/BBSLoginDialog.java index 702b878a6a..001d80532a 100644 --- a/designer/src/com/fr/design/mainframe/bbs/BBSLoginDialog.java +++ b/designer/src/com/fr/design/mainframe/bbs/BBSLoginDialog.java @@ -14,6 +14,7 @@ import com.fr.general.FRFont; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.general.http.HttpClient; +import com.fr.stable.EncodeConstants; import com.fr.stable.StringUtils; import javax.swing.*; @@ -24,8 +25,10 @@ import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; +import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URI; +import java.net.URLEncoder; /** * @author richie @@ -38,12 +41,12 @@ public class BBSLoginDialog extends UIDialog { private static final int DIALOG_HEIGHT = 200; private static final String URL = "http://bbs.finereport.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1"; private static final String PASSWORD_RESET_URL = "http://bbs.finereport.com/portal.php?mod=topic&topicid=2"; - private static final String REGISTER_URL = "http://bbs.finereport.com/member.php?mod=register"; + private static final String REGISTER_URL = "http://bbs.finereport.com/member.php?mod=register"; private static final String LOGIN_SUCCESS_FLAG = "http://bbs.finereport.com"; private static final Font DEFAULT_FONT = FRFont.getInstance(FRFont.DEFAULT_FONTNAME, 0, 14); private static final String TEST_CONNECTION_URL = "http://bbs.finereport.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1&username=test&password=123456"; private static final int TIME_OUT = 10000; - + private static final int BUTTON_WIDTH = 90; private static final int V_GAP = 20; private static final int BUTTON_H_GAP = 155; @@ -56,212 +59,213 @@ public class BBSLoginDialog extends UIDialog { private UILabel userLabel; private UILabel passLabel; private UITextField nameField; - private UIPassWordField passField; + private UIPassWordField passField; private UIButton loginButton; private UILabel tipLabel; private BoxCenterAligmentPane passwordReset; private BoxCenterAligmentPane registerLabel; - + private KeyListener keyListener = new KeyAdapter() { - public void keyPressed(KeyEvent e){ - int code = e.getKeyCode(); - if(KeyEvent.VK_ESCAPE == code){ - BBSLoginDialog.this.setVisible(false); - return; - } - - if(KeyEvent.VK_ENTER == code){ - login(); - } - } - }; - + public void keyPressed(KeyEvent e) { + int code = e.getKeyCode(); + if (KeyEvent.VK_ESCAPE == code) { + BBSLoginDialog.this.setVisible(false); + return; + } + + if (KeyEvent.VK_ENTER == code) { + login(); + } + } + }; + // 用户登录状态label private UserInfoLabel userInfoLabel; - - public UILabel getTipLabel() { - return tipLabel; - } - public void setTipLabel(UILabel tipLabel) { - this.tipLabel = tipLabel; - } + public UILabel getTipLabel() { + return tipLabel; + } + + public void setTipLabel(UILabel tipLabel) { + this.tipLabel = tipLabel; + } - /** - * 构造函数 - * @param parent 父窗口 - * @param userInfoLabel 登录状态label - */ - public BBSLoginDialog(Frame parent,UserInfoLabel userInfoLabel) { + /** + * 构造函数 + * + * @param parent 父窗口 + * @param userInfoLabel 登录状态label + */ + public BBSLoginDialog(Frame parent, UserInfoLabel userInfoLabel) { super(parent); JPanel panel = (JPanel) getContentPane(); initComponents(panel); this.userInfoLabel = userInfoLabel; - setSize(new Dimension(DIALOG_WIDTH,DIALOG_HEIGHT)); + setSize(new Dimension(DIALOG_WIDTH, DIALOG_HEIGHT)); } private void initComponents(JPanel contentPane) { this.setTitle(Inter.getLocText("FR-Designer-BBSLogin_Login-Title")); tipLabel = new UILabel(Inter.getLocText("FR-Designer-BBSLogin_Login-Failure-Tip")); - userLabel = new UILabel(Inter.getLocText("FR-Designer-BBSLogin_Account")+":"); - passLabel = new UILabel(Inter.getLocText("FR-Designer-BBSLogin_Password")+":"); + userLabel = new UILabel(Inter.getLocText("FR-Designer-BBSLogin_Account") + ":"); + passLabel = new UILabel(Inter.getLocText("FR-Designer-BBSLogin_Password") + ":"); nameField = new UITextField(); passField = new UIPassWordField(); loginButton = new UIButton(Inter.getLocText("FR-Designer-BBSLogin_Login")); passwordReset = getURLActionLabel(PASSWORD_RESET_URL); registerLabel = getURLActionLabel(REGISTER_URL); loginButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent arg0) { - login(); - } - }); - + @Override + public void actionPerformed(ActionEvent arg0) { + login(); + } + }); + nameField.addKeyListener(keyListener); passField.addKeyListener(keyListener); loginButton.addKeyListener(keyListener); - + userLabel.setFont(DEFAULT_FONT); passLabel.setFont(DEFAULT_FONT); this.tipLabel.setVisible(false); - + contentPane.setLayout(new BorderLayout()); - + JPanel mainPane = new JPanel(); - mainPane.setLayout(new BorderLayout(0,V_GAP)); - + mainPane.setLayout(new BorderLayout(0, V_GAP)); + initNorthPane(mainPane); - + initCenterPane(mainPane); - + initSouthPane(mainPane); - contentPane.add(mainPane,BorderLayout.NORTH); - + contentPane.add(mainPane, BorderLayout.NORTH); + this.setResizable(false); } - - - private void login(){ - if(nameField.getText().isEmpty()){ - tipForUsernameEmpty(); - nameField.requestFocus(); - return; - } - if(String.valueOf(passField.getPassword()).isEmpty()){ - tipForPasswordEmpty(); - passField.requestFocus(); - return; - } - if(!testConnection()){ - connectionFailue(); - return; - } - if(login(nameField.getText(),String.valueOf(passField.getPassword()))){ - loginSuccess(); - }else{ - loginFailure(); - } - + + + private void login() { + if (nameField.getText().isEmpty()) { + tipForUsernameEmpty(); + nameField.requestFocus(); + return; + } + if (String.valueOf(passField.getPassword()).isEmpty()) { + tipForPasswordEmpty(); + passField.requestFocus(); + return; + } + if (!testConnection()) { + connectionFailue(); + return; + } + if (login(nameField.getText(), String.valueOf(passField.getPassword()))) { + loginSuccess(); + } else { + loginFailure(); + } + } - - private boolean testConnection(){ - HttpClient client = new HttpClient(TEST_CONNECTION_URL); - return client.isServerAlive(); + + private boolean testConnection() { + HttpClient client = new HttpClient(TEST_CONNECTION_URL); + return client.isServerAlive(); } - - private void initNorthPane(JPanel mainPane){ + + private void initNorthPane(JPanel mainPane) { JPanel northPane = new JPanel(); - northPane.setPreferredSize(new Dimension(DIALOG_WIDTH,NORTH_PANE_HEIGHT)); + northPane.setPreferredSize(new Dimension(DIALOG_WIDTH, NORTH_PANE_HEIGHT)); northPane.add(tipLabel); - mainPane.add(northPane,BorderLayout.NORTH); + mainPane.add(northPane, BorderLayout.NORTH); } - - private void initCenterPane(JPanel mainPane){ + + private void initCenterPane(JPanel mainPane) { JPanel loginPane = new JPanel(); - loginPane.setLayout(new GridLayout(2,1,0,V_GAP)); + loginPane.setLayout(new GridLayout(2, 1, 0, V_GAP)); JPanel namePane = new JPanel(); - namePane.setLayout(new FlowLayout(FlowLayout.RIGHT,FLOWLAYOUT_H_GAP,0)); + namePane.setLayout(new FlowLayout(FlowLayout.RIGHT, FLOWLAYOUT_H_GAP, 0)); namePane.add(userLabel); - nameField.setPreferredSize(new Dimension(FIELD_WIDTH,FIELD_HEIGHT)); + nameField.setPreferredSize(new Dimension(FIELD_WIDTH, FIELD_HEIGHT)); namePane.add(nameField); namePane.add(passwordReset); loginPane.add(namePane); - + JPanel passPane = new JPanel(); - passPane.setLayout(new FlowLayout(FlowLayout.RIGHT,FLOWLAYOUT_H_GAP,0)); + passPane.setLayout(new FlowLayout(FlowLayout.RIGHT, FLOWLAYOUT_H_GAP, 0)); passPane.add(passLabel); passPane.add(passField); - passField.setPreferredSize(new Dimension(FIELD_WIDTH,FIELD_HEIGHT)); + passField.setPreferredSize(new Dimension(FIELD_WIDTH, FIELD_HEIGHT)); passPane.add(registerLabel); loginPane.add(passPane); - - mainPane.add(loginPane,BorderLayout.CENTER); + + mainPane.add(loginPane, BorderLayout.CENTER); } - - private void initSouthPane(JPanel mainPane){ + + private void initSouthPane(JPanel mainPane) { JPanel southPane = new JPanel(); - southPane.setLayout(new FlowLayout(FlowLayout.RIGHT,BUTTON_H_GAP,0)); - loginButton.setPreferredSize(new Dimension(BUTTON_WIDTH,FIELD_HEIGHT)); + southPane.setLayout(new FlowLayout(FlowLayout.RIGHT, BUTTON_H_GAP, 0)); + loginButton.setPreferredSize(new Dimension(BUTTON_WIDTH, FIELD_HEIGHT)); loginButton.setFont(DEFAULT_FONT); southPane.add(loginButton); - mainPane.add(southPane,BorderLayout.SOUTH); + mainPane.add(southPane, BorderLayout.SOUTH); } - + // 登录成功 - private void loginSuccess(){ - DesignerEnvManager.getEnvManager().setBBSPassword(String.valueOf(passField.getPassword())); - userInfoLabel.setUserName(nameField.getText()); - userInfoLabel.getUserInfoPane().markSignIn(nameField.getText()); - userInfoLabel.getUserInfoPane().getSwitchAccountLabel().setVisible(true); - BBSLoginDialog.this.setVisible(false); + private void loginSuccess() { + DesignerEnvManager.getEnvManager().setBBSPassword(String.valueOf(passField.getPassword())); + userInfoLabel.setUserName(nameField.getText()); + userInfoLabel.getUserInfoPane().markSignIn(nameField.getText()); + userInfoLabel.getUserInfoPane().getSwitchAccountLabel().setVisible(true); + BBSLoginDialog.this.setVisible(false); } - + // 登录失败 - private void loginFailure(){ - setLoginFailureTxt(Inter.getLocText("FR-Designer-BBSLogin_Login-Failure-Tip")); + private void loginFailure() { + setLoginFailureTxt(Inter.getLocText("FR-Designer-BBSLogin_Login-Failure-Tip")); } - - private void tipForUsernameEmpty(){ - setLoginFailureTxt(Inter.getLocText("FR-Designer-BBSLogin_Username-Empty-Tip")); + + private void tipForUsernameEmpty() { + setLoginFailureTxt(Inter.getLocText("FR-Designer-BBSLogin_Username-Empty-Tip")); } public void showTipForDownloadPluginWithoutLogin() { setLoginFailureTxt(Inter.getLocText("FR-Designer-BBSLogin_Download-Unlogin-Tip")); } - - private void tipForPasswordEmpty(){ - setLoginFailureTxt(Inter.getLocText("FR-Designer-BBSLogin_Password-Empty-Tip")); + + private void tipForPasswordEmpty() { + setLoginFailureTxt(Inter.getLocText("FR-Designer-BBSLogin_Password-Empty-Tip")); } - - private void setLoginFailureTxt(String errorTxt){ - tipLabel.setText(errorTxt); - tipLabel.setForeground(Color.RED); - tipLabel.repaint(); - tipLabel.setVisible(true); + + private void setLoginFailureTxt(String errorTxt) { + tipLabel.setText(errorTxt); + tipLabel.setForeground(Color.RED); + tipLabel.repaint(); + tipLabel.setVisible(true); } - + // 连接失败 - private void connectionFailue(){ - setLoginFailureTxt(Inter.getLocText("FR-Designer-BBSLogin_Connection-Failure")); + private void connectionFailue() { + setLoginFailureTxt(Inter.getLocText("FR-Designer-BBSLogin_Connection-Failure")); } - + /** * 清楚登录信息 */ - public void clearLoginInformation(){ - tipLabel.setText(StringUtils.EMPTY); - nameField.setText(StringUtils.EMPTY); - passField.setText(StringUtils.EMPTY); + public void clearLoginInformation() { + tipLabel.setText(StringUtils.EMPTY); + nameField.setText(StringUtils.EMPTY); + passField.setText(StringUtils.EMPTY); } - /** + /** * 显示登录窗口 */ - public void showWindow(){ + public void showWindow() { GUICoreUtils.centerWindow(this); setVisible(true); } @@ -273,39 +277,45 @@ public class BBSLoginDialog extends UIDialog { public void checkValid() throws Exception { } - + /** * 是否登陆成功 + * * @param username 用户名 * @param password 密码 * @return 同上 */ - public static boolean login(String username,String password){ - String url = URL + "&username=" + username + "&password=" + password; - HttpClient client = new HttpClient(url); - client.setTimeout(TIME_OUT); - if(client.getResponseCodeNoException() == HttpURLConnection.HTTP_OK){ - try { - String res = client.getResponseText("GBK"); - if(res.contains(LOGIN_SUCCESS_FLAG)){ - return true; - } - } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); - } - } - return false; + public static boolean login(String username, String password) { + try { + username = URLEncoder.encode(username, EncodeConstants.ENCODING_GBK); + } catch (UnsupportedEncodingException e) { + FRLogger.getLogger().error(e.getMessage()); + } + String url = URL + "&username=" + username + "&password=" + password; + HttpClient client = new HttpClient(url); + client.setTimeout(TIME_OUT); + if (client.getResponseCodeNoException() == HttpURLConnection.HTTP_OK) { + try { + String res = client.getResponseText(EncodeConstants.ENCODING_GBK); + if (res.contains(LOGIN_SUCCESS_FLAG)) { + return true; + } + } catch (Exception e) { + FRLogger.getLogger().error(e.getMessage()); + } + } + return false; } - - private BoxCenterAligmentPane getURLActionLabel(final String url){ - ActionLabel actionLabel = new ActionLabel(url); - if(ComparatorUtils.equals(url, PASSWORD_RESET_URL)){ - actionLabel.setText(Inter.getLocText("FR-Designer-BBSLogin_Forgot-Password")); - }else{ - actionLabel.setText(Inter.getLocText("FR-Designer-BBSLogin_Register-Account")); - } - - actionLabel.addActionListener(new ActionListener() { + + private BoxCenterAligmentPane getURLActionLabel(final String url) { + ActionLabel actionLabel = new ActionLabel(url); + if (ComparatorUtils.equals(url, PASSWORD_RESET_URL)) { + actionLabel.setText(Inter.getLocText("FR-Designer-BBSLogin_Forgot-Password")); + } else { + actionLabel.setText(Inter.getLocText("FR-Designer-BBSLogin_Register-Account")); + } + + actionLabel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { @@ -315,14 +325,14 @@ public class BBSLoginDialog extends UIDialog { } } }); - + return new BoxCenterAligmentPane(actionLabel); } - + class BoxCenterAligmentPane extends JPanel { private UILabel textLabel; - + public BoxCenterAligmentPane(String text) { this(new UILabel(text)); } From 43cf9677adc9f5ca8a7d9a9dce685f0d73416c7f Mon Sep 17 00:00:00 2001 From: vito Date: Tue, 31 May 2016 16:34:45 +0800 Subject: [PATCH 54/54] =?UTF-8?q?=E4=BD=BF=E7=94=A8sitecenter=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2=E6=89=80=E6=9C=89url?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/bbs/BBSLoginDialog.java | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/bbs/BBSLoginDialog.java b/designer/src/com/fr/design/mainframe/bbs/BBSLoginDialog.java index 001d80532a..c56e6547f2 100644 --- a/designer/src/com/fr/design/mainframe/bbs/BBSLoginDialog.java +++ b/designer/src/com/fr/design/mainframe/bbs/BBSLoginDialog.java @@ -9,10 +9,7 @@ import com.fr.design.gui.ipasswordfield.UIPassWordField; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.general.ComparatorUtils; -import com.fr.general.FRFont; -import com.fr.general.FRLogger; -import com.fr.general.Inter; +import com.fr.general.*; import com.fr.general.http.HttpClient; import com.fr.stable.EncodeConstants; import com.fr.stable.StringUtils; @@ -39,12 +36,8 @@ public class BBSLoginDialog extends UIDialog { private static final int DIALOG_WIDTH = 400; private static final int DIALOG_HEIGHT = 200; - private static final String URL = "http://bbs.finereport.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1"; - private static final String PASSWORD_RESET_URL = "http://bbs.finereport.com/portal.php?mod=topic&topicid=2"; - private static final String REGISTER_URL = "http://bbs.finereport.com/member.php?mod=register"; private static final String LOGIN_SUCCESS_FLAG = "http://bbs.finereport.com"; private static final Font DEFAULT_FONT = FRFont.getInstance(FRFont.DEFAULT_FONTNAME, 0, 14); - private static final String TEST_CONNECTION_URL = "http://bbs.finereport.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1&username=test&password=123456"; private static final int TIME_OUT = 10000; private static final int BUTTON_WIDTH = 90; @@ -114,8 +107,8 @@ public class BBSLoginDialog extends UIDialog { nameField = new UITextField(); passField = new UIPassWordField(); loginButton = new UIButton(Inter.getLocText("FR-Designer-BBSLogin_Login")); - passwordReset = getURLActionLabel(PASSWORD_RESET_URL); - registerLabel = getURLActionLabel(REGISTER_URL); + passwordReset = getURLActionLabel(SiteCenter.getInstance().acquireUrlByKind("bbs.reset")); + registerLabel = getURLActionLabel(SiteCenter.getInstance().acquireUrlByKind("bbs.register")); loginButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { @@ -172,7 +165,7 @@ public class BBSLoginDialog extends UIDialog { } private boolean testConnection() { - HttpClient client = new HttpClient(TEST_CONNECTION_URL); + HttpClient client = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.test")); return client.isServerAlive(); } @@ -291,7 +284,7 @@ public class BBSLoginDialog extends UIDialog { } catch (UnsupportedEncodingException e) { FRLogger.getLogger().error(e.getMessage()); } - String url = URL + "&username=" + username + "&password=" + password; + String url = SiteCenter.getInstance().acquireUrlByKind("bbs.login") + "&username=" + username + "&password=" + password; HttpClient client = new HttpClient(url); client.setTimeout(TIME_OUT); if (client.getResponseCodeNoException() == HttpURLConnection.HTTP_OK) { @@ -309,7 +302,7 @@ public class BBSLoginDialog extends UIDialog { private BoxCenterAligmentPane getURLActionLabel(final String url) { ActionLabel actionLabel = new ActionLabel(url); - if (ComparatorUtils.equals(url, PASSWORD_RESET_URL)) { + if (ComparatorUtils.equals(url, SiteCenter.getInstance().acquireUrlByKind("bbs.reset"))) { actionLabel.setText(Inter.getLocText("FR-Designer-BBSLogin_Forgot-Password")); } else { actionLabel.setText(Inter.getLocText("FR-Designer-BBSLogin_Register-Account"));