From ce9c9eecd0dc2d3305f93e74a1c1652011bb01de Mon Sep 17 00:00:00 2001 From: daniel Date: Tue, 27 Dec 2016 17:25:35 +0800 Subject: [PATCH 01/96] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/fun/ConnectionProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/fun/ConnectionProvider.java b/designer_base/src/com/fr/design/fun/ConnectionProvider.java index c6bd2fca24..bb646c48d6 100644 --- a/designer_base/src/com/fr/design/fun/ConnectionProvider.java +++ b/designer_base/src/com/fr/design/fun/ConnectionProvider.java @@ -12,7 +12,7 @@ public interface ConnectionProvider extends Mutable { public static final String XML_TAG = "ConnectionProvider"; - int CURRENT_LEVEL = 1; + int CURRENT_LEVEL = 2; /** * 数据连接弹出菜单的名字 From 7a20e537115d8250cd81e2a8062dd715d2c5830a Mon Sep 17 00:00:00 2001 From: daniel Date: Tue, 27 Dec 2016 17:45:43 +0800 Subject: [PATCH 02/96] roll back --- designer_base/src/com/fr/design/fun/ConnectionProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/fun/ConnectionProvider.java b/designer_base/src/com/fr/design/fun/ConnectionProvider.java index bb646c48d6..c6bd2fca24 100644 --- a/designer_base/src/com/fr/design/fun/ConnectionProvider.java +++ b/designer_base/src/com/fr/design/fun/ConnectionProvider.java @@ -12,7 +12,7 @@ public interface ConnectionProvider extends Mutable { public static final String XML_TAG = "ConnectionProvider"; - int CURRENT_LEVEL = 2; + int CURRENT_LEVEL = 1; /** * 数据连接弹出菜单的名字 From 7c9c93d94ad6fc03d2e9f7a27ba5533940a91f44 Mon Sep 17 00:00:00 2001 From: daniel Date: Tue, 7 Mar 2017 15:13:35 +0800 Subject: [PATCH 03/96] diamond --- designer/src/com/fr/design/present/PresentPane.java | 8 ++++---- .../src/com/fr/design/report/ReportExportAttrPane.java | 2 +- designer/src/com/fr/design/report/VerifierListPane.java | 2 +- .../com/fr/design/write/submit/SubmitVisitorListPane.java | 8 ++++---- .../designer/creator/cardlayout/XCardSwitchButton.java | 4 ++-- .../properties/mobile/ElementCasePropertyTable.java | 2 +- .../src/com/fr/design/gui/xtable/PropertyGroupModel.java | 2 +- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/designer/src/com/fr/design/present/PresentPane.java b/designer/src/com/fr/design/present/PresentPane.java index 043b069b0d..7d1d571fcf 100644 --- a/designer/src/com/fr/design/present/PresentPane.java +++ b/designer/src/com/fr/design/present/PresentPane.java @@ -57,12 +57,12 @@ public class PresentPane extends UIComboBoxPane { @Override protected List> initPaneList() { if (keys == null) { - keys = new ArrayList<>(); + keys = new ArrayList(); } if (displays == null) { - displays = new ArrayList<>(); + displays = new ArrayList(); } - List> paneList = new ArrayList<>(); + List> paneList = new ArrayList>(); FurtherBasicBeanPane none = new NonePresentPane(); paneList.add(none); keys.add("NOPRESENT"); @@ -99,7 +99,7 @@ public class PresentPane extends UIComboBoxPane { @Override protected UIComboBox createComboBox() { - return new DictionaryComboBox<>(keys.toArray(new String[keys.size()]), displays.toArray(new String[displays.size()])); + return new DictionaryComboBox(keys.toArray(new String[keys.size()]), displays.toArray(new String[displays.size()])); } @Override diff --git a/designer/src/com/fr/design/report/ReportExportAttrPane.java b/designer/src/com/fr/design/report/ReportExportAttrPane.java index 33eb07519f..1f549c62eb 100644 --- a/designer/src/com/fr/design/report/ReportExportAttrPane.java +++ b/designer/src/com/fr/design/report/ReportExportAttrPane.java @@ -31,7 +31,7 @@ public class ReportExportAttrPane extends BasicPane { wordExportPane = new WordExportPane(); uiTabbedPane.addTab("Word", wordExportPane); Set providers = ExtraDesignClassManager.getInstance().getArray(ExportAttrTabProvider.XML_TAG); - paneList = new ArrayList<>(); + paneList = new ArrayList(); for (ExportAttrTabProvider provider : providers) { uiTabbedPane.addTab(provider.title(), provider.toSwingComponent()); paneList.add(provider.toExportPane()); diff --git a/designer/src/com/fr/design/report/VerifierListPane.java b/designer/src/com/fr/design/report/VerifierListPane.java index 9bdedbd8a5..15b69398b5 100644 --- a/designer/src/com/fr/design/report/VerifierListPane.java +++ b/designer/src/com/fr/design/report/VerifierListPane.java @@ -1 +1 @@ -package com.fr.design.report; import com.fr.data.Verifier; import com.fr.design.ExtraDesignClassManager; import com.fr.design.fun.VerifyDefineProvider; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.ObjectJControlPane; import com.fr.design.mainframe.ElementCasePane; import com.fr.general.Inter; import com.fr.general.NameObject; import com.fr.report.write.ReportWriteAttr; import com.fr.report.write.ValueVerifier; import com.fr.report.write.WClassVerifier; import com.fr.stable.ArrayUtils; import com.fr.stable.Nameable; import java.util.ArrayList; import java.util.Set; /** * 校验列表 */ public class VerifierListPane extends ObjectJControlPane { public VerifierListPane(ElementCasePane ePane) { super(ePane); } /** * 创建选项 * * @return 选项 */ public NameableCreator[] createNameableCreators() { NameableCreator[] creators = new NameableCreator[]{ new NameObjectCreator(Inter.getLocText(new String[]{"BuildIn", "Verify"}), "/com/fr/web/images/reportlet.png", ValueVerifier.class, BuildInVerifierPane.class) }; Set set = ExtraDesignClassManager.getInstance().getArray(VerifyDefineProvider.MARK_STRING); for (VerifyDefineProvider provider : set) { creators = ArrayUtils.add(creators, new NameObjectCreator( provider.nameForVerifier(), provider.iconPath(), provider.classForVerifier(), provider.appearanceForVerifier() ) { }); } creators = ArrayUtils.add(creators, new NameObjectCreator( Inter.getLocText(new String[]{"Custom", "Verify"}), "/com/fr/web/images/reportlet.png", WClassVerifier.class, CustomVerifierPane.class)); return creators; } @Override protected String title4PopupWindow() { return "Verify Collections"; } public void populate(ReportWriteAttr reportWriteAttr) { if (reportWriteAttr == null) { return; } java.util.List nameObjectList = new ArrayList<>(); int verifierCount = reportWriteAttr.getVerifierCount(); for (int i = 0; i < verifierCount; i++) { Verifier verifier = reportWriteAttr.getVerifier(i); nameObjectList.add(new NameObject(verifier.getName(), verifier)); } this.populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); } public void updateReportWriteAttr(ReportWriteAttr reportWriteAttr) { // Nameable[]居然不能强转成NameObject[],一定要这么写... Nameable[] res = this.update(); NameObject[] res_array = new NameObject[res.length]; java.util.Arrays.asList(res).toArray(res_array); reportWriteAttr.clearVerifiers(); for (int i = 0; i < res_array.length; i++) { NameObject nameObject = res_array[i]; if (nameObject.getObject() instanceof Verifier) { Verifier verifier = (Verifier) nameObject.getObject(); verifier.setName(nameObject.getName()); reportWriteAttr.addVerifier(verifier); } } } } \ No newline at end of file +package com.fr.design.report; import com.fr.data.Verifier; import com.fr.design.ExtraDesignClassManager; import com.fr.design.fun.VerifyDefineProvider; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.ObjectJControlPane; import com.fr.design.mainframe.ElementCasePane; import com.fr.general.Inter; import com.fr.general.NameObject; import com.fr.report.write.ReportWriteAttr; import com.fr.report.write.ValueVerifier; import com.fr.report.write.WClassVerifier; import com.fr.stable.ArrayUtils; import com.fr.stable.Nameable; import java.util.ArrayList; import java.util.Set; /** * 校验列表 */ public class VerifierListPane extends ObjectJControlPane { public VerifierListPane(ElementCasePane ePane) { super(ePane); } /** * 创建选项 * * @return 选项 */ public NameableCreator[] createNameableCreators() { NameableCreator[] creators = new NameableCreator[]{ new NameObjectCreator(Inter.getLocText(new String[]{"BuildIn", "Verify"}), "/com/fr/web/images/reportlet.png", ValueVerifier.class, BuildInVerifierPane.class) }; Set set = ExtraDesignClassManager.getInstance().getArray(VerifyDefineProvider.MARK_STRING); for (VerifyDefineProvider provider : set) { creators = ArrayUtils.add(creators, new NameObjectCreator( provider.nameForVerifier(), provider.iconPath(), provider.classForVerifier(), provider.appearanceForVerifier() ) { }); } creators = ArrayUtils.add(creators, new NameObjectCreator( Inter.getLocText(new String[]{"Custom", "Verify"}), "/com/fr/web/images/reportlet.png", WClassVerifier.class, CustomVerifierPane.class)); return creators; } @Override protected String title4PopupWindow() { return "Verify Collections"; } public void populate(ReportWriteAttr reportWriteAttr) { if (reportWriteAttr == null) { return; } java.util.List nameObjectList = new ArrayList(); int verifierCount = reportWriteAttr.getVerifierCount(); for (int i = 0; i < verifierCount; i++) { Verifier verifier = reportWriteAttr.getVerifier(i); nameObjectList.add(new NameObject(verifier.getName(), verifier)); } this.populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); } public void updateReportWriteAttr(ReportWriteAttr reportWriteAttr) { // Nameable[]居然不能强转成NameObject[],一定要这么写... Nameable[] res = this.update(); NameObject[] res_array = new NameObject[res.length]; java.util.Arrays.asList(res).toArray(res_array); reportWriteAttr.clearVerifiers(); for (int i = 0; i < res_array.length; i++) { NameObject nameObject = res_array[i]; if (nameObject.getObject() instanceof Verifier) { Verifier verifier = (Verifier) nameObject.getObject(); verifier.setName(nameObject.getName()); reportWriteAttr.addVerifier(verifier); } } } } \ No newline at end of file diff --git a/designer/src/com/fr/design/write/submit/SubmitVisitorListPane.java b/designer/src/com/fr/design/write/submit/SubmitVisitorListPane.java index 3dfea6c15b..8990170030 100644 --- a/designer/src/com/fr/design/write/submit/SubmitVisitorListPane.java +++ b/designer/src/com/fr/design/write/submit/SubmitVisitorListPane.java @@ -68,7 +68,7 @@ public class SubmitVisitorListPane extends ObjectJControlPane { return; } - List nameObjectList = new ArrayList<>(); + List nameObjectList = new ArrayList(); int submiterCount = reportWriteAttr.getSubmitVisitorCount(); for (int i = 0; i < submiterCount; i++) { @@ -169,8 +169,8 @@ public class SubmitVisitorListPane extends ObjectJControlPane { public CustomPane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); customCardPane = FRGUIPaneFactory.createCardLayout_S_Pane(); - customSubmitPanes = new HashMap<>(); - comboItemsMap = new HashMap<>(); + customSubmitPanes = new HashMap(); + comboItemsMap = new HashMap(); Set providers = ExtraDesignClassManager.getInstance().getArray(SubmitProvider.MARK_STRING); addSubmitPane(new DefaultSubmit()); @@ -178,7 +178,7 @@ public class SubmitVisitorListPane extends ObjectJControlPane { addSubmitPane(provider); } - configTypes = new ArrayList<>(); + configTypes = new ArrayList(); for (Map.Entry entry : customSubmitPanes.entrySet()) { String key = entry.getKey(); configTypes.add(comboItemsMap.get(key)); diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java index 04e678029c..7189687d61 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java @@ -389,8 +389,8 @@ public class XCardSwitchButton extends XButton { return; } int tabLength = this.tagLayout.getComponentCount(); - Map cardWidth = new HashMap<>(); - Map cardHeight = new HashMap<>(); + Map cardWidth = new HashMap(); + Map cardHeight = new HashMap(); for (int i = 0; i < tabLength; i++) { XCardSwitchButton temp = (XCardSwitchButton) this.tagLayout.getComponent(i); CardSwitchButton tempCard = (CardSwitchButton) temp.toData(); 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 5a156f346d..3522c32b24 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 @@ -60,7 +60,7 @@ public class ElementCasePropertyTable extends AbstractPropertyTable{ .setRendererClass(BooleanRender.class) .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, Inter.getLocText("FR-Designer_Fit")) }; - List defaultList = new ArrayList<>(); + List defaultList = new ArrayList(); for (CRPropertyDescriptor propertyDescriptor: propertyTableEditor) { defaultList.add(propertyDescriptor); 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 bb0f0cd3a4..50f234324f 100644 --- a/designer_form/src/com/fr/design/gui/xtable/PropertyGroupModel.java +++ b/designer_form/src/com/fr/design/gui/xtable/PropertyGroupModel.java @@ -54,7 +54,7 @@ public class PropertyGroupModel extends AbstractPropertyGroupModel { creator.resetCreatorName(value.toString()); } if(ComparatorUtils.equals("visible", properties[row].getName())){ - creator.resetVisible((boolean) value); + creator.resetVisible((Boolean) value); } properties[row].firePropertyChanged(); return true; From c2c72ce0d70079b61a3963d55a07613f4670e7df Mon Sep 17 00:00:00 2001 From: eason-skx Date: Mon, 12 Jun 2017 14:12:40 +0800 Subject: [PATCH 04/96] =?UTF-8?q?=E5=88=A0import?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/module/DesignModuleFactory.java | 1 - 1 file changed, 1 deletion(-) diff --git a/designer_base/src/com/fr/design/module/DesignModuleFactory.java b/designer_base/src/com/fr/design/module/DesignModuleFactory.java index 1e5b4d1ed4..2a4342a7dc 100644 --- a/designer_base/src/com/fr/design/module/DesignModuleFactory.java +++ b/designer_base/src/com/fr/design/module/DesignModuleFactory.java @@ -2,7 +2,6 @@ package com.fr.design.module; import com.fr.base.FRContext; import com.fr.base.chart.BaseChartCollection; -import com.fr.chart.chartattr.ChartCollection; import com.fr.design.gui.chart.BaseChartPropertyPane; import com.fr.design.gui.chart.MiddleChartComponent; import com.fr.design.gui.chart.MiddleChartDialog; From 6213784e43bab3455bfd1e11e7c0a5379bca4267 Mon Sep 17 00:00:00 2001 From: eason-skx Date: Thu, 15 Jun 2017 15:08:54 +0800 Subject: [PATCH 05/96] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SeriesCondition/dlp/DataLabelPane.java | 27 +------------------ 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/designer_chart/src/com/fr/design/chart/series/SeriesCondition/dlp/DataLabelPane.java b/designer_chart/src/com/fr/design/chart/series/SeriesCondition/dlp/DataLabelPane.java index 7d8b6c8ce1..3bad0eefd6 100644 --- a/designer_chart/src/com/fr/design/chart/series/SeriesCondition/dlp/DataLabelPane.java +++ b/designer_chart/src/com/fr/design/chart/series/SeriesCondition/dlp/DataLabelPane.java @@ -111,34 +111,9 @@ public class DataLabelPane extends TooltipContentsPane { } protected JPanel createJPanel4Position() { - // 标签位置:上下左右中. - bottomButton = new UIRadioButton(Inter.getLocText("StyleAlignment-Bottom")); - leftButton = new UIRadioButton(Inter.getLocText("StyleAlignment-Left")); - rigtButton = new UIRadioButton(Inter.getLocText("StyleAlignment-Right")); - topButton = new UIRadioButton(Inter.getLocText("StyleAlignment-Top")); - centerButton = new UIRadioButton(Inter.getLocText("Center")); - - ButtonGroup bg = new ButtonGroup(); - bg.add(bottomButton); - bg.add(leftButton); - bg.add(rigtButton); - bg.add(topButton); - bg.add(centerButton); - topButton.setSelected(true); - - JPanel buttonPane = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); - buttonPane.add(new UILabel(Inter.getLocText(new String[]{"Label", "Layout"}) + ":")); - buttonPane.add(bottomButton); - buttonPane.add(leftButton); - buttonPane.add(rigtButton); - buttonPane.add(topButton); - buttonPane.add(centerButton); - - return buttonPane; + return null; } - - public void populate(AttrContents seriesAttrContents) { super.populate(seriesAttrContents); String dataLabel = seriesAttrContents.getSeriesLabel(); From de3fbb5cabd0ca2ca9b076b9c06b91e1bc46ad9e Mon Sep 17 00:00:00 2001 From: eason-skx Date: Thu, 15 Jun 2017 15:27:32 +0800 Subject: [PATCH 06/96] pmd --- .../design/chart/series/SeriesCondition/dlp/DataLabelPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/chart/series/SeriesCondition/dlp/DataLabelPane.java b/designer_chart/src/com/fr/design/chart/series/SeriesCondition/dlp/DataLabelPane.java index 3bad0eefd6..3a200ee3ce 100644 --- a/designer_chart/src/com/fr/design/chart/series/SeriesCondition/dlp/DataLabelPane.java +++ b/designer_chart/src/com/fr/design/chart/series/SeriesCondition/dlp/DataLabelPane.java @@ -96,7 +96,7 @@ public class DataLabelPane extends TooltipContentsPane { } delimiterBox.setPreferredSize(new Dimension(70, 20)); JPanel boxPane = FRGUIPaneFactory.createBoxFlowInnerContainer_S_Pane(); - boxPane.add(new UILabel(Inter.getLocText("Form-Delimiter") + ":")); + boxPane.add(new UILabel(Inter.getLocText("FR-Designer_Dismenber") + ":")); boxPane.add(delimiterBox); return boxPane; } From 5a490cf8dd753d983b46edc2d1b8fc8c96e2bd13 Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Mon, 19 Jun 2017 13:53:39 +0800 Subject: [PATCH 07/96] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug=EF=BC=9A=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E6=98=BE=E7=A4=BA=E9=87=8C=E8=AE=BE=E7=BD=AE=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E5=86=85=E5=AE=B9=E4=B8=BA=E6=95=B0=E6=8D=AE=E5=88=97?= =?UTF-8?q?=EF=BC=8C=E6=8A=8A=E5=AF=B9=E5=BA=94=E7=9A=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=9B=86=E5=88=A0=E6=8E=89=E5=90=8E=EF=BC=8C=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E7=9A=84=E6=9D=A1=E4=BB=B6=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=EF=BC=8C=E9=A1=B5=E9=9D=A2=E6=89=93=E4=B8=8D=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editor/editor/ColumnSelectedEditor.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java b/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java index 0f1c50a5fd..29b1a3ea03 100644 --- a/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java +++ b/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java @@ -36,15 +36,18 @@ public class ColumnSelectedEditor extends Editor { @Override public void itemStateChanged(ItemEvent e) { - //这边需要重新初始化columnNames, 否则nameList长度和columnNames长度不同导致出錯。 - List nameList = tableDataComboBox.getSelectedItem().calculateColumnNameList(); - columnNames = new String[nameList.size()]; - columnNames = tableDataComboBox.getSelectedItem().calculateColumnNameList().toArray(columnNames); - columnNameComboBox.removeAllItems(); - for (int i = 0; i < columnNames.length; i++) { - columnNameComboBox.addItem(columnNames[i]); + TableDataWrapper tableDataWrapper = tableDataComboBox.getSelectedItem(); + if (tableDataWrapper != null) { + //这边需要重新初始化columnNames, 否则nameList长度和columnNames长度不同导致出錯。 + List nameList = tableDataComboBox.getSelectedItem().calculateColumnNameList(); + columnNames = new String[nameList.size()]; + columnNames = tableDataComboBox.getSelectedItem().calculateColumnNameList().toArray(columnNames); + columnNameComboBox.removeAllItems(); + for (int i = 0; i < columnNames.length; i++) { + columnNameComboBox.addItem(columnNames[i]); + } + columnNameComboBox.validate(); } - columnNameComboBox.validate(); } }); columnNameComboBox = new UIComboBox(); From c5536e6d61d93a766380a4e8221d601276e297ee Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Tue, 20 Jun 2017 17:20:39 +0800 Subject: [PATCH 08/96] =?UTF-8?q?=E4=BF=AE=E6=94=B9pmd=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editor/editor/ColumnSelectedEditor.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java b/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java index 29b1a3ea03..e21099d719 100644 --- a/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java +++ b/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java @@ -37,17 +37,18 @@ public class ColumnSelectedEditor extends Editor { @Override public void itemStateChanged(ItemEvent e) { TableDataWrapper tableDataWrapper = tableDataComboBox.getSelectedItem(); - if (tableDataWrapper != null) { - //这边需要重新初始化columnNames, 否则nameList长度和columnNames长度不同导致出錯。 - List nameList = tableDataComboBox.getSelectedItem().calculateColumnNameList(); - columnNames = new String[nameList.size()]; - columnNames = tableDataComboBox.getSelectedItem().calculateColumnNameList().toArray(columnNames); - columnNameComboBox.removeAllItems(); - for (int i = 0; i < columnNames.length; i++) { - columnNameComboBox.addItem(columnNames[i]); - } - columnNameComboBox.validate(); + if (tableDataWrapper == null) { + return; } + //这边需要重新初始化columnNames, 否则nameList长度和columnNames长度不同导致出錯。 + List nameList = tableDataComboBox.getSelectedItem().calculateColumnNameList(); + columnNames = new String[nameList.size()]; + columnNames = tableDataComboBox.getSelectedItem().calculateColumnNameList().toArray(columnNames); + columnNameComboBox.removeAllItems(); + for (int i = 0; i < columnNames.length; i++) { + columnNameComboBox.addItem(columnNames[i]); + } + columnNameComboBox.validate(); } }); columnNameComboBox = new UIComboBox(); From 382268234df6ed7c8ad3b1172bdf66c8a2ac6b31 Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Tue, 20 Jun 2017 17:25:45 +0800 Subject: [PATCH 09/96] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dpmd=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/editor/editor/ColumnSelectedEditor.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java b/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java index e21099d719..22516882bd 100644 --- a/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java +++ b/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java @@ -36,13 +36,13 @@ public class ColumnSelectedEditor extends Editor { @Override public void itemStateChanged(ItemEvent e) { - TableDataWrapper tableDataWrapper = tableDataComboBox.getSelectedItem(); - if (tableDataWrapper == null) { - return; - } - //这边需要重新初始化columnNames, 否则nameList长度和columnNames长度不同导致出錯。 - List nameList = tableDataComboBox.getSelectedItem().calculateColumnNameList(); - columnNames = new String[nameList.size()]; + TableDataWrapper tableDataWrapper = tableDataComboBox.getSelectedItem(); + if (tableDataWrapper == null) { + return; + } + //这边需要重新初始化columnNames, 否则nameList长度和columnNames长度不同导致出錯。 + List nameList = tableDataWrapper.calculateColumnNameList(); + columnNames = new String[nameList.size()]; columnNames = tableDataComboBox.getSelectedItem().calculateColumnNameList().toArray(columnNames); columnNameComboBox.removeAllItems(); for (int i = 0; i < columnNames.length; i++) { From 58bc5e247e1f26c0288d5e65af6af5cb3e6b4ac0 Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Tue, 20 Jun 2017 17:57:47 +0800 Subject: [PATCH 10/96] =?UTF-8?q?=E4=BF=AE=E6=94=B9pmd=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/editor/editor/ColumnSelectedEditor.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java b/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java index 22516882bd..71014d4c8a 100644 --- a/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java +++ b/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java @@ -68,7 +68,7 @@ public class ColumnSelectedEditor extends Editor { dsColumn.setDsName(tableDataWrappe.getTableDataName()); TableDataColumn column; String columnExp = (String) this.columnNameComboBox.getSelectedItem(); - if (StringUtils.isNotBlank(columnExp) && (columnExp.length() > 0 && columnExp.charAt(0) == '#') && !columnExp.endsWith("#")) { + if (StringUtils.isNotBlank(columnExp) && checkColumnExp(columnExp)) { String number = columnExp.substring(1); Pattern pattern = Pattern.compile("[^\\d]"); if (pattern.matcher(number).find()) { @@ -84,6 +84,10 @@ public class ColumnSelectedEditor extends Editor { return dsColumn; } + private boolean checkColumnExp (String columnExp) { + return (columnExp.length() > 0 && columnExp.charAt(0) == '#') && !columnExp.endsWith("#"); + } + public String getIconName() { return "ds_column"; } From 58a009ed1092c119f0c288da3da4898d0ef05e6c Mon Sep 17 00:00:00 2001 From: sunmondong <646575997@qq.com> Date: Thu, 6 Jul 2017 15:49:36 +0800 Subject: [PATCH 11/96] fix --- build.performance.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build.performance.gradle b/build.performance.gradle index 132db468fb..1022056799 100644 --- a/build.performance.gradle +++ b/build.performance.gradle @@ -14,7 +14,8 @@ task appletJar<<{ fileset(dir:"${basicDir}/core/build/classes/main") fileset(dir:"${basicDir}/chart/build/classes/main") fileset(dir:"${basicDir}/report/build/classes/main") - fileset(dir:"${basicDir}/platform/build/classes/main") + fileset(dir:"${basicDir}/platform/build/classes/main") + fileset(dir:"${basicDir}/performance/build/classes/main") } unjar(src:"${libDir}/3rd.jar",dest:"./tmp") unjar(src:"${libDir}/servlet-api.jar",dest:"./tmp") From b7ca742217b97eaef5e27a24072405792b5c3c53 Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Mon, 10 Jul 2017 14:44:10 +0800 Subject: [PATCH 12/96] =?UTF-8?q?=E5=A4=9A=E5=88=86=E7=B1=BB=E8=BD=B4?= =?UTF-8?q?=E6=95=B4=E4=BD=93=E4=BB=A3=E7=A0=81=EF=BC=8C=E7=AC=AC=E4=B8=80?= =?UTF-8?q?=E6=AC=A1=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...goryPlotMoreCateReportDataContentPane.java | 38 ++++++++++----- ...egoryPlotMoreCateTableDataContentPane.java | 47 ++++++++++++------- 2 files changed, 57 insertions(+), 28 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java index 07d699dae3..1cd4b8c091 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java @@ -3,6 +3,7 @@ package com.fr.design.mainframe.chart.gui.data.report; import com.fr.base.BaseUtils; import com.fr.base.Utils; import com.fr.base.chart.chartdata.TopDefinitionProvider; +import com.fr.chart.chartattr.Axis; import com.fr.chart.chartattr.Bar2DPlot; import com.fr.chart.chartattr.ChartCollection; import com.fr.chart.chartdata.NormalReportDataDefinition; @@ -37,6 +38,10 @@ public class CategoryPlotMoreCateReportDataContentPane extends CategoryPlotRepor private ArrayList formualList = new ArrayList(); private UIObserverListener uiobListener = null; + public ArrayList getFormualList() { + return formualList; + } + public CategoryPlotMoreCateReportDataContentPane() { } @@ -105,13 +110,13 @@ public class CategoryPlotMoreCateReportDataContentPane extends CategoryPlotRepor public void actionPerformed(ActionEvent e) { boxPane.remove(newButtonPane); formualList.remove(pane); - checkAddButton(); + checkComponent(); relayoutPane(); } }); delButton.registerChangeListener(uiobListener); - - checkAddButton(); + + checkComponent(); relayoutPane(); return pane; @@ -121,7 +126,11 @@ public class CategoryPlotMoreCateReportDataContentPane extends CategoryPlotRepor int size = formualList.size(); addButton.setEnabled(size < 2); } - + + protected void checkComponent() { + checkAddButton(); + } + private void relayoutPane() { this.revalidate(); } @@ -163,20 +172,25 @@ public class CategoryPlotMoreCateReportDataContentPane extends CategoryPlotRepor checkAddButton(); } - + public void updateBean(ChartCollection collection) { super.updateBean(collection); - + TopDefinitionProvider definition = collection.getSelectedChart().getFilterDefinition(); + Axis axis = collection.getSelectedChart().getPlot().getxAxis(); if (definition instanceof NormalReportDataDefinition) { NormalReportDataDefinition reportDefinition = (NormalReportDataDefinition) definition; - + reportDefinition.clearMoreCate(); - - for(int i = 0, size = formualList.size(); i < size; i++) { - TinyFormulaPane pane = formualList.get(i); - reportDefinition.addMoreCate(canBeFormula(pane.updateBean())); - } + updateMoreCate(reportDefinition, axis); + + } + } + + protected void updateMoreCate(NormalReportDataDefinition reportDefinition, Axis axis) { + for (int i = 0, size = formualList.size(); i < size; i++) { + TinyFormulaPane pane = formualList.get(i); + reportDefinition.addMoreCate(canBeFormula(pane.updateBean())); } } } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java index 9ae7696d96..f37fc93563 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java @@ -4,6 +4,7 @@ import com.fr.base.BaseUtils; import com.fr.base.chart.chartdata.TopDefinitionProvider; import com.fr.chart.chartattr.Bar2DPlot; import com.fr.chart.chartattr.ChartCollection; +import com.fr.chart.chartattr.Plot; import com.fr.chart.chartdata.NormalTableDataDefinition; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; @@ -41,7 +42,11 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD private UIButton addButton; private UIObserverListener uiobListener = null; - + + public ArrayList getBoxList() { + return boxList; + } + public CategoryPlotMoreCateTableDataContentPane() { // do nothing } @@ -86,8 +91,8 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD public void itemStateChanged(ItemEvent e) { checkSeriseUse(categoryCombox.getSelectedItem() != null); makeToolTipUse(categoryCombox); - - checkAddButton(); + + checkComponent(); } }); } @@ -126,15 +131,15 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD buttonPane.add(delButton); boxPane.add(buttonPane); boxList.add(combox); - - checkAddButton(); + + checkComponent(); delButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { boxPane.remove(buttonPane); boxList.remove(combox); - checkAddButton(); + checkComponent(); relayoutPane(); } }); @@ -147,6 +152,10 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD int size = boxList.size(); addButton.setEnabled(size < 2 && categoryCombox.getSelectedItem() != null); } + + protected void checkComponent() { + checkAddButton(); + } private void relayoutPane() { this.revalidate(); @@ -159,8 +168,8 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD */ public void checkBoxUse(boolean hasUse) { super.checkBoxUse(hasUse); - - checkAddButton(); + + checkComponent(); } protected void refreshBoxListWithSelectTableData(List list) { @@ -218,17 +227,23 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD */ public void updateBean(ChartCollection collection) { super.updateBean(collection); - + TopDefinitionProvider top = collection.getSelectedChart().getFilterDefinition(); - if(top instanceof NormalTableDataDefinition) { - NormalTableDataDefinition normal = (NormalTableDataDefinition)top; + Plot plot = collection.getSelectedChart().getPlot(); + if (top instanceof NormalTableDataDefinition) { + NormalTableDataDefinition normal = (NormalTableDataDefinition) top; normal.clearMoreCate(); - for(int i = 0, size = boxList.size(); i < size; i++) { - UIComboBox box = boxList.get(i); - if(box.getSelectedItem() != null) { - normal.addMoreCate(box.getSelectedItem().toString()); - } + updateMoreCate(normal, plot); + } + } + + protected void updateMoreCate(NormalTableDataDefinition normal, Plot plot) { + for (int i = 0, size = boxList.size(); i < size; i++) { + UIComboBox box = boxList.get(i); + if (box.getSelectedItem() != null) { + normal.addMoreCate(box.getSelectedItem().toString()); } } } + } \ No newline at end of file From 2aa4fee16e180840b8567400f6d323e8726900e7 Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Tue, 11 Jul 2017 09:31:06 +0800 Subject: [PATCH 13/96] =?UTF-8?q?=E5=B0=86Table=E4=B8=AD=E7=9A=84=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E7=B1=BB=E5=9E=8BArrayList=E6=94=B9?= =?UTF-8?q?=E4=B8=BAList=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/table/CategoryPlotMoreCateTableDataContentPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java index f37fc93563..aae7e35400 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java @@ -43,7 +43,7 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD private UIObserverListener uiobListener = null; - public ArrayList getBoxList() { + public List getBoxList() { return boxList; } From 8810f3c6956e3e2fc9cab3731eee052bb2b732aa Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Tue, 11 Jul 2017 13:30:04 +0800 Subject: [PATCH 14/96] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/report/CategoryPlotMoreCateReportDataContentPane.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java index 1cd4b8c091..d63bafbae4 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java @@ -22,6 +22,7 @@ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; +import java.util.List; /** @@ -38,7 +39,7 @@ public class CategoryPlotMoreCateReportDataContentPane extends CategoryPlotRepor private ArrayList formualList = new ArrayList(); private UIObserverListener uiobListener = null; - public ArrayList getFormualList() { + public List getFormualList() { return formualList; } From eda63515b4550fc48549e6a54162418da3dc9526 Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Thu, 13 Jul 2017 14:45:59 +0800 Subject: [PATCH 15/96] =?UTF-8?q?REPORT-3272=20=E8=A1=A8=E5=8D=95=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E4=BF=9D=E5=AD=98=E9=97=AE=E9=A2=98.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_form/src/com/fr/design/mainframe/JForm.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/JForm.java b/designer_form/src/com/fr/design/mainframe/JForm.java index ba491e3519..0a4aa98944 100644 --- a/designer_form/src/com/fr/design/mainframe/JForm.java +++ b/designer_form/src/com/fr/design/mainframe/JForm.java @@ -468,18 +468,21 @@ public class JForm extends JTemplate implements BaseJForm { @Override protected void applyUndoState(FormUndoState u) { try { - //JForm的target重置 - this.setTarget((Form) u.getForm().clone()); if (this.index == FORM_TAB) { + //JForm的target重置 + this.setTarget((Form) u.getForm().clone()); JForm.this.refreshRoot(); this.formDesign.getArea().setAreaSize(u.getAreaSize(), u.getHorizontalValue(), u.getVerticalValue(), u.getWidthValue(), u.getHeightValue(), u.getSlideValue()); //撤销的时候要重新选择的body布局 this.formDesign.getSelectionModel().setSelectedCreators(FormSelectionUtils.rebuildSelection(formDesign.getRootComponent(), formDesign.getRootComponent() == selectedBodyLayout() ? u.getSelectWidgets() : new Widget[]{selectedBodyLayout().toData()})); } else { + // 只在报表块里撤销是不需要修改外部form对象的, 因为编辑的是当前报表块. + // 修改了JForm的Target需要同步修改formDesign的Target. + Form undoForm = (Form) u.getForm().clone(); String widgetName = this.formDesign.getElementCaseContainerName(); //这儿太坑了,u.getForm() 与 getTarget内容不一样 - FormElementCaseProvider dataTable = getTarget().getElementCaseByName(widgetName); + FormElementCaseProvider dataTable = undoForm.getElementCaseByName(widgetName); this.reportComposite.setSelectedWidget(dataTable); //下面这句话是防止撤销之后直接退出编辑再编辑撤销的东西会回来,因为撤销不会保存EC formDesign.setElementCase(dataTable); From 53aa00aa1a98b45b292a34ffda9f4650a562ea3f Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Thu, 13 Jul 2017 14:46:58 +0800 Subject: [PATCH 16/96] =?UTF-8?q?REPORT-3272=20=E8=A1=A8=E5=8D=95=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E4=BF=9D=E5=AD=98=E9=97=AE=E9=A2=98.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_form/src/com/fr/design/mainframe/JForm.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/JForm.java b/designer_form/src/com/fr/design/mainframe/JForm.java index ba491e3519..0a4aa98944 100644 --- a/designer_form/src/com/fr/design/mainframe/JForm.java +++ b/designer_form/src/com/fr/design/mainframe/JForm.java @@ -468,18 +468,21 @@ public class JForm extends JTemplate implements BaseJForm { @Override protected void applyUndoState(FormUndoState u) { try { - //JForm的target重置 - this.setTarget((Form) u.getForm().clone()); if (this.index == FORM_TAB) { + //JForm的target重置 + this.setTarget((Form) u.getForm().clone()); JForm.this.refreshRoot(); this.formDesign.getArea().setAreaSize(u.getAreaSize(), u.getHorizontalValue(), u.getVerticalValue(), u.getWidthValue(), u.getHeightValue(), u.getSlideValue()); //撤销的时候要重新选择的body布局 this.formDesign.getSelectionModel().setSelectedCreators(FormSelectionUtils.rebuildSelection(formDesign.getRootComponent(), formDesign.getRootComponent() == selectedBodyLayout() ? u.getSelectWidgets() : new Widget[]{selectedBodyLayout().toData()})); } else { + // 只在报表块里撤销是不需要修改外部form对象的, 因为编辑的是当前报表块. + // 修改了JForm的Target需要同步修改formDesign的Target. + Form undoForm = (Form) u.getForm().clone(); String widgetName = this.formDesign.getElementCaseContainerName(); //这儿太坑了,u.getForm() 与 getTarget内容不一样 - FormElementCaseProvider dataTable = getTarget().getElementCaseByName(widgetName); + FormElementCaseProvider dataTable = undoForm.getElementCaseByName(widgetName); this.reportComposite.setSelectedWidget(dataTable); //下面这句话是防止撤销之后直接退出编辑再编辑撤销的东西会回来,因为撤销不会保存EC formDesign.setElementCase(dataTable); From 23fd3ad8effcfa5ebe2e6355b1984a53318da90b Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Thu, 13 Jul 2017 14:48:00 +0800 Subject: [PATCH 17/96] 1 --- designer_form/src/com/fr/design/mainframe/JForm.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_form/src/com/fr/design/mainframe/JForm.java b/designer_form/src/com/fr/design/mainframe/JForm.java index 0a4aa98944..892cb8d91e 100644 --- a/designer_form/src/com/fr/design/mainframe/JForm.java +++ b/designer_form/src/com/fr/design/mainframe/JForm.java @@ -478,7 +478,7 @@ public class JForm extends JTemplate implements BaseJForm { formDesign.getRootComponent() == selectedBodyLayout() ? u.getSelectWidgets() : new Widget[]{selectedBodyLayout().toData()})); } else { // 只在报表块里撤销是不需要修改外部form对象的, 因为编辑的是当前报表块. - // 修改了JForm的Target需要同步修改formDesign的Target. + // 修改了JForm的Target需 要同步修改formDesign的Target. Form undoForm = (Form) u.getForm().clone(); String widgetName = this.formDesign.getElementCaseContainerName(); //这儿太坑了,u.getForm() 与 getTarget内容不一样 From 9dcd2698c86b4236851d773ea9e5c78ffb1b3abd Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Thu, 13 Jul 2017 14:48:13 +0800 Subject: [PATCH 18/96] 1 --- designer_form/src/com/fr/design/mainframe/JForm.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_form/src/com/fr/design/mainframe/JForm.java b/designer_form/src/com/fr/design/mainframe/JForm.java index 892cb8d91e..0a4aa98944 100644 --- a/designer_form/src/com/fr/design/mainframe/JForm.java +++ b/designer_form/src/com/fr/design/mainframe/JForm.java @@ -478,7 +478,7 @@ public class JForm extends JTemplate implements BaseJForm { formDesign.getRootComponent() == selectedBodyLayout() ? u.getSelectWidgets() : new Widget[]{selectedBodyLayout().toData()})); } else { // 只在报表块里撤销是不需要修改外部form对象的, 因为编辑的是当前报表块. - // 修改了JForm的Target需 要同步修改formDesign的Target. + // 修改了JForm的Target需要同步修改formDesign的Target. Form undoForm = (Form) u.getForm().clone(); String widgetName = this.formDesign.getElementCaseContainerName(); //这儿太坑了,u.getForm() 与 getTarget内容不一样 From 2f8a2447a6a5e45db3a2f4376149dc51ea08ee24 Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Thu, 13 Jul 2017 16:17:32 +0800 Subject: [PATCH 19/96] =?UTF-8?q?REPORT-2825=20=E6=8C=89=E9=92=AE=E5=87=BA?= =?UTF-8?q?=E7=8E=B0=E5=A4=9A=E4=B8=AA,=20design=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E5=BF=98=E4=BA=86patch=E4=BA=86.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/fun/impl/AbstractDsinFrameUpButtonProvider.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/fun/impl/AbstractDsinFrameUpButtonProvider.java b/designer_base/src/com/fr/design/fun/impl/AbstractDsinFrameUpButtonProvider.java index bd1f70829b..03e76dcdfc 100644 --- a/designer_base/src/com/fr/design/fun/impl/AbstractDsinFrameUpButtonProvider.java +++ b/designer_base/src/com/fr/design/fun/impl/AbstractDsinFrameUpButtonProvider.java @@ -2,6 +2,7 @@ package com.fr.design.fun.impl; import com.fr.design.fun.DesignerFrameUpButtonProvider; import com.fr.design.gui.ibutton.UIButton; +import com.fr.stable.fun.impl.AbstractProvider; import com.fr.stable.fun.mark.API; /** @@ -10,7 +11,7 @@ import com.fr.stable.fun.mark.API; * Time: 15:50 */ @API(level = DesignerFrameUpButtonProvider.CURRENT_LEVEL) -public abstract class AbstractDsinFrameUpButtonProvider implements DesignerFrameUpButtonProvider { +public abstract class AbstractDsinFrameUpButtonProvider extends AbstractProvider implements DesignerFrameUpButtonProvider { @Override public UIButton[] getUpButtons(int menuState) { return new UIButton[0]; From 896fa76e9598a56fe31673d96ca962937b00527f Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Thu, 13 Jul 2017 16:18:38 +0800 Subject: [PATCH 20/96] 1 --- designer_form/src/com/fr/design/mainframe/JForm.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/JForm.java b/designer_form/src/com/fr/design/mainframe/JForm.java index 0a4aa98944..ba491e3519 100644 --- a/designer_form/src/com/fr/design/mainframe/JForm.java +++ b/designer_form/src/com/fr/design/mainframe/JForm.java @@ -468,21 +468,18 @@ public class JForm extends JTemplate implements BaseJForm { @Override protected void applyUndoState(FormUndoState u) { try { + //JForm的target重置 + this.setTarget((Form) u.getForm().clone()); if (this.index == FORM_TAB) { - //JForm的target重置 - this.setTarget((Form) u.getForm().clone()); JForm.this.refreshRoot(); this.formDesign.getArea().setAreaSize(u.getAreaSize(), u.getHorizontalValue(), u.getVerticalValue(), u.getWidthValue(), u.getHeightValue(), u.getSlideValue()); //撤销的时候要重新选择的body布局 this.formDesign.getSelectionModel().setSelectedCreators(FormSelectionUtils.rebuildSelection(formDesign.getRootComponent(), formDesign.getRootComponent() == selectedBodyLayout() ? u.getSelectWidgets() : new Widget[]{selectedBodyLayout().toData()})); } else { - // 只在报表块里撤销是不需要修改外部form对象的, 因为编辑的是当前报表块. - // 修改了JForm的Target需要同步修改formDesign的Target. - Form undoForm = (Form) u.getForm().clone(); String widgetName = this.formDesign.getElementCaseContainerName(); //这儿太坑了,u.getForm() 与 getTarget内容不一样 - FormElementCaseProvider dataTable = undoForm.getElementCaseByName(widgetName); + FormElementCaseProvider dataTable = getTarget().getElementCaseByName(widgetName); this.reportComposite.setSelectedWidget(dataTable); //下面这句话是防止撤销之后直接退出编辑再编辑撤销的东西会回来,因为撤销不会保存EC formDesign.setElementCase(dataTable); From 2bc7f74a3c70732bfb35298acd1a6a72499a0026 Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Thu, 13 Jul 2017 19:27:24 +0800 Subject: [PATCH 21/96] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E6=B2=A1=E7=94=A8?= =?UTF-8?q?=E5=88=B0=E7=9A=84=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/module/DesignModuleFactory.java | 1 - 1 file changed, 1 deletion(-) diff --git a/designer_base/src/com/fr/design/module/DesignModuleFactory.java b/designer_base/src/com/fr/design/module/DesignModuleFactory.java index 1e5b4d1ed4..2a4342a7dc 100644 --- a/designer_base/src/com/fr/design/module/DesignModuleFactory.java +++ b/designer_base/src/com/fr/design/module/DesignModuleFactory.java @@ -2,7 +2,6 @@ package com.fr.design.module; import com.fr.base.FRContext; import com.fr.base.chart.BaseChartCollection; -import com.fr.chart.chartattr.ChartCollection; import com.fr.design.gui.chart.BaseChartPropertyPane; import com.fr.design.gui.chart.MiddleChartComponent; import com.fr.design.gui.chart.MiddleChartDialog; From 6819c1c00dfc856fe18eb7496ebbfba7975513c4 Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Fri, 14 Jul 2017 09:44:43 +0800 Subject: [PATCH 22/96] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8B=BC=E5=86=99?= =?UTF-8?q?=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/mainframe/chart/ChartsConfigPane.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartsConfigPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartsConfigPane.java index bebf6d2c23..595be873d4 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/ChartsConfigPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartsConfigPane.java @@ -14,11 +14,11 @@ public abstract class ChartsConfigPane extends AbstractChartA public final static String CHART_STYLE_TITLE = Inter.getLocText("Chart-Style_Name"); - public abstract Class accptType(); + public abstract Class acceptType(); @Override public void populate(ChartCollection collection) { - if (StableUtils.classInstanceOf(collection.getSelectedChart().getClass(),accptType())) { + if (StableUtils.classInstanceOf(collection.getSelectedChart().getClass(),acceptType())) { populate(collection, (T)collection.getSelectedChart()); } } @@ -27,7 +27,7 @@ public abstract class ChartsConfigPane extends AbstractChartA @Override public void update(ChartCollection collection) { - if (StableUtils.classInstanceOf(collection.getSelectedChart().getClass(),accptType())) { + if (StableUtils.classInstanceOf(collection.getSelectedChart().getClass(),acceptType())) { update(collection, (T)collection.getSelectedChart()); } } From b43d2185ec20ea375d0ad6eca4329d70019a562d Mon Sep 17 00:00:00 2001 From: daniel Date: Wed, 19 Jul 2017 09:45:36 +0800 Subject: [PATCH 23/96] jdk --- .../fr/design/report/VerifierListPane.java | 101 +++++++++++++++++- 1 file changed, 100 insertions(+), 1 deletion(-) diff --git a/designer/src/com/fr/design/report/VerifierListPane.java b/designer/src/com/fr/design/report/VerifierListPane.java index 15b69398b5..6b34af21b3 100644 --- a/designer/src/com/fr/design/report/VerifierListPane.java +++ b/designer/src/com/fr/design/report/VerifierListPane.java @@ -1 +1,100 @@ -package com.fr.design.report; import com.fr.data.Verifier; import com.fr.design.ExtraDesignClassManager; import com.fr.design.fun.VerifyDefineProvider; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.ObjectJControlPane; import com.fr.design.mainframe.ElementCasePane; import com.fr.general.Inter; import com.fr.general.NameObject; import com.fr.report.write.ReportWriteAttr; import com.fr.report.write.ValueVerifier; import com.fr.report.write.WClassVerifier; import com.fr.stable.ArrayUtils; import com.fr.stable.Nameable; import java.util.ArrayList; import java.util.Set; /** * 校验列表 */ public class VerifierListPane extends ObjectJControlPane { public VerifierListPane(ElementCasePane ePane) { super(ePane); } /** * 创建选项 * * @return 选项 */ public NameableCreator[] createNameableCreators() { NameableCreator[] creators = new NameableCreator[]{ new NameObjectCreator(Inter.getLocText(new String[]{"BuildIn", "Verify"}), "/com/fr/web/images/reportlet.png", ValueVerifier.class, BuildInVerifierPane.class) }; Set set = ExtraDesignClassManager.getInstance().getArray(VerifyDefineProvider.MARK_STRING); for (VerifyDefineProvider provider : set) { creators = ArrayUtils.add(creators, new NameObjectCreator( provider.nameForVerifier(), provider.iconPath(), provider.classForVerifier(), provider.appearanceForVerifier() ) { }); } creators = ArrayUtils.add(creators, new NameObjectCreator( Inter.getLocText(new String[]{"Custom", "Verify"}), "/com/fr/web/images/reportlet.png", WClassVerifier.class, CustomVerifierPane.class)); return creators; } @Override protected String title4PopupWindow() { return "Verify Collections"; } public void populate(ReportWriteAttr reportWriteAttr) { if (reportWriteAttr == null) { return; } java.util.List nameObjectList = new ArrayList(); int verifierCount = reportWriteAttr.getVerifierCount(); for (int i = 0; i < verifierCount; i++) { Verifier verifier = reportWriteAttr.getVerifier(i); nameObjectList.add(new NameObject(verifier.getName(), verifier)); } this.populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); } public void updateReportWriteAttr(ReportWriteAttr reportWriteAttr) { // Nameable[]居然不能强转成NameObject[],一定要这么写... Nameable[] res = this.update(); NameObject[] res_array = new NameObject[res.length]; java.util.Arrays.asList(res).toArray(res_array); reportWriteAttr.clearVerifiers(); for (int i = 0; i < res_array.length; i++) { NameObject nameObject = res_array[i]; if (nameObject.getObject() instanceof Verifier) { Verifier verifier = (Verifier) nameObject.getObject(); verifier.setName(nameObject.getName()); reportWriteAttr.addVerifier(verifier); } } } } \ No newline at end of file +package com.fr.design.report; + +import com.fr.data.Verifier; +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.fun.VerifyDefineProvider; +import com.fr.design.gui.controlpane.NameObjectCreator; +import com.fr.design.gui.controlpane.NameableCreator; +import com.fr.design.gui.controlpane.ObjectJControlPane; +import com.fr.design.mainframe.ElementCasePane; +import com.fr.general.Inter; +import com.fr.general.NameObject; +import com.fr.report.write.ReportWriteAttr; +import com.fr.report.write.ValueVerifier; +import com.fr.report.write.WClassVerifier; +import com.fr.stable.ArrayUtils; +import com.fr.stable.Nameable; + +import java.util.ArrayList; +import java.util.Set; + +/** + * 校验列表 + */ +public class VerifierListPane extends ObjectJControlPane { + + public VerifierListPane(ElementCasePane ePane) { + super(ePane); + } + + /** + * 创建选项 + * + * @return 选项 + */ + public NameableCreator[] createNameableCreators() { + NameableCreator[] creators = new NameableCreator[]{ + new NameObjectCreator(Inter.getLocText(new String[]{"BuildIn", "Verify"}), + "/com/fr/web/images/reportlet.png", + ValueVerifier.class, + BuildInVerifierPane.class) + }; + Set set = ExtraDesignClassManager.getInstance().getArray(VerifyDefineProvider.MARK_STRING); + for (VerifyDefineProvider provider : set) { + creators = ArrayUtils.add(creators, new NameObjectCreator( + provider.nameForVerifier(), + provider.iconPath(), + provider.classForVerifier(), + provider.appearanceForVerifier() + ) { + }); + } + creators = ArrayUtils.add(creators, new NameObjectCreator( + Inter.getLocText(new String[]{"Custom", "Verify"}), + "/com/fr/web/images/reportlet.png", + WClassVerifier.class, + CustomVerifierPane.class)); + return creators; + } + + @Override + protected String title4PopupWindow() { + return "Verify Collections"; + } + + public void populate(ReportWriteAttr reportWriteAttr) { + if (reportWriteAttr == null) { + return; + } + + java.util.List nameObjectList = new ArrayList(); + + int verifierCount = reportWriteAttr.getVerifierCount(); + for (int i = 0; i < verifierCount; i++) { + Verifier verifier = reportWriteAttr.getVerifier(i); + nameObjectList.add(new NameObject(verifier.getName(), verifier)); + } + + this.populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); + } + + public void updateReportWriteAttr(ReportWriteAttr reportWriteAttr) { + // Nameable[]居然不能强转成NameObject[],一定要这么写... + Nameable[] res = this.update(); + NameObject[] res_array = new NameObject[res.length]; + java.util.Arrays.asList(res).toArray(res_array); + + reportWriteAttr.clearVerifiers(); + + for (int i = 0; i < res_array.length; i++) { + NameObject nameObject = res_array[i]; + if (nameObject.getObject() instanceof Verifier) { + Verifier verifier = (Verifier) nameObject.getObject(); + verifier.setName(nameObject.getName()); + reportWriteAttr.addVerifier(verifier); + } + } + } + + +} \ No newline at end of file From 842f99ec4bb0eb6228b97ad87753c4b0fddb711f Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Thu, 20 Jul 2017 14:29:22 +0800 Subject: [PATCH 24/96] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=80=81=E5=9B=BE?= =?UTF-8?q?=E8=A1=A8=E9=82=A3=E8=BE=B9=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E7=9A=84=E4=B8=80=E4=BA=9B=E9=97=AE=E9=A2=98?= =?UTF-8?q?=20=E4=BF=AE=E6=94=B9=E5=A4=9A=E5=88=86=E7=B1=BB=E8=BD=B4bug=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=A4=9A=E5=88=86=E7=B1=BB=E6=97=B6=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E5=88=B7=E6=96=B0=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/CategoryPlotMoreCateReportDataContentPane.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java index d63bafbae4..eb7ad057ed 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java @@ -3,9 +3,9 @@ package com.fr.design.mainframe.chart.gui.data.report; import com.fr.base.BaseUtils; import com.fr.base.Utils; import com.fr.base.chart.chartdata.TopDefinitionProvider; -import com.fr.chart.chartattr.Axis; import com.fr.chart.chartattr.Bar2DPlot; import com.fr.chart.chartattr.ChartCollection; +import com.fr.chart.chartattr.Plot; import com.fr.chart.chartdata.NormalReportDataDefinition; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; @@ -178,17 +178,17 @@ public class CategoryPlotMoreCateReportDataContentPane extends CategoryPlotRepor super.updateBean(collection); TopDefinitionProvider definition = collection.getSelectedChart().getFilterDefinition(); - Axis axis = collection.getSelectedChart().getPlot().getxAxis(); + Plot plot = collection.getSelectedChart().getPlot(); if (definition instanceof NormalReportDataDefinition) { NormalReportDataDefinition reportDefinition = (NormalReportDataDefinition) definition; reportDefinition.clearMoreCate(); - updateMoreCate(reportDefinition, axis); + updateMoreCate(reportDefinition, plot); } } - protected void updateMoreCate(NormalReportDataDefinition reportDefinition, Axis axis) { + protected void updateMoreCate(NormalReportDataDefinition reportDefinition, Plot plot) { for (int i = 0, size = formualList.size(); i < size; i++) { TinyFormulaPane pane = formualList.get(i); reportDefinition.addMoreCate(canBeFormula(pane.updateBean())); From 97d781caaf74a6f26ab98b15143a2333c6527d90 Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Fri, 21 Jul 2017 11:47:36 +0800 Subject: [PATCH 25/96] =?UTF-8?q?=E5=AE=89=E8=A3=85=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E5=86=85=E6=89=93=E5=BC=80=E6=8F=92=E4=BB=B6=EF=BC=8C=E5=9B=BE?= =?UTF-8?q?=E8=A1=A8=E8=B6=85=E9=93=BE=E4=B8=AD=E6=B7=BB=E5=8A=A0=E7=9B=B8?= =?UTF-8?q?=E5=BA=94=E7=9A=84=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/controlpane/AbstractNameableCreator.java | 9 +++++++++ .../fr/design/gui/controlpane/NameableCreator.java | 5 ++++- .../chart/gui/other/ChartInteractivePane.java | 11 +++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/gui/controlpane/AbstractNameableCreator.java b/designer_base/src/com/fr/design/gui/controlpane/AbstractNameableCreator.java index 36a760b5b1..b3bb6f9d5e 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/AbstractNameableCreator.java +++ b/designer_base/src/com/fr/design/gui/controlpane/AbstractNameableCreator.java @@ -4,6 +4,7 @@ import com.fr.base.BaseUtils; import com.fr.design.beans.BasicBeanPane; import com.fr.general.ComparatorUtils; import com.fr.general.NameObject; +import com.fr.js.AbstractJavaScript; import javax.swing.*; @@ -70,6 +71,14 @@ public abstract class AbstractNameableCreator implements NameableCreator { return this.clazzOfEditor; } + /** + * get clazzOfObject + * @return clazzOfObject + */ + public Class getClazz() { + return this.clazzOfObject; + } + /** * * @param ob diff --git a/designer_base/src/com/fr/design/gui/controlpane/NameableCreator.java b/designer_base/src/com/fr/design/gui/controlpane/NameableCreator.java index f497be1e6c..eb26e21813 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/NameableCreator.java +++ b/designer_base/src/com/fr/design/gui/controlpane/NameableCreator.java @@ -2,6 +2,7 @@ package com.fr.design.gui.controlpane; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.ilist.ListModelElement; +import com.fr.js.AbstractJavaScript; import com.fr.stable.Nameable; import javax.swing.*; @@ -16,7 +17,9 @@ public interface NameableCreator { public Nameable createNameable(UnrepeatedNameHelper helper); public Class getUpdatePane(); - + + public Class getClazz(); + public Object acceptObject2Populate(Object ob); public void saveUpdatedBean(ListModelElement wrapper, Object bean); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/other/ChartInteractivePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/other/ChartInteractivePane.java index f8b002bcf4..0250000f9c 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/other/ChartInteractivePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/other/ChartInteractivePane.java @@ -12,6 +12,7 @@ import com.fr.chart.chartdata.GisMapTableDefinition; import com.fr.chart.web.ChartHyperPoplink; import com.fr.chart.web.ChartHyperRelateCellLink; import com.fr.chart.web.ChartHyperRelateFloatLink; +import com.fr.design.ExtraDesignClassManager; import com.fr.design.beans.BasicBeanPane; import com.fr.design.chart.javascript.ChartEmailPane; import com.fr.design.chart.series.SeriesCondition.impl.ChartHyperPoplinkPane; @@ -21,6 +22,8 @@ import com.fr.design.chart.series.SeriesCondition.impl.FormHyperlinkPane; import com.fr.design.dialog.BasicScrollPane; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; +import com.fr.design.fun.HyperlinkProvider; +import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.frpane.UIBubbleFloatPane; import com.fr.design.gui.frpane.UICorrelationComboBoxPane; import com.fr.design.gui.ibutton.UIButton; @@ -53,6 +56,7 @@ import java.text.DecimalFormat; import java.text.Format; import java.util.ArrayList; import java.util.List; +import java.util.Set; public class ChartInteractivePane extends BasicScrollPane implements UIObserver{ private static final long serialVersionUID = 3477409806918835992L; @@ -655,6 +659,13 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb private void populateHyperlink(Plot plot) { HashMap paneMap = renewMapWithPlot(plot); + //安装平台内打开插件时,添加相应按钮 + Set providers = ExtraDesignClassManager.getInstance().getArray(HyperlinkProvider.XML_TAG); + for (HyperlinkProvider provider : providers) { + NameableCreator nc = provider.createHyperlinkCreator(); + paneMap.put(nc.getClazz(), nc.getUpdatePane()); + } + List list = refreshList(paneMap); superLink.refreshMenuAndAddMenuAction(list); From 59696f6e66523c09915a9d9071f5a92a9021d0de Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Fri, 21 Jul 2017 17:11:52 +0800 Subject: [PATCH 26/96] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/gui/controlpane/AbstractNameableCreator.java | 4 ++-- .../src/com/fr/design/gui/controlpane/NameableCreator.java | 4 ++-- .../mainframe/chart/gui/other/ChartInteractivePane.java | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/designer_base/src/com/fr/design/gui/controlpane/AbstractNameableCreator.java b/designer_base/src/com/fr/design/gui/controlpane/AbstractNameableCreator.java index b3bb6f9d5e..d8eae8fd21 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/AbstractNameableCreator.java +++ b/designer_base/src/com/fr/design/gui/controlpane/AbstractNameableCreator.java @@ -4,7 +4,7 @@ import com.fr.base.BaseUtils; import com.fr.design.beans.BasicBeanPane; import com.fr.general.ComparatorUtils; import com.fr.general.NameObject; -import com.fr.js.AbstractJavaScript; +import com.fr.js.JavaScript; import javax.swing.*; @@ -75,7 +75,7 @@ public abstract class AbstractNameableCreator implements NameableCreator { * get clazzOfObject * @return clazzOfObject */ - public Class getClazz() { + public Class getHyperlink() { return this.clazzOfObject; } diff --git a/designer_base/src/com/fr/design/gui/controlpane/NameableCreator.java b/designer_base/src/com/fr/design/gui/controlpane/NameableCreator.java index eb26e21813..ec03b371fa 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/NameableCreator.java +++ b/designer_base/src/com/fr/design/gui/controlpane/NameableCreator.java @@ -2,7 +2,7 @@ package com.fr.design.gui.controlpane; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.ilist.ListModelElement; -import com.fr.js.AbstractJavaScript; +import com.fr.js.JavaScript; import com.fr.stable.Nameable; import javax.swing.*; @@ -18,7 +18,7 @@ public interface NameableCreator { public Class getUpdatePane(); - public Class getClazz(); + public Class getHyperlink(); public Object acceptObject2Populate(Object ob); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/other/ChartInteractivePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/other/ChartInteractivePane.java index 0250000f9c..ac8c1efe67 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/other/ChartInteractivePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/other/ChartInteractivePane.java @@ -663,7 +663,7 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb Set providers = ExtraDesignClassManager.getInstance().getArray(HyperlinkProvider.XML_TAG); for (HyperlinkProvider provider : providers) { NameableCreator nc = provider.createHyperlinkCreator(); - paneMap.put(nc.getClazz(), nc.getUpdatePane()); + paneMap.put(nc.getHyperlink(), nc.getUpdatePane()); } List list = refreshList(paneMap); From 8fa56b136735ec07228a56648a1349ac327c2d82 Mon Sep 17 00:00:00 2001 From: hugh Date: Mon, 24 Jul 2017 21:34:25 +0800 Subject: [PATCH 27/96] =?UTF-8?q?SLN-280=20=E4=BA=8C=E5=BC=80=E9=9C=80?= =?UTF-8?q?=E6=B1=82=EF=BC=88=E5=B0=86=E5=8E=9F=E5=AF=BC=E5=87=BA=E6=89=93?= =?UTF-8?q?=E5=8D=B0=E7=BA=B8=E5=BC=A0=E8=83=8C=E6=99=AF=EF=BC=8C=E5=88=86?= =?UTF-8?q?=E5=BC=80=E8=AE=BE=E7=BD=AE=EF=BC=89=EF=BC=8C=E7=BB=8F=E4=BA=A7?= =?UTF-8?q?=E5=93=81=E5=86=B3=E5=AE=9A=E5=81=9A=E5=88=B0=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E9=87=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/report/ReportBackgroundPane.java | 102 ++++++++++-------- .../com/fr/design/locale/designer.properties | 2 + .../design/locale/designer_en_US.properties | 2 + .../design/locale/designer_ja_JP.properties | 2 + .../design/locale/designer_ko_KR.properties | 2 + .../design/locale/designer_zh_CN.properties | 2 + .../design/locale/designer_zh_TW.properties | 2 + 7 files changed, 68 insertions(+), 46 deletions(-) diff --git a/designer/src/com/fr/design/report/ReportBackgroundPane.java b/designer/src/com/fr/design/report/ReportBackgroundPane.java index a3e913fe41..33bfb58bd3 100644 --- a/designer/src/com/fr/design/report/ReportBackgroundPane.java +++ b/designer/src/com/fr/design/report/ReportBackgroundPane.java @@ -1,47 +1,57 @@ -package com.fr.design.report; - -import java.awt.BorderLayout; - -import com.fr.page.ReportSettingsProvider; -import com.fr.design.gui.icheckbox.UICheckBox; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.dialog.BasicPane; -import com.fr.general.Inter; -import com.fr.design.style.background.BackgroundPane; - -public class ReportBackgroundPane extends BasicPane { - private UICheckBox isPrintBackgroundCheckBox; - private BackgroundPane backgroundPane; - - public ReportBackgroundPane() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - - backgroundPane = new BackgroundPane(); - this.add(backgroundPane, BorderLayout.CENTER); - - isPrintBackgroundCheckBox = new UICheckBox( - Inter.getLocText("ReportGUI-Print_Background")); - this.add(isPrintBackgroundCheckBox, BorderLayout.SOUTH); - } - - @Override - protected String title4PopupWindow() { - return Inter.getLocText(new String[]{"paper", "Background"}); - } - - /** - * Populate - */ - public void populate(ReportSettingsProvider reportSettings) { - this.backgroundPane.populate(reportSettings.getBackground()); - this.isPrintBackgroundCheckBox.setSelected(reportSettings.isPrintBackground()); - } - - /** - * update - */ - public void update(ReportSettingsProvider reportSettings) { - reportSettings.setBackground(this.backgroundPane.update()); - reportSettings.setPrintBackground(this.isPrintBackgroundCheckBox.isSelected()); - } +package com.fr.design.report; + +import java.awt.BorderLayout; + +import javax.swing.JPanel; + +import com.fr.page.ReportSettingsProvider; +import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.dialog.BasicPane; +import com.fr.general.Inter; +import com.fr.design.style.background.BackgroundPane; + +public class ReportBackgroundPane extends BasicPane { + private UICheckBox isPrintBackgroundCheckBox; + private UICheckBox isExportBackgroundCheckBox; + private BackgroundPane backgroundPane; + + public ReportBackgroundPane() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + + backgroundPane = new BackgroundPane(); + this.add(backgroundPane, BorderLayout.CENTER); + + isPrintBackgroundCheckBox = new UICheckBox(Inter.getLocText("ReportGUI-BG_Print_Background")); + isExportBackgroundCheckBox = new UICheckBox(Inter.getLocText("ReportGUI-BG_Export_Background")); + JPanel sourth = new JPanel(); + sourth.add(isExportBackgroundCheckBox); + sourth.add(isPrintBackgroundCheckBox); + this.add(sourth, BorderLayout.SOUTH); + + this.add(isPrintBackgroundCheckBox, BorderLayout.SOUTH); + } + + @Override + protected String title4PopupWindow() { + return Inter.getLocText(new String[]{"paper", "Background"}); + } + + /** + * Populate + */ + public void populate(ReportSettingsProvider reportSettings) { + this.backgroundPane.populate(reportSettings.getBackground()); + this.isPrintBackgroundCheckBox.setSelected(reportSettings.isPrintBackground()); + this.isExportBackgroundCheckBox.setSelected(reportSettings.isExportBackground()); + } + + /** + * update + */ + public void update(ReportSettingsProvider reportSettings) { + reportSettings.setBackground(this.backgroundPane.update()); + reportSettings.setPrintBackground(this.isPrintBackgroundCheckBox.isSelected()); + reportSettings.setExportBackground(this.isExportBackgroundCheckBox.isSelected()); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index 836b30c98d..912dca65d0 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -1345,6 +1345,8 @@ Remove_All_Button=Remove_All_Button FR-Designer_Component_Interval=Components Interval ReportColumns-Columns_vertically=Columns vertically ReportGUI-Print_Background=Print Background +ReportGUI-BG_Print_Background=Print Background +ReportGUI-BG_Export_Background=Export Background Export-CSV=CSV M_Edit-Paste=Paste FR-Designer-Basic_Restart_Designer=Restart designer diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index c545b6f7e1..7d7f976bb3 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -1345,6 +1345,8 @@ Remove_All_Button=Remove all buttons FR-Designer_Component_Interval=Component Interval ReportColumns-Columns_vertically=Fixed columns per line ReportGUI-Print_Background=Print/export background +ReportGUI-BG_Print_Background=Print Background +ReportGUI-BG_Export_Background=Export Background Export-CSV=CSV M_Edit-Paste=Paste FR-Designer-Basic_Restart_Designer=Restart designer diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index 3ebf48af52..ab5cf44ea1 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -1345,6 +1345,8 @@ Remove_All_Button=\u3059\u3079\u3066\u306E\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u FR-Designer_Component_Interval=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u9593\u9694 ReportColumns-Columns_vertically=\u5217\u306E\u6BB5\u7D44\u307F ReportGUI-Print_Background=\u5E33\u7968\u80CC\u666F\u306E\u5370\u5237/\u51FA\u529B +ReportGUI-BG_Print_Background=\u5E33\u7968\u80CC\u666F\u306E\u5370\u5237 +ReportGUI-BG_Export_Background=\u5E33\u7968\u80CC\u666F\u306E\u51FA\u529B Export-CSV=CSV(\u30AB\u30F3\u30DE\u533A\u5207\u308A) M_Edit-Paste=\u8CBC\u308A\u4ED8\u3051(P) FR-Designer-Basic_Restart_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u518D\u8D77\u52D5 diff --git a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties index 069cb57a8c..1f6335519f 100644 --- a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties +++ b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties @@ -1345,6 +1345,8 @@ Remove_All_Button=\uBAA8\uB4E0\uD0A4\uD074\uB9AC\uC5B4 FR-Designer_Component_Interval=\uC5B4\uC148\uBE14\uB9AC\uAC04\uACA9 ReportColumns-Columns_vertically=\uC5F4\uC140\uB098\uB204\uAE30 ReportGUI-Print_Background=\uC778\uC1C4/\uB0B4\uBCF4\uB0B4\uAE30\uBB38\uC11C\uBC30\uACBD +ReportGUI-BG_Print_Background=\uC778\uC1C4\uBB38\uC11C\uBC30\uACBD +ReportGUI-BG_Export_Background=\uB0B4\uBCF4\uB0B4\uAE30\uBB38\uC11C\uBC30\uACBD Export-CSV=CSV\uC11C\uC2DD(\uC27C\uD45C\uAD6C\uBD84) M_Edit-Paste=\uBD99\uC5EC\uB123\uAE30(P) FR-Designer-Basic_Restart_Designer=\uC7AC\uBD80\uD305\uC124\uACC4\uAE30 diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index dddd287f34..50554a4dc2 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -1345,6 +1345,8 @@ Remove_All_Button=\u6E05\u9664\u6240\u6709\u6309\u94AE FR-Designer_Component_Interval=\u7EC4\u4EF6\u95F4\u9694 ReportColumns-Columns_vertically=\u5217\u5206\u680F ReportGUI-Print_Background=\u6253\u5370/\u5BFC\u51FA\u62A5\u8868\u80CC\u666F +ReportGUI-BG_Print_Background=\u6253\u5370\u62A5\u8868\u80CC\u666F +ReportGUI-BG_Export_Background=\u5BFC\u51FA\u62A5\u8868\u80CC\u666F Export-CSV=CSV\u683C\u5F0F(\u9017\u53F7\u5206\u9694) M_Edit-Paste=\u7C98\u8D34(P) FR-Designer-Basic_Restart_Designer=\u91CD\u542F\u8BBE\u8BA1\u5668 diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index c85f1d3822..04ba756400 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -1345,6 +1345,8 @@ Remove_All_Button=\u6E05\u9664\u6240\u6709\u6309\u9215 FR-Designer_Component_Interval=\u5143\u4EF6\u9593\u9694 ReportColumns-Columns_vertically=\u6B04\u5206\u6B04 ReportGUI-Print_Background=\u5217\u5370/\u532F\u51FA\u5831\u8868\u80CC\u666F +ReportGUI-BG_Print_Background=\u5217\u5370\u5831\u8868\u80CC\u666F +ReportGUI-BG_Export_Background=\u532F\u51FA\u5831\u8868\u80CC\u666F Export-CSV=CSV\u683C\u5F0F(\u9017\u865F\u5206\u9694) M_Edit-Paste=\u8CBC\u4E0A(P) FR-Designer-Basic_Restart_Designer=\u91CD\u555F\u8A2D\u8A08\u5668 From 06fff3dde04dffca511112a63fbe493e13fc9655 Mon Sep 17 00:00:00 2001 From: hugh Date: Tue, 25 Jul 2017 09:22:00 +0800 Subject: [PATCH 28/96] =?UTF-8?q?SLN-280=20=E8=A7=84=E8=8C=83=E5=9B=BD?= =?UTF-8?q?=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/design/report/ReportBackgroundPane.java | 4 ++-- designer_base/src/com/fr/design/locale/designer.properties | 4 ++-- .../src/com/fr/design/locale/designer_en_US.properties | 4 ++-- .../src/com/fr/design/locale/designer_ja_JP.properties | 4 ++-- .../src/com/fr/design/locale/designer_ko_KR.properties | 4 ++-- .../src/com/fr/design/locale/designer_zh_CN.properties | 4 ++-- .../src/com/fr/design/locale/designer_zh_TW.properties | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/designer/src/com/fr/design/report/ReportBackgroundPane.java b/designer/src/com/fr/design/report/ReportBackgroundPane.java index 33bfb58bd3..dcf1247920 100644 --- a/designer/src/com/fr/design/report/ReportBackgroundPane.java +++ b/designer/src/com/fr/design/report/ReportBackgroundPane.java @@ -22,8 +22,8 @@ public class ReportBackgroundPane extends BasicPane { backgroundPane = new BackgroundPane(); this.add(backgroundPane, BorderLayout.CENTER); - isPrintBackgroundCheckBox = new UICheckBox(Inter.getLocText("ReportGUI-BG_Print_Background")); - isExportBackgroundCheckBox = new UICheckBox(Inter.getLocText("ReportGUI-BG_Export_Background")); + isPrintBackgroundCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Print_Background")); + isExportBackgroundCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Export_Background")); JPanel sourth = new JPanel(); sourth.add(isExportBackgroundCheckBox); sourth.add(isPrintBackgroundCheckBox); diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index 912dca65d0..67035a4fd1 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -1345,8 +1345,8 @@ Remove_All_Button=Remove_All_Button FR-Designer_Component_Interval=Components Interval ReportColumns-Columns_vertically=Columns vertically ReportGUI-Print_Background=Print Background -ReportGUI-BG_Print_Background=Print Background -ReportGUI-BG_Export_Background=Export Background +FR-Designer_Print_Background=Print Background +FR-Designer_Export_Background=Export Background Export-CSV=CSV M_Edit-Paste=Paste FR-Designer-Basic_Restart_Designer=Restart designer diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index 7d7f976bb3..deabe7a0fe 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -1345,8 +1345,8 @@ Remove_All_Button=Remove all buttons FR-Designer_Component_Interval=Component Interval ReportColumns-Columns_vertically=Fixed columns per line ReportGUI-Print_Background=Print/export background -ReportGUI-BG_Print_Background=Print Background -ReportGUI-BG_Export_Background=Export Background +FR-Designer_Print_Background=Print Background +FR-Designer_Export_Background=Export Background Export-CSV=CSV M_Edit-Paste=Paste FR-Designer-Basic_Restart_Designer=Restart designer diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index ab5cf44ea1..7126404b05 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -1345,8 +1345,8 @@ Remove_All_Button=\u3059\u3079\u3066\u306E\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u FR-Designer_Component_Interval=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u9593\u9694 ReportColumns-Columns_vertically=\u5217\u306E\u6BB5\u7D44\u307F ReportGUI-Print_Background=\u5E33\u7968\u80CC\u666F\u306E\u5370\u5237/\u51FA\u529B -ReportGUI-BG_Print_Background=\u5E33\u7968\u80CC\u666F\u306E\u5370\u5237 -ReportGUI-BG_Export_Background=\u5E33\u7968\u80CC\u666F\u306E\u51FA\u529B +FR-Designer_Print_Background=\u5E33\u7968\u80CC\u666F\u306E\u5370\u5237 +FR-Designer_Export_Background=\u5E33\u7968\u80CC\u666F\u306E\u51FA\u529B Export-CSV=CSV(\u30AB\u30F3\u30DE\u533A\u5207\u308A) M_Edit-Paste=\u8CBC\u308A\u4ED8\u3051(P) FR-Designer-Basic_Restart_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u518D\u8D77\u52D5 diff --git a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties index 1f6335519f..1c5ec78b4d 100644 --- a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties +++ b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties @@ -1345,8 +1345,8 @@ Remove_All_Button=\uBAA8\uB4E0\uD0A4\uD074\uB9AC\uC5B4 FR-Designer_Component_Interval=\uC5B4\uC148\uBE14\uB9AC\uAC04\uACA9 ReportColumns-Columns_vertically=\uC5F4\uC140\uB098\uB204\uAE30 ReportGUI-Print_Background=\uC778\uC1C4/\uB0B4\uBCF4\uB0B4\uAE30\uBB38\uC11C\uBC30\uACBD -ReportGUI-BG_Print_Background=\uC778\uC1C4\uBB38\uC11C\uBC30\uACBD -ReportGUI-BG_Export_Background=\uB0B4\uBCF4\uB0B4\uAE30\uBB38\uC11C\uBC30\uACBD +FR-Designer_Print_Background=\uC778\uC1C4\uBB38\uC11C\uBC30\uACBD +FR-Designer_Export_Background=\uB0B4\uBCF4\uB0B4\uAE30\uBB38\uC11C\uBC30\uACBD Export-CSV=CSV\uC11C\uC2DD(\uC27C\uD45C\uAD6C\uBD84) M_Edit-Paste=\uBD99\uC5EC\uB123\uAE30(P) FR-Designer-Basic_Restart_Designer=\uC7AC\uBD80\uD305\uC124\uACC4\uAE30 diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index 50554a4dc2..64a6c4f140 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -1345,8 +1345,8 @@ Remove_All_Button=\u6E05\u9664\u6240\u6709\u6309\u94AE FR-Designer_Component_Interval=\u7EC4\u4EF6\u95F4\u9694 ReportColumns-Columns_vertically=\u5217\u5206\u680F ReportGUI-Print_Background=\u6253\u5370/\u5BFC\u51FA\u62A5\u8868\u80CC\u666F -ReportGUI-BG_Print_Background=\u6253\u5370\u62A5\u8868\u80CC\u666F -ReportGUI-BG_Export_Background=\u5BFC\u51FA\u62A5\u8868\u80CC\u666F +FR-Designer_Print_Background=\u6253\u5370\u62A5\u8868\u80CC\u666F +FR-Designer_Export_Background=\u5BFC\u51FA\u62A5\u8868\u80CC\u666F Export-CSV=CSV\u683C\u5F0F(\u9017\u53F7\u5206\u9694) M_Edit-Paste=\u7C98\u8D34(P) FR-Designer-Basic_Restart_Designer=\u91CD\u542F\u8BBE\u8BA1\u5668 diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index 04ba756400..efbcde1b92 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -1345,8 +1345,8 @@ Remove_All_Button=\u6E05\u9664\u6240\u6709\u6309\u9215 FR-Designer_Component_Interval=\u5143\u4EF6\u9593\u9694 ReportColumns-Columns_vertically=\u6B04\u5206\u6B04 ReportGUI-Print_Background=\u5217\u5370/\u532F\u51FA\u5831\u8868\u80CC\u666F -ReportGUI-BG_Print_Background=\u5217\u5370\u5831\u8868\u80CC\u666F -ReportGUI-BG_Export_Background=\u532F\u51FA\u5831\u8868\u80CC\u666F +FR-Designer_Print_Background=\u5217\u5370\u5831\u8868\u80CC\u666F +FR-Designer_Export_Background=\u532F\u51FA\u5831\u8868\u80CC\u666F Export-CSV=CSV\u683C\u5F0F(\u9017\u865F\u5206\u9694) M_Edit-Paste=\u8CBC\u4E0A(P) FR-Designer-Basic_Restart_Designer=\u91CD\u555F\u8A2D\u8A08\u5668 From 117ea3b1175c9928212855f5a7e243f8fc86b9bd Mon Sep 17 00:00:00 2001 From: richie Date: Tue, 25 Jul 2017 13:54:45 +0800 Subject: [PATCH 29/96] =?UTF-8?q?=E5=A2=9E=E5=8A=A0license?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 674 insertions(+) create mode 100755 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100755 index 0000000000..9cecc1d466 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. From b189fa26abd588ea153e84f770cfff11cf686d26 Mon Sep 17 00:00:00 2001 From: richie Date: Tue, 25 Jul 2017 13:55:20 +0800 Subject: [PATCH 30/96] =?UTF-8?q?=E5=A2=9E=E5=8A=A0license?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 674 insertions(+) create mode 100755 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100755 index 0000000000..9cecc1d466 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. From bcd4a7dedceedb50692adcb4ccfe6d0104e49f9f Mon Sep 17 00:00:00 2001 From: richie Date: Tue, 25 Jul 2017 13:56:57 +0800 Subject: [PATCH 31/96] =?UTF-8?q?=E5=A2=9E=E5=8A=A0license?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 674 insertions(+) create mode 100755 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100755 index 0000000000..9cecc1d466 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. From ed461daa1646e72771974d8dffd5d22bb2faae57 Mon Sep 17 00:00:00 2001 From: richie Date: Wed, 26 Jul 2017 10:45:26 +0800 Subject: [PATCH 32/96] =?UTF-8?q?BI-6684=20License=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=E7=B1=BB=E5=8A=A0=E5=AF=86=E5=81=9A=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/actions/file/SwitchExistEnv.java | 16 +++++++++++++++- .../mainframe/loghandler/DesignerLogImpl.java | 6 ++++++ .../roleAuthority/ReportAndFSManagePane.java | 2 +- designer_base/src/com/fr/env/RemoteEnv.java | 15 ++++++++++++++- .../src/com/fr/design/chart/ChartTypePane.java | 17 ++++++++++++++++- 5 files changed, 52 insertions(+), 4 deletions(-) diff --git a/designer_base/src/com/fr/design/actions/file/SwitchExistEnv.java b/designer_base/src/com/fr/design/actions/file/SwitchExistEnv.java index 8545d85d06..da723c8ed0 100644 --- a/designer_base/src/com/fr/design/actions/file/SwitchExistEnv.java +++ b/designer_base/src/com/fr/design/actions/file/SwitchExistEnv.java @@ -26,9 +26,11 @@ import com.fr.stable.LicUtils; import com.fr.stable.ProductConstants; import com.fr.stable.EnvChangedListener; import com.fr.stable.StringUtils; +import com.fr.stable.help.FineClassLoader; import javax.swing.*; import java.awt.event.ActionEvent; +import java.lang.reflect.Method; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -118,7 +120,7 @@ public class SwitchExistEnv extends MenuDef { return; } SignIn.signIn(selectedEnv); - LicUtils.resetBytes(); + resetLicenseBytes(); HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshToolArea(); fireDSChanged(); } catch (Exception em) { @@ -127,5 +129,17 @@ public class SwitchExistEnv extends MenuDef { TemplatePane.getInstance().editItems(); } } + + private void resetLicenseBytes() { + FineClassLoader classLoader = new FineClassLoader(); + try { + Class clazz = classLoader.loadClass("com.fr.base.FRCoreContext"); + Method retryMethod = clazz.getMethod("retryLicLock"); + retryMethod.invoke(clazz); + } catch (Exception ignore) { + + } + } } + } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogImpl.java b/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogImpl.java index bb121d0c2b..6960d0f0f8 100644 --- a/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogImpl.java +++ b/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogImpl.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe.loghandler; import com.fr.stable.fun.impl.AbstractLogProvider; +import com.fr.stable.web.SessionProvider; import com.fr.stable.xml.LogRecordTimeProvider; import java.util.ArrayList; @@ -43,4 +44,9 @@ public class DesignerLogImpl extends AbstractLogProvider{ public void record(LogRecordTimeProvider logRecordTime) { records.add(logRecordTime); } + + @Override + public void record(LogRecordTimeProvider logRecordTime, SessionProvider sessionProvider) { + + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/roleAuthority/ReportAndFSManagePane.java b/designer_base/src/com/fr/design/roleAuthority/ReportAndFSManagePane.java index 9b1069056f..f6a78eab47 100644 --- a/designer_base/src/com/fr/design/roleAuthority/ReportAndFSManagePane.java +++ b/designer_base/src/com/fr/design/roleAuthority/ReportAndFSManagePane.java @@ -1 +1 @@ -package com.fr.design.roleAuthority; import com.fr.base.BaseUtils; import com.fr.design.constants.UIConstants; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.tabledata.Prepare4DataSourceChange; import com.fr.design.actions.UpdateAction; import com.fr.design.gui.ibutton.UIHeadGroup; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.itoolbar.UIToolbar; import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DockingView; import com.fr.design.menu.ToolBarDef; import com.fr.general.Inter; import com.fr.general.VT4FR; import com.fr.stable.StableUtils; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.TreeSelectionEvent; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import java.awt.*; import java.awt.event.*; import java.util.Enumeration; /** * 设计器左下角面板,用于在权限编辑时存放角色 * Author : daisy * Date: 13-8-30 * Time: 下午2:22 */ public class ReportAndFSManagePane extends DockingView implements Prepare4DataSourceChange { private static final int REPORT_PLATEFORM_MANAGE = 0; private static final int FS_MANAGE = 1; private static final int LEFT_GAP = -125; private static boolean isSupportFS = false; private TreePath treePath = null; private static ReportAndFSManagePane singleton = new ReportAndFSManagePane(); private static RoleTree roleTree; // carl:我先屏了,现在半拉子,等客户要了再好好做 // private AddAction addAction = new AddAction(); // private RemoveAction removeAction = new RemoveAction(); private RefreshAction refreshAction = new RefreshAction(); private UIHeadGroup buttonGroup; private RoleSourceOP op; protected String[] roleNames = new String[2]; public synchronized static ReportAndFSManagePane getInstance() { singleton.op = new RoleSourceOP(); singleton.op.setDataMode(isSupportFS ? FS_MANAGE : REPORT_PLATEFORM_MANAGE); singleton.setDefaultSelectedRole(); return singleton; } public ReportAndFSManagePane() { initRoleTree(); this.setLayout(new BorderLayout(4, 0)); this.setBorder(null); this.add(iniToolBarPane(), BorderLayout.NORTH); refreshAction.setEnabled(true); UIScrollPane scrollPane = new UIScrollPane(roleTree); scrollPane.setBorder(BorderFactory.createEmptyBorder(0, 24, 0, 0)); scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); initbuttonGroup(); JPanel jPanel = new JPanel(new BorderLayout(4, 4)); JPanel buttonPane = new JPanel(new GridLayout()); buttonPane.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, UIConstants.LINE_COLOR)); buttonPane.add(buttonGroup, BorderLayout.CENTER); jPanel.add(buttonPane, BorderLayout.NORTH); jPanel.add(scrollPane, BorderLayout.CENTER); this.add(jPanel, BorderLayout.CENTER); registerDSChangeListener(); } private void initRoleTree() { roleTree = new RoleTree() { public void refreshRoleTree(String selectedRole) { super.refreshRoleTree(selectedRole); changeAlreadyEditedPaneRole(selectedRole); } protected void doWithValueChanged(TreeSelectionEvent e) { super.doWithValueChanged(e); TreeNode root = (TreeNode) roleTree.getModel().getRoot(); TreePath parent = new TreePath(root); setSelectedRole(roleTree.getSelectedRoleName(), parent); } protected void setTabRoleName(String roleName) { roleNames[getMode()] = roleTree.getSelectedRoleName(); } }; roleTree.setEnabled(true); roleTree.setEditable(false); // RoleTreeCellEditor treeCellEditor = new RoleTreeCellEditor(new UITextField()); // treeCellEditor.addCellEditorListener(treeCellEditor); // roleTree.setCellEditor(treeCellEditor); roleTree.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { super.mouseClicked(e); roleTree.setEditable(false); // int row = roleTree.getRowForLocation(e.getX(), e.getY()); // TreePath path = roleTree.getPathForLocation(e.getX(), e.getY()); // if (e.getClickCount() == 2 && buttonGroup.getSelectedIndex() == REPORT_PLATEFORM_MANAGE) { // PrivilegeManagerProvider pm = PrivilegeManager.getProviderInstance(); // AuthenticationProvider ap = pm.getAuthenticationProvider(); // if (!(ap instanceof DaoAuthenticationProvider)) { // roleTree.setEditable(true); // roleTree.startEditingAtPath(path); // treePath = path; // } // } } }); } private void changeAlreadyEditedPaneRole(String selectedRole) { RolesAlreadyEditedPane.getInstance().refreshDockingView(); RoleTree roleTree = RolesAlreadyEditedPane.getInstance().getRoleTree(); TreeNode root = (TreeNode) roleTree.getModel().getRoot(); TreePath parent = new TreePath(root); roleTree.setSelectedRole(selectedRole, parent); } public void setDefaultSelectedRole() { //设置选中的节点 TreeNode root = (TreeNode) roleTree.getModel().getRoot(); TreePath parent = new TreePath(root); ExpandMutableTreeNode node = (ExpandMutableTreeNode) parent.getLastPathComponent(); String selectedRole = null; if (singleton != null) { selectedRole = roleNames[getMode()]; } if (selectedRole == null) { if (node.getChildCount() <= 0 || node.getFirstChild().getChildCount() <= 0) { return; } selectedRole = node.getFirstChild().getChildAt(0).toString(); } roleTree.setSelectedRole(selectedRole, parent); } public RoleTree getRoleTree() { return roleTree; } /** * 检查f) 每增删改一个角色信息(及时保存),先对比下privilege下之前的角色信息有没有发生变化(即在此期间有没有在其他途径中修改过) */ private void checkChanges() { //如若有变化,则弹出下面的对话框 int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("FR-Designer_Role_changed_isRefresh") + "?", Inter.getLocText("FR-Designer_Refresh"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE); if (returnVal == JOptionPane.OK_OPTION) { roleTree.refreshTreeNode(); expandTree(roleTree, true); roleTree.updateUI(); } } private JPanel iniToolBarPane() { ToolBarDef toolbarDef = new ToolBarDef(); toolbarDef.addShortCut(refreshAction); UIToolbar toolBar = ToolBarDef.createJToolBar(); toolbarDef.updateToolBar(toolBar); JPanel toolbarPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); toolbarPane.add(toolBar, BorderLayout.CENTER); return toolbarPane; } private void initbuttonGroup() { isSupportFS = VT4FR.isLicAvailable(StableUtils.getBytes()) && VT4FR.FS_BI.support(); Icon[] iconArray = null; String[] textArray = null; if (isSupportFS) { iconArray = new Icon[]{BaseUtils.readIcon("/com/fr/web/images/platform/demo.png")}; textArray = new String[]{Inter.getLocText("FR-Designer_FS_Name")}; } else { iconArray = new Icon[]{BaseUtils.readIcon("/com/fr/web/images/platform/platform_16_16.png")}; textArray = new String[]{Inter.getLocText("M_Server-Platform_Manager")}; } buttonGroup = new UIHeadGroup(iconArray, textArray) { public void tabChanged(int index) { roleTree.setEditable(false); if (op != null) { op.setDataMode(getMode()); //判断是否可编辑 refreshDockingView(); } setDefaultSelectedRole(); if (singleton != null) { changeAlreadyEditedPaneRole(roleNames[getMode()]); } } }; buttonGroup.setBorder(BorderFactory.createMatteBorder(1, LEFT_GAP, 0, 0, UIConstants.LINE_COLOR)); buttonGroup.setNeedLeftRightOutLine(false); } private int getMode(){ return isSupportFS?FS_MANAGE: REPORT_PLATEFORM_MANAGE; } // /** // * 检查看看是否可以增删刷新按钮是都可以编辑,并且检查角色树是不是可以编辑 // */ // public void checkToolButtonsEnabled() { // if (buttonGroup.getSelectedIndex() == REPORT_PLATEFORM_MANAGE) { // PrivilegeManagerProvider pm = PrivilegeManager.getProviderInstance(); // AuthenticationProvider ap = pm.getAuthenticationProvider(); // PrivilegeFilter pf = pm.getPrivilegeFilter(); // boolean isClickable = !(ap instanceof DaoAuthenticationProvider) // && pf instanceof AuthorityControlFilter; // addAction.setEnabled(isClickable); // removeAction.setEnabled(isClickable); // } else { // addAction.setEnabled(false); // removeAction.setEnabled(false); // } // // } /** * 刷新界面 */ public void refreshDockingView() { populate(new RoleSourceOP()); // this.checkToolButtonsEnabled(); } private void populate(RoleSourceOP op) { this.op = op; roleTree.populate(op); expandTree(roleTree, true); } public String getViewTitle() { return null; } public Icon getViewIcon() { return null; } /** * 最佳定位 * @return 定位 */ public Location preferredLocation() { return null; } /** * 注册数据库改变的响应的Listener */ public void registerDSChangeListener() { DesignTableDataManager.addDsChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { roleTree.refreshTreeNode(); expandTree(roleTree, true); roleTree.updateUI(); } }); } // private class AddAction extends UpdateAction { // public AddAction() { // this.setName(Inter.getLocText("Add")); // this.setSmallIcon(BaseUtils.readIcon("/com/fr/base/images/cell/control/add.png")); // } // // @Override // public void actionPerformed(ActionEvent e) { // refreshDockingView(); // // DefaultTreeModel treeModel = (DefaultTreeModel) roleTree.getModel(); // ExpandMutableTreeNode root = (ExpandMutableTreeNode) treeModel.getRoot(); // ExpandMutableTreeNode parentNode = (ExpandMutableTreeNode) root.getChildAt(0); // String newName = Inter.getLocText("newNode") + (++newIndex); // parentNode.add(new ExpandMutableTreeNode(newName)); // op.addAction(newName); // roleTree.updateUI(); // // try { // synchronized (AuthorityRoleDAOManager.class) { // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(true); // // if (AuthorityRoleDAOManager.getAuthorityAllocation(pf, newName) != null) { // newName = Inter.getLocText("newNode") + (++newIndex); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // } // // AuthorityRoleDAOManager.addAuthorityRole(pf, new Authority(newName), new Allocation(), false, true); // // AuthorityRoleDAOManager.doEnd(pf); // } // } catch (Exception e1) { // FRContext.getLogger().error(e1.getMessage(), e1); // } // } // } // private class RemoveAction extends UpdateAction { // // public RemoveAction() { // this.setName(Inter.getLocText("Remove")); // this.setSmallIcon(UIConstants.CLEAR_ICON); // } // // @Override // public void actionPerformed(ActionEvent e) { // // // NameObject selectedNO = roleTree.getSelectedNameObject(); // // if (selectedNO == null) { // return; // } // // int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("Utils-Are_you_sure_to_remove_the_selected_item") + ":" + selectedNO.getName() + "?", // Inter.getLocText("Remove"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); // if (returnVal == JOptionPane.OK_OPTION) { // op.removeAction(selectedNO.getName()); // // try { // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(true); // // AuthorityRoleDAOManager.removeAuthorityRole(pf, new Authority(selectedNO.getName()), true); // AuthorityRoleDAOManager.doEnd(pf); // } catch (Exception e1) { // FRContext.getLogger().error(e1.getMessage(), e1); // } // // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // roleTree.updateUI(); // roleTree.requestFocus(); // roleTree.setSelectionRow(roleTree.getRowCount() - 1); // } // } // } /* * 刷新ReportletsTree */ private class RefreshAction extends UpdateAction { public RefreshAction() { this.setName(Inter.getLocText("FR-Designer_Refresh")); this.setSmallIcon(UIConstants.REFRESH_ICON); } @Override public void actionPerformed(ActionEvent evt) { roleTree.refreshTreeNode(); expandTree(roleTree, true); roleTree.updateUI(); } } // private class RoleTreeCellEditor extends DefaultCellEditor implements TreeCellEditor, CellEditorListener { // // private NameObject editingNO; // private String oldName; // private String newName; // private UITextField jTextField; // // public RoleTreeCellEditor(final UITextField textField) { // super(textField); // this.jTextField = textField; // this.jTextField.setPreferredSize(new Dimension(DesignerEnvManager.getEnvManager().getLastWestRegionContainerWidth() - 5, this.jTextField.getHeight())); // } // // @Override // public Component getTreeCellEditorComponent(JTree tree, Object value, boolean isSelected, boolean expanded, boolean leaf, int row) { // editingNO = ReportAndFSManagePane.this.roleTree.getSelectedNameObject(); // oldName = editingNO.getName(); // // delegate.setValue(oldName); // // editorComponent.setPreferredSize(new java.awt.Dimension(ReportAndFSManagePane.this.getPreferredSize().width, editorComponent.getPreferredSize().height)); // // return editorComponent; // } // // @Override // // public boolean isCellEditable(EventObject anEvent) { // NameObject no = ReportAndFSManagePane.this.roleTree.getSelectedNameObject(); // return !(no.getName() == Inter.getLocText("Role")); // } // // @Override // public Object getCellEditorValue() { // newName = super.getCellEditorValue().toString(); // editingNO.setName(newName); // return editingNO; // } // // // private boolean checkRoleNameNotEmpty() { // refreshDockingView(); // // String currentText = delegate.getCellEditorValue().toString(); // boolean isContained = false; // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(false); // if (pf != null && // !ComparatorUtils.equals(oldName, currentText)) { // try { // Iterator iterator = AuthorityRoleDAOManager.authorityAllocationIterator(pf); // // while (iterator.hasNext()) { // AuthorityAllocation authorityAllocation = (AuthorityAllocation) ((Map.Entry) iterator.next()) // .getValue(); // Authority _authority = authorityAllocation.getAuthority(); // if(ComparatorUtils.equals(_authority.getName(), currentText)){ // isContained = true; // break; // } // } // } catch (Exception e) { // } // } // // if (currentText.isEmpty() || isContained) { // JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("RoleName_Can_Not_Be_Null") + "!"); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // delegate.setValue(oldName); // return false; // } // return true; // } // // /* // * 下面两个方法是CellEditorListener的 // */ // @Override // public void editingCanceled(ChangeEvent e) { // if (!checkRoleNameNotEmpty()) { // treePath = null; // return; // } // roleTree.stopEditing(); // if (treePath == null) { // return; // } // changeValue(); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // } // // @Override // public void editingStopped(ChangeEvent e) { // if (!checkRoleNameNotEmpty()) { // treePath = null; // return; // } // changeValue(); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // roleTree.updateUI(); // } // // private void changeValue() { // newName = delegate.getCellEditorValue().toString(); // if (!newName.isEmpty() && newName != oldName) { // roleTree.setSelectedRoleName(newName); // op.rename(oldName, newName); // // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(false); // if (pf != null) { // try { // Iterator iterator = AuthorityRoleDAOManager.authorityAllocationIterator(pf); // // while (iterator.hasNext()) { // AuthorityAllocation authorityAllocation = (AuthorityAllocation) ((Map.Entry) iterator.next()) // .getValue(); // Authority _authority = authorityAllocation.getAuthority(); // if (ComparatorUtils.equals(_authority.getName(), oldName)) { // _authority.setName(newName); // } // } // } catch (Exception e) { // } // } // // try { // AuthorityRoleDAOManager.doEnd(pf); // } catch (Exception e) { // FRContext.getLogger().error(e.getMessage(), e); // } // } // } // } /** * 展开树 * @param tree 树 * @param isExpand 是否展开 */ public void expandTree(JTree tree, boolean isExpand) { TreeNode root = (TreeNode) tree.getModel().getRoot(); expandAll(tree, new TreePath(root), isExpand); } private void expandAll(JTree tree, TreePath parent, boolean expand) { TreeNode node = (TreeNode) parent.getLastPathComponent(); if (node.getChildCount() >= 0) { for (Enumeration e = node.children(); e.hasMoreElements(); ) { TreeNode n = (TreeNode) e.nextElement(); TreePath path = parent.pathByAddingChild(n); expandAll(tree, path, expand); } } if (expand) { tree.expandPath(parent); } else { tree.collapsePath(parent); } } } \ No newline at end of file +package com.fr.design.roleAuthority; import com.fr.base.BaseUtils; import com.fr.design.constants.UIConstants; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.tabledata.Prepare4DataSourceChange; import com.fr.design.actions.UpdateAction; import com.fr.design.gui.ibutton.UIHeadGroup; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.itoolbar.UIToolbar; import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DockingView; import com.fr.design.menu.ToolBarDef; import com.fr.general.Inter; import com.fr.general.VT4FR; import com.fr.stable.StableUtils; import com.fr.stable.help.FineClassLoader; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.TreeSelectionEvent; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import java.awt.*; import java.awt.event.*; import java.lang.reflect.Method; import java.util.Enumeration; /** * 设计器左下角面板,用于在权限编辑时存放角色 * Author : daisy * Date: 13-8-30 * Time: 下午2:22 */ public class ReportAndFSManagePane extends DockingView implements Prepare4DataSourceChange { private static final int REPORT_PLATEFORM_MANAGE = 0; private static final int FS_MANAGE = 1; private static final int LEFT_GAP = -125; private static boolean isSupportFS = false; private TreePath treePath = null; private static ReportAndFSManagePane singleton = new ReportAndFSManagePane(); private static RoleTree roleTree; // carl:我先屏了,现在半拉子,等客户要了再好好做 // private AddAction addAction = new AddAction(); // private RemoveAction removeAction = new RemoveAction(); private RefreshAction refreshAction = new RefreshAction(); private UIHeadGroup buttonGroup; private RoleSourceOP op; protected String[] roleNames = new String[2]; public synchronized static ReportAndFSManagePane getInstance() { singleton.op = new RoleSourceOP(); singleton.op.setDataMode(isSupportFS ? FS_MANAGE : REPORT_PLATEFORM_MANAGE); singleton.setDefaultSelectedRole(); return singleton; } public ReportAndFSManagePane() { initRoleTree(); this.setLayout(new BorderLayout(4, 0)); this.setBorder(null); this.add(iniToolBarPane(), BorderLayout.NORTH); refreshAction.setEnabled(true); UIScrollPane scrollPane = new UIScrollPane(roleTree); scrollPane.setBorder(BorderFactory.createEmptyBorder(0, 24, 0, 0)); scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); initbuttonGroup(); JPanel jPanel = new JPanel(new BorderLayout(4, 4)); JPanel buttonPane = new JPanel(new GridLayout()); buttonPane.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, UIConstants.LINE_COLOR)); buttonPane.add(buttonGroup, BorderLayout.CENTER); jPanel.add(buttonPane, BorderLayout.NORTH); jPanel.add(scrollPane, BorderLayout.CENTER); this.add(jPanel, BorderLayout.CENTER); registerDSChangeListener(); } private void initRoleTree() { roleTree = new RoleTree() { public void refreshRoleTree(String selectedRole) { super.refreshRoleTree(selectedRole); changeAlreadyEditedPaneRole(selectedRole); } protected void doWithValueChanged(TreeSelectionEvent e) { super.doWithValueChanged(e); TreeNode root = (TreeNode) roleTree.getModel().getRoot(); TreePath parent = new TreePath(root); setSelectedRole(roleTree.getSelectedRoleName(), parent); } protected void setTabRoleName(String roleName) { roleNames[getMode()] = roleTree.getSelectedRoleName(); } }; roleTree.setEnabled(true); roleTree.setEditable(false); // RoleTreeCellEditor treeCellEditor = new RoleTreeCellEditor(new UITextField()); // treeCellEditor.addCellEditorListener(treeCellEditor); // roleTree.setCellEditor(treeCellEditor); roleTree.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { super.mouseClicked(e); roleTree.setEditable(false); // int row = roleTree.getRowForLocation(e.getX(), e.getY()); // TreePath path = roleTree.getPathForLocation(e.getX(), e.getY()); // if (e.getClickCount() == 2 && buttonGroup.getSelectedIndex() == REPORT_PLATEFORM_MANAGE) { // PrivilegeManagerProvider pm = PrivilegeManager.getProviderInstance(); // AuthenticationProvider ap = pm.getAuthenticationProvider(); // if (!(ap instanceof DaoAuthenticationProvider)) { // roleTree.setEditable(true); // roleTree.startEditingAtPath(path); // treePath = path; // } // } } }); } private void changeAlreadyEditedPaneRole(String selectedRole) { RolesAlreadyEditedPane.getInstance().refreshDockingView(); RoleTree roleTree = RolesAlreadyEditedPane.getInstance().getRoleTree(); TreeNode root = (TreeNode) roleTree.getModel().getRoot(); TreePath parent = new TreePath(root); roleTree.setSelectedRole(selectedRole, parent); } public void setDefaultSelectedRole() { //设置选中的节点 TreeNode root = (TreeNode) roleTree.getModel().getRoot(); TreePath parent = new TreePath(root); ExpandMutableTreeNode node = (ExpandMutableTreeNode) parent.getLastPathComponent(); String selectedRole = null; if (singleton != null) { selectedRole = roleNames[getMode()]; } if (selectedRole == null) { if (node.getChildCount() <= 0 || node.getFirstChild().getChildCount() <= 0) { return; } selectedRole = node.getFirstChild().getChildAt(0).toString(); } roleTree.setSelectedRole(selectedRole, parent); } public RoleTree getRoleTree() { return roleTree; } /** * 检查f) 每增删改一个角色信息(及时保存),先对比下privilege下之前的角色信息有没有发生变化(即在此期间有没有在其他途径中修改过) */ private void checkChanges() { //如若有变化,则弹出下面的对话框 int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("FR-Designer_Role_changed_isRefresh") + "?", Inter.getLocText("FR-Designer_Refresh"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE); if (returnVal == JOptionPane.OK_OPTION) { roleTree.refreshTreeNode(); expandTree(roleTree, true); roleTree.updateUI(); } } private JPanel iniToolBarPane() { ToolBarDef toolbarDef = new ToolBarDef(); toolbarDef.addShortCut(refreshAction); UIToolbar toolBar = ToolBarDef.createJToolBar(); toolbarDef.updateToolBar(toolBar); JPanel toolbarPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); toolbarPane.add(toolBar, BorderLayout.CENTER); return toolbarPane; } private void initbuttonGroup() { isSupportFS = supportFineDecision(); Icon[] iconArray = null; String[] textArray = null; if (isSupportFS) { iconArray = new Icon[]{BaseUtils.readIcon("/com/fr/web/images/platform/demo.png")}; textArray = new String[]{Inter.getLocText("FR-Designer_FS_Name")}; } else { iconArray = new Icon[]{BaseUtils.readIcon("/com/fr/web/images/platform/platform_16_16.png")}; textArray = new String[]{Inter.getLocText("M_Server-Platform_Manager")}; } buttonGroup = new UIHeadGroup(iconArray, textArray) { public void tabChanged(int index) { roleTree.setEditable(false); if (op != null) { op.setDataMode(getMode()); //判断是否可编辑 refreshDockingView(); } setDefaultSelectedRole(); if (singleton != null) { changeAlreadyEditedPaneRole(roleNames[getMode()]); } } }; buttonGroup.setBorder(BorderFactory.createMatteBorder(1, LEFT_GAP, 0, 0, UIConstants.LINE_COLOR)); buttonGroup.setNeedLeftRightOutLine(false); } private boolean supportFineDecision() { FineClassLoader classLoader = new FineClassLoader(); byte[] bytes = null; try { Class clazz = classLoader.loadClass("com.fr.base.FRCoreContext"); Method method = clazz.getMethod("getBytes"); bytes = (byte[]) method.invoke(clazz); } catch (Exception ignore) { } return VT4FR.isLicAvailable(bytes) && VT4FR.FS_BI.support(); } private int getMode(){ return isSupportFS?FS_MANAGE: REPORT_PLATEFORM_MANAGE; } // /** // * 检查看看是否可以增删刷新按钮是都可以编辑,并且检查角色树是不是可以编辑 // */ // public void checkToolButtonsEnabled() { // if (buttonGroup.getSelectedIndex() == REPORT_PLATEFORM_MANAGE) { // PrivilegeManagerProvider pm = PrivilegeManager.getProviderInstance(); // AuthenticationProvider ap = pm.getAuthenticationProvider(); // PrivilegeFilter pf = pm.getPrivilegeFilter(); // boolean isClickable = !(ap instanceof DaoAuthenticationProvider) // && pf instanceof AuthorityControlFilter; // addAction.setEnabled(isClickable); // removeAction.setEnabled(isClickable); // } else { // addAction.setEnabled(false); // removeAction.setEnabled(false); // } // // } /** * 刷新界面 */ public void refreshDockingView() { populate(new RoleSourceOP()); // this.checkToolButtonsEnabled(); } private void populate(RoleSourceOP op) { this.op = op; roleTree.populate(op); expandTree(roleTree, true); } public String getViewTitle() { return null; } public Icon getViewIcon() { return null; } /** * 最佳定位 * @return 定位 */ public Location preferredLocation() { return null; } /** * 注册数据库改变的响应的Listener */ public void registerDSChangeListener() { DesignTableDataManager.addDsChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { roleTree.refreshTreeNode(); expandTree(roleTree, true); roleTree.updateUI(); } }); } // private class AddAction extends UpdateAction { // public AddAction() { // this.setName(Inter.getLocText("Add")); // this.setSmallIcon(BaseUtils.readIcon("/com/fr/base/images/cell/control/add.png")); // } // // @Override // public void actionPerformed(ActionEvent e) { // refreshDockingView(); // // DefaultTreeModel treeModel = (DefaultTreeModel) roleTree.getModel(); // ExpandMutableTreeNode root = (ExpandMutableTreeNode) treeModel.getRoot(); // ExpandMutableTreeNode parentNode = (ExpandMutableTreeNode) root.getChildAt(0); // String newName = Inter.getLocText("newNode") + (++newIndex); // parentNode.add(new ExpandMutableTreeNode(newName)); // op.addAction(newName); // roleTree.updateUI(); // // try { // synchronized (AuthorityRoleDAOManager.class) { // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(true); // // if (AuthorityRoleDAOManager.getAuthorityAllocation(pf, newName) != null) { // newName = Inter.getLocText("newNode") + (++newIndex); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // } // // AuthorityRoleDAOManager.addAuthorityRole(pf, new Authority(newName), new Allocation(), false, true); // // AuthorityRoleDAOManager.doEnd(pf); // } // } catch (Exception e1) { // FRContext.getLogger().error(e1.getMessage(), e1); // } // } // } // private class RemoveAction extends UpdateAction { // // public RemoveAction() { // this.setName(Inter.getLocText("Remove")); // this.setSmallIcon(UIConstants.CLEAR_ICON); // } // // @Override // public void actionPerformed(ActionEvent e) { // // // NameObject selectedNO = roleTree.getSelectedNameObject(); // // if (selectedNO == null) { // return; // } // // int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("Utils-Are_you_sure_to_remove_the_selected_item") + ":" + selectedNO.getName() + "?", // Inter.getLocText("Remove"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); // if (returnVal == JOptionPane.OK_OPTION) { // op.removeAction(selectedNO.getName()); // // try { // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(true); // // AuthorityRoleDAOManager.removeAuthorityRole(pf, new Authority(selectedNO.getName()), true); // AuthorityRoleDAOManager.doEnd(pf); // } catch (Exception e1) { // FRContext.getLogger().error(e1.getMessage(), e1); // } // // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // roleTree.updateUI(); // roleTree.requestFocus(); // roleTree.setSelectionRow(roleTree.getRowCount() - 1); // } // } // } /* * 刷新ReportletsTree */ private class RefreshAction extends UpdateAction { public RefreshAction() { this.setName(Inter.getLocText("FR-Designer_Refresh")); this.setSmallIcon(UIConstants.REFRESH_ICON); } @Override public void actionPerformed(ActionEvent evt) { roleTree.refreshTreeNode(); expandTree(roleTree, true); roleTree.updateUI(); } } // private class RoleTreeCellEditor extends DefaultCellEditor implements TreeCellEditor, CellEditorListener { // // private NameObject editingNO; // private String oldName; // private String newName; // private UITextField jTextField; // // public RoleTreeCellEditor(final UITextField textField) { // super(textField); // this.jTextField = textField; // this.jTextField.setPreferredSize(new Dimension(DesignerEnvManager.getEnvManager().getLastWestRegionContainerWidth() - 5, this.jTextField.getHeight())); // } // // @Override // public Component getTreeCellEditorComponent(JTree tree, Object value, boolean isSelected, boolean expanded, boolean leaf, int row) { // editingNO = ReportAndFSManagePane.this.roleTree.getSelectedNameObject(); // oldName = editingNO.getName(); // // delegate.setValue(oldName); // // editorComponent.setPreferredSize(new java.awt.Dimension(ReportAndFSManagePane.this.getPreferredSize().width, editorComponent.getPreferredSize().height)); // // return editorComponent; // } // // @Override // // public boolean isCellEditable(EventObject anEvent) { // NameObject no = ReportAndFSManagePane.this.roleTree.getSelectedNameObject(); // return !(no.getName() == Inter.getLocText("Role")); // } // // @Override // public Object getCellEditorValue() { // newName = super.getCellEditorValue().toString(); // editingNO.setName(newName); // return editingNO; // } // // // private boolean checkRoleNameNotEmpty() { // refreshDockingView(); // // String currentText = delegate.getCellEditorValue().toString(); // boolean isContained = false; // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(false); // if (pf != null && // !ComparatorUtils.equals(oldName, currentText)) { // try { // Iterator iterator = AuthorityRoleDAOManager.authorityAllocationIterator(pf); // // while (iterator.hasNext()) { // AuthorityAllocation authorityAllocation = (AuthorityAllocation) ((Map.Entry) iterator.next()) // .getValue(); // Authority _authority = authorityAllocation.getAuthority(); // if(ComparatorUtils.equals(_authority.getName(), currentText)){ // isContained = true; // break; // } // } // } catch (Exception e) { // } // } // // if (currentText.isEmpty() || isContained) { // JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("RoleName_Can_Not_Be_Null") + "!"); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // delegate.setValue(oldName); // return false; // } // return true; // } // // /* // * 下面两个方法是CellEditorListener的 // */ // @Override // public void editingCanceled(ChangeEvent e) { // if (!checkRoleNameNotEmpty()) { // treePath = null; // return; // } // roleTree.stopEditing(); // if (treePath == null) { // return; // } // changeValue(); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // } // // @Override // public void editingStopped(ChangeEvent e) { // if (!checkRoleNameNotEmpty()) { // treePath = null; // return; // } // changeValue(); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // roleTree.updateUI(); // } // // private void changeValue() { // newName = delegate.getCellEditorValue().toString(); // if (!newName.isEmpty() && newName != oldName) { // roleTree.setSelectedRoleName(newName); // op.rename(oldName, newName); // // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(false); // if (pf != null) { // try { // Iterator iterator = AuthorityRoleDAOManager.authorityAllocationIterator(pf); // // while (iterator.hasNext()) { // AuthorityAllocation authorityAllocation = (AuthorityAllocation) ((Map.Entry) iterator.next()) // .getValue(); // Authority _authority = authorityAllocation.getAuthority(); // if (ComparatorUtils.equals(_authority.getName(), oldName)) { // _authority.setName(newName); // } // } // } catch (Exception e) { // } // } // // try { // AuthorityRoleDAOManager.doEnd(pf); // } catch (Exception e) { // FRContext.getLogger().error(e.getMessage(), e); // } // } // } // } /** * 展开树 * @param tree 树 * @param isExpand 是否展开 */ public void expandTree(JTree tree, boolean isExpand) { TreeNode root = (TreeNode) tree.getModel().getRoot(); expandAll(tree, new TreePath(root), isExpand); } private void expandAll(JTree tree, TreePath parent, boolean expand) { TreeNode node = (TreeNode) parent.getLastPathComponent(); if (node.getChildCount() >= 0) { for (Enumeration e = node.children(); e.hasMoreElements(); ) { TreeNode n = (TreeNode) e.nextElement(); TreePath path = parent.pathByAddingChild(n); expandAll(tree, path, expand); } } if (expand) { tree.expandPath(parent); } else { tree.collapsePath(parent); } } } \ No newline at end of file diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index ac5732e73d..363b55c6cd 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -34,6 +34,7 @@ import com.fr.plugin.PluginLoader; import com.fr.share.ShareConstants; import com.fr.stable.*; import com.fr.stable.file.XMLFileManagerProvider; +import com.fr.stable.help.FineClassLoader; import com.fr.stable.project.ProjectConstants; import com.fr.stable.xml.XMLPrintWriter; import com.fr.stable.xml.XMLTools; @@ -46,6 +47,7 @@ import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import java.awt.*; import java.io.*; +import java.lang.reflect.Method; import java.net.HttpURLConnection; import java.net.NoRouteToHostException; import java.net.Socket; @@ -1387,13 +1389,24 @@ public class RemoteEnv extends AbstractEnv { return; } SignIn.signIn(remoteEnv); - LicUtils.resetBytes(); + resetLicenseBytes(); HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshToolArea(); } catch (Exception em) { FRContext.getLogger().error(em.getMessage(), em); } } + private void resetLicenseBytes() { + FineClassLoader classLoader = new FineClassLoader(); + try { + Class clazz = classLoader.loadClass("com.fr.base.FRCoreContext"); + Method retryMethod = clazz.getMethod("retryLicLock"); + retryMethod.invoke(clazz); + } catch (Exception ignore) { + + } + } + /** * 停止连接 */ diff --git a/designer_chart/src/com/fr/design/chart/ChartTypePane.java b/designer_chart/src/com/fr/design/chart/ChartTypePane.java index 5cc09a3b4e..9f1da397e9 100644 --- a/designer_chart/src/com/fr/design/chart/ChartTypePane.java +++ b/designer_chart/src/com/fr/design/chart/ChartTypePane.java @@ -15,11 +15,13 @@ import com.fr.general.Inter; import com.fr.general.RegistEditionException; import com.fr.general.VT4FR; import com.fr.stable.StableUtils; +import com.fr.stable.help.FineClassLoader; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import java.awt.*; +import java.lang.reflect.Method; public class ChartTypePane extends ChartCommonWizardPane { private static final long serialVersionUID = -1175602484968520546L; @@ -150,7 +152,7 @@ public class ChartTypePane extends ChartCommonWizardPane { String plotID = typeName[mainTypeList.getSelectedIndex()].getPlotID(); Chart chart = ChartTypeManager.getInstance().getChartTypes(plotID)[iconViewList.getSelectedIndex()]; if(chart.getPlot() != null){ - if(chart.getPlot() instanceof MapPlot && !(VT4FR.isLicAvailable(StableUtils.getBytes()) && VT4FR.CHART_MAP.support())){ + if(chart.getPlot() instanceof MapPlot && !supportMap()){ JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Chart-Map_Not_Supported")); throw new RegistEditionException(VT4FR.CHART_MAP); } @@ -165,6 +167,19 @@ public class ChartTypePane extends ChartCommonWizardPane { } } + private boolean supportMap() { + FineClassLoader classLoader = new FineClassLoader(); + byte[] bytes = null; + try { + Class clazz = classLoader.loadClass("com.fr.base.FRCoreContext"); + Method method = clazz.getMethod("getBytes"); + bytes = (byte[]) method.invoke(clazz); + } catch (Exception ignore) { + + } + return VT4FR.isLicAvailable(bytes) && VT4FR.CHART_MAP.support(); + } + public void update(ChartCollection cc) { if (cc == null) { return; From 869e5c633e10cb66f7fc2497a0d5d86fa7d077ec Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Wed, 26 Jul 2017 17:15:26 +0800 Subject: [PATCH 33/96] =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E7=9A=84=E6=97=B6=E5=80=99=E5=9C=A8=E5=86=99?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=9A=84=E6=97=B6=E5=80=99=E6=9B=B4=E6=96=B0?= =?UTF-8?q?mapAttr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/chart/report/MapCubeLayerPane.java | 4 +- .../chart/report/MapCubeSetDataPane.java | 2 +- .../PlotSeries/AbstrctMapAttrEditPane.java | 2 +- .../series/PlotSeries/MapCustomPane.java | 2 +- .../PlotSeries/MapDefiAreaNamePane.java | 4 +- .../PlotSeries/MapGroupExtensionPane.java | 2 +- .../series/PlotSeries/MapImageEditPane.java | 49 +++++++------------ .../PlotSeries/UIGroupExtensionPane.java | 2 +- .../com/fr/design/mainframe/MapEditPane.java | 4 +- 9 files changed, 30 insertions(+), 41 deletions(-) diff --git a/designer_chart/src/com/fr/design/chart/report/MapCubeLayerPane.java b/designer_chart/src/com/fr/design/chart/report/MapCubeLayerPane.java index 461fe220a0..5d54f78530 100644 --- a/designer_chart/src/com/fr/design/chart/report/MapCubeLayerPane.java +++ b/designer_chart/src/com/fr/design/chart/report/MapCubeLayerPane.java @@ -1,10 +1,10 @@ package com.fr.design.chart.report; +import com.fr.base.MapSvgAttr; +import com.fr.base.MapSvgXMLHelper; import com.fr.base.MapXMLHelper; import com.fr.base.Utils; import com.fr.chart.base.ChartConstants; -import com.fr.chart.base.MapSvgAttr; -import com.fr.chart.base.MapSvgXMLHelper; import com.fr.chart.chartglyph.MapAttr; import com.fr.design.DesignerEnvManager; import com.fr.design.beans.BasicBeanPane; diff --git a/designer_chart/src/com/fr/design/chart/report/MapCubeSetDataPane.java b/designer_chart/src/com/fr/design/chart/report/MapCubeSetDataPane.java index 4c175500eb..3110e241b5 100644 --- a/designer_chart/src/com/fr/design/chart/report/MapCubeSetDataPane.java +++ b/designer_chart/src/com/fr/design/chart/report/MapCubeSetDataPane.java @@ -1,7 +1,7 @@ package com.fr.design.chart.report; +import com.fr.base.MapSvgXMLHelper; import com.fr.base.MapXMLHelper; -import com.fr.chart.base.MapSvgXMLHelper; import com.fr.design.beans.BasicBeanPane; import com.fr.design.editor.ValueEditorPane; import com.fr.design.editor.ValueEditorPaneFactory; diff --git a/designer_chart/src/com/fr/design/chart/series/PlotSeries/AbstrctMapAttrEditPane.java b/designer_chart/src/com/fr/design/chart/series/PlotSeries/AbstrctMapAttrEditPane.java index d2d61909bd..254dfaec1a 100644 --- a/designer_chart/src/com/fr/design/chart/series/PlotSeries/AbstrctMapAttrEditPane.java +++ b/designer_chart/src/com/fr/design/chart/series/PlotSeries/AbstrctMapAttrEditPane.java @@ -1,6 +1,6 @@ package com.fr.design.chart.series.PlotSeries; -import com.fr.chart.base.MapSvgAttr; +import com.fr.base.MapSvgAttr; /** * Created by IntelliJ IDEA. diff --git a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapCustomPane.java b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapCustomPane.java index d844631c05..49fa97eee4 100644 --- a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapCustomPane.java +++ b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapCustomPane.java @@ -1,9 +1,9 @@ package com.fr.design.chart.series.PlotSeries; import com.fr.base.FRContext; +import com.fr.base.MapSvgAttr; import com.fr.base.TableData; import com.fr.base.Utils; -import com.fr.chart.base.MapSvgAttr; import com.fr.data.impl.EmbeddedTableData; import com.fr.design.beans.BasicBeanPane; import com.fr.design.data.DesignTableDataManager; diff --git a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapDefiAreaNamePane.java b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapDefiAreaNamePane.java index ca8d3a67dd..0a3928ae45 100644 --- a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapDefiAreaNamePane.java +++ b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapDefiAreaNamePane.java @@ -1,8 +1,8 @@ package com.fr.design.chart.series.PlotSeries; +import com.fr.base.MapSvgAttr; +import com.fr.base.MapSvgXMLHelper; import com.fr.base.Utils; -import com.fr.chart.base.MapSvgAttr; -import com.fr.chart.base.MapSvgXMLHelper; import com.fr.design.beans.BasicBeanPane; import com.fr.design.data.tabledata.wrapper.TableDataWrapper; import com.fr.design.editor.ValueEditorPane; diff --git a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java index f1f1b3deb3..74a8e687f5 100644 --- a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java +++ b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java @@ -1 +1 @@ -package com.fr.design.chart.series.PlotSeries; import com.fr.base.*; import com.fr.chart.base.MapSvgAttr; import com.fr.chart.base.MapSvgXMLHelper; import com.fr.chart.chartattr.MapPlot; import com.fr.chart.chartglyph.MapShapeValue; import com.fr.design.constants.UIConstants; import com.fr.design.DesignerEnvManager; import com.fr.design.event.ChangeEvent; import com.fr.design.event.ChangeListener; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.stable.CoreConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.SvgProvider; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.geom.RoundRectangle2D; import java.util.ArrayList; /** * Created by IntelliJ IDEA. * Author : Richer * Version: 7.0.3 * Date: 12-12-29 * Time: 下午2:41 */ public class MapGroupExtensionPane extends BasicPane implements UIObserver { private static final String[] TYPE_NAMES = new String[]{ Inter.getLocText("FR-Chart-World_Map"), Inter.getLocText("FR-Chart-State_Map"), Inter.getLocText("FR-Chart-Province_Map"), Inter.getLocText("FR-Chart-Custom_Map")}; private static final int WORD = 0; private static final int NATION = 1; private static final int STATE = 2; private static final int USER = 3; private static final int OFFSET_X = 800; private static final int OFFSET_Y = 200; private UIGroupExtensionPane groupExtensionPane; private UIButton addButton; private JPopupMenu popupMenu; private ArrayList changeListeners = new ArrayList(); private boolean hasPopulated = false; @Override protected String title4PopupWindow() { return "Map"; } public MapGroupExtensionPane() { setLayout(new BorderLayout()); groupExtensionPane = new UIGroupExtensionPane(TYPE_NAMES){ /** * 新添加的数据的序号 * @param data 数据 */ protected void dealNewAddedDataIndex(Object data){ String newName = (String)data; MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance(); if(helper.getNewMapAttr(newName) != null){ return; } MapSvgAttr attr = new MapSvgAttr(); attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + newName + ".svg"); helper.addNewSvgMaps(attr.getName(), attr); } /** * 一次鼠标的点击会有两次事件响应(按下和释放)。前者的事件属性中getValueIsAdjusting()=true,后者是false。 * 是否响应list值改变 * @return 鼠标按下时不响应,先响应mousePress事件,在鼠标释放是再响应list值改编的事件,并且点击删除不触发更新,并且populate后触发更新 */ protected boolean isRespondToValueChange(ListSelectionEvent e){ return !e.getValueIsAdjusting() && !this.isPressOnDelete() && hasPopulated; } }; groupExtensionPane.addSelectionChangeListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { fireStateChange(); } }); groupExtensionPane.addItemEditListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { doEdit(event); } }); groupExtensionPane.addDeleteListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { //这么写有点问题 String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); saveMapInfo(oldName); } }); setPreferredSize(new Dimension(400, 210)); add(groupExtensionPane, BorderLayout.CENTER); addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")) { @Override protected void paintBorder(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setStroke(UIConstants.BS); Shape shape = new RoundRectangle2D.Float(0.5f, 0.5f, getWidth() - 1, getHeight() - 1, UIConstants.ARC, UIConstants.ARC); g2d.setColor(UIConstants.LINE_COLOR); g2d.draw(shape); } }; addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { popupMenu.show(MapGroupExtensionPane.this, addButton.getX() + 1, addButton.getY() + addButton.getHeight()); } }); add(addButton, BorderLayout.SOUTH); initPopupMenu(); } private void initPopupMenu() { popupMenu = new JPopupMenu() { @Override public Dimension getPreferredSize() { Dimension dimension = new Dimension(); dimension.height = super.getPreferredSize().height; dimension.width = addButton.getWidth() - 2; return dimension; } }; JMenuItem worldMap = new JMenuItem(TYPE_NAMES[WORD]); popupMenu.add(worldMap); worldMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[WORD], TYPE_NAMES[WORD], true); } }); JMenuItem countMap = new JMenuItem(TYPE_NAMES[NATION]); popupMenu.add(countMap); countMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[NATION], TYPE_NAMES[NATION], true); } }); JMenuItem proMap = new JMenuItem(TYPE_NAMES[STATE]); popupMenu.add(proMap); proMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[STATE], TYPE_NAMES[STATE], true); } }); JMenuItem menu = new JMenuItem(TYPE_NAMES[USER]); popupMenu.add(menu); menu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[USER], TYPE_NAMES[USER], true); } }); } private void doEdit(ChangeEvent e) { MouseEvent event = (MouseEvent) e.getSource(); JPopupMenu editPopMenu = new JPopupMenu(); final String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); editPopMenu.add(createAreaItem(oldName)); editPopMenu.add(createMarkerItem(oldName)); editPopMenu.add(createLayerItem(oldName)); editPopMenu.add(createRenameItem()); editPopMenu.show(MapGroupExtensionPane.this, event.getXOnScreen() - OFFSET_X, event.getYOnScreen() - OFFSET_Y); } private void mapCheckBeforeEdit(String name){ if(MapSvgXMLHelper.getInstance().containsMapName(name) || MapSvgXMLHelper.getInstance().getNewMapAttr(name)!=null){ return; } MapSvgAttr attr = new MapSvgAttr(); attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + name + ".svg"); MapSvgXMLHelper.getInstance().addNewSvgMaps(name,attr); } private JMenuItem createAreaItem(final String oldName) { JMenuItem editFileItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Filed"})); editFileItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapCustomPane image = new MapCustomPane(); image.setImageSelectType(MapShapeValue.AREA); image.populateBean(oldName); image.setTypeNameAndMapName(groupExtensionPane.getSelectedType(), Utils.objectToString(groupExtensionPane.getSelectedObject())); mapCheckBeforeEdit(oldName); final Image oldImage = getMapImage(oldName); BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(MapGroupExtensionPane.this), new DialogActionAdapter() { public void doOk() { image.updateBean(); // 比较两个前后的名字是否相同, 是图片 如果图片不同, 则直接比较 Image newImage = getMapImage(oldName); if(!ComparatorUtils.equals(oldImage, newImage)) { fireStateChange(); } //versionID递增 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); refresh(); } }); dialog.setVisible(true); } }); return editFileItem; } //根据地图的名字返回地图的图片 private Image getMapImage(String mapName) { if (MapSvgXMLHelper.getInstance().containsMapName(mapName)) { MapSvgAttr mapAttr = MapSvgXMLHelper.getInstance().getMapAttr(mapName); if(mapAttr == null) { return null; } return mapAttr.getMapImage(); } return null; } private JMenuItem createMarkerItem(final String oldName) { JMenuItem editMarkerItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Marker"})); editMarkerItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapCustomPane image = new MapCustomPane(); image.setImageSelectType(MapShapeValue.POINT); image.populateBean(oldName); mapCheckBeforeEdit(oldName); final Image oldImage = getMapImage(oldName); BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(image), new DialogActionAdapter() { public void doOk() { image.updateBean(); Image newImage = getMapImage(oldName); if(!ComparatorUtils.equals(oldImage, newImage)) { fireStateChange(); } //versionID递增 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); refresh(); } }); dialog.setVisible(true); } }); return editMarkerItem; } private JMenuItem createLayerItem(final String oldName) { JMenuItem corrItem = new JMenuItem(Inter.getLocText(new String[]{"Filed", "Corresponding_Fields"})); corrItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapDefiAreaNamePane namedPane = new MapDefiAreaNamePane(); namedPane.populateBean(oldName); mapCheckBeforeEdit(oldName); BasicDialog dialog = namedPane.showMediumWindow(SwingUtilities.getWindowAncestor(namedPane), new DialogActionAdapter() { public void doOk() { namedPane.updateBean();// 地图的名称 value对应情况 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); } }); dialog.setVisible(true); refresh(); } }); return corrItem; } private void showRenameWaring(String newName){ JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), "\"" + newName + "\"" + Inter.getLocText("Utils-has_been_existed") + "!", Inter.getLocText("FR-Designer_Alert"), JOptionPane.WARNING_MESSAGE); } private JMenuItem createRenameItem() { JMenuItem renameItem = new JMenuItem(Inter.getLocText("FR-Chart-Map_Rename")); renameItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String newName = JOptionPane.showInputDialog(DesignerContext.getDesignerFrame().getContentPane(), Inter.getLocText("FR-Chart-Map_Rename"), groupExtensionPane.getSelectedObject()); if (StringUtils.isNotBlank(newName)) { String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); if(ComparatorUtils.equals(oldName, newName)){ return; } //本地在看看临时的helper里面有没有 if(MapSvgXMLHelper.getInstance().getNewMapAttr(newName) != null){ showRenameWaring(newName); return; } try{//提醒名字已存在 if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),newName+SvgProvider.EXTENSION}))){ showRenameWaring(newName); return; } if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( new String[]{MapSvgXMLHelper.relativeCustomMapPath(), newName + SvgProvider.EXTENSION}))){ showRenameWaring(newName); return; } MapSvgAttr editingAttr = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(editingAttr == null){ editingAttr = MapSvgXMLHelper.getInstance().getNewMapAttr(oldName); } if( editingAttr == null) { return; } editingAttr.renameMap(newName); groupExtensionPane.setValueAtCurrentSelectIndex(newName); fireStateChange(); saveMapInfo(newName); FRContext.getCurrentEnv().deleteFile( StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),oldName+SvgProvider.EXTENSION})); FRContext.getCurrentEnv().deleteFile( StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeCustomMapPath(),oldName+SvgProvider.EXTENSION})); refresh(); }catch (Exception exp){ FRLogger.getLogger().error(exp.getMessage()); } } } }); return renameItem; } private void refresh() { this.validate(); this.repaint(); DesignerFrame frame = DesignerContext.getDesignerFrame(); if(frame != null) { frame.repaint();//kunsnat: 图表属性没变, 只是读取时 内容变化. } } //保存修改过的地图信息 private void saveMapInfo(final String mapName) { SwingWorker worker = new SwingWorker() { @Override protected Integer doInBackground() throws Exception { MapSvgAttr attr = MapSvgXMLHelper.getInstance().getMapAttr(mapName);// 只有在编辑地图时才需要储存相关数据 @kuns if(attr != null){ attr.writeBack(mapName); } return 0; } @Override protected void done() { FRLogger.getLogger().info(Inter.getLocText("FR-Chart-Map_Saved")); // 地图已经保存. } }; worker.execute(); DesignerEnvManager.addWorkers(worker); } private void fireStateChange() { for (int i = changeListeners.size(); i > 0; i--) { changeListeners.get(i - 1).stateChanged(new javax.swing.event.ChangeEvent(this)); } } /** * 更新地图属性 * @return 返回地图名称. */ public String updateBean(MapPlot plot) { if(!hasPopulated){ this.populateBean(plot); hasPopulated = true; } MapHelper helper = plot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); helper.clearCateNames(); for (String type : TYPE_NAMES) { Object[] datas = groupExtensionPane.getData(type); for (Object name : datas) { helper.addCateNames(type, name); } } return Utils.objectToString(groupExtensionPane.getSelectedObject()); } /** * 更新地图名称 * @param mapPlot 地图 */ public void populateBean(MapPlot mapPlot) { hasPopulated = false; groupExtensionPane.clearData(); for (String type : TYPE_NAMES) { MapHelper helper = mapPlot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); java.util.List list = helper.getNamesListWithCateName(type); for (Object name : list) { groupExtensionPane.addData(name, type); } } groupExtensionPane.setSelectedObject(mapPlot.getMapName()); hasPopulated = true; } /** * 给组件登记一个观察者监听事件 * * @param listener 观察者监听事件 */ public void registerChangeListener(final UIObserverListener listener) { changeListeners.add(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { listener.doChange(); } }); } /** * 组件是否需要响应添加的观察者事件 * * @return 如果需要响应观察者事件则返回true,否则返回false */ public boolean shouldResponseChangeListener() { return true; } public void setEnabled(boolean isEnabled){ super.setEnabled(isEnabled); addButton.setEnabled(isEnabled); popupMenu.setEnabled(isEnabled); groupExtensionPane.setEnabled(isEnabled); } } \ No newline at end of file +package com.fr.design.chart.series.PlotSeries; import com.fr.base.*; import com.fr.chart.chartattr.MapPlot; import com.fr.chart.chartglyph.MapShapeValue; import com.fr.design.DesignerEnvManager; import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.event.ChangeEvent; import com.fr.design.event.ChangeListener; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.stable.CoreConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.SvgProvider; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.geom.RoundRectangle2D; import java.util.ArrayList; /** * Created by IntelliJ IDEA. * Author : Richer * Version: 7.0.3 * Date: 12-12-29 * Time: 下午2:41 */ public class MapGroupExtensionPane extends BasicPane implements UIObserver { private static final String[] TYPE_NAMES = new String[]{ Inter.getLocText("FR-Chart-World_Map"), Inter.getLocText("FR-Chart-State_Map"), Inter.getLocText("FR-Chart-Province_Map"), Inter.getLocText("FR-Chart-Custom_Map")}; private static final int WORD = 0; private static final int NATION = 1; private static final int STATE = 2; private static final int USER = 3; private static final int OFFSET_X = 800; private static final int OFFSET_Y = 200; private UIGroupExtensionPane groupExtensionPane; private UIButton addButton; private JPopupMenu popupMenu; private ArrayList changeListeners = new ArrayList(); private boolean hasPopulated = false; @Override protected String title4PopupWindow() { return "Map"; } public MapGroupExtensionPane() { setLayout(new BorderLayout()); groupExtensionPane = new UIGroupExtensionPane(TYPE_NAMES){ /** * 新添加的数据的序号 * @param data 数据 */ protected void dealNewAddedDataIndex(Object data){ String newName = (String)data; MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance(); if(helper.getNewMapAttr(newName) != null){ return; } MapSvgAttr attr = new MapSvgAttr(); attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + newName + ".svg"); helper.addNewSvgMaps(attr.getName(), attr); } /** * 一次鼠标的点击会有两次事件响应(按下和释放)。前者的事件属性中getValueIsAdjusting()=true,后者是false。 * 是否响应list值改变 * @return 鼠标按下时不响应,先响应mousePress事件,在鼠标释放是再响应list值改编的事件,并且点击删除不触发更新,并且populate后触发更新 */ protected boolean isRespondToValueChange(ListSelectionEvent e){ return !e.getValueIsAdjusting() && !this.isPressOnDelete() && hasPopulated; } }; groupExtensionPane.addSelectionChangeListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { fireStateChange(); } }); groupExtensionPane.addItemEditListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { doEdit(event); } }); groupExtensionPane.addDeleteListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { //这么写有点问题 String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); saveMapInfo(oldName); } }); setPreferredSize(new Dimension(400, 210)); add(groupExtensionPane, BorderLayout.CENTER); addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")) { @Override protected void paintBorder(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setStroke(UIConstants.BS); Shape shape = new RoundRectangle2D.Float(0.5f, 0.5f, getWidth() - 1, getHeight() - 1, UIConstants.ARC, UIConstants.ARC); g2d.setColor(UIConstants.LINE_COLOR); g2d.draw(shape); } }; addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { popupMenu.show(MapGroupExtensionPane.this, addButton.getX() + 1, addButton.getY() + addButton.getHeight()); } }); add(addButton, BorderLayout.SOUTH); initPopupMenu(); } private void initPopupMenu() { popupMenu = new JPopupMenu() { @Override public Dimension getPreferredSize() { Dimension dimension = new Dimension(); dimension.height = super.getPreferredSize().height; dimension.width = addButton.getWidth() - 2; return dimension; } }; JMenuItem worldMap = new JMenuItem(TYPE_NAMES[WORD]); popupMenu.add(worldMap); worldMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[WORD], TYPE_NAMES[WORD], true); } }); JMenuItem countMap = new JMenuItem(TYPE_NAMES[NATION]); popupMenu.add(countMap); countMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[NATION], TYPE_NAMES[NATION], true); } }); JMenuItem proMap = new JMenuItem(TYPE_NAMES[STATE]); popupMenu.add(proMap); proMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[STATE], TYPE_NAMES[STATE], true); } }); JMenuItem menu = new JMenuItem(TYPE_NAMES[USER]); popupMenu.add(menu); menu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[USER], TYPE_NAMES[USER], true); } }); } private void doEdit(ChangeEvent e) { MouseEvent event = (MouseEvent) e.getSource(); JPopupMenu editPopMenu = new JPopupMenu(); final String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); editPopMenu.add(createAreaItem(oldName)); editPopMenu.add(createMarkerItem(oldName)); editPopMenu.add(createLayerItem(oldName)); editPopMenu.add(createRenameItem()); editPopMenu.show(MapGroupExtensionPane.this, event.getXOnScreen() - OFFSET_X, event.getYOnScreen() - OFFSET_Y); } private void mapCheckBeforeEdit(String name){ if(MapSvgXMLHelper.getInstance().containsMapName(name) || MapSvgXMLHelper.getInstance().getNewMapAttr(name)!=null){ return; } MapSvgAttr attr = new MapSvgAttr(); attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + name + ".svg"); MapSvgXMLHelper.getInstance().addNewSvgMaps(name,attr); } private JMenuItem createAreaItem(final String oldName) { JMenuItem editFileItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Filed"})); editFileItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapCustomPane image = new MapCustomPane(); image.setImageSelectType(MapShapeValue.AREA); image.populateBean(oldName); image.setTypeNameAndMapName(groupExtensionPane.getSelectedType(), Utils.objectToString(groupExtensionPane.getSelectedObject())); mapCheckBeforeEdit(oldName); final Image oldImage = getMapImage(oldName); BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(MapGroupExtensionPane.this), new DialogActionAdapter() { public void doOk() { image.updateBean(); // 比较两个前后的名字是否相同, 是图片 如果图片不同, 则直接比较 Image newImage = getMapImage(oldName); if(!ComparatorUtils.equals(oldImage, newImage)) { fireStateChange(); } //versionID递增 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); refresh(); } }); dialog.setVisible(true); } }); return editFileItem; } //根据地图的名字返回地图的图片 private Image getMapImage(String mapName) { if (MapSvgXMLHelper.getInstance().containsMapName(mapName)) { MapSvgAttr mapAttr = MapSvgXMLHelper.getInstance().getMapAttr(mapName); if(mapAttr == null) { return null; } return mapAttr.getMapImage(); } return null; } private JMenuItem createMarkerItem(final String oldName) { JMenuItem editMarkerItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Marker"})); editMarkerItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapCustomPane image = new MapCustomPane(); image.setImageSelectType(MapShapeValue.POINT); image.populateBean(oldName); mapCheckBeforeEdit(oldName); final Image oldImage = getMapImage(oldName); BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(image), new DialogActionAdapter() { public void doOk() { image.updateBean(); Image newImage = getMapImage(oldName); if(!ComparatorUtils.equals(oldImage, newImage)) { fireStateChange(); } //versionID递增 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); refresh(); } }); dialog.setVisible(true); } }); return editMarkerItem; } private JMenuItem createLayerItem(final String oldName) { JMenuItem corrItem = new JMenuItem(Inter.getLocText(new String[]{"Filed", "Corresponding_Fields"})); corrItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapDefiAreaNamePane namedPane = new MapDefiAreaNamePane(); namedPane.populateBean(oldName); mapCheckBeforeEdit(oldName); BasicDialog dialog = namedPane.showMediumWindow(SwingUtilities.getWindowAncestor(namedPane), new DialogActionAdapter() { public void doOk() { namedPane.updateBean();// 地图的名称 value对应情况 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); } }); dialog.setVisible(true); refresh(); } }); return corrItem; } private void showRenameWaring(String newName){ JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), "\"" + newName + "\"" + Inter.getLocText("Utils-has_been_existed") + "!", Inter.getLocText("FR-Designer_Alert"), JOptionPane.WARNING_MESSAGE); } private JMenuItem createRenameItem() { JMenuItem renameItem = new JMenuItem(Inter.getLocText("FR-Chart-Map_Rename")); renameItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String newName = JOptionPane.showInputDialog(DesignerContext.getDesignerFrame().getContentPane(), Inter.getLocText("FR-Chart-Map_Rename"), groupExtensionPane.getSelectedObject()); if (StringUtils.isNotBlank(newName)) { String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); if(ComparatorUtils.equals(oldName, newName)){ return; } //本地在看看临时的helper里面有没有 if(MapSvgXMLHelper.getInstance().getNewMapAttr(newName) != null){ showRenameWaring(newName); return; } try{//提醒名字已存在 if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),newName+SvgProvider.EXTENSION}))){ showRenameWaring(newName); return; } if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( new String[]{MapSvgXMLHelper.relativeCustomMapPath(), newName + SvgProvider.EXTENSION}))){ showRenameWaring(newName); return; } MapSvgAttr editingAttr = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(editingAttr == null){ editingAttr = MapSvgXMLHelper.getInstance().getNewMapAttr(oldName); } if( editingAttr == null) { return; } editingAttr.renameMap(newName); groupExtensionPane.setValueAtCurrentSelectIndex(newName); fireStateChange(); saveMapInfo(newName); FRContext.getCurrentEnv().deleteFile( StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),oldName+SvgProvider.EXTENSION})); FRContext.getCurrentEnv().deleteFile( StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeCustomMapPath(),oldName+SvgProvider.EXTENSION})); refresh(); }catch (Exception exp){ FRLogger.getLogger().error(exp.getMessage()); } } } }); return renameItem; } private void refresh() { this.validate(); this.repaint(); DesignerFrame frame = DesignerContext.getDesignerFrame(); if(frame != null) { frame.repaint();//kunsnat: 图表属性没变, 只是读取时 内容变化. } } //保存修改过的地图信息 private void saveMapInfo(final String mapName) { SwingWorker worker = new SwingWorker() { @Override protected Integer doInBackground() throws Exception { MapSvgAttr attr = MapSvgXMLHelper.getInstance().getMapAttr(mapName);// 只有在编辑地图时才需要储存相关数据 @kuns if(attr != null){ attr.writeBack(mapName); } return 0; } @Override protected void done() { FRLogger.getLogger().info(Inter.getLocText("FR-Chart-Map_Saved")); // 地图已经保存. } }; worker.execute(); DesignerEnvManager.addWorkers(worker); } private void fireStateChange() { for (int i = changeListeners.size(); i > 0; i--) { changeListeners.get(i - 1).stateChanged(new javax.swing.event.ChangeEvent(this)); } } /** * 更新地图属性 * @return 返回地图名称. */ public String updateBean(MapPlot plot) { if(!hasPopulated){ this.populateBean(plot); hasPopulated = true; } MapHelper helper = plot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); helper.clearCateNames(); for (String type : TYPE_NAMES) { Object[] datas = groupExtensionPane.getData(type); for (Object name : datas) { helper.addCateNames(type, name); } } return Utils.objectToString(groupExtensionPane.getSelectedObject()); } /** * 更新地图名称 * @param mapPlot 地图 */ public void populateBean(MapPlot mapPlot) { hasPopulated = false; groupExtensionPane.clearData(); for (String type : TYPE_NAMES) { MapHelper helper = mapPlot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); java.util.List list = helper.getNamesListWithCateName(type); for (Object name : list) { groupExtensionPane.addData(name, type); } } groupExtensionPane.setSelectedObject(mapPlot.getMapName()); hasPopulated = true; } /** * 给组件登记一个观察者监听事件 * * @param listener 观察者监听事件 */ public void registerChangeListener(final UIObserverListener listener) { changeListeners.add(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { listener.doChange(); } }); } /** * 组件是否需要响应添加的观察者事件 * * @return 如果需要响应观察者事件则返回true,否则返回false */ public boolean shouldResponseChangeListener() { return true; } public void setEnabled(boolean isEnabled){ super.setEnabled(isEnabled); addButton.setEnabled(isEnabled); popupMenu.setEnabled(isEnabled); groupExtensionPane.setEnabled(isEnabled); } } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapImageEditPane.java b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapImageEditPane.java index 6f9c15c55f..4aff10c379 100644 --- a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapImageEditPane.java +++ b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapImageEditPane.java @@ -1,34 +1,13 @@ package com.fr.design.chart.series.PlotSeries; -import java.awt.AlphaComposite; -import java.awt.BasicStroke; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.Image; -import java.awt.Point; -import java.awt.Rectangle; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.awt.event.MouseMotionListener; -import java.awt.geom.GeneralPath; -import java.util.*; - -import javax.swing.BoxLayout; -import javax.swing.DefaultListModel; -import javax.swing.JComponent; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.SwingUtilities; - -import com.fr.base.*; -import com.fr.chart.base.MapSvgAttr; -import com.fr.chart.base.MapSvgXMLHelper; +import com.fr.base.BaseUtils; +import com.fr.base.MapSvgAttr; +import com.fr.base.MapSvgXMLHelper; +import com.fr.base.Utils; import com.fr.chart.chartglyph.MapShapeValue; import com.fr.design.beans.BasicBeanPane; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.dialog.UIDialog; import com.fr.design.event.ChangeEvent; import com.fr.design.event.ChangeListener; import com.fr.design.gui.icontainer.UIScrollPane; @@ -37,13 +16,23 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itable.UISelectTable; import com.fr.design.gui.itable.UITableNoOptionUI; import com.fr.design.gui.itextfield.UITextField; -import com.fr.design.dialog.DialogActionAdapter; -import com.fr.design.dialog.UIDialog; +import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; import com.fr.stable.CoreGraphHelper; import com.fr.stable.StringUtils; -import com.fr.design.utils.gui.GUICoreUtils; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; +import java.awt.geom.GeneralPath; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; /** * 地图 图片编辑界面 选中图片 编辑. 支持鼠标选中等事件 diff --git a/designer_chart/src/com/fr/design/chart/series/PlotSeries/UIGroupExtensionPane.java b/designer_chart/src/com/fr/design/chart/series/PlotSeries/UIGroupExtensionPane.java index 2ad670341c..1e26f37b01 100644 --- a/designer_chart/src/com/fr/design/chart/series/PlotSeries/UIGroupExtensionPane.java +++ b/designer_chart/src/com/fr/design/chart/series/PlotSeries/UIGroupExtensionPane.java @@ -1 +1 @@ -package com.fr.design.chart.series.PlotSeries; import com.fr.chart.base.MapSvgXMLHelper; import com.fr.design.constants.LayoutConstants; import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.dialog.UIDialog; import com.fr.design.event.ChangeEvent; import com.fr.design.event.ChangeListener; import com.fr.design.gui.frpane.UIExtensionPane; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.BoldFontTextLabel; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UISearchTextField; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.DesignerContext; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.GeneralUtils; import com.fr.general.Inter; import com.fr.stable.ArrayUtils; import javax.swing.*; import javax.swing.border.Border; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import java.util.ArrayList; import java.util.List; /** * Created by IntelliJ IDEA. * Author : Richer * Version: 7.0.3 * Date: 12-12-29 * Time: 上午11:14 * 可收缩的面板,只有两层 */ public class UIGroupExtensionPane extends BasicPane { public static final String EDIT = "edit"; public static final String DELETE = "delete"; private static final int BUTTONWIDTH = 16; private static final int DIALOG_WIDTH = 140; private static final int DIALOG_HEIGHT = 100; private UISearchTextField searchTextFiled; private JList[] contentViews; private Component[][] components; private String[] titles; private java.util.List selectionListeners = new ArrayList(); private java.util.List editListeners = new ArrayList(); private List deleteListeners = new ArrayList(); private boolean isPressOnDelete = false; // 是否点击在删除按钮上 @Override protected String title4PopupWindow() { return "group"; } public UIGroupExtensionPane(String[] titles) { this.titles = titles; if (ArrayUtils.isEmpty(titles)) { return; } initComponents(titles); } private void initComponents(String[] titles) { setBackground(null); searchTextFiled = initSearchTextField(); int count = titles.length; contentViews = new JList[count]; components = new Component[count + 1][]; double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] rowSize = new double[count + 1]; double[] columnSize = {f}; for (int i = 0; i < count + 1; i++) { rowSize[i] = p; if (i == 0) { components[i] = new Component[]{searchTextFiled}; } else if (i > 0 && i < count + 1) { JList li = new JList(new DefaultListModel()); li.addListSelectionListener(listSelectionListener); li.addMouseListener(mouseListener); li.setCellRenderer(listCellRenderer); li.setBackground(null); contentViews[i - 1] = li; components[i] = new UIExtensionPane[]{new UIExtensionPane(titles[i - 1], li, false)}; } } JPanel centerPane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 0); setLayout(new BorderLayout()); add(new UIScrollPane(centerPane), BorderLayout.CENTER); } private UISearchTextField initSearchTextField() { UISearchTextField searchTextFiled = new UISearchTextField() { public Dimension getPreferredSize() { return new Dimension(120, 22); } }; searchTextFiled.setIconPosition(SwingConstants.RIGHT); searchTextFiled.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { doFilter(); } @Override public void removeUpdate(DocumentEvent e) { doFilter(); } @Override public void changedUpdate(DocumentEvent e) { doFilter(); } }); return searchTextFiled; } /** * 返回index列表的数据 */ public Object[] getData(int index) { if (index < 0 || index > contentViews.length) { return ArrayUtils.EMPTY_OBJECT_ARRAY; } ListModel model = contentViews[index].getModel(); Object[] items = new Object[model.getSize()]; for (int i = 0, len = model.getSize(); i < len; i++) { items[i] = model.getElementAt(i); } return items; } /** * 返回对应Title的列表数组 */ public Object[] getData(String title) { int dataIndex = ArrayUtils.indexOf(titles, title); if (dataIndex != ArrayUtils.INDEX_NOT_FOUND) { return getData(dataIndex); } return ArrayUtils.EMPTY_OBJECT_ARRAY; } private void doFilter() { for (JList list : contentViews) { ListDataListener[] ls = ((DefaultListModel) list.getModel()).getListDataListeners(); for (ListDataListener l : ls) { l.contentsChanged(new ListDataEvent(l, ListDataEvent.CONTENTS_CHANGED, 0, list.getModel().getSize())); } } for (int i = 1, len = components.length; i < len; i++) { ((UIExtensionPane) components[i][0]).setExpand(true); } } /** * 获取选中的值 * * @return 选中的值 */ public Object getSelectedObject() { for (JList list : contentViews) { if (list.getSelectedValue() != null) { return list.getSelectedValue(); } } return null; } /** * 返回选中的类别 * @return 类别 */ public String getSelectedType(){ for (int i = 0, len = contentViews.length; i < len; i++) { if(contentViews[i].getSelectedValue() != null){ return titles[i]; } } return ""; } /** * 设置选中的数据 */ public void setSelectedObject(Object value) { for (int i = 0, len = contentViews.length; i < len; i++) { UIExtensionPane extensionPane = (UIExtensionPane) components[i + 1][0]; JList list = contentViews[i]; DefaultListModel model = (DefaultListModel) list.getModel(); extensionPane.setExpand(model.contains(value)); if (model.contains(value)) { list.setSelectedValue(value, true); } } } /** * 设置数据选中的序号. */ public void setValueAtCurrentSelectIndex(Object value) { for (JList list : contentViews) { if (list.getSelectedIndex() != -1) { ((DefaultListModel) list.getModel()).setElementAt(value, list.getSelectedIndex()); } } } /** * 根据索引来添加数据 * * @param data 要添加的数据 * @param index 要添加的数据向的索引 */ public void addData(Object data, int index) { addData(data, index, false); } /** * 根据索引来添加数据 * * @param data 要添加的数据 * @param index 要添加的数据向的索引 * @param checkRepeat 是否检查名字重复 */ public void addData(Object data, int index, boolean checkRepeat) { if (contentViews == null || index < 0 || index > contentViews.length - 1) { return; } JList list = contentViews[index]; DefaultListModel model = (DefaultListModel) list.getModel(); if (data instanceof String) { model.addElement(createUnrepeatedName(model, (String) data, checkRepeat)); } if (checkRepeat) { // 将添加类型以外的其他类型都收起来 for (int i = 1, len = components.length; i < len; i++) { ((UIExtensionPane) components[i][0]).setExpand(false); } ((UIExtensionPane) components[index + 1][0]).setExpand(true); int selectedIndex = list.getModel().getSize() - 1; list.setSelectedIndex(selectedIndex); dealNewAddedDataIndex(((DefaultListModel) list.getModel()).elementAt(selectedIndex)); } } /** * 新添加的数据的序号 * @param data 数据 */ protected void dealNewAddedDataIndex(Object data){ } /** * 根据标题来添加数据 * * @param data 要添加的数据 * @param title 要添加数据的项的标题文字 */ public void addData(Object data, String title) { addData(data, title, false); } /** * 根据标题来添加数据 * * @param data 要添加的数据 * @param title 要添加数据的项的标题文字 * @param checkRepeat 是否检查名字重复 */ public void addData(Object data, String title, boolean checkRepeat) { int addIndex = ArrayUtils.indexOf(titles, title); if (addIndex != ArrayUtils.INDEX_NOT_FOUND) { addData(data, addIndex, checkRepeat); } } /** * 清除所有的数据 */ public void clearData() { for (JList list : contentViews) { ((DefaultListModel) list.getModel()).clear(); } } private String createUnrepeatedName(DefaultListModel model, String name, boolean checkRepeat) { if (!checkRepeat) { return name; } int count = model.getSize(); int extra = 1; String newName = name + (count + extra); boolean hasRepeated = false; do { hasRepeated = false; newName = name + (count + extra); for (int i = 0; i < count; i++) { if (ComparatorUtils.equals(model.getElementAt(i), newName)) { hasRepeated = true; extra++; } } } while (hasRepeated); return name + (count + extra); } /** * 判断该控件是否应该有编辑操作 * * @param list 列表组件 * @return 如果有编辑操作则需要显示相应的图标 */ private boolean hasEditOperation(JList list) { return true; } private DefaultListCellRenderer listCellRenderer = new DefaultListCellRenderer() { public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { JComponent c = (JComponent) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); if (!hasEditOperation(list)) { return c; } Border border = null; c.setBorder(border); UILabel editLabel = new UILabel(UIConstants.EDIT_ICON); UILabel deleteLabel = new UILabel(UIConstants.DELETE_ICON); JPanel editPane = GUICoreUtils.createFlowPane(new Component[]{editLabel, deleteLabel}, FlowLayout.LEFT, LayoutConstants.HGAP_LARGE); editPane.setBackground(isSelected ? c.getBackground() : null); editPane.setBorder(border); JPanel renderPane = GUICoreUtils.createBorderLayoutPane(c, BorderLayout.CENTER, editPane, BorderLayout.EAST); if (shouldFilter(value)) { renderPane.setPreferredSize(new Dimension(0, 0)); } return renderPane; } }; //事件发生的顺序是ListSelection、MousePressed、ListSelection、MouseReleased private ListSelectionListener listSelectionListener = new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { //在鼠标按下的时候的值改变事件,重置属性 if(e.getValueIsAdjusting()){ isPressOnDelete = false; } if(!isRespondToValueChange(e)){ return; } fireSelectionChangeListener(new ChangeEvent(e.getSource())); if (((JList) e.getSource()).getSelectedIndex() == -1) { return; } for (JList list : contentViews) { if (list.getSelectedIndex() != -1 && !ComparatorUtils.equals(list, e.getSource())) { try { list.setSelectedIndices(null); } catch (Exception ee) { } } } } }; /** * 是否响应list值改变 * @return 响应 */ protected boolean isRespondToValueChange(ListSelectionEvent e){ return true; } private boolean shouldFilter(Object value) { return !GeneralUtils.objectToString(value).toLowerCase().contains(searchTextFiled.getText().toLowerCase()); } private MouseListener mouseListener = new MouseAdapter() { /** * {@inheritDoc} */ @Override public void mousePressed(final MouseEvent e) { isPressOnDelete = false; final JList list = (JList) e.getSource(); Point point = e.getPoint(); final int index = list.locationToIndex(point); int width = list.getWidth(); if (hasEditOperation(list)) { // 删除按钮 if (point.x > width - (BUTTONWIDTH + LayoutConstants.HGAP_LARGE)) { BasicPane bp = new BasicPane() { protected String title4PopupWindow() { return ""; } }; isPressOnDelete = true; bp.setLayout(new BorderLayout()); bp.add(new BoldFontTextLabel(Inter.getLocText(new String[]{"Delete", "Chart-Map"}) + "?", SwingConstants.CENTER)); clearLastListSelection(list); final String selectedType = UIGroupExtensionPane.this.getSelectedType(); UIDialog dialog = bp.showUnsizedWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { public void doOk() { Object name = getSelectedObject(); ((DefaultListModel) list.getModel()).removeElementAt(index); MapSvgXMLHelper.getInstance().removeMapAttr(GeneralUtils.objectToString(name)); MapSvgXMLHelper.getInstance().removeCateNames(selectedType,GeneralUtils.objectToString(name)); fireDeleteListener(new ChangeEvent(e)); } }); dialog.setResizable(true); dialog.setSize(DIALOG_WIDTH, DIALOG_HEIGHT); dialog.setResizable(false); GUICoreUtils.centerWindow(dialog); dialog.setVisible(true); } // 编辑按钮 else if (point.x > width - (BUTTONWIDTH * 2 + 2 * LayoutConstants.HGAP_LARGE) && point.x < width - (BUTTONWIDTH + LayoutConstants.HGAP_LARGE)) { fireItemEditListener(new ChangeEvent(e)); } } } public void mouseReleased(MouseEvent e) { isPressOnDelete = false; } }; /** * 直接跨list点击删除按钮,要置之前list的选中项为空(因为删除操作不触发更新) * @param currentList 当前选中的list */ public void clearLastListSelection (JList currentList) { for (JList list : contentViews) { if (list.getSelectedIndex() != -1 && !ComparatorUtils.equals(list, currentList)) { try { list.setSelectedIndices(null); } catch (Exception e) { FRLogger.getLogger().error(e.getMessage()); } } } } /** * 是否点击在删除按钮上 * @return 是则返回true */ public boolean isPressOnDelete(){ return isPressOnDelete; } /** * 添加选中变化监听事件 * @param listener 监听 */ public void addSelectionChangeListener(ChangeListener listener) { selectionListeners.add(listener); } private void fireSelectionChangeListener(ChangeEvent e) { for (int i = selectionListeners.size(); i > 0; i--) { selectionListeners.get(i - 1).fireChanged(e); } } /** * 添加Item的监听事件 * @param listener 监听器 */ public void addItemEditListener(ChangeListener listener) { editListeners.add(listener); } private void fireItemEditListener(ChangeEvent e) { for (int i = editListeners.size(); i > 0; i--) { editListeners.get(i - 1).fireChanged(e); } } /** * 添加删除事件的监听事件 * @param listener 监听 */ public void addDeleteListener(ChangeListener listener) { deleteListeners.add(listener); } private void fireDeleteListener(ChangeEvent e) { for(int i = deleteListeners.size(); i > 0; i--) { deleteListeners.get(i - 1).fireChanged(e); } } public void setEnabled(boolean isEnabled){ super.setEnabled(isEnabled); if(searchTextFiled != null){ searchTextFiled.setEnabled(isEnabled); } if(this.components != null){ for(int i = 0; i < this.components.length; i++){ Component[] comp = this.components[i]; for(int j = 0; j < comp.length; j++){ comp[j].setEnabled(isEnabled); } } } } /** * 测试程序 * @param args 参数 */ public static void main(String[] args) { JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = f.getContentPane(); c.setBackground(Color.WHITE); c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS)); final UIGroupExtensionPane g = new UIGroupExtensionPane(new String[]{"title1", "title2", "title3"}); c.add(g, BorderLayout.CENTER); JPanel pp = new JPanel(new FlowLayout()); c.add(pp, BorderLayout.SOUTH); UIButton test = new UIButton("add1"); test.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { g.addData("test111", 0); } }); pp.add(test); UIButton test2 = new UIButton("add2"); test2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { g.addData("test222", 1); } }); pp.add(test2); f.setSize(360, 500); f.setLocation(200, 100); f.setVisible(true); } } \ No newline at end of file +package com.fr.design.chart.series.PlotSeries; import com.fr.base.MapSvgXMLHelper; import com.fr.design.constants.LayoutConstants; import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.dialog.UIDialog; import com.fr.design.event.ChangeEvent; import com.fr.design.event.ChangeListener; import com.fr.design.gui.frpane.UIExtensionPane; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.BoldFontTextLabel; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UISearchTextField; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.DesignerContext; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.GeneralUtils; import com.fr.general.Inter; import com.fr.stable.ArrayUtils; import javax.swing.*; import javax.swing.border.Border; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import java.util.ArrayList; import java.util.List; /** * Created by IntelliJ IDEA. * Author : Richer * Version: 7.0.3 * Date: 12-12-29 * Time: 上午11:14 * 可收缩的面板,只有两层 */ public class UIGroupExtensionPane extends BasicPane { public static final String EDIT = "edit"; public static final String DELETE = "delete"; private static final int BUTTONWIDTH = 16; private static final int DIALOG_WIDTH = 140; private static final int DIALOG_HEIGHT = 100; private UISearchTextField searchTextFiled; private JList[] contentViews; private Component[][] components; private String[] titles; private java.util.List selectionListeners = new ArrayList(); private java.util.List editListeners = new ArrayList(); private List deleteListeners = new ArrayList(); private boolean isPressOnDelete = false; // 是否点击在删除按钮上 @Override protected String title4PopupWindow() { return "group"; } public UIGroupExtensionPane(String[] titles) { this.titles = titles; if (ArrayUtils.isEmpty(titles)) { return; } initComponents(titles); } private void initComponents(String[] titles) { setBackground(null); searchTextFiled = initSearchTextField(); int count = titles.length; contentViews = new JList[count]; components = new Component[count + 1][]; double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] rowSize = new double[count + 1]; double[] columnSize = {f}; for (int i = 0; i < count + 1; i++) { rowSize[i] = p; if (i == 0) { components[i] = new Component[]{searchTextFiled}; } else if (i > 0 && i < count + 1) { JList li = new JList(new DefaultListModel()); li.addListSelectionListener(listSelectionListener); li.addMouseListener(mouseListener); li.setCellRenderer(listCellRenderer); li.setBackground(null); contentViews[i - 1] = li; components[i] = new UIExtensionPane[]{new UIExtensionPane(titles[i - 1], li, false)}; } } JPanel centerPane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 0); setLayout(new BorderLayout()); add(new UIScrollPane(centerPane), BorderLayout.CENTER); } private UISearchTextField initSearchTextField() { UISearchTextField searchTextFiled = new UISearchTextField() { public Dimension getPreferredSize() { return new Dimension(120, 22); } }; searchTextFiled.setIconPosition(SwingConstants.RIGHT); searchTextFiled.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { doFilter(); } @Override public void removeUpdate(DocumentEvent e) { doFilter(); } @Override public void changedUpdate(DocumentEvent e) { doFilter(); } }); return searchTextFiled; } /** * 返回index列表的数据 */ public Object[] getData(int index) { if (index < 0 || index > contentViews.length) { return ArrayUtils.EMPTY_OBJECT_ARRAY; } ListModel model = contentViews[index].getModel(); Object[] items = new Object[model.getSize()]; for (int i = 0, len = model.getSize(); i < len; i++) { items[i] = model.getElementAt(i); } return items; } /** * 返回对应Title的列表数组 */ public Object[] getData(String title) { int dataIndex = ArrayUtils.indexOf(titles, title); if (dataIndex != ArrayUtils.INDEX_NOT_FOUND) { return getData(dataIndex); } return ArrayUtils.EMPTY_OBJECT_ARRAY; } private void doFilter() { for (JList list : contentViews) { ListDataListener[] ls = ((DefaultListModel) list.getModel()).getListDataListeners(); for (ListDataListener l : ls) { l.contentsChanged(new ListDataEvent(l, ListDataEvent.CONTENTS_CHANGED, 0, list.getModel().getSize())); } } for (int i = 1, len = components.length; i < len; i++) { ((UIExtensionPane) components[i][0]).setExpand(true); } } /** * 获取选中的值 * * @return 选中的值 */ public Object getSelectedObject() { for (JList list : contentViews) { if (list.getSelectedValue() != null) { return list.getSelectedValue(); } } return null; } /** * 返回选中的类别 * @return 类别 */ public String getSelectedType(){ for (int i = 0, len = contentViews.length; i < len; i++) { if(contentViews[i].getSelectedValue() != null){ return titles[i]; } } return ""; } /** * 设置选中的数据 */ public void setSelectedObject(Object value) { for (int i = 0, len = contentViews.length; i < len; i++) { UIExtensionPane extensionPane = (UIExtensionPane) components[i + 1][0]; JList list = contentViews[i]; DefaultListModel model = (DefaultListModel) list.getModel(); extensionPane.setExpand(model.contains(value)); if (model.contains(value)) { list.setSelectedValue(value, true); } } } /** * 设置数据选中的序号. */ public void setValueAtCurrentSelectIndex(Object value) { for (JList list : contentViews) { if (list.getSelectedIndex() != -1) { ((DefaultListModel) list.getModel()).setElementAt(value, list.getSelectedIndex()); } } } /** * 根据索引来添加数据 * * @param data 要添加的数据 * @param index 要添加的数据向的索引 */ public void addData(Object data, int index) { addData(data, index, false); } /** * 根据索引来添加数据 * * @param data 要添加的数据 * @param index 要添加的数据向的索引 * @param checkRepeat 是否检查名字重复 */ public void addData(Object data, int index, boolean checkRepeat) { if (contentViews == null || index < 0 || index > contentViews.length - 1) { return; } JList list = contentViews[index]; DefaultListModel model = (DefaultListModel) list.getModel(); if (data instanceof String) { model.addElement(createUnrepeatedName(model, (String) data, checkRepeat)); } if (checkRepeat) { // 将添加类型以外的其他类型都收起来 for (int i = 1, len = components.length; i < len; i++) { ((UIExtensionPane) components[i][0]).setExpand(false); } ((UIExtensionPane) components[index + 1][0]).setExpand(true); int selectedIndex = list.getModel().getSize() - 1; list.setSelectedIndex(selectedIndex); dealNewAddedDataIndex(((DefaultListModel) list.getModel()).elementAt(selectedIndex)); } } /** * 新添加的数据的序号 * @param data 数据 */ protected void dealNewAddedDataIndex(Object data){ } /** * 根据标题来添加数据 * * @param data 要添加的数据 * @param title 要添加数据的项的标题文字 */ public void addData(Object data, String title) { addData(data, title, false); } /** * 根据标题来添加数据 * * @param data 要添加的数据 * @param title 要添加数据的项的标题文字 * @param checkRepeat 是否检查名字重复 */ public void addData(Object data, String title, boolean checkRepeat) { int addIndex = ArrayUtils.indexOf(titles, title); if (addIndex != ArrayUtils.INDEX_NOT_FOUND) { addData(data, addIndex, checkRepeat); } } /** * 清除所有的数据 */ public void clearData() { for (JList list : contentViews) { ((DefaultListModel) list.getModel()).clear(); } } private String createUnrepeatedName(DefaultListModel model, String name, boolean checkRepeat) { if (!checkRepeat) { return name; } int count = model.getSize(); int extra = 1; String newName = name + (count + extra); boolean hasRepeated = false; do { hasRepeated = false; newName = name + (count + extra); for (int i = 0; i < count; i++) { if (ComparatorUtils.equals(model.getElementAt(i), newName)) { hasRepeated = true; extra++; } } } while (hasRepeated); return name + (count + extra); } /** * 判断该控件是否应该有编辑操作 * * @param list 列表组件 * @return 如果有编辑操作则需要显示相应的图标 */ private boolean hasEditOperation(JList list) { return true; } private DefaultListCellRenderer listCellRenderer = new DefaultListCellRenderer() { public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { JComponent c = (JComponent) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); if (!hasEditOperation(list)) { return c; } Border border = null; c.setBorder(border); UILabel editLabel = new UILabel(UIConstants.EDIT_ICON); UILabel deleteLabel = new UILabel(UIConstants.DELETE_ICON); JPanel editPane = GUICoreUtils.createFlowPane(new Component[]{editLabel, deleteLabel}, FlowLayout.LEFT, LayoutConstants.HGAP_LARGE); editPane.setBackground(isSelected ? c.getBackground() : null); editPane.setBorder(border); JPanel renderPane = GUICoreUtils.createBorderLayoutPane(c, BorderLayout.CENTER, editPane, BorderLayout.EAST); if (shouldFilter(value)) { renderPane.setPreferredSize(new Dimension(0, 0)); } return renderPane; } }; //事件发生的顺序是ListSelection、MousePressed、ListSelection、MouseReleased private ListSelectionListener listSelectionListener = new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { //在鼠标按下的时候的值改变事件,重置属性 if(e.getValueIsAdjusting()){ isPressOnDelete = false; } if(!isRespondToValueChange(e)){ return; } fireSelectionChangeListener(new ChangeEvent(e.getSource())); if (((JList) e.getSource()).getSelectedIndex() == -1) { return; } for (JList list : contentViews) { if (list.getSelectedIndex() != -1 && !ComparatorUtils.equals(list, e.getSource())) { try { list.setSelectedIndices(null); } catch (Exception ee) { } } } } }; /** * 是否响应list值改变 * @return 响应 */ protected boolean isRespondToValueChange(ListSelectionEvent e){ return true; } private boolean shouldFilter(Object value) { return !GeneralUtils.objectToString(value).toLowerCase().contains(searchTextFiled.getText().toLowerCase()); } private MouseListener mouseListener = new MouseAdapter() { /** * {@inheritDoc} */ @Override public void mousePressed(final MouseEvent e) { isPressOnDelete = false; final JList list = (JList) e.getSource(); Point point = e.getPoint(); final int index = list.locationToIndex(point); int width = list.getWidth(); if (hasEditOperation(list)) { // 删除按钮 if (point.x > width - (BUTTONWIDTH + LayoutConstants.HGAP_LARGE)) { BasicPane bp = new BasicPane() { protected String title4PopupWindow() { return ""; } }; isPressOnDelete = true; bp.setLayout(new BorderLayout()); bp.add(new BoldFontTextLabel(Inter.getLocText(new String[]{"Delete", "Chart-Map"}) + "?", SwingConstants.CENTER)); clearLastListSelection(list); final String selectedType = UIGroupExtensionPane.this.getSelectedType(); UIDialog dialog = bp.showUnsizedWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { public void doOk() { Object name = getSelectedObject(); ((DefaultListModel) list.getModel()).removeElementAt(index); MapSvgXMLHelper.getInstance().removeMapAttr(GeneralUtils.objectToString(name)); MapSvgXMLHelper.getInstance().removeCateNames(selectedType,GeneralUtils.objectToString(name)); fireDeleteListener(new ChangeEvent(e)); } }); dialog.setResizable(true); dialog.setSize(DIALOG_WIDTH, DIALOG_HEIGHT); dialog.setResizable(false); GUICoreUtils.centerWindow(dialog); dialog.setVisible(true); } // 编辑按钮 else if (point.x > width - (BUTTONWIDTH * 2 + 2 * LayoutConstants.HGAP_LARGE) && point.x < width - (BUTTONWIDTH + LayoutConstants.HGAP_LARGE)) { fireItemEditListener(new ChangeEvent(e)); } } } public void mouseReleased(MouseEvent e) { isPressOnDelete = false; } }; /** * 直接跨list点击删除按钮,要置之前list的选中项为空(因为删除操作不触发更新) * @param currentList 当前选中的list */ public void clearLastListSelection (JList currentList) { for (JList list : contentViews) { if (list.getSelectedIndex() != -1 && !ComparatorUtils.equals(list, currentList)) { try { list.setSelectedIndices(null); } catch (Exception e) { FRLogger.getLogger().error(e.getMessage()); } } } } /** * 是否点击在删除按钮上 * @return 是则返回true */ public boolean isPressOnDelete(){ return isPressOnDelete; } /** * 添加选中变化监听事件 * @param listener 监听 */ public void addSelectionChangeListener(ChangeListener listener) { selectionListeners.add(listener); } private void fireSelectionChangeListener(ChangeEvent e) { for (int i = selectionListeners.size(); i > 0; i--) { selectionListeners.get(i - 1).fireChanged(e); } } /** * 添加Item的监听事件 * @param listener 监听器 */ public void addItemEditListener(ChangeListener listener) { editListeners.add(listener); } private void fireItemEditListener(ChangeEvent e) { for (int i = editListeners.size(); i > 0; i--) { editListeners.get(i - 1).fireChanged(e); } } /** * 添加删除事件的监听事件 * @param listener 监听 */ public void addDeleteListener(ChangeListener listener) { deleteListeners.add(listener); } private void fireDeleteListener(ChangeEvent e) { for(int i = deleteListeners.size(); i > 0; i--) { deleteListeners.get(i - 1).fireChanged(e); } } public void setEnabled(boolean isEnabled){ super.setEnabled(isEnabled); if(searchTextFiled != null){ searchTextFiled.setEnabled(isEnabled); } if(this.components != null){ for(int i = 0; i < this.components.length; i++){ Component[] comp = this.components[i]; for(int j = 0; j < comp.length; j++){ comp[j].setEnabled(isEnabled); } } } } /** * 测试程序 * @param args 参数 */ public static void main(String[] args) { JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = f.getContentPane(); c.setBackground(Color.WHITE); c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS)); final UIGroupExtensionPane g = new UIGroupExtensionPane(new String[]{"title1", "title2", "title3"}); c.add(g, BorderLayout.CENTER); JPanel pp = new JPanel(new FlowLayout()); c.add(pp, BorderLayout.SOUTH); UIButton test = new UIButton("add1"); test.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { g.addData("test111", 0); } }); pp.add(test); UIButton test2 = new UIButton("add2"); test2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { g.addData("test222", 1); } }); pp.add(test2); f.setSize(360, 500); f.setLocation(200, 100); f.setVisible(true); } } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/MapEditPane.java b/designer_chart/src/com/fr/design/mainframe/MapEditPane.java index 4c137afb7c..2950a4d1fd 100644 --- a/designer_chart/src/com/fr/design/mainframe/MapEditPane.java +++ b/designer_chart/src/com/fr/design/mainframe/MapEditPane.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe; -import com.fr.chart.base.MapSvgAttr; -import com.fr.chart.base.MapSvgXMLHelper; +import com.fr.base.MapSvgAttr; +import com.fr.base.MapSvgXMLHelper; import com.fr.chart.chartglyph.MapShapeValue; import com.fr.design.beans.BasicBeanPane; import com.fr.design.chart.series.PlotSeries.AbstrctMapAttrEditPane; From 7963ee591353d47e4afe85551ad8d4b912870382 Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Thu, 27 Jul 2017 10:50:21 +0800 Subject: [PATCH 34/96] =?UTF-8?q?=E8=BF=98=E5=8E=9F=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/chart/report/MapCubeLayerPane.java | 4 ++-- .../src/com/fr/design/chart/report/MapCubeSetDataPane.java | 2 +- .../chart/series/PlotSeries/AbstrctMapAttrEditPane.java | 2 +- .../com/fr/design/chart/series/PlotSeries/MapCustomPane.java | 2 +- .../design/chart/series/PlotSeries/MapDefiAreaNamePane.java | 4 ++-- .../design/chart/series/PlotSeries/MapGroupExtensionPane.java | 2 +- .../fr/design/chart/series/PlotSeries/MapImageEditPane.java | 4 ++-- .../design/chart/series/PlotSeries/UIGroupExtensionPane.java | 2 +- designer_chart/src/com/fr/design/mainframe/MapEditPane.java | 4 ++-- 9 files changed, 13 insertions(+), 13 deletions(-) diff --git a/designer_chart/src/com/fr/design/chart/report/MapCubeLayerPane.java b/designer_chart/src/com/fr/design/chart/report/MapCubeLayerPane.java index 5d54f78530..461fe220a0 100644 --- a/designer_chart/src/com/fr/design/chart/report/MapCubeLayerPane.java +++ b/designer_chart/src/com/fr/design/chart/report/MapCubeLayerPane.java @@ -1,10 +1,10 @@ package com.fr.design.chart.report; -import com.fr.base.MapSvgAttr; -import com.fr.base.MapSvgXMLHelper; import com.fr.base.MapXMLHelper; import com.fr.base.Utils; import com.fr.chart.base.ChartConstants; +import com.fr.chart.base.MapSvgAttr; +import com.fr.chart.base.MapSvgXMLHelper; import com.fr.chart.chartglyph.MapAttr; import com.fr.design.DesignerEnvManager; import com.fr.design.beans.BasicBeanPane; diff --git a/designer_chart/src/com/fr/design/chart/report/MapCubeSetDataPane.java b/designer_chart/src/com/fr/design/chart/report/MapCubeSetDataPane.java index 3110e241b5..4c175500eb 100644 --- a/designer_chart/src/com/fr/design/chart/report/MapCubeSetDataPane.java +++ b/designer_chart/src/com/fr/design/chart/report/MapCubeSetDataPane.java @@ -1,7 +1,7 @@ package com.fr.design.chart.report; -import com.fr.base.MapSvgXMLHelper; import com.fr.base.MapXMLHelper; +import com.fr.chart.base.MapSvgXMLHelper; import com.fr.design.beans.BasicBeanPane; import com.fr.design.editor.ValueEditorPane; import com.fr.design.editor.ValueEditorPaneFactory; diff --git a/designer_chart/src/com/fr/design/chart/series/PlotSeries/AbstrctMapAttrEditPane.java b/designer_chart/src/com/fr/design/chart/series/PlotSeries/AbstrctMapAttrEditPane.java index 254dfaec1a..d2d61909bd 100644 --- a/designer_chart/src/com/fr/design/chart/series/PlotSeries/AbstrctMapAttrEditPane.java +++ b/designer_chart/src/com/fr/design/chart/series/PlotSeries/AbstrctMapAttrEditPane.java @@ -1,6 +1,6 @@ package com.fr.design.chart.series.PlotSeries; -import com.fr.base.MapSvgAttr; +import com.fr.chart.base.MapSvgAttr; /** * Created by IntelliJ IDEA. diff --git a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapCustomPane.java b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapCustomPane.java index 49fa97eee4..d844631c05 100644 --- a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapCustomPane.java +++ b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapCustomPane.java @@ -1,9 +1,9 @@ package com.fr.design.chart.series.PlotSeries; import com.fr.base.FRContext; -import com.fr.base.MapSvgAttr; import com.fr.base.TableData; import com.fr.base.Utils; +import com.fr.chart.base.MapSvgAttr; import com.fr.data.impl.EmbeddedTableData; import com.fr.design.beans.BasicBeanPane; import com.fr.design.data.DesignTableDataManager; diff --git a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapDefiAreaNamePane.java b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapDefiAreaNamePane.java index 0a3928ae45..ca8d3a67dd 100644 --- a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapDefiAreaNamePane.java +++ b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapDefiAreaNamePane.java @@ -1,8 +1,8 @@ package com.fr.design.chart.series.PlotSeries; -import com.fr.base.MapSvgAttr; -import com.fr.base.MapSvgXMLHelper; import com.fr.base.Utils; +import com.fr.chart.base.MapSvgAttr; +import com.fr.chart.base.MapSvgXMLHelper; import com.fr.design.beans.BasicBeanPane; import com.fr.design.data.tabledata.wrapper.TableDataWrapper; import com.fr.design.editor.ValueEditorPane; diff --git a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java index 74a8e687f5..36b0ec8477 100644 --- a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java +++ b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java @@ -1 +1 @@ -package com.fr.design.chart.series.PlotSeries; import com.fr.base.*; import com.fr.chart.chartattr.MapPlot; import com.fr.chart.chartglyph.MapShapeValue; import com.fr.design.DesignerEnvManager; import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.event.ChangeEvent; import com.fr.design.event.ChangeListener; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.stable.CoreConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.SvgProvider; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.geom.RoundRectangle2D; import java.util.ArrayList; /** * Created by IntelliJ IDEA. * Author : Richer * Version: 7.0.3 * Date: 12-12-29 * Time: 下午2:41 */ public class MapGroupExtensionPane extends BasicPane implements UIObserver { private static final String[] TYPE_NAMES = new String[]{ Inter.getLocText("FR-Chart-World_Map"), Inter.getLocText("FR-Chart-State_Map"), Inter.getLocText("FR-Chart-Province_Map"), Inter.getLocText("FR-Chart-Custom_Map")}; private static final int WORD = 0; private static final int NATION = 1; private static final int STATE = 2; private static final int USER = 3; private static final int OFFSET_X = 800; private static final int OFFSET_Y = 200; private UIGroupExtensionPane groupExtensionPane; private UIButton addButton; private JPopupMenu popupMenu; private ArrayList changeListeners = new ArrayList(); private boolean hasPopulated = false; @Override protected String title4PopupWindow() { return "Map"; } public MapGroupExtensionPane() { setLayout(new BorderLayout()); groupExtensionPane = new UIGroupExtensionPane(TYPE_NAMES){ /** * 新添加的数据的序号 * @param data 数据 */ protected void dealNewAddedDataIndex(Object data){ String newName = (String)data; MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance(); if(helper.getNewMapAttr(newName) != null){ return; } MapSvgAttr attr = new MapSvgAttr(); attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + newName + ".svg"); helper.addNewSvgMaps(attr.getName(), attr); } /** * 一次鼠标的点击会有两次事件响应(按下和释放)。前者的事件属性中getValueIsAdjusting()=true,后者是false。 * 是否响应list值改变 * @return 鼠标按下时不响应,先响应mousePress事件,在鼠标释放是再响应list值改编的事件,并且点击删除不触发更新,并且populate后触发更新 */ protected boolean isRespondToValueChange(ListSelectionEvent e){ return !e.getValueIsAdjusting() && !this.isPressOnDelete() && hasPopulated; } }; groupExtensionPane.addSelectionChangeListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { fireStateChange(); } }); groupExtensionPane.addItemEditListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { doEdit(event); } }); groupExtensionPane.addDeleteListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { //这么写有点问题 String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); saveMapInfo(oldName); } }); setPreferredSize(new Dimension(400, 210)); add(groupExtensionPane, BorderLayout.CENTER); addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")) { @Override protected void paintBorder(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setStroke(UIConstants.BS); Shape shape = new RoundRectangle2D.Float(0.5f, 0.5f, getWidth() - 1, getHeight() - 1, UIConstants.ARC, UIConstants.ARC); g2d.setColor(UIConstants.LINE_COLOR); g2d.draw(shape); } }; addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { popupMenu.show(MapGroupExtensionPane.this, addButton.getX() + 1, addButton.getY() + addButton.getHeight()); } }); add(addButton, BorderLayout.SOUTH); initPopupMenu(); } private void initPopupMenu() { popupMenu = new JPopupMenu() { @Override public Dimension getPreferredSize() { Dimension dimension = new Dimension(); dimension.height = super.getPreferredSize().height; dimension.width = addButton.getWidth() - 2; return dimension; } }; JMenuItem worldMap = new JMenuItem(TYPE_NAMES[WORD]); popupMenu.add(worldMap); worldMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[WORD], TYPE_NAMES[WORD], true); } }); JMenuItem countMap = new JMenuItem(TYPE_NAMES[NATION]); popupMenu.add(countMap); countMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[NATION], TYPE_NAMES[NATION], true); } }); JMenuItem proMap = new JMenuItem(TYPE_NAMES[STATE]); popupMenu.add(proMap); proMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[STATE], TYPE_NAMES[STATE], true); } }); JMenuItem menu = new JMenuItem(TYPE_NAMES[USER]); popupMenu.add(menu); menu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[USER], TYPE_NAMES[USER], true); } }); } private void doEdit(ChangeEvent e) { MouseEvent event = (MouseEvent) e.getSource(); JPopupMenu editPopMenu = new JPopupMenu(); final String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); editPopMenu.add(createAreaItem(oldName)); editPopMenu.add(createMarkerItem(oldName)); editPopMenu.add(createLayerItem(oldName)); editPopMenu.add(createRenameItem()); editPopMenu.show(MapGroupExtensionPane.this, event.getXOnScreen() - OFFSET_X, event.getYOnScreen() - OFFSET_Y); } private void mapCheckBeforeEdit(String name){ if(MapSvgXMLHelper.getInstance().containsMapName(name) || MapSvgXMLHelper.getInstance().getNewMapAttr(name)!=null){ return; } MapSvgAttr attr = new MapSvgAttr(); attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + name + ".svg"); MapSvgXMLHelper.getInstance().addNewSvgMaps(name,attr); } private JMenuItem createAreaItem(final String oldName) { JMenuItem editFileItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Filed"})); editFileItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapCustomPane image = new MapCustomPane(); image.setImageSelectType(MapShapeValue.AREA); image.populateBean(oldName); image.setTypeNameAndMapName(groupExtensionPane.getSelectedType(), Utils.objectToString(groupExtensionPane.getSelectedObject())); mapCheckBeforeEdit(oldName); final Image oldImage = getMapImage(oldName); BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(MapGroupExtensionPane.this), new DialogActionAdapter() { public void doOk() { image.updateBean(); // 比较两个前后的名字是否相同, 是图片 如果图片不同, 则直接比较 Image newImage = getMapImage(oldName); if(!ComparatorUtils.equals(oldImage, newImage)) { fireStateChange(); } //versionID递增 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); refresh(); } }); dialog.setVisible(true); } }); return editFileItem; } //根据地图的名字返回地图的图片 private Image getMapImage(String mapName) { if (MapSvgXMLHelper.getInstance().containsMapName(mapName)) { MapSvgAttr mapAttr = MapSvgXMLHelper.getInstance().getMapAttr(mapName); if(mapAttr == null) { return null; } return mapAttr.getMapImage(); } return null; } private JMenuItem createMarkerItem(final String oldName) { JMenuItem editMarkerItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Marker"})); editMarkerItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapCustomPane image = new MapCustomPane(); image.setImageSelectType(MapShapeValue.POINT); image.populateBean(oldName); mapCheckBeforeEdit(oldName); final Image oldImage = getMapImage(oldName); BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(image), new DialogActionAdapter() { public void doOk() { image.updateBean(); Image newImage = getMapImage(oldName); if(!ComparatorUtils.equals(oldImage, newImage)) { fireStateChange(); } //versionID递增 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); refresh(); } }); dialog.setVisible(true); } }); return editMarkerItem; } private JMenuItem createLayerItem(final String oldName) { JMenuItem corrItem = new JMenuItem(Inter.getLocText(new String[]{"Filed", "Corresponding_Fields"})); corrItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapDefiAreaNamePane namedPane = new MapDefiAreaNamePane(); namedPane.populateBean(oldName); mapCheckBeforeEdit(oldName); BasicDialog dialog = namedPane.showMediumWindow(SwingUtilities.getWindowAncestor(namedPane), new DialogActionAdapter() { public void doOk() { namedPane.updateBean();// 地图的名称 value对应情况 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); } }); dialog.setVisible(true); refresh(); } }); return corrItem; } private void showRenameWaring(String newName){ JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), "\"" + newName + "\"" + Inter.getLocText("Utils-has_been_existed") + "!", Inter.getLocText("FR-Designer_Alert"), JOptionPane.WARNING_MESSAGE); } private JMenuItem createRenameItem() { JMenuItem renameItem = new JMenuItem(Inter.getLocText("FR-Chart-Map_Rename")); renameItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String newName = JOptionPane.showInputDialog(DesignerContext.getDesignerFrame().getContentPane(), Inter.getLocText("FR-Chart-Map_Rename"), groupExtensionPane.getSelectedObject()); if (StringUtils.isNotBlank(newName)) { String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); if(ComparatorUtils.equals(oldName, newName)){ return; } //本地在看看临时的helper里面有没有 if(MapSvgXMLHelper.getInstance().getNewMapAttr(newName) != null){ showRenameWaring(newName); return; } try{//提醒名字已存在 if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),newName+SvgProvider.EXTENSION}))){ showRenameWaring(newName); return; } if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( new String[]{MapSvgXMLHelper.relativeCustomMapPath(), newName + SvgProvider.EXTENSION}))){ showRenameWaring(newName); return; } MapSvgAttr editingAttr = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(editingAttr == null){ editingAttr = MapSvgXMLHelper.getInstance().getNewMapAttr(oldName); } if( editingAttr == null) { return; } editingAttr.renameMap(newName); groupExtensionPane.setValueAtCurrentSelectIndex(newName); fireStateChange(); saveMapInfo(newName); FRContext.getCurrentEnv().deleteFile( StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),oldName+SvgProvider.EXTENSION})); FRContext.getCurrentEnv().deleteFile( StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeCustomMapPath(),oldName+SvgProvider.EXTENSION})); refresh(); }catch (Exception exp){ FRLogger.getLogger().error(exp.getMessage()); } } } }); return renameItem; } private void refresh() { this.validate(); this.repaint(); DesignerFrame frame = DesignerContext.getDesignerFrame(); if(frame != null) { frame.repaint();//kunsnat: 图表属性没变, 只是读取时 内容变化. } } //保存修改过的地图信息 private void saveMapInfo(final String mapName) { SwingWorker worker = new SwingWorker() { @Override protected Integer doInBackground() throws Exception { MapSvgAttr attr = MapSvgXMLHelper.getInstance().getMapAttr(mapName);// 只有在编辑地图时才需要储存相关数据 @kuns if(attr != null){ attr.writeBack(mapName); } return 0; } @Override protected void done() { FRLogger.getLogger().info(Inter.getLocText("FR-Chart-Map_Saved")); // 地图已经保存. } }; worker.execute(); DesignerEnvManager.addWorkers(worker); } private void fireStateChange() { for (int i = changeListeners.size(); i > 0; i--) { changeListeners.get(i - 1).stateChanged(new javax.swing.event.ChangeEvent(this)); } } /** * 更新地图属性 * @return 返回地图名称. */ public String updateBean(MapPlot plot) { if(!hasPopulated){ this.populateBean(plot); hasPopulated = true; } MapHelper helper = plot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); helper.clearCateNames(); for (String type : TYPE_NAMES) { Object[] datas = groupExtensionPane.getData(type); for (Object name : datas) { helper.addCateNames(type, name); } } return Utils.objectToString(groupExtensionPane.getSelectedObject()); } /** * 更新地图名称 * @param mapPlot 地图 */ public void populateBean(MapPlot mapPlot) { hasPopulated = false; groupExtensionPane.clearData(); for (String type : TYPE_NAMES) { MapHelper helper = mapPlot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); java.util.List list = helper.getNamesListWithCateName(type); for (Object name : list) { groupExtensionPane.addData(name, type); } } groupExtensionPane.setSelectedObject(mapPlot.getMapName()); hasPopulated = true; } /** * 给组件登记一个观察者监听事件 * * @param listener 观察者监听事件 */ public void registerChangeListener(final UIObserverListener listener) { changeListeners.add(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { listener.doChange(); } }); } /** * 组件是否需要响应添加的观察者事件 * * @return 如果需要响应观察者事件则返回true,否则返回false */ public boolean shouldResponseChangeListener() { return true; } public void setEnabled(boolean isEnabled){ super.setEnabled(isEnabled); addButton.setEnabled(isEnabled); popupMenu.setEnabled(isEnabled); groupExtensionPane.setEnabled(isEnabled); } } \ No newline at end of file +package com.fr.design.chart.series.PlotSeries; import com.fr.base.*; import com.fr.chart.base.MapSvgAttr; import com.fr.chart.base.MapSvgXMLHelper; import com.fr.chart.chartattr.MapPlot; import com.fr.chart.chartglyph.MapShapeValue; import com.fr.design.DesignerEnvManager; import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.event.ChangeEvent; import com.fr.design.event.ChangeListener; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.stable.CoreConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.SvgProvider; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.geom.RoundRectangle2D; import java.util.ArrayList; /** * Created by IntelliJ IDEA. * Author : Richer * Version: 7.0.3 * Date: 12-12-29 * Time: 下午2:41 */ public class MapGroupExtensionPane extends BasicPane implements UIObserver { private static final String[] TYPE_NAMES = new String[]{ Inter.getLocText("FR-Chart-World_Map"), Inter.getLocText("FR-Chart-State_Map"), Inter.getLocText("FR-Chart-Province_Map"), Inter.getLocText("FR-Chart-Custom_Map")}; private static final int WORD = 0; private static final int NATION = 1; private static final int STATE = 2; private static final int USER = 3; private static final int OFFSET_X = 800; private static final int OFFSET_Y = 200; private UIGroupExtensionPane groupExtensionPane; private UIButton addButton; private JPopupMenu popupMenu; private ArrayList changeListeners = new ArrayList(); private boolean hasPopulated = false; @Override protected String title4PopupWindow() { return "Map"; } public MapGroupExtensionPane() { setLayout(new BorderLayout()); groupExtensionPane = new UIGroupExtensionPane(TYPE_NAMES){ /** * 新添加的数据的序号 * @param data 数据 */ protected void dealNewAddedDataIndex(Object data){ String newName = (String)data; MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance(); if(helper.getNewMapAttr(newName) != null){ return; } MapSvgAttr attr = new MapSvgAttr(); attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + newName + ".svg"); helper.addNewSvgMaps(attr.getName(), attr); } /** * 一次鼠标的点击会有两次事件响应(按下和释放)。前者的事件属性中getValueIsAdjusting()=true,后者是false。 * 是否响应list值改变 * @return 鼠标按下时不响应,先响应mousePress事件,在鼠标释放是再响应list值改编的事件,并且点击删除不触发更新,并且populate后触发更新 */ protected boolean isRespondToValueChange(ListSelectionEvent e){ return !e.getValueIsAdjusting() && !this.isPressOnDelete() && hasPopulated; } }; groupExtensionPane.addSelectionChangeListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { fireStateChange(); } }); groupExtensionPane.addItemEditListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { doEdit(event); } }); groupExtensionPane.addDeleteListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { //这么写有点问题 String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); saveMapInfo(oldName); } }); setPreferredSize(new Dimension(400, 210)); add(groupExtensionPane, BorderLayout.CENTER); addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")) { @Override protected void paintBorder(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setStroke(UIConstants.BS); Shape shape = new RoundRectangle2D.Float(0.5f, 0.5f, getWidth() - 1, getHeight() - 1, UIConstants.ARC, UIConstants.ARC); g2d.setColor(UIConstants.LINE_COLOR); g2d.draw(shape); } }; addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { popupMenu.show(MapGroupExtensionPane.this, addButton.getX() + 1, addButton.getY() + addButton.getHeight()); } }); add(addButton, BorderLayout.SOUTH); initPopupMenu(); } private void initPopupMenu() { popupMenu = new JPopupMenu() { @Override public Dimension getPreferredSize() { Dimension dimension = new Dimension(); dimension.height = super.getPreferredSize().height; dimension.width = addButton.getWidth() - 2; return dimension; } }; JMenuItem worldMap = new JMenuItem(TYPE_NAMES[WORD]); popupMenu.add(worldMap); worldMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[WORD], TYPE_NAMES[WORD], true); } }); JMenuItem countMap = new JMenuItem(TYPE_NAMES[NATION]); popupMenu.add(countMap); countMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[NATION], TYPE_NAMES[NATION], true); } }); JMenuItem proMap = new JMenuItem(TYPE_NAMES[STATE]); popupMenu.add(proMap); proMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[STATE], TYPE_NAMES[STATE], true); } }); JMenuItem menu = new JMenuItem(TYPE_NAMES[USER]); popupMenu.add(menu); menu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[USER], TYPE_NAMES[USER], true); } }); } private void doEdit(ChangeEvent e) { MouseEvent event = (MouseEvent) e.getSource(); JPopupMenu editPopMenu = new JPopupMenu(); final String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); editPopMenu.add(createAreaItem(oldName)); editPopMenu.add(createMarkerItem(oldName)); editPopMenu.add(createLayerItem(oldName)); editPopMenu.add(createRenameItem()); editPopMenu.show(MapGroupExtensionPane.this, event.getXOnScreen() - OFFSET_X, event.getYOnScreen() - OFFSET_Y); } private void mapCheckBeforeEdit(String name){ if(MapSvgXMLHelper.getInstance().containsMapName(name) || MapSvgXMLHelper.getInstance().getNewMapAttr(name)!=null){ return; } MapSvgAttr attr = new MapSvgAttr(); attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + name + ".svg"); MapSvgXMLHelper.getInstance().addNewSvgMaps(name,attr); } private JMenuItem createAreaItem(final String oldName) { JMenuItem editFileItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Filed"})); editFileItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapCustomPane image = new MapCustomPane(); image.setImageSelectType(MapShapeValue.AREA); image.populateBean(oldName); image.setTypeNameAndMapName(groupExtensionPane.getSelectedType(), Utils.objectToString(groupExtensionPane.getSelectedObject())); mapCheckBeforeEdit(oldName); final Image oldImage = getMapImage(oldName); BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(MapGroupExtensionPane.this), new DialogActionAdapter() { public void doOk() { image.updateBean(); // 比较两个前后的名字是否相同, 是图片 如果图片不同, 则直接比较 Image newImage = getMapImage(oldName); if(!ComparatorUtils.equals(oldImage, newImage)) { fireStateChange(); } //versionID递增 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); refresh(); } }); dialog.setVisible(true); } }); return editFileItem; } //根据地图的名字返回地图的图片 private Image getMapImage(String mapName) { if (MapSvgXMLHelper.getInstance().containsMapName(mapName)) { MapSvgAttr mapAttr = MapSvgXMLHelper.getInstance().getMapAttr(mapName); if(mapAttr == null) { return null; } return mapAttr.getMapImage(); } return null; } private JMenuItem createMarkerItem(final String oldName) { JMenuItem editMarkerItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Marker"})); editMarkerItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapCustomPane image = new MapCustomPane(); image.setImageSelectType(MapShapeValue.POINT); image.populateBean(oldName); mapCheckBeforeEdit(oldName); final Image oldImage = getMapImage(oldName); BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(image), new DialogActionAdapter() { public void doOk() { image.updateBean(); Image newImage = getMapImage(oldName); if(!ComparatorUtils.equals(oldImage, newImage)) { fireStateChange(); } //versionID递增 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); refresh(); } }); dialog.setVisible(true); } }); return editMarkerItem; } private JMenuItem createLayerItem(final String oldName) { JMenuItem corrItem = new JMenuItem(Inter.getLocText(new String[]{"Filed", "Corresponding_Fields"})); corrItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapDefiAreaNamePane namedPane = new MapDefiAreaNamePane(); namedPane.populateBean(oldName); mapCheckBeforeEdit(oldName); BasicDialog dialog = namedPane.showMediumWindow(SwingUtilities.getWindowAncestor(namedPane), new DialogActionAdapter() { public void doOk() { namedPane.updateBean();// 地图的名称 value对应情况 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); } }); dialog.setVisible(true); refresh(); } }); return corrItem; } private void showRenameWaring(String newName){ JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), "\"" + newName + "\"" + Inter.getLocText("Utils-has_been_existed") + "!", Inter.getLocText("FR-Designer_Alert"), JOptionPane.WARNING_MESSAGE); } private JMenuItem createRenameItem() { JMenuItem renameItem = new JMenuItem(Inter.getLocText("FR-Chart-Map_Rename")); renameItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String newName = JOptionPane.showInputDialog(DesignerContext.getDesignerFrame().getContentPane(), Inter.getLocText("FR-Chart-Map_Rename"), groupExtensionPane.getSelectedObject()); if (StringUtils.isNotBlank(newName)) { String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); if(ComparatorUtils.equals(oldName, newName)){ return; } //本地在看看临时的helper里面有没有 if(MapSvgXMLHelper.getInstance().getNewMapAttr(newName) != null){ showRenameWaring(newName); return; } try{//提醒名字已存在 if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),newName+SvgProvider.EXTENSION}))){ showRenameWaring(newName); return; } if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( new String[]{MapSvgXMLHelper.relativeCustomMapPath(), newName + SvgProvider.EXTENSION}))){ showRenameWaring(newName); return; } MapSvgAttr editingAttr = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(editingAttr == null){ editingAttr = MapSvgXMLHelper.getInstance().getNewMapAttr(oldName); } if( editingAttr == null) { return; } editingAttr.renameMap(newName); groupExtensionPane.setValueAtCurrentSelectIndex(newName); fireStateChange(); saveMapInfo(newName); FRContext.getCurrentEnv().deleteFile( StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),oldName+SvgProvider.EXTENSION})); FRContext.getCurrentEnv().deleteFile( StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeCustomMapPath(),oldName+SvgProvider.EXTENSION})); refresh(); }catch (Exception exp){ FRLogger.getLogger().error(exp.getMessage()); } } } }); return renameItem; } private void refresh() { this.validate(); this.repaint(); DesignerFrame frame = DesignerContext.getDesignerFrame(); if(frame != null) { frame.repaint();//kunsnat: 图表属性没变, 只是读取时 内容变化. } } //保存修改过的地图信息 private void saveMapInfo(final String mapName) { SwingWorker worker = new SwingWorker() { @Override protected Integer doInBackground() throws Exception { MapSvgAttr attr = MapSvgXMLHelper.getInstance().getMapAttr(mapName);// 只有在编辑地图时才需要储存相关数据 @kuns if(attr != null){ attr.writeBack(mapName); } return 0; } @Override protected void done() { FRLogger.getLogger().info(Inter.getLocText("FR-Chart-Map_Saved")); // 地图已经保存. } }; worker.execute(); DesignerEnvManager.addWorkers(worker); } private void fireStateChange() { for (int i = changeListeners.size(); i > 0; i--) { changeListeners.get(i - 1).stateChanged(new javax.swing.event.ChangeEvent(this)); } } /** * 更新地图属性 * @return 返回地图名称. */ public String updateBean(MapPlot plot) { if(!hasPopulated){ this.populateBean(plot); hasPopulated = true; } MapHelper helper = plot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); helper.clearCateNames(); for (String type : TYPE_NAMES) { Object[] datas = groupExtensionPane.getData(type); for (Object name : datas) { helper.addCateNames(type, name); } } return Utils.objectToString(groupExtensionPane.getSelectedObject()); } /** * 更新地图名称 * @param mapPlot 地图 */ public void populateBean(MapPlot mapPlot) { hasPopulated = false; groupExtensionPane.clearData(); for (String type : TYPE_NAMES) { MapHelper helper = mapPlot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); java.util.List list = helper.getNamesListWithCateName(type); for (Object name : list) { groupExtensionPane.addData(name, type); } } groupExtensionPane.setSelectedObject(mapPlot.getMapName()); hasPopulated = true; } /** * 给组件登记一个观察者监听事件 * * @param listener 观察者监听事件 */ public void registerChangeListener(final UIObserverListener listener) { changeListeners.add(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { listener.doChange(); } }); } /** * 组件是否需要响应添加的观察者事件 * * @return 如果需要响应观察者事件则返回true,否则返回false */ public boolean shouldResponseChangeListener() { return true; } public void setEnabled(boolean isEnabled){ super.setEnabled(isEnabled); addButton.setEnabled(isEnabled); popupMenu.setEnabled(isEnabled); groupExtensionPane.setEnabled(isEnabled); } } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapImageEditPane.java b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapImageEditPane.java index 4aff10c379..55a3e079ee 100644 --- a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapImageEditPane.java +++ b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapImageEditPane.java @@ -1,9 +1,9 @@ package com.fr.design.chart.series.PlotSeries; import com.fr.base.BaseUtils; -import com.fr.base.MapSvgAttr; -import com.fr.base.MapSvgXMLHelper; import com.fr.base.Utils; +import com.fr.chart.base.MapSvgAttr; +import com.fr.chart.base.MapSvgXMLHelper; import com.fr.chart.chartglyph.MapShapeValue; import com.fr.design.beans.BasicBeanPane; import com.fr.design.dialog.DialogActionAdapter; diff --git a/designer_chart/src/com/fr/design/chart/series/PlotSeries/UIGroupExtensionPane.java b/designer_chart/src/com/fr/design/chart/series/PlotSeries/UIGroupExtensionPane.java index 1e26f37b01..2ad670341c 100644 --- a/designer_chart/src/com/fr/design/chart/series/PlotSeries/UIGroupExtensionPane.java +++ b/designer_chart/src/com/fr/design/chart/series/PlotSeries/UIGroupExtensionPane.java @@ -1 +1 @@ -package com.fr.design.chart.series.PlotSeries; import com.fr.base.MapSvgXMLHelper; import com.fr.design.constants.LayoutConstants; import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.dialog.UIDialog; import com.fr.design.event.ChangeEvent; import com.fr.design.event.ChangeListener; import com.fr.design.gui.frpane.UIExtensionPane; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.BoldFontTextLabel; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UISearchTextField; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.DesignerContext; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.GeneralUtils; import com.fr.general.Inter; import com.fr.stable.ArrayUtils; import javax.swing.*; import javax.swing.border.Border; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import java.util.ArrayList; import java.util.List; /** * Created by IntelliJ IDEA. * Author : Richer * Version: 7.0.3 * Date: 12-12-29 * Time: 上午11:14 * 可收缩的面板,只有两层 */ public class UIGroupExtensionPane extends BasicPane { public static final String EDIT = "edit"; public static final String DELETE = "delete"; private static final int BUTTONWIDTH = 16; private static final int DIALOG_WIDTH = 140; private static final int DIALOG_HEIGHT = 100; private UISearchTextField searchTextFiled; private JList[] contentViews; private Component[][] components; private String[] titles; private java.util.List selectionListeners = new ArrayList(); private java.util.List editListeners = new ArrayList(); private List deleteListeners = new ArrayList(); private boolean isPressOnDelete = false; // 是否点击在删除按钮上 @Override protected String title4PopupWindow() { return "group"; } public UIGroupExtensionPane(String[] titles) { this.titles = titles; if (ArrayUtils.isEmpty(titles)) { return; } initComponents(titles); } private void initComponents(String[] titles) { setBackground(null); searchTextFiled = initSearchTextField(); int count = titles.length; contentViews = new JList[count]; components = new Component[count + 1][]; double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] rowSize = new double[count + 1]; double[] columnSize = {f}; for (int i = 0; i < count + 1; i++) { rowSize[i] = p; if (i == 0) { components[i] = new Component[]{searchTextFiled}; } else if (i > 0 && i < count + 1) { JList li = new JList(new DefaultListModel()); li.addListSelectionListener(listSelectionListener); li.addMouseListener(mouseListener); li.setCellRenderer(listCellRenderer); li.setBackground(null); contentViews[i - 1] = li; components[i] = new UIExtensionPane[]{new UIExtensionPane(titles[i - 1], li, false)}; } } JPanel centerPane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 0); setLayout(new BorderLayout()); add(new UIScrollPane(centerPane), BorderLayout.CENTER); } private UISearchTextField initSearchTextField() { UISearchTextField searchTextFiled = new UISearchTextField() { public Dimension getPreferredSize() { return new Dimension(120, 22); } }; searchTextFiled.setIconPosition(SwingConstants.RIGHT); searchTextFiled.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { doFilter(); } @Override public void removeUpdate(DocumentEvent e) { doFilter(); } @Override public void changedUpdate(DocumentEvent e) { doFilter(); } }); return searchTextFiled; } /** * 返回index列表的数据 */ public Object[] getData(int index) { if (index < 0 || index > contentViews.length) { return ArrayUtils.EMPTY_OBJECT_ARRAY; } ListModel model = contentViews[index].getModel(); Object[] items = new Object[model.getSize()]; for (int i = 0, len = model.getSize(); i < len; i++) { items[i] = model.getElementAt(i); } return items; } /** * 返回对应Title的列表数组 */ public Object[] getData(String title) { int dataIndex = ArrayUtils.indexOf(titles, title); if (dataIndex != ArrayUtils.INDEX_NOT_FOUND) { return getData(dataIndex); } return ArrayUtils.EMPTY_OBJECT_ARRAY; } private void doFilter() { for (JList list : contentViews) { ListDataListener[] ls = ((DefaultListModel) list.getModel()).getListDataListeners(); for (ListDataListener l : ls) { l.contentsChanged(new ListDataEvent(l, ListDataEvent.CONTENTS_CHANGED, 0, list.getModel().getSize())); } } for (int i = 1, len = components.length; i < len; i++) { ((UIExtensionPane) components[i][0]).setExpand(true); } } /** * 获取选中的值 * * @return 选中的值 */ public Object getSelectedObject() { for (JList list : contentViews) { if (list.getSelectedValue() != null) { return list.getSelectedValue(); } } return null; } /** * 返回选中的类别 * @return 类别 */ public String getSelectedType(){ for (int i = 0, len = contentViews.length; i < len; i++) { if(contentViews[i].getSelectedValue() != null){ return titles[i]; } } return ""; } /** * 设置选中的数据 */ public void setSelectedObject(Object value) { for (int i = 0, len = contentViews.length; i < len; i++) { UIExtensionPane extensionPane = (UIExtensionPane) components[i + 1][0]; JList list = contentViews[i]; DefaultListModel model = (DefaultListModel) list.getModel(); extensionPane.setExpand(model.contains(value)); if (model.contains(value)) { list.setSelectedValue(value, true); } } } /** * 设置数据选中的序号. */ public void setValueAtCurrentSelectIndex(Object value) { for (JList list : contentViews) { if (list.getSelectedIndex() != -1) { ((DefaultListModel) list.getModel()).setElementAt(value, list.getSelectedIndex()); } } } /** * 根据索引来添加数据 * * @param data 要添加的数据 * @param index 要添加的数据向的索引 */ public void addData(Object data, int index) { addData(data, index, false); } /** * 根据索引来添加数据 * * @param data 要添加的数据 * @param index 要添加的数据向的索引 * @param checkRepeat 是否检查名字重复 */ public void addData(Object data, int index, boolean checkRepeat) { if (contentViews == null || index < 0 || index > contentViews.length - 1) { return; } JList list = contentViews[index]; DefaultListModel model = (DefaultListModel) list.getModel(); if (data instanceof String) { model.addElement(createUnrepeatedName(model, (String) data, checkRepeat)); } if (checkRepeat) { // 将添加类型以外的其他类型都收起来 for (int i = 1, len = components.length; i < len; i++) { ((UIExtensionPane) components[i][0]).setExpand(false); } ((UIExtensionPane) components[index + 1][0]).setExpand(true); int selectedIndex = list.getModel().getSize() - 1; list.setSelectedIndex(selectedIndex); dealNewAddedDataIndex(((DefaultListModel) list.getModel()).elementAt(selectedIndex)); } } /** * 新添加的数据的序号 * @param data 数据 */ protected void dealNewAddedDataIndex(Object data){ } /** * 根据标题来添加数据 * * @param data 要添加的数据 * @param title 要添加数据的项的标题文字 */ public void addData(Object data, String title) { addData(data, title, false); } /** * 根据标题来添加数据 * * @param data 要添加的数据 * @param title 要添加数据的项的标题文字 * @param checkRepeat 是否检查名字重复 */ public void addData(Object data, String title, boolean checkRepeat) { int addIndex = ArrayUtils.indexOf(titles, title); if (addIndex != ArrayUtils.INDEX_NOT_FOUND) { addData(data, addIndex, checkRepeat); } } /** * 清除所有的数据 */ public void clearData() { for (JList list : contentViews) { ((DefaultListModel) list.getModel()).clear(); } } private String createUnrepeatedName(DefaultListModel model, String name, boolean checkRepeat) { if (!checkRepeat) { return name; } int count = model.getSize(); int extra = 1; String newName = name + (count + extra); boolean hasRepeated = false; do { hasRepeated = false; newName = name + (count + extra); for (int i = 0; i < count; i++) { if (ComparatorUtils.equals(model.getElementAt(i), newName)) { hasRepeated = true; extra++; } } } while (hasRepeated); return name + (count + extra); } /** * 判断该控件是否应该有编辑操作 * * @param list 列表组件 * @return 如果有编辑操作则需要显示相应的图标 */ private boolean hasEditOperation(JList list) { return true; } private DefaultListCellRenderer listCellRenderer = new DefaultListCellRenderer() { public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { JComponent c = (JComponent) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); if (!hasEditOperation(list)) { return c; } Border border = null; c.setBorder(border); UILabel editLabel = new UILabel(UIConstants.EDIT_ICON); UILabel deleteLabel = new UILabel(UIConstants.DELETE_ICON); JPanel editPane = GUICoreUtils.createFlowPane(new Component[]{editLabel, deleteLabel}, FlowLayout.LEFT, LayoutConstants.HGAP_LARGE); editPane.setBackground(isSelected ? c.getBackground() : null); editPane.setBorder(border); JPanel renderPane = GUICoreUtils.createBorderLayoutPane(c, BorderLayout.CENTER, editPane, BorderLayout.EAST); if (shouldFilter(value)) { renderPane.setPreferredSize(new Dimension(0, 0)); } return renderPane; } }; //事件发生的顺序是ListSelection、MousePressed、ListSelection、MouseReleased private ListSelectionListener listSelectionListener = new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { //在鼠标按下的时候的值改变事件,重置属性 if(e.getValueIsAdjusting()){ isPressOnDelete = false; } if(!isRespondToValueChange(e)){ return; } fireSelectionChangeListener(new ChangeEvent(e.getSource())); if (((JList) e.getSource()).getSelectedIndex() == -1) { return; } for (JList list : contentViews) { if (list.getSelectedIndex() != -1 && !ComparatorUtils.equals(list, e.getSource())) { try { list.setSelectedIndices(null); } catch (Exception ee) { } } } } }; /** * 是否响应list值改变 * @return 响应 */ protected boolean isRespondToValueChange(ListSelectionEvent e){ return true; } private boolean shouldFilter(Object value) { return !GeneralUtils.objectToString(value).toLowerCase().contains(searchTextFiled.getText().toLowerCase()); } private MouseListener mouseListener = new MouseAdapter() { /** * {@inheritDoc} */ @Override public void mousePressed(final MouseEvent e) { isPressOnDelete = false; final JList list = (JList) e.getSource(); Point point = e.getPoint(); final int index = list.locationToIndex(point); int width = list.getWidth(); if (hasEditOperation(list)) { // 删除按钮 if (point.x > width - (BUTTONWIDTH + LayoutConstants.HGAP_LARGE)) { BasicPane bp = new BasicPane() { protected String title4PopupWindow() { return ""; } }; isPressOnDelete = true; bp.setLayout(new BorderLayout()); bp.add(new BoldFontTextLabel(Inter.getLocText(new String[]{"Delete", "Chart-Map"}) + "?", SwingConstants.CENTER)); clearLastListSelection(list); final String selectedType = UIGroupExtensionPane.this.getSelectedType(); UIDialog dialog = bp.showUnsizedWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { public void doOk() { Object name = getSelectedObject(); ((DefaultListModel) list.getModel()).removeElementAt(index); MapSvgXMLHelper.getInstance().removeMapAttr(GeneralUtils.objectToString(name)); MapSvgXMLHelper.getInstance().removeCateNames(selectedType,GeneralUtils.objectToString(name)); fireDeleteListener(new ChangeEvent(e)); } }); dialog.setResizable(true); dialog.setSize(DIALOG_WIDTH, DIALOG_HEIGHT); dialog.setResizable(false); GUICoreUtils.centerWindow(dialog); dialog.setVisible(true); } // 编辑按钮 else if (point.x > width - (BUTTONWIDTH * 2 + 2 * LayoutConstants.HGAP_LARGE) && point.x < width - (BUTTONWIDTH + LayoutConstants.HGAP_LARGE)) { fireItemEditListener(new ChangeEvent(e)); } } } public void mouseReleased(MouseEvent e) { isPressOnDelete = false; } }; /** * 直接跨list点击删除按钮,要置之前list的选中项为空(因为删除操作不触发更新) * @param currentList 当前选中的list */ public void clearLastListSelection (JList currentList) { for (JList list : contentViews) { if (list.getSelectedIndex() != -1 && !ComparatorUtils.equals(list, currentList)) { try { list.setSelectedIndices(null); } catch (Exception e) { FRLogger.getLogger().error(e.getMessage()); } } } } /** * 是否点击在删除按钮上 * @return 是则返回true */ public boolean isPressOnDelete(){ return isPressOnDelete; } /** * 添加选中变化监听事件 * @param listener 监听 */ public void addSelectionChangeListener(ChangeListener listener) { selectionListeners.add(listener); } private void fireSelectionChangeListener(ChangeEvent e) { for (int i = selectionListeners.size(); i > 0; i--) { selectionListeners.get(i - 1).fireChanged(e); } } /** * 添加Item的监听事件 * @param listener 监听器 */ public void addItemEditListener(ChangeListener listener) { editListeners.add(listener); } private void fireItemEditListener(ChangeEvent e) { for (int i = editListeners.size(); i > 0; i--) { editListeners.get(i - 1).fireChanged(e); } } /** * 添加删除事件的监听事件 * @param listener 监听 */ public void addDeleteListener(ChangeListener listener) { deleteListeners.add(listener); } private void fireDeleteListener(ChangeEvent e) { for(int i = deleteListeners.size(); i > 0; i--) { deleteListeners.get(i - 1).fireChanged(e); } } public void setEnabled(boolean isEnabled){ super.setEnabled(isEnabled); if(searchTextFiled != null){ searchTextFiled.setEnabled(isEnabled); } if(this.components != null){ for(int i = 0; i < this.components.length; i++){ Component[] comp = this.components[i]; for(int j = 0; j < comp.length; j++){ comp[j].setEnabled(isEnabled); } } } } /** * 测试程序 * @param args 参数 */ public static void main(String[] args) { JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = f.getContentPane(); c.setBackground(Color.WHITE); c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS)); final UIGroupExtensionPane g = new UIGroupExtensionPane(new String[]{"title1", "title2", "title3"}); c.add(g, BorderLayout.CENTER); JPanel pp = new JPanel(new FlowLayout()); c.add(pp, BorderLayout.SOUTH); UIButton test = new UIButton("add1"); test.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { g.addData("test111", 0); } }); pp.add(test); UIButton test2 = new UIButton("add2"); test2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { g.addData("test222", 1); } }); pp.add(test2); f.setSize(360, 500); f.setLocation(200, 100); f.setVisible(true); } } \ No newline at end of file +package com.fr.design.chart.series.PlotSeries; import com.fr.chart.base.MapSvgXMLHelper; import com.fr.design.constants.LayoutConstants; import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.dialog.UIDialog; import com.fr.design.event.ChangeEvent; import com.fr.design.event.ChangeListener; import com.fr.design.gui.frpane.UIExtensionPane; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.BoldFontTextLabel; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UISearchTextField; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.DesignerContext; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.GeneralUtils; import com.fr.general.Inter; import com.fr.stable.ArrayUtils; import javax.swing.*; import javax.swing.border.Border; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import java.util.ArrayList; import java.util.List; /** * Created by IntelliJ IDEA. * Author : Richer * Version: 7.0.3 * Date: 12-12-29 * Time: 上午11:14 * 可收缩的面板,只有两层 */ public class UIGroupExtensionPane extends BasicPane { public static final String EDIT = "edit"; public static final String DELETE = "delete"; private static final int BUTTONWIDTH = 16; private static final int DIALOG_WIDTH = 140; private static final int DIALOG_HEIGHT = 100; private UISearchTextField searchTextFiled; private JList[] contentViews; private Component[][] components; private String[] titles; private java.util.List selectionListeners = new ArrayList(); private java.util.List editListeners = new ArrayList(); private List deleteListeners = new ArrayList(); private boolean isPressOnDelete = false; // 是否点击在删除按钮上 @Override protected String title4PopupWindow() { return "group"; } public UIGroupExtensionPane(String[] titles) { this.titles = titles; if (ArrayUtils.isEmpty(titles)) { return; } initComponents(titles); } private void initComponents(String[] titles) { setBackground(null); searchTextFiled = initSearchTextField(); int count = titles.length; contentViews = new JList[count]; components = new Component[count + 1][]; double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] rowSize = new double[count + 1]; double[] columnSize = {f}; for (int i = 0; i < count + 1; i++) { rowSize[i] = p; if (i == 0) { components[i] = new Component[]{searchTextFiled}; } else if (i > 0 && i < count + 1) { JList li = new JList(new DefaultListModel()); li.addListSelectionListener(listSelectionListener); li.addMouseListener(mouseListener); li.setCellRenderer(listCellRenderer); li.setBackground(null); contentViews[i - 1] = li; components[i] = new UIExtensionPane[]{new UIExtensionPane(titles[i - 1], li, false)}; } } JPanel centerPane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 0); setLayout(new BorderLayout()); add(new UIScrollPane(centerPane), BorderLayout.CENTER); } private UISearchTextField initSearchTextField() { UISearchTextField searchTextFiled = new UISearchTextField() { public Dimension getPreferredSize() { return new Dimension(120, 22); } }; searchTextFiled.setIconPosition(SwingConstants.RIGHT); searchTextFiled.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { doFilter(); } @Override public void removeUpdate(DocumentEvent e) { doFilter(); } @Override public void changedUpdate(DocumentEvent e) { doFilter(); } }); return searchTextFiled; } /** * 返回index列表的数据 */ public Object[] getData(int index) { if (index < 0 || index > contentViews.length) { return ArrayUtils.EMPTY_OBJECT_ARRAY; } ListModel model = contentViews[index].getModel(); Object[] items = new Object[model.getSize()]; for (int i = 0, len = model.getSize(); i < len; i++) { items[i] = model.getElementAt(i); } return items; } /** * 返回对应Title的列表数组 */ public Object[] getData(String title) { int dataIndex = ArrayUtils.indexOf(titles, title); if (dataIndex != ArrayUtils.INDEX_NOT_FOUND) { return getData(dataIndex); } return ArrayUtils.EMPTY_OBJECT_ARRAY; } private void doFilter() { for (JList list : contentViews) { ListDataListener[] ls = ((DefaultListModel) list.getModel()).getListDataListeners(); for (ListDataListener l : ls) { l.contentsChanged(new ListDataEvent(l, ListDataEvent.CONTENTS_CHANGED, 0, list.getModel().getSize())); } } for (int i = 1, len = components.length; i < len; i++) { ((UIExtensionPane) components[i][0]).setExpand(true); } } /** * 获取选中的值 * * @return 选中的值 */ public Object getSelectedObject() { for (JList list : contentViews) { if (list.getSelectedValue() != null) { return list.getSelectedValue(); } } return null; } /** * 返回选中的类别 * @return 类别 */ public String getSelectedType(){ for (int i = 0, len = contentViews.length; i < len; i++) { if(contentViews[i].getSelectedValue() != null){ return titles[i]; } } return ""; } /** * 设置选中的数据 */ public void setSelectedObject(Object value) { for (int i = 0, len = contentViews.length; i < len; i++) { UIExtensionPane extensionPane = (UIExtensionPane) components[i + 1][0]; JList list = contentViews[i]; DefaultListModel model = (DefaultListModel) list.getModel(); extensionPane.setExpand(model.contains(value)); if (model.contains(value)) { list.setSelectedValue(value, true); } } } /** * 设置数据选中的序号. */ public void setValueAtCurrentSelectIndex(Object value) { for (JList list : contentViews) { if (list.getSelectedIndex() != -1) { ((DefaultListModel) list.getModel()).setElementAt(value, list.getSelectedIndex()); } } } /** * 根据索引来添加数据 * * @param data 要添加的数据 * @param index 要添加的数据向的索引 */ public void addData(Object data, int index) { addData(data, index, false); } /** * 根据索引来添加数据 * * @param data 要添加的数据 * @param index 要添加的数据向的索引 * @param checkRepeat 是否检查名字重复 */ public void addData(Object data, int index, boolean checkRepeat) { if (contentViews == null || index < 0 || index > contentViews.length - 1) { return; } JList list = contentViews[index]; DefaultListModel model = (DefaultListModel) list.getModel(); if (data instanceof String) { model.addElement(createUnrepeatedName(model, (String) data, checkRepeat)); } if (checkRepeat) { // 将添加类型以外的其他类型都收起来 for (int i = 1, len = components.length; i < len; i++) { ((UIExtensionPane) components[i][0]).setExpand(false); } ((UIExtensionPane) components[index + 1][0]).setExpand(true); int selectedIndex = list.getModel().getSize() - 1; list.setSelectedIndex(selectedIndex); dealNewAddedDataIndex(((DefaultListModel) list.getModel()).elementAt(selectedIndex)); } } /** * 新添加的数据的序号 * @param data 数据 */ protected void dealNewAddedDataIndex(Object data){ } /** * 根据标题来添加数据 * * @param data 要添加的数据 * @param title 要添加数据的项的标题文字 */ public void addData(Object data, String title) { addData(data, title, false); } /** * 根据标题来添加数据 * * @param data 要添加的数据 * @param title 要添加数据的项的标题文字 * @param checkRepeat 是否检查名字重复 */ public void addData(Object data, String title, boolean checkRepeat) { int addIndex = ArrayUtils.indexOf(titles, title); if (addIndex != ArrayUtils.INDEX_NOT_FOUND) { addData(data, addIndex, checkRepeat); } } /** * 清除所有的数据 */ public void clearData() { for (JList list : contentViews) { ((DefaultListModel) list.getModel()).clear(); } } private String createUnrepeatedName(DefaultListModel model, String name, boolean checkRepeat) { if (!checkRepeat) { return name; } int count = model.getSize(); int extra = 1; String newName = name + (count + extra); boolean hasRepeated = false; do { hasRepeated = false; newName = name + (count + extra); for (int i = 0; i < count; i++) { if (ComparatorUtils.equals(model.getElementAt(i), newName)) { hasRepeated = true; extra++; } } } while (hasRepeated); return name + (count + extra); } /** * 判断该控件是否应该有编辑操作 * * @param list 列表组件 * @return 如果有编辑操作则需要显示相应的图标 */ private boolean hasEditOperation(JList list) { return true; } private DefaultListCellRenderer listCellRenderer = new DefaultListCellRenderer() { public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { JComponent c = (JComponent) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); if (!hasEditOperation(list)) { return c; } Border border = null; c.setBorder(border); UILabel editLabel = new UILabel(UIConstants.EDIT_ICON); UILabel deleteLabel = new UILabel(UIConstants.DELETE_ICON); JPanel editPane = GUICoreUtils.createFlowPane(new Component[]{editLabel, deleteLabel}, FlowLayout.LEFT, LayoutConstants.HGAP_LARGE); editPane.setBackground(isSelected ? c.getBackground() : null); editPane.setBorder(border); JPanel renderPane = GUICoreUtils.createBorderLayoutPane(c, BorderLayout.CENTER, editPane, BorderLayout.EAST); if (shouldFilter(value)) { renderPane.setPreferredSize(new Dimension(0, 0)); } return renderPane; } }; //事件发生的顺序是ListSelection、MousePressed、ListSelection、MouseReleased private ListSelectionListener listSelectionListener = new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { //在鼠标按下的时候的值改变事件,重置属性 if(e.getValueIsAdjusting()){ isPressOnDelete = false; } if(!isRespondToValueChange(e)){ return; } fireSelectionChangeListener(new ChangeEvent(e.getSource())); if (((JList) e.getSource()).getSelectedIndex() == -1) { return; } for (JList list : contentViews) { if (list.getSelectedIndex() != -1 && !ComparatorUtils.equals(list, e.getSource())) { try { list.setSelectedIndices(null); } catch (Exception ee) { } } } } }; /** * 是否响应list值改变 * @return 响应 */ protected boolean isRespondToValueChange(ListSelectionEvent e){ return true; } private boolean shouldFilter(Object value) { return !GeneralUtils.objectToString(value).toLowerCase().contains(searchTextFiled.getText().toLowerCase()); } private MouseListener mouseListener = new MouseAdapter() { /** * {@inheritDoc} */ @Override public void mousePressed(final MouseEvent e) { isPressOnDelete = false; final JList list = (JList) e.getSource(); Point point = e.getPoint(); final int index = list.locationToIndex(point); int width = list.getWidth(); if (hasEditOperation(list)) { // 删除按钮 if (point.x > width - (BUTTONWIDTH + LayoutConstants.HGAP_LARGE)) { BasicPane bp = new BasicPane() { protected String title4PopupWindow() { return ""; } }; isPressOnDelete = true; bp.setLayout(new BorderLayout()); bp.add(new BoldFontTextLabel(Inter.getLocText(new String[]{"Delete", "Chart-Map"}) + "?", SwingConstants.CENTER)); clearLastListSelection(list); final String selectedType = UIGroupExtensionPane.this.getSelectedType(); UIDialog dialog = bp.showUnsizedWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { public void doOk() { Object name = getSelectedObject(); ((DefaultListModel) list.getModel()).removeElementAt(index); MapSvgXMLHelper.getInstance().removeMapAttr(GeneralUtils.objectToString(name)); MapSvgXMLHelper.getInstance().removeCateNames(selectedType,GeneralUtils.objectToString(name)); fireDeleteListener(new ChangeEvent(e)); } }); dialog.setResizable(true); dialog.setSize(DIALOG_WIDTH, DIALOG_HEIGHT); dialog.setResizable(false); GUICoreUtils.centerWindow(dialog); dialog.setVisible(true); } // 编辑按钮 else if (point.x > width - (BUTTONWIDTH * 2 + 2 * LayoutConstants.HGAP_LARGE) && point.x < width - (BUTTONWIDTH + LayoutConstants.HGAP_LARGE)) { fireItemEditListener(new ChangeEvent(e)); } } } public void mouseReleased(MouseEvent e) { isPressOnDelete = false; } }; /** * 直接跨list点击删除按钮,要置之前list的选中项为空(因为删除操作不触发更新) * @param currentList 当前选中的list */ public void clearLastListSelection (JList currentList) { for (JList list : contentViews) { if (list.getSelectedIndex() != -1 && !ComparatorUtils.equals(list, currentList)) { try { list.setSelectedIndices(null); } catch (Exception e) { FRLogger.getLogger().error(e.getMessage()); } } } } /** * 是否点击在删除按钮上 * @return 是则返回true */ public boolean isPressOnDelete(){ return isPressOnDelete; } /** * 添加选中变化监听事件 * @param listener 监听 */ public void addSelectionChangeListener(ChangeListener listener) { selectionListeners.add(listener); } private void fireSelectionChangeListener(ChangeEvent e) { for (int i = selectionListeners.size(); i > 0; i--) { selectionListeners.get(i - 1).fireChanged(e); } } /** * 添加Item的监听事件 * @param listener 监听器 */ public void addItemEditListener(ChangeListener listener) { editListeners.add(listener); } private void fireItemEditListener(ChangeEvent e) { for (int i = editListeners.size(); i > 0; i--) { editListeners.get(i - 1).fireChanged(e); } } /** * 添加删除事件的监听事件 * @param listener 监听 */ public void addDeleteListener(ChangeListener listener) { deleteListeners.add(listener); } private void fireDeleteListener(ChangeEvent e) { for(int i = deleteListeners.size(); i > 0; i--) { deleteListeners.get(i - 1).fireChanged(e); } } public void setEnabled(boolean isEnabled){ super.setEnabled(isEnabled); if(searchTextFiled != null){ searchTextFiled.setEnabled(isEnabled); } if(this.components != null){ for(int i = 0; i < this.components.length; i++){ Component[] comp = this.components[i]; for(int j = 0; j < comp.length; j++){ comp[j].setEnabled(isEnabled); } } } } /** * 测试程序 * @param args 参数 */ public static void main(String[] args) { JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = f.getContentPane(); c.setBackground(Color.WHITE); c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS)); final UIGroupExtensionPane g = new UIGroupExtensionPane(new String[]{"title1", "title2", "title3"}); c.add(g, BorderLayout.CENTER); JPanel pp = new JPanel(new FlowLayout()); c.add(pp, BorderLayout.SOUTH); UIButton test = new UIButton("add1"); test.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { g.addData("test111", 0); } }); pp.add(test); UIButton test2 = new UIButton("add2"); test2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { g.addData("test222", 1); } }); pp.add(test2); f.setSize(360, 500); f.setLocation(200, 100); f.setVisible(true); } } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/MapEditPane.java b/designer_chart/src/com/fr/design/mainframe/MapEditPane.java index 2950a4d1fd..4c137afb7c 100644 --- a/designer_chart/src/com/fr/design/mainframe/MapEditPane.java +++ b/designer_chart/src/com/fr/design/mainframe/MapEditPane.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe; -import com.fr.base.MapSvgAttr; -import com.fr.base.MapSvgXMLHelper; +import com.fr.chart.base.MapSvgAttr; +import com.fr.chart.base.MapSvgXMLHelper; import com.fr.chart.chartglyph.MapShapeValue; import com.fr.design.beans.BasicBeanPane; import com.fr.design.chart.series.PlotSeries.AbstrctMapAttrEditPane; From 3afae533473b7c75d72913d02cbe12dc1b9f556f Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Thu, 27 Jul 2017 11:57:19 +0800 Subject: [PATCH 35/96] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=8B=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=BF=94=E5=9B=9E=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/chart/gui/type/AbstractChartTypePane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java index 0afd0cd60c..299d878d03 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java @@ -133,7 +133,7 @@ public abstract class AbstractChartTypePane extends FurtherBasicBeanPane{ } //子类覆盖 - protected Plot getSelectedClonedPlot(){ + protected T getSelectedClonedPlot(){ return null; } From 65762d17f7e06eff0bcc4243c4dbd81ab3ff3260 Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Thu, 27 Jul 2017 14:26:06 +0800 Subject: [PATCH 36/96] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8D=A2=E8=A1=8C?= =?UTF-8?q?=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PlotSeries/MapGroupExtensionPane.java | 485 +++++++++++++++++- 1 file changed, 484 insertions(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java index 36b0ec8477..a1207717bf 100644 --- a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java +++ b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java @@ -1 +1,484 @@ -package com.fr.design.chart.series.PlotSeries; import com.fr.base.*; import com.fr.chart.base.MapSvgAttr; import com.fr.chart.base.MapSvgXMLHelper; import com.fr.chart.chartattr.MapPlot; import com.fr.chart.chartglyph.MapShapeValue; import com.fr.design.DesignerEnvManager; import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.event.ChangeEvent; import com.fr.design.event.ChangeListener; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.stable.CoreConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.SvgProvider; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.geom.RoundRectangle2D; import java.util.ArrayList; /** * Created by IntelliJ IDEA. * Author : Richer * Version: 7.0.3 * Date: 12-12-29 * Time: 下午2:41 */ public class MapGroupExtensionPane extends BasicPane implements UIObserver { private static final String[] TYPE_NAMES = new String[]{ Inter.getLocText("FR-Chart-World_Map"), Inter.getLocText("FR-Chart-State_Map"), Inter.getLocText("FR-Chart-Province_Map"), Inter.getLocText("FR-Chart-Custom_Map")}; private static final int WORD = 0; private static final int NATION = 1; private static final int STATE = 2; private static final int USER = 3; private static final int OFFSET_X = 800; private static final int OFFSET_Y = 200; private UIGroupExtensionPane groupExtensionPane; private UIButton addButton; private JPopupMenu popupMenu; private ArrayList changeListeners = new ArrayList(); private boolean hasPopulated = false; @Override protected String title4PopupWindow() { return "Map"; } public MapGroupExtensionPane() { setLayout(new BorderLayout()); groupExtensionPane = new UIGroupExtensionPane(TYPE_NAMES){ /** * 新添加的数据的序号 * @param data 数据 */ protected void dealNewAddedDataIndex(Object data){ String newName = (String)data; MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance(); if(helper.getNewMapAttr(newName) != null){ return; } MapSvgAttr attr = new MapSvgAttr(); attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + newName + ".svg"); helper.addNewSvgMaps(attr.getName(), attr); } /** * 一次鼠标的点击会有两次事件响应(按下和释放)。前者的事件属性中getValueIsAdjusting()=true,后者是false。 * 是否响应list值改变 * @return 鼠标按下时不响应,先响应mousePress事件,在鼠标释放是再响应list值改编的事件,并且点击删除不触发更新,并且populate后触发更新 */ protected boolean isRespondToValueChange(ListSelectionEvent e){ return !e.getValueIsAdjusting() && !this.isPressOnDelete() && hasPopulated; } }; groupExtensionPane.addSelectionChangeListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { fireStateChange(); } }); groupExtensionPane.addItemEditListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { doEdit(event); } }); groupExtensionPane.addDeleteListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { //这么写有点问题 String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); saveMapInfo(oldName); } }); setPreferredSize(new Dimension(400, 210)); add(groupExtensionPane, BorderLayout.CENTER); addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")) { @Override protected void paintBorder(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setStroke(UIConstants.BS); Shape shape = new RoundRectangle2D.Float(0.5f, 0.5f, getWidth() - 1, getHeight() - 1, UIConstants.ARC, UIConstants.ARC); g2d.setColor(UIConstants.LINE_COLOR); g2d.draw(shape); } }; addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { popupMenu.show(MapGroupExtensionPane.this, addButton.getX() + 1, addButton.getY() + addButton.getHeight()); } }); add(addButton, BorderLayout.SOUTH); initPopupMenu(); } private void initPopupMenu() { popupMenu = new JPopupMenu() { @Override public Dimension getPreferredSize() { Dimension dimension = new Dimension(); dimension.height = super.getPreferredSize().height; dimension.width = addButton.getWidth() - 2; return dimension; } }; JMenuItem worldMap = new JMenuItem(TYPE_NAMES[WORD]); popupMenu.add(worldMap); worldMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[WORD], TYPE_NAMES[WORD], true); } }); JMenuItem countMap = new JMenuItem(TYPE_NAMES[NATION]); popupMenu.add(countMap); countMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[NATION], TYPE_NAMES[NATION], true); } }); JMenuItem proMap = new JMenuItem(TYPE_NAMES[STATE]); popupMenu.add(proMap); proMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[STATE], TYPE_NAMES[STATE], true); } }); JMenuItem menu = new JMenuItem(TYPE_NAMES[USER]); popupMenu.add(menu); menu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[USER], TYPE_NAMES[USER], true); } }); } private void doEdit(ChangeEvent e) { MouseEvent event = (MouseEvent) e.getSource(); JPopupMenu editPopMenu = new JPopupMenu(); final String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); editPopMenu.add(createAreaItem(oldName)); editPopMenu.add(createMarkerItem(oldName)); editPopMenu.add(createLayerItem(oldName)); editPopMenu.add(createRenameItem()); editPopMenu.show(MapGroupExtensionPane.this, event.getXOnScreen() - OFFSET_X, event.getYOnScreen() - OFFSET_Y); } private void mapCheckBeforeEdit(String name){ if(MapSvgXMLHelper.getInstance().containsMapName(name) || MapSvgXMLHelper.getInstance().getNewMapAttr(name)!=null){ return; } MapSvgAttr attr = new MapSvgAttr(); attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + name + ".svg"); MapSvgXMLHelper.getInstance().addNewSvgMaps(name,attr); } private JMenuItem createAreaItem(final String oldName) { JMenuItem editFileItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Filed"})); editFileItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapCustomPane image = new MapCustomPane(); image.setImageSelectType(MapShapeValue.AREA); image.populateBean(oldName); image.setTypeNameAndMapName(groupExtensionPane.getSelectedType(), Utils.objectToString(groupExtensionPane.getSelectedObject())); mapCheckBeforeEdit(oldName); final Image oldImage = getMapImage(oldName); BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(MapGroupExtensionPane.this), new DialogActionAdapter() { public void doOk() { image.updateBean(); // 比较两个前后的名字是否相同, 是图片 如果图片不同, 则直接比较 Image newImage = getMapImage(oldName); if(!ComparatorUtils.equals(oldImage, newImage)) { fireStateChange(); } //versionID递增 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); refresh(); } }); dialog.setVisible(true); } }); return editFileItem; } //根据地图的名字返回地图的图片 private Image getMapImage(String mapName) { if (MapSvgXMLHelper.getInstance().containsMapName(mapName)) { MapSvgAttr mapAttr = MapSvgXMLHelper.getInstance().getMapAttr(mapName); if(mapAttr == null) { return null; } return mapAttr.getMapImage(); } return null; } private JMenuItem createMarkerItem(final String oldName) { JMenuItem editMarkerItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Marker"})); editMarkerItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapCustomPane image = new MapCustomPane(); image.setImageSelectType(MapShapeValue.POINT); image.populateBean(oldName); mapCheckBeforeEdit(oldName); final Image oldImage = getMapImage(oldName); BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(image), new DialogActionAdapter() { public void doOk() { image.updateBean(); Image newImage = getMapImage(oldName); if(!ComparatorUtils.equals(oldImage, newImage)) { fireStateChange(); } //versionID递增 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); refresh(); } }); dialog.setVisible(true); } }); return editMarkerItem; } private JMenuItem createLayerItem(final String oldName) { JMenuItem corrItem = new JMenuItem(Inter.getLocText(new String[]{"Filed", "Corresponding_Fields"})); corrItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapDefiAreaNamePane namedPane = new MapDefiAreaNamePane(); namedPane.populateBean(oldName); mapCheckBeforeEdit(oldName); BasicDialog dialog = namedPane.showMediumWindow(SwingUtilities.getWindowAncestor(namedPane), new DialogActionAdapter() { public void doOk() { namedPane.updateBean();// 地图的名称 value对应情况 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); } }); dialog.setVisible(true); refresh(); } }); return corrItem; } private void showRenameWaring(String newName){ JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), "\"" + newName + "\"" + Inter.getLocText("Utils-has_been_existed") + "!", Inter.getLocText("FR-Designer_Alert"), JOptionPane.WARNING_MESSAGE); } private JMenuItem createRenameItem() { JMenuItem renameItem = new JMenuItem(Inter.getLocText("FR-Chart-Map_Rename")); renameItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String newName = JOptionPane.showInputDialog(DesignerContext.getDesignerFrame().getContentPane(), Inter.getLocText("FR-Chart-Map_Rename"), groupExtensionPane.getSelectedObject()); if (StringUtils.isNotBlank(newName)) { String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); if(ComparatorUtils.equals(oldName, newName)){ return; } //本地在看看临时的helper里面有没有 if(MapSvgXMLHelper.getInstance().getNewMapAttr(newName) != null){ showRenameWaring(newName); return; } try{//提醒名字已存在 if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),newName+SvgProvider.EXTENSION}))){ showRenameWaring(newName); return; } if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( new String[]{MapSvgXMLHelper.relativeCustomMapPath(), newName + SvgProvider.EXTENSION}))){ showRenameWaring(newName); return; } MapSvgAttr editingAttr = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(editingAttr == null){ editingAttr = MapSvgXMLHelper.getInstance().getNewMapAttr(oldName); } if( editingAttr == null) { return; } editingAttr.renameMap(newName); groupExtensionPane.setValueAtCurrentSelectIndex(newName); fireStateChange(); saveMapInfo(newName); FRContext.getCurrentEnv().deleteFile( StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),oldName+SvgProvider.EXTENSION})); FRContext.getCurrentEnv().deleteFile( StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeCustomMapPath(),oldName+SvgProvider.EXTENSION})); refresh(); }catch (Exception exp){ FRLogger.getLogger().error(exp.getMessage()); } } } }); return renameItem; } private void refresh() { this.validate(); this.repaint(); DesignerFrame frame = DesignerContext.getDesignerFrame(); if(frame != null) { frame.repaint();//kunsnat: 图表属性没变, 只是读取时 内容变化. } } //保存修改过的地图信息 private void saveMapInfo(final String mapName) { SwingWorker worker = new SwingWorker() { @Override protected Integer doInBackground() throws Exception { MapSvgAttr attr = MapSvgXMLHelper.getInstance().getMapAttr(mapName);// 只有在编辑地图时才需要储存相关数据 @kuns if(attr != null){ attr.writeBack(mapName); } return 0; } @Override protected void done() { FRLogger.getLogger().info(Inter.getLocText("FR-Chart-Map_Saved")); // 地图已经保存. } }; worker.execute(); DesignerEnvManager.addWorkers(worker); } private void fireStateChange() { for (int i = changeListeners.size(); i > 0; i--) { changeListeners.get(i - 1).stateChanged(new javax.swing.event.ChangeEvent(this)); } } /** * 更新地图属性 * @return 返回地图名称. */ public String updateBean(MapPlot plot) { if(!hasPopulated){ this.populateBean(plot); hasPopulated = true; } MapHelper helper = plot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); helper.clearCateNames(); for (String type : TYPE_NAMES) { Object[] datas = groupExtensionPane.getData(type); for (Object name : datas) { helper.addCateNames(type, name); } } return Utils.objectToString(groupExtensionPane.getSelectedObject()); } /** * 更新地图名称 * @param mapPlot 地图 */ public void populateBean(MapPlot mapPlot) { hasPopulated = false; groupExtensionPane.clearData(); for (String type : TYPE_NAMES) { MapHelper helper = mapPlot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); java.util.List list = helper.getNamesListWithCateName(type); for (Object name : list) { groupExtensionPane.addData(name, type); } } groupExtensionPane.setSelectedObject(mapPlot.getMapName()); hasPopulated = true; } /** * 给组件登记一个观察者监听事件 * * @param listener 观察者监听事件 */ public void registerChangeListener(final UIObserverListener listener) { changeListeners.add(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { listener.doChange(); } }); } /** * 组件是否需要响应添加的观察者事件 * * @return 如果需要响应观察者事件则返回true,否则返回false */ public boolean shouldResponseChangeListener() { return true; } public void setEnabled(boolean isEnabled){ super.setEnabled(isEnabled); addButton.setEnabled(isEnabled); popupMenu.setEnabled(isEnabled); groupExtensionPane.setEnabled(isEnabled); } } \ No newline at end of file +package com.fr.design.chart.series.PlotSeries; + +import com.fr.base.*; +import com.fr.chart.base.MapSvgAttr; +import com.fr.chart.base.MapSvgXMLHelper; +import com.fr.chart.chartattr.MapPlot; +import com.fr.chart.chartglyph.MapShapeValue; +import com.fr.design.DesignerEnvManager; +import com.fr.design.constants.UIConstants; +import com.fr.design.dialog.BasicDialog; +import com.fr.design.dialog.BasicPane; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.event.ChangeEvent; +import com.fr.design.event.ChangeListener; +import com.fr.design.event.UIObserver; +import com.fr.design.event.UIObserverListener; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.DesignerFrame; +import com.fr.general.ComparatorUtils; +import com.fr.general.FRLogger; +import com.fr.general.Inter; +import com.fr.stable.CoreConstants; +import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; +import com.fr.stable.SvgProvider; + +import javax.swing.*; +import javax.swing.event.ListSelectionEvent; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.geom.RoundRectangle2D; +import java.util.ArrayList; + +/** + * Created by IntelliJ IDEA. + * Author : Richer + * Version: 7.0.3 + * Date: 12-12-29 + * Time: 下午2:41 + */ +public class MapGroupExtensionPane extends BasicPane implements UIObserver { + private static final String[] TYPE_NAMES = new String[]{ + Inter.getLocText("FR-Chart-World_Map"), + Inter.getLocText("FR-Chart-State_Map"), + Inter.getLocText("FR-Chart-Province_Map"), + Inter.getLocText("FR-Chart-Custom_Map")}; + private static final int WORD = 0; + private static final int NATION = 1; + private static final int STATE = 2; + private static final int USER = 3; + private static final int OFFSET_X = 800; + private static final int OFFSET_Y = 200; + + private UIGroupExtensionPane groupExtensionPane; + private UIButton addButton; + private JPopupMenu popupMenu; + private ArrayList changeListeners = new ArrayList(); + private boolean hasPopulated = false; + + @Override + protected String title4PopupWindow() { + return "Map"; + } + + public MapGroupExtensionPane() { + setLayout(new BorderLayout()); + groupExtensionPane = new UIGroupExtensionPane(TYPE_NAMES){ + + /** + * 新添加的数据的序号 + * @param data 数据 + */ + protected void dealNewAddedDataIndex(Object data){ + String newName = (String)data; + MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance(); + if(helper.getNewMapAttr(newName) != null){ + return; + } + MapSvgAttr attr = new MapSvgAttr(); + attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + newName + ".svg"); + helper.addNewSvgMaps(attr.getName(), attr); + } + + + /** + * 一次鼠标的点击会有两次事件响应(按下和释放)。前者的事件属性中getValueIsAdjusting()=true,后者是false。 + * 是否响应list值改变 + * @return 鼠标按下时不响应,先响应mousePress事件,在鼠标释放是再响应list值改编的事件,并且点击删除不触发更新,并且populate后触发更新 + */ + protected boolean isRespondToValueChange(ListSelectionEvent e){ + return !e.getValueIsAdjusting() && !this.isPressOnDelete() && hasPopulated; + } + }; + groupExtensionPane.addSelectionChangeListener(new ChangeListener() { + @Override + public void fireChanged(ChangeEvent event) { + fireStateChange(); + } + }); + groupExtensionPane.addItemEditListener(new ChangeListener() { + @Override + public void fireChanged(ChangeEvent event) { + doEdit(event); + } + }); + groupExtensionPane.addDeleteListener(new ChangeListener() { + @Override + public void fireChanged(ChangeEvent event) { + //这么写有点问题 + String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); + saveMapInfo(oldName); + } + }); + setPreferredSize(new Dimension(400, 210)); + add(groupExtensionPane, BorderLayout.CENTER); + + addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")) { + @Override + protected void paintBorder(Graphics g) { + Graphics2D g2d = (Graphics2D) g; + g2d.setStroke(UIConstants.BS); + Shape shape = new RoundRectangle2D.Float(0.5f, 0.5f, getWidth() - 1, getHeight() - 1, UIConstants.ARC, UIConstants.ARC); + g2d.setColor(UIConstants.LINE_COLOR); + g2d.draw(shape); + } + }; + addButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + popupMenu.show(MapGroupExtensionPane.this, addButton.getX() + 1, addButton.getY() + addButton.getHeight()); + } + }); + add(addButton, BorderLayout.SOUTH); + initPopupMenu(); + } + + private void initPopupMenu() { + popupMenu = new JPopupMenu() { + @Override + public Dimension getPreferredSize() { + Dimension dimension = new Dimension(); + dimension.height = super.getPreferredSize().height; + dimension.width = addButton.getWidth() - 2; + return dimension; + } + }; + JMenuItem worldMap = new JMenuItem(TYPE_NAMES[WORD]); + popupMenu.add(worldMap); + worldMap.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + groupExtensionPane.addData(TYPE_NAMES[WORD], TYPE_NAMES[WORD], true); + } + }); + + JMenuItem countMap = new JMenuItem(TYPE_NAMES[NATION]); + popupMenu.add(countMap); + countMap.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + groupExtensionPane.addData(TYPE_NAMES[NATION], + TYPE_NAMES[NATION], true); + } + }); + + JMenuItem proMap = new JMenuItem(TYPE_NAMES[STATE]); + popupMenu.add(proMap); + proMap.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + groupExtensionPane.addData(TYPE_NAMES[STATE], + TYPE_NAMES[STATE], true); + } + }); + + JMenuItem menu = new JMenuItem(TYPE_NAMES[USER]); + popupMenu.add(menu); + menu.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + groupExtensionPane.addData(TYPE_NAMES[USER], + TYPE_NAMES[USER], true); + } + }); + } + + private void doEdit(ChangeEvent e) { + MouseEvent event = (MouseEvent) e.getSource(); + JPopupMenu editPopMenu = new JPopupMenu(); + + final String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); + editPopMenu.add(createAreaItem(oldName)); + editPopMenu.add(createMarkerItem(oldName)); + editPopMenu.add(createLayerItem(oldName)); + editPopMenu.add(createRenameItem()); + + editPopMenu.show(MapGroupExtensionPane.this, event.getXOnScreen() - OFFSET_X, event.getYOnScreen() - OFFSET_Y); + } + + private void mapCheckBeforeEdit(String name){ + if(MapSvgXMLHelper.getInstance().containsMapName(name) || MapSvgXMLHelper.getInstance().getNewMapAttr(name)!=null){ + return; + } + MapSvgAttr attr = new MapSvgAttr(); + attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + name + ".svg"); + MapSvgXMLHelper.getInstance().addNewSvgMaps(name,attr); + } + + private JMenuItem createAreaItem(final String oldName) { + JMenuItem editFileItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Filed"})); + editFileItem.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + final MapCustomPane image = new MapCustomPane(); + image.setImageSelectType(MapShapeValue.AREA); + image.populateBean(oldName); + image.setTypeNameAndMapName(groupExtensionPane.getSelectedType(), Utils.objectToString(groupExtensionPane.getSelectedObject())); + mapCheckBeforeEdit(oldName); + final Image oldImage = getMapImage(oldName); + BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(MapGroupExtensionPane.this), new DialogActionAdapter() { + public void doOk() { + image.updateBean(); // 比较两个前后的名字是否相同, 是图片 如果图片不同, 则直接比较 + + Image newImage = getMapImage(oldName); + if(!ComparatorUtils.equals(oldImage, newImage)) { + fireStateChange(); + } + + //versionID递增 + MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); + if(old != null) { + old.addVersionID(); + } + + saveMapInfo(oldName); + refresh(); + } + }); + dialog.setVisible(true); + } + }); + return editFileItem; + } + + //根据地图的名字返回地图的图片 + private Image getMapImage(String mapName) { + if (MapSvgXMLHelper.getInstance().containsMapName(mapName)) { + MapSvgAttr mapAttr = MapSvgXMLHelper.getInstance().getMapAttr(mapName); + if(mapAttr == null) { + return null; + } + return mapAttr.getMapImage(); + } + + return null; + } + + private JMenuItem createMarkerItem(final String oldName) { + JMenuItem editMarkerItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Marker"})); + editMarkerItem.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + final MapCustomPane image = new MapCustomPane(); + image.setImageSelectType(MapShapeValue.POINT); + image.populateBean(oldName); + mapCheckBeforeEdit(oldName); + final Image oldImage = getMapImage(oldName); + BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(image), new DialogActionAdapter() { + public void doOk() { + image.updateBean(); + + Image newImage = getMapImage(oldName); + if(!ComparatorUtils.equals(oldImage, newImage)) { + fireStateChange(); + } + + //versionID递增 + MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); + if(old != null) { + old.addVersionID(); + } + + saveMapInfo(oldName); + refresh(); + } + }); + dialog.setVisible(true); + } + }); + return editMarkerItem; + } + + private JMenuItem createLayerItem(final String oldName) { + JMenuItem corrItem = new JMenuItem(Inter.getLocText(new String[]{"Filed", "Corresponding_Fields"})); + corrItem.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + final MapDefiAreaNamePane namedPane = new MapDefiAreaNamePane(); + namedPane.populateBean(oldName); + mapCheckBeforeEdit(oldName); + BasicDialog dialog = namedPane.showMediumWindow(SwingUtilities.getWindowAncestor(namedPane), new DialogActionAdapter() { + public void doOk() { + namedPane.updateBean();// 地图的名称 value对应情况 + + MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); + if(old != null) { + old.addVersionID(); + } + + saveMapInfo(oldName); + } + }); + dialog.setVisible(true); + refresh(); + } + }); + + return corrItem; + } + + private void showRenameWaring(String newName){ + JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), "\"" + newName + "\"" + Inter.getLocText("Utils-has_been_existed") + + "!", Inter.getLocText("FR-Designer_Alert"), JOptionPane.WARNING_MESSAGE); + } + + private JMenuItem createRenameItem() { + JMenuItem renameItem = new JMenuItem(Inter.getLocText("FR-Chart-Map_Rename")); + renameItem.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + String newName = JOptionPane.showInputDialog(DesignerContext.getDesignerFrame().getContentPane(), + Inter.getLocText("FR-Chart-Map_Rename"), groupExtensionPane.getSelectedObject()); + if (StringUtils.isNotBlank(newName)) { + String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); + if(ComparatorUtils.equals(oldName, newName)){ + return; + } + //本地在看看临时的helper里面有没有 + if(MapSvgXMLHelper.getInstance().getNewMapAttr(newName) != null){ + showRenameWaring(newName); + return; + } + try{//提醒名字已存在 + if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( + new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),newName+SvgProvider.EXTENSION}))){ + showRenameWaring(newName); + return; + } + if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( + new String[]{MapSvgXMLHelper.relativeCustomMapPath(), newName + SvgProvider.EXTENSION}))){ + showRenameWaring(newName); + return; + } + MapSvgAttr editingAttr = MapSvgXMLHelper.getInstance().getMapAttr(oldName); + if(editingAttr == null){ + editingAttr = MapSvgXMLHelper.getInstance().getNewMapAttr(oldName); + } + if( editingAttr == null) { + return; + } + editingAttr.renameMap(newName); + groupExtensionPane.setValueAtCurrentSelectIndex(newName); + fireStateChange(); + saveMapInfo(newName); + FRContext.getCurrentEnv().deleteFile( + StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),oldName+SvgProvider.EXTENSION})); + FRContext.getCurrentEnv().deleteFile( + StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeCustomMapPath(),oldName+SvgProvider.EXTENSION})); + refresh(); + }catch (Exception exp){ + FRLogger.getLogger().error(exp.getMessage()); + } + } + } + }); + return renameItem; + } + + private void refresh() { + this.validate(); + this.repaint(); + + DesignerFrame frame = DesignerContext.getDesignerFrame(); + if(frame != null) { + frame.repaint();//kunsnat: 图表属性没变, 只是读取时 内容变化. + } + } + + //保存修改过的地图信息 + private void saveMapInfo(final String mapName) { + SwingWorker worker = new SwingWorker() { + @Override + protected Integer doInBackground() throws Exception { + MapSvgAttr attr = MapSvgXMLHelper.getInstance().getMapAttr(mapName);// 只有在编辑地图时才需要储存相关数据 @kuns + if(attr != null){ + attr.writeBack(mapName); + } + return 0; + } + + @Override + protected void done() { + FRLogger.getLogger().info(Inter.getLocText("FR-Chart-Map_Saved")); // 地图已经保存. + } + + }; + worker.execute(); + DesignerEnvManager.addWorkers(worker); + } + + private void fireStateChange() { + for (int i = changeListeners.size(); i > 0; i--) { + changeListeners.get(i - 1).stateChanged(new javax.swing.event.ChangeEvent(this)); + } + } + + /** + * 更新地图属性 + * @return 返回地图名称. + */ + public String updateBean(MapPlot plot) { + if(!hasPopulated){ + this.populateBean(plot); + hasPopulated = true; + } + + MapHelper helper = plot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); + + helper.clearCateNames(); + for (String type : TYPE_NAMES) { + Object[] datas = groupExtensionPane.getData(type); + for (Object name : datas) { + helper.addCateNames(type, name); + } + } + + return Utils.objectToString(groupExtensionPane.getSelectedObject()); + } + + /** + * 更新地图名称 + * @param mapPlot 地图 + */ + public void populateBean(MapPlot mapPlot) { + hasPopulated = false; + groupExtensionPane.clearData(); + + for (String type : TYPE_NAMES) { + MapHelper helper = mapPlot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); + java.util.List list = helper.getNamesListWithCateName(type); + for (Object name : list) { + groupExtensionPane.addData(name, type); + } + } + + groupExtensionPane.setSelectedObject(mapPlot.getMapName()); + + hasPopulated = true; + } + + /** + * 给组件登记一个观察者监听事件 + * + * @param listener 观察者监听事件 + */ + public void registerChangeListener(final UIObserverListener listener) { + changeListeners.add(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent e) { + listener.doChange(); + } + }); + } + + /** + * 组件是否需要响应添加的观察者事件 + * + * @return 如果需要响应观察者事件则返回true,否则返回false + */ + public boolean shouldResponseChangeListener() { + return true; + } + + public void setEnabled(boolean isEnabled){ + super.setEnabled(isEnabled); + addButton.setEnabled(isEnabled); + popupMenu.setEnabled(isEnabled); + groupExtensionPane.setEnabled(isEnabled); + } +} \ No newline at end of file From 5004bd19eebf0d1b9433d9a98062470aa8ba7c0b Mon Sep 17 00:00:00 2001 From: plough Date: Fri, 28 Jul 2017 15:31:07 +0800 Subject: [PATCH 37/96] =?UTF-8?q?REPORT-3216=20=E6=97=A5=E6=96=87=E7=89=88?= =?UTF-8?q?=E7=9A=84=E4=B8=80=E4=BA=9B=E7=BF=BB=E8=AF=91=E5=92=8C=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E9=97=AE=E9=A2=9820170708?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/design/webattr/WriteWebSettingPane.java | 2 +- .../src/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java | 2 +- .../src/com/fr/design/widget/ui/NumberEditorDefinePane.java | 2 +- .../com/fr/design/gui/frpane/UICorrelationComboBoxPane.java | 3 ++- designer_base/src/com/fr/design/locale/designer.properties | 3 +++ .../src/com/fr/design/locale/designer_en_US.properties | 3 +++ .../src/com/fr/design/locale/designer_ja_JP.properties | 3 +++ .../src/com/fr/design/locale/designer_ko_KR.properties | 3 +++ .../src/com/fr/design/locale/designer_zh_CN.properties | 3 +++ .../src/com/fr/design/locale/designer_zh_TW.properties | 3 +++ .../com/fr/design/mainframe/loghandler/LogDetailPane.java | 3 ++- designer_base/src/com/fr/start/BaseDesigner.java | 5 +++-- .../src/com/fr/design/designer/creator/XCheckBoxGroup.java | 2 +- 13 files changed, 29 insertions(+), 8 deletions(-) diff --git a/designer/src/com/fr/design/webattr/WriteWebSettingPane.java b/designer/src/com/fr/design/webattr/WriteWebSettingPane.java index 92b26b0d59..0f52d6f05a 100644 --- a/designer/src/com/fr/design/webattr/WriteWebSettingPane.java +++ b/designer/src/com/fr/design/webattr/WriteWebSettingPane.java @@ -56,7 +56,7 @@ public class WriteWebSettingPane extends WebSettingPane { //sheet标签页显示位置 topRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Top")); bottomRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Bottom")); - sheetShowLocationLabel = new UILabel("sheet" + Inter.getLocText(new String[]{"Label", "Page_Number", "Display position"}) + ":", UILabel.LEFT); + sheetShowLocationLabel = new UILabel(Inter.getLocText("FR-Designer_Sheet_Label_Page_Display_Position"), UILabel.LEFT); ButtonGroup buttonGroup = new ButtonGroup(); bottomRadioButton.setSelected(true); buttonGroup.add(topRadioButton); diff --git a/designer/src/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java b/designer/src/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java index e625c2490a..02addd1936 100644 --- a/designer/src/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java @@ -49,7 +49,7 @@ public class CheckBoxGroupDefinePane extends FieldEditorDefinePane this.allowDecimalsCheckBox = new UICheckBox(Inter.getLocText("Allow_Decimals")); this.decimalLength = new com.fr.design.editor.editor.IntegerEditor(); this.decimalLength.setColumns(4); - limitNumberPane = GUICoreUtils.createFlowPane(new JComponent[]{new UILabel(Inter.getLocText(new String[]{"Double", "Numbers"}) + ":"), this.decimalLength}, + limitNumberPane = GUICoreUtils.createFlowPane(new JComponent[]{new UILabel(Inter.getLocText("FR-Designer_Decimal_Places")), this.decimalLength}, FlowLayout.LEFT, 4); getValidatePane().add(GUICoreUtils.createFlowPane(new JComponent[]{this.allowDecimalsCheckBox, limitNumberPane}, FlowLayout.LEFT, 4)); this.allowDecimalsCheckBox.addActionListener(actionListener1); diff --git a/designer_base/src/com/fr/design/gui/frpane/UICorrelationComboBoxPane.java b/designer_base/src/com/fr/design/gui/frpane/UICorrelationComboBoxPane.java index b2e30f41f5..d604ac3b8d 100644 --- a/designer_base/src/com/fr/design/gui/frpane/UICorrelationComboBoxPane.java +++ b/designer_base/src/com/fr/design/gui/frpane/UICorrelationComboBoxPane.java @@ -237,7 +237,8 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { public Dimension getPreferredSize() { Dimension dimension = new Dimension(); dimension.height = super.getPreferredSize().height; - dimension.width = addButton.getWidth() - 2; + // 不能写死,否则出现国际化显示不全的问题 + dimension.width = Math.max(addButton.getWidth() - 2, super.getPreferredSize().width); return dimension; } }; diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index 67035a4fd1..643fbf16a0 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -2005,3 +2005,6 @@ FR-Product_Demo=Demo FR-Designer_Tree_Data_Field=Tree Data Field FR-Designer_Data_Filter=Data Filter Default=Default +FR-Designer_Sheet_Label_Page_Display_Position=Sheet tab display location: +FR-Designer_Provide_Choose_All=Provide Select All +FR-Designer_Decimal_Places=Decimal Places: diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index deabe7a0fe..3cd8b9e327 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -2006,3 +2006,6 @@ FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=Build Tree according to the pa FR-Product_Demo=Demo FR-Designer_Data_Filter=Data Filter Default=Default +FR-Designer_Sheet_Label_Page_Display_Position=Sheet tab display location: +FR-Designer_Provide_Choose_All=Provide Select All +FR-Designer_Decimal_Places=Decimal Places: diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index 7126404b05..c89c2a9d3e 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -2005,3 +2005,6 @@ FR-Product_Demo=\u88FD\u54C1\u30C7\u30E2 FR-Designer_Data_Filter=\u30C7\u30FC\u30BF\u30D5\u30A3\u30EB\u30BF FR-Designer_Can_not_use_FormatBursh=\u9023\u7D9A\u3057\u306A\u3044\u8907\u6570\u9818\u57DF\u3067\u306F\u66F8\u5F0F\u30B3\u30D4\u30FC\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 Default=\u65E2\u5B9A +FR-Designer_Sheet_Label_Page_Display_Position= +FR-Designer_Provide_Choose_All=\u63D0\u4F9B\u3059\u3079\u3066\u9078\u629E +FR-Designer_Decimal_Places=\u5C0F\u6570\u6570\u91CF: \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties index 1c5ec78b4d..5fd517ee1d 100644 --- a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties +++ b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties @@ -2005,3 +2005,6 @@ FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=\uC120\uD0DD\uD55C\uB370\uC774 FR-Product_Demo=\uC81C\uD488\uC2DC\uC5F0 FR-Designer_Data_Filter=\uB370\uC774\uD130\uC120\uBCC4 Default=\uAE30\uBCF8 +FR-Designer_Sheet_Label_Page_Display_Position= +FR-Designer_Provide_Choose_All=\uC81C\uACF5\uBAA8\uB450\uC120\uD0DD +FR-Designer_Decimal_Places=\uC18C\uC218\uC218\uB7C9: \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index 64a6c4f140..c0912e6b66 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -2005,3 +2005,6 @@ FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=\u4F9D\u8D56\u6240\u9009\u6570 FR-Product_Demo=\u4EA7\u54C1\u6F14\u793A FR-Designer_Data_Filter=\u6570\u636E\u7B5B\u9009 Default=\u9ED8\u8BA4 +FR-Designer_Sheet_Label_Page_Display_Position=sheet\u6807\u7B7E\u9875\u663E\u793A\u4F4D\u7F6E\uFF1A +FR-Designer_Provide_Choose_All=\u63D0\u4F9B\u5168\u9009 +FR-Designer_Decimal_Places=\u5C0F\u6570\u6570\u76EE\uFF1A diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index efbcde1b92..f9875911eb 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -2006,3 +2006,6 @@ FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=\u4F9D\u8CF4\u6240\u9078\u8CC7 FR-Product_Demo=\u529F\u80FD\u5C55\u793A FR-Designer_Data_Filter=\u8CC7\u6599\u7BE9\u9078 Default=\u9810\u8A2D +FR-Designer_Sheet_Label_Page_Display_Position=sheet\u6A19\u7C64\u9801\u986F\u793A\u4F4D\u7F6E\uFF1A +FR-Designer_Provide_Choose_All=\u63D0\u4F9B\u5168\u9078 +FR-Designer_Decimal_Places=\u5C0F\u6578\u6578\u76EE\uFF1A diff --git a/designer_base/src/com/fr/design/mainframe/loghandler/LogDetailPane.java b/designer_base/src/com/fr/design/mainframe/loghandler/LogDetailPane.java index 6045e57b27..384f2c6599 100644 --- a/designer_base/src/com/fr/design/mainframe/loghandler/LogDetailPane.java +++ b/designer_base/src/com/fr/design/mainframe/loghandler/LogDetailPane.java @@ -7,6 +7,7 @@ import javax.swing.JPanel; import com.fr.base.BaseUtils; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.Inter; public class LogDetailPane extends JPanel{ public LogDetailPane() { @@ -20,7 +21,7 @@ public class LogDetailPane extends JPanel{ fr.setSize(600, 400); GUICoreUtils.centerWindow(fr); fr.setResizable(false); - fr.setTitle("日志"); + fr.setTitle(Inter.getLocText("FR-Designer_Log")); fr.setIconImage(BaseUtils.readImageWithCache("com/fr/design/images/buttonicon/history.png")); fr.getContentPane().setLayout(new BorderLayout()); fr.getContentPane().add(this, BorderLayout.CENTER); diff --git a/designer_base/src/com/fr/start/BaseDesigner.java b/designer_base/src/com/fr/start/BaseDesigner.java index 4c9329c243..4c98ea1999 100644 --- a/designer_base/src/com/fr/start/BaseDesigner.java +++ b/designer_base/src/com/fr/start/BaseDesigner.java @@ -61,11 +61,12 @@ public abstract class BaseDesigner extends ToolBarMenuDock { } BuildContext.setBuildFilePath(buildPropertiesPath()); + //下面这两句的位置不能随便调换,因为会影响语言切换的问题 + initLanguage(); + // 先加载设计器的国际化文件 Inter.loadLocaleFile(GeneralContext.getLocale(), DesignModule.LOCALE_FILE_PATH); - //下面这两句的位置不能随便调换,因为会影响语言切换的问题 - initLanguage(); SplashWindow splashWindow = new SplashWindow(createSplashPane()); if (args != null) { diff --git a/designer_form/src/com/fr/design/designer/creator/XCheckBoxGroup.java b/designer_form/src/com/fr/design/designer/creator/XCheckBoxGroup.java index a14c9330a8..1e0426e4e6 100644 --- a/designer_form/src/com/fr/design/designer/creator/XCheckBoxGroup.java +++ b/designer_form/src/com/fr/design/designer/creator/XCheckBoxGroup.java @@ -50,7 +50,7 @@ public class XCheckBoxGroup extends XFieldEditor { new CRPropertyDescriptor("adaptive", this.data.getClass()).setI18NName(Inter.getLocText("Adaptive")) .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced").setEditorClass(InChangeBooleanEditor.class), new CRPropertyDescriptor("chooseAll", this.data.getClass()).setI18NName( - Inter.getLocText(new String[]{"Provide", "Choose_All"})).putKeyValue( + Inter.getLocText("FR-Designer_Provide_Choose_All")).putKeyValue( XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), new CRPropertyDescriptor("returnString", this.data.getClass()).setI18NName( Inter.getLocText("Return-String")).setEditorClass(InChangeBooleanEditor.class) From 2369145cbfeff4cf9830093c92e2b7190e5c785e Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Mon, 31 Jul 2017 15:18:17 +0800 Subject: [PATCH 38/96] =?UTF-8?q?=E5=90=88=E5=B9=B6=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=EF=BC=9A=E5=B0=86=E5=9B=BE=E8=A1=A8dev=E4=B8=AD=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=90=88=E5=B9=B6=E5=88=B0release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editor/editor/ColumnSelectedEditor.java | 18 +- .../controlpane/AbstractNameableCreator.java | 27 +- .../gui/controlpane/NameableCreator.java | 17 +- .../PlotSeries/MapGroupExtensionPane.java | 485 +++++++++++++++++- .../SeriesCondition/dlp/DataLabelPane.java | 29 +- ...goryPlotMoreCateReportDataContentPane.java | 161 +++--- ...egoryPlotMoreCateTableDataContentPane.java | 177 ++++--- .../chart/gui/other/ChartInteractivePane.java | 347 +++++++------ .../chart/gui/type/AbstractChartTypePane.java | 2 +- 9 files changed, 891 insertions(+), 372 deletions(-) diff --git a/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java b/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java index 0f1c50a5fd..d8ae98bbca 100644 --- a/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java +++ b/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java @@ -1,7 +1,7 @@ package com.fr.design.editor.editor; -import com.fr.design.data.DesignTableDataManager; import com.fr.data.SimpleDSColumn; +import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.datapane.TableDataComboBox; import com.fr.design.data.tabledata.wrapper.TableDataWrapper; import com.fr.design.gui.icombobox.UIComboBox; @@ -36,9 +36,13 @@ public class ColumnSelectedEditor extends Editor { @Override public void itemStateChanged(ItemEvent e) { - //这边需要重新初始化columnNames, 否则nameList长度和columnNames长度不同导致出錯。 - List nameList = tableDataComboBox.getSelectedItem().calculateColumnNameList(); - columnNames = new String[nameList.size()]; + TableDataWrapper tableDataWrapper = tableDataComboBox.getSelectedItem(); + if (tableDataWrapper == null) { + return; + } + //这边需要重新初始化columnNames, 否则nameList长度和columnNames长度不同导致出錯。 + List nameList = tableDataWrapper.calculateColumnNameList(); + columnNames = new String[nameList.size()]; columnNames = tableDataComboBox.getSelectedItem().calculateColumnNameList().toArray(columnNames); columnNameComboBox.removeAllItems(); for (int i = 0; i < columnNames.length; i++) { @@ -64,7 +68,7 @@ public class ColumnSelectedEditor extends Editor { dsColumn.setDsName(tableDataWrappe.getTableDataName()); TableDataColumn column; String columnExp = (String) this.columnNameComboBox.getSelectedItem(); - if (StringUtils.isNotBlank(columnExp) && (columnExp.length() > 0 && columnExp.charAt(0) == '#') && !columnExp.endsWith("#")) { + if (StringUtils.isNotBlank(columnExp) && checkColumnExp(columnExp)) { String number = columnExp.substring(1); Pattern pattern = Pattern.compile("[^\\d]"); if (pattern.matcher(number).find()) { @@ -80,6 +84,10 @@ public class ColumnSelectedEditor extends Editor { return dsColumn; } + private boolean checkColumnExp (String columnExp) { + return (columnExp.length() > 0 && columnExp.charAt(0) == '#') && !columnExp.endsWith("#"); + } + public String getIconName() { return "ds_column"; } diff --git a/designer_base/src/com/fr/design/gui/controlpane/AbstractNameableCreator.java b/designer_base/src/com/fr/design/gui/controlpane/AbstractNameableCreator.java index 36a760b5b1..f3fec1fba2 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/AbstractNameableCreator.java +++ b/designer_base/src/com/fr/design/gui/controlpane/AbstractNameableCreator.java @@ -4,6 +4,7 @@ import com.fr.base.BaseUtils; import com.fr.design.beans.BasicBeanPane; import com.fr.general.ComparatorUtils; import com.fr.general.NameObject; +import com.fr.js.JavaScript; import javax.swing.*; @@ -14,7 +15,7 @@ public abstract class AbstractNameableCreator implements NameableCreator { protected Class clazzOfObject; protected Class clazzOfInitCase; protected Class clazzOfEditor; - + public AbstractNameableCreator(String menuName, Class clazz, Class clazzOfEditor) { this.menuName = menuName; this.clazzOfObject = clazz; @@ -28,7 +29,7 @@ public abstract class AbstractNameableCreator implements NameableCreator { this.clazzOfObject = clazz; this.clazzOfInitCase = clazz; } - + public AbstractNameableCreator(String menuName, String iconPath, Class clazz, Class clazzOfEditor) { this.menuName = menuName; this.menuIcon = BaseUtils.readIcon(iconPath); @@ -36,7 +37,7 @@ public abstract class AbstractNameableCreator implements NameableCreator { this.clazzOfEditor = clazzOfEditor; this.clazzOfInitCase = clazz; } - + public AbstractNameableCreator(String menuName, String iconPath, Class clazz, Class clazz4Init, Class clazzOfEditor) { this.menuName = menuName; this.menuIcon = BaseUtils.readIcon(iconPath); @@ -50,7 +51,7 @@ public abstract class AbstractNameableCreator implements NameableCreator { * get menuName * @return */ - public String menuName() { + public String menuName() { return this.menuName; } @@ -70,6 +71,14 @@ public abstract class AbstractNameableCreator implements NameableCreator { return this.clazzOfEditor; } + /** + * get clazzOfObject + * @return clazzOfObject + */ + public Class getHyperlink() { + return this.clazzOfObject; + } + /** * * @param ob @@ -83,12 +92,12 @@ public abstract class AbstractNameableCreator implements NameableCreator { doSthChanged4Icon(ob); return ob; } - + return null; } protected void doSthChanged4Icon(Object ob){ - + } /** @@ -99,9 +108,9 @@ public abstract class AbstractNameableCreator implements NameableCreator { return null; } - public boolean isNeedParameterWhenPopulateJControlPane(){ - return false; - } + public boolean isNeedParameterWhenPopulateJControlPane(){ + return false; + } public boolean equals(Object obj) { return obj instanceof AbstractNameableCreator diff --git a/designer_base/src/com/fr/design/gui/controlpane/NameableCreator.java b/designer_base/src/com/fr/design/gui/controlpane/NameableCreator.java index f497be1e6c..09d1833b17 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/NameableCreator.java +++ b/designer_base/src/com/fr/design/gui/controlpane/NameableCreator.java @@ -2,24 +2,27 @@ package com.fr.design.gui.controlpane; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.ilist.ListModelElement; +import com.fr.js.JavaScript; import com.fr.stable.Nameable; import javax.swing.*; public interface NameableCreator { public String menuName(); - + public Icon menuIcon(); - + public String createTooltip(); - + public Nameable createNameable(UnrepeatedNameHelper helper); - + public Class getUpdatePane(); - + + public Class getHyperlink(); + public Object acceptObject2Populate(Object ob); - + public void saveUpdatedBean(ListModelElement wrapper, Object bean); - public boolean isNeedParameterWhenPopulateJControlPane(); + public boolean isNeedParameterWhenPopulateJControlPane(); } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java index f1f1b3deb3..a1207717bf 100644 --- a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java +++ b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java @@ -1 +1,484 @@ -package com.fr.design.chart.series.PlotSeries; import com.fr.base.*; import com.fr.chart.base.MapSvgAttr; import com.fr.chart.base.MapSvgXMLHelper; import com.fr.chart.chartattr.MapPlot; import com.fr.chart.chartglyph.MapShapeValue; import com.fr.design.constants.UIConstants; import com.fr.design.DesignerEnvManager; import com.fr.design.event.ChangeEvent; import com.fr.design.event.ChangeListener; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.stable.CoreConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.SvgProvider; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.geom.RoundRectangle2D; import java.util.ArrayList; /** * Created by IntelliJ IDEA. * Author : Richer * Version: 7.0.3 * Date: 12-12-29 * Time: 下午2:41 */ public class MapGroupExtensionPane extends BasicPane implements UIObserver { private static final String[] TYPE_NAMES = new String[]{ Inter.getLocText("FR-Chart-World_Map"), Inter.getLocText("FR-Chart-State_Map"), Inter.getLocText("FR-Chart-Province_Map"), Inter.getLocText("FR-Chart-Custom_Map")}; private static final int WORD = 0; private static final int NATION = 1; private static final int STATE = 2; private static final int USER = 3; private static final int OFFSET_X = 800; private static final int OFFSET_Y = 200; private UIGroupExtensionPane groupExtensionPane; private UIButton addButton; private JPopupMenu popupMenu; private ArrayList changeListeners = new ArrayList(); private boolean hasPopulated = false; @Override protected String title4PopupWindow() { return "Map"; } public MapGroupExtensionPane() { setLayout(new BorderLayout()); groupExtensionPane = new UIGroupExtensionPane(TYPE_NAMES){ /** * 新添加的数据的序号 * @param data 数据 */ protected void dealNewAddedDataIndex(Object data){ String newName = (String)data; MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance(); if(helper.getNewMapAttr(newName) != null){ return; } MapSvgAttr attr = new MapSvgAttr(); attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + newName + ".svg"); helper.addNewSvgMaps(attr.getName(), attr); } /** * 一次鼠标的点击会有两次事件响应(按下和释放)。前者的事件属性中getValueIsAdjusting()=true,后者是false。 * 是否响应list值改变 * @return 鼠标按下时不响应,先响应mousePress事件,在鼠标释放是再响应list值改编的事件,并且点击删除不触发更新,并且populate后触发更新 */ protected boolean isRespondToValueChange(ListSelectionEvent e){ return !e.getValueIsAdjusting() && !this.isPressOnDelete() && hasPopulated; } }; groupExtensionPane.addSelectionChangeListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { fireStateChange(); } }); groupExtensionPane.addItemEditListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { doEdit(event); } }); groupExtensionPane.addDeleteListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { //这么写有点问题 String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); saveMapInfo(oldName); } }); setPreferredSize(new Dimension(400, 210)); add(groupExtensionPane, BorderLayout.CENTER); addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")) { @Override protected void paintBorder(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setStroke(UIConstants.BS); Shape shape = new RoundRectangle2D.Float(0.5f, 0.5f, getWidth() - 1, getHeight() - 1, UIConstants.ARC, UIConstants.ARC); g2d.setColor(UIConstants.LINE_COLOR); g2d.draw(shape); } }; addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { popupMenu.show(MapGroupExtensionPane.this, addButton.getX() + 1, addButton.getY() + addButton.getHeight()); } }); add(addButton, BorderLayout.SOUTH); initPopupMenu(); } private void initPopupMenu() { popupMenu = new JPopupMenu() { @Override public Dimension getPreferredSize() { Dimension dimension = new Dimension(); dimension.height = super.getPreferredSize().height; dimension.width = addButton.getWidth() - 2; return dimension; } }; JMenuItem worldMap = new JMenuItem(TYPE_NAMES[WORD]); popupMenu.add(worldMap); worldMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[WORD], TYPE_NAMES[WORD], true); } }); JMenuItem countMap = new JMenuItem(TYPE_NAMES[NATION]); popupMenu.add(countMap); countMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[NATION], TYPE_NAMES[NATION], true); } }); JMenuItem proMap = new JMenuItem(TYPE_NAMES[STATE]); popupMenu.add(proMap); proMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[STATE], TYPE_NAMES[STATE], true); } }); JMenuItem menu = new JMenuItem(TYPE_NAMES[USER]); popupMenu.add(menu); menu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[USER], TYPE_NAMES[USER], true); } }); } private void doEdit(ChangeEvent e) { MouseEvent event = (MouseEvent) e.getSource(); JPopupMenu editPopMenu = new JPopupMenu(); final String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); editPopMenu.add(createAreaItem(oldName)); editPopMenu.add(createMarkerItem(oldName)); editPopMenu.add(createLayerItem(oldName)); editPopMenu.add(createRenameItem()); editPopMenu.show(MapGroupExtensionPane.this, event.getXOnScreen() - OFFSET_X, event.getYOnScreen() - OFFSET_Y); } private void mapCheckBeforeEdit(String name){ if(MapSvgXMLHelper.getInstance().containsMapName(name) || MapSvgXMLHelper.getInstance().getNewMapAttr(name)!=null){ return; } MapSvgAttr attr = new MapSvgAttr(); attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + name + ".svg"); MapSvgXMLHelper.getInstance().addNewSvgMaps(name,attr); } private JMenuItem createAreaItem(final String oldName) { JMenuItem editFileItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Filed"})); editFileItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapCustomPane image = new MapCustomPane(); image.setImageSelectType(MapShapeValue.AREA); image.populateBean(oldName); image.setTypeNameAndMapName(groupExtensionPane.getSelectedType(), Utils.objectToString(groupExtensionPane.getSelectedObject())); mapCheckBeforeEdit(oldName); final Image oldImage = getMapImage(oldName); BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(MapGroupExtensionPane.this), new DialogActionAdapter() { public void doOk() { image.updateBean(); // 比较两个前后的名字是否相同, 是图片 如果图片不同, 则直接比较 Image newImage = getMapImage(oldName); if(!ComparatorUtils.equals(oldImage, newImage)) { fireStateChange(); } //versionID递增 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); refresh(); } }); dialog.setVisible(true); } }); return editFileItem; } //根据地图的名字返回地图的图片 private Image getMapImage(String mapName) { if (MapSvgXMLHelper.getInstance().containsMapName(mapName)) { MapSvgAttr mapAttr = MapSvgXMLHelper.getInstance().getMapAttr(mapName); if(mapAttr == null) { return null; } return mapAttr.getMapImage(); } return null; } private JMenuItem createMarkerItem(final String oldName) { JMenuItem editMarkerItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Marker"})); editMarkerItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapCustomPane image = new MapCustomPane(); image.setImageSelectType(MapShapeValue.POINT); image.populateBean(oldName); mapCheckBeforeEdit(oldName); final Image oldImage = getMapImage(oldName); BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(image), new DialogActionAdapter() { public void doOk() { image.updateBean(); Image newImage = getMapImage(oldName); if(!ComparatorUtils.equals(oldImage, newImage)) { fireStateChange(); } //versionID递增 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); refresh(); } }); dialog.setVisible(true); } }); return editMarkerItem; } private JMenuItem createLayerItem(final String oldName) { JMenuItem corrItem = new JMenuItem(Inter.getLocText(new String[]{"Filed", "Corresponding_Fields"})); corrItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapDefiAreaNamePane namedPane = new MapDefiAreaNamePane(); namedPane.populateBean(oldName); mapCheckBeforeEdit(oldName); BasicDialog dialog = namedPane.showMediumWindow(SwingUtilities.getWindowAncestor(namedPane), new DialogActionAdapter() { public void doOk() { namedPane.updateBean();// 地图的名称 value对应情况 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); } }); dialog.setVisible(true); refresh(); } }); return corrItem; } private void showRenameWaring(String newName){ JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), "\"" + newName + "\"" + Inter.getLocText("Utils-has_been_existed") + "!", Inter.getLocText("FR-Designer_Alert"), JOptionPane.WARNING_MESSAGE); } private JMenuItem createRenameItem() { JMenuItem renameItem = new JMenuItem(Inter.getLocText("FR-Chart-Map_Rename")); renameItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String newName = JOptionPane.showInputDialog(DesignerContext.getDesignerFrame().getContentPane(), Inter.getLocText("FR-Chart-Map_Rename"), groupExtensionPane.getSelectedObject()); if (StringUtils.isNotBlank(newName)) { String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); if(ComparatorUtils.equals(oldName, newName)){ return; } //本地在看看临时的helper里面有没有 if(MapSvgXMLHelper.getInstance().getNewMapAttr(newName) != null){ showRenameWaring(newName); return; } try{//提醒名字已存在 if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),newName+SvgProvider.EXTENSION}))){ showRenameWaring(newName); return; } if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( new String[]{MapSvgXMLHelper.relativeCustomMapPath(), newName + SvgProvider.EXTENSION}))){ showRenameWaring(newName); return; } MapSvgAttr editingAttr = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(editingAttr == null){ editingAttr = MapSvgXMLHelper.getInstance().getNewMapAttr(oldName); } if( editingAttr == null) { return; } editingAttr.renameMap(newName); groupExtensionPane.setValueAtCurrentSelectIndex(newName); fireStateChange(); saveMapInfo(newName); FRContext.getCurrentEnv().deleteFile( StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),oldName+SvgProvider.EXTENSION})); FRContext.getCurrentEnv().deleteFile( StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeCustomMapPath(),oldName+SvgProvider.EXTENSION})); refresh(); }catch (Exception exp){ FRLogger.getLogger().error(exp.getMessage()); } } } }); return renameItem; } private void refresh() { this.validate(); this.repaint(); DesignerFrame frame = DesignerContext.getDesignerFrame(); if(frame != null) { frame.repaint();//kunsnat: 图表属性没变, 只是读取时 内容变化. } } //保存修改过的地图信息 private void saveMapInfo(final String mapName) { SwingWorker worker = new SwingWorker() { @Override protected Integer doInBackground() throws Exception { MapSvgAttr attr = MapSvgXMLHelper.getInstance().getMapAttr(mapName);// 只有在编辑地图时才需要储存相关数据 @kuns if(attr != null){ attr.writeBack(mapName); } return 0; } @Override protected void done() { FRLogger.getLogger().info(Inter.getLocText("FR-Chart-Map_Saved")); // 地图已经保存. } }; worker.execute(); DesignerEnvManager.addWorkers(worker); } private void fireStateChange() { for (int i = changeListeners.size(); i > 0; i--) { changeListeners.get(i - 1).stateChanged(new javax.swing.event.ChangeEvent(this)); } } /** * 更新地图属性 * @return 返回地图名称. */ public String updateBean(MapPlot plot) { if(!hasPopulated){ this.populateBean(plot); hasPopulated = true; } MapHelper helper = plot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); helper.clearCateNames(); for (String type : TYPE_NAMES) { Object[] datas = groupExtensionPane.getData(type); for (Object name : datas) { helper.addCateNames(type, name); } } return Utils.objectToString(groupExtensionPane.getSelectedObject()); } /** * 更新地图名称 * @param mapPlot 地图 */ public void populateBean(MapPlot mapPlot) { hasPopulated = false; groupExtensionPane.clearData(); for (String type : TYPE_NAMES) { MapHelper helper = mapPlot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); java.util.List list = helper.getNamesListWithCateName(type); for (Object name : list) { groupExtensionPane.addData(name, type); } } groupExtensionPane.setSelectedObject(mapPlot.getMapName()); hasPopulated = true; } /** * 给组件登记一个观察者监听事件 * * @param listener 观察者监听事件 */ public void registerChangeListener(final UIObserverListener listener) { changeListeners.add(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { listener.doChange(); } }); } /** * 组件是否需要响应添加的观察者事件 * * @return 如果需要响应观察者事件则返回true,否则返回false */ public boolean shouldResponseChangeListener() { return true; } public void setEnabled(boolean isEnabled){ super.setEnabled(isEnabled); addButton.setEnabled(isEnabled); popupMenu.setEnabled(isEnabled); groupExtensionPane.setEnabled(isEnabled); } } \ No newline at end of file +package com.fr.design.chart.series.PlotSeries; + +import com.fr.base.*; +import com.fr.chart.base.MapSvgAttr; +import com.fr.chart.base.MapSvgXMLHelper; +import com.fr.chart.chartattr.MapPlot; +import com.fr.chart.chartglyph.MapShapeValue; +import com.fr.design.DesignerEnvManager; +import com.fr.design.constants.UIConstants; +import com.fr.design.dialog.BasicDialog; +import com.fr.design.dialog.BasicPane; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.event.ChangeEvent; +import com.fr.design.event.ChangeListener; +import com.fr.design.event.UIObserver; +import com.fr.design.event.UIObserverListener; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.DesignerFrame; +import com.fr.general.ComparatorUtils; +import com.fr.general.FRLogger; +import com.fr.general.Inter; +import com.fr.stable.CoreConstants; +import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; +import com.fr.stable.SvgProvider; + +import javax.swing.*; +import javax.swing.event.ListSelectionEvent; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.geom.RoundRectangle2D; +import java.util.ArrayList; + +/** + * Created by IntelliJ IDEA. + * Author : Richer + * Version: 7.0.3 + * Date: 12-12-29 + * Time: 下午2:41 + */ +public class MapGroupExtensionPane extends BasicPane implements UIObserver { + private static final String[] TYPE_NAMES = new String[]{ + Inter.getLocText("FR-Chart-World_Map"), + Inter.getLocText("FR-Chart-State_Map"), + Inter.getLocText("FR-Chart-Province_Map"), + Inter.getLocText("FR-Chart-Custom_Map")}; + private static final int WORD = 0; + private static final int NATION = 1; + private static final int STATE = 2; + private static final int USER = 3; + private static final int OFFSET_X = 800; + private static final int OFFSET_Y = 200; + + private UIGroupExtensionPane groupExtensionPane; + private UIButton addButton; + private JPopupMenu popupMenu; + private ArrayList changeListeners = new ArrayList(); + private boolean hasPopulated = false; + + @Override + protected String title4PopupWindow() { + return "Map"; + } + + public MapGroupExtensionPane() { + setLayout(new BorderLayout()); + groupExtensionPane = new UIGroupExtensionPane(TYPE_NAMES){ + + /** + * 新添加的数据的序号 + * @param data 数据 + */ + protected void dealNewAddedDataIndex(Object data){ + String newName = (String)data; + MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance(); + if(helper.getNewMapAttr(newName) != null){ + return; + } + MapSvgAttr attr = new MapSvgAttr(); + attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + newName + ".svg"); + helper.addNewSvgMaps(attr.getName(), attr); + } + + + /** + * 一次鼠标的点击会有两次事件响应(按下和释放)。前者的事件属性中getValueIsAdjusting()=true,后者是false。 + * 是否响应list值改变 + * @return 鼠标按下时不响应,先响应mousePress事件,在鼠标释放是再响应list值改编的事件,并且点击删除不触发更新,并且populate后触发更新 + */ + protected boolean isRespondToValueChange(ListSelectionEvent e){ + return !e.getValueIsAdjusting() && !this.isPressOnDelete() && hasPopulated; + } + }; + groupExtensionPane.addSelectionChangeListener(new ChangeListener() { + @Override + public void fireChanged(ChangeEvent event) { + fireStateChange(); + } + }); + groupExtensionPane.addItemEditListener(new ChangeListener() { + @Override + public void fireChanged(ChangeEvent event) { + doEdit(event); + } + }); + groupExtensionPane.addDeleteListener(new ChangeListener() { + @Override + public void fireChanged(ChangeEvent event) { + //这么写有点问题 + String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); + saveMapInfo(oldName); + } + }); + setPreferredSize(new Dimension(400, 210)); + add(groupExtensionPane, BorderLayout.CENTER); + + addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")) { + @Override + protected void paintBorder(Graphics g) { + Graphics2D g2d = (Graphics2D) g; + g2d.setStroke(UIConstants.BS); + Shape shape = new RoundRectangle2D.Float(0.5f, 0.5f, getWidth() - 1, getHeight() - 1, UIConstants.ARC, UIConstants.ARC); + g2d.setColor(UIConstants.LINE_COLOR); + g2d.draw(shape); + } + }; + addButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + popupMenu.show(MapGroupExtensionPane.this, addButton.getX() + 1, addButton.getY() + addButton.getHeight()); + } + }); + add(addButton, BorderLayout.SOUTH); + initPopupMenu(); + } + + private void initPopupMenu() { + popupMenu = new JPopupMenu() { + @Override + public Dimension getPreferredSize() { + Dimension dimension = new Dimension(); + dimension.height = super.getPreferredSize().height; + dimension.width = addButton.getWidth() - 2; + return dimension; + } + }; + JMenuItem worldMap = new JMenuItem(TYPE_NAMES[WORD]); + popupMenu.add(worldMap); + worldMap.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + groupExtensionPane.addData(TYPE_NAMES[WORD], TYPE_NAMES[WORD], true); + } + }); + + JMenuItem countMap = new JMenuItem(TYPE_NAMES[NATION]); + popupMenu.add(countMap); + countMap.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + groupExtensionPane.addData(TYPE_NAMES[NATION], + TYPE_NAMES[NATION], true); + } + }); + + JMenuItem proMap = new JMenuItem(TYPE_NAMES[STATE]); + popupMenu.add(proMap); + proMap.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + groupExtensionPane.addData(TYPE_NAMES[STATE], + TYPE_NAMES[STATE], true); + } + }); + + JMenuItem menu = new JMenuItem(TYPE_NAMES[USER]); + popupMenu.add(menu); + menu.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + groupExtensionPane.addData(TYPE_NAMES[USER], + TYPE_NAMES[USER], true); + } + }); + } + + private void doEdit(ChangeEvent e) { + MouseEvent event = (MouseEvent) e.getSource(); + JPopupMenu editPopMenu = new JPopupMenu(); + + final String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); + editPopMenu.add(createAreaItem(oldName)); + editPopMenu.add(createMarkerItem(oldName)); + editPopMenu.add(createLayerItem(oldName)); + editPopMenu.add(createRenameItem()); + + editPopMenu.show(MapGroupExtensionPane.this, event.getXOnScreen() - OFFSET_X, event.getYOnScreen() - OFFSET_Y); + } + + private void mapCheckBeforeEdit(String name){ + if(MapSvgXMLHelper.getInstance().containsMapName(name) || MapSvgXMLHelper.getInstance().getNewMapAttr(name)!=null){ + return; + } + MapSvgAttr attr = new MapSvgAttr(); + attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + name + ".svg"); + MapSvgXMLHelper.getInstance().addNewSvgMaps(name,attr); + } + + private JMenuItem createAreaItem(final String oldName) { + JMenuItem editFileItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Filed"})); + editFileItem.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + final MapCustomPane image = new MapCustomPane(); + image.setImageSelectType(MapShapeValue.AREA); + image.populateBean(oldName); + image.setTypeNameAndMapName(groupExtensionPane.getSelectedType(), Utils.objectToString(groupExtensionPane.getSelectedObject())); + mapCheckBeforeEdit(oldName); + final Image oldImage = getMapImage(oldName); + BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(MapGroupExtensionPane.this), new DialogActionAdapter() { + public void doOk() { + image.updateBean(); // 比较两个前后的名字是否相同, 是图片 如果图片不同, 则直接比较 + + Image newImage = getMapImage(oldName); + if(!ComparatorUtils.equals(oldImage, newImage)) { + fireStateChange(); + } + + //versionID递增 + MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); + if(old != null) { + old.addVersionID(); + } + + saveMapInfo(oldName); + refresh(); + } + }); + dialog.setVisible(true); + } + }); + return editFileItem; + } + + //根据地图的名字返回地图的图片 + private Image getMapImage(String mapName) { + if (MapSvgXMLHelper.getInstance().containsMapName(mapName)) { + MapSvgAttr mapAttr = MapSvgXMLHelper.getInstance().getMapAttr(mapName); + if(mapAttr == null) { + return null; + } + return mapAttr.getMapImage(); + } + + return null; + } + + private JMenuItem createMarkerItem(final String oldName) { + JMenuItem editMarkerItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Marker"})); + editMarkerItem.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + final MapCustomPane image = new MapCustomPane(); + image.setImageSelectType(MapShapeValue.POINT); + image.populateBean(oldName); + mapCheckBeforeEdit(oldName); + final Image oldImage = getMapImage(oldName); + BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(image), new DialogActionAdapter() { + public void doOk() { + image.updateBean(); + + Image newImage = getMapImage(oldName); + if(!ComparatorUtils.equals(oldImage, newImage)) { + fireStateChange(); + } + + //versionID递增 + MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); + if(old != null) { + old.addVersionID(); + } + + saveMapInfo(oldName); + refresh(); + } + }); + dialog.setVisible(true); + } + }); + return editMarkerItem; + } + + private JMenuItem createLayerItem(final String oldName) { + JMenuItem corrItem = new JMenuItem(Inter.getLocText(new String[]{"Filed", "Corresponding_Fields"})); + corrItem.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + final MapDefiAreaNamePane namedPane = new MapDefiAreaNamePane(); + namedPane.populateBean(oldName); + mapCheckBeforeEdit(oldName); + BasicDialog dialog = namedPane.showMediumWindow(SwingUtilities.getWindowAncestor(namedPane), new DialogActionAdapter() { + public void doOk() { + namedPane.updateBean();// 地图的名称 value对应情况 + + MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); + if(old != null) { + old.addVersionID(); + } + + saveMapInfo(oldName); + } + }); + dialog.setVisible(true); + refresh(); + } + }); + + return corrItem; + } + + private void showRenameWaring(String newName){ + JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), "\"" + newName + "\"" + Inter.getLocText("Utils-has_been_existed") + + "!", Inter.getLocText("FR-Designer_Alert"), JOptionPane.WARNING_MESSAGE); + } + + private JMenuItem createRenameItem() { + JMenuItem renameItem = new JMenuItem(Inter.getLocText("FR-Chart-Map_Rename")); + renameItem.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + String newName = JOptionPane.showInputDialog(DesignerContext.getDesignerFrame().getContentPane(), + Inter.getLocText("FR-Chart-Map_Rename"), groupExtensionPane.getSelectedObject()); + if (StringUtils.isNotBlank(newName)) { + String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); + if(ComparatorUtils.equals(oldName, newName)){ + return; + } + //本地在看看临时的helper里面有没有 + if(MapSvgXMLHelper.getInstance().getNewMapAttr(newName) != null){ + showRenameWaring(newName); + return; + } + try{//提醒名字已存在 + if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( + new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),newName+SvgProvider.EXTENSION}))){ + showRenameWaring(newName); + return; + } + if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( + new String[]{MapSvgXMLHelper.relativeCustomMapPath(), newName + SvgProvider.EXTENSION}))){ + showRenameWaring(newName); + return; + } + MapSvgAttr editingAttr = MapSvgXMLHelper.getInstance().getMapAttr(oldName); + if(editingAttr == null){ + editingAttr = MapSvgXMLHelper.getInstance().getNewMapAttr(oldName); + } + if( editingAttr == null) { + return; + } + editingAttr.renameMap(newName); + groupExtensionPane.setValueAtCurrentSelectIndex(newName); + fireStateChange(); + saveMapInfo(newName); + FRContext.getCurrentEnv().deleteFile( + StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),oldName+SvgProvider.EXTENSION})); + FRContext.getCurrentEnv().deleteFile( + StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeCustomMapPath(),oldName+SvgProvider.EXTENSION})); + refresh(); + }catch (Exception exp){ + FRLogger.getLogger().error(exp.getMessage()); + } + } + } + }); + return renameItem; + } + + private void refresh() { + this.validate(); + this.repaint(); + + DesignerFrame frame = DesignerContext.getDesignerFrame(); + if(frame != null) { + frame.repaint();//kunsnat: 图表属性没变, 只是读取时 内容变化. + } + } + + //保存修改过的地图信息 + private void saveMapInfo(final String mapName) { + SwingWorker worker = new SwingWorker() { + @Override + protected Integer doInBackground() throws Exception { + MapSvgAttr attr = MapSvgXMLHelper.getInstance().getMapAttr(mapName);// 只有在编辑地图时才需要储存相关数据 @kuns + if(attr != null){ + attr.writeBack(mapName); + } + return 0; + } + + @Override + protected void done() { + FRLogger.getLogger().info(Inter.getLocText("FR-Chart-Map_Saved")); // 地图已经保存. + } + + }; + worker.execute(); + DesignerEnvManager.addWorkers(worker); + } + + private void fireStateChange() { + for (int i = changeListeners.size(); i > 0; i--) { + changeListeners.get(i - 1).stateChanged(new javax.swing.event.ChangeEvent(this)); + } + } + + /** + * 更新地图属性 + * @return 返回地图名称. + */ + public String updateBean(MapPlot plot) { + if(!hasPopulated){ + this.populateBean(plot); + hasPopulated = true; + } + + MapHelper helper = plot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); + + helper.clearCateNames(); + for (String type : TYPE_NAMES) { + Object[] datas = groupExtensionPane.getData(type); + for (Object name : datas) { + helper.addCateNames(type, name); + } + } + + return Utils.objectToString(groupExtensionPane.getSelectedObject()); + } + + /** + * 更新地图名称 + * @param mapPlot 地图 + */ + public void populateBean(MapPlot mapPlot) { + hasPopulated = false; + groupExtensionPane.clearData(); + + for (String type : TYPE_NAMES) { + MapHelper helper = mapPlot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); + java.util.List list = helper.getNamesListWithCateName(type); + for (Object name : list) { + groupExtensionPane.addData(name, type); + } + } + + groupExtensionPane.setSelectedObject(mapPlot.getMapName()); + + hasPopulated = true; + } + + /** + * 给组件登记一个观察者监听事件 + * + * @param listener 观察者监听事件 + */ + public void registerChangeListener(final UIObserverListener listener) { + changeListeners.add(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent e) { + listener.doChange(); + } + }); + } + + /** + * 组件是否需要响应添加的观察者事件 + * + * @return 如果需要响应观察者事件则返回true,否则返回false + */ + public boolean shouldResponseChangeListener() { + return true; + } + + public void setEnabled(boolean isEnabled){ + super.setEnabled(isEnabled); + addButton.setEnabled(isEnabled); + popupMenu.setEnabled(isEnabled); + groupExtensionPane.setEnabled(isEnabled); + } +} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/chart/series/SeriesCondition/dlp/DataLabelPane.java b/designer_chart/src/com/fr/design/chart/series/SeriesCondition/dlp/DataLabelPane.java index 7d8b6c8ce1..3a200ee3ce 100644 --- a/designer_chart/src/com/fr/design/chart/series/SeriesCondition/dlp/DataLabelPane.java +++ b/designer_chart/src/com/fr/design/chart/series/SeriesCondition/dlp/DataLabelPane.java @@ -96,7 +96,7 @@ public class DataLabelPane extends TooltipContentsPane { } delimiterBox.setPreferredSize(new Dimension(70, 20)); JPanel boxPane = FRGUIPaneFactory.createBoxFlowInnerContainer_S_Pane(); - boxPane.add(new UILabel(Inter.getLocText("Form-Delimiter") + ":")); + boxPane.add(new UILabel(Inter.getLocText("FR-Designer_Dismenber") + ":")); boxPane.add(delimiterBox); return boxPane; } @@ -111,34 +111,9 @@ public class DataLabelPane extends TooltipContentsPane { } protected JPanel createJPanel4Position() { - // 标签位置:上下左右中. - bottomButton = new UIRadioButton(Inter.getLocText("StyleAlignment-Bottom")); - leftButton = new UIRadioButton(Inter.getLocText("StyleAlignment-Left")); - rigtButton = new UIRadioButton(Inter.getLocText("StyleAlignment-Right")); - topButton = new UIRadioButton(Inter.getLocText("StyleAlignment-Top")); - centerButton = new UIRadioButton(Inter.getLocText("Center")); - - ButtonGroup bg = new ButtonGroup(); - bg.add(bottomButton); - bg.add(leftButton); - bg.add(rigtButton); - bg.add(topButton); - bg.add(centerButton); - topButton.setSelected(true); - - JPanel buttonPane = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); - buttonPane.add(new UILabel(Inter.getLocText(new String[]{"Label", "Layout"}) + ":")); - buttonPane.add(bottomButton); - buttonPane.add(leftButton); - buttonPane.add(rigtButton); - buttonPane.add(topButton); - buttonPane.add(centerButton); - - return buttonPane; + return null; } - - public void populate(AttrContents seriesAttrContents) { super.populate(seriesAttrContents); String dataLabel = seriesAttrContents.getSeriesLabel(); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java index 07d699dae3..96d4af867a 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java @@ -5,6 +5,7 @@ import com.fr.base.Utils; import com.fr.base.chart.chartdata.TopDefinitionProvider; import com.fr.chart.chartattr.Bar2DPlot; import com.fr.chart.chartattr.ChartCollection; +import com.fr.chart.chartattr.Plot; import com.fr.chart.chartdata.NormalReportDataDefinition; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; @@ -21,6 +22,7 @@ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; +import java.util.List; /** @@ -30,125 +32,133 @@ import java.util.ArrayList; */ public class CategoryPlotMoreCateReportDataContentPane extends CategoryPlotReportDataContentPane implements UIObserver{ private static final long serialVersionUID = -1122313353777460534L; - + private JPanel boxPane; private UIButton addButton; - + private ArrayList formualList = new ArrayList(); private UIObserverListener uiobListener = null; + public List getFormualList() { + return formualList; + } + public CategoryPlotMoreCateReportDataContentPane() { - + } - + public CategoryPlotMoreCateReportDataContentPane(ChartDataPane parent) { - initEveryPane(); - categoryName = initCategoryBox(Inter.getLocText("FR-Chart-Category_Name") + ":"); - - JPanel catePane = new JPanel(); - catePane.setLayout(new BorderLayout(2, 2)); - - catePane.add(categoryName); - - addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")); - addButton.setPreferredSize(new Dimension(20, 20)); - catePane.add(addButton, BorderLayout.EAST); - - boxPane = new JPanel(); - boxPane.setLayout(new BoxLayout(boxPane, BoxLayout.Y_AXIS)); - - boxPane.setBackground(Color.red); - - catePane.add(boxPane, BorderLayout.SOUTH); - - this.add(catePane, "0,0,2,0"); - this.add(new BoldFontTextLabel(Inter.getLocText("FR-Chart-Data_Filter")), "0,4,2,4"); - this.add(filterPane = new ChartDataFilterPane(new Bar2DPlot(), parent), "0,6,2,4"); - - addButton.addActionListener(new ActionListener() { + initEveryPane(); + categoryName = initCategoryBox(Inter.getLocText("FR-Chart-Category_Name") + ":"); + + JPanel catePane = new JPanel(); + catePane.setLayout(new BorderLayout(2, 2)); + + catePane.add(categoryName); + + addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")); + addButton.setPreferredSize(new Dimension(20, 20)); + catePane.add(addButton, BorderLayout.EAST); + + boxPane = new JPanel(); + boxPane.setLayout(new BoxLayout(boxPane, BoxLayout.Y_AXIS)); + + boxPane.setBackground(Color.red); + + catePane.add(boxPane, BorderLayout.SOUTH); + + this.add(catePane, "0,0,2,0"); + this.add(new BoldFontTextLabel(Inter.getLocText("FR-Chart-Data_Filter")), "0,4,2,4"); + this.add(filterPane = new ChartDataFilterPane(new Bar2DPlot(), parent), "0,6,2,4"); + + addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { addNewCatePane(); } }); - + + } + + /** + * 检查box 是否应该可用状态. + */ + public void checkBoxUse() { + super.checkBoxUse(); + String text = categoryName.getUITextField().getText(); + addButton.setEnabled(StringUtils.isNotEmpty(text)); } - - /** - * 检查box 是否应该可用状态. - */ - public void checkBoxUse() { - super.checkBoxUse(); - String text = categoryName.getUITextField().getText(); - addButton.setEnabled(StringUtils.isNotEmpty(text)); - } - + private TinyFormulaPane addNewCatePane() { final TinyFormulaPane pane = initCategoryBox(StringUtils.EMPTY); pane.setPreferredSize(new Dimension(122, 16)); - + pane.registerChangeListener(uiobListener); - + formualList.add(pane); - + final JPanel newButtonPane = new JPanel(); newButtonPane.setLayout(new FlowLayout(FlowLayout.RIGHT, 0, 0)); newButtonPane.add(pane); - + UIButton delButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/toolbarbtn/close.png")); newButtonPane.add(delButton); - + boxPane.add(newButtonPane); - + delButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { boxPane.remove(newButtonPane); formualList.remove(pane); - checkAddButton(); + checkComponent(); relayoutPane(); } }); delButton.registerChangeListener(uiobListener); - - checkAddButton(); + + checkComponent(); relayoutPane(); - + return pane; } - + private void checkAddButton() { int size = formualList.size(); addButton.setEnabled(size < 2); } - + + protected void checkComponent() { + checkAddButton(); + } + private void relayoutPane() { this.revalidate(); } - /** - * 给组件登记一个观察者监听事件 - * - * @param listener 观察者监听事件 - */ + /** + * 给组件登记一个观察者监听事件 + * + * @param listener 观察者监听事件 + */ public void registerChangeListener(UIObserverListener listener) { uiobListener = listener; } - /** - * 组件是否需要响应添加的观察者事件 - * - * @return 如果需要响应观察者事件则返回true,否则返回false - */ + /** + * 组件是否需要响应添加的观察者事件 + * + * @return 如果需要响应观察者事件则返回true,否则返回false + */ public boolean shouldResponseChangeListener() { return true; } - + public void populateBean(ChartCollection collection) { super.populateBean(collection); - + formualList.clear(); - + TopDefinitionProvider definition = collection.getSelectedChart().getFilterDefinition(); if (definition instanceof NormalReportDataDefinition) { NormalReportDataDefinition reportDefinition = (NormalReportDataDefinition) definition; @@ -160,23 +170,28 @@ public class CategoryPlotMoreCateReportDataContentPane extends CategoryPlotRepor } } } - + checkAddButton(); } - + public void updateBean(ChartCollection collection) { super.updateBean(collection); - + TopDefinitionProvider definition = collection.getSelectedChart().getFilterDefinition(); + Plot plot = collection.getSelectedChart().getPlot(); if (definition instanceof NormalReportDataDefinition) { NormalReportDataDefinition reportDefinition = (NormalReportDataDefinition) definition; - + reportDefinition.clearMoreCate(); - - for(int i = 0, size = formualList.size(); i < size; i++) { - TinyFormulaPane pane = formualList.get(i); - reportDefinition.addMoreCate(canBeFormula(pane.updateBean())); - } + updateMoreCate(reportDefinition, plot); + + } + } + + protected void updateMoreCate(NormalReportDataDefinition reportDefinition, Plot plot) { + for (int i = 0, size = formualList.size(); i < size; i++) { + TinyFormulaPane pane = formualList.get(i); + reportDefinition.addMoreCate(canBeFormula(pane.updateBean())); } } } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java index 9ae7696d96..0b1909f985 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java @@ -4,6 +4,7 @@ import com.fr.base.BaseUtils; import com.fr.base.chart.chartdata.TopDefinitionProvider; import com.fr.chart.chartattr.Bar2DPlot; import com.fr.chart.chartattr.ChartCollection; +import com.fr.chart.chartattr.Plot; import com.fr.chart.chartdata.NormalTableDataDefinition; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; @@ -36,40 +37,44 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD private static final int COMBOX_HEIGHT = 20; private JPanel boxPane; - + private ArrayList boxList = new ArrayList(); private UIButton addButton; - + private UIObserverListener uiobListener = null; - + + public List getBoxList() { + return boxList; + } + public CategoryPlotMoreCateTableDataContentPane() { // do nothing } - + public CategoryPlotMoreCateTableDataContentPane(ChartDataPane parent) { categoryCombox = new UIComboBox(); categoryCombox.setPreferredSize(new Dimension(100,20)); - + JPanel categoryPane = new JPanel(new BorderLayout(4,0)); categoryPane.setBorder(BorderFactory.createMatteBorder(0, 0, 6, 1, getBackground())); - UILabel categoryLabel = new BoldFontTextLabel(Inter.getLocText("FR-Chart-Category_Name") + ":", SwingConstants.RIGHT) ; - categoryLabel.setPreferredSize(new Dimension(75,20)); - - addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")); - addButton.setPreferredSize(new Dimension(20, 20)); - - categoryPane.add(GUICoreUtils.createBorderLayoutPane(new Component[]{categoryCombox, addButton,null,categoryLabel,null})); - - boxPane = new JPanel(); - boxPane.setLayout(new BoxLayout(boxPane, BoxLayout.Y_AXIS)); - - categoryPane.add(boxPane, BorderLayout.SOUTH); - + UILabel categoryLabel = new BoldFontTextLabel(Inter.getLocText("FR-Chart-Category_Name") + ":", SwingConstants.RIGHT) ; + categoryLabel.setPreferredSize(new Dimension(75,20)); + + addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")); + addButton.setPreferredSize(new Dimension(20, 20)); + + categoryPane.add(GUICoreUtils.createBorderLayoutPane(new Component[]{categoryCombox, addButton,null,categoryLabel,null})); + + boxPane = new JPanel(); + boxPane.setLayout(new BoxLayout(boxPane, BoxLayout.Y_AXIS)); + + categoryPane.add(boxPane, BorderLayout.SOUTH); + this.setLayout(new BorderLayout()); this.add(categoryPane, BorderLayout.NORTH); seriesTypeComboxPane = new SeriesTypeUseComboxPane(parent, new Bar2DPlot()); this.add(seriesTypeComboxPane, BorderLayout.SOUTH); - + addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -77,81 +82,85 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD addNewCombox(); relayoutPane(); } - + checkSeriseUse(categoryCombox.getSelectedItem() != null); } }); - + categoryCombox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { checkSeriseUse(categoryCombox.getSelectedItem() != null); makeToolTipUse(categoryCombox); - - checkAddButton(); + + checkComponent(); } }); } - + protected void checkSeriseUse(boolean hasUse) { super.checkSeriseUse(hasUse); - + addButton.setEnabled(hasUse); } - + private UIComboBox addNewCombox() { - final JPanel buttonPane = new JPanel(); - buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT, 0, 2)); - - final UIComboBox combox = new UIComboBox(); - combox.setPreferredSize(new Dimension(COMBOX_WIDTH, COMBOX_HEIGHT)); - - int count = categoryCombox.getItemCount(); - for(int i = 0; i < count; i++) { - combox.addItem(categoryCombox.getItemAt(i)); - } - - combox.registerChangeListener(uiobListener); - combox.addItemListener(new ItemListener() { + final JPanel buttonPane = new JPanel(); + buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT, 0, 2)); + + final UIComboBox combox = new UIComboBox(); + combox.setPreferredSize(new Dimension(COMBOX_WIDTH, COMBOX_HEIGHT)); + + int count = categoryCombox.getItemCount(); + for(int i = 0; i < count; i++) { + combox.addItem(categoryCombox.getItemAt(i)); + } + + combox.registerChangeListener(uiobListener); + combox.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { makeToolTipUse(combox); } }); - - combox.setSelectedItem(categoryCombox.getItemAt(0)); - makeToolTipUse(combox); - - buttonPane.add(combox); - UIButton delButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/toolbarbtn/close.png")); - buttonPane.add(delButton); - boxPane.add(buttonPane); - boxList.add(combox); - - checkAddButton(); - - delButton.addActionListener(new ActionListener() { + + combox.setSelectedItem(categoryCombox.getItemAt(0)); + makeToolTipUse(combox); + + buttonPane.add(combox); + UIButton delButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/toolbarbtn/close.png")); + buttonPane.add(delButton); + boxPane.add(buttonPane); + boxList.add(combox); + + checkComponent(); + + delButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { boxPane.remove(buttonPane); boxList.remove(combox); - checkAddButton(); + checkComponent(); relayoutPane(); } }); - delButton.registerChangeListener(uiobListener); - - return combox; + delButton.registerChangeListener(uiobListener); + + return combox; } - + private void checkAddButton() { int size = boxList.size(); addButton.setEnabled(size < 2 && categoryCombox.getSelectedItem() != null); } - + + protected void checkComponent() { + checkAddButton(); + } + private void relayoutPane() { this.revalidate(); } - + /** *检查 某些Box是否可用 @@ -159,17 +168,17 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD */ public void checkBoxUse(boolean hasUse) { super.checkBoxUse(hasUse); - - checkAddButton(); + + checkComponent(); + } + + protected void refreshBoxListWithSelectTableData(List list) { + super.refreshBoxListWithSelectTableData(list); + + for(int i = 0, size = boxList.size(); i < size; i++) { + refreshBoxItems(boxList.get(i), list); + } } - - protected void refreshBoxListWithSelectTableData(List list) { - super.refreshBoxListWithSelectTableData(list); - - for(int i = 0, size = boxList.size(); i < size; i++) { - refreshBoxItems(boxList.get(i), list); - } - } /** * 给组件登记一个观察者监听事件 @@ -195,9 +204,9 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD */ public void populateBean(ChartCollection collection) { super.populateBean(collection); - + boxList.clear(); - + TopDefinitionProvider top = collection.getSelectedChart().getFilterDefinition(); if(top instanceof NormalTableDataDefinition) { NormalTableDataDefinition normal = (NormalTableDataDefinition)top; @@ -207,28 +216,34 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD box.setSelectedItem(normal.getMoreCateWithIndex(i)); } } - + checkAddButton(); checkSeriseUse(categoryCombox.getSelectedItem() != null); } - + /** * 保存多分类界面到collection * @param collection */ public void updateBean(ChartCollection collection) { super.updateBean(collection); - + TopDefinitionProvider top = collection.getSelectedChart().getFilterDefinition(); - if(top instanceof NormalTableDataDefinition) { - NormalTableDataDefinition normal = (NormalTableDataDefinition)top; + Plot plot = collection.getSelectedChart().getPlot(); + if (top instanceof NormalTableDataDefinition) { + NormalTableDataDefinition normal = (NormalTableDataDefinition) top; normal.clearMoreCate(); - for(int i = 0, size = boxList.size(); i < size; i++) { - UIComboBox box = boxList.get(i); - if(box.getSelectedItem() != null) { - normal.addMoreCate(box.getSelectedItem().toString()); - } + updateMoreCate(normal, plot); + } + } + + protected void updateMoreCate(NormalTableDataDefinition normal, Plot plot) { + for (int i = 0, size = boxList.size(); i < size; i++) { + UIComboBox box = boxList.get(i); + if (box.getSelectedItem() != null) { + normal.addMoreCate(box.getSelectedItem().toString()); } } } + } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/other/ChartInteractivePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/other/ChartInteractivePane.java index f8b002bcf4..0f0df0e7c7 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/other/ChartInteractivePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/other/ChartInteractivePane.java @@ -12,6 +12,7 @@ import com.fr.chart.chartdata.GisMapTableDefinition; import com.fr.chart.web.ChartHyperPoplink; import com.fr.chart.web.ChartHyperRelateCellLink; import com.fr.chart.web.ChartHyperRelateFloatLink; +import com.fr.design.ExtraDesignClassManager; import com.fr.design.beans.BasicBeanPane; import com.fr.design.chart.javascript.ChartEmailPane; import com.fr.design.chart.series.SeriesCondition.impl.ChartHyperPoplinkPane; @@ -21,6 +22,8 @@ import com.fr.design.chart.series.SeriesCondition.impl.FormHyperlinkPane; import com.fr.design.dialog.BasicScrollPane; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; +import com.fr.design.fun.HyperlinkProvider; +import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.frpane.UIBubbleFloatPane; import com.fr.design.gui.frpane.UICorrelationComboBoxPane; import com.fr.design.gui.ibutton.UIButton; @@ -53,9 +56,10 @@ import java.text.DecimalFormat; import java.text.Format; import java.util.ArrayList; import java.util.List; +import java.util.Set; public class ChartInteractivePane extends BasicScrollPane implements UIObserver{ - private static final long serialVersionUID = 3477409806918835992L; + private static final long serialVersionUID = 3477409806918835992L; private static HashMap normalMap = new HashMap(); private static HashMap gisMap = new HashMap(); private static HashMap mapMap = new HashMap(); @@ -69,16 +73,16 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb private static final int TIME_SWITCH_GAP = 40; - private UICheckBox isChartAnimation;// 动态 + private UICheckBox isChartAnimation;// 动态 private UICheckBox isSeriesDragEnable; //系列拖拽 private UICheckBox isAxisZoom;// 缩放 - private UICheckBox isDatapointValue;// 数据点提示 - private UIButton dataPointValueFormat; + private UICheckBox isDatapointValue;// 数据点提示 + private UIButton dataPointValueFormat; - private UICheckBox isDatapointPercent; - private UIButton dataPointPercentFormat; + private UICheckBox isDatapointPercent; + private UIButton dataPointPercentFormat; private UILabel tooltipStyleLabel; private UIComboBox tooltipStyle; @@ -90,55 +94,55 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb private UICheckBox isAddress; private UICheckBox isAddressName; - private UICheckBox isAxisShowToolTip;// 坐标轴提示 + private UICheckBox isAxisShowToolTip;// 坐标轴提示 - protected UICheckBox isAutoRefresh;// 自动刷新 - protected UISpinner autoRefreshTime; + protected UICheckBox isAutoRefresh;// 自动刷新 + protected UISpinner autoRefreshTime; - private UICorrelationComboBoxPane superLink;// 超链 + private UICorrelationComboBoxPane superLink;// 超链 - private FormatPane valueFormatPane; - private FormatPane percentFormatPane; - private Format valueFormat; - private Format percentFormat; + private FormatPane valueFormatPane; + private FormatPane percentFormatPane; + private Format valueFormat; + private Format percentFormat; - private JPanel tooltipPane; - private JPanel axisShowPane; - private JPanel autoRefreshPane; - private JPanel superlinkPane; + private JPanel tooltipPane; + private JPanel axisShowPane; + private JPanel autoRefreshPane; + private JPanel superlinkPane; - private ChartOtherPane parent; + private ChartOtherPane parent; private UICheckBox timeSwitch; private JPanel timeSwitchContainer; private TimeSwitchPane timeSwitchPane; - private static final int SIZEX = 258; - private static final int SIZEY = 209; - private static final int DET = 20; - public ChartInteractivePane(ChartOtherPane parent) { - super(); - this.parent = parent; - } + private static final int SIZEX = 258; + private static final int SIZEY = 209; + private static final int DET = 20; + public ChartInteractivePane(ChartOtherPane parent) { + super(); + this.parent = parent; + } - /** - * 界面标题. + /** + * 界面标题. * @return 返回标题. - */ - public String title4PopupWindow() { - return Inter.getLocText("Chart-Interactive_Tab"); - } - - @Override - protected JPanel createContentPane() { - isChartAnimation = new UICheckBox(Inter.getLocText("Chart-Animation_JSShow")); + */ + public String title4PopupWindow() { + return Inter.getLocText("Chart-Interactive_Tab"); + } + + @Override + protected JPanel createContentPane() { + isChartAnimation = new UICheckBox(Inter.getLocText("Chart-Animation_JSShow")); isSeriesDragEnable = new UICheckBox(Inter.getLocText("Chart-Series_Drag")); - isDatapointValue = new UICheckBox(Inter.getLocText("Chart-Use_Value")); - dataPointValueFormat = new UIButton(Inter.getLocText("Chart-Use_Format")); - isDatapointPercent = new UICheckBox(Inter.getLocText("Chart-Value_Percent")); - dataPointPercentFormat = new UIButton(Inter.getLocText("Chart-Use_Format")); + isDatapointValue = new UICheckBox(Inter.getLocText("Chart-Use_Value")); + dataPointValueFormat = new UIButton(Inter.getLocText("Chart-Use_Format")); + isDatapointPercent = new UICheckBox(Inter.getLocText("Chart-Value_Percent")); + dataPointPercentFormat = new UIButton(Inter.getLocText("Chart-Use_Format")); tooltipStyle = new UIComboBox(new String []{Inter.getLocText("Chart-White_Black"), Inter.getLocText("Chart-Black_White")}); tooltipStyleLabel = new UILabel(Inter.getLocText("Chart-Style_Name")); tooltipShowType = new UIComboBox(new String []{Inter.getLocText("Chart-Series_SingleData"), Inter.getLocText("Chart-Series_AllData")}); @@ -148,13 +152,13 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb isAddress = new UICheckBox(Inter.getLocText("Chart-Gis_Address")); isAddressName = new UICheckBox(Inter.getLocText("Chart-Address_Name")); - isAxisShowToolTip = new UICheckBox(Inter.getLocText("Chart-Interactive_AxisTooltip")); - isAxisZoom = new UICheckBox(Inter.getLocText("Chart-Use_Zoom")); - isAutoRefresh = new UICheckBox(Inter.getLocText(new String[]{"Chart-Use_Auto", "Chart-Use_Refresh"})); - autoRefreshTime = new UISpinner(1, Integer.MAX_VALUE, 1); - superLink = new UICorrelationComboBoxPane(); + isAxisShowToolTip = new UICheckBox(Inter.getLocText("Chart-Interactive_AxisTooltip")); + isAxisZoom = new UICheckBox(Inter.getLocText("Chart-Use_Zoom")); + isAutoRefresh = new UICheckBox(Inter.getLocText(new String[]{"Chart-Use_Auto", "Chart-Use_Refresh"})); + autoRefreshTime = new UISpinner(1, Integer.MAX_VALUE, 1); + superLink = new UICorrelationComboBoxPane(); - isAutoRefresh.addActionListener(new ActionListener() { + isAutoRefresh.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { checkAutoRefresh(); @@ -162,9 +166,9 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb }); timeSwitch = new UICheckBox(Inter.getLocText("FR-Chart-Interactive_timeSwitch")); timeSwitchPane = new TimeSwitchPane(); - initFormatListener(); - return initPaneWithListener(); - } + initFormatListener(); + return initPaneWithListener(); + } private void initFormatListener() { @@ -240,19 +244,19 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb }); } - private void checkAutoRefresh() { - GUICoreUtils.setEnabled(autoRefreshTime, isAutoRefresh.isSelected()); - } - - /** - * 反正后面还有relayout,这边init一下就好了 保证所有的init 加入界面 并且加载入事件. - * @return - */ - private JPanel initPaneWithListener() { - initDataPointToolTipPane(); - initAxisShowPane(); - initAutoRefreshPane(); - initSuperlinkPane(); + private void checkAutoRefresh() { + GUICoreUtils.setEnabled(autoRefreshTime, isAutoRefresh.isSelected()); + } + + /** + * 反正后面还有relayout,这边init一下就好了 保证所有的init 加入界面 并且加载入事件. + * @return + */ + private JPanel initPaneWithListener() { + initDataPointToolTipPane(); + initAxisShowPane(); + initAutoRefreshPane(); + initSuperlinkPane(); initTimeSwitchPane(); @@ -271,7 +275,7 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb }; //初始化界面时 加载事件 return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - } + } private void initTimeSwitchPane(){ timeSwitchContainer = new JPanel(new BorderLayout()); @@ -283,11 +287,11 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb /** * 全部初始化, 对所有的界面 都加入, 然后会加载事件响应. 后续再relayout. */ - private void initDataPointToolTipPane() { - double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double[] columnSize = new double[]{p, f}; - double[] rowSize = new double[]{p, p, p, p, p, p, p}; + private void initDataPointToolTipPane() { + double p = TableLayout.PREFERRED; + double f = TableLayout.FILL; + double[] columnSize = new double[]{p, f}; + double[] rowSize = new double[]{p, p, p, p, p, p, p}; Component[][] components = new Component[][]{ new Component[]{isDatapointValue, dataPointValueFormat}, new Component[]{isDatapointPercent, dataPointPercentFormat}, @@ -298,7 +302,7 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb new Component[]{tooltipStyleLabel, tooltipStyle} }; tooltipPane = TableLayoutHelper.createTableLayoutPane4Chart(new String[]{"ChartData-Tooltip"},components, rowSize, columnSize); - } + } private void relayoutDataPointToolTipPane(Plot plot) { double p = TableLayout.PREFERRED; @@ -333,8 +337,8 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb } else { rowSize = new double[]{p, p, p}; components = new Component[][]{ - new Component[]{isDatapointValue, dataPointValueFormat}, - new Component[]{isDatapointPercent, dataPointPercentFormat}, + new Component[]{isDatapointValue, dataPointValueFormat}, + new Component[]{isDatapointPercent, dataPointPercentFormat}, getTooltipStyleComponent() }; } @@ -370,49 +374,49 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb return new Component[] {TableLayoutHelper.createTableLayoutPane(newComponents, newRowSize, newColumnSize), null}; } - private void initAxisShowPane() { - double p = TableLayout.PREFERRED; - double[] columnSize = new double[]{p}; - double[] rowSize = new double[]{p}; - Component[][] components = new Component[][]{ - new Component[]{isAxisShowToolTip}, - }; - axisShowPane = TableLayoutHelper.createTableLayoutPane4Chart(new String[]{"ChartF-Axis", "Chart-Interactive"},components, rowSize, columnSize); - } - - private void initAutoRefreshPane() { - double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double[] columnSize = new double[]{p, f}; - double[] rowSize = new double[]{p, p, p,p}; - - Component[][] components = new Component[][]{ - new Component[]{isAutoRefresh,null}, - new Component[]{GUICoreUtils.createFlowPane(new Component[]{ - new UILabel(Inter.getLocText("Chart-Time_Interval")), - autoRefreshTime, - new UILabel(Inter.getLocText("Chart-Time_Seconds")) - }, 1)}, + private void initAxisShowPane() { + double p = TableLayout.PREFERRED; + double[] columnSize = new double[]{p}; + double[] rowSize = new double[]{p}; + Component[][] components = new Component[][]{ + new Component[]{isAxisShowToolTip}, + }; + axisShowPane = TableLayoutHelper.createTableLayoutPane4Chart(new String[]{"ChartF-Axis", "Chart-Interactive"},components, rowSize, columnSize); + } + + private void initAutoRefreshPane() { + double p = TableLayout.PREFERRED; + double f = TableLayout.FILL; + double[] columnSize = new double[]{p, f}; + double[] rowSize = new double[]{p, p, p,p}; + + Component[][] components = new Component[][]{ + new Component[]{isAutoRefresh,null}, + new Component[]{GUICoreUtils.createFlowPane(new Component[]{ + new UILabel(Inter.getLocText("Chart-Time_Interval")), + autoRefreshTime, + new UILabel(Inter.getLocText("Chart-Time_Seconds")) + }, 1)}, new Component[]{new UILabel("" + Inter.getLocText("FR-Chart-AutoRefresh_NotSupportIMGAndReportData") + ""), null}, - }; - autoRefreshPane = TableLayoutHelper.createTableLayoutPane4Chart(new String[]{"Data-Check"},components, rowSize, columnSize); - } - - private void initSuperlinkPane() { - double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double[] columnSize = new double[]{p, f}; - double[] rowSize = new double[]{p}; - Component[][] components = new Component[][]{ - new Component[]{superLink, null}, - - }; - superlinkPane = TableLayoutHelper.createTableLayoutPane4Chart(new String[]{"Hyperlink"},components, rowSize, columnSize); - } - - private void relayoutWithPlot(Plot plot) { - this.removeAll(); - double p = TableLayout.PREFERRED; + }; + autoRefreshPane = TableLayoutHelper.createTableLayoutPane4Chart(new String[]{"Data-Check"},components, rowSize, columnSize); + } + + private void initSuperlinkPane() { + double p = TableLayout.PREFERRED; + double f = TableLayout.FILL; + double[] columnSize = new double[]{p, f}; + double[] rowSize = new double[]{p}; + Component[][] components = new Component[][]{ + new Component[]{superLink, null}, + + }; + superlinkPane = TableLayoutHelper.createTableLayoutPane4Chart(new String[]{"Hyperlink"},components, rowSize, columnSize); + } + + private void relayoutWithPlot(Plot plot) { + this.removeAll(); + double p = TableLayout.PREFERRED; double[] columnSize = new double[]{TableLayout.FILL}; double[] rowSize = new double[]{p, p, p}; @@ -427,7 +431,7 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb double[] row = new double[]{p, p, p, p, p, p}; reloaPane(TableLayoutHelper.createTableLayoutPane(components, row, columnSize)); - } + } private Component[] getChartAnimatePane(Plot plot, double[] row, double[] col) { @@ -455,9 +459,9 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb timeSwitchContainer.add(timeSwitch, BorderLayout.CENTER); if(timeSwitch.isSelected()){ double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double[] columnSize = new double[]{TIME_SWITCH_GAP,f}; - double[] rowSize = new double[]{p}; + double f = TableLayout.FILL; + double[] columnSize = new double[]{TIME_SWITCH_GAP,f}; + double[] rowSize = new double[]{p}; Component[][] components = new Component[][]{ new Component[]{null, timeSwitchPane}, }; @@ -523,15 +527,15 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb return new Component[]{superlinkPane}; } - @Override - public void populateBean(Chart chart) { - if (chart == null || chart.getPlot() == null) { - return; - } + @Override + public void populateBean(Chart chart) { + if (chart == null || chart.getPlot() == null) { + return; + } - Plot plot = chart.getPlot(); + Plot plot = chart.getPlot(); relayoutWithGis(chart, plot); - relayoutWithPlot(plot); + relayoutWithPlot(plot); populateChartAnimate(chart, plot); populateChartScale(plot); @@ -540,8 +544,8 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb populateAutoRefresh(chart); populateHyperlink(plot); - checkAutoRefresh(); - } + checkAutoRefresh(); + } private void relayoutWithGis(Chart chart, Plot plot) { if(plot.isSupportAddress4Gis()) { @@ -579,7 +583,7 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb timeSwitch.setEnabled(false); //只有坐标轴为时间坐标轴,并且勾选了图表缩放的时候,才支持时间切换 if(!plot.isSupportZoomCategoryAxis() || !isAxisZoom.isSelected()){ - return; + return; } if(plot.getxAxis() ==null && !plot.getxAxis().isDate()){ @@ -655,6 +659,13 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb private void populateHyperlink(Plot plot) { HashMap paneMap = renewMapWithPlot(plot); + //安装平台内打开插件时,添加相应按钮 + Set providers = ExtraDesignClassManager.getInstance().getArray(HyperlinkProvider.XML_TAG); + for (HyperlinkProvider provider : providers) { + NameableCreator nc = provider.createHyperlinkCreator(); + paneMap.put(nc.getHyperlink(), nc.getUpdatePane()); + } + List list = refreshList(paneMap); superLink.refreshMenuAndAddMenuAction(list); @@ -672,13 +683,13 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb superLink.doLayout(); } - @Override - public void updateBean(Chart chart) { - if (chart == null || chart.getPlot() == null) { - return; - } + @Override + public void updateBean(Chart chart) { + if (chart == null || chart.getPlot() == null) { + return; + } - Plot plot = chart.getPlot(); + Plot plot = chart.getPlot(); updateChartAnimate(chart, plot); updateChartScale(plot); @@ -686,7 +697,7 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb updateAxisTip(plot); updateAutoRefresh(plot); updateHyperlink(plot); - } + } private void updateChartAnimate(Chart chart, Plot plot) { if(plot.isSupportAnimate()) { @@ -818,7 +829,7 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb } - protected Class getUseMap(HashMap map, Object key) { + protected Class getUseMap(HashMap map, Object key) { if(map.get(key) != null){ return (Class)map.get(key); } @@ -832,33 +843,33 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb } } return null; - } - - protected List refreshList(HashMap map) { - List list = new ArrayList(); + } - list.add(new UIMenuNameableCreator(Inter.getLocText("Chart-Link_Reportlet"), + protected List refreshList(HashMap map) { + List list = new ArrayList(); + + list.add(new UIMenuNameableCreator(Inter.getLocText("Chart-Link_Reportlet"), new ReportletHyperlink(), getUseMap(map, ReportletHyperlink.class))); - list.add(new UIMenuNameableCreator(Inter.getLocText("Chart-Link_Mail"), new EmailJavaScript(), ChartEmailPane.class)); - list.add(new UIMenuNameableCreator(Inter.getLocText("Chart-Link_Web"), + list.add(new UIMenuNameableCreator(Inter.getLocText("Chart-Link_Mail"), new EmailJavaScript(), ChartEmailPane.class)); + list.add(new UIMenuNameableCreator(Inter.getLocText("Chart-Link_Web"), new WebHyperlink(), getUseMap(map, WebHyperlink.class))); - list.add(new UIMenuNameableCreator(Inter.getLocText("Chart-Link_Dynamic_Parameters"), + list.add(new UIMenuNameableCreator(Inter.getLocText("Chart-Link_Dynamic_Parameters"), new ParameterJavaScript(), getUseMap(map, ParameterJavaScript.class))); - list.add(new UIMenuNameableCreator("JavaScript", new JavaScriptImpl(), getUseMap(map, JavaScriptImpl.class))); + list.add(new UIMenuNameableCreator("JavaScript", new JavaScriptImpl(), getUseMap(map, JavaScriptImpl.class))); - list.add(new UIMenuNameableCreator(Inter.getLocText("Chart-Float_Chart"), + list.add(new UIMenuNameableCreator(Inter.getLocText("Chart-Float_Chart"), new ChartHyperPoplink(), getUseMap(map, ChartHyperPoplink.class))); - list.add(new UIMenuNameableCreator(Inter.getLocText("Chart-Link_Cell"), + list.add(new UIMenuNameableCreator(Inter.getLocText("Chart-Link_Cell"), new ChartHyperRelateCellLink(), getUseMap(map, ChartHyperRelateCellLink.class))); - list.add(new UIMenuNameableCreator(Inter.getLocText("Chart-Link_Float"), + list.add(new UIMenuNameableCreator(Inter.getLocText("Chart-Link_Float"), new ChartHyperRelateFloatLink(), getUseMap(map, ChartHyperRelateFloatLink.class))); - - FormHyperlinkProvider hyperlink = StableFactory.getMarkedInstanceObjectFromClass(FormHyperlinkProvider.XML_TAG, FormHyperlinkProvider.class); + + FormHyperlinkProvider hyperlink = StableFactory.getMarkedInstanceObjectFromClass(FormHyperlinkProvider.XML_TAG, FormHyperlinkProvider.class); list.add(new UIMenuNameableCreator(Inter.getLocText("Chart-Link_Form"), - hyperlink, getUseMap(map, FormHyperlinkProvider.class))); - - return list; - } + hyperlink, getUseMap(map, FormHyperlinkProvider.class))); + + return list; + } private HashMap renewMapWithPlot(Plot plot) { if(plot instanceof PiePlot) { @@ -1021,8 +1032,8 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb private HashMap getNormalPlotHyperMap() { if(normalMap.isEmpty()) { - FormHyperlinkProvider fp = StableFactory.getMarkedInstanceObjectFromClass(FormHyperlinkProvider.XML_TAG, FormHyperlinkProvider.class); - + FormHyperlinkProvider fp = StableFactory.getMarkedInstanceObjectFromClass(FormHyperlinkProvider.XML_TAG, FormHyperlinkProvider.class); + normalMap.put(ReportletHyperlink.class, ReportletHyperlinkPane.CHART.class); normalMap.put(EmailJavaScript.class, ChartEmailPane.class); normalMap.put(WebHyperlink.class, WebHyperlinkPane.CHART.class); @@ -1041,27 +1052,27 @@ public class ChartInteractivePane extends BasicScrollPane implements UIOb } return normalMap; } - - @Override - public Chart updateBean() { - return null; - } + + @Override + public Chart updateBean() { + return null; + } /** - * 给组件登记一个观察者监听事件 - * - * @param listener 观察者监听事件 - */ + * 给组件登记一个观察者监听事件 + * + * @param listener 观察者监听事件 + */ public void registerChangeListener(UIObserverListener listener) { timeSwitch.registerChangeListener(listener); timeSwitchPane.registerChangeListener(listener); } /** - * 组件是否需要响应添加的观察者事件 - * - * @return 如果需要响应观察者事件则返回true,否则返回false - */ + * 组件是否需要响应添加的观察者事件 + * + * @return 如果需要响应观察者事件则返回true,否则返回false + */ public boolean shouldResponseChangeListener() { return true; } diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java index 0afd0cd60c..299d878d03 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java @@ -133,7 +133,7 @@ public abstract class AbstractChartTypePane extends FurtherBasicBeanPane{ } //子类覆盖 - protected Plot getSelectedClonedPlot(){ + protected T getSelectedClonedPlot(){ return null; } From 4e827e5f24ac6c1c9797aa7b753eb14cad441e66 Mon Sep 17 00:00:00 2001 From: eason-skx Date: Mon, 31 Jul 2017 18:29:57 +0800 Subject: [PATCH 39/96] =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/chart/gui/ChartTypePane.java | 4 ++++ .../chart/gui/type/AbstractChartTypePane.java | 11 ++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java index 0b5cfe6c92..d5f170ef8d 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java @@ -17,6 +17,7 @@ import com.fr.design.mainframe.chart.PaneTitleConstants; import com.fr.design.mainframe.chart.gui.item.FlexibleComboBox; import com.fr.design.mainframe.chart.gui.item.ItemEventType; import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane; +import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; import com.fr.stable.StringUtils; @@ -238,6 +239,9 @@ public class ChartTypePane extends AbstractChartAttrPane{ for (int i = 0; i < this.cards.size(); i++) { FurtherBasicBeanPane pane = cards.get(i); if (pane.accept(ob)) { + + GUICoreUtils.setEnabled(this, ob.isValidPlot()); + pane.populateBean(ob); Object item = pane.title4PopupWindow(); for (int j = 0; j < cardNames.length; j++) { diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java index 299d878d03..fb96709bec 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java @@ -43,6 +43,7 @@ public abstract class AbstractChartTypePane extends FurtherBasicBeanPane{ protected List styleList; protected JPanel stylePane; //样式布局的面板 + protected JPanel typePane; protected abstract String[] getTypeIconPath(); protected abstract String[] getTypeTipName(); protected abstract String[] getTypeLayoutPath(); @@ -70,10 +71,10 @@ public abstract class AbstractChartTypePane extends FurtherBasicBeanPane{ checkDemosBackground(); - JPanel typePane = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(4); + this.typePane = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(4); for(int i = 0; i < typeDemo.size(); i++) { ChartImagePane tmp = typeDemo.get(i); - typePane.add(tmp); + this.typePane.add(tmp); tmp.setDemoGroup(typeDemo.toArray(new ChartSelectDemoPane[typeDemo.size()])); } @@ -99,7 +100,7 @@ public abstract class AbstractChartTypePane extends FurtherBasicBeanPane{ stylePane.setVisible(false); } - JPanel panel = TableLayoutHelper.createTableLayoutPane(getPaneComponents(typePane),rowSize,columnSize); + JPanel panel = TableLayoutHelper.createTableLayoutPane(getPaneComponents(this.typePane),rowSize,columnSize); this.setLayout(new BorderLayout()); this.add(panel,BorderLayout.CENTER); } @@ -586,6 +587,10 @@ public abstract class AbstractChartTypePane extends FurtherBasicBeanPane{ && chart.getPlot().getPlotStyle() != ChartConstants.STYLE_NONE; } + protected JPanel getTypePane(){ + return this.typePane; + } + public Chart getDefaultChart() { return BarIndependentChart.barChartTypes[0]; } From c438614dbb59f90376f2e942b96c25ab96cb27e6 Mon Sep 17 00:00:00 2001 From: eason-skx Date: Mon, 31 Jul 2017 18:33:59 +0800 Subject: [PATCH 40/96] pmd --- .../design/mainframe/chart/gui/type/AbstractChartTypePane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java index fb96709bec..1f9be209f3 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java @@ -39,7 +39,7 @@ public abstract class AbstractChartTypePane extends FurtherBasicBeanPane{ protected static final int BAIDU = 0; protected static final int GOOGLE = 1; - protected List typeDemo; + private List typeDemo; protected List styleList; protected JPanel stylePane; //样式布局的面板 From 116b0e7c0ace5fbb1a4c0cb2122e1037404e5503 Mon Sep 17 00:00:00 2001 From: eason-skx Date: Mon, 31 Jul 2017 18:34:42 +0800 Subject: [PATCH 41/96] pmd --- .../mainframe/chart/gui/type/AbstractChartTypePane.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java index 1f9be209f3..1b3a684072 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java @@ -39,11 +39,11 @@ public abstract class AbstractChartTypePane extends FurtherBasicBeanPane{ protected static final int BAIDU = 0; protected static final int GOOGLE = 1; - private List typeDemo; + protected List typeDemo; protected List styleList; protected JPanel stylePane; //样式布局的面板 - protected JPanel typePane; + private JPanel typePane; protected abstract String[] getTypeIconPath(); protected abstract String[] getTypeTipName(); protected abstract String[] getTypeLayoutPath(); From 94a59be635ad7592e3a31f0724ade9345c47c834 Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Tue, 1 Aug 2017 11:43:27 +0800 Subject: [PATCH 42/96] =?UTF-8?q?REPORT-3406=20win10=E5=86=85=E5=AD=98?= =?UTF-8?q?=E4=B8=8D=E8=B6=B3=E6=97=B6=E6=89=BE=E4=B8=8D=E5=88=B0=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E6=B5=8F=E8=A7=88=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/start/StartServer.java | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/designer_base/src/com/fr/start/StartServer.java b/designer_base/src/com/fr/start/StartServer.java index e21beef7b1..7c5b77f524 100644 --- a/designer_base/src/com/fr/start/StartServer.java +++ b/designer_base/src/com/fr/start/StartServer.java @@ -14,10 +14,7 @@ import com.fr.env.SignIn; import com.fr.general.ComparatorUtils; import com.fr.general.GeneralContext; import com.fr.general.Inter; -import com.fr.stable.EnvChangedListener; -import com.fr.stable.ProductConstants; -import com.fr.stable.StableUtils; -import com.fr.stable.StringUtils; +import com.fr.stable.*; import com.fr.stable.project.ProjectConstants; import com.fr.start.server.JettyHost; @@ -154,8 +151,7 @@ public class StartServer { Desktop.getDesktop().browse(new URI(uri)); } catch (IOException e) { - JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer_Set_default_browser")); - FRContext.getLogger().errorWithServerLevel(e.getMessage(), e); + startBrowserFromCommand(uri, e); } catch (URISyntaxException e) { FRContext.getLogger().errorWithServerLevel(e.getMessage(), e); } catch (Exception e) { @@ -164,6 +160,20 @@ public class StartServer { } } + private static void startBrowserFromCommand(String uri, IOException e) { + if (OperatingSystem.isWindows()) { + try { + // win10 内存用到到80%左右的时候, Desktop.browser经常提示"存储空间不足, 无法处理改命令", 用rundll32可以打开. + Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + uri); + } catch (IOException ee) { + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer_Set_default_browser")); + FRContext.getLogger().errorWithServerLevel(e.getMessage(), e); + } + } else { + FRContext.getLogger().errorWithServerLevel(e.getMessage(), e); + } + } + private static class InformationPane extends BasicPane { private static final long serialVersionUID = 1L; From 1347e32ec7eea878cb53ada500c47ffa8ac3fcbc Mon Sep 17 00:00:00 2001 From: richie Date: Tue, 1 Aug 2017 14:45:17 +0800 Subject: [PATCH 43/96] =?UTF-8?q?BI-6684=20License=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=E6=9A=82=E6=97=B6=E8=BF=98=E5=8E=9F=EF=BC=8C=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=88=B0=E9=80=92=E5=BD=92=EF=BC=8C=E5=A4=84=E7=90=86=E6=AF=94?= =?UTF-8?q?=E8=BE=83=E9=BA=BB=E7=83=A6=EF=BC=8C=E6=94=BE9.0=E4=B8=AD?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/file/SwitchExistEnv.java | 21 ++----- .../roleAuthority/ReportAndFSManagePane.java | 2 +- designer_base/src/com/fr/env/RemoteEnv.java | 63 ++++++++++++++----- .../com/fr/design/chart/ChartTypePane.java | 20 +++--- 4 files changed, 61 insertions(+), 45 deletions(-) diff --git a/designer_base/src/com/fr/design/actions/file/SwitchExistEnv.java b/designer_base/src/com/fr/design/actions/file/SwitchExistEnv.java index da723c8ed0..0777d5991d 100644 --- a/designer_base/src/com/fr/design/actions/file/SwitchExistEnv.java +++ b/designer_base/src/com/fr/design/actions/file/SwitchExistEnv.java @@ -3,11 +3,13 @@ package com.fr.design.actions.file; import com.fr.base.BaseUtils; import com.fr.base.Env; import com.fr.base.FRContext; -import com.fr.design.data.DesignTableDataManager; -import com.fr.design.data.tabledata.ResponseDataSourceChange; +import com.fr.base.FRCoreContext; import com.fr.dav.LocalEnv; import com.fr.design.DesignerEnvManager; import com.fr.design.actions.UpdateAction; +import com.fr.design.data.DesignTableDataManager; +import com.fr.design.data.tabledata.ResponseDataSourceChange; +import com.fr.design.dialog.InformationWarnPane; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; @@ -15,22 +17,18 @@ import com.fr.design.mainframe.TemplatePane; import com.fr.design.menu.KeySetUtils; import com.fr.design.menu.MenuDef; import com.fr.design.menu.SeparatorDef; -import com.fr.design.dialog.InformationWarnPane; import com.fr.env.RemoteEnv; import com.fr.env.SignIn; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.GeneralContext; import com.fr.general.Inter; -import com.fr.stable.LicUtils; -import com.fr.stable.ProductConstants; import com.fr.stable.EnvChangedListener; +import com.fr.stable.ProductConstants; import com.fr.stable.StringUtils; -import com.fr.stable.help.FineClassLoader; import javax.swing.*; import java.awt.event.ActionEvent; -import java.lang.reflect.Method; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -131,14 +129,7 @@ public class SwitchExistEnv extends MenuDef { } private void resetLicenseBytes() { - FineClassLoader classLoader = new FineClassLoader(); - try { - Class clazz = classLoader.loadClass("com.fr.base.FRCoreContext"); - Method retryMethod = clazz.getMethod("retryLicLock"); - retryMethod.invoke(clazz); - } catch (Exception ignore) { - - } + FRCoreContext.retryLicLock(); } } diff --git a/designer_base/src/com/fr/design/roleAuthority/ReportAndFSManagePane.java b/designer_base/src/com/fr/design/roleAuthority/ReportAndFSManagePane.java index f6a78eab47..4555c336bb 100644 --- a/designer_base/src/com/fr/design/roleAuthority/ReportAndFSManagePane.java +++ b/designer_base/src/com/fr/design/roleAuthority/ReportAndFSManagePane.java @@ -1 +1 @@ -package com.fr.design.roleAuthority; import com.fr.base.BaseUtils; import com.fr.design.constants.UIConstants; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.tabledata.Prepare4DataSourceChange; import com.fr.design.actions.UpdateAction; import com.fr.design.gui.ibutton.UIHeadGroup; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.itoolbar.UIToolbar; import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DockingView; import com.fr.design.menu.ToolBarDef; import com.fr.general.Inter; import com.fr.general.VT4FR; import com.fr.stable.StableUtils; import com.fr.stable.help.FineClassLoader; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.TreeSelectionEvent; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import java.awt.*; import java.awt.event.*; import java.lang.reflect.Method; import java.util.Enumeration; /** * 设计器左下角面板,用于在权限编辑时存放角色 * Author : daisy * Date: 13-8-30 * Time: 下午2:22 */ public class ReportAndFSManagePane extends DockingView implements Prepare4DataSourceChange { private static final int REPORT_PLATEFORM_MANAGE = 0; private static final int FS_MANAGE = 1; private static final int LEFT_GAP = -125; private static boolean isSupportFS = false; private TreePath treePath = null; private static ReportAndFSManagePane singleton = new ReportAndFSManagePane(); private static RoleTree roleTree; // carl:我先屏了,现在半拉子,等客户要了再好好做 // private AddAction addAction = new AddAction(); // private RemoveAction removeAction = new RemoveAction(); private RefreshAction refreshAction = new RefreshAction(); private UIHeadGroup buttonGroup; private RoleSourceOP op; protected String[] roleNames = new String[2]; public synchronized static ReportAndFSManagePane getInstance() { singleton.op = new RoleSourceOP(); singleton.op.setDataMode(isSupportFS ? FS_MANAGE : REPORT_PLATEFORM_MANAGE); singleton.setDefaultSelectedRole(); return singleton; } public ReportAndFSManagePane() { initRoleTree(); this.setLayout(new BorderLayout(4, 0)); this.setBorder(null); this.add(iniToolBarPane(), BorderLayout.NORTH); refreshAction.setEnabled(true); UIScrollPane scrollPane = new UIScrollPane(roleTree); scrollPane.setBorder(BorderFactory.createEmptyBorder(0, 24, 0, 0)); scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); initbuttonGroup(); JPanel jPanel = new JPanel(new BorderLayout(4, 4)); JPanel buttonPane = new JPanel(new GridLayout()); buttonPane.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, UIConstants.LINE_COLOR)); buttonPane.add(buttonGroup, BorderLayout.CENTER); jPanel.add(buttonPane, BorderLayout.NORTH); jPanel.add(scrollPane, BorderLayout.CENTER); this.add(jPanel, BorderLayout.CENTER); registerDSChangeListener(); } private void initRoleTree() { roleTree = new RoleTree() { public void refreshRoleTree(String selectedRole) { super.refreshRoleTree(selectedRole); changeAlreadyEditedPaneRole(selectedRole); } protected void doWithValueChanged(TreeSelectionEvent e) { super.doWithValueChanged(e); TreeNode root = (TreeNode) roleTree.getModel().getRoot(); TreePath parent = new TreePath(root); setSelectedRole(roleTree.getSelectedRoleName(), parent); } protected void setTabRoleName(String roleName) { roleNames[getMode()] = roleTree.getSelectedRoleName(); } }; roleTree.setEnabled(true); roleTree.setEditable(false); // RoleTreeCellEditor treeCellEditor = new RoleTreeCellEditor(new UITextField()); // treeCellEditor.addCellEditorListener(treeCellEditor); // roleTree.setCellEditor(treeCellEditor); roleTree.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { super.mouseClicked(e); roleTree.setEditable(false); // int row = roleTree.getRowForLocation(e.getX(), e.getY()); // TreePath path = roleTree.getPathForLocation(e.getX(), e.getY()); // if (e.getClickCount() == 2 && buttonGroup.getSelectedIndex() == REPORT_PLATEFORM_MANAGE) { // PrivilegeManagerProvider pm = PrivilegeManager.getProviderInstance(); // AuthenticationProvider ap = pm.getAuthenticationProvider(); // if (!(ap instanceof DaoAuthenticationProvider)) { // roleTree.setEditable(true); // roleTree.startEditingAtPath(path); // treePath = path; // } // } } }); } private void changeAlreadyEditedPaneRole(String selectedRole) { RolesAlreadyEditedPane.getInstance().refreshDockingView(); RoleTree roleTree = RolesAlreadyEditedPane.getInstance().getRoleTree(); TreeNode root = (TreeNode) roleTree.getModel().getRoot(); TreePath parent = new TreePath(root); roleTree.setSelectedRole(selectedRole, parent); } public void setDefaultSelectedRole() { //设置选中的节点 TreeNode root = (TreeNode) roleTree.getModel().getRoot(); TreePath parent = new TreePath(root); ExpandMutableTreeNode node = (ExpandMutableTreeNode) parent.getLastPathComponent(); String selectedRole = null; if (singleton != null) { selectedRole = roleNames[getMode()]; } if (selectedRole == null) { if (node.getChildCount() <= 0 || node.getFirstChild().getChildCount() <= 0) { return; } selectedRole = node.getFirstChild().getChildAt(0).toString(); } roleTree.setSelectedRole(selectedRole, parent); } public RoleTree getRoleTree() { return roleTree; } /** * 检查f) 每增删改一个角色信息(及时保存),先对比下privilege下之前的角色信息有没有发生变化(即在此期间有没有在其他途径中修改过) */ private void checkChanges() { //如若有变化,则弹出下面的对话框 int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("FR-Designer_Role_changed_isRefresh") + "?", Inter.getLocText("FR-Designer_Refresh"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE); if (returnVal == JOptionPane.OK_OPTION) { roleTree.refreshTreeNode(); expandTree(roleTree, true); roleTree.updateUI(); } } private JPanel iniToolBarPane() { ToolBarDef toolbarDef = new ToolBarDef(); toolbarDef.addShortCut(refreshAction); UIToolbar toolBar = ToolBarDef.createJToolBar(); toolbarDef.updateToolBar(toolBar); JPanel toolbarPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); toolbarPane.add(toolBar, BorderLayout.CENTER); return toolbarPane; } private void initbuttonGroup() { isSupportFS = supportFineDecision(); Icon[] iconArray = null; String[] textArray = null; if (isSupportFS) { iconArray = new Icon[]{BaseUtils.readIcon("/com/fr/web/images/platform/demo.png")}; textArray = new String[]{Inter.getLocText("FR-Designer_FS_Name")}; } else { iconArray = new Icon[]{BaseUtils.readIcon("/com/fr/web/images/platform/platform_16_16.png")}; textArray = new String[]{Inter.getLocText("M_Server-Platform_Manager")}; } buttonGroup = new UIHeadGroup(iconArray, textArray) { public void tabChanged(int index) { roleTree.setEditable(false); if (op != null) { op.setDataMode(getMode()); //判断是否可编辑 refreshDockingView(); } setDefaultSelectedRole(); if (singleton != null) { changeAlreadyEditedPaneRole(roleNames[getMode()]); } } }; buttonGroup.setBorder(BorderFactory.createMatteBorder(1, LEFT_GAP, 0, 0, UIConstants.LINE_COLOR)); buttonGroup.setNeedLeftRightOutLine(false); } private boolean supportFineDecision() { FineClassLoader classLoader = new FineClassLoader(); byte[] bytes = null; try { Class clazz = classLoader.loadClass("com.fr.base.FRCoreContext"); Method method = clazz.getMethod("getBytes"); bytes = (byte[]) method.invoke(clazz); } catch (Exception ignore) { } return VT4FR.isLicAvailable(bytes) && VT4FR.FS_BI.support(); } private int getMode(){ return isSupportFS?FS_MANAGE: REPORT_PLATEFORM_MANAGE; } // /** // * 检查看看是否可以增删刷新按钮是都可以编辑,并且检查角色树是不是可以编辑 // */ // public void checkToolButtonsEnabled() { // if (buttonGroup.getSelectedIndex() == REPORT_PLATEFORM_MANAGE) { // PrivilegeManagerProvider pm = PrivilegeManager.getProviderInstance(); // AuthenticationProvider ap = pm.getAuthenticationProvider(); // PrivilegeFilter pf = pm.getPrivilegeFilter(); // boolean isClickable = !(ap instanceof DaoAuthenticationProvider) // && pf instanceof AuthorityControlFilter; // addAction.setEnabled(isClickable); // removeAction.setEnabled(isClickable); // } else { // addAction.setEnabled(false); // removeAction.setEnabled(false); // } // // } /** * 刷新界面 */ public void refreshDockingView() { populate(new RoleSourceOP()); // this.checkToolButtonsEnabled(); } private void populate(RoleSourceOP op) { this.op = op; roleTree.populate(op); expandTree(roleTree, true); } public String getViewTitle() { return null; } public Icon getViewIcon() { return null; } /** * 最佳定位 * @return 定位 */ public Location preferredLocation() { return null; } /** * 注册数据库改变的响应的Listener */ public void registerDSChangeListener() { DesignTableDataManager.addDsChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { roleTree.refreshTreeNode(); expandTree(roleTree, true); roleTree.updateUI(); } }); } // private class AddAction extends UpdateAction { // public AddAction() { // this.setName(Inter.getLocText("Add")); // this.setSmallIcon(BaseUtils.readIcon("/com/fr/base/images/cell/control/add.png")); // } // // @Override // public void actionPerformed(ActionEvent e) { // refreshDockingView(); // // DefaultTreeModel treeModel = (DefaultTreeModel) roleTree.getModel(); // ExpandMutableTreeNode root = (ExpandMutableTreeNode) treeModel.getRoot(); // ExpandMutableTreeNode parentNode = (ExpandMutableTreeNode) root.getChildAt(0); // String newName = Inter.getLocText("newNode") + (++newIndex); // parentNode.add(new ExpandMutableTreeNode(newName)); // op.addAction(newName); // roleTree.updateUI(); // // try { // synchronized (AuthorityRoleDAOManager.class) { // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(true); // // if (AuthorityRoleDAOManager.getAuthorityAllocation(pf, newName) != null) { // newName = Inter.getLocText("newNode") + (++newIndex); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // } // // AuthorityRoleDAOManager.addAuthorityRole(pf, new Authority(newName), new Allocation(), false, true); // // AuthorityRoleDAOManager.doEnd(pf); // } // } catch (Exception e1) { // FRContext.getLogger().error(e1.getMessage(), e1); // } // } // } // private class RemoveAction extends UpdateAction { // // public RemoveAction() { // this.setName(Inter.getLocText("Remove")); // this.setSmallIcon(UIConstants.CLEAR_ICON); // } // // @Override // public void actionPerformed(ActionEvent e) { // // // NameObject selectedNO = roleTree.getSelectedNameObject(); // // if (selectedNO == null) { // return; // } // // int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("Utils-Are_you_sure_to_remove_the_selected_item") + ":" + selectedNO.getName() + "?", // Inter.getLocText("Remove"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); // if (returnVal == JOptionPane.OK_OPTION) { // op.removeAction(selectedNO.getName()); // // try { // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(true); // // AuthorityRoleDAOManager.removeAuthorityRole(pf, new Authority(selectedNO.getName()), true); // AuthorityRoleDAOManager.doEnd(pf); // } catch (Exception e1) { // FRContext.getLogger().error(e1.getMessage(), e1); // } // // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // roleTree.updateUI(); // roleTree.requestFocus(); // roleTree.setSelectionRow(roleTree.getRowCount() - 1); // } // } // } /* * 刷新ReportletsTree */ private class RefreshAction extends UpdateAction { public RefreshAction() { this.setName(Inter.getLocText("FR-Designer_Refresh")); this.setSmallIcon(UIConstants.REFRESH_ICON); } @Override public void actionPerformed(ActionEvent evt) { roleTree.refreshTreeNode(); expandTree(roleTree, true); roleTree.updateUI(); } } // private class RoleTreeCellEditor extends DefaultCellEditor implements TreeCellEditor, CellEditorListener { // // private NameObject editingNO; // private String oldName; // private String newName; // private UITextField jTextField; // // public RoleTreeCellEditor(final UITextField textField) { // super(textField); // this.jTextField = textField; // this.jTextField.setPreferredSize(new Dimension(DesignerEnvManager.getEnvManager().getLastWestRegionContainerWidth() - 5, this.jTextField.getHeight())); // } // // @Override // public Component getTreeCellEditorComponent(JTree tree, Object value, boolean isSelected, boolean expanded, boolean leaf, int row) { // editingNO = ReportAndFSManagePane.this.roleTree.getSelectedNameObject(); // oldName = editingNO.getName(); // // delegate.setValue(oldName); // // editorComponent.setPreferredSize(new java.awt.Dimension(ReportAndFSManagePane.this.getPreferredSize().width, editorComponent.getPreferredSize().height)); // // return editorComponent; // } // // @Override // // public boolean isCellEditable(EventObject anEvent) { // NameObject no = ReportAndFSManagePane.this.roleTree.getSelectedNameObject(); // return !(no.getName() == Inter.getLocText("Role")); // } // // @Override // public Object getCellEditorValue() { // newName = super.getCellEditorValue().toString(); // editingNO.setName(newName); // return editingNO; // } // // // private boolean checkRoleNameNotEmpty() { // refreshDockingView(); // // String currentText = delegate.getCellEditorValue().toString(); // boolean isContained = false; // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(false); // if (pf != null && // !ComparatorUtils.equals(oldName, currentText)) { // try { // Iterator iterator = AuthorityRoleDAOManager.authorityAllocationIterator(pf); // // while (iterator.hasNext()) { // AuthorityAllocation authorityAllocation = (AuthorityAllocation) ((Map.Entry) iterator.next()) // .getValue(); // Authority _authority = authorityAllocation.getAuthority(); // if(ComparatorUtils.equals(_authority.getName(), currentText)){ // isContained = true; // break; // } // } // } catch (Exception e) { // } // } // // if (currentText.isEmpty() || isContained) { // JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("RoleName_Can_Not_Be_Null") + "!"); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // delegate.setValue(oldName); // return false; // } // return true; // } // // /* // * 下面两个方法是CellEditorListener的 // */ // @Override // public void editingCanceled(ChangeEvent e) { // if (!checkRoleNameNotEmpty()) { // treePath = null; // return; // } // roleTree.stopEditing(); // if (treePath == null) { // return; // } // changeValue(); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // } // // @Override // public void editingStopped(ChangeEvent e) { // if (!checkRoleNameNotEmpty()) { // treePath = null; // return; // } // changeValue(); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // roleTree.updateUI(); // } // // private void changeValue() { // newName = delegate.getCellEditorValue().toString(); // if (!newName.isEmpty() && newName != oldName) { // roleTree.setSelectedRoleName(newName); // op.rename(oldName, newName); // // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(false); // if (pf != null) { // try { // Iterator iterator = AuthorityRoleDAOManager.authorityAllocationIterator(pf); // // while (iterator.hasNext()) { // AuthorityAllocation authorityAllocation = (AuthorityAllocation) ((Map.Entry) iterator.next()) // .getValue(); // Authority _authority = authorityAllocation.getAuthority(); // if (ComparatorUtils.equals(_authority.getName(), oldName)) { // _authority.setName(newName); // } // } // } catch (Exception e) { // } // } // // try { // AuthorityRoleDAOManager.doEnd(pf); // } catch (Exception e) { // FRContext.getLogger().error(e.getMessage(), e); // } // } // } // } /** * 展开树 * @param tree 树 * @param isExpand 是否展开 */ public void expandTree(JTree tree, boolean isExpand) { TreeNode root = (TreeNode) tree.getModel().getRoot(); expandAll(tree, new TreePath(root), isExpand); } private void expandAll(JTree tree, TreePath parent, boolean expand) { TreeNode node = (TreeNode) parent.getLastPathComponent(); if (node.getChildCount() >= 0) { for (Enumeration e = node.children(); e.hasMoreElements(); ) { TreeNode n = (TreeNode) e.nextElement(); TreePath path = parent.pathByAddingChild(n); expandAll(tree, path, expand); } } if (expand) { tree.expandPath(parent); } else { tree.collapsePath(parent); } } } \ No newline at end of file +package com.fr.design.roleAuthority; import com.fr.base.BaseUtils; import com.fr.base.FRCoreContext; import com.fr.design.actions.UpdateAction; import com.fr.design.constants.UIConstants; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.tabledata.Prepare4DataSourceChange; import com.fr.design.gui.ibutton.UIHeadGroup; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.itoolbar.UIToolbar; import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DockingView; import com.fr.design.menu.ToolBarDef; import com.fr.general.Inter; import com.fr.general.VT4FR; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.TreeSelectionEvent; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Enumeration; /** * 设计器左下角面板,用于在权限编辑时存放角色 * Author : daisy * Date: 13-8-30 * Time: 下午2:22 */ public class ReportAndFSManagePane extends DockingView implements Prepare4DataSourceChange { private static final int REPORT_PLATEFORM_MANAGE = 0; private static final int FS_MANAGE = 1; private static final int LEFT_GAP = -125; private static boolean isSupportFS = false; private TreePath treePath = null; private static ReportAndFSManagePane singleton = new ReportAndFSManagePane(); private static RoleTree roleTree; // carl:我先屏了,现在半拉子,等客户要了再好好做 // private AddAction addAction = new AddAction(); // private RemoveAction removeAction = new RemoveAction(); private RefreshAction refreshAction = new RefreshAction(); private UIHeadGroup buttonGroup; private RoleSourceOP op; protected String[] roleNames = new String[2]; public synchronized static ReportAndFSManagePane getInstance() { singleton.op = new RoleSourceOP(); singleton.op.setDataMode(isSupportFS ? FS_MANAGE : REPORT_PLATEFORM_MANAGE); singleton.setDefaultSelectedRole(); return singleton; } public ReportAndFSManagePane() { initRoleTree(); this.setLayout(new BorderLayout(4, 0)); this.setBorder(null); this.add(iniToolBarPane(), BorderLayout.NORTH); refreshAction.setEnabled(true); UIScrollPane scrollPane = new UIScrollPane(roleTree); scrollPane.setBorder(BorderFactory.createEmptyBorder(0, 24, 0, 0)); scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); initbuttonGroup(); JPanel jPanel = new JPanel(new BorderLayout(4, 4)); JPanel buttonPane = new JPanel(new GridLayout()); buttonPane.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, UIConstants.LINE_COLOR)); buttonPane.add(buttonGroup, BorderLayout.CENTER); jPanel.add(buttonPane, BorderLayout.NORTH); jPanel.add(scrollPane, BorderLayout.CENTER); this.add(jPanel, BorderLayout.CENTER); registerDSChangeListener(); } private void initRoleTree() { roleTree = new RoleTree() { public void refreshRoleTree(String selectedRole) { super.refreshRoleTree(selectedRole); changeAlreadyEditedPaneRole(selectedRole); } protected void doWithValueChanged(TreeSelectionEvent e) { super.doWithValueChanged(e); TreeNode root = (TreeNode) roleTree.getModel().getRoot(); TreePath parent = new TreePath(root); setSelectedRole(roleTree.getSelectedRoleName(), parent); } protected void setTabRoleName(String roleName) { roleNames[getMode()] = roleTree.getSelectedRoleName(); } }; roleTree.setEnabled(true); roleTree.setEditable(false); // RoleTreeCellEditor treeCellEditor = new RoleTreeCellEditor(new UITextField()); // treeCellEditor.addCellEditorListener(treeCellEditor); // roleTree.setCellEditor(treeCellEditor); roleTree.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { super.mouseClicked(e); roleTree.setEditable(false); // int row = roleTree.getRowForLocation(e.getX(), e.getY()); // TreePath path = roleTree.getPathForLocation(e.getX(), e.getY()); // if (e.getClickCount() == 2 && buttonGroup.getSelectedIndex() == REPORT_PLATEFORM_MANAGE) { // PrivilegeManagerProvider pm = PrivilegeManager.getProviderInstance(); // AuthenticationProvider ap = pm.getAuthenticationProvider(); // if (!(ap instanceof DaoAuthenticationProvider)) { // roleTree.setEditable(true); // roleTree.startEditingAtPath(path); // treePath = path; // } // } } }); } private void changeAlreadyEditedPaneRole(String selectedRole) { RolesAlreadyEditedPane.getInstance().refreshDockingView(); RoleTree roleTree = RolesAlreadyEditedPane.getInstance().getRoleTree(); TreeNode root = (TreeNode) roleTree.getModel().getRoot(); TreePath parent = new TreePath(root); roleTree.setSelectedRole(selectedRole, parent); } public void setDefaultSelectedRole() { //设置选中的节点 TreeNode root = (TreeNode) roleTree.getModel().getRoot(); TreePath parent = new TreePath(root); ExpandMutableTreeNode node = (ExpandMutableTreeNode) parent.getLastPathComponent(); String selectedRole = null; if (singleton != null) { selectedRole = roleNames[getMode()]; } if (selectedRole == null) { if (node.getChildCount() <= 0 || node.getFirstChild().getChildCount() <= 0) { return; } selectedRole = node.getFirstChild().getChildAt(0).toString(); } roleTree.setSelectedRole(selectedRole, parent); } public RoleTree getRoleTree() { return roleTree; } /** * 检查f) 每增删改一个角色信息(及时保存),先对比下privilege下之前的角色信息有没有发生变化(即在此期间有没有在其他途径中修改过) */ private void checkChanges() { //如若有变化,则弹出下面的对话框 int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("FR-Designer_Role_changed_isRefresh") + "?", Inter.getLocText("FR-Designer_Refresh"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE); if (returnVal == JOptionPane.OK_OPTION) { roleTree.refreshTreeNode(); expandTree(roleTree, true); roleTree.updateUI(); } } private JPanel iniToolBarPane() { ToolBarDef toolbarDef = new ToolBarDef(); toolbarDef.addShortCut(refreshAction); UIToolbar toolBar = ToolBarDef.createJToolBar(); toolbarDef.updateToolBar(toolBar); JPanel toolbarPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); toolbarPane.add(toolBar, BorderLayout.CENTER); return toolbarPane; } private void initbuttonGroup() { isSupportFS = supportFineDecision(); Icon[] iconArray = null; String[] textArray = null; if (isSupportFS) { iconArray = new Icon[]{BaseUtils.readIcon("/com/fr/web/images/platform/demo.png")}; textArray = new String[]{Inter.getLocText("FR-Designer_FS_Name")}; } else { iconArray = new Icon[]{BaseUtils.readIcon("/com/fr/web/images/platform/platform_16_16.png")}; textArray = new String[]{Inter.getLocText("M_Server-Platform_Manager")}; } buttonGroup = new UIHeadGroup(iconArray, textArray) { public void tabChanged(int index) { roleTree.setEditable(false); if (op != null) { op.setDataMode(getMode()); //判断是否可编辑 refreshDockingView(); } setDefaultSelectedRole(); if (singleton != null) { changeAlreadyEditedPaneRole(roleNames[getMode()]); } } }; buttonGroup.setBorder(BorderFactory.createMatteBorder(1, LEFT_GAP, 0, 0, UIConstants.LINE_COLOR)); buttonGroup.setNeedLeftRightOutLine(false); } private boolean supportFineDecision() { byte[] bytes = FRCoreContext.getBytes(); return VT4FR.isLicAvailable(bytes) && VT4FR.FS_BI.support(); } private int getMode(){ return isSupportFS?FS_MANAGE: REPORT_PLATEFORM_MANAGE; } // /** // * 检查看看是否可以增删刷新按钮是都可以编辑,并且检查角色树是不是可以编辑 // */ // public void checkToolButtonsEnabled() { // if (buttonGroup.getSelectedIndex() == REPORT_PLATEFORM_MANAGE) { // PrivilegeManagerProvider pm = PrivilegeManager.getProviderInstance(); // AuthenticationProvider ap = pm.getAuthenticationProvider(); // PrivilegeFilter pf = pm.getPrivilegeFilter(); // boolean isClickable = !(ap instanceof DaoAuthenticationProvider) // && pf instanceof AuthorityControlFilter; // addAction.setEnabled(isClickable); // removeAction.setEnabled(isClickable); // } else { // addAction.setEnabled(false); // removeAction.setEnabled(false); // } // // } /** * 刷新界面 */ public void refreshDockingView() { populate(new RoleSourceOP()); // this.checkToolButtonsEnabled(); } private void populate(RoleSourceOP op) { this.op = op; roleTree.populate(op); expandTree(roleTree, true); } public String getViewTitle() { return null; } public Icon getViewIcon() { return null; } /** * 最佳定位 * @return 定位 */ public Location preferredLocation() { return null; } /** * 注册数据库改变的响应的Listener */ public void registerDSChangeListener() { DesignTableDataManager.addDsChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { roleTree.refreshTreeNode(); expandTree(roleTree, true); roleTree.updateUI(); } }); } // private class AddAction extends UpdateAction { // public AddAction() { // this.setName(Inter.getLocText("Add")); // this.setSmallIcon(BaseUtils.readIcon("/com/fr/base/images/cell/control/add.png")); // } // // @Override // public void actionPerformed(ActionEvent e) { // refreshDockingView(); // // DefaultTreeModel treeModel = (DefaultTreeModel) roleTree.getModel(); // ExpandMutableTreeNode root = (ExpandMutableTreeNode) treeModel.getRoot(); // ExpandMutableTreeNode parentNode = (ExpandMutableTreeNode) root.getChildAt(0); // String newName = Inter.getLocText("newNode") + (++newIndex); // parentNode.add(new ExpandMutableTreeNode(newName)); // op.addAction(newName); // roleTree.updateUI(); // // try { // synchronized (AuthorityRoleDAOManager.class) { // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(true); // // if (AuthorityRoleDAOManager.getAuthorityAllocation(pf, newName) != null) { // newName = Inter.getLocText("newNode") + (++newIndex); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // } // // AuthorityRoleDAOManager.addAuthorityRole(pf, new Authority(newName), new Allocation(), false, true); // // AuthorityRoleDAOManager.doEnd(pf); // } // } catch (Exception e1) { // FRContext.getLogger().error(e1.getMessage(), e1); // } // } // } // private class RemoveAction extends UpdateAction { // // public RemoveAction() { // this.setName(Inter.getLocText("Remove")); // this.setSmallIcon(UIConstants.CLEAR_ICON); // } // // @Override // public void actionPerformed(ActionEvent e) { // // // NameObject selectedNO = roleTree.getSelectedNameObject(); // // if (selectedNO == null) { // return; // } // // int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("Utils-Are_you_sure_to_remove_the_selected_item") + ":" + selectedNO.getName() + "?", // Inter.getLocText("Remove"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); // if (returnVal == JOptionPane.OK_OPTION) { // op.removeAction(selectedNO.getName()); // // try { // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(true); // // AuthorityRoleDAOManager.removeAuthorityRole(pf, new Authority(selectedNO.getName()), true); // AuthorityRoleDAOManager.doEnd(pf); // } catch (Exception e1) { // FRContext.getLogger().error(e1.getMessage(), e1); // } // // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // roleTree.updateUI(); // roleTree.requestFocus(); // roleTree.setSelectionRow(roleTree.getRowCount() - 1); // } // } // } /* * 刷新ReportletsTree */ private class RefreshAction extends UpdateAction { public RefreshAction() { this.setName(Inter.getLocText("FR-Designer_Refresh")); this.setSmallIcon(UIConstants.REFRESH_ICON); } @Override public void actionPerformed(ActionEvent evt) { roleTree.refreshTreeNode(); expandTree(roleTree, true); roleTree.updateUI(); } } // private class RoleTreeCellEditor extends DefaultCellEditor implements TreeCellEditor, CellEditorListener { // // private NameObject editingNO; // private String oldName; // private String newName; // private UITextField jTextField; // // public RoleTreeCellEditor(final UITextField textField) { // super(textField); // this.jTextField = textField; // this.jTextField.setPreferredSize(new Dimension(DesignerEnvManager.getEnvManager().getLastWestRegionContainerWidth() - 5, this.jTextField.getHeight())); // } // // @Override // public Component getTreeCellEditorComponent(JTree tree, Object value, boolean isSelected, boolean expanded, boolean leaf, int row) { // editingNO = ReportAndFSManagePane.this.roleTree.getSelectedNameObject(); // oldName = editingNO.getName(); // // delegate.setValue(oldName); // // editorComponent.setPreferredSize(new java.awt.Dimension(ReportAndFSManagePane.this.getPreferredSize().width, editorComponent.getPreferredSize().height)); // // return editorComponent; // } // // @Override // // public boolean isCellEditable(EventObject anEvent) { // NameObject no = ReportAndFSManagePane.this.roleTree.getSelectedNameObject(); // return !(no.getName() == Inter.getLocText("Role")); // } // // @Override // public Object getCellEditorValue() { // newName = super.getCellEditorValue().toString(); // editingNO.setName(newName); // return editingNO; // } // // // private boolean checkRoleNameNotEmpty() { // refreshDockingView(); // // String currentText = delegate.getCellEditorValue().toString(); // boolean isContained = false; // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(false); // if (pf != null && // !ComparatorUtils.equals(oldName, currentText)) { // try { // Iterator iterator = AuthorityRoleDAOManager.authorityAllocationIterator(pf); // // while (iterator.hasNext()) { // AuthorityAllocation authorityAllocation = (AuthorityAllocation) ((Map.Entry) iterator.next()) // .getValue(); // Authority _authority = authorityAllocation.getAuthority(); // if(ComparatorUtils.equals(_authority.getName(), currentText)){ // isContained = true; // break; // } // } // } catch (Exception e) { // } // } // // if (currentText.isEmpty() || isContained) { // JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("RoleName_Can_Not_Be_Null") + "!"); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // delegate.setValue(oldName); // return false; // } // return true; // } // // /* // * 下面两个方法是CellEditorListener的 // */ // @Override // public void editingCanceled(ChangeEvent e) { // if (!checkRoleNameNotEmpty()) { // treePath = null; // return; // } // roleTree.stopEditing(); // if (treePath == null) { // return; // } // changeValue(); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // } // // @Override // public void editingStopped(ChangeEvent e) { // if (!checkRoleNameNotEmpty()) { // treePath = null; // return; // } // changeValue(); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // roleTree.updateUI(); // } // // private void changeValue() { // newName = delegate.getCellEditorValue().toString(); // if (!newName.isEmpty() && newName != oldName) { // roleTree.setSelectedRoleName(newName); // op.rename(oldName, newName); // // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(false); // if (pf != null) { // try { // Iterator iterator = AuthorityRoleDAOManager.authorityAllocationIterator(pf); // // while (iterator.hasNext()) { // AuthorityAllocation authorityAllocation = (AuthorityAllocation) ((Map.Entry) iterator.next()) // .getValue(); // Authority _authority = authorityAllocation.getAuthority(); // if (ComparatorUtils.equals(_authority.getName(), oldName)) { // _authority.setName(newName); // } // } // } catch (Exception e) { // } // } // // try { // AuthorityRoleDAOManager.doEnd(pf); // } catch (Exception e) { // FRContext.getLogger().error(e.getMessage(), e); // } // } // } // } /** * 展开树 * @param tree 树 * @param isExpand 是否展开 */ public void expandTree(JTree tree, boolean isExpand) { TreeNode root = (TreeNode) tree.getModel().getRoot(); expandAll(tree, new TreePath(root), isExpand); } private void expandAll(JTree tree, TreePath parent, boolean expand) { TreeNode node = (TreeNode) parent.getLastPathComponent(); if (node.getChildCount() >= 0) { for (Enumeration e = node.children(); e.hasMoreElements(); ) { TreeNode n = (TreeNode) e.nextElement(); TreePath path = parent.pathByAddingChild(n); expandAll(tree, path, expand); } } if (expand) { tree.expandPath(parent); } else { tree.collapsePath(parent); } } } \ No newline at end of file diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 363b55c6cd..05e023135c 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -1,6 +1,14 @@ package com.fr.env; -import com.fr.base.*; +import com.fr.base.AbstractEnv; +import com.fr.base.EnvException; +import com.fr.base.FRContext; +import com.fr.base.FRCoreContext; +import com.fr.base.ModifiedTable; +import com.fr.base.Parameter; +import com.fr.base.StoreProcedureParameter; +import com.fr.base.TableData; +import com.fr.base.Utils; import com.fr.base.remote.RemoteDeziConstants; import com.fr.data.core.DataCoreUtils; import com.fr.data.core.db.TableProcedure; @@ -22,7 +30,12 @@ import com.fr.file.CacheManager; import com.fr.file.DatasourceManager; import com.fr.file.DatasourceManagerProvider; import com.fr.file.filetree.FileNode; -import com.fr.general.*; +import com.fr.general.ComparatorUtils; +import com.fr.general.FRLogger; +import com.fr.general.IOUtils; +import com.fr.general.Inter; +import com.fr.general.LogRecordTime; +import com.fr.general.VT4FR; import com.fr.general.http.HttpClient; import com.fr.json.JSONArray; import com.fr.json.JSONException; @@ -32,9 +45,15 @@ import com.fr.plugin.PluginLicense; import com.fr.plugin.PluginLicenseManager; import com.fr.plugin.PluginLoader; import com.fr.share.ShareConstants; -import com.fr.stable.*; +import com.fr.stable.ArrayUtils; +import com.fr.stable.EncodeConstants; +import com.fr.stable.JavaCompileInfo; +import com.fr.stable.LicUtils; +import com.fr.stable.ProductConstants; +import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; +import com.fr.stable.SvgProvider; import com.fr.stable.file.XMLFileManagerProvider; -import com.fr.stable.help.FineClassLoader; import com.fr.stable.project.ProjectConstants; import com.fr.stable.xml.XMLPrintWriter; import com.fr.stable.xml.XMLTools; @@ -42,18 +61,37 @@ import com.fr.stable.xml.XMLableReader; import com.fr.web.ResourceConstants; import javax.swing.*; -import javax.xml.transform.*; +import javax.xml.transform.Source; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import java.awt.*; -import java.io.*; -import java.lang.reflect.Method; +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.FilenameFilter; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.NoRouteToHostException; import java.net.Socket; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Timer; +import java.util.TimerTask; import java.util.logging.Level; import java.util.regex.Pattern; @@ -1397,14 +1435,7 @@ public class RemoteEnv extends AbstractEnv { } private void resetLicenseBytes() { - FineClassLoader classLoader = new FineClassLoader(); - try { - Class clazz = classLoader.loadClass("com.fr.base.FRCoreContext"); - Method retryMethod = clazz.getMethod("retryLicLock"); - retryMethod.invoke(clazz); - } catch (Exception ignore) { - - } + FRCoreContext.retryLicLock(); } /** diff --git a/designer_chart/src/com/fr/design/chart/ChartTypePane.java b/designer_chart/src/com/fr/design/chart/ChartTypePane.java index 9f1da397e9..d48ab810ab 100644 --- a/designer_chart/src/com/fr/design/chart/ChartTypePane.java +++ b/designer_chart/src/com/fr/design/chart/ChartTypePane.java @@ -5,8 +5,13 @@ package com.fr.design.chart; */ import com.fr.base.FRContext; +import com.fr.base.FRCoreContext; import com.fr.chart.base.ChartInternationalNameContentBean; -import com.fr.chart.chartattr.*; +import com.fr.chart.chartattr.Chart; +import com.fr.chart.chartattr.ChartCollection; +import com.fr.chart.chartattr.ChartIcon; +import com.fr.chart.chartattr.MapPlot; +import com.fr.chart.chartattr.Plot; import com.fr.chart.charttypes.ChartTypeManager; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; @@ -14,14 +19,11 @@ import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; import com.fr.general.RegistEditionException; import com.fr.general.VT4FR; -import com.fr.stable.StableUtils; -import com.fr.stable.help.FineClassLoader; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import java.awt.*; -import java.lang.reflect.Method; public class ChartTypePane extends ChartCommonWizardPane { private static final long serialVersionUID = -1175602484968520546L; @@ -168,15 +170,7 @@ public class ChartTypePane extends ChartCommonWizardPane { } private boolean supportMap() { - FineClassLoader classLoader = new FineClassLoader(); - byte[] bytes = null; - try { - Class clazz = classLoader.loadClass("com.fr.base.FRCoreContext"); - Method method = clazz.getMethod("getBytes"); - bytes = (byte[]) method.invoke(clazz); - } catch (Exception ignore) { - - } + byte[] bytes = FRCoreContext.getBytes(); return VT4FR.isLicAvailable(bytes) && VT4FR.CHART_MAP.support(); } From d344e92e8baa91c94b70e374dfd324cb74e31233 Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Tue, 1 Aug 2017 15:30:28 +0800 Subject: [PATCH 44/96] 1 --- .../editor/editor/ColumnSelectedEditor.java | 16 +-- ...egoryPlotMoreCateTableDataContentPane.java | 130 +++++++++--------- 2 files changed, 73 insertions(+), 73 deletions(-) diff --git a/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java b/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java index d8ae98bbca..71014d4c8a 100644 --- a/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java +++ b/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java @@ -1,7 +1,7 @@ package com.fr.design.editor.editor; -import com.fr.data.SimpleDSColumn; import com.fr.design.data.DesignTableDataManager; +import com.fr.data.SimpleDSColumn; import com.fr.design.data.datapane.TableDataComboBox; import com.fr.design.data.tabledata.wrapper.TableDataWrapper; import com.fr.design.gui.icombobox.UIComboBox; @@ -36,13 +36,13 @@ public class ColumnSelectedEditor extends Editor { @Override public void itemStateChanged(ItemEvent e) { - TableDataWrapper tableDataWrapper = tableDataComboBox.getSelectedItem(); - if (tableDataWrapper == null) { - return; - } - //这边需要重新初始化columnNames, 否则nameList长度和columnNames长度不同导致出錯。 - List nameList = tableDataWrapper.calculateColumnNameList(); - columnNames = new String[nameList.size()]; + TableDataWrapper tableDataWrapper = tableDataComboBox.getSelectedItem(); + if (tableDataWrapper == null) { + return; + } + //这边需要重新初始化columnNames, 否则nameList长度和columnNames长度不同导致出錯。 + List nameList = tableDataWrapper.calculateColumnNameList(); + columnNames = new String[nameList.size()]; columnNames = tableDataComboBox.getSelectedItem().calculateColumnNameList().toArray(columnNames); columnNameComboBox.removeAllItems(); for (int i = 0; i < columnNames.length; i++) { diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java index 0b1909f985..aae7e35400 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java @@ -37,10 +37,10 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD private static final int COMBOX_HEIGHT = 20; private JPanel boxPane; - + private ArrayList boxList = new ArrayList(); private UIButton addButton; - + private UIObserverListener uiobListener = null; public List getBoxList() { @@ -50,31 +50,31 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD public CategoryPlotMoreCateTableDataContentPane() { // do nothing } - + public CategoryPlotMoreCateTableDataContentPane(ChartDataPane parent) { categoryCombox = new UIComboBox(); categoryCombox.setPreferredSize(new Dimension(100,20)); - + JPanel categoryPane = new JPanel(new BorderLayout(4,0)); categoryPane.setBorder(BorderFactory.createMatteBorder(0, 0, 6, 1, getBackground())); - UILabel categoryLabel = new BoldFontTextLabel(Inter.getLocText("FR-Chart-Category_Name") + ":", SwingConstants.RIGHT) ; - categoryLabel.setPreferredSize(new Dimension(75,20)); - - addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")); - addButton.setPreferredSize(new Dimension(20, 20)); - - categoryPane.add(GUICoreUtils.createBorderLayoutPane(new Component[]{categoryCombox, addButton,null,categoryLabel,null})); - - boxPane = new JPanel(); - boxPane.setLayout(new BoxLayout(boxPane, BoxLayout.Y_AXIS)); - - categoryPane.add(boxPane, BorderLayout.SOUTH); - + UILabel categoryLabel = new BoldFontTextLabel(Inter.getLocText("FR-Chart-Category_Name") + ":", SwingConstants.RIGHT) ; + categoryLabel.setPreferredSize(new Dimension(75,20)); + + addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")); + addButton.setPreferredSize(new Dimension(20, 20)); + + categoryPane.add(GUICoreUtils.createBorderLayoutPane(new Component[]{categoryCombox, addButton,null,categoryLabel,null})); + + boxPane = new JPanel(); + boxPane.setLayout(new BoxLayout(boxPane, BoxLayout.Y_AXIS)); + + categoryPane.add(boxPane, BorderLayout.SOUTH); + this.setLayout(new BorderLayout()); this.add(categoryPane, BorderLayout.NORTH); seriesTypeComboxPane = new SeriesTypeUseComboxPane(parent, new Bar2DPlot()); this.add(seriesTypeComboxPane, BorderLayout.SOUTH); - + addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -82,11 +82,11 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD addNewCombox(); relayoutPane(); } - + checkSeriseUse(categoryCombox.getSelectedItem() != null); } }); - + categoryCombox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { checkSeriseUse(categoryCombox.getSelectedItem() != null); @@ -96,45 +96,45 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD } }); } - + protected void checkSeriseUse(boolean hasUse) { super.checkSeriseUse(hasUse); - + addButton.setEnabled(hasUse); } - + private UIComboBox addNewCombox() { - final JPanel buttonPane = new JPanel(); - buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT, 0, 2)); - - final UIComboBox combox = new UIComboBox(); - combox.setPreferredSize(new Dimension(COMBOX_WIDTH, COMBOX_HEIGHT)); - - int count = categoryCombox.getItemCount(); - for(int i = 0; i < count; i++) { - combox.addItem(categoryCombox.getItemAt(i)); - } - - combox.registerChangeListener(uiobListener); - combox.addItemListener(new ItemListener() { + final JPanel buttonPane = new JPanel(); + buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT, 0, 2)); + + final UIComboBox combox = new UIComboBox(); + combox.setPreferredSize(new Dimension(COMBOX_WIDTH, COMBOX_HEIGHT)); + + int count = categoryCombox.getItemCount(); + for(int i = 0; i < count; i++) { + combox.addItem(categoryCombox.getItemAt(i)); + } + + combox.registerChangeListener(uiobListener); + combox.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { makeToolTipUse(combox); } }); - - combox.setSelectedItem(categoryCombox.getItemAt(0)); - makeToolTipUse(combox); - - buttonPane.add(combox); - UIButton delButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/toolbarbtn/close.png")); - buttonPane.add(delButton); - boxPane.add(buttonPane); - boxList.add(combox); + + combox.setSelectedItem(categoryCombox.getItemAt(0)); + makeToolTipUse(combox); + + buttonPane.add(combox); + UIButton delButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/toolbarbtn/close.png")); + buttonPane.add(delButton); + boxPane.add(buttonPane); + boxList.add(combox); checkComponent(); - - delButton.addActionListener(new ActionListener() { + + delButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { boxPane.remove(buttonPane); @@ -143,11 +143,11 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD relayoutPane(); } }); - delButton.registerChangeListener(uiobListener); - - return combox; + delButton.registerChangeListener(uiobListener); + + return combox; } - + private void checkAddButton() { int size = boxList.size(); addButton.setEnabled(size < 2 && categoryCombox.getSelectedItem() != null); @@ -156,11 +156,11 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD protected void checkComponent() { checkAddButton(); } - + private void relayoutPane() { this.revalidate(); } - + /** *检查 某些Box是否可用 @@ -171,14 +171,14 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD checkComponent(); } - - protected void refreshBoxListWithSelectTableData(List list) { - super.refreshBoxListWithSelectTableData(list); - - for(int i = 0, size = boxList.size(); i < size; i++) { - refreshBoxItems(boxList.get(i), list); - } - } + + protected void refreshBoxListWithSelectTableData(List list) { + super.refreshBoxListWithSelectTableData(list); + + for(int i = 0, size = boxList.size(); i < size; i++) { + refreshBoxItems(boxList.get(i), list); + } + } /** * 给组件登记一个观察者监听事件 @@ -204,9 +204,9 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD */ public void populateBean(ChartCollection collection) { super.populateBean(collection); - + boxList.clear(); - + TopDefinitionProvider top = collection.getSelectedChart().getFilterDefinition(); if(top instanceof NormalTableDataDefinition) { NormalTableDataDefinition normal = (NormalTableDataDefinition)top; @@ -216,11 +216,11 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD box.setSelectedItem(normal.getMoreCateWithIndex(i)); } } - + checkAddButton(); checkSeriseUse(categoryCombox.getSelectedItem() != null); } - + /** * 保存多分类界面到collection * @param collection From ebe97033437e9c5b7427850cbfb3dc94729888ea Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Tue, 1 Aug 2017 15:31:05 +0800 Subject: [PATCH 45/96] 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 09b7fa76e0..e5502fde28 100644 --- a/designer/src/com/fr/start/Designer.java +++ b/designer/src/com/fr/start/Designer.java @@ -51,7 +51,7 @@ public class Designer extends BaseDesigner { private static final int PREVIEW_DOWN_X_GAP = 92; private static final int GAP = 7; - private static final String OLD_ENV_FOLDER_71 = ".FineReport71"; + private static final String OLD_ENV_FOLDER_71 = ".Fine Report71"; private static final String OLD_ENV_FOLDER_70 = ".FineReport70"; private UserInfoPane userInfoPane; From 5afea688089dc08e761d0bdc01e050a721a7b131 Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Tue, 1 Aug 2017 15:31:15 +0800 Subject: [PATCH 46/96] 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 e5502fde28..09b7fa76e0 100644 --- a/designer/src/com/fr/start/Designer.java +++ b/designer/src/com/fr/start/Designer.java @@ -51,7 +51,7 @@ public class Designer extends BaseDesigner { private static final int PREVIEW_DOWN_X_GAP = 92; private static final int GAP = 7; - private static final String OLD_ENV_FOLDER_71 = ".Fine Report71"; + private static final String OLD_ENV_FOLDER_71 = ".FineReport71"; private static final String OLD_ENV_FOLDER_70 = ".FineReport70"; private UserInfoPane userInfoPane; From 24cd9cf3a55673c3ea512fa5aac46dfad50b62c5 Mon Sep 17 00:00:00 2001 From: daniel Date: Tue, 1 Aug 2017 15:35:38 +0800 Subject: [PATCH 47/96] build change --- build.performance.gradle | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/build.performance.gradle b/build.performance.gradle index 1022056799..1efdd55cc8 100644 --- a/build.performance.gradle +++ b/build.performance.gradle @@ -3,22 +3,32 @@ tasks.withType(JavaCompile){ options.encoding = "UTF-8" } -def basicDir="../" -def libDir="${basicDir}/lib" +def basicDir="../../" +def libDir="${basicDir}/finereport-lib-stable" +//获取什么分支名 +FileTree files =fileTree(dir:"./",include:"build.*.gradle") +def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ("\\")) +def branchName=buildDir.substring(buildDir.lastIndexOf ("\\")+1) task appletJar<<{ + ant{ mkdir(dir:"./tmp") - mkdir(dir:"build/classes/main") + mkdir(dir:"build/classes/") copy(todir:"build/classes/"){ - fileset(dir:"${basicDir}/core/build/classes/main") - fileset(dir:"${basicDir}/chart/build/classes/main") - fileset(dir:"${basicDir}/report/build/classes/main") - fileset(dir:"${basicDir}/platform/build/classes/main") - fileset(dir:"${basicDir}/performance/build/classes/main") + fileset(dir:"${basicDir}/finereport-core-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-chart-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-report-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-platform-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-performance-stable/${branchName}/build/classes/main") + } - unjar(src:"${libDir}/3rd.jar",dest:"./tmp") - unjar(src:"${libDir}/servlet-api.jar",dest:"./tmp") + unjar(src:"${libDir}/${branchName}/3rd.jar",dest:"./tmp") + unjar(src:"${libDir}/${branchName}/servlet-api.jar",dest:"./tmp") jar(jarfile:"build/libs/fr-applet-8.0.jar"){ fileset(dir:"build/classes"){ exclude(name:"*.*") From 92c856e1c0c4147d0135b5b5db2bc45d4895e5ab Mon Sep 17 00:00:00 2001 From: daniel Date: Tue, 1 Aug 2017 15:48:17 +0800 Subject: [PATCH 48/96] revert --- build.performance.gradle | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/build.performance.gradle b/build.performance.gradle index 1efdd55cc8..1022056799 100644 --- a/build.performance.gradle +++ b/build.performance.gradle @@ -3,32 +3,22 @@ tasks.withType(JavaCompile){ options.encoding = "UTF-8" } -def basicDir="../../" -def libDir="${basicDir}/finereport-lib-stable" -//获取什么分支名 -FileTree files =fileTree(dir:"./",include:"build.*.gradle") -def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ("\\")) -def branchName=buildDir.substring(buildDir.lastIndexOf ("\\")+1) +def basicDir="../" +def libDir="${basicDir}/lib" task appletJar<<{ - ant{ mkdir(dir:"./tmp") - mkdir(dir:"build/classes/") + mkdir(dir:"build/classes/main") copy(todir:"build/classes/"){ - fileset(dir:"${basicDir}/finereport-core-stable/${branchName}/build/classes/main") - - fileset(dir:"${basicDir}/finereport-chart-stable/${branchName}/build/classes/main") - - fileset(dir:"${basicDir}/finereport-report-stable/${branchName}/build/classes/main") - - fileset(dir:"${basicDir}/finereport-platform-stable/${branchName}/build/classes/main") - - fileset(dir:"${basicDir}/finereport-performance-stable/${branchName}/build/classes/main") - + fileset(dir:"${basicDir}/core/build/classes/main") + fileset(dir:"${basicDir}/chart/build/classes/main") + fileset(dir:"${basicDir}/report/build/classes/main") + fileset(dir:"${basicDir}/platform/build/classes/main") + fileset(dir:"${basicDir}/performance/build/classes/main") } - unjar(src:"${libDir}/${branchName}/3rd.jar",dest:"./tmp") - unjar(src:"${libDir}/${branchName}/servlet-api.jar",dest:"./tmp") + unjar(src:"${libDir}/3rd.jar",dest:"./tmp") + unjar(src:"${libDir}/servlet-api.jar",dest:"./tmp") jar(jarfile:"build/libs/fr-applet-8.0.jar"){ fileset(dir:"build/classes"){ exclude(name:"*.*") From 0144fe22e0522f091b65c52621d71cfd03c65c6a Mon Sep 17 00:00:00 2001 From: daniel Date: Tue, 1 Aug 2017 15:50:33 +0800 Subject: [PATCH 49/96] =?UTF-8?q?=E6=89=93=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.performance.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/build.performance.gradle b/build.performance.gradle index 1022056799..fe011898f3 100644 --- a/build.performance.gradle +++ b/build.performance.gradle @@ -15,7 +15,6 @@ task appletJar<<{ fileset(dir:"${basicDir}/chart/build/classes/main") fileset(dir:"${basicDir}/report/build/classes/main") fileset(dir:"${basicDir}/platform/build/classes/main") - fileset(dir:"${basicDir}/performance/build/classes/main") } unjar(src:"${libDir}/3rd.jar",dest:"./tmp") unjar(src:"${libDir}/servlet-api.jar",dest:"./tmp") From 60cb686faceb2330b5048f57e510947e8a527981 Mon Sep 17 00:00:00 2001 From: eason-skx Date: Tue, 1 Aug 2017 20:16:30 +0800 Subject: [PATCH 50/96] =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E7=81=B0=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/mainframe/chart/gui/ChartTypePane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java index d5f170ef8d..8c5e84dcdf 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java @@ -240,7 +240,7 @@ public class ChartTypePane extends AbstractChartAttrPane{ FurtherBasicBeanPane pane = cards.get(i); if (pane.accept(ob)) { - GUICoreUtils.setEnabled(this, ob.isValidPlot()); + GUICoreUtils.setEnabled(chartTypeComBox.getUIComboBox(), ob.isValidPlot()); pane.populateBean(ob); Object item = pane.title4PopupWindow(); From 581ca6572547a9e31c81f343e594c9d600173996 Mon Sep 17 00:00:00 2001 From: eason-skx Date: Wed, 2 Aug 2017 09:50:39 +0800 Subject: [PATCH 51/96] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E4=B8=A2=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/mainframe/chart/gui/ChartTypePane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java index d5f170ef8d..8c5e84dcdf 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java @@ -240,7 +240,7 @@ public class ChartTypePane extends AbstractChartAttrPane{ FurtherBasicBeanPane pane = cards.get(i); if (pane.accept(ob)) { - GUICoreUtils.setEnabled(this, ob.isValidPlot()); + GUICoreUtils.setEnabled(chartTypeComBox.getUIComboBox(), ob.isValidPlot()); pane.populateBean(ob); Object item = pane.title4PopupWindow(); From 90b3de2fcfc5da170e08ad96339a73fd90bd8aa0 Mon Sep 17 00:00:00 2001 From: plough Date: Fri, 4 Aug 2017 09:31:17 +0800 Subject: [PATCH 52/96] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E5=BD=B1=E5=93=8D=E6=A8=A1=E6=9D=BF=E6=AD=A3=E5=B8=B8?= =?UTF-8?q?=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/mainframe/JTemplate.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/mainframe/JTemplate.java b/designer_base/src/com/fr/design/mainframe/JTemplate.java index a275d3d5df..28d71f9888 100644 --- a/designer_base/src/com/fr/design/mainframe/JTemplate.java +++ b/designer_base/src/com/fr/design/mainframe/JTemplate.java @@ -121,7 +121,10 @@ public abstract class JTemplate> ex return; } long saveTime = System.currentTimeMillis(); // 保存模板的时间点 - tic.collectInfo(template, this, openTime, saveTime); + try { + tic.collectInfo(template, this, openTime, saveTime); + } catch (Throwable th) { // 不管收集过程中出现任何异常,都不应该影响模版保存 + } openTime = saveTime; // 更新 openTime,准备下一次计算 } From 80d9f3e59a80fe74e11198122c66003efc9a5d37 Mon Sep 17 00:00:00 2001 From: syoki Date: Mon, 7 Aug 2017 14:09:17 +0900 Subject: [PATCH 53/96] =?UTF-8?q?=E3=80=90=E5=9B=BD=E9=99=85=E5=8C=96?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E3=80=91=E6=98=BE=E7=A4=BAbug=EF=BC=88REPORT?= =?UTF-8?q?-3216=EF=BC=89=E7=9B=B8=E5=85=B3key=E7=9A=84=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/locale/designer_ja_JP.properties | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index c89c2a9d3e..ca55e19127 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -228,7 +228,7 @@ FR-Designer-Collect_Information_free=\u7121\u6599 FR-Designer-Collect_Information_Description=\u8AAC\u660E FR-Designer-Collect_Information_Successfully=\u53CE\u96C6\u6210\u529F FR-Designer_Event_Set=\u30A4\u30D9\u30F3\u30C8\u8A2D\u5B9A -FR-Designer_Blow_set=\u4EE5\u4E0B\u8A2D\u5B9A +FR-Designer_Blow_set=\u6B21\u306E\u8A2D\u5B9A FR-Designer_I_Want_To_Set_Single=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u500B\u5225\u8A2D\u5B9A FR-Designer_Using_Server_Report_View_Settings=\u30B5\u30FC\u30D0\u8A2D\u5B9A FR-Designer_ErrorHandlerTemplate=\u30A8\u30E9\u30FC\u60C5\u5831\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5B9A\u7FA9 @@ -507,7 +507,7 @@ FR-Designer_Property_panel=\u5C5E\u6027 FR-Designer_Select_panel=\u9078\u629E FR-Designer_LayoutTable_Column_Width=160 FR-Designer_Set_BG_Of_Current_Row=\u7DE8\u96C6\u884C\u80CC\u666F\u8A2D\u5B9A -FR-Designer_Unload_Check=\u672A\u66F8\u304D\u8FBC\u307F\u6642\u6CE8\u610F +FR-Designer_Unload_Check=\u672A\u30B3\u30DF\u30C3\u30C8\u30D2\u30F3\u30C8 FR-Designer_ReportColumns_Columns_Optional=\u6BB5\u7D44\u307F FR-Designer_Row_Icon_File_Name=row.png FR-Designer_Center_Display=\u4E2D\u592E\u63C3\u3048 @@ -2005,6 +2005,6 @@ FR-Product_Demo=\u88FD\u54C1\u30C7\u30E2 FR-Designer_Data_Filter=\u30C7\u30FC\u30BF\u30D5\u30A3\u30EB\u30BF FR-Designer_Can_not_use_FormatBursh=\u9023\u7D9A\u3057\u306A\u3044\u8907\u6570\u9818\u57DF\u3067\u306F\u66F8\u5F0F\u30B3\u30D4\u30FC\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 Default=\u65E2\u5B9A -FR-Designer_Sheet_Label_Page_Display_Position= -FR-Designer_Provide_Choose_All=\u63D0\u4F9B\u3059\u3079\u3066\u9078\u629E -FR-Designer_Decimal_Places=\u5C0F\u6570\u6570\u91CF: \ No newline at end of file +FR-Designer_Sheet_Label_Page_Display_Position=Sheet\u30E9\u30D9\u30EB\u30DA\u30FC\u30B8\u306E\u8868\u793A\u4F4D\u7F6E +FR-Designer_Provide_Choose_All=\u5168\u9078\u629E\u53EF\u80FD +FR-Designer_Decimal_Places=\u5C0F\u6570\u67A0\u6570: \ No newline at end of file From 58c327744504e75056e53400e722d6de02ac8e39 Mon Sep 17 00:00:00 2001 From: hugh Date: Tue, 8 Aug 2017 16:36:22 +0800 Subject: [PATCH 54/96] =?UTF-8?q?SLN-280=20=E6=89=93=E5=8D=B0=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E8=83=8C=E6=99=AF=E5=88=86=E7=A6=BB=EF=BC=8C=E6=BC=8F?= =?UTF-8?q?=E5=88=A0=E4=B8=80=E8=A1=8C=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E5=AF=BC=E5=87=BA=E6=8C=89=E9=92=AE=E6=B2=A1=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E5=87=BA=E6=9D=A5=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/design/report/ReportBackgroundPane.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/designer/src/com/fr/design/report/ReportBackgroundPane.java b/designer/src/com/fr/design/report/ReportBackgroundPane.java index dcf1247920..1abc33c354 100644 --- a/designer/src/com/fr/design/report/ReportBackgroundPane.java +++ b/designer/src/com/fr/design/report/ReportBackgroundPane.java @@ -28,8 +28,6 @@ public class ReportBackgroundPane extends BasicPane { sourth.add(isExportBackgroundCheckBox); sourth.add(isPrintBackgroundCheckBox); this.add(sourth, BorderLayout.SOUTH); - - this.add(isPrintBackgroundCheckBox, BorderLayout.SOUTH); } @Override From 8c73bc8175a640e17d2e241c10a7ecd5a43559e4 Mon Sep 17 00:00:00 2001 From: zhouping Date: Tue, 8 Aug 2017 20:27:02 +0800 Subject: [PATCH 55/96] =?UTF-8?q?REPORT-2975=209.0=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=8D=87=E7=BA=A7=20UILabel=E5=8A=A0=E4=B8=AA=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E4=B8=8D=E5=8F=AF=E7=94=A8=E7=9A=84=E6=9E=84=E9=80=A0?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/gui/ilable/UILabel.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/designer_base/src/com/fr/design/gui/ilable/UILabel.java b/designer_base/src/com/fr/design/gui/ilable/UILabel.java index b1c90d8ff5..c0b921dee1 100644 --- a/designer_base/src/com/fr/design/gui/ilable/UILabel.java +++ b/designer_base/src/com/fr/design/gui/ilable/UILabel.java @@ -29,6 +29,11 @@ public class UILabel extends JLabel { super(text); } + public UILabel(String text, boolean enable) { + super(text); + this.setEnabled(enable); + } + public UILabel(Icon image, int horizontalAlignment) { super(image, horizontalAlignment); } From 6ee8026f5a6469ed30e5943ae24d4c1a0c01eacd Mon Sep 17 00:00:00 2001 From: juhaoyu <2335173323@qq.com> Date: Thu, 17 Aug 2017 15:58:27 +0800 Subject: [PATCH 56/96] =?UTF-8?q?=E6=8F=92=E4=BB=B6EnvVersion=E6=A3=80?= =?UTF-8?q?=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/extra/PluginHelper.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 1230cbfae6..1b6fde0d7b 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -6,10 +6,7 @@ import com.fr.design.DesignerEnvManager; import com.fr.design.extra.plugindependence.DownLoadDependenceUI; import com.fr.general.*; import com.fr.general.http.HttpClient; -import com.fr.plugin.Plugin; -import com.fr.plugin.PluginConfigManager; -import com.fr.plugin.PluginLoader; -import com.fr.plugin.PluginManagerHelper; +import com.fr.plugin.*; import com.fr.plugin.dependence.PluginDependence; import com.fr.plugin.dependence.PluginDependenceException; import com.fr.plugin.dependence.PluginDependenceUnit; @@ -268,6 +265,12 @@ public class PluginHelper { FRLogger.getLogger().error(jarExpiredInfo); throw new com.fr.plugin.PluginVerifyException(jarExpiredInfo); } + if (isHigherEnvVersion(plugin.getEnvVersion())) { + String envVersionNotSupport = Inter.getLocText(new String[]{"FR-Designer-Plugin_Jar_Expired", ",", "FR-Designer-Plugin_Install_Failed"}); + FRLogger.getLogger().error(envVersionNotSupport); + throw new com.fr.plugin.PluginVerifyException(envVersionNotSupport); + } + File fileToCheck = getTempPluginFileDirectory(); File oldfile = new File(StableUtils.pathJoin(FRContext.getCurrentEnv().getPath(), ProjectConstants.PLUGINS_NAME, "plugin-" + plugin.getId())); if (!PluginManagerHelper.checkLic(plugin, fileToCheck)) { @@ -278,7 +281,12 @@ public class PluginHelper { } } } - + + private static boolean isHigherEnvVersion(String envVersion) { + //高于8.0 + return PluginUtils.compareVersion(envVersion, "8.0") > 0; + } + /** * 获取插件解压的临时文件夹 * From da225f08dba82f4ea3af0113a4e57a9ef28dec0d Mon Sep 17 00:00:00 2001 From: juhaoyu <2335173323@qq.com> Date: Thu, 17 Aug 2017 16:11:57 +0800 Subject: [PATCH 57/96] =?UTF-8?q?=E6=8F=92=E4=BB=B6EnvVersion=E6=A3=80?= =?UTF-8?q?=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/extra/PluginHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 1b6fde0d7b..798b732947 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -266,7 +266,7 @@ public class PluginHelper { throw new com.fr.plugin.PluginVerifyException(jarExpiredInfo); } if (isHigherEnvVersion(plugin.getEnvVersion())) { - String envVersionNotSupport = Inter.getLocText(new String[]{"FR-Designer-Plugin_Jar_Expired", ",", "FR-Designer-Plugin_Install_Failed"}); + String envVersionNotSupport = Inter.getLocText(new String[]{"FR-Designer-Plugin_Env_Expired", ",", "FR-Designer-Plugin_Install_Failed"}); FRLogger.getLogger().error(envVersionNotSupport); throw new com.fr.plugin.PluginVerifyException(envVersionNotSupport); } From 3d8723c9fd26d9b2819623368838ad8001f80781 Mon Sep 17 00:00:00 2001 From: juhaoyu <2335173323@qq.com> Date: Thu, 17 Aug 2017 17:22:51 +0800 Subject: [PATCH 58/96] pmd --- .../src/com/fr/design/extra/PluginHelper.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 798b732947..613d887e71 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -4,9 +4,17 @@ import com.fr.base.Env; import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; import com.fr.design.extra.plugindependence.DownLoadDependenceUI; -import com.fr.general.*; +import com.fr.general.FRLogger; +import com.fr.general.GeneralUtils; +import com.fr.general.IOUtils; +import com.fr.general.Inter; +import com.fr.general.SiteCenter; import com.fr.general.http.HttpClient; -import com.fr.plugin.*; +import com.fr.plugin.Plugin; +import com.fr.plugin.PluginConfigManager; +import com.fr.plugin.PluginLoader; +import com.fr.plugin.PluginManagerHelper; +import com.fr.plugin.PluginUtils; import com.fr.plugin.dependence.PluginDependence; import com.fr.plugin.dependence.PluginDependenceException; import com.fr.plugin.dependence.PluginDependenceUnit; @@ -112,8 +120,8 @@ public class PluginHelper { */ public static Plugin readPlugin(File chosenFile) throws Exception { // 需要先删除临时目录保证加压出来的文件不会和安装失败的文件混合到一起 - StableUtils.deleteFile(new File(TEMP_PATH)); - + StableUtils.deleteFile(new File(TEMP_PATH)) + IOUtils.unzip(chosenFile, TEMP_PATH); File pluginFileDir = getTempPluginFileDirectory(); if (pluginFileDir == null) { From 03562267356656c74b945178477fcdd8db6b219d Mon Sep 17 00:00:00 2001 From: juhaoyu <2335173323@qq.com> Date: Fri, 18 Aug 2017 09:26:15 +0800 Subject: [PATCH 59/96] fix --- designer_base/src/com/fr/design/extra/PluginHelper.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 613d887e71..cab0a6dbde 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -20,6 +20,7 @@ import com.fr.plugin.dependence.PluginDependenceException; import com.fr.plugin.dependence.PluginDependenceUnit; import com.fr.stable.ArrayUtils; import com.fr.stable.EncodeConstants; +import com.fr.stable.ProductConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.plugin.PluginConstants; @@ -120,7 +121,7 @@ public class PluginHelper { */ public static Plugin readPlugin(File chosenFile) throws Exception { // 需要先删除临时目录保证加压出来的文件不会和安装失败的文件混合到一起 - StableUtils.deleteFile(new File(TEMP_PATH)) + StableUtils.deleteFile(new File(TEMP_PATH)); IOUtils.unzip(chosenFile, TEMP_PATH); File pluginFileDir = getTempPluginFileDirectory(); @@ -292,7 +293,7 @@ public class PluginHelper { private static boolean isHigherEnvVersion(String envVersion) { //高于8.0 - return PluginUtils.compareVersion(envVersion, "8.0") > 0; + return PluginUtils.compareVersion(envVersion, ProductConstants.MAIN_VERSION) > 0; } /** From 5aa527e37e6ace165e5c9d6070ddbfa77a2d199c Mon Sep 17 00:00:00 2001 From: juhaoyu <2335173323@qq.com> Date: Fri, 18 Aug 2017 11:07:52 +0800 Subject: [PATCH 60/96] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Env=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8C=BA=E9=97=B4=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/extra/PluginHelper.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index cab0a6dbde..e79231a3ad 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -15,6 +15,8 @@ import com.fr.plugin.PluginConfigManager; import com.fr.plugin.PluginLoader; import com.fr.plugin.PluginManagerHelper; import com.fr.plugin.PluginUtils; +import com.fr.plugin.basic.Version; +import com.fr.plugin.basic.VersionIntervalFactory; import com.fr.plugin.dependence.PluginDependence; import com.fr.plugin.dependence.PluginDependenceException; import com.fr.plugin.dependence.PluginDependenceUnit; @@ -274,7 +276,7 @@ public class PluginHelper { FRLogger.getLogger().error(jarExpiredInfo); throw new com.fr.plugin.PluginVerifyException(jarExpiredInfo); } - if (isHigherEnvVersion(plugin.getEnvVersion())) { + if (!isSupportCurrentEnv(plugin.getEnvVersion())) { String envVersionNotSupport = Inter.getLocText(new String[]{"FR-Designer-Plugin_Env_Expired", ",", "FR-Designer-Plugin_Install_Failed"}); FRLogger.getLogger().error(envVersionNotSupport); throw new com.fr.plugin.PluginVerifyException(envVersionNotSupport); @@ -291,9 +293,9 @@ public class PluginHelper { } } - private static boolean isHigherEnvVersion(String envVersion) { - //高于8.0 - return PluginUtils.compareVersion(envVersion, ProductConstants.MAIN_VERSION) > 0; + private static boolean isSupportCurrentEnv(String envVersion) { + //包含8.0 + return !VersionIntervalFactory.create(envVersion).contain(Version.currentEnvVersion()); } /** From c465dc4b106ad734b52c73b738d525c377e8ae70 Mon Sep 17 00:00:00 2001 From: juhaoyu <2335173323@qq.com> Date: Fri, 18 Aug 2017 11:10:24 +0800 Subject: [PATCH 61/96] pmd --- designer_base/src/com/fr/design/extra/PluginHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index e79231a3ad..2524412c04 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -295,7 +295,7 @@ public class PluginHelper { private static boolean isSupportCurrentEnv(String envVersion) { //包含8.0 - return !VersionIntervalFactory.create(envVersion).contain(Version.currentEnvVersion()); + return VersionIntervalFactory.create(envVersion).contain(Version.currentEnvVersion()); } /** From 06fcc30d00e2e1e6bc88b1b36e8a3f2e4a46692a Mon Sep 17 00:00:00 2001 From: juhaoyu <2335173323@qq.com> Date: Fri, 18 Aug 2017 11:11:51 +0800 Subject: [PATCH 62/96] pmd --- designer_base/src/com/fr/design/extra/PluginHelper.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 2524412c04..65cd74a2cb 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -14,15 +14,13 @@ import com.fr.plugin.Plugin; import com.fr.plugin.PluginConfigManager; import com.fr.plugin.PluginLoader; import com.fr.plugin.PluginManagerHelper; -import com.fr.plugin.PluginUtils; -import com.fr.plugin.basic.Version; -import com.fr.plugin.basic.VersionIntervalFactory; +import com.fr.plugin.basic.version.Version; +import com.fr.plugin.basic.version.VersionIntervalFactory; import com.fr.plugin.dependence.PluginDependence; import com.fr.plugin.dependence.PluginDependenceException; import com.fr.plugin.dependence.PluginDependenceUnit; import com.fr.stable.ArrayUtils; import com.fr.stable.EncodeConstants; -import com.fr.stable.ProductConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.plugin.PluginConstants; From 78f790501594a656cfc3a535241c1448ffcd3b1f Mon Sep 17 00:00:00 2001 From: juhaoyu <2335173323@qq.com> Date: Fri, 18 Aug 2017 14:11:16 +0800 Subject: [PATCH 63/96] =?UTF-8?q?PFC-607=20=E6=8F=92=E4=BB=B6=E5=AE=89?= =?UTF-8?q?=E8=A3=85=E5=88=A0=E9=99=A4=E6=9B=B4=E6=96=B0=E4=B8=8D=E9=87=8D?= =?UTF-8?q?=E5=90=AF=E6=94=AF=E6=8C=81=20=E7=A7=BB=E6=A4=8D9.0=E7=9A=84?= =?UTF-8?q?=E5=8A=A0=E5=AF=86=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/start/BaseDesigner.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/designer_base/src/com/fr/start/BaseDesigner.java b/designer_base/src/com/fr/start/BaseDesigner.java index 4c98ea1999..49c49d9b5e 100644 --- a/designer_base/src/com/fr/start/BaseDesigner.java +++ b/designer_base/src/com/fr/start/BaseDesigner.java @@ -24,6 +24,7 @@ import com.fr.file.FILEFactory; import com.fr.file.FileFILE; import com.fr.general.*; import com.fr.plugin.PluginCollector; +import com.fr.plugin.manager.PluginManager; import com.fr.stable.*; import javax.swing.*; @@ -83,6 +84,8 @@ public abstract class BaseDesigner extends ToolBarMenuDock { DesignUtils.initLookAndFeel(); DesignUtils.creatListeningServer(getStartPort(), startFileSuffix()); + //初始化插件引擎 + PluginManager.init(); // 初始化Log Handler DesignerEnvManager.loadLogSetting(); DesignerFrame df = createDesignerFrame(); From ba2a78b8aefa1929877c9f3621c00dcaf74a7f33 Mon Sep 17 00:00:00 2001 From: juhaoyu <2335173323@qq.com> Date: Fri, 18 Aug 2017 14:39:39 +0800 Subject: [PATCH 64/96] pmd --- designer_base/src/com/fr/design/extra/PluginHelper.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 65cd74a2cb..c0aeff8e74 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -20,6 +20,7 @@ import com.fr.plugin.dependence.PluginDependence; import com.fr.plugin.dependence.PluginDependenceException; import com.fr.plugin.dependence.PluginDependenceUnit; import com.fr.stable.ArrayUtils; +import com.fr.stable.AssistUtils; import com.fr.stable.EncodeConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; @@ -133,7 +134,7 @@ public class PluginHelper { File[] pluginFiles = pluginFileDir.listFiles(); if (ArrayUtils.isNotEmpty(pluginFiles)) { for (File f : pluginFiles) { - if (f.getName().equals("plugin.xml")) { + if (AssistUtils.equals(f.getName(), "plugin.xml")) { plugin = new Plugin(); InputStream inputStream = plugin.readEncryptXml(new FileInputStream(f)); XMLTools.readInputStreamXML(plugin, inputStream); @@ -323,7 +324,7 @@ public class PluginHelper { File[] files = dir.listFiles(); if (ArrayUtils.isNotEmpty(files)) { for (File f : files) { - if ("plugin.xml".equals(f.getName())) { + if (AssistUtils.equals("plugin.xml",f.getName())) { return true; } } From ba1e541f1458248b2e8365c0fbe9bca9048888d3 Mon Sep 17 00:00:00 2001 From: juhaoyu <2335173323@qq.com> Date: Fri, 18 Aug 2017 14:40:19 +0800 Subject: [PATCH 65/96] pmd --- designer_base/src/com/fr/design/extra/PluginHelper.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index c0aeff8e74..dcf5a6c89c 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -283,12 +283,11 @@ public class PluginHelper { File fileToCheck = getTempPluginFileDirectory(); File oldfile = new File(StableUtils.pathJoin(FRContext.getCurrentEnv().getPath(), ProjectConstants.PLUGINS_NAME, "plugin-" + plugin.getId())); - if (!PluginManagerHelper.checkLic(plugin, fileToCheck)) { - if (!PluginManagerHelper.checkLic(plugin, oldfile)) {//安装时,在安装目录下和压缩包里都没有才弹框 + if (!PluginManagerHelper.checkLic(plugin, fileToCheck) && !PluginManagerHelper.checkLic(plugin, oldfile)) { + //安装时,在安装目录下和压缩包里都没有才弹框 String checkLicFail = Inter.getLocText("FR-Designer-PluginLicense_Check_Failed"); FRLogger.getLogger().error(checkLicFail); throw new com.fr.plugin.PluginVerifyException(checkLicFail); - } } } From 2a5a2e10054f78574975f94e22794e9a32a56797 Mon Sep 17 00:00:00 2001 From: juhaoyu <2335173323@qq.com> Date: Fri, 18 Aug 2017 14:40:43 +0800 Subject: [PATCH 66/96] pmd --- designer_base/src/com/fr/design/extra/PluginHelper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index dcf5a6c89c..0d7bc4eac5 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -307,7 +307,7 @@ public class PluginHelper { File[] files = file.listFiles(); if (ArrayUtils.isNotEmpty(files)) { for (File f : files) { - if (foundConfigFile(f)) { + if (hasFoundConfigFile(f)) { return f; } } @@ -316,7 +316,7 @@ public class PluginHelper { return null; } - private static boolean foundConfigFile(File dir) { + private static boolean hasFoundConfigFile(File dir) { if (!dir.isDirectory()) { return false; } From c9e30586ecf68c7ae092db9f19b385b0705ae78b Mon Sep 17 00:00:00 2001 From: juhaoyu <2335173323@qq.com> Date: Fri, 18 Aug 2017 14:40:58 +0800 Subject: [PATCH 67/96] pmd --- designer_base/src/com/fr/design/extra/PluginHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 0d7bc4eac5..c2bb480ecb 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -86,7 +86,7 @@ public class PluginHelper { } } - private static boolean invalidUser(String id, String username, String password) { + private static boolean isInvalidUser(String id, String username, String password) { if (StringUtils.isEmpty(id)) { return false; } else if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)){ From 016f5c2af133b1a2a63cda5e55eaebf003432b91 Mon Sep 17 00:00:00 2001 From: juhaoyu <2335173323@qq.com> Date: Fri, 18 Aug 2017 17:13:19 +0800 Subject: [PATCH 68/96] bugfix --- designer_base/src/com/fr/start/BaseDesigner.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/start/BaseDesigner.java b/designer_base/src/com/fr/start/BaseDesigner.java index 49c49d9b5e..5d76b6a19e 100644 --- a/designer_base/src/com/fr/start/BaseDesigner.java +++ b/designer_base/src/com/fr/start/BaseDesigner.java @@ -24,7 +24,7 @@ import com.fr.file.FILEFactory; import com.fr.file.FileFILE; import com.fr.general.*; import com.fr.plugin.PluginCollector; -import com.fr.plugin.manager.PluginManager; +import com.fr.plugin.manage.PluginManager; import com.fr.stable.*; import javax.swing.*; From 01fcdf0740a4df44667977dd1dedecdb7a391a80 Mon Sep 17 00:00:00 2001 From: rinoux Date: Thu, 24 Aug 2017 11:31:46 +0800 Subject: [PATCH 69/96] =?UTF-8?q?PFC-982=20=E4=BF=AE=E5=A4=8D=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E6=A0=8F=E6=9D=83=E9=99=90=E9=A2=97=E7=B2=92=E5=BA=A6?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E6=97=B6=E5=8D=A1=E6=AD=BB=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/AuthorityEditToolBarPane.java | 31 ++++++++++--------- .../mainframe/AuthorityToolBarPane.java | 31 ++++++++++--------- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/AuthorityEditToolBarPane.java b/designer/src/com/fr/design/mainframe/AuthorityEditToolBarPane.java index a760e0043b..d26b2d6eb7 100644 --- a/designer/src/com/fr/design/mainframe/AuthorityEditToolBarPane.java +++ b/designer/src/com/fr/design/mainframe/AuthorityEditToolBarPane.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe; +import com.fr.base.FRContext; import com.fr.design.constants.LayoutConstants; import com.fr.design.constants.UIConstants; import com.fr.design.file.HistoryTemplateListPane; @@ -20,6 +21,7 @@ import javax.swing.tree.TreePath; import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import java.util.ArrayList; import java.util.List; /** @@ -96,23 +98,22 @@ public class AuthorityEditToolBarPane extends AuthorityPropertyPane { null || selectedPathArray == null) { return; } - for (int t = 0; t < selectedPathArray.length; t++) { - for (int i = 0; i < buttonlists.size(); i++) { - if (buttonlists.get(i).isSelected()) { - buttonlists.get(i).changeAuthorityState(selectedPathArray[t], buttonVisible.isSelected()); - authorityToolBarPane.repaint(); - } + ToolBarButton selectedButton = null; + //是否可见的checkbox + UICheckBox checkbox = (UICheckBox) e.getSource(); + for (int i = 0; i < buttonlists.size(); i++) { + if (buttonlists.get(i).isSelected()) { + selectedButton = buttonlists.get(i); } - HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().fireTargetModified(); - RolesAlreadyEditedPane.getInstance().refreshDockingView(); - UICheckBox checkbox = (UICheckBox) e.getSource(); - List btns = AuthorityEditPane.this.buttonlists; - for (int j = 0; j < btns.size(); j++) { - if (btns.get(j).isSelected()) { - //由引擎实现保存进模板报表 - authorityToolBarPane.setAuthorityWebAttr(btns.get(j).getWidget(), checkbox.isSelected(), selectedPathArray[t]); - } + } + if (selectedButton != null) { + for (int t = 0; t < selectedPathArray.length; t++) { + selectedButton.changeAuthorityState(selectedPathArray[t], buttonVisible.isSelected()); + authorityToolBarPane.repaint(); + authorityToolBarPane.setAuthorityWebAttr(selectedButton.getWidget(), checkbox.isSelected(), selectedPathArray[t]); } + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().fireTargetModified();//模版更新 + RolesAlreadyEditedPane.getInstance().refreshDockingView();//已配置角色视图刷新 } } }; diff --git a/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java b/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java index da856173a7..53c8893ecb 100644 --- a/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java +++ b/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java @@ -219,23 +219,24 @@ public class AuthorityToolBarPane extends BasicBeanPane Date: Thu, 24 Aug 2017 11:38:27 +0800 Subject: [PATCH 70/96] =?UTF-8?q?=E6=97=A0JIAR=E4=BB=BB=E5=8A=A1=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/data/DesignTableDataManager.java | 7 ++--- .../mainframe/loghandler/LogHandlerBar.java | 26 +------------------ 2 files changed, 5 insertions(+), 28 deletions(-) diff --git a/designer_base/src/com/fr/design/data/DesignTableDataManager.java b/designer_base/src/com/fr/design/data/DesignTableDataManager.java index 621e303b1b..5248c9626a 100644 --- a/designer_base/src/com/fr/design/data/DesignTableDataManager.java +++ b/designer_base/src/com/fr/design/data/DesignTableDataManager.java @@ -36,6 +36,7 @@ import java.io.ByteArrayOutputStream; import java.text.Collator; import java.util.*; import java.util.Map.Entry; +import java.util.concurrent.ConcurrentHashMap; /** * 设计器管理操作数据集的类: @@ -54,11 +55,11 @@ public abstract class DesignTableDataManager { * 其实globalDsCache没有绝对的必要,只是为了操作方便。如果没有它,那么每次清空服务器数据集或者存储过程的时候,还要去遍历找一下, * 这个操作可能比较复杂 。 从减少代码复杂度的角度看,还是很有必要的 */ - private static java.util.Map globalDsCache = new java.util.HashMap(); - private static java.util.Map dsNameChangedMap = new HashMap(); + private static java.util.Map globalDsCache = new ConcurrentHashMap(); + private static java.util.Map dsNameChangedMap = new ConcurrentHashMap(); // private static List dsListeners = new ArrayList(); - private static Map> dsListenersMap = new HashMap>(); + private static Map> dsListenersMap = new ConcurrentHashMap>();; public static String NO_PARAMETER = "no_paramater_pane"; diff --git a/designer_base/src/com/fr/design/mainframe/loghandler/LogHandlerBar.java b/designer_base/src/com/fr/design/mainframe/loghandler/LogHandlerBar.java index eeba6c2fd6..9b33b3c111 100644 --- a/designer_base/src/com/fr/design/mainframe/loghandler/LogHandlerBar.java +++ b/designer_base/src/com/fr/design/mainframe/loghandler/LogHandlerBar.java @@ -33,8 +33,6 @@ public class LogHandlerBar extends JPanel implements ItemSelectable { private int SERVERNUM = 0; private boolean isWithSerious; - private int i; - private Timer timer; public LogHandlerBar() { this(null); @@ -95,29 +93,7 @@ public class LogHandlerBar extends JPanel implements ItemSelectable { } public synchronized void timerPaint() { - isWithSerious = true; - timer = new Timer(500, null); - ActionListener taskAction = new ActionListener() { - public void actionPerformed(ActionEvent e) { - if (i < 5) { - isWithSerious = i % 2 == 0 ? true : false; - repaint(); - } else if (i == 5) { - if (timer == null) - return; - timer.stop(); - timer = null; - i = 0; - isWithSerious = true; - return; - } - i++; - } - }; - if (timer != null) { - timer.addActionListener(taskAction); - timer.start(); - } + repaint(); } public int getInfo() { From 0846a98d07e1047d0852cecfd907f5dbbe2c0b4b Mon Sep 17 00:00:00 2001 From: rinoux Date: Thu, 24 Aug 2017 14:51:24 +0800 Subject: [PATCH 71/96] sonarCube --- .../mainframe/AuthorityEditToolBarPane.java | 28 +++++++++------- .../mainframe/AuthorityToolBarPane.java | 33 ++++++++++--------- 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/AuthorityEditToolBarPane.java b/designer/src/com/fr/design/mainframe/AuthorityEditToolBarPane.java index d26b2d6eb7..0b016c57e3 100644 --- a/designer/src/com/fr/design/mainframe/AuthorityEditToolBarPane.java +++ b/designer/src/com/fr/design/mainframe/AuthorityEditToolBarPane.java @@ -15,6 +15,7 @@ import com.fr.design.roleAuthority.RolesAlreadyEditedPane; import com.fr.design.webattr.ToolBarButton; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; +import com.fr.stable.StringUtils; import javax.swing.*; import javax.swing.tree.TreePath; @@ -37,8 +38,12 @@ public class AuthorityEditToolBarPane extends AuthorityPropertyPane { private AuthorityToolBarPane authorityToolBarPane; private String[] selectedPathArray; - public AuthorityEditToolBarPane(List buttonlists) { + public AuthorityEditToolBarPane(List buttonList) { super(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); + this.init(buttonList); + } + + private void init(List buttonList) { this.setLayout(new BorderLayout()); this.setBorder(null); UILabel authorityTitle = new UILabel(Inter.getLocText(new String[]{"FR-Designer_Permissions", @@ -54,7 +59,7 @@ public class AuthorityEditToolBarPane extends AuthorityPropertyPane { northPane.add(authorityTitle, BorderLayout.CENTER); northPane.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, UIConstants.LINE_COLOR)); this.add(northPane, BorderLayout.NORTH); - authorityEditPane = new AuthorityEditPane(buttonlists); + authorityEditPane = new AuthorityEditPane(buttonList); this.add(authorityEditPane, BorderLayout.CENTER); } @@ -94,8 +99,7 @@ public class AuthorityEditToolBarPane extends AuthorityPropertyPane { public void itemStateChanged(ItemEvent e) { String selectedRole = ReportAndFSManagePane.getInstance().getRoleTree().getSelectedRoleName(); initSelectedPathArray(); - if (ComparatorUtils.equals(selectedRole, Inter.getLocText("FR-Designer_Role")) || selectedRole == - null || selectedPathArray == null) { + if (ComparatorUtils.equals(selectedRole, Inter.getLocText("FR-Designer_Role")) || selectedRole == null || selectedPathArray == null) { return; } ToolBarButton selectedButton = null; @@ -210,29 +214,29 @@ public class AuthorityEditToolBarPane extends AuthorityPropertyPane { public void populateType() { - if (name.getText() == "") { - type.setText(""); + if (StringUtils.EMPTY.equals(name.getText())) { + type.setText(StringUtils.EMPTY); } else { type.setText(Inter.getLocText(new String[]{"ReportServerP-Toolbar", "FR-Designer_Form_Button"})); } } public void populateName() { - String names = ""; + StringBuilder names = new StringBuilder(); for (int i = 0; i < buttonlists.size(); i++) { if (buttonlists.get(i).isSelected()) { - names += "," + buttonlists.get(i).getNameOption().optionName(); + names.append(",").append(buttonlists.get(i).getNameOption().optionName()); } } - if (names != "") { - names = names.substring(1); + if (names.length() > 0) { + names.deleteCharAt(0); } - name.setText(names); + name.setText(names.toString()); } public void populateCheckPane() { checkPane.removeAll(); - if (name.getText() == "") { + if (StringUtils.EMPTY.equals(name.getText())) { return; } double f = TableLayout.FILL; diff --git a/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java b/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java index 53c8893ecb..44125ce1b2 100644 --- a/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java +++ b/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java @@ -215,26 +215,27 @@ public class AuthorityToolBarPane extends BasicBeanPane Date: Thu, 24 Aug 2017 14:55:24 +0800 Subject: [PATCH 72/96] sonarCube2 --- .../fr/design/mainframe/AuthorityToolBarPane.java | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java b/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java index 44125ce1b2..682ddc3081 100644 --- a/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java +++ b/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java @@ -215,7 +215,7 @@ public class AuthorityToolBarPane extends BasicBeanPane extends BasicBeanPane Date: Thu, 24 Aug 2017 15:06:46 +0800 Subject: [PATCH 73/96] Sonar --- .../fr/design/mainframe/AuthorityToolBarPane.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java b/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java index 682ddc3081..7cd1930868 100644 --- a/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java +++ b/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java @@ -242,14 +242,11 @@ public class AuthorityToolBarPane extends BasicBeanPane Date: Fri, 25 Aug 2017 12:50:52 +0800 Subject: [PATCH 74/96] =?UTF-8?q?DEC-8=20=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E9=87=8A=E6=94=BE=E6=8C=81=E6=9C=89=E7=9A=84?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E7=8E=AF=E5=A2=83=E7=9A=84=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/env/RemoteEnv.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 05e023135c..7df9da9249 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -574,7 +574,8 @@ public class RemoteEnv extends AbstractEnv { clock.stop(); // richer:把轮训使用的定时器也去掉 timer.cancel(); - + // 当前环境可能用了远程环境的缓存目录,释放一下 + CacheManager.getProviderInstance().setCacheDirectory(null); HashMap para = new HashMap(); para.put("op", "fr_remote_design"); para.put("cmd", "r_sign_out"); From 08ba12c27d148a138d89cf56e9faac704cb038a8 Mon Sep 17 00:00:00 2001 From: zack Date: Fri, 25 Aug 2017 14:52:24 +0800 Subject: [PATCH 75/96] =?UTF-8?q?DEC-8=20=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E5=B9=B2=E6=B6=89=E6=9C=8D=E5=8A=A1=E5=99=A8?= =?UTF-8?q?=E7=BC=93=E5=AD=98=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/env/RemoteEnv.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 7df9da9249..ee76793ead 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -574,8 +574,6 @@ public class RemoteEnv extends AbstractEnv { clock.stop(); // richer:把轮训使用的定时器也去掉 timer.cancel(); - // 当前环境可能用了远程环境的缓存目录,释放一下 - CacheManager.getProviderInstance().setCacheDirectory(null); HashMap para = new HashMap(); para.put("op", "fr_remote_design"); para.put("cmd", "r_sign_out"); @@ -2283,4 +2281,9 @@ public class RemoteEnv extends AbstractEnv { return StringUtils.EMPTY; } } + + @Override + public boolean isRemoteEnv() { + return true; + } } \ No newline at end of file From 0f52b449e8bc6bb9921eba48f4b675ae5cb0c81a Mon Sep 17 00:00:00 2001 From: zack Date: Fri, 25 Aug 2017 15:40:12 +0800 Subject: [PATCH 76/96] =?UTF-8?q?DEC-8=20=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E5=B9=B2=E6=B6=89=E6=9C=8D=E5=8A=A1=E5=99=A8?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/start/Designer.java | 7 ++++++- designer_base/src/com/fr/env/RemoteEnv.java | 6 +----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/designer/src/com/fr/start/Designer.java b/designer/src/com/fr/start/Designer.java index 09b7fa76e0..9c45691832 100644 --- a/designer/src/com/fr/start/Designer.java +++ b/designer/src/com/fr/start/Designer.java @@ -1,6 +1,7 @@ package com.fr.start; import com.fr.base.BaseUtils; +import com.fr.base.Env; import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; import com.fr.design.actions.core.ActionFactory; @@ -30,6 +31,7 @@ import com.fr.design.menu.ShortCut; import com.fr.design.module.DesignModuleFactory; import com.fr.design.module.DesignerModule; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.env.RemoteEnv; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; import com.fr.stable.ProductConstants; @@ -432,7 +434,10 @@ public class Designer extends BaseDesigner { InformationCollector collector = InformationCollector.getInstance(); collector.collectStopTime(); collector.saveXMLFile(); - ServletContext.fireServletStopListener(); + Env currentEnv = FRContext.getCurrentEnv(); + if (!(currentEnv instanceof RemoteEnv)) {//远程环境不需要触发stop + ServletContext.fireServletStopListener(); + } } } \ No newline at end of file diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index ee76793ead..05e023135c 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -574,6 +574,7 @@ public class RemoteEnv extends AbstractEnv { clock.stop(); // richer:把轮训使用的定时器也去掉 timer.cancel(); + HashMap para = new HashMap(); para.put("op", "fr_remote_design"); para.put("cmd", "r_sign_out"); @@ -2281,9 +2282,4 @@ public class RemoteEnv extends AbstractEnv { return StringUtils.EMPTY; } } - - @Override - public boolean isRemoteEnv() { - return true; - } } \ No newline at end of file From 2d315acc6f18593f09e67a283f59c253ac0fcfba Mon Sep 17 00:00:00 2001 From: zack Date: Fri, 25 Aug 2017 16:02:23 +0800 Subject: [PATCH 77/96] =?UTF-8?q?DEC-8=20=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E5=B9=B2=E6=B6=89=E6=9C=8D=E5=8A=A1=E5=99=A8?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/start/Designer.java | 3 +-- designer_base/src/com/fr/env/RemoteEnv.java | 5 +++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/designer/src/com/fr/start/Designer.java b/designer/src/com/fr/start/Designer.java index 9c45691832..e8aa73f89b 100644 --- a/designer/src/com/fr/start/Designer.java +++ b/designer/src/com/fr/start/Designer.java @@ -31,7 +31,6 @@ import com.fr.design.menu.ShortCut; import com.fr.design.module.DesignModuleFactory; import com.fr.design.module.DesignerModule; import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.env.RemoteEnv; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; import com.fr.stable.ProductConstants; @@ -435,7 +434,7 @@ public class Designer extends BaseDesigner { collector.collectStopTime(); collector.saveXMLFile(); Env currentEnv = FRContext.getCurrentEnv(); - if (!(currentEnv instanceof RemoteEnv)) {//远程环境不需要触发stop + if (!currentEnv.isRemoteEnv()) {//远程环境不需要触发stop ServletContext.fireServletStopListener(); } } diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 05e023135c..440efed9f0 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -2282,4 +2282,9 @@ public class RemoteEnv extends AbstractEnv { return StringUtils.EMPTY; } } + + @Override + public boolean isRemoteEnv() { + return true; + } } \ No newline at end of file From 661a47614e267bf16904a5c709e6d8ba69747f1a Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Fri, 25 Aug 2017 16:07:56 +0800 Subject: [PATCH 78/96] 1 --- .../com/fr/design/locale/designer_ja_JP.properties | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index ca55e19127..11f0fb0d96 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -228,7 +228,7 @@ FR-Designer-Collect_Information_free=\u7121\u6599 FR-Designer-Collect_Information_Description=\u8AAC\u660E FR-Designer-Collect_Information_Successfully=\u53CE\u96C6\u6210\u529F FR-Designer_Event_Set=\u30A4\u30D9\u30F3\u30C8\u8A2D\u5B9A -FR-Designer_Blow_set=\u6B21\u306E\u8A2D\u5B9A +FR-Designer_Blow_set=\u4EE5\u4E0B\u8A2D\u5B9A FR-Designer_I_Want_To_Set_Single=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u500B\u5225\u8A2D\u5B9A FR-Designer_Using_Server_Report_View_Settings=\u30B5\u30FC\u30D0\u8A2D\u5B9A FR-Designer_ErrorHandlerTemplate=\u30A8\u30E9\u30FC\u60C5\u5831\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5B9A\u7FA9 @@ -507,7 +507,7 @@ FR-Designer_Property_panel=\u5C5E\u6027 FR-Designer_Select_panel=\u9078\u629E FR-Designer_LayoutTable_Column_Width=160 FR-Designer_Set_BG_Of_Current_Row=\u7DE8\u96C6\u884C\u80CC\u666F\u8A2D\u5B9A -FR-Designer_Unload_Check=\u672A\u30B3\u30DF\u30C3\u30C8\u30D2\u30F3\u30C8 +FR-Designer_Unload_Check=\u672A\u66F8\u304D\u8FBC\u307F\u6642\u6CE8\u610F FR-Designer_ReportColumns_Columns_Optional=\u6BB5\u7D44\u307F FR-Designer_Row_Icon_File_Name=row.png FR-Designer_Center_Display=\u4E2D\u592E\u63C3\u3048 @@ -2005,6 +2005,7 @@ FR-Product_Demo=\u88FD\u54C1\u30C7\u30E2 FR-Designer_Data_Filter=\u30C7\u30FC\u30BF\u30D5\u30A3\u30EB\u30BF FR-Designer_Can_not_use_FormatBursh=\u9023\u7D9A\u3057\u306A\u3044\u8907\u6570\u9818\u57DF\u3067\u306F\u66F8\u5F0F\u30B3\u30D4\u30FC\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 Default=\u65E2\u5B9A -FR-Designer_Sheet_Label_Page_Display_Position=Sheet\u30E9\u30D9\u30EB\u30DA\u30FC\u30B8\u306E\u8868\u793A\u4F4D\u7F6E -FR-Designer_Provide_Choose_All=\u5168\u9078\u629E\u53EF\u80FD -FR-Designer_Decimal_Places=\u5C0F\u6570\u67A0\u6570: \ No newline at end of file +FR-Designer_Sheet_Label_Page_Display_Position= +FR-Designer_Provide_Choose_All=\u63D0\u4F9B\u3059\u3079\u3066\u9078\u629E +FR-Designer_Decimal_Places=\u5C0F\u6570\u6570\u91CF: +FR-Base-Load_Resource_File=\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u30ED\u30FC\u30C9 \ No newline at end of file From 9570cd5645eb0216dd0ad927dc0c2820a16b9fd1 Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Fri, 25 Aug 2017 16:11:22 +0800 Subject: [PATCH 79/96] 1 --- designer_base/src/com/fr/design/locale/designer.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index 643fbf16a0..5bac16ca99 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -1,4 +1,4 @@ -FR-Designer-BBSLogin_Account= + FR-Designer-BBSLogin_Account= FR-Designer-BBSLogin_Connection-Failure= FR-Designer-BBSLogin_Connection-Failure-Tip= FR-Designer-BBSLogin_Forgot-Password= From 96269140176b56a0401819f547254c4260f96356 Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Fri, 25 Aug 2017 16:12:23 +0800 Subject: [PATCH 80/96] 1 --- designer_base/src/com/fr/design/locale/designer.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index 5bac16ca99..643fbf16a0 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -1,4 +1,4 @@ - FR-Designer-BBSLogin_Account= +FR-Designer-BBSLogin_Account= FR-Designer-BBSLogin_Connection-Failure= FR-Designer-BBSLogin_Connection-Failure-Tip= FR-Designer-BBSLogin_Forgot-Password= From b48b354e0e9e9000f1b5ac75be8960e34a343042 Mon Sep 17 00:00:00 2001 From: zack Date: Fri, 25 Aug 2017 16:17:52 +0800 Subject: [PATCH 81/96] =?UTF-8?q?DEC-8=20=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E5=B9=B2=E6=B6=89=E6=9C=8D=E5=8A=A1=E5=99=A8?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/start/Designer.java | 5 +---- designer_base/src/com/fr/env/RemoteEnv.java | 4 ++-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/designer/src/com/fr/start/Designer.java b/designer/src/com/fr/start/Designer.java index e8aa73f89b..8fa1b5e6a3 100644 --- a/designer/src/com/fr/start/Designer.java +++ b/designer/src/com/fr/start/Designer.java @@ -36,7 +36,6 @@ import com.fr.general.Inter; import com.fr.stable.ProductConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; -import com.fr.stable.web.ServletContext; import com.fr.stable.xml.XMLTools; import javax.swing.*; @@ -434,9 +433,7 @@ public class Designer extends BaseDesigner { collector.collectStopTime(); collector.saveXMLFile(); Env currentEnv = FRContext.getCurrentEnv(); - if (!currentEnv.isRemoteEnv()) {//远程环境不需要触发stop - ServletContext.fireServletStopListener(); - } + currentEnv.envQuit(); } } \ No newline at end of file diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 440efed9f0..afacea95d0 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -2284,7 +2284,7 @@ public class RemoteEnv extends AbstractEnv { } @Override - public boolean isRemoteEnv() { - return true; + public void envQuit() { + } } \ No newline at end of file From bf350565668f18e8221f75e9d4058e6ebfb6761e Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Fri, 25 Aug 2017 16:29:42 +0800 Subject: [PATCH 82/96] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=20=E5=9B=BD=E9=99=85=E5=8C=96=E5=86=B2=E7=AA=81=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tabledata/tabledatapane/ClassTableDataPane.java | 5 +++++ .../src/com/fr/design/locale/designer_ja_JP.properties | 10 +++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/designer_base/src/com/fr/design/data/tabledata/tabledatapane/ClassTableDataPane.java b/designer_base/src/com/fr/design/data/tabledata/tabledatapane/ClassTableDataPane.java index 7a40959ed2..0c32bcbabc 100644 --- a/designer_base/src/com/fr/design/data/tabledata/tabledatapane/ClassTableDataPane.java +++ b/designer_base/src/com/fr/design/data/tabledata/tabledatapane/ClassTableDataPane.java @@ -18,6 +18,7 @@ import com.fr.general.IOUtils; import com.fr.general.Inter; import com.fr.script.Calculator; import com.fr.stable.ParameterProvider; +import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; import javax.swing.*; @@ -160,6 +161,10 @@ public class ClassTableDataPane extends AbstractTableDataPane { @Override public void populateBean(ClassTableData ob) { + if(StringUtils.isEmpty(ob.getClassName())) { + return; + } + this.editorPane.populate(ob.getParameters(Calculator.createCalculator())); this.classNameTextField.setText(ob.getClassName()); } diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index 11f0fb0d96..7fd4fb541d 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -228,7 +228,7 @@ FR-Designer-Collect_Information_free=\u7121\u6599 FR-Designer-Collect_Information_Description=\u8AAC\u660E FR-Designer-Collect_Information_Successfully=\u53CE\u96C6\u6210\u529F FR-Designer_Event_Set=\u30A4\u30D9\u30F3\u30C8\u8A2D\u5B9A -FR-Designer_Blow_set=\u4EE5\u4E0B\u8A2D\u5B9A +FR-Designer_Blow_set=\u6B21\u306E\u8A2D\u5B9A FR-Designer_I_Want_To_Set_Single=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u500B\u5225\u8A2D\u5B9A FR-Designer_Using_Server_Report_View_Settings=\u30B5\u30FC\u30D0\u8A2D\u5B9A FR-Designer_ErrorHandlerTemplate=\u30A8\u30E9\u30FC\u60C5\u5831\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5B9A\u7FA9 @@ -507,7 +507,7 @@ FR-Designer_Property_panel=\u5C5E\u6027 FR-Designer_Select_panel=\u9078\u629E FR-Designer_LayoutTable_Column_Width=160 FR-Designer_Set_BG_Of_Current_Row=\u7DE8\u96C6\u884C\u80CC\u666F\u8A2D\u5B9A -FR-Designer_Unload_Check=\u672A\u66F8\u304D\u8FBC\u307F\u6642\u6CE8\u610F +FR-Designer_Unload_Check=\u672A\u30B3\u30DF\u30C3\u30C8\u30D2\u30F3\u30C8 FR-Designer_ReportColumns_Columns_Optional=\u6BB5\u7D44\u307F FR-Designer_Row_Icon_File_Name=row.png FR-Designer_Center_Display=\u4E2D\u592E\u63C3\u3048 @@ -2005,7 +2005,7 @@ FR-Product_Demo=\u88FD\u54C1\u30C7\u30E2 FR-Designer_Data_Filter=\u30C7\u30FC\u30BF\u30D5\u30A3\u30EB\u30BF FR-Designer_Can_not_use_FormatBursh=\u9023\u7D9A\u3057\u306A\u3044\u8907\u6570\u9818\u57DF\u3067\u306F\u66F8\u5F0F\u30B3\u30D4\u30FC\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 Default=\u65E2\u5B9A -FR-Designer_Sheet_Label_Page_Display_Position= -FR-Designer_Provide_Choose_All=\u63D0\u4F9B\u3059\u3079\u3066\u9078\u629E -FR-Designer_Decimal_Places=\u5C0F\u6570\u6570\u91CF: +FR-Designer_Sheet_Label_Page_Display_Position=Sheet\u30E9\u30D9\u30EB\u30DA\u30FC\u30B8\u306E\u8868\u793A\u4F4D\u7F6E +FR-Designer_Provide_Choose_All=\u5168\u9078\u629E\u53EF\u80FD +FR-Designer_Decimal_Places=\u5C0F\u6570\u67A0\u6570: FR-Base-Load_Resource_File=\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u30ED\u30FC\u30C9 \ No newline at end of file From 325d8b188c0d3093ff0560711e692fd64129779c Mon Sep 17 00:00:00 2001 From: zack Date: Mon, 28 Aug 2017 14:38:28 +0800 Subject: [PATCH 83/96] =?UTF-8?q?DEC-8=20=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E8=AF=AF=E5=88=A0=E6=9C=8D=E5=8A=A1=E5=99=A8?= =?UTF-8?q?=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/start/Designer.java | 2 +- designer_base/src/com/fr/env/RemoteEnv.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/designer/src/com/fr/start/Designer.java b/designer/src/com/fr/start/Designer.java index 8fa1b5e6a3..526df8f096 100644 --- a/designer/src/com/fr/start/Designer.java +++ b/designer/src/com/fr/start/Designer.java @@ -433,7 +433,7 @@ public class Designer extends BaseDesigner { collector.collectStopTime(); collector.saveXMLFile(); Env currentEnv = FRContext.getCurrentEnv(); - currentEnv.envQuit(); + currentEnv.doWhenServerShutDown(); } } \ No newline at end of file diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index afacea95d0..3c25fc7ff0 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -2284,7 +2284,7 @@ public class RemoteEnv extends AbstractEnv { } @Override - public void envQuit() { + public void doWhenServerShutDown() { } } \ No newline at end of file From 0e54c3d03a0d847b36e3e74660e0ac62c22d7a19 Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Wed, 30 Aug 2017 11:32:37 +0800 Subject: [PATCH 84/96] =?UTF-8?q?=E6=B7=BB=E5=8A=A0echarts=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E7=9A=84=E7=B1=BB=EF=BC=8C=E8=A7=A3=E5=86=B3echart?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E4=B8=8D=E8=83=BD=E4=BD=BF=E7=94=A8=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/type/UserDefinedChartTypePane.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 designer_chart/src/com/fr/design/mainframe/chart/gui/type/UserDefinedChartTypePane.java diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/UserDefinedChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/UserDefinedChartTypePane.java new file mode 100644 index 0000000000..1f40de8be2 --- /dev/null +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/UserDefinedChartTypePane.java @@ -0,0 +1,42 @@ +package com.fr.design.mainframe.chart.gui.type; + +import com.fr.chart.chartattr.Chart; + +/** + * Created by mengao on 2017/8/30. + * 不能删掉这个类,echarts插件中用到 + */ +public abstract class UserDefinedChartTypePane extends AbstractChartTypePane { + protected String[] getTypeLayoutPath() { + return new String[0]; + } + + protected String[] getTypeLayoutTipName(){ + return new String[0]; + } + + protected String[] getTypeIconPath(){ + return new String[]{"/com/fr/design/images/chart/default.png"}; + } + + protected String[] getTypeTipName() { + return new String[]{title4PopupWindow()}; + } + + public void updateBean(Chart chart) { + + } + + public void populateBean(Chart chart){ + typeDemo.get(0).isPressing = true; + checkDemosBackground(); + } + + /** + * 弹出界面的标题 + * @return 标题 + */ + public String title4PopupWindow(){ + return ""; + } +} From ee3fb9697eb2615f6fbea57750d0804b786d3e4b Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Fri, 1 Sep 2017 10:30:42 +0800 Subject: [PATCH 85/96] =?UTF-8?q?=E5=8E=BB=E6=8E=89ChartEditPane=E5=AF=B9P?= =?UTF-8?q?repare4DataSourceChange=E6=8E=A5=E5=8F=A3=E7=9A=84=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E3=80=82=20=E8=A7=A3=E5=86=B3=20=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E5=88=87=E6=8D=A2=E6=A8=A1=E6=9D=BF=E6=97=B6=E4=B8=80?= =?UTF-8?q?=E7=9B=B4=E8=A7=A6=E5=8F=91=E6=9F=A5=E8=AF=A2=20=20=20=E5=AE=A2?= =?UTF-8?q?=E6=88=B7bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/chart/ChartEditPane.java | 62 ++++++++----------- 1 file changed, 26 insertions(+), 36 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java index fc3b70108e..3397fe9f9c 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java @@ -6,8 +6,6 @@ import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.ChartCollection; import com.fr.design.ChartTypeInterfaceManager; import com.fr.design.beans.FurtherBasicBeanPane; -import com.fr.design.data.DesignTableDataManager; -import com.fr.design.data.tabledata.Prepare4DataSourceChange; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.chart.ChartEditPaneProvider; import com.fr.design.gui.frpane.AttributeChangeListener; @@ -24,14 +22,12 @@ import com.fr.general.FRLogger; import com.fr.general.Inter; import javax.swing.*; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; import java.awt.*; import java.util.ArrayList; import java.util.Calendar; import java.util.List; -public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4DataSourceChange, ChartEditPaneProvider { +public class ChartEditPane extends BasicPane implements AttributeChange, ChartEditPaneProvider { private final static int CHANGE_MIN_TIME = 80; @@ -69,7 +65,9 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 paneList.add(otherPane); createTabsPane(); - registerDSChangeListener(); + + //TableDataComboBox 中有注册DSChangeListener,这里没有必要再次注册。 + //registerDSChangeListener(); } //构建主面板 @@ -119,7 +117,7 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 } catch (CloneNotSupportedException e) { FRLogger.getLogger().error("error in clone ChartEditPane"); } - if(ComparatorUtils.equals(selectedPane.title4PopupWindow(),PaneTitleConstants.CHART_STYLE_TITLE)){ + if (ComparatorUtils.equals(selectedPane.title4PopupWindow(), PaneTitleConstants.CHART_STYLE_TITLE)) { dealWithStyleChange(); } @@ -130,10 +128,11 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 /** * 重新构造面板 + * * @param currentChart 图表 */ - public void reLayout(Chart currentChart){ - if(currentChart != null){ + public void reLayout(Chart currentChart) { + if (currentChart != null) { int chartIndex = getSelectedChartIndex(currentChart); this.removeAll(); this.setLayout(new BorderLayout()); @@ -142,21 +141,21 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 boolean isDefault = true; String plotID = ""; - if(currentChart.getPlot() != null){ + if (currentChart.getPlot() != null) { plotID = currentChart.getPlot().getPlotID(); isDefault = ChartTypeInterfaceManager.getInstance().isUseDefaultPane(plotID); } - if(isDefault){ + if (isDefault) { paneList.add(dataPane4SupportCell); paneList.add(stylePane); paneList.add(otherPane); this.isDefaultPane = true; - }else{ + } else { ChartDataPane chartDataPane = createChartDataPane(plotID); paneList.add(chartDataPane); AbstractChartAttrPane[] otherPaneList = ChartTypeInterfaceManager.getInstance().getAttrPaneArray(plotID, listener); - for(int i = 0; i < otherPaneList.length; i++){ + for (int i = 0; i < otherPaneList.length; i++) { otherPaneList[i].addAttributeChangeListener(listener); paneList.add(otherPaneList[i]); } @@ -223,7 +222,7 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 return; } - if(checkNeedsReLayout(collection.getSelectedChart())){ + if (checkNeedsReLayout(collection.getSelectedChart())) { reLayout(collection.getSelectedChart()); } @@ -250,12 +249,12 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 } } - public int getSelectedChartIndex(Chart chart){ + public int getSelectedChartIndex(Chart chart) { int index = 0; - if(typePane != null){ + if (typePane != null) { FurtherBasicBeanPane[] paneList = typePane.getPaneList(); - for(; index < paneList.length; index++){ - if(paneList[index].accept(chart)){ + for (; index < paneList.length; index++) { + if (paneList[index].accept(chart)) { return index; } } @@ -264,12 +263,12 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 } //populate的时候看看要不要重构面板 - private boolean checkNeedsReLayout(Chart chart){ - if(chart != null){ + private boolean checkNeedsReLayout(Chart chart) { + if (chart != null) { int lastIndex = typePane.getSelectedIndex(); int currentIndex = getSelectedChartIndex(chart); boolean currentPane = true; - if(chart.getPlot() != null){ + if (chart.getPlot() != null) { String plotID = chart.getPlot().getPlotID(); currentPane = ChartTypeInterfaceManager.getInstance().isUseDefaultPane(plotID); } @@ -280,9 +279,10 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 /** * 当前界面是否是默认的界面 + * * @return 是否是默认的界面 */ - public boolean isDefaultPane(){ + public boolean isDefaultPane() { return this.isDefaultPane; } @@ -314,15 +314,16 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 } } - protected void dealWithStyleChange(){ + protected void dealWithStyleChange() { } /** - *主要用于图表设计器,判断样式改变是否来自工具栏的全局样式按钮 + * 主要用于图表设计器,判断样式改变是否来自工具栏的全局样式按钮 + * * @param isFromToolBar 是否来自工具栏 */ - public void styleChange(boolean isFromToolBar){ + public void styleChange(boolean isFromToolBar) { } @@ -335,15 +336,4 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 paneList.get(index).addAttributeChangeListener(listener); } - /** - * 数据集改变的事件监听 - */ - public void registerDSChangeListener() { - DesignTableDataManager.addDsChangeListener(new ChangeListener() { - public void stateChanged(ChangeEvent e) { - AbstractChartAttrPane attrPane = paneList.get(tabsHeaderIconPane.getSelectedIndex()); - attrPane.refreshChartDataPane(collection); - } - }); - } } \ No newline at end of file From 0c79b531631a51954882f5410faf20aab89f5a46 Mon Sep 17 00:00:00 2001 From: plough Date: Mon, 4 Sep 2017 14:19:43 +0800 Subject: [PATCH 86/96] =?UTF-8?q?REPORT-4296=20frm=E6=8E=A7=E4=BB=B6?= =?UTF-8?q?=E6=A0=8F=E6=97=A0=E6=B3=95=E6=AD=A3=E5=B8=B8=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/mainframe/FormParaWidgetPane.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java b/designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java index 929e10110a..bfc7406dea 100644 --- a/designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java +++ b/designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java @@ -286,7 +286,9 @@ public class FormParaWidgetPane extends JPanel { private int calculateWidgetWindowRowNum() { //向上取整 - int rowNum = (int) Math.ceil((double) predifinedwidgeList.size() / (double) preWidgetShowMaxNum); + int eastRowNum = (int) Math.ceil((double) predifinedwidgeList.size() / (double) preWidgetShowMaxNum); + int westRowNum = (int) Math.ceil((double) loadWidgetOptions().length / (double) commonWidgetNum); + int rowNum = Math.max(eastRowNum, westRowNum); rowNum = Math.max(rowNum, 2); rowNum = Math.min(rowNum, preWidgetShowMaxRow); return rowNum; From db3afdf2838ff3236950c9b7189d1e8e50aafa5e Mon Sep 17 00:00:00 2001 From: MoMeak Date: Mon, 4 Sep 2017 15:42:35 +0800 Subject: [PATCH 87/96] =?UTF-8?q?REPORT-4345=20=E8=AE=BE=E7=BD=AE=E4=BA=86?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E7=9A=84=E5=8D=95=E5=85=83=E6=A0=BC=E4=B8=8B?= =?UTF-8?q?=E6=8B=89=E5=A4=8D=E5=88=B6=E5=90=8E=EF=BC=8C=E5=9C=A8=E5=8F=B3?= =?UTF-8?q?=E4=BE=A7=E9=9D=A2=E6=9D=BF=E7=BB=99=E5=85=B6=E4=B8=AD=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E5=8D=95=E5=85=83=E6=A0=BC=E6=9B=B4=E6=94=B9=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E8=AE=BE=E7=BD=AE=EF=BC=8C=E5=88=99=E6=89=80=E6=9C=89?= =?UTF-8?q?=E5=8D=95=E5=85=83=E6=A0=BC=E7=9A=84=E8=BF=87=E6=BB=A4=E9=83=BD?= =?UTF-8?q?=E4=BC=9A=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/grid/IntelliElements.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/designer/src/com/fr/grid/IntelliElements.java b/designer/src/com/fr/grid/IntelliElements.java index 475235e568..a5d8055637 100644 --- a/designer/src/com/fr/grid/IntelliElements.java +++ b/designer/src/com/fr/grid/IntelliElements.java @@ -194,7 +194,12 @@ public class IntelliElements { TemplateCellElement newCellElement = new DefaultTemplateCellElement(colIndex, rowIndex); applyStyle(newCellElement, sourceCellElement);//style if (sourceCellElement.getValue() instanceof DSColumn) { - DSColumn dsColumn = (DSColumn) sourceCellElement.getValue(); + DSColumn dsColumn = null; + try { + dsColumn = (DSColumn) ((DSColumn) sourceCellElement.getValue()).clone(); + } catch (CloneNotSupportedException e) { + FRContext.getLogger().error(e.getMessage(), e); + } newCellElement.setValue(dsColumn); newCellElement.setCellExpandAttr(sourceCellElement.getCellExpandAttr()); } else if (sourceCellElement.getValue() instanceof Number) { From 4124ad704b8f230b13cc9814eb35916e01396ffc Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Tue, 5 Sep 2017 17:40:22 +0800 Subject: [PATCH 88/96] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E7=9B=B4?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E6=9F=A5=E8=AF=A2bug=EF=BC=8C=E6=95=B4?= =?UTF-8?q?=E7=90=86chartEditPane=E5=8A=A0=E8=BD=BD=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fun/impl/AbstractIndependentChartUI.java | 3 +- ...bstractIndependentChartUIWithAPILevel.java | 3 +- .../fun/impl/AbstractIndependentChartsUI.java | 2 +- .../design/mainframe/ChartPropertyPane.java | 8 ++- .../mainframe/MiddleChartPropertyPane.java | 6 +- .../design/mainframe/chart/ChartEditPane.java | 71 ++++++++++++------- .../mainframe/chart/ChartsEditPane.java | 9 +++ 7 files changed, 64 insertions(+), 38 deletions(-) diff --git a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUI.java b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUI.java index 848fc44367..b5cd25a7f5 100644 --- a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUI.java +++ b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUI.java @@ -12,7 +12,6 @@ import com.fr.design.mainframe.chart.ChartsConfigPane; import com.fr.design.mainframe.chart.gui.ChartDataPane; import com.fr.design.mainframe.chart.gui.ChartStylePane; import com.fr.general.ComparatorUtils; -import com.fr.stable.StableUtils; /** @@ -58,7 +57,7 @@ public abstract class AbstractIndependentChartUI implements IndependentChartUIPr return new DataSeriesConditionPane(); } - public ChartEditPane getChartEditPane(String plotID){ return StableUtils.construct(ChartEditPane.class);} + public ChartEditPane getChartEditPane(String plotID){ return ChartEditPane.getInstance();} public ChartsConfigPane getChartConfigPane(String plotID){return null;} 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 8aa412a6e3..cd8dbdcfcd 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 @@ -12,7 +12,6 @@ import com.fr.design.mainframe.chart.ChartsConfigPane; import com.fr.design.mainframe.chart.gui.ChartDataPane; import com.fr.design.mainframe.chart.gui.ChartStylePane; import com.fr.general.ComparatorUtils; -import com.fr.stable.StableUtils; /** * Created by Mitisky on 16/3/7. @@ -69,7 +68,7 @@ public abstract class AbstractIndependentChartUIWithAPILevel implements Independ return getPlotTypePane().title4PopupWindow(); } - public ChartEditPane getChartEditPane(String plotID){ return StableUtils.construct(ChartEditPane.class);} + public ChartEditPane getChartEditPane(String plotID){ return ChartEditPane.getInstance();} public ChartsConfigPane getChartConfigPane(String plotID){return null;} } diff --git a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartsUI.java b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartsUI.java index fbd3ce36f1..703852c206 100644 --- a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartsUI.java +++ b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartsUI.java @@ -97,7 +97,7 @@ public abstract class AbstractIndependentChartsUI extends AbstractProvider imple @Override public ChartEditPane getChartEditPane(String plotID) { - return new ChartsEditPane(); + return ChartsEditPane.getInstance(); } } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/ChartPropertyPane.java b/designer_chart/src/com/fr/design/mainframe/ChartPropertyPane.java index f29efe7af6..64e2c0f79f 100644 --- a/designer_chart/src/com/fr/design/mainframe/ChartPropertyPane.java +++ b/designer_chart/src/com/fr/design/mainframe/ChartPropertyPane.java @@ -14,9 +14,10 @@ public class ChartPropertyPane extends MiddleChartPropertyPane{ * 创建图表属性表实例. */ private synchronized static ChartPropertyPane getInstance() { - //todo //创建新图表时,创建属性表配置面板 - singleton = new ChartPropertyPane(); + if (singleton == null) { + singleton = new ChartPropertyPane(); + } return singleton; } @@ -36,6 +37,9 @@ public class ChartPropertyPane extends MiddleChartPropertyPane{ @Override protected void createMainPane() { + this.removeAll(); + createNameLabel(); + this.add(createNorthComponent(), BorderLayout.NORTH); this.add(chartEditPane, BorderLayout.CENTER); } diff --git a/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java b/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java index 1d9732205d..5548e1ba79 100644 --- a/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java +++ b/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java @@ -15,7 +15,6 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itabpane.TitleChangeListener; import com.fr.design.mainframe.chart.ChartEditPane; import com.fr.general.Inter; -import com.fr.stable.StableUtils; import javax.swing.*; import java.awt.*; @@ -34,10 +33,7 @@ public abstract class MiddleChartPropertyPane extends BaseChartPropertyPane{ protected void initComponenet() { this.setLayout(new BorderLayout()); this.setBorder(null); - - createNameLabel(); - this.add(createNorthComponent(), BorderLayout.NORTH); - chartEditPane = StableUtils.construct(ChartEditPane.class); + chartEditPane = ChartEditPane.getInstance(); chartEditPane.setSupportCellData(true); } diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java index 3397fe9f9c..5784293d1f 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java @@ -6,6 +6,8 @@ import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.ChartCollection; import com.fr.design.ChartTypeInterfaceManager; import com.fr.design.beans.FurtherBasicBeanPane; +import com.fr.design.data.DesignTableDataManager; +import com.fr.design.data.tabledata.Prepare4DataSourceChange; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.chart.ChartEditPaneProvider; import com.fr.design.gui.frpane.AttributeChangeListener; @@ -22,12 +24,23 @@ import com.fr.general.FRLogger; import com.fr.general.Inter; import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import java.awt.*; import java.util.ArrayList; import java.util.Calendar; import java.util.List; -public class ChartEditPane extends BasicPane implements AttributeChange, ChartEditPaneProvider { +public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4DataSourceChange, ChartEditPaneProvider { + + public synchronized static ChartEditPane getInstance() { + if (singleton == null) { + singleton = new ChartEditPane(); + } + return singleton; + } + + private static ChartEditPane singleton; private final static int CHANGE_MIN_TIME = 80; @@ -65,9 +78,7 @@ public class ChartEditPane extends BasicPane implements AttributeChange, ChartEd paneList.add(otherPane); createTabsPane(); - - //TableDataComboBox 中有注册DSChangeListener,这里没有必要再次注册。 - //registerDSChangeListener(); + registerDSChangeListener(); } //构建主面板 @@ -117,7 +128,7 @@ public class ChartEditPane extends BasicPane implements AttributeChange, ChartEd } catch (CloneNotSupportedException e) { FRLogger.getLogger().error("error in clone ChartEditPane"); } - if (ComparatorUtils.equals(selectedPane.title4PopupWindow(), PaneTitleConstants.CHART_STYLE_TITLE)) { + if(ComparatorUtils.equals(selectedPane.title4PopupWindow(),PaneTitleConstants.CHART_STYLE_TITLE)){ dealWithStyleChange(); } @@ -128,11 +139,10 @@ public class ChartEditPane extends BasicPane implements AttributeChange, ChartEd /** * 重新构造面板 - * * @param currentChart 图表 */ - public void reLayout(Chart currentChart) { - if (currentChart != null) { + public void reLayout(Chart currentChart){ + if(currentChart != null){ int chartIndex = getSelectedChartIndex(currentChart); this.removeAll(); this.setLayout(new BorderLayout()); @@ -141,21 +151,21 @@ public class ChartEditPane extends BasicPane implements AttributeChange, ChartEd boolean isDefault = true; String plotID = ""; - if (currentChart.getPlot() != null) { + if(currentChart.getPlot() != null){ plotID = currentChart.getPlot().getPlotID(); isDefault = ChartTypeInterfaceManager.getInstance().isUseDefaultPane(plotID); } - if (isDefault) { + if(isDefault){ paneList.add(dataPane4SupportCell); paneList.add(stylePane); paneList.add(otherPane); this.isDefaultPane = true; - } else { + }else{ ChartDataPane chartDataPane = createChartDataPane(plotID); paneList.add(chartDataPane); AbstractChartAttrPane[] otherPaneList = ChartTypeInterfaceManager.getInstance().getAttrPaneArray(plotID, listener); - for (int i = 0; i < otherPaneList.length; i++) { + for(int i = 0; i < otherPaneList.length; i++){ otherPaneList[i].addAttributeChangeListener(listener); paneList.add(otherPaneList[i]); } @@ -222,7 +232,7 @@ public class ChartEditPane extends BasicPane implements AttributeChange, ChartEd return; } - if (checkNeedsReLayout(collection.getSelectedChart())) { + if(checkNeedsReLayout(collection.getSelectedChart())){ reLayout(collection.getSelectedChart()); } @@ -249,12 +259,12 @@ public class ChartEditPane extends BasicPane implements AttributeChange, ChartEd } } - public int getSelectedChartIndex(Chart chart) { + public int getSelectedChartIndex(Chart chart){ int index = 0; - if (typePane != null) { + if(typePane != null){ FurtherBasicBeanPane[] paneList = typePane.getPaneList(); - for (; index < paneList.length; index++) { - if (paneList[index].accept(chart)) { + for(; index < paneList.length; index++){ + if(paneList[index].accept(chart)){ return index; } } @@ -263,12 +273,12 @@ public class ChartEditPane extends BasicPane implements AttributeChange, ChartEd } //populate的时候看看要不要重构面板 - private boolean checkNeedsReLayout(Chart chart) { - if (chart != null) { + private boolean checkNeedsReLayout(Chart chart){ + if(chart != null){ int lastIndex = typePane.getSelectedIndex(); int currentIndex = getSelectedChartIndex(chart); boolean currentPane = true; - if (chart.getPlot() != null) { + if(chart.getPlot() != null){ String plotID = chart.getPlot().getPlotID(); currentPane = ChartTypeInterfaceManager.getInstance().isUseDefaultPane(plotID); } @@ -279,10 +289,9 @@ public class ChartEditPane extends BasicPane implements AttributeChange, ChartEd /** * 当前界面是否是默认的界面 - * * @return 是否是默认的界面 */ - public boolean isDefaultPane() { + public boolean isDefaultPane(){ return this.isDefaultPane; } @@ -314,16 +323,15 @@ public class ChartEditPane extends BasicPane implements AttributeChange, ChartEd } } - protected void dealWithStyleChange() { + protected void dealWithStyleChange(){ } /** - * 主要用于图表设计器,判断样式改变是否来自工具栏的全局样式按钮 - * + *主要用于图表设计器,判断样式改变是否来自工具栏的全局样式按钮 * @param isFromToolBar 是否来自工具栏 */ - public void styleChange(boolean isFromToolBar) { + public void styleChange(boolean isFromToolBar){ } @@ -336,4 +344,15 @@ public class ChartEditPane extends BasicPane implements AttributeChange, ChartEd paneList.get(index).addAttributeChangeListener(listener); } + /** + * 数据集改变的事件监听 + */ + public void registerDSChangeListener() { + DesignTableDataManager.addDsChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + AbstractChartAttrPane attrPane = paneList.get(tabsHeaderIconPane.getSelectedIndex()); + attrPane.refreshChartDataPane(collection); + } + }); + } } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartsEditPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartsEditPane.java index 3f35c585dc..87873cfd85 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/ChartsEditPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartsEditPane.java @@ -13,6 +13,15 @@ import java.util.ArrayList; public class ChartsEditPane extends ChartEditPane { protected ChartsConfigPane chartsConfigPane; + private static ChartEditPane single; + + public synchronized static ChartEditPane getInstance() { + if (single == null) { + single = new ChartsEditPane(); + } + return single; + } + public ChartsEditPane() { this.setLayout(new BorderLayout()); From f8cd4e13c5161888fd12066277551b915b07475f Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Tue, 5 Sep 2017 19:16:40 +0800 Subject: [PATCH 89/96] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E7=9B=B4?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E6=9F=A5=E8=AF=A2bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fun/impl/AbstractIndependentChartUI.java | 3 +- ...bstractIndependentChartUIWithAPILevel.java | 3 +- .../fun/impl/AbstractIndependentChartsUI.java | 2 +- .../design/mainframe/ChartPropertyPane.java | 10 +--- .../mainframe/MiddleChartPropertyPane.java | 60 ++++++++++--------- .../design/mainframe/chart/ChartEditPane.java | 13 +--- .../mainframe/chart/ChartsEditPane.java | 9 --- 7 files changed, 43 insertions(+), 57 deletions(-) diff --git a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUI.java b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUI.java index b5cd25a7f5..848fc44367 100644 --- a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUI.java +++ b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUI.java @@ -12,6 +12,7 @@ import com.fr.design.mainframe.chart.ChartsConfigPane; import com.fr.design.mainframe.chart.gui.ChartDataPane; import com.fr.design.mainframe.chart.gui.ChartStylePane; import com.fr.general.ComparatorUtils; +import com.fr.stable.StableUtils; /** @@ -57,7 +58,7 @@ public abstract class AbstractIndependentChartUI implements IndependentChartUIPr return new DataSeriesConditionPane(); } - public ChartEditPane getChartEditPane(String plotID){ return ChartEditPane.getInstance();} + public ChartEditPane getChartEditPane(String plotID){ return StableUtils.construct(ChartEditPane.class);} public ChartsConfigPane getChartConfigPane(String plotID){return null;} 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 cd8dbdcfcd..8aa412a6e3 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 @@ -12,6 +12,7 @@ import com.fr.design.mainframe.chart.ChartsConfigPane; import com.fr.design.mainframe.chart.gui.ChartDataPane; import com.fr.design.mainframe.chart.gui.ChartStylePane; import com.fr.general.ComparatorUtils; +import com.fr.stable.StableUtils; /** * Created by Mitisky on 16/3/7. @@ -68,7 +69,7 @@ public abstract class AbstractIndependentChartUIWithAPILevel implements Independ return getPlotTypePane().title4PopupWindow(); } - public ChartEditPane getChartEditPane(String plotID){ return ChartEditPane.getInstance();} + public ChartEditPane getChartEditPane(String plotID){ return StableUtils.construct(ChartEditPane.class);} public ChartsConfigPane getChartConfigPane(String plotID){return null;} } diff --git a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartsUI.java b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartsUI.java index 703852c206..fbd3ce36f1 100644 --- a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartsUI.java +++ b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartsUI.java @@ -97,7 +97,7 @@ public abstract class AbstractIndependentChartsUI extends AbstractProvider imple @Override public ChartEditPane getChartEditPane(String plotID) { - return ChartsEditPane.getInstance(); + return new ChartsEditPane(); } } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/ChartPropertyPane.java b/designer_chart/src/com/fr/design/mainframe/ChartPropertyPane.java index 64e2c0f79f..868fefbf76 100644 --- a/designer_chart/src/com/fr/design/mainframe/ChartPropertyPane.java +++ b/designer_chart/src/com/fr/design/mainframe/ChartPropertyPane.java @@ -14,10 +14,9 @@ public class ChartPropertyPane extends MiddleChartPropertyPane{ * 创建图表属性表实例. */ private synchronized static ChartPropertyPane getInstance() { + //todo //创建新图表时,创建属性表配置面板 - if (singleton == null) { - singleton = new ChartPropertyPane(); - } + singleton = new ChartPropertyPane(); return singleton; } @@ -31,15 +30,12 @@ public class ChartPropertyPane extends MiddleChartPropertyPane{ return new Dimension(super.getPreferredSize().width, 18); } }; - nameLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 1, 0)); + nameLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 1, 0)); nameLabel.setHorizontalAlignment(SwingConstants.CENTER); } @Override protected void createMainPane() { - this.removeAll(); - createNameLabel(); - this.add(createNorthComponent(), BorderLayout.NORTH); this.add(chartEditPane, BorderLayout.CENTER); } diff --git a/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java b/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java index 5548e1ba79..4ddd8740c2 100644 --- a/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java +++ b/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java @@ -15,6 +15,7 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itabpane.TitleChangeListener; import com.fr.design.mainframe.chart.ChartEditPane; import com.fr.general.Inter; +import com.fr.stable.StableUtils; import javax.swing.*; import java.awt.*; @@ -29,11 +30,14 @@ public abstract class MiddleChartPropertyPane extends BaseChartPropertyPane{ public MiddleChartPropertyPane() { initComponenet(); } - + protected void initComponenet() { this.setLayout(new BorderLayout()); this.setBorder(null); - chartEditPane = ChartEditPane.getInstance(); + + createNameLabel(); + this.add(createNorthComponent(), BorderLayout.NORTH); + chartEditPane = StableUtils.construct(ChartEditPane.class); chartEditPane.setSupportCellData(true); } @@ -43,11 +47,11 @@ public abstract class MiddleChartPropertyPane extends BaseChartPropertyPane{ this.createMainPane(); setSureProperty(); } - + protected abstract void createNameLabel(); - + protected abstract JComponent createNorthComponent(); - + protected abstract void createMainPane(); @@ -63,7 +67,7 @@ public abstract class MiddleChartPropertyPane extends BaseChartPropertyPane{ nameLabel.setText(Inter.getLocText("Chart-Property_Table") + (tabname != null ? ('-' + chartEditPane.getSelectedTabName()) : "")); resetChartEditPane(); } - + protected void resetChartEditPane() { remove(chartEditPane); add(chartEditPane, BorderLayout.CENTER); @@ -71,20 +75,20 @@ public abstract class MiddleChartPropertyPane extends BaseChartPropertyPane{ repaint(); revalidate(); } - + protected TitleChangeListener titleListener = new TitleChangeListener() { - + @Override public void fireTitleChange(String addName) { nameLabel.setText(Inter.getLocText("Chart-Property_Table") + '-' + addName); } }; - /** - * 感觉ChartCollection加载图表属性界面. - * @param collection 收集图表 - * @param ePane 面板 - */ + /** + * 感觉ChartCollection加载图表属性界面. + * @param collection 收集图表 + * @param ePane 面板 + */ public void populateChartPropertyPane(ChartCollection collection, TargetComponent ePane) { addChartEditPane(collection.getSelectedChart().getPlot().getPlotID()); setSupportCellData(true); @@ -92,11 +96,11 @@ public abstract class MiddleChartPropertyPane extends BaseChartPropertyPane{ chartEditPane.populate(collection); } - /** - * 感觉ChartCollection加载图表属性界面. - * @param collection 收集图表 - * @param ePane 面板 - */ + /** + * 感觉ChartCollection加载图表属性界面. + * @param collection 收集图表 + * @param ePane 面板 + */ public void populateChartPropertyPane(BaseChartCollection collection, TargetComponent ePane) { if (collection instanceof ChartCollection) { populateChartPropertyPane((ChartCollection)collection, ePane); @@ -123,18 +127,18 @@ public abstract class MiddleChartPropertyPane extends BaseChartPropertyPane{ return BaseUtils.readIcon("/com/fr/design/images/m_report/qb.png"); } - /** - * 预定义定位 - * @return 定位 - */ + /** + * 预定义定位 + * @return 定位 + */ public Location preferredLocation() { return Location.WEST_BELOW; } - /** - * 创建标题Panel - * @return 标题panel - */ + /** + * 创建标题Panel + * @return 标题panel + */ public UITitlePanel createTitlePanel() { return new UITitlePanel(this); } @@ -144,9 +148,9 @@ public abstract class MiddleChartPropertyPane extends BaseChartPropertyPane{ */ public void refreshDockingView() { // TODO Auto-generated method stub - + } - + /** * 设置是否支持单元格数据. */ diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java index 5784293d1f..fed9d2a824 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java @@ -33,15 +33,6 @@ import java.util.List; public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4DataSourceChange, ChartEditPaneProvider { - public synchronized static ChartEditPane getInstance() { - if (singleton == null) { - singleton = new ChartEditPane(); - } - return singleton; - } - - private static ChartEditPane singleton; - private final static int CHANGE_MIN_TIME = 80; protected ChartCollection collection; @@ -351,7 +342,9 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 DesignTableDataManager.addDsChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { AbstractChartAttrPane attrPane = paneList.get(tabsHeaderIconPane.getSelectedIndex()); - attrPane.refreshChartDataPane(collection); + if (attrPane.isShowing()) { + attrPane.refreshChartDataPane(collection); + } } }); } diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartsEditPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartsEditPane.java index 87873cfd85..3f35c585dc 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/ChartsEditPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartsEditPane.java @@ -13,15 +13,6 @@ import java.util.ArrayList; public class ChartsEditPane extends ChartEditPane { protected ChartsConfigPane chartsConfigPane; - private static ChartEditPane single; - - public synchronized static ChartEditPane getInstance() { - if (single == null) { - single = new ChartsEditPane(); - } - return single; - } - public ChartsEditPane() { this.setLayout(new BorderLayout()); From a2e131d0cfd164866e90ffcbd2a879a9be71062f Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Tue, 5 Sep 2017 19:17:49 +0800 Subject: [PATCH 90/96] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E7=9B=B4?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E6=9F=A5=E8=AF=A2bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/mainframe/chart/ChartEditPane.java | 1 + 1 file changed, 1 insertion(+) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java index fed9d2a824..f141f092f3 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java @@ -342,6 +342,7 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 DesignTableDataManager.addDsChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { AbstractChartAttrPane attrPane = paneList.get(tabsHeaderIconPane.getSelectedIndex()); + //不显示,没有处于编辑状态,没必要更新。 if (attrPane.isShowing()) { attrPane.refreshChartDataPane(collection); } From f4e5bf1ec6995afd5a01242eb1867911e4866f16 Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Tue, 5 Sep 2017 19:19:48 +0800 Subject: [PATCH 91/96] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/chart/ChartEditPane.java | 43 ++++++++++--------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java index f141f092f3..e66ac1da70 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java @@ -31,7 +31,7 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.List; -public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4DataSourceChange, ChartEditPaneProvider { +public class ChartEditPane extends BasicPane implements AttributeChange, Prepare4DataSourceChange, ChartEditPaneProvider { private final static int CHANGE_MIN_TIME = 80; @@ -119,7 +119,7 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 } catch (CloneNotSupportedException e) { FRLogger.getLogger().error("error in clone ChartEditPane"); } - if(ComparatorUtils.equals(selectedPane.title4PopupWindow(),PaneTitleConstants.CHART_STYLE_TITLE)){ + if (ComparatorUtils.equals(selectedPane.title4PopupWindow(), PaneTitleConstants.CHART_STYLE_TITLE)) { dealWithStyleChange(); } @@ -130,10 +130,11 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 /** * 重新构造面板 + * * @param currentChart 图表 */ - public void reLayout(Chart currentChart){ - if(currentChart != null){ + public void reLayout(Chart currentChart) { + if (currentChart != null) { int chartIndex = getSelectedChartIndex(currentChart); this.removeAll(); this.setLayout(new BorderLayout()); @@ -142,21 +143,21 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 boolean isDefault = true; String plotID = ""; - if(currentChart.getPlot() != null){ + if (currentChart.getPlot() != null) { plotID = currentChart.getPlot().getPlotID(); isDefault = ChartTypeInterfaceManager.getInstance().isUseDefaultPane(plotID); } - if(isDefault){ + if (isDefault) { paneList.add(dataPane4SupportCell); paneList.add(stylePane); paneList.add(otherPane); this.isDefaultPane = true; - }else{ + } else { ChartDataPane chartDataPane = createChartDataPane(plotID); paneList.add(chartDataPane); AbstractChartAttrPane[] otherPaneList = ChartTypeInterfaceManager.getInstance().getAttrPaneArray(plotID, listener); - for(int i = 0; i < otherPaneList.length; i++){ + for (int i = 0; i < otherPaneList.length; i++) { otherPaneList[i].addAttributeChangeListener(listener); paneList.add(otherPaneList[i]); } @@ -223,7 +224,7 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 return; } - if(checkNeedsReLayout(collection.getSelectedChart())){ + if (checkNeedsReLayout(collection.getSelectedChart())) { reLayout(collection.getSelectedChart()); } @@ -250,12 +251,12 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 } } - public int getSelectedChartIndex(Chart chart){ + public int getSelectedChartIndex(Chart chart) { int index = 0; - if(typePane != null){ + if (typePane != null) { FurtherBasicBeanPane[] paneList = typePane.getPaneList(); - for(; index < paneList.length; index++){ - if(paneList[index].accept(chart)){ + for (; index < paneList.length; index++) { + if (paneList[index].accept(chart)) { return index; } } @@ -264,12 +265,12 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 } //populate的时候看看要不要重构面板 - private boolean checkNeedsReLayout(Chart chart){ - if(chart != null){ + private boolean checkNeedsReLayout(Chart chart) { + if (chart != null) { int lastIndex = typePane.getSelectedIndex(); int currentIndex = getSelectedChartIndex(chart); boolean currentPane = true; - if(chart.getPlot() != null){ + if (chart.getPlot() != null) { String plotID = chart.getPlot().getPlotID(); currentPane = ChartTypeInterfaceManager.getInstance().isUseDefaultPane(plotID); } @@ -280,9 +281,10 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 /** * 当前界面是否是默认的界面 + * * @return 是否是默认的界面 */ - public boolean isDefaultPane(){ + public boolean isDefaultPane() { return this.isDefaultPane; } @@ -314,15 +316,16 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 } } - protected void dealWithStyleChange(){ + protected void dealWithStyleChange() { } /** - *主要用于图表设计器,判断样式改变是否来自工具栏的全局样式按钮 + * 主要用于图表设计器,判断样式改变是否来自工具栏的全局样式按钮 + * * @param isFromToolBar 是否来自工具栏 */ - public void styleChange(boolean isFromToolBar){ + public void styleChange(boolean isFromToolBar) { } From ff3cd152cb4a5d06d42b917552f58db4d4f88d16 Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Tue, 5 Sep 2017 19:27:23 +0800 Subject: [PATCH 92/96] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/MiddleChartPropertyPane.java | 5 +++-- .../com/fr/design/mainframe/chart/ChartEditPane.java | 12 +++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java b/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java index 4ddd8740c2..53609b49d5 100644 --- a/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java +++ b/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java @@ -16,6 +16,7 @@ import com.fr.design.gui.itabpane.TitleChangeListener; import com.fr.design.mainframe.chart.ChartEditPane; import com.fr.general.Inter; import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; import javax.swing.*; import java.awt.*; @@ -64,7 +65,7 @@ public abstract class MiddleChartPropertyPane extends BaseChartPropertyPane{ chartEditPane.setContainer(container); chartEditPane.addTitleChangeListener(titleListener); String tabname = chartEditPane.getSelectedTabName(); - nameLabel.setText(Inter.getLocText("Chart-Property_Table") + (tabname != null ? ('-' + chartEditPane.getSelectedTabName()) : "")); + nameLabel.setText(Inter.getLocText("Chart-Property_Table") + (tabname != null ? ('-' + chartEditPane.getSelectedTabName()) : StringUtils.EMPTY)); resetChartEditPane(); } @@ -155,7 +156,7 @@ public abstract class MiddleChartPropertyPane extends BaseChartPropertyPane{ * 设置是否支持单元格数据. */ public void setSupportCellData(boolean supportCellData) { - if(chartEditPane != null) { + if (chartEditPane != null) { chartEditPane.setSupportCellData(supportCellData); } } diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java index e66ac1da70..f681f275e8 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java @@ -22,6 +22,7 @@ import com.fr.design.mainframe.chart.gui.ChartTypePane; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.Inter; +import com.fr.stable.StringUtils; import javax.swing.*; import javax.swing.event.ChangeEvent; @@ -142,7 +143,7 @@ public class ChartEditPane extends BasicPane implements AttributeChange, Prepare addTypePane(); boolean isDefault = true; - String plotID = ""; + String plotID = StringUtils.EMPTY; if (currentChart.getPlot() != null) { plotID = currentChart.getPlot().getPlotID(); isDefault = ChartTypeInterfaceManager.getInstance().isUseDefaultPane(plotID); @@ -179,6 +180,7 @@ public class ChartEditPane extends BasicPane implements AttributeChange, Prepare } protected void setSelectedTab() { + //doNothing } /** @@ -224,7 +226,7 @@ public class ChartEditPane extends BasicPane implements AttributeChange, Prepare return; } - if (checkNeedsReLayout(collection.getSelectedChart())) { + if (isNeedsReLayout(collection.getSelectedChart())) { reLayout(collection.getSelectedChart()); } @@ -265,7 +267,7 @@ public class ChartEditPane extends BasicPane implements AttributeChange, Prepare } //populate的时候看看要不要重构面板 - private boolean checkNeedsReLayout(Chart chart) { + private boolean isNeedsReLayout(Chart chart) { if (chart != null) { int lastIndex = typePane.getSelectedIndex(); int currentIndex = getSelectedChartIndex(chart); @@ -317,7 +319,7 @@ public class ChartEditPane extends BasicPane implements AttributeChange, Prepare } protected void dealWithStyleChange() { - + //doNothing } /** @@ -326,7 +328,7 @@ public class ChartEditPane extends BasicPane implements AttributeChange, Prepare * @param isFromToolBar 是否来自工具栏 */ public void styleChange(boolean isFromToolBar) { - + //doNothing } /** From f692e08df7e2160ecf2aa7da8e58d23fa8c3f933 Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Thu, 7 Sep 2017 16:05:13 +0800 Subject: [PATCH 93/96] 1 --- .../mainframe/AuthorityEditToolBarPane.java | 128 +- .../mainframe/AuthorityToolBarPane.java | 40 +- .../com/fr/design/present/PresentPane.java | 218 +- .../widget/ui/CheckBoxGroupDefinePane.java | 53 +- .../widget/ui/NumberEditorDefinePane.java | 315 ++- .../design/actions/file/SwitchExistEnv.java | 7 +- .../src/com/fr/design/extra/PluginHelper.java | 382 --- .../com/fr/design/locale/designer.properties | 203 +- .../design/locale/designer_en_US.properties | 266 +- .../design/locale/designer_ja_JP.properties | 2515 +++++++++-------- .../design/locale/designer_ko_KR.properties | 162 +- .../design/locale/designer_zh_CN.properties | 182 +- .../design/locale/designer_zh_TW.properties | 371 ++- .../mainframe/loghandler/LogHandlerBar.java | 31 +- .../roleAuthority/ReportAndFSManagePane.java | 548 +++- designer_base/src/com/fr/env/RemoteEnv.java | 175 +- .../src/com/fr/start/BaseDesigner.java | 17 +- .../src/com/fr/start/StartServer.java | 312 +- .../com/fr/design/chart/ChartTypePane.java | 13 +- ...goryPlotMoreCateReportDataContentPane.java | 170 +- 20 files changed, 3450 insertions(+), 2658 deletions(-) delete mode 100644 designer_base/src/com/fr/design/extra/PluginHelper.java diff --git a/designer/src/com/fr/design/mainframe/AuthorityEditToolBarPane.java b/designer/src/com/fr/design/mainframe/AuthorityEditToolBarPane.java index 0b016c57e3..2632316771 100644 --- a/designer/src/com/fr/design/mainframe/AuthorityEditToolBarPane.java +++ b/designer/src/com/fr/design/mainframe/AuthorityEditToolBarPane.java @@ -1,6 +1,5 @@ package com.fr.design.mainframe; -import com.fr.base.FRContext; import com.fr.design.constants.LayoutConstants; import com.fr.design.constants.UIConstants; import com.fr.design.file.HistoryTemplateListPane; @@ -15,14 +14,12 @@ import com.fr.design.roleAuthority.RolesAlreadyEditedPane; import com.fr.design.webattr.ToolBarButton; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; -import com.fr.stable.StringUtils; import javax.swing.*; import javax.swing.tree.TreePath; import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; -import java.util.ArrayList; import java.util.List; /** @@ -34,16 +31,13 @@ import java.util.List; public class AuthorityEditToolBarPane extends AuthorityPropertyPane { private static final int TITLE_HEIGHT = 19; + private static final int RIGHT_GAP = 10; private AuthorityEditPane authorityEditPane = null; private AuthorityToolBarPane authorityToolBarPane; private String[] selectedPathArray; - public AuthorityEditToolBarPane(List buttonList) { + public AuthorityEditToolBarPane(List buttonlists) { super(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); - this.init(buttonList); - } - - private void init(List buttonList) { this.setLayout(new BorderLayout()); this.setBorder(null); UILabel authorityTitle = new UILabel(Inter.getLocText(new String[]{"FR-Designer_Permissions", @@ -58,8 +52,8 @@ public class AuthorityEditToolBarPane extends AuthorityPropertyPane { JPanel northPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); northPane.add(authorityTitle, BorderLayout.CENTER); northPane.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, UIConstants.LINE_COLOR)); - this.add(northPane, BorderLayout.NORTH); - authorityEditPane = new AuthorityEditPane(buttonList); +// this.add(northPane, BorderLayout.NORTH); + authorityEditPane = new AuthorityEditPane(buttonlists); this.add(authorityEditPane, BorderLayout.CENTER); } @@ -88,36 +82,40 @@ public class AuthorityEditToolBarPane extends AuthorityPropertyPane { private class AuthorityEditPane extends JPanel { private static final int TOP_GAP = 11; - private static final int LEFT_GAP = 8; - private static final int ALIGNMENT_GAP = -3; + private static final int LEFT_GAP = 4; + private static final int LEFT_CHECKPANE = 3; + private JPanel typePane; + private JPanel namePane; private UILabel type = null; private UILabel name = null; private JPanel checkPane = null; private List buttonlists; - private UICheckBox buttonVisible = new UICheckBox(Inter.getLocText("FR-Designer_Visible")); + private UICheckBox buttonVisible = new UICheckBox(Inter.getLocText("FR-Designer_Widget_Visible")); private ItemListener itemListener = new ItemListener() { public void itemStateChanged(ItemEvent e) { String selectedRole = ReportAndFSManagePane.getInstance().getRoleTree().getSelectedRoleName(); initSelectedPathArray(); - if (ComparatorUtils.equals(selectedRole, Inter.getLocText("FR-Designer_Role")) || selectedRole == null || selectedPathArray == null) { + if (ComparatorUtils.equals(selectedRole, Inter.getLocText("FR-Designer_Role")) || selectedRole == + null || selectedPathArray == null) { return; } - ToolBarButton selectedButton = null; - //是否可见的checkbox - UICheckBox checkbox = (UICheckBox) e.getSource(); - for (int i = 0; i < buttonlists.size(); i++) { - if (buttonlists.get(i).isSelected()) { - selectedButton = buttonlists.get(i); + for (int t = 0; t < selectedPathArray.length; t++) { + for (int i = 0; i < buttonlists.size(); i++) { + if (buttonlists.get(i).isSelected()) { + buttonlists.get(i).changeAuthorityState(selectedPathArray[t], buttonVisible.isSelected()); + authorityToolBarPane.repaint(); + } } - } - if (selectedButton != null) { - for (int t = 0; t < selectedPathArray.length; t++) { - selectedButton.changeAuthorityState(selectedPathArray[t], buttonVisible.isSelected()); - authorityToolBarPane.repaint(); - authorityToolBarPane.setAuthorityWebAttr(selectedButton.getWidget(), checkbox.isSelected(), selectedPathArray[t]); + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().fireTargetModified(); + RolesAlreadyEditedPane.getInstance().refreshDockingView(); + UICheckBox checkbox = (UICheckBox) e.getSource(); + List btns = AuthorityEditPane.this.buttonlists; + for (int j = 0; j < btns.size(); j++) { + if (btns.get(j).isSelected()) { + //由引擎实现保存进模板报表 + authorityToolBarPane.setAuthorityWebAttr(btns.get(j).getWidget(), checkbox.isSelected(), selectedPathArray[t]); + } } - HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().fireTargetModified();//模版更新 - RolesAlreadyEditedPane.getInstance().refreshDockingView();//已配置角色视图刷新 } } }; @@ -148,43 +146,36 @@ public class AuthorityEditToolBarPane extends AuthorityPropertyPane { public AuthorityEditPane(List buttonlists) { setLayout(new BorderLayout()); type = new UILabel(); + typePane = new JPanel(new BorderLayout()); + typePane.add(type, BorderLayout.CENTER); + type.setBorder(BorderFactory.createEmptyBorder(0,LEFT_GAP,0,0)); + typePane.setBorder(BorderFactory.createLineBorder(Color.lightGray)); name = new UILabel(); + namePane = new JPanel(new BorderLayout()); + namePane.add(name, BorderLayout.CENTER); + name.setBorder(BorderFactory.createEmptyBorder(0,LEFT_GAP,0,0)); + namePane.setBorder(BorderFactory.createLineBorder(Color.lightGray)); checkPane = new JPanel(); checkPane.setLayout(new BorderLayout()); - this.add(layoutText(), BorderLayout.WEST); - this.add(layoutPane(), BorderLayout.CENTER); - this.setBorder(BorderFactory.createEmptyBorder(TOP_GAP, LEFT_GAP, 0, 0)); + this.add(centerPane(), BorderLayout.NORTH); + this.setBorder(BorderFactory.createEmptyBorder(TOP_GAP, LEFT_GAP, 0, RIGHT_GAP)); this.buttonlists = buttonlists; buttonVisible.addItemListener(itemListener); } - private JPanel layoutText() { - double p = TableLayout.PREFERRED; - Component[][] components = new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("FR-Designer_Type") + ":", SwingConstants.RIGHT)}, - new Component[]{new UILabel(Inter.getLocText("FR-Designer_WF_Name") + ":", SwingConstants.RIGHT)}, - new Component[]{new UILabel(Inter.getLocText("FR-Designer_Permissions") + ":", SwingConstants - .RIGHT)}, - }; - double[] rowSize = {p, p, p}; - double[] columnSize = {p}; - int[][] rowCount = {{1}, {1}, {1}}; - return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM); - } - - - private JPanel layoutPane() { + private JPanel centerPane() { double f = TableLayout.FILL; double p = TableLayout.PREFERRED; + double[] rowSize = {p, p, p}; + double[] columnSize = {p, f}; + int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}}; Component[][] components = new Component[][]{ - new Component[]{type}, - new Component[]{name}, - new Component[]{checkPane}, + new Component[]{new UILabel(" " + Inter.getLocText("FR-Designer_Type") + " ", SwingConstants.LEFT), typePane}, + new Component[]{new UILabel(" " + Inter.getLocText("FR-Designer_WF_Name") + " ", SwingConstants.LEFT), namePane}, + new Component[]{checkPane, null}, }; - double[] rowSize = {p, p, p}; - double[] columnSize = {f}; - int[][] rowCount = {{1}, {1}, {1}}; - return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM); + + return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_SMALL, LayoutConstants.VGAP_MEDIUM); } /** @@ -214,43 +205,42 @@ public class AuthorityEditToolBarPane extends AuthorityPropertyPane { public void populateType() { - if (StringUtils.EMPTY.equals(name.getText())) { - type.setText(StringUtils.EMPTY); + if (name.getText() == "") { + type.setText(""); } else { type.setText(Inter.getLocText(new String[]{"ReportServerP-Toolbar", "FR-Designer_Form_Button"})); } } public void populateName() { - StringBuilder names = new StringBuilder(); + String names = ""; for (int i = 0; i < buttonlists.size(); i++) { if (buttonlists.get(i).isSelected()) { - names.append(",").append(buttonlists.get(i).getNameOption().optionName()); + names += "," + buttonlists.get(i).getNameOption().optionName(); } } - if (names.length() > 0) { - names.deleteCharAt(0); + if (names != "") { + names = names.substring(1); } - name.setText(names.toString()); + name.setText(names); } public void populateCheckPane() { checkPane.removeAll(); - if (StringUtils.EMPTY.equals(name.getText())) { + if (name.getText() == "") { return; } double f = TableLayout.FILL; double p = TableLayout.PREFERRED; Component[][] components = new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("FR-Designer_Form_Button"), SwingConstants.LEFT), - buttonVisible}, + new Component[]{buttonVisible}, }; - double[] rowSize = {p, p}; - double[] columnSize = {p, p, f}; - int[][] rowCount = {{1, 1, 1}, {1, 1, 1}}; - JPanel check = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM); + double[] rowSize = {p}; + double[] columnSize = {p}; + int[][] rowCount = {{1}}; + JPanel check = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_SMALL, LayoutConstants.VGAP_SMALL); checkPane.add(check, BorderLayout.CENTER); - checkPane.setBorder(BorderFactory.createEmptyBorder(ALIGNMENT_GAP, 0, 0, 0)); + checkPane.setBorder(BorderFactory.createEmptyBorder(0, LEFT_CHECKPANE, 0, 0)); } } } \ No newline at end of file diff --git a/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java b/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java index 7cd1930868..79e52bfe14 100644 --- a/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java +++ b/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java @@ -3,6 +3,7 @@ package com.fr.design.mainframe; import com.fr.base.ConfigManager; import com.fr.base.ConfigManagerProvider; import com.fr.base.FRContext; +import com.fr.common.inputevent.InputEventBaseOnOS; import com.fr.design.beans.BasicBeanPane; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.gui.icombobox.UIComboBox; @@ -67,7 +68,7 @@ public class AuthorityToolBarPane extends BasicBeanPane extends BasicBeanPane extends BasicBeanPane extends BasicBeanPane extends BasicBeanPane { - private DictPresentPane dictPresentPane; - private List keys; - private List displays; - - - @Override - protected String title4PopupWindow() { - return Inter.getLocText("FR-Designer_Present"); - } - - public void setSelectedByName(String radioName) { - jcb.setSelectedItem(radioName); - } - - /** - * 增加tab改变监听事件 - * @param l 监听事件 - */ - public void addTabChangeListener(ItemListener l) { - super.addTabChangeListener(l); - dictPresentPane.addTabChangeListener(l); - } - - @Override - public void populateBean(Present ob) { - if(ob == null) { - dictPresentPane.reset(); - } - super.populateBean(ob); - } - - @Override - protected List> initPaneList() { - if (keys == null) { - keys = new ArrayList(); - } - if (displays == null) { - displays = new ArrayList(); - } - List> paneList = new ArrayList>(); - FurtherBasicBeanPane none = new NonePresentPane(); - paneList.add(none); - keys.add("NOPRESENT"); - displays.add(none.title4PopupWindow()); - - paneList.add(dictPresentPane = new DictPresentPane()); - keys.add(DictPresent.class.getName()); - displays.add(dictPresentPane.title4PopupWindow()); - - FurtherBasicBeanPane bar = new BarCodePane(); - paneList.add(bar); - keys.add(BarcodePresent.class.getName()); - displays.add(bar.title4PopupWindow()); - - FurtherBasicBeanPane formula = new FormulaPresentPane(); - paneList.add(formula); - keys.add(FormulaPresent.class.getName()); - displays.add(formula.title4PopupWindow()); - - FurtherBasicBeanPane currency = new CurrencyLinePane(); - paneList.add(currency); - keys.add(CurrencyLinePresent.class.getName()); - displays.add(currency.title4PopupWindow()); - - Set providers = ExtraDesignClassManager.getInstance().getArray(PresentKindProvider.MARK_STRING); - for (PresentKindProvider provider : providers) { - FurtherBasicBeanPane extra = provider.appearanceForPresent(); - paneList.add(extra); - keys.add(provider.kindOfPresent().getName()); - displays.add(extra.title4PopupWindow()); - } - return paneList; - } - - @Override - protected UIComboBox createComboBox() { - return new DictionaryComboBox(keys.toArray(new String[keys.size()]), displays.toArray(new String[displays.size()])); - } - - @Override - protected void addComboBoxItem(List> cards, int index) { - // 初始化的时候已经加了,所以这里不用加了 - } +package com.fr.design.present; + +import com.fr.base.present.DictPresent; +import com.fr.base.present.FormulaPresent; +import com.fr.base.present.Present; +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.beans.FurtherBasicBeanPane; +import com.fr.design.constants.UIConstants; +import com.fr.design.fun.PresentKindProvider; +import com.fr.design.gui.frpane.UIComboBoxPane; +import com.fr.design.gui.icombobox.DictionaryComboBox; +import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.general.Inter; +import com.fr.report.cell.cellattr.BarcodePresent; +import com.fr.report.cell.cellattr.CurrencyLinePresent; + +import java.awt.event.ItemListener; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +/** + * @author zhou + * @since 2012-5-31上午11:22:28 + */ +public class PresentPane extends UIComboBoxPane { + private DictPresentPane dictPresentPane; + private List keys; + private List displays; + + + @Override + protected String title4PopupWindow() { + return Inter.getLocText("FR-Designer_Present"); + } + + public void setSelectedByName(String radioName) { + jcb.setSelectedItem(radioName); + } + + /** + * 增加tab改变监听事件 + * @param l 监听事件 + */ + public void addTabChangeListener(ItemListener l) { + super.addTabChangeListener(l); + dictPresentPane.addTabChangeListener(l); + } + + @Override + public void populateBean(Present ob) { + if(ob == null) { + dictPresentPane.reset(); + } + super.populateBean(ob); + } + + @Override + protected List> initPaneList() { + if (keys == null) { + keys = new ArrayList<>(); + } + if (displays == null) { + displays = new ArrayList<>(); + } + List> paneList = new ArrayList<>(); + FurtherBasicBeanPane none = new NonePresentPane(); + paneList.add(none); + keys.add("NOPRESENT"); + displays.add(none.title4PopupWindow()); + + dictPresentPane = new DictPresentPane(); + paneList.add(dictPresentPane); + keys.add(DictPresent.class.getName()); + displays.add(dictPresentPane.title4PopupWindow()); + + FurtherBasicBeanPane bar = new BarCodePane(); + paneList.add(bar); + keys.add(BarcodePresent.class.getName()); + displays.add(bar.title4PopupWindow()); + + FurtherBasicBeanPane formula = new FormulaPresentPane(); + paneList.add(formula); + keys.add(FormulaPresent.class.getName()); + displays.add(formula.title4PopupWindow()); + + FurtherBasicBeanPane currency = new CurrencyLinePane(); + paneList.add(currency); + keys.add(CurrencyLinePresent.class.getName()); + displays.add(currency.title4PopupWindow()); + + Set providers = ExtraDesignClassManager.getInstance().getArray(PresentKindProvider.MARK_STRING); + for (PresentKindProvider provider : providers) { + FurtherBasicBeanPane extra = provider.appearanceForPresent(); + paneList.add(extra); + keys.add(provider.kindOfPresent().getName()); + displays.add(extra.title4PopupWindow()); + } + return paneList; + } + + @Override + protected UIComboBox createComboBox() { + return new DictionaryComboBox<>(keys.toArray(new String[keys.size()]), displays.toArray(new String[displays.size()])); + } + + @Override + protected void addComboBoxItem(List> cards, int index) { + // 初始化的时候已经加了,所以这里不用加了 + } } \ No newline at end of file diff --git a/designer/src/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java b/designer/src/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java index 02addd1936..bdb6cdc90a 100644 --- a/designer/src/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java @@ -1,21 +1,18 @@ package com.fr.design.widget.ui; -import java.awt.BorderLayout; -import java.awt.FlowLayout; +import java.awt.*; import javax.swing.BorderFactory; import javax.swing.JPanel; - import com.fr.design.data.DataCreatorUI; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.present.dict.DictionaryPane; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; import com.fr.form.ui.CheckBoxGroup; import com.fr.general.Inter; public class CheckBoxGroupDefinePane extends FieldEditorDefinePane { - private DictionaryPane dictPane; - CheckBoxDictPane checkBoxDictPane; private UICheckBox checkbox; @@ -29,7 +26,6 @@ public class CheckBoxGroupDefinePane extends FieldEditorDefinePane { /** - * + * FieldEditorDefinePane */ private static final long serialVersionUID = 8011242951911686805L; private UICheckBox allowDecimalsCheckBox; @@ -36,112 +40,23 @@ public class NumberEditorDefinePane extends FieldEditorDefinePane private SpinnerNumberModel maxValueModel; private UIBasicSpinner minValueSpinner; private SpinnerNumberModel minValueModel; - private com.fr.design.editor.editor.IntegerEditor decimalLength; + private UISpinner decimalLength; private JPanel limitNumberPane; private WaterMarkDictPane waterMarkDictPane; - private ActionListener actionListener1 = new ActionListener() { - public void actionPerformed(ActionEvent e) { - if (allowDecimalsCheckBox.isSelected()) { - limitNumberPane.setVisible(true); - } else { - limitNumberPane.setVisible(false); - } - } - }; - - private ActionListener actionListener2 = new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - if (allowNegativeCheckBox.isSelected()) { - minValueModel.setMinimum(-Double.MAX_VALUE); - if (!setMinValueCheckBox.isSelected()) { - maxValueModel.setMinimum(-Double.MAX_VALUE); - } - } else { - minValueModel.setMinimum(0.0); - if (!setMinValueCheckBox.isSelected()) { - maxValueModel.setMinimum(0.0); - } - Double minValue = Double.parseDouble("" + minValueSpinner.getValue()); - Double maxValue = Double.parseDouble("" + maxValueSpinner.getValue()); - if (minValue < 0.0) { - minValueSpinner.setValue(0.0); - } - if (maxValue < 0.0) { - maxValueSpinner.setValue(0.0); - } - } - } - }; - - - private ActionListener actionListener3 = new ActionListener() { - public void actionPerformed(ActionEvent e) { - if (setMaxValueCheckBox.isSelected()) { - maxValueSpinner.setVisible(true); - Double value = new Double(0); - if (setMinValueCheckBox.isSelected()) { - Double minValue = Double.parseDouble("" + minValueSpinner.getValue()); - if (minValue > value) { - value = minValue; - } - } - maxValueSpinner.setValue(value); - } else { - maxValueSpinner.setVisible(false); - minValueModel.setMaximum(Double.MAX_VALUE); - } - } - }; - + private ActionListener allowDecimalsListener; - private ActionListener actionListener4 = new ActionListener() { - public void actionPerformed(ActionEvent e) { - if (setMinValueCheckBox.isSelected()) { - minValueSpinner.setVisible(true); - Double value = new Double(0); - if (setMaxValueCheckBox.isSelected()) { - Double maxValue = Double.parseDouble("" + maxValueSpinner.getValue()); - if (maxValue < value) { - value = maxValue; - } - } - minValueSpinner.setValue(value); - } else { - minValueSpinner.setVisible(false); - maxValueModel.setMinimum(allowNegativeCheckBox.isSelected() ? (-Double.MAX_VALUE) : new Double(0)); - } - } - }; + private ActionListener allowNegativeListener ; - private ChangeListener changeListener1 = new ChangeListener() { + public ActionListener setMaxListener; - @Override - public void stateChanged(ChangeEvent e) { - if (setMaxValueCheckBox.isSelected()) { - if (setMinValueCheckBox.isSelected()) { - minValueModel.setMaximum(Double.parseDouble("" + maxValueSpinner.getValue())); - } - } - } - }; + private ActionListener setMinListener; - private ChangeListener changeListener2 = new ChangeListener() { + private ChangeListener maxValueChangeListener; - @Override - public void stateChanged(ChangeEvent e) { - if (setMinValueCheckBox.isSelected()) { - if (setMaxValueCheckBox.isSelected()) { - maxValueModel.setMinimum(Double.parseDouble("" + minValueSpinner.getValue())); - } - } - } - }; + private ChangeListener minValueChangeListener; public NumberEditorDefinePane() { - this.initComponents(); } @@ -152,52 +67,60 @@ public class NumberEditorDefinePane extends FieldEditorDefinePane @Override protected JPanel setFirstContentPane() { - JPanel content = FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane(); - content.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - content.setLayout(FRGUIPaneFactory.createBorderLayout()); - // richer:数字的允许直接编辑没有意义 + JPanel content = FRGUIPaneFactory.createBorderLayout_S_Pane(); + waterMarkDictPane = new WaterMarkDictPane(); + waterMarkDictPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0)); + content.add(waterMarkDictPane, BorderLayout.CENTER); + return content; + } - JPanel northPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Advanced")); - content.add(northPane, BorderLayout.NORTH); - waterMarkDictPane = new WaterMarkDictPane(); - northPane.add(waterMarkDictPane); - content.add(northPane, BorderLayout.NORTH); - this.allowDecimalsCheckBox = new UICheckBox(Inter.getLocText("Allow_Decimals")); - this.decimalLength = new com.fr.design.editor.editor.IntegerEditor(); - this.decimalLength.setColumns(4); - limitNumberPane = GUICoreUtils.createFlowPane(new JComponent[]{new UILabel(Inter.getLocText("FR-Designer_Decimal_Places")), this.decimalLength}, - FlowLayout.LEFT, 4); - getValidatePane().add(GUICoreUtils.createFlowPane(new JComponent[]{this.allowDecimalsCheckBox, limitNumberPane}, FlowLayout.LEFT, 4)); - this.allowDecimalsCheckBox.addActionListener(actionListener1); - - this.allowNegativeCheckBox = new UICheckBox(Inter.getLocText("Allow_Negative")); - getValidatePane().add(GUICoreUtils.createFlowPane(new JComponent[]{this.allowNegativeCheckBox}, FlowLayout.LEFT, 4)); - this.allowNegativeCheckBox.addActionListener(actionListener2); - - this.setMaxValueCheckBox = new UICheckBox(Inter.getLocText("Need_Max_Value"), false); + public JPanel setValidatePane() { + initListeners(); + + this.allowDecimalsCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Allow_Decimals")); + allowDecimalsCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + this.decimalLength = new UISpinner(0, Integer.MAX_VALUE, 1, 16); + this.allowDecimalsCheckBox.addActionListener(allowDecimalsListener); + this.allowNegativeCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Allow_Negative")); + this.allowNegativeCheckBox.addActionListener(allowNegativeListener); + allowNegativeCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + + this.setMaxValueCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Max_Value"), false); + setMaxValueCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); this.maxValueSpinner = new UIBasicSpinner(maxValueModel = new SpinnerNumberModel(0D, -Double.MAX_VALUE, Double.MAX_VALUE, 1D)); - maxValueSpinner.setPreferredSize(new Dimension(120, 20)); setNotAllowsInvalid(this.maxValueSpinner); - getValidatePane().add(GUICoreUtils.createFlowPane(new JComponent[]{this.setMaxValueCheckBox, this.maxValueSpinner}, FlowLayout.LEFT, 4)); - this.maxValueSpinner.setVisible(false); - this.setMaxValueCheckBox.addActionListener(actionListener3); - this.maxValueSpinner.addChangeListener(changeListener1); + this.setMaxValueCheckBox.addActionListener(setMaxListener); + this.maxValueSpinner.addChangeListener(maxValueChangeListener); - this.setMinValueCheckBox = new UICheckBox(Inter.getLocText("Need_Min_Value"), false); + this.setMinValueCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Min_Value"), false); + setMinValueCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); this.minValueSpinner = new UIBasicSpinner(minValueModel = new SpinnerNumberModel(0D, -Double.MAX_VALUE, Double.MAX_VALUE, 1D)); - minValueSpinner.setPreferredSize(new Dimension(120, 20)); setNotAllowsInvalid(this.minValueSpinner); - getValidatePane().add(GUICoreUtils.createFlowPane(new JComponent[]{this.setMinValueCheckBox, this.minValueSpinner}, FlowLayout.LEFT, 4)); - this.minValueSpinner.setVisible(false); - this.setMinValueCheckBox.addActionListener(actionListener4); - this.minValueSpinner.addChangeListener(changeListener2); - getValidatePane().add(GUICoreUtils.createFlowPane(new JComponent[]{new UILabel(Inter.getLocText(new String[]{"Error", "Tooltips"}) + ":"), getRegErrorMsgTextField()}, FlowLayout.LEFT, 24)); - - return content; + this.setMinValueCheckBox.addActionListener(setMinListener); + this.minValueSpinner.addChangeListener(minValueChangeListener); + + UILabel numberLabel = new UILabel(Inter.getLocText(new String[]{"FR-Designer_Double", "Numbers"})); + limitNumberPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{numberLabel, decimalLength}}, TableLayoutHelper.FILL_LASTCOLUMN, 18, 7); + double f = TableLayout.FILL; + double p = TableLayout.PREFERRED; + Component[][] components = new Component[][]{ + new Component[]{allowDecimalsCheckBox, null}, + new Component[]{limitNumberPane, null}, + new Component[]{allowNegativeCheckBox, null}, + new Component[]{setMaxValueCheckBox, maxValueSpinner}, + new Component[]{setMinValueCheckBox, minValueSpinner}, + }; + double[] rowSize = {p, p, p, p, p}; + double[] columnSize = {p, f}; + int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}; + JPanel pane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM); + pane.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); + return pane; } + @Override protected void populateSubFieldEditorBean(NumberEditor e) { allowDecimalsCheckBox.setSelected(e.isAllowDecimals()); @@ -205,31 +128,30 @@ public class NumberEditorDefinePane extends FieldEditorDefinePane this.decimalLength.setValue(e.getMaxDecimalLength()); } else { this.limitNumberPane.setVisible(false); + this.limitNumberPane.setPreferredSize(new Dimension(0,0)); } allowNegativeCheckBox.setSelected(e.isAllowNegative()); if (e.getMaxValue() == Double.MAX_VALUE) { setMaxValueCheckBox.setSelected(false); maxValueSpinner.setValue(new Double(Double.MAX_VALUE)); - maxValueSpinner.setVisible(false); - + maxValueSpinner.setEnabled(false); } else { setMaxValueCheckBox.setSelected(true); - maxValueSpinner.setVisible(true); + maxValueSpinner.setEnabled(true); maxValueSpinner.setValue(new Double(e.getMaxValue())); } if (e.getMinValue() == -Double.MAX_VALUE) { setMinValueCheckBox.setSelected(false); minValueSpinner.setValue(new Double(-Double.MAX_VALUE)); - minValueSpinner.setVisible(false); + minValueSpinner.setEnabled(false); } else { + minValueSpinner.setEnabled(true); setMinValueCheckBox.setSelected(true); - minValueSpinner.setVisible(true); minValueSpinner.setValue(new Double(e.getMinValue())); } - this.getRegErrorMsgTextField().setText(e.getRegErrorMessage()); this.waterMarkDictPane.populate(e); } @@ -239,7 +161,7 @@ public class NumberEditorDefinePane extends FieldEditorDefinePane NumberEditor ob = new NumberEditor(); ob.setAllowDecimals(allowDecimalsCheckBox.isSelected()); if (allowDecimalsCheckBox.isSelected()) { - ob.setMaxDecimalLength(this.decimalLength.getValue()); + ob.setMaxDecimalLength((int)this.decimalLength.getValue()); } ob.setAllowNegative(allowNegativeCheckBox.isSelected()); @@ -257,23 +179,112 @@ public class NumberEditorDefinePane extends FieldEditorDefinePane this.waterMarkDictPane.update(ob); - ob.setRegErrorMessage(this.getRegErrorMsgTextField().getText()); return ob; } - private void checkVisible() { - if (setMinValueCheckBox.isSelected()) { - minValueSpinner.setVisible(true); - } else { - minValueSpinner.setVisible(false); - } - if (setMinValueCheckBox.isSelected()) { - minValueSpinner.setVisible(true); - } else { - minValueSpinner.setVisible(false); + private void initListeners(){ allowDecimalsListener = new ActionListener() { + public void actionPerformed(ActionEvent e) { + if (allowDecimalsCheckBox.isSelected()) { + limitNumberPane.setVisible(true); + limitNumberPane.setPreferredSize(new Dimension(215,20)); + } else { + limitNumberPane.setVisible(false); + limitNumberPane.setPreferredSize(new Dimension(0,0)); + } } + }; + + allowNegativeListener = new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + if (allowNegativeCheckBox.isSelected()) { + minValueModel.setMinimum(-Double.MAX_VALUE); + if (!setMinValueCheckBox.isSelected()) { + maxValueModel.setMinimum(-Double.MAX_VALUE); + } + } else { + minValueModel.setMinimum(0.0); + if (!setMinValueCheckBox.isSelected()) { + maxValueModel.setMinimum(0.0); + } + Double minValue = Double.parseDouble("" + minValueSpinner.getValue()); + Double maxValue = Double.parseDouble("" + maxValueSpinner.getValue()); + if (minValue < 0.0) { + minValueSpinner.setValue(0.0); + } + if (maxValue < 0.0) { + maxValueSpinner.setValue(0.0); + } + } + } + }; + + + setMaxListener = new ActionListener() { + public void actionPerformed(ActionEvent e) { + if (setMaxValueCheckBox.isSelected()) { + maxValueSpinner.setEnabled(true); + Double value = new Double(0); + if (setMinValueCheckBox.isSelected()) { + Double minValue = Double.parseDouble("" + minValueSpinner.getValue()); + if (minValue > value) { + value = minValue; + } + } + maxValueSpinner.setValue(value); + } else { + maxValueSpinner.setEnabled(false); + minValueModel.setMaximum(Double.MAX_VALUE); + } + } + }; + + + setMinListener = new ActionListener() { + public void actionPerformed(ActionEvent e) { + if (setMinValueCheckBox.isSelected()) { + minValueSpinner.setEnabled(true); + Double value = new Double(0); + if (setMaxValueCheckBox.isSelected()) { + Double maxValue = Double.parseDouble("" + maxValueSpinner.getValue()); + if (maxValue < value) { + value = maxValue; + } + } + minValueSpinner.setValue(value); + } else { + minValueSpinner.setEnabled(false); + maxValueModel.setMinimum(allowNegativeCheckBox.isSelected() ? (-Double.MAX_VALUE) : new Double(0)); + } + } + }; + + maxValueChangeListener = new ChangeListener() { + + @Override + public void stateChanged(ChangeEvent e) { + if (setMaxValueCheckBox.isSelected()) { + if (setMinValueCheckBox.isSelected()) { + minValueModel.setMaximum(Double.parseDouble("" + maxValueSpinner.getValue())); + } + } + } + }; + + minValueChangeListener = new ChangeListener() { + + @Override + public void stateChanged(ChangeEvent e) { + if (setMinValueCheckBox.isSelected()) { + if (setMaxValueCheckBox.isSelected()) { + maxValueModel.setMinimum(Double.parseDouble("" + minValueSpinner.getValue())); + } + } + } + }; } private void setNotAllowsInvalid(UIBasicSpinner jspinner) { diff --git a/designer_base/src/com/fr/design/actions/file/SwitchExistEnv.java b/designer_base/src/com/fr/design/actions/file/SwitchExistEnv.java index 0777d5991d..fbb7d0ae1e 100644 --- a/designer_base/src/com/fr/design/actions/file/SwitchExistEnv.java +++ b/designer_base/src/com/fr/design/actions/file/SwitchExistEnv.java @@ -118,7 +118,7 @@ public class SwitchExistEnv extends MenuDef { return; } SignIn.signIn(selectedEnv); - resetLicenseBytes(); + FRCoreContext.resetBytes(); HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshToolArea(); fireDSChanged(); } catch (Exception em) { @@ -127,10 +127,5 @@ public class SwitchExistEnv extends MenuDef { TemplatePane.getInstance().editItems(); } } - - private void resetLicenseBytes() { - FRCoreContext.retryLicLock(); - } } - } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java deleted file mode 100644 index c2bb480ecb..0000000000 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ /dev/null @@ -1,382 +0,0 @@ -package com.fr.design.extra; - -import com.fr.base.Env; -import com.fr.base.FRContext; -import com.fr.design.DesignerEnvManager; -import com.fr.design.extra.plugindependence.DownLoadDependenceUI; -import com.fr.general.FRLogger; -import com.fr.general.GeneralUtils; -import com.fr.general.IOUtils; -import com.fr.general.Inter; -import com.fr.general.SiteCenter; -import com.fr.general.http.HttpClient; -import com.fr.plugin.Plugin; -import com.fr.plugin.PluginConfigManager; -import com.fr.plugin.PluginLoader; -import com.fr.plugin.PluginManagerHelper; -import com.fr.plugin.basic.version.Version; -import com.fr.plugin.basic.version.VersionIntervalFactory; -import com.fr.plugin.dependence.PluginDependence; -import com.fr.plugin.dependence.PluginDependenceException; -import com.fr.plugin.dependence.PluginDependenceUnit; -import com.fr.stable.ArrayUtils; -import com.fr.stable.AssistUtils; -import com.fr.stable.EncodeConstants; -import com.fr.stable.StableUtils; -import com.fr.stable.StringUtils; -import com.fr.stable.plugin.PluginConstants; -import com.fr.stable.project.ProjectConstants; -import com.fr.stable.xml.XMLTools; - -import javax.swing.*; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.net.URLDecoder; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.concurrent.ExecutionException; - -/** - * @author richie - * @date 2015-03-10 - * @since 8.0 - */ -public class PluginHelper { - private static final String TEMP_PATH = System.getProperty("user.dir") + "/tmp"; - public static final String DOWNLOAD_PATH = System.getProperty("user.dir") + "/download"; - //插件依赖的下载位置 - public static final String DEPENDENCE_DOWNLOAD_PATH = System.getProperty("user.dir") + "/download/dependence"; - public static final String TEMP_FILE = "temp.zip"; - public static final String CONNECTION_404 = "404"; - - - /** - * 下载插件 - * - * @param id 插件id - * @param p 下载百分比处理 - */ - public static void downloadPluginFile(String id, String username, String password, Process p) throws Exception { - HttpClient httpClient = new HttpClient(getDownloadPath(id, username, password)); - if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { - int totalSize = httpClient.getContentLength(); - InputStream reader = httpClient.getResponseStream(); - String temp = StableUtils.pathJoin(DOWNLOAD_PATH, TEMP_FILE); - StableUtils.makesureFileExist(new File(temp)); - FileOutputStream writer = new FileOutputStream(temp); - byte[] buffer = new byte[PluginConstants.BYTES_NUM]; - int bytesRead = 0; - int totalBytesRead = 0; - - while ((bytesRead = reader.read(buffer)) > 0) { - writer.write(buffer, 0, bytesRead); - buffer = new byte[PluginConstants.BYTES_NUM]; - totalBytesRead += bytesRead; - p.process(totalBytesRead / (double) totalSize); - } - reader.close(); - writer.flush(); - writer.close(); - } else { - throw new com.fr.plugin.PluginVerifyException(Inter.getLocText("FR-Designer-Plugin_Connect_Server_Error")); - } - } - - private static boolean isInvalidUser(String id, String username, String password) { - if (StringUtils.isEmpty(id)) { - return false; - } else if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)){ - return false; - } else { - return true; - } - } - - private static String getDownloadPath(String id, String username, String password) throws Exception { - HashMap map = new HashMap(); - map.put("id", id); - map.put("username", username); - map.put("password", password); - HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("plugin.download"), map); - String resText = httpClient.getResponseText(); - String charSet = EncodeConstants.ENCODING_UTF_8; - resText = URLDecoder.decode(URLDecoder.decode(resText, charSet), charSet); - - return resText; - } - - public static File getDownloadTempFile() { - return new File(StableUtils.pathJoin(DOWNLOAD_PATH, TEMP_FILE)); - } - - /** - * 从压缩文件中读取插件信息 - * - * @param chosenFile 选择的压缩文件 - * @return 返回插件对象 - * @throws Exception 读取插件信息失败则抛出异常 - */ - public static Plugin readPlugin(File chosenFile) throws Exception { - // 需要先删除临时目录保证加压出来的文件不会和安装失败的文件混合到一起 - StableUtils.deleteFile(new File(TEMP_PATH)); - - IOUtils.unzip(chosenFile, TEMP_PATH); - File pluginFileDir = getTempPluginFileDirectory(); - if (pluginFileDir == null) { - return null; - } - Plugin plugin = null; - if (pluginFileDir.isDirectory()) { - File[] pluginFiles = pluginFileDir.listFiles(); - if (ArrayUtils.isNotEmpty(pluginFiles)) { - for (File f : pluginFiles) { - if (AssistUtils.equals(f.getName(), "plugin.xml")) { - plugin = new Plugin(); - InputStream inputStream = plugin.readEncryptXml(new FileInputStream(f)); - XMLTools.readInputStreamXML(plugin, inputStream); - //检查是否需要准备插件依赖环境 - checkDependenceEnv(plugin); - if (!plugin.isValidate()) { - return null; - } - inputStream.close(); - break; - } - } - } - } - return plugin; - } - - //将所有未配置好的资源文件依赖准备好 - private static void checkDependenceEnv(Plugin plugin) throws PluginDependenceException { - PluginDependence dependence = plugin.getDependence(); - if (dependence == null) { - return; - } - - List needInstallDependence = new ArrayList(); - - String currentID = dependence.getCurrentPluginID(); - List list = dependence.getDependPlugins(); - for (int i = 0; list != null && i < list.size(); i++) { - PluginDependenceUnit dependenceUnit = list.get(i); - if (!dependenceUnit.checkFileEnv()) { - needInstallDependence.add(dependenceUnit); - } - } - - if (needInstallDependence.isEmpty()) { - return; - } - - //安装插件依赖 - installDependenceOnline(currentID, needInstallDependence); - } - - /** - * 构造一个下载UI - * - * @param currentID - * @param list - * @throws PluginDependenceException - */ - private static void installDependenceOnline(String currentID, List list) throws PluginDependenceException { - DownLoadDependenceUI ui = new DownLoadDependenceUI(currentID, list); - ui.installOnline(); - } - - /** - * 从选中的压缩文件中安装插件 - * - * @param chosenFile 选择的压缩文件 - * @param after 操作完成事件 - * @throws Exception 安装失败则抛出异常 - */ - public static void installPluginFromDisk(File chosenFile, After after) throws Exception { - Plugin plugin = readPlugin(chosenFile); - installPluginFromUnzippedTempDir(FRContext.getCurrentEnv(), plugin, after); - } - - /** - * 从压缩文件中复制Restart*.class和restart.exe到bin目录下 - * - * @param file 插件文件 - * @param plugin 插件 - * @throws Exception - */ - public static void copyFilesToBinFolder(File file, Plugin plugin) throws Exception { - File[] pluginFiles = file.listFiles(); - for (File restartFile : pluginFiles) { - if (restartFile.getAbsolutePath().endsWith(".class")) { - String installHome = StableUtils.getInstallHome(); - IOUtils.copy(restartFile, new File(StableUtils.pathJoin(new String[]{installHome, "bin"}))); - } - } - } - - /** - * 从插件压缩包解压到得临时文件中安装插件 - * - * @param env 报表运行环境 - * @param plugin 插件 - * @param after 操作完成事件 - * @throws Exception - */ - public static void installPluginFromUnzippedTempDir(Env env, final Plugin plugin, final After after) throws Exception { - validPlugin(plugin); - if (plugin.isValidate()) { - File file = getTempPluginFileDirectory(); - env.copyFilesToPluginAndLibFolder(file, plugin); - copyFilesToBinFolder(file, plugin); - env.movePluginEmbFile(file, plugin); - } - // 删除放解压文件的临时文件夹 - StableUtils.deleteFile(new File(TEMP_PATH)); - PluginConfigManager.getProviderInstance().pushNewPlugin(plugin); - PluginConfigManager.getProviderInstance().syncPluginConfig(); - new SwingWorker() { - - @Override - protected String doInBackground() throws Exception { - return sendInstalledPluginInfo(plugin); - } - - @Override - protected void done() { - try { - String text = get(); - FRLogger.getLogger().info("plugin install:" + text); - } catch (InterruptedException e) { - FRLogger.getLogger().error(e.getMessage(), e); - } catch (ExecutionException e) { - FRLogger.getLogger().error(e.getMessage(), e); - } - if (after != null) { - after.done(); - } - } - }.execute(); - } - - private static void validPlugin(Plugin plugin) throws Exception { - if (plugin == null) { - throw new com.fr.plugin.PluginVerifyException(Inter.getLocText("FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install")); - } - if (PluginLoader.getLoader().isInstalled(plugin)) { - throw new com.fr.plugin.PluginVerifyException(Inter.getLocText("FR-Designer-Plugin_Has_Been_Installed")); - } - if (plugin.checkIfJarExpired()) { - String jarExpiredInfo = Inter.getLocText(new String[]{"FR-Designer-Plugin_Jar_Expired", ",", "FR-Designer-Plugin_Install_Failed", ",", "FR-Designer-Plugin_Please_Update_Jar", plugin.getRequiredJarTime()}); - FRLogger.getLogger().error(jarExpiredInfo); - throw new com.fr.plugin.PluginVerifyException(jarExpiredInfo); - } - if (!isSupportCurrentEnv(plugin.getEnvVersion())) { - String envVersionNotSupport = Inter.getLocText(new String[]{"FR-Designer-Plugin_Env_Expired", ",", "FR-Designer-Plugin_Install_Failed"}); - FRLogger.getLogger().error(envVersionNotSupport); - throw new com.fr.plugin.PluginVerifyException(envVersionNotSupport); - } - - File fileToCheck = getTempPluginFileDirectory(); - File oldfile = new File(StableUtils.pathJoin(FRContext.getCurrentEnv().getPath(), ProjectConstants.PLUGINS_NAME, "plugin-" + plugin.getId())); - if (!PluginManagerHelper.checkLic(plugin, fileToCheck) && !PluginManagerHelper.checkLic(plugin, oldfile)) { - //安装时,在安装目录下和压缩包里都没有才弹框 - String checkLicFail = Inter.getLocText("FR-Designer-PluginLicense_Check_Failed"); - FRLogger.getLogger().error(checkLicFail); - throw new com.fr.plugin.PluginVerifyException(checkLicFail); - } - } - - private static boolean isSupportCurrentEnv(String envVersion) { - //包含8.0 - return VersionIntervalFactory.create(envVersion).contain(Version.currentEnvVersion()); - } - - /** - * 获取插件解压的临时文件夹 - * - * @return 临时文件 - */ - public static File getTempPluginFileDirectory() { - File file = new File(TEMP_PATH); - if (file.isDirectory() && !file.getName().startsWith(".")) { - File[] files = file.listFiles(); - if (ArrayUtils.isNotEmpty(files)) { - for (File f : files) { - if (hasFoundConfigFile(f)) { - return f; - } - } - } - } - return null; - } - - private static boolean hasFoundConfigFile(File dir) { - if (!dir.isDirectory()) { - return false; - } - File[] files = dir.listFiles(); - if (ArrayUtils.isNotEmpty(files)) { - for (File f : files) { - if (AssistUtils.equals("plugin.xml",f.getName())) { - return true; - } - } - } - return false; - } - - /** - * 从运行环境中卸载插件 - * - * @param env 报表运行环境 - * @param plugin 插件 - * @return 返回没有删除掉的文件的集合 - * @throws Exception 卸载出错的时候抛出此异常 - */ - public static String[] uninstallPlugin(Env env, Plugin plugin) throws Exception { - if (plugin == null || env == null) { - return ArrayUtils.EMPTY_STRING_ARRAY; - } - //卸载前监听 - plugin.preUninstall(); - PluginLoader.getLoader().deletePlugin(plugin); - return env.deleteFileFromPluginAndLibFolder(plugin); - } - - /** - * 比较插件的版本,这里简单的比价字符串,不需要用数字作为标号 - * 版本号相同也认为是更新 - * - * @param plugin 当前的插件 - * @param oldPlugin 老的插件 - * @return 当前插件比老的插件版本高则返回true,否则返回false - */ - public static boolean isNewThan(Plugin plugin, Plugin oldPlugin) { - - return plugin.versionCompareTo(oldPlugin) >= 0; - } - - - private static String sendInstalledPluginInfo(final Plugin plugin) { - if (StableUtils.isDebug()) { - return "debug status"; - } - HashMap map = new HashMap(); - map.put("key", DesignerEnvManager.getEnvManager().getActivationKey()); - map.put("detail", plugin.toJSONObject().toString()); - map.put("build", GeneralUtils.readBuildNO()); - //第三个参数encode, nodejs服务器那边如果参数不encode, 带了空格会报错, 直接用urlconnection也是一样, jetty没能还原. - HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("plugin.install"), map, true); - httpClient.setTimeout(TIME_OUT); - httpClient.asGet(); - return httpClient.getResponseText(); - } - - private static final int TIME_OUT = 5000; -} diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index 7fb65a8282..9828576f55 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -1,3 +1,4 @@ +# generated time: \u661F\u671F\u56DB \u5341\u4E00\u6708 24 12:02:51 CST 2016 FR-Designer-BBSLogin_Account= FR-Designer-BBSLogin_Connection-Failure= FR-Designer-BBSLogin_Connection-Failure-Tip= @@ -11,7 +12,7 @@ FR-Designer-BBSLogin_Switch-Account= FR-Designer-BBSLogin_Privite-Message= FR-Designer-BBSLogin_Times= FR-Designer-BBSLogin_Username-Empty-Tip= -FR-Designer-Basic_More_Color=More colors +FR-Designer-Basic_More_Color= FR-Designer-Estate_Any= FR-Designer-Estate_Default_Font= FR-Designer-Estate_Default_Null= @@ -70,7 +71,7 @@ FR-Designer_Button-Icon= FR-Designer_Button-Name= FR-Designer_Button-Type= FR-Designer_CardLayout= -FR-Designer_Cell= +FR-Designer_Cell=Cell FR-Designer_Chart_Cell= FR-Designer_Chart_Float= FR-Designer_Chart_Float_chart= @@ -86,18 +87,18 @@ FR-Designer_Currency_Line= FR-Designer_Current_tab= FR-Designer_Custom= FR-Designer_Custom-Angle= -FR-Designer_DS-Dictionary=Dictionary +FR-Designer_DS-Dictionary= FR-Designer_Data-confusion= FR-Designer_Data_Type= FR-Designer_Double_Click_Edit_OR_Clear= -FR-Designer_Email=email +FR-Designer_Email= FR-Designer_Enabled= FR-Designer_End-Date= FR-Designer_ExportAndOutput= FR-Designer_FRFont= -FR-Designer_FS_Close_Other_Templates=close other templates -FR-Designer_File=File -FR-Designer_Filter_Conditions=Filter Conditions +FR-Designer_FS_Close_Other_Templates= +FR-Designer_File= +FR-Designer_Filter_Conditions= FR-Designer_Finish-Modify-Share= FR-Designer_Fit= FR-Designer_Fit-App= @@ -105,7 +106,7 @@ FR-Designer_Font-Family= FR-Designer_Font-Size= FR-Designer_Forbid_Drag_into_Adapt_Pane=Forbid Drag into Para Pane FR-Designer_Forbid_Drag_into_Para_Pane=Forbid Drag into Para Pane -FR-Designer_Foreground=Foreground +FR-Designer_Foreground= FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=Form authority editing can not be supported FR-Designer_Form-Report= FR-Designer_Form_EmbeddedTD= @@ -116,12 +117,12 @@ FR-Designer_Forum= FR-Designer_Get-Cube= FR-Designer_Help= FR-Designer_Hide= -FR-Designer_Hyperlink=Hyperlink +FR-Designer_Hyperlink= FR-Designer_Hyperlink-Form_link= FR-Designer_IDCard= FR-Designer_Icon= FR-Designer_Index= -FR-Designer_Input_Rule=Input Rule +FR-Designer_Input_Rule= FR-Designer_Language_Default= FR-Designer_Layout= FR-Designer_Layout-HBox= @@ -142,7 +143,7 @@ FR-Designer_M_Help-Tutorial= FR-Designer_Max_Value= FR-Designer_Min_Value= FR-Designer_MobilePhone= -FR-Designer_New_Value=New_Value +FR-Designer_New_Value= FR-Designer_None= FR-Designer_PaperSize-Mobile= FR-Designer_PaperSize-Mobile-Large= @@ -151,12 +152,12 @@ FR-Designer_Para-Body= FR-Designer_Parameters= FR-Designer_Phone= FR-Designer_PostCode= -FR-Designer_Present=Present -FR-Designer_Preview=Preview +FR-Designer_Present= +FR-Designer_Preview= FR-Designer_Preview-Data-Confusion= FR-Designer_Product_Demo= FR-Designer_Query_Type= -FR-Designer_Refresh=Refresh +FR-Designer_Refresh= FR-Designer_Refresh_Parameter_In_SQL= FR-Designer_Reg_Expressions= FR-Designer_Reg_Max_Length= @@ -194,8 +195,8 @@ FR-Designer_Vertical-RightToLeft= FR-Designer_VerticalBoxLayout= FR-Designer_Visible= FR-Designer_WLayout-Border-ToolTips= -FR-Designer_WaterMark=WaterMark -FR-Designer_Widget=Widget +FR-Designer_WaterMark= +FR-Designer_Widget= FR-Designer_Widget-Settings= FR-Designer_Widget-Visible= FR-Designer_XMLA_Explain= @@ -400,14 +401,14 @@ FR-Designer_Choose_Language= FR-Designer_Work_After_Restart_Designer= FR-Designer_Setting-Ruler-Units= FR-Designer_PageSetup-mm= -FR-Designer_Unit_CM=CM +FR-Designer_Unit_CM= FR-Designer_Page-Setup-Scale-Units= FR-Designer_Report-Design-Ruler-Units= FR-Designer_Web_Preview_Port_Setting= FR-Designer_Designer_Language= -FR-Designer_Unit_INCH=INCH +FR-Designer_Unit_INCH= FR-Designer_Web_Preview_Port= -FR-Designer_Unit_PT=PT +FR-Designer_Unit_PT= FR-Designer-Write_Auto_Stash=auto stash FR-Designer_Printer_Native_Button= FR-Designer_Event_ShowWidgets= @@ -482,10 +483,10 @@ FR-Designer_Browser_Background=Browser Background FR-Designer_Import_Css=Import Css FR-Designer_Import_JavaScript=Import JavaScript FR-Designer-Datasource-Param_DES= you can type "${abc}" as a parameter, here, abc is a parameter name.
 for example\: select * from table where id\=${abc}.
 select * from table where id\='${abc}'.(if the field id is typeof string) -FR-Designer-DS-Database_Query=Database Query -FR-Designer_Is_Share_DBTableData=Is_Share_DBTableData -FR-Designer-LayerPageReport_PageQuery=Query for page -FR-Designer-LayerPageReport_Define_PageQuerySQL=Define sql for page +FR-Designer-DS-Database_Query= +FR-Designer_Is_Share_DBTableData= +FR-Designer-LayerPageReport_PageQuery= +FR-Designer-LayerPageReport_Define_PageQuerySQL= FR-Designer_Event= FR-Designer_Properties= FR-Designer_Permissions_Edition=Permissions Edition @@ -511,7 +512,7 @@ FR-Designer_Attribute= FR-Designer_Form_Editing_Listeners= FR-Designer_Form_Basic_Properties= FR-Designer_DS_Dictionary= -FR-Designer_Create_Tree=Create Tree +FR-Designer_Create_Tree= FR-Designer_Set_Callback_Function= FR-Designer_ConfirmDialog_Content= FR-Designer_ConfirmDialog_Title= @@ -542,7 +543,6 @@ FR-Designer_Allow_Null=Allow null FR-Designer_PageSetup_Page=Page FR-Designer_Custom_Job_Description=Description FR-Designer_Property=Property -FR-Designer_ClassName=Class Name FR-Designer_Polyblock_Edit=Polyblock Edit FR-Designer_Function_Description_Area_Text=The class must inherit 'com.fr.script.AbstractFunction'. The compiled class should be copied to\nJ2EE server '{R1}' directory.\nAdd the source code(.java file) into the same folder if need.\nExample: {R2}} FR-Designer_PageSetup_Horizontal=Horizontal @@ -557,7 +557,7 @@ FR-Designer_Auto_Adjust_Size=Auto adjust FR-Designer_Show_As_Download=Display the binary content using download link FR-Designer_File_Name_For_Download=File Name For Download FR-Designer_No=No -FR-Designer_Pagination=Pagination +FR-Designer_Pagination=Page Break FR-Designer_DS_TableData=Data Set FR-Designer_Parameter-Formula=Formula FR-Designer_Plugin_Should_Update_Please_Contact_Developer=Plugin version is too low, and is not compatible with current API. Please contact the developer to update. @@ -844,7 +844,6 @@ PageSetup-Placement_Center_on_Page=Page Center sure_to_delete=sure to delete Already_exists_not_add_repeat=Already exists, do not add repeat Axis_Title=Axis title -FR-Designer-Plugin_Install_Failed=Install failed FR-Designer-Widget-Style_Frame= MainGraduationUnit=MainGraduationUnit Second_Axis=Second Axis @@ -857,7 +856,7 @@ RP_Authority_Edit=Authority Warnning=Warning RoleName_Can_Not_Be_Null=RoleName_Can_Not_Be_Null Application=Applications -Formula_Dictionary_Display_Examples_Html=the real value is \=range(100), the real value($$$)'s display value is \=0 - $$$,
the result is 1, 2, ..., 100 and -1, -2, ..., -100.
+Formula_Dictionary_Display_Examples_Html=the real value is \ ECP-error_pwd= FR-Hyperlink_ChartHyperlink= M_Edit-FormatBrush=Format Painter @@ -988,7 +987,7 @@ Background-Background_is_NULL=No Background FR-Designer_Sytle-FRFont=Font Gradation=Gradation The_current_list_is_empty=The current list is empty -Formula_Dictionary_Display_Examples=the real value is \=range(100), the real value($$$)'s display value is \=0 - $$$, \nthe result is 1, 2, ..., 100 and -1, -2, ..., -100. +Formula_Dictionary_Display_Examples=the real value is \ Schedule-Template_Parameter=Template Parameter JSShow=Show In Action Level_coordinates=Level coordinates @@ -1345,8 +1344,6 @@ Remove_All_Button=Remove_All_Button FR-Designer_Component_Interval=Components Interval ReportColumns-Columns_vertically=Columns vertically ReportGUI-Print_Background=Print Background -FR-Designer_Print_Background=Print Background -FR-Designer_Export_Background=Export Background Export-CSV=CSV M_Edit-Paste=Paste FR-Designer-Basic_Restart_Designer=Restart designer @@ -1372,7 +1369,7 @@ Not_Exsit=not exist in WorkSheet. Utils-Insert_Row=Insert Row Utils-Delete_Row=Delete Row not_support_authority_edit=this element does not support authority edit -Formula_Tips=The formula must be from the beginning of the "\="\! +Formula_Tips=The formula must be from the beginning of the "\ FR-Action_Copy= Compile_Success=Compile Success BackgroundTexture-RecycledPaper=Recycled Paper @@ -1460,7 +1457,7 @@ Ratio=Ratio DBCP_TEST_ON_BORROW=TestOnBorrow FR-Designer_layerIndex= WEB-Write_Setting=Write Setting -M-New_WorkBook=New WorkBook +M-New_WorkBook=New General Report FR-Designer-Plugin_Has_Been_Actived=Plugin is now active Datasource-Maximum_Number_of_Preview_Rows=Maximum Number of Preview Rows ExpandD-Cell_Expand_Attributes=Attribute to Insert Cell to Display Data @@ -1537,7 +1534,7 @@ FR-Designer_Cancel= Button-Group-Display-Columns=Display Column Count Widget-Height=Height Examples=Examples -Formula_Dictionary_Display_Example=the real value is \=range(100), the real value($$$)'s display value is \=0 - $$$, \nthe result is 1, 2, ..., 100 and -1, -2, ..., -100. +Formula_Dictionary_Display_Example=the real value is \ StyleAlignment-Horizontal=Horizontal HyperLink_Must_Alone_Reset=HyperLink_Must_Alone_Reset ExpandD-Expand_Direction=Display Data Direction @@ -1988,7 +1985,27 @@ FR-Designer_Role=Role FR-Designer_Permissions=Permissions FR-Designer_Form_Button=Button FR-Designer_WF_Name=Name -FR-Designer_Double=Double +FR-Designer_ClassName=Class Name +FR-Designer_AlphaFine_Enable=Enable +FR-Designer_AlphaFine_EnableAlphaFine=FR-Designer_AlphaFine_EnableAlphaFine +FR-Designer_AlphaFine_EnableInternet=Designer_AlphaFine_EnableInternet +FR-Designer_AlphaFine_EnableInternetSearch=SearchOnLine +FR-Designer_AlphaFine_Shortcut_Config=Shortcut Config +FR-Designer_AlphaFine_SearchRange=Search Range +FR-Designer_AlphaFine_Recommend=Recommend +FR-Designer-Plugin_Addon=Plugin Addon +FR-Designer_Templates=FR-Designer_Templates +FR-Designer_Templates_Content=Templates Contents +FR-Designer_AlphaFine_ShowAll=show all +FR-Designer_AlphaFine_Latest=Latest +FR-Designer_AlphaFine_ShowLess=show less +FR-Designer_AlphaFine=AlphaFine +FR-Designer-Alphafine_No_Remind= +FR-Designer_AlphaFine_NoResult=no results +FR-Designer_ConnectionFailed=connection failed +FR-Designer_NoResult=No results +FR-Designer-AlphaFine_SetShortcuts= +FR-Designer_Write_Enhance_Preview=Write Enhance PreviewFR-Designer_Double=Double FR-Designer_Query= FR-Designer_Font=Font FR-Designer_Confirm= @@ -2005,7 +2022,117 @@ FR-Product_Demo=Demo FR-Designer_Tree_Data_Field=Tree Data Field FR-Designer_Data_Filter=Data Filter Default=Default -FR-Designer_Sheet_Label_Page_Display_Position=Sheet tab display location: -FR-Designer_Provide_Choose_All=Provide Select All -FR-Designer_Decimal_Places=Decimal Places: FR-Base-Load_Resource_File=Load resource file +FR-Designer_Cell_Element=Cell Element +FR-Designer_Cell_Attributes=Cell Attributes +FR-Designer_Float_Element=Float Element +FR-Designer_Widget_Library=Widget Library +FR-Designer_No_Settings_Available=No Settings Available! +FR-Designer_Configured_Roles=Configured role +FR-Designer_Scale_EnlargeOrReduce=Scale +FR-Designer_Scale_selfAdaptButton=Fit the selected area exactly +FR-Designer_Scale_customButton=custom +FR-Designer_FRFont_Subscript=Subscript +FR-Designer_FRFont_Superscript=Superscript +FR-Designer_FRFont_Shadow=Shadow +FR-Designer_FRFont_Strikethrough=Strikethrough +FR-Designer_FRFont_Underline=Underline +FR-Designer_FRFont_bold=bold +FR-Designer_FRFont_italic=italic +FR-Designer_FRFont_Foreground=Foreground +FR-Designer_FRFont_Style=Style +FR-Designer_FRFont_plain=plain +FR-Designer_FRFont_bolditalic=bolditalic +FR-Designer_outBorder=outBorder +FR-Designer_inBorder=inBorder +FR-Designer_ExpandD_Up_Father_Cell=Up_Father_Cell +FR-Designer_ExpandD_Expand_Direction=Expand_Direction +FR-Designer_Expand=Expand +FR-Designer_ExpendSort=ExpendSort +FR-Designer_ExpandD_Expandable=Expandable +FR-Designer_Read_failure=Read_failure +FR-Designer_Add_Hyperlink=Add Hyperlink +FR-Designer-StyleAlignment_Style_PartSpacing=PartSpacing +FR-Designer_Image_Layout=Image_Layout +FR-Designer_StyleAlignment_Text_Style=Text_Style +FR-Designer_StyleAlignment_Text_Rotation=Text_Rotation +FR-Designer_Style_Left_Indent=Left_Indent +FR-Designer_Style_Right_Indent=Right_Indent +FR-Designer_Style_Spacing_Before=Spacing_Before +FR-Designer_Style_Spacing_After=Spacing_After +FR-Designer_Style_Line_Spacing=Line_Spacing +FR-Designer_Left=Left +FR-Designer_Right=Right +FR-Designer_Front=Front +FR-Designer_Behind=Behind +FR-Designer_StyleAlignment_Wrap_Text=Wrap_Text +FR-Designer_StyleAlignment_Single_Line=Single_Line +FR-Designer_StyleAlignment_Single_Line(Adjust_Font)=Single_Line(Adjust_Font) +FR-Designer_StyleAlignment_Multi_Line(Adjust_Font)=Multi_Line(Adjust_Font) +FR-Designer_Auto_Adjust_Height=Auto_Adjust_Height +FR-Designer_Auto_Adjust_Wdith=Auto_Adjust_Wdith +FR-Designer_Type_Set=Type_Set +FR-Designer_Dic_Data_Query=Data_Query +FR-Designer_Dictionary_Dynamic_SQL=Dictionary_Dynamic_SQL +FR-Designer_Datasource_From_Database=Datasource_From_Database +FR-Designer_CellWrite_InsertRow_NULL=InsertRow_NULL +FR-Designer_CellWrite_InsertRow_COPY=InsertRow_COPY +FR-Designer_CellWrite_InsertRow_Policy=InsertRow_Policy +FR-Designer_CellWrite_Page_Before_Row=Page_Before_Row +FR-Designer_CellWrite_Page_After_Row=Page_After_Row +FR-Designer_CellWrite_Page_Before_Column=Page_Before_Column +FR-Designer_CellWrite_Page_After_Column=Page_After_Column +FR-Designer_CellPage_Can_Break_On_Paginate=Can_Break_On_Paginate +FR-Designer_CellPage_Repeat_Content_When_Paging=Repeat_Content_When_Paging +FR-Designer_CellWrite_Preview_Cell_Content=Preview_Cell_Content +FR-Designer_CellWrite_Print_Content=CellWrite_Print_Content +FR-Designer_CellWrite_Print_Background=CellWrite_Print_Background +FR-Designer_CellWrite_Show_As_Image=CellWrite_Show_As_Image +FR-Designer_CellWrite_Show_As_HTML=CellWrite_Show_As_HTML +FR-Designer_Datasource_Other_Attributes=Other_Attributes +FR-Designer_Not_use_a_cell_attribute_table_editing=Not_use_a_cell_attribute_table_editing +FR-Designer_CellElement_Property_Table=CellElement_Property_Table +FR-Designer_T_Insert_Float=Insert_Float +FR-Designer_Add_FloatElement=Add_FloatElement +FR-Designer_Insert_Image=Insert_Image +FR-Designer_Insert_Formula=Insert_Formula +FR-Designer_Scale_Down=Scale_Down +FR-Designer_Scale_Up=Scale_Up +FR-Designer_Scale_Slider=Scale_Slider +FR-Designer_Scale_Grade=Scale_Grade +FR-Designer_Insert_Chart=Insert_Chart +FR-Designer_Insert_Text=Insert_Text +FR-Designer_Double=Double +FR-Designer_Add_Event=Add Event +FR-Designer_Not_Support_Authority_Edit=this element does not support authority edit +FR-Designer_Dynamic_Parameter=Dynamic Parameter +FR-Designer_Remove_Item=Remove Item +FR-Designer_Widget_Position=widget Position +FR-Designer_Widget_Field=field +FR-Designer_Widget_Formula=formula +FR-Designer_Widget_String=String +FR-Designer_Widget_Display_Report_Tool=display report tool +FR-Designer_Widget_No_Repeat=no repeat +FR-Designer_Widget_Error_Tip=error tip +FR-Designer_Widget_Return_Leaf=return leaf +FR-Designer_Widget_Return_Path=return path +FR-Designer_Widget_Display_Position=Display Position +FR-Designer_Size_Limit=Size_Limit +FR-Designer_Widget_Name=Widget Name +FR-Designer_Coords_And_Size=Coords & Size +FR-Designer_Barcode_Size=Barcode_Size +FS-Designer_DS_Filter_Odd_Tip=Odd_Tip +FS-Designer_DS_Filter_Even_Tip=Even_Tip +FS-Designer_DS_Filter_Specify_Tip=Specify_Tip +FR-Designer_Mobile-Height-Percent=Max Percent +FR-Designer_Mobile-Height-Limit=Height Limit +FR-Designer-AlphaFine_NO_Result=no search result +FR-Designer-Download_Online_Sources= +FR-Designer_Select_Color=Select Color +FR-Designer-Basic_Dynamic_Parameter_Injection=Injection +FR-Designer_Label= +FR-Designer_Widgetname=Widget Name +FR-Designer_Insert_Cell_Element=Insert Cell Element +FR-Designer_Add_Condition=Add Condition +FR-Designer_Use_Params_Template=use parameter template +FR-Designer_Label_Name=label name \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index e4925190d6..8fb61d83b8 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -1,3 +1,4 @@ +# generated time: \u661F\u671F\u56DB \u5341\u4E00\u6708 24 12:02:51 CST 2016 FR-Designer-BBSLogin_Account=User name FR-Designer-BBSLogin_Connection-Failure=Connection failure, check your network status FR-Designer-BBSLogin_Connection-Failure-Tip=Tip @@ -8,19 +9,19 @@ FR-Designer-BBSLogin_Password=Password FR-Designer-BBSLogin_Password-Empty-Tip=Password can not be null FR-Designer-BBSLogin_Register-Account=Register Account FR-Designer-BBSLogin_Switch-Account=Switch Account -FR-Designer-BBSLogin_Privite-Message=Private Message +FR-Designer-BBSLogin_Privite-Message=Privite Message FR-Designer-BBSLogin_Times=times FR-Designer-BBSLogin_Username-Empty-Tip=User name can not be null -FR-Designer-Basic_More_Color=More colors +FR-Designer-Basic_More_Color=More Color... FR-Designer-Estate_Any=Any FR-Designer-Estate_Default_Font=Default font FR-Designer-Estate_Default_Null=Default null FR-Designer-Estate_Default_Text=Default -FR-Designer-Estate_Parameter_Null_Text=Parameter is null, then display as +FR-Designer-Estate_Parameter_Null_Text=Parameter is null, then display as FR-Designer-Estate_Radio-Group=Common button group controls of real estate FR-Designer-Estate_Selected_Font=Selected font FR-Designer-Estate_Widget_Value=Control value -FR-Designer-Layout_Adaptive_Layout=Adaptive Layout +FR-Designer-Layout_Adaptive_Layout=Adaptive layout FR-Designer-Output_Background_Set=Background set FR-Designer-Output_Default_Background=Default background FR-Designer-Output_Excel_Page=Excel Export(page break) @@ -28,7 +29,7 @@ FR-Designer-Output_Excel_Sheet=Excel Export(one page per sheet) FR-Designer-Output_Excel_Simple=Excel Export(original) FR-Designer-Plugin_PluginMarket_Coding=Plugin store is developing, stay tuned FR-Desinger-Plugin_Updater_UpdateAndUpgrade=Update&Upgrade -FR-Desinger-Plugin_Updater_Checking_Jar_Update=Checking JARpackage update +FR-Desinger-Plugin_Updater_Checking_Jar_Update=Checking jarpackage update FR-Desinger-Plugin_Updater_Checking_Version_Update=Checking version update FR-Desinger-Plugin_Updater_Update=update FR-Desinger-Plugin_Updater_Upgrade=upgrade @@ -67,10 +68,10 @@ FR-Designer_Block-intersect=The overlap between block and block is prohibited FR-Designer_BorderLayout=BorderLayout FR-Designer_Button-Hotkeys=Hotkeys FR-Designer_Button-Icon=Button Icon -FR-Designer_Button-Name=Button Name +FR-Designer_Button-Name=Button Name FR-Designer_Button-Type=Button Type FR-Designer_CardLayout=TabLayout -FR-Designer_Cell=cell +FR-Designer_Cell=Cell FR-Designer_Chart_Cell=Chart Hyperlink-Link Cell FR-Designer_Chart_Float=Chart Hyperlink-Floating Element FR-Designer_Chart_Float_chart=Chart Hyperlink-Floating Chart @@ -90,20 +91,20 @@ FR-Designer_DS-Dictionary=Data Dictionary FR-Designer_Data-confusion=Data Confusion FR-Designer_Data_Type=Data type FR-Designer_Double_Click_Edit_OR_Clear=Double Click to Edit or Clear -FR-Designer_Email=Email +FR-Designer_Email=Mail FR-Designer_Enabled=Enabled FR-Designer_End-Date=End Date FR-Designer_ExportAndOutput=Export FR-Designer_FRFont=Font FR-Designer_FS_Close_Other_Templates=Close other templates -FR-Designer_File=File -FR-Designer_Filter_Conditions=Filter Conditions +FR-Designer_File=file +FR-Designer_Filter_Conditions=Filter condition FR-Designer_Finish-Modify-Share=Finish Modification And Share FR-Designer_Fit-App=App self-adaption FR-Designer_Fit=self-adaption FR-Designer_Font-Family=Font name FR-Designer_Font-Size=Font size -FR-Designer_Forbid_Drag_into_Adapt_Pane=Form body cannot be dragged into the object +FR-Designer_Forbid_Drag_into_Adapt_Pane=Form body cannot be dragged into the object FR-Designer_Forbid_Drag_into_Para_Pane=The object cannot be dragged into the parameter panel FR-Designer_Foreground=Foreground FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=Form permissions edition is not supported @@ -134,7 +135,7 @@ FR-Designer_M-Help=Help FR-Designer_M-Insert=Insert FR-Designer_M-Repeat-Freeze=Duplicate and freeze FR-Designer_M-Server=Server -FR-Designer_M-SwitchWorkspace=Switch Working Directory +FR-Designer_M-SwitchWorkspace=Switch Working Directory FR-Designer_M-Template=Template FR-Designer_MDX_Explain=Syntax Reference MDX syntax.\nFor example\:\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]\nNOTE\: COLUMNS, ROWS can be replaced by 0,1, the query axis only supports returning two axis FR-Designer_M_Help-About_Software=About software @@ -142,7 +143,7 @@ FR-Designer_M_Help-Tutorial=Help tutorial FR-Designer_Max_Value=max value FR-Designer_Min_Value=min value FR-Designer_MobilePhone=Mobile phone -FR-Designer_New_Value=New Value +FR-Designer_New_Value=new value FR-Designer_None=none FR-Designer_PaperSize-Mobile=Mobile FR-Designer_PaperSize-Mobile-Large=Large screen @@ -151,7 +152,7 @@ FR-Designer_Para-Body=Parameter interface FR-Designer_Parameters=Parameters FR-Designer_Phone=Phone FR-Designer_PostCode=Postcode -FR-Designer_Present=Present +FR-Designer_Present=present FR-Designer_Preview=Preview FR-Designer_Preview-Data-Confusion=Preview Data After Confusion FR-Designer_Product_Demo=Demo @@ -161,7 +162,7 @@ FR-Designer_Refresh_Parameter_In_SQL=Whether to refresh parameters in the SQL FR-Designer_Reg_Expressions=Regular expressions FR-Designer_Reg_Max_Length=max length FR-Designer_Reg_Min_Length=min length -FR-Designer_ReportColumns-Columns=Fixed columns per line +FR-Designer_ReportColumns-Columns=Multi-columns/lines FR-Designer_Return-Date=Return Date FR-Designer_RichText=Insert Rich Text FR-Designer_RichTextEditor=Rich Text Editor @@ -172,7 +173,7 @@ FR-Designer_Search=Search FR-Designer_Set=Set FR-Designer_Share-Template=Share Template FR-Designer_Simple_general=Simple custom query -FR-Designer_Song_TypeFace=Song TypeFace +FR-Designer_Song_TypeFace=Song typeface FR-Designer_Start-Date=Start Date FR-Designer_Subscript=Subscript FR-Designer_Superscript=Superscript @@ -181,7 +182,7 @@ FR-Designer_Swatch=Sample FR-Designer_Tab_title=Tab title FR-Designer_TableData=Data set FR-Designer_Thank_guest=Special thanks to -FR-Designer_Thanks-To=Thanks To +FR-Designer_Thanks-To=Thanks FR-Designer_Title=Title FR-Designer_Total=Total FR-Designer_UnSignIn=Not Sign In @@ -239,7 +240,7 @@ FR-Designer_Refresh_Successfully=Refresh successfully FR-Designer_SQL-Table=Tab FR-Designer_SQL-View=View FR-Designer_Failed=Failed -FR-Designer_Chart_Field_Name=Field Name +FR-Designer_Chart_Field_Name=FieldName FR-Designer_FormulaD-Text=Text FR-Designer_FormulaD-Logical=Logical Function FR-Designer_FormulaD-Array=Array @@ -248,13 +249,13 @@ FR-Designer_FormulaD-Other=Other Functions FR-Designer_FormulaD-All=All Functions FR-Designer_Function=Function FR-Designer_Select=Sel -FR-Designer_Edit=Edt +FR-Designer_Edit=Edit FR-Designer_Description=Description FR-Designer_Role_changed_isRefresh=Roles change, whether to refresh FR-Designer_FS_Name=FineBI FR-Designer_Datasource-Parameter=Datasource Parameter -FR-Designer_Tree-ComboBox=Drop-down Tree -FR-Designer_Form-Iframe=WebView +FR-Designer_Tree-ComboBox=Tree Combobox +FR-Designer_Form-Iframe=Iframe FR-Designer_Type=Type FR-Designer_User-defined=User_defined FR-Designer_Simple_general_forV6=Simple general for Version6+ @@ -266,11 +267,11 @@ FR-Designer_Parameters_name=parameters name FR-Designer_SAP_datatype=SAP datatype FR-Designer_Return_set_name=Return set FR-Designer_Datatype=Datatype -FR-Designer_Corre_parameter=Corresponding parameter +FR-Designer_Corre_parameter=Corresponse parameter FR-Designer_Default_value=Default value FR-Designer_SAP_column_name=Column name FR-Designer_Table_name=Table name -FR-Designer_Columns_choosed=Columns chosen +FR-Designer_Columns_choosed=Columns choosed FR-Designer_Where_claus=Where claus FR-Designer_PreStyle=Pre Style FR-Designer_Loading=Loading @@ -286,18 +287,18 @@ FR-Designer_file-is-locked=File is locked by others. FR-Designer_Custom_Icon_Message1=The 16 * 16 standard PNG image is better. FR-Designer_Add=Add FR-Designer_Custom_Icon_Message2=The icon name is already exist or your operation is unreasonable. -FR-Designer_Tooltips=Tip -FR-Designer_Remove=Delete +FR-Designer_Tooltips=Tooltips +FR-Designer_Remove=Remove FR-Designer_Custom_Icon_SelectIcon=Select icon FR-Designer_Click_this_button=Click this button to set path FR-Designer_Custom_Icon_Message3=The icon name is already exist. -FR-Designer_Set_default_browser=Cannot find the default browser, please set default browser in Internet options . +FR-Designer_Set_default_browser=Cannot find the default browser, please set default browser in Intenet options . FR-Designer_Open=Open FR-Designer_Utils-OpenDemoEnv=To open the demo, it needs to switch to the workspace\: FR-Designer_Utils-switch=\nThe current unsaved editing files will be saved under current environment?\nGo on? FR-Designer_Utils-NewDemoEnv=To open the demo,it needs to create the workspace\: FR-Designer_Save_As_Global_Style=Save as Global Style -FR-Designer_Input_The_Name_Of_Gloabel_Style=Input the name of global style +FR-Designer_Input_The_Name_Of_Gloabel_Style=Input the name of gloabel style FR-Designer_This_Name_Has_Exsit=This name has existed FR-Designer_Shortcut_Set=Shortcut Setting FR-Designer_Feature_Name=Feature Name\: @@ -330,7 +331,7 @@ FR-Designer_Event_Set=Event Setup FR-Designer_Blow_set=Following Settings FR-Designer_I_Want_To_Set_Single=Individually set for the report FR-Designer_Using_Server_Report_View_Settings=Use server report settings -FR-Designer_ErrorHandlerTemplate=Error Template Definition +FR-Designer_ErrorHandlerTemplate=Error Template Definition FR-Designer_Save_Path=Save Path FR-Designer-Collect_OSXTips=Tip\: Press control + v to paste the activation code FR-Designer_X_Coordinate=Abscissa @@ -356,7 +357,7 @@ FR-Designer-Series_Dismenber_As_Single=Regard consecutive separators as one FR-Designer_KeyPoint=KeyPoint FR-Designer_loadedTreeModel=loadedTreeModel FR-Designer-Failed_to_load_the_plugin=Failed to load the plugin\uFF0Cplease update the plugin\: -FR-Designer-Plugin_Please_Update_Jar=Please Update Jar To\: +FR-Designer-Plugin_Please_Update_Jar=Please Update Jar FR-Designer-Invalid_Page_Number=Invalid Page Number FR-Designer_XMLA_Database=DB FR-Designer_XMLA_UserName=User name @@ -379,7 +380,7 @@ FR-Designer_Clear_All=Clear All FR-Designer_Log=Log FR-Designer-Plugin_Expire_Dialog_Title=Plug expired FR-Designer-Plugin_Expire_Dialog_Text=Plugin expired, go sail soft application center to make a purchase. -FR-Designer-Plugin_Finerest_Addon=Fanruan Plugins +FR-Designer-Plugin_Finerest_Addon=Fineres Addon FR-Designer_Performance_First=Performance First FR-Designer_Total_N_Grade=Total\:${N}Layer FR-Designer-BBSLogin_Login-Title=BBS Login @@ -392,7 +393,7 @@ FR-Designer_Product_improve=Product improvement FR-Designer_Join_Product_improve=Join product improvement plan FR-Designer_Preference-Function=Function FR-Designer_max_undo_limit=Max -FR-Designer_Surport_String_To_Formula=Support String To Formula +FR-Designer_Surport_String_To_Formula=Surport String To Formula FR-Designer_Always=Default execute this operation FR-Designer_Export_Setting=Export Configuration FR-Designer_Select_Export_Log_Directory=Select Export Log Directory @@ -423,6 +424,8 @@ FR-Designer-App_ReLayout=AppRelayout FR-Designer_Mobile-Attr=Mobile Attr FR-Designer_Mobile-Vertical=Vertical Screen FR-Designer_Mobile-Horizontal=Horizontal Screen +FR-Designer_Mobile-Height-Percent=Max Percent +FR-Designer_Mobile-Height-Limit=Height Limit FR-Designer_COMMUNITY=community FR-Designer_COMMUNITY_BBS=bbs FR-Designer_COMMUNITY_VIDEO=video @@ -461,9 +464,9 @@ FR-Designer_Attr_Bidirectional_Adaptive=Bidirectional adaptive FR-Designer-Selected_Widget=Selected widget FR-Designer_LocalWidget=Local component library FR-Designer_AllCategories=All categories -FR-Designer_Download_Template=Download components -FR-Designer_Install_Template=Install components -FR-Designer_Delete_Template=Delete components +FR-Designer_Download_Template=Download +FR-Designer_Install_Template=Install +FR-Designer_Delete_Template=Delete FR-Designer_Mobile-Refresh=Refresh FR-Designer_Mobile-ToolBar=Toolbar FR-Designer_WLayout-Absolute-ToolTips=Freestyle layout, add control in any position of the layout @@ -530,7 +533,7 @@ FR-Designer_Select_panel=Sel FR-Designer_LayoutTable_Column_Width=250 FR-Designer_Set_BG_Of_Current_Row=Set BG of the row being edited FR-Designer_Unload_Check=Prompt users when leave without submitting -FR-Designer_ReportColumns_Columns_Optional=Multi-column/row +FR-Designer_ReportColumns_Columns_Optional=\u3000 FR-Designer_Row_Icon_File_Name=row_en.png FR-Designer_Center_Display=Center FR-Designer_Left_Display=Left @@ -617,7 +620,7 @@ BorderLayout-West=West AnalysisLine=Line Layer_Report_Warnning_info=Line report engine is suitable for large data.
Many report features will no longer support if use it,
more information in helpdocument. Tree-Width=Tree Width -alert_word=Export without fixed height, cell height will change according to the content and pagination position will different from the preview result. +alert_word=Export without fixed height, cell hight will change according to the content and pagination position will different from the preview result. PageSetup-Paper_Size=Paper Size M-Page_Setup=Page Setup DashBoard-FormBook=Form @@ -656,7 +659,7 @@ FRFont-Subscript=Subscript Background_Settings=Background Settings FormulaD-Invalid_Formula=Invalid Formula FR-Base_Margin=Margin -FR-Designer-Plugin_Shop_Installed=Plug-shop installed, whether to start immediately? +FR-Designer-Plugin_Shop_Installed=Plugin store is installed, please reopen the store. M_Edit-Send_to_Back=Send to Bottom Email-Can_Preview_Report_Content=Preview Report Content in the Body FR-Designer-FRFont_Italic=Italic @@ -697,7 +700,7 @@ RWA-Click_Cell_To_Edit_Value=Click Cell to Edit Value Utils-Row_Height=Row Height ReportD-Excel_Export=Export Attributes Form-Please_Select_A_Kind_Of_Form_Container=Select A Form Container -Column_Does_Not_Exsit=Column Does Not Exist +Column_Does_Not_Exsit=Column Does Not Exsit M_Insert-Hyperlink=Hyperlink can_not_include_underline=Can not contain "_" FR-Designer-Plugin_Jar_Expired=Jar Expired @@ -797,7 +800,7 @@ CellWrite-Page_Before_Row=Before Row FR-Designer-Plugin_Load_Plugins_From_Server=Loading data from plugins store D-Dispaly_Divide_Result_Set_into_Groups=Grouping on Result Set Closed=Closed -RWA-Help=Set "No update if no modify", so if cell is not modified, the record will not update; it improves filling and submit performance when data is large. +RWA-Help=Set "No update if no modidy", so if cell is not modified, the record will not update; it improves filling and submit performance when data is large. FR-Designer-Widget-Style_Custom=Custom FR-Designer-Widget-Style_Render_Style=Rendering style Highlight-Barcode=BarCode @@ -844,7 +847,6 @@ PageSetup-Placement_Center_on_Page=Center on Page sure_to_delete=sure to delete Already_exists_not_add_repeat=Already exist, please do not repeat Axis_Title=Axis title -FR-Designer-Plugin_Install_Failed=Install failed FR-Designer-Widget-Style_Frame=Frame MainGraduationUnit=Major Graduation Unit Second_Axis=Secondary Axis @@ -857,7 +859,7 @@ RP_Authority_Edit=Permission Warnning=Warning RoleName_Can_Not_Be_Null=Role name can not be null or duplicate Application=Applications -Formula_Dictionary_Display_Examples_Html=Real value range is \=range(100), displayed formula of every $$$ in the range is \=0 - $$$,
the real result is 1, 2, ..., 100 and diaplay result is -1, -2, ..., -100.
  +Formula_Dictionary_Display_Examples_Html=the real value is \=range(100), the real value($$$)'s display value is \=0 - $$$,
the result is 1, 2, ..., 100 and -1, -2, ..., -100.
ECP-error_pwd=Password Error FR-Hyperlink_ChartHyperlink=Chart Hyperlink M_Edit-FormatBrush=Format Painter @@ -948,7 +950,7 @@ zeroMarginWarn=The printer exist the physical margins
report page margin se Widget-Date_Selector_Return_Type=Return value type Utils-Switch_To_Template_Reportlet=Switch to template web report satisfy=satisfy -FR-Designer_WidgetDisplyPosition=Control DisplayPosition +FR-Designer_WidgetDisplyPosition=Control DisplyPosition FR-Base_Top=Top FR-Designer_Form-CheckBox=CheckBox Reportlet-Parameter_Type=Parameter passing mode @@ -966,7 +968,7 @@ FR-Widget_Tree_And_Table=Control tree and control table FR-Base_Help=Help FR-Designer-Plugin_Update_Successful=Update successfully, restart the sever to enable it August=August -LOG-Is_Being_Openned=Is Being Opened +LOG-Is_Being_Openned=Is Being Openned BackgroundTexture-Oak=Oak Multi_nam_formula=\ data set name\: TurnOn=TurnOn @@ -988,7 +990,7 @@ Background-Background_is_NULL=No Background FR-Designer_Sytle-FRFont=Font Gradation=Gradation The_current_list_is_empty=The current list is empty -Formula_Dictionary_Display_Examples=\Real value range is \=range(100), displayed formula of every $$$ in the range is \=0 - $$$, \n the real result is 1, 2, ..., 100 and diaplay result is -1, -2, ..., -100. +Formula_Dictionary_Display_Examples=\Real value range is \ Schedule-Template_Parameter=Template Parameter JSShow=Dynamic display Level_coordinates=Hierarchy coordinate @@ -1038,7 +1040,7 @@ FR-Designer-Tree_Width=Tree Width Record=Record Poly-Report_Component=Aggregate Report Component Options=Options -NS-war-remote=Error codes\:1117 Compression deployment does not support remote design +NS-war-remote=Error codes\:11100017 Compression deployment does not support remote design Sche-Minute=Minute Three_Rows_Of_Three_Grid=A grid with 3 rows and 3 columns WorkSheet=Free Report @@ -1094,7 +1096,7 @@ Horizontal-Split_Layout=Horizontal partitioning layout BorderLayout-Center=Center INFO-Reset_Webapp=Reset Application Server FR-Designer_Text=Text -IN_and_INOUT_type_not_as_cursor=IN and INOUT type cannot be cursor +IN_and_INOUT_type_not_as_cursor=IN and INOUT type canot be cursor Main_Axis=Primary axis M_Edit-Cut=Cut Utils-The_Name_has_been_existed=The name already exists @@ -1125,14 +1127,14 @@ Schedule-The_selected_file_must_be_end_with_filter=The selected file must end wi Provide=Provide FormulaD-Math_&_Trig=Math and Trig FR-Designer-StyleAlignment_Right=Right -Error_TableDataNameRepeat=\ already exists in Server DataSet or the name is repeated. +Error_TableDataNameRepeat=\ already exsits in Server DataSet or the name is repeated. Choose_None=Deselect File-tree=File tree FRFont-bold=Bold FR-Designer_Set_Submit_Condition=Submit Condition Form-Change_Widget_Name=Change Control Name ReportColumns-Report_Columns=Multi-columns/lines display -Can_not_use_FormatBursh=Can't use format painter in multiple selections +FR-Designer_Can_not_use_FormatBursh=Can't use format painter in multiple selections CellElement-Property_Table=Cell Attribute Table Dictionary-Dynamic_SQL=Dynamic SQL FR-Designer_Form-CheckBoxGroup=CheckBoxGroup @@ -1161,7 +1163,7 @@ FR-App-Export_png=png Delete_Column=Delete Column SecondGraduationLine=Minor Graduation Line SpecifiedG-Groups=Groups -CONTINUUM_MODE=Continuous grouping +CONTINUUM_MODE=Continous grouping Datasource-Connection_failed=Connection Failed CategoryName=Category Name DBCP_INITIAL_SIZE=Initialize Connections @@ -1175,7 +1177,7 @@ Or-you=or you FR-Designer_Certificate_Path=Certificate Path Utils-Last_Page=Last Page BarCodeD-Drawing_Text=Display Barcode Text -Warning-Template_Do_Not_Exsit=Template do not exist +Warning-Template_Do_Not_Exsit=Template do not exsit BindColumn-Group=Group Export-SVG=SVG Plane3D=Plane 3D @@ -1289,7 +1291,7 @@ DS-Class_TableData=Class Data Set FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install=Illegal plugin,cannot be installed DisplayNothingBeforeQuery=Display Nothing Before Query Y_Axis=Y Axis -FormulaD-Most_Recently_Used=Recently used +FormulaD-Most_Recently_Used=Rencently used FormulaD-Input_formula_in_the_text_area_below=Input formula in the text area below Build-Way=Build Way M_Edit-Undo=Undo @@ -1345,8 +1347,6 @@ Remove_All_Button=Remove all buttons FR-Designer_Component_Interval=Component Interval ReportColumns-Columns_vertically=Fixed columns per line ReportGUI-Print_Background=Print/export background -FR-Designer_Print_Background=Print Background -FR-Designer_Export_Background=Export Background Export-CSV=CSV M_Edit-Paste=Paste FR-Designer-Basic_Restart_Designer=Restart designer @@ -1372,7 +1372,7 @@ Not_Exsit=Not exist in report Utils-Insert_Row=Insert Row Utils-Delete_Row=Delete Row not_support_authority_edit=this element does not support authority edit -Formula_Tips=The formula must be begin with "\="\! +Formula_Tips=The formula must be begin with "\ FR-Action_Copy=Copy Compile_Success=Compile Successfully BackgroundTexture-RecycledPaper=Recycled Paper @@ -1394,7 +1394,7 @@ BackgroundTexture-WaterDroplets=Water Drop FR-Designer-Dependence_Install_Failed=install failed Layout-Padding=Padding roles_already_authority_edited=Configured role -WidgetDisplyPosition=Control display position +WidgetDisplyPosition=Control disply position SpecifiedG-Force_Group=Mandatory Group FormulaD-Formula_Definition=Formula Definition I-xyScatterStyle_Marker=Scatter @@ -1408,7 +1408,7 @@ Rename=Rename Widget-Load_By_Async=Async load Shape=Shape BindColumn-This_Condition_has_been_existed=The Condition Already Exists -NS-exception_readError=Error codes\:1305 Template file parsing error +NS-exception_readError=Error codes\:11300005 Template file parsing error Set_Column_Title_Start=Set Duplicate Title Columns Fri=Fri M_Report-Report_Parameter=Report Parameter @@ -1460,7 +1460,7 @@ Ratio=Ratio DBCP_TEST_ON_BORROW=Test before Getting Connections FR-Designer_layerIndex= WEB-Write_Setting=Filling Settings -M-New_WorkBook=New WorkBook +M-New_WorkBook=New General Report FR-Designer-Plugin_Has_Been_Actived=Plugin is now active, restart the designer and sever to enable it and the sever need to be manually restarted Datasource-Maximum_Number_of_Preview_Rows=Maximum Number of Preview Rows ExpandD-Cell_Expand_Attributes=Extension Attributes @@ -1527,7 +1527,7 @@ FR-Server_Version_Tip=The version of the server you are connecting is older than StyleAlignment-Left_To_Right=Left To Right Verify-ToolTips=If not meet formula, throw up validation error message BackgroundTexture-Stationery=Letter Paper -FR-Designer_RWA-Help=Set "No update if no modify", so if cell is not modified, the record will not update; it improves filling and submit performance when data is large. +FR-Designer_RWA-Help=Set "No update if no modidy", so if cell is not modified, the record will not update; it improves filling and submit performance when data is large. M_Insert-Barcode=Barcode Bounds=Bounds FR-Designer-Undo_All_Authority_Operations=Undo all the privilege edit operations @@ -1537,7 +1537,7 @@ FR-Designer_Cancel=Cancel Button-Group-Display-Columns=Number of columns displayed Widget-Height=Control Height Examples=Examples -Formula_Dictionary_Display_Example=Real value range is \=range(100), displayed formula of every $$$ in the range is \=0 - $$$, \n the real result is 1, 2, ..., 100 and diaplay result is -1, -2, ..., -100. +Formula_Dictionary_Display_Example=Real value range is \ StyleAlignment-Horizontal=Horizontal HyperLink_Must_Alone_Reset=Multiple hyperlink ExpandD-Expand_Direction=Extension Direction @@ -1627,7 +1627,7 @@ FR-Hyperlink_Reportlet=Webreport M_Edit-Copy=Copy Sub_Report_Message2=The parent-report is not in the current runtime environment Sub_Report_Message3=Can not choose itself -Sub_Report_Message1=Please choose the correct path +Sub_Report_Message1=Please choose the currect path Form-Allow_CustomData=Allow custom data FR-Server_Version_Tip_MoreInfo=Conform the version numbers of FineReport Designer and the deployment server are consistent, in order to avoid the problems caused by inconsistent versions. If you open the template produced by higher designer vision, error may occurs or the original template properties missed. If the Designer Version you used to create the template is higher than the final deployment server version, the server may not be able to properly load the template. FR-Designer_Server-version-tip-moreInfo=Conform the version numbers of FineReport Designer and the deployment server are consistent, in order to avoid the problems caused by inconsistent versions. If you open the template produced by higher designer vision, error may occurs or the original template properties missed. If the Designer Version you used to create the template is higher than the final deployment server version, the server may not be able to properly load the template. @@ -1759,7 +1759,7 @@ Form-ToolBar=Form ToolBar FR-Base_sure_remove_item=Are you sure to delete the selected item Component_Scale=Component Scale Hyperlink-Use_CJK_to_encode_parameter=Use CJK to process parameter -LOG-Has_Been_Openned=Report Has Been Opened +LOG-Has_Been_Openned=Report Has Been Openned FR-Designer-Dependence= ECP_error_pwd=Password Error REPORTLET=Parameter of access path to template @@ -1788,7 +1788,7 @@ Form-DataTable=DataTable Sub_Report_ToolTips=Sub Report ToolTips Right_Top=Upper right M_Edit-Merge_Cell=Merge Cell -FR-Designer_Restore_Default=Back to default +FR-Designer_Restore_Default=Back to default\ Component_Interval=Components Interval Cover_None=Override None Datasource-From_Database=DB table @@ -1799,7 +1799,7 @@ ParentCell_Setting=Parent Cell Setting Only_selected_cell_can_paste_only=Paste when cell is selected M_Report-Report_Columns=Multi-columns/lines Unit_Hundred=Hundred -FR-Designer_DataTable-Build=Quick build (hierarchical) +FR-Designer_DataTable-Build= Widget-Form_Widget_Config=Form control Server-version-tip-moreInfo=Conform the version numbers of FineReport Designer and the deployment server are consistent, in order to avoid the problems caused by inconsistent versions. If you open the template produced by higher designer vision, error may occurs or the original template properties missed. If the Designer Version you used to create the template is higher than the final deployment server version, the server may not be able to properly load the template. Actions=Task @@ -1819,7 +1819,7 @@ BackgroundTexture-Cork=Cork M_Format-Data_Map=Data Dictionary FR-mobile_native_analysis=native analysis HighLight=High Light -FR-Designer_Dropdown-More-Preview=Drop down for more +FR-Designer_Dropdown-More-Preview= local=local FR-Designer_Gradation=Gradation PageSetup-Finis_Start_Column=Duplicate Last Column @@ -1828,7 +1828,7 @@ FR-Designer-Plugin_All_Plugins=All plugins FR-Designer_Prepare_Export=Ready to export, please wait DBCP_TEST_ON_RETURN=Test before Returning Connections no-alternatives=no alternatives -FR-Designer_Submmit_WClass=Submit By Custom Class +FR-Designer_Submmit_WClass=Submmit By Custom Class M_Insert-Slope_Line=Insert Slope Line FR-Designer-Plugin_Plugin_Description=Description ExpandD-Not_Expand=No extend @@ -1891,12 +1891,12 @@ Border-Style=Border Style Sort=Sort Image-Image_Layout=Image Layout Panel=Panel -FR-Designer-Basic_Copy_Build_NO_OK=Build No. has been copied +FR-Designer-Basic_Copy_Build_NO_OK=Build No. has been copyed All_Border_Line=All Border FR-Utils-Please_Input_a_New_Name=Input a New Name FR-Base_Formula_Plugin=Plugin Function Two_Rows_Of_Three_Grid=A grid with 2 rows and 3 columns -FR-Designer_Certificate_Pass=Certificate Password +FR-Designer_Certificate_Pass=Certificate Password\ Bubble-Series_Name=Series Name M-New_Multi_Report=New Aggregate Report BackgroundTexture-PinkTissuePaper=Pink Sandpaper @@ -1942,7 +1942,7 @@ Widget-User_Defined=Predefine Url_location=Absolute path Disk_File=Disk File Inside=Inside -FR-Designer_filedChosen=Dependent fields +FR-Designer_filedChosen= ServerM-Predefined_Styles=Predefined Styles is_need_word_adjust=Word Auto Adjust Background-Null=No Background @@ -1988,7 +1988,26 @@ FR-Designer_Role=Role FR-Designer_Permissions=Permissions FR-Designer_Form_Button=Button FR-Designer_WF_Name=Name -FR-Designer_Double=Decimal +FR-Designer_AlphaFine_Enable=Enable +FR-Designer_AlphaFine_EnableInternetSearch=Search OnLine +FR-Designer_AlphaFine_Shortcut_Config=Shortcut Config +FR-Designer_AlphaFine_SearchRange=Search Range +FR-Designer_AlphaFine_Recommend=Recommend +FR-Designer-Plugin_Addon=Plugin Addon +FR-Designer_Templates=Files +FR-Designer_Templates_Content=Files'contents +FR-Designer_AlphaFine_ShowAll=Show all +FR-Designer_AlphaFine_Latest=Recent +FR-Designer_AlphaFine_ShowLess=Show less +FR-Designer_AlphaFine=AlphaFine +FR-Designer-Alphafine_No_Remind=don't remind +FR-Designer_AlphaFine_NoResult=No results +FR-Designer_ConnectionFailed=Connection failed +FR-Designer_AlphaFine_EnableAlphaFine=Enable AlphaFine +FR-Designer_AlphaFine_EnableInternet=Internet +FR-Designer_NoResult=No results +FR-Designer-AlphaFine_SetShortcuts=please press two key to set shortcut +FR-Designer_Write_Enhance_Preview=Write Enhance PreviewFR-Designer_Double=Decimal FR-Designer_Query=Query FR-Designer_Font=Font FR-Designer_Confirm=OK @@ -2006,7 +2025,110 @@ FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=Build Tree according to the pa FR-Product_Demo=Demo FR-Designer_Data_Filter=Data Filter Default=Default -FR-Designer_Sheet_Label_Page_Display_Position=Sheet tab display location: -FR-Designer_Provide_Choose_All=Provide Select All -FR-Designer_Decimal_Places=Decimal Places: FR-Base-Load_Resource_File=Load Configuration File +FR-Designer_Cell_Element=Cell Element +FR-Designer_Cell_Attributes=Cell Attributes +FR-Designer_Float_Element=Float Element +FR-Designer_Widget_Library=Widget Library +FR-Designer_No_Settings_Available=No Settings Available! +FR-Designer_Configured_Roles=Configured role +FR-Designer_Scale_EnlargeOrReduce=Scale +FR-Designer_Scale_selfAdaptButton=Fit the selected area exactly +FR-Designer_Scale_customButton=custom +FR-Designer_FRFont_Subscript=Subscript +FR-Designer_FRFont_Superscript=\ +FR-Designer_FRFont_Shadow=Shadow +FR-Designer_FRFont_Strikethrough=Strikethrough +FR-Designer_FRFont_Underline=Underline +FR-Designer_FRFont_bold=bold +FR-Designer_FRFont_italic=italic +FR-Designer_FRFont_Foreground=Foreground +FR-Designer_FRFont_Style=Style +FR-Designer_FRFont_plain=plain +FR-Designer_FRFont_bolditalic=bolditalic +FR-Designer_outBorder=outBorder +FR-Designer_inBorder=inBorder +FR-Designer_ExpandD_Up_Father_Cell=Up_Father_Cell +FR-Designer_ExpandD_Expand_Direction=Expand_Direction +FR-Designer_Expand=Expand +FR-Designer_ExpendSort=ExpendSort +FR-Designer_ExpandD_Expandable=Expandable +FR-Designer_Read_failure=Read_failure +FR-Designer_Add_Hyperlink=Add Hyperlink +FR-Designer-StyleAlignment_Style_PartSpacing=PartSpacing +FR-Designer_Image_Layout=Image_Layout +FR-Designer_StyleAlignment_Text_Style=Text_Style +FR-Designer_StyleAlignment_Text_Rotation=Text_Rotation +FR-Designer_Style_Left_Indent=Left_Indent +FR-Designer_Style_Right_Indent=Right_Indent +FR-Designer_Style_Spacing_Before=Spacing_Before +FR-Designer_Style_Spacing_After=Spacing_After +FR-Designer_Style_Line_Spacing=Line_Spacing +FR-Designer_Left=Left +FR-Designer_Right=Right +FR-Designer_Front=Front +FR-Designer_Behind=Behind +FR-Designer_StyleAlignment_Wrap_Text=Wrap_Text +FR-Designer_StyleAlignment_Single_Line=Single_Line +FR-Designer_StyleAlignment_Single_Line(Adjust_Font)=Single_Line(Adjust_Font) +FR-Designer_StyleAlignment_Multi_Line(Adjust_Font)=Multi_Line(Adjust_Font) +FR-Designer_Auto_Adjust_Height=Auto_Adjust_Height +FR-Designer_Auto_Adjust_Wdith=Auto_Adjust_Wdith +FR-Designer_Type_Set=Type_Set +FR-Designer_Dic_Data_Query=Data_Query +FR-Designer_Dictionary_Dynamic_SQL=Dictionary_Dynamic_SQL +FR-Designer_Datasource_From_Database=Datasource_From_Database +FR-Designer_CellWrite_InsertRow_NULL=InsertRow_NULL +FR-Designer_CellWrite_InsertRow_COPY=InsertRow_COPY +FR-Designer_CellWrite_InsertRow_Policy=InsertRow_Policy +FR-Designer_CellWrite_Page_Before_Row=Page_Before_Row +FR-Designer_CellWrite_Page_After_Row=Page_After_Row +FR-Designer_CellWrite_Page_Before_Column=Page_Before_Column +FR-Designer_CellWrite_Page_After_Column=Page_After_Column +FR-Designer_CellPage_Can_Break_On_Paginate=Can_Break_On_Paginate +FR-Designer_CellPage_Repeat_Content_When_Paging=Repeat_Content_When_Paging +FR-Designer_CellWrite_Preview_Cell_Content=Preview_Cell_Content +FR-Designer_CellWrite_Print_Content=CellWrite_Print_Content +FR-Designer_CellWrite_Print_Background=CellWrite_Print_Background +FR-Designer_CellWrite_Show_As_Image=CellWrite_Show_As_Image +FR-Designer_CellWrite_Show_As_HTML=CellWrite_Show_As_HTML +FR-Designer_Datasource_Other_Attributes=Other_Attributes +FR-Designer_Not_use_a_cell_attribute_table_editing=Not_use_a_cell_attribute_table_editing +FR-Designer_CellElement_Property_Table=CellElement_Property_Table +FR-Designer_T_Insert_Float=Insert_Float +FR-Designer_Add_FloatElement=Add_FloatElement +FR-Designer_Insert_Image=Insert_Image +FR-Designer_Insert_Chart=Insert-Chart +FR-Designer_Insert_Text=Insert-Text +FR-Designer_Insert_Formula=Insert_Formula +FR-Designer_Double=Double +FR-Designer_Scale_Down=Scale_Down +FR-Designer_Scale_Up=Scale_Up +FR-Designer_Scale_Slider=Scale_Slider +FR-Designer_Scale_Grade=Scale_Grade +FR-Designer_Add_Event=Add Event +FR-Designer_Not_Support_Authority_Edit=this element does not support authority edit +FR-Designer_Dynamic_Parameter=Dynamic Parameter +FR-Designer_Remove_Item=Remove Item +FR-Designer_Widget_No_Repeat=no repeat +FR-Designer_Widget_Error_Tip=error tip +FR-Designer_Widget_Return_Leaf=return leaf +FR-Designer_Widget_Return_Path=return path +FR-Designer_Widget_Display_Position=Display Position +FR-Designer_Size_Limit=Size_Limit +FR-Designer_Widget_Name=Widget Name +FR-Designer_Coords_And_Size=Coords & Size +FR-Designer_Barcode_Size=Barcode_Size +FS-Designer_DS_Filter_Odd_Tip=Odd_Tip +FS-Designer_DS_Filter_Even_Tip=Even_Tip +FS-Designer_DS_Filter_Specify_Tip=Specify_Tip +FR-Designer-AlphaFine_NO_Result=no search result +FR-Designer-Download_Online_Sources= +FR-Designer_Select_Color=Select Color +FR-Designer-Basic_Dynamic_Parameter_Injection=Injection +FR-Designer_Label=Label +FR-Designer_Widgetname=Widget Name +FR-Designer_Insert_Cell_Element=Insert Cell Element +FR-Designer_Add_Condition=Add Condition +FR-Designer_Use_Params_Template=use parameter template +FR-Designer_Label_Name=label name \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index 7fd4fb541d..e174c736df 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -1,248 +1,249 @@ +# generated time: \u661F\u671F\u56DB \u5341\u4E00\u6708 24 12:02:51 CST 2016 FR-Designer-BBSLogin_Account=\u30E6\u30FC\u30B6\u30FC\u540D -FR-Designer-BBSLogin_Connection-Failure=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u63A5\u7D9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u73FE\u5728\u306E\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Designer-BBSLogin_Connection-Failure=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u63A5\u7D9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u73FE\u5728\u306E\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u72B6\u614B\u3092\u691C\u67FB\u3057\u3066\u304F\u3060\u3055\u3044 FR-Designer-BBSLogin_Connection-Failure-Tip=\u30D2\u30F3\u30C8 FR-Designer-BBSLogin_Forgot-Password=\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5FD8\u308C\u305F FR-Designer-BBSLogin_Login=\u30ED\u30B0\u30A4\u30F3 FR-Designer-BBSLogin_Login-Failure-Tip=\u30E6\u30FC\u30B6\u30FC\u540D\u307E\u305F\u306F\u30D1\u30B9\u30EF\u30FC\u30C9\u30A8\u30E9\u30FC\u3067\u3059\u3002\u518D\u5EA6\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u304F\u3060\u3055\u3044 FR-Designer-BBSLogin_Password=\u30D1\u30B9\u30EF\u30FC\u30C9 -FR-Designer-BBSLogin_Password-Empty-Tip=\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +FR-Designer-BBSLogin_Password-Empty-Tip=\u30D1\u30B9\u30EF\u30FC\u30C9\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 FR-Designer-BBSLogin_Register-Account=\u30A2\u30AB\u30A6\u30F3\u30C8\u767B\u9332 FR-Designer-BBSLogin_Switch-Account=\u30A2\u30AB\u30A6\u30F3\u30C8\u5207\u308A\u66FF\u3048 -FR-Designer-BBSLogin_Privite-Message=\u500B\u4EBA\u30E1\u30C3\u30BB\u30FC\u30B8 -FR-Designer-BBSLogin_Times=\u56DE +FR-Designer-BBSLogin_Privite-Message=\u30D7\u30E9\u30A4\u30D9\u30FC\u30C8\u30E1\u30C3\u30BB\u30FC\u30B8 +FR-Designer-BBSLogin_Times=\u6B21 FR-Designer-BBSLogin_Username-Empty-Tip=\u30E6\u30FC\u30B6\u30FC\u540D\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 -FR-Designer-Basic_More_Color=\u305D\u306E\u4ED6\u306E\u8272 -FR-Designer-Estate_Any=\u5236\u9650\u306A\u3057 -FR-Designer-Estate_Default_Font=\u65E2\u5B9A\u30D5\u30A9\u30F3\u30C8 -FR-Designer-Estate_Default_Null=\u65E2\u5B9A\u3092\u7A7A\u6B04\u306B\u3059\u308B -FR-Designer-Estate_Default_Text=\u65E2\u5B9A\u5024 -FR-Designer-Estate_Parameter_Null_Text=\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u7A7A\u6B04\u3067\u8868\u793A\u3059\u308B -FR-Designer-Estate_Radio-Group=\u30E9\u30B8\u30AA\u30DC\u30BF\u30F3\u30BB\u30C3\u30C8\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 -FR-Designer-Estate_Selected_Font=\u9078\u629E\u30D5\u30A9\u30F3\u30C8 -FR-Designer-Estate_Widget_Value=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5024 -FR-Designer-Layout_Adaptive_Layout=\u81EA\u52D5\u8ABF\u6574\u30EC\u30A4\u30A2\u30A6\u30C8 +FR-Designer-Basic_More_Color=\u3082\u3063\u3068\u8272 +FR-Designer-Estate_Any=\u4E0D\u9650 +FR-Designer-Estate_Default_Font=\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A9\u30F3\u30C8 +FR-Designer-Estate_Default_Null=\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u7A7A\u6B04\u306B\u3059\u308B +FR-Designer-Estate_Default_Text=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024 +FR-Designer-Estate_Parameter_Null_Text=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3092\u7A7A\u6B04\u306B\u3057\u8868\u793A\u3059\u308B +FR-Designer-Estate_Radio-Group=\u4E0D\u52D5\u7523\u696D\u901A\u7528\u30DC\u30BF\u30F3\u30BB\u30C3\u30C8\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +FR-Designer-Estate_Selected_Font=\u9078\u629E\u3057\u305F\u30D5\u30A9\u30F3\u30C8 +FR-Designer-Estate_Widget_Value=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u5024 +FR-Designer-Layout_Adaptive_Layout=\u81EA\u9069\u5FDC\u914D\u7F6E FR-Designer-Output_Background_Set=\u80CC\u666F\u8A2D\u5B9A -FR-Designer-Output_Default_Background=\u65E2\u5B9A\u80CC\u666F -FR-Designer-Output_Excel_Page=Excel\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8(\u30DA\u30FC\u30B8\u5225) -FR-Designer-Output_Excel_Sheet=Excel\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8(1\u30DA\u30FC\u30B81\u30B7\u30FC\u30C8) -FR-Designer-Output_Excel_Simple=Excel\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8(\u6A19\u6E96) -FR-Designer-Plugin_PluginMarket_Coding=\u30D7\u30E9\u30B0\u30A4\u30F3\u30B9\u30C8\u30A2\u306F\u958B\u767A\u4E2D\u3067\u3059\u3002\u304A\u5F85\u3061\u4E0B\u3055\u3044 -FR-Desinger-Plugin_Updater_UpdateAndUpgrade=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3068\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9 -FR-Desinger-Plugin_Updater_Checking_Jar_Update=Jar\u30D5\u30A1\u30A4\u30EB\u30C1\u30A7\u30C3\u30AF\u691C\u8A3C\u4E2D -FR-Desinger-Plugin_Updater_Checking_Version_Update=\u30D0\u30FC\u30B8\u30E7\u30F3\u30C1\u30A7\u30C3\u30AF\u691C\u8A3C\u4E2D -FR-Desinger-Plugin_Updater_Update=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 -FR-Desinger-Plugin_Updater_Upgrade=\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9 -FR-Desinger-Plugin_Updater_Restore=\u30EA\u30AB\u30D0\u30EA -FR-Desinger-Plugin_Updater_New_Version_Available=\u65B0\u3057\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u3042\u308A\u307E\u3059 -FR-Desinger-Plugin_Updater_JarUpdate=Jar\u30D5\u30A1\u30A4\u30EB\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 -FR-Desinger-Plugin_Updater_VersionUpgrade=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9 -FR-Desinger-Plugin_Updater_Previous_Version=\u65E7\u30D0\u30FC\u30B8\u30E7\u30F3\u306B\u623B\u3057\u307E\u3059\u304B? -FR-Desinger-Plugin_Updater_Current_Version=\u73FE\u5728\u306E\u30D0\u30FC\u30B8\u30E7\u30F3 -FR-Desinger-Plugin_Updater_Not_Install_Version=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u7528\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u3042\u308A\u307E\u305B\u3093 +FR-Designer-Output_Default_Background=\u30C7\u30D5\u30A9\u30EB\u30C8\u80CC\u666F +FR-Designer-Output_Excel_Page=Excel\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8(\u30DA\u30FC\u30B8\u5225\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8) +FR-Designer-Output_Excel_Sheet=Excel\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8(\u30DA\u30FC\u30B8\u5225\u30B7\u30FC\u30C8\u5225\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8) +FR-Designer-Output_Excel_Simple=Excel\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8(\u5143\u306E\u307E\u307E\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8) +FR-Designer-Plugin_PluginMarket_Coding=\u30D7\u30E9\u30B0\u30A4\u30F3\u30DE\u30FC\u30B1\u30C3\u30C8\u306F\u958B\u767A\u4E2D\u3067\u3059\u3002\u3054\u671F\u5F85\u304F\u3060\u3055\u3044 +FR-Desinger-Plugin_Updater_UpdateAndUpgrade=\u66F4\u65B0\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 +FR-Desinger-Plugin_Updater_Checking_Jar_Update=Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u30C1\u30A7\u30C3\u30AF\u66F4\u65B0\u4E2D +FR-Desinger-Plugin_Updater_Checking_Version_Update=\u30D0\u30FC\u30B8\u30E7\u30F3\u30C1\u30A7\u30C3\u30AF\u66F4\u65B0\u4E2D +FR-Desinger-Plugin_Updater_Update=\u66F4\u65B0 +FR-Desinger-Plugin_Updater_Upgrade=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 +FR-Desinger-Plugin_Updater_Restore=\u5FA9\u5143 +FR-Desinger-Plugin_Updater_New_Version_Available=\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3\u6709\u308A +FR-Desinger-Plugin_Updater_JarUpdate=Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u66F4\u65B0 +FR-Desinger-Plugin_Updater_VersionUpgrade=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7 +FR-Desinger-Plugin_Updater_Previous_Version=\u65E7\u30D0\u30FC\u30B8\u30E7\u30F3\u307E\u3067\u306B +FR-Desinger-Plugin_Updater_Current_Version=\u73FE\u30D0\u30FC\u30B8\u30E7\u30F3 +FR-Desinger-Plugin_Updater_Not_Install_Version=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u306A\u3044 FR-Desinger-Plugin_Updater_Latest_Version=\u6700\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3 -FR-Desinger-Plugin_Updater_Jar_Downloading=Jar\u30D5\u30A1\u30A4\u30EB\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u4E2D -FR-Desinger-Plugin_Updater_Version_Downloading=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30D1\u30C3\u30B1\u30FC\u30B8\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u4E2D +FR-Desinger-Plugin_Updater_Jar_Downloading=Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u5B8C\u6210\u5F85\u3061 +FR-Desinger-Plugin_Updater_Version_Downloading=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30D1\u30C3\u30B1\u30FC\u30B8\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u5B8C\u6210\u5F85\u3061 FR-Desinger-Plugin_Updater_Restart_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u518D\u8D77\u52D5 -FR-Desinger-Plugin_Updater_Connect_VersionUpdateServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u66F4\u65B0\u30B5\u30FC\u30D0\u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093 -FR-Desinger-Plugin_Updater_Connect_VersionUpgradeServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30B5\u30FC\u30D0\u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093 -FR-Desinger-Plugin_Updater_Already_Latest_Version=\u65E2\u306B\u6700\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u3059 -FR-Desinger-Plugin_Updater_Backup_OldJar_To=\u53E4\u3044Jar\u30D5\u30A1\u30A4\u30EB\u3092\u4E0B\u8A18\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3057\u307E\u3057\u305F\: -FR-Desinger-Plugin_Updater_Backup_OldVersion_To=\u53E4\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u4E0B\u8A18\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3057\u307E\u3057\u305F\: -FR-Desinger-Plugin_Updater_Please_Restart=\u3001\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u518D\u8D77\u52D5\u3057\u3066\u4E0B\u3055\u3044 -FR-Desinger-Plugin_Updater_Jar_Restore=Jar\u30D5\u30A1\u30A4\u30EB\u30EA\u30AB\u30D0\u30EA -FR-Desinger-Plugin_Updater_Version_Restore=\u30D0\u30FC\u30B8\u30E7\u30F3\u30EA\u30AB\u30D0\u30EA -FR-Desinger-Plugin_Updater_Restore_To=\u3078\u30EA\u30AB\u30D0\u30EA -FR-Desinger-Plugin_Updater_WorksAfterRestart=\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u518D\u8D77\u52D5\u5F8C\u306B\u6709\u52B9\u306B\u306A\u308A\u307E\u3059\u3002 +FR-Desinger-Plugin_Updater_Connect_VersionUpdateServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u66F4\u65B0\u30B5\u30FC\u30D0\u30FC\u63A5\u7D9A\u3067\u304D\u306A\u3044 +FR-Desinger-Plugin_Updater_Connect_VersionUpgradeServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30B5\u30FC\u30D0\u30FC\u63A5\u7D9A\u3067\u304D\u306A\u3044 +FR-Desinger-Plugin_Updater_Already_Latest_Version=\u65E2\u306B\u6700\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3 +FR-Desinger-Plugin_Updater_Backup_OldJar_To=\u65E7Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u306F\u65E2\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7 +FR-Desinger-Plugin_Updater_Backup_OldVersion_To=\u65E7\u30D0\u30FC\u30B8\u30E7\u30F3\u30D1\u30C3\u30B1\u30FC\u30B8\u306F\u65E2\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7 +FR-Desinger-Plugin_Updater_Please_Restart=\u30C7\u30B6\u30A4\u30CA\u30FC\u306F\u518D\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Desinger-Plugin_Updater_Jar_Restore=\u65E7Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u5FA9\u5143 +FR-Desinger-Plugin_Updater_Version_Restore=\u30D0\u30FC\u30B8\u30E7\u30F3\u5FA9\u5143 +FR-Desinger-Plugin_Updater_Restore_To=\u5FA9\u5143 +FR-Desinger-Plugin_Updater_WorksAfterRestart=\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u518D\u8D77\u52D5\u5F8C\u306B\u6709\u52B9\u3059\u308B FR-Designer-Submit_Condition=\u6761\u4EF6 -FR-Designer-Widget-Title_border=\u67A0 +FR-Designer-Widget-Title_border=\u30D5\u30EC\u30FC\u30E0 FR-Designer-Widget-Title_border_color=\u8272 FR-Designer_AbsoluteLayout=\u7D76\u5BFE\u30EC\u30A4\u30A2\u30A6\u30C8 -FR-Designer_Allow_Decimals=\u5C0F\u6570\u306E\u8A31\u53EF -FR-Designer_Allow_Negative=\u8CA0\u5024\u306E\u8A31\u53EF -FR-Designer_Background-Click=\u30DE\u30A6\u30B9\u30AF\u30EA\u30C3\u30AF\u6642\u80CC\u666F +FR-Designer_Allow_Decimals=\u5C0F\u6570\u3092\u8A31\u53EF +FR-Designer_Allow_Negative=\u30DE\u30A4\u30CA\u30B9\u5024\u3092\u8A31\u53EF +FR-Designer_Background-Click=\u30DE\u30A6\u30B9\u30AF\u30EA\u30C3\u30AF\u80CC\u666F FR-Designer_Background-Initial=\u521D\u671F\u80CC\u666F -FR-Designer_Background-Over=\u30DE\u30A6\u30B9\u30AA\u30FC\u30D0\u30FC\u6642\u80CC\u666F +FR-Designer_Background-Over=\u30DE\u30A6\u30B9\u30D5\u30ED\u30FC\u30C8\u80CC\u666F FR-Designer_Bar-Code-Exception-Tip=\u30C7\u30FC\u30BF\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 FR-Designer_Block-intersect=\u30E2\u30B8\u30E5\u30FC\u30EB\u3068\u30E2\u30B8\u30E5\u30FC\u30EB\u9593\u3092\u91CD\u306D\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 FR-Designer_BorderLayout=\u30DC\u30FC\u30C0\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8 FR-Designer_Button-Hotkeys=\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC FR-Designer_Button-Icon=\u30DC\u30BF\u30F3\u30A2\u30A4\u30B3\u30F3 -FR-Designer_Button-Name=\u30DC\u30BF\u30F3\u540D +FR-Designer_Button-Name=\u30DC\u30BF\u30F3\u540D\u79F0 FR-Designer_Button-Type=\u30DC\u30BF\u30F3\u30BF\u30A4\u30D7 -FR-Designer_CardLayout=Tab\u30EC\u30A4\u30A2\u30A6\u30C8 +FR-Designer_CardLayout=Tab\u914D\u7F6E FR-Designer_Cell=\u30BB\u30EB -FR-Designer_Chart_Cell=\u30B0\u30E9\u30D5\u30EA\u30F3\u30AF-\u30BB\u30EB -FR-Designer_Chart_Float=\u30B0\u30E9\u30D5\u30EA\u30F3\u30AF-\u30D5\u30ED\u30FC\u30C6\u30A3\u30F3\u30B0\u8981\u7D20 -FR-Designer_Chart_Float_chart=\u30B0\u30E9\u30D5\u30EA\u30F3\u30AF-\u30D5\u30ED\u30FC\u30C6\u30A3\u30F3\u30B0\u30B0\u30E9\u30D5 -FR-Designer_Check-for-Updates=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3092\u78BA\u8A8D -FR-Designer_Choose-Data-Confusion-Tip=\ \u6DF7\u4EA4\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u9078\u629E\u5F8C\u30D7\u30EC\u30D3\u30E5\u30FC\u3057\u3066\u304F\u3060\u3055\u3044 -FR-Designer_Close=\u9589\u3058\u308B +FR-Designer_Chart_Cell=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u9023\u52D5\u30BB\u30EB +FR-Designer_Chart_Float=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u9023\u52D5\u30D5\u30ED\u30FC\u8981\u7D20 +FR-Designer_Chart_Float_chart=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u30D5\u30ED\u30FC\u7A93\u30B0\u30E9\u30D5 +FR-Designer_Check-for-Updates=\u66F4\u65B0\u3092\u78BA\u8A8D +FR-Designer_Choose-Data-Confusion-Tip=\ \u6DF7\u4EA4\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u9078\u629E\u5F8C\u30D7\u30EC\u30D3\u30E5\u30FC\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Designer_Close=\u30AF\u30ED\u30FC\u30BA FR-Designer_Column=\u5217 -FR-Designer_Column_Measure=\u5217\u8EF8/\u30E1\u30B8\u30E3\u30FC +FR-Designer_Column_Measure=\u5217\u8EF8/\u5EA6\u91CF\u5024 FR-Designer_Condition_Attributes=\u6761\u4EF6\u5C5E\u6027 -FR-Designer_Confusion-Col-Name=\u30D5\u30A3\u30FC\u30EB\u30C9\u540D +FR-Designer_Confusion-Col-Name=\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u79F0 FR-Designer_Confusion-key=\u6DF7\u4EA4\u3059\u308B\u30AD\u30FC\u30EF\u30FC\u30C9 -FR-Designer_Currency_Line=\u6841\u533A\u5207\u308A\u7DDA -FR-Designer_Current_tab=\u7DE8\u96C6\u4E2D\u306Etab -FR-Designer_Custom=\u30AB\u30B9\u30BF\u30E0 -FR-Designer_Custom-Angle=\u30AB\u30B9\u30BF\u30E0\u89D2\u5EA6 -FR-Designer_DS-Dictionary=\u30C7\u30FC\u30BF\u8F9E\u66F8 +FR-Designer_Currency_Line=\u91D1\u984D\u7DDA +FR-Designer_Current_tab=\u73FE\u5728\u306E\u7DE8\u96C6tab +FR-Designer_Custom=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA +FR-Designer_Custom-Angle=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u89D2\u5EA6 +FR-Designer_DS-Dictionary=\u30C7\u30FC\u30BF\u5B57\u5178 FR-Designer_Data-confusion=\u30C7\u30FC\u30BF\u6DF7\u4EA4 FR-Designer_Data_Type=\u30C7\u30FC\u30BF\u30BF\u30A4\u30D7 FR-Designer_Double_Click_Edit_OR_Clear=\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u7DE8\u96C6\u307E\u305F\u306F\u30AF\u30EA\u30A2\u3059\u308B -FR-Designer_Email=E\u30E1\u30FC\u30EB +FR-Designer_Email=\u30E1\u30FC\u30EB FR-Designer_Enabled=\u4F7F\u7528\u53EF\u80FD -FR-Designer_End-Date=\u7D42\u4E86\u65E5 -FR-Designer_ExportAndOutput=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +FR-Designer_End-Date=\u7D42\u4E86\u65E5\u671F +FR-Designer_ExportAndOutput=\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8 FR-Designer_FRFont=\u30D5\u30A9\u30F3\u30C8 -FR-Designer_FS_Close_Other_Templates=\u4ED6\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u9589\u3058\u308B +FR-Designer_FS_Close_Other_Templates=\u305D\u306E\u4ED6\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u9589\u3058\u308B FR-Designer_File=\u30D5\u30A1\u30A4\u30EB -FR-Designer_Filter_Conditions=\u30D5\u30A3\u30EB\u30BF\u6761\u4EF6 -FR-Designer_Finish-Modify-Share=\u4FEE\u6B63\u3092\u7D42\u4E86\u3057\u5171\u6709 -FR-Designer_Fit-App=App\u81EA\u52D5\u8ABF\u6574 -FR-Designer_Fit=\u81EA\u52D5\u8ABF\u6574 -FR-Designer_Font-Family=\u30D5\u30A9\u30F3\u30C8\u540D -FR-Designer_Font-Size=\u30D5\u30A9\u30F3\u30C8\u30B5\u30A4\u30BA -FR-Designer_Forbid_Drag_into_Adapt_Pane=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u3001\u88FD\u8868\u30D1\u30CD\u30EB\u306B\u30C9\u30E9\u30C3\u30B0\u3067\u304D\u307E\u305B\u3093 -FR-Designer_Forbid_Drag_into_Para_Pane=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u30D1\u30CD\u30EB\u306B\u30C9\u30E9\u30C3\u30B0\u3067\u304D\u307E\u305B\u3093 +FR-Designer_Filter_Conditions=\u9078\u5225\u6761\u4EF6 +FR-Designer_Finish-Modify-Share=\u4FEE\u6B63\u3092\u5B8C\u4E86\u3057\u3066\u30B7\u30A7\u30A2 +FR-Designer_Fit-App=App\u81EA\u9069\u5FDC +FR-Designer_Fit=\u81EA\u9069\u5FDC +FR-Designer_Font-Family=\u30D5\u30A9\u30F3\u30C8\u540D\u79F0 +FR-Designer_Font-Size=\u30D5\u30A9\u30F3\u30C8\u5927\u5C0F +FR-Designer_Forbid_Drag_into_Adapt_Pane=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u30D5\u30A9\u30FC\u30E0\u672C\u6587\u3092\u30C9\u30E9\u30C3\u30B0\u3059\u308B\u3053\u3068\u306F\u8A31\u3055\u308C\u306A\u3044 +FR-Designer_Forbid_Drag_into_Para_Pane=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u30D1\u30CD\u30EB\u306B\u30C9\u30E9\u30C3\u30B0\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 FR-Designer_Foreground=\u8272 -FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u6A29\u9650\u7DE8\u96C6\u306F\u73FE\u5728\u306E\u6642\u70B9\u3067\u652F\u6301\u3057\u3066\u3044\u307E\u305B\u3093 -FR-Designer_Form-Report=\u5E33\u7968\u30D6\u30ED\u30C3\u30AF -FR-Designer_Form_EmbeddedTD=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9(\u7D44\u307F\u8FBC\u307F\u30C7\u30FC\u30BF) -FR-Designer_Form_Module=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30E2\u30B8\u30E5\u30FC\u30EB +FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\u8868\u306E\u6A29\u9650\u7DE8\u96C6\u306B\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093 +FR-Designer_Form-Report=\u5E33\u7968\u30E2\u30B8\u30E5\u30FC\u30EB +FR-Designer_Form_EmbeddedTD=\u8868(\u5185\u8535\u30C7\u30FC\u30BF) +FR-Designer_Form_Module=\u8868\u30E2\u30B8\u30E5\u30FC\u30EB FR-Designer_Format_explan=\u66F8\u5F0F\u8AAC\u660E -FR-Designer_Formula=\u6570\u5F0F +FR-Designer_Formula=\u516C\u5F0F FR-Designer_Forum=BBS -FR-Designer_Get-Cube=cube\u8AAD\u307F\u53D6\u308A\u4E2D +FR-Designer_Get-Cube=cube\u53D6\u5F97\u4E2D FR-Designer_Help=\u30D8\u30EB\u30D7 -FR-Designer_Hide=\u975E\u8868\u793A -FR-Designer_Hyperlink=\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF -FR-Designer_Hyperlink-Form_link=\u73FE\u5728\u306E\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 +FR-Designer_Hide=\u96A0\u3059 +FR-Designer_Hyperlink=\u30B9\u30FC\u30D1\u30FC\u30EA\u30F3\u30AF +FR-Designer_Hyperlink-Form_link=\u73FE\u5728\u306E\u8868\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 FR-Designer_IDCard=\u8EAB\u5206\u8A3C\u660E\u66F8 FR-Designer_Icon=\u30A2\u30A4\u30B3\u30F3 FR-Designer_Index=\u5217\u8EF8/\u6307\u6A19 -FR-Designer_Input_Rule=\u5165\u529B\u898F\u5247 -FR-Designer_Language_Default=\u65E2\u5B9A -FR-Designer_Layout=\u30EC\u30A4\u30A2\u30A6\u30C8 -FR-Designer_Layout-HBox=\u6C34\u5E73\u30B1\u30FC\u30B9\u30EC\u30A4\u30A2\u30A6\u30C8 -FR-Designer_Layout-Index=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9 -FR-Designer_Layout_Constraints=\u4F4D\u7F6E\u3068\u30B5\u30A4\u30BA +FR-Designer_Input_Rule=\u30EB\u30FC\u30EB\u8A18\u5165 +FR-Designer_Language_Default=\u30C7\u30D5\u30A9\u30EB\u30C8 +FR-Designer_Layout=\u914D\u7F6E +FR-Designer_Layout-HBox=\u6C34\u5E73\u30B1\u30FC\u30B9\u914D\u7F6E +FR-Designer_Layout-Index=\u7D22\u5F15 +FR-Designer_Layout_Constraints=\u4F4D\u7F6E\u3068\u5927\u5C0F FR-Designer_Length=\u9577\u3055 -FR-Designer_Loading_Data=\u30C7\u30FC\u30BF\u3092\u30ED\u30FC\u30C9\u3057\u3066\u3044\u307E\u3059 -FR-Designer_M-Exit=\u7D42\u4E86 +FR-Designer_Loading_Data=\u30C7\u30FC\u30BF\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3057\u3066\u3044\u307E\u3059 +FR-Designer_M-Exit=\u9000\u51FA FR-Designer_M-Help=\u30D8\u30EB\u30D7 FR-Designer_M-Insert=\u633F\u5165 -FR-Designer_M-Repeat-Freeze=\u91CD\u8907\u3068\u56FA\u5B9A\u8A2D\u5B9A -FR-Designer_M-Server=\u30B5\u30FC\u30D0 -FR-Designer_M-SwitchWorkspace=\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u5207\u308A\u66FF\u3048 +FR-Designer_M-Repeat-Freeze=\u91CD\u8907\u3068\u30D5\u30EA\u30FC\u30BA\u8A2D\u5B9A +FR-Designer_M-Server=\u30B5\u30FC\u30D0\u30FC +FR-Designer_M-SwitchWorkspace=\u4F5C\u696D\u76EE\u6B21\u5207\u308A\u66FF\u3048 FR-Designer_M-Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 -FR-Designer_MDX_Explain=MDX\u8A00\u8A9E\u306E\u6587\u6CD5\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\u4F8B\u3048\u3070\:\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\:COLUMNS\u3001ROWS\u306F0\u30011\u3092\u4F7F\u7528\u3057\u3066\u4EE3\u66FF\u53EF\u80FD\u3067\u3059\u3002\u30AF\u30A8\u30EA\u8EF8\u306F2\u3064\u306E\u8EF8\u623B\u3057\u306B\u306E\u307F\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002 +FR-Designer_MDX_Explain=\u6587\u6CD5\u66F8\u5F0F\u306FMDX\u6587\u6CD5\u3092\u53C2\u8003\u3002\n\u4F8B\u3048\u3070\uFF1A\nWITH\nMEMBER [Measures].[Special Discount] AS\n[Measures].[Discount Amount] * 1.5\nSELECT\n[Measures].[Special Discount] on COLUMNS,\nNON EMPTY [Product].[Product].MEMBERS ON Rows\nFROM [Adventure Works]\nWHERE [Product].[Category].[Bikes]\n\u6CE8\uFF1ACOLUMNS\u3001ROWS\u306F0\u30011\u3092\u4F7F\u7528\u3057\u3066\u4EE3\u66FF\u53EF\u80FD\u3067\u3059\u3002\u30AF\u30A8\u30EA\u8EF8\u306F\u4E8C\u3064\u306E\u8EF8\u623B\u3057\u306B\u306E\u307F\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002 FR-Designer_M_Help-About_Software=\u30BD\u30D5\u30C8\u30A6\u30A7\u30A2\u306B\u3064\u3044\u3066 -FR-Designer_M_Help-Tutorial=\u30D8\u30EB\u30D7\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8 +FR-Designer_M_Help-Tutorial=\u30D8\u30EB\u30D7\u30C1\u30E5\u30FC\u30C8\u30EA\u30A2\u30EB FR-Designer_Max_Value=\u6700\u5927\u5024 FR-Designer_Min_Value=\u6700\u5C0F\u5024 -FR-Designer_MobilePhone=\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3 -FR-Designer_New_Value=\u65B0\u3057\u3044\u5024 -FR-Designer_None=\u306A\u3057 -FR-Designer_PaperSize-Mobile=\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3 -FR-Designer_PaperSize-Mobile-Large=\u5927\u304D\u3044\u30B9\u30AF\u30EA\u30FC\u30F3 -FR-Designer_PaperSize-Mobile-Small=\u5C0F\u3055\u3044\u30B9\u30AF\u30EA\u30FC\u30F3 -FR-Designer_Para-Body=\u30D1\u30E9\u30E1\u30FC\u30BF\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 -FR-Designer_Parameters=\u30D1\u30E9\u30E1\u30FC\u30BF +FR-Designer_MobilePhone=\u643A\u5E2F\u96FB\u8A71 +FR-Designer_New_Value=\u65B0\u5024 +FR-Designer_None=\u7121\u3057 +FR-Designer_PaperSize-Mobile=\u643A\u5E2F\u96FB\u8A71 +FR-Designer_PaperSize-Mobile-Large=\u643A\u5E2F\u96FB\u8A71\u5927\u30B9\u30AF\u30EA\u30FC\u30F3 +FR-Designer_PaperSize-Mobile-Small=\u643A\u5E2F\u96FB\u8A71\u5C0F\u30B9\u30AF\u30EA\u30FC\u30F3 +FR-Designer_Para-Body=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u753B\u9762 +FR-Designer_Parameters=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC FR-Designer_Phone=\u96FB\u8A71 FR-Designer_PostCode=\u90F5\u4FBF\u756A\u53F7 -FR-Designer_Present=\u5F62\u614B +FR-Designer_Present=\u30D5\u30A9\u30EB\u30E0 FR-Designer_Preview=\u30D7\u30EC\u30D3\u30E5\u30FC FR-Designer_Preview-Data-Confusion=\u6DF7\u4EA4\u5F8C\u306E\u30C7\u30FC\u30BF\u3092\u30D7\u30EC\u30D3\u30E5\u30FC FR-Designer_Product_Demo=\u88FD\u54C1\u30C7\u30E2 FR-Designer_Query_Type=\u30AF\u30A8\u30EA\u65B9\u6CD5 FR-Designer_Refresh=\u66F4\u65B0 -FR-Designer_Refresh_Parameter_In_SQL=SQL\u4E2D\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u66F4\u65B0\u3057\u307E\u3059\u304B -FR-Designer_Reg_Expressions=\u6B63\u898F\u8868\u73FE +FR-Designer_Refresh_Parameter_In_SQL=SQL\u4E2D\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3092\u66F4\u65B0\u3057\u307E\u3059\u304B +FR-Designer_Reg_Expressions=\u6B63\u5247\u8868\u73FE\u5F0F FR-Designer_Reg_Max_Length=\u6700\u5927\u9577\u3055 FR-Designer_Reg_Min_Length=\u6700\u5C0F\u9577\u3055 -FR-Designer_ReportColumns-Columns=\u5217\u6BB5\u7D44\u307F -FR-Designer_Return-Date=\u65E5\u4ED8\u3092\u623B\u3059 -FR-Designer_RichText=\u30EA\u30C3\u30C1\u30C6\u30AD\u30B9\u30C8 -FR-Designer_RichTextEditor=\u30EA\u30C3\u30C1\u30C6\u30AD\u30B9\u30C8\u30A8\u30C7\u30A3\u30BF +FR-Designer_ReportColumns-Columns=\u6BB5\u7D44\u307F +FR-Designer_Return-Date=\u65E5\u671F\u306B\u623B\u308B +FR-Designer_RichText=\u30EA\u30C3\u30C1\u6587\u66F8\u633F\u5165 +FR-Designer_RichTextEditor=\u30EA\u30C3\u30C1\u6587\u66F8\u30A8\u30C7\u30A3\u30BF FR-Designer_Row=\u884C -FR-Designer_Row_Dimension=\u884C\u8EF8/\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3 -FR-Designer_Save=\u4E0A\u66F8\u304D\u4FDD\u5B58 +FR-Designer_Row_Dimension=\u884C\u8EF8/\u7DEF\u5EA6 +FR-Designer_Save=\u4FDD\u5B58 FR-Designer_Search=\u691C\u7D22 FR-Designer_Set=\u8A2D\u5B9A -FR-Designer_Share-Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5171\u6709 -FR-Designer_Simple_general=\u7C21\u6613\u4E00\u822C\u30AF\u30A8\u30EA +FR-Designer_Share-Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30B7\u30A7\u30A2 +FR-Designer_Simple_general=\u30B7\u30F3\u30D7\u30EB\u901A\u7528\u30AF\u30A8\u30EA FR-Designer_Song_TypeFace=\u5B8B\u4F53 -FR-Designer_Start-Date=\u958B\u59CB\u65E5 +FR-Designer_Start-Date=\u958B\u59CB\u65E5\u671F FR-Designer_Subscript=\u4E0B\u4ED8\u304D FR-Designer_Superscript=\u4E0A\u4ED8\u304D FR-Designer_Support_QQ=\u6280\u8853QQ FR-Designer_Swatch=\u30B5\u30F3\u30D7\u30EB FR-Designer_Tab_title=tab\u30BF\u30A4\u30C8\u30EB FR-Designer_TableData=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 -FR-Designer_Thank_guest=\u7279\u306B\u3053\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u4F7F\u3044\u3084\u3059\u3055\u306B\u3064\u3044\u3066\u8CA2\u732E\u3057\u3066\u304F\u308C\u305F\u4EE5\u4E0B\u306E\u30E6\u30FC\u30B6\u30FC\u9054\u306B\u611F\u8B1D\u3057\u307E\u3059 +FR-Designer_Thank_guest=\u7279\u306B\u5F53\u8A72\u30D0\u30FC\u30B8\u30E7\u30F3\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u4F7F\u3044\u3084\u3059\u3055\u306B\u3064\u3044\u3066\u8CA2\u732E\u3057\u3066\u304F\u308C\u305F\u4EE5\u4E0B\u306EBBS\u306E\u5E06\u30BD\u30D5\u30C8\u30D5\u30A1\u30F3\u306B\u611F\u8B1D\u3057\u307E\u3059 FR-Designer_Thanks-To=\u611F\u8B1D FR-Designer_Title=\u30BF\u30A4\u30C8\u30EB -FR-Designer_Total=\u5408\u8A08 +FR-Designer_Total=\u5168\u90E8\u3067 FR-Designer_UnSignIn=\u672A\u30ED\u30B0\u30A4\u30F3 -FR-Designer_Underline=\u4E0B\u7DDA +FR-Designer_Underline=\u30A2\u30F3\u30C0\u30FC\u30E9\u30A4\u30F3 FR-Designer_Used=\u6700\u8FD1\u4F7F\u7528\u3057\u305F -FR-Designer_User-defined-MDX=\u30AB\u30B9\u30BF\u30E0MDX\u30AF\u30A8\u30EA +FR-Designer_User-defined-MDX=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BAMDX\u30AF\u30A8\u30EA FR-Designer_SampleText=\u30C6\u30AD\u30B9\u30C8\u4F8B -FR-Designer_Vertical-LeftToRight=\u6587\u5B57\u7E26\u66F8\u304D(\u5DE6\u304B\u3089\u53F3\u3078) -FR-Designer_Vertical-RightToLeft=\u6587\u5B57\u7E26\u66F8\u304D(\u53F3\u304B\u3089\u5DE6\u3078) -FR-Designer_VerticalBoxLayout=\u5782\u76F4\u30B1\u30FC\u30B9\u30EC\u30A4\u30A2\u30A6\u30C8 -FR-Designer_Visible=\u8868\u793A -FR-Designer_WLayout-Border-ToolTips=\u6771\u3001\u5357\u3001\u897F\u3001\u5317\u3001\u4E2D\u592E\u306E5\u30D6\u30ED\u30C3\u30AF\u3088\u308A\u69CB\u6210\u3055\u308C\u308B\u5B8C\u5168\u306A\u30DC\u30FC\u30C0\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u3002\n\u5317\u90E8\u3068\u5357\u90E8\u3067\u306F\u9AD8\u3055\u3092\u3001\u6771\u90E8\u3068\u897F\u90E8\u3068\u3067\u306F\u5E45\u3092\u8ABF\u6574\u3067\u304D\u307E\u3059\u3002 +FR-Designer_Vertical-LeftToRight=\u6587\u5B57\u7E26\u66F8(\u5DE6\u304B\u3089\u53F3\u3078\uFF09 +FR-Designer_Vertical-RightToLeft=\u6587\u5B57\u7E26\u66F8(\u53F3\u304B\u3089\u5DE6\u3078) +FR-Designer_VerticalBoxLayout=\u5782\u76F4\u30B1\u30FC\u30B9\u914D\u7F6E +FR-Designer_Visible=\u53EF\u8996 +FR-Designer_WLayout-Border-ToolTips=\u5B8C\u74A7\u306A\u30DC\u30FC\u30C0\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8\u5BB9\u5668\u306F\u6771\u897F\u5357\u5317\u4E2D\u306E\u4E94\u3064\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u304B\u3089\u69CB\u6210\u3055\u308C\u307E\u3059\u3002\\uff4e\u305D\u306E\u3046\u3061\u3001\u5357\u5317\u30E2\u30B8\u30E5\u30FC\u30EB\u306F\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u9AD8\u3055\u3092\u8ABF\u6574\u3067\u304D\u3001\u6771\u897F\u30E2\u30B8\u30E5\u30FC\u30EB\u306F\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u5E45\u3092\u8ABF\u6574\u3067\u304D\u307E\u3059\u3002 FR-Designer_WaterMark=\u900F\u304B\u3057 -FR-Designer_Widget=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 -FR-Designer_Widget-Settings=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u8A2D\u5B9A -FR-Designer_Widget-Visible=\u8868\u793A -FR-Designer_XMLA_Explain=\u591A\u6B21\u5143\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u53D6\u308A\u51FA\u3057\u3092\u4F7F\u7528\u3059\u308B\u524D\u306B\u3001\u63A5\u7D9A\u78BA\u8A8D\u3067\u304D\u305F\u591A\u6B21\u5143\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u63A5\u7D9A\u304C\u5FC5\u8981\u3067\u3059\u3002\n\u30C7\u30FC\u30BF\u63A5\u7D9A\u8A2D\u5B9A\u5B8C\u4E86\u5F8C\u3001\u30AF\u30A8\u30EA\u30C7\u30FC\u30BF\u6642\u306B2\u7A2E\u985E\u306E\u7570\u306A\u308B\u53D6\u308A\u51FA\u3057\u624B\u6BB5\u304C\u3042\u308A\u307E\u3059\u3002\n1.\u7C21\u6613\u4E00\u822C\u691C\u7D22\:\n\u7C21\u6613\u4E00\u822C\u30AF\u30A8\u30EA\u306FFineBI\u304A\u3088\u3073\u305D\u306E\u4ED6\u591A\u6B21\u5143\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306B\u9069\u7528\u3055\u308C\u307E\u3059\u3002\n\u7C21\u6613\u4E00\u822C\u30AF\u30A8\u30EA\u306E\u4F7F\u7528\u306B\u306F\u3001FR\u306FCube\u306E\u5C64\u5225\u69CB\u9020\u3092\u81EA\u52D5\u3067\u8AAD\u307F\u8FBC\u307F\u9078\u629E\u3057\u3001\u76F4\u63A5\u5FC5\u8981\u306A\u6240\u9700\u7684\u30E1\u30B8\u30E3\u30FC\u304A\u3088\u3073\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3\u3092\u9078\u629E\u3057\u6761\u4EF6\u9078\u629E\u3092\u8FFD\u52A0\u3059\u308C\u3070\u3001FR\u306F\u9078\u629E\u306B\u57FA\u3065\u3044\u3066\u81EA\u52D5\u7684\u306B\u30C7\u30FC\u30BF\u3092\u30AF\u30A8\u30EA\u3057\u307E\u3059\u3002\n\u7C21\u6613\u4E00\u822C\u30AF\u30A8\u30EA\u306F\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3\u304A\u3088\u3073\u30E1\u30B8\u30E3\u30FC\u3068\u3044\u30462\u3064\u306E\u8EF8\u306E\u30AF\u30A8\u30EA\u306B\u306E\u307F\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002\n\u30E1\u30B8\u30E3\u30FC\u304A\u3088\u3073\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3\u306E\u8A2D\u5B9A\u3067\u3001\u73FE\u5728\u5FC5\u8981\u306A\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3\u3092\u9078\u629E\u3059\u308B\u3057\u304B\u306A\u304F\u3066\u3001\u624B\u52D5\u3067\u4FEE\u6B63\u3067\u304D\u307E\u305B\u3093\u3002\\u6761\u4EF6\u9078\u629E\u306FOPEN SQL\u6587\u6CD5\u3092\u63A1\u7528\u3057\u3066\u304A\u308A\u3001${abc}\u3092\u5165\u529B\u3057\u3066\u30D1\u30E9\u30E1\u30FC\u306B\u3067\u304D\u3001\u7528\u6CD5\u306F\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u3068\u540C\u69D8\u3067\u3059\u3002\n2.\u30AB\u30B9\u30BF\u30E0MDX\u30AF\u30A8\u30EA\:\n\u30AB\u30B9\u30BF\u30E0MDX\u30AF\u30A8\u30EA\u3092\u4F7F\u7528\u3059\u308B\u3068\u3001\u30AB\u30B9\u30BF\u30E0MDX\u6587\u6CD5\u304C\u5FC5\u8981\u306A\u7D50\u679C\u3092\u30AF\u30A8\u30EA\u3057\u307E\u3059\u3002\n\u6CE8\u610F\uFF0C\u30AB\u30B9\u30BF\u30E0MDX\u30AF\u30A8\u30EA\u30822\u3064\u306E\u8EF8\u306E\u30AF\u30A8\u30EA\u306B\u306E\u307F\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002\n{abc}\u3092\u5165\u529B\u3057\u3066\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u3067\u304D\u3001\u7528\u6CD5\u306F\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u3068\u540C\u69D8\u3067\u3059\u3002\nFineBI\u306ECube\u306FMDX\u30AF\u30A8\u30EA\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3002 -FR-Designer_bold=\u592A\u5B57 +FR-Designer_Widget=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +FR-Designer_Widget-Settings=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u8A2D\u5B9A +FR-Designer_Widget-Visible=\u53EF\u8996 +FR-Designer_XMLA_Explain=\u591A\u6B21\u5143\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u53D6\u308A\u51FA\u3057\u3092\u4F7F\u7528\u3059\u308B\u524D\u306B\u307E\u305A\u63A5\u7D9A\u306B\u6210\u529F\u3057\u305F\u591A\u6B21\u5143\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u63A5\u7D9A\u304C\u5FC5\u8981\u3067\u3059\u3002\n\u30C7\u30FC\u30BF\u63A5\u7D9A\u8A2D\u5B9A\u5B8C\u4E86\u5F8C\u3001\u30AF\u30A8\u30EA\u30C7\u30FC\u30BF\u6642\u306B\u4E8C\u7A2E\u985E\u306E\u7570\u306A\u308B\u53D6\u308A\u51FA\u3057\u624B\u6BB5\u304C\u3042\u308A\u307E\u3059\u3002\n1.\u30B7\u30F3\u30D7\u30EB\u901A\u7528\u30AF\u30A8\u30EA\uFF1A\n\u30B7\u30F3\u30D7\u30EB\u901A\u7528\u30AF\u30A8\u30EA\u306FFineBI\u304A\u3088\u3073\u305D\u306E\u4ED6\u591A\u6B21\u5143\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306B\u9069\u7528\u3055\u308C\u307E\u3059\u3002\n\u30B7\u30F3\u30D7\u30EB\u901A\u7528\u30AF\u30A8\u30EA\u306E\u4F7F\u7528\u306B\u306F\u3001FR\u306Fcube\u306E\u5C64\u5225\u69CB\u9020\u3092\u81EA\u52D5\u3067\u8AAD\u307F\u53D6\u308A\u9078\u629E\u3057\u3001\u76F4\u63A5\u5FC5\u8981\u306A\u6240\u9700\u7684\u5EA6\u91CF\u5024\u304A\u3088\u3073\u7DEF\u5EA6\u3092\u9078\u629E\u3057\u9078\u5225\u6761\u4EF6\u3092\u8FFD\u52A0\u3059\u308C\u3070\u3001FR\u306F\u9078\u629E\u306B\u57FA\u3065\u3044\u3066\u81EA\u52D5\u7684\u306B\u30C7\u30FC\u30BF\u3092\u30AF\u30A8\u30EA\u3057\u307E\u3059\u3002\n\u30B7\u30F3\u30D7\u30EB\u901A\u7528\u30AF\u30A8\u30EA\u306F\u7DEF\u5EA6\u304A\u3088\u3073\u5EA6\u91CF\u5024\u3068\u3044\u3046\u4E8C\u3064\u306E\u8EF8\u306E\u30AF\u30A8\u30EA\u306B\u306E\u307F\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002\n\u5EA6\u91CF\u5024\u304A\u3088\u3073\u7DEF\u5EA6\u306E\u8A2D\u5B9A\u3067\u3001\u73FE\u5728\u5FC5\u8981\u306A\u7DEF\u5EA6\u3092\u9078\u629E\u3059\u308B\u3057\u304B\u306A\u304F\u3066\u3001\u624B\u52D5\u3067\u4FEE\u6B63\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\n\u9078\u5225\u6761\u4EF6\u306FOPEN SQL\u6587\u6CD5\u3092\u63A1\u7528\u3057\u3066\u304A\u308A\u3001${abc}\u3092\u5165\u529B\u3057\u3066\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3068\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u3001\u7528\u6CD5\u306F\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u3068\u540C\u69D8\u3067\u3059\u3002\n2.\u30AB\u30B9\u30BF\u30DE\u30A4\u30BAMDX\u30AF\u30A8\u30EA\uFF1A\n\u30AB\u30B9\u30BF\u30DE\u30A4\u30BAMDX\u30AF\u30A8\u30EA\u3092\u4F7F\u7528\u3059\u308B\u3068\u3001\u30AB\u30B9\u30BF\u30DE\u30A4\u30BAMDX\u6587\u6CD5\u304C\u5FC5\u8981\u306A\u7D50\u679C\u3092\u30AF\u30A8\u30EA\u3057\u307E\u3059\u3002\n\u6CE8\u610F\uFF0C\u30AB\u30B9\u30BF\u30DE\u30A4\u30BAMDX\u30AF\u30A8\u30EA\u3082\u4E8C\u3064\u306E\u8EF8\u306E\u30AF\u30A8\u30EA\u306B\u306E\u307F\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002\n{abc}\u3092\u5165\u529B\u3057\u3066\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3068\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u3001\u7528\u6CD5\u306F\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u3068\u540C\u69D8\u3067\u3059\u3002\nFineBI\u306Ecube\u306FMDX\u30AF\u30A8\u30EA\u306B\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3002 +FR-Designer_bold=\u592A\u304F\u3059\u308B FR-Designer_font=\u30D5\u30A9\u30F3\u30C8 -FR-Designer_italic=\u659C\u4F53 +FR-Designer_italic=\u30A4\u30BF\u30EA\u30C3\u30AF FR-Designer_product_feedback=\u88FD\u54C1\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF FR-Designer_XMLA=\u591A\u6B21\u5143\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 -FR-Designer-StyleAlignment_Layout_Default=\u65E2\u5B9A -FR-Designer-StyleAlignment_Layout_Image_Titled=\u4E26\u3079\u3066\u8868\u793A -FR-Designer-StyleAlignment_Layout_Image_Extend=\u62E1\u5927\u8868\u793A -FR-Designer-StyleAlignment_Layout_Image_Adjust=\u8ABF\u6574\u8868\u793A +FR-Designer-StyleAlignment_Layout_Default=\u30C7\u30D5\u30A9\u30EB\u30C8 +FR-Designer-StyleAlignment_Layout_Image_Titled=\u5C55\u958B +FR-Designer-StyleAlignment_Layout_Image_Extend=\u5C55\u958B +FR-Designer-StyleAlignment_Layout_Image_Adjust=\u9069\u5FDC FR-Designer-StyleAlignment_Tooltips_Left=\u5DE6\u8A70\u3081 FR-Designer-StyleAlignment_Tooltips_Center=\u4E2D\u592E\u63C3\u3048 FR-Designer-StyleAlignment_Tooltips_Right=\u53F3\u8A70\u3081 FR-Designer-StyleAlignment_Tooltips_Distributed=\u5747\u7B49\u5272\u308A\u4ED8\u3051 -FR-Designer-StyleAlignment_Tooltips_DEFAULT=\u65E2\u5B9A +FR-Designer-StyleAlignment_Tooltips_DEFAULT=\u30C7\u30D5\u30A9\u30EB\u30C8 FR-Designer-StyleAlignment_Tooltips_Top=\u4E0A\u8A70\u3081 FR-Designer-StyleAlignment_Tooltips_Bottom=\u4E0B\u8A70\u3081 -FR-Designer-StyleAlignment_Pane_Horizontal=\u6A2A\u4F4D\u7F6E -FR-Designer-StyleAlignment_Pane_Vertical=\u7E26\u4F4D\u7F6E -FR-Designer-StyleAlignment_Pane_Style=\u63C3\u3048 +FR-Designer-StyleAlignment_Pane_Horizontal=\u6C34\u5E73\u63C3\u3048 +FR-Designer-StyleAlignment_Pane_Vertical=\u5782\u76F4\u63C3\u3048 +FR-Designer-StyleAlignment_Pane_Style=\u30A2\u30E9\u30A4\u30F3\u30E1\u30F3\u30C8 FR-Designer-StyleAlignment_Style_Indentation=\u30A4\u30F3\u30C7\u30F3\u30C8 -FR-Designer-StyleAlignment_Style_Spacing=\u9593\u9694 +FR-Designer-StyleAlignment_Style_Spacing=\u9593\u9694\u8DDD\u96E2 FR-Designer-StyleAlignment_Style_Alignment=\u63C3\u3048 -FR-Designer-CommitTab_Submit=\u66F8\u304D\u8FBC\u307F +FR-Designer-CommitTab_Submit=\u63D0\u51FA\u3059\u308B FR-Designer-CommitTab_SureToDelete=\u524A\u9664\u3057\u307E\u3059\u304B FR-Designer-CommitTab_Remove=\u524A\u9664 FR-Designer-Collect_Information_free=\u7121\u6599 -FR-Designer-Collect_Information_Description=\u8AAC\u660E +FR-Designer-Collect_Information_Description=\u8A18\u8FF0 FR-Designer-Collect_Information_Successfully=\u53CE\u96C6\u6210\u529F FR-Designer_Event_Set=\u30A4\u30D9\u30F3\u30C8\u8A2D\u5B9A -FR-Designer_Blow_set=\u6B21\u306E\u8A2D\u5B9A -FR-Designer_I_Want_To_Set_Single=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u500B\u5225\u8A2D\u5B9A -FR-Designer_Using_Server_Report_View_Settings=\u30B5\u30FC\u30D0\u8A2D\u5B9A -FR-Designer_ErrorHandlerTemplate=\u30A8\u30E9\u30FC\u60C5\u5831\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5B9A\u7FA9 -FR-Designer_Save_Path=\u4FDD\u5B58\u30D1\u30B9 -FR-Designer_Chart_Acc_Set=\u500B\u5225\u8A2D\u5B9A -FR-Designer_Gradient-Color=\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3 -FR-Designer_DEFAULT=\u65E2\u5B9A -FR-Designer_chart-PreStyle=\u30B0\u30E9\u30D5\u4E8B\u524D\u5B9A\u7FA9\u914D\u8272 -FR-Designer_Chart-PreStyle=\u30B0\u30E9\u30D5\u4E8B\u524D\u5B9A\u7FA9\u914D\u8272 +FR-Designer_Blow_set=\u4EE5\u4E0B\u8A2D\u5B9A +FR-Designer_I_Want_To_Set_Single=\u5F53\u8A72\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u5358\u72EC\u8A2D\u5B9A +FR-Designer_Using_Server_Report_View_Settings=\u30B5\u30FC\u30D0\u30FC\u8A2D\u5B9A\u63A1\u7528 +FR-Designer_ErrorHandlerTemplate=\u51FA\u9519\u6A21\u677F\u5B9A\u4E49 +FR-Designer_Save_Path=\u4FDD\u5B58\u8DEF\u5F84 +FR-Designer_Chart_Acc_Set=\u7CBE\u78BA\u8A2D\u5B9A +FR-Designer_Gradient-Color=\u8272\u3092\u5F90\u3005\u306B\u5909\u5316 +FR-Designer_DEFAULT=\u30C7\u30D5\u30A9\u30EB\u30C8 +FR-Designer_chart-PreStyle=\u30C1\u30E3\u30FC\u30C8\u306E\u5B9A\u7FA9\u3055\u308C\u305F\u30AB\u30E9\u30FC +FR-Designer_Chart-PreStyle=\u4E8B\u524D\u306B\u5B9A\u7FA9\u3055\u308C\u305F\u30AB\u30E9\u30FC\u30C1\u30E3\u30FC\u30C8 FR-Designer_Already_exist=\u73FE\u5728\u306E\u74B0\u5883\u306B\u306F\u5B58\u5728\u3057\u3066\u3044\u307E\u3059\: FR-Designer_Database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 -FR-Designer_Model=\u30E2\u30FC\u30C9 -FR-Designer_Refresh_Successfully=\u66F4\u65B0\u6210\u529F -FR-Designer_SQL-Table=\u30C6\u30FC\u30D6\u30EB +FR-Designer_Model=\u30E2\u30C7\u30EB +FR-Designer_Refresh_Successfully=\u5237\u65B0\u6210\u529F +FR-Designer_SQL-Table=\u8868 FR-Designer_SQL-View=\u30D3\u30E5\u30FC FR-Designer_Failed=\u5931\u6557 FR-Designer_Chart_Field_Name=\u30D5\u30A3\u30FC\u30EB\u30C9\u540D @@ -250,230 +251,230 @@ FR-Designer_FormulaD-Text=\u30C6\u30AD\u30B9\u30C8\u95A2\u6570 FR-Designer_FormulaD-Logical=\u30ED\u30B8\u30C3\u30AF\u95A2\u6570 FR-Designer_FormulaD-Array=\u914D\u5217\u95A2\u6570 FR-Designer_FormulaD-Report=\u5E33\u7968\u95A2\u6570 -FR-Designer_FormulaD-Other=\u305D\u306E\u4ED6\u306E\u95A2\u6570 -FR-Designer_FormulaD-All=\u3059\u3079\u3066\u306E\u95A2\u6570 +FR-Designer_FormulaD-Other=\u305D\u306E\u4ED6\u95A2\u6570 +FR-Designer_FormulaD-All=\u5168\u3066\u306E\u95A2\u6570 FR-Designer_Function=\u95A2\u6570 FR-Designer_Select=\u9078\u629E FR-Designer_Edit=\u7DE8\u96C6 FR-Designer_Description=\u8AAC\u660E -FR-Designer_Role_changed_isRefresh=\u30ED\u30FC\u30EB\u3092\u5909\u66F4\u3057\u307E\u3057\u305F\u3001\u66F4\u65B0\u3057\u307E\u3059\u304B? -FR-Designer_FS_Name=\u610F\u601D\u6C7A\u5B9A\u30B7\u30B9\u30C6\u30E0 -FR-Designer_Datasource-Parameter=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u30D1\u30E9\u30E1\u30FC\u30BF -FR-Designer_Tree-ComboBox=\u30D7\u30EB\u30C0\u30A6\u30F3\u30C4\u30EA\u30FC +FR-Designer_Role_changed_isRefresh=\u30ED\u30FC\u30EB\u306F\u3001\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5\u3059\u308B\u304B\u3069\u3046\u304B\u3001\u5909\u66F4 +FR-Designer_FS_Name=\u30C7\u30FC\u30BF\u51B3\u7B56\u30B7\u30B9\u30C6\u30E0 +FR-Designer_Datasource-Parameter=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 +FR-Designer_Tree-ComboBox=\u30DA\u30FC\u30B8\u30DC\u30C3\u30AF\u30B9...... FR-Designer_Form-Iframe=\u30DA\u30FC\u30B8\u30DC\u30C3\u30AF\u30B9 FR-Designer_Type=\u30BF\u30A4\u30D7 -FR-Designer_User-defined=\u30AB\u30B9\u30BF\u30E0 -FR-Designer_Simple_general_forV6=\u4E00\u822C\u30AF\u30A8\u30EA(ECC 6\u4EE5\u4E0A\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306B\u9069\u7528) +FR-Designer_User-defined=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA +FR-Designer_Simple_general_forV6=\u901A\u7528\u30AF\u30A8\u30EA(ECC 6\u4EE5\u4E0A\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306B\u9069\u7528) FR-Designer_Import=\u30A4\u30F3\u30DD\u30FC\u30C8 -FR-Designer_Export=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +FR-Designer_Export=\u51FA\u529B FR-Designer_Delete=\u524A\u9664 -FR-Designer_Sequenced_number=\u756A\u53F7 -FR-Designer_Parameters_name=\u30D1\u30E9\u30E1\u30FC\u30BF\u540D +FR-Designer_Sequenced_number=\u30CA\u30F3\u30D0\u30FC +FR-Designer_Parameters_name=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u540D\u79F0 FR-Designer_SAP_datatype=SAP\u30C7\u30FC\u30BF\u30BF\u30A4\u30D7 -FR-Designer_Return_set_name=\u30BB\u30C3\u30C8\u3092\u623B\u3059 +FR-Designer_Return_set_name=\u30BB\u30C3\u30C8\u306B\u623B\u308B FR-Designer_Datatype=\u30C7\u30FC\u30BF\u30BF\u30A4\u30D7 -FR-Designer_Corre_parameter=\u5BFE\u5FDC\u3059\u308B\u30D1\u30E9\u30E1\u30FC\u30BF -FR-Designer_Default_value=\u30D1\u30E9\u30E1\u30FC\u30BF\u65E2\u5B9A\u5024 +FR-Designer_Corre_parameter=\u5BFE\u5FDC\u3059\u308B\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +FR-Designer_Default_value=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u30C7\u30D5\u30A9\u30EB\u30C8\u5024 FR-Designer_SAP_column_name=SAP\u5217\u540D -FR-Designer_Table_name=\u30C6\u30FC\u30D6\u30EB\u540D +FR-Designer_Table_name=\u8868\u306E\u540D\u79F0 FR-Designer_Columns_choosed=\u9078\u629E\u3057\u305F\u5217 -FR-Designer_Where_claus=\u30D5\u30A3\u30EB\u30BF\u6761\u4EF6 -FR-Designer_PreStyle=\u4E8B\u524D\u5B9A\u7FA9\u30B9\u30BF\u30A4\u30EB -FR-Designer_Loading=\u30ED\u30FC\u30C9\u4E2D -FR-Designer_Table=\u30C6\u30FC\u30D6\u30EB -FR-Designer_Name=\u540D\u524D -FR-Designer_EmailPane-tips=\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u3092ABC\u3068\u3057\u305F\u3068\u304D\u306B\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u3068\u3057\u3066${ABC}\u304C\u8A2D\u5B9A\u3067\u304D\u307E\u3057\u305F\u3002\u540C\u69D8\u306B$ {today ()}\u3092\u5F0F\u3068\u3057\u3001\u30E1\u30FC\u30EB\u4EF6\u540D\u306B"$ {today ()}\u7D71\u8A08"\u3001\u5B9B\u5148\u306B"$ {p}, 123@gmail.com, mike "\u306A\u3069\u304C\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3002\u305F\u3060\u3057\u3001mike\u306F\u30E6\u30FC\u30B6\u30FC\u7BA1\u7406\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u306B\u3066\u4FDD\u5B58\u3055\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 -FR-Designer_EmailPane-mailContent=\u30E1\u30FC\u30EB\u5185\u5BB9 -FR-Designer_EmailPane-BCC=BCC -FR-Designer_EmailPane-mailSubject=\u4EF6\u540D -FR-Designer_EmailPane-warnings=\u610F\u601D\u6C7A\u5B9A\u30B7\u30B9\u30C6\u30E0\u306B\u9001\u4FE1\u7528\u30E1\u30FC\u30EB\u30DC\u30C3\u30AF\u30B9\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +FR-Designer_Where_claus=\u9078\u5225\u6761\u4EF6 +FR-Designer_PreStyle=\u9810\u5B9A\u7FA9\u6A23\u5F0F +FR-Designer_Loading=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3057\u3066\u3044\u307E\u3059 +FR-Designer_Table=\u8868 +FR-Designer_Name=\u540D\u79F0 +FR-Designer_EmailPane-tips=\u3042\u306A\u305F\u306F\u3001ABC\u306F\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u3092\u30D1\u30E9\u30E1\u30FC\u30BF\u3068\u3057\u3066${ABC}\u3092\u5165\u529B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3088\u3046\u306B\u3001\u5F0F\u3068\u3057\u3066${\u4ECA\u65E5\uFF08\uFF09}\uFF1A\u30BF\u30A4\u30C8\u30EB\u30C6\u30AD\u30B9\u30C8"${\u4ECA\u65E5\uFF08\uFF09}\u7D71\u8A08\u306F"\u3001"$ {\u306B\u30A2\u30C9\u30EC\u30B9\u6307\u5B9A\u3055\u308C\u3066\u3044\u308BP}\u3001123@gmail.com\u3001\u30DE\u30A4\u30AF\u306F\u3001\u30E6\u30FC\u30B6\u30FC\u540D\u30E6\u30FC\u30B6\u30FC\u7BA1\u7406\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u306B\u4FDD\u5B58\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u30DE\u30A4\u30AF "\u3001 +FR-Designer_EmailPane-mailContent=\u30E1\u30FC\u30EB\u672C\u6587 +FR-Designer_EmailPane-BCC=\u5BC6\u9001 +FR-Designer_EmailPane-mailSubject=\u30E1\u30FC\u30EB\u30BF\u30A4\u30C8\u30EB +FR-Designer_EmailPane-warnings=\u9001\u4FE1\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u8A2D\u5B9A\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u30ED\u30B0\u30A4\u30F3\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u3067\u8A2D\u5B9A\u3059\u308B\u304B\u7BA1\u7406\u8005\u306B\u9023\u7D61\u3057\u3066\u304F\u3060\u3055\u3044\u3002 FR-Designer_Email_sentEmail=\u30E1\u30FC\u30EB\u9001\u4FE1 -FR-Designer_file-is-locked=\u9078\u629E\u3057\u305F\u5E33\u7968\u306F\u3001\u4ED6\u306E\u30E6\u30FC\u30B6\u30FC\u304C\u7DE8\u96C6\u3057\u3066\u3044\u307E\u3059\u3002\u3057\u3070\u3089\u304F\u304A\u5F85\u3061\u4E0B\u3055\u3044\u3002 -FR-Designer_Custom_Icon_Message1=\u898F\u683C16\u00D716\u306EPNG\u753B\u50CF\u306E\u4F7F\u7528\u3092\u63A8\u5968 +FR-Designer_file-is-locked=\u958B\u3053\u3046\u3068\u3057\u3066\u3044\u308B\u5E33\u7968\u306F\u73FE\u5728\u4ED6\u306E\u4EBA\u304C\u7DE8\u96C6\u3057\u3066\u3044\u307E\u3059\u3002\u5C11\u3057\u5F85\u3063\u3066\u304B\u3089\u958B\u3044\u3066\u304F\u3060\u3055\u3044 +FR-Designer_Custom_Icon_Message1=16 ?? 16\u306EPNG\u753B\u50CF\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u3092\u304A\u3059\u3059\u3081\u3057\u307E\u3059 FR-Designer_Add=\u8FFD\u52A0 -FR-Designer_Custom_Icon_Message2=\u64CD\u4F5C\u306B\u554F\u984C\u304C\u3042\u308A\u307E\u3059 +FR-Designer_Custom_Icon_Message2=\u30AA\u30DA\u30EC\u30FC\u30B7\u30E7\u30F3\u306B\u4E0D\u9069\u5207\u306A\u70B9\u304C\u898B\u3089\u308C\u307E\u3059 FR-Designer_Tooltips=\u30D2\u30F3\u30C8 FR-Designer_Remove=\u524A\u9664 FR-Designer_Custom_Icon_SelectIcon=\u30A2\u30A4\u30B3\u30F3\u3092\u9078\u629E -FR-Designer_Click_this_button=\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30D1\u30B9\u9078\u629E\u3059\u308B -FR-Designer_Custom_Icon_Message3=\u30A2\u30A4\u30B3\u30F3\u540D\u306F\u65E2\u306B\u4F7F\u308F\u308C\u3066\u3044\u307E\u3059\u3002 -FR-Designer_Set_default_browser=\u65E2\u5B9A\u30D6\u30E9\u30A6\u30B6\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30A4\u30F3\u30BF\u30FC\u30CD\u30C3\u30C8\u30AA\u30D7\u30B7\u30E7\u30F3\u304B\u3089\u65E2\u5B9A\u30D6\u30E9\u30A6\u30B6\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +FR-Designer_Click_this_button=\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30EB\u30FC\u30C8\u9078\u629E\u3092\u884C\u3046 +FR-Designer_Custom_Icon_Message3=\u30A2\u30A4\u30B3\u30F3\u540D\u79F0\u306F\u3059\u3067\u306B\u4F7F\u308F\u308C\u3066\u3044\u307E\u3059\u3002 +FR-Designer_Set_default_browser=\u30C7\u30D5\u30A9\u30EB\u30C8\u30D6\u30E9\u30A6\u30B6\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002Intenet\u30AA\u30D7\u30B7\u30E7\u30F3\u4E2D\u304B\u3089\u30B7\u30B9\u30C6\u30E0\u30C7\u30D5\u30A9\u30EB\u30C8\u30D6\u30E9\u30A6\u30B6\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002 FR-Designer_Open=\u958B\u304F -FR-Designer_Utils-OpenDemoEnv=\u88FD\u54C1\u30C7\u30E2\u304C\u5229\u7528\u3067\u304D\u306A\u3044\u5834\u5408\u3001\u81EA\u52D5\u3067\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u5207\u308A\u66FF\u3048\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -FR-Designer_Utils-switch=\n\u4FDD\u5B58\u3055\u308C\u3066\u3044\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u306F\u73FE\u5728\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u4FDD\u5B58\u3055\u308C\u307E\u3059\u3002\n\u7D9A\u3051\u307E\u3059\u304B? -FR-Designer_Utils-NewDemoEnv=\u88FD\u54C1\u30C7\u30E2\u304C\u5229\u7528\u3067\u304D\u306A\u3044\u5834\u5408\u3001\u81EA\u52D5\u3067\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u65B0\u898F\u4F5C\u6210\u3057\u307E\u3059\: -FR-Designer_Save_As_Global_Style=\u30B0\u30ED\u30FC\u30D0\u30EB\u30B9\u30BF\u30A4\u30EB\u3068\u3057\u3066\u4FDD\u5B58 -FR-Designer_Input_The_Name_Of_Gloabel_Style=\u4FDD\u5B58\u3057\u3066\u3044\u308B\u30B0\u30ED\u30FC\u30D0\u30EB\u30B9\u30BF\u30A4\u30EB\u540D\u3092\u5165\u529B -FR-Designer_This_Name_Has_Exsit=\u3053\u306E\u540D\u524D\u306F\u65E2\u306B\u3042\u308A\u307E\u3059 +FR-Designer_Utils-OpenDemoEnv=\u88FD\u54C1\u30C7\u30E2\u3001\u81EA\u52D5\u3067\u4F5C\u696D\u76EE\u6B21\u306B\u5207\u308A\u66FF\u3048\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +FR-Designer_Utils-switch=\n\u73FE\u5728\u306E\u4FDD\u5B58\u3055\u308C\u3066\u3044\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u306F\u73FE\u5728\u306E\u76EE\u6B21\u306B\u4FDD\u5B58\u3055\u308C\u307E\u3059\u3002\n\u7D9A\u884C\u3057\u307E\u3059\u304B\uFF1F +FR-Designer_Utils-NewDemoEnv=\u88FD\u54C1\u30C7\u30E2\u3001\u81EA\u52D5\u3067\u4F5C\u696D\u76EE\u6B21\u3092\u65B0\u898F\u4F5C\u6210\u3057\u307E\u3059\uFF1A +FR-Designer_Save_As_Global_Style=\u5168\u5C40\u66F8\u5F0F\u3068\u3057\u3066\u4FDD\u5B58 +FR-Designer_Input_The_Name_Of_Gloabel_Style=\u4FDD\u5B58\u3057\u3066\u3044\u308B\u5168\u5C40\u66F8\u5F0F\u306E\u540D\u79F0\u3092\u5165\u529B +FR-Designer_This_Name_Has_Exsit=\u3053\u306E\u540D\u524D\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059 FR-Designer_Shortcut_Set=\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC\u8A2D\u5B9A -FR-Designer_Feature_Name=\u6A5F\u80FD\u540D\: -FR-Designer_Cursor_to_next_column=\u30AB\u30FC\u30BD\u30EB\u3092\u6B21\u306E\u5217\u3078\u79FB\u52D5 -FR-Designer_Cursor_to_next_row=\u30AB\u30FC\u30BD\u30EB\u3092\u6B21\u306E\u884C\u3078\u79FB\u52D5 -FR-Designer_Current_keys=\u73FE\u5728\u306E\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC\: -FR-Designer_Exchange_key=\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC\u3092\u5207\u308A\u66FF\u3048 -FR-Designer_System_default=\u30B7\u30B9\u30C6\u30E0\u65E2\u5B9A -FR-Designer_Cursor_to_previous_column=\u30AB\u30FC\u30BD\u30EB\u3092\u524D\u306E\u5217\u3078\u79FB\u52D5\: -FR-Designer_Cursor_to_previous_row=\u30AB\u30FC\u30BD\u30EB\u3092\u524D\u306E\u884C\u3078\u79FB\u52D5\: -FR-Designer_Are_You_Sure_To_Delete_The_Data=\u9078\u629E\u3057\u305F\u30C7\u30FC\u30BF\u3092\u524A\u9664\u3057\u307E\u3059\u304B? +FR-Designer_Feature_Name=\u6A5F\u80FD\u540D\u79F0\uFF1A +FR-Designer_Cursor_to_next_column=\u30AB\u30FC\u30BD\u30EB\u3092\u6B21\u306E\u4E00\u5217\u3078\u79FB\u52D5 +FR-Designer_Cursor_to_next_row=\u30AB\u30FC\u30BD\u30EB\u3092\u6B21\u306E\u4E00\u884C\u3078\u79FB\u52D5 +FR-Designer_Current_keys=\u73FE\u5728\u306E\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC\uFF1A +FR-Designer_Exchange_key=\u30AF\u30EA\u30C3\u30AF\u4E92\u63DB\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC +FR-Designer_System_default=\u30B7\u30B9\u30C6\u30E0\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u3059\u308B +FR-Designer_Cursor_to_previous_column=\u30AB\u30FC\u30BD\u30EB\u3092\u524D\u306E\u4E00\u5217\u3078\u79FB\u52D5\uFF1A +FR-Designer_Cursor_to_previous_row=\u30AB\u30FC\u30BD\u30EB\u3092\u524D\u306E\u4E00\u884C\u3078\u79FB\u52D5\uFF1A +FR-Designer_Are_You_Sure_To_Delete_The_Data=\u9078\u629E\u3055\u308C\u305F\u30C7\u30FC\u30BF\u3092\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F FR-Designer_Show_Icon=\u30DC\u30BF\u30F3\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A -FR-Designer_Show_Text=\u30DC\u30BF\u30F3\u540D\u8868\u793A -FR-Designer_User_Defined_Event=\u30AB\u30B9\u30BF\u30E0\u30A4\u30D9\u30F3\u30C8 -FR-Designer_Output_PDF=PDF\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 -FR-Designer_Output_Word=Word\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 -FR-Designer_Image=\u753B\u50CF -FR-Designer_Flash_Print=Flash\u5370\u5237 -FR-Designer_PDF_Print=PDF\u5370\u5237 -FR-Designer_Applet_Print=Applet\u5370\u5237 -FR-Designer_Server_Print=\u30B5\u30FC\u30D0\u5074\u5370\u5237 +FR-Designer_Show_Text=\u30DC\u30BF\u30F3\u540D\u524D\u3092\u8868\u793A +FR-Designer_User_Defined_Event=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u4E8B\u4EF6 +FR-Designer_Output_PDF=PDF\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8 +FR-Designer_Output_Word=Word\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8 +FR-Designer_Image=\u30A4\u30E1\u30FC\u30B8 +FR-Designer_Flash_Print=Flash\u30D7\u30EA\u30F3\u30C8 +FR-Designer_PDF_Print=PDF\u30D7\u30EA\u30F3\u30C8 +FR-Designer_Applet_Print=\u30A2\u30D7\u30EC\u30C3\u30C8\u5370\u5237 +FR-Designer_Server_Print=\u30B5\u30FC\u30D0\u30FC\u7AEF\u672B\u30D7\u30EA\u30F3\u30C8 FR-Designer_Use_ToolBar=\u30C4\u30FC\u30EB\u30D0\u30FC\u4F7F\u7528 FR-Designer_Report_Show_Location=\u5E33\u7968\u8868\u793A\u4F4D\u7F6E FR-Designer_Is_Paint_Page=\u753B\u50CF\u3067\u8868\u793A -FR-Designer_IS_Auto_Scale=iframe\u57CB\u3081\u8FBC\u307F\u6642\u81EA\u52D5\u30BA\u30FC\u30E0 -FR-Designer_IS_TD_HEAVY_EXPORT=\u30D8\u30D3\u30FC\u30E2\u30FC\u30C9\u3067\u30BB\u30EB\u3092\u51FA\u529B +FR-Designer_IS_Auto_Scale=iframeiframe\u306F\u3081\u8FBC\u307F\u6642\u81EA\u52D5\u30BA\u30FC\u30E0 +FR-Designer_IS_TD_HEAVY_EXPORT=\u91CD\u65B9\u6CD5\u683C\u5B50\u3092\u51FA\u529B FR-Designer_Top=\u4E0A FR-Designer_Bottom=\u4E0B -FR-Designer-Collect_OSXTips=\u30D2\u30F3\u30C8\:"CTRL + V"\u3067\u3001\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u30B3\u30FC\u30C9\u3092\u8CBC\u308A\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u3002 +FR-Designer-Collect_OSXTips=\u30D2\u30F3\u30C8\uFF1A\u30D7\u30EC\u30B9 control + v \u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u30B3\u30FC\u30C9\u3092\u8CBC\u308A\u4ED8\u3051 FR-Designer_X_Coordinate=\u6A2A\u5EA7\u6A19 FR-Designer_Y_Coordinate=\u7E26\u5EA7\u6A19 -FR-Designer_Widget_Width=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5E45 -FR-Designer_Widget_Height=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u9AD8\u3055 +FR-Designer_Widget_Width=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u5E45 +FR-Designer_Widget_Height=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u9AD8\u3055 FR-Designer_Min_Height=\u6700\u5C0F\u9AD8\u3055 FR-Designer_LeftParent=\u5DE6\u89AA\u30BB\u30EB -FR-Designer-PluginLicense_Check_Failed=\u30D7\u30E9\u30B0\u30A4\u30F3\u8A8D\u8A3C\u30D5\u30A1\u30A4\u30EB\u306E\u671F\u9650\u304C\u5207\u308C\u3066\u3044\u307E\u3059\u3001\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Designer-PluginLicense_Check_Failed=\u3042\u306A\u305F\u306E\u30D7\u30E9\u30B0\u8A8D\u8A3C\u30D5\u30A1\u30A4\u30EB\u306E\u671F\u9650\u304C\u5207\u308C\u3066\u3044\u308B\u3001\u3057\u3066\u304F\u3060\u3055\u3044\u3001\u518D\u6D3B\u6027\u5316 FR-Designer-File_address=\u30D5\u30A1\u30A4\u30EB\u30A2\u30C9\u30EC\u30B9 FR-Designer-Local_file=\u30ED\u30FC\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB FR-Designer_Selection=\u9078\u629E -FR-Designer-Type_Parameter= ${abc}\u3092\u5165\u529B\u3057\u3066\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u3067\u304D\u307E\u3059\u3002
 \u3053\u3053\u3067abc\u306F\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u3067\u3059\u3002\u4F8B\u3048\u3070\:
-FR-Designer_Add_JS_warning=\u4F8B\u306B\u793A\u3059\u3088\u3046\u306A\u6B63\u3057\u3044URL\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044! -FR-Designer-Encoding_Type=\u30A8\u30F3\u30B3\u30FC\u30C9\u30BF\u30A4\u30D7 -FR-Designer-FirstRow_IS_ColumnName=\u7B2C1\u884C\u306F\u5217\u30BF\u30A4\u30C8\u30EB\u3092\u542B\u307F\u307E\u3059 -FR-Designer_Dismenber=\u533A\u5207\u308A\u6587\u5B57 +FR-Designer-Type_Parameter= ${abc}\u3092\u5165\u529B\u3057\u3066\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002
 \u3053\u3053\u3067abc\u3068\u306F\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u7684\u540D\u79F0\u3067\u3059\u3002\u4F8B\u3048\u3070\uFF1A
+FR-Designer_Add_JS_warning=\u4F8B\u306B\u793A\u3059\u3088\u3046\u306A\u6B63\u3057\u3044URL\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\uFF01 +FR-Designer-Encoding_Type=\u30B3\u30FC\u30C9\u30BF\u30A4\u30D7 +FR-Designer-FirstRow_IS_ColumnName=\u7B2C\u4E00\u884C\u306F\u5217\u30BF\u30A4\u30C8\u30EB\u3092\u542B\u307F\u307E\u3059 +FR-Designer_Dismenber=\u533A\u5207\u308A\u7B26 FR-Designer_TableDismember=\u30BF\u30D6\u6587\u5B57 FR-Designer_Space=\u30B9\u30DA\u30FC\u30B9 -FR-Designer_CommaDismenber=\u30AB\u30F3\u30DE +FR-Designer_CommaDismenber=\u30B3\u30F3\u30DE FR-Designer_Other=\u305D\u306E\u4ED6 -FR-Designer-Series_Dismenber_As_Single=\u9023\u7D9A\u3057\u305F\u6587\u5B57\u306F1\u6587\u5B57\u3068\u3057\u3066\u6271\u3046 -FR-Designer_KeyPoint=\u30AD\u30FC\u30CE\u30FC\u30C9 -FR-Designer_loadedTreeModel=\u30ED\u30FC\u30C9\u5931\u6557\u3001\u78BA\u8A8D\u5F8C\u306B\u518D\u5EA6\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002 -FR-Designer-Failed_to_load_the_plugin=\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u30ED\u30FC\u30C9\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3001\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u66F4\u65B0\u3057\u3066\u304F\u3060\u3055\u3044\: +FR-Designer-Series_Dismenber_As_Single=\u9023\u7D9A\u3059\u308B\u533A\u5207\u308A\u8A18\u53F7\u306F\u5358\u72EC\u51E6\u7406\u3068\u307F\u306A\u3055\u308C\u308B +FR-Designer_KeyPoint=\u30AD\u30FC\u306E\u30CE\u30FC\u30C9 +FR-Designer_loadedTreeModel=\u30ED\u30FC\u30C9\u304C\u5931\u6557\u3057\u3001\u78BA\u8A8D\u5F8C\u3001\u518D\u8A66\u884C +FR-Designer-Failed_to_load_the_plugin=\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u30ED\u30FC\u30C9\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3001\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u66F4\u65B0\u3057\u3066\u304F\u3060\u3055\u3044\uFF1A FR-Designer_XMLA_Database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 -FR-Designer_XMLA_UserName=\u30E6\u30FC\u30B6\u30FC\u540D +FR-Designer_XMLA_UserName=\u30E6\u30FC\u30B6\u540D FR-Designer_XMLA_Password=\u30D1\u30B9\u30EF\u30FC\u30C9 -FR-Designer_XMLA_Get_Catalog=\u30AB\u30BF\u30ED\u30B0\u3092\u30ED\u30FC\u30C9\u3057\u3066\u3044\u307E\u3059 -FR-Designer_XMLA_Not_NULL=\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +FR-Designer_XMLA_Get_Catalog=\u30AB\u30BF\u30ED\u30B0\u3092\u691C\u7D22\u3059\u308B +FR-Designer_XMLA_Not_NULL=\u3053\u3053\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 FR-Designer_Column-Axis=\u5217\u8EF8 FR-Designer_LiteCondition_Common=\u4E00\u822C -FR-Designer_LiteCondition_Formula=\u6570\u5F0F -FR-Designer_LiteCondition_ConditionB-AND=\u304B\u3064(AND) -FR-Designer_LiteCondition_ConditionB-OR=\u307E\u305F\u306F(OR) -FR-Designer_LiteCondition_Common_Condition=\u4E00\u822C\u6761\u4EF6 -FR-Designer_LiteCondition_Formula_Condition=\u6570\u5F0F\u6761\u4EF6 +FR-Designer_LiteCondition_Formula=\u516C\u5F0F +FR-Designer_LiteCondition_ConditionB-AND=\u30A2\u30F3\u30C9(AND) +FR-Designer_LiteCondition_ConditionB-OR=\u30AA\u30A2(OR) +FR-Designer_LiteCondition_Common_Condition=\u666E\u901A\u6761\u4EF6 +FR-Designer_LiteCondition_Formula_Condition=\u516C\u5F0F\u6761\u4EF6 FR-Designer_LiteCondition_Define=\u5B9A\u7FA9 -FR-Designer_Select_All=\u3059\u3079\u3066\u9078\u629E +FR-Designer_Select_All=\u5168\u9078\u629E FR-Designer-Plugin_Expire_Dialog_Title=\u671F\u9650\u5207\u308C\u306E\u30D7\u30E9\u30B0\u30A4\u30F3 -FR-Designer-Plugin_Expire_Dialog_Text=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u671F\u9650\u5207\u308C\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3001\u30D5\u30A1\u30F3\u30E9\u30F3\u30A2\u30D7\u30EA\u30BB\u30F3\u30BF\u30FC\u3067\u8CFC\u5165\u3057\u3066\u304F\u3060\u3055\u3044\u3002 -FR-Designer-Plugin_Finerest_Addon=\u30D5\u30A1\u30F3\u30E9\u30F3\u30A2\u30D7\u30EA\u30BB\u30F3\u30BF\u30FC +FR-Designer-Plugin_Expire_Dialog_Text=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u3001\u8CFC\u5165\u3092\u3059\u308B\u305F\u3081\u306B\u5E06\u30BD\u30D5\u30C8\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30BB\u30F3\u30BF\u30FC\u3092\u884C\u304F\u3001\u6709\u52B9\u671F\u9650\u304C\u5207\u308C\u3066\u3044\u307E\u3059\u3002 +FR-Designer-Plugin_Finerest_Addon=\u5E06\u8EDF\u5FDC\u7528\u30BB\u30F3\u30BF\u30FC FR-Designer_Performance_First=\u6027\u80FD\u512A\u5148 FR-Designer_Total_N_Grade=\u5168\u90E8\u3067\:${N}\u5C64 FR-Designer_time(s)=\u56DE -FR-Designer_General=\u4E00\u822C -FR-Designer_Advanced=\u8A73\u7D30 +FR-Designer_General=\u5E38\u7528 +FR-Designer_Advanced=\u9AD8\u7D1A FR-Designer_Oracle=\u3059\u3079\u3066\u306E\u30C6\u30FC\u30D6\u30EB FR-Designer_Product_improve=\u88FD\u54C1\u6539\u5584 -FR-Designer_Join_Product_improve=\u88FD\u54C1\u6539\u5584\u30D7\u30E9\u30F3\u306B\u53C2\u52A0 +FR-Designer_Join_Product_improve=\u88FD\u54C1\u6539\u5584\u30D7\u30E9\u30F3\u306B\u52A0\u3048\u308B FR-Designer_Preference-Function=\u30D5\u30A1\u30F3\u30AF\u30B7\u30E7\u30F3\u8A2D\u5B9A -FR-Designer_max_undo_limit=\u5143\u306B\u623B\u3059\u306E\u6700\u5927\u56DE\u6570 -FR-Designer_Surport_String_To_Formula=\u6570\u5F0F\u3067\u306E\u6587\u5B57\u5217\u7DE8\u96C6\u3092\u30B5\u30DD\u30FC\u30C8 -FR-Designer_Always=\u65E2\u5B9A\u64CD\u4F5C -FR-Designer_Export_Setting=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u8A2D\u5B9A -FR-Designer_Select_Export_Log_Directory=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u30D5\u30A9\u30EB\u30C0\u30FC\u3092\u9078\u629E +FR-Designer_max_undo_limit=\u6700\u5927\u53D6\u308A\u6D88\u3057\u56DE\u6570 +FR-Designer_Surport_String_To_Formula=\u30AD\u30E3\u30E9\u30AF\u30BF\u30FC\u6587\u5B57\u5217\u7DE8\u96C6\u3092\u516C\u5F0F\u3068\u3059\u308B\u3053\u3068\u306B\u30B5\u30DD\u30FC\u30C8 +FR-Designer_Always=\u30C7\u30D5\u30A9\u30EB\u30C8\u64CD\u4F5C\u5B9F\u884C +FR-Designer_Export_Setting=\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8\u914D\u7F6E +FR-Designer_Select_Export_Log_Directory=\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8\u76EE\u6B21\u3092\u9078\u629E FR-Designer_Level_Setting=\u30EC\u30D9\u30EB\u5225\u8A2D\u5B9A FR-Designer_Choose_Language=\u8A00\u8A9E\u9078\u629E FR-Designer_Work_After_Restart_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u518D\u8D77\u52D5\u5F8C\u6709\u52B9 FR-Designer_Setting-Ruler-Units=\u30EB\u30FC\u30E9\u30FC\u5358\u4F4D\u8A2D\u5B9A -FR-Designer_PageSetup-mm=\u30DF\u30EA -FR-Designer_Unit_CM=\u30BB\u30F3\u30C1 +FR-Designer_PageSetup-mm=\u30DF\u30EA\u30E1\u30FC\u30C8\u30EB +FR-Designer_Unit_CM=\u30BB\u30F3\u30C1\u30E1\u30FC\u30C8\u30EB FR-Designer_Page-Setup-Scale-Units=\u30DA\u30FC\u30B8\u8A2D\u5B9A\u30EB\u30FC\u30E9\u30FC\u5358\u4F4D FR-Designer_Report-Design-Ruler-Units=\u5E33\u7968\u30C7\u30B6\u30A4\u30F3\u30EB\u30FC\u30E9\u30FC\u5358\u4F4D FR-Designer_Web_Preview_Port_Setting=\u30DD\u30FC\u30C8\u8A2D\u5B9A FR-Designer_Designer_Language=\u30C7\u30B6\u30A4\u30CA\u30FC\u8A00\u8A9E FR-Designer_Unit_INCH=\u30A4\u30F3\u30C1 -FR-Designer_Web_Preview_Port=\u30DD\u30FC\u30C8 +FR-Designer_Web_Preview_Port=\u30DD\u30FC\u30C8\u756A\u53F7 FR-Designer_Oracle_All_Tables=\u3059\u3079\u3066\u306E\u30C6\u30FC\u30D6\u30EB FR-Designer_Unit_PT=\u30DD\u30F3\u30C9 -FR-Designer-Write_Auto_Stash=\u81EA\u52D5\u4E00\u6642\u4FDD\u5B58 -FR-Designer_Event_ShowWidgets=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u76F4\u63A5\u8868\u793A +FR-Designer-Write_Auto_Stash=\u30AA\u30FC\u30C8\u30B9\u30AF\u30E9\u30C3\u30C1 +FR-Designer_Event_ShowWidgets=\u76F4\u63A5\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u8868\u793A FR-Designer_Current_Preview_Rows=\u73FE\u5728\u306E\u30D7\u30EC\u30D3\u30E5\u30FC\u884C\u6570 FR-Designer_Data=\u30C7\u30FC\u30BF FR-Designer_Error=\u30A8\u30E9\u30FC FR-Designer-Website_Url=http\://www.finereport.com/jp FR-Designer_formDesignerModule=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30C7\u30B6\u30A4\u30CA\u30FC FR-Designer-BBSLogin_Login-Title=BBS\u30ED\u30B0\u30A4\u30F3 -FR-Designer_Get-CubeGetting=cube\u3092\u53D6\u5F97 -FR-Designer-BBSLogin_Download-Unlogin-Tip=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u524D\u306B\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u304F\u3060\u3055\u3044\u3002 -FR-Designer-App_ReLayout=\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u30EC\u30A4\u30A2\u30A6\u30C8 +FR-Designer_Get-CubeGetting=cube\u53D6\u5F97 +FR-Designer-BBSLogin_Download-Unlogin-Tip=\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9 +FR-Designer-App_ReLayout=\u96FB\u8A71\u518D\u30EC\u30A4\u30A2\u30A6\u30C8 FR-Designer_Mobile-Attr=\u30E2\u30D0\u30A4\u30EB\u7AEF\u672B\u5C5E\u6027 FR-Designer_Mobile-Vertical=\u7E26 FR-Designer_Mobile-Horizontal=\u6A2A FR-Designer_Mobile-Zoom=\u5E33\u7968\u30BA\u30FC\u30E0 FR-Designer_Mobile-Open=\u958B\u304F FR-Designer_COMMUNITY=\u30B3\u30DF\u30E5\u30CB\u30C6\u30A3 -FR-Designer_COMMUNITY_BBS=\u30D5\u30A1\u30F3\u30E9\u30F3BBS +FR-Designer_COMMUNITY_BBS=\u5E06\u8EDF\u30D5\u30A9\u30FC\u30E9\u30E0 FR-Designer_COMMUNITY_VIDEO=\u30D3\u30C7\u30AA FR-Designer_COMMUNITY_HELP=\u30D8\u30EB\u30D7\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8 -FR-Designer_COMMUNITY_UPDATE=\u88FD\u54C1\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 -FR-Designer_COMMUNITY_NEED=\u30CB\u30FC\u30BA\u306E\u63D0\u51FA +FR-Designer_COMMUNITY_UPDATE=\u88FD\u54C1\u66F4\u65B0 +FR-Designer_COMMUNITY_NEED=\u9700\u8981\u306E\u63D0\u51FA FR-Designer_COMMUNITY_BUG=Bug\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF -FR-Designer_COMMUNITY_SIGN=\u30D5\u30A1\u30F3\u30E9\u30F3\u8A8D\u8A3C -FR-Designer_COMMUNITY_QUESTIONS=\u304A\u554F\u3044\u5408\u308F\u305B -FR-Designer_Write-Save-Formula=\u6570\u5F0F\u4FDD\u6301(\u66F8\u304D\u8FBC\u307F/\u30C7\u30FC\u30BF\u5206\u6790) -FR-Designer_Export-Save-Formula=\u6570\u5F0F\u4FDD\u6301(\u7DE8\u96C6/\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8) -FR-Designer_Attention=\u6CE8\u610F -FR-Designer_Forbid_Widgets_Intersects=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u91CD\u306A\u308A\u7981\u6B62 -FR-Designer_Widget_Scaling_Mode_Fit=\u30B5\u30A4\u30BA\u8ABF\u6574 -FR-Designer_Widget_Scaling_Mode_Fixed=\u30B5\u30A4\u30BA\u56FA\u5B9A -FR-Designer-Widget_Area_Scaling=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u30A8\u30EA\u30A2\u30BA\u30FC\u30E0 -FR-Designer-QQLogin-Determine=\u78BA\u5B9A +FR-Designer_COMMUNITY_SIGN=\u5E06\u8EDF\u8A8D\u8A3C +FR-Designer_COMMUNITY_QUESTIONS=\u554F\u984C\u306E\u554F\u3044\u5408\u308F\u305B +FR-Designer_Write-Save-Formula=\u8A18\u5165\u8A08\u7B97\u306B\u6570\u5F0F\u4FDD\u6301 +FR-Designer_Export-Save-Formula=\u7DE8\u96C6\u6642\u3001\u6570\u5F0F\u4FDD\u6301 +FR-Designer_Attention=\u6CE8\u610F\u3057\u307E\u3059 +FR-Designer_Forbid_Widgets_Intersects=\u7981\u6B62\u90E8\u54C1\u3092\u91CD\u306D\u3066 +FR-Designer_Widget_Scaling_Mode_Fit=\u9069\u5FDC\u533A\u57DF +FR-Designer_Widget_Scaling_Mode_Fixed=\u56FA\u5B9A\u30B5\u30A4\u30BA +FR-Designer-Widget_Area_Scaling=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u30A8\u30EA\u30A2\ +FR-Designer-QQLogin-Determine=\u6C7A\u5B9A\u3057\u307E\u3059 FR-Designer-QQLogin-Cancel=\u30AD\u30E3\u30F3\u30BB\u30EB -FR-Designer-Reuse_Manager=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u7BA1\u7406 -FR-Designer_Layout_Block_Absolute=\u7D76\u5BFE\u30AD\u30E3\u30F3\u30D0\u30B9\u30D6\u30ED\u30C3\u30AF +FR-Designer-Reuse_Manager=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8 +FR-Designer_Layout_Block_Absolute=\u7D76\u5BFE\u30EC\u30A4\u30A2\u30A6\u30C8\u30D6\u30ED\u30C3\u30AF FR-Designer_Layout_Block_Tab=Tab\u30D6\u30ED\u30C3\u30AF FR-Designer_Layout_Block_Blank=\u7A7A\u767D\u30D6\u30ED\u30C3\u30AF FR-Designer_Attr_Layout=\u30EC\u30A4\u30A2\u30A6\u30C8 -FR-Designer_Attr_Layout_Type=\u30EC\u30A4\u30A2\u30A6\u30C8\u65B9\u6CD5 -FR-Designer_Attr_Bidirectional_Adaptive=\u4E21\u65B9\u5411\u81EA\u52D5\u8ABF\u6574 +FR-Designer_Attr_Layout_Type=\u30EC\u30A4\u30A2\u30A6\u30C8\u65B9\u5F0F +FR-Designer_Attr_Bidirectional_Adaptive=\u53CC\u65B9\u5411\u81EA\u5DF1\u8ABF\u6574 FR-Designer_Download_Template=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9 -FR-Designer-Widget_Scaling_Mode=\u30BA\u30FC\u30E0\u30ED\u30B8\u30C3\u30AF +FR-Designer-Widget_Scaling_Mode=\u30B9\u30B1\u30FC\u30EA\u30F3\u30B0\u8AD6\u7406 FR-Designer_Mobile-Refresh=\u66F4\u65B0 FR-Designer_Mobile-ToolBar=\u30C4\u30FC\u30EB\u30D0\u30FC -FR-Designer_WLayout-Absolute-ToolTips=\u81EA\u7531\u5F0F\u8A2D\u5B9A\u3067\u3059\u3002\u4EFB\u610F\u306E\u4F4D\u7F6E\u306B\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u8FFD\u52A0\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002 +FR-Designer_WLayout-Absolute-ToolTips=\u81EA\u7531\u5F0F\u914D\u7F6E\u3067\u3059\u3002\u914D\u7F6E\u5185\u306E\u4EFB\u610F\u306E\u4F4D\u7F6E\u306B\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u8FFD\u52A0\u3059\u308B\u3053\u3068 FR-Designer_Add_all=\u3059\u3079\u3066\u8FFD\u52A0 FR-Designer_Language_Change_Successful=\u65B0\u3057\u3044\u8A00\u8A9E\u306F\u518D\u8D77\u52D5\u5F8C\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002 -FR-Designer_Template_Web_Attributes=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8Web\u5C5E\u6027 +FR-Designer_Template_Web_Attributes=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30A6\u30A7\u30D6\u30D7\u30ED\u30D1\u30C6\u30A3 FR-Designer_Basic=\u57FA\u672C -FR-Designer_Printers(Server)=\u30D7\u30EA\u30F3\u30BF(\u30B5\u30FC\u30D0) +FR-Designer_Printers(Server)=\u30D7\u30EA\u30F3\u30BF\u30FC(\u30B5\u30FC\u30D0) FR-Designer_Pagination_Setting=\u30DA\u30FC\u30B8\u5225\u30D7\u30EC\u30D3\u30E5\u30FC\u8A2D\u5B9A FR-Designer_Write_Setting=\u66F8\u304D\u8FBC\u307F\u30DA\u30FC\u30B8\u8A2D\u5B9A FR-Designer_Data_Analysis_Settings=\u30C7\u30FC\u30BF\u5206\u6790\u8A2D\u5B9A FR-Designer_Browser_Background=\u30D6\u30E9\u30A6\u30B6\u80CC\u666F -FR-Designer_Import_Css=Css\u53C2\u7167 -FR-Designer_Import_JavaScript=JavaScript\u53C2\u7167 -FR-Designer-Datasource-Param_DES=  "${abc}"\u3092\u5165\u529B\u3057\u3066\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u3067\u304D\u307E\u3059\u3002\u3053\u3053\u3067abc\u306F\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u3067\u3059\u3002\u4F8B\u3048\u3070
 select * from table where id\=${abc}\u3002
 select * from table where id\='${abc}'\u3002(\u3082\u3057id\u306F\u6587\u5B57\u5217\u306A\u3089)\uFFFD -FR-Designer-DS-Database_Query=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30AF\u30A8\u30EA -FR-Designer-LayerPageReport_PageQuery=\u30DA\u30FC\u30B8\u5225\u30AF\u30A8\u30EA -FR-Designer-LayerPageReport_Define_PageQuerySQL=\u5B9A\u7FA9\u30DA\u30FC\u30B8\u5225\u30AF\u30A8\u30EASQL -FR-Designer_Is_Share_DBTableData=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u5171\u6709 +FR-Designer_Import_Css=Css\u5F15\u7528 +FR-Designer_Import_JavaScript=JavaScript\u5F15\u7528 +FR-Designer-Datasource-Param_DES=  "${abc}"\u3092\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3068\u3057\u3066\u5165\u529B\u3067\u304D\u307E\u3059\u3002\u3053\u3053\u3067abc\u306F\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3002abc\u306F\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u306E\u540D\u524D\u3067\u3059\u3002\u4F8B\u3048\u3070
 select * from table where id\=${abc}\u3002
 select * from table where id\='${abc}'\u3002(\u3082\u3057id\u306F\u6587\u5B57\u5217\u306A\u3089)\uFFFD +FR-Designer-DS-Database_Query=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30AF\u30A8\u30EA\u30FC +FR-Designer-LayerPageReport_PageQuery=\u6539\u30DA\u30FC\u30B8\u691C\u7D22 +FR-Designer-LayerPageReport_Define_PageQuerySQL=\u6539\u30DA\u30FC\u30B8\u691C\u7D22sql\u3092\u66F8\u304F +FR-Designer_Is_Share_DBTableData=\u5171\u6709\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 FR-Designer_Event=\u30A4\u30D9\u30F3\u30C8 -FR-Designer_Properties=\u5C5E\u6027 +FR-Designer_Properties=\u30D7\u30ED\u30D1\u30C6\u30A3 FR-Designer_Permissions_Edition=\u6A29\u9650\u7DE8\u96C6 -FR-Designer_Export_Excel_Page=\u30DA\u30FC\u30B8\u5225\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 -FR-Designer_Export_Excel_Simple=\u6A19\u6E96\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 -FR-Designer_Export_Excel_PageToSheet=1\u30DA\u30FC\u30B81\u30B7\u30FC\u30C8\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 -FR-Designer_Export_failed=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u306B\u5931\u6557\u3057\u307E\u3057\u305F -FR-Designer_Exported_successfully=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u6210\u529F -FR-Designer_Exporting=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u3059 -FR-Designer_Export-PDF=PDF\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 -FR-Designer_Button_OK=OK +FR-Designer_Export_Excel_Page=\u6539\u30DA\u30FC\u30B8\u51FA\u529B +FR-Designer_Export_Excel_Simple=\u305D\u306E\u307E\u307E\u51FA\u529B +FR-Designer_Export_Excel_PageToSheet=\u6539\u30DA\u30FC\u30B8\uFF06\u30B7\u30FC\u30C8\u5206\u3051 +FR-Designer_Export_failed=\u5C0E\u51FA\u306B\u5931\u6557\u3057\u307E\u3057\u305F +FR-Designer_Exported_successfully=\u5C0E\u51FA\u6210\u529F +FR-Designer_Exporting=\u5C0E\u51FA\u3057\u3066\u3044\u307E\u3059 +FR-Designer_Export-PDF=PDF\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +FR-Designer_Button_OK=\u78BA\u5B9A FR-Designer_Button_Cancel=\u30AD\u30E3\u30F3\u30BB\u30EB FR-Designer_JavaScript=JavaScript FR-Designer_JavaScript_Form_Submit=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u66F8\u304D\u8FBC\u307F @@ -484,297 +485,297 @@ FR-Designer_Event_Name=\u30A4\u30D9\u30F3\u30C8\u540D FR-Designer_Event_Type=\u30A4\u30D9\u30F3\u30C8\u30BF\u30A4\u30D7 FR-Designer_Event_Name_Type=\u30A4\u30D9\u30F3\u30C8\u540D\u3068\u30BF\u30A4\u30D7 FR-Designer_JavaScript_Set=JS\u8A2D\u5B9A -FR-Designer_Attribute=\u5C5E\u6027 +FR-Designer_Attribute=\u30D7\u30ED\u30D1\u30C6\u30A3 FR-Designer_Form_Editing_Listeners=\u30A4\u30D9\u30F3\u30C8\u7DE8\u96C6 -FR-Designer_Form_Basic_Properties=\u57FA\u672C\u5C5E\u6027 +FR-Designer_Form_Basic_Properties=\u57FA\u672C\u30D7\u30ED\u30D1\u30C6\u30A3 FR-Designer_DS_Dictionary=\u30C7\u30FC\u30BF\u8F9E\u66F8 FR-Designer_Create_Tree=\u30C4\u30EA\u30FC\u69CB\u7BC9 FR-Designer_Set_Callback_Function=\u30B3\u30FC\u30EB\u30D0\u30C3\u30AF\u95A2\u6570\u8A2D\u5B9A -FR-Designer_ConfirmDialog_Content=\u30BF\u30D6\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u524A\u9664\u3057\u307E\u3059\u304B +FR-Designer_ConfirmDialog_Content=tab\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u524A\u9664\u3057\u307E\u3059\u304B FR-Designer_ConfirmDialog_Title=FineReport 8.0 -FR-Designer_FormulaPane_Tips=\u30D2\u30F3\u30C8\:B1\u3092\u5165\u529B\u3059\u308B\u3068\u3001\u30BB\u30EBB1\u306E\u30C7\u30FC\u30BF\u3092\u53C2\u7167\u3067\u304D\u307E\u3059\u3002 +FR-Designer_FormulaPane_Tips=\u30D2\u30F3\u30C8\:B1\u3092\u5165\u529B FR-Designer_FormulaPane_Variables=\u5909\u6570 -FR-Designer_FormulaPane_Formula_Description=\u6570\u5F0F\u8AAC\u660E -FR-Designer_FormulaPane_Function_Detail=\u95A2\u6570\u8A73\u7D30 +FR-Designer_FormulaPane_Formula_Description=\u516C\u5F0F\u8AAC\u660E +FR-Designer_FormulaPane_Function_Detail=\u95A2\u6570\u660E\u7D30 FR-Designer_FormulaPane_Search=\u691C\u7D22 FR-Designer_Tab_carousel=tab\u30AB\u30EB\u30FC\u30BB\u30EB FR-Designer_setCarousel=\u30AB\u30EB\u30FC\u30BB\u30EB\u30AA\u30F3 FR-Designer_carouselInterval=\u30AB\u30EB\u30FC\u30BB\u30EB\u9593\u9694 -FR-Designer_ClassName_panel=\u30AF\u30E9\u30B9\u540D -FR-Designer_Description_panel=\u8AAC\u660E +FR-Designer_ClassName_panel=\u985E\u540D +FR-Designer_Description_panel=\u8A18\u8FF0 FR-Designer_Edit_panel=\u7DE8\u96C6 FR-Designer_Property_panel=\u5C5E\u6027 FR-Designer_Select_panel=\u9078\u629E FR-Designer_LayoutTable_Column_Width=160 -FR-Designer_Set_BG_Of_Current_Row=\u7DE8\u96C6\u884C\u80CC\u666F\u8A2D\u5B9A -FR-Designer_Unload_Check=\u672A\u30B3\u30DF\u30C3\u30C8\u30D2\u30F3\u30C8 +FR-Designer_Set_BG_Of_Current_Row=\u5831\u544A\u30AB\u30EC\u30F3\u30C8\u7DE8\u96C6\u884C\u80CC\u666F\u8A2D\u5B9A +FR-Designer_Unload_Check=\u63D0\u51FA\u305B\u305A\u306B\u30D2\u30F3\u30C8 FR-Designer_ReportColumns_Columns_Optional=\u6BB5\u7D44\u307F FR-Designer_Row_Icon_File_Name=row.png -FR-Designer_Center_Display=\u4E2D\u592E\u63C3\u3048 -FR-Designer_Left_Display=\u5DE6\u8A70\u3081 +FR-Designer_Center_Display=\u4E2D\u592E\u63C3\u3048\u8868\u793A +FR-Designer_Left_Display=\u5DE6\u8868\u793A FR-Designer_About_Version=\u30D0\u30FC\u30B8\u30E7\u30F3 FR-Designer_About_CopyRight=\u8457\u4F5C\u6A29\u6240\u6709 -FR-Designer_Service_Phone=\u30B5\u30FC\u30D3\u30B9\u96FB\u8A71\: -FR-Designer_Allow_Null=\u7A7A\u6B04\u3092\u8A31\u53EF +FR-Designer_Service_Phone=\u30B5\u30FC\u30D3\u30B9\u96FB\u8A71\uFF1A +FR-Designer_Allow_Null=\u7A7A\u6B04\u3042\u308A FR-Designer_PageSetup_Page=\u30DA\u30FC\u30B8 -FR-Designer_Custom_Job_Description=\u8AAC\u660E +FR-Designer_Custom_Job_Description=\u8A18\u8FF0 FR-Designer_Property=\u5C5E\u6027 -FR-Designer_ClassName=\u30AF\u30E9\u30B9\u540D -FR-Designer_Polyblock_Edit=\u30D6\u30ED\u30C3\u30AF\u5E33\u7968\u7DE8\u96C6 -FR-Designer_Function_Description_Area_Text=\u3053\u306E\u30AF\u30E9\u30B9\u306F"com.fr.script.AbstractFunction"\u3092\u7D99\u627F\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u30B3\u30F3\u30D1\u30A4\u30EB\u5F8C\u306E\u30AF\u30E9\u30B9\u30D5\u30A1\u30A4\u30EB\u3092\nJ2EE\u30B5\u30FC\u30D0 "{R1}" \u30D5\u30A9\u30EB\u30C0\u30FC\u306B\u30B3\u30D4\u30FC\u3057\u304F\u3060\u3055\u3044\u3002\u7BA1\u7406\u306E\u305F\u3081Class\u306B\u5BFE\u5FDC\u3059\u308Bjava\u30D5\u30A1\u30A4\u30EB\u3082\u5F53\u30D5\u30A9\u30EB\u30C0\u30FC\u306B\u7F6E\u3044\u3066\u304F\u3060\u3055\u3044\u3002\n\u4F8B\u3048\u3070\:{R2} +FR-Designer_ClassName=\u985E\u540D +FR-Designer_Polyblock_Edit=\u30A2\u30B0\u30EA\u30B2\u30FC\u30B7\u30E7\u30F3\u30D6\u30ED\u30C3\u30AF\u7DE8\u96C6 +FR-Designer_Function_Description_Area_Text=\u3053\u306E\u30AF\u30E9\u30B9\u306F\u7D99\u627F\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"com.fr.script.AbstractFunction"\u3002\u3092\u7D99\u627F\u3059\u3079\u304D\u3067\u3059\u3002\u30B3\u30F3\u30D1\u30A4\u30EB\u5F8C\u306E\u985E\u30D5\u30A1\u30A4\u30EB\u3092\nJ2EE\u30B5\u30FC\u30D0\u30FC "{R1}" \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3002\u306B\u30B3\u30D4\u30FC\u3057\u3066\u3001class\u306B\u5BFE\u5FDC\u3059\u308Bjava\u30D5\u30A1\u30A4\u30EB\u3082\u5F53\u76EE\u6B21\u306B\u7F6E\u3044\u3066\u304F\u3060\u3055\u3044\u3002\n\u4F8B\u3048\u3070\uFF1A{R2} FR-Designer_PageSetup_Horizontal=\u6A2A\u65B9\u5411 FR-Designer_PageSetup_Vertical=\u7E26\u65B9\u5411 -FR-Designer_Gradient_Direction=\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3\u65B9\u5411 -FR-Designer_Drag_To_Select_Gradient=\u4E0B\u306E\u30DC\u30BF\u30F3\u306E\u30C9\u30E9\u30C3\u30B0\u3067\u7BC4\u56F2\u306E\u6307\u5B9A\u3001\u30AF\u30EA\u30C3\u30AF\u3067\u8272\u3092\u9078\u629E\u3057\u307E\u3059\u3002 +FR-Designer_Gradient_Direction=\u65B9\u5411\u3092\u5F90\u3005\u306B\u5909\u5316 +FR-Designer_Drag_To_Select_Gradient=\\ \u4E0B\u65B9\u306E\u30DC\u30BF\u30F3\u3092\u30D7\u30EB\u30C0\u30A6\u30F3\u3057\u3066\u6F38\u6B21\u5909\u5316\u30A8\u30EA\u30A2\u3092\u9078\u629E\u3057\u3001\u30AF\u30EA\u30C3\u30AF\u3057 FR-Designer_Display_Value=\u8868\u793A\u5024 -FR-Designer_Actual_Value=\u5B9F\u969B\u306E\u5024 +FR-Designer_Actual_Value=\u5B9F\u969B\u5024 FR-Designer_CellWrite_ToolTip=\u30BB\u30EB\u30D2\u30F3\u30C8 FR-Designer_Show_Content=\u5185\u5BB9\u8868\u793A FR-Designer_Auto_Adjust_Size=\u81EA\u52D5\u8ABF\u6574 -FR-Designer_Show_As_Download=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30EA\u30F3\u30AF\u3067\u30D0\u30A4\u30CA\u30EA\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u8868\u793A +FR-Designer_Show_As_Download=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30EA\u30F3\u30AF\u3067\uFF12\u9032\u6CD5\u306E\u5185\u5BB9\u3092\u8868\u793A FR-Designer_File_Name_For_Download=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30D5\u30A1\u30A4\u30EB\u540D -FR-Designer_No=\u306A\u3057 -FR-Designer_Pagination=\u6539\u30DA\u30FC\u30B8 -FR-Designer-Move_Tab_First=\u5148\u982D\u30BF\u30D6\u306B\u79FB\u52D5 -FR-Designer-Move_Tab_End=\u6700\u7D42\u30BF\u30D6\u306B\u79FB\u52D5 -FR-Designer-Move_Tab_Next=\u6B21\u306E\u30BF\u30D6\u306B\u79FB\u52D5 -FR-Designer-Move_Tab_Prev=\u524D\u306E\u30BF\u30D6\u306B\u79FB\u52D5 -FR-Designer_DS_TableData=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 +FR-Designer_No=\u3044\u3044\u3048 +FR-Designer_Pagination=\u30DA\u30FC\u30B8\u30F3\u30B0 +FR-Designer-Move_Tab_First= +FR-Designer-Move_Tab_End= +FR-Designer-Move_Tab_Next= +FR-Designer-Move_Tab_Prev= +FR-Designer_DS_TableData=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 FR-Designer_Parameter-Formula=\u6570\u5F0F -FR-Designer_Background_Null=\u80CC\u666F\u306A\u3057 -FR-Designer_Background_Color=\u80CC\u666F\u8272 -FR-Designer_Background_Texture=\u30C6\u30AF\u30B9\u30C1\u30E3 -FR-Designer_Background_Pattern=\u30D1\u30BF\u30FC\u30F3 -FR-Designer_Background_Gradient_Color=\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3\u8272 -FR-Designer_Background_Image=\u753B\u50CF -FR-Designer_Background_Clear=\u30AF\u30EA\u30A2 -FR-Designer_Background_Image_Select=\u753B\u50CF\u9078\u629E -FR-Designer_Initial_Background_Tips=\u30DC\u30BF\u30F3\u306E\u521D\u671F\u80CC\u666F -FR-Designer_Mouse_Move_Tips=\u30DE\u30A6\u30B9\u304C\u30DC\u30BF\u30F3\u4E0A\u3092\u79FB\u52D5\u3059\u308B\u6642\u306E\u80CC\u666F -FR-Designer_Too_Large_To_Paste=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30B5\u30A4\u30BA\u304C\u5883\u754C\u3092\u8D8A\u3048\u308B\u305F\u3081\u3001\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\u3002 -FR-Designer_Too_Small_To_Paste=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30B5\u30A4\u30BA\u304C\u9AD8\u3059\u304E\u308B\u305F\u3081\u3001\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\u3002 -FR-Designer_Mouse_Click_Tips=\u30DE\u30A6\u30B9\u304C\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u6642\u306E\u80CC\u666F -FR-Designer_Plugin_Should_Update_Please_Contact_Developer=\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u4F4E\u3044\u305F\u3081\u3001API\u306B\u4E0D\u5177\u5408\u304C\u3042\u308A\u307E\u3059\u3002\u958B\u767A\u8005\u3068\u9023\u7D61\u3057\u3066\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u66F4\u65B0\u3057\u3066\u304F\u3060\u3055\u3044\u3002 -FR-Designer_AxisReversed=\u8EF8\u3092\u53CD\u8EE2\u3059\u308B -FR-Designer_Logarithmic=\u5BFE\u6570\u76EE\u76DB -FR-Designer_Chart_Log_Base=\u57FA\u6570 +FR-Designer_Background_Null= +FR-Designer_Background_Color= +FR-Designer_Background_Texture= +FR-Designer_Background_Pattern= +FR-Designer_Background_Gradient_Color= +FR-Designer_Background_Image= +FR-Designer_Background_Clear= +FR-Designer_Background_Image_Select= +FR-Designer_Initial_Background_Tips= +FR-Designer_Mouse_Move_Tips= +FR-Designer_Too_Large_To_Paste=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30B5\u30A4\u30BA\u306F\u30DC\u30FC\u30C0\u30FC\u306B\u8D85\u3048\u305F\u306E\u3067\u3001\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\uFF01 +FR-Designer_Too_Small_To_Paste=\u8A72\u5F53\u51E6\u306B\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\u3001\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30B5\u30A4\u30BA\u306F\u9AD8\u3059\u304E\uFF01 +FR-Designer_Mouse_Click_Tips= +FR-Designer_Plugin_Should_Update_Please_Contact_Developer= +FR-Designer_AxisReversed=\u8EF8\u9006\u9806 +FR-Designer_Logarithmic=\u5BFE\u6570\u76EE\u76DB\u308A +FR-Designer_Chart_Log_Base=\u5E95\u6570 FR-Designer_Chart_F_Radar_Axis=\u5782\u76F4\u8EF8 FR-Designer_Style=\u30B9\u30BF\u30A4\u30EB FR-Designer_Color=\u8272 FR-Designer_Border=\u67A0 FR-Designer_Background-Pattern=\u30D1\u30BF\u30FC\u30F3 FR-Designer_Printer_Native_Button=\u30ED\u30FC\u30AB\u30EB\u5370\u5237 -FR-Designer_SimpleDetail_Report=\u7C21\u5358\u660E\u7D30\u5E33\u7968 +FR-Designer_SimpleDetail_Report=\u7C21\u5358\u660E\u7D30\u8868 FR-Designer_Reset=\u30EA\u30BB\u30C3\u30C8 FR-Designer_WidgetOrder=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u9806\u756A -FR-Designer_Button-OK=OK +FR-Designer_Button-OK=\u5206\u304B\u308A\u307E\u3057\u305F FR-Designer_Mobile-Warning=\u6700\u5927\u306E\u9AD8\u3055\u306F\u8868\u793A\u30A8\u30EA\u30A2\u306E80\uFF05\u4EE5\u4E0A\u306B\u306A\u308A\u307E\u305B\u3093 -FR-Designer_Mobile_Form_Analysis_Annotation=\u8AAC\u660E\:\u3053\u306E\u8A2D\u5B9A\u3088\u308A\u3001\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30A2\u30D7\u30EA\u306E\u89E3\u6790\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3002 +FR-Designer_Mobile_Form_Analysis_Annotation=\u8AAC\u660E\:\u8A72\u5F53\u8A2D\u5B9A\u3088\u308A\u3001\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u30A2\u30D7\u30EA\u3067\u306E\u89E3\u6790\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3002 FR-Designer-Invalid_Page_Number=\u7121\u52B9\u306A\u30DA\u30FC\u30B8\u756A\u53F7 -FR-Designer_Form-Forzen-Speed=\u3001\u305D\u3057\u3066\u6A2A\u65B9\u5411\u81EA\u5DF1\u8ABF\u6574\u307E\u305F\u306F\u4E21\u65B9\u5411\u81EA\u52D5\u8ABF\u6574\u3092\u5229\u7528\u3057\u3001\u5E33\u7968\u8868\u793A\u306E\u30B9\u30D4\u30FC\u30C9\u3092\u4E0A\u3052\u3067\u304D\u307E\u3059\u3002 +FR-Designer_Form-Forzen-Speed=\u3001\u305D\u3057\u3066\u6A2A\u65B9\u5411\u81EA\u5DF1\u9069\u5FDC\u307E\u305F\u306F2\u65B9\u5411\u81EA\u52D5\u9069\u5FDC\u3092\u5229\u7528\u3057\u3001\u5E33\u7968\u8868\u793A\u306E\u30B9\u30D4\u30FC\u30C9\u3092\u4E0A\u3052\u3067\u304D\u307E\u3059\u3002 FR-Designer_Properties_Mobile=\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u5C5E\u6027 -FR-Designer_AllCategories=\u3059\u3079\u3066\u306E\u30AB\u30C6\u30B4\u30EA -FR-Designer-Selected_Widget=\u9078\u629E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 -FR-Designer_SimpleCross_Report=\u7C21\u6613\u30AF\u30ED\u30B9\u5E33\u7968 +FR-Designer_AllCategories=\u5168\u3066\u306E\u7A2E\u985E +FR-Designer-Selected_Widget=\u5F53\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 +FR-Designer_SimpleCross_Report=\u7C21\u5358\u30AF\u30ED\u30FC\u30B9\u8868 FR-Designer_Log=\u30ED\u30B0 -FR-Designer_Form-Fit-Tip=\u81EA\u52D5\u8ABF\u6574\u30D7\u30E9\u30B0\u30A4\u30F3 +FR-Designer_Form-Fit-Tip=\u81EA\u5DF1\u9069\u5FDC\u30D7\u30E9\u30B0\u30A4\u30F3 FR-Designer_Button-Cancel=\u53D6\u308A\u6D88\u3057 FR-Designer_LocalWidget=\u30ED\u30FC\u30AB\u30EB\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u30E9\u30A4\u30D6\u30E9\u30EA FR-Designer_Alert=\u30A2\u30E9\u30FC\u30C8 -FR-Designer_TableData-Default-Para=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306E\u65E2\u5B9A\u30D1\u30E9\u30E1\u30FC\u30BF +FR-Designer_TableData-Default-Para=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF FR-Designer_Edit_Button_ToolBar=\u30DC\u30BF\u30F3\u306E\u30C4\u30FC\u30EB\u30D0\u30FC\u3092\u7DE8\u96C6 -FR-Designer-Plugin_Please_Update_Jar=Jar\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3057\u3066\u304F\u3060\u3055\u3044 -FR-Designer_Form-Frozen-Tip=\u56FA\u5B9A\u3092\u4F7F\u3046\u6642\u3001\u5F8C\u8A18\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3066\u304F\u3060\u3055\u3044\: +FR-Designer-Plugin_Please_Update_Jar=jar\u30D1\u30C3\u30AF\u3092\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Designer_Form-Frozen-Tip=\u30D5\u30EA\u30FC\u30BA\u3092\u4F7F\u3046\u6642\u3001\u5F8C\u8A18\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3066\u304F\u3060\u3055\u3044\uFF1A FR-Designer_Remove_Button_ToolBar=\u30DC\u30BF\u30F3\u306E\u30C4\u30FC\u30EB\u30D0\u30FC\u3092\u524A\u9664 FR-Designer_Normal=\u6B63\u5E38 FR-Designer_Install_Template=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB FR-Designer_Copy=\u30B3\u30D4\u30FC -FR-Designer_Allow-Blank=\u7A7A\u6B04\u3092\u8A31\u53EF -FR-Designer_Clear_All=\u3059\u3079\u3066\u30AF\u30EA\u30A2 +FR-Designer_Allow-Blank=\u7A7A\u306B\u8A31\u3059 +FR-Designer_Clear_All=\u5168\u3066\u3092\u30AF\u30EA\u30A2 FR-Designer_Delete_Template=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u524A\u9664 -FR-Designer_Mobile_Report_Analysis_Annotation=\u8AAC\u660E\:\u8A72\u5F53\u5C5E\u6027\u3088\u308A\u3001\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u30A2\u30D7\u30EA\u3067\u306E\u89E3\u6790\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3001\u30DA\u30FC\u30B8\u5225\u30D7\u30EC\u30D3\u30E5\u30FC\u3060\u3051\u5BFE\u5FDC\u3001\u66F8\u304D\u8FBC\u307F\u30D7\u30EC\u30D3\u30E5\u30FC\u6642\u7121\u52B9\u306B\u306A\u308A\u307E\u3059\u3002 -FR-Designer_DoubleLayer_Report=2\u968E\u30BF\u30A4\u30C8\u30EB +FR-Designer_Mobile_Report_Analysis_Annotation=\u8AAC\u660E\:\u8A72\u5F53\u5C5E\u6027\u3088\u308A\u3001\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u30A2\u30D7\u30EA\u3067\u306E\u89E3\u6790\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3001\u9801\u5206\u3051\u30D7\u30EC\u30D3\u30E5\u30FC\u3060\u3051\u3092\u652F\u6301\u3001\u66F8\u304D\u8FBC\u307F\u306B\u8A2D\u5B9A\u3059\u308B\u6642\u7121\u52B9\u306B\u306A\u308A\u307E\u3059\u3002 +FR-Designer_DoubleLayer_Report=\u4E8C\u968E\u30BF\u30A4\u30C8\u30EB FR-Designer_Validate=\u691C\u8A3C -CellWrite-InsertRow_NULL=\u7A7A\u6B04 +CellWrite-InsertRow_NULL=Null\u5024 DashBoard-ChartFloat=\u30B0\u30E9\u30D5 -contact_info=\u304A\u554F\u3044\u5408\u308F\u305B\u60C5\u5831 +contact_info=\u304A\u554F\u3044\u5408\u308F\u305B\u60C5\u5831\uFF08\u4EFB\u610F\uFF09 Page_Setup=\u30DA\u30FC\u30B8\u8A2D\u5B9A -CellWrite-Print_Export=\u5370\u5237\u51FA\u529B -Cannot_Get_Date=\u65E5\u4ED8\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093 -FR-Designer_Modify=\u5909\u66F4 -M-Write_Preview=\u66F8\u304D\u8FBC\u307F\u30D7\u30EC\u30D3\u30E5\u30FC -FR-Base_RWA-Key=\u4E3B\u30AD\u30FC +CellWrite-Print_Export=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3092\u5370\u5237 +Cannot_Get_Date=\u65E5\u6642\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093 +FR-Designer_Modify=\u6539\u6B63 +M-Write_Preview=\u5831\u544A\u30D7\u30EC\u30D3\u30E5\u30FC +FR-Base_RWA-Key=\u30E1\u30A4\u30F3\u30AD\u30FC China=\u4E2D\u56FD -Set_Legend_Sytle=\u51E1\u4F8B\u66F8\u5F0F\u8A2D\u5B9A -FR-Designer_Number=\u6570\u5024 -FR-Designer-Widget-Style_Common=\u4E00\u822C -M-Save_As=\u540D\u524D\u3092\u4ED8\u3051\u3066\u4FDD\u5B58 -Following_parameters_are_not_generated=\u4EE5\u4E0B\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u306F\u4F5C\u6210\u3055\u308C\u307E\u305B\u3093 +Set_Legend_Sytle=\u51E1\u4F8B\u66F8\u5F0F\u3092\u8A2D\u5B9A +FR-Designer_Number=\u6570\u5B57 +FR-Designer-Widget-Style_Common=\u666E\u901A +M-Save_As=\u540D\u524D\u3092\u3064\u3051\u3066\u4FDD\u5B58 +Following_parameters_are_not_generated=\u4EE5\u4E0B\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u306F\u751F\u6210\u3055\u308C\u307E\u305B\u3093 FR-Designer-Basic_Activation_Key_Copy_OK=\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F -Utils-Current_Sheet=\u73FE\u5728\u306E\u30B7\u30FC\u30C8 +Utils-Current_Sheet=\u30AB\u30EC\u30F3\u30C8\u30B7\u30FC\u30C8 ConditionB-is_less_than=\u3088\u308A\u5C0F\u3055\u3044 -BorderLayout-West=\u897F -AnalysisLine=\u5206\u6790\u7DDA -Layer_Report_Warnning_info=\u30B0\u30EA\u30C3\u30C9\u578B\u30A8\u30F3\u30B8\u30F3\u306F\u30C7\u30FC\u30BF\u91CF\u304C\u591A\u3044\u5834\u5408\u306B\u9069\u3057\u3066\u3044\u307E\u3059\u3002
\u3053\u306E\u30A8\u30F3\u30B8\u30F3\u3092\u4F7F\u3046\u3068\u3001\u591A\u304F\u306E\u5E33\u7968\u6A5F\u80FD\u304C\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093\u3002
\u8A73\u3057\u3044\u5185\u5BB9\u306F\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u95A2\u9023\u500B\u6240\u3092\u3054\u78BA\u8A8D\u304F\u3060\u3055\u3044\u3002 +BorderLayout-West=\u897F\u90E8\u306E +AnalysisLine=\u5206\u6790\u30E9\u30A4\u30F3 +Layer_Report_Warnning_info=\u30E9\u30A4\u30F3\u30A8\u30F3\u30B8\u30F3\u306F\u5927\u30C7\u30FC\u30BF\u91CF\u306E\u72B6\u6CC1\u4E0B\u3067\u9069\u7528\u3055\u308C\u307E\u3059\u3002
Tree-Width=\u5E45 -alert_word=\u884C\u306E\u9AD8\u3055\u3092\u56FA\u5B9A\u305B\u305A\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B\u6642\u3001\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u305FWord\u3067\u30BB\u30EB\u884C\u306E\u9AD8\u3055\u306F\u5185\u5BB9\u306B\u5408\u308F\u305B\u3066\u5927\u304D\u304F\u306A\u308A\u307E\u3059\u3002\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u305F\u6539\u30DA\u30FC\u30B8\u4F4D\u7F6E\u3068\u30D7\u30EC\u30D3\u30E5\u30FC\u7D50\u679C\u304C\u4E00\u81F4\u3057\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002 -PageSetup-Paper_Size=\u7528\u7D19\u30B5\u30A4\u30BA -M-Page_Setup=\u30DA\u30FC\u30B8\u8A2D\u5B9A -DashBoard-FormBook=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9 +alert_word=\u884C\u306E\u9AD8\u3055\u3092\u56FA\u5B9A\u305B\u305A\u5C0E\u51FA\u3092\u9078\u629E\u3057\u305F\u6B73\u3001\u5C0E\u51FA\u3057\u305Fword\u306E\u7DE8\u96C6\u306F\u3001\u30BB +PageSetup-Paper_Size=\u7D19\u30B5\u30A4\u30BA +M-Page_Setup=\u30DA\u30FC\u30B8\u306E\u8A2D\u5B9A +DashBoard-FormBook=\u8868 X-Coordinate=\u6A2A\u5EA7\u6A19 -Style-Line_Spacing=\u884C\u9593 -FR-Designer_Plugin_Should_Update_Title=\u30D7\u30E9\u30B0\u30A4\u30F3\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u6CE8\u610F +Style-Line_Spacing=\u884C\u9593\u9694\u8DDD\u96E2 +FR-Designer_Plugin_Should_Update_Title=Warning Server-Define_Data_Connection=\u30C7\u30FC\u30BF\u63A5\u7D9A\u5B9A\u7FA9 -BarInside=\u68D2\u306E\u5185\u5074 -Border-Color=\u67A0\u306E\u8272 -NotAllow=\u4E0D\u6B63 -Utils-File_type=\u30D5\u30A1\u30A4\u30EB\u306E\u7A2E\u985E -FR-Designer-Plugin_Install_From_Local=\u30ED\u30FC\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB -Summary_Method=\u96C6\u8A08\u65B9\u6CD5 -Select_Specified_Grouping=\u30AB\u30B9\u30BF\u30E0\u30B0\u30EB\u30FC\u30D7\u5206\u3051\u3092\u9078\u629E +BarInside=\u67F1\u5B50\u5185\u4FA7 +Border-Color=\u67A0\u7DDA\u8272 +NotAllow=\u975E\u5408\u6CD5 +Utils-File_type=\u30D5\u30A1\u30A4\u30EB\u30BF\u30A4\u30D7 +FR-Designer-Plugin_Install_From_Local=\u30ED\u30FC\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3059\u308B +Summary_Method=\u53D6\u308A\u307E\u3068\u3081\u65B9\u6CD5 +Select_Specified_Grouping=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u30B0\u30EB\u30FC\u30D7\u5206\u3051\u3092\u9078\u629E HF-Number_of_Page=\u7DCF\u30DA\u30FC\u30B8\u6570 FR-Designer-Tree_Height=\u9AD8\u3055 Owner=\u30AA\u30FC\u30CA\u30FC -Home=\u30DB\u30FC\u30E0\u30DA\u30FC\u30B8 -FR-Server_Embedded_Server_Stop=\u7D44\u307F\u8FBC\u307F\u30B5\u30FC\u30D0\u505C\u6B62 -FR-Designer-Plugin_Detecting_Update=\u66F4\u65B0\u691C\u8A3C\u4E2D -HF-Whether_to_define_the_selected_type=\u9078\u629E\u30BF\u30A4\u30D7\u306E\u5B9A\u7FA9 +Home=\u30E1\u30A4\u30F3\u30DA\u30FC\u30B8 +FR-Server_Embedded_Server_Stop=\u5185\u8535\u30B5\u30FC\u30D0\u30FC-\u4E00\u6642\u505C\u6B62 +FR-Designer-Plugin_Detecting_Update=\u66F4\u65B0\u3092\u30C1\u30A7\u30C3\u30AF\u3057\u3066\u3044\u307E\u3059 +HF-Whether_to_define_the_selected_type=\u9078\u629E\u3055\u308C\u305F\u30BF\u30A4\u30D7\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u304B StyleAlignment-Right=\u53F3\u8A70\u3081 FR-Designer_Alignment-Style=\u63C3\u3048\u65B9\u6CD5 PageSetup-Title_Start_Column=\u91CD\u8907\u30D8\u30C3\u30C0\u30FC\u5217 Tree-Mutiple_Selection_Or_Not=\u8907\u6570\u9078\u629E FR-Designer-Plugin_Search=\u691C\u7D22 -Choose_Role=\u6A29\u9650\u5236\u5FA1 -Append_Delete_Row_Message=\u6CE8\u610F!\u6307\u5B9A\u30BB\u30EB\u306E\u5C55\u958B\u5C5E\u6027\u3092\u8A2D\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +Choose_Role=\u6A29\u9650\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +Append_Delete_Row_Message=\u6CE8\u610F\uFF01\u6307\u5B9A\u3055\u308C\u305F\u30BB\u30EB\u306F\u3001\u62E1\u5F35\u5C5E\u6027\u3092\u8A2D\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 Form-ComboBox=\u30B3\u30F3\u30DC\u30DC\u30C3\u30AF\u30B9 PageSetup-Footer=\u30DA\u30FC\u30B8\u30D5\u30C3\u30BF\u30FC -Sorting=\u30BD\u30FC\u30C8\u4E2D -DBCP_TEST_WHILE_IDLE=\u30A2\u30A4\u30C9\u30EB\u72B6\u614B\u306E\u63A5\u7D9A\u6709\u52B9\u6027\u3092\u691C\u8A3C -DS-Embedded_TableData=\u7D44\u307F\u8FBC\u307F\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 -FR-Designer_No-Privilege=\u6A29\u9650\u306A\u3057 +Sorting=\u30BD\u30FC\u30C6\u30A3\u30F3\u30B0 +DBCP_TEST_WHILE_IDLE=\u30A2\u30A4\u30C9\u30EB\u30EA\u30B5\u30A4\u30AF\u30EB\u30E6\u30CB\u30C3\u30C8\u691C\u67FB +DS-Embedded_TableData=\u5185\u8535\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 +FR-Designer_No-Privilege=\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F FRFont-Subscript=\u4E0B\u4ED8\u304D Background_Settings=\u80CC\u666F\u8A2D\u5B9A -FormulaD-Invalid_Formula=\u6570\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002 +FormulaD-Invalid_Formula=\u7121\u52B9\u306A\u516C\u5F0F FR-Base_Margin=\u30DE\u30FC\u30B8\u30F3 -FR-Designer-Plugin_Shop_Installed=\u30D7\u30E9\u30B0\u30A4\u30F3\u30B9\u30C8\u30A2\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u7D42\u4E86\u5F8C\u3001\u8D77\u52D5\u3057\u307E\u3059\u304B? +FR-Designer-Plugin_Shop_Installed= M_Edit-Send_to_Back=\u6700\u80CC\u9762\u3078\u79FB\u52D5(K) -Email-Can_Preview_Report_Content=\u5E33\u7968\u306E\u5185\u5BB9\u3092\u30D7\u30EC\u30D3\u30E5\u30FC\u3059\u308B -FR-Designer-FRFont_Italic=\u659C\u4F53 -CellWrite-Print_Background=\u30BB\u30EB\u80CC\u666F +Email-Can_Preview_Report_Content=\u30C6\u30AD\u30B9\u30C8\u30D7\u30EC\u30D3\u30E5\u30FC\u30EC\u30DD\u30FC\u30C8\u306E\u5185\u5BB9 +FR-Designer-FRFont_Italic=\u50BE\u659C +CellWrite-Print_Background=\u30BB\u30EB\u80CC\u666F\u3092\u5370\u5237\u3059\u308B Wizard=\u30A6\u30A3\u30B6\u30FC\u30C9 -Preference-Is_Drag_Permited=\u30C9\u30E9\u30C3\u30B0\u3092\u30B5\u30DD\u30FC\u30C8 +Preference-Is_Drag_Permited=\u30C9\u30E9\u30C3\u30B0\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B FR-Designer_Release_Lock=\u30A2\u30F3\u30ED\u30C3\u30AF -Form-Delimiter=\u533A\u5207\u308A\u6587\u5B57 -wrong=\u30A8\u30E9\u30FC\u767A\u751F -FR-Menu-Server_Chart_PreStyle=\u30B0\u30E9\u30D5\u4E8B\u524D\u5B9A\u7FA9\u914D\u8272 +Form-Delimiter=\u533A\u5207\u308A\u7B26 +wrong=\u9593\u9055\u3063\u305F +FR-Menu-Server_Chart_PreStyle=\u30B0\u30E9\u30D5\u30D7\u30EC\u5B9A\u7FA9\u914D\u8272 Form-Button=\u30DC\u30BF\u30F3 -FormulaD-Valid_Formula=\u6709\u52B9\u306A\u6570\u5F0F\u3067\u3059 -ParameterD-Parameter_Interface=\u30D1\u30E9\u30E1\u30FC\u30BF\u30D1\u30CD\u30EB -At_least_one_visual_worksheet=\u30B7\u30FC\u30C8\u3092\u3059\u3079\u3066\u524A\u9664\u3067\u304D\u307E\u305B\u3093\u3002\u524A\u9664\u524D\u306B\u3001\u30B7\u30FC\u30C8\u3092\u8FFD\u52A0\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 -Need_Min_Value=\u6700\u5C0F\u5024\u5FC5\u8981 -Allow_Blank=\u7A7A\u6B04\u3092\u8A31\u53EF -CellWrite-InsertRow_DEFAULT=\u65E2\u5B9A\u5024 -Widget-Load_By_Complete=\u5B8C\u5168\u306B\u30ED\u30FC\u30C9\u3059\u308B -FR-Designer-Basic_Only_Submit_Current_Sheet=\u3053\u306E\u30B7\u30FC\u30C8\u306E\u307F\u3092\u63D0\u51FA\u3059\u308B -Sort-Sort_Order=\u4E26\u3073\u66FF\u3048 -File-File_Size_Limit=\u30D5\u30A1\u30A4\u30EB\u30B5\u30A4\u30BA\u306E\u5236\u9650 +FormulaD-Valid_Formula=\u6709\u52B9\u306A\u516C\u5F0F +ParameterD-Parameter_Interface=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30FC\u30B9 +At_least_one_visual_worksheet=\u5C11\u306A\u304F\u3068\u3082\u4E00\u3064\u306E\u30D3\u30B8\u30E5\u30A2\u30EB\u30EF\u30FC\u30AF\u3092\u6301\u3063\u3066\u3044\u308B\u30EF\u30FC\u30AF\u30D6\u30C3\u30AF\u306B\u306F\u3001\u524A\u9664\u3057\u305F\u3044\u5834\u5408\u306F\u3001\u65B0\u3057\u3044\u30EF\u30FC\u30AF\u30B7\u30FC\u30C8\u3092\u633F\u5165\u3057\u3066\u304F\u3060\u3055\u3044 +Need_Min_Value=\u6700\u5C0F\u5024\u304C\u5FC5\u8981 +Allow_Blank=\u7A7A\u6B04\u3042\u308A +CellWrite-InsertRow_DEFAULT=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F +Widget-Load_By_Complete=\u5B8C\u5168\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9 +FR-Designer-Basic_Only_Submit_Current_Sheet= +Sort-Sort_Order=\u30BD\u30FC\u30C8\u9806 +File-File_Size_Limit=\u30D5\u30A1\u30A4\u30EB\u30B5\u30A4\u30BA\u3092\u5236\u9650\u3059\u308B PrintP-Print=\u5370\u5237(T) FR-Designer-StyleAlignment_Center=\u4E2D\u592E\u63C3\u3048 -Preference-Setting_Colors=\u8272\u8A2D\u5B9A -Judge=\u5224\u65AD -Image-Adjust=\u8ABF\u6574\u8868\u793A -Collect-User_Information_DES=\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u30B3\u30FC\u30C9\u306F\u4F7F\u7528\u8005\u60C5\u5831\u306E\u53CE\u96C6\u306E\u305F\u3081\u3060\u3051\u306B\u7528\u3044\u3089\u308C\u307E\u3059\u3002\u300C\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u30B3\u30FC\u30C9\u53D6\u5F97\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u3001\u65B0\u898F\u30A6\u30A3\u30F3\u30C9\u30A6\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\u88FD\u54C1\u306E\u516C\u5F0F\u30B5\u30A4\u30C8\u306B\u30A2\u30AF\u30BB\u30B9\u3057\u3066\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u30B3\u30FC\u30C9\u3092\u53D6\u5F97\u3059\u308B\u306B\u306F3\u5206\u7A0B\u5EA6\u304B\u304B\u308A\u307E\u3059\u3002\u4F5C\u696D\u306F1\u56DE\u3060\u3051\u3067\u3001\u5B8C\u5168\u7121\u6599\u3067\u3054\u5229\u7528\u3044\u305F\u3060\u3051\u307E\u3059\u3002 -FR-Designer_Plugin_Normal_Update_From_Local=\u30ED\u30FC\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 +Preference-Setting_Colors=\u8272\u306E\u8A2D\u5B9A +Judge=\u88C1\u5224\u5B98 +Image-Adjust=\u9069\u5FDC +Collect-User_Information_DES=\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30C8\u30B3\u30FC\u30C9\u306F\u4F7F\u7528\u8005\u60C5\u5831\u306E\u53CE\u96C6\u306E\u305F\u3081\u3060\u3051\u306B\u7528\u3044\u3089\u308C\u307E\u3059\u3002\u4E0A\u306E\u300C\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30C8\u30B3\u30FC\u30C9\u53D6\u5F97\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u3001\u65B0\u305F\u306A\u30A6\u30A3\u30F3\u30C9\u30A6\u304C\u73FE\u308C\u307E\u3059\u3002\u88FD\u54C1 +FR-Designer_Plugin_Normal_Update_From_Local=\u30ED\u30FC\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u66F4\u65B0 BackgroundTexture-Canvas=\u30AD\u30E3\u30F3\u30D0\u30B9 -BarOutSide=\u68D2\u306E\u5916\u5074 -Preview_ToolTips=\u30D7\u30EC\u30D3\u30E5\u30FC\u30D2\u30F3\u30C8 -FRFont-Family=\u540D\u524D -FR-Lic_does_not_Support_Remote=\u304A\u4F7F\u3044\u306Elic\u306F\u30EA\u30E2\u30FC\u30C8\u958B\u767A\u6A5F\u80FD\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3001\u3054\u5229\u7528\u306B\u306FLIC\u3092\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +BarOutSide=\u5916\u306E\u67F1 +Preview_ToolTips=\u30D7\u30EC\u30D3\u30E5\u30FC\u63D0\u793A +FRFont-Family=\u540D\u79F0 +FR-Lic_does_not_Support_Remote=\u73FE\u5728\u4F7F\u7528\u3057\u3066\u3044\u308Blic\u306F\u9060\u9694\u30C7\u30B6\u30A4\u30F3\u6A5F\u80FD\u306B\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B InterfaceStyle=\u30B9\u30BF\u30A4\u30EB RWA-Key=\u4E3B\u30AD\u30FC -WF-Name=\u540D\u524D -RWA-Click_Cell_To_Edit_Value=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30BB\u30EB\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u5024\u3092\u5909\u66F4 +WF-Name=\u540D\u79F0 +RWA-Click_Cell_To_Edit_Value=\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30BB\u30EB\u4FEE\u6B63\u5024 Utils-Row_Height=\u884C\u306E\u9AD8\u3055 -ReportD-Excel_Export=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u5C5E\u6027 -Form-Please_Select_A_Kind_Of_Form_Container=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30B3\u30F3\u30C6\u30CA\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 -Column_Does_Not_Exsit=\u5217\u304C\u3042\u308A\u307E\u305B\u3093 +ReportD-Excel_Export=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5C0E\u51FA\u5C5E\u6027 +Form-Please_Select_A_Kind_Of_Form_Container=\u4E00\u7A2E\u306E\u8868\u30B3\u30F3\u30C6\u30CA\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 +Column_Does_Not_Exsit=\u5217\u304C\u5B58\u5728\u3057\u307E\u305B\u3093 M_Insert-Hyperlink=\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF -can_not_include_underline="_"\u3092\u542B\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -FR-Designer-Plugin_Jar_Expired=Jar\u30D5\u30A1\u30A4\u30EB\u306F\u53E4\u3059\u304E -FR-Background_Image_Extend=\u62E1\u5927\u8868\u793A -TopDownShade=\u4E0A\u4E0B\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3 +can_not_include_underline=_\u3092\u542B\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +FR-Designer-Plugin_Jar_Expired=\u65E7Jar\u30D1\u30C3\u30AF +FR-Background_Image_Extend=\u62E1\u5F35 +TopDownShade=\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3\u30C0\u30A6\u30F3 FR-Base_Right=\u53F3 -DataBinding=\u30C7\u30FC\u30BF\u30D0\u30A4\u30F3\u30C9 +DataBinding=\u30C7\u30FC\u30BF\u30D0\u30F3\u30C7\u30A3\u30F3\u30B0 ConnectionPool_Attr=\u63A5\u7D9A\u30D7\u30FC\u30EB\u5C5E\u6027 -Connect_SQL_Cannot_Null=\u30C7\u30FC\u30BF\u63A5\u7D9A\u3068SQL\u30D1\u30CD\u30EB\u3092\u7A7A\u6B04\u306B\u3067\u304D\u307E\u305B\u3093 -DBCP_MAX_ACTIVE=\u540C\u6642\u5272\u308A\u5F53\u3066\u53EF\u80FD\u306A\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u63A5\u7D9A\u6700\u5927\u6570 +Connect_SQL_Cannot_Null=\u30C7\u30FC\u30BF\u63A5\u7D9A\u3068SQL\u30D1\u30CD\u30EB\u306F\u7A7A\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +DBCP_MAX_ACTIVE=\u6700\u5927\u30A2\u30AF\u30C6\u30A3\u30D6\u63A5\u7D9A\u6570 M_Window-Preference=\u30AA\u30D7\u30B7\u30E7\u30F3 ToolBar_Top=\u30D8\u30C3\u30C0\u30FC\u30C4\u30FC\u30EB\u30D0\u30FC FR-Designer_Indent-Pixel=\u753B\u7D20 -FR-Designer_Unit_MM=\u30DF\u30EA +FR-Designer_Unit_MM=\u30DF\u30EA\u30E1\u30FC\u30C8\u30EB IDLE=\u30A2\u30A4\u30C9\u30EB FRFont-Underline=\u4E0B\u7DDA -FR-Designer-Plugin_Read_Plugin_List_Error=\u30D7\u30E9\u30B0\u30A4\u30F3\u30EA\u30B9\u30C8\u8AAD\u307F\u8FBC\u307F\u6642\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F +FR-Designer-Plugin_Read_Plugin_List_Error=\u30D7\u30E9\u30B0\u30A4\u30F3\u30EA\u30B9\u30C8\u306E\u8AAD\u307F\u53D6\u308A\u6642\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E Type_Set=\u30BF\u30A4\u30D7\u8A2D\u5B9A M_Format_A-Cell_Attributes=\u305D\u306E\u4ED6\u5C5E\u6027 CellWrite-Show_As_Image=\u753B\u50CF\u3067\u5185\u5BB9\u3092\u8868\u793A -ShowAsDownload=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30EA\u30F3\u30AF\u3067\u30D0\u30A4\u30CA\u30EA\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u8868\u793A +ShowAsDownload=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30EA\u30F3\u30AF\u3067\uFF12\u9032\u6CD5\u306E\u5185\u5BB9\u3092\u8868\u793A Form-ComboCheckBox=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 -BackgroundTexture-WovenMat=\u9EBB -BindColumn-Custom_Data_Appearance=\u30AB\u30B9\u30BF\u30E0\u8868\u793A -Actived=\u30A2\u30AF\u30C6\u30A3\u30D6 +BackgroundTexture-WovenMat=\u7E54\u7269 +BindColumn-Custom_Data_Appearance=\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u306F\u8868\u793A\u3059\u308A\u307E\u3059 +Actived=\u6D3B\u52D5\u7684 Env-Local_Directory=\u30ED\u30FC\u30AB\u30EB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA Form-Colon=\u30B3\u30ED\u30F3 -Preference-Vertical_Scroll_Bar_Visible=\u5782\u76F4\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u3092\u8868\u793A -Utils-Show_Cell_Value=\u30BB\u30EB\u5024\u8868\u793A -FR-Designer_ReportColumns-Repeat_Row=\u884C\u306E\u9806\u5E8F\u3092\u30B3\u30D4\u30FC -SpecifiedG-Specified_Group=\u30AB\u30B9\u30BF\u30E0\u30B0\u30EB\u30FC\u30D7\u5206\u3051 -RWA-Smart_Add_Cells=\u30BB\u30EB\u81EA\u52D5\u8FFD\u52A0 -HF-Left_Section=\u5DE6\u5074 -M_Report-Report_Background=\u7528\u7D19\u80CC\u666F -Image-Extend=\u62E1\u5927\u8868\u793A -FS_BI=\u610F\u601D\u6C7A\u5B9A\u30B7\u30B9\u30C6\u30E0 +Preference-Vertical_Scroll_Bar_Visible=\u7E26\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u306F\u53EF\u8996 +Utils-Show_Cell_Value=\u30BB\u30EB\u5024\u3092\u8868\u793A +FR-Designer_ReportColumns-Repeat_Row=\u884C\u9806\u5E8F\u3092\u30B3\u30D4\u30FC +SpecifiedG-Specified_Group=\u30B0\u30EB\u30FC\u30D4\u30F3\u30B0\u306E\u30E6\u30FC\u30B6\u5B9A\u7FA9 +RWA-Smart_Add_Cells=\u30A4\u30F3\u30C6\u30EA\u30B8\u30A7\u30F3\u30C8\u8FFD\u52A0\u30BB\u30EB +HF-Left_Section=\u5DE6\u5074\u30BB\u30AF\u30B7\u30E7\u30F3 +M_Report-Report_Background=\u5E33\u7968\u80CC\u666F +Image-Extend=\u62E1\u5F35 +FS_BI=\u51B3\u7B56\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0 ToolBar_Bottom=\u30D5\u30C3\u30BF\u30FC\u30C4\u30FC\u30EB\u30D0\u30FC -Hgap=\u6C34\u5E73\u9699\u9593 +Hgap=\u6C34\u5E73\u9593\u9699 FR-Designer_Enter-New-FileName=\u65B0\u3057\u3044\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 -Verify_Fail=\u691C\u8A3C\u5931\u6557 -CellWrite-InsertRow_Policy=\u884C\u633F\u5165\u65B9\u6CD5 -FR-Designer-Plugin_Illegal_Plugin_Zip=\u5408\u6CD5\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u30D1\u30C3\u30B1\u30FC\u30B8\u3067\u306F\u3042\u308A\u307E\u305B\u3093 +Verify_Fail=\u70B9\u691C\u306B\u5931\u6557\u3057\u307E\u3057\u305F +CellWrite-InsertRow_Policy=\u884C\u6226\u7565\u3092\u633F\u5165 +FR-Designer-Plugin_Illegal_Plugin_Zip=\u5408\u6CD5\u7684\u306A\u30D7\u30E9\u30B0\u30A4\u30F3\u30D1\u30C3\u30AF\u3067\u306F\u3042\u308A\u307E\u305B\u3093 RCodeVersion=\u30D0\u30FC\u30B8\u30E7\u30F3 Convert=\u5909\u63DB -Please_Drag=\u884C\u5217\u30D5\u30A3\u30FC\u30EB\u30C9\u3001\u96C6\u8A08\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u304F\u3060\u3055\u3044 +Please_Drag=\u884C\u5217\u30D5\u30A3\u30FC\u30EB\u30C9\u3001\u53D6\u308A\u307E\u3068\u3081\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u5F15\u3063\u8FBC\u3081\u3066\u304F\u3060\u3055\u3044 FR-Designer-Widget-Style_Preview=\u30D7\u30EC\u30D3\u30E5\u30FC -mobile_number=\u643A\u5E2F\u756A\u53F7 -FR-Designer_Form-ComboCheckBox=\u30D7\u30EB\u30C0\u30A6\u30F3\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 -CacheValidateTime=\u5E33\u7968\u30AD\u30E3\u30C3\u30B7\u30E5\u306E\u6709\u52B9\u6642\u9593 -Hyperlink-Extends_Report_Parameters=\u5E33\u7968\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u7D99\u627F +mobile_number=\u643A\u5E2F\u96FB\u8A71\u756A\u53F7 +FR-Designer_Form-ComboCheckBox=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 +CacheValidateTime=\u5E33\u7968\u30AD\u30E3\u30C3\u30B7\u30F3\u30B0\u6709\u52B9\u6642\u9593 +Hyperlink-Extends_Report_Parameters=\u5E33\u7968\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3092\u7D99\u627F\u3059\u308B FR-Designer_Values-Editor=\u5024\u30A8\u30C7\u30A3\u30BF Export-Excel=Excel Utils-Left_to_Right=\u5DE6\u304B\u3089\u53F3\u3078 -ExpandD-Vertical_Extendable=\u7E26\u5C55\u958B -Utils-Report_Runtime_Env=\u5E33\u7968\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA +ExpandD-Vertical_Extendable=\u7E26\u5E83\u304C\u308B +Utils-Report_Runtime_Env=\u5E33\u7968\u4F5C\u696D\u76EE\u6B21 Utils-Right_to_Left=\u53F3\u304B\u3089\u5DE6\u3078 -Utils-Beyond_the_top_side_of_Border=\u4E0A\u306E\u5883\u754C\u3092\u8D85\u904E\u3057\u3066\u3044\u307E\u3059\u3002 -Exception_StackTrace=\u30A8\u30E9\u30FC\u4F8B\u5916\u30B9\u30BF\u30C3\u30AF\u60C5\u5831 +Utils-Beyond_the_top_side_of_Border=\u4E0A\u30DC\u30FC\u30C0\u30FC\u8D85\u3048 +Exception_StackTrace=\u30A8\u30E9\u30FC\u7570\u5E38\u30B9\u30BF\u30C3\u30AF\u60C5\u5831 Corresponding_Fields=\u5BFE\u5FDC\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9 -Form-CheckBox=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 -Utils-Current_Row=\u73FE\u5728\u306E\u884C -BuildIn=\u7D44\u307F\u8FBC\u307F -BindColumn-Results_Filter=\u7D50\u679C\u30BB\u30C3\u30C8\u30D5\u30A3\u30EB\u30BF +Form-CheckBox=\u30D5\u30EC\u30FC\u30E0\u3092\u8907\u6570\u9078\u629E +Utils-Current_Row=\u30AB\u30EC\u30F3\u30C8\u884C +BuildIn=\u5185\u8535 +BindColumn-Results_Filter=\u7D50\u679C\u30BB\u30C3\u30C8\u306E\u30D5\u30A3\u30EB\u30BF FR-Designer-Plugin_Manager=\u30D7\u30E9\u30B0\u30A4\u30F3\u7BA1\u7406 -M_File-Export-CSV=CSV(\u30AB\u30F3\u30DE\u533A\u5207\u308A) -Data_Filter=\u30C7\u30FC\u30BF\u30D5\u30A3\u30EB\u30BF -ReportServerP-Edit_Printer=\u30D7\u30EA\u30F3\u30BF\u7DE8\u96C6 -FR-Designer_Datasource-Stored_Procedure=\u30B9\u30C8\u30A2\u30C9\u30D7\u30ED\u30B7\u30FC\u30B8\u30E3 +M_File-Export-CSV=CSV\u66F8\u5F0F(\u30B3\u30F3\u30DE\u3067\u5206\u5272) +Data_Filter=\u30C7\u30FC\u30BF\u9078\u5225 +ReportServerP-Edit_Printer=\u30D7\u30EA\u30F3\u30BF\u30FC\u7DE8\u96C6 +FR-Designer_Datasource-Stored_Procedure=\u30B9\u30C8\u30A2\u30C9 \u30D7\u30ED\u30B7\u30FC\u30B8\u30E3 RESTART=\u518D\u8D77\u52D5 FormulaD-Function_name=\u95A2\u6570\u540D -ChooseOneButton=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u30921\u3064\u9078\u629E\u3057\u3066\u304B\u3089\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044 -Priority=\u512A\u5148\u5EA6 +ChooseOneButton=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u4E00\u3064\u9078\u629E\u3057\u3066\u304B\u3089\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044 +Priority=\u512A\u5148\u30E9\u30F3\u30AF Datasource-Datasource=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 -FR-Designer_Width=\u5E45 -Cannot-Add_To_This_Area=\u9078\u629E\u30A8\u30EA\u30A2\u306B\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093 -Run=\u5B9F\u884C -Set_Submit_Condition=\u66F8\u304D\u8FBC\u307F\u6761\u4EF6\u8A2D\u5B9A +FR-Designer_Width=\u5E83\u3055 +Cannot-Add_To_This_Area=\u5730\u57DF\u306B\u306F\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093 +Run=\u904B\u884C +Set_Submit_Condition=\u6761\u4EF6\u3092\u8A2D\u7F6E\u306B\u63D0\u51FA\u3059\u308B\u3053\u3068\u306B\u3057\u305F FR-Base_Value=\u5024 fileLocked_undeleted=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u30ED\u30C3\u30AF\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u524A\u9664\u3067\u304D\u307E\u305B\u3093\u3002OK\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3001\u30EA\u30B9\u30C8\u3092\u518D\u8AAD\u307F\u8FBC\u307F\u3057\u3066\u304F\u3060\u3055\u3044\u3002 Web_Apply=WEB\u30A2\u30D7\u30EA @@ -784,537 +785,536 @@ FR-Utils-New_Folder=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0\u30FC\u306E\u4F5C\u6210 BiasD-From-upper_left_to_lower_right=\u5DE6\u4E0A\u5074\u304B\u3089\u53F3\u4E0B\u5074\u3078\u5E83\u3052\u308B CapsLock=Caps Lock\u304C\u30AA\u30F3\u306B\u306A\u3063\u3066\u3044\u308B StyleFormat-Sample=\u4F8B -RWA-Smart_Add_Cell_Group=\u30BB\u30EB\u30B0\u30EB\u30FC\u30D7\u81EA\u52D5\u8FFD\u52A0 +RWA-Smart_Add_Cell_Group=\u30A4\u30F3\u30C6\u30EA\u30B8\u30A7\u30F3\u30C8\u6DFB\u52A0\u30EC\u30A4\u30E4\u30FC\u7D44 MConfig-CancelButton=\u30AD\u30E3\u30F3\u30BB\u30EB -Function-Choose_Function_Class=\u95A2\u6570\u30AF\u30E9\u30B9\u9078\u629E -LatLng=\u7DEF\u5EA6\u7D4C\u5EA6 -DS-Server_TableData=\u30B5\u30FC\u30D0\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 -BackgroundTexture-GreenMarble=\u5927\u7406\u77F3(\u7DD1) -read_time_out=\u30ED\u30FC\u30C9\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8 -JavaScript-Commit_to_Database=DB\u306B\u66F8\u304D\u8FBC\u307F -DS-Relation_TableData=\u95A2\u9023\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 +Function-Choose_Function_Class=\u95A2\u6570\u30AF\u30E9\u30B9\u3092\u9078\u629E\u3059\u308B +LatLng=\u5EA7\u6A19 +DS-Server_TableData=\u30B5\u30FC\u30D0\u30FC\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 +BackgroundTexture-GreenMarble=\u7DD1\u8272\u306E\u5927\u7406\u77F3 +read_time_out=\u30ED\u30FC\u30C9\u306E\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8 +JavaScript-Commit_to_Database=\u5165\u5EAB\u63D0\u51FA +DS-Relation_TableData=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u95A2\u9023\u4ED8\u3051 CellWrite-Page_Before_Row=\u884C\u524D\u306E\u6539\u30DA\u30FC\u30B8 -FR-Designer-Plugin_Load_Plugins_From_Server=\u30D7\u30E9\u30B0\u30A4\u30F3\u30B9\u30C8\u30A2\u304B\u3089\u30C7\u30FC\u30BF\u53D6\u5F97\u4E2D -D-Dispaly_Divide_Result_Set_into_Groups=\u7D50\u679C\u30BB\u30C3\u30C8\u3092\u30B0\u30EB\u30FC\u30D7\u5206\u3051 -Closed=\u7D42\u4E86\u6E08\u307F -RWA-Help=\u672A\u5909\u66F4\u6642\u3067\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3057\u306A\u3044\u3092\u8A2D\u5B9A\u3059\u308B\u3068\u3001\u5E33\u7968\u306E\u4F5C\u6210\u3068\u30D7\u30EC\u30D3\u30E5\u30FC\u3092\u3059\u308B\u6642\u306B\u3001\u8A18\u9332\u5185\u5BB9\u306E\u30BB\u30EB\u306F\u7DE8\u96C6\u3084\u5909\u66F4\u3055\u308C\u306A\u3044\u305F\u3081\u3001\u3053\u306E\u8A18\u9332\u306F\u66F4\u65B0\u3055\u308C\u307E\u305B\u3093\u3002\n\u30D3\u30C3\u30B0\u30C7\u30FC\u30BF\u91CF\u306E\u691C\u7D22\u304A\u3088\u3073\u57CB\u3081\u623B\u3057\u306E\u5834\u5408\u3001\u3053\u306E\u8A2D\u5B9A\u3092\u6709\u52B9\u306B\u3059\u308C\u3070\u3001\u4F5C\u6210\u3068\u66F8\u304D\u8FBC\u307F\u306E\u6A5F\u80FD\u3092\u9AD8\u3081\u308B\u3053\u3068\u304C\u3067\u304D\u308B\u3002 -FR-Designer-Widget-Style_Custom=\u30AB\u30B9\u30BF\u30E0 -FR-Designer-Widget-Style_Render_Style=\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u30B9\u30BF\u30A4\u30EB +FR-Designer-Plugin_Load_Plugins_From_Server=\u30D7\u30E9\u30B0\u30A4\u30F3\u30DE\u30FC\u30B1\u30C3\u30C8\u304B\u3089\u30C7\u30FC\u30BF\u53D6\u5F97\u4E2D +D-Dispaly_Divide_Result_Set_into_Groups=resultset\u306E\u30B0\u30EB\u30FC\u30D7\u5206\u3051 +Closed=\u9589\u9396\u6E08\u307F +RWA-Help=\u8A2D\u7F6E\u5F8C\u306E\u6539\u6B63\u3092\u66F4\u65B0\u3057\u306A\u3044\u3068\u3001\u7533\u544A\u30D7\u30EC\u30D3\u30E5\u30FC\u30EC\u30DD\u30FC\u30C8\u306B\u8A18\u9332\u3055\u308C\u3066\u3044\u306A\u3044\u6240\u5728\u30EC\u30A4\u30E4 +FR-Designer-Widget-Style_Custom= +FR-Designer-Widget-Style_Render_Style=\u307C\u304B\u3057\u30B9\u30BF\u30A4\u30EB Highlight-Barcode=\u30D0\u30FC\u30B3\u30FC\u30C9 -FR-Designer_Connect_SQL_Cannot_Null=\u30C7\u30FC\u30BF\u63A5\u7D9A\u3068SQL\u30D1\u30CD\u30EB\u3092\u7A7A\u6B04\u306B\u3067\u304D\u307E\u305B\u3093 -trigger=\u30C8\u30EA\u30AC\u30FC +FR-Designer_Connect_SQL_Cannot_Null=\u30C7\u30FC\u30BF\u63A5\u7D9A\u3068SQL\u30D1\u30CD\u30EB\u306F\u7A7A\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +trigger=\u6A19\u984C M-Data_Analysis=\u30C7\u30FC\u30BF\u5206\u6790 -Function-The_selected_file_cannot_be_null=\u30D5\u30A1\u30A4\u30EB\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093 -No-Privilege=\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093 -ReportColumns-Repeat_Column=\u5217\u306E\u9806\u5E8F\u3092\u30B3\u30D4\u30FC -SecondGraduationUnit=\u88DC\u52A9\u76EE\u76DB\u5358\u4F4D +Function-The_selected_file_cannot_be_null=\u9078\u629E\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u306F\u7A7A\u5024\u306B\u306A\u3063\u3066\u306F\u3044\u3051\u307E\u305B\u3093 +No-Privilege=\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F +ReportColumns-Repeat_Column=\u5217\u756A\u53F7\u306E\u7E70\u308A\u8FD4\u3057 +SecondGraduationUnit=\u4E8C\u6B21\u7684\u76EE\u76DB\u308A\u5358\u4F4D Form-Widget_Property_Value=\u5C5E\u6027\u5024 -GIVE-NAME=\u540D\u524D\u3092\u4ED8\u3051\u308B -FR-Designer_Rename=\u540D\u524D\u3092\u5909\u66F4 -Utils-Merge_Cell=\u30BB\u30EB\u306E\u7D50\u5408 -Style-Spacing_After=\u6BB5\u843D\u5F8C +GIVE-NAME=\u547D\u540D +FR-Designer_Rename=\u540D\u79F0\u306E\u5909\u66F4 +Utils-Merge_Cell=\u30BB\u30EB\u3092\u7D50\u5408\u3059\u308B +Style-Spacing_After=\u6BB5\u5F8C Enlarge_Or_Reduce=\u30BA\u30FC\u30E0 Tree-Height=\u9AD8\u3055 -RCodeErrorCorrect=\u8AA4\u308A\u8A02\u6B63\u80FD\u529B +RCodeErrorCorrect=\u30A8\u30E9\u30FC\u8A02\u6B63 Enter-New-FileName=\u65B0\u3057\u3044\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 -try_resending=\u518D\u5EA6\u9001\u4FE1\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044 -M-Open_Report=\u958B\u304F... +try_resending=\u30C8\u30EA\u30AC\u30FC\u3055\u308C\u308B +M-Open_Report=\u3092\u958B\u304F... Please_Select=\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 InRow=\u884C(R) -Form-TextArea=\u30C6\u30AD\u30B9\u30C8\u30A8\u30EA\u30A2 -FR-Designer_Https_Enable=https\u3092\u6709\u52B9\u306B\u3059\u308B -Widget-Custom_Widget_Config=\u30AB\u30B9\u30BF\u30E0\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 -already_exists=\u65E2\u306B\u3042\u308A\u307E\u3059 -Original_Marked_Filed=\u30AA\u30EA\u30B8\u30CA\u30EB\u30BF\u30B0\u30D5\u30A3\u30FC\u30EB\u30C9 -BackgroundTexture-Sand=\u7802 +Form-TextArea=\u6587\u66F8\u57DF +FR-Designer_Https_Enable=https\u4F7F\u7528\u958B\u59CB +Widget-Custom_Widget_Config=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +already_exists=\u3053\u3053\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059 +Original_Marked_Filed=\u521D\u671F\u30BF\u30B0\u30D5\u30A3\u30FC\u30EB\u30C9 +BackgroundTexture-Sand=\u7802\u6D5C Values=\u5024 -Not_use_a_cell_attribute_table_editing=\u30BB\u30EB\u5C5E\u6027\u8868\u3067\u7DE8\u96C6\u3067\u304D\u307E\u305B\u3093 +Not_use_a_cell_attribute_table_editing=\u3042\u306A\u305F\u304C\u7DE8\u96C6\u3059\u308B\u30BB\u30EB\u306E\u5C5E\u6027\u30C6\u30FC\u30D6\u30EB\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068 Root=\u30EB\u30FC\u30C8\u30CE\u30FC\u30C9 cycle=\u5468\u671F -open-new-form-tip=\u73FE\u5728\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F7.1.1\u4EE5\u4E0B\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u4F5C\u6210\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001\u4E92\u63DB\u6027\u304C\u306A\u304F\u3001\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3002\u3053\u306E\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u3092\u7DE8\u96C6\u3059\u308B\u306B\u306F\u3001\u5BFE\u5FDC\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u5229\u7528\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +open-new-form-tip=711\u4EE5\u4E0B\u306E\u751F\u7523\u306E\u305F\u3081\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u73FE\u5728\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u3001\u4E92\u63DB\u6027\u304C\u306A\u3044\u3068 Support-Current_Auto_Complete_Shortcut=\u73FE\u5728\u306E\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC -GROUPING_MODE=\u4E00\u822C\u30B0\u30EB\u30FC\u30D7\u5206\u3051 -DBCP_MAX_IDLE=\u30D7\u30FC\u30EB\u306B\u4FDD\u6301\u3059\u308B\u6700\u5927\u63A5\u7D9A\u6570 -BackgroundTexture-BlueTissuePaper=\u9752\u3044\u753B\u7528\u7D19 -ReportD-Export_Hided_Row=\u975E\u8868\u793A\u884C\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 -FR-Custom_styles_lost=\u30AB\u30B9\u30BF\u30E0\u30B9\u30BF\u30A4\u30EB\u306F\u5931\u308F\u308C\u307E\u3057\u305F -Env-Des2=Servlet\u306E\u4F4D\u7F6E\u306F\u30DB\u30B9\u30C8\u30B3\u30F3\u30D4\u30E5\u30FC\u30BF\u540D\u3001\u30DD\u30FC\u30C8\u3001WEB\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3001Servlet\u306E\u7D44\u307F\u5408\u308F\u305B\u3067\u3042\u308A\u3001"http\://localhost\:8080/WebReport/ReportServer"\u306A\u30691\u3064\u306EServlet\u3092\u6307\u5411\u3057\u3066\u3044\u306A\u3051\u308C\u3070\u6210\u308A\u307E\u305B\u3093\u3002\u30DB\u30B9\u30C8\u30B3\u30F3\u30D4\u30E5\u30FC\u30BF\u540D\u3001\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3001WEB\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3001Servlet\u3092\u8A18\u5165\u3059\u308B\u3068\u3001\u81EA\u52D5\u7684\u306B\u5FC5\u8981\u306AServlet\u4F4D\u7F6E\u3092\u4F5C\u6210\u3057\u307E\u3059\u3002 -Env-Des1=\u5E33\u7968\u30B5\u30FC\u30D0\u304C\u3042\u308BWEB-INF\u30D5\u30A9\u30EB\u30C0\u30FC\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 +GROUPING_MODE=\u666E\u901A\u30B0\u30EB\u30FC\u30D7\u5206\u3051 +DBCP_MAX_IDLE=\u6700\u5927\u30A2\u30A4\u30C9\u30EB\u63A5\u7D9A\u6570 +BackgroundTexture-BlueTissuePaper=\u9752\u3044\u30B5\u30F3\u30C9\u30DA\u30FC\u30D1\u30FC +ReportD-Export_Hided_Row=\u96A0\u3057\u305F\u884C\u3092\u5C0E\u51FA +FR-Custom_styles_lost=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u30B9\u30BF\u30A4\u30EB\u306F\u5931\u308F\u308C\u307E\u3057\u305F +Env-Des2=Servlet\u306E\u4F4D\u7F6E\u306F\u30DB\u30B9\u30C8\u30B3\u30F3\u30D4\u30E5\u30FC\u30BF\u540D\u3001\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30A4\u30B9\u3001WEB\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3001 +Env-Des1=\u5E33\u7968\u30B5\u30FC\u30D0\u30FC\u304C\u3042\u308BWEB-INF\u76EE\u6B21\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 PageSetup-Placement_Center_on_Page=\u4E2D\u592E\u63C3\u3048 -sure_to_delete=\u524A\u9664\u3057\u307E\u3059\u304B -Already_exists_not_add_repeat=\u65E2\u306B\u3042\u308A\u307E\u3059 -Axis_Title=\u8EF8\u30E9\u30D9\u30EB -FR-Designer-Plugin_Install_Failed=\u30D7\u30E9\u30B0\u30A4\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u5931\u6557 +sure_to_delete=\u524A\u9664\u3092\u78BA\u8A8D\u3057\u307E\u3059 +Already_exists_not_add_repeat=\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u308B\u3001\u30EA\u30D4\u30FC\u30C8\u3092\u8FFD\u52A0\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044 +Axis_Title=\u8EF8\u306E\u8868\u984C FR-Designer-Widget-Style_Frame=\u30D5\u30EC\u30FC\u30E0 -MainGraduationUnit=\u4E3B\u76EE\u76DB\u5358\u4F4D -Second_Axis=\u7B2C2\u5EA7\u6A19\u8EF8 +MainGraduationUnit=\u4E3B\u306A\u76EE\u76DB\u308A\u5358\u4F4D +Second_Axis=\u6B21\u5EA7\u6A19\u8EF8 Classifier-Ge=\u500B -MSBold=\u30DE\u30A4\u30AF\u30ED\u30BD\u30D5\u30C8\u30E4\u30D8\u30A4 +MSBold=\u5FAE\u8EDF\u96C5\u9ED2 Form-Design_Size=\u30C7\u30B6\u30A4\u30F3\u30B5\u30A4\u30BA FR-App-Template_Save=\u4FDD\u5B58 -ExpandD-Horizontal_Extendable=\u6A2A\u5C55\u958B +ExpandD-Horizontal_Extendable=\u6A2A\u5E83\u304C\u308B RP_Authority_Edit=\u6A29\u9650\u7DE8\u96C6 -Warnning=\u6CE8\u610F -RoleName_Can_Not_Be_Null=\u5F79\u5272\u540D\u3092\u7A7A\u6B04\u306B\u3067\u304D\u307E\u305B\u3093\u3001\u307E\u305F\u3001\u91CD\u8907\u3082\u3067\u304D\u307E\u305B\u3093 -Application=\u30A2\u30D7\u30EA +Warnning=\u30EA\u30DE\u30A4\u30F3\u30C9 +RoleName_Can_Not_Be_Null=\u5F79\u5272\u540D\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u305A\u3001\u91CD\u8907\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u305B\u3093 +Application=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3 Formula_Dictionary_Display_Examples_Html=\u5B9F\u969B\u306E\u5024\u304C \=range(100)\u306E\u3068\u304D\u3001\u5B9F\u969B\u306E\u5024($$$)\u306E\u8868\u793A\u3059\u308B\u5024\u306E\u6570\u5F0F\u304C \= 0 - $$$\u306E\u3068\u304D\u3001\n\u6700\u7D42\u7684\u306A\u5B9F\u969B\u306E\u5024\u306F\u30011, 2, ..., 100\u3067\u3042\u308A\u3001\n\u305D\u306E\u8868\u793A\u7D50\u679C\u306F-1, -2, ..., -100\u3068\u306A\u308B\u3002
ECP-error_pwd=\u30D1\u30B9\u30EF\u30FC\u30C9\u30A8\u30E9\u30FC FR-Hyperlink_ChartHyperlink=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF -M_Edit-FormatBrush=\u66F8\u5F0F\u306E\u30B3\u30D4\u30FC/\u8CBC\u308A\u4ED8\u3051(B) +M_Edit-FormatBrush=\u66F8\u5F0F\u30D6\u30E9\u30B7(B) Indent-Pixel=\u753B\u7D20 -FR-Designer-Widget-Style_Border_Line=\u67A0\u306E\u592A\u3055 -Widget-Default_Widget_Config=\u57FA\u672C\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 -Version-does-not-support=\u304A\u4F7F\u3044\u306Elic\u306F\u30EA\u30E2\u30FC\u30C8\u958B\u767A\u6A5F\u80FD\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3001\u3054\u5229\u7528\u306B\u306FLIC\u3092\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +FR-Designer-Widget-Style_Border_Line=\u30D5\u30EC\u30FC\u30E0\u592A\u3055 +Widget-Default_Widget_Config=\u57FA\u672C\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +Version-does-not-support=\u73FE\u5728\u4F7F\u7528\u3057\u3066\u3044\u308Blic\u306F\u9060\u9694\u30C7\u30B6\u30A4\u30F3\u6A5F\u80FD\u306B\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3002 StyleAlignment-Right_To_Left=\u53F3\u304B\u3089\u5DE6\u3078 -Style-Spacing_Before=\u6BB5\u843D\u524D -Has_Existed=\u65E2\u306B\u3042\u308B -FR-Designer_DisplayNothingBeforeQuery=\u30AF\u30A8\u30EA\u30AF\u30EA\u30C3\u30AF\u524D\u306B\u5E33\u7968\u5185\u5BB9\u3092\u8868\u793A\u3057\u306A\u3044 +Style-Spacing_Before=\u6BB5\u524D +Has_Existed=\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059 +FR-Designer_DisplayNothingBeforeQuery=\u30EC\u30DD\u30FC\u30C8\u304C\u8868\u793A\u3055\u308C\u307E\u305B\u3093\u524D\u306B\u5185\u5BB9\u3092\u78BA\u8A8D\u3059\u308B]\u3092\u30AF\u30EA Still=\u4F9D\u7136\u3068\u3057\u3066 -JS_WARNING2=\ \u4F8B\:http\://localhost\:8075/WebReport/demo.js -JS_WARNING1= \u76F8\u5BFE\u7684\u5E33\u7968\u5DE5\u7A0B\u306EWebReport\u306E\u30D5\u30A9\u30EB\u30C0\u30FC\u304C\u3001WebReport\\js\u4E0B\u306B\u5F15\u7528\u3059\u308Bjs\u30D5\u30A1\u30A4\u30EBtest.js\u304C\u3042\u308B\u5834\u5408\u3001
 \u76F8\u5BFE\u30D1\u30B9\u306Fjs/test.js\u306B\u306A\u308A\u307E\u3059 -Connectionline=\u63A5\u7D9A\u30E2\u30FC\u30C9 +JS_WARNING2=\ \u4F8B\uFF1Ahttp\://localhost\:8075/WebReport/demo.js +JS_WARNING1= \u76F8\u5BFE\u7684\u5E33\u7968\u5DE5\u7A0B\u306EWebReport\u306E\u76EE\u6B21\u304C\u3001WebReport\\js\u4E0B\u306B\u5F15\u7528\u3059\u308Bjs +Connectionline=\u63A5\u7D9A\u30EF\u30A4\u30E4\u30E2\u30C7\u30EB Utils-Insert_Record=\u8A18\u9332\u633F\u5165 -Set-Parameter-Name=\u4E8B\u524D\u306B\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044 +Set-Parameter-Name=\u307E\u305A\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u540D\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044 More-information=\u8A73\u7D30\u60C5\u5831 -Parameter-Boolean=\u30D6\u30FC\u30EB +Parameter-Boolean=\u8AD6\u7406\u578B FRFont-Strikethrough=\u53D6\u308A\u6D88\u3057\u7DDA -Server-version-tip=\u4ECA\u63A5\u7D9A\u3055\u308C\u3066\u3044\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u3054\u4F7F\u7528\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3088\u308A\u4F4E\u3044\u306E\u3067\u3001\u5F15\u304D\u7D9A\u304D\u63A5\u7D9A\u3059\u308B\u3068\u3001\u7DE8\u96C6\u306E\u3044\u304F\u3064\u304B\u306E\u5C5E\u6027\u306F\u6709\u52B9\u7684\u306B\u4FDD\u5B58\u3067\u304D\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u63A5\u7D9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308C\u3070\u3001\u304A\u4F7F\u3044\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3068\u30C1\u30A7\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044 -Form-All_Files=\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB -DBCP_NUM_TEST_PER_EVCTION_RUN=1\u56DE\u306E\u691C\u8A3C\u5F53\u305F\u308A\u306E\u5BFE\u8C61\u63A5\u7D9A\u6570 +Server-version-tip=\u3042\u306A\u305F\u306F\u3001\u73FE\u5728\u3001\u3042\u306A\u305F\u306F\u3044\u304F\u3064\u304B\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u304C\u52B9\u679C\u7684\u306B\u4FDD\u5B58\u3059\u308B\u3053\u3068\u304C +Form-All_Files=\u5168\u3066\u306E\u30D5\u30A1\u30A4\u30EB +DBCP_NUM_TEST_PER_EVCTION_RUN=\u30A2\u30A4\u30C9\u30EB\u63A5\u7D9A\u30EA\u30B5\u30A4\u30AF\u30EB\u691C\u67FB\u6570 FR-Designer-FRFont_Family=\u540D\u524D -Device=\u30C7\u30D0\u30A4\u30B9 +Device=\u8A2D\u5099 M_Insert-Cell=\u30BB\u30EB\u8981\u7D20 -Present-Formula_Present=\u6570\u5F0F\u5F62\u614B +Present-Formula_Present=\u516C\u5F0F\u30D5\u30A9\u30EB\u30E0 FRFont-Superscript=\u4E0A\u4ED8\u304D CellWrite-Page_Before_Column=\u5217\u524D\u306E\u6539\u30DA\u30FC\u30B8 -Golden=\u91D1\u8272 -Preference-Support_Cell_Editor_Definition=\u30BB\u30EB\u30A8\u30C7\u30A3\u30BF\u3092\u30B5\u30DD\u30FC\u30C8 +Golden=\u30B4\u30FC\u30EB\u30C7\u30F3 +Preference-Support_Cell_Editor_Definition=\u30BB\u30EB\u30A8\u30C7\u30A3\u30BF\u30FC\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B M-Page_Preview=\u30DA\u30FC\u30B8\u5225\u30D7\u30EC\u30D3\u30E5\u30FC HJS-CC_to=CC -Tree-Select_Leaf_Only=\u30EA\u30FC\u30D5\u30CE\u30FC\u30C9\u3060\u3051\u3092\u623B\u3059 -Pointer-A-Tick-Order=\u30E1\u30FC\u30BF\u30FC\u3068\u76EE\u76DB\u306E\u8868\u793A\u5358\u4F4D +Tree-Select_Leaf_Only=\u8449\u30CE\u30FC\u30C9\u306B\u623B\u308B +Pointer-A-Tick-Order=\u30DD\u30A4\u30F3\u30BF\u5024\u3068\u76EE\u76DB\u308A\u5024\u306E\u6570\u91CF\u30E9\u30F3\u30AF Pink=\u30D4\u30F3\u30AF StyleAlignment-Distibuted=\u5747\u7B49\u5272\u308A\u4ED8\u3051 Odd=\u5947\u6570 -already-saved=\u4FDD\u5B58\u6E08\u307F -FR-Hyperlink_Chart_Cell=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u30BB\u30EB\u9023\u52D5 +already-saved=\u4FDD\u5B58\u3055\u308C\u3066\u3044\u308B +FR-Hyperlink_Chart_Cell=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u9023\u52D5\u30BB\u30EB Style-Left_Indent=\u5DE6\u30A4\u30F3\u30C7\u30F3\u30C8 -Offline=\u30AA\u30D5\u30E9\u30A4\u30F3 +Offline=\u79BB\u7EBF Form-Hierarchy_Tree_Next=\u6B21 -Needle=\u6307\u91DD +Needle=\u30DD\u30A4\u30F3\u30BF GoogleMap=Google\u30DE\u30C3\u30D7 -Running=\u5B9F\u884C\u4E2D -M_Edit-Unmerge_Cell=\u30BB\u30EB\u7D50\u5408\u306E\u89E3\u9664 -Out_Border_Line=\u5916\u67A0 -Style-Spacing=\u9593\u9694 -FR-Utils_Submit=\u66F8\u304D\u8FBC\u307F +Running=\u904B\u884C\u4E2D +M_Edit-Unmerge_Cell=\u30BB\u30EB\u3092\u5206\u5272\u3059\u308B +Out_Border_Line=\u5916\u5074\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 +Style-Spacing=\u9593\u9694\u8DDD\u96E2 +FR-Utils_Submit=\u63D0\u51FA ReportServerP-Previous=\u524D\u30DA\u30FC\u30B8 -StyleAlignment-Text_Style=\u6587\u5B57\u306E\u5236\u5FA1 +StyleAlignment-Text_Style=\u30C6\u30AD\u30B9\u30C8\u30B9\u30BF\u30A4\u30EB RelatedChart=\u30B0\u30E9\u30D5\u9023\u52D5 -ProcessManager=\u30D5\u30ED\u30FC\u7BA1\u7406 -Cancel_Repeat_Attributes=\u91CD\u8907\u884C\u5217\u89E3\u9664 +ProcessManager=\u30D7\u30ED\u30BB\u30B9\u7BA1\u7406 +Cancel_Repeat_Attributes=\u30EA\u30D4\u30FC\u30C8\u30E9\u30F3\u30AF\u3092\u30AD\u30E3\u30F3\u30BB\u30EB\u3059\u308B\u306B\u306F FR-App-File_Message=\u60C5\u5831 -Datasource-Stored_Procedure=\u30B9\u30C8\u30A2\u30C9\u30D7\u30ED\u30B7\u30FC\u30B8\u30E3 -RWA-Row_Offset=\u884C\u306E\u30AA\u30D5\u30BB\u30C3\u30C8 +Datasource-Stored_Procedure=\u30B9\u30C8\u30A2\u30C9 \u30D7\u30ED\u30B7\u30FC\u30B8\u30E3 +RWA-Row_Offset=\u884C\u30AA\u30D5\u30BB\u30C3\u30C8 M_Format-Style=\u30B9\u30BF\u30A4\u30EB -detail_description=\u8A73\u7D30\u8A18\u8FF0 -FR-Designer-Widget-Style_Title_Content=\u30BF\u30A4\u30C8\u30EB\u5185\u5BB9 -ParameterD-Report_Parameter=\u5E33\u7968\u30D1\u30E9\u30E1\u30FC\u30BF -HF-Edit_Header=\u30D8\u30C3\u30C0\u30FC\u7DE8\u96C6 +detail_description=\u8A73\u7D30\u306A\u8AAC\u660E +FR-Designer-Widget-Style_Title_Content=\u6A19\u984C\u5185\u5BB9 +ParameterD-Report_Parameter=\u5E33\u7968\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +HF-Edit_Header=\u30D8\u30C3\u30C0\u7DE8\u96C6 Sytle-FRFont=\u30D5\u30A9\u30F3\u30C8 -FR-Designer_Finish_Export=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u5B8C\u4E86 +FR-Designer_Finish_Export=\u5C0E\u51FA\u5B8C\u4E86 MultiFileUpload=\u8907\u6570\u30D5\u30A1\u30A4\u30EB\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9 HF-Page_Number=\u30DA\u30FC\u30B8\u756A\u53F7 Style-Right_Indent=\u53F3\u30A4\u30F3\u30C7\u30F3\u30C8 Desktop=\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7 FR-Server-All_Error=\u30A8\u30E9\u30FC -ConditionB-Operator=\u6F14\u7B97\u5B50 +ConditionB-Operator=\u64CD\u4F5C Today=\u4ECA\u65E5 -Form-Widget_Name=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u540D -Covered_All=\u3059\u3079\u3066\u4E0A\u66F8\u304D +Form-Widget_Name=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u540D +Covered_All=\u5168\u3066\u8986\u3046 Day=\u65E5 External=\u5916\u90E8 -Black_Font=SimHei -LOG-Report_Server_IS_Started=\u5E33\u7968\u30B5\u30FC\u30D0\u306F\u8D77\u52D5\u6E08\u307F -Tips\:You_Can_Input_B1_To_Input_The_Data_Of_The_First_Row_Second_Column=\u30D2\u30F3\u30C8\:B1\u3092\u5165\u529B\u3059\u308B\u3068\u3001\u30BB\u30EBB1\u306E\u30C7\u30FC\u30BF\u3092\u53C2\u7167\u3067\u304D\u307E\u3059\u3002 -FR-Designer_ChooseOneButton=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u9078\u629E\u3057\u3066\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044 -Widget-Sizing=\u30B5\u30A4\u30BA\u8ABF\u6574 -NO_Border_Line=\u67A0\u306A\u3057 +Black_Font=\u592A\u5B57 +LOG-Report_Server_IS_Started=\u5E33\u7968\u30B5\u30FC\u30D0\u30FC\u3082\u3046\u8D77\u52D5\u3055\u308C\u3066\u3044\u307E\u3059 +Tips\:You_Can_Input_B1_To_Input_The_Data_Of_The_First_Row_Second_Column=\u30D2\u30F3\u30C8\:B1\u3092\u5165\u529B +FR-Designer_ChooseOneButton=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u4E00\u3064\u9078\u629E\u3057\u3066\u304B\u3089\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044 +Widget-Sizing=\u5927\u304D\u3055\u8ABF\u6574 +NO_Border_Line=\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3\u7121\u3057 Cell_Data=\u30BB\u30EB\u30C7\u30FC\u30BF -StyleAlignment-Vertical_Text=\u6587\u5B57\u7E26\u66F8\u304D -Label=\u30E9\u30D9\u30EB +StyleAlignment-Vertical_Text=\u6587\u5B57\u3092\u7E26\u306B\u3059\u308B +Label=\u30BF\u30B0 Orange=\u30AA\u30EC\u30F3\u30B8 -zeroMarginWarn=\u30D7\u30EA\u30F3\u30BF\u306F\u7269\u7406\u7684\u306A\u4F59\u767D\u304C\u5FC5\u8981\u306A\u305F\u3081
\u5E33\u7968\u306E\u30DE\u30FC\u30B8\u30F3\u306E\u8A2D\u5B9A\u304C\u5C0F\u3055\u3059\u304E\u308B\u3068
\u5185\u5BB9\u306E\u5370\u5237\u304C\u4E0D\u5B8C\u5168\u306B\u306A\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002
  +zeroMarginWarn=\u30D7\u30EA\u30F3\u30BF\u306F\u5C0F\u3055\u306A\u7F36
\u30B3\u30F3\u30C6\u30F3\u30C4\u4E0D\u8DB3\u3092\u5370\u5237\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u3001\u7269\u7406\u30DE\u30FC\u30B8\u30F3 Widget-Date_Selector_Return_Type=\u623B\u308A\u5024\u30BF\u30A4\u30D7 -Utils-Switch_To_Template_Reportlet=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30CD\u30C3\u30C8\u5E33\u7968\u306B\u5207\u308A\u66FF\u3048\u308B +Utils-Switch_To_Template_Reportlet=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u5E33\u7968\u306B\u5207\u308A\u66FF\u3048 satisfy=\u6761\u4EF6\u3092\u6E80\u305F\u3059 -FR-Designer_WidgetDisplyPosition=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u8868\u793A\u4F4D\u7F6E +FR-Designer_WidgetDisplyPosition=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u8868\u793A\u4F4D\u7F6E FR-Base_Top=\u4E0A -FR-Designer_Form-CheckBox=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 -Reportlet-Parameter_Type=\u30D1\u30E9\u30E1\u30FC\u30BF\u8EE2\u9001\u65B9\u6CD5 +FR-Designer_Form-CheckBox=\u30D5\u30EC\u30FC\u30E0\u3092\u8907\u6570\u9078\u629E +Reportlet-Parameter_Type=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u4F1D\u9054\u65B9\u6CD5 sending=\u9001\u4FE1\u4E2D... FR-Designer-FRFont_Foreground=\u8272 -FR-Import-Export_SVG=SVG +FR-Import-Export_SVG=SVG\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 M_Edit-Clear_Contents=\u5185\u5BB9(C) Session=\u30BB\u30C3\u30B7\u30E7\u30F3 -Widget-Load_Type=\u30ED\u30FC\u30C9 -template_unsaved=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u4FDD\u5B58\u304C\u3067\u304D\u307E\u305B\u3093 -check_communication=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u901A\u4FE1\u3068\u30B5\u30FC\u30D0\u72B6\u614B\u3092\u30C1\u30A7\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044 -List-Need_Head=\u30EA\u30B9\u30C8\u30D8\u30C3\u30C0\u30FC\u5FC5\u8981 -FR-Designer-Plugin_Has_Been_Installed=\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u307E\u3057\u305F\u3002\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3057\u305F\u3044\u5834\u5408\u3001\u30D7\u30E9\u30B0\u30A4\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u306B\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044 -FR-Widget_Tree_And_Table=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u30C4\u30EA\u30FC\u3068\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u8868 +Widget-Load_Type=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9 +template_unsaved=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u4FDD\u5B58\u3067\u304D\u306A\u3044 +check_communication=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u901A\u4FE1\u304C\u6B63\u5E38\u3067\u3042\u308A\u3001\u30B5\u30FC\u30D0\u304C\u52D5\u4F5C\u3057\u3066\u3044\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060 +List-Need_Head=\u30EA\u30B9\u30C8\u30D8\u30C3\u30C9\u304C\u5FC5\u8981\u3067\u3059 +FR-Designer-Plugin_Has_Been_Installed=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u3092 +FR-Widget_Tree_And_Table=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u30C4\u30EA\u30FC\u3068\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u8868 FR-Base_Help=\u30D8\u30EB\u30D7 -FR-Designer-Plugin_Update_Successful=\u30D7\u30E9\u30B0\u30A4\u30F3\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C8\u7D42\u4E86\u3001\u30B5\u30FC\u30D0\u518D\u8D77\u52D5\u3067\u6709\u52B9\u306B\u3059\u308B -August=8\u6708 -LOG-Is_Being_Openned=\u8AAD\u307F\u8FBC\u307F\u4E2D +FR-Designer-Plugin_Update_Successful=\u30D7\u30E9\u30B0\u30A4\u30F3\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u306B\u6210\u529F\u3057\u307E\u3057\u305F\u3002\u30B5\u30FC\u30D0\u30FC\u3092 +August=\u516B\u6708 +LOG-Is_Being_Openned=\u958B\u3044\u3066\u3044\u307E\u3059 BackgroundTexture-Oak=\u30AA\u30FC\u30AF Multi_nam_formula=\ \u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u540D\: \u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u6761\u4EF6\: -TurnOn=\u30AA\u30F3 +TurnOn=\u8D77\u52D5 HJS-Send_Successfully=\u9001\u4FE1\u6210\u529F Mon=\u6708 -Inner_Parameter=\u7D44\u307F\u8FBC\u307F\u30D1\u30E9\u30E1\u30FC\u30BF -Required=\u8A18\u5165\u5FC5\u8981 -Summary=\u96C6\u8A08 +Inner_Parameter=\u5185\u8535\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +Required=\u8A18\u5165\u5FC5\u9808 +Summary=\u6982\u8981 template_unopened=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 FR-Base_Bottom=\u4E0B DataFunction-Min=\u6700\u5C0F\u5024 StyleFormat-Percent=\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8 -FR-App-All_Custom=\u30AB\u30B9\u30BF\u30E0 +FR-App-All_Custom=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA M_Insert-Data_Column=\u30C7\u30FC\u30BF\u5217 -PLEASE=\u3069\u3046\u305E -Numbers=\u6570\u91CF +PLEASE=\u3057\u3066\u304F\u3060\u3055\u3044 +Numbers=\u6841\u6570 Release_Lock=\u30A2\u30F3\u30ED\u30C3\u30AF Background-Background_is_NULL=\u80CC\u666F\u306A\u3057 FR-Designer_Sytle-FRFont=\u30D5\u30A9\u30F3\u30C8 -Gradation=\u30EC\u30D9\u30EB\u5225 +Gradation=\u69CB\u6210 The_current_list_is_empty=\u73FE\u5728\u306E\u30EA\u30B9\u30C8\u306F\u7A7A\u3067\u3059 -Formula_Dictionary_Display_Examples=\u5B9F\u969B\u306E\u5024\u304C \=range(100)\u306E\u3068\u304D\u3001\u5B9F\u969B\u306E\u5024($$$)\u306E\u8868\u793A\u3059\u308B\u5024\u306E\u6570\u5F0F\u304C \= 0 - $$$\u306E\u3068\u304D\u3001\n\u6700\u7D42\u7684\u306A\u5B9F\u969B\u306E\u5024\u306F\u30011, 2, ..., 100\u3067\u3042\u308A\u3001\n\u305D\u306E\u8868\u793A\u7D50\u679C\u306F-1, -2, ..., -100\u3068\u306A\u308B\u3002 -Schedule-Template_Parameter=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF -JSShow=\u30C0\u30A4\u30CA\u30DF\u30C3\u30AF\u8868\u793A -Level_coordinates=\u968E\u5C64\u5EA7\u6A19 -MainGraduationLine=\u4E3B\u76EE\u76DB\u7DDA -Hyperlink-Web_link=\u30A6\u30A7\u30D6\u30DA\u30FC\u30B8\u30EA\u30F3\u30AF -StyleAlignment-between_-90_and_90=-90\u304B\u308990\u306E\u7BC4\u56F2 -FormulaD-Custom_Function=\u30AB\u30B9\u30BF\u30E0\u95A2\u6570 +Formula_Dictionary_Display_Examples=\ \u5B9F\u969B\u5024\u7BC4\u56F2\u306F\ +Schedule-Template_Parameter=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +JSShow=\u52D5\u614B\u8868\u793A +Level_coordinates=\u30EC\u30D9\u30EB\u306E\u5EA7\u6A19 +MainGraduationLine=\u30E1\u30A4\u30F3\u30B9\u30B1\u30FC\u30EB\u30E9\u30A4\u30F3 +Hyperlink-Web_link=\u30A6\u30A7\u30D6\u30EA\u30F3\u30AF +StyleAlignment-between_-90_and_90=-90\u304B\u308990\u307E\u3067\u306E\u7BC4\u56F2\u3067 +FormulaD-Custom_Function=\u30E6\u30FC\u30B6\u5B9A\u7FA9\u95A2\u6570 FR-Designer_Integer=\u6574\u6570 PageSetup-Finis_Start_Row=\u91CD\u8907\u30D5\u30C3\u30BF\u30FC\u884C RWA-Remove_Field=\u30D5\u30A3\u30FC\u30EB\u30C9\u524A\u9664 Form-Desin_Width=\u30C7\u30B6\u30A4\u30F3\u5E45 -No-tableData=\u623B\u3055\u308C\u305F\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u304C\u3042\u308A\u307E\u305B\u3093 +No-tableData=\u623B\u3057\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u304C\u3042\u308A\u307E\u305B\u3093 Page_Total=\u5408\u8A08 -FR-Designer-Plugin_Connect_Server_Error=\u30D7\u30E9\u30B0\u30A4\u30F3\u30B9\u30C8\u30A2\u63A5\u7D9A\u5931\u6557\u3001\u5F8C\u3067\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Designer-Plugin_Connect_Server_Error=\u30D7\u30E9\u30B0\u30A4\u30F3\u30DE\u30FC\u30B1\u30C3\u30C8\u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093\u3002\uFF0C\u5F8C\u3067\u518D\u5EA6 Import-Excel_Source=Excel\u30BD\u30FC\u30B9 Utils-Left_to_Right_a=\u5DE6\u304B\u3089\u53F3\u3078 -ExpandD-Expand_Attribute=\u5C55\u958B\u5C5E\u6027 -Report-Write_Attributes=\u5E33\u7968\u66F8\u304D\u8FBC\u307F\u5C5E\u6027 -Utils-Current_Column=\u73FE\u5728\u306E\u5217 -Need_Max_Value=\u6700\u5927\u5024\u5FC5\u8981 -Report_Not_Exist=\u9078\u629E\u3055\u308C\u305F\u5E33\u7968\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 -HF-Insert_Content=\u5185\u5BB9\u306E\u633F\u5165 +ExpandD-Expand_Attribute=\u5C5E\u6027\u3092\u62E1\u5F35\u3059\u308B +Report-Write_Attributes=\u5E33\u7968\u8A18\u5165\u5C5E\u6027 +Utils-Current_Column=\u30AB\u30EC\u30F3\u30C8\u5217 +Need_Max_Value=\u6700\u5927\u5024\u304C\u5FC5\u8981 +Report_Not_Exist=\u9078\u629E\u3057\u305F\u5E33\u7968\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\uFF01 +HF-Insert_Content=\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u633F\u5165 UpParent=\u4E0A\u89AA\u30BB\u30EB PageSetup-Page=\u30DA\u30FC\u30B8 -Utils-Move_Up=\u4E0A\u3078 -BackgroundTexture-PurpleMesh=\u7D2B\u306E\u30E1\u30C3\u30B7\u30E5 -Export-Word=Word -ServerM-Widget_Manager=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u7BA1\u7406 -FR-Designer-Basic_Activation_Key=\u30C7\u30B6\u30A4\u30CA\u30FC\u756A\u53F7\: -FR-App-Template_Report_Not_Exist=\u9078\u629E\u3057\u305F\u5E33\u7968\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\! +Utils-Move_Up=\u4E0A\u3078\u79FB\u52D5 +BackgroundTexture-PurpleMesh=\u7D2B\u8272\u306E\u30E1\u30C3\u30B7\u30E5 +Export-Word=Word\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +ServerM-Widget_Manager=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u7BA1\u7406 +FR-Designer-Basic_Activation_Key=\u30C7\u30B6\u30A4\u30CA\u30FC\u6574\u7406\u756A\u53F7\uFF1A +FR-App-Template_Report_Not_Exist=\u9078\u629E\u3057\u305F\u5E33\u7968\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\! Protected=\u4FDD\u8B77 Skip=\u30B9\u30AD\u30C3\u30D7 -FR-Designer_PageSetup-Vertically=\u4E0A\u4E0B\u4E2D\u592E\u63C3\u3048 -revert=\u5143\u306B\u623B\u3059 -PageSetup-Predefined=\u4E8B\u524D\u5B9A\u7FA9 +FR-Designer_PageSetup-Vertically=\u5782\u76F4\u4E2D\u592E\u63C3\u3048 +revert=\u3084\u308A\u76F4\u3059 +PageSetup-Predefined=\u30D7\u30EC\u5B9A\u7FA9 Border-Style-Radius=\u89D2\u4E38 IntPart=\u6574\u6570\u90E8\u5206 -ExpandD-Data_Column=\u30C7\u30FC\u30BF\u5217 +ExpandD-Data_Column=\u30C7\u30FC\u30BF\u30B3\u30E9\u30E0 Sort-Ascending=\u6607\u9806 FR-Designer-Widget_Style=\u30B9\u30BF\u30A4\u30EB -parameter_name_exist=\u6307\u5B9A\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u306F\u5229\u7528\u3055\u308C\u3066\u3044\u307E\u3059 -FR-Designer_Layer-Build=\u4E00\u822C\u30EC\u30A4\u30E4\u5225\u69CB\u7BC9 -Please_Rename=\u540D\u524D\u3092\u5909\u66F4\u3057\u3066\u304F\u3060\u3055\u3044 -Form-Editing_Listeners=\u30A4\u30D9\u30F3\u30C8\u3092\u7DE8\u96C6 -RWA-Smart_Add_Fields=\u30D5\u30A3\u30FC\u30EB\u30C9\u81EA\u52D5\u8FFD\u52A0 +parameter_name_exist=\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u306F\u65E2\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059 +FR-Designer_Layer-Build=\u30D5\u30A1\u30BB\u30C3\u30C8\u7D44\u307F\u7ACB\u3066 +Please_Rename=\u518D\u5EA6\u547D\u540D\u3057\u3066\u304F\u3060\u3055\u3044 +Form-Editing_Listeners=\u4E8B\u4EF6\u7DE8\u96C6 +RWA-Smart_Add_Fields=\u30A4\u30F3\u30C6\u30EA\u30B8\u30A7\u30F3\u30C8\u8FFD\u52A0\u30D5\u30A3\u30FC\u30EB\u30C9 FR-Designer-Tree_Width=\u5E45 Record=\u8A18\u9332 -Poly-Report_Component=\u30D6\u30ED\u30C3\u30AF\u5E33\u7968\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8 +Poly-Report_Component=\u805A\u5408\u5E33\u7968\u30A2\u30BB\u30F3\u30D6\u30EA Options=\u30AA\u30D7\u30B7\u30E7\u30F3 -NS-war-remote=\u30A8\u30E9\u30FC\u30B3\u30FC\u30C9\:1117 \u30EA\u30E2\u30FC\u30C8\u958B\u767A\u3067\u306F\u3001\u5727\u7E2E\u5C55\u958B\u306F\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093 +NS-war-remote=\u30A8\u30E9\u30FC\u30B3\u30FC\u30C9\:11100017 \u5727\u7E2E\u914D\u7F6E\u306F\u9060\u9694\u30C7\u30B6\u30A4\u30F3\u306B\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093 Sche-Minute=\u5206 -Three_Rows_Of_Three_Grid=3\u884C3\u5217\u306E\u30B0\u30EA\u30C3\u30C9 -WorkSheet=\u81EA\u7531\u5E33\u7968 -FR-Designer-Widget_Size=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u30B5\u30A4\u30BA -BindColumn-Select=\u4E00\u89A7 +Three_Rows_Of_Three_Grid=3\u4E57\u306E3\u3064\u306E\u884C +WorkSheet=\u30EF\u30FC\u30AF\u30B7\u30FC\u30C8 +FR-Designer-Widget_Size=\u5927\u304D\u3055\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +BindColumn-Select=\u30EA\u30B9\u30C8 FR-Widget_Mobile_Terminal=\u30E2\u30D0\u30A4\u30EB\u7AEF\u672B -FR-Background_Image_Titled=\u4E26\u3079\u3066\u8868\u793A -SetPrinterOffset=\u5370\u5237\u30AA\u30D5\u30BB\u30C3\u30C8 +FR-Background_Image_Titled=\u5C55\u958B +SetPrinterOffset=\u5B89\u3044\u30D7\u30EA\u30F3\u30BF FR-Designer-Plugin_Installed=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u6E08\u307F FR-Designer-Hyperlink_Name=\u540D\u524D FR-Designer_Form-Button=\u30DC\u30BF\u30F3 Black=\u30D6\u30E9\u30C3\u30AF -FR-Designer-Widget-Style_Border_Color=\u67A0\u306E\u8272 -Set_Submit_Event=\u63D0\u51FA\u30A4\u30D9\u30F3\u30C8\u8A2D\u5B9A -PDF-Print_isPopup=\u8A2D\u5B9A\u30DC\u30C3\u30AF\u30B9\u3092\u8868\u793A -LayerPageReport_CountPerPage=\u5404\u30DA\u30FC\u30B8\u306E\u8A18\u9332\u6570 -Display_Modes=\u8868\u793A\u30E2\u30FC\u30C9 -RowSpan=\u884C\u30B9\u30D1\u30F3 +FR-Designer-Widget-Style_Border_Color=\u30D5\u30EC\u30FC\u30E0\u8272 +Set_Submit_Event=\u63D0\u51FA\u4E8B\u4EF6\u3092\u8A2D\u5B9A +PDF-Print_isPopup=\u8A2D\u5B9A\u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7\u3059\u308B\u304B\u5426\u304B +LayerPageReport_CountPerPage=\u6BCE\u30DA\u30FC\u30B8\u8A18\u9332\u6570 +Display_Modes=\u30E2\u30C7\u30EB\u3092\u8868\u793A +RowSpan=\u884C\u7BC4\u56F2 Datasource-Test_Connection=\u63A5\u7D9A\u30C6\u30B9\u30C8 Function-Function_Manager=\u95A2\u6570\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC -Host_Name=\u30DB\u30B9\u30C8\u540D +Host_Name=\u30DB\u30B9\u30C8\u30B3\u30F3\u30D4\u30E5\u30FC\u30BF\u540D CellWrite-Show_As_HTML=HTML\u3067\u5185\u5BB9\u3092\u8868\u793A -FR-Designer-Widget-Style_Shadow=\u5F71 +FR-Designer-Widget-Style_Shadow=\u9670\u5F71 FR-Designer_Parameter_String=\u6587\u5B57\u5217 -Form-SupportTag=\u30BF\u30B0\u5F62\u5F0F\u3067\u8868\u793A -ReportD-Report_Write_Attributes=\u5E33\u7968\u66F8\u304D\u8FBC\u307F\u5C5E\u6027 -DataFunction-Count=\u500B\u6570 -Top_And_Thick_Bottom_Border_Line=\u4E0A\u7F6B\u7DDA + \u4E0B\u592A\u7F6B\u7DDA -Client=\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8 -BindColumn-Result_Serial_Number_Start_From_1=\u756A\u53F7\u306F1\u304B\u3089\u59CB\u3081\u308B -History=\u5C65\u6B74 -Already_exists=\u65E2\u306B\u3042\u308A\u307E\u3059 +Form-SupportTag=\u30BF\u30B0\u306B\u8868\u793A +ReportD-Report_Write_Attributes=\u5E33\u7968\u66F8\u5F0F\u5C5E\u6027 +DataFunction-Count=\u4EF6\u6570 +Top_And_Thick_Bottom_Border_Line=\u4E0A\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3\u3068\u7C97\u4E0B\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 +Client=\u9867\u5BA2\u5074 +BindColumn-Result_Serial_Number_Start_From_1=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306E\u756A\u53F7\u306F1\u304B\u3089 +History=\u6B74\u53F2 +Already_exists=\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u308B\u5834\u5408\u3001\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\uFF01 Datasource-Original_Charset=\u30AA\u30EA\u30B8\u30CA\u30EB\u6587\u5B57\u30B3\u30FC\u30C9 FR-Base_Left=\u5DE6 ReportServerP-Next=\u6B21\u30DA\u30FC\u30B8 -BindColumn-Top_N=\u4E0A\u4F4DN\u9805\u76EE -Animation_Special=\u7279\u6B8A\u52B9\u679C -Widget-Chart_Widget_Config=\u30B0\u30E9\u30D5\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 -FR-Designer-Plugin_Cannot_Update_Not_Install=\u30D7\u30E9\u30B0\u30A4\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u5931\u6557\u3001\u5F53\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u6B63\u5E38\u306B\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u305F\u304B\u3069\u3046\u304B\u30C1\u30A7\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044 -After_Changed_Some_Attributes_Are_Different=\u5909\u63DB\u5F8C\u5E33\u7968\u306E\u5C5E\u6027\u304C\u5909\u66F4\u3055\u308C\u307E\u3059\u3001\u7D9A\u3051\u307E\u3059\u304B -PieStyle=\u5186\u72B6 -HF-Are_you_sure_to_delete_it=\u3053\u306E\u8981\u7D20\u3092\u524A\u9664\u3057\u307E\u3059\u304B +BindColumn-Top_N=\u524D\u306EN\u500B +Animation_Special=\u7279\u5225\u306B\u826F\u3044\u52B9\u679C +Widget-Chart_Widget_Config=\u30B0\u30E9\u30D5\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +FR-Designer-Plugin_Cannot_Update_Not_Install=\u30D7\u30E9\u30B0\u30A4\u30F3\u66F4\u65B0\u3092\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3002\u5F53\u8A72 +After_Changed_Some_Attributes_Are_Different=\u30D7\u30ED\u30D1\u30C6\u30A3\u306E\u3044\u304F\u3064\u304B\u306E\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8\u306E\u5F8C\u306B\u5909\u63DB\u304C\u7D99\u7D9A\u3059\u308B\u304B\u3069\u3046\u304B\u3001\u5909\u66F4\u3055\u308C\u307E\u3059 +PieStyle=\u30D1\u30A4 +HF-Are_you_sure_to_delete_it=\u5F53\u8A72\u9805\u76EE\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B Utils-Design-File_Open=\u958B\u304F -FR-Utils_Label=\u30E9\u30D9\u30EB -Data-Label=\u30E9\u30D9\u30EB +FR-Utils_Label=\u30BF\u30B0 +Data-Label=\u30BF\u30B0 M_Insert-Text=\u30C6\u30AD\u30B9\u30C8 Form-View_Tree=\u30D3\u30E5\u30FC\u30C4\u30EA\u30FC -M_Insert-Chart=\u30B0\u30E9\u30D5 +M_Insert-Chart=\u56F3 HF-Even_Page=\u5076\u6570\u30DA\u30FC\u30B8 -ReportServerP-Report_server_parameter=\u5E33\u7968\u30B5\u30FC\u30D0\u30D1\u30E9\u30E1\u30FC\u30BF -JavaScript-Form_Submit=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u66F8\u304D\u8FBC\u307F -Horizontal-Split_Layout=\u6C34\u5E73\u5206\u5272\u30EC\u30A4\u30A2\u30A6\u30C8 -BorderLayout-Center=\u4E2D\u592E -INFO-Reset_Webapp=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30B5\u30FC\u30D0\u306E\u518D\u8A2D\u5B9A +ReportServerP-Report_server_parameter=\u5E33\u7968\u30B5\u30FC\u30D0\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +JavaScript-Form_Submit=\u8868\u63D0\u51FA +Horizontal-Split_Layout=\u6C34\u5E73\u5206\u5272\u914D\u7F6E +BorderLayout-Center=\u4E2D +INFO-Reset_Webapp=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30B5\u30FC\u30D0\u30FC\u306E\u518D\u8A2D\u5B9A FR-Designer_Text=\u30C6\u30AD\u30B9\u30C8 -IN_and_INOUT_type_not_as_cursor=IN\u3068INOUT\u30BF\u30A4\u30D7\u306F\u30AB\u30FC\u30BD\u30EB\u306B\u3067\u304D\u307E\u305B\u3093 -Main_Axis=\u4E3B\u8981\u5EA7\u6A19\u8EF8 +IN_and_INOUT_type_not_as_cursor=IN\u304A\u3088\u3073INOUT\u30BF\u30A4\u30D7\u3067\u306F\u306A\u3044\u30AB\u30FC\u30BD\u30EB\u3068 +Main_Axis=\u30E1\u30A4\u30F3\u5EA7\u6A19\u8EF8 M_Edit-Cut=\u5207\u308A\u53D6\u308A(T) -Utils-The_Name_has_been_existed=\u3053\u306E\u540D\u524D\u306F\u65E2\u306B\u3042\u308A\u307E\u3059 +Utils-The_Name_has_been_existed=\u5F53\u8A72\u540D\u79F0\u306F\u65E2\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059 FR-Background_Image=\u753B\u50CF Character=\u6587\u5B57 Unit_Thousand=\u5343 Test=\u30C6\u30B9\u30C8 Utils-Would_you_like_to_save=\u4FDD\u5B58\u3057\u307E\u3059\u304B HF-Header_and_Footer=\u30D8\u30C3\u30C0\u30FC\u3068\u30D5\u30C3\u30BF\u30FC -LIST_MODE=\u4E00\u89A7 -HF-Insert_Image=\u753B\u50CF\u306E\u633F\u5165 +LIST_MODE=\u30EA\u30B9\u30C8 +HF-Insert_Image=\u753B\u50CF\u3092\u633F\u5165 FR-Designer-Widget-Style_Standard=\u6A19\u6E96 FR-Designer_Form-List=\u30EA\u30B9\u30C8 BackgroundTexture-Denim=\u30C7\u30CB\u30E0 -Execute_Report_by_Layer_Engine=\u30B0\u30EA\u30C3\u30C9\u578B\u30A8\u30F3\u30B8\u30F3\u3067\u5E33\u7968\u3092\u5B9F\u884C\u3059\u308B +Execute_Report_by_Layer_Engine=\u30E9\u30A4\u30F3\u306E\u30A8\u30F3\u30B8\u30F3\u3067\u5E33\u7968\u3092\u5B9F\u884C\u3059\u308B M_Edit-Bring_Forward=\u524D\u9762\u3078\u79FB\u52D5(F) -Choose_All=\u3059\u3079\u3066\u9078\u629E +Choose_All=\u5168\u9078\u629E Form-RadioGroup=\u30E9\u30B8\u30AA\u30DC\u30BF\u30F3\u30B0\u30EB\u30FC\u30D7 FR-Base_Remove=\u524A\u9664 -FR-Remote_Connect2Server_Again=\u63A5\u7D9A\u304C\u5207\u65AD\u3055\u308C\u307E\u3057\u305F\u3001\u30B5\u30FC\u30D0\u306B\u518D\u63A5\u7D9A\u3057\u307E\u3059\u304B? -Semicolon=\u30BB\u30DF\u30B3\u30ED\u30F3 +FR-Remote_Connect2Server_Again=\u63A5\u7D9A\u304C\u4E2D\u65AD\u3057\u307E\u3057\u305F\u3002\u518D\u5EA6\u30B5\u30FC\u30D0\u30FC\u306B\u63A5\u7D9A\u3057\u307E\u3059\u304B\u3002 +Semicolon=\u5206\u53F7 StyleFormat-Category=\u5206\u985E -Report_Template=\u5E33\u7968\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 -Utils-Beyond_the_right_side_of_Border=\u53F3\u306E\u5883\u754C\u3092\u8D85\u904E\u3057\u3066\u3044\u307E\u3059\u3002 +Report_Template=\u5E33\u7968\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 +Utils-Beyond_the_right_side_of_Border=\u53F3\u9818\u57DF\u3092\u30AA\u30FC\u30D0\u30FC BackgroundTexture-Papyrus=\u7D19 -LayerPageReport_PageEngine=\u30DA\u30FC\u30B8\u8A08\u7B97\u3092\u5229\u7528\u3057\u305F\u30BB\u30B0\u30E1\u30F3\u30C8\u3067\u5E33\u7968\u3092\u5B9F\u884C -Schedule-The_selected_file_must_be_end_with_filter=\u9078\u629E\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u306F.cpt\u3084.class\u307E\u305F\u306F.frm\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +LayerPageReport_PageEngine=\u30DA\u30FC\u30B8\u5225\u306E\u6F14\u7B97\u3092\u4F7F\u7528\u3057\u3066\u5E33\u7968\u3092\u57F7\u884C +Schedule-The_selected_file_must_be_end_with_filter=\u9078\u629E\u30D5\u30A1\u30A4\u30EB\u306F.cpt\u53C8\u306F.class\u53C8\u306F.frm Provide=\u63D0\u4F9B -FormulaD-Math_&_Trig=\u6570\u5B66\u3068\u4E09\u89D2\u95A2\u6570 -FR-Designer-StyleAlignment_Right=\u53F3\u8A70\u3081 -Error_TableDataNameRepeat=\u30B5\u30FC\u30D0\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u304C\u65E2\u306B\u3042\u308B\u304B\u3001\u540C\u3058\u540D\u524D\u306E\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u304C\u5B58\u5728\u3057\u3066\u3044\u307E\u3059\u3002 +FormulaD-Math_&_Trig=\u6570\u5B66\u95A2\u6570\u3068\u4E09\u89D2\u95A2\u6570 +FR-Designer-StyleAlignment_Right=\u53F3\u5BC4\u305B +Error_TableDataNameRepeat=\u3059\u3067\u306B\u30B5\u30FC\u30D0\u30FC\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306B\u5B58\u5728\u3059\u308B\u304B\u8907\u6570\u306E\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u540D\u304C\u91CD Choose_None=\u9078\u629E\u3057\u306A\u3044 File-tree=\u30D5\u30A1\u30A4\u30EB\u30C4\u30EA\u30FC FRFont-bold=\u592A\u5B57 -FR-Designer_Set_Submit_Condition=\u66F8\u304D\u8FBC\u307F\u6761\u4EF6\u8A2D\u5B9A -Form-Change_Widget_Name=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u540D\u3092\u5909\u66F4\u3059\u308B -ReportColumns-Report_Columns=\u5E33\u7968\u306E\u6BB5\u7D44\u307F -Can_not_use_FormatBursh=\u9023\u7D9A\u3057\u306A\u3044\u8907\u6570\u9818\u57DF\u3067\u306F\u66F8\u5F0F\u30B3\u30D4\u30FC\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 -CellElement-Property_Table=\u30BB\u30EB\u5C5E\u6027\u8868 -Dictionary-Dynamic_SQL=\u30C0\u30A4\u30CA\u30DF\u30C3\u30AFSQL -FR-Designer_Form-CheckBoxGroup=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B0\u30EB\u30FC\u30D7 -DBCP_TIME_BETWEEN_EVICTIONRUNSMILLIS=\u30A2\u30A4\u30C9\u30EB\u63A5\u7D9A\u306E\u691C\u8A3C\u9593\u9694 -ReportD-Export_Hided_Column=\u975E\u8868\u793A\u5217\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 -Preference-Support_Undo=\u5143\u306B\u623B\u3059\u3092\u30B5\u30DD\u30FC\u30C8 -FR-mobile_report_analysis=\u5E33\u7968\u89E3\u6790 +FR-Designer_Set_Submit_Condition=\u63D0\u51FA\u6761\u4EF6\u3092\u8A2D\u5B9A +Form-Change_Widget_Name=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u540D\u5909\u66F4 +ReportColumns-Report_Columns=\u5E33\u7968\u30B3\u30E9\u30E0 +FR-Designer_Can_not_use_FormatBursh=\u8907\u6570\u9078\u629E\u3057\u305F\u30A8\u30EA\u30A2\u3067\u306F\u66F8\u5F0F\u30D6\u30E9\u30B7\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\! +CellElement-Property_Table=\u30BB\u30EB\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u00B7\u30B7\u30FC\u30C8 +Dictionary-Dynamic_SQL=\u52D5\u614BSQL +FR-Designer_Form-CheckBoxGroup=\u30D5\u30EC\u30FC\u30E0\u30BB\u30C3\u30C8\u3092\u8907\u6570\u9078\u629E +DBCP_TIME_BETWEEN_EVICTIONRUNSMILLIS=\u30A2\u30A4\u30C9\u30EB\u63A5\u7D9A\u30EA\u30B5\u30A4\u30AF\u30EB\u30E6\u30CB\u30C3\u30C8\u4F11\u7720\u6642\u9593 +ReportD-Export_Hided_Column=\u96A0\u3057\u305F\u5217\u3092\u5C0E\u51FA +Preference-Support_Undo=\u5143\u306B\u623B\u3057\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B +FR-mobile_report_analysis=\u5831\u544A\u66F8\u306E\u89E3\u6790 Month=\u6708 -Utils-Column_Width=\u5217\u306E\u5E45 -Collect-Use_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u4F7F\u7528 -Widget-User_Defined_Editor=\u4E8B\u524D\u5B9A\u7FA9\u30A8\u30C7\u30A3\u30BF\u3002\u3053\u306E\u30A8\u30C7\u30A3\u30BF\u306F\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u7BA1\u7406\u30E1\u30CB\u30E5\u30FC\u3060\u3051\u3067\u305D\u306E\u5C5E\u6027\u3092\u5909\u66F4\u3067\u304D\u308B +Utils-Column_Width=\u5217\u5E45 +Collect-Use_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u4F7F\u7528 +Widget-User_Defined_Editor=\u30D7\u30EC\u5B9A\u7FA9\u30A8\u30C7\u30A3\u30BF\u3067\u3059\u3002\u5F53\u8A72\u30A8\u30C7\u30A3\u30BF\u306F\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u7BA1\u7406\u30E1\u30CB\u30E5\u30FC Unit_Ten_Thousand=\u4E07 Data_Setting=\u30C7\u30FC\u30BF\u8A2D\u5B9A -ECP_input_pwd=\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\: +ECP_input_pwd=\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\: period=\u3002 -Note=\u30B3\u30E1\u30F3\u30C8 +Note=\u6CE8 Multiline=\u8907\u6570\u884C\u7DE8\u96C6 Datasource-Convert_Charset=\u6587\u5B57\u30B3\u30FC\u30C9\u5909\u63DB DashBoard-ConnectionList=\u30C7\u30FC\u30BF\u63A5\u7D9A -Utils-Submit_Forcibly=\u5F37\u5236\u66F8\u304D\u8FBC\u307F +Utils-Submit_Forcibly=\u5F37\u884C\u63D0\u51FA Parent_Marked_Field=\u89AA\u30BF\u30B0\u30D5\u30A3\u30FC\u30EB\u30C9 -Logout=\u30ED\u30B0\u30A2\u30A6\u30C8 -FR-Designer_Show_Blank_Row=\u7A7A\u767D\u884C\u88DC\u5145 -FR-Base_Format=\u66F8\u5F0F -FR-App-Export_png=PNG -Delete_Column=\u5217\u3092\u524A\u9664 -SecondGraduationLine=\u88DC\u52A9\u76EE\u76DB\u7DDA +Logout=\u9000\u51FA +FR-Designer_Show_Blank_Row=\u7A7A\u767D\u884C\u3092\u88DC\u5145 +FR-Base_Format=\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +FR-App-Export_png=PNG\u66F8\u5F0F +Delete_Column=\u5217\u524A\u9664 +SecondGraduationLine=\u5C0F\u3055\u306A\u76EE\u76DB\u308A SpecifiedG-Groups=\u30B0\u30EB\u30FC\u30D7 -CONTINUUM_MODE=\u96A3\u63A5\u9023\u7D9A\u30B0\u30EB\u30FC\u30D7\u5206\u3051 +CONTINUUM_MODE=\u96A3\u63A5\u3057\u305F\u9023\u7D9A\u3057\u305F\u30D1\u30B1\u30C3\u30C8 Datasource-Connection_failed=\u63A5\u7D9A\u5931\u6557 -CategoryName=\u5206\u985E\u540D -DBCP_INITIAL_SIZE=\u30D7\u30FC\u30EB\u306E\u8D77\u52D5\u6642\u306B\u4F5C\u6210\u3055\u308C\u308B\u521D\u671F\u63A5\u7D9A\u6570 +CategoryName=\u30AB\u30C6\u30B4\u30EA\u30FC\u540D +DBCP_INITIAL_SIZE=\u63A5\u7D9A\u6570\u306E\u521D\u671F\u5316 Colors=\u8272 -FR-Import-Export_CSV=CSV(\u30AB\u30F3\u30DE\u533A\u5207\u308A) -FR-Designer-StyleAlignment_Left=\u5DE6\u8A70\u3081 +FR-Import-Export_CSV=CSV\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8(\u30B3\u30F3\u30DE\u3067\u5206\u5272) +FR-Designer-StyleAlignment_Left=\u5DE6\u5BC4\u305B BackgroundTexture-PaperBag=\u7D19\u888B -RWA-BuildIn_SQL=\u7D44\u307F\u8FBC\u307FSQL -SingleLayer=\u30B7\u30F3\u30B0\u30EB\u30EC\u30A4\u30E4 +RWA-BuildIn_SQL=\u5185\u8535SQL +SingleLayer=\u5358\u5C64 Or-you=\u307E\u305F\u306F -FR-Designer_Certificate_Path=\u8A3C\u660E\u66F8\u30D1\u30B9 -Utils-Last_Page=\u6700\u7D42\u30DA\u30FC\u30B8 -BarCodeD-Drawing_Text=\u30C6\u30AD\u30B9\u30C8\u306E\u8868\u793A -Warning-Template_Do_Not_Exsit=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 -BindColumn-Group=\u30B0\u30EB\u30FC\u30D7\u5225 -Export-SVG=SVG -Plane3D=\u5E73\u97623-D -SessionID=sessionID\u306F\u30A2\u30AF\u30BB\u30B9\u4E2D\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u30BF\u30B0\u30D1\u30E9\u30E1\u30FC\u30BF\u3067\u3059 +FR-Designer_Certificate_Path=\u8A3C\u66F8\u30EB\u30FC\u30C8 +Utils-Last_Page=\u7D42\u4E86\u9801 +BarCodeD-Drawing_Text=\u30D0\u30FC\u30B3\u30FC\u30C9\u30C6\u30AD\u30B9\u30C8\u3092\u8868\u793A\u3059\u308B +Warning-Template_Do_Not_Exsit=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F\u5B58\u5728\u3057\u307E\u305B\u3093 +BindColumn-Group=\u30B0\u30EB\u30FC\u30D7\u5206\u3051 +Export-SVG=SVG\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +Plane3D=\u5E73\u97623D +SessionID=sessionID\u306F\u73FE\u5728\u306E\u30A2\u30AF\u30BB\u30B9\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u4F1A\u8A71\u30BF\u30B0\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3067\u3059\u3002 FR-Designer_Height=\u9AD8\u3055 HF-Odd_Page=\u5947\u6570\u30DA\u30FC\u30B8 -About-All_Rights_Reserved=\u3059\u3079\u3066\u306E\u6A29\u5229\u3092\u4FDD\u7559 -Utils-Current_Cell=\u73FE\u5728\u306E\u30BB\u30EB -Web_Preview_Message=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u3092\u73FE\u5728\u306E\u5B9F\u884C\u74B0\u5883\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u4FDD\u5B58\u3057\u3066\u4E0B\u3055\u3044 -FR-Hyperlink_Chart_Float=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u30D5\u30ED\u30FC\u30C6\u30A3\u30F3\u30B0\u8981\u7D20\u9023\u52D5 -Dic-Data_Query=\u30C7\u30FC\u30BF\u30AF\u30A8\u30EA -CellWrite-Print_Content=\u30BB\u30EB\u5185\u5BB9 -Privilege-Selected_None_Of_Any_Items=\u9805\u76EE\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +About-All_Rights_Reserved=\u5168\u3066\u306E\u6A29\u5229\u3092\u6240\u6709\u3057\u3066\u3044\u308B +Utils-Current_Cell=\u30AB\u30EC\u30F3\u30C8\u30BB\u30EB +Web_Preview_Message=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u3092\u73FE\u5728\u306E\u904B\u884C\u74B0\u5883\u306E\u76EE\u6B21\u4E0B\u306B\u4FDD\u5B58\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Hyperlink_Chart_Float=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u9023\u52D5\u30D5\u30ED\u30FC\u8981\u7D20 +Dic-Data_Query=\u30C7\u30FC\u30BF\u30AF\u30A8\u30EA\u30FC +CellWrite-Print_Content=\u30BB\u30EB\u306E\u4E2D\u8EAB\u3092\u5370\u5237\u3059\u308B +Privilege-Selected_None_Of_Any_Items=\u9805\u76EE\u3092\u3072\u3068\u3064\u3082\u9078\u629E\u3057\u3066\u3044\u307E\u305B\u3093 FRFont-Size=\u30B5\u30A4\u30BA -Function-J2EE_server=J2EE\u30B5\u30FC\u30D0 -FR-Designer_Allow_Blank=\u7A7A\u6B04\u3092\u8A31\u53EF +Function-J2EE_server=J2EE_server +FR-Designer_Allow_Blank=\u7A7A\u6B04\u3042\u308A Build_Tree_Accord_Parent_Marked_Filed=\u89AA\u30BF\u30B0\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u3001\u69CB\u7BC9\u3055\u308C\u305F\u30C4\u30EA\u30FC\u3092\u8A2D\u5B9A\u3057\u3001\u9078\u629E\u3057\u305F\u30C7\u30FC\u30BF\u306B\u4F9D\u5B58 -Preference-Horizontal_Scroll_Bar_Visible=\u6C34\u5E73\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u3092\u8868\u793A -Scope=\u7BC4\u56F2 -Save_All_Records_In_Memory=\u5168\u30EC\u30B3\u30FC\u30C9\u30E1\u30E2\u30EA\u30AD\u30E3\u30C3\u30B7\u30E5 -FreezeWarning1=\u521D\u671F\u5024\u306F\u7D42\u4E86\u5024\u4EE5\u4E0B -FlowLayout=\u30D5\u30ED\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8 +Preference-Horizontal_Scroll_Bar_Visible=\u6C34\u5E73\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u306F\u53EF\u8996 +Scope=\u30B9\u30B3\u30FC\u30D7 +Save_All_Records_In_Memory=\u5168\u3066\u306E\u8A18\u9332\u306F\u30E1\u30E2\u30EA\u306B\u4FDD\u5B58\u3055\u308C\u3066\u3044\u307E\u3059 +FreezeWarning1=\u521D\u671F\u5024\u306F\u6700\u7D42\u5024\u3088\u308A\u5927\u304D\u304F\u3042\u308A\u307E\u305B\u3093 +FlowLayout=\u30D5\u30ED\u30FC\u914D\u7F6E M_Report-Report_Footer=\u5E33\u7968\u30D5\u30C3\u30BF\u30FC -FR-Action_Add=\u8FFD\u52A0 +FR-Action_Add=\u5897\u52A0 BorderLayout-East=\u6771 -feedback_tip=400\u5B57\u4EE5\u5185\u3067\u554F\u984C\u306E\u8AAC\u660E\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 -FS_Start_Date=\u958B\u59CB\u65E5\u4ED8 +feedback_tip=\u4EE5\u4E0B400\u306E\u5358\u8A9E\u306E\u554F\u984C\u306E\u8AAC\u660E\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 +FS_Start_Date=\u958B\u59CB\u65E5\u671F FR-ConditionB_Operator=\u6F14\u7B97\u5B50 Printer-Alias=\u5225\u540D DS-Class_Name=\u30AF\u30E9\u30B9\u540D -FR-Designer-Plugin_Has_Been_Disabled=\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u4F7F\u7528\u7981\u6B62\u306F\u3001\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC\u30D0\u306E\u518D\u8D77\u52D5\u5F8C\u306B\u6709\u52B9\u306B\u306A\u308A\u307E\u3059\u3002\u30B5\u30FC\u30D0\u306F\u624B\u52D5\u3067\u518D\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Designer-Plugin_Has_Been_Disabled=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u4F7F\u7528\u304C\u7981\u6B62\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5 Sort-Original=\u30BD\u30FC\u30C8\u3057\u306A\u3044 Utils-Top_to_Bottom_a=\u4E0A\u304B\u3089\u4E0B\u3078 Parameter-String=\u6587\u5B57\u5217 -InnerRadis=\u5185\u5F84\u30B5\u30A4\u30BA -Want_To_Cover_It=\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B -Divided_stage=\u30B9\u30C6\u30FC\u30B8\u3092\u5206\u5272 -Seriously=\u91CD\u5927 +InnerRadis=\u5185\u5F84\u306E\u5927\u304D\u3055 +Want_To_Cover_It=\u3053\u308C\u3092\u8986\u3044\u307E\u3059\u304B +Divided_stage=\u5206\u5272\u3055\u308C\u305F\u30B9\u30C6\u30FC\u30B8 +Seriously=\u53B3\u91CD ReportServerP-PDF=PDF -Utils-Switch_To_Class_Reportlet=\u30D7\u30ED\u30B0\u30E9\u30E0\u30CD\u30C3\u30C8\u5E33\u7968\u306B\u5207\u308A\u66FF\u3048\u308B -FR-Designer_Show_Blank_Column=\u7A7A\u767D\u5217\u88DC\u5145 -M_Edit-Redo=\u3084\u308A\u76F4\u3057 -Visibility=\u8868\u793A\u6027 -Series_Use_Default=\u7CFB\u5217\u65E2\u5B9A\u4F7F\u7528 -Has_Selected=\u9078\u629E\u3055\u308C\u305F -BackgroundTexture-Walnut=\u304F\u308B\u307F -FormulaD-Function_category=\u95A2\u6570\u306E\u5206\u985E -Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 -FR-Designer-Beyond_Bounds=body\u30DC\u30FC\u30C0\u30FC\u3092\u8D8A\u3048\u305F\u305F\u3081\u3001\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u305B\u3093 +Utils-Switch_To_Class_Reportlet=\u30D7\u30ED\u30B0\u30E9\u30E0\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u5E33\u7968\u306B\u5207\u308A\u66FF\u3048 +FR-Designer_Show_Blank_Column=\u7A7A\u767D\u5217\u3092\u88DC\u5145 +M_Edit-Redo=\u518D\u5B9F\u884C +Visibility=\u53EF\u8996\u6027 +Series_Use_Default=\u7CFB\u5217\u30C7\u30D5\u30A9\u30EB\u30C8\u4F7F\u7528 +Has_Selected=\u3082\u3046\u9078\u629E +BackgroundTexture-Walnut=\u30AF\u30EB\u30DF +FormulaD-Function_category=\u95A2\u6570\u30BF\u30A4\u30D7 +Interface=\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30A4\u30B9 +FR-Designer-Beyond_Bounds= seconds=\u79D2 -Auto-Build=\u81EA\u52D5\u69CB\u7BC9 -FR-Designer-Plugin_Install_Successful=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u3001\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC\u30D0\u306E\u518D\u8D77\u52D5\u5F8C\u306B\u6709\u52B9\u306B\u306A\u308A\u307E\u3059\u3002\u30B5\u30FC\u30D0\u306F\u624B\u52D5\u3067\u518D\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044 -Template_Path=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D1\u30B9 -FR-Designer-FRFont_Bold=\u592A\u5B57 -Poly_Name=\u30D6\u30ED\u30C3\u30AF\u540D +Auto-Build=\u81EA\u52D5\u7684\u306B\u30D3\u30EB\u30C9 +FR-Designer-Plugin_Install_Successful=\u5F53\u8A72\u30D7\u30E9\u30B0\u30A4\u30F3\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC\u30D0\u30FC\u3092\u518D\u8D77\u52D5\u3059\u308B\u969B\u306B +Template_Path=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30EB\u30FC\u30C8 +FR-Designer-FRFont_Bold=\u592A\u304F\u3059\u308B +Poly_Name=\u805A\u5408\u30E2\u30B8\u30E5\u30FC\u30EB\u540D WorkBook=\u30EF\u30FC\u30AF\u30D6\u30C3\u30AF Hyperlink-Self_Window=\u73FE\u5728\u306E\u30A6\u30A3\u30F3\u30C9\u30A6 -FR-Designer-Widget-Style_Title=\u30BF\u30A4\u30C8\u30EB -FR-Designer-FRFont_Size=\u30B5\u30A4\u30BA +FR-Designer-Widget-Style_Title=\u6A19\u984C +FR-Designer-FRFont_Size=\u5927\u304D\u3055 M_File-Export-SVG=SVG Capacity=\u5BB9\u91CF Rose_Red=\u30ED\u30FC\u30BA\u30EC\u30C3\u30C9 -StyleAlignment-The_value_of_rotation_must_between_-90_and_90_degrees=\u56DE\u8EE2\u89D2\u5EA6\u306F-90\u304B\u308990\u306E\u7BC4\u56F2 -HF-Move_Left=\u5DE6\u3078 -Cell_Group=\u30BB\u30EB\u30B0\u30EB\u30FC\u30D7 -Week=\u9031 +StyleAlignment-The_value_of_rotation_must_between_-90_and_90_degrees=\u56DE\u8EE2\u5024\u306F-90\u304B\u308990\u5EA6 +HF-Move_Left=\u5DE6\u3078\u79FB\u52D5\u3059\u308B +Cell_Group=\u30BB\u30EB\u7D44 +Week=\u5468 PageSetup-Orientation=\u65B9\u5411 -M-Open_Recent=\u6700\u8FD1\u4F7F\u7528\u3057\u305F +M-Open_Recent=\u6700\u8FD1\u958B\u3044\u305F\u3082\u306E NNormal=\u6B63\u5E38 Integer=\u6574\u6570 -Select_The_Source_To_Save=\u4FDD\u5B58\u9805\u76EE\u3092\u9078\u629E -Transition=\u30D6\u30E9\u30F3\u30C1 +Select_The_Source_To_Save=\u8A18\u61B6\u3059\u308B\u9805\u76EE\u3092\u9078\u629E +Transition=\u5206\u679D FR-Designer_Get_Lock=\u30ED\u30C3\u30AF -one_record_exists_in_many_groups=1\u30EC\u30B3\u30FC\u30C9\u8907\u6570\u30B0\u30EB\u30FC\u30D7\u6240\u5C5E -FR-Designer_Cover_None=\u3059\u3079\u3066\u4E0A\u66F8\u304D\u3057\u306A\u3044 +one_record_exists_in_many_groups=\u4E00\u3064\u306E\u8A18\u9332\u306F\u8907\u6570\u30B0\u30EB\u30FC\u30D7\u5185\u306B\u5B58\u5728\u53EF\u80FD +FR-Designer_Cover_None=\u5168\u3066\u8986\u308F\u306A\u3044 DeciPart=\u5C0F\u6570\u90E8\u5206 ExpandD-Up_Father_Cell=\u4E0A\u89AA\u30BB\u30EB Deep=\u6DF1\u3055 FRFont-Shadow=\u5F71 Reportlet=\u30CD\u30C3\u30C8\u5E33\u7968 Calendar=\u30AB\u30EC\u30F3\u30C0\u30FC -DateFormat-Custom_Warning=\u6CE8\:\u30AB\u30B9\u30BF\u30E0\u65E5\u4ED8\u66F8\u5F0F\u306F\u66F8\u5F0F\u30C1\u30A7\u30C3\u30AF\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u306A\u3044 -Unit_MM=\u30DF\u30EA +DateFormat-Custom_Warning=\u6CE8\uFF1A\u30AB\u30B9\u30BF\u30E0\u65E5\u6642\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u30B5\u30DD\u30FC\u30C8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u691C\u67FB +Unit_MM=\u30DF\u30EA\u30E1\u30FC\u30C8\u30EB Server-Start=\u8D77\u52D5 -CellPage-Can_Break_On_Paginate=\u6539\u30DA\u30FC\u30B8\u3092\u8A31\u3059 -Build_Tree_Accord_Marked_Filed_Length=\u9078\u629E\u3057\u305F\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306E\u30DE\u30FC\u30AF\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u9577\u3055\u3088\u308A\u30C4\u30EA\u30FC\u3092\u69CB\u7BC9\u3059\u308B +CellPage-Can_Break_On_Paginate=\u30DA\u30FC\u30B8\u30F3\u30B0\u304C\u5207\u65AD\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u305F\u3068\u304D +Build_Tree_Accord_Marked_Filed_Length=\u69CB\u7BC9\u30C4\u30EA\u30FC\u3092\u8A2D\u5B9A\u3057\u3001\u9078\u629E\u3057\u305F\u30C7\u30FC\u30BF\u306B\u4F9D\u5B58\u3057\u305F\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u9577\u3055\u3092\u30DE\u30FC\u30AF ComboCheckBox-Start_Symbol=\u958B\u59CB\u6587\u5B57 Real=\u5B9F\u969B -RWA-Batch_Modify_Cells=\u30BB\u30EB\u4E00\u62EC\u7DE8\u96C6 +RWA-Batch_Modify_Cells=\u6279\u91CF\u4FEE\u6B63\u30BB\u30EB FR-Designer_Build-Way=\u69CB\u7BC9\u65B9\u6CD5 -Read=\u8AAD\u307F\u8FBC\u307F +Read=\u8AAD\u307F\u53D6\u308A StyleAlignment-Degrees=\u5EA6 M_Format_A-Border=\u67A0(B) Utils-Delete_Record=\u8A18\u9332\u524A\u9664 Reload=\u518D\u30ED\u30FC\u30C9 -Image-Select_Picture=\u753B\u50CF\u9078\u629E -RWA-Submit=\u66F8\u304D\u8FBC\u307F -the_template=\u8A72\u5F53\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 -FR-Designer_Component_Scale=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u30BA\u30FC\u30E0 +Image-Select_Picture=\u753B\u50CF\u3092\u9078\u629E +RWA-Submit=\u63D0\u51FA\u3059\u308B +the_template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 +FR-Designer_Component_Scale=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u30B9\u30B1\u30FC\u30EB FRFont-italic=\u659C\u4F53 Year=\u5E74 -HF-Move_Right=\u53F3\u3078 -Data-Check=\u30C7\u30FC\u30BF\u30C1\u30A7\u30C3\u30AF +HF-Move_Right=\u53F3\u3078\u79FB\u52D5\u3059\u308B +Data-Check=\u30C7\u30FC\u30BF\u7BA1\u7406\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB Unknown=\u672A\u77E5 -Submit_Style=\u66F8\u304D\u8FBC\u307F\u65B9\u6CD5 -Left_Border_Line=\u5DE6\u7F6B\u7DDA -Brown=\u8336\u8272 -Select_A_Tree_DataSource_To_Build=1\u3064\u306E\u30C4\u30EA\u30FC\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u3092\u9078\u629E\u3057\u3066\u69CB\u7BC9 -Overlapping=\u91CD\u306A\u308A\u30BF\u30A4\u30D7 -DS-Class_TableData=\u30D7\u30ED\u30B0\u30E9\u30E0\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 -FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install=\u672A\u5BFE\u5FDC\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u305F\u3081\u3001\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3067\u304D\u307E\u305B\u3093 -DisplayNothingBeforeQuery=\u30AF\u30A8\u30EA\u30AF\u30EA\u30C3\u30AF\u524D\u306B\u5E33\u7968\u5185\u5BB9\u3092\u8868\u793A\u3057\u306A\u3044 +Submit_Style=\u63D0\u51FA\u65B9\u6CD5 +Left_Border_Line=\u5DE6\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 +Brown=\u30D6\u30E9\u30A6\u30F3 +Select_A_Tree_DataSource_To_Build=\u30C4\u30EA\u30FC\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u3092\u9078\u629E\u3057\u3066\u7D44\u307F\u7ACB\u3066\u3066\u304F\u3060\u3055\u3044 +Overlapping=\u91CD\u306D\u578B +DS-Class_TableData=\u30AF\u30E9\u30B9\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 +FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install=\u8B58\u5225\u4E0D\u80FD\u306A\u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u3059\u3002\u30A4\u30F3\u30B9 +DisplayNothingBeforeQuery=\u81EA\u52D5\u691C\u7D22\u7121\u3057 Y_Axis=Y\u8EF8 -FormulaD-Most_Recently_Used=\u3088\u304F\u5229\u7528\u3059\u308B\u95A2\u6570 -FormulaD-Input_formula_in_the_text_area_below=\u4EE5\u4E0B\u306E\u30C6\u30AD\u30B9\u30C8\u30DC\u30C3\u30AF\u30B9\u306B\u6570\u5F0F\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 +FormulaD-Most_Recently_Used=\u5E38\u7528\u95A2\u6570 +FormulaD-Input_formula_in_the_text_area_below=\u30C6\u30AD\u30B9\u30C8\u30DC\u30C3\u30AF\u30B9\u306B\u516C\u5F0F\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 Build-Way=\u69CB\u7BC9\u65B9\u6CD5 M_Edit-Undo=\u5143\u306B\u623B\u3059 -Line-Style=\u7DDA\u306E\u7A2E\u985E +Line-Style=\u7DDA\u5F62 Datasource-Other_Attributes=\u305D\u306E\u4ED6\u5C5E\u6027 -M_Server-Global_Parameters=\u30B0\u30ED\u30FC\u30D0\u30EB\u30D1\u30E9\u30E1\u30FC\u30BF -Suffix=\u30B5\u30D5\u30A3\u30C3\u30AF\u30B9 -Image-Image_Files=\u753B\u50CF\u30D5\u30A1\u30A4\u30EB +M_Server-Global_Parameters=\u30B0\u30ED\u30FC\u30D0\u30EB\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +Suffix=\u5F8C\u7F00 +Image-Image_Files=\u30A4\u30E1\u30FC\u30B8\u30D5\u30A1\u30A4\u30EB EditRC-Entire_row=\u884C(R) -HF-First_Page=\u5148\u982D\u30DA\u30FC\u30B8 +HF-First_Page=\u30C8\u30C3\u30D7\u30DA\u30FC\u30B8 BackgroundTexture-Granite=\u307F\u304B\u3052\u77F3 DataList=\u30C7\u30FC\u30BF\u30C1\u30A7\u30FC\u30F3 -Recursion=\u518D\u5E30 -BarStyle=\u30D0\u30FC -FR-Designer-Min_Width=\u6700\u5C0F\u5E45\u3055 -Utils-Report-Env_Directory=\u5E33\u7968\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA +Recursion=\u5E30\u7D0D +BarStyle=\u30B9\u30C8\u30EA\u30C3\u30D7 +FR-Designer-Min_Width= +Utils-Report-Env_Directory=\u5E33\u7968\u4F5C\u696D\u76EE\u6B21 D-ChartArea=\u30B0\u30E9\u30D5\u30A8\u30EA\u30A2 -Only=\u3060\u3051 +Only=\u305F\u3060 FR-Base_No=\u3044\u3044\u3048 -SpecifiedG-Put_all_others_together=\u305D\u306E\u4ED6\u306E\u3059\u3079\u3066\u3092\u7D71\u5408 -HF-NewLine_Des=\u4E0A\u306E\u79FB\u52D5\u3068\u524A\u9664\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u6539\u884C\u6587\u5B57\u3092\u64CD\u4F5C\u3067\u304D\u308B -WLayout-Border-ThreeContainer=\u5317\u90E8\u3001\u897F\u90E8\u3001\u4E2D\u592E\u90E8\u306E3\u30D6\u30ED\u30C3\u30AF\u306E\u30DC\u30FC\u30C0\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u3067\u69CB\u6210\u3055\u308C\u308B\u30EC\u30A4\u30A2\u30A6\u30C8\u3002\u5317\u90E8\u30D6\u30ED\u30C3\u30AF\u3067\u306F\u9AD8\u3055\u3092\u3001\u897F\u90E8\u30D6\u30ED\u30C3\u30AF\u3067\u306F\u5E45\u3092\u8ABF\u6574\u3067\u304D\u307E\u3059\u3002 -Parameter_Name=\u30D1\u30E9\u30E1\u30FC\u30BF\u540D +SpecifiedG-Put_all_others_together=\u4ED6\u306E\u3059\u3079\u3066\u3092\u7D50\u5408\u3059\u308B +HF-NewLine_Des=\u4E0A\u306E\u79FB\u52D5\u3068\u524A\u9664\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u6539\u884C\u30B3\u30FC\u30C9\u3092\u64CD\u4F5C\u3059\u308B +WLayout-Border-ThreeContainer=\u5317\u3001\u897F\u3001\u4E09\u56FD\u5883\u306E\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u30FC\u3068\u5E45\u3092\u8ABF\u6574\u3059\u308B\u5FC5\u8981\u304C\u3042 +Parameter_Name=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u540D FR-Base_Table=\u8868 -Des-Remove_WorkSheet=\u9078\u629E\u3057\u305F\u30B7\u30FC\u30C8\u306B\u30C7\u30FC\u30BF\u304C\u65E2\u306B\u3042\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u30C7\u30FC\u30BF\u3092\u5B8C\u5168\u306B\u524A\u9664\u3059\u308B\u306B\u306F\u3001[OK]\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +Des-Remove_WorkSheet=\u9078\u629E\u3059\u308B\u5E33\u7968\u306B\u306F\u30C7\u30FC\u30BF\u304C\u3042\u308B\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u304C\u3001\u5B8C\u5168\u306B\u524A\u9664\u3059\u308B\u5834\u5408\u3001 Rotation=\u56DE\u8EE2 Undefined=\u672A\u5B9A\u7FA9 Support-Auto_Complete_Shortcut=\u81EA\u52D5\u88DC\u5B8C\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC @@ -1332,80 +1332,78 @@ StyleAlignment-Text_Rotation=\u6587\u5B57\u5217\u306E\u65B9\u5411 Format-Error=\u5165\u529B\u5024\u306E\u66F8\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093 Server-Stop=\u505C\u6B62 Preference-Setting_Grid=\u30B0\u30EA\u30C3\u30C9\u8A2D\u5B9A -ReportServerP-Add_Printer=\u30D7\u30EA\u30F3\u30BF\u8FFD\u52A0 -FR-Designer-Plugin_Active=\u6709\u52B9 +ReportServerP-Add_Printer=\u30D7\u30EA\u30F3\u30BF\u30FC\u8FFD\u52A0 +FR-Designer-Plugin_Active=\u4F7F\u7528\u958B\u59CB Utils-File_name=\u30D5\u30A1\u30A4\u30EB\u540D -NOT_NULL_Des=\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093 -Right_Border_Line=\u53F3\u7F6B\u7DDA +NOT_NULL_Des=\u3053\u3053\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +Right_Border_Line=\u53F3\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 EditRC-Entire_column=\u5217(C) -PageSetup-Top_to_bottom=\u5DE6\u304B\u3089\u53F3 -Click-Get_Default_URL=\u3053\u306E\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u65E2\u5B9A\u306EURL\u3092\u53D6\u5F97 -StyleAlignment-Wrap_Text=\u81EA\u52D5\u6539\u884C -Remove_All_Button=\u3059\u3079\u3066\u306E\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30A2 -FR-Designer_Component_Interval=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u9593\u9694 -ReportColumns-Columns_vertically=\u5217\u306E\u6BB5\u7D44\u307F -ReportGUI-Print_Background=\u5E33\u7968\u80CC\u666F\u306E\u5370\u5237/\u51FA\u529B -FR-Designer_Print_Background=\u5E33\u7968\u80CC\u666F\u306E\u5370\u5237 -FR-Designer_Export_Background=\u5E33\u7968\u80CC\u666F\u306E\u51FA\u529B -Export-CSV=CSV(\u30AB\u30F3\u30DE\u533A\u5207\u308A) +PageSetup-Top_to_bottom=\u4E0A\u304B\u3089\u4E0B\u3078 +Click-Get_Default_URL=\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30C7\u30D5\u30A9\u30EB\u30C8\u306EURL\u3092\u53D6\u5F97 +StyleAlignment-Wrap_Text=\u81EA\u52D5\u6298\u308A\u8FD4\u3057 +Remove_All_Button=\u5168\u3066\u306E\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30A2 +FR-Designer_Component_Interval=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u9593\u9694 +ReportColumns-Columns_vertically=\u5782\u76F4\u65B9\u5411\u5217 +ReportGUI-Print_Background=\u5370\u5237\u80CC\u666F +Export-CSV=CSV (\u30AB\u30F3\u30DE\u533A\u5207\u308A) M_Edit-Paste=\u8CBC\u308A\u4ED8\u3051(P) -FR-Designer-Basic_Restart_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u518D\u8D77\u52D5 -ReportServerP-PDF2-INFO=LINUX / UNIX\u306B\u4E2D\u56FD\u8A9E\u30D5\u30A9\u30F3\u30C8\u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u3060\u3051\u306B\u4F7F\u3046 -FormulaD-Check_Valid=\u6570\u5F0F\u306E\u691C\u8A3C -server_disconnected=\u63A5\u7D9A\u304C\u5207\u65AD\u3055\u308C\u305F -ParameterD-Parameter_name_cannot_be_null=\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u3092\u7A7A\u6B04\u306B\u3067\u304D\u307E\u305B\u3093 -FR-Designer-Plugin_Version_Is_Lower_Than_Current=\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u4ECA\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3088\u308A\u4F4E\u3044 -RWA-NotChange_Unmodified=\u5909\u66F4\u6642\u306E\u307F\u66F8\u304D\u8FBC\u307F +FR-Designer-Basic_Restart_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u518D\u8D77\u52D5\u3059\u308B +ReportServerP-PDF2-INFO=LINUX/UNIX\u306B\u4E2D\u56FD\u8A9E\u30D5\u30A9\u30F3\u30C8\u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u305F\u6642\u306E\u307F\u4F7F\u7528 +FormulaD-Check_Valid=\u6709\u52B9\u6027\u30C1\u30A7\u30C3\u30AF +server_disconnected=\u5207\u65AD\u3055\u308C\u305F +ParameterD-Parameter_name_cannot_be_null=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u540D\u306F\u7A7A\u5024\u306B\u306A\u3063\u3066\u306F\u3044\u3051\u307E\u305B\u3093 +FR-Designer-Plugin_Version_Is_Lower_Than_Current=\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u30D1\u30C3\u30AF\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u30D0\u30FC\u30B8 +RWA-NotChange_Unmodified=\u306E\u6539\u6B63\u3092\u66F4\u65B0\u3057\u306A\u3044 User_Information=\u30E6\u30FC\u30B6\u30FC\u60C5\u5831 -Custom_styles_lost=\u30AB\u30B9\u30BF\u30E0\u30B9\u30BF\u30A4\u30EB\u306F\u5931\u308F\u308C\u307E\u3057\u305F -PageSetup-Margin=\u30DE\u30FC\u30B8\u30F3 -M-New_FormBook=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u65B0\u898F\u4F5C\u6210 +Custom_styles_lost=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u30B9\u30BF\u30A4\u30EB\u306F\u5931\u308F\u308C\u307E\u3057\u305F +PageSetup-Margin=\u4F59\u767D +M-New_FormBook= Widget-TreeNode=\u30C4\u30EA\u30FC\u30CE\u30FC\u30C9\u30DC\u30BF\u30F3 Form-Url=\u30A2\u30C9\u30EC\u30B9 -Utils-Beyond_the_left_side_of_Border=\u5DE6\u306E\u5883\u754C\u3092\u8D85\u904E\u3057\u3066\u3044\u307E\u3059\u3002 -Float_Element_Name=\u30D5\u30ED\u30FC\u30C6\u30A3\u30F3\u30B0\u8981\u7D20\u540D -Purple=\u7D2B +Utils-Beyond_the_left_side_of_Border=\u5DE6\u30DC\u30FC\u30C0\u30FC\u8D85\u3048 +Float_Element_Name=\u30D5\u30ED\u30FC\u3068\u8981\u7D20\u540D\u79F0 +Purple=\u8584\u7D2B DashBoard-Potence=\u6A29\u9650 M-Close_Template=\u5E33\u7968\u3092\u9589\u3058\u308B(C) -paper=\u7528\u7D19 -Not_Exsit=\u5E33\u7968\u306B\u3042\u308A\u307E\u305B\u3093 +paper=\u7D19 +Not_Exsit=\u5E33\u7968\u306B\u5B58\u5728\u3057\u307E\u305B\u3093 Utils-Insert_Row=\u884C\u633F\u5165 Utils-Delete_Row=\u884C\u524A\u9664 -not_support_authority_edit=\u3053\u306E\u8981\u7D20\u306F\u6A29\u9650\u5236\u5FA1\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093 -Formula_Tips=\u6570\u5F0F\u306F\u5FC5\u305A"\="\u3068\u59CB\u307E\u308B\uFF01 +not_support_authority_edit=\u8BE5\u5143\u7D20\u4E0D\u652F\u6301\u6743\u9650\u63A7\u5236 +Formula_Tips=\u5F0F\u306F "\ FR-Action_Copy=\u30B3\u30D4\u30FC -Compile_Success=\u30B3\u30F3\u30D1\u30A4\u30EB\u306B\u6210\u529F\u3057\u307E\u3057\u305F +Compile_Success=\u7DE8\u96C6\u7FFB\u8A33\u306B\u6210\u529F\u3057\u307E\u3057\u305F BackgroundTexture-RecycledPaper=\u518D\u751F\u7D19 StyleAlignment-Single_Line=1\u884C\u8868\u793A Utils-Move_Down=\u4E0B\u3078 Please_Set_Repeat_First=\u91CD\u8907\u30D8\u30C3\u30C0\u30FC\u884C\u3068\u5217\u3092\u4E8B\u524D\u306B\u5B9A\u7FA9\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 Writer-ShortCuts_Setting=\u66F8\u304D\u8FBC\u307F\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC\u8A2D\u5B9A Verify-Data_Verify=\u30C7\u30FC\u30BF\u691C\u8A3C -FR-mobile_analysis_style=\u89E3\u6790\u65B9\u6CD5 -Confirm-Delete-File=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u307E\u3059\u304B? -PageSetup-Header=\u30DA\u30FC\u30B8\u30D8\u30C3\u30C0\u30FC +FR-mobile_analysis_style=\u89E3\u6790\u65B9\u5F0F +Confirm-Delete-File=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F +PageSetup-Header=\u30DA\u30FC\u30B8\u30D8\u30C3\u30C0 JavaScrit-Asynch=\u975E\u540C\u671F ReportServerP-Toolbar=\u30C4\u30FC\u30EB\u30D0\u30FC Utils-Top_to_Bottom=\u7E26\u65B9\u5411 Platform=\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0 -FR-Designer-FRFont_Underline=\u4E0B\u7DDA -Show_in_Containing_Folder=\u30D5\u30A1\u30A4\u30EB\u306E\u5834\u6240\u3092\u958B\u304F +FR-Designer-FRFont_Underline=\u30A2\u30F3\u30C0\u30FC\u30E9\u30A4\u30F3 +Show_in_Containing_Folder=\u6240\u5728\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F BackgroundTexture-WaterDroplets=\u3057\u305A\u304F -FR-Designer-Dependence_Install_Failed=\u4F9D\u5B58\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u5931\u6557 +FR-Designer-Dependence_Install_Failed=install failed Layout-Padding=\u30D1\u30C7\u30A3\u30F3\u30B0 -roles_already_authority_edited=\u5F79\u5272\u8A2D\u5B9A\u6E08\u307F -WidgetDisplyPosition=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u8868\u793A\u4F4D\u7F6E -SpecifiedG-Force_Group=\u5F37\u5236\u30B0\u30EB\u30FC\u30D7\u5206\u3051 -FormulaD-Formula_Definition=\u6570\u5F0F\u5B9A\u7FA9 +roles_already_authority_edited=\u69CB\u6210\u3055\u308C\u305F\u5F79\u5272 +WidgetDisplyPosition=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u8868\u793A\u4F4D\u7F6E +SpecifiedG-Force_Group=\u5F37\u5236\u7684\u306B\u30B0\u30EB\u30FC\u30D4\u30F3\u30B0\u3059\u308B +FormulaD-Formula_Definition=\u516C\u5F0F\u5B9A\u7FA9 I-xyScatterStyle_Marker=\u6563\u5E03\u56F3 Hour=\u6642\u9593 ColorMatch=\u914D\u8272 -M_Edit-Order=\u7A4D\u307F\u91CD\u306D\u9806\u756A(O) -BackgroundTexture-Bouquet=\u30D6\u30FC\u30B1 -Verify-Error_Information=\u30A8\u30E9\u30FC\u60C5\u5831\u691C\u8A3C -LayerData=\u57FA\u790E\u30EC\u30A4\u30E4\u306E\u30C7\u30FC\u30BF -Rename=\u540D\u524D\u3092\u5909\u66F4 -Widget-Load_By_Async=\u975E\u540C\u671F\u30ED\u30FC\u30C9 +M_Edit-Order=\u9806\u5E8F(O) +BackgroundTexture-Bouquet=\u82B1\u675F +Verify-Error_Information=\u30A8\u30E9\u30FC\u60C5\u5831 +LayerData=\u5E95\u5C42\u6570\u636E +Rename=\u540D\u79F0\u306E\u5909\u66F4 +Widget-Load_By_Async=\u975E\u540C\u671F\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9 Shape=\u56F3\u5F62 BindColumn-This_Condition_has_been_existed=\u3053\u306E\u6761\u4EF6\u306F\u65E2\u306B\u3042\u308A\u307E\u3059 NS-exception_readError=\u30A8\u30E9\u30FC\u30B3\u30FC\u30C9\:1305 \u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u89E3\u6790\u30A8\u30E9\u30FC @@ -1415,327 +1413,326 @@ M_Report-Report_Parameter=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D1\u30E9\u30E1 REPORTLETS=\u8907\u6570\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u30D1\u30B9\u306E\u30D1\u30E9\u30E1\u30FC\u30BF WLayout-Card-ToolTip=\u30AB\u30FC\u30C9\u578B\u30EC\u30A4\u30A2\u30A6\u30C8\u3002\u3053\u306E\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u306B\u8907\u6570\u306E\u4ED6\u306E\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u8FFD\u52A0\u3067\u304D\u307E\u3059\u3002 M-Popup_ChartType=\u30B0\u30E9\u30D5\u30BF\u30A4\u30D7 -Please-Wait=\u304A\u5F85\u3061\u304F\u3060\u3055\u3044 -FR-Designer-Form-ToolBar_Widget=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 +Please-Wait=\u5C11\u3005\u304A\u5F85\u3061\u304F\u3060\u3055\u3044 +FR-Designer-Form-ToolBar_Widget=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB Widget-Array=\u914D\u5217 -FieldBinding=\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30D0\u30A4\u30F3\u30C9 -Top_Bottom_Border_Line=\u4E0A\u7F6B\u7DDA + \u4E0B\u7F6B\u7DDA +FieldBinding=\u30D0\u30F3\u30C7\u30A3\u30F3\u30B0\u30D5\u30A3\u30FC\u30EB\u30C9 +Top_Bottom_Border_Line=\u4E0A\u4E0B\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 M-Others=\u305D\u306E\u4ED6... -Hyperlink-Link_Opened_in=\u30EA\u30F3\u30AF\u306E\u5B9F\u884C\u65B9\u6CD5 -FR-Utils_WorkBook=\u30EF\u30FC\u30AF\u30D6\u30C3\u30AF -M_Insert-Float=\u30D5\u30ED\u30FC\u30C6\u30A3\u30F3\u30B0\u8981\u7D20 -Out_Thick_Border_Line=\u5916\u67A0\u592A\u7F6B\u7DDA +Hyperlink-Link_Opened_in=\u30EA\u30F3\u30AF\u306E\u958B\u3051\u65B9 +FR-Utils_WorkBook=\u4F5C\u696D\u7C3F +M_Insert-Float=\u30D5\u30ED\u30FC\u30C8\u8981\u7D20 +Out_Thick_Border_Line=\u30DC\u30C3\u30AF\u30B9\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 FR-App-File_Lookup_range=\u691C\u7D22\u7BC4\u56F2 -ReportColumns-Columns_to=\u6BB5\u7D44\u307F\u7D50\u679C +ReportColumns-Columns_to=\u306E\u3088\u3046\u306B\u6539\u5217\u3059\u308B Transparent=\u900F\u660E -Parameter-Integer=\u6574\u6570 +Parameter-Integer=\u6574\u6570\u578B PDF-Print_Setting=PDF\u5370\u5237\u8A2D\u5B9A -Server-Embedded_Server=\u7D44\u307F\u8FBC\u307F\u30B5\u30FC\u30D0 -M_Server-Server_Config_Manager=\u30B5\u30FC\u30D0\u8A2D\u5B9A -FR-Utils-Would_you_like_to_cover_the_current_file=\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B +Server-Embedded_Server=\u5185\u8535\u30B5\u30FC\u30D0\u30FC +M_Server-Server_Config_Manager=\u30B5\u30FC\u30D0\u30FC\u914D\u7F6E(S) +FR-Utils-Would_you_like_to_cover_the_current_file=\u30AB\u30EC\u30F3\u30C8\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B\uFF1F CellWrite-InsertRow_COPY=\u5143\u306E\u5024 -Edit_String_To_Formula=\u6587\u5B57\u5217\u3092\u7DE8\u96C6\u3057\u3066\u6570\u5F0F\u3068\u3059\u308B\u304B\u5426\u304B +Edit_String_To_Formula=\u30AD\u30E3\u30E9\u30AF\u30BF\u30FC\u6587\u5B57\u5217\u3092\u7DE8\u96C6\u3057\u3066\u516C\u5F0F\u3068\u3059\u308B\u304B\u5426\u304B Edit-Column_Count=\u5217\u6570 Father=\u89AA -ReportColumns-Columns_after=\u3088\u308A\u5927\u304D\u3044 -FR-Designer_Undo=\u5143\u306B\u623B\u3059 -DBCP_MIN_IDLE=\u30D7\u30FC\u30EB\u306B\u4FDD\u6301\u3059\u308B\u6700\u5C0F\u63A5\u7D9A\u6570 +ReportColumns-Columns_after=\u8D85\u3048\u308B +FR-Designer_Undo=\u3084\u308A\u76F4\u3059 +DBCP_MIN_IDLE=\u6700\u5C0F\u30A2\u30A4\u30C9\u30EB\u63A5\u7D9A\u6570 M-Data_Analysis_Settings=\u30C7\u30FC\u30BF\u5206\u6790\u8A2D\u5B9A -M-Form_Preview=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30D7\u30EC\u30D3\u30E5\u30FC +M-Form_Preview=\u8868\u30D7\u30EC\u30D3\u30E5\u30FC Form-Basic_Properties=\u57FA\u672C\u5C5E\u6027 -quote=\u53C2\u7167 +quote=\u5F15\u7528 Thu=\u6728 -Collect-Collect_User_Information=\u30E6\u30FC\u30B6\u30FC\u60C5\u5831\u3092\u53CE\u96C6 -Layer-Build=\u30EC\u30A4\u30E4\u5225\u69CB\u7BC9 -FR-Designer-FRFont_Line_Style=\u7DDA\u306E\u7A2E\u985E -BackgroundTexture-BrownMarble=\u5927\u7406\u77F3(\u8336) +Collect-Collect_User_Information=\u30E6\u30FC\u30B6\u30FC\u60C5\u5831\u3092\u53CE\u96C6\u3059\u308B +Layer-Build=\u30D5\u30A1\u30BB\u30C3\u30C8\u7D44\u307F\u7ACB\u3066 +FR-Designer-FRFont_Line_Style=\u7DDA\u5F62 +BackgroundTexture-BrownMarble=\u8336\u8272\u306E\u5927\u7406\u77F3 PageSetup-Page_Setup=\u30DA\u30FC\u30B8\u8A2D\u5B9A -Form-Semicolon=\u30BB\u30DF\u30B3\u30ED\u30F3 -ECP_re_input=\u30D1\u30B9\u30EF\u30FC\u30C9\u30A8\u30E9\u30FC\u3002\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 -ExpandD-Sort_After_Expand=\u5C55\u958B\u5F8C -FR-Designer-Dependence_Install_Succeed=\u4F9D\u5B58\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u6210\u529F -Env-Configure_Workspace=\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u8A2D\u5B9A +Form-Semicolon=\u5206\u53F7 +ECP_re_input=\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u9593\u9055\u3063\u3066\u3044\u307E\u3059\u3002\u518D\u5EA6\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 +ExpandD-Sort_After_Expand=\u62E1\u5927\u5F8C +FR-Designer-Dependence_Install_Succeed=install succeed +Env-Configure_Workspace=\u4F5C\u696D\u76EE\u6B21\u8A2D\u5B9A feedback_info=\u8CB4\u91CD\u306A\u610F\u898B\u3042\u308A\u304C\u3068\u3046\u3054\u3056\u3044\u307E\u3059\u3002\u79C1\u9054\u306F\u3067\u304D\u308B\u3060\u3051\u65E9\u304F\u3042\u306A\u305F\u3068\u9023\u7D61\u3057\u307E\u3059\u3002 -Ratio=\u5272\u5408 -DBCP_TEST_ON_BORROW=\u63A5\u7D9A\u306E\u8CB8\u51FA\u524D\u306B\u63A5\u7D9A\u6709\u52B9\u6027\u3092\u691C\u8A3C -FR-Designer_layerIndex=\u4F9D\u5B58\u30EC\u30A4\u30E4\u6570 -WEB-Write_Setting=\u66F8\u304D\u8FBC\u307F\u30DA\u30FC\u30B8\u8A2D\u5B9A -M-New_WorkBook=\u30EF\u30FC\u30AF\u30D6\u30C3\u30AF\u65B0\u898F\u4F5C\u6210 -FR-Designer-Plugin_Has_Been_Actived=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u65E2\u306B\u8D77\u52D5\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC\u30D0\u306E\u518D\u8D77\u52D5\u5F8C\u306B\u6709\u52B9\u306B\u306A\u308A\u307E\u3059\u3002\u30B5\u30FC\u30D0\u306F\u624B\u52D5\u3067\u518D\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044 -Datasource-Maximum_Number_of_Preview_Rows=\u6700\u5927\u884C\u6570 -ExpandD-Cell_Expand_Attributes=\u5C55\u958B\u5C5E\u6027 -Select_the_repeated_row_and_column=\u91CD\u8907\u884C\u5217\u3092\u9078\u629E +Ratio=\u6BD4\u7387 +DBCP_TEST_ON_BORROW=\u63A5\u7D9A\u524D\u691C\u67FB\u3092\u53D6\u5F97 +FR-Designer_layerIndex= +WEB-Write_Setting=\u5831\u544A\u30DA\u30FC\u30B8\u8A2D\u5B9A +FR-Designer-Plugin_Has_Been_Actived=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u3059\u3067\u306B\u8D77\u52D5\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC +Datasource-Maximum_Number_of_Preview_Rows=\u30D7\u30EC\u30D3\u30E5\u30FC\u884C\u6570\u6700\u5927\u5024 +ExpandD-Cell_Expand_Attributes=\u62E1\u5F35\u5C5E\u6027 +Select_the_repeated_row_and_column=\u91CD\u8907\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u884C\u5217\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 FormulaD-Date_&_Time=\u65E5\u4ED8\u3068\u6642\u523B\u95A2\u6570 -Max-Mem-Row-Count=\u30C7\u30A3\u30B9\u30AF\u30AD\u30E3\u30C3\u30B7\u30E5 \u6761\u4EF6 : \u8A18\u9332\u6570> +Max-Mem-Row-Count=\u30AD\u30E3\u30C3\u30B7\u30E5\u306E\u78C1\u6C17\u30C7\u30A3\u30B9\u30AF\u8A18\u9332\u6570\u306F\u3000\u4EE5\u4E0A BorderLayout-South=\u5357 Export-Text=\u30C6\u30AD\u30B9\u30C8\u30D5\u30A1\u30A4\u30EB(\u30BF\u30D6\u533A\u5207\u308A) JavaScript-Synch=\u540C\u671F FR-App-All_Warning=\u8B66\u544A M_Edit-Send_Backward=\u80CC\u9762\u3078\u79FB\u52D5(B) -Form-Layout=\u30EC\u30A4\u30A2\u30A6\u30C8 -FR-Designer-Plugin_Shop_Need_Update=\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u30B9\u30C8\u30A2\u304C\u3042\u308A\u307E\u3059\u3001\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3057\u307E\u3059\u304B? +Form-Layout=\u914D\u7F6E +FR-Designer-Plugin_Shop_Need_Update=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306F\u3001\u66F4\u65B0\u3059\u308B\u304B\u3069\u3046\u304B\u3001\u65B0\u3057\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u4FDD\u5B58\u3057\u307E\u3059\u304B\uFF1F FR-Designer_WorkBook=\u30EF\u30FC\u30AF\u30D6\u30C3\u30AF -UpBarBorderStyleAndColor=\u967D\u7DDA\u30B9\u30BF\u30A4\u30EB -GridLayout=\u30B0\u30EA\u30C3\u30C9\u30EC\u30A4\u30A2\u30A6\u30C8 -Utils-Default_Value=\u65E2\u5B9A\u5024 -Widget-Comb_Widget_Config=\u7D44\u307F\u5408\u308F\u305B\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 -Import-Excel2007_Source=Excel2007\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB +UpBarBorderStyleAndColor=\u30B9\u30B1\u30FC\u30EB\u30A2\u30C3\u30D7\u30AB\u30E9\u30E0\u30B9\u30BF\u30A4\u30EB +GridLayout=\u683C\u5B50\u914D\u7F6E +Utils-Default_Value=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024 +Widget-Comb_Widget_Config=\u7D44\u307F\u5408\u308F\u305B\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +Import-Excel2007_Source=Excel2007\u30EA\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB Y-Coordinate=\u7E26\u5EA7\u6A19 -FR-Base_SimSun_Not_Found=\u5B8B\u4F53\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u73FE\u5728\u306E\u30B7\u30B9\u30C6\u30E0\u306E\u4E0B\u3067\u65E2\u5B9A\u8A00\u8A9E\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 -FR-Designer_Seriously=\u91CD\u5927 +FR-Base_SimSun_Not_Found=\u5B8B\u4F53\u3092\u898B\u3064\u3051\u308B\u3053\u3068\u304C\u3067\u304D\u306A\u3044\u3001\u73FE\u5728\u306E\u30B7\u30B9\u30C6\u30E0\u306E\u4E0B\u3067\u30C7\u30D5\u30A9\u30EB\u30C8\u8A00\u8A9E\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u8BBE\u8BA1\u5668\u30D5\u30A9\u30F3\u30C8\u3068\u3057\u3066 +FR-Designer_Seriously=\u53B3\u91CD Upload=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9 Form-Widget_Property_Table=\u5C5E\u6027\u8868 -Des-Merger_Cell=\u9078\u629E\u7BC4\u56F2\u306B\u8907\u6570\u306E\u30C7\u30FC\u30BF\u5024\u304C\u3042\u308B\u5834\u5408\u30011\u3064\u306E\u30BB\u30EB\u3068\u3057\u3066\u7D50\u5408\u3059\u308B\u3068\u3001\u9078\u629E\u3057\u305F\u30BB\u30EB\u7BC4\u56F2\u306B\u3042\u308B\u6700\u3082\u5DE6\u4E0A\u7AEF\u306B\u3042\u308B\u30C7\u30FC\u30BF\u306E\u307F\u304C\u4FDD\u6301\u3055\u308C\u307E\u3059\u3002 -FR-Designer-Basic_Copy_Build_NO=\u30D3\u30EB\u30C9\u756A\u53F7\u3092\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u30B3\u30D4\u30FC -FR-Base_TurnOn=\u6709\u52B9 +Des-Merger_Cell=\u9078\u629E\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u306F\u8907\u6570\u306E\u30C7\u30FC\u30BF\u304C\u542B\u307F\u3001\u30BB\u30EB\u3092\u7D50\u5408\u3057\u305F\u3089\u3001\u5DE6\u4E0A\u5074\u306E\u30C7 +FR-Designer-Basic_Copy_Build_NO=\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u7D44\u307F\u7ACB\u3066\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3092\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9 +FR-Base_TurnOn=\u8D77\u52D5 FR-Base_Rows=\u884C -Form-Remove_Repeat=\u91CD\u8907\u9805\u76EE\u3092\u524A\u9664 +Form-Remove_Repeat=\u91CD\u8907\u3059\u308B\u9805\u76EE\u3092\u524A\u9664 Yes=\u306F\u3044 Datasource-JNDI_Name=JNDI\u540D Utils-Delete_Column=\u5217\u524A\u9664 HF-Delete_it=\u524A\u9664 -JavaScript-Dynamic_Parameters=\u30C0\u30A4\u30CA\u30DF\u30C3\u30AF\u30D1\u30E9\u30E1\u30FC\u30BF +JavaScript-Dynamic_Parameters=\u52D5\u614B\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC px=\u753B\u7D20 FR-App-Report_Template=\u5E33\u7968\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 -Verify-Message=\u30A8\u30E9\u30FC\u60C5\u5831 -Plan=\u8A08\u753B -Vertical-Split_Layout=\u5782\u76F4\u5206\u5272\u30EC\u30A4\u30A2\u30A6\u30C8 -ParameterD-Delay_Playing=\u691C\u7D22\u30AF\u30EA\u30C3\u30AF\u524D\u306B\u5E33\u7968\u5185\u5BB9\u3092\u8868\u793A\u3057\u306A\u3044 -TurnOff=\u7121\u52B9 -FR-Please_Rename=\u540D\u524D\u3092\u5909\u66F4\u3057\u3066\u304F\u3060\u3055\u3044 -Select_Data_Set=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u9078\u629E +Verify-Message=\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8 +Plan=\u30D7\u30E9\u30F3 +Vertical-Split_Layout=\u5782\u76F4\u5206\u5272\u914D\u7F6E +ParameterD-Delay_Playing=\u5831\u544A\u8868\u306E\u5C55\u793A\u3092\u5EF6\u671F\u3057\u307E\u3059 +TurnOff=\u9589\u3058\u308B +FR-Please_Rename=\u518D\u5EA6\u547D\u540D\u3057\u3066\u304F\u3060\u3055\u3044 +Select_Data_Set=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u3092\u9078\u629E Name_has_Colon=\u540D\u524D\: -ReportColumns-Columns_horizontally=\u884C\u306E\u6BB5\u7D44\u307F +ReportColumns-Columns_horizontally=\u6C34\u5E73\u65B9\u5411\u5217 FR-Base_Yes=\u306F\u3044 -ReportColumns-Repeat_Row=\u884C\u306E\u9806\u5E8F\u3092\u30B3\u30D4\u30FC +ReportColumns-Repeat_Row=\u884C\u756A\u53F7\u306E\u7E70\u308A\u8FD4\u3057 Print_Setting=\u5370\u5237\u8A2D\u5B9A -Registration-User_Name=\u30E6\u30FC\u30B6\u30FCID -Datasource-User_Defined=\u30AB\u30B9\u30BF\u30E0 -FR-Designer-Plugin_DownLoadMessage=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u30B5\u30DD\u30FC\u30C8\u30BD\u30D5\u30C8\u304C\u5FC5\u8981\u3067\u3059\u304C\u3001\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u307E\u3059\u304B ({R1} m)? +Registration-User_Name=\u30E6\u30FC\u30B6\u540D +Datasource-User_Defined=\u30E6\u30FC\u30B6\u5B9A\u7FA9 +FR-Designer-Plugin_DownLoadMessage= Delay=\u9045\u5EF6 -FR-Designer-All_MSBold=\u30DE\u30A4\u30AF\u30ED\u30BD\u30D5\u30C8\u30E4\u30D8\u30A4 -Utils-Now_create_connection=\u30C7\u30FC\u30BF\u63A5\u7D9A\u78BA\u7ACB\u4E2D -FR-Template-Path_chooseRightPath=\u6B63\u3057\u3044\u30D1\u30B9\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 -FR-Remote_Re_Connect_to_Server=\u30B5\u30FC\u30D0\u3068\u63A5\u7D9A\u3057\u3066\u3044\u307E\u305B\u3093\u3001\u518D\u63A5\u7D9A\u3057\u307E\u3059\u304B? -Nation=\u56FD -DBCP_MAX_WAIT=\u63A5\u7D9A\u4E0D\u8DB3\u6642\u306E\u6700\u5927\u5F85\u6A5F\u6642\u9593 -FR-App-Template_Form=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9 +FR-Designer-All_MSBold=\u5FAE\u8EDF\u96C5\u9ED2 +Utils-Now_create_connection=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u3078\u306E\u63A5\u7D9A +FR-Template-Path_chooseRightPath=\u6B63\u78BA\u306A\u30EB\u30FC\u30C8\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Remote_Re_Connect_to_Server=\u30B5\u30FC\u30D0\u30FC\u306F\u9589\u3058\u3089\u308C\u307E\u3057\u305F\u3002\u518D\u5EA6\u30B5\u30FC\u30D0\u30FC\u306B\u63A5\u7D9A\u3057\u307E\u3059\u304B? +Nation=\u56FD\u5BB6 +DBCP_MAX_WAIT=\u6700\u5927\u5F85\u3061\u6642\u9593 +FR-App-Template_Form=\u8868 Address=\u30A2\u30C9\u30EC\u30B9 Sub_Report=\u5B50\u5E33\u7968 -FR-Import-Export_Word=Word -FR-Server_Version_Tip=\u4ECA\u63A5\u7D9A\u3055\u308C\u3066\u3044\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u3054\u4F7F\u7528\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3088\u308A\u4F4E\u3044\u306E\u3067\u3001\u5F15\u304D\u7D9A\u304D\u63A5\u7D9A\u3059\u308B\u3068\u3001\u7DE8\u96C6\u306E\u3044\u304F\u3064\u304B\u306E\u5C5E\u6027\u306F\u6709\u52B9\u7684\u306B\u4FDD\u5B58\u3067\u304D\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u63A5\u7D9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308C\u3070\u3001\u304A\u4F7F\u3044\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3068\u4E00\u81F4\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Import-Export_Word=Word\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +FR-Server_Version_Tip=\u73FE\u5728\u306E\u63A5\u7D9A\u3057\u3066\u3044\u308B\u30B5\u30FC\u30D0\u30FC\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u4F7F\u7528\u3057\u3066\u3044\u308B\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u30D0 StyleAlignment-Left_To_Right=\u5DE6\u304B\u3089\u53F3\u3078 -Verify-ToolTips=\u6570\u5F0F\u3092\u6E80\u305F\u3055\u306A\u3044\u5834\u5408\u3001\u691C\u8A3C\u30A8\u30E9\u30FC\u60C5\u5831\u3092\u8868\u793A\u3059\u308B -BackgroundTexture-Stationery=\u3072\u306A\u578B -FR-Designer_RWA-Help=\u5909\u66F4\u6642\u306E\u307F\u66F4\u65B0\u3092\u9078\u629E\u3057\u305F\u5834\u5408\u3001\u30DA\u30FC\u30B8\u5225\u30D7\u30EC\u30D3\u30E5\u30FC\u3068\u66F8\u304D\u8FBC\u307F\u30D7\u30EC\u30D3\u30E5\u30FC\u306E\u5834\u5408\u3001\u30EC\u30B3\u30FC\u30C9\u5185\u5BB9\u306E\u30BB\u30EB\u306F\u7DE8\u96C6\u3084\u5909\u66F4\u304C\u3055\u308C\u306A\u3044\u305F\u3081\u3001\u3053\u306E\u30EC\u30B3\u30FC\u30C9\u306F\u66F4\u65B0\u3055\u308C\u307E\u305B\u3093\u3002\n\u5927\u91CF\u306E\u30C7\u30FC\u30BF\u306E\u30AF\u30A8\u30EA\u3084\u66F8\u304D\u8FBC\u307F\u3092\u3059\u308B\u5834\u5408\u3001\u3053\u306E\u8A2D\u5B9A\u3092\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u9AD8\u901F\u5316\u304C\u671F\u5F85\u3067\u304D\u307E\u3059\u3002 +Verify-ToolTips=\u516C\u5F0F\u304C\u63D0\u793A\u6821\u9A8C\u3082\u6E80\u8DB3\u3057\u3066\u3044\u306A\u3044\u8BEF\u308A\u304C\u60C5\u5831\u3092\u624B\u306B\u5165\u308C\u305F +BackgroundTexture-Stationery=\u4FBF\u7B8B +FR-Designer_RWA-Help=\u8A2D\u5B9A\u3092\u672A\u4FEE\u6B63\u3067\u66F4\u65B0\u305B\u305A\u3001\u30D7\u30EC\u30D3\u30E5\u30FC\u3057\u305F\u5E33\u7968\u3092\u5831\u544A\u3057\u3001\u30BB\u30EB\u306B\u8A18\u9332\u3055\u308C M_Insert-Barcode=\u30D0\u30FC\u30B3\u30FC\u30C9 Bounds=\u30DC\u30FC\u30C0\u30FC -FR-Designer-Undo_All_Authority_Operations=\u524D\u56DE\u306E\u7DE8\u96C6\u6A29\u9650\u306E\u3059\u3079\u3066\u306E\u64CD\u4F5C\u3092\u5143\u306B\u623B\u3059 +FR-Designer-Undo_All_Authority_Operations=\u524D\u56DE\u306E\u6A29\u9650\u7DE8\u96C6\u6642\u306E\u5168\u3066\u306E\u30AA\u30DA\u30EC\u30FC\u30B7\u30E7\u30F3\u3092\u64A4\u56DE\u3059 Datasource-Context=\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8 CellWrite-Page_After_Column=\u5217\u5F8C\u306E\u6539\u30DA\u30FC\u30B8 FR-Designer_Cancel=\u30AD\u30E3\u30F3\u30BB\u30EB Button-Group-Display-Columns=\u5217\u306E\u6570\u3092\u8868\u793A\u3059\u308B -Widget-Height=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u9AD8\u3055 +Widget-Height=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u9AD8\u3055 Examples=\u4F8B -Formula_Dictionary_Display_Example=\u5B9F\u969B\u306E\u5024\u304C \=range(100)\u306E\u3068\u304D\u3001\u5B9F\u969B\u306E\u5024($$$)\u306E\u8868\u793A\u3059\u308B\u5024\u306E\u6570\u5F0F\u304C \= 0 - $$$\u306E\u3068\u304D\u3001\n\u6700\u7D42\u7684\u306A\u5B9F\u969B\u306E\u5024\u306F\u30011, 2, ..., 100\u3067\u3042\u308A\u3001\n\u305D\u306E\u8868\u793A\u7D50\u679C\u306F-1, -2, ..., -100\u3068\u306A\u308B\u3002 -StyleAlignment-Horizontal=\u6A2A\u4F4D\u7F6E +Formula_Dictionary_Display_Example=\u5B9F\u969B\u5024\u7BC4\u56F2\u306F\ +StyleAlignment-Horizontal=\u6C34\u5E73\u63C3\u3048 HyperLink_Must_Alone_Reset=\u8907\u6570\u306E\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF -ExpandD-Expand_Direction=\u5C55\u958B\u65B9\u5411 -Include=\u304C\u542B\u307E\u308C\u308B -Export-Excel-Page=\u30DA\u30FC\u30B8\u5225\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +ExpandD-Expand_Direction=\u62E1\u5F35\u65B9\u5411 +Include=\u542B\u3080 +Export-Excel-Page=\u30DA\u30FC\u30B8 FR-Designer-Min_Height=\u6700\u5C0F\u9AD8\u3055 Filed=\u30A8\u30EA\u30A2 -ReportServerP-Import_Css=Css\u53C2\u7167 -M_Insert-Formula=\u6570\u5F0F -FR-Designer_Auto-Build=\u81EA\u52D5\u69CB\u7BC9 +ReportServerP-Import_Css=Css\u5F15\u7528 +M_Insert-Formula=\u516C\u5F0F +FR-Designer_Auto-Build=\u81EA\u52D5\u7684\u306B\u30D3\u30EB\u30C9 FRFont-Foreground=\u8272 Bubble-Width=\u30D0\u30D6\u30EB\u306E\u5E45 Form-Hierarchy_Tree=\u69CB\u9020\u30C4\u30EA\u30FC -WLayout-Border-LayoutContainer=\u5317\u90E8\u3001\u4E2D\u592E\u90E8\u306E2\u30D6\u30ED\u30C3\u30AF\u306E\u30DC\u30FC\u30C0\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u3067\u69CB\u6210\u3055\u308C\u308B\u30EC\u30A4\u30A2\u30A6\u30C8\u3002\u5317\u90E8\u30D6\u30ED\u30C3\u30AF\u3067\u306F\u9AD8\u3055\u3092\u8ABF\u6574\u3067\u304D\u307E\u3059\u3002 +WLayout-Border-LayoutContainer=\u4E2D\u90E8\u3068\u5317\u90E82\u30DC\u30FC\u30C0\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u3068\u5317\u90E8\u30D6\u30ED\u30C3\u30AF\u3092\u542B\u3081 Preference-JDK_Home=JDK\u30D1\u30B9 Utils-Insert_Column=\u5217\u633F\u5165 -FR-Designer_ToolBar_Top=\u4E0A\u90E8\u306E\u30C4\u30FC\u30EB\u30D0\u30FC +FR-Designer_ToolBar_Top=\u30D8\u30C3\u30C0\u30FC\u30C4\u30FC\u30EB\u30D0\u30FC BindColumn-The_Conditions_of_FatherCell=\u89AA\u30BB\u30EB\u6761\u4EF6 Links=\u30EA\u30F3\u30AF M_Report-Report_Header=\u5E33\u7968\u30D8\u30C3\u30C0\u30FC -Sub_Report_Description=\u5B50\u5E33\u7968\u306F\u3001\u89AA\u5E33\u7968\u3068\u540C\u3058\u5B9F\u884C\u74B0\u5883\u306B\u4FDD\u5B58\u3055\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u89AA\u5B50\u306F\u7570\u306A\u308B\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 -T_Insert-Float=\u30D5\u30ED\u30FC\u30C6\u30A3\u30F3\u30B0\u8981\u7D20\u633F\u5165 -BackgroundTexture-FishFossil=\u5316\u77F3 -My_Computer=\u30DE\u30A4\u30B3\u30F3\u30D4\u30E5\u30FC\u30BF -FORMLET=\u7570\u306A\u308B\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u30D1\u30E9\u30E1\u30FC\u30BF +Sub_Report_Description=\u5B50\u5E33\u7968\u306F\u89AA\u8868\u904B\u884C\u74B0\u5883\u4E0B\u306B\u5B58\u5728\u3057\u306A\u3051\u308C\u3070\u306A\u3089\u305A\u3001\u4E21\u8005\u306F\u540C\u4E00\u30C6\u30F3\u30D7\u30EC +T_Insert-Float=\u30D5\u30ED\u30FC\u8981\u7D20\u3092\u633F\u5165 +BackgroundTexture-FishFossil=\u9B5A\u5316\u77F3 +My_Computer=\u30DE\u30A4 \u30B3\u30F3\u30D4\u30E5\u30FC\u30BF +FORMLET=\u7570\u306A\u308B\u8868\u306E\u30EB\u30FC\u30C8\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u306B\u30A2\u30AF\u30BB\u30B9 HF-Undefined=\u672A\u5B9A\u7FA9 -Widget-User_Defined_Widget_Config=\u30AB\u30B9\u30BF\u30E0\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 -Report-Write_Attributes_Group_Warning=\u30BB\u30EB\u30B0\u30EB\u30FC\u30D7\u306E\u5404\u30D5\u30A3\u30FC\u30EB\u30C9\u5185\u306E\u30BB\u30EB\u6570\u304C\u540C\u3058\u3067\u306A\u3051\u308C\u3070\u306A\u3089\u306A\u3044\u3053\u3068\u3092\u8A2D\u5B9A -Form-Single_quote=\u5358\u5F15\u7528\u7B26 -Compile_Success_And_Then_Save=\u30B3\u30F3\u30D1\u30A4\u30EB\u6210\u529F\u5F8C\u306B\u4FDD\u5B58\u3067\u304D\u307E\u3059 +Widget-User_Defined_Widget_Config=\u30D7\u30EC\u5B9A\u7FA9\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +Report-Write_Attributes_Group_Warning=\u8A2D\u5B9A\u3092\u30AD\u30FC?\u30C1\u30FC\u30E0\u306E\u5404\u30B3\u30E9\u30E0\u306E\u4E2D\u306E\u30AD\u30FC\u4E2A\u6570\u306F\u540C\u3058\u3067 +Form-Single_quote=\u30B7\u30F3\u30B0\u30EB\u30AF\u30A9\u30FC\u30C6\u30FC\u30B7\u30E7\u30F3\u30DE\u30FC\u30AF +Compile_Success_And_Then_Save=\u7DE8\u96C6\u7FFB\u8A33\u6210\u529F\u5F8C\u306B\u4FDD\u5B58\u3067\u304D\u307E\u3059 FR-Designer_Layout-Padding=\u30D1\u30C7\u30A3\u30F3\u30B0 -Layout_Container=\u30B3\u30F3\u30C6\u30CA\u30EC\u30A4\u30A2\u30A6\u30C8 +Layout_Container=\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA Admin=\u7BA1\u7406\u8005 -Form-EC_toolbar=\u5E33\u7968\u30D6\u30ED\u30C3\u30AF\u30C4\u30FC\u30EB\u30D0\u30FC +Form-EC_toolbar=\u5E33\u7968\u30E2\u30B8\u30E5\u30FC\u30EB\u30C4\u30FC\u30EB\u30D0\u30FC FR-App-All_Auto=\u81EA\u52D5 -Utils-Available_Columns=\u30AA\u30D7\u30B7\u30E7\u30F3\u5217 -Form-Change_Widget_Name_Discription=\u65B0\u3057\u3044\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 +Utils-Available_Columns=\u9078\u629E\u53EF\u80FD\u306E\u5217 +Form-Change_Widget_Name_Discription=\u65B0\u3057\u3044\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 FR-Module_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u30E2\u30B8\u30E5\u30FC\u30EB -FR-Import-Export_Text=\u30C6\u30AD\u30B9\u30C8\u30D5\u30A1\u30A4\u30EB(\u30BF\u30D6\u533A\u5207\u308A) +FR-Import-Export_Text=\u6587\u66F8\u30D5\u30A1\u30A4\u30EB(\u30BF\u30D6\u6587\u5B57\u5206\u9694) Values-Editor=\u5024\u30A8\u30C7\u30A3\u30BF FR-Designer_Yes=\u306F\u3044 -ExpandD-Expandable=\u5C55\u958B -Tree-Return_Full_Path=\u7D50\u679C\u306F\u5B8C\u5168\u306A\u30EC\u30D9\u30EB\u30D1\u30B9\u3092\u623B\u3059 +ExpandD-Expandable=\u62E1\u5F35\u6027 +Tree-Return_Full_Path=\u7D50\u679C\u306F\u5B8C\u5168\u306A\u30D1\u30B9\u3092\u623B\u308A\u307E\u3059 FRFont-bolditalic=\u592A\u5B57\u659C\u4F53 FR-Base_StyleFormat_Sample=\u4F8B -Area_Value=\u30A8\u30EA\u30A2\u5024 +Area_Value=\u5730\u57DF\u5024 FR-Designer-Plugin_Disable=\u4F7F\u7528\u7981\u6B62 -Utils-Are_you_sure_to_remove_the_selected_item=\u9805\u76EE\u3092\u524A\u9664\u3057\u307E\u3059\u304B -Face_Write=\u66F8\u304D\u8FBC\u307F -Poly-Report_Block=\u5E33\u7968\u30BF\u30A4\u30D7\u30D6\u30ED\u30C3\u30AF +Utils-Are_you_sure_to_remove_the_selected_item=\u9078\u629E\u3055\u308C\u305F\u9805\u76EE\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B +Face_Write=\u5831\u544A +Poly-Report_Block=\u5E33\u7968\u30BF\u30A4\u30D7\u805A\u5408\u30E2\u30B8\u30E5\u30FC\u30EB Vgap=\u5782\u76F4\u9593\u9699 FR-Designer_HyperLink_Must_Alone_Reset=\u8907\u6570\u306E\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF DS-Class=\u30D7\u30ED\u30B0\u30E9\u30E0 -FR-Hyperlink_Please_Select_Reportlet=\u30CD\u30C3\u30C8\u5E33\u7968\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Hyperlink_Please_Select_Reportlet=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u5E33\u7968\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 FS_Report_Type=\u30BF\u30A4\u30D7 -HF-New_Line=\u6539\u884C\u6587\u5B57 +HF-New_Line=\u6539\u884C\u30B3\u30FC\u30C9 Privilege=\u6A29\u9650 -Export-Offline-Html=\u30AA\u30D5\u30E9\u30A4\u30F3html\u5E33\u7968\u3092\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 -FR-Designer_open-new-form-tip=\u73FE\u5728\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F711\u4EE5\u4E0B\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u4F5C\u6210\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001\u4E92\u63DB\u6027\u304C\u306A\u304F\u3001\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3002\u3053\u306E\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u3092\u7DE8\u96C6\u3059\u308B\u306B\u306F\u3001\u5BFE\u5FDC\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u5229\u7528\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +Export-Offline-Html=\u30AA\u30D5\u30E9\u30A4\u30F3html\u5E33\u7968\u51FA\u529B +FR-Designer_open-new-form-tip=711\u4EE5\u4E0B\u306E\u751F\u7523\u306E\u305F\u3081\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u73FE\u5728\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u3001\u4E92 FR-Designer-Widget-Style_Frame_Style=\u30D5\u30EC\u30FC\u30E0\u30B9\u30BF\u30A4\u30EB -Present-No_Present=\u5F62\u614B\u8A2D\u5B9A\u306A\u3057 +Present-No_Present=\u30D5\u30A9\u30EB\u30E0\u8A2D\u5B9A\u3092\u30AD\u30E3\u30F3\u30BB\u30EB FR-Designer_Form-Password=\u30D1\u30B9\u30EF\u30FC\u30C9 X_Axis=X\u8EF8 FR-mobile_html_analysis=HTML5\u89E3\u6790 M_Edit-Bring_to_Front=\u6700\u524D\u9762\u3078\u79FB\u52D5(T) -Null_Value_Show=\u6B20\u640D\u5024 -Datasource-JNDI_DES=\u6CE8\u610F\:INITIAL_CONTEXT_FACTORY\u30AF\u30E9\u30B9\u3092\u542B\u3080.jar\u30D5\u30A1\u30A4\u30EB\u3092/lib\u4E0B\u306B\u30B3\u30D4\u30FC\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +Null_Value_Show=\u7A7A\u5024\u8868\u793A +Datasource-JNDI_DES=\u6CE8\: INITIAL_CONTEXT_FACTORY\u304C\u542B\u3080\u30AF\u30E9\u30B9\u306E.jar\u30D5\u30A1\u30A4\u30EB\u3092lib\u306B\u30B3\u30D4\u30FC PrintP-Print_Preview=\u5370\u5237\u30D7\u30EC\u30D3\u30E5\u30FC Form-Hierarchy_Tree_Last=\u524D -Has_been_gone=\ \u5931\u308F\u308C\u3066\u3044\u307E\u3059\u3002\u3053\u306E\u30B9\u30BF\u30A4\u30EB\u3092\u8FFD\u52A0\u3057\u307E\u3059\u304B? -RWA-Add_Field=\u30D5\u30A3\u30FC\u30EB\u30C9\u8FFD\u52A0 -newNode=\u8FFD\u52A0\u30CE\u30FC\u30C9 -PageSetup-Shrink_to_fit_content=\u30BB\u30EB\u5185\u5BB9\u306B\u5FDC\u3058\u3066\u81EA\u52D5\u8ABF\u6574 +Has_been_gone=\ \u5931\u308F\u308C\u307E\u3057\u305F\u3002\u5F53\u8A72\u30B9\u30BF\u30A4\u30EB\u3092\u5897\u52A0\u3057\u307E\u3059\u304B\uFF1F +RWA-Add_Field=\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u8FFD\u52A0 +newNode=\u30CE\u30FC\u30C9\u306E\u8FFD\u52A0 +PageSetup-Shrink_to_fit_content=\u30BB\u30EB\u5185\u5BB9\u306B\u3082\u3068\u3065\u3044\u3066\u81EA\u52D5\u8C03\u6574 FR-Designer_Date=\u65E5\u4ED8 Column_Multiple=\u30C7\u30FC\u30BF\u500D\u6570 FR-App-All_File=\u30D5\u30A1\u30A4\u30EB Sort-Descending=\u964D\u9806 FR-Designer-Plugin_Delete=\u524A\u9664 -Above=\u4EE5\u4E0A\u306E\u30D0\u30FC\u30B8\u30E7\u30F3 +Above=\u4E0A\u8A18\u306E Utils-The-Chart=\u30B0\u30E9\u30D5 FRFont-plain=\u6A19\u6E96 Calculating=\u51E6\u7406\u4E2D -Form-Object=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\: -May=5\u6708 -FR-Designer_Plugin_Normal_Update=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 -FR-Hyperlink_Reportlet=\u30CD\u30C3\u30C8\u5E33\u7968 +Form-Object=\u30D5\u30A9\u30FC\u30E0\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 +May=\u4E94\u6708 +FR-Designer_Plugin_Normal_Update=\u66F4\u65B0 +FR-Hyperlink_Reportlet=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u5E33\u7968 M_Edit-Copy=\u30B3\u30D4\u30FC(C) -Sub_Report_Message2=\u89AA\u5E33\u7968\u304C\u5229\u7528\u4E2D\u306E\u5B9F\u884C\u74B0\u5883\u306B\u3042\u308A\u307E\u305B\u3093 -Sub_Report_Message3=\u81EA\u8EAB\u3092\u9078\u629E\u3067\u304D\u307E\u305B\u3093 -Sub_Report_Message1=\u6B63\u3057\u3044\u30D1\u30B9\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 -Form-Allow_CustomData=\u30AB\u30B9\u30BF\u30E0 -FR-Server_Version_Tip_MoreInfo=\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u4E0D\u4E00\u81F4\u3092\u539F\u56E0\u3068\u3059\u308B\u554F\u984C\u3092\u907F\u3051\u308B\u305F\u3081\u306B\u3001\u958B\u767A\u30C1\u30FC\u30E0\u3067\u5229\u7528\u3057\u3066\u3044\u308BFineReport\u88FD\u54C1\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3001\u53CA\u3073\u8A2D\u5B9A\u3055\u308C\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3092\u30C1\u30A7\u30C3\u30AF\u3092\u304A\u52E7\u3081\u3044\u305F\u3057\u307E\u3059\u3002n\u3088\u308A\u9AD8\u3044\u30C7\u30B6\u30A4\u30CA\u30FC\u3067\u4F5C\u6210\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F\u3068\u30A8\u30E9\u30FC\u306E\u767A\u751F\u539F\u56E0\u3068\u306A\u308B\u307B\u304B\u3001\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u6A5F\u80FD\u3084\u5C5E\u6027\u306E\u4E00\u90E8\u3092\u5931\u3046\u6050\u308C\u304C\u3042\u308A\u307E\u3059\u3002\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u4F5C\u6210\u7528\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u3001\u6700\u7D42\u7684\u306A\u8A2D\u5B9A\u5148\u3067\u3042\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3088\u308A\u9AD8\u3044\u5834\u5408\u3001\u30B5\u30FC\u30D0\u3067\u5229\u7528\u3055\u308C\u308B\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F\u6B63\u5E38\u306B\u52D5\u4F5C\u3057\u306A\u3044\u6050\u308C\u304C\u3042\u308A\u307E\u3059\u3002 -FR-Designer_Server-version-tip-moreInfo=\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u4E0D\u4E00\u81F4\u3092\u539F\u56E0\u3068\u3059\u308B\u554F\u984C\u3092\u907F\u3051\u308B\u305F\u3081\u306B\u3001\u958B\u767A\u30C1\u30FC\u30E0\u3067\u5229\u7528\u3057\u3066\u3044\u308BFineReport\u88FD\u54C1\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3001\u53CA\u3073\u8A2D\u5B9A\u3055\u308C\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3092\u30C1\u30A7\u30C3\u30AF\u3092\u304A\u52E7\u3081\u3044\u305F\u3057\u307E\u3059\u3002n\u3088\u308A\u9AD8\u3044\u30C7\u30B6\u30A4\u30CA\u30FC\u3067\u4F5C\u6210\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F\u3068\u30A8\u30E9\u30FC\u306E\u767A\u751F\u539F\u56E0\u3068\u306A\u308B\u307B\u304B\u3001\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u6A5F\u80FD\u3084\u5C5E\u6027\u306E\u4E00\u90E8\u3092\u5931\u3046\u6050\u308C\u304C\u3042\u308A\u307E\u3059\u3002\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u4F5C\u6210\u7528\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u3001\u6700\u7D42\u7684\u306A\u8A2D\u5B9A\u5148\u3067\u3042\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3088\u308A\u9AD8\u3044\u5834\u5408\u3001\u30B5\u30FC\u30D0\u3067\u5229\u7528\u3055\u308C\u308B\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F\u6B63\u5E38\u306B\u52D5\u4F5C\u3057\u306A\u3044\u6050\u308C\u304C\u3042\u308A\u307E\u3059\u3002 +Sub_Report_Message2=\u89AA\u5E33\u7968\u306F\u73FE\u5728\u306E\u904B\u884C\u74B0\u5883\u4E0B\u306B\u5B58\u5728\u3057\u307E\u305B\u3093 +Sub_Report_Message3=\u81EA\u8EAB\u3092\u9078\u629E\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +Sub_Report_Message1=\u6B63\u78BA\u306A\u30EB\u30FC\u30C8\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 +Form-Allow_CustomData=\u30AB\u30B9\u30BF\u30DE\u3042\u308A +FR-Server_Version_Tip_MoreInfo=\u6240\u5C5E\u3059\u308B\u30B0\u30EB\u30FC\u30D7\u304C\u4F7F\u7528\u3059\u308BFineReport\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u30D0\u30FC\u30B8 +FR-Designer_Server-version-tip-moreInfo=\u79C1\u305F\u3061\u306E\u88FD\u54C1\u306EFineReport Designer\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7 Get_Lock=\u30ED\u30C3\u30AF HF-Edit_Footer=\u30D5\u30C3\u30BF\u30FC\u7DE8\u96C6 Datasource-New_Charset=\u65B0\u6587\u5B57\u30B3\u30FC\u30C9 -Preference-Custom=\u30AB\u30B9\u30BF\u30E0 -BackgroundTexture-Newsprint=\u65B0\u805E\u7D19 -ConditionB-Add_bracket=\u62EC\u5F27\u3092\u8FFD\u52A0 +Preference-Custom=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA +BackgroundTexture-Newsprint=\u65B0\u805E\u7528\u7D19 +ConditionB-Add_bracket=\u62EC\u5F27\u3092\u8FFD\u52A0\u3059\u308B Datasource-Connection_successfully=\u63A5\u7D9A\u6210\u529F -Function-The_class_must_implement_the_interface=\u30AF\u30E9\u30B9\u306F\u6B21\u306E\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u5B9F\u88C5\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\: +Function-The_class_must_implement_the_interface=\u5F53\u8A72\u30AF\u30E9\u30B9\u306F\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30FC\u30B9\u304B\u3089\u30A4\u30F3\u30D7\u30EC FR-Designer_ChartF-Transparency=\u900F\u660E -Crimson=\u6DF1\u7D05\u8272 -FR-Hyperlink_Dialog=\u30C0\u30A4\u30A2\u30ED\u30B0 -FR-Designer_Covered_All=\u3059\u3079\u3066\u4E0A\u66F8\u304D -Hyperlink-New_Window=\u65B0\u898F\u30A6\u30A3\u30F3\u30C9\u30A6 -Style_Name=\u30B9\u30BF\u30A4\u30EB\u540D -CSS_warning= \ \u76F8\u5BFE\u7684\u306A\u30EC\u30DD\u30FC\u30C8\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30D5\u30A9\u30EB\u30C0\u30FC\u3092WebReport\u3068\u3057\u3001\u53C2\u7167\u3057\u305F\u3044CSS\u30D5\u30A1\u30A4\u30EB\u540D\u304Ctest.css\u3067\u3042\u308A\u3001
 WebReport\\css\u5185\u306B\u3042\u308B\u3068\u304D\u3001\u76F8\u5BFE\u30D1\u30B9\u306Fcss/test.css\u3068\u306A\u308B +Crimson=\u771F\u7D05 +FR-Hyperlink_Dialog=\u5BFE\u8A71\u30A6\u30A3\u30F3\u30C9\u30A6 +FR-Designer_Covered_All=\u5168\u3066\u8986\u3046 +Hyperlink-New_Window=\u65B0\u30A6\u30A3\u30F3\u30C9\u30A6 +Style_Name=\u66F8\u5F0F\u540D +CSS_warning= \u305D\u306E\u3088\u3046\u306AWebReport\\ CSS\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9CSS\u30D5\u30A1\u30A4\u30EB\u304C\u5B58\u5728test.css\u306F\u3001css / test.css\u306E\u76F8\u5BFE\u30D1\u30B9\u3068\u3057\u3066
 \u6BD4\u8F03\u7684\u6587\u5DE5\u5B66\u30C7\u30A3\u30EC\u30AF\u30C8\u30EAWebReport\u3001 FR-Base_Column=\u5217 -Three_Rows_Of_Two_Grid=3\u884C2\u5217\u306E\u30B0\u30EA\u30C3\u30C9 -DBCP_VALIDATION_QUERY=\u63A5\u7D9A\u6709\u52B9\u6027\u3092\u691C\u8A3C\u3059\u308BSQL\u30AF\u30A8\u30EA -M_Edit-Clear_Formats=\u66F8\u5F0F(F) -Parameter_Setting=\u30D1\u30E9\u30E1\u30FC\u30BF +Three_Rows_Of_Two_Grid=2\u683C\u5B50\u306E3\u3064\u306E\u884C +DBCP_VALIDATION_QUERY=SQL\u8A8D\u8A3C\u30AF\u30A8\u30EA +M_Edit-Clear_Formats=\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8(F) +Parameter_Setting=\u30D1\u30E9\u30E1\u30FC\u30BF\u8A2D\u5B9A Related=\u9023\u52D5 -BorderLayout-Constraints=\u4F4D\u7F6E -Write_Preview=\u66F8\u304D\u8FBC\u307F\u30D7\u30EC\u30D3\u30E5\u30FC -PageSetup-Page_Order=\u30DA\u30FC\u30B8\u306E\u65B9\u5411 -Verify-Verify_Formula=\u6570\u5F0F\u306E\u691C\u8A3C +BorderLayout-Constraints=\u5834\u6240 +Write_Preview=\u5831\u544A\u30D7\u30EC\u30D3\u30E5\u30FC +PageSetup-Page_Order=\u5370\u5237\u9806 +Verify-Verify_Formula=\u691C\u8A3C\u5F0F State=\u7701\u5E02 -FR-Designer-Widget-Style_Body_Background=\u672C\u4F53\u80CC\u666F +FR-Designer-Widget-Style_Body_Background=\u30E1\u30A4\u30F3\u80CC\u666F FR-App-Privilege_No=\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093 -Please_Drag_ParaPane=Please_Drag_ParaPane -Come_True=\u5B9F\u88C5 -ISEMPTY=\u7A7A\u306B\u3059\u308B +Please_Drag_ParaPane= +Come_True=\u5B9F\u73FE +ISEMPTY=\u7A7A\u6B04 Background-Texture=\u30C6\u30AF\u30B9\u30C1\u30E3 FR-Designer_Verify-Message=\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8 -Locked=(\u30ED\u30C3\u30AF\u6E08\u307F) +Locked=\uFF08\u30ED\u30C3\u30AF\u6E08\u307F\uFF09 Utils-Design-Action_Cancel=\u30AD\u30E3\u30F3\u30BB\u30EB -Image-Titled=\u4E26\u3079\u3066\u8868\u793A -Gradient-Direction=\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3\u65B9\u5411 -Green=\u9752\u7DD1 +Image-Titled=\u5C55\u958B +Gradient-Direction=\u65B9\u5411\u3092\u5F90\u3005\u306B\u5909\u5316 +Green=\u6DF1\u7DD1 Report_Engine=\u5E33\u7968\u30A8\u30F3\u30B8\u30F3 -Return-String=\u6587\u5B57\u5217\u3092\u623B\u3059 +Return-String=\u30AD\u30E3\u30E9\u30AF\u30BF\u30FC\u6587\u5B57\u5217\u306B\u623B\u308B Margin=\u30DE\u30FC\u30B8\u30F3 -Pitch_Percentage=\u9593\u9694\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8 -FR-Base_TurnOff=\u7121\u52B9 -Utils-has_been_existed=\u65E2\u306B\u3042\u308B -HF-Insert_Formula=\u6570\u5F0F\u306E\u633F\u5165 -Utils-Exit_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u7D42\u4E86 -Formula_Dictionary_Display=\u5B9F\u969B\u306E\u5024\u7BC4\u56F2\u5185\u306E\u5024($$$)\u306B\u5BFE\u3057\u3066\u3001\u305D\u306E\u8868\u793A\u5024\u306F -PageSetup-Left_to_right=\u4E0A\u304B\u3089\u4E0B -Utils-Import_Excel_Data=Excel\u30A4\u30F3\u30DD\u30FC\u30C8 +Pitch_Percentage=\u30D4\u30C3\u30C1\u306E\u5272\u5408 +FR-Base_TurnOff=\u9589\u3058\u308B +Utils-has_been_existed=\u65E2\u5B58 +HF-Insert_Formula=\u516C\u5F0F\u3092\u633F\u5165 +Utils-Exit_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u7D42\u4E86\u3059\u308B +Formula_Dictionary_Display=\u4E0A\u306E\u5B9F\u969B\u5024\u7BC4\u56F2\u5185\u306E\u3044\u305A\u308C\u306E\u5024($$$)\u306F\u3001\u305D\u306E\u8868\u793A\u5024\u306F +PageSetup-Left_to_right=\u5DE6\u304B\u3089\u53F3\u3078 +Utils-Import_Excel_Data=\u300CExcel]\u30A4\u30F3\u30D7\u30C3\u30C8 M-Save=\u4FDD\u5B58 -redo=\u3084\u308A\u76F4\u3057 +redo=\u3082\u3046\u4E00\u5EA6\u3059\u308B Status=\u72B6\u614B Draw=\u5236\u4F5C -FR-Designer_Message=\u60C5\u5831 -Records=\u4EF6\u306E\u8A18\u9332 +FR-Designer_Message=\u30E1\u30C3\u30BB\u30FC\u30B8 +Records=\u3064\u306E\u8A18\u9332 FR-Designer_ComboBox=\u30B3\u30F3\u30DC\u30DC\u30C3\u30AF\u30B9 -Driver=JDBC\u30C9\u30E9\u30A4\u30D0 -Template_Parameters=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF -Form-Remove_Repeat_Data=\u91CD\u8907\u30C7\u30FC\u30BF\u3092\u524A\u9664 -ECP_decode=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u6697\u53F7\u5316\u3092\u89E3\u9664 -Area_Name=\u30A8\u30EA\u30A2\u540D +Driver=\u30C9\u30E9\u30A4\u30D0\u30FC +Template_Parameters=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +Form-Remove_Repeat_Data=\u91CD\u8907\u3059\u308B\u30C7\u30FC\u30BF\u3092\u524A\u9664 +ECP_decode=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30A2\u30F3\u30ED\u30C3\u30AF +Area_Name=\u5730\u57DF\u540D Others=\u305D\u306E\u4ED6 -Merge=\u7D71\u5408 -BackgroundTexture-Parchment=\u30BB\u30FC\u30E0\u76AE -BindColumn-Bottom_N=\u4E0B\u4F4DN\u9805\u76EE +Merge=\u5408\u4F75\u3059\u308B +BackgroundTexture-Parchment=\u7F8A\u76AE\u7D19 +BindColumn-Bottom_N=\u5F8C\u306EN\u500B Frame=\u30D5\u30EC\u30FC\u30E0 -Bottom_Border_Line=\u4E0B\u7F6B\u7DDA -Muiti_In=\u30DE\u30EB\u30C1\u30EC\u30A4\u30E4\u30C9\u30EA\u30EB -FR-Designer-Dependence_Install_Online=\u30AA\u30F3\u30E9\u30A4\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u74B0\u5883\u4F9D\u5B58 -Use_Default_ToolBar=\u65E2\u5B9A\u30C4\u30FC\u30EB\u30D0\u30FC\u3092\u4F7F\u3046 -M_Server-Platform_Manager=\u5E33\u7968\u30B7\u30B9\u30C6\u30E0\u7BA1\u7406 +Bottom_Border_Line=\u30DC\u30C8\u30E0\u30DC\u30FC\u30C0\u30FC +Muiti_In=\u591A\u5C64\u53D6\u308A\u30EA\u30F3\u30B0 +FR-Designer-Dependence_Install_Online=install online +Use_Default_ToolBar=\u30C7\u30D5\u30A9\u30EB\u30C8\u30C4\u30FC\u30EB\u30D0\u30FC\u4F7F\u7528 +M_Server-Platform_Manager=\u5E33\u7968\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u7BA1\u7406 PageSetup-inches=\u30A4\u30F3\u30C1 Form-Widget_Property=\u5C5E\u6027\u540D -FR-Layout_Padding=\u30D1\u30C7\u30A3\u30F3\u30B0 -Schema=\u30C6\u30FC\u30DE -Server_Path=\u30DB\u30B9\u30C8\u4F4D\u7F6E +FR-Layout_Padding=\u5185\u30DE\u30FC\u30B8\u30F3 +Schema=\u30B9\u30AD\u30FC\u30DE +Server_Path=\u30DB\u30B9\u30C8\u30B3\u30F3\u30D4\u30E5\u30FC\u30BF\u4F4D\u7F6E Condition_Display=\u6761\u4EF6\u8868\u793A FR-Server-Design_template_unopened=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 Function-Function_Class_Name=\u95A2\u6570\u30AF\u30E9\u30B9\u540D Schedule-Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u540D Tree_Data_Field=\u30C4\u30EA\u30FC\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9 -Border-Style-Normal=\u76F4\u89D2 -Top_And_Double_Bottom_Border_Line=\u4E0A\u7F6B\u7DDA + \u4E0B\u4E8C\u91CD\u67A0\u7DDA -FR-Server_Embedded_Server_Start=\u5185\u8535\u30B5\u30FC\u30D0\u8D77\u52D5 -FR-Designer-Basic_Restart_Designer_Later=\u5F8C\u3067\u518D\u8D77\u52D5 +Border-Style-Normal=\u76F4\u89D2\u306E\u56FD\u5883\u306B +Top_And_Double_Bottom_Border_Line=\u4E0A\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3\u3068\u53CC\u4E0B\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 +FR-Server_Embedded_Server_Start=\u5185\u8535\u30B5\u30FC\u30D0\u30FC-\u958B\u304F +FR-Designer-Basic_Restart_Designer_Later=\u5F8C\u3067\u518D\u8D77\u52D5\u3059\u308B StyleAlignment-Top=\u4E0A\u8A70\u3081 -ReportServerP-First=\u5148\u982D\u30DA\u30FC\u30B8 -Not_Exist=\u3042\u308A\u307E\u305B\u3093 -FR-Remote_File_is_Locked=\u9078\u629E\u5E33\u7968\u306F\u3001\u4ED6\u306E\u30E6\u30FC\u30B6\u30FC\u304C\u7DE8\u96C6\u4E2D\u3067\u3059\u3002\u3057\u3070\u3089\u304F\u304A\u5F85\u3061\u304F\u3060\u3055\u3044 -Apply=\u9069\u7528 +ReportServerP-First=\u30C8\u30C3\u30D7\u30DA\u30FC\u30B8 +Not_Exist=\u5B58\u5728\u3057\u306A\u3044 +FR-Remote_File_is_Locked=\u958B\u3053\u3046\u3068\u3057\u3066\u3044\u308B\u5E33\u7968\u306F\u73FE\u5728\u4ED6\u306E\u4EBA\u304C\u7DE8\u96C6\u3057\u3066\u3044\u307E\u3059\u3002\u5C11\u3057\u5F85\u3063\u3066\u304B +Apply=\u30A2\u30D7\u30EA Sytle-Indentation=\u30A4\u30F3\u30C7\u30F3\u30C8 -Parameter-Float=\u5358\u7CBE\u5EA6 -HF-Center_Section=\u4E2D\u592E\u90E8 +Parameter-Float=\u5358\u7CBE\u5EA6\u6D6E\u52D5\u5C0F\u6570\u70B9\u6570\u578B +HF-Center_Section=\u4E2D\u592E\u30BB\u30AF\u30B7\u30E7\u30F3 Form-Double_quotes=\u30C0\u30D6\u30EB\u30AF\u30AA\u30FC\u30C6\u30FC\u30B7\u30E7\u30F3\u30DE\u30FC\u30AF M_File-Export-Word=Word -M_File-Export-Text=\u30C6\u30AD\u30B9\u30C8\u30D5\u30A1\u30A4\u30EB(\u30BF\u30D6\u533A\u5207\u308A) -PageSetup-First_Page_Number=\u958B\u59CB\u30DA\u30FC\u30B8 +M_File-Export-Text=\u30C6\u30AD\u30B9\u30C8\u30D5\u30A1\u30A4\u30EB(\u30BF\u30D6\u533A\u5207\u308A)(T) +PageSetup-First_Page_Number=\u30B9\u30BF\u30FC\u30C8\u306E\u30DA\u30FC\u30B8\u756A\u53F7 Execute=\u5B9F\u884C Task=\u30BF\u30B9\u30AF -Custom_Button_Type_Submit=\u9001\u4FE1 -FR-Designer-Widget_Settings=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u8A2D\u5B9A -IS_Need_Password=\u30D1\u30B9\u30EF\u30FC\u30C9\u5FC5\u8981 +Custom_Button_Type_Submit=\u63D0\u51FA +FR-Designer-Widget_Settings=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u8A2D\u5B9A +IS_Need_Password=\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u5FC5\u8981\u3067\u3059 PageSetup-Horizontally=\u6C34\u5E73\u4E2D\u592E\u63C3\u3048 -No_Editor_Property_Definition=\u9078\u629E\u306E\u30A8\u30C7\u30A3\u30BF\u306F\u5C5E\u6027\u5B9A\u7FA9\u304C\u3042\u308A\u307E\u305B\u3093 -Env-Remote_Server=\u30EA\u30E2\u30FC\u30C8\u30B5\u30FC\u30D0 +No_Editor_Property_Definition=\u5F53\u8A72\u30A8\u30C7\u30A3\u30BF\u306F\u5C5E\u6027\u5B9A\u7FA9\u304C\u3042\u308A\u307E\u305B\u3093 +Env-Remote_Server=\u30EA\u30E2\u30FC\u30C8\u30B5\u30FC\u30D0\u30FC FR-Utils_Background=\u80CC\u666F FR-Designer-Plugin_Warning=\u8B66\u544A Server-version-info=\u958B\u3044\u305F\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u306F\u3001\u4E0A\u4F4D\u30A8\u30C7\u30A3\u30B7\u30E7\u30F3\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u3067\u4F5C\u6210\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u4E0A\u4F4D\u30A8\u30C7\u30A3\u30B7\u30E7\u30F3\u3067\u4F5C\u6210\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F\u3068\u30A8\u30E9\u30FC\u306E\u767A\u751F\u539F\u56E0\u3068\u306A\u308B\u307B\u304B\u3001\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u6A5F\u80FD\u3084\u5C5E\u6027\u306E\u4E00\u90E8\u3092\u5931\u3046\u6050\u308C\u304C\u3042\u308A\u307E\u3059\u3002\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u4F5C\u6210\u7528\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u3001\u914D\u5099\u3055\u308C\u308B\u30A8\u30C7\u30A3\u30B7\u30E7\u30F3\u3088\u308A\u3082\u4E0B\u4F4D\u306E\u30A8\u30C7\u30A3\u30B7\u30E7\u30F3\u3067\u3042\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 @@ -1744,196 +1741,196 @@ HF-Right_Section=\u53F3\u5074 PageSetup-Title_Start_Row=\u91CD\u8907\u30D8\u30C3\u30C0\u30FC\u884C From=From Preference-Grid_Line_Color=\u30B0\u30EA\u30C3\u30C9\u7DDA\u306E\u8272 -RowTo=~ -FR-Designer_ReportColumns-Repeat_Column=\u5217\u306E\u9806\u5E8F\u3092\u30B3\u30D4\u30FC +RowTo=\u884C\u304B\u3089\u7B2C\u307E\u3067 +FR-Designer_ReportColumns-Repeat_Column=\u5217\u9806\u5E8F\u3092\u30B3\u30D4\u30FC M_Server-Function_Manager=\u95A2\u6570\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC KeyWord=\u30AD\u30FC\u30EF\u30FC\u30C9 DS-Multi_Dimensional_Database=\u591A\u6B21\u5143\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 BiasD-Slope_Line=\u659C\u7DDA Tue=\u706B -ReportServerP-Last=\u6700\u7D42\u30DA\u30FC\u30B8 +ReportServerP-Last=\u7D42\u4E86\u9801 FR-Base_Columns=\u5217 -SpecifiedG-Leave_in_their_own_groups=\u5404\u81EA\u306E\u30B0\u30EB\u30FC\u30D7\u5185\u306B\u6B8B\u308B -LOG-Please_Wait=\u51E6\u7406\u4E2D -Form-ToolBar=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30C4\u30FC\u30EB\u30D0\u30FC -FR-Base_sure_remove_item=\u9078\u629E\u3057\u305F\u9805\u76EE\u3092\u524A\u9664\u3057\u307E\u3059\u304B -Component_Scale=\u30E2\u30B8\u30E5\u30FC\u30EB\u30BA\u30FC\u30E0 -Hyperlink-Use_CJK_to_encode_parameter=CJK\u3067\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u51E6\u7406 -LOG-Has_Been_Openned=\u8868\u793A -FR-Designer-Dependence=\u74B0\u5883\u4F9D\u5B58 +SpecifiedG-Leave_in_their_own_groups=\u5404\u30B0\u30EB\u30FC\u30D7\u5185\u306B\u4FDD\u7559\u3059\u308B +LOG-Please_Wait=\u5C11\u3005\u304A\u5F85\u3061\u304F\u3060\u3055\u3044 +Form-ToolBar=\u8868\u30C4\u30FC\u30EB\u30D0\u30FC +FR-Base_sure_remove_item=\u672C\u5F53\u306B\u9078\u629E\u3057\u305F\u9805\u76EE\u3092\u524A\u9664\u3057\u307E\u3059\u304B +Component_Scale=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u30B9\u30B1\u30FC\u30EB +Hyperlink-Use_CJK_to_encode_parameter=CJK\u51E6\u7406\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u4F7F\u7528 +LOG-Has_Been_Openned=\u958B\u304D\u307E\u3057\u305F +FR-Designer-Dependence= ECP_error_pwd=\u30D1\u30B9\u30EF\u30FC\u30C9\u30A8\u30E9\u30FC -REPORTLET=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u30EB\u30FC\u30C8\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u30A2\u30AF\u30BB\u30B9 -RWA-Column_Offset=\u5217\u306E\u30AA\u30D5\u30BB\u30C3\u30C8 +REPORTLET=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u30EB\u30FC\u30C8\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u306B\u30A2\u30AF\u30BB\u30B9 +RWA-Column_Offset=\u5217\u30AA\u30D5\u30BB\u30C3\u30C8 Forecast=\u4E88\u6E2C -Light_Orange=\u30E9\u30A4\u30C8\u30AA\u30EC\u30F3\u30B8 -StyleAlignment-Vertical=\u7E26\u4F4D\u7F6E -Form-List=\u4E00\u89A7 -ParameterD-Show_Parameter_Window=\u30D1\u30E9\u30E1\u30FC\u30BF\u30A6\u30A3\u30F3\u30C9\u30A6\u8868\u793A -FR-Designer_Set_Submit_Event=\u66F8\u304D\u8FBC\u307F\u30A4\u30D9\u30F3\u30C8\u8A2D\u5B9A -Value_Percent=\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8 -DBCP_MIN_EVICTABLE_IDLE_TIMEMILLIS=\u30A2\u30A4\u30C9\u30EB\u63A5\u7D9A\u306E\u751F\u5B58\u671F\u9593 -Function-The_class_must_be_located_in=\u30AF\u30E9\u30B9\u306E\u4F4D\u7F6E\: +Light_Orange=\u660E\u308B\u3044\u30AA\u30EC\u30F3\u30B8 +StyleAlignment-Vertical=\u5782\u76F4\u63C3\u3048 +Form-List=\u30EA\u30B9\u30C8 +ParameterD-Show_Parameter_Window=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u30A6\u30A4\u30F3\u30C9\u30A6\u3092\u8868\u793A\u3059\u308B +FR-Designer_Set_Submit_Event=\u63D0\u51FA\u4E8B\u4EF6\u3092\u8A2D\u5B9A +Value_Percent=\u5024\u5272\u5408\u4F8B +DBCP_MIN_EVICTABLE_IDLE_TIMEMILLIS=\u30A2\u30A4\u30C9\u30EB\u6700\u5C0F\u6642\u9593\u5024\u4FDD\u6301 +Function-The_class_must_be_located_in=\u5F53\u8A72\u30AF\u30E9\u30B9\u306F\u5B58\u5728\u3057\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093 FR-Action_Sort=\u30BD\u30FC\u30C8 DataFunction-Average=\u5E73\u5747 -FR-Designer_Show_in_Containing_Folder=\u30D5\u30A1\u30A4\u30EB\u306E\u5834\u6240\u3092\u958B\u304F +FR-Designer_Show_in_Containing_Folder=\u6240\u5728\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F M_File-Export-Excel=Excel DataFunction-Max=\u6700\u5927\u5024 -FR-Designer_Form-Widget_Name=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u540D -FS_End_Date=\u7D42\u4E86\u65E5\u6642 -Export-Excel-Simple=\u6A19\u6E96\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 -ColumnTo=~ -SpecifiedG-Discard_all_others=\u305D\u306E\u4ED6\u306E\u3059\u3079\u3066\u3092\u5229\u7528\u3057\u306A\u3044 -DS-TableData=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 -Form-DataTable=\u30C7\u30FC\u30BF\u30C6\u30FC\u30D6\u30EB -Sub_Report_ToolTips=\u5B50\u5E33\u7968\u30D2\u30F3\u30C8 +FR-Designer_Form-Widget_Name=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u540D +FS_End_Date=\u7D42\u4E86\u65E5\u671F +Export-Excel-Simple=\u5143 +ColumnTo=\u5217\u306F\u7B2C\u3000\u307E\u3067 +SpecifiedG-Discard_all_others=\u4ED6\u306E\u3059\u3079\u3066\u3092\u7834\u68C4\u3059\u308B +DS-TableData=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 +Form-DataTable=\u30C7\u30FC\u30BF\u8868 +Sub_Report_ToolTips=\u5B50\u5E33\u7968\u63D0\u793A Right_Top=\u53F3\u4E0A -M_Edit-Merge_Cell=\u30BB\u30EB\u306E\u7D50\u5408 -FR-Designer_Restore_Default=\u65E2\u5B9A\u306B\u623B\u3059 -Component_Interval=\u30E2\u30B8\u30E5\u30FC\u30EB\u9593\u9694 -Cover_None=\u3059\u3079\u3066\u4E0A\u66F8\u304D\u3057\u306A\u3044 -Datasource-From_Database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u8868 -Folder=\u30D5\u30A9\u30EB\u30C0\u30FC -Form-Allow_Edit=\u7DE8\u96C6\u3092\u8A31\u53EF +M_Edit-Merge_Cell=\u30BB\u30EB\u3092\u7D50\u5408\u3059\u308B +FR-Designer_Restore_Default=\u30C7\u30D5\u30A9\u30EB\u30C8\u5FA9\u5143 +Component_Interval=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u9593\u9694 +Cover_None=\u5168\u3066\u8986\u308F\u306A\u3044 +Datasource-From_Database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u304B\u3089 +Folder=\u76EE\u6B21 +Form-Allow_Edit=\u76F4\u63A5\u7DE8\u96C6\u3042\u308A M_Edit-Clear=\u30AF\u30EA\u30A2(A) ParentCell_Setting=\u89AA\u30BB\u30EB\u8A2D\u5B9A -Only_selected_cell_can_paste_only=\u30BB\u30EB\u306E\u9078\u629E\u5F8C\u3001\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u3059 -M_Report-Report_Columns=\u5E33\u7968\u6BB5\u7D44\u307F +Only_selected_cell_can_paste_only=\u30BB\u30EB\u306F\u8CBC\u308A\u4ED8\u3051\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u9078\u629E\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u306B\u306E\u307F +M_Report-Report_Columns=\u5E33\u7968\u30B3\u30E9\u30E0 Unit_Hundred=\u767E -FR-Designer_DataTable-Build=\u9AD8\u901F\u30EC\u30A4\u30E4\u5225\u69CB\u7BC9 -Widget-Form_Widget_Config=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 -Server-version-tip-moreInfo=\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u4E0D\u4E00\u81F4\u3092\u539F\u56E0\u3068\u3059\u308B\u554F\u984C\u3092\u907F\u3051\u308B\u305F\u3081\u306B\u3001\u958B\u767A\u30C1\u30FC\u30E0\u3067\u5229\u7528\u3057\u3066\u3044\u308BFineReport\u88FD\u54C1\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3001\u53CA\u3073\u8A2D\u5B9A\u3055\u308C\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3092\u30C1\u30A7\u30C3\u30AF\u3092\u304A\u52E7\u3081\u3044\u305F\u3057\u307E\u3059\u3002n\u3088\u308A\u9AD8\u3044\u30C7\u30B6\u30A4\u30CA\u30FC\u3067\u4F5C\u6210\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F\u3068\u30A8\u30E9\u30FC\u306E\u767A\u751F\u539F\u56E0\u3068\u306A\u308B\u307B\u304B\u3001\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u6A5F\u80FD\u3084\u5C5E\u6027\u306E\u4E00\u90E8\u3092\u5931\u3046\u6050\u308C\u304C\u3042\u308A\u307E\u3059\u3002\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u4F5C\u6210\u7528\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u3001\u6700\u7D42\u7684\u306A\u8A2D\u5B9A\u5148\u3067\u3042\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3088\u308A\u9AD8\u3044\u5834\u5408\u3001\u30B5\u30FC\u30D0\u3067\u5229\u7528\u3055\u308C\u308B\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F\u6B63\u5E38\u306B\u52D5\u4F5C\u3057\u306A\u3044\u6050\u308C\u304C\u3042\u308A\u307E\u3059\u3002 -Actions=\u30BF\u30B9\u30AF -FR-Designer-Dependence_Connect_Server_Error=\u30B5\u30FC\u30D0\u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3001\u6642\u9593\u3092\u3042\u3051\u3066\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002 -High=\u9AD8\u3055 +FR-Designer_DataTable-Build= +Widget-Form_Widget_Config=\u8868\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +Server-version-tip-moreInfo=\u79C1\u305F\u3061\u306E\u88FD\u54C1\u306EFineReport Designer\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3060\u3051\u3067\u306A\u304F\u3001 +Actions=\u30A2\u30AF\u30B7\u30E7\u30F3 +FR-Designer-Dependence_Connect_Server_Error=connect error +High=\u9AD8 HJS-Send_Failed=\u9001\u4FE1\u5931\u6557 -HJS-Message=\u5185\u5BB9 -File-Allow_Upload_Files=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3067\u304D\u308B\u30D5\u30A1\u30A4\u30EB\u30BF\u30A4\u30D7 +HJS-Message=\u30E1\u30C3\u30BB\u30FC\u30B8\u5185\u5BB9 +File-Allow_Upload_Files=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u304C\u8A31\u53EF\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u30BF\u30A4\u30D7 FR-Designer-Form-ToolBar_Chart=\u30B0\u30E9\u30D5 -Thick_Bottom_Border_Line=\u4E0B\u592A\u7F6B\u7DDA +Thick_Bottom_Border_Line=\u7C97\u5E95\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 FR-Action_Remove=\u524A\u9664 FRFont-Style=\u30B9\u30BF\u30A4\u30EB -Select_DataColumn=\u30C7\u30FC\u30BF\u5217\u9078\u629E +Select_DataColumn=\u30C7\u30FC\u30BF\u5217\u3092\u9078\u629E StartValue=\u958B\u59CB\u5024 -SINGLE_FILE_UPLOAD=\u5358\u4E00\u30D5\u30A1\u30A4\u30EB\u306E\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u306E\u307F\u30B5\u30DD\u30FC\u30C8 -BackgroundTexture-Cork=\u30B3\u30EB\u30AF -M_Format-Data_Map=\u30C7\u30FC\u30BF\u8F9E\u66F8 -FR-mobile_native_analysis=1\u6B21\u89E3\u6790 +SINGLE_FILE_UPLOAD=\u5358\u72EC\u30D5\u30A1\u30A4\u30EB\u306E\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u306E\u307F\u30B5\u30DD\u30FC\u30C8 +BackgroundTexture-Cork=\u30B3\u30EB\u30AF\u6813 +M_Format-Data_Map=\u30C7\u30FC\u30BF\u30DE\u30C3\u30D7 +FR-mobile_native_analysis=\u4E00\u6B21\u89E3\u6790 HighLight=\u30CF\u30A4\u30E9\u30A4\u30C8 -FR-Designer_Dropdown-More-Preview=\u30D7\u30EB\u30C0\u30A6\u30F3\u3067\u66F4\u306A\u308B\u30D7\u30EC\u30D3\u30E5\u30FC\u65B9\u6CD5\u3092\u53D6\u5F97 +FR-Designer_Dropdown-More-Preview=\u4E0B\u62C9\u83B7\u53D6\u66F4\u591A\u9884\u89C8\u65B9\u5F0F local=\u30ED\u30FC\u30AB\u30EB FR-Designer_Gradation=\u30EC\u30D9\u30EB PageSetup-Finis_Start_Column=\u91CD\u8907\u30D5\u30C3\u30BF\u30FC\u5217 Env-Invalid_User_and_Password=\u7121\u52B9\u306A\u30E6\u30FC\u30B6\u30FC\u540D\u307E\u305F\u306F\u30D1\u30B9\u30EF\u30FC\u30C9\u3067\u3059 -FR-Designer-Plugin_All_Plugins=\u3059\u3079\u3066\u306E\u30D7\u30E9\u30B0\u30A4\u30F3 -FR-Designer_Prepare_Export=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3092\u958B\u59CB\u3057\u3066\u3044\u307E\u3059\u3002\u304A\u5F85\u3061\u304F\u3060\u3055\u3044 -DBCP_TEST_ON_RETURN=\u63A5\u7D9A\u306E\u8FD4\u5374\u524D\u306B\u63A5\u7D9A\u6709\u52B9\u6027\u3092\u691C\u8A3C -no-alternatives=\u30AA\u30D7\u30B7\u30E7\u30F3\u306A\u3057 -FR-Designer_Submmit_WClass=\u30AB\u30B9\u30BF\u30E0\u66F8\u304D\u8FBC\u307F +FR-Designer-Plugin_All_Plugins=\u5168\u3066\u306E\u30D7\u30E9\u30B0\u30A4\u30F3 +FR-Designer_Prepare_Export=\u5C0E\u51FA\u3092\u958B\u59CB\u3057\u3066\u3044\u307E\u3059\u3002\u304A\u5F85\u3061\u304F\u3060\u3055\u3044 +DBCP_TEST_ON_RETURN=\u63A5\u7D9A\u524D\u691C\u67FB\u306B\u623B\u308B +no-alternatives=\u5168\u304F\u9078\u629E\u80A2\u304C\u3042\u308A\u307E\u305B\u3093 +FR-Designer_Submmit_WClass=\u30AB\u30B9\u30BF\u30E0\u9001\u4FE1 M_Insert-Slope_Line=\u659C\u7DDA FR-Designer-Plugin_Plugin_Description=\u30D7\u30E9\u30B0\u30A4\u30F3\u8AAC\u660E -ExpandD-Not_Expand=\u5C55\u958B\u3057\u306A\u3044 +ExpandD-Not_Expand=\u62E1\u5F35\u3057\u306A\u3044 Utils-Bottom_to_Top=\u4E0B\u304B\u3089\u4E0A\u3078 -Collect-Click\!_Get_user_information_code=\u30AF\u30EA\u30C3\u30AF\!\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u30B3\u30FC\u30C9\u3092\u53D6\u5F97 -FR-Already_exist=\u304A\u4F7F\u3044\u306E\u74B0\u5883\u306B\u65E2\u306B\u3042\u308A\u307E\u3059\: -Send=\u8EE2\u9001 -M_Edit-Clear_All=\u3059\u3079\u3066(A) -Brown_Orange=\u30AB\u30FC\u30AD +Collect-Click\!_Get_user_information_code=\u30AF\u30EA\u30C3\u30AF\u3057\u3066\!\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30C8\u30B3\u30FC\u30C9\u3092\u53D6\u5F97 +FR-Already_exist=\u73FE\u5728\u306E\u74B0\u5883\u306B\u306F\u5B58\u5728\u3057\u3066\u3044\u307E\u3059\: +Send=\u767A\u9001 +M_Edit-Clear_All=\u5168\u3066\u30AF\u30EA\u30A2(A) +Brown_Orange=\u30D6\u30E9\u30A6\u30F3 PageSetup-Portrait=\u7E26\u65B9\u5411 FR-Designer_Form-RadioGroup=\u30E9\u30B8\u30AA\u30DC\u30BF\u30F3\u30B0\u30EB\u30FC\u30D7 -FR-Utils-App_AllFiles=\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB -Popup=\u8868\u793A -Server_Charset=\u30B5\u30FC\u30D0\u30B3\u30FC\u30C9 -CellWrite-Repeat_Content_When_Paging=\u6539\u30DA\u30FC\u30B8\u6642\u91CD\u8907\u8868\u793A +FR-Utils-App_AllFiles=\u5168\u3066\u306E\u30D5\u30A1\u30A4\u30EB +Popup=\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7 +Server_Charset=\u30B5\u30FC\u30D0\u30FC\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0 +CellWrite-Repeat_Content_When_Paging=\u6539\u9801\u3059\u308B\u6642\u7E70\u308A\u8FD4\u3057\u624B\u8868\u793A\u3059\u308B Utils-No_Pagination=\u6539\u30DA\u30FC\u30B8\u3057\u306A\u3044 -Form-NullLayout=\u7D76\u5BFE\u914D\u7F6E -ConditionB-Remove_bracket=\u62EC\u5F27\u3092\u524A\u9664 +Form-NullLayout=\u7D76\u5BFE\u5B9A\u4F4D +ConditionB-Remove_bracket=\u62EC\u5F27\u3092\u524A\u9664\u3059\u308B email=\u30E1\u30FC\u30EB\u30DC\u30C3\u30AF\u30B9 -Minute=\u5206 +Minute=\u5206\u9593 FR-Designer-Plugin_Update=\u30D7\u30E9\u30B0\u30A4\u30F3\u66F4\u65B0 -alraedy_close=\u9589\u3081\u305F -ComboCheckBox-End_Symbol=\u7D42\u4E86\u6587\u5B57 +alraedy_close=\u3059\u3067\u306B\u30AA\u30D5 +ComboCheckBox-End_Symbol=\u7D42\u7D50\u6587\u5B57 DataColumn=\u30C7\u30FC\u30BF\u5217 Form-Password=\u30D1\u30B9\u30EF\u30FC\u30C9 -FR-Background_Image_Adjust=\u8ABF\u6574\u8868\u793A -Export-Excel-PageToSheet=1\u30DA\u30FC\u30B81\u30B7\u30FC\u30C8\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +FR-Background_Image_Adjust=\u9069\u5FDC +Export-Excel-PageToSheet=\u30B7\u30FC\u30C8 Edit-Row_Count=\u884C\u6570 DS-Report_TableData=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 Sche-Hour=\u6642 Group_Count=\u7DCF\u6570\u8868\u793A EndValue=\u7D42\u4E86\u5024 FR-Designer_Sytle-Indentation=\u30A4\u30F3\u30C7\u30F3\u30C8 -DownBarBorderStyleAndColor=\u9670\u7DDA\u30B9\u30BF\u30A4\u30EB +DownBarBorderStyleAndColor=\u30D5\u30A9\u30FC\u30EB\u30AB\u30E9\u30E0\u30B9\u30BF\u30A4\u30EB World=\u4E16\u754C FR-Designer-Basic_Cancel=\u30AD\u30E3\u30F3\u30BB\u30EB Finally=\u6700\u5F8C -Low=\u4F4E\u3044 -Please_Input_The_Key=\u5BFE\u5FDC\u3059\u308B\u30DE\u30C3\u30D7\u306B\u4F7F\u308F\u308C\u308B\u30AD\u30FC\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 -Smart=\u30B9\u30DE\u30FC\u30C8 -Preference-Predefined=\u4E8B\u524D\u5B9A\u7FA9 -Current_custom_global=\u73FE\u5728\u306E\u30AB\u30B9\u30BF\u30E0\u30B0\u30ED\u30FC\u30D0\u30EB\u30B9\u30BF\u30A4\u30EB -FR-Designer-Plugin_Shop_Need_Install=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3057\u307E\u3059\u304B? +Low=\u4F4E +Please_Input_The_Key=\u5BFE\u5FDC\u3059\u308B\u30DE\u30C3\u30D7\u306B\u4F7F\u7528\u3059\u308Bkey\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 +Smart=\u30A4\u30F3\u30C6\u30EA\u30B8\u30A7\u30F3\u30C8 +Preference-Predefined=\u30D7\u30EC\u5B9A\u7FA9 +Current_custom_global=\u73FE\u5728\u306E\u5E33\u7968\u304C\u7528\u3044\u308B\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u5168\u5C40\u30B9\u30BF\u30A4\u30EB +FR-Designer-Plugin_Shop_Need_Install=\u3042\u306A\u305F\u304C\u30A2\u30C9\u30AA\u30F3\u3055\u308C\u3066\u3044\u306A\u3044\u30EA\u30BD\u30FC\u30B9\u306E\u5E97\u8217\u3092\u3001\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3059\u308B\u304B\u3069\u3046\u304B\uFF1F WEB-Pagination_Setting=\u30DA\u30FC\u30B8\u5225\u30D7\u30EC\u30D3\u30E5\u30FC\u8A2D\u5B9A RCodeDrawPix=\u753B\u7D20 FR-Designer-Widget-Style_Alpha=\u4E0D\u900F\u660E\u5EA6 BorderLayout-North=\u5317 -HJS-Current_Page=\u73FE\u5728\u306E\u30DA\u30FC\u30B8 -Compile=\u30B3\u30F3\u30D1\u30A4\u30EB -Show_Blank_Row=\u7A7A\u767D\u884C\u88DC\u5145 +HJS-Current_Page=\u30AB\u30EC\u30F3\u30C8\u30DA\u30FC\u30B8 +Compile=\u7DE8\u96C6\u7FFB\u8A33 +Show_Blank_Row=\u7A7A\u767D\u884C\u3092\u88DC\u5145 TableData_Dynamic_Parameter_Setting=\u30C0\u30A4\u30CA\u30DF\u30C3\u30AF\u30D1\u30E9\u30E1\u30FC\u30BF -FR-Background_Image_Default=\u65E2\u5B9A -BackgroundTexture-WhiteMarble=\u5927\u7406\u77F3(\u767D) +FR-Background_Image_Default=\u30C7\u30D5\u30A9\u30EB\u30C8 +BackgroundTexture-WhiteMarble=\u767D\u3044\u5927\u7406\u77F3 DataFunction-Sum=\u5408\u8A08 -Collect-The_user_information_code_is_invalid=\u3053\u306E\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u30B3\u30FC\u30C9\u306F\u7121\u52B9\u3067\u3059\u3001\u516C\u5F0F\u30B5\u30A4\u30C8\u3067\u7533\u8ACB\u3057\u3066\u304F\u3060\u3055\u3044 +Collect-The_user_information_code_is_invalid=\u3053\u306E\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30C8\u30B3\u30FC\u30C9\u306F\u7121\u52B9\u3067\u3059\u3002\u516C\u5F0F\u30DB\u30FC\u30E0\u30DA\u30FC\u30B8\u3067\u7533\u8ACB\u3057\u306A\u304A\u3057\u3066\u304F\u3060\u3055\u3044 Preference-Locale=\u56FD\u969B\u5316 M_File-Export-PDF=PDF -BiasD-From-lower_left_to_upper_right=\u5DE6\u4E0B\u5074\u304B\u3089\u53F3\u4E0A\u5074\u3078\u5E83\u3052\u308B -Border-Style=\u67A0\u306E\u30B9\u30BF\u30A4\u30EB +BiasD-From-lower_left_to_upper_right=\u5DE6\u4E0B\u5074\u304B\u3089\u53F3\u4E0A\u5074\u3078\u5E83\u304C\u308B +Border-Style=\u67A0\u7DDA\u306E\u30B9\u30BF\u30A4\u30EB Sort=\u30BD\u30FC\u30C8 -Image-Image_Layout=\u753B\u50CF\u30EC\u30A4\u30A2\u30A6\u30C8 +Image-Image_Layout=\u30A4\u30E1\u30FC\u30B8\u30EC\u30A4\u30A2\u30A6\u30C8 Panel=\u30D1\u30CD\u30EB -FR-Designer-Basic_Copy_Build_NO_OK=\u30D3\u30EB\u30C9\u756A\u53F7\u3092\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F -All_Border_Line=\u67A0\u7DDA -FR-Utils-Please_Input_a_New_Name=\u65B0\u3057\u3044\u540D\u524D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Designer-Basic_Copy_Build_NO_OK=\u7D44\u307F\u7ACB\u3066\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u306B\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F +All_Border_Line=\u3059\u3079\u3066\u306E\u5883\u754C +FR-Utils-Please_Input_a_New_Name=\u65B0\u3057\u3044\u540D\u79F0\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 FR-Base_Formula_Plugin=\u30D7\u30E9\u30B0\u30A4\u30F3\u95A2\u6570 -Two_Rows_Of_Three_Grid=2\u884C3\u5217\u306E\u30B0\u30EA\u30C3\u30C9 +Two_Rows_Of_Three_Grid=3\u683C\u5B50\u306E\u4E8C\u5217 FR-Designer_Certificate_Pass=https\u30B7\u30FC\u30AF\u30EC\u30C3\u30C8\u30AD\u30FC Bubble-Series_Name=\u7CFB\u5217\u540D -M-New_Multi_Report=\u30D6\u30ED\u30C3\u30AF\u5E33\u7968\u65B0\u898F\u4F5C\u6210(M) -BackgroundTexture-PinkTissuePaper=\u30D4\u30F3\u30AF\u306E\u753B\u7528\u7D19 -Preference-Support_Default_Parent_Calculate=\u65E2\u5B9A\u89AA\u30BB\u30EB\u306E\u8A08\u7B97 -Show_Blank_Column=\u7A7A\u767D\u5217\u88DC\u5145 -BaiduMap=Baidu\u5730\u56F3 +M-New_Multi_Report=\u7D71\u8A08\u5E33\u7968\u3092\u65B0\u898F\u4F5C\u6210(M) +BackgroundTexture-PinkTissuePaper=\u30D4\u30F3\u30AF\u8272\u306E\u30B5\u30F3\u30C9\u30DA\u30FC\u30D1\u30FC +Preference-Support_Default_Parent_Calculate=\u30C7\u30D5\u30A9\u30EB\u30C8\u89AA\u30BB\u30EB\u306E\u8A08\u7B97 +Show_Blank_Column=\u7A7A\u767D\u5217\u3092\u88DC\u5145 +BaiduMap=\u767E\u5EA6\u30DE\u30C3\u30D7 Report-Web_Attributes=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8Web\u5C5E\u6027 FR-Designer_StyleAlignment-Wrap_Text=\u81EA\u52D5\u6298\u308A\u8FD4\u3057 Need=\u5FC5\u8981 -Parameter-Double=\u500D\u7CBE\u5EA6 -Config_Servlet=\u30EA\u30E2\u30FC\u30C8\u30B5\u30FC\u30D0\u3092\u8A2D\u5B9A -Form-Comma=\u30AB\u30F3\u30DE +Parameter-Double=\u500D\u7CBE\u5EA6\u6D6E\u52D5\u5C0F\u6570\u70B9\u6570\u578B +Config_Servlet=\u9060\u9694\u30B5\u30FC\u30D0\u30FC\u914D\u7F6E +Form-Comma=\u30B3\u30F3\u30DE Verify=\u691C\u8A3C PageSetup-Landscape=\u6A2A\u65B9\u5411 Weeks=\u9031\u9593 -FR-Designer-Widget-Style_Title_Background=\u30BF\u30A4\u30C8\u30EB\u80CC\u666F +FR-Designer-Widget-Style_Title_Background=\u6A19\u984C\u80CC\u666F Preference-Pagination_Line_Color=\u6539\u30DA\u30FC\u30B8\u7DDA\u306E\u8272 -Test_URL=\u63A5\u7D9A\u30C6\u30B9\u30C8 +Test_URL=\u30C6\u30B9\u30C8\u63A5\u7D9A Fill_blank_Data=\u7A7A\u767D\u30C7\u30FC\u30BF\u306E\u88DC\u5145 -ReportServerP-The_name_of_printer_cannot_be_null=\u30D7\u30EA\u30F3\u30BF\u540D\u3092\u7A7A\u6B04\u306B\u3067\u304D\u307E\u305B\u3093 -FR-Designer-Basic_Copy_Activation_Key=\u30C7\u30B6\u30A4\u30CA\u30FC\u756A\u53F7\u3092\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u30B3\u30D4\u30FC +ReportServerP-The_name_of_printer_cannot_be_null=\u30D7\u30EA\u30F3\u30BF\u30FC\u306E\u540D\u524D\u306F\u7A7A\u5024\u306B\u306A\u306F\u3044\u3051\u307E\u305B\u3093 +FR-Designer-Basic_Copy_Activation_Key=\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30C7\u30B6\u30A4\u30CA\u30FC\u6574\u7406\u756A\u53F7\u3092\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC Continuum=\u96A3\u63A5\u9023\u7D9A -BackgroundTexture-MediumWood=\u6728\u76EE -Datasource-Column_Index=\u5217\u756A\u53F7 +BackgroundTexture-MediumWood=\u6FC3\u3044\u8272\u306E\u6728\u76EE +Datasource-Column_Index=\u30B3\u30E9\u30E0\u756A\u53F7 Function-Function_File=\u95A2\u6570\u30D5\u30A1\u30A4\u30EB -Form-Component_Bounds=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u9818\u57DF -Utils-Submit=\u66F8\u304D\u8FBC\u307F -Conditions_formula=\u6761\u4EF6\u6570\u5F0F -M_Insert-Image=\u753B\u50CF -FR-Designer-Plugin_Will_Be_Delete=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u524A\u9664\u3055\u308C\u307E\u3057\u305F\u3002\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC\u30D0\u3092\u518D\u8D77\u52D5\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u30B5\u30FC\u30D0\u306F\u624B\u52D5\u3067\u518D\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044 +Form-Component_Bounds=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u9818\u57DF +Utils-Submit=\u63D0\u51FA +Conditions_formula=\u6761\u4EF6\u516C\u5F0F +M_Insert-Image=\u30A4\u30E1\u30FC\u30B8 +FR-Designer-Plugin_Will_Be_Delete=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u524A\u9664\u3055\u308C\u307E\u3057\u305F\u3002\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC\u30D0\u30FC\u3092\u518D\u8D77 FormulaD-Functions=\u95A2\u6570 -Mobile_Terminal=\u30E2\u30D0\u30A4\u30EB\u7AEF\u672B +Mobile_Terminal=\u79FB\u52D5\u7AEF CheckBox=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 FR-Designer-Plugin_Install=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB Sun=\u65E5 -FR-Designer_ToolBar_Bottom=\u4E0B\u90E8\u306E\u30C4\u30FC\u30EB\u30D0\u30FC -Widget-Width=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5E45 +FR-Designer_ToolBar_Bottom=\u30D5\u30C3\u30BF\u30FC\u30C4\u30FC\u30EB\u30D0\u30FC +Widget-Width=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u5E45 Series_Name=\u7CFB\u5217\u540D Set_Row_Title_Start=\u91CD\u8907\u30D8\u30C3\u30C0\u30FC\u884C\u8A2D\u5B9A HF-Default_Page=\u65E2\u5B9A\u30DA\u30FC\u30B8 @@ -1948,35 +1945,35 @@ is_need_word_adjust=\u884C\u306E\u9AD8\u3055\u3092\u56FA\u5B9A\u3057\u306A\u3044 Background-Null=\u80CC\u666F\u306A\u3057 PageSetup-Vertically=\u5782\u76F4\u4E2D\u592E\u63C3\u3048 FR-Designer_Root=\u30EB\u30FC\u30C8\u30CE\u30FC\u30C9 -FR-Designer_Form-TextArea=\u30C6\u30AD\u30B9\u30C8\u30A8\u30EA\u30A2 -ReportServerP-Import_JavaScript=JavaScript\u53C2\u7167 +FR-Designer_Form-TextArea=\u6587\u66F8\u57DF +ReportServerP-Import_JavaScript=JavaScript\u5F15\u7528 Form-TableTree=\u8868\u30C4\u30EA\u30FC Opened=\u8D77\u52D5\u6E08\u307F M_Edit-Delete=\u524A\u9664(D) -Widget-Form_Widget_Container=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30B3\u30F3\u30C6\u30CA +Widget-Form_Widget_Container=\u8868\u5BB9\u5668 BindColumn-Summary=\u96C6\u8A08 Sche-Second=\u79D2 -Server-Open_Service_Manager=\u30B5\u30FC\u30D3\u30B9\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC\u3092\u958B\u304F -FRFont-Effects=\u6587\u5B57\u98FE\u308A -OtherGroup_Name=\u4ED6\u306E\u30B0\u30EB\u30FC\u30D7\u540D -Specify=\u6307\u5B9A -Highlight-Click_to_Choose_Property_To_Modify=\u5909\u66F4\u3059\u308B\u5C5E\u6027\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u9078\u629E -triggered=\u30C8\u30EA\u30AC\u30FC\u5BFE\u8C61 -Double_Bottom_BorderLine=\u4E0B\u4E8C\u91CD\u7F6B\u7DDA -M_Insert-Sub_Report=\u5B50\u5E33\u7968 +Server-Open_Service_Manager=\u30B5\u30FC\u30D3\u30B9\u7BA1\u7406\u5668\u3092\u958B\u304F +FRFont-Effects=\u7279\u5225\u52B9\u679C +OtherGroup_Name=\u305D\u306E\u4ED6\u30B0\u30EB\u30FC\u30D7\u306E\u540D\u524D +Specify=\u6307\u5B9A\u3059\u308B +Highlight-Click_to_Choose_Property_To_Modify=\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u5909\u66F4\u3059\u308B\u5C5E\u6027\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 +triggered=\u30C8\u30EA\u30AC\u30FC +Double_Bottom_BorderLine=\u4E8C\u91CD\u5E95\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 +M_Insert-Sub_Report=\u30B5\u30D6\u5E33\u7968 Unit_Ten=\u5341 -Polybolck=\u30D6\u30ED\u30C3\u30AF -Select_sort_order=\u30BD\u30FC\u30C8\u9806\u9078\u629E -HJS-Mail_to=\u5B9B\u5148 +Polybolck=\u30A2\u30B0\u30EA\u30B2\u30FC\u30B7\u30E7\u30F3\u30D6\u30ED\u30C3\u30AF +Select_sort_order=\u6392\u5217\u9806\u5E8F\u3092\u9078\u629E +HJS-Mail_to=\u53D7\u4FE1\u8005 StyleAlignment-Left=\u5DE6\u8A70\u3081 -Two_Rows_Of_Two_Grid=2\u884C2\u5217\u306E\u30B0\u30EA\u30C3\u30C9 -FR-Designer-Form-Please_Drag_ParaPane=\u30D1\u30E9\u30E1\u30FC\u30BF\u30D1\u30CD\u30EB\u306B\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u304F\u3060\u3055\u3044 +Two_Rows_Of_Two_Grid=2\u884C2\u5217\u306E\u683C\u5B50 +FR-Designer-Form-Please_Drag_ParaPane=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u30D1\u30CD\u30EB\u3092\u3057\u307E\u3063\u3066\u304F\u3060\u3055\u3044 Milliseconds=\u30DF\u30EA\u79D2 DataFunction-None=\u306A\u3057 -Delivery=\u914D\u4FE1 +Delivery=\u4F1D\u9054 ColumnSpan=\u5217\u7BC4\u56F2 StyleAlignment-Bottom=\u4E0B\u8A70\u3081 -Read_failure=\u8AAD\u307F\u8FBC\u307F\u5931\u6557\u3002\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB\u304C\u7834\u640D\u3057\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059 +Read_failure=\u8AAD\u307F\u306B\u969C\u5BB3\u304C\u767A\u751F\u3059\u308B\u3068\u3001\u30BD\u30FC\u30B9\u00B7\u30D5\u30A1\u30A4\u30EB\u304C\u7834\u640D\u3057\u3066\u3044\u308B Verify-Verify=\u30C7\u30FC\u30BF\u691C\u8A3C FR-Designer-Widget-Style_Title_Format=\u30BF\u30A4\u30C8\u30EB\u66F8\u5F0F FR-Designer_Edit_String_To_Formula=\u6587\u5B57\u5217\u3092\u6570\u5F0F\u306B\u7DE8\u96C6\u3059\u308B\u304B @@ -2005,7 +2002,129 @@ FR-Product_Demo=\u88FD\u54C1\u30C7\u30E2 FR-Designer_Data_Filter=\u30C7\u30FC\u30BF\u30D5\u30A3\u30EB\u30BF FR-Designer_Can_not_use_FormatBursh=\u9023\u7D9A\u3057\u306A\u3044\u8907\u6570\u9818\u57DF\u3067\u306F\u66F8\u5F0F\u30B3\u30D4\u30FC\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 Default=\u65E2\u5B9A -FR-Designer_Sheet_Label_Page_Display_Position=Sheet\u30E9\u30D9\u30EB\u30DA\u30FC\u30B8\u306E\u8868\u793A\u4F4D\u7F6E -FR-Designer_Provide_Choose_All=\u5168\u9078\u629E\u53EF\u80FD -FR-Designer_Decimal_Places=\u5C0F\u6570\u67A0\u6570: -FR-Base-Load_Resource_File=\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u30ED\u30FC\u30C9 \ No newline at end of file +FR-Base-Load_Resource_File=\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u30ED\u30FC\u30C9 +FR-Designer_Cell_Element=\u30BB\u30EB\u8981\u7D20 +FR-Designer_Cell_Attributes=\u30BB\u30EB\u5C5E\u6027 +FR-Designer_Float_Element=\u30D5\u30ED\u30FC\u30C8\u8981\u7D20 +FR-Designer_Widget_Library= +FR-Designer_No_Settings_Available= +FR-Designer_Configured_Roles=\u69CB\u6210\u3055\u308C\u305F\u5F79\u5272 +FR-Designer_Scale_EnlargeOrReduce= +FR-Designer_Scale_selfAdaptButton= +FR-Designer_Scale_customButton= +FR-Designer_FRFont_Subscript= +FR-Designer_FRFont_Superscript= +FR-Designer_FRFont_Shadow= +FR-Designer_FRFont_Strikethrough= +FR-Designer_FRFont_Underline= +FR-Designer_FRFont_bold= +FR-Designer_FRFont_italic= +FR-Designer_FRFont_Foreground= +FR-Designer_FRFont_Style= +FR-Designer_FRFont_plain= +FR-Designer_FRFont_bolditalic= +FR-Designer_outBorder= +FR-Designer_inBorder= +FR-Designer_ExpandD_Up_Father_Cell= +FR-Designer_ExpandD_Expand_Direction= +FR-Designer_Expand= +FR-Designer_ExpendSort= +FR-Designer_ExpandD_Expandable= +FR-Designer_Read_failure= +FR-Designer_Add_Hyperlink=\u30EA\u30F3\u30AF\u3092\u8FFD\u52A0 +FR-Designer_Image_Layout= +FR-Designer_StyleAlignment_Text_Style= +FR-Designer_StyleAlignment_Text_Rotation= +FR-Designer_Style_Left_Indent= +FR-Designer_Style_Right_Indent= +FR-Designer_Style_Spacing_Before= +FR-Designer_Style_Spacing_After= +FR-Designer_Style_Line_Spacing= +FR-Designer_Left= +FR-Designer_Right= +FR-Designer_Front= +FR-Designer_Behind= +FR-Designer_StyleAlignment_Wrap_Text= +FR-Designer_StyleAlignment_Single_Line= +FR-Designer_StyleAlignment_Single_Line(Adjust_Font)= +FR-Designer_StyleAlignment_Multi_Line(Adjust_Font)= +FR-Designer_Auto_Adjust_Height= +FR-Designer_Auto_Adjust_Wdith= +FR-Designer_Type_Set= +FR-Designer_Dic_Data_Query= +FR-Designer_Dictionary_Dynamic_SQL= +FR-Designer_Datasource_From_Database= +FR-Designer_CellWrite_InsertRow_NULL= +FR-Designer_CellWrite_InsertRow_COPY= +FR-Designer_CellWrite_InsertRow_Policy= +FR-Designer_CellWrite_Page_Before_Row= +FR-Designer_CellWrite_Page_After_Row= +FR-Designer_CellWrite_Page_Before_Column= +FR-Designer_CellWrite_Page_After_Column= +FR-Designer_CellPage_Can_Break_On_Paginate= +FR-Designer_CellPage_Repeat_Content_When_Paging= +FR-Designer_CellWrite_Preview_Cell_Content= +FR-Designer_CellWrite_Print_Content= +FR-Designer_CellWrite_Print_Background= +FR-Designer_CellWrite_Show_As_Image= +FR-Designer_CellWrite_Show_As_HTML= +FR-Designer_Datasource_Other_Attributes= +FR-Designer_Not_use_a_cell_attribute_table_editing= +FR-Designer_CellElement_Property_Table= +FR-Designer_T_Insert_Float= +FR-Designer_Add_FloatElement= +FR-Designer_Insert_Image= +FR-Designer_Insert_Chart= +FR-Designer_Insert_Text= +FR-Designer_Scale_Down= +FR-Designer_Scale_Up= +FR-Designer_Scale_Slider= +FR-Designer_Scale_Grade= +FR-Designer_AlphaFine_Enable= +FR-Designer_AlphaFine_EnableAlphaFine= +FR-Designer_AlphaFine_EnableInternet= +FR-Designer_AlphaFine_EnableInternetSearch= +FR-Designer_AlphaFine_Shortcut_Config= +FR-Designer_AlphaFine_SearchRange= +FR-Designer_AlphaFine_Recommend= +FR-Designer-Plugin_Addon= +FR-Designer_Templates= +FR-Designer_Templates_Content= +FR-Designer_AlphaFine_ShowAll= +FR-Designer_AlphaFine_Latest= +FR-Designer_AlphaFine_ShowLess= +FR-Designer_AlphaFine= +FR-Designer-Alphafine_No_Remind= +FR-Designer_AlphaFine_NoResult= +FR-Designer_ConnectionFailed= +FR-Designer_NoResult= +FR-Designer-AlphaFine_SetShortcuts= +FR-Designer_Write_Enhance_Preview= +FR-Designer-StyleAlignment_Style_PartSpacing= +FR-Designer_Use_Params_Template= +FR-Designer_Label_Name= +FR-Designer_Insert_Formula= +FR-Designer_Not_Support_Authority_Edit=\u3053\u306E\u8981\u7D20\u306F\u6A29\u9650\u5236\u5FA1\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093 +FR-Designer_Dynamic_Parameter= +FR-Designer_Remove_Item= +FR-Designer_Widget_No_Repeat= +FR-Designer_Widget_Error_Tip= +FR-Designer_Widget_Return_Leaf= +FR-Designer_Widget_Return_Path= +FR-Designer_Widget_Display_Position= +FR-Designer_Size_Limit= +FR-Designer_Widget_Name= +FR-Designer_Coords_And_Size= +FR-Designer_Barcode_Size= +FS-Designer_DS_Filter_Odd_Tip= +FS-Designer_DS_Filter_Even_Tip= +FS-Designer_DS_Filter_Specify_Tip= +FR-Designer_Mobile-Height-Percent= +FR-Designer_Mobile-Height-Limit= +FR-Designer-Download_Online_Sources= +FR-Designer_Select_Color= +FR-Designer-Basic_Dynamic_Parameter_Injection= +FR-Designer_Label=\u30E9\u30D9\u30EBa +FR-Designer_Widgetname=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u540D +FR-Designer_Insert_Cell_Element= +FR-Designer_Add_Condition= \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties index 84b0e8f076..c3b1e48c8e 100644 --- a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties +++ b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties @@ -1,3 +1,4 @@ +# generated time: \u661F\u671F\u56DB \u5341\u4E00\u6708 24 12:02:51 CST 2016 FR-Designer-BBSLogin_Account=\u7528\u6237\u540D FR-Designer-BBSLogin_Connection-Failure=\uB124\uD2B8\uC6CC\uD06C\uB9C1\uD06C\uC2E4\uD328.\uD604\uC7AC\uB124\uD2B8\uC6CC\uD06C\uC0C1\uD0DC\uB97C\uAC80\uC0AC\uD574\uC8FC\uC2ED\uC2DC\uC624. FR-Designer-BBSLogin_Connection-Failure-Tip=\uC54C\uB9BC @@ -11,7 +12,7 @@ FR-Designer-BBSLogin_Switch-Account=\uC804\uD658\uACC4\uC815\uBC88\uD638 FR-Designer-BBSLogin_Privite-Message=\uAC1C\uC778\u0020\uBA54\uC2DC\uC9C0 FR-Designer-BBSLogin_Times=\uD68C FR-Designer-BBSLogin_Username-Empty-Tip=\uC0AC\uC6A9\uC790\uC774\uB984\uC740\uBE48\uCE78\uC73C\uB85C\uB458\uC218\uC5C6\uC2B5\uB2C8\uB2E4. -FR-Designer-Basic_More_Color=\uB354\uBCF4\uAE30\uC0C9 +FR-Designer-Basic_More_Color=\uC0C9\uB354\uBCF4\uAE30... FR-Designer-Estate_Any=\uC81C\uD55C\uC5C6\uC74C FR-Designer-Estate_Default_Font=\uAE30\uBCF8\uAE00\uAF34 FR-Designer-Estate_Default_Null=\uAE30\uBCF8\uBE44\uC5B4\uC788\uC74C @@ -75,7 +76,7 @@ FR-Designer_Chart_Cell=\uCC28\uD2B8 \uD558\uC774\uD37C\uB9C1\uD06C-\uC140 \uC5F0 FR-Designer_Chart_Float=\uCC28\uD2B8\uD558\uC774\uD37C\uB9C1\uD06C-\uC5F0\uB3D9\uC11C\uC2A4\uD39C\uC2A4\uC694\uC18C FR-Designer_Chart_Float_chart=\uCC28\uD2B8 \uD558\uC774\uD37C\uB9C1\uD06C-\uC704\uC82F \uCC28\uD2B8 FR-Designer_Check-for-Updates=\uC5C5\uB370\uC774\uD2B8\uAC80\uC0AC -FR-Designer_Choose-Data-Confusion-Tip=\\ud63c\uD569\uD560\uD544\uB4DC\uB97C\uC120\uD0DD\uD6C4\uBBF8\uB9AC\uBCF4\uAE30 +FR-Designer_Choose-Data-Confusion-Tip=\\ud63c\uD569\uD560\uD544\uB4DC\uB97C\uC120\uD0DD\uD6C4\uBBF8\uB9AC\uBCF4\uAE30 FR-Designer_Close=\uB2EB\uAE30 FR-Designer_Column=\uC5F4 FR-Designer_Column_Measure=\uC5F4\uCD95/\uCE21\uC815\uAC12 @@ -105,7 +106,7 @@ FR-Designer_Font-Family=\uAE00\uAF34\uBA85\uCE6D FR-Designer_Font-Size=\uAE00\uAF34\uD06C\uAE30 FR-Designer_Forbid_Drag_into_Adapt_Pane=\uD574\uB2F9\uAC1D\uCCB4\uB294\uD3FC\uD14C\uC774\uBE14\uBC14\uB514\uB4DC\uB798\uADF8\uB97C\uD5C8\uC6A9\uD558\uC9C0\uC54A\uC2B5\uB2C8\uB2E4. FR-Designer_Forbid_Drag_into_Para_Pane=\uD574\uB2F9\uAC1D\uCCB4\uB294\uB9E4\uAC1C\uBCC0\uC218\uD328\uB110\uC744\uB4DC\uB798\uADF8\uD560\uC218\uC5C6\uC2B5\uB2C8\uB2E4. -FR-Designer_Foreground=\uBE44\uC804 +FR-Designer_Foreground=\uC0C9 FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\uD3FC\uAD8C\uD55C\uD3B8\uC9D1\uC744\uC9C0\uC6D0\uD558\uC9C0\uC54A\uC2B5\uB2C8\uB2E4. FR-Designer_Form-Report=\uBB38\uC11C\uBE14\uB7ED FR-Designer_Form_EmbeddedTD=\uD3FC(\uB0B4\uC7A5\uB370\uC774\uD130) @@ -161,7 +162,7 @@ FR-Designer_Refresh_Parameter_In_SQL=SQL\uC758\uB9E4\uAC1C\uBCC0\uC218\uB97C\uC0 FR-Designer_Reg_Expressions=\uC815\uADDC\uD45C\uD604\uC2DD FR-Designer_Reg_Max_Length=\uCD5C\uB300\uAE38\uC774 FR-Designer_Reg_Min_Length=\uCD5C\uC18C\uAE38\uC774 -FR-Designer_ReportColumns-Columns=\uC5F4\uC140\uB098\uB204\uAE30 +FR-Designer_ReportColumns-Columns=\uC140\uB098\uB204\uAE30 FR-Designer_Return-Date=\uB0A0\uC9DC\uB3CC\uC544\uAC00\uAE30 FR-Designer_RichText=\uB9AC\uCE58\uD14D\uC2A4\uD2B8\uBC15\uC2A4\uC0BD\uC785 FR-Designer_RichTextEditor=\uB9AC\uCE58\uD14D\uC2A4\uD2B8\uBC15\uC2A4\uD3B8\uC9D1\uAE30 @@ -470,7 +471,7 @@ FR-Designer_Exporting=\uB0B4\uBCF4\uB0B4\uAE30\uC911 FR-Designer_Export-PDF=PDF\uC11C\uC2DD FR-Designer_Button_OK=\uD655\uC778 FR-Designer_Button_Cancel=\uCDE8\uC18C -FR-Designer_JavaScript=\uC790\uBC14\uC2A4\uD06C\uB9BD\uD2B8 +FR-Designer_JavaScript= FR-Designer_JavaScript_Form_Submit= FR-Designer_JavaScript_Commit_to_Database= FR-Designer_JavaScript_Custom= @@ -483,7 +484,7 @@ FR-Designer_Attribute= FR-Designer_Form_Editing_Listeners= FR-Designer_Form_Basic_Properties= FR-Designer_DS_Dictionary= -FR-Designer_Create_Tree=\uD2B8\uB9AC\uC0DD\uC131 +FR-Designer_Create_Tree= FR-Designer_Set_Callback_Function= FR-Designer_ConfirmDialog_Content= FR-Designer_ConfirmDialog_Title= @@ -656,7 +657,7 @@ FRFont-Subscript=\uBC11\uC904 Background_Settings=\uBC30\uACBD\uC124\uC815 FormulaD-Invalid_Formula=\uC62C\uBC14\uB974\uC9C0\uC54A\uC740\uC218\uC2DD FR-Base_Margin=\uC5EC\uBC31 -FR-Designer-Plugin_Shop_Installed=\uD50C\uB7EC\uADF8\uC778 \uC0C1\uC810 \uC989\uC2DC \uC2DC\uC791\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC124\uCE58? +FR-Designer-Plugin_Shop_Installed= M_Edit-Send_to_Back=\uC81C\uC77C\uBC11\uC5D0\uB450\uAE30(K) Email-Can_Preview_Report_Content=\uBCF8\uBB38\uBBF8\uB9AC\uBCF4\uAE30\uBB38\uC11C\uB0B4\uC6A9 FR-Designer-FRFont_Italic=\uAE30\uC6B8\uC784\uAF34 @@ -844,7 +845,6 @@ PageSetup-Placement_Center_on_Page=\uAC00\uC6B4\uB370\uC815\uB82C\uBC29\uC2DD sure_to_delete=\uC0AD\uC81C\uD655\uC778 Already_exists_not_add_repeat=\uC774\uBBF8\uC874\uC7AC\uD569\uB2C8\uB2E4.\uC911\uBCF5\uCD94\uAC00\uD558\uC9C0\uB9C8\uC2ED\uC2DC\uC624. Axis_Title=\uCD95\uC81C\uBAA9 -FR-Designer-Plugin_Install_Failed=\uD50C\uB7EC\uADF8\uC778\uC124\uCE58\uC2E4\uD328 FR-Designer-Widget-Style_Frame=\uD504\uB808\uC784 MainGraduationUnit=\uC8FC\uB208\uAE08\uB2E8\uC704 Second_Axis=\uBCF4\uC870\uC88C\uD45C\uCD95 @@ -988,7 +988,7 @@ Background-Background_is_NULL=\uBC30\uACBD\uC5C6\uC74C FR-Designer_Sytle-FRFont=\uAE00\uAF34 Gradation=\uB2E8\uACC4 The_current_list_is_empty=\uD604\uC7AC\uB9AC\uC2A4\uD2B8\uBE44\uC5B4\uC788\uC74C -Formula_Dictionary_Display_Examples=\\uc2e4\uC81C\uAC12\uBC94\uC704:\=0 - $$$\uFF0C\n \uCD5C\uC885\uACB0\uACFC\uC758\uC2E4\uC81C\uAC12: 1, 2, ..., 100, \n \uD45C\uC2DC\uAC12: -1, -2, ... , -100. +Formula_Dictionary_Display_Examples=\\uc2e4\uC81C\uAC12\uBC94\uC704:\ Schedule-Template_Parameter=\uD15C\uD50C\uB9BF\uB9E4\uAC1C\uBCC0\uC218 JSShow=\uB3D9\uC801\uB514\uC2A4\uD50C\uB808\uC774 Level_coordinates=\uACC4\uCE35\uBCF4\uC870\uC88C\uD45C @@ -1038,7 +1038,7 @@ FR-Designer-Tree_Width=\uB108\uBE44 Record=\uB808\uCF54\uB4DC Poly-Report_Component=\uCDE8\uD569\uBB38\uC11C\uC5B4\uC148\uBE14\uB9AC Options=\uC635\uC158 -NS-war-remote=\uC624\uB958\uCF54\uB4DC\:1117 \uC555\uCD95\uC124\uCE58\uB97C\uC9C0\uC6D0\uD558\uC9C0\uC54A\uC2B5\uB2C8\uB2E4. \uC6D0\uACA9\uB514\uC790\uC778 +NS-war-remote=\uC624\uB958\uCF54\uB4DC\:11100017 \uC555\uCD95\uC124\uCE58\uB97C\uC9C0\uC6D0\uD558\uC9C0\uC54A\uC2B5\uB2C8\uB2E4. \uC6D0\uACA9\uB514\uC790\uC778 Sche-Minute=\uBD84 Three_Rows_Of_Three_Grid=3\uD589 3\uC5F4\uC758\uADF8\uB9AC\uB4DC WorkSheet=\uC790\uC720\uBB38\uC11C @@ -1345,8 +1345,6 @@ Remove_All_Button=\uBAA8\uB4E0\uD0A4\uD074\uB9AC\uC5B4 FR-Designer_Component_Interval=\uC5B4\uC148\uBE14\uB9AC\uAC04\uACA9 ReportColumns-Columns_vertically=\uC5F4\uC140\uB098\uB204\uAE30 ReportGUI-Print_Background=\uC778\uC1C4/\uB0B4\uBCF4\uB0B4\uAE30\uBB38\uC11C\uBC30\uACBD -FR-Designer_Print_Background=\uC778\uC1C4\uBB38\uC11C\uBC30\uACBD -FR-Designer_Export_Background=\uB0B4\uBCF4\uB0B4\uAE30\uBB38\uC11C\uBC30\uACBD Export-CSV=CSV\uC11C\uC2DD(\uC27C\uD45C\uAD6C\uBD84) M_Edit-Paste=\uBD99\uC5EC\uB123\uAE30(P) FR-Designer-Basic_Restart_Designer=\uC7AC\uBD80\uD305\uC124\uACC4\uAE30 @@ -1359,7 +1357,7 @@ RWA-NotChange_Unmodified=\uC218\uC815\uD558\uC9C0\uC54A\uC73C\uBA74\uC5C5\uB370\ User_Information=\uC0AC\uC6A9\uC790\uC815\uBCF4 Custom_styles_lost=\uC0AC\uC6A9\uC790\uC815\uC758\uC591\uC2DD\uC774\uC5C6\uC2B5\uB2C8\uB2E4. PageSetup-Margin=\uD398\uC774\uC9C0\uC5EC\uBC31 -M-New_FormBook=\uC0C8\uD3FC +M-New_FormBook= Widget-TreeNode=\uD2B8\uB9AC\uB178\uB4DC\uD0A4 Form-Url=\uC8FC\uC18C Utils-Beyond_the_left_side_of_Border=\uC67C\uCABD\uC5EC\uBC31\uBC97\uC5B4\uB0A8 @@ -1408,7 +1406,7 @@ Rename=\uB9AC\uB124\uC784 Widget-Load_By_Async=\uBE44\uB3D9\uAE30\uB85C\uB529 Shape=\uADF8\uB798\uD504 BindColumn-This_Condition_has_been_existed=\uC774\uC870\uAC74\uC740\uC774\uBBF8\uC874\uC7AC\uD569\uB2C8\uB2E4. -NS-exception_readError=\uC624\uB958\uCF54\uB4DC\:1305 \uD15C\uD50C\uB9BF\uD30C\uC77C\uD574\uC11D\uC624\uB958 +NS-exception_readError=\uC624\uB958\uCF54\uB4DC\:11300005 \uD15C\uD50C\uB9BF\uD30C\uC77C\uD574\uC11D\uC624\uB958 Set_Column_Title_Start=\uC911\uBCF5\uC81C\uBAA9\uC5F4\uC124\uC815 Fri=5 M_Report-Report_Parameter=\uD15C\uD50C\uB9BF\uB9E4\uAC1C\uBCC0\uC218 @@ -1460,7 +1458,7 @@ Ratio=\uBE44\uC728 DBCP_TEST_ON_BORROW=\uB9C1\uD06C\uD68D\uB4DD\uC804\uAC80\uC0AC\uC9C4\uD589 FR-Designer_layerIndex= WEB-Write_Setting=\uC6F9\uD398\uC774\uC9C0\uC124\uC815\uAE30\uC785 -M-New_WorkBook=\uC0C8\uC6CC\uD06C\uBD81 +M-New_WorkBook= FR-Designer-Plugin_Has_Been_Actived=\uD50C\uB7EC\uADF8\uC778\uC774\uAD6C\uB3D9\uB418\uC5C8\uC2B5\uB2C8\uB2E4.\uC124\uACC4\uAE30\uBC0F\uC11C\uBC84\uB97C\uC7AC\uBD80\uD305\uD558\uB824\uBA74\uC11C\uBC84\uB97C\uC218\uB3D9\uC7AC\uBD80\uD305\uD574\uC57C\uD569\uB2C8\uB2E4. Datasource-Maximum_Number_of_Preview_Rows=\uCD5C\uB300\uBBF8\uB9AC\uBCF4\uAE30\uD589\uC218 ExpandD-Cell_Expand_Attributes=\uD655\uC7A5\uC18D\uC131 @@ -1537,7 +1535,7 @@ FR-Designer_Cancel=\uCDE8\uC18C Button-Group-Display-Columns=\uC5F4\uC758\uC218\uB97C\uB098\uD0C0\uB0C4 Widget-Height=\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uB192\uC774 Examples=\uC608\uC2DC -Formula_Dictionary_Display_Example=\uC2E4\uC81C\uAC12\uBC94\uC704:\=0 - $$$\uFF0C\n\uCD5C\uC885\uACB0\uACFC\uC758\uC2E4\uC81C\uAC12: 1, 2, ..., 100, \uD45C\uC2DC\uAC12: -1, -2, ... , -100. +Formula_Dictionary_Display_Example=\uC2E4\uC81C\uAC12\uBC94\uC704:\ StyleAlignment-Horizontal=\uC218\uD3C9\uC815\uB82C HyperLink_Must_Alone_Reset=\uC5EC\uB7EC\uAC1C\uD558\uC774\uD37C\uB9C1\uD06C ExpandD-Expand_Direction=\uD655\uB300\uBC29\uD5A5 @@ -1996,7 +1994,6 @@ FR-Designer_Parameter=\uB9E4\uAC1C\uBCC0\uC218 FR-Designer-Plugin_Plugin=\uD50C\uB7EC\uADF8\uC778 FR-Designer_Background=\uBC30\uACBD Template=\uD15C\uD50C\uB9BF - FR-Designer_Original_Marked_Filed=\uCD08\uAE30\uD0DC\uADF8\uD544\uB4DC FR-Designer_Build_Tree_Accord_Marked_Filed_Length=\uC120\uD0DD\uD55C\uB370\uC774\uD130\uC138\uD2B8\uC758\uD0DC\uADF8\uD544\uB4DC\uAE38\uC774\uC5D0\uB530\uB77C\uD2B8\uB9AC\uC0DD\uC131 FR-Designer_Tree_Data_Field=\uD2B8\uB9AC\uB370\uC774\uD130\uD544\uB4DC @@ -2005,7 +2002,130 @@ FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=\uC120\uD0DD\uD55C\uB370\uC774 FR-Product_Demo=\uC81C\uD488\uC2DC\uC5F0 FR-Designer_Data_Filter=\uB370\uC774\uD130\uC120\uBCC4 Default=\uAE30\uBCF8 -FR-Designer_Sheet_Label_Page_Display_Position= -FR-Designer_Provide_Choose_All=\uC81C\uACF5\uBAA8\uB450\uC120\uD0DD -FR-Designer_Decimal_Places=\uC18C\uC218\uC218\uB7C9: -FR-Base-Load_Resource_File=\uB85C\uB529\uAD6C\uC131\uD30C\uC77C \ No newline at end of file +FR-Base-Load_Resource_File=\uB85C\uB529\uAD6C\uC131\uD30C\uC77C +FR-Designer_Cell_Element=\uC140\uC694\uC18C +FR-Designer_Cell_Attributes=\uC140\uC18D\uC131 +FR-Designer_Float_Element=\uD638\uBC84\uC694\uC18C +FR-Designer_Widget_Library= +FR-Designer_No_Settings_Available= +FR-Designer_Configured_Roles=\uC5ED\uD560\uC774\uAD6C\uC131\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +FR-Designer_Scale_EnlargeOrReduce= +FR-Designer_Add_Hyperlink=\uB9C1\uD06C\uCD94\uAC00 +FR-Designer_Scale_selfAdaptButton= +FR-Designer_FRFont_Subscript= +FR-Designer_FRFont_Superscript= +FR-Designer_FRFont_Shadow= +FR-Designer_FRFont_Strikethrough= +FR-Designer_FRFont_Underline= +FR-Designer_FRFont_bold= +FR-Designer_FRFont_italic= +FR-Designer_FRFont_Foreground= +FR-Designer_FRFont_Style= +FR-Designer_FRFont_plain= +FR-Designer_FRFont_bolditalic= +FR-Designer_outBorder= +FR-Designer_inBorder= +FR-Designer_ExpandD_Up_Father_Cell= +FR-Designer_ExpandD_Expand_Direction= +FR-Designer_Expand= +FR-Designer_ExpendSort= +FR-Designer_ExpandD_Expandable= +FR-Designer_Read_failure= +FR-Designer_Image_Layout= +FR-Designer_StyleAlignment_Text_Style= +FR-Designer_StyleAlignment_Text_Rotation= +FR-Designer_Style_Left_Indent= +FR-Designer_Style_Right_Indent= +FR-Designer_Style_Spacing_Before= +FR-Designer_Style_Spacing_After= +FR-Designer_Style_Line_Spacing= +FR-Designer_Left= +FR-Designer_Right= +FR-Designer_Front= +FR-Designer_Behind= +FR-Designer_StyleAlignment_Wrap_Text= +FR-Designer_StyleAlignment_Single_Line= +FR-Designer_StyleAlignment_Single_Line(Adjust_Font)= +FR-Designer_StyleAlignment_Multi_Line(Adjust_Font)= +FR-Designer_Auto_Adjust_Height= +FR-Designer_Auto_Adjust_Wdith= +FR-Designer_Type_Set= +FR-Designer_Dic_Data_Query= +FR-Designer_Dictionary_Dynamic_SQL= +FR-Designer_Datasource_From_Database= +FR-Designer_CellWrite_InsertRow_NULL= +FR-Designer_CellWrite_InsertRow_COPY= +FR-Designer_CellWrite_InsertRow_Policy= +FR-Designer_CellWrite_Page_Before_Row= +FR-Designer_CellWrite_Page_After_Row= +FR-Designer_CellWrite_Page_Before_Column= +FR-Designer_CellWrite_Page_After_Column= +FR-Designer_CellPage_Can_Break_On_Paginate= +FR-Designer_CellPage_Repeat_Content_When_Paging= +FR-Designer_CellWrite_Preview_Cell_Content= +FR-Designer_CellWrite_Print_Content= +FR-Designer_CellWrite_Print_Background= +FR-Designer_CellWrite_Show_As_Image= +FR-Designer_CellWrite_Show_As_HTML= +FR-Designer_Datasource_Other_Attributes= +FR-Designer_Not_use_a_cell_attribute_table_editing= +FR-Designer_CellElement_Property_Table= +FR-Designer_T_Insert_Float= +FR-Designer_Add_FloatElement= +FR-Designer_Insert_Image= +FR-Designer_Insert_Chart= +FR-Designer_Insert_Text= +FR-Designer_Insert_Formula= +FR-Designer_Scale_Down= +FR-Designer_Scale_Up= +FR-Designer_Scale_Slider= +FR-Designer_Scale_Grade= +FR-Designer_AlphaFine_Enable= +FR-Designer_AlphaFine_EnableAlphaFine= +FR-Designer_AlphaFine_EnableInternet= +FR-Designer_AlphaFine_EnableInternetSearch= +FR-Designer_AlphaFine_Shortcut_Config= +FR-Designer_AlphaFine_SearchRange= +FR-Designer_AlphaFine_Recommend= +FR-Designer-Plugin_Addon= +FR-Designer_Templates= +FR-Designer_Templates_Content= +FR-Designer_AlphaFine_ShowAll= +FR-Designer_AlphaFine_Latest= +FR-Designer_AlphaFine_ShowLess= +FR-Designer_AlphaFine= +FR-Designer-Alphafine_No_Remind= +FR-Designer_AlphaFine_NoResult= +FR-Designer_ConnectionFailed= +FR-Designer_NoResult= +FR-Designer-AlphaFine_SetShortcuts= +FR-Designer_Write_Enhance_Preview= +FR-Designer_Scale_customButton= +FR-Designer-StyleAlignment_Style_PartSpacing= +FR-Designer_Use_Params_Template= +FR-Designer_Label_Name= +FR-Designer_Add_Event= +FR-Designer_Not_Support_Authority_Edit=\uD574\uB2F9\uC694\uC18C\uB294\uAD8C\uD55C\uCEE8\uD2B8\uB864\uC744\uC9C0\uC6D0\uD558\uC9C0\uC54A\uC2B5\uB2C8\uB2E4. +FR-Designer_Dynamic_Parameter= +FR-Designer_Remove_Item= +FR-Designer_Widget_No_Repeat= +FR-Designer_Widget_Error_Tip= +FR-Designer_Widget_Return_Leaf= +FR-Designer_Widget_Return_Path= +FR-Designer_Widget_Display_Position= +FR-Designer_Size_Limit= +FR-Designer_Widget_Name= +FR-Designer_Coords_And_Size= +FR-Designer_Barcode_Size= +FS-Designer_DS_Filter_Odd_Tip= +FS-Designer_DS_Filter_Even_Tip= +FS-Designer_DS_Filter_Specify_Tip= +FR-Designer_Mobile-Height-Percent= +FR-Designer_Mobile-Height-Limit= +FR-Designer-Download_Online_Sources= +FR-Designer_Select_Color= +FR-Designer-Basic_Dynamic_Parameter_Injection= +FR-Designer_Label=\uB808\uC774\uBE14 +FR-Designer_Widgetname=\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uC774\uB984 +FR-Designer_Insert_Cell_Element= +FR-Designer_Add_Condition= \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index e0bd4bf8d3..3b8e7957a1 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -1,3 +1,4 @@ +# generated time: \u661F\u671F\u56DB \u5341\u4E00\u6708 24 12:02:51 CST 2016 FR-Designer-BBSLogin_Account=\u7528\u6237\u540D FR-Designer-BBSLogin_Connection-Failure=\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u5F53\u524D\u7F51\u7EDC\u72B6\u6001 FR-Designer-BBSLogin_Connection-Failure-Tip=\u63D0\u793A @@ -11,7 +12,7 @@ FR-Designer-BBSLogin_Switch-Account=\u5207\u6362\u8D26\u53F7 FR-Designer-BBSLogin_Privite-Message=\u79C1\u4EBA\u6D88\u606F FR-Designer-BBSLogin_Times=\u6B21 FR-Designer-BBSLogin_Username-Empty-Tip=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A -FR-Designer-Basic_More_Color=\u66F4\u591A\u989C\u8272 +FR-Designer-Basic_More_Color=\u66F4\u591A\u989C\u8272... FR-Designer-Estate_Any=\u4E0D\u9650 FR-Designer-Estate_Default_Font=\u9ED8\u8BA4\u5B57\u4F53 FR-Designer-Estate_Default_Null=\u9ED8\u8BA4\u4E3A\u7A7A @@ -75,7 +76,7 @@ FR-Designer_Chart_Cell=\u56FE\u8868\u8D85\u94FE-\u8054\u52A8\u5355\u5143\u683C FR-Designer_Chart_Float=\u56FE\u8868\u8D85\u94FE-\u8054\u52A8\u60AC\u6D6E\u5143\u7D20 FR-Designer_Chart_Float_chart=\u56FE\u8868\u8D85\u94FE-\u60AC\u6D6E\u7A97\u56FE\u8868 FR-Designer_Check-for-Updates=\u68C0\u67E5\u66F4\u65B0 -FR-Designer_Choose-Data-Confusion-Tip=\ \u8BF7\u9009\u62E9\u9700\u8981\u6DF7\u6DC6\u7684\u5B57\u6BB5\u540E\u9884\u89C8 +FR-Designer_Choose-Data-Confusion-Tip=\ \u8BF7\u9009\u62E9\u9700\u8981\u6DF7\u6DC6\u7684\u5B57\u6BB5\u540E\u9884\u89C8 FR-Designer_Close=\u5173\u95ED FR-Designer_Column=\u5217 FR-Designer_Column_Measure=\u5217\u8F74/\u5EA6\u91CF\u503C @@ -95,7 +96,7 @@ FR-Designer_Enabled=\u53EF\u7528 FR-Designer_End-Date=\u7ED3\u675F\u65E5\u671F FR-Designer_ExportAndOutput=\u5BFC\u51FA FR-Designer_FRFont=\u5B57\u4F53 -FR-Designer_FS_Close_Other_Templates=\u5173\u95ED\u5176\u4ED6\u6A21\u7248 +FR-Designer_FS_Close_Other_Templates=\u5173\u95ED\u5176\u4ED6\u6A21\u677F FR-Designer_File=\u6587\u4EF6 FR-Designer_Filter_Conditions=\u8FC7\u6EE4\u6761\u4EF6 FR-Designer_Finish-Modify-Share=\u5B8C\u6210\u4FEE\u6539\u5E76\u5206\u4EAB @@ -105,7 +106,7 @@ FR-Designer_Font-Family=\u5B57\u4F53\u540D\u79F0 FR-Designer_Font-Size=\u5B57\u4F53\u5927\u5C0F FR-Designer_Forbid_Drag_into_Adapt_Pane=\u8BE5\u5BF9\u8C61\u4E0D\u5141\u8BB8\u62D6\u5165\u8868\u5355\u4E3B\u4F53 FR-Designer_Forbid_Drag_into_Para_Pane=\u8BE5\u5BF9\u8C61\u4E0D\u80FD\u62D6\u5165\u53C2\u6570\u9762\u677F -FR-Designer_Foreground=\u524D\u666F +FR-Designer_Foreground=\u989C\u8272 FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\u6682\u4E0D\u652F\u6301\u8868\u5355\u6743\u9650\u7F16\u8F91 FR-Designer_Form-Report=\u62A5\u8868\u5757 FR-Designer_Form_EmbeddedTD=\u8868\u5355(\u5185\u7F6E\u6570\u636E) @@ -116,6 +117,7 @@ FR-Designer_Forum=\u8BBA\u575B FR-Designer_Get-Cube=\u6B63\u5728\u83B7\u53D6cube FR-Designer_Help=\u5E2E\u52A9 FR-Designer_Hide=\u9690\u85CF +FR-Designer_Show=\u663E\u793A FR-Designer_Hyperlink=\u8D85\u7EA7\u94FE\u63A5 FR-Designer_Hyperlink-Form_link=\u5F53\u524D\u8868\u5355\u5BF9\u8C61 FR-Designer_IDCard=\u8EAB\u4EFD\u8BC1 @@ -162,7 +164,7 @@ FR-Designer_Refresh_Parameter_In_SQL=\u662F\u5426\u5237\u65B0SQL\u4E2D\u7684\u53 FR-Designer_Reg_Expressions=\u6B63\u5219\u8868\u8FBE\u5F0F FR-Designer_Reg_Max_Length=\u6700\u5927\u957F\u5EA6 FR-Designer_Reg_Min_Length=\u6700\u5C0F\u957F\u5EA6 -FR-Designer_ReportColumns-Columns=\u5217\u5206\u680F +FR-Designer_ReportColumns-Columns=\u5206\u680F FR-Designer_Return-Date=\u8FD4\u56DE\u65E5\u671F FR-Designer_RichText=\u63D2\u5165\u5BCC\u6587\u672C FR-Designer_RichTextEditor=\u5BCC\u6587\u672C\u7F16\u8F91\u5668 @@ -357,7 +359,7 @@ FR-Designer-Series_Dismenber_As_Single=\u8FDE\u7EED\u5206\u9694\u7B26\u89C6\u4E3 FR-Designer_KeyPoint=\u5173\u952E\u8282\u70B9 FR-Designer_loadedTreeModel=\u52A0\u8F7D\u5931\u8D25,\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5 FR-Designer-Failed_to_load_the_plugin=\u65E0\u6CD5\u52A0\u8F7D\u63D2\u4EF6\uFF0C\u8BF7\u66F4\u65B0\u63D2\u4EF6\uFF1A -FR-Designer-Plugin_Please_Update_Jar=\u8BF7\u66F4\u65B0Jar\u5305\u81F3\: +FR-Designer-Plugin_Please_Update_Jar=\u8BF7\u66F4\u65B0Jar\u5305, \u63D2\u4EF6\u9700\u6C42\u6700\u4F4E\u7248\u672C FR-Designer-Invalid_Page_Number=\u65E0\u6548\u9875\u7801 FR-Designer_Get-CubeGetting=\u83B7\u53D6cube FR-Designer_XMLA_Database=\u6570\u636E\u5E93 @@ -425,6 +427,8 @@ FR-Designer-App_ReLayout=\u624B\u673A\u91CD\u5E03\u5C40 FR-Designer_Mobile-Attr=\u79FB\u52A8\u7AEF\u5C5E\u6027 FR-Designer_Mobile-Vertical=\u7AD6\u5C4F FR-Designer_Mobile-Horizontal=\u6A2A\u5C4F +FR-Designer_Mobile-Height-Limit=\u624B\u673A\u663E\u793A\u9650\u5236\u9AD8\u5EA6 +FR-Designer_Mobile-Height-Percent=\u6700\u5927\u9AD8\u5EA6 FR-Designer_COMMUNITY=\u793E\u533A FR-Designer_COMMUNITY_BBS=\u5E06\u8F6F\u8BBA\u575B FR-Designer_COMMUNITY_VIDEO=\u5165\u95E8\u89C6\u9891 @@ -466,9 +470,9 @@ FR-Designer_AllCategories=\u6240\u6709\u5206\u7C7B FR-Designer_SimpleDetail_Report=\u7B80\u5355\u660E\u7EC6\u8868 FR-Designer_SimpleCross_Report=\u7B80\u5355\u4EA4\u53C9\u8868 FR-Designer_DoubleLayer_Report=\u53CC\u5C42\u8868\u5934 -FR-Designer_Download_Template=\u4E0B\u8F7D\u7EC4\u4EF6 -FR-Designer_Install_Template=\u5B89\u88C5\u7EC4\u4EF6 -FR-Designer_Delete_Template=\u5220\u9664\u7EC4\u4EF6 +FR-Designer_Download_Template=\u4E0B\u8F7D +FR-Designer_Install_Template=\u5B89\u88C5 +FR-Designer_Delete_Template=\u5220\u9664 FR-Designer_Mobile-ToolBar=\u5DE5\u5177\u680F FR-Designer_Mobile-Refresh=\u5237\u65B0 FR-Designer_WLayout-Absolute-ToolTips=\u81EA\u7531\u5F0F\u5E03\u5C40\uFF0C\u53EF\u4EE5\u5728\u5E03\u5C40\u5185\u4EFB\u610F\u4F4D\u7F6E\u6DFB\u52A0\u63A7\u4EF6 @@ -656,7 +660,7 @@ FRFont-Subscript=\u4E0B\u6807 Background_Settings=\u80CC\u666F\u8BBE\u7F6E FormulaD-Invalid_Formula=\u975E\u6CD5\u7684\u516C\u5F0F FR-Base_Margin=\u8FB9\u8DDD -FR-Designer-Plugin_Shop_Installed=\u63D2\u4EF6\u5546\u5E97\u5B89\u88C5\u5B8C\u6BD5,\u662F\u5426\u7ACB\u523B\u542F\u52A8? +FR-Designer-Plugin_Shop_Installed=\u63D2\u4EF6\u5546\u5E97\u5B89\u88C5\u5B8C\u6BD5,\u8BF7\u91CD\u65B0\u6253\u5F00\u63D2\u4EF6\u5546\u5E97\u3002 M_Edit-Send_to_Back=\u7F6E\u4E8E\u5E95\u5C42(K) Email-Can_Preview_Report_Content=\u6B63\u6587\u9884\u89C8\u62A5\u8868\u5185\u5BB9 FR-Designer-FRFont_Italic=\u503E\u659C @@ -844,7 +848,6 @@ PageSetup-Placement_Center_on_Page=\u5C45\u4E2D\u65B9\u5F0F sure_to_delete=\u786E\u8BA4\u5220\u9664 Already_exists_not_add_repeat=\u5DF2\u7ECF\u5B58\u5728\uFF0C\u8BF7\u4E0D\u8981\u91CD\u590D\u6DFB\u52A0 Axis_Title=\u8F74\u6807\u9898 -FR-Designer-Plugin_Install_Failed=\u63D2\u4EF6\u5B89\u88C5\u5931\u8D25 FR-Designer-Widget-Style_Frame=\u6846\u67B6 MainGraduationUnit=\u4E3B\u8981\u523B\u5EA6\u5355\u4F4D Second_Axis=\u6B21\u5750\u6807\u8F74 @@ -988,7 +991,7 @@ Background-Background_is_NULL=\u6CA1\u6709\u80CC\u666F FR-Designer_Sytle-FRFont=\u5B57\u4F53 Gradation=\u5C42\u6B21 The_current_list_is_empty=\u5F53\u524D\u5217\u8868\u4E3A\u7A7A -Formula_Dictionary_Display_Examples=\ \u5B9E\u9645\u503C\u8303\u56F4\u4E3A \=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=\ \u5B9E\u9645\u503C\u8303\u56F4\u4E3A \ Schedule-Template_Parameter=\u6A21\u677F\u53C2\u6570 JSShow=\u52A8\u6001\u5C55\u793A Level_coordinates=\u5C42\u6B21\u5750\u6807 @@ -1038,7 +1041,7 @@ FR-Designer-Tree_Width=\u5BBD\u5EA6 Record=\u8BB0\u5F55 Poly-Report_Component=\u805A\u5408\u62A5\u8868\u7EC4\u4EF6 Options=\u9009\u9879 -NS-war-remote=\u9519\u8BEF\u4EE3\u7801\:1117 \u538B\u7F29\u90E8\u7F72\u4E0D\u652F\u6301\u8FDC\u7A0B\u8BBE\u8BA1 +NS-war-remote=\u9519\u8BEF\u4EE3\u7801\:11100017 \u538B\u7F29\u90E8\u7F72\u4E0D\u652F\u6301\u8FDC\u7A0B\u8BBE\u8BA1 Sche-Minute=\u5206 Three_Rows_Of_Three_Grid=\u4E09\u884C\u4E09\u5217\u7684\u683C\u5B50 WorkSheet=\u81EA\u7531\u62A5\u8868 @@ -1206,7 +1209,6 @@ FS_Start_Date=\u8D77\u59CB\u65E5\u671F FR-ConditionB_Operator=\u64CD\u4F5C\u7B26 Printer-Alias=\u522B\u540D DS-Class_Name=\u7C7B\u540D -FR-Designer-Plugin_Has_Been_Disabled=\u63D2\u4EF6\u5DF2\u88AB\u7981\u7528\uFF0C\u91CD\u542F\u8BBE\u8BA1\u5668\u53CA\u670D\u52A1\u5668\u751F\u6548\uFF0C\u670D\u52A1\u5668\u9700\u624B\u52A8\u91CD\u542F Sort-Original=\u4E0D\u6392\u5E8F Utils-Top_to_Bottom_a=\u4ECE\u4E0A\u5F80\u4E0B Parameter-String=\u5B57\u7B26\u4E32 @@ -1345,8 +1347,6 @@ Remove_All_Button=\u6E05\u9664\u6240\u6709\u6309\u94AE FR-Designer_Component_Interval=\u7EC4\u4EF6\u95F4\u9694 ReportColumns-Columns_vertically=\u5217\u5206\u680F ReportGUI-Print_Background=\u6253\u5370/\u5BFC\u51FA\u62A5\u8868\u80CC\u666F -FR-Designer_Print_Background=\u6253\u5370\u62A5\u8868\u80CC\u666F -FR-Designer_Export_Background=\u5BFC\u51FA\u62A5\u8868\u80CC\u666F Export-CSV=CSV\u683C\u5F0F(\u9017\u53F7\u5206\u9694) M_Edit-Paste=\u7C98\u8D34(P) FR-Designer-Basic_Restart_Designer=\u91CD\u542F\u8BBE\u8BA1\u5668 @@ -1359,7 +1359,7 @@ RWA-NotChange_Unmodified=\u672A\u4FEE\u6539\u4E0D\u66F4\u65B0 User_Information=\u7528\u6237\u4FE1\u606F Custom_styles_lost=\u81EA\u5B9A\u4E49\u6837\u5F0F\u5DF2\u4E22\u5931 PageSetup-Margin=\u9875\u8FB9\u8DDD -M-New_FormBook=\u65B0\u5EFA\u8868\u5355 +M-New_FormBook=\u65B0\u5EFA\u51B3\u7B56\u62A5\u8868 Widget-TreeNode=\u6811\u8282\u70B9\u6309\u94AE Form-Url=\u5730\u5740 Utils-Beyond_the_left_side_of_Border=\u8D85\u51FA\u5DE6\u8FB9\u754C @@ -1372,7 +1372,7 @@ Not_Exsit=\u4E0D\u5B58\u5728\u4E8E\u62A5\u8868 Utils-Insert_Row=\u63D2\u5165\u884C Utils-Delete_Row=\u5220\u9664\u884C not_support_authority_edit=\u8BE5\u5143\u7D20\u4E0D\u652F\u6301\u6743\u9650\u63A7\u5236 -Formula_Tips=\u516C\u5F0F\u5FC5\u987B\u4EE5"\="\u53F7\u5F00\u5934\uFF01 +Formula_Tips=\u516C\u5F0F\u5FC5\u987B\u4EE5"\ FR-Action_Copy=\u590D\u5236 Compile_Success=\u7F16\u8BD1\u6210\u529F BackgroundTexture-RecycledPaper=\u518D\u751F\u7EB8 @@ -1408,7 +1408,7 @@ Rename=\u91CD\u547D\u540D Widget-Load_By_Async=\u5F02\u6B65\u52A0\u8F7D Shape=\u56FE\u5F62 BindColumn-This_Condition_has_been_existed=\u6B64\u6761\u4EF6\u5DF2\u7ECF\u5B58\u5728 -NS-exception_readError=\u9519\u8BEF\u4EE3\u7801\:1305 \u6A21\u677F\u6587\u4EF6\u89E3\u6790\u51FA\u9519 +NS-exception_readError=\u9519\u8BEF\u4EE3\u7801\:11300005 \u6A21\u677F\u6587\u4EF6\u89E3\u6790\u51FA\u9519 Set_Column_Title_Start=\u8BBE\u7F6E\u91CD\u590D\u6807\u9898\u5217 Fri=\u4E94 M_Report-Report_Parameter=\u6A21\u677F\u53C2\u6570 @@ -1460,8 +1460,7 @@ Ratio=\u6BD4\u7387 DBCP_TEST_ON_BORROW=\u83B7\u53D6\u8FDE\u63A5\u524D\u68C0\u9A8C FR-Designer_layerIndex=\u4F9D\u8D56\u7684\u5C42\u6570 WEB-Write_Setting=\u586B\u62A5\u9875\u9762\u8BBE\u7F6E -M-New_WorkBook=\u65B0\u5EFA\u5DE5\u4F5C\u7C3F -FR-Designer-Plugin_Has_Been_Actived=\u63D2\u4EF6\u5DF2\u88AB\u542F\u7528\uFF0C\u91CD\u542F\u8BBE\u8BA1\u5668\u53CA\u670D\u52A1\u5668\u751F\u6548\uFF0C\u670D\u52A1\u5668\u9700\u624B\u52A8\u91CD\u542F +M-New_WorkBook=\u65B0\u5EFA\u666E\u901A\u62A5\u8868 Datasource-Maximum_Number_of_Preview_Rows=\u6700\u5927\u7684\u9884\u89C8\u884C\u6570 ExpandD-Cell_Expand_Attributes=\u6269\u5C55\u5C5E\u6027 Select_the_repeated_row_and_column=\u9009\u62E9\u9700\u8981\u91CD\u590D\u7684\u884C\u5217 @@ -1537,7 +1536,7 @@ FR-Designer_Cancel=\u53D6\u6D88 Button-Group-Display-Columns=\u5C55\u793A\u5217\u6570 Widget-Height=\u63A7\u4EF6\u9AD8\u5EA6 Examples=\u4F8B\u5B50 -Formula_Dictionary_Display_Example=\u5B9E\u9645\u503C\u8303\u56F4\u4E3A \=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_Example=\u5B9E\u9645\u503C\u8303\u56F4\u4E3A \ StyleAlignment-Horizontal=\u6C34\u5E73\u5BF9\u9F50 HyperLink_Must_Alone_Reset=\u591A\u4E2A\u8D85\u94FE ExpandD-Expand_Direction=\u6269\u5C55\u65B9\u5411 @@ -1988,6 +1987,26 @@ FR-Designer_Role=\u89D2\u8272 FR-Designer_Permissions=\u6743\u9650 FR-Designer_Form_Button=\u6309\u94AE FR-Designer_WF_Name=\u540D\u79F0 +FR-Designer_AlphaFine_Enable=\u5F00\u542F +FR-Designer_AlphaFine_EnableAlphaFine=\u5F00\u542FAlphaFine\u529F\u80FD +FR-Designer_AlphaFine_EnableInternet=\u8054\u7F51 +FR-Designer_AlphaFine_EnableInternetSearch=\u8054\u7F51\u641C\u7D22 +FR-Designer_AlphaFine_Shortcut_Config=\u5FEB\u6377\u952E\u914D\u7F6E +FR-Designer_AlphaFine_SearchRange=\u641C\u7D22\u8303\u56F4 +FR-Designer-Plugin_Addon=\u5E94\u7528\u4E2D\u5FC3 +FR-Designer_Templates=\u6A21\u677F +FR-Designer_Templates_Content=\u6A21\u677F\u5185\u5BB9 +FR-Designer_AlphaFine_ShowAll=\u663E\u793A\u5168\u90E8 +FR-Designer_AlphaFine_Recommend=\u731C\u60A8\u9700\u8981 +FR-Designer_AlphaFine_Latest=\u672C\u5730\u5E38\u7528 +FR-Designer_AlphaFine_ShowLess=\u6536\u8D77 +FR-Designer_AlphaFine=AlphaFine\u667A\u80FD\u641C\u7D22 +FR-Designer-Alphafine_No_Remind=\u4E0D\u518D\u63D0\u793A +FR-Designer_AlphaFine_NoResult=\u6682\u65E0\u76F8\u5173\u5185\u5BB9 +FR-Designer_ConnectionFailed=\u94FE\u63A5\u5931\u8D25 +FR-Designer_NoResult=\u6682\u4E0D\u652F\u6301\u663E\u793A +FR-Designer-AlphaFine_SetShortcuts=\u8BF7\u76F4\u63A5\u5728\u952E\u76D8\u4E0A\u6309\u4E24\u4E2A\u7EC4\u5408\u952E +FR-Designer_Write_Enhance_Preview=\u65B0\u586B\u62A5\u9884\u89C8 FR-Designer_Double=\u5C0F\u6570 FR-Designer_Query=\u67E5\u8BE2 FR-Designer_Font=\u5B57\u4F53 @@ -2005,7 +2024,120 @@ FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=\u4F9D\u8D56\u6240\u9009\u6570 FR-Product_Demo=\u4EA7\u54C1\u6F14\u793A FR-Designer_Data_Filter=\u6570\u636E\u7B5B\u9009 Default=\u9ED8\u8BA4 -FR-Designer_Sheet_Label_Page_Display_Position=sheet\u6807\u7B7E\u9875\u663E\u793A\u4F4D\u7F6E\uFF1A -FR-Designer_Provide_Choose_All=\u63D0\u4F9B\u5168\u9009 -FR-Designer_Decimal_Places=\u5C0F\u6570\u6570\u76EE\uFF1A FR-Base-Load_Resource_File=\u52A0\u8F7D\u914D\u7F6E\u6587\u4EF6 + +FR-Designer_Cell_Element=\u5355\u5143\u683C\u5143\u7D20 +FR-Designer_Cell_Attributes=\u5355\u5143\u683C\u5C5E\u6027 +FR-Designer_Float_Element=\u60AC\u6D6E\u5143\u7D20 +FR-Designer_Widget_Library=\u7EC4\u4EF6\u5E93 +FR-Designer_No_Settings_Available=\u65E0\u53EF\u7528\u914D\u7F6E\u9879\uFF01 +FR-Designer_Configured_Roles=\u5DF2\u914D\u7F6E\u89D2\u8272 +FR-Designer_Scale_EnlargeOrReduce=\u7F29\u653E +FR-Designer_Scale_selfAdaptButton=\u6070\u597D\u5BB9\u7EB3\u9009\u5B9A\u533A\u57DF +FR-Designer_Scale_customButton=\u81EA\u5B9A\u4E49 +FR-Designer_FRFont_Subscript=\u4E0B\u6807 +FR-Designer_FRFont_Superscript=\u4E0A\u6807 +FR-Designer_FRFont_Shadow=\u9634\u5F71 +FR-Designer_FRFont_Strikethrough=\u5220\u9664\u7EBF +FR-Designer_FRFont_Underline=\u4E0B\u5212\u7EBF +FR-Designer_FRFont_bold=\u52A0\u7C97 +FR-Designer_FRFont_italic=\u659C\u4F53 +FR-Designer_FRFont_Foreground=\u989C\u8272 +FR-Designer_FRFont_Style=\u5B57\u5F62 +FR-Designer_FRFont_plain=\u5E38\u89C4 +FR-Designer_FRFont_bolditalic=\u52A0\u7C97\u503E\u659C +FR-Designer_outBorder=\u5916\u8FB9\u6846 +FR-Designer_inBorder=\u5185\u8FB9\u6846 +FR-Designer_ExpandD_Up_Father_Cell=\u4E0A\u7236\u683C +FR-Designer_ExpandD_Expand_Direction=\u6269\u5C55\u65B9\u5411 +FR-Designer_Expand=\u6269\u5C55 +FR-Designer_ExpendSort=\u6269\u5C55\u540E\u6392\u5E8F +FR-Designer_ExpandD_Expandable=\u53EF\u4F38\u5C55\u6027 +FR-Designer_Read_failure=\u8BFB\u53D6\u5931\u8D25\uFF0C\u53EF\u80FD\u6E90\u6587\u4EF6\u5DF2\u635F\u574F +FR-Designer_Add_Hyperlink=\u6DFB\u52A0\u94FE\u63A5 +FR-Designer-StyleAlignment_Style_PartSpacing=\u6BB5\u95F4\u8DDD +FR-Designer_Image_Layout=\u56FE\u7247\u5E03\u5C40 +FR-Designer_StyleAlignment_Text_Style=\u6587\u672C\u63A7\u5236 +FR-Designer_StyleAlignment_Text_Rotation=\u6587\u672C\u65B9\u5411 +FR-Designer_Style_Left_Indent=\u5DE6\u7F29\u8FDB +FR-Designer_Style_Right_Indent=\u53F3\u7F29\u8FDB +FR-Designer_Style_Spacing_Before=\u6BB5\u524D +FR-Designer_Style_Spacing_After=\u6BB5\u540E +FR-Designer_Style_Line_Spacing=\u884C\u95F4\u8DDD +FR-Designer_Left=\u5DE6 +FR-Designer_Right=\u53F3 +FR-Designer_Front=\u524D +FR-Designer_Behind=\u540E +FR-Designer_StyleAlignment_Wrap_Text=\u81EA\u52A8\u6362\u884C +FR-Designer_StyleAlignment_Single_Line=\u5355\u884C\u663E\u793A +FR-Designer_StyleAlignment_Single_Line(Adjust_Font)=\u5355\u884C\u663E\u793A(\u8C03\u6574\u5B57\u4F53) +FR-Designer_StyleAlignment_Multi_Line(Adjust_Font)=\u591A\u884C\u663E\u793A(\u8C03\u6574\u5B57\u4F53) +FR-Designer_Auto_Adjust_Height=\u81EA\u52A8\u8C03\u6574\u884C\u9AD8 +FR-Designer_Auto_Adjust_Wdith=\u81EA\u52A8\u8C03\u6574\u5217\u5BBD +FR-Designer_Type_Set=\u7C7B\u578B\u8BBE\u7F6E +FR-Designer_Dic_Data_Query=\u6570\u636E\u67E5\u8BE2 +FR-Designer_Dictionary_Dynamic_SQL=\u52A8\u6001SQL +FR-Designer_Datasource_From_Database=\u6570\u636E\u5E93\u8868 +FR-Designer_CellWrite_InsertRow_NULL=\u7A7A\u503C +FR-Designer_CellWrite_InsertRow_COPY=\u539F\u503C +FR-Designer_CellWrite_InsertRow_Policy=\u63D2\u5165\u884C\u7B56\u7565 +FR-Designer_CellWrite_Page_Before_Row=\u884C\u524D\u5206\u9875 +FR-Designer_CellWrite_Page_After_Row=\u884C\u540E\u5206\u9875 +FR-Designer_CellWrite_Page_Before_Column=\u5217\u524D\u5206\u9875 +FR-Designer_CellWrite_Page_After_Column=\u5217\u540E\u5206\u9875 +FR-Designer_CellPage_Can_Break_On_Paginate=\u5206\u9875\u65F6\u53EF\u4EE5\u65AD\u5F00 +FR-Designer_CellPage_Repeat_Content_When_Paging=\u5206\u9875\u65AD\u5F00\u65F6\u503C\u91CD\u590D\u663E\u793A +FR-Designer_CellWrite_Preview_Cell_Content=\u9884\u89C8\u5355\u5143\u683C\u5185\u5BB9 +FR-Designer_CellWrite_Print_Content=\u6253\u5370/\u5BFC\u51FA\u5355\u5143\u683C\u5185\u5BB9 +FR-Designer_CellWrite_Print_Background=\u6253\u5370/\u5BFC\u51FA\u5355\u5143\u683C\u80CC\u666F +FR-Designer_CellWrite_Show_As_Image=\u7528\u56FE\u7247\u663E\u793A\u5185\u5BB9 +FR-Designer_CellWrite_Show_As_HTML=\u7528HTML\u663E\u793A\u5185\u5BB9 +FR-Designer_Datasource_Other_Attributes=\u5176\u4ED6\u5C5E\u6027 +FR-Designer_Not_use_a_cell_attribute_table_editing=\u60A8\u4E0D\u53EF\u4EE5\u7528\u5355\u5143\u683C\u5C5E\u6027\u8868\u7F16\u8F91 +FR-Designer_CellElement_Property_Table=\u5355\u5143\u683C\u5C5E\u6027\u8868 +FR-Designer_Add_Condition=\u6DFB\u52A0\u6761\u4EF6 +FR-Designer_Use_Params_Template=\u4F7F\u7528\u5E38\u7528\u53C2\u6570\u7EC4\u5408 +FR-Designer_Label_Name=\u6807\u7B7E\u540D\u79F0 +FR-Designer_T_Insert_Float=\u63D2\u5165\u60AC\u6D6E\u5143\u7D20 +FR-Designer_Add_FloatElement=\u6DFB\u52A0\u5143\u7D20 +FR-Designer_Insert_Image=\u63D2\u5165\u56FE\u7247 +FR-Designer_Insert_Chart=\u63D2\u5165\u56FE\u8868 +FR-Designer_Insert_Text=\u63D2\u5165\u666E\u901A\u6587\u672C +FR-Designer_Insert_Formula=\u63D2\u5165\u516C\u5F0F +FR-Designer_Add_Event=\u6DFB\u52A0\u4E8B\u4EF6 +FR-Designer_Cell_Visible=\u5355\u5143\u683C\u53EF\u89C1 +FR-Designer_Float_Visible=\u60AC\u6D6E\u5143\u7D20\u53EF\u89C1 +FR-Designer_Cell_Value=\u5355\u5143\u683C\u503C +FR-Designer_Widget_Visible=\u63A7\u4EF6\u53EF\u89C1 +FR-Designer_Widget_Enabled=\u63A7\u4EF6\u53EF\u7528 +FR-Designer_Scale_Down=\u7F29\u5C0F +FR-Designer_Scale_Up=\u653E\u5927 +FR-Designer_Scale_Slider=\u7F29\u653E\u6ED1\u5757 +FR-Designer_Scale_Grade=\u7F29\u653E\u7EA7\u522B\uFF0C\u5355\u51FB\u540E\u8C03\u8282\u663E\u793A\u6BD4\u4F8B\u3002 +FR-Designer_Not_Support_Authority_Edit=\u8BE5\u5143\u7D20\u4E0D\u652F\u6301\u6743\u9650\u63A7\u5236 +FR-Designer_Dynamic_Parameter=\u52A8\u6001\u53C2\u6570 +FR-Designer_Remove_Item=\u5220\u9664\u9009\u4E2D +FR-Designer_Widget_Position=\u63A7\u4EF6\u4F4D\u7F6E +FR-Designer_Widget_Field=\u5B57\u6BB5 +FR-Designer_Widget_Formula=\u516C\u5F0F +FR-Designer_Widget_String=\u5B57\u7B26\u4E32 +FR-Designer_Widget_Display_Report_Tool=\u663E\u793A\u62A5\u8868\u5757\u5DE5\u5177\u680F +FR-Designer_Widget_No_Repeat=\u53BB\u9664\u91CD\u590D\u9879 +FR-Designer_Widget_Error_Tip=\u9519\u8BEF\u63D0\u793A +FR-Designer_Widget_Return_Leaf=\u7ED3\u679C\u8FD4\u56DE\u53F6\u5B50\u8282\u70B9 +FR-Designer_Widget_Return_Path=\u7ED3\u679C\u8FD4\u56DE\u5B8C\u6574\u5C42\u6B21\u8DEF\u5F84 +FR-Designer_Widget_Display_Position=\u663E\u793A\u4F4D\u7F6E +FR-Designer_Size_Limit=\u5927\u5C0F\u9650\u5236 +FR-Designer_Widget_Name=\u63A7\u4EF6\u540D\u79F0 +FR-Designer_Coords_And_Size=\u5750\u6807\u00B7\u5C3A\u5BF8 +FR-Designer_Barcode_Size=\u6761\u5F62\u7801\u5927\u5C0F +FS-Designer_DS_Filter_Odd_Tip=\u63D0\u793A\uFF1A\u5E8F\u53F7\u4ECE1\u5F00\u59CB\uFF0C\u9009\u62E9\u4E86\u5947\u6570\u96C6(1,3,5...) +FS-Designer_DS_Filter_Even_Tip=\u63D0\u793A\uFF1A\u5E8F\u53F7\u4ECE1\u5F00\u59CB\uFF0C\u9009\u62E9\u4E86\u5076\u6570\u96C6(2,4,6...) +FS-Designer_DS_Filter_Specify_Tip=\u63D0\u793A\uFF1A\u683C\u5F0F\u4E3A1,2-3,5,8\uFF0C\u5E8F\u53F7\u4ECE1\u5F00\u59CB\uFF0C\u5185\u503C\u53C2\u6570$_count_\u8868\u793A\u603B\u4E2A\u6570 +FR-Designer-AlphaFine_NO_Result=\u65E0\u641C\u7D22\u7ED3\u679C +FR-Designer-Download_Online_Sources=\u56FE\u8868\u9700\u8981\u4E0B\u8F7D\u6700\u65B0\u7684\u8D44\u6E90\u6587\u4EF6\uFF0C\u662F\u5426\u5B89\u88C5\uFF1F +FR-Designer_Select_Color=\u9009\u62E9\u989C\u8272 +FR-Designer-Basic_Dynamic_Parameter_Injection=\u6CE8\u5165 +FR-Designer_Label=\u6807\u7B7E +FR-Designer_Widgetname=\u63A7\u4EF6\u540D +FR-Designer_Insert_Cell_Element=\u63D2\u5165\u5143\u7D20 \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index 74857e53bd..548b39a00e 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -1,6 +1,7 @@ +# generated time: \u661F\u671F\u56DB \u5341\u4E00\u6708 24 12:02:51 CST 2016 FR-Designer-BBSLogin_Account=\u767B\u5165\u5E33\u865F -FR-Designer-BBSLogin_Connection-Failure=\u767B\u5165\u9023\u63A5\u5931\u6557\uFF0C\u8ACB\u6AA2\u67E5\u7576\u524D\u7DB2\u8DEF\u72C0\u614B -FR-Designer-BBSLogin_Connection-Failure-Tip=\u9023\u7DDA\u5931\u6557\u63D0\u793A +FR-Designer-BBSLogin_Connection-Failure=\u767B\u5165\u9023\u63A5\u5931\u6557\uFF0C\u8ACB\u6AA2\u67E5\u7576\u524D\u7DB2\u8DEF\u72C0\u614B +FR-Designer-BBSLogin_Connection-Failure-Tip=\u9023\u7DDA\u5931\u6557\u63D0\u793A FR-Designer-BBSLogin_Forgot-Password=\u5FD8\u8A18\u5BC6\u78BC FR-Designer-BBSLogin_Login=\u767B\u9304 FR-Designer-BBSLogin_Login-Failure-Tip=\u5E33\u865F\u6216\u5BC6\u78BC\u932F\u8AA4\uFF0C\u8ACB\u91CD\u65B0\u767B\u9304 @@ -8,10 +9,10 @@ FR-Designer-BBSLogin_Password=\u5BC6 \u78BC FR-Designer-BBSLogin_Password-Empty-Tip=\u5BC6\u78BC\u4E0D\u80FD\u70BA\u7A7A FR-Designer-BBSLogin_Register-Account=\u8A3B\u518A\u5E33\u865F FR-Designer-BBSLogin_Switch-Account=\u5207\u63DB\u5E33\u865F -FR-Designer-BBSLogin_Privite-Message=\u79C1\u4EBA\u8A0A\u606F +FR-Designer-BBSLogin_Privite-Message=\u79C1\u4EBA\u6D88\u606F FR-Designer-BBSLogin_Times=\u6B21 FR-Designer-BBSLogin_Username-Empty-Tip=\u4F7F\u7528\u8005\u70BA\u7A7A\u63D0\u793A -FR-Designer-Basic_More_Color=\u66F4\u591A\u984F\u8272 +FR-Designer-Basic_More_Color=\u66F4\u591A\u984F\u8272... FR-Designer-Estate_Any=\u4E0D\u9650 FR-Designer-Estate_Default_Font=\u9810\u8A2D\u5B57\u9AD4 FR-Designer-Estate_Default_Null=\u9810\u8A2D\u70BA\u7A7A @@ -105,8 +106,8 @@ FR-Designer_Font-Family=\u5B57\u9AD4\u540D\u7A31 FR-Designer_Font-Size=\u5B57\u9AD4\u5927\u5C0F FR-Designer_Forbid_Drag_into_Adapt_Pane=\u8A72\u5C0D\u8C61\u4E0D\u5141\u8A31\u62D6\u5165\u8868\u55AE\u4E3B\u9AD4 FR-Designer_Forbid_Drag_into_Para_Pane=\u8A72\u5C0D\u8C61\u4E0D\u80FD\u62D6\u5165\u53C3\u6578\u9762\u677F -FR-Designer_Foreground=\u5B57\u5F62\u8272\u5F69 -FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\u66AB\u4E0D\u652F\u63F4\u8868\u55AE\u6B0A\u9650\u7DE8\u8F2F +FR-Designer_Foreground=\u984F\u8272 +FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\u66AB\u4E0D\u652F\u6301\u8868\u55AE\u6B0A\u9650\u7DE8\u8F2F FR-Designer_Form-Report=\u5831\u8868\u683C\u5F0F FR-Designer_Form_EmbeddedTD=\u5167\u5D01\u683C\u5F0F FR-Designer_Form_Module=\u6A21\u7D44\u683C\u5F0F @@ -121,7 +122,7 @@ FR-Designer_Hyperlink-Form_link=\u7576\u524D\u8868\u55AE\u5C0D\u8C61 FR-Designer_IDCard=\u8EAB\u4EFD\u8B49 FR-Designer_Icon=\u5716\u793A FR-Designer_Index=\u7D22\u5F15 -FR-Designer_Input_Rule=\u586B\u5BEB\u898F\u5247 +FR-Designer_Input_Rule=\u8F38\u5165\u898F\u5247 FR-Designer_Language_Default=\u9810\u8A2D\u8A9E\u8A00 FR-Designer_Layout=\u5E03\u5C40\u3001\u898F\u5283 FR-Designer_Layout-HBox=\u6C34\u5E73\u76D2\u5B50\u5E03\u5C40 @@ -136,7 +137,7 @@ FR-Designer_M-Repeat-Freeze=\u91CD\u8907\u8207\u51CD\u7D50 FR-Designer_M-Server=\u4F3A\u670D\u5668 FR-Designer_M-SwitchWorkspace=\u5207\u63DB\u5DE5\u4F5C\u5340\u9593 FR-Designer_M-Template=\u7BC4\u672C -FR-Designer_MDX_Explain=\u8A9E\u6CD5\u683C\u5F0F\u53C3\u8003MDX\u8A9E\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\u8A3B\uFF1ACOLUMNS\u3001ROWS\u53EF\u4EE5\u4F7F\u75280\u30011\u4EE3\u66FF\u67E5\u8EF8\u53EA\u652F\u63F4\u8FD4\u56DE\u5169\u500B\u8EF8\u3002 +FR-Designer_MDX_Explain=\u8A9E\u6CD5\u683C\u5F0F\u53C3\u8003MDX\u8A9E\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\u8A3B\uFF1ACOLUMNS\u3001ROWS\u53EF\u4EE5\u4F7F\u75280\u30011\u4EE3\u66FF\u67E5\u8EF8\u53EA\u652F\u6301\u8FD4\u56DE\u5169\u500B\u8EF8\u3002 FR-Designer_M_Help-About_Software=\u95DC\u65BC\u8EDF\u9AD4 FR-Designer_M_Help-Tutorial=\u64CD\u4F5C\u8AAA\u660E FR-Designer_Max_Value=\u6700\u5927\u503C @@ -151,7 +152,7 @@ FR-Designer_Para-Body=\u53C3\u6578\u672C\u6587 FR-Designer_Parameters=\u53C3\u6578 FR-Designer_Phone=\u96FB\u8A71 FR-Designer_PostCode=\u90F5\u905E\u5340\u865F -FR-Designer_Present=\u6A21\u5F0F +FR-Designer_Present=\u7576\u4E0B FR-Designer_Preview=\u9810\u89BD FR-Designer_Preview-Data-Confusion=\u6DF7\u6DC6\u8CC7\u6599\u9810\u89BD FR-Designer_Product_Demo=\u7522\u54C1\u5C55\u793A @@ -161,9 +162,9 @@ FR-Designer_Refresh_Parameter_In_SQL=\u5728SQL\u4E2D\u91CD\u65B0\u6574\u7406\u76 FR-Designer_Reg_Expressions=\u6B63\u5247\u8868\u9054\u5F0F FR-Designer_Reg_Max_Length=\u6700\u5927\u9577\u5EA6 FR-Designer_Reg_Min_Length=\u6700\u5C0F\u9577\u5EA6 -FR-Designer_ReportColumns-Columns=\u6B04\u5206\u6B04 +FR-Designer_ReportColumns-Columns=\u5831\u8868\u6B04\u4F4D FR-Designer_Return-Date=\u8FD4\u56DE\u65E5\u671F -FR-Designer_RichText=RTF +FR-Designer_RichText= RTF FR-Designer_RichTextEditor=RTF\u7DE8\u8F2F\u5668 FR-Designer_Row=\u5217 FR-Designer_Row_Dimension=\u5217\u7DAD\u5EA6 @@ -180,7 +181,7 @@ FR-Designer_Support_QQ=\u652F\u63F4QQ FR-Designer_Swatch=\u6A23\u54C1 FR-Designer_Tab_title=tab\u6A19\u984C FR-Designer_TableData=\u8CC7\u6599\u96C6 -FR-Designer_Thank_guest=\u611F\u8B1D\u5BA2\u6236 +FR-Designer_Thank_guest=\u611F\u8B1D\u5BA2\u6236 FR-Designer_Thanks-To=\u9CF4\u8B1D FR-Designer_Title=\u6A19\u984C FR-Designer_Total=\u7E3D\u5171 @@ -194,10 +195,10 @@ FR-Designer_VerticalBoxLayout=\u6A6B\u5411\u4F48\u5C40 FR-Designer_Visible=\u53EF\u898B FR-Designer_WLayout-Border-ToolTips=\u908A\u754C\u4F48\u5C40 FR-Designer_WaterMark=\u6C34\u5370 -FR-Designer_Widget=\u63A7\u5236\u9805 +FR-Designer_Widget=\u5C0F\u5DE5\u5177 FR-Designer_Widget-Settings=\u8A2D\u5B9A FR-Designer_Widget-Visible=\u53EF\u898B -FR-Designer_XMLA_Explain=\u5728\u4F7F\u7528\u591A\u7DAD\u8CC7\u6599\u96C6\u53D6\u6578\u524D\uFF0C\u60A8\u9996\u5148\u9700\u8981\u4E00\u500B\u53EF\u6210\u529F\u9023\u63A5\u7684\u591A\u7DAD\u8CC7\u6599\u5EAB\u9023\u63A5\u3002\n\u8A2D\u5B9A\u5B8C\u8CC7\u6599\u9023\u63A5\u5F8C\uFF0C\u67E5\u8A62\u8CC7\u6599\u6642,\u6709\u5169\u7A2E\u4E0D\u540C\u7684\u53D6\u6578\u624B\u6BB5\u3002\n1.\u7C21\u55AE\u901A\u7528\u67E5\u8A62\uFF1A\n\u7C21\u55AE\u901A\u7528\u67E5\u8A62\u9069\u7528\u65BCFineBI\u53CA\u5176\u4ED6\u591A\u7DAD\u8CC7\u6599\u5EAB\u3002\n\u4F7F\u7528\u7C21\u55AE\u901A\u7528\u67E5\u8A62\uFF0CFR\u5C07\u81EA\u52D5\u8B80\u53D6\u9078\u64C7cube\u7684\u5C64\u6B21\u7D50\u69CB\uFF0C\u60A8\u53EF\u4EE5\u76F4\u63A5\u9078\u64C7\u6240\u9700\u7684\u5EA6\u91CF\u503C\u53CA\u7DAD\u5EA6\uFF0C\u4E26\u6DFB\u52A0\u7BE9\u9078\u689D\u4EF6\uFF0CFR\u6703\u6839\u64DA\u60A8\u7684\u9078\u64C7\u81EA\u52D5\u67E5\u8A62\u8CC7\u6599\u3002\n\u7C21\u55AE\u901A\u7528\u67E5\u8A62\u50C5\u652F\u63F4\u7DAD\u5EA6\u53CA\u5EA6\u91CF\u503C\u5169\u500B\u8EF8\u7684\u67E5\u8A62\u3002\n\u5728\u5EA6\u91CF\u503C\u53CA\u7DAD\u5EA6\u8A2D\u5B9A\u4E2D\uFF0C\u76EE\u524D\u60A8\u53EA\u80FD\u9078\u64C7\u6240\u9700\u7DAD\u5EA6\uFF0C\u7121\u6CD5\u624B\u52D5\u4FEE\u6539\u3002\n\u904E\u6FFE\u689D\u4EF6\u63A1\u7528OPEN SQL\u8A9E\u6CD5\uFF0C\u60A8\u53EF\u4EE5\u9375\u5165${abc}\u4F5C\u70BA\u4E00\u500B\u53C3\u6578\uFF0C\u7528\u6CD5\u540C\u8CC7\u6599\u5EAB\u8CC7\u6599\u96C6\u3002\n2.\u81EA\u5B9A\u7FA9MDX\u67E5\u8A62\uFF1A\n\u4F7F\u7528\u81EA\u5B9A\u7FA9MDX\u67E5\u8A62\uFF0C\u60A8\u53EF\u4EE5\u81EA\u5B9A\u7FA9\u7FA9MDX\u8A9E\u53E5\u67E5\u8A62\u6240\u9700\u7D50\u679C\u3002\n\u6CE8\u610F\uFF0C\u81EA\u5B9A\u7FA9MDX\u67E5\u8A62\u4E5F\u53EA\u652F\u63F4\u5169\u500B\u8EF8\u7684\u67E5\u8A62\u3002\n\u60A8\u53EF\u9375\u5165${abc}\u4F5C\u70BA\u4E00\u500B\u53C3\u6578\uFF0C\u7528\u6CD5\u540C\u8CC7\u6599\u5EAB\u8CC7\u6599\u96C6\u3002\nFineBI\u7684cube\u4E0D\u652F\u63F4MDX\u67E5\u8A62\u3002 +FR-Designer_XMLA_Explain=\u5728\u4F7F\u7528\u591A\u7DAD\u8CC7\u6599\u96C6\u53D6\u6578\u524D\uFF0C\u60A8\u9996\u5148\u9700\u8981\u4E00\u500B\u53EF\u6210\u529F\u9023\u63A5\u7684\u591A\u7DAD\u8CC7\u6599\u5EAB\u9023\u63A5\u3002\n\u8A2D\u5B9A\u5B8C\u8CC7\u6599\u9023\u63A5\u5F8C\uFF0C\u67E5\u8A62\u8CC7\u6599\u6642,\u6709\u5169\u7A2E\u4E0D\u540C\u7684\u53D6\u6578\u624B\u6BB5\u3002\n1.\u7C21\u55AE\u901A\u7528\u67E5\u8A62\uFF1A\n\u7C21\u55AE\u901A\u7528\u67E5\u8A62\u9069\u7528\u65BCFineBI\u53CA\u5176\u4ED6\u591A\u7DAD\u8CC7\u6599\u5EAB\u3002\n\u4F7F\u7528\u7C21\u55AE\u901A\u7528\u67E5\u8A62\uFF0CFR\u5C07\u81EA\u52D5\u8B80\u53D6\u9078\u64C7cube\u7684\u5C64\u6B21\u7D50\u69CB\uFF0C\u60A8\u53EF\u4EE5\u76F4\u63A5\u9078\u64C7\u6240\u9700\u7684\u5EA6\u91CF\u503C\u53CA\u7DAD\u5EA6\uFF0C\u4E26\u6DFB\u52A0\u7BE9\u9078\u689D\u4EF6\uFF0CFR\u6703\u6839\u64DA\u60A8\u7684\u9078\u64C7\u81EA\u52D5\u67E5\u8A62\u8CC7\u6599\u3002\n\u7C21\u55AE\u901A\u7528\u67E5\u8A62\u50C5\u652F\u6301\u7DAD\u5EA6\u53CA\u5EA6\u91CF\u503C\u5169\u500B\u8EF8\u7684\u67E5\u8A62\u3002\n\u5728\u5EA6\u91CF\u503C\u53CA\u7DAD\u5EA6\u8A2D\u5B9A\u4E2D\uFF0C\u76EE\u524D\u60A8\u53EA\u80FD\u9078\u64C7\u6240\u9700\u7DAD\u5EA6\uFF0C\u7121\u6CD5\u624B\u52D5\u4FEE\u6539\u3002\n\u904E\u6FFE\u689D\u4EF6\u63A1\u7528OPEN SQL\u8A9E\u6CD5\uFF0C\u60A8\u53EF\u4EE5\u9375\u5165${abc}\u4F5C\u70BA\u4E00\u500B\u53C3\u6578\uFF0C\u7528\u6CD5\u540C\u8CC7\u6599\u5EAB\u8CC7\u6599\u96C6\u3002\n2.\u81EA\u5B9A\u7FA9MDX\u67E5\u8A62\uFF1A\n\u4F7F\u7528\u81EA\u5B9A\u7FA9MDX\u67E5\u8A62\uFF0C\u60A8\u53EF\u4EE5\u81EA\u5B9A\u7FA9\u7FA9MDX\u8A9E\u53E5\u67E5\u8A62\u6240\u9700\u7D50\u679C\u3002\n\u6CE8\u610F\uFF0C\u81EA\u5B9A\u7FA9MDX\u67E5\u8A62\u4E5F\u53EA\u652F\u6301\u5169\u500B\u8EF8\u7684\u67E5\u8A62\u3002\n\u60A8\u53EF\u9375\u5165${abc}\u4F5C\u70BA\u4E00\u500B\u53C3\u6578\uFF0C\u7528\u6CD5\u540C\u8CC7\u6599\u5EAB\u8CC7\u6599\u96C6\u3002\nFineBI\u7684cube\u4E0D\u652F\u6301MDX\u67E5\u8A62\u3002 FR-Designer_bold=\u7C97\u9AD4 FR-Designer_font=\u5B57\u9AD4 FR-Designer_italic=\u659C\u9AD4 @@ -348,7 +349,7 @@ FR-Designer_Add_JS_warning=\u8ACB\u8F38\u51FA\u6B63\u78BA\u7684url\u5730\u5740\u FR-Designer-Encoding_Type=\u7DE8\u78BC\u985E\u578B FR-Designer-FirstRow_IS_ColumnName=\u7B2C\u4E00\u5217\u5305\u542B\u6B04\u6A19\u984C FR-Designer_Dismenber=\u5206\u9694\u7B26 -FR-Designer_TableDismember=\u88FD\u8868\u7B26 +FR-Designer_TableDismember=\u88FD\u9336\u7B26 FR-Designer_Space=\u7A7A\u683C FR-Designer_CommaDismenber=\u9017\u865F FR-Designer_Other=\u5176\u4ED6 @@ -356,7 +357,7 @@ FR-Designer-Series_Dismenber_As_Single=\u9023\u7E8C\u5206\u9694\u7B26\u8996\u70B FR-Designer_KeyPoint=\u95DC\u9375\u7BC0\u9EDE FR-Designer_loadedTreeModel=\u52A0\u8F09\u5931\u6557,\u8ACB\u6AA2\u67E5\u5F8C\u91CD\u8A66 FR-Designer-Failed_to_load_the_plugin=\u7121\u6CD5\u52A0\u8F09\u63D2\u4EF6\uFF0C\u8ACB\u66F4\u65B0\u63D2\u4EF6\uFF1A -FR-Designer-Plugin_Please_Update_Jar=\u8ACB\u66F4\u65B0Jar\u5305\u81F3\: +FR-Designer-Plugin_Please_Update_Jar=\u8ACB\u66F4\u65B0Jar\u5305, \u63D2\u4EF6\u9700\u6C42\u6700\u4F4E\u7248\u672C FR-Designer-Invalid_Page_Number=\u7121\u6548\u9801\u78BC FR-Designer_Get-CubeGetting=\u7372\u53D6cube FR-Designer_XMLA_Database=\u8CC7\u6599\u5EAB @@ -392,7 +393,7 @@ FR-Designer_Product_improve=\u7522\u54C1\u6539\u826F FR-Designer_Join_Product_improve=\u52A0\u5165\u7522\u54C1\u6539\u826F\u8A08\u5283 FR-Designer_Preference-Function=\u529F\u80FD\u8A2D\u5B9A FR-Designer_max_undo_limit=\u6700\u5927\u5FA9\u539F\u6B21\u6578 -FR-Designer_Surport_String_To_Formula=\u652F\u63F4\u5B57\u5143\u4E32\u7DE8\u8F2F\u70BA\u516C\u5F0F +FR-Designer_Surport_String_To_Formula=\u652F\u6301\u5B57\u5143\u4E32\u7DE8\u8F2F\u70BA\u516C\u5F0F FR-Designer_Always=\u59CB\u7D42 FR-Designer_Export_Setting=\u532F\u51FA\u914D\u7F6E FR-Designer_Select_Export_Log_Directory=\u9078\u64C7\u532F\u51FA\u76EE\u9304 @@ -423,6 +424,8 @@ FR-Designer-App_ReLayout=\u624B\u6A5F\u91CD\u4F48\u5C40 FR-Designer_Mobile-Attr=\u79FB\u52D5\u7AEF\u5C6C\u6027 FR-Designer_Mobile-Horizontal=\u6A6B\u5C4F FR-Designer_Mobile-Vertical=\u8C4E\u5C4F +FR-Designer_Mobile-Height-Limit=\u624B\u6A5F\u986F\u793A\u9650\u5236\u9AD8\u5EA6 +FR-Designer_Mobile-Height-Percent=\u6700\u5927\u9AD8\u5EA6 FR-Designer_COMMUNITY_QUESTIONS=\u554F\u984C\u6C42\u52A9 FR-Designer_COMMUNITY_SIGN=\u5E06\u8EDF\u8A8D\u8B49 FR-Designer_COMMUNITY_BUG=BUG\u53CD\u994B @@ -559,20 +562,20 @@ FR-Designer_Parameter-Formula=\u516C\u5F0F FR-Designer_Plugin_Should_Update_Please_Contact_Developer=\u633F\u4EF6\u7248\u672C\u904E\u4F4E\uFF0C\u5B58\u5728API\u4E0D\u76F8\u5BB9\uFF0C\u8ACB\u806F\u7CFB\u958B\u767C\u8005\u965E\u7D1A\u633F\u4EF6 FR-Designer_WidgetOrder=\u63A7\u4EF6\u9806\u5E8F FR-Designer_Mobile_Form_Analysis_Annotation=\u6CE8\u91CB\uFF1A\u53EF\u4EE5\u901A\u904E\u8A72\u5C6C\u6027\u63A7\u5236\u8868\u55AE\u5728APP\u4E2D\u7684\u89E3\u6790\u65B9\u5F0F\u3002 -FR-Designer_Mobile_Report_Analysis_Annotation=\u6CE8\u91CB\uFF1A\u53EF\u4EE5\u901A\u904E\u8A72\u5C6C\u6027\u63A7\u5236\u5831\u8868\u5728APP\u4E2D\u7684\u89E3\u6790\u65B9\u5F0F\uFF0C\u53EA\u652F\u63F4\u5206\u9801\u9810\u89BD\uFF0C\u586B\u5831\u9810\u89BD\u6642\u5C6C\u6027\u7121\u6548\u3002 -FR-Designer_Background_Null=\u6C92\u6709\u80CC\u666F -FR-Designer_Background_Color=\u984F\u8272 -FR-Designer_Background_Texture=\u7D0B\u7406 -FR-Designer_Background_Pattern=\u5716\u6848 -FR-Designer_Background_Gradient_Color=\u6F38\u8B8A\u8272 -FR-Designer_Background_Image=\u5716\u7247 -FR-Designer_Background_Clear=\u6E05\u9664 -FR-Designer_Background_Image_Select=\u9078\u64C7\u5716\u7247 +FR-Designer_Mobile_Report_Analysis_Annotation=\u6CE8\u91CB\uFF1A\u53EF\u4EE5\u901A\u904E\u8A72\u5C6C\u6027\u63A7\u5236\u5831\u8868\u5728APP\u4E2D\u7684\u89E3\u6790\u65B9\u5F0F\uFF0C\u53EA\u652F\u6301\u5206\u9801\u9810\u89BD\uFF0C\u586B\u5831\u9810\u89BD\u6642\u5C6C\u6027\u7121\u6548\u3002 +FR-Designer_Background_Null= +FR-Designer_Background_Color= +FR-Designer_Background_Texture= +FR-Designer_Background_Pattern= +FR-Designer_Background_Gradient_Color= +FR-Designer_Background_Image= +FR-Designer_Background_Clear= +FR-Designer_Background_Image_Select= FR-Designer_Too_Large_To_Paste=\u7D44\u4EF6\u5927\u5C0F\u8D85\u51FA\u908A\u754C\uFF0C\u7121\u6CD5\u7C98\u8CBC\uFF01 FR-Designer_Too_Small_To_Paste=\u6B64\u8655\u7121\u6CD5\u7C98\u8CBC\uFF0C\u5C0F\u65BC\u7D44\u4EF6\u6700\u5C0F\u9AD8\u5EA6\uFF01 -FR-Designer_Initial_Background_Tips=\u6309\u9215\u7684\u521D\u59CB\u80CC\u666F -FR-Designer_Mouse_Move_Tips=\u6ED1\u9F20\u79FB\u52D5\u5230\u6309\u9215\u4E0A\u7684\u80CC\u666F\uFF0C\u82E5\u7121\u5247\u4E0D\u6539\u8B8A\u80CC\u666F -FR-Designer_Mouse_Click_Tips=\u6ED1\u9F20\u9EDE\u64CA\u6309\u9215\u6642\u80CC\u666F\uFF0C\u82E5\u7121\u5247\u4E0D\u6539\u8B8A\u80CC\u666F +FR-Designer_Initial_Background_Tips= +FR-Designer_Mouse_Move_Tips= +FR-Designer_Mouse_Click_Tips= FR-Designer_AxisReversed=\u8EF8\u9006\u5E8F FR-Designer_Logarithmic=\u5C0D\u6578\u523B\u5EA6 FR-Designer_Chart_Log_Base=\u5E95\u6578 @@ -581,20 +584,20 @@ FR-Designer_Style=\u6A23\u5F0F FR-Designer_Color=\u984F\u8272 FR-Designer_Border=\u6846\u7DDA FR-Designer_Background-Pattern=\u5716\u6848 -FR-Designer_SimpleDetail_Report=\u7C21\u55AE\u660E\u7D30\u8868 -FR-Designer_Reset=\u53D6\u6D88\u522A\u9664 -FR-Designer_AllCategories=\u6240\u6709\u5206\u985E -FR-Designer-Selected_Widget=\u7576\u524D\u63A7\u5236\u9805 -FR-Designer_SimpleCross_Report=\u7C21\u55AE\u4EA4\u53C9\u8868 -FR-Designer_LocalWidget=\u672C\u5730\u7D44\u4EF6\u5EAB +FR-Designer_SimpleDetail_Report= +FR-Designer_Reset= +FR-Designer_AllCategories= +FR-Designer-Selected_Widget= +FR-Designer_SimpleCross_Report= +FR-Designer_LocalWidget= FR-Designer_Edit_Button_ToolBar=\u7DE8\u8F2F\u6309\u9215\u6240\u5728\u5DE5\u5177\u6B04 FR-Designer_Remove_Button_ToolBar=\u79FB\u9664\u6309\u9215\u6240\u5728\u5DE5\u5177\u6B04 -FR-Designer_Install_Template=\u5B89\u88DD\u7D44\u4EF6 -FR-Designer_Allow-Blank=\u5141\u8A31\u70BA\u7A7A -FR-Designer_Delete_Template=\u522A\u9664\u7D44\u4EF6 -FR-Designer_Download_Template=\u4E0B\u8F09\u7D44\u4EF6 -FR-Designer_DoubleLayer_Report=\u96D9\u5C64\u8868\u982D -FR-Designer_Validate=\u6821\u9A57 +FR-Designer_Install_Template= +FR-Designer_Allow-Blank= +FR-Designer_Delete_Template= +FR-Designer_Download_Template= +FR-Designer_DoubleLayer_Report= +FR-Designer_Validate= CellWrite-InsertRow_NULL=\u7A7A\u503C DashBoard-ChartFloat=\u5716\u8868 contact_info=\u806F\u7E6B\u8A0A\u606F(\u9078\u586B) @@ -610,12 +613,12 @@ FR-Designer_Number=\u6578\u5B57 FR-Designer-Widget-Style_Common=\u666E\u901A M-Save_As=\u53E6\u5B58\u70BA Following_parameters_are_not_generated=\u4EE5\u4E0B\u53C3\u6578\u672A\u751F\u6210 -FR-Designer-Basic_Activation_Key_Copy_OK=\u5DF2\u8907\u88FD\u5230\u526A\u8CBC\u677F +FR-Designer-Basic_Activation_Key_Copy_OK=Key has been copy to clipboard Utils-Current_Sheet=\u7576\u524D\u7684Sheet ConditionB-is_less_than=\u5C0F\u65BC BorderLayout-West=\u897F AnalysisLine=\u5206\u6790\u7DDA\u578B -Layer_Report_Warnning_info=\u5217\u5F0F\u5F15\u64CE\u9069\u7528\u65BC\u5927\u8CC7\u6599\u91CF\u60C5\u5F62\u4E0B\u3002
\u4F7F\u7528\u6B64\u5F15\u64CE\u5F88\u591A\u5831\u8868\u7279\u6027\u5C07\u4E0D\u518D\u652F\u63F4\uFF0C
\u8A73\u7D30\u5167\u5BB9\u8ACB\u898B\u76F8\u95DC\u6587\u6A94\u3002 +Layer_Report_Warnning_info=\u5217\u5F0F\u5F15\u64CE\u9069\u7528\u65BC\u5927\u8CC7\u6599\u91CF\u60C5\u5F62\u4E0B\u3002
\u4F7F\u7528\u6B64\u5F15\u64CE\u5F88\u591A\u5831\u8868\u7279\u6027\u5C07\u4E0D\u518D\u652F\u6301\uFF0C
\u8A73\u7D30\u5167\u5BB9\u8ACB\u898B\u76F8\u95DC\u6587\u6A94\u3002 Tree-Width=\u5BEC\u5EA6 alert_word=\u9078\u64C7\u4E0D\u56FA\u5B9A\u5217\u9AD8\u532F\u51FA\u6642, \u7DE8\u8F2F\u532F\u51FA\u7684word, \u5132\u5B58\u683C\u5217\u9AD8\u6703\u96A8\u8457\u5167\u5BB9\u81EA\u52D5\u62C9\u4F38, \u6B64\u60C5\u6CC1\u4E0B\u532F\u51FA\u7D50\u679C\u8207\u9810\u89BD\u7D50\u679C\u53EF\u80FD\u6703\u4E0D\u518D\u4E00\u81F4. PageSetup-Paper_Size=\u7D19\u5F35\u5927\u5C0F @@ -623,13 +626,13 @@ M-Page_Setup=\u9801\u9762\u8A2D\u5B9A DashBoard-FormBook=\u8868\u55AE X-Coordinate=\u6A6B\u5EA7\u6A19 Style-Line_Spacing=\u5217\u9593\u8DDD -FR-Designer_Plugin_Should_Update_Title=\u63D2\u4EF6\u5347\u7D1A\u63D0\u9192 +FR-Designer_Plugin_Should_Update_Title=Warning Server-Define_Data_Connection=\u5B9A\u7FA9\u8CC7\u6599\u9023\u63A5 BarInside=\u67F1\u5B50\u5167\u5074 Border-Color=\u6846\u7DDA\u984F\u8272 NotAllow=\u4E0D\u5408\u6CD5 Utils-File_type=\u6A94\u6848\u985E\u578B -FR-Designer-Plugin_Install_From_Local=\u5F9E\u672C\u5730\u6587\u4EF6\u5B89\u88DD +FR-Designer-Plugin_Install_From_Local=Install plugin from local file Summary_Method=\u532F\u7E3D\u65B9\u5F0F Select_Specified_Grouping=\u9078\u64C7\u81EA\u5B9A\u7FA9\u5206\u7D44 HF-Number_of_Page=\u7E3D\u9801\u6578 @@ -637,13 +640,13 @@ FR-Designer-Tree_Height=\u9AD8\u5EA6 Owner=\u4E3B Home=\u4E3B\u9801 FR-Server_Embedded_Server_Stop=\u5167\u7F6E\u7684\u4F3A\u670D\u5668-\u505C\u6B62 -FR-Designer-Plugin_Detecting_Update=\u6B63\u5728\u6AA2\u6E2C\u66F4\u65B0 +FR-Designer-Plugin_Detecting_Update=Detecting update HF-Whether_to_define_the_selected_type=\u662F\u5426\u5B9A\u7FA9\u9078\u4E2D\u7684\u985E\u578B StyleAlignment-Right=\u9760\u53F3\u5C0D\u9F4A FR-Designer_Alignment-Style=\u5C0D\u9F4A\u65B9\u5F0F PageSetup-Title_Start_Column=\u91CD\u8907\u6A19\u984C\u6B04 Tree-Mutiple_Selection_Or_Not=\u591A\u9078 -FR-Designer-Plugin_Search=\u641C\u7D22 +FR-Designer-Plugin_Search=Search Choose_Role=\u6B0A\u9650\u63A7\u5236 Append_Delete_Row_Message=\u6CE8\u610F\uFF01\u6307\u5B9A\u7684\u5132\u5B58\u683C\u9700\u8981\u8A2D\u5B9A\u64F4\u5C55\u5C6C\u6027 Form-ComboBox=\u4E0B\u62C9\u6846 @@ -656,13 +659,13 @@ FRFont-Subscript=\u4E0B\u6A19 Background_Settings=\u80CC\u666F\u8A2D\u5B9A FormulaD-Invalid_Formula=\u975E\u6CD5\u7684\u516C\u5F0F FR-Base_Margin=\u908A\u8DDD -FR-Designer-Plugin_Shop_Installed=\u63D2\u4EF6\u5546\u5E97\u5B89\u88DD\u5B8C\u7562,\u662F\u5426\u7ACB\u523B\u555F\u52D5? +FR-Designer-Plugin_Shop_Installed=\u63D2\u4EF6\u5546\u5E97\u5B89\u88DD\u5B8C\u7562,\u8ACB\u91CD\u65B0\u6253\u958B\u63D2\u4EF6\u5546\u5E97\u3002 M_Edit-Send_to_Back=\u7F6E\u65BC\u5E95\u5C64(K) Email-Can_Preview_Report_Content=\u6B63\u6587\u9810\u89BD\u5831\u8868\u5167\u5BB9 FR-Designer-FRFont_Italic=\u659C\u9AD4 CellWrite-Print_Background=\u5217\u5370/\u532F\u51FA\u5132\u5B58\u683C\u80CC\u666F Wizard=\u56AE\u5C0E -Preference-Is_Drag_Permited=\u652F\u63F4\u62D6\u62FD +Preference-Is_Drag_Permited=\u652F\u6301\u62D6\u62FD FR-Designer_Release_Lock=\u89E3\u9396 Form-Delimiter=\u5206\u9694\u7B26 wrong=\u51FA\u932F\u4E86 @@ -675,7 +678,7 @@ Need_Min_Value=\u9700\u8981\u6700\u5C0F\u503C Allow_Blank=\u5141\u8A31\u70BA\u7A7A\u767D CellWrite-InsertRow_DEFAULT=\u9810\u8A2D\u503C Widget-Load_By_Complete=\u5B8C\u5168\u8F09\u5165 -FR-Designer-Basic_Only_Submit_Current_Sheet=\u53EA\u63D0\u4EA4\u7576\u524Dsheet +FR-Designer-Basic_Only_Submit_Current_Sheet= Sort-Sort_Order=\u6392\u5217\u9806\u5E8F File-File_Size_Limit=\u6A94\u6848\u5927\u5C0F\u9650\u5236 PrintP-Print=\u5217\u5370(T) @@ -684,12 +687,12 @@ Preference-Setting_Colors=\u984F\u8272\u914D\u7F6E Judge=\u5224\u65B7 Image-Adjust=\u9069\u61C9 Collect-User_Information_DES=\u7528\u6236\u8A0A\u606F\u78BC\u53EA\u662F\u7528\u4F86\u6536\u96C6\u4F7F\u7528\u8005\u8A0A\u606F\u7684\uFF0C\u53EA\u8981\u9EDE\u64CA\u4E0A\u9762\u7684"\u7372\u53D6\u7528\u6236\u8A0A\u606F\u78BC"\u6309\u9215\uFF0C\u5C31\u6703\u5F48\u51FA\u4E00\u500B\u65B0\u7684\u700F\u89BD\u5668\u7A97\u9AD4\uFF0C\u767B\u9304\u5230\u7522\u54C1\u5B98\u65B9\u7DB2\u7AD9\u7372\u5F97\u9019\u500B\u7528\u6236\u8A0A\u606F\u78BC\uFF0C\u6574\u500B\u7A0B\u5E8F\u53EA\u9700\u89813\u5206\u9418\uFF0C\u53EA\u9700\u8981\u64CD\u4F5C\u4E00\u6B21\uFF0C\u800C\u4E14\u5B8C\u5168\u514D\u8CBB\u3002 -FR-Designer_Plugin_Normal_Update_From_Local=\u5F9E\u672C\u5730\u6A94\u6848\u66F4\u65B0 +FR-Designer_Plugin_Normal_Update_From_Local=Update from local file BackgroundTexture-Canvas=\u756B\u5E03 BarOutSide=\u67F1\u5B50\u5916\u5074 Preview_ToolTips=\u9810\u89BD\u63D0\u793A FRFont-Family=\u540D\u5B57 -FR-Lic_does_not_Support_Remote=\u60A8\u7576\u524D\u4F7F\u7528\u7684lic\u4E0D\u652F\u63F4\u9060\u7A0B\u8A2D\u8A08\u529F\u80FD\uFF0C\u8ACB\u5347\u7D1A\u60A8\u7684lic +FR-Lic_does_not_Support_Remote=\u60A8\u7576\u524D\u4F7F\u7528\u7684lic\u4E0D\u652F\u6301\u9060\u7A0B\u8A2D\u8A08\u529F\u80FD\uFF0C\u8ACB\u5347\u7D1A\u60A8\u7684lic InterfaceStyle=\u98A8\u683C RWA-Key=\u4E3B\u9375 WF-Name=\u540D\u7A31 @@ -714,7 +717,7 @@ FR-Designer_Indent-Pixel=\u50CF\u7D20 FR-Designer_Unit_MM=\u516C\u5398 IDLE=\u7A7A\u9592 FRFont-Underline=\u4E0B\u5283\u7DAB -FR-Designer-Plugin_Read_Plugin_List_Error=\u53BB\u8B80\u63D2\u4EF6\u5217\u8868\u6642\u767C\u751F\u932F\u8AA4 +FR-Designer-Plugin_Read_Plugin_List_Error=Error to read plugin list Type_Set=\u985E\u578B\u8A2D\u5B9A M_Format_A-Cell_Attributes=\u5176\u4ED6\u5C6C\u6027 CellWrite-Show_As_Image=\u7528\u5716\u7247\u986F\u793A\u5167\u5BB9 @@ -739,7 +742,7 @@ Hgap=\u6C34\u5E73\u9593\u9699 FR-Designer_Enter-New-FileName=\u8ACB\u8F38\u5165\u65B0\u7684\u6A94\u6848\u540D Verify_Fail=\u6821\u9A57\u5931\u6557 CellWrite-InsertRow_Policy=\u63D2\u5165\u5217\u7B56\u7565 -FR-Designer-Plugin_Illegal_Plugin_Zip=\u4E0D\u662F\u5408\u6CD5\u7684\u63D2\u4EF6\u5305 +FR-Designer-Plugin_Illegal_Plugin_Zip=Illegal plugin zip RCodeVersion=\u7248\u672C Convert=\u8F49\u63DB Please_Drag=\u8ACB\u62D6\u5165\u5217\u6B04\u6B04\u4F4D\u3001\u532F\u7E3D\u6B04\u4F4D @@ -794,7 +797,7 @@ read_time_out=\u52A0\u8F09\u8D85\u6642 JavaScript-Commit_to_Database=\u63D0\u4EA4\u5165\u5EAB DS-Relation_TableData=\u95DC\u806F\u8CC7\u6599\u96C6 CellWrite-Page_Before_Row=\u5217\u524D\u5206\u9801 -FR-Designer-Plugin_Load_Plugins_From_Server=\u6B63\u5728\u5F9E\u63D2\u4EF6\u5546\u5E97\u7372\u53D6\u6578\u64DA +FR-Designer-Plugin_Load_Plugins_From_Server=Loading plugins from store D-Dispaly_Divide_Result_Set_into_Groups=\u5C07\u7D50\u679C\u96C6\u9032\u884C\u5206\u7D44 Closed=\u5DF2\u95DC\u9589 RWA-Help=\u8A2D\u5B9A\u672A\u4FEE\u6539\u4E0D\u66F4\u65B0\u5F8C\uFF0C\u586B\u5831\u9810\u89BD\u5831\u8868\uFF0C\u8A18\u9304\u6240\u5728\u5132\u5B58\u683C\u6C92\u6709\u88AB\u7DE8\u8F2F\u4FEE\u6539\uFF0C\u5247\u6B64\u8A18\u9304\u4E0D\u6703\u9032\u884C\u66F4\u65B0\uFF1B\n\u5728\u5927\u8CC7\u6599\u91CF\u8A18\u9304\u67E5\u8A62\u4E26\u56DE\u586B\u60C5\u6CC1\u4E0B\uFF0C\u555F\u7528\u8A72\u8A2D\u5B9A\uFF0C\u53EF\u4EE5\u63D0\u9AD8\u586B\u5831\u63D0\u4EA4\u6027\u80FD\u3002 @@ -809,7 +812,7 @@ No-Privilege=\u6C92\u6709\u6B0A\u9650 ReportColumns-Repeat_Column=\u91CD\u8907\u6B04\u5E8F\u6B04 SecondGraduationUnit=\u6B21\u8981\u523B\u5EA6\u55AE\u4F4D Form-Widget_Property_Value=\u5C6C\u6027\u503C -GIVE-NAME=\u547D\u540D +GIVE-NAME=Give Name FR-Designer_Rename=\u91CD\u547D\u540D Utils-Merge_Cell=\u5408\u5E76\u5132\u5B58\u683C Style-Spacing_After=\u6BB5\u5F8C @@ -832,7 +835,7 @@ Not_use_a_cell_attribute_table_editing=\u60A8\u4E0D\u53EF\u4EE5\u7528\u5132\u5B5 Root=\u6839\u7BC0\u9EDE cycle=\u5468\u671F open-new-form-tip=\u7576\u524D\u6A21\u677F\u70BA711\u4EE5\u4E0B\u7248\u672C\u88FD\u4F5C, \u7121\u6CD5\u517C\u5BB9, \u4E0D\u80FD\u6253\u958B. \u5047\u5982\u60F3\u6253\u958B\u4FEE\u6539\u6B64\u8868\u55AE, \u8ACB\u4F7F\u7528\u5C0D\u61C9\u7248\u672C\u8A2D\u8A08\u5668\u6253\u958B. -Support-Current_Auto_Complete_Shortcut=\u7576\u524D\u5FEB\u6377\u9375 +Support-Current_Auto_Complete_Shortcut=Current Shortcut GROUPING_MODE=\u666E\u901A\u5206\u7D44 DBCP_MAX_IDLE=\u6700\u5927\u7A7A\u9591\u9023\u63A5\u6578 BackgroundTexture-BlueTissuePaper=\u85CD\u8272\u7802\u7D19 @@ -844,7 +847,6 @@ PageSetup-Placement_Center_on_Page=\u7F6E\u4E2D\u65B9\u5F0F sure_to_delete=\u78BA\u8A8D\u522A\u9664 Already_exists_not_add_repeat=\u5DF2\u7D93\u5B58\u5728\uFF0C\u8ACB\u4E0D\u8981\u91CD\u8907\u65B0\u589E Axis_Title=\u8EF8\u6A19\u984C -FR-Designer-Plugin_Install_Failed=\u63D2\u4EF6\u5B89\u88DD\u5931\u6557 FR-Designer-Widget-Style_Frame=\u6846\u67B6 MainGraduationUnit=\u4E3B\u8981\u523B\u5EA6\u55AE\u4F4D Second_Axis=\u6B21\u5750\u6A19\u8EF8 @@ -864,7 +866,7 @@ M_Edit-FormatBrush=\u8907\u88FD\u683C\u5F0F(B) Indent-Pixel=\u50CF\u7D20 FR-Designer-Widget-Style_Border_Line=\u6846\u7DDA\u7C97\u7D30 Widget-Default_Widget_Config=\u57FA\u672C\u63A7\u5236\u9805 -Version-does-not-support=\u60A8\u7576\u524D\u4F7F\u7528\u7684lic\u4E0D\u652F\u63F4\u9060\u7A0B\u8A2D\u8A08\u529F\u80FD\uFF0C\u8ACB\u5347\u7D1A\u60A8\u7684lic +Version-does-not-support=\u60A8\u7576\u524D\u4F7F\u7528\u7684lic\u4E0D\u652F\u6301\u9060\u7A0B\u8A2D\u8A08\u529F\u80FD\uFF0C\u8ACB\u5347\u7D1A\u60A8\u7684lic StyleAlignment-Right_To_Left=\u5F9E\u53F3\u5411\u5DE6 Style-Spacing_Before=\u6BB5\u524D Has_Existed=\u5DF2\u7D93\u5B58\u5728 @@ -880,7 +882,7 @@ Parameter-Boolean=\u5E03\u723E\u578B FRFont-Strikethrough=\u522A\u9664\u7DDA Server-version-tip=\u60A8\u7576\u524D\u9023\u63A5\u7684\u4F3A\u670D\u5668\u7248\u672C\u4F4E\u65BC\u60A8\u4F7F\u7528\u7684\u8A2D\u8A08\u5668\u7248\u672C\u865F\uFF0C\u7E7C\u7E8C\u9023\u63A5\uFF0C\u60A8\u7DE8\u8F2F\u7684\u4E00\u4E9B\u5C6C\u6027\u53EF\u80FD\u7121\u6CD5\u6709\u6548\u5132\u5B58\u3002\u5047\u5982\u9700\u8981\u9023\u63A5\u8ACB\u5C07\u60A8\u7684\u8A2D\u8A08\u5668\u7248\u672C\u8207\u4F3A\u670D\u5668\u7248\u672C\u4FDD\u6301\u4E00\u81F4 Form-All_Files=\u5168\u90E8\u6A94\u6848 -DBCP_NUM_TEST_PER_EVCTION_RUN=\u7A7A\u9591\u9023\u63A5\u56DE\u6536\u6AA2\u67E5\u6578 +DBCP_NUM_TEST_PER_EVCTION_RUN=\u7A7A\u9591\u93C8\u63A5\u56DE\u6536\u6AA2\u67E5\u6578 FR-Designer-FRFont_Family=\u540D\u5B57 Device=\u8A2D\u5099 M_Insert-Cell=\u5132\u5B58\u683C\u5143\u7D20 @@ -888,7 +890,7 @@ Present-Formula_Present=\u516C\u5F0F\u6A21\u5F0F FRFont-Superscript=\u4E0A\u6A19 CellWrite-Page_Before_Column=\u6B04\u524D\u5206\u9801 Golden=\u91D1\u8272 -Preference-Support_Cell_Editor_Definition=\u652F\u63F4\u5132\u5B58\u683C\u7DE8\u8F2F\u5668 +Preference-Support_Cell_Editor_Definition=\u652F\u6301\u5132\u5B58\u683C\u7DE8\u8F2F\u5668 M-Page_Preview=\u5206\u9801\u9810\u89BD HJS-CC_to=\u6284\u9001 Tree-Select_Leaf_Only=\u53EA\u8FD4\u56DE\u8449\u5B50\u7BC0\u9EDE @@ -961,10 +963,10 @@ Widget-Load_Type=\u8F09\u5165 template_unsaved=\u7BC4\u672C\u7121\u6CD5\u5132\u5B58 check_communication=\u8ACB\u6AA2\u67E5\u7DB2\u8DEF\u901A\u8A0A\u662F\u5426\u6B63\u5E38\u53CA\u4F3A\u670D\u5668\u662F\u5426\u6B63\u5E38\u904B\u884C List-Need_Head=\u9700\u8981\u6B04\u8868\u982D -FR-Designer-Plugin_Has_Been_Installed=\u63D2\u4EF6\u5DF2\u5B89\u88DD\uFF0C\u82E5\u60F3\u66F4\u65B0\u63D2\u4EF6\uFF0C\u8ACB\u5207\u63DB\u81F3\u63D2\u4EF6\u66F4\u65B0 +FR-Designer-Plugin_Has_Been_Installed=Plugin has been installed FR-Widget_Tree_And_Table=\u63A7\u5236\u9805\u6A39\u548C\u63A7\u5236\u9805\u8868 FR-Base_Help=\u8AAA\u660E -FR-Designer-Plugin_Update_Successful=\u63D2\u4EF6\u5347\u7D1A\u6210\u529F\uFF0C\u91CD\u555F\u4F3A\u670D\u5668\u4EE5\u751F\u6548 +FR-Designer-Plugin_Update_Successful=Update successfully August=\u516B\u6708 LOG-Is_Being_Openned=\u6B63\u5728\u6253\u958B BackgroundTexture-Oak=\u6A61\u6728 @@ -972,7 +974,7 @@ Multi_nam_formula=\ \u8CC7\u6599\u96C6\u540D\: \u8CC7\u65 TurnOn=\u958B\u5553 HJS-Send_Successfully=\u767C\u9001\u6210\u529F Mon=\u661F\u671F\u4E00 -Inner_Parameter=\u5167\u7F6E\u53C3\u6578 +Inner_Parameter=Inner Parameter Required=\u5FC5\u586B Summary=\u532F\u7E3D template_unopened=\u7121\u6CD5\u6253\u958B\u7BC4\u672C @@ -981,14 +983,14 @@ DataFunction-Min=\u6700\u5C0F\u503C StyleFormat-Percent=\u767E\u5206\u6BD4 FR-App-All_Custom=\u81EA\u5B9A\u7FA9 M_Insert-Data_Column=\u63D2\u5165\u8CC7\u6599\u6B04 -PLEASE=\u8ACB +PLEASE=Please Numbers=\u6578\u76EE Release_Lock=\u89E3\u9396 Background-Background_is_NULL=\u6C92\u6709\u80CC\u666F FR-Designer_Sytle-FRFont=\u5B57\u9AD4 Gradation=\u5C64\u6B21 The_current_list_is_empty=\u7576\u524D\u6B04\u8868\u70BA\u7A7A -Formula_Dictionary_Display_Examples=\ \u5BE6\u969B\u503C\u7BC4\u570D\u70BA \=range(100),\u5C0D\u5BE6\u969B\u503C\u7BC4\u570D\n \u5167\u7684\u6BCF\u500B$$$\u7684\u986F\u793A\u516C\u5F0F\u70BA \=0 - $$$\uFF0C\n \u5247\u6700\u7D42\u7684\u7D50\u679C\u5BE6\u969B\u503C\u70BA1, 2, ..., 100, \n \u986F\u793A\u503C\u70BA-1, -2, ... , -100\u3002 +Formula_Dictionary_Display_Examples= Schedule-Template_Parameter=\u7BC4\u672C\u53C3\u6578 JSShow=\u52D5\u614B\u5C55\u793A Level_coordinates=\u5C64\u6B21\u5750\u6A19 @@ -1002,7 +1004,7 @@ RWA-Remove_Field=\u79FB\u9664\u6B04\u4F4D Form-Desin_Width=\u8A2D\u8A08\u5BEC\u5EA6 No-tableData=\u6C92\u6709\u8FD4\u56DE\u8CC7\u6599\u96C6 Page_Total=\u5171 -FR-Designer-Plugin_Connect_Server_Error=\u7121\u6CD5\u9023\u63A5\u63D2\u4EF6\u5546\u5E97\uFF0C\u8ACB\u7A0D\u5F8C\u518D\u8A66 +FR-Designer-Plugin_Connect_Server_Error=Error to connect plugin store Import-Excel_Source=Excel\u6E90\u6A94\u6848 Utils-Left_to_Right_a=\u5F9E\u5DE6\u5F80\u53F3 ExpandD-Expand_Attribute=\u64F4\u5C55\u5C6C\u6027 @@ -1017,7 +1019,7 @@ Utils-Move_Up=\u4E0A\u79FB BackgroundTexture-PurpleMesh=\u7D2B\u8272\u7DB2\u8DEF Export-Word=Word\u683C\u5F0F ServerM-Widget_Manager=\u5143\u4EF6\u7BA1\u7406 -FR-Designer-Basic_Activation_Key=\u8A2D\u8A08\u5668\u7DE8\u865F\: +FR-Designer-Basic_Activation_Key=Activation Key\: FR-App-Template_Report_Not_Exist=\u6240\u9078\u5831\u8868\u4E0D\u5B58\u5728 Protected=\u4FDD\u8B77 Skip=\u8DF3\u904E @@ -1038,7 +1040,7 @@ FR-Designer-Tree_Width=\u5BEC\u5EA6 Record=\u8A18\u9304 Poly-Report_Component=\u8907\u5408\u5F0F\u5831\u8868\u5143\u4EF6 Options=\u9078\u9805 -NS-war-remote=\u932F\u8AA4\u4EE3\u78BC\:1117 \u58D3\u7E2E\u90E8\u7F72\u4E0D\u652F\u63F4\u9060\u7A0B\u8A2D\u8A08 +NS-war-remote=\u932F\u8AA4\u4EE3\u78BC\:11100017 \u58D3\u7E2E\u90E8\u7F72\u4E0D\u652F\u6301\u9060\u7A0B\u8A2D\u8A08 Sche-Minute=\u5206 Three_Rows_Of_Three_Grid=\u4E09\u5217\u4E09\u6B04\u7684\u683C\u5B50 WorkSheet=\u81EA\u7531\u5831\u8868 @@ -1047,7 +1049,7 @@ BindColumn-Select=\u6B04\u8868 FR-Widget_Mobile_Terminal=\u884C\u52D5\u8A2D\u5099 FR-Background_Image_Titled=\u5E73\u92EA SetPrinterOffset=\u5370\u8868\u6A5F\u504F\u79FB -FR-Designer-Plugin_Installed=\u5DF2\u5B89\u88DD +FR-Designer-Plugin_Installed=Installed FR-Designer-Hyperlink_Name=\u540D\u5B57 FR-Designer_Form-Button=\u6309\u9215 Black=\u9ED1\u8272 @@ -1057,7 +1059,7 @@ PDF-Print_isPopup=\u662F\u5426\u5F48\u51FA\u8A2D\u5B9A\u6846 LayerPageReport_CountPerPage=\u6BCF\u9801\u8A18\u9304\u6578 Display_Modes=\u986F\u793A\u6A21\u5F0F RowSpan=\u5217\u8DE8\u5EA6 -Datasource-Test_Connection=\u6E2C\u8A66\u9023\u63A5 +Datasource-Test_Connection=\u6E2C\u8A66\u93C8\u63A5 Function-Function_Manager=\u51FD\u6578\u7BA1\u7406\u5668 Host_Name=\u4E3B\u6A5F\u540D CellWrite-Show_As_HTML=\u7528HTML\u986F\u793A\u5167\u5BB9 @@ -1067,7 +1069,7 @@ Form-SupportTag=\u6A19\u7C64\u5F62\u5F0F\u986F\u793A ReportD-Report_Write_Attributes=\u5831\u8868\u586B\u5831\u5C6C\u6027 DataFunction-Count=\u500B\u6578 Top_And_Thick_Bottom_Border_Line=\u4E0A\u6846\u7DDA\u548C\u7C97\u4E0B\u6846\u7DDA -Client=\u5BA2\u6236\u7AEF +Client=Client BindColumn-Result_Serial_Number_Start_From_1=\u5E8F\u865F\u5F9E1\u958B\u59CB History=\u6B77\u53F2 Already_exists=\u5DF2\u5B58\u5728\uFF0C\u8ACB\u91CD\u65B0\u8F38\u5165\uFF01 @@ -1124,7 +1126,7 @@ LayerPageReport_PageEngine=\u4F7F\u7528\u6309\u9801\u904B\u7B97\u5206\u6BB5\u57F Schedule-The_selected_file_must_be_end_with_filter=\u9078\u64C7\u7684\u6A94\u6848\u5FC5\u9808\u4EE5.cpt\u6216\u8005.class\u6216\u8005.frm\u7D50\u5C3E\u3002 Provide=\u63D0\u4F9B FormulaD-Math_&_Trig=\u6578\u5B78\u548C\u4E09\u89D2\u51FD\u6578 -FR-Designer-StyleAlignment_Right=\u9760\u53F3 +FR-Designer-StyleAlignment_Right=\u9760\u53F3\u5C0D\u9F4A Error_TableDataNameRepeat=\u5DF2\u7D93\u5728\u4F3A\u670D\u5668\u8CC7\u6599\u96C6\u4E2D\u5B58\u5728\u6216\u8005\u591A\u500B\u8CC7\u6599\u96C6\u540D\u91CD\u8907\u3002 Choose_None=\u4E0D\u9078 File-tree=\u6A94\u6848\u6A39 @@ -1132,13 +1134,13 @@ FRFont-bold=\u7C97\u9AD4 FR-Designer_Set_Submit_Condition=\u8A2D\u5B9A\u63D0\u4EA4\u689D\u4EF6 Form-Change_Widget_Name=\u66F4\u6539\u63A7\u5236\u9805\u540D ReportColumns-Report_Columns=\u5831\u8868\u5206\u6B04 -Can_not_use_FormatBursh=\u7121\u6CD5\u4F7F\u7528\u8907\u88FD\u683C\u5F0F +FR-Designer_Can_not_use_FormatBursh=\u7121\u6CD5\u4F7F\u7528\u8907\u88FD\u683C\u5F0F CellElement-Property_Table=\u5132\u5B58\u683C\u5C6C\u6027\u8868 Dictionary-Dynamic_SQL=\u52D5\u614BSQL FR-Designer_Form-CheckBoxGroup=\u5FA9\u9078\u6846\u7D44 DBCP_TIME_BETWEEN_EVICTIONRUNSMILLIS=\u7A7A\u9591\u9023\u63A5\u56DE\u6536\u5668\u4F11\u7720\u6642\u9593 ReportD-Export_Hided_Column=\u532F\u51FA\u96B1\u85CF\u6B04 -Preference-Support_Undo=\u652F\u63F4\u5FA9\u539F +Preference-Support_Undo=\u652F\u6301\u5FA9\u539F FR-mobile_report_analysis=\u5831\u8868\u89E3\u6790 Month=\u6708 Utils-Column_Width=\u6B04\u5BEC @@ -1162,12 +1164,12 @@ Delete_Column=\u522A\u9664\u6B04 SecondGraduationLine=\u6B21\u8981\u523B\u5EA6\u7DDA SpecifiedG-Groups=\u7D44 CONTINUUM_MODE=\u76F8\u9130\u9023\u7E8C\u5206\u7D44 -Datasource-Connection_failed=\u9023\u63A5\u5931\u6557 +Datasource-Connection_failed=\u93C8\u63A5\u5931\u6557 CategoryName=\u5206\u985E\u540D DBCP_INITIAL_SIZE=\u521D\u59CB\u5316\u9023\u63A5\u6578 Colors=\u984F\u8272 FR-Import-Export_CSV=CSV\u683C\u5F0F(\u9017\u865F\u5206\u9694) -FR-Designer-StyleAlignment_Left=\u9760\u5DE6 +FR-Designer-StyleAlignment_Left=\u9760\u5DE6\u5C0D\u9F4A BackgroundTexture-PaperBag=\u7D19\u888B RWA-BuildIn_SQL=\u5167\u7F6ESQL SingleLayer=\u55AE\u5C64 @@ -1206,7 +1208,7 @@ FS_Start_Date=\u958B\u59CB\u65E5\u671F FR-ConditionB_Operator=\u64CD\u4F5C\u7B26 Printer-Alias=\u5225\u540D DS-Class_Name=\u985E\u540D -FR-Designer-Plugin_Has_Been_Disabled=\u63D2\u4EF6\u5DF2\u88AB\u7981\u7528\uFF0C\u91CD\u555F\u8A2D\u8A08\u5668\u53CA\u4F3A\u670D\u5668\u751F\u6548\uFF0C\u4F3A\u670D\u5668\u9700\u624B\u52D5\u91CD\u555F +FR-Designer-Plugin_Has_Been_Disabled=Plugin has been disabled Sort-Original=\u4E0D\u6392\u5E8F Utils-Top_to_Bottom_a=\u5F9E\u4E0A\u5F80\u4E0B Parameter-String=\u5B57\u5143\u4E32 @@ -1227,7 +1229,7 @@ Interface=\u4ECB\u9762 FR-Designer-Beyond_Bounds=\u8D85\u51FA\u6216\u8005\u5C0F\u65BCbody\u908A\u754C\uFF0C\u4E0D\u80FD\u8ABF\u6574\u5927\u5C0F seconds=\u79D2 Auto-Build=\u81EA\u52D5\u69CB\u5EFA -FR-Designer-Plugin_Install_Successful=\u8A72\u63D2\u4EF6\u5C07\u5728\u91CD\u65B0\u555F\u52D5\u8A2D\u8A08\u5668\u53CA\u4F3A\u670D\u5668\u6642\u88AB\u555F\u7528\uFF0C\u4F3A\u670D\u5668\u9700\u624B\u52D5\u91CD\u555F +FR-Designer-Plugin_Install_Successful=Install successful Template_Path=\u7BC4\u672C\u8DEF\u5F91 FR-Designer-FRFont_Bold=\u7C97\u9AD4 Poly_Name=\u805A\u5408\u584A\u540D @@ -1236,7 +1238,7 @@ Hyperlink-Self_Window=\u7576\u524D\u7A97\u53E3 FR-Designer-Widget-Style_Title=\u6A19\u984C FR-Designer-FRFont_Size=\u5927\u5C0F M_File-Export-SVG=SVG\u683C\u5F0F -Capacity=\u5BB9\u91CF +Capacity=Capacity Rose_Red=\u73AB\u7470\u7D05 StyleAlignment-The_value_of_rotation_must_between_-90_and_90_degrees=\u65CB\u8F49\u503C\u5FC5\u9808\u5728\u8CA090\u5EA6\u523090\u5EA6 HF-Move_Left=\u5DE6\u79FB @@ -1257,7 +1259,7 @@ Deep=\u6DF1\u5EA6 FRFont-Shadow=\u9670\u5F71 Reportlet=\u7DB2\u8DEF\u5831\u8868 Calendar=\u65E5\u66C6 -DateFormat-Custom_Warning=\u8A3B\uFF1A\u81EA\u5B9A\u7FA9\u65E5\u671F\u683C\u5F0F\u4E0D\u652F\u63F4\u683C\u5F0F\u6821\u9A57 +DateFormat-Custom_Warning=\u8A3B\uFF1A\u81EA\u5B9A\u7FA9\u65E5\u671F\u683C\u5F0F\u4E0D\u652F\u6301\u683C\u5F0F\u6821\u9A57 Unit_MM=\u516C\u5398 Server-Start=\u555F\u52D5 CellPage-Can_Break_On_Paginate=\u5206\u9801\u6642\u53EF\u4EE5\u65B7\u958B @@ -1286,7 +1288,7 @@ Brown=\u8910\u8272 Select_A_Tree_DataSource_To_Build=\u9078\u64C7\u4E00\u500B\u6A39\u72C0\u8CC7\u6599\u96C6\u4F86\u69CB\u5EFA Overlapping=\u91CD\u66E1\u578B DS-Class_TableData=\u985E\u5225\u8CC7\u6599\u96C6 -FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install=\u4E0D\u53EF\u8B58\u5225\u7684\u63D2\u4EF6\uFF0C\u7121\u6CD5\u5B89\u88DD +FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install=Illegal plugin,cannot be installed DisplayNothingBeforeQuery=\u9EDE\u64CA\u67E5\u8A62\u524D\u4E0D\u986F\u793A\u5176\u4ED6\u5167\u5BB9 Y_Axis=Y\u8EF8 FormulaD-Most_Recently_Used=\u5E38\u7528\u51FD\u6578 @@ -1317,7 +1319,7 @@ FR-Base_Table=\u8868 Des-Remove_WorkSheet=\u8981\u522A\u9664\u7684\u8868\u53EF\u80FD\u5B58\u5728\u8CC7\u6599,\u5982\u679C\u8981\u6C38\u4E45\u522A\u9664\u9019\u4E9B\u8CC7\u6599,\u8ACB\u6309'\u78BA\u5B9A'\u6309\u9215. Rotation=\u65CB\u8F49 Undefined=\u672A\u5B9A\u7FA9 -Support-Auto_Complete_Shortcut=\u81EA\u52D5\u88DC\u5168\u5FEB\u6377\u9375 +Support-Auto_Complete_Shortcut=Auto Complete Shortcut Set_Column_Title_End=\u8A2D\u5B9A\u91CD\u8907\u7D50\u5C3E\u6B04 Submit_Url=\u63D0\u4EA4\u5730\u5740 ReportServerP-Are_you_sure_to_delete_the_selected_printer=\u4F60\u78BA\u5BE6\u60F3\u522A\u9664\u9078\u4E2D\u7684\u5370\u8868\u6A5F\u55CE @@ -1333,7 +1335,7 @@ Format-Error=\u8F38\u5165\u7684\u503C\u683C\u5F0F\u4E0D\u6B63\u78BA Server-Stop=\u505C\u6B62 Preference-Setting_Grid=\u7DB2\u683C\u8A2D\u5B9A ReportServerP-Add_Printer=\u589E\u52A0\u5370\u8868\u6A5F -FR-Designer-Plugin_Active=\u555F\u7528 +FR-Designer-Plugin_Active=Active Utils-File_name=\u6A94\u6848\u540D NOT_NULL_Des=\u4E0D\u80FD\u70BA\u7A7A Right_Border_Line=\u53F3\u6846\u7DDA @@ -1345,21 +1347,18 @@ Remove_All_Button=\u6E05\u9664\u6240\u6709\u6309\u9215 FR-Designer_Component_Interval=\u5143\u4EF6\u9593\u9694 ReportColumns-Columns_vertically=\u6B04\u5206\u6B04 ReportGUI-Print_Background=\u5217\u5370/\u532F\u51FA\u5831\u8868\u80CC\u666F -FR-Designer_Print_Background=\u5217\u5370\u5831\u8868\u80CC\u666F -FR-Designer_Export_Background=\u532F\u51FA\u5831\u8868\u80CC\u666F Export-CSV=CSV\u683C\u5F0F(\u9017\u865F\u5206\u9694) M_Edit-Paste=\u8CBC\u4E0A(P) -FR-Designer-Basic_Restart_Designer=\u91CD\u555F\u8A2D\u8A08\u5668 +FR-Designer-Basic_Restart_Designer=Restart designer ReportServerP-PDF2-INFO=\u50C5\u5728LINUX/UNIX\u4E0B\u672A\u5B89\u88DD\u4E2D\u6587\u5B57\u9AD4\u6642\u4F7F\u7528 FormulaD-Check_Valid=\u6AA2\u67E5\u5408\u6CD5\u6027 server_disconnected=\u9023\u63A5\u5DF2\u65B7\u958B ParameterD-Parameter_name_cannot_be_null=\u53C3\u6578\u7684\u540D\u5B57\u4E0D\u53EF\u4EE5\u70BA\u7A7A -FR-Designer-Plugin_Version_Is_Lower_Than_Current=\u5347\u7D1A\u5305\u7684\u63D2\u4EF6\u7248\u672C\u6C92\u6709\u6BD4\u7576\u524D\u7684\u9AD8 +FR-Designer-Plugin_Version_Is_Lower_Than_Current=The version of plugin is lower than current RWA-NotChange_Unmodified=\u4E0D\u6539\u8B8A\u6642\u4E0D\u66F4\u65B0 User_Information=\u7528\u6236\u8A0A\u606F Custom_styles_lost=\u81EA\u5B9A\u7FA9\u6A23\u5F0F\u5DF2\u4E1F\u5931 PageSetup-Margin=\u9801\u908A\u8DDD -M-New_FormBook=\u65B0\u589E\u8868\u55AE\uFF08\u6C7A\u7B56\u8868\uFF09 Widget-TreeNode=\u6A39\u7BC0\u9EDE\u6309\u9215 Form-Url=\u5730\u5740 Utils-Beyond_the_left_side_of_Border=\u8D85\u51FA\u5DE6\u908A\u754C @@ -1371,10 +1370,10 @@ paper=\u7D19\u5F35 Not_Exsit=\u4E0D\u5B58\u5728\u65BC\u5831\u8868 Utils-Insert_Row=\u63D2\u5165\u5217 Utils-Delete_Row=\u522A\u9664\u5217 -not_support_authority_edit=\u8A72\u5143\u7D20\u4E0D\u652F\u63F4\u8A31\u53EF\u6B0A\u63A7\u5236 -Formula_Tips=\u516C\u5F0F\u5FC5\u9808\u4EE5"\="\u865F\u958B\u982D +not_support_authority_edit=\u8A72\u5143\u7D20\u4E0D\u652F\u6301\u8A31\u53EF\u6B0A\u63A7\u5236 +Formula_Tips=\u516C\u5F0F\u5FC5\u9808\u4EE5"\ FR-Action_Copy=\u8907\u88FD -Compile_Success=\u7DE8\u8B6F\u6210\u529F +Compile_Success=Compile Success BackgroundTexture-RecycledPaper=\u518D\u751F\u7D19 StyleAlignment-Single_Line=\u55AE\u5217\u986F\u793A Utils-Move_Down=\u4E0B\u79FB @@ -1408,7 +1407,7 @@ Rename=\u91CD\u547D\u540D Widget-Load_By_Async=\u975E\u540C\u6B65\u8F09\u5165 Shape=\u5716\u5F62 BindColumn-This_Condition_has_been_existed=\u6B64\u689D\u4EF6\u5DF2\u7D93\u5B58\u5728 -NS-exception_readError=\u932F\u8AA4\u4EE3\u78BC\:1305 \u6A21\u677F\u6A94\u6848\u89E3\u6790\u51FA\u932F +NS-exception_readError=\u932F\u8AA4\u4EE3\u78BC\:11300005 \u6A21\u677F\u6A94\u6848\u89E3\u6790\u51FA\u932F Set_Column_Title_Start=\u8A2D\u5B9A\u91CD\u8907\u6A19\u984C\u6B04 Fri=\u4E94 M_Report-Report_Parameter=\u6A21\u677F\u53C3\u6578 @@ -1460,8 +1459,8 @@ Ratio=\u6BD4\u7387 DBCP_TEST_ON_BORROW=\u7372\u53D6\u9023\u63A5\u524D\u6AA2\u9A57 FR-Designer_layerIndex=\u4F9D\u8CF4\u7684\u5C64\u6578 WEB-Write_Setting=\u586B\u5831\u9762\u9762\u8A2D\u5B9A -M-New_WorkBook=\u65B0\u589E\u5DE5\u4F5C\u7C3F -FR-Designer-Plugin_Has_Been_Actived=\u63D2\u4EF6\u5DF2\u88AB\u555F\u7528\uFF0C\u91CD\u555F\u8A2D\u8A08\u5668\u53CA\u4F3A\u670D\u5668\u751F\u6548\uFF0C\u4F3A\u670D\u5668\u9700\u624B\u52D5\u91CD\u555F +M-New_WorkBook=\u65B0\u589E\u666E\u901A\u5831\u8868 +FR-Designer-Plugin_Has_Been_Actived=Plugin is now active Datasource-Maximum_Number_of_Preview_Rows=\u6700\u5927\u7684\u9810\u89BD\u5217\u6578 ExpandD-Cell_Expand_Attributes=\u64F4\u5C55\u5C6C\u6027 Select_the_repeated_row_and_column=\u9078\u64C7\u9700\u8981\u91CD\u8907\u7684\u5217\u6B04 @@ -1511,7 +1510,7 @@ ReportColumns-Repeat_Row=\u8907\u88FD\u5217\u5E8F\u6B04 Print_Setting=\u5217\u5370\u8A2D\u5B9A Registration-User_Name=\u5E33\u865F Datasource-User_Defined=\u81EA\u5B9A\u7FA9 -FR-Designer-Plugin_DownLoadMessage=\u63D2\u4EF6\u9700\u8981\u4F9D\u8CF4\u7684\u652F\u63F4\uFF0C\u662F\u5426\u5B89\u88DD({R1} m)? +FR-Designer-Plugin_DownLoadMessage=\u63D2\u4EF6\u9700\u8981\u4F9D\u8CF4\u7684\u652F\u6301\uFF0C\u662F\u5426\u5B89\u88DD({R1} m)? Delay=\u5EF6\u9072 FR-Designer-All_MSBold=\u5FAE\u8EDF\u96C5\u9ED1 Utils-Now_create_connection=\u6B63\u5728\u5EFA\u7ACB\u8CC7\u6599\u9023\u63A5 @@ -1537,7 +1536,7 @@ FR-Designer_Cancel=\u53D6\u6D88 Button-Group-Display-Columns=\u5C55\u793A\u6B04\u6578 Widget-Height=\u63A7\u5236\u9805\u9AD8\u5EA6 Examples=\u4F8B\u5B50 -Formula_Dictionary_Display_Example=\u5BE6\u969B\u503C\u7BC4\u570D\u70BA Formula_Dictionary_Display_Examples\= \u5BE6\u969B\u503C\u7BC4\u570D\u70BA Formula_Dictionary_Display_Examples_Html\=\u5BE6\u969B\u503C\u7BC4\u570D\u70BA Formula_Editor\=\u516C\u5F0F\u7DE8\u8F2F\u5668 +Formula_Dictionary_Display_Example=\u5BE6\u969B\u503C\u7BC4\u570D\u70BA Formula_Dictionary_Display_Examples\ StyleAlignment-Horizontal=\u6C34\u5E73\u5C0D\u9F4A HyperLink_Must_Alone_Reset=\u591A\u500B\u8D85\u93C8 ExpandD-Expand_Direction=\u64F4\u5C55\u65B9\u5411 @@ -1567,7 +1566,7 @@ HF-Undefined=\u6C92\u6709\u5B9A\u7FA9 Widget-User_Defined_Widget_Config=\u9810\u5B9A\u7FA9\u63A7\u5236\u9805 Report-Write_Attributes_Group_Warning=\u8A2D\u5B9A\u7232\u5132\u5B58\u683C\u7D44\u7684\u5404\u6B04\u4F4D\u4E2D\u7684\u5132\u5B58\u683C\u500B\u6578\u5FC5\u9808\u76F8\u540C Form-Single_quote=\u55AE\u5F15\u865F -Compile_Success_And_Then_Save=\u7DE8\u8B6F\u6210\u529F\u624D\u80FD\u6B63\u78BA\u5132\u5B58 +Compile_Success_And_Then_Save=Compile Success And Then Save FR-Designer_Layout-Padding=\u5167\u908A\u8DDD Layout_Container=\u4F48\u5C40\u5BB9\u5668 Admin=\u7BA1\u7406\u54E1 @@ -1584,7 +1583,7 @@ Tree-Return_Full_Path=\u7D50\u679C\u8FD4\u56DE\u5B8C\u6574\u5C64\u6B21\u8DEF\u5F FRFont-bolditalic=\u7C97\u9AD4\u659C\u9AD4 FR-Base_StyleFormat_Sample=\u793A\u4F8B Area_Value=\u5340\u57DF\u503C -FR-Designer-Plugin_Disable=\u7981\u7528 +FR-Designer-Plugin_Disable=Disable Utils-Are_you_sure_to_remove_the_selected_item=\u4F60\u78BA\u5BE6\u6C7A\u5B9A\u522A\u9664\u9078\u4E2D\u7684\u9805 Face_Write=\u586B\u5831 Poly-Report_Block=\u8868\u683C\u985E\u578B\u805A\u5408\u584A @@ -1595,7 +1594,7 @@ FR-Hyperlink_Please_Select_Reportlet=\u8ACB\u9078\u64C7\u7DB2\u8DEF\u5831\u8868 FS_Report_Type=\u985E\u578B HF-New_Line=\u63DB\u5217\u7B26 Privilege=\u6B0A\u9650 -Export-Offline-Html=\u532F\u51FA\u96E2\u7DDAhtml\u5831\u8868 +Export-Offline-Html=\u8F38\u51FA\u96E2\u7DDAhtml\u5831\u8868 FR-Designer_open-new-form-tip=\u7576\u524D\u6A21\u677F\u70BA711\u4EE5\u4E0B\u7248\u672C\u88FD\u4F5C, \u7121\u6CD5\u517C\u5BB9, \u4E0D\u80FD\u6253\u958B. \u5047\u5982\u60F3\u6253\u958B\u4FEE\u6539\u6B64\u8868\u55AE, \u8ACB\u4F7F\u7528\u5C0D\u61C9\u7248\u672C\u8A2D\u8A08\u5668\u6253\u958B. FR-Designer-Widget-Style_Frame_Style=\u6846\u67B6\u6A23\u5F0F Present-No_Present=\u53D6\u6D88\u6A21\u5F0F\u8A2D\u5B9A @@ -1615,14 +1614,14 @@ FR-Designer_Date=\u65E5\u671F Column_Multiple=\u8CC7\u6599\u500D\u6578 FR-App-All_File=\u6A94\u6848 Sort-Descending=\u964D\u51AA -FR-Designer-Plugin_Delete=\u522A\u9664 +FR-Designer-Plugin_Delete=Delete Above=\u4EE5\u4E0A\u7248\u672C Utils-The-Chart=\u5716\u8868 FRFont-plain=\u5E38\u898F Calculating=\u8655\u7406\u4E2D Form-Object=\u8868\u55AE\u5C0D\u8C61 May=\u4E94\u6708 -FR-Designer_Plugin_Normal_Update=\u66F4\u65B0 +FR-Designer_Plugin_Normal_Update=Update FR-Hyperlink_Reportlet=\u7DB2\u8DEF\u5831\u8868 M_Edit-Copy=\u8907\u88FD(C) Sub_Report_Message2=\u7236\u5831\u8868\u4E0D\u5728\u7576\u524D\u904B\u884C\u74B0\u5883\u4E0B @@ -1634,10 +1633,10 @@ FR-Designer_Server-version-tip-moreInfo=\u5EFA\u8B70\u60A8\u6240\u5C6C\u5718\u96 Get_Lock=\u52A0\u9396 HF-Edit_Footer=\u7DE8\u8F2F\u9801\u5C3E Datasource-New_Charset=\u65B0\u7DE8\u78BC -Preference-Custom=\u81EA\u5B9A\u7FA9 +Preference-Custom=Custom BackgroundTexture-Newsprint=\u65B0\u805E\u7D19 ConditionB-Add_bracket=\u65B0\u589E\u62EC\u865F -Datasource-Connection_successfully=\u9023\u63A5\u6210\u529F +Datasource-Connection_successfully=\u93C8\u63A5\u6210\u529F Function-The_class_must_implement_the_interface=\u6539\u985E\u5FC5\u9808\u5BE6\u73FE\u4ECB\u9762 FR-Designer_ChartF-Transparency=\u900F\u660E Crimson=\u6DF1\u7D05 @@ -1659,9 +1658,9 @@ Verify-Verify_Formula=\u6821\u9A57\u516C\u5F0F State=\u7701\u5E02 FR-Designer-Widget-Style_Body_Background=\u4E3B\u9AD4\u80CC\u666F FR-App-Privilege_No=\u6C92\u6709\u6B0A\u9650 -Please_Drag_ParaPane=\u8ACB\u62D6\u5165\u53C3\u6578\u9762\u677F +Please_Drag_ParaPane= Come_True=\u5BE6\u73FE -ISEMPTY=\u70BA\u7A7A +ISEMPTY=is empty Background-Texture=\u7D0B\u7406 FR-Designer_Verify-Message=\u932F\u8AA4\u8A0A\u606F Locked=\uFF08\u5DF2\u9396\u5B9A\uFF09 @@ -1715,7 +1714,7 @@ Tree_Data_Field=\u6A39\u72C0\u8CC7\u6599\u6B04\u4F4D Border-Style-Normal=\u76F4\u89D2\u6846\u7DDA Top_And_Double_Bottom_Border_Line=\u4E0A\u6846\u7DDA\u548C\u96D9\u4E0B\u6846\u7DDA FR-Server_Embedded_Server_Start=\u5167\u7F6E\u7684\u4F3A\u670D\u5668-\u555F\u52D5 -FR-Designer-Basic_Restart_Designer_Later=\u7A0D\u5F8C\u91CD\u555F +FR-Designer-Basic_Restart_Designer_Later=Restart later StyleAlignment-Top=\u9760\u4E0A\u5C0D\u9F4A ReportServerP-First=\u9996\u9801 Not_Exist=\u4E0D\u5B58\u5728 @@ -1737,7 +1736,7 @@ PageSetup-Horizontally=\u6C34\u5E73\u7F6E\u4E2D No_Editor_Property_Definition=\u8A72\u7DE8\u8F2F\u5668\u6C92\u6709\u5C6C\u6027\u5B9A\u7FA9 Env-Remote_Server=\u9060\u7A0B\u4F3A\u670D\u5668 FR-Utils_Background=\u80CC\u666F -FR-Designer-Plugin_Warning=\u8B66\u544A +FR-Designer-Plugin_Warning=Warning Server-version-info=\u60A8\u7576\u524D\u6253\u958B\u7684\u6A21\u677F\u6A94\u6848\u662F\u7531\u66F4\u9AD8\u7248\u672C\u7684\u8A2D\u8A08\u5668\u88FD\u4F5C\u7684\uFF0C\u6253\u958B\u6703\u6709\u51FA\u932F\u6216\u8005\u4E1F\u5931\u539F\u6709\u6A21\u677F\u5C6C\u6027\u7684\u98A8\u96AA\u3002\u5047\u5982\u9700\u8981\u6253\u958B\u6B64\u6A21\u677F\u8ACB\u60A8\u5C07\u60A8\u7684\u8A2D\u8A08\u5668\u5347\u7D1A\u81F3 CellWrite-Page_After_Row=\u5217\u5F8C\u5206\u9801 HF-Right_Section=\u53F3\u5340\u57DF @@ -1814,7 +1813,7 @@ FR-Action_Remove=\u522A\u9664 FRFont-Style=\u5B57\u5F62 Select_DataColumn=\u9078\u64C7\u8CC7\u6599\u6B04 StartValue=\u958B\u59CB\u503C -SINGLE_FILE_UPLOAD=\u53EA\u652F\u63F4\u55AE\u6A94\u6848\u4E0A\u50B3 +SINGLE_FILE_UPLOAD=\u53EA\u652F\u6301\u55AE\u6A94\u6848\u4E0A\u50B3 BackgroundTexture-Cork=\u8EDF\u6728\u585E M_Format-Data_Map=\u8CC7\u6599\u5B57\u5178 FR-mobile_native_analysis=\u539F\u751F\u89E3\u6790 @@ -1824,13 +1823,13 @@ local=\u672C\u6A5F FR-Designer_Gradation=\u5C64\u6B21 PageSetup-Finis_Start_Column=\u91CD\u8907\u7D50\u5C3E\u6B04 Env-Invalid_User_and_Password=\u975E\u6CD5\u7684\u5E33\u865F\u6216\u5BC6\u78BC -FR-Designer-Plugin_All_Plugins=\u5168\u90E8\u63D2\u4EF6 +FR-Designer-Plugin_All_Plugins=All plugins FR-Designer_Prepare_Export=\u958B\u59CB\u532F\u51FA\uFF0C\u8ACB\u7A0D\u5019 -DBCP_TEST_ON_RETURN=\u6B78\u9084\u9023\u63A5\u524D\u6AA2\u9A57 +DBCP_TEST_ON_RETURN=\u6B78\u9084\u93C8\u63A5\u524D\u6AA2\u9A57 no-alternatives=\u6C92\u6709\u9078\u64C7\u9805 FR-Designer_Submmit_WClass=\u5F8C\u53F0\u985E\u63D0\u4EA4 M_Insert-Slope_Line=\u63D2\u5165\u659C\u7DDA -FR-Designer-Plugin_Plugin_Description=\u63D2\u4EF6\u63CF\u8FF0 +FR-Designer-Plugin_Plugin_Description=Description ExpandD-Not_Expand=\u4E0D\u64F4\u5C55 Utils-Bottom_to_Top=\u5F9E\u4E0B\u5230\u4E0A Collect-Click\!_Get_user_information_code=\u9EDE\u64CA\!\u7372\u53D6\u7528\u6236\u8A0A\u606F\u78BC @@ -1849,7 +1848,7 @@ Form-NullLayout=\u7D55\u5C0D\u5B9A\u4F4D ConditionB-Remove_bracket=\u53BB\u6389\u62EC\u865F email=\u90F5\u7BB1 Minute=\u5206\u9418 -FR-Designer-Plugin_Update=\u63D2\u4EF6\u66F4\u65B0 +FR-Designer-Plugin_Update=Plugins to update alraedy_close=\u5DF2\u7D93\u95DC\u9589 ComboCheckBox-End_Symbol=\u7D50\u675F\u7B26 DataColumn=\u8CC7\u6599\u6B04 @@ -1859,17 +1858,17 @@ Export-Excel-PageToSheet=\u5206\u9801\u5206Sheet\u532F\u51FA Edit-Row_Count=\u5217\u6578 DS-Report_TableData=\u5831\u8868\u8CC7\u6599\u96C6 Sche-Hour=\u6642 -Group_Count=\u8868\u793A\u7E3D\u500B\u6578 +Group_Count=Group Count EndValue=\u7D50\u675F\u503C FR-Designer_Sytle-Indentation=\u7E2E\u9032 DownBarBorderStyleAndColor=\u8DCC\u67F1\u6A23\u5F0F World=\u4E16\u754C -FR-Designer-Basic_Cancel=\u53D6\u6D88 +FR-Designer-Basic_Cancel=Cancel Finally=\u6700\u5F8C Low=\u4F4E Please_Input_The_Key=\u8ACB\u8F38\u5165\u5C0D\u61C9\u5730\u5716\u4F7F\u7528\u7684key Smart=\u667A\u80FD -Preference-Predefined=\u9810\u5B9A\u7FA9 +Preference-Predefined=Predefined Current_custom_global=\u7576\u524D\u5831\u8868\u6240\u7528\u81EA\u5B9A\u7FA9\u5168\u5C40\u6A23\u5F0F FR-Designer-Plugin_Shop_Need_Install=\u60A8\u9084\u6C92\u6709\u63D2\u4EF6\u5546\u5E97\u7684\u8CC7\u6E90,\u662F\u5426\u4E0B\u8F09? WEB-Pagination_Setting=\u5206\u9801\u9810\u89BD\u8A2D\u5B9A @@ -1877,14 +1876,14 @@ RCodeDrawPix=\u50CF\u7D20 FR-Designer-Widget-Style_Alpha=\u4E0D\u900F\u660E\u5EA6 BorderLayout-North=\u5317 HJS-Current_Page=\u7576\u524D\u9801 -Compile=\u7DE8\u8B6F +Compile=Compile Show_Blank_Row=\u88DC\u5145\u7A7A\u767D\u5217 TableData_Dynamic_Parameter_Setting=\u52D5\u614B\u53C3\u6578\u6CE8\u5165 FR-Background_Image_Default=\u9810\u8A2D BackgroundTexture-WhiteMarble=\u767D\u8272\u5927\u7406\u77F3 DataFunction-Sum=\u6C42\u548C Collect-The_user_information_code_is_invalid=\u9019\u500B\u7528\u6236\u8A0A\u606F\u78BC\u662F\u975E\u6CD5\u7684 -Preference-Locale=\u570B\u969B\u5316 +Preference-Locale=Locale M_File-Export-PDF=PDF\u683C\u5F0F BiasD-From-lower_left_to_upper_right=\u7E3D\u5DE6\u4E0B\u5230\u53F3\u4E0A\u767C\u6563 Border-Style=\u6846\u7DDA\u6A23\u5F0F @@ -1917,7 +1916,7 @@ Preference-Pagination_Line_Color=\u5206\u9801\u7DDA\u984F\u8272 Test_URL=\u6E2C\u8A66\u9023\u63A5 Fill_blank_Data=\u88DC\u5145\u7A7A\u767D\u8CC7\u6599 ReportServerP-The_name_of_printer_cannot_be_null=\u5370\u8868\u6A5F\u7684\u540D\u5B57\u4E0D\u80FD\u70BA\u7A7A -FR-Designer-Basic_Copy_Activation_Key=\u96D9\u64CA\u8A2D\u8A08\u5668\u7DE8\u865F\u53EF\u8907\u88FD\u5230\u526A\u8CBC\u677F +FR-Designer-Basic_Copy_Activation_Key=Double click to copy key to clipboard Continuum=\u76F8\u9130\u9023\u7E8C BackgroundTexture-MediumWood=\u6DF1\u8272\u6728\u88FD Datasource-Column_Index=\u6B04\u5E8F\u865F @@ -1926,11 +1925,11 @@ Form-Component_Bounds=\u5143\u4EF6\u908A\u754C Utils-Submit=\u63D0\u4EA4 Conditions_formula=\u689D\u4EF6\u516C\u5F0F M_Insert-Image=\u63D2\u5165\u5716\u7247 -FR-Designer-Plugin_Will_Be_Delete=\u63D2\u4EF6\u5C07\u88AB\u522A\u9664\uFF0C\u9700\u91CD\u555F\u8A2D\u8A08\u5668\u53CA\u4F3A\u670D\u5668\uFF0C\u4F3A\u670D\u5668\u9700\u624B\u52D5\u91CD\u555F +FR-Designer-Plugin_Will_Be_Delete=Delete plugin FormulaD-Functions=\u51FD\u6578 Mobile_Terminal=\u884C\u52D5\u8A2D\u5099 CheckBox=\u5FA9\u9078\u6846 -FR-Designer-Plugin_Install=\u5B89\u88DD +FR-Designer-Plugin_Install=Install Sun=\u65E5 FR-Designer_ToolBar_Bottom=\u5E95\u90E8\u5DE5\u5177\u6B04 Widget-Width=\u63A7\u5236\u9805\u5BEC\u5EA6 @@ -1988,6 +1987,25 @@ FR-Designer_Role=\u89D2\u8272 FR-Designer_Permissions=\u6B0A\u9650 FR-Designer_Form_Button=\u6309\u9215 FR-Designer_WF_Name=\u540D\u7A31 +FR-Designer_AlphaFine_Enable=\u958B\u555F +FR-Designer_AlphaFine_EnableAlphaFine=\u958B\u555FAlphaFine\u529F\u80FD +FR-Designer_AlphaFine_EnableInternetSearch=\u806F\u7DB2\u641C\u7D22 +FR-Designer_AlphaFine_Shortcut_Config=\u5FEB\u6377\u9375\u914D\u7F6E +FR-Designer_AlphaFine_SearchRange=\u641C\u7D22\u7BC4\u570D +FR-Designer_AlphaFine_Recommend=\u731C\u60A8\u9700\u8981 +FR-Designer-Plugin_Addon=\u61C9\u7528\u4E2D\u5FC3 +FR-Designer_Templates=\u6A21\u677F +FR-Designer_Templates_Content=\u6A21\u677F\u5167\u5BB9 +FR-Designer_AlphaFine_Latest=\u6700\u8FD1\u5E38\u7528 +FR-Designer_AlphaFine_ShowLess=\u6536\u8D77 +FR-Designer_AlphaFine=AlphaFine\u667A\u80FD\u641C\u7D22 +FR-Designer_AlphaFine_ShowAll=\u986F\u793A\u5168\u90E8 +FR-Designer-Alphafine_No_Remind=\u4E0D\u518D\u63D0\u793A +FR-Designer_AlphaFine_NoResult=\u66AB\u7121\u76F8\u95DC\u5167\u5BB9 +FR-Designer_ConnectionFailed=\u93C8\u63A5\u5931\u6557 +FR-Designer_NoResult=\u66AB\u4E0D\u652F\u6301\u986F\u793A +FR-Designer-AlphaFine_SetShortcuts=\u8ACB\u76F4\u63A5\u5728\u9375\u76E4\u4E0A\u6309\u5169\u500B\u7D44\u5408\u9375 +FR-Designer_Write_Enhance_Preview=\u65B0\u586B\u5831\u9810\u89BD FR-Designer_Double=\u5C0F\u6578 FR-Designer_Query=\u67E5\u8A62 FR-Designer_Font=\u5B57\u9AD4 @@ -2006,7 +2024,112 @@ FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=\u4F9D\u8CF4\u6240\u9078\u8CC7 FR-Product_Demo=\u529F\u80FD\u5C55\u793A FR-Designer_Data_Filter=\u8CC7\u6599\u7BE9\u9078 Default=\u9810\u8A2D -FR-Designer_Sheet_Label_Page_Display_Position=sheet\u6A19\u7C64\u9801\u986F\u793A\u4F4D\u7F6E\uFF1A -FR-Designer_Provide_Choose_All=\u63D0\u4F9B\u5168\u9078 -FR-Designer_Decimal_Places=\u5C0F\u6578\u6578\u76EE\uFF1A FR-Base-Load_Resource_File=\u52A0\u8F09\u914D\u7F6E\u6A94\u6848 + +FR-Designer_Cell_Element=\u5132\u5B58\u683C\u5143\u7D20 +FR-Designer_Cell_Attributes=\u5132\u5B58\u683C\u5C6C\u6027 +FR-Designer_Float_Element=\u61F8\u6D6E\u5143\u7D20 +FR-Designer_Widget_Library=\u7D44\u4EF6\u5EAB +FR-Designer_No_Settings_Available=\u7121\u53EF\u7528\u914D\u5BD8\u9805\uFF01 +FR-Designer_Configured_Roles=\u5DF2\u914D\u7F6E\u89D2\u8272 +FR-Designer_Add_Hyperlink=\u65B0\u589E\u9023\u63A5 +FR-Designer_Scale_selfAdaptButton= +FR-Designer_Scale_customButton= +FR-Designer_FRFont_Subscript= +FR-Designer_FRFont_Superscript= +FR-Designer_FRFont_Shadow= +FR-Designer_FRFont_Strikethrough= +FR-Designer_FRFont_Underline= +FR-Designer_FRFont_bold= +FR-Designer_FRFont_italic= +FR-Designer_FRFont_Foreground= +FR-Designer_FRFont_Style= +FR-Designer_FRFont_plain= +FR-Designer_FRFont_bolditalic= +FR-Designer_outBorder= +FR-Designer_inBorder= +FR-Designer_ExpandD_Up_Father_Cell= +FR-Designer_ExpandD_Expand_Direction= +FR-Designer_Expand= +FR-Designer_ExpendSort= +FR-Designer_ExpandD_Expandable= +FR-Designer_Read_failure= +FR-Designer_Image_Layout= +FR-Designer_StyleAlignment_Text_Style= +FR-Designer_StyleAlignment_Text_Rotation= +FR-Designer_Style_Left_Indent= +FR-Designer_Style_Right_Indent= +FR-Designer_Style_Spacing_Before= +FR-Designer_Style_Spacing_After= +FR-Designer_Style_Line_Spacing= +FR-Designer_Left= +FR-Designer_Right= +FR-Designer_Front= +FR-Designer_Behind= +FR-Designer_StyleAlignment_Wrap_Text= +FR-Designer_StyleAlignment_Single_Line= +FR-Designer_StyleAlignment_Single_Line(Adjust_Font)= +FR-Designer_StyleAlignment_Multi_Line(Adjust_Font)= +FR-Designer_Auto_Adjust_Height= +FR-Designer_Auto_Adjust_Wdith= +FR-Designer_Type_Set= +FR-Designer_Dic_Data_Query= +FR-Designer_Dictionary_Dynamic_SQL= +FR-Designer_Datasource_From_Database= +FR-Designer_CellWrite_InsertRow_NULL= +FR-Designer_CellWrite_InsertRow_COPY= +FR-Designer_CellWrite_InsertRow_Policy= +FR-Designer_CellWrite_Page_Before_Row= +FR-Designer_CellWrite_Page_After_Row= +FR-Designer_CellWrite_Page_Before_Column= +FR-Designer_CellWrite_Page_After_Column= +FR-Designer_CellPage_Can_Break_On_Paginate= +FR-Designer_CellPage_Repeat_Content_When_Paging= +FR-Designer_CellWrite_Preview_Cell_Content= +FR-Designer_CellWrite_Print_Content= +FR-Designer_CellWrite_Print_Background= +FR-Designer_CellWrite_Show_As_Image= +FR-Designer_CellWrite_Show_As_HTML= +FR-Designer_Datasource_Other_Attributes= +FR-Designer_Not_use_a_cell_attribute_table_editing= +FR-Designer_CellElement_Property_Table= +FR-Designer_T_Insert_Float= +FR-Designer_Add_FloatElement= +FR-Designer_Insert_Image= +FR-Designer_Insert_Chart= +FR-Designer_Insert_Text= +FR-Designer_Insert_Formula= +FR-Designer_Scale_Down= +FR-Designer_Scale_Up= +FR-Designer_Scale_Slider= +FR-Designer_Scale_Grade= +FR-Designer_AlphaFine_EnableInternet= +FR-Designer_Scale_EnlargeOrReduce= +FR-Designer-StyleAlignment_Style_PartSpacing= +FR-Designer_Use_Params_Template= +FR-Designer_Label_Name= +FR-Designer_Add_Event= +FR-Designer_Not_Support_Authority_Edit=\u8A72\u5143\u7D20\u4E0D\u652F\u63F4\u8A31\u53EF\u6B0A\u63A7\u5236 +FR-Designer_Dynamic_Parameter=\u52D5\u614B\u53C3\u6578 +FR-Designer_Remove_Item= +FR-Designer_Widget_No_Repeat= +FR-Designer_Widget_Error_Tip= +FR-Designer_Widget_Return_Leaf= +FR-Designer_Widget_Return_Path= +FR-Designer_Widget_Display_Position= +FR-Designer_Size_Limit= +FR-Designer_Widget_Name= +FR-Designer_Coords_And_Size= +FR-Designer_Barcode_Size= +FS-Designer_DS_Filter_Odd_Tip=\u63D0\u793A\uFF1A\u5E8F\u865F\u5F9E1\u958B\u59CB\uFF0C\u9078\u64C7\u4E86\u5947\u6578\u96C6(1,3,5...) +FS-Designer_DS_Filter_Even_Tip=\u63D0\u793A\uFF1A\u5E8F\u865F\u5F9E1\u958B\u59CB\uFF0C\u9078\u64C7\u4E86\u5076\u6578\u96C6(2,4,6...) +FS-Designer_DS_Filter_Specify_Tip=\u63D0\u793A\uFF1A\u683C\u5F0F\u70BA1,2-3,5,8\uFF0C\u5E8F\u865F\u5F9E1\u958B\u59CB\uFF0C\u5185\u7F6E\u53C3\u6578$_count_\u8868\u793A\u7E02\u500B\u6578 +M-New_FormBook=\u65B0\u589E\u6C7A\u7B56\u5831\u8868 +FR-Designer-AlphaFine_NO_Result=\u7121\u641C\u7D22\u7D50\u679C +FR-Designer-Download_Online_Sources= +FR-Designer_Select_Color= +FR-Designer-Basic_Dynamic_Parameter_Injection=\u6CE8\u5165 +FR-Designer_Label=\u6A19\u7C3D +FR-Designer_Widgetname=\u63A7\u5236\u9805\u540D +FR-Designer_Insert_Cell_Element=\u63D2\u5165\u5143\u7D20 +FR-Designer_Add_Condition= \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/loghandler/LogHandlerBar.java b/designer_base/src/com/fr/design/mainframe/loghandler/LogHandlerBar.java index d0a45a5a77..f0caeb6e42 100644 --- a/designer_base/src/com/fr/design/mainframe/loghandler/LogHandlerBar.java +++ b/designer_base/src/com/fr/design/mainframe/loghandler/LogHandlerBar.java @@ -3,13 +3,14 @@ package com.fr.design.mainframe.loghandler; import com.fr.base.BaseUtils; import com.fr.design.gui.ibutton.UIButton; import com.fr.general.Inter; +import com.fr.stable.script.Atom; import javax.swing.*; import java.awt.*; -import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import java.util.concurrent.atomic.AtomicBoolean; public class LogHandlerBar extends JPanel implements ItemSelectable { @@ -38,17 +39,17 @@ public class LogHandlerBar extends JPanel implements ItemSelectable { clear.setMargin(null); clear.setOpaque(false); clear.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - clear.setToolTipText(Inter.getLocText("Clear_All")); + clear.setToolTipText(Inter.getLocText("FR-Designer_Clear_All")); selectedall = new UIButton(BaseUtils.readIcon("com/fr/design/images/log/selectedall.png")); selectedall.setMargin(null); selectedall.setOpaque(false); selectedall.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - selectedall.setToolTipText(Inter.getLocText("Select_All")); + selectedall.setToolTipText(Inter.getLocText("FR-Designer_Select_All")); set = new UIButton(BaseUtils.readIcon("com/fr/design/images/log/setting.png")); set.setMargin(null); set.setOpaque(false); set.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - set.setToolTipText(Inter.getLocText("Set")); + set.setToolTipText(Inter.getLocText("FR-Designer_Set")); this.add(clear); this.add(selectedall); @@ -84,8 +85,15 @@ public class LogHandlerBar extends JPanel implements ItemSelectable { timerPaint(); } - public synchronized void timerPaint() { - repaint(); + + private AtomicBoolean painting = new AtomicBoolean(false); + + public void timerPaint() { + if(!painting.get()) { + painting.set(true); + repaint(); + painting.set(false); + } } public int getInfo() { @@ -165,11 +173,16 @@ public class LogHandlerBar extends JPanel implements ItemSelectable { Insets insets = target.getInsets(); int top = insets.top; int right = target.getWidth() - insets.right; - clear.setBounds(right - 130, top + 4, clear.getPreferredSize().width, clear.getPreferredSize().height); - selectedall.setBounds(right - 100, top + 4, selectedall.getPreferredSize().width, selectedall.getPreferredSize().height); - set.setBounds(right - 70, top + 4, set.getPreferredSize().width, set.getPreferredSize().height); + clear.setBounds(right - CLEAR_OFFSET, top + TOP_OFFSET, clear.getPreferredSize().width, clear.getPreferredSize().height); + selectedall.setBounds(right - SELECT_OFFSET, top + TOP_OFFSET, selectedall.getPreferredSize().width, selectedall.getPreferredSize().height); + set.setBounds(right - SET_OFFSET, top + TOP_OFFSET, set.getPreferredSize().width, set.getPreferredSize().height); } + + private static final int CLEAR_OFFSET = 130; + private static final int TOP_OFFSET = 4; + private static final int SELECT_OFFSET = 100; + private static final int SET_OFFSET = 70; } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/roleAuthority/ReportAndFSManagePane.java b/designer_base/src/com/fr/design/roleAuthority/ReportAndFSManagePane.java index 4555c336bb..6955128743 100644 --- a/designer_base/src/com/fr/design/roleAuthority/ReportAndFSManagePane.java +++ b/designer_base/src/com/fr/design/roleAuthority/ReportAndFSManagePane.java @@ -1 +1,547 @@ -package com.fr.design.roleAuthority; import com.fr.base.BaseUtils; import com.fr.base.FRCoreContext; import com.fr.design.actions.UpdateAction; import com.fr.design.constants.UIConstants; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.tabledata.Prepare4DataSourceChange; import com.fr.design.gui.ibutton.UIHeadGroup; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.itoolbar.UIToolbar; import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DockingView; import com.fr.design.menu.ToolBarDef; import com.fr.general.Inter; import com.fr.general.VT4FR; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.TreeSelectionEvent; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Enumeration; /** * 设计器左下角面板,用于在权限编辑时存放角色 * Author : daisy * Date: 13-8-30 * Time: 下午2:22 */ public class ReportAndFSManagePane extends DockingView implements Prepare4DataSourceChange { private static final int REPORT_PLATEFORM_MANAGE = 0; private static final int FS_MANAGE = 1; private static final int LEFT_GAP = -125; private static boolean isSupportFS = false; private TreePath treePath = null; private static ReportAndFSManagePane singleton = new ReportAndFSManagePane(); private static RoleTree roleTree; // carl:我先屏了,现在半拉子,等客户要了再好好做 // private AddAction addAction = new AddAction(); // private RemoveAction removeAction = new RemoveAction(); private RefreshAction refreshAction = new RefreshAction(); private UIHeadGroup buttonGroup; private RoleSourceOP op; protected String[] roleNames = new String[2]; public synchronized static ReportAndFSManagePane getInstance() { singleton.op = new RoleSourceOP(); singleton.op.setDataMode(isSupportFS ? FS_MANAGE : REPORT_PLATEFORM_MANAGE); singleton.setDefaultSelectedRole(); return singleton; } public ReportAndFSManagePane() { initRoleTree(); this.setLayout(new BorderLayout(4, 0)); this.setBorder(null); this.add(iniToolBarPane(), BorderLayout.NORTH); refreshAction.setEnabled(true); UIScrollPane scrollPane = new UIScrollPane(roleTree); scrollPane.setBorder(BorderFactory.createEmptyBorder(0, 24, 0, 0)); scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); initbuttonGroup(); JPanel jPanel = new JPanel(new BorderLayout(4, 4)); JPanel buttonPane = new JPanel(new GridLayout()); buttonPane.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, UIConstants.LINE_COLOR)); buttonPane.add(buttonGroup, BorderLayout.CENTER); jPanel.add(buttonPane, BorderLayout.NORTH); jPanel.add(scrollPane, BorderLayout.CENTER); this.add(jPanel, BorderLayout.CENTER); registerDSChangeListener(); } private void initRoleTree() { roleTree = new RoleTree() { public void refreshRoleTree(String selectedRole) { super.refreshRoleTree(selectedRole); changeAlreadyEditedPaneRole(selectedRole); } protected void doWithValueChanged(TreeSelectionEvent e) { super.doWithValueChanged(e); TreeNode root = (TreeNode) roleTree.getModel().getRoot(); TreePath parent = new TreePath(root); setSelectedRole(roleTree.getSelectedRoleName(), parent); } protected void setTabRoleName(String roleName) { roleNames[getMode()] = roleTree.getSelectedRoleName(); } }; roleTree.setEnabled(true); roleTree.setEditable(false); // RoleTreeCellEditor treeCellEditor = new RoleTreeCellEditor(new UITextField()); // treeCellEditor.addCellEditorListener(treeCellEditor); // roleTree.setCellEditor(treeCellEditor); roleTree.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { super.mouseClicked(e); roleTree.setEditable(false); // int row = roleTree.getRowForLocation(e.getX(), e.getY()); // TreePath path = roleTree.getPathForLocation(e.getX(), e.getY()); // if (e.getClickCount() == 2 && buttonGroup.getSelectedIndex() == REPORT_PLATEFORM_MANAGE) { // PrivilegeManagerProvider pm = PrivilegeManager.getProviderInstance(); // AuthenticationProvider ap = pm.getAuthenticationProvider(); // if (!(ap instanceof DaoAuthenticationProvider)) { // roleTree.setEditable(true); // roleTree.startEditingAtPath(path); // treePath = path; // } // } } }); } private void changeAlreadyEditedPaneRole(String selectedRole) { RolesAlreadyEditedPane.getInstance().refreshDockingView(); RoleTree roleTree = RolesAlreadyEditedPane.getInstance().getRoleTree(); TreeNode root = (TreeNode) roleTree.getModel().getRoot(); TreePath parent = new TreePath(root); roleTree.setSelectedRole(selectedRole, parent); } public void setDefaultSelectedRole() { //设置选中的节点 TreeNode root = (TreeNode) roleTree.getModel().getRoot(); TreePath parent = new TreePath(root); ExpandMutableTreeNode node = (ExpandMutableTreeNode) parent.getLastPathComponent(); String selectedRole = null; if (singleton != null) { selectedRole = roleNames[getMode()]; } if (selectedRole == null) { if (node.getChildCount() <= 0 || node.getFirstChild().getChildCount() <= 0) { return; } selectedRole = node.getFirstChild().getChildAt(0).toString(); } roleTree.setSelectedRole(selectedRole, parent); } public RoleTree getRoleTree() { return roleTree; } /** * 检查f) 每增删改一个角色信息(及时保存),先对比下privilege下之前的角色信息有没有发生变化(即在此期间有没有在其他途径中修改过) */ private void checkChanges() { //如若有变化,则弹出下面的对话框 int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("FR-Designer_Role_changed_isRefresh") + "?", Inter.getLocText("FR-Designer_Refresh"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE); if (returnVal == JOptionPane.OK_OPTION) { roleTree.refreshTreeNode(); expandTree(roleTree, true); roleTree.updateUI(); } } private JPanel iniToolBarPane() { ToolBarDef toolbarDef = new ToolBarDef(); toolbarDef.addShortCut(refreshAction); UIToolbar toolBar = ToolBarDef.createJToolBar(); toolbarDef.updateToolBar(toolBar); JPanel toolbarPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); toolbarPane.add(toolBar, BorderLayout.CENTER); return toolbarPane; } private void initbuttonGroup() { isSupportFS = supportFineDecision(); Icon[] iconArray = null; String[] textArray = null; if (isSupportFS) { iconArray = new Icon[]{BaseUtils.readIcon("/com/fr/web/images/platform/demo.png")}; textArray = new String[]{Inter.getLocText("FR-Designer_FS_Name")}; } else { iconArray = new Icon[]{BaseUtils.readIcon("/com/fr/web/images/platform/platform_16_16.png")}; textArray = new String[]{Inter.getLocText("M_Server-Platform_Manager")}; } buttonGroup = new UIHeadGroup(iconArray, textArray) { public void tabChanged(int index) { roleTree.setEditable(false); if (op != null) { op.setDataMode(getMode()); //判断是否可编辑 refreshDockingView(); } setDefaultSelectedRole(); if (singleton != null) { changeAlreadyEditedPaneRole(roleNames[getMode()]); } } }; buttonGroup.setBorder(BorderFactory.createMatteBorder(1, LEFT_GAP, 0, 0, UIConstants.LINE_COLOR)); buttonGroup.setNeedLeftRightOutLine(false); } private boolean supportFineDecision() { byte[] bytes = FRCoreContext.getBytes(); return VT4FR.isLicAvailable(bytes) && VT4FR.FS_BI.support(); } private int getMode(){ return isSupportFS?FS_MANAGE: REPORT_PLATEFORM_MANAGE; } // /** // * 检查看看是否可以增删刷新按钮是都可以编辑,并且检查角色树是不是可以编辑 // */ // public void checkToolButtonsEnabled() { // if (buttonGroup.getSelectedIndex() == REPORT_PLATEFORM_MANAGE) { // PrivilegeManagerProvider pm = PrivilegeManager.getProviderInstance(); // AuthenticationProvider ap = pm.getAuthenticationProvider(); // PrivilegeFilter pf = pm.getPrivilegeFilter(); // boolean isClickable = !(ap instanceof DaoAuthenticationProvider) // && pf instanceof AuthorityControlFilter; // addAction.setEnabled(isClickable); // removeAction.setEnabled(isClickable); // } else { // addAction.setEnabled(false); // removeAction.setEnabled(false); // } // // } /** * 刷新界面 */ public void refreshDockingView() { populate(new RoleSourceOP()); // this.checkToolButtonsEnabled(); } private void populate(RoleSourceOP op) { this.op = op; roleTree.populate(op); expandTree(roleTree, true); } public String getViewTitle() { return null; } public Icon getViewIcon() { return null; } /** * 最佳定位 * @return 定位 */ public Location preferredLocation() { return null; } /** * 注册数据库改变的响应的Listener */ public void registerDSChangeListener() { DesignTableDataManager.addDsChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { roleTree.refreshTreeNode(); expandTree(roleTree, true); roleTree.updateUI(); } }); } // private class AddAction extends UpdateAction { // public AddAction() { // this.setName(Inter.getLocText("Add")); // this.setSmallIcon(BaseUtils.readIcon("/com/fr/base/images/cell/control/add.png")); // } // // @Override // public void actionPerformed(ActionEvent e) { // refreshDockingView(); // // DefaultTreeModel treeModel = (DefaultTreeModel) roleTree.getModel(); // ExpandMutableTreeNode root = (ExpandMutableTreeNode) treeModel.getRoot(); // ExpandMutableTreeNode parentNode = (ExpandMutableTreeNode) root.getChildAt(0); // String newName = Inter.getLocText("newNode") + (++newIndex); // parentNode.add(new ExpandMutableTreeNode(newName)); // op.addAction(newName); // roleTree.updateUI(); // // try { // synchronized (AuthorityRoleDAOManager.class) { // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(true); // // if (AuthorityRoleDAOManager.getAuthorityAllocation(pf, newName) != null) { // newName = Inter.getLocText("newNode") + (++newIndex); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // } // // AuthorityRoleDAOManager.addAuthorityRole(pf, new Authority(newName), new Allocation(), false, true); // // AuthorityRoleDAOManager.doEnd(pf); // } // } catch (Exception e1) { // FRContext.getLogger().error(e1.getMessage(), e1); // } // } // } // private class RemoveAction extends UpdateAction { // // public RemoveAction() { // this.setName(Inter.getLocText("Remove")); // this.setSmallIcon(UIConstants.CLEAR_ICON); // } // // @Override // public void actionPerformed(ActionEvent e) { // // // NameObject selectedNO = roleTree.getSelectedNameObject(); // // if (selectedNO == null) { // return; // } // // int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("Utils-Are_you_sure_to_remove_the_selected_item") + ":" + selectedNO.getName() + "?", // Inter.getLocText("Remove"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); // if (returnVal == JOptionPane.OK_OPTION) { // op.removeAction(selectedNO.getName()); // // try { // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(true); // // AuthorityRoleDAOManager.removeAuthorityRole(pf, new Authority(selectedNO.getName()), true); // AuthorityRoleDAOManager.doEnd(pf); // } catch (Exception e1) { // FRContext.getLogger().error(e1.getMessage(), e1); // } // // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // roleTree.updateUI(); // roleTree.requestFocus(); // roleTree.setSelectionRow(roleTree.getRowCount() - 1); // } // } // } /* * 刷新ReportletsTree */ private class RefreshAction extends UpdateAction { public RefreshAction() { this.setName(Inter.getLocText("FR-Designer_Refresh")); this.setSmallIcon(UIConstants.REFRESH_ICON); } @Override public void actionPerformed(ActionEvent evt) { roleTree.refreshTreeNode(); expandTree(roleTree, true); roleTree.updateUI(); } } // private class RoleTreeCellEditor extends DefaultCellEditor implements TreeCellEditor, CellEditorListener { // // private NameObject editingNO; // private String oldName; // private String newName; // private UITextField jTextField; // // public RoleTreeCellEditor(final UITextField textField) { // super(textField); // this.jTextField = textField; // this.jTextField.setPreferredSize(new Dimension(DesignerEnvManager.getEnvManager().getLastWestRegionContainerWidth() - 5, this.jTextField.getHeight())); // } // // @Override // public Component getTreeCellEditorComponent(JTree tree, Object value, boolean isSelected, boolean expanded, boolean leaf, int row) { // editingNO = ReportAndFSManagePane.this.roleTree.getSelectedNameObject(); // oldName = editingNO.getName(); // // delegate.setValue(oldName); // // editorComponent.setPreferredSize(new java.awt.Dimension(ReportAndFSManagePane.this.getPreferredSize().width, editorComponent.getPreferredSize().height)); // // return editorComponent; // } // // @Override // // public boolean isCellEditable(EventObject anEvent) { // NameObject no = ReportAndFSManagePane.this.roleTree.getSelectedNameObject(); // return !(no.getName() == Inter.getLocText("Role")); // } // // @Override // public Object getCellEditorValue() { // newName = super.getCellEditorValue().toString(); // editingNO.setName(newName); // return editingNO; // } // // // private boolean checkRoleNameNotEmpty() { // refreshDockingView(); // // String currentText = delegate.getCellEditorValue().toString(); // boolean isContained = false; // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(false); // if (pf != null && // !ComparatorUtils.equals(oldName, currentText)) { // try { // Iterator iterator = AuthorityRoleDAOManager.authorityAllocationIterator(pf); // // while (iterator.hasNext()) { // AuthorityAllocation authorityAllocation = (AuthorityAllocation) ((Map.Entry) iterator.next()) // .getValue(); // Authority _authority = authorityAllocation.getAuthority(); // if(ComparatorUtils.equals(_authority.getName(), currentText)){ // isContained = true; // break; // } // } // } catch (Exception e) { // } // } // // if (currentText.isEmpty() || isContained) { // JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("RoleName_Can_Not_Be_Null") + "!"); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // delegate.setValue(oldName); // return false; // } // return true; // } // // /* // * 下面两个方法是CellEditorListener的 // */ // @Override // public void editingCanceled(ChangeEvent e) { // if (!checkRoleNameNotEmpty()) { // treePath = null; // return; // } // roleTree.stopEditing(); // if (treePath == null) { // return; // } // changeValue(); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // } // // @Override // public void editingStopped(ChangeEvent e) { // if (!checkRoleNameNotEmpty()) { // treePath = null; // return; // } // changeValue(); // roleTree.refreshTreeNode(); // expandTree(roleTree, true); // roleTree.updateUI(); // } // // private void changeValue() { // newName = delegate.getCellEditorValue().toString(); // if (!newName.isEmpty() && newName != oldName) { // roleTree.setSelectedRoleName(newName); // op.rename(oldName, newName); // // AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(false); // if (pf != null) { // try { // Iterator iterator = AuthorityRoleDAOManager.authorityAllocationIterator(pf); // // while (iterator.hasNext()) { // AuthorityAllocation authorityAllocation = (AuthorityAllocation) ((Map.Entry) iterator.next()) // .getValue(); // Authority _authority = authorityAllocation.getAuthority(); // if (ComparatorUtils.equals(_authority.getName(), oldName)) { // _authority.setName(newName); // } // } // } catch (Exception e) { // } // } // // try { // AuthorityRoleDAOManager.doEnd(pf); // } catch (Exception e) { // FRContext.getLogger().error(e.getMessage(), e); // } // } // } // } /** * 展开树 * @param tree 树 * @param isExpand 是否展开 */ public void expandTree(JTree tree, boolean isExpand) { TreeNode root = (TreeNode) tree.getModel().getRoot(); expandAll(tree, new TreePath(root), isExpand); } private void expandAll(JTree tree, TreePath parent, boolean expand) { TreeNode node = (TreeNode) parent.getLastPathComponent(); if (node.getChildCount() >= 0) { for (Enumeration e = node.children(); e.hasMoreElements(); ) { TreeNode n = (TreeNode) e.nextElement(); TreePath path = parent.pathByAddingChild(n); expandAll(tree, path, expand); } } if (expand) { tree.expandPath(parent); } else { tree.collapsePath(parent); } } } \ No newline at end of file +package com.fr.design.roleAuthority; + +import com.fr.base.BaseUtils; +import com.fr.base.FRCoreContext; +import com.fr.design.actions.UpdateAction; +import com.fr.design.constants.UIConstants; +import com.fr.design.data.DesignTableDataManager; +import com.fr.design.data.tabledata.Prepare4DataSourceChange; +import com.fr.design.gui.ibutton.UIHeadGroup; +import com.fr.design.gui.icontainer.UIScrollPane; +import com.fr.design.gui.itoolbar.UIToolbar; +import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.DockingView; +import com.fr.design.menu.ToolBarDef; +import com.fr.general.Inter; +import com.fr.general.VT4FR; + +import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.event.TreeSelectionEvent; +import javax.swing.tree.TreeNode; +import javax.swing.tree.TreePath; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.Enumeration; + +/** + * 设计器左下角面板,用于在权限编辑时存放角色 + * Author : daisy + * Date: 13-8-30 + * Time: 下午2:22 + */ +public class ReportAndFSManagePane extends DockingView implements Prepare4DataSourceChange { + + private static final int REPORT_PLATEFORM_MANAGE = 0; + private static final int FS_MANAGE = 1; + private static final int LEFT_GAP = -125; + private static boolean isSupportFS = false; + private TreePath treePath = null; + + private static ReportAndFSManagePane singleton = new ReportAndFSManagePane(); + + private static RoleTree roleTree; + // carl:我先屏了,现在半拉子,等客户要了再好好做 +// private AddAction addAction = new AddAction(); +// private RemoveAction removeAction = new RemoveAction(); + private RefreshAction refreshAction = new RefreshAction(); + private UIHeadGroup buttonGroup; + private RoleSourceOP op; + protected String[] roleNames = new String[2]; + + public synchronized static ReportAndFSManagePane getInstance() { + singleton.op = new RoleSourceOP(); + singleton.op.setDataMode(isSupportFS ? FS_MANAGE : REPORT_PLATEFORM_MANAGE); + singleton.setDefaultSelectedRole(); + return singleton; + + } + + public ReportAndFSManagePane() { + initRoleTree(); + this.setLayout(new BorderLayout(4, 0)); + this.setBorder(null); + this.add(iniToolBarPane(), BorderLayout.NORTH); + refreshAction.setEnabled(true); + UIScrollPane scrollPane = new UIScrollPane(roleTree); + scrollPane.setBorder(BorderFactory.createEmptyBorder(0, 24, 0, 0)); + scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); + scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); + initbuttonGroup(); + JPanel jPanel = new JPanel(new BorderLayout(4, 4)); + JPanel buttonPane = new JPanel(new GridLayout()); + buttonPane.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, UIConstants.LINE_COLOR)); + buttonPane.add(buttonGroup, BorderLayout.CENTER); + jPanel.add(buttonPane, BorderLayout.NORTH); + jPanel.add(scrollPane, BorderLayout.CENTER); + this.add(jPanel, BorderLayout.CENTER); + registerDSChangeListener(); + } + + private void initRoleTree() { + roleTree = new RoleTree() { + public void refreshRoleTree(String selectedRole) { + super.refreshRoleTree(selectedRole); + changeAlreadyEditedPaneRole(selectedRole); + } + + + protected void doWithValueChanged(TreeSelectionEvent e) { + super.doWithValueChanged(e); + TreeNode root = (TreeNode) roleTree.getModel().getRoot(); + TreePath parent = new TreePath(root); + setSelectedRole(roleTree.getSelectedRoleName(), parent); + + } + + protected void setTabRoleName(String roleName) { + roleNames[getMode()] = roleTree.getSelectedRoleName(); + } + }; + roleTree.setEnabled(true); + roleTree.setEditable(false); +// RoleTreeCellEditor treeCellEditor = new RoleTreeCellEditor(new UITextField()); +// treeCellEditor.addCellEditorListener(treeCellEditor); +// roleTree.setCellEditor(treeCellEditor); + roleTree.addMouseListener(new MouseAdapter() { + public void mouseClicked(MouseEvent e) { + super.mouseClicked(e); + roleTree.setEditable(false); +// int row = roleTree.getRowForLocation(e.getX(), e.getY()); +// TreePath path = roleTree.getPathForLocation(e.getX(), e.getY()); +// if (e.getClickCount() == 2 && buttonGroup.getSelectedIndex() == REPORT_PLATEFORM_MANAGE) { +// PrivilegeManagerProvider pm = PrivilegeManager.getProviderInstance(); +// AuthenticationProvider ap = pm.getAuthenticationProvider(); +// if (!(ap instanceof DaoAuthenticationProvider)) { +// roleTree.setEditable(true); +// roleTree.startEditingAtPath(path); +// treePath = path; +// } +// } + } + }); + } + + private void changeAlreadyEditedPaneRole(String selectedRole) { + RolesAlreadyEditedPane.getInstance().refreshDockingView(); + RoleTree roleTree = RolesAlreadyEditedPane.getInstance().getRoleTree(); + TreeNode root = (TreeNode) roleTree.getModel().getRoot(); + TreePath parent = new TreePath(root); + roleTree.setSelectedRole(selectedRole, parent); + } + + public void setDefaultSelectedRole() { + //设置选中的节点 + TreeNode root = (TreeNode) roleTree.getModel().getRoot(); + TreePath parent = new TreePath(root); + ExpandMutableTreeNode node = (ExpandMutableTreeNode) parent.getLastPathComponent(); + String selectedRole = null; + if (singleton != null) { + selectedRole = roleNames[getMode()]; + } + if (selectedRole == null) { + if (node.getChildCount() <= 0 || node.getFirstChild().getChildCount() <= 0) { + return; + } + selectedRole = node.getFirstChild().getChildAt(0).toString(); + } + roleTree.setSelectedRole(selectedRole, parent); + } + + + public RoleTree getRoleTree() { + return roleTree; + } + + /** + * 检查f) 每增删改一个角色信息(及时保存),先对比下privilege下之前的角色信息有没有发生变化(即在此期间有没有在其他途径中修改过) + */ + private void checkChanges() { + //如若有变化,则弹出下面的对话框 + int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("FR-Designer_Role_changed_isRefresh") + "?", + Inter.getLocText("FR-Designer_Refresh"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE); + if (returnVal == JOptionPane.OK_OPTION) { + roleTree.refreshTreeNode(); + expandTree(roleTree, true); + roleTree.updateUI(); + } + + } + + private JPanel iniToolBarPane() { + ToolBarDef toolbarDef = new ToolBarDef(); + toolbarDef.addShortCut(refreshAction); + UIToolbar toolBar = ToolBarDef.createJToolBar(); + toolbarDef.updateToolBar(toolBar); + JPanel toolbarPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + toolbarPane.add(toolBar, BorderLayout.CENTER); + return toolbarPane; + } + + private void initbuttonGroup() { + isSupportFS = VT4FR.isLicAvailable(FRCoreContext.getBytes()) && VT4FR.FS_BI.support(); + Icon[] iconArray = null; + String[] textArray = null; + if (isSupportFS) { + iconArray = new Icon[]{BaseUtils.readIcon("/com/fr/web/images/platform/demo.png")}; + textArray = new String[]{Inter.getLocText("FR-Designer_FS_Name")}; + } else { + iconArray = new Icon[]{BaseUtils.readIcon("/com/fr/web/images/platform/platform_16_16.png")}; + textArray = new String[]{Inter.getLocText("M_Server-Platform_Manager")}; + } + buttonGroup = new UIHeadGroup(iconArray, textArray) { + public void tabChanged(int index) { + roleTree.setEditable(false); + if (op != null) { + op.setDataMode(getMode()); + //判断是否可编辑 + refreshDockingView(); + } + setDefaultSelectedRole(); + if (singleton != null) { + changeAlreadyEditedPaneRole(roleNames[getMode()]); + } + } + }; + buttonGroup.setBorder(BorderFactory.createMatteBorder(1, LEFT_GAP, 0, 0, UIConstants.LINE_COLOR)); + buttonGroup.setNeedLeftRightOutLine(false); + } + + private int getMode(){ + return isSupportFS?FS_MANAGE: REPORT_PLATEFORM_MANAGE; + } + + +// /** +// * 检查看看是否可以增删刷新按钮是都可以编辑,并且检查角色树是不是可以编辑 +// */ +// public void checkToolButtonsEnabled() { +// if (buttonGroup.getSelectedIndex() == REPORT_PLATEFORM_MANAGE) { +// PrivilegeManagerProvider pm = PrivilegeManager.getProviderInstance(); +// AuthenticationProvider ap = pm.getAuthenticationProvider(); +// PrivilegeFilter pf = pm.getPrivilegeFilter(); +// boolean isClickable = !(ap instanceof DaoAuthenticationProvider) +// && pf instanceof AuthorityControlFilter; +// addAction.setEnabled(isClickable); +// removeAction.setEnabled(isClickable); +// } else { +// addAction.setEnabled(false); +// removeAction.setEnabled(false); +// } +// +// } + + + /** + * 刷新界面 + */ + public void refreshDockingView() { + populate(new RoleSourceOP()); +// this.checkToolButtonsEnabled(); + } + + private void populate(RoleSourceOP op) { + this.op = op; + roleTree.populate(op); + expandTree(roleTree, true); + } + + public String getViewTitle() { + return null; + } + + public Icon getViewIcon() { + return null; + } + + /** + * 最佳定位 + * @return 定位 + */ + public Location preferredLocation() { + return null; + } + + /** + * 注册数据库改变的响应的Listener + */ + public void registerDSChangeListener() { + DesignTableDataManager.addDsChangeListener(new ChangeListener() { + + public void stateChanged(ChangeEvent e) { + roleTree.refreshTreeNode(); + expandTree(roleTree, true); + roleTree.updateUI(); + } + }); + + } + +// private class AddAction extends UpdateAction { +// public AddAction() { +// this.setName(Inter.getLocText("Add")); +// this.setSmallIcon(BaseUtils.readIcon("/com/fr/base/images/cell/control/add.png")); +// } +// +// @Override +// public void actionPerformed(ActionEvent e) { +// refreshDockingView(); +// +// DefaultTreeModel treeModel = (DefaultTreeModel) roleTree.getModel(); +// ExpandMutableTreeNode root = (ExpandMutableTreeNode) treeModel.getRoot(); +// ExpandMutableTreeNode parentNode = (ExpandMutableTreeNode) root.getChildAt(0); +// String newName = Inter.getLocText("newNode") + (++newIndex); +// parentNode.add(new ExpandMutableTreeNode(newName)); +// op.addAction(newName); +// roleTree.updateUI(); +// +// try { +// synchronized (AuthorityRoleDAOManager.class) { +// AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(true); +// +// if (AuthorityRoleDAOManager.getAuthorityAllocation(pf, newName) != null) { +// newName = Inter.getLocText("newNode") + (++newIndex); +// roleTree.refreshTreeNode(); +// expandTree(roleTree, true); +// } +// +// AuthorityRoleDAOManager.addAuthorityRole(pf, new Authority(newName), new Allocation(), false, true); +// +// AuthorityRoleDAOManager.doEnd(pf); +// } +// } catch (Exception e1) { +// FRContext.getLogger().error(e1.getMessage(), e1); +// } +// } +// } + +// private class RemoveAction extends UpdateAction { +// +// public RemoveAction() { +// this.setName(Inter.getLocText("Remove")); +// this.setSmallIcon(UIConstants.CLEAR_ICON); +// } +// +// @Override +// public void actionPerformed(ActionEvent e) { +// +// +// NameObject selectedNO = roleTree.getSelectedNameObject(); +// +// if (selectedNO == null) { +// return; +// } +// +// int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("Utils-Are_you_sure_to_remove_the_selected_item") + ":" + selectedNO.getName() + "?", +// Inter.getLocText("Remove"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); +// if (returnVal == JOptionPane.OK_OPTION) { +// op.removeAction(selectedNO.getName()); +// +// try { +// AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(true); +// +// AuthorityRoleDAOManager.removeAuthorityRole(pf, new Authority(selectedNO.getName()), true); +// AuthorityRoleDAOManager.doEnd(pf); +// } catch (Exception e1) { +// FRContext.getLogger().error(e1.getMessage(), e1); +// } +// +// roleTree.refreshTreeNode(); +// expandTree(roleTree, true); +// roleTree.updateUI(); +// roleTree.requestFocus(); +// roleTree.setSelectionRow(roleTree.getRowCount() - 1); +// } +// } +// } + + + /* + * 刷新ReportletsTree + */ + private class RefreshAction extends UpdateAction { + + public RefreshAction() { + this.setName(Inter.getLocText("FR-Designer_Refresh")); + this.setSmallIcon(UIConstants.REFRESH_ICON); + } + + @Override + public void actionPerformed(ActionEvent evt) { + roleTree.refreshTreeNode(); + expandTree(roleTree, true); + roleTree.updateUI(); + } + } + + +// private class RoleTreeCellEditor extends DefaultCellEditor implements TreeCellEditor, CellEditorListener { +// +// private NameObject editingNO; +// private String oldName; +// private String newName; +// private UITextField jTextField; +// +// public RoleTreeCellEditor(final UITextField textField) { +// super(textField); +// this.jTextField = textField; +// this.jTextField.setPreferredSize(new Dimension(DesignerEnvManager.getEnvManager().getLastWestRegionContainerWidth() - 5, this.jTextField.getHeight())); +// } +// +// @Override +// public Component getTreeCellEditorComponent(JTree tree, Object value, boolean isSelected, boolean expanded, boolean leaf, int row) { +// editingNO = ReportAndFSManagePane.this.roleTree.getSelectedNameObject(); +// oldName = editingNO.getName(); +// +// delegate.setValue(oldName); +// +// editorComponent.setPreferredSize(new java.awt.Dimension(ReportAndFSManagePane.this.getPreferredSize().width, editorComponent.getPreferredSize().height)); +// +// return editorComponent; +// } +// +// @Override +// +// public boolean isCellEditable(EventObject anEvent) { +// NameObject no = ReportAndFSManagePane.this.roleTree.getSelectedNameObject(); +// return !(no.getName() == Inter.getLocText("Role")); +// } +// +// @Override +// public Object getCellEditorValue() { +// newName = super.getCellEditorValue().toString(); +// editingNO.setName(newName); +// return editingNO; +// } +// +// +// private boolean checkRoleNameNotEmpty() { +// refreshDockingView(); +// +// String currentText = delegate.getCellEditorValue().toString(); +// boolean isContained = false; +// AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(false); +// if (pf != null && +// !ComparatorUtils.equals(oldName, currentText)) { +// try { +// Iterator iterator = AuthorityRoleDAOManager.authorityAllocationIterator(pf); +// +// while (iterator.hasNext()) { +// AuthorityAllocation authorityAllocation = (AuthorityAllocation) ((Map.Entry) iterator.next()) +// .getValue(); +// Authority _authority = authorityAllocation.getAuthority(); +// if(ComparatorUtils.equals(_authority.getName(), currentText)){ +// isContained = true; +// break; +// } +// } +// } catch (Exception e) { +// } +// } +// +// if (currentText.isEmpty() || isContained) { +// JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("RoleName_Can_Not_Be_Null") + "!"); +// roleTree.refreshTreeNode(); +// expandTree(roleTree, true); +// delegate.setValue(oldName); +// return false; +// } +// return true; +// } +// +// /* +// * 下面两个方法是CellEditorListener的 +// */ +// @Override +// public void editingCanceled(ChangeEvent e) { +// if (!checkRoleNameNotEmpty()) { +// treePath = null; +// return; +// } +// roleTree.stopEditing(); +// if (treePath == null) { +// return; +// } +// changeValue(); +// roleTree.refreshTreeNode(); +// expandTree(roleTree, true); +// } +// +// @Override +// public void editingStopped(ChangeEvent e) { +// if (!checkRoleNameNotEmpty()) { +// treePath = null; +// return; +// } +// changeValue(); +// roleTree.refreshTreeNode(); +// expandTree(roleTree, true); +// roleTree.updateUI(); +// } +// +// private void changeValue() { +// newName = delegate.getCellEditorValue().toString(); +// if (!newName.isEmpty() && newName != oldName) { +// roleTree.setSelectedRoleName(newName); +// op.rename(oldName, newName); +// +// AuthorityControlFilter pf = AuthorityRoleDAOManager.getAuthControlFilter(false); +// if (pf != null) { +// try { +// Iterator iterator = AuthorityRoleDAOManager.authorityAllocationIterator(pf); +// +// while (iterator.hasNext()) { +// AuthorityAllocation authorityAllocation = (AuthorityAllocation) ((Map.Entry) iterator.next()) +// .getValue(); +// Authority _authority = authorityAllocation.getAuthority(); +// if (ComparatorUtils.equals(_authority.getName(), oldName)) { +// _authority.setName(newName); +// } +// } +// } catch (Exception e) { +// } +// } +// +// try { +// AuthorityRoleDAOManager.doEnd(pf); +// } catch (Exception e) { +// FRContext.getLogger().error(e.getMessage(), e); +// } +// } +// } +// } + + + /** + * 展开树 + * @param tree 树 + * @param isExpand 是否展开 + */ + public void expandTree(JTree tree, boolean isExpand) { + TreeNode root = (TreeNode) tree.getModel().getRoot(); + expandAll(tree, new TreePath(root), isExpand); + } + + + private void expandAll(JTree tree, TreePath parent, boolean expand) { + TreeNode node = (TreeNode) parent.getLastPathComponent(); + if (node.getChildCount() >= 0) { + for (Enumeration e = node.children(); e.hasMoreElements(); ) { + TreeNode n = (TreeNode) e.nextElement(); + TreePath path = parent.pathByAddingChild(n); + expandAll(tree, path, expand); + } + } + if (expand) { + tree.expandPath(parent); + } else { + tree.collapsePath(parent); + } + } + +} \ No newline at end of file diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 3c25fc7ff0..41e4860d2b 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -1,14 +1,6 @@ package com.fr.env; -import com.fr.base.AbstractEnv; -import com.fr.base.EnvException; -import com.fr.base.FRContext; -import com.fr.base.FRCoreContext; -import com.fr.base.ModifiedTable; -import com.fr.base.Parameter; -import com.fr.base.StoreProcedureParameter; -import com.fr.base.TableData; -import com.fr.base.Utils; +import com.fr.base.*; import com.fr.base.remote.RemoteDeziConstants; import com.fr.data.core.DataCoreUtils; import com.fr.data.core.db.TableProcedure; @@ -25,34 +17,17 @@ import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.fun.DesignerEnvProcessor; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrameFileDealerPane; -import com.fr.design.mainframe.loghandler.DesignerLogHandler; import com.fr.file.CacheManager; import com.fr.file.DatasourceManager; import com.fr.file.DatasourceManagerProvider; import com.fr.file.filetree.FileNode; -import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; -import com.fr.general.IOUtils; -import com.fr.general.Inter; -import com.fr.general.LogRecordTime; -import com.fr.general.VT4FR; +import com.fr.general.*; import com.fr.general.http.HttpClient; import com.fr.json.JSONArray; import com.fr.json.JSONException; import com.fr.json.JSONObject; -import com.fr.plugin.Plugin; -import com.fr.plugin.PluginLicense; -import com.fr.plugin.PluginLicenseManager; -import com.fr.plugin.PluginLoader; import com.fr.share.ShareConstants; -import com.fr.stable.ArrayUtils; -import com.fr.stable.EncodeConstants; -import com.fr.stable.JavaCompileInfo; -import com.fr.stable.LicUtils; -import com.fr.stable.ProductConstants; -import com.fr.stable.StableUtils; -import com.fr.stable.StringUtils; -import com.fr.stable.SvgProvider; +import com.fr.stable.*; import com.fr.stable.file.XMLFileManagerProvider; import com.fr.stable.project.ProjectConstants; import com.fr.stable.xml.XMLPrintWriter; @@ -61,37 +36,17 @@ import com.fr.stable.xml.XMLableReader; import com.fr.web.ResourceConstants; import javax.swing.*; -import javax.xml.transform.Source; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerConfigurationException; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; +import javax.xml.transform.*; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import java.awt.*; -import java.io.BufferedReader; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.FilenameFilter; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.io.UnsupportedEncodingException; +import java.io.*; import java.net.HttpURLConnection; import java.net.NoRouteToHostException; import java.net.Socket; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; +import java.util.*; import java.util.List; -import java.util.Map; import java.util.Timer; -import java.util.TimerTask; import java.util.logging.Level; import java.util.regex.Pattern; @@ -428,7 +383,6 @@ public class RemoteEnv extends AbstractEnv { private void extraChangeEnvPara() { //在env连接之前, 加载一下不依赖env的插件. 看看需不需要改变参数. - PluginLoader.init(); DesignerEnvProcessor envProcessor = ExtraDesignClassManager.getInstance().getSingle(DesignerEnvProcessor.XML_TAG); if (envProcessor != null) { this.path = envProcessor.changeEnvPathBeforeConnect(user, password, path); @@ -1427,17 +1381,13 @@ public class RemoteEnv extends AbstractEnv { return; } SignIn.signIn(remoteEnv); - resetLicenseBytes(); + FRCoreContext.resetBytes(); HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshToolArea(); } catch (Exception em) { FRContext.getLogger().error(em.getMessage(), em); } } - private void resetLicenseBytes() { - FRCoreContext.retryLicLock(); - } - /** * 停止连接 */ @@ -1837,8 +1787,7 @@ public class RemoteEnv extends AbstractEnv { } LogRecordTime[] records = DavXMLUtils.readXMLLogRecords(input); for (LogRecordTime logRecordTime : records) { - DesignerLogHandler.getInstance().printRemoteLog(logRecordTime); - + //TODO } } @@ -2037,7 +1986,8 @@ public class RemoteEnv extends AbstractEnv { public void setLicName(String licName) { //do nth } - + + /** * 获取当前env的build文件路径 */ @@ -2073,74 +2023,8 @@ public class RemoteEnv extends AbstractEnv { info.parseJSON(jo); return info; } - - /** - * 将文件拷贝到插件目录 - * - * @param dir 要拷贝的文件 - * @param plugin 插件 - */ - public void copyFilesToPluginAndLibFolder(File dir, Plugin plugin) throws Exception { - - } - - /** - * 将文件添加到指定目录或者删除指定目录的文件 - * - * @param file 解压插件的临时目录 - * @param plugin 当前处理的插件 - */ - public void movePluginEmbFile(File file, Plugin plugin) throws Exception { - - } - - /** - * 将文件从插件目录删除 - * - * @param plugin 要删除插件 - * @return 同上 - */ - public String[] deleteFileFromPluginAndLibFolder(Plugin plugin) { - return new String[0]; - } - - /** - * 保存插件的配置文件 - * - * @param plugin 插件 - */ - public void writePlugin(Plugin plugin) throws Exception { - - } - - - /** - * 获取插件的配置目录 - * - * @param plugin - */ - public String getPluginFilePath(Plugin plugin) { - - return StringUtils.EMPTY; - } - - public void readPluginLicenses() throws Exception { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - HashMap para = new HashMap(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_plugin_licenses"); - - InputStream inputStream = postBytes2ServerB(out.toByteArray(), para); - String pluginsLicensesStr = IOUtils.inputStream2String(inputStream, EncodeConstants.ENCODING_UTF_8); - if (StringUtils.isNotBlank(pluginsLicensesStr) && pluginsLicensesStr.startsWith("[")) { - JSONArray jsonArray = new JSONArray(pluginsLicensesStr); - for (int i = 0; i < jsonArray.length(); i++) { - PluginLicense pluginLicense = new PluginLicense(); - pluginLicense.parseJSON(jsonArray.getJSONObject(i)); - PluginLicenseManager.getInstance().addRemotePluginLicense(pluginLicense); - } - } - } + + @Override public String pluginServiceAction(String serviceID, String req) throws Exception { @@ -2161,12 +2045,6 @@ public class RemoteEnv extends AbstractEnv { @Override public void pluginServiceStart(String serviceID){ } - - @Override - public void checkAndRegisterLic(FileNode node, Plugin plugin) throws Exception { - - } - @Override public File[] loadREUFile() throws Exception { File target = new File(CacheManager.getProviderInstance().getCacheDirectory(), @@ -2282,9 +2160,34 @@ public class RemoteEnv extends AbstractEnv { return StringUtils.EMPTY; } } - + + @Override + public boolean isLocalEnv() { + + return false; + } + @Override - public void doWhenServerShutDown() { + public boolean hasPluginServiceStarted(String key) { + return true; + } + + @Override + public JSONArray getPluginStatus() { + + try { + HashMap para = new HashMap(); + para.put("op", "plugin"); + para.put("cmd", "get_status"); + para.put("current_uid", this.createUserID()); + para.put("currentUsername", this.getUser()); + + HttpClient client = createHttpMethod(para); + InputStream input = execute4InputStream(client); + return new JSONArray(stream2String(input)); + } catch (Exception e) { + return JSONArray.create(); + } } } \ No newline at end of file diff --git a/designer_base/src/com/fr/start/BaseDesigner.java b/designer_base/src/com/fr/start/BaseDesigner.java index 5d76b6a19e..cd8b3f3b08 100644 --- a/designer_base/src/com/fr/start/BaseDesigner.java +++ b/designer_base/src/com/fr/start/BaseDesigner.java @@ -12,7 +12,7 @@ import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.file.MutilTempalteTabPane; import com.fr.design.file.TemplateTreePane; import com.fr.design.fun.DesignerStartOpenFileProcessor; -import com.fr.design.fun.GlobalListenerProvider; +import com.fr.design.fun.impl.GlobalListenerProviderManager; import com.fr.design.mainframe.DesignerFrame; import com.fr.design.mainframe.TemplatePane; import com.fr.design.mainframe.toolbar.ToolBarMenuDock; @@ -35,7 +35,6 @@ import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.lang.reflect.Method; -import java.util.Set; /** * The main class of Report Designer. @@ -49,6 +48,8 @@ public abstract class BaseDesigner extends ToolBarMenuDock { private Timer timer; public BaseDesigner(String[] args) { + BuildContext.setBuildFilePath(buildPropertiesPath()); + if (isDebug()) { setDebugEnv(); } @@ -60,15 +61,13 @@ public abstract class BaseDesigner extends ToolBarMenuDock { DesignUtils.clientSend(args); return; } - BuildContext.setBuildFilePath(buildPropertiesPath()); //下面这两句的位置不能随便调换,因为会影响语言切换的问题 initLanguage(); - // 先加载设计器的国际化文件 + // 在 initLanguage 之后加载设计器国际化文件,确保是正确的语言环境 Inter.loadLocaleFile(GeneralContext.getLocale(), DesignModule.LOCALE_FILE_PATH); - SplashWindow splashWindow = new SplashWindow(createSplashPane()); if (args != null) { for (String arg : args) { @@ -94,6 +93,8 @@ public abstract class BaseDesigner extends ToolBarMenuDock { switch2LastEnv(); initDefaultFont(); + //PluginManager要在环境切换和模块启动之前初始化 + PluginManager.registerEnvListener(); // 必须先初始化Env再去startModule, 不然会导致lic读取不到 ModuleContext.startModule(module2Start()); @@ -116,10 +117,8 @@ public abstract class BaseDesigner extends ToolBarMenuDock { } private void bindGlobalListener() { - Set providers = ExtraDesignClassManager.getInstance().getArray(GlobalListenerProvider.XML_TAG); - for (GlobalListenerProvider provider : providers) { - Toolkit.getDefaultToolkit().addAWTEventListener(provider.listener(), AWTEvent.KEY_EVENT_MASK); - } + + GlobalListenerProviderManager.getInstance().init(); } private void showErrorPluginsMessage() { diff --git a/designer_base/src/com/fr/start/StartServer.java b/designer_base/src/com/fr/start/StartServer.java index 7c5b77f524..79b3f739dc 100644 --- a/designer_base/src/com/fr/start/StartServer.java +++ b/designer_base/src/com/fr/start/StartServer.java @@ -14,7 +14,10 @@ import com.fr.env.SignIn; import com.fr.general.ComparatorUtils; import com.fr.general.GeneralContext; import com.fr.general.Inter; -import com.fr.stable.*; +import com.fr.stable.EnvChangedListener; +import com.fr.stable.ProductConstants; +import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; import com.fr.start.server.JettyHost; @@ -25,186 +28,173 @@ import java.net.URI; import java.net.URISyntaxException; public class StartServer { - public static boolean NEED_LOAD_ENV = true; - // 原先的jettyHost放在类JettyHost里面,很不方便操作,而且因为存在多个进程的原因, - // 原先的getInstance()方法无多大意义 - private static JettyHost jettyHost = null; - - static { - GeneralContext.addEnvChangedListener(new EnvChangedListener() { - public void envChanged() { - currentEnvChanged(); - } - }); - } + public static boolean NEED_LOAD_ENV = true; + // 原先的jettyHost放在类JettyHost里面,很不方便操作,而且因为存在多个进程的原因, + // 原先的getInstance()方法无多大意义 + private static JettyHost jettyHost = null; + + static { + GeneralContext.addEnvChangedListener(new EnvChangedListener() { + public void envChanged() { + currentEnvChanged(); + } + }); + } /** * 预览Demo * 找默认工作目录,不应该按照名字去找,而应该按照安装路径,因为默认工作目录的名字可能会改变。 */ - public static void browserDemoURL() { - if (ComparatorUtils.equals(StableUtils.getInstallHome(), ".")) {//august:供代码使用 - String web = GeneralContext.getCurrentAppNameOfEnv(); - browserURLWithLocalEnv("http://localhost:" + DesignerEnvManager.getEnvManager().getJettyServerPort() + "/" + web + "/" + ConfigManager.getProviderInstance().getServletMapping() - + "?op=fs"); - return; - } - DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); - if (!envManager.isCurrentEnvDefault()) { - InformationPane inf = new InformationPane(envManager.getDefaultEnvName()); - inf.showSmallWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { - @Override - public void doOk() { - try { - SignIn.signIn(DesignerEnvManager.getEnvManager().getDefaultEnv()); - TemplateTreePane.getInstance().refreshDockingView(); - TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()); - } catch (Exception e) { - FRContext.getLogger().errorWithServerLevel(e.getMessage()); - } - initDemoServerAndBrowser(); - } - - }).setVisible(true); - } else { - initDemoServerAndBrowser(); - } - } - - private static void initDemoServerAndBrowser() { - if (jettyHost != null) { - if (!jettyHost.isDemoAppLoaded()) { - jettyHost.exit(); - jettyHost = new JettyHost(DesignerEnvManager.getEnvManager().getJettyServerPort()); - jettyHost.addAndStartInstallHomeWebApp(); - } - } else { - jettyHost = new JettyHost(DesignerEnvManager.getEnvManager().getJettyServerPort()); - jettyHost.addAndStartInstallHomeWebApp(); - } - try { - if (!jettyHost.isStarted()) { - jettyHost.start(); - } - } catch (Exception e) { - FRContext.getLogger().errorWithServerLevel(e.getMessage()); - } finally { - //先访问Demo, 后访问报表, 不需要重置服务器. - NEED_LOAD_ENV = false; - browser("http://localhost:" + DesignerEnvManager.getEnvManager().getJettyServerPort() + "/" + ProjectConstants.WEBAPP_NAME + "/" + ConfigManager.getProviderInstance().getServletMapping() - + "?op=fs"); - } - } + public static void browserDemoURL() { + if (ComparatorUtils.equals(StableUtils.getInstallHome(), ".")) {//august:供代码使用 + String web = GeneralContext.getCurrentAppNameOfEnv(); + browserURLWithLocalEnv("http://localhost:" + DesignerEnvManager.getEnvManager().getJettyServerPort() + "/" + web + "/" + ConfigManager.getProviderInstance().getServletMapping() + + "?op=fs"); + return; + } + DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); + if (!envManager.isCurrentEnvDefault()) { + InformationPane inf = new InformationPane(envManager.getDefaultEnvName()); + inf.showSmallWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { + @Override + public void doOk() { + try { + SignIn.signIn(DesignerEnvManager.getEnvManager().getDefaultEnv()); + TemplateTreePane.getInstance().refreshDockingView(); + TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()); + } catch (Exception e) { + FRContext.getLogger().errorWithServerLevel(e.getMessage()); + } + initDemoServerAndBrowser(); + } + + }).setVisible(true); + } else { + initDemoServerAndBrowser(); + } + } + + private static void initDemoServerAndBrowser() { + if (jettyHost != null) { + if (!jettyHost.isDemoAppLoaded()) { + jettyHost.exit(); + jettyHost = new JettyHost(DesignerEnvManager.getEnvManager().getJettyServerPort()); + jettyHost.addAndStartInstallHomeWebApp(); + } + } else { + jettyHost = new JettyHost(DesignerEnvManager.getEnvManager().getJettyServerPort()); + jettyHost.addAndStartInstallHomeWebApp(); + } + try { + if (!jettyHost.isStarted()) { + jettyHost.start(); + } + } catch (Exception e) { + FRContext.getLogger().errorWithServerLevel(e.getMessage()); + } finally { + //先访问Demo, 后访问报表, 不需要重置服务器. + NEED_LOAD_ENV = false; + browser("http://localhost:" + DesignerEnvManager.getEnvManager().getJettyServerPort() + "/" + ProjectConstants.WEBAPP_NAME + "/" + ConfigManager.getProviderInstance().getServletMapping() + + "?op=fs"); + } + } /** * 本地环境浏览url * * @param url 指定路径 */ - public static void browserURLWithLocalEnv(String url) { - try { - if (jettyHost != null) { - if (NEED_LOAD_ENV) { - jettyHost.exit(); - jettyHost = new JettyHost(DesignerEnvManager.getEnvManager().getJettyServerPort()); - jettyHost.addAndStartLocalEnvHomeWebApp(); - - } - } else { - jettyHost = new JettyHost(DesignerEnvManager.getEnvManager().getJettyServerPort()); - jettyHost.addAndStartLocalEnvHomeWebApp(); - - } - if (!jettyHost.isStarted()) { - jettyHost.start(); - } - } catch (InterruptedException e) { - FRContext.getLogger().errorWithServerLevel(e.getMessage()); - } catch (Exception e) { - FRContext.getLogger().errorWithServerLevel(e.getMessage()); - } finally { - NEED_LOAD_ENV = false; - browser(url); - } - } - - public static JettyHost getInstance() { - // august: 正确的逻辑能保证jettyHost不为null,不然就有bug,不允许这儿加是否等于null判断 - return jettyHost; - } + public static void browserURLWithLocalEnv(String url) { + try { + if (jettyHost != null) { + if (NEED_LOAD_ENV) { + jettyHost.exit(); + jettyHost = new JettyHost(DesignerEnvManager.getEnvManager().getJettyServerPort()); + jettyHost.addAndStartLocalEnvHomeWebApp(); + + } + } else { + jettyHost = new JettyHost(DesignerEnvManager.getEnvManager().getJettyServerPort()); + jettyHost.addAndStartLocalEnvHomeWebApp(); + + } + if (!jettyHost.isStarted()) { + jettyHost.start(); + } + } catch (InterruptedException e) { + FRContext.getLogger().errorWithServerLevel(e.getMessage()); + } catch (Exception e) { + FRContext.getLogger().errorWithServerLevel(e.getMessage()); + } finally { + NEED_LOAD_ENV = false; + browser(url); + } + } + + public static JettyHost getInstance() { + // august: 正确的逻辑能保证jettyHost不为null,不然就有bug,不允许这儿加是否等于null判断 + return jettyHost; + } /** * 运行环境改变事件 */ - public static void currentEnvChanged() { - if (!NEED_LOAD_ENV) { - NEED_LOAD_ENV = true; - } - } - - private static void browser(String uri) { - if (StringUtils.isEmpty(uri)) { - FRContext.getLogger().info("The URL is empty!"); - return; - } - try { - Desktop.getDesktop().browse(new URI(uri)); - - } catch (IOException e) { - startBrowserFromCommand(uri, e); - } catch (URISyntaxException e) { - FRContext.getLogger().errorWithServerLevel(e.getMessage(), e); - } catch (Exception e) { - FRContext.getLogger().errorWithServerLevel(e.getMessage(), e); - FRContext.getLogger().error("Can not open the browser for URL: " + uri); - } - } - - private static void startBrowserFromCommand(String uri, IOException e) { - if (OperatingSystem.isWindows()) { - try { - // win10 内存用到到80%左右的时候, Desktop.browser经常提示"存储空间不足, 无法处理改命令", 用rundll32可以打开. - Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + uri); - } catch (IOException ee) { - JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer_Set_default_browser")); - FRContext.getLogger().errorWithServerLevel(e.getMessage(), e); - } - } else { - FRContext.getLogger().errorWithServerLevel(e.getMessage(), e); - } - } - - private static class InformationPane extends BasicPane { - private static final long serialVersionUID = 1L; - - public InformationPane(String message) { - this.setLayout(new BorderLayout(10, 10)); - this.setBorder(BorderFactory.createEmptyBorder(15, 5, 5, 5)); - String text; - if (!ComparatorUtils.equals(message, Inter.getLocText(new String[]{"Default", "Utils-Report_Runtime_Env"}))) { - text = new StringBuffer(Inter.getLocText("FR-Designer_Open")) + public static void currentEnvChanged() { + if (!NEED_LOAD_ENV) { + NEED_LOAD_ENV = true; + } + } + + private static void browser(String uri) { + if (StringUtils.isEmpty(uri)) { + FRContext.getLogger().info("The URL is empty!"); + return; + } + try { + Desktop.getDesktop().browse(new URI(uri)); + + } catch (IOException e) { + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer_Set_default_browser")); + FRContext.getLogger().errorWithServerLevel(e.getMessage(), e); + } catch (URISyntaxException e) { + FRContext.getLogger().errorWithServerLevel(e.getMessage(), e); + } catch (Exception e) { + FRContext.getLogger().errorWithServerLevel(e.getMessage(), e); + FRContext.getLogger().error("Can not open the browser for URL: " + uri); + } + } + + private static class InformationPane extends BasicPane { + private static final long serialVersionUID = 1L; + + public InformationPane(String message) { + this.setLayout(new BorderLayout(10, 10)); + this.setBorder(BorderFactory.createEmptyBorder(15, 5, 5, 5)); + String text; + if (!ComparatorUtils.equals(message, Inter.getLocText(new String[]{"Default", "Utils-Report_Runtime_Env"}))) { + text = new StringBuffer(Inter.getLocText("FR-Designer_Open")) .append(ProductConstants.APP_NAME) .append(Inter.getLocText("FR-Designer_Utils-OpenDemoEnv")) .append(message).append(Inter.getLocText("FR-Designer_Utils-switch")).toString(); - }else{ - text = new StringBuffer(Inter.getLocText("FR-Designer_Open")) + } else { + text = new StringBuffer(Inter.getLocText("FR-Designer_Open")) .append(ProductConstants.APP_NAME) .append(Inter.getLocText("FR-Designer_Utils-NewDemoEnv")) .append(message).append(Inter.getLocText("FR-Designer_Utils-switch")).toString(); - } - UITextArea a = new UITextArea(text); - a.setFont(new Font("Dialog", Font.PLAIN, 12)); - a.setEditable(false); - a.setBackground(this.getBackground()); - a.setLineWrap(true); - this.add(a); - } - - @Override - protected String title4PopupWindow() { - return Inter.getLocText("FR-Designer_Tooltips"); - } - - } + } + UITextArea a = new UITextArea(text); + a.setFont(new Font("Dialog", Font.PLAIN, 12)); + a.setEditable(false); + a.setBackground(this.getBackground()); + a.setLineWrap(true); + this.add(a); + } + + @Override + protected String title4PopupWindow() { + return Inter.getLocText("FR-Designer_Tooltips"); + } + + } } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/chart/ChartTypePane.java b/designer_chart/src/com/fr/design/chart/ChartTypePane.java index d48ab810ab..7b1b74625a 100644 --- a/designer_chart/src/com/fr/design/chart/ChartTypePane.java +++ b/designer_chart/src/com/fr/design/chart/ChartTypePane.java @@ -7,11 +7,7 @@ package com.fr.design.chart; import com.fr.base.FRContext; import com.fr.base.FRCoreContext; import com.fr.chart.base.ChartInternationalNameContentBean; -import com.fr.chart.chartattr.Chart; -import com.fr.chart.chartattr.ChartCollection; -import com.fr.chart.chartattr.ChartIcon; -import com.fr.chart.chartattr.MapPlot; -import com.fr.chart.chartattr.Plot; +import com.fr.chart.chartattr.*; import com.fr.chart.charttypes.ChartTypeManager; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; @@ -154,7 +150,7 @@ public class ChartTypePane extends ChartCommonWizardPane { String plotID = typeName[mainTypeList.getSelectedIndex()].getPlotID(); Chart chart = ChartTypeManager.getInstance().getChartTypes(plotID)[iconViewList.getSelectedIndex()]; if(chart.getPlot() != null){ - if(chart.getPlot() instanceof MapPlot && !supportMap()){ + if(chart.getPlot() instanceof MapPlot && !(VT4FR.isLicAvailable(FRCoreContext.getBytes()) && VT4FR.CHART_MAP.support())){ JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Chart-Map_Not_Supported")); throw new RegistEditionException(VT4FR.CHART_MAP); } @@ -169,11 +165,6 @@ public class ChartTypePane extends ChartCommonWizardPane { } } - private boolean supportMap() { - byte[] bytes = FRCoreContext.getBytes(); - return VT4FR.isLicAvailable(bytes) && VT4FR.CHART_MAP.support(); - } - public void update(ChartCollection cc) { if (cc == null) { return; diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java index 96d4af867a..60382250dd 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java @@ -5,16 +5,15 @@ import com.fr.base.Utils; import com.fr.base.chart.chartdata.TopDefinitionProvider; import com.fr.chart.chartattr.Bar2DPlot; import com.fr.chart.chartattr.ChartCollection; -import com.fr.chart.chartattr.Plot; import com.fr.chart.chartdata.NormalReportDataDefinition; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; import com.fr.design.formula.TinyFormulaPane; import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.ilable.BoldFontTextLabel; import com.fr.design.mainframe.chart.gui.ChartDataPane; import com.fr.design.mainframe.chart.gui.data.ChartDataFilterPane; import com.fr.general.Inter; +import com.fr.plugin.chart.designer.TableLayout4VanChartHelper; import com.fr.stable.StringUtils; import javax.swing.*; @@ -22,7 +21,6 @@ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; -import java.util.List; /** @@ -32,133 +30,130 @@ import java.util.List; */ public class CategoryPlotMoreCateReportDataContentPane extends CategoryPlotReportDataContentPane implements UIObserver{ private static final long serialVersionUID = -1122313353777460534L; - + private JPanel boxPane; private UIButton addButton; - + private ArrayList formualList = new ArrayList(); private UIObserverListener uiobListener = null; - public List getFormualList() { - return formualList; - } - public CategoryPlotMoreCateReportDataContentPane() { - + } - + public CategoryPlotMoreCateReportDataContentPane(ChartDataPane parent) { - initEveryPane(); - categoryName = initCategoryBox(Inter.getLocText("FR-Chart-Category_Name") + ":"); - - JPanel catePane = new JPanel(); - catePane.setLayout(new BorderLayout(2, 2)); - - catePane.add(categoryName); - - addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")); - addButton.setPreferredSize(new Dimension(20, 20)); - catePane.add(addButton, BorderLayout.EAST); - - boxPane = new JPanel(); - boxPane.setLayout(new BoxLayout(boxPane, BoxLayout.Y_AXIS)); - - boxPane.setBackground(Color.red); - - catePane.add(boxPane, BorderLayout.SOUTH); - - this.add(catePane, "0,0,2,0"); - this.add(new BoldFontTextLabel(Inter.getLocText("FR-Chart-Data_Filter")), "0,4,2,4"); - this.add(filterPane = new ChartDataFilterPane(new Bar2DPlot(), parent), "0,6,2,4"); - - addButton.addActionListener(new ActionListener() { + initEveryPane(); + categoryName = initCategoryBox(Inter.getLocText("FR-Chart-Category_Name")); + + JPanel catePane = new JPanel(); + catePane.setLayout(new BorderLayout(2, 2)); + + catePane.add(categoryName); + + addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")); + addButton.setPreferredSize(new Dimension(20, 20)); + catePane.add(addButton, BorderLayout.EAST); + + boxPane = new JPanel(); + boxPane.setLayout(new BoxLayout(boxPane, BoxLayout.Y_AXIS)); + + boxPane.setBackground(Color.red); + + catePane.add(boxPane, BorderLayout.SOUTH); + + catePane.setBorder(BorderFactory.createEmptyBorder(0,24,10,15)); + + this.add(catePane, "0,0,2,0"); + filterPane = new ChartDataFilterPane(new Bar2DPlot(), parent); + JPanel panel = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Inter.getLocText("FR-Chart-Data_Filter"),filterPane); + panel.setBorder(getSidesBorder()); + filterPane.setBorder(getFilterPaneBorder()); + this.add(panel, "0,6,2,4"); + + addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { addNewCatePane(); } }); - - } - - /** - * 检查box 是否应该可用状态. - */ - public void checkBoxUse() { - super.checkBoxUse(); - String text = categoryName.getUITextField().getText(); - addButton.setEnabled(StringUtils.isNotEmpty(text)); + } - + + /** + * 检查box 是否应该可用状态. + */ + public void checkBoxUse() { + super.checkBoxUse(); + String text = categoryName.getUITextField().getText(); + addButton.setEnabled(StringUtils.isNotEmpty(text)); + } + private TinyFormulaPane addNewCatePane() { final TinyFormulaPane pane = initCategoryBox(StringUtils.EMPTY); - pane.setPreferredSize(new Dimension(122, 16)); - + pane.setPreferredSize(new Dimension(106, 16)); + pane.registerChangeListener(uiobListener); - + formualList.add(pane); - + final JPanel newButtonPane = new JPanel(); newButtonPane.setLayout(new FlowLayout(FlowLayout.RIGHT, 0, 0)); newButtonPane.add(pane); - + UIButton delButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/toolbarbtn/close.png")); newButtonPane.add(delButton); - + boxPane.add(newButtonPane); - + delButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { boxPane.remove(newButtonPane); formualList.remove(pane); - checkComponent(); + checkAddButton(); relayoutPane(); } }); delButton.registerChangeListener(uiobListener); - - checkComponent(); + + checkAddButton(); relayoutPane(); - + return pane; } - + private void checkAddButton() { int size = formualList.size(); addButton.setEnabled(size < 2); } - - protected void checkComponent() { - checkAddButton(); - } - + private void relayoutPane() { this.revalidate(); } - /** - * 给组件登记一个观察者监听事件 - * - * @param listener 观察者监听事件 - */ + /** + * 给组件登记一个观察者监听事件 + * + * @param listener 观察者监听事件 + */ public void registerChangeListener(UIObserverListener listener) { uiobListener = listener; } - /** - * 组件是否需要响应添加的观察者事件 - * - * @return 如果需要响应观察者事件则返回true,否则返回false - */ + /** + * 组件是否需要响应添加的观察者事件 + * + * @return 如果需要响应观察者事件则返回true,否则返回false + */ public boolean shouldResponseChangeListener() { return true; } - + public void populateBean(ChartCollection collection) { super.populateBean(collection); - + formualList.clear(); - + TopDefinitionProvider definition = collection.getSelectedChart().getFilterDefinition(); if (definition instanceof NormalReportDataDefinition) { NormalReportDataDefinition reportDefinition = (NormalReportDataDefinition) definition; @@ -170,28 +165,23 @@ public class CategoryPlotMoreCateReportDataContentPane extends CategoryPlotRepor } } } - + checkAddButton(); } - + public void updateBean(ChartCollection collection) { super.updateBean(collection); - + TopDefinitionProvider definition = collection.getSelectedChart().getFilterDefinition(); - Plot plot = collection.getSelectedChart().getPlot(); if (definition instanceof NormalReportDataDefinition) { NormalReportDataDefinition reportDefinition = (NormalReportDataDefinition) definition; - + reportDefinition.clearMoreCate(); - updateMoreCate(reportDefinition, plot); - - } - } - - protected void updateMoreCate(NormalReportDataDefinition reportDefinition, Plot plot) { - for (int i = 0, size = formualList.size(); i < size; i++) { - TinyFormulaPane pane = formualList.get(i); - reportDefinition.addMoreCate(canBeFormula(pane.updateBean())); + + for(int i = 0, size = formualList.size(); i < size; i++) { + TinyFormulaPane pane = formualList.get(i); + reportDefinition.addMoreCate(canBeFormula(pane.updateBean())); + } } } } \ No newline at end of file From e639119fab35fb6c1dae29307a1e6927db8be000 Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Thu, 7 Sep 2017 16:05:59 +0800 Subject: [PATCH 94/96] 1 --- designer/src/com/fr/design/mainframe/JWorkBook.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer/src/com/fr/design/mainframe/JWorkBook.java b/designer/src/com/fr/design/mainframe/JWorkBook.java index fd4cd7b0da..e49b2915d1 100644 --- a/designer/src/com/fr/design/mainframe/JWorkBook.java +++ b/designer/src/com/fr/design/mainframe/JWorkBook.java @@ -77,7 +77,7 @@ import java.util.*; /** * JWorkBook used to edit WorkBook. */ -public class JWorkBook extends JTemplate { +public class JWork Book extends JTemplate { private static final String SHARE_SUFFIX = "_share"; private static final String SHARE_FOLDER = "share"; From 2b786a9beb6b55450a045c25a57cc407359944f3 Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Thu, 7 Sep 2017 16:06:13 +0800 Subject: [PATCH 95/96] 1 --- designer/src/com/fr/design/mainframe/JWorkBook.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer/src/com/fr/design/mainframe/JWorkBook.java b/designer/src/com/fr/design/mainframe/JWorkBook.java index e49b2915d1..fd4cd7b0da 100644 --- a/designer/src/com/fr/design/mainframe/JWorkBook.java +++ b/designer/src/com/fr/design/mainframe/JWorkBook.java @@ -77,7 +77,7 @@ import java.util.*; /** * JWorkBook used to edit WorkBook. */ -public class JWork Book extends JTemplate { +public class JWorkBook extends JTemplate { private static final String SHARE_SUFFIX = "_share"; private static final String SHARE_FOLDER = "share"; From 70d83b52aaf24c1c2dd6c734d0461f988d414d1b Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Thu, 7 Sep 2017 16:07:32 +0800 Subject: [PATCH 96/96] 1 --- .../PlotSeries/MapGroupExtensionPane.java | 485 +----------------- 1 file changed, 1 insertion(+), 484 deletions(-) diff --git a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java index a1207717bf..1d749d6f38 100644 --- a/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java +++ b/designer_chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java @@ -1,484 +1 @@ -package com.fr.design.chart.series.PlotSeries; - -import com.fr.base.*; -import com.fr.chart.base.MapSvgAttr; -import com.fr.chart.base.MapSvgXMLHelper; -import com.fr.chart.chartattr.MapPlot; -import com.fr.chart.chartglyph.MapShapeValue; -import com.fr.design.DesignerEnvManager; -import com.fr.design.constants.UIConstants; -import com.fr.design.dialog.BasicDialog; -import com.fr.design.dialog.BasicPane; -import com.fr.design.dialog.DialogActionAdapter; -import com.fr.design.event.ChangeEvent; -import com.fr.design.event.ChangeListener; -import com.fr.design.event.UIObserver; -import com.fr.design.event.UIObserverListener; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.mainframe.DesignerContext; -import com.fr.design.mainframe.DesignerFrame; -import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; -import com.fr.general.Inter; -import com.fr.stable.CoreConstants; -import com.fr.stable.StableUtils; -import com.fr.stable.StringUtils; -import com.fr.stable.SvgProvider; - -import javax.swing.*; -import javax.swing.event.ListSelectionEvent; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseEvent; -import java.awt.geom.RoundRectangle2D; -import java.util.ArrayList; - -/** - * Created by IntelliJ IDEA. - * Author : Richer - * Version: 7.0.3 - * Date: 12-12-29 - * Time: 下午2:41 - */ -public class MapGroupExtensionPane extends BasicPane implements UIObserver { - private static final String[] TYPE_NAMES = new String[]{ - Inter.getLocText("FR-Chart-World_Map"), - Inter.getLocText("FR-Chart-State_Map"), - Inter.getLocText("FR-Chart-Province_Map"), - Inter.getLocText("FR-Chart-Custom_Map")}; - private static final int WORD = 0; - private static final int NATION = 1; - private static final int STATE = 2; - private static final int USER = 3; - private static final int OFFSET_X = 800; - private static final int OFFSET_Y = 200; - - private UIGroupExtensionPane groupExtensionPane; - private UIButton addButton; - private JPopupMenu popupMenu; - private ArrayList changeListeners = new ArrayList(); - private boolean hasPopulated = false; - - @Override - protected String title4PopupWindow() { - return "Map"; - } - - public MapGroupExtensionPane() { - setLayout(new BorderLayout()); - groupExtensionPane = new UIGroupExtensionPane(TYPE_NAMES){ - - /** - * 新添加的数据的序号 - * @param data 数据 - */ - protected void dealNewAddedDataIndex(Object data){ - String newName = (String)data; - MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance(); - if(helper.getNewMapAttr(newName) != null){ - return; - } - MapSvgAttr attr = new MapSvgAttr(); - attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + newName + ".svg"); - helper.addNewSvgMaps(attr.getName(), attr); - } - - - /** - * 一次鼠标的点击会有两次事件响应(按下和释放)。前者的事件属性中getValueIsAdjusting()=true,后者是false。 - * 是否响应list值改变 - * @return 鼠标按下时不响应,先响应mousePress事件,在鼠标释放是再响应list值改编的事件,并且点击删除不触发更新,并且populate后触发更新 - */ - protected boolean isRespondToValueChange(ListSelectionEvent e){ - return !e.getValueIsAdjusting() && !this.isPressOnDelete() && hasPopulated; - } - }; - groupExtensionPane.addSelectionChangeListener(new ChangeListener() { - @Override - public void fireChanged(ChangeEvent event) { - fireStateChange(); - } - }); - groupExtensionPane.addItemEditListener(new ChangeListener() { - @Override - public void fireChanged(ChangeEvent event) { - doEdit(event); - } - }); - groupExtensionPane.addDeleteListener(new ChangeListener() { - @Override - public void fireChanged(ChangeEvent event) { - //这么写有点问题 - String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); - saveMapInfo(oldName); - } - }); - setPreferredSize(new Dimension(400, 210)); - add(groupExtensionPane, BorderLayout.CENTER); - - addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")) { - @Override - protected void paintBorder(Graphics g) { - Graphics2D g2d = (Graphics2D) g; - g2d.setStroke(UIConstants.BS); - Shape shape = new RoundRectangle2D.Float(0.5f, 0.5f, getWidth() - 1, getHeight() - 1, UIConstants.ARC, UIConstants.ARC); - g2d.setColor(UIConstants.LINE_COLOR); - g2d.draw(shape); - } - }; - addButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - popupMenu.show(MapGroupExtensionPane.this, addButton.getX() + 1, addButton.getY() + addButton.getHeight()); - } - }); - add(addButton, BorderLayout.SOUTH); - initPopupMenu(); - } - - private void initPopupMenu() { - popupMenu = new JPopupMenu() { - @Override - public Dimension getPreferredSize() { - Dimension dimension = new Dimension(); - dimension.height = super.getPreferredSize().height; - dimension.width = addButton.getWidth() - 2; - return dimension; - } - }; - JMenuItem worldMap = new JMenuItem(TYPE_NAMES[WORD]); - popupMenu.add(worldMap); - worldMap.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - groupExtensionPane.addData(TYPE_NAMES[WORD], TYPE_NAMES[WORD], true); - } - }); - - JMenuItem countMap = new JMenuItem(TYPE_NAMES[NATION]); - popupMenu.add(countMap); - countMap.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - groupExtensionPane.addData(TYPE_NAMES[NATION], - TYPE_NAMES[NATION], true); - } - }); - - JMenuItem proMap = new JMenuItem(TYPE_NAMES[STATE]); - popupMenu.add(proMap); - proMap.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - groupExtensionPane.addData(TYPE_NAMES[STATE], - TYPE_NAMES[STATE], true); - } - }); - - JMenuItem menu = new JMenuItem(TYPE_NAMES[USER]); - popupMenu.add(menu); - menu.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - groupExtensionPane.addData(TYPE_NAMES[USER], - TYPE_NAMES[USER], true); - } - }); - } - - private void doEdit(ChangeEvent e) { - MouseEvent event = (MouseEvent) e.getSource(); - JPopupMenu editPopMenu = new JPopupMenu(); - - final String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); - editPopMenu.add(createAreaItem(oldName)); - editPopMenu.add(createMarkerItem(oldName)); - editPopMenu.add(createLayerItem(oldName)); - editPopMenu.add(createRenameItem()); - - editPopMenu.show(MapGroupExtensionPane.this, event.getXOnScreen() - OFFSET_X, event.getYOnScreen() - OFFSET_Y); - } - - private void mapCheckBeforeEdit(String name){ - if(MapSvgXMLHelper.getInstance().containsMapName(name) || MapSvgXMLHelper.getInstance().getNewMapAttr(name)!=null){ - return; - } - MapSvgAttr attr = new MapSvgAttr(); - attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + name + ".svg"); - MapSvgXMLHelper.getInstance().addNewSvgMaps(name,attr); - } - - private JMenuItem createAreaItem(final String oldName) { - JMenuItem editFileItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Filed"})); - editFileItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - final MapCustomPane image = new MapCustomPane(); - image.setImageSelectType(MapShapeValue.AREA); - image.populateBean(oldName); - image.setTypeNameAndMapName(groupExtensionPane.getSelectedType(), Utils.objectToString(groupExtensionPane.getSelectedObject())); - mapCheckBeforeEdit(oldName); - final Image oldImage = getMapImage(oldName); - BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(MapGroupExtensionPane.this), new DialogActionAdapter() { - public void doOk() { - image.updateBean(); // 比较两个前后的名字是否相同, 是图片 如果图片不同, 则直接比较 - - Image newImage = getMapImage(oldName); - if(!ComparatorUtils.equals(oldImage, newImage)) { - fireStateChange(); - } - - //versionID递增 - MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); - if(old != null) { - old.addVersionID(); - } - - saveMapInfo(oldName); - refresh(); - } - }); - dialog.setVisible(true); - } - }); - return editFileItem; - } - - //根据地图的名字返回地图的图片 - private Image getMapImage(String mapName) { - if (MapSvgXMLHelper.getInstance().containsMapName(mapName)) { - MapSvgAttr mapAttr = MapSvgXMLHelper.getInstance().getMapAttr(mapName); - if(mapAttr == null) { - return null; - } - return mapAttr.getMapImage(); - } - - return null; - } - - private JMenuItem createMarkerItem(final String oldName) { - JMenuItem editMarkerItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Marker"})); - editMarkerItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - final MapCustomPane image = new MapCustomPane(); - image.setImageSelectType(MapShapeValue.POINT); - image.populateBean(oldName); - mapCheckBeforeEdit(oldName); - final Image oldImage = getMapImage(oldName); - BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(image), new DialogActionAdapter() { - public void doOk() { - image.updateBean(); - - Image newImage = getMapImage(oldName); - if(!ComparatorUtils.equals(oldImage, newImage)) { - fireStateChange(); - } - - //versionID递增 - MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); - if(old != null) { - old.addVersionID(); - } - - saveMapInfo(oldName); - refresh(); - } - }); - dialog.setVisible(true); - } - }); - return editMarkerItem; - } - - private JMenuItem createLayerItem(final String oldName) { - JMenuItem corrItem = new JMenuItem(Inter.getLocText(new String[]{"Filed", "Corresponding_Fields"})); - corrItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - final MapDefiAreaNamePane namedPane = new MapDefiAreaNamePane(); - namedPane.populateBean(oldName); - mapCheckBeforeEdit(oldName); - BasicDialog dialog = namedPane.showMediumWindow(SwingUtilities.getWindowAncestor(namedPane), new DialogActionAdapter() { - public void doOk() { - namedPane.updateBean();// 地图的名称 value对应情况 - - MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); - if(old != null) { - old.addVersionID(); - } - - saveMapInfo(oldName); - } - }); - dialog.setVisible(true); - refresh(); - } - }); - - return corrItem; - } - - private void showRenameWaring(String newName){ - JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), "\"" + newName + "\"" + Inter.getLocText("Utils-has_been_existed") - + "!", Inter.getLocText("FR-Designer_Alert"), JOptionPane.WARNING_MESSAGE); - } - - private JMenuItem createRenameItem() { - JMenuItem renameItem = new JMenuItem(Inter.getLocText("FR-Chart-Map_Rename")); - renameItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - String newName = JOptionPane.showInputDialog(DesignerContext.getDesignerFrame().getContentPane(), - Inter.getLocText("FR-Chart-Map_Rename"), groupExtensionPane.getSelectedObject()); - if (StringUtils.isNotBlank(newName)) { - String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); - if(ComparatorUtils.equals(oldName, newName)){ - return; - } - //本地在看看临时的helper里面有没有 - if(MapSvgXMLHelper.getInstance().getNewMapAttr(newName) != null){ - showRenameWaring(newName); - return; - } - try{//提醒名字已存在 - if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( - new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),newName+SvgProvider.EXTENSION}))){ - showRenameWaring(newName); - return; - } - if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( - new String[]{MapSvgXMLHelper.relativeCustomMapPath(), newName + SvgProvider.EXTENSION}))){ - showRenameWaring(newName); - return; - } - MapSvgAttr editingAttr = MapSvgXMLHelper.getInstance().getMapAttr(oldName); - if(editingAttr == null){ - editingAttr = MapSvgXMLHelper.getInstance().getNewMapAttr(oldName); - } - if( editingAttr == null) { - return; - } - editingAttr.renameMap(newName); - groupExtensionPane.setValueAtCurrentSelectIndex(newName); - fireStateChange(); - saveMapInfo(newName); - FRContext.getCurrentEnv().deleteFile( - StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),oldName+SvgProvider.EXTENSION})); - FRContext.getCurrentEnv().deleteFile( - StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeCustomMapPath(),oldName+SvgProvider.EXTENSION})); - refresh(); - }catch (Exception exp){ - FRLogger.getLogger().error(exp.getMessage()); - } - } - } - }); - return renameItem; - } - - private void refresh() { - this.validate(); - this.repaint(); - - DesignerFrame frame = DesignerContext.getDesignerFrame(); - if(frame != null) { - frame.repaint();//kunsnat: 图表属性没变, 只是读取时 内容变化. - } - } - - //保存修改过的地图信息 - private void saveMapInfo(final String mapName) { - SwingWorker worker = new SwingWorker() { - @Override - protected Integer doInBackground() throws Exception { - MapSvgAttr attr = MapSvgXMLHelper.getInstance().getMapAttr(mapName);// 只有在编辑地图时才需要储存相关数据 @kuns - if(attr != null){ - attr.writeBack(mapName); - } - return 0; - } - - @Override - protected void done() { - FRLogger.getLogger().info(Inter.getLocText("FR-Chart-Map_Saved")); // 地图已经保存. - } - - }; - worker.execute(); - DesignerEnvManager.addWorkers(worker); - } - - private void fireStateChange() { - for (int i = changeListeners.size(); i > 0; i--) { - changeListeners.get(i - 1).stateChanged(new javax.swing.event.ChangeEvent(this)); - } - } - - /** - * 更新地图属性 - * @return 返回地图名称. - */ - public String updateBean(MapPlot plot) { - if(!hasPopulated){ - this.populateBean(plot); - hasPopulated = true; - } - - MapHelper helper = plot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); - - helper.clearCateNames(); - for (String type : TYPE_NAMES) { - Object[] datas = groupExtensionPane.getData(type); - for (Object name : datas) { - helper.addCateNames(type, name); - } - } - - return Utils.objectToString(groupExtensionPane.getSelectedObject()); - } - - /** - * 更新地图名称 - * @param mapPlot 地图 - */ - public void populateBean(MapPlot mapPlot) { - hasPopulated = false; - groupExtensionPane.clearData(); - - for (String type : TYPE_NAMES) { - MapHelper helper = mapPlot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); - java.util.List list = helper.getNamesListWithCateName(type); - for (Object name : list) { - groupExtensionPane.addData(name, type); - } - } - - groupExtensionPane.setSelectedObject(mapPlot.getMapName()); - - hasPopulated = true; - } - - /** - * 给组件登记一个观察者监听事件 - * - * @param listener 观察者监听事件 - */ - public void registerChangeListener(final UIObserverListener listener) { - changeListeners.add(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent e) { - listener.doChange(); - } - }); - } - - /** - * 组件是否需要响应添加的观察者事件 - * - * @return 如果需要响应观察者事件则返回true,否则返回false - */ - public boolean shouldResponseChangeListener() { - return true; - } - - public void setEnabled(boolean isEnabled){ - super.setEnabled(isEnabled); - addButton.setEnabled(isEnabled); - popupMenu.setEnabled(isEnabled); - groupExtensionPane.setEnabled(isEnabled); - } -} \ No newline at end of file +package com.fr.design.chart.series.PlotSeries; import com.fr.base.BaseUtils; import com.fr.base.FRContext; import com.fr.base.MapHelper; import com.fr.base.MapXMLHelper; import com.fr.base.Utils; import com.fr.chart.base.MapSvgAttr; import com.fr.chart.base.MapSvgXMLHelper; import com.fr.chart.chartattr.MapPlot; import com.fr.chart.chartglyph.MapShapeValue; import com.fr.design.DesignerEnvManager; import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.event.ChangeEvent; import com.fr.design.event.ChangeListener; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.stable.CoreConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.SvgProvider; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.geom.RoundRectangle2D; import java.util.ArrayList; /** * Created by IntelliJ IDEA. * Author : Richer * Version: 7.0.3 * Date: 12-12-29 * Time: 下午2:41 */ public class MapGroupExtensionPane extends BasicPane implements UIObserver { private static final String[] TYPE_NAMES = new String[]{ Inter.getLocText("FR-Chart-World_Map"), Inter.getLocText("FR-Chart-State_Map"), Inter.getLocText("FR-Chart-Province_Map"), Inter.getLocText("FR-Chart-Custom_Map")}; private static final int WORD = 0; private static final int NATION = 1; private static final int STATE = 2; private static final int USER = 3; private static final int OFFSET_X = 800; private static final int OFFSET_Y = 280; private UIGroupExtensionPane groupExtensionPane; private UIButton addButton; private JPopupMenu popupMenu; private ArrayList changeListeners = new ArrayList(); private boolean hasPopulated = false; @Override protected String title4PopupWindow() { return "Map"; } public MapGroupExtensionPane() { setLayout(new BorderLayout()); groupExtensionPane = new UIGroupExtensionPane(TYPE_NAMES){ /** * 新添加的数据的序号 * @param data 数据 */ protected void dealNewAddedDataIndex(Object data){ String newName = (String)data; MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance(); if(helper.getNewMapAttr(newName) != null){ return; } MapSvgAttr attr = new MapSvgAttr(); attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + newName + ".svg"); helper.addNewSvgMaps(attr.getName(), attr); } /** * 一次鼠标的点击会有两次事件响应(按下和释放)。前者的事件属性中getValueIsAdjusting()=true,后者是false。 * 是否响应list值改变 * @return 鼠标按下时不响应,先响应mousePress事件,在鼠标释放是再响应list值改编的事件,并且点击删除不触发更新,并且populate后触发更新 */ protected boolean isRespondToValueChange(ListSelectionEvent e){ return !e.getValueIsAdjusting() && !this.isPressOnDelete() && hasPopulated; } }; groupExtensionPane.addSelectionChangeListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { fireStateChange(); } }); groupExtensionPane.addItemEditListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { doEdit(event); } }); groupExtensionPane.addDeleteListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { //这么写有点问题 String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); saveMapInfo(oldName); } }); setPreferredSize(new Dimension(400, 210)); add(groupExtensionPane, BorderLayout.CENTER); addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")) { @Override protected void paintBorder(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setStroke(UIConstants.BS); Shape shape = new RoundRectangle2D.Float(0.5f, 0.5f, getWidth() - 1, getHeight() - 1, UIConstants.ARC, UIConstants.ARC); g2d.setColor(UIConstants.LINE_COLOR); g2d.draw(shape); } }; addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { popupMenu.show(MapGroupExtensionPane.this, addButton.getX() + 1, addButton.getY() + addButton.getHeight()); } }); add(addButton, BorderLayout.SOUTH); initPopupMenu(); } private void initPopupMenu() { popupMenu = new JPopupMenu() { @Override public Dimension getPreferredSize() { Dimension dimension = new Dimension(); dimension.height = super.getPreferredSize().height; dimension.width = addButton.getWidth() - 2; return dimension; } }; JMenuItem worldMap = new JMenuItem(TYPE_NAMES[WORD]); popupMenu.add(worldMap); worldMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[WORD], TYPE_NAMES[WORD], true); } }); JMenuItem countMap = new JMenuItem(TYPE_NAMES[NATION]); popupMenu.add(countMap); countMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[NATION], TYPE_NAMES[NATION], true); } }); JMenuItem proMap = new JMenuItem(TYPE_NAMES[STATE]); popupMenu.add(proMap); proMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[STATE], TYPE_NAMES[STATE], true); } }); JMenuItem menu = new JMenuItem(TYPE_NAMES[USER]); popupMenu.add(menu); menu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[USER], TYPE_NAMES[USER], true); } }); } private void doEdit(ChangeEvent e) { MouseEvent event = (MouseEvent) e.getSource(); JPopupMenu editPopMenu = new JPopupMenu(); final String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); editPopMenu.add(createAreaItem(oldName)); editPopMenu.add(createMarkerItem(oldName)); editPopMenu.add(createLayerItem(oldName)); editPopMenu.add(createRenameItem()); editPopMenu.show(MapGroupExtensionPane.this, event.getXOnScreen() - OFFSET_X, event.getYOnScreen() - OFFSET_Y); } private void mapCheckBeforeEdit(String name){ if(MapSvgXMLHelper.getInstance().containsMapName(name) || MapSvgXMLHelper.getInstance().getNewMapAttr(name)!=null){ return; } MapSvgAttr attr = new MapSvgAttr(); attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + name + ".svg"); MapSvgXMLHelper.getInstance().addNewSvgMaps(name,attr); } private JMenuItem createAreaItem(final String oldName) { JMenuItem editFileItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Filed"})); editFileItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapCustomPane image = new MapCustomPane(); image.setImageSelectType(MapShapeValue.AREA); image.populateBean(oldName); image.setTypeNameAndMapName(groupExtensionPane.getSelectedType(), Utils.objectToString(groupExtensionPane.getSelectedObject())); mapCheckBeforeEdit(oldName); final Image oldImage = getMapImage(oldName); BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(MapGroupExtensionPane.this), new DialogActionAdapter() { public void doOk() { image.updateBean(); // 比较两个前后的名字是否相同, 是图片 如果图片不同, 则直接比较 Image newImage = getMapImage(oldName); if(!ComparatorUtils.equals(oldImage, newImage)) { fireStateChange(); } //versionID递增 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); refresh(); } }); dialog.setVisible(true); } }); return editFileItem; } //根据地图的名字返回地图的图片 private Image getMapImage(String mapName) { if (MapSvgXMLHelper.getInstance().containsMapName(mapName)) { MapSvgAttr mapAttr = MapSvgXMLHelper.getInstance().getMapAttr(mapName); if(mapAttr == null) { return null; } return mapAttr.getMapImage(); } return null; } private JMenuItem createMarkerItem(final String oldName) { JMenuItem editMarkerItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Marker"})); editMarkerItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapCustomPane image = new MapCustomPane(); image.setImageSelectType(MapShapeValue.POINT); image.populateBean(oldName); mapCheckBeforeEdit(oldName); final Image oldImage = getMapImage(oldName); BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(image), new DialogActionAdapter() { public void doOk() { image.updateBean(); Image newImage = getMapImage(oldName); if(!ComparatorUtils.equals(oldImage, newImage)) { fireStateChange(); } //versionID递增 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); refresh(); } }); dialog.setVisible(true); } }); return editMarkerItem; } private JMenuItem createLayerItem(final String oldName) { JMenuItem corrItem = new JMenuItem(Inter.getLocText(new String[]{"Filed", "Corresponding_Fields"})); corrItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapDefiAreaNamePane namedPane = new MapDefiAreaNamePane(); namedPane.populateBean(oldName); mapCheckBeforeEdit(oldName); BasicDialog dialog = namedPane.showMediumWindow(SwingUtilities.getWindowAncestor(namedPane), new DialogActionAdapter() { public void doOk() { namedPane.updateBean();// 地图的名称 value对应情况 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); } }); dialog.setVisible(true); refresh(); } }); return corrItem; } private void showRenameWaring(String newName){ JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), "\"" + newName + "\"" + Inter.getLocText("Utils-has_been_existed") + "!", Inter.getLocText("FR-Designer_Alert"), JOptionPane.WARNING_MESSAGE); } private JMenuItem createRenameItem() { JMenuItem renameItem = new JMenuItem(Inter.getLocText("FR-Chart-Map_Rename")); renameItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String newName = JOptionPane.showInputDialog(DesignerContext.getDesignerFrame().getContentPane(), Inter.getLocText("FR-Chart-Map_Rename"), groupExtensionPane.getSelectedObject()); if (StringUtils.isNotBlank(newName)) { String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); if(ComparatorUtils.equals(oldName, newName)){ return; } //本地在看看临时的helper里面有没有 if(MapSvgXMLHelper.getInstance().getNewMapAttr(newName) != null){ showRenameWaring(newName); return; } try{//提醒名字已存在 if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),newName+SvgProvider.EXTENSION}))){ showRenameWaring(newName); return; } if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( new String[]{MapSvgXMLHelper.relativeCustomMapPath(), newName + SvgProvider.EXTENSION}))){ showRenameWaring(newName); return; } MapSvgAttr editingAttr = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(editingAttr == null){ editingAttr = MapSvgXMLHelper.getInstance().getNewMapAttr(oldName); } if( editingAttr == null) { return; } editingAttr.renameMap(newName); groupExtensionPane.setValueAtCurrentSelectIndex(newName); fireStateChange(); saveMapInfo(newName); FRContext.getCurrentEnv().deleteFile( StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),oldName+SvgProvider.EXTENSION})); FRContext.getCurrentEnv().deleteFile( StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeCustomMapPath(),oldName+SvgProvider.EXTENSION})); refresh(); }catch (Exception exp){ FRLogger.getLogger().error(exp.getMessage()); } } } }); return renameItem; } private void refresh() { this.validate(); this.repaint(); DesignerFrame frame = DesignerContext.getDesignerFrame(); if(frame != null) { frame.repaint();//kunsnat: 图表属性没变, 只是读取时 内容变化. } } //保存修改过的地图信息 private void saveMapInfo(final String mapName) { SwingWorker worker = new SwingWorker() { @Override protected Integer doInBackground() throws Exception { MapSvgAttr attr = MapSvgXMLHelper.getInstance().getMapAttr(mapName);// 只有在编辑地图时才需要储存相关数据 @kuns if(attr != null){ attr.writeBack(mapName); } return 0; } @Override protected void done() { FRLogger.getLogger().info(Inter.getLocText("FR-Chart-Map_Saved")); // 地图已经保存. } }; worker.execute(); DesignerEnvManager.addWorkers(worker); } private void fireStateChange() { for (int i = changeListeners.size(); i > 0; i--) { changeListeners.get(i - 1).stateChanged(new javax.swing.event.ChangeEvent(this)); } } /** * 更新地图属性 * @return 返回地图名称. */ public String updateBean(MapPlot plot) { if(!hasPopulated){ this.populateBean(plot); hasPopulated = true; } MapHelper helper = plot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); helper.clearCateNames(); for (String type : TYPE_NAMES) { Object[] datas = groupExtensionPane.getData(type); for (Object name : datas) { helper.addCateNames(type, name); } } return Utils.objectToString(groupExtensionPane.getSelectedObject()); } /** * 更新地图名称 * @param mapPlot 地图 */ public void populateBean(MapPlot mapPlot) { hasPopulated = false; groupExtensionPane.clearData(); for (String type : TYPE_NAMES) { MapHelper helper = mapPlot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); java.util.List list = helper.getNamesListWithCateName(type); for (Object name : list) { groupExtensionPane.addData(name, type); } } groupExtensionPane.setSelectedObject(mapPlot.getMapName()); hasPopulated = true; } /** * 给组件登记一个观察者监听事件 * * @param listener 观察者监听事件 */ public void registerChangeListener(final UIObserverListener listener) { changeListeners.add(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { listener.doChange(); } }); } /** * 组件是否需要响应添加的观察者事件 * * @return 如果需要响应观察者事件则返回true,否则返回false */ public boolean shouldResponseChangeListener() { return true; } public void setEnabled(boolean isEnabled){ super.setEnabled(isEnabled); addButton.setEnabled(isEnabled); popupMenu.setEnabled(isEnabled); groupExtensionPane.setEnabled(isEnabled); } } \ No newline at end of file