diff --git a/designer/src/com/fr/design/actions/file/newReport/NewWorkBookAction.java b/designer/src/com/fr/design/actions/file/newReport/NewWorkBookAction.java index 268adafbf1..a537d3c43f 100644 --- a/designer/src/com/fr/design/actions/file/newReport/NewWorkBookAction.java +++ b/designer/src/com/fr/design/actions/file/newReport/NewWorkBookAction.java @@ -28,6 +28,7 @@ public class NewWorkBookAction extends UpdateAction { /** * 动作 + * * @param e 事件 */ public void actionPerformed(ActionEvent e) { diff --git a/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java b/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java index 80f40cadfe..da856173a7 100644 --- a/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java +++ b/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java @@ -1 +1,364 @@ -package com.fr.design.mainframe; import com.fr.base.ConfigManager; import com.fr.base.ConfigManagerProvider; import com.fr.base.FRContext; import com.fr.design.beans.BasicBeanPane; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.mainframe.toolbar.AuthorityEditToolBarComponent; import com.fr.design.mainframe.toolbar.ToolBarMenuDock; import com.fr.design.roleAuthority.RolesAlreadyEditedPane; import com.fr.design.webattr.ReportWebWidgetConstants; import com.fr.design.webattr.ToolBarButton; import com.fr.design.webattr.ToolBarPane; import com.fr.form.ui.Button; import com.fr.form.ui.ToolBar; import com.fr.form.ui.Widget; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; import com.fr.main.TemplateWorkBook; import com.fr.report.web.Location; import com.fr.report.web.ToolBarManager; import com.fr.report.web.WebContent; import com.fr.stable.ArrayUtils; import com.fr.web.attr.ReportWebAttr; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.List; /** * Author : daisy * Date: 13-9-9 * Time: 下午4:58 */ public class AuthorityToolBarPane extends BasicBeanPane implements AuthorityEditToolBarComponent { private static final int SMALL_GAP = 13; private static final int GAP = 25; private static final int PRE_GAP = 9; private static final int COMBOX_WIDTH = 144; private static final String[] CHOOSEITEM = new String[]{Inter.getLocText("M-Page_Preview"), Inter.getLocText(new String[]{"Face_Write", "PageSetup-Page"}), Inter.getLocText("M-Data_Analysis")}; private UIComboBox choseComboBox; private ToolBarPane toolBarPane; private AuthorityEditToolBarPane authorityEditToolBarPane = null; private int selectedIndex = -1; private UILabel title = null; private MouseListener mouseListener = new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (!toolBarPane.isEnabled()) { return; } java.util.List buttonlists = toolBarPane.getToolBarButtons(); int oldIndex = selectedIndex; selectedIndex = pressButtonIndex(e, buttonlists); //实现shift多选 if (e.isShiftDown()) { if (oldIndex == -1) { removeSelection(); ((ToolBarButton) e.getSource()).setSelected(true); } else { int max = oldIndex >= selectedIndex ? oldIndex : selectedIndex; int min = oldIndex <= selectedIndex ? oldIndex : selectedIndex; for (int i = min; i <= max; i++) { buttonlists.get(i).setSelected(true); } } } else if (!e.isControlDown()) { //实现单选 removeSelection(); if (selectedIndex != -1) { ((ToolBarButton) e.getSource()).setSelected(true); } } authorityEditToolBarPane.populate(); EastRegionContainerPane.getInstance().replaceUpPane(authorityEditToolBarPane); } }; private int pressButtonIndex(MouseEvent e, java.util.List buttonlists) { if (!(e.getSource() instanceof ToolBarButton)) { return -1; } ToolBarButton button = (ToolBarButton) e.getSource(); for (int i = 0; i < buttonlists.size(); i++) { if (ComparatorUtils.equals(button, buttonlists.get(i))) { return i; } } return -1; } /** * 去掉选择 */ public void removeSelection() { for (ToolBarButton button : toolBarPane.getToolBarButtons()) { button.setSelected(false); } } private ItemListener itemListener = new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.DESELECTED) { selectedIndex = -1; populateToolBarPane(); authorityEditToolBarPane = new AuthorityEditToolBarPane(toolBarPane.getToolBarButtons()); authorityEditToolBarPane.setAuthorityToolBarPane(AuthorityToolBarPane.this); EastRegionContainerPane.getInstance().replaceUpPane(authorityEditToolBarPane); EastRegionContainerPane.getInstance().replaceDownPane(RolesAlreadyEditedPane.getInstance()); } } }; public AuthorityToolBarPane() { this.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 3)); this.setBorder(BorderFactory.createEmptyBorder(0, PRE_GAP, 0, 0)); title = new UILabel(Inter.getLocText(new String[]{"ReportServerP-Toolbar", "Choose_Role"})); title.setHorizontalAlignment(SwingConstants.CENTER); this.add(title, 0); choseComboBox = new UIComboBox(CHOOSEITEM) { public Dimension getPreferredSize() { Dimension dim = super.getPreferredSize(); dim.width = COMBOX_WIDTH; return dim; } }; choseComboBox.addItemListener(itemListener); //默认选择第一个 choseComboBox.setSelectedIndex(0); this.add(createGapPanel(SMALL_GAP)); this.add(choseComboBox); toolBarPane = new ToolBarPane(); toolBarPane.setBorder(null); toolBarPane.removeDefaultMouseListener(); this.add(createGapPanel(GAP)); this.add(toolBarPane); populateDefaultToolBarWidgets(); populateBean(getReportWebAttr()); toolBarPane.addAuthorityListener(mouseListener); authorityEditToolBarPane = new AuthorityEditToolBarPane(toolBarPane.getToolBarButtons()); authorityEditToolBarPane.setAuthorityToolBarPane(this); checkToolBarPaneEnable(); } private JPanel createGapPanel(final int gap) { return new JPanel() { public Dimension getPreferredSize() { Dimension dim = super.getPreferredSize(); dim.width = gap; return dim; } }; } private void populateToolBarPane() { toolBarPane.removeAll(); populateDefaultToolBarWidgets(); populateBean(getReportWebAttr()); toolBarPane.addAuthorityListener(mouseListener); toolBarPane.repaint(); authorityEditToolBarPane = new AuthorityEditToolBarPane(toolBarPane.getToolBarButtons()); checkToolBarPaneEnable(); } /** * 使用普通用户远程设计时,如果工具栏使用的是“采用服务器设置”,则工具栏按钮为灰不可用 */ private void checkToolBarPaneEnable() { List toolBarButtons = toolBarPane.getToolBarButtons(); boolean isnotEnable = ComparatorUtils.equals(title.getText(), Inter.getLocText(new String[]{"Server", "ReportServerP-Toolbar", "Choose_Role"})) && !FRContext.getCurrentEnv().isRoot(); for (ToolBarButton button : toolBarButtons) { button.setEnabled(!isnotEnable); } toolBarPane.setEnabled(!isnotEnable); } /** * 更新权限工具栏面板 */ public void populateAuthority() { toolBarPane.repaint(); } private ReportWebAttr getReportWebAttr() { JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (!editingTemplate.isJWorkBook()) { return null; } JWorkBook editingWorkBook = (JWorkBook) editingTemplate; TemplateWorkBook wbTpl = editingWorkBook.getTarget(); return wbTpl.getReportWebAttr(); } //将该报表的设置过权限的属性记录一下 public void setAuthorityWebAttr(Widget widget, boolean isSelected, String selectedRole) { JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (!editingTemplate.isJWorkBook()) { return; } JWorkBook editingWorkBook = (JWorkBook) editingTemplate; TemplateWorkBook wbTpl = editingWorkBook.getTarget(); ReportWebAttr rw = wbTpl.getReportWebAttr(); ConfigManagerProvider cm = ConfigManager.getProviderInstance(); ReportWebAttr webAttr = ((ReportWebAttr) cm.getGlobalAttribute(ReportWebAttr.class)); //wbTpl.clear先清空 //再将所有的保存进去 //看是存在服务器还存在模板里面 if (choseComboBox.getSelectedIndex() == 0) { //分页 if (rw == null || rw.getWebPage() == null) { dealWithWebContent(webAttr.getWebPage(), widget, isSelected, selectedRole); } } else if (choseComboBox.getSelectedIndex() == 1) { //填报 if (rw == null || rw.getWebPage() == null) { dealWithWebContent(webAttr.getWebWrite(), widget, isSelected, selectedRole); } } else { //view if (rw == null || rw.getWebPage() == null) { dealWithWebContent(webAttr.getWebView(), widget, isSelected, selectedRole); } } } private void dealWithWebContent(WebContent wc, Widget widget, boolean isSelected, String selectedRole) { ToolBarManager[] managers = wc.getToolBarManagers(); if (managers == null) { return; } for (int i = 0; i < managers.length; i++) { ToolBar tb = managers[i].getToolBar(); for (int j = 0; j < tb.getWidgetSize(); j++) { if (widget instanceof Button && tb.getWidget(j) instanceof Button) { if (ComparatorUtils.equals(((Button) widget).getIconName(), ((Button) tb.getWidget(j)).getIconName())) { if (!isSelected) { tb.getWidget(j).getWidgetPrivilegeControl().addInvisibleRole(selectedRole); } else { tb.getWidget(j).getWidgetPrivilegeControl().removeInvisibleRole(selectedRole); } } } } } wc.setToolBarManagers(managers); } public void populateBean(ReportWebAttr reportWebAttr) { this.remove(title); // 如果是空值就说明采用服务器配置了 if (reportWebAttr == null || this.getWebContent(reportWebAttr) == null) { title = new UILabel(Inter.getLocText(new String[]{"Server", "ReportServerP-Toolbar", "Choose_Role"})); populateServerSettings(); this.add(title, 0); return; } // 模板设置 T webContent = this.getWebContent(reportWebAttr); title = new UILabel(Inter.getLocText(new String[]{"the_template", "ReportServerP-Toolbar", "Choose_Role"})); this.add(title, 0); populate(webContent.getToolBarManagers()); } public ReportWebAttr updateBean() { return null; } public void populate(ToolBarManager[] toolBarManager) { if (ArrayUtils.isEmpty(toolBarManager)) { return; } if (toolBarManager.length == 0) { return; } for (int i = 0; i < toolBarManager.length; i++) { toolBarPane.populateBean(toolBarManager[i].getToolBar()); } } public Dimension getPreferredSize() { Dimension dim = super.getPreferredSize(); dim.height = ToolBarMenuDock.PANLE_HEIGNT; return dim; } public void populateBean(ToolBarManager[] toolBarManager) { if (ArrayUtils.isEmpty(toolBarManager)) { return; } for (int i = 0; i < toolBarManager.length; i++) { Location location = toolBarManager[i].getToolBarLocation(); if (location instanceof Location.Embed) { toolBarPane.populateBean(toolBarManager[i].getToolBar()); } } } private void populateServerSettings() { ConfigManagerProvider cm = ConfigManager.getProviderInstance(); ReportWebAttr webAttr = ((ReportWebAttr) cm.getGlobalAttribute(ReportWebAttr.class)); if (this.getWebContent(webAttr) != null) { populate(this.getWebContent(webAttr).getToolBarManagers()); } } protected String title4PopupWindow() { return null; } private T getWebContent(ReportWebAttr reportWebAttr) { if (choseComboBox.getSelectedIndex() == 0) { return reportWebAttr == null ? null : (T) reportWebAttr.getWebPage(); } else if (choseComboBox.getSelectedIndex() == 1) { return reportWebAttr == null ? null : (T) reportWebAttr.getWebWrite(); } else { return reportWebAttr == null ? null : (T) reportWebAttr.getWebView(); } } private void populateDefaultToolBarWidgets() { if (choseComboBox.getSelectedIndex() == 0) { ReportWebWidgetConstants.getPageToolBarInstance(); } else if (choseComboBox.getSelectedIndex() == 1) { ReportWebWidgetConstants.getWriteToolBarInstance(); } else { ReportWebWidgetConstants.getViewToolBarInstance(); } } private ToolBarManager getDefaultToolBarManager() { if (choseComboBox.getSelectedIndex() == 0) { return ToolBarManager.createDefaultToolBar(); } else if (choseComboBox.getSelectedIndex() == 1) { return ToolBarManager.createDefaultWriteToolBar(); } else { return ToolBarManager.createDefaultViewToolBar(); } } } \ No newline at end of file +package com.fr.design.mainframe; + +import com.fr.base.ConfigManager; +import com.fr.base.ConfigManagerProvider; +import com.fr.base.FRContext; +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.mainframe.toolbar.AuthorityEditToolBarComponent; +import com.fr.design.mainframe.toolbar.ToolBarMenuDock; +import com.fr.design.roleAuthority.RolesAlreadyEditedPane; +import com.fr.design.webattr.ReportWebWidgetConstants; +import com.fr.design.webattr.ToolBarButton; +import com.fr.design.webattr.ToolBarPane; +import com.fr.form.ui.Button; +import com.fr.form.ui.ToolBar; +import com.fr.form.ui.Widget; +import com.fr.general.ComparatorUtils; +import com.fr.general.Inter; +import com.fr.main.TemplateWorkBook; +import com.fr.report.web.Location; +import com.fr.report.web.ToolBarManager; +import com.fr.report.web.WebContent; +import com.fr.stable.ArrayUtils; +import com.fr.web.attr.ReportWebAttr; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; +import java.util.List; + +/** + * Author : daisy + * Date: 13-9-9 + * Time: 下午4:58 + */ +public class AuthorityToolBarPane extends BasicBeanPane implements AuthorityEditToolBarComponent { + private static final int SMALL_GAP = 13; + private static final int GAP = 25; + private static final int PRE_GAP = 9; + private static final int COMBOX_WIDTH = 144; + + private static final String[] CHOOSEITEM = new String[]{Inter.getLocText("M-Page_Preview"), Inter.getLocText(new String[]{"Face_Write", "PageSetup-Page"}), Inter.getLocText("M-Data_Analysis")}; + private UIComboBox choseComboBox; + private ToolBarPane toolBarPane; + private AuthorityEditToolBarPane authorityEditToolBarPane = null; + private int selectedIndex = -1; + private UILabel title = null; + private MouseListener mouseListener = new MouseAdapter() { + public void mouseClicked(MouseEvent e) { + if (!toolBarPane.isEnabled()) { + return; + } + java.util.List buttonlists = toolBarPane.getToolBarButtons(); + int oldIndex = selectedIndex; + selectedIndex = pressButtonIndex(e, buttonlists); + //实现shift多选 + if (e.isShiftDown()) { + if (oldIndex == -1) { + removeSelection(); + ((ToolBarButton) e.getSource()).setSelected(true); + } else { + int max = oldIndex >= selectedIndex ? oldIndex : selectedIndex; + int min = oldIndex <= selectedIndex ? oldIndex : selectedIndex; + for (int i = min; i <= max; i++) { + buttonlists.get(i).setSelected(true); + } + } + } else if (!e.isControlDown()) { + //实现单选 + removeSelection(); + if (selectedIndex != -1) { + ((ToolBarButton) e.getSource()).setSelected(true); + } + } + authorityEditToolBarPane.populate(); + EastRegionContainerPane.getInstance().replaceUpPane(authorityEditToolBarPane); + } + + }; + + + private int pressButtonIndex(MouseEvent e, java.util.List buttonlists) { + if (!(e.getSource() instanceof ToolBarButton)) { + return -1; + } + ToolBarButton button = (ToolBarButton) e.getSource(); + for (int i = 0; i < buttonlists.size(); i++) { + if (ComparatorUtils.equals(button, buttonlists.get(i))) { + return i; + } + } + return -1; + } + + /** + * 去掉选择 + */ + public void removeSelection() { + for (ToolBarButton button : toolBarPane.getToolBarButtons()) { + button.setSelected(false); + } + } + + + private ItemListener itemListener = new ItemListener() { + + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.DESELECTED) { + selectedIndex = -1; + populateToolBarPane(); + authorityEditToolBarPane = new AuthorityEditToolBarPane(toolBarPane.getToolBarButtons()); + authorityEditToolBarPane.setAuthorityToolBarPane(AuthorityToolBarPane.this); + EastRegionContainerPane.getInstance().replaceUpPane(authorityEditToolBarPane); + EastRegionContainerPane.getInstance().replaceDownPane(RolesAlreadyEditedPane.getInstance()); + } + } + }; + + public AuthorityToolBarPane() { + this.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 3)); + this.setBorder(BorderFactory.createEmptyBorder(0, PRE_GAP, 0, 0)); + title = new UILabel(Inter.getLocText(new String[]{"ReportServerP-Toolbar", "Choose_Role"})); + title.setHorizontalAlignment(SwingConstants.CENTER); + this.add(title, 0); + choseComboBox = new UIComboBox(CHOOSEITEM) { + public Dimension getPreferredSize() { + Dimension dim = super.getPreferredSize(); + dim.width = COMBOX_WIDTH; + return dim; + } + }; + choseComboBox.addItemListener(itemListener); + //默认选择第一个 + choseComboBox.setSelectedIndex(0); + this.add(createGapPanel(SMALL_GAP)); + this.add(choseComboBox); + toolBarPane = new ToolBarPane(); + toolBarPane.setBorder(null); + toolBarPane.removeDefaultMouseListener(); + this.add(createGapPanel(GAP)); + this.add(toolBarPane); + populateDefaultToolBarWidgets(); + populateBean(getReportWebAttr()); + toolBarPane.addAuthorityListener(mouseListener); + authorityEditToolBarPane = new AuthorityEditToolBarPane(toolBarPane.getToolBarButtons()); + authorityEditToolBarPane.setAuthorityToolBarPane(this); + checkToolBarPaneEnable(); + } + + private JPanel createGapPanel(final int gap) { + return new JPanel() { + public Dimension getPreferredSize() { + Dimension dim = super.getPreferredSize(); + dim.width = gap; + return dim; + } + }; + } + + + private void populateToolBarPane() { + toolBarPane.removeAll(); + populateDefaultToolBarWidgets(); + populateBean(getReportWebAttr()); + toolBarPane.addAuthorityListener(mouseListener); + toolBarPane.repaint(); + authorityEditToolBarPane = new AuthorityEditToolBarPane(toolBarPane.getToolBarButtons()); + checkToolBarPaneEnable(); + } + + /** + * 使用普通用户远程设计时,如果工具栏使用的是“采用服务器设置”,则工具栏按钮为灰不可用 + */ + private void checkToolBarPaneEnable() { + List toolBarButtons = toolBarPane.getToolBarButtons(); + boolean isnotEnable = ComparatorUtils.equals(title.getText(), Inter.getLocText(new String[]{"Server", "ReportServerP-Toolbar", "Choose_Role"})) + && !FRContext.getCurrentEnv().isRoot(); + for (ToolBarButton button : toolBarButtons) { + button.setEnabled(!isnotEnable); + } + toolBarPane.setEnabled(!isnotEnable); + } + + /** + * 更新权限工具栏面板 + */ + public void populateAuthority() { + toolBarPane.repaint(); + } + + + private ReportWebAttr getReportWebAttr() { + JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + if (!editingTemplate.isJWorkBook()) { + return null; + } + JWorkBook editingWorkBook = (JWorkBook) editingTemplate; + TemplateWorkBook wbTpl = editingWorkBook.getTarget(); + return wbTpl.getReportWebAttr(); + } + + + //将该报表的设置过权限的属性记录一下 + public void setAuthorityWebAttr(Widget widget, boolean isSelected, String selectedRole) { + JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + if (!editingTemplate.isJWorkBook()) { + return; + } + JWorkBook editingWorkBook = (JWorkBook) editingTemplate; + TemplateWorkBook wbTpl = editingWorkBook.getTarget(); + + ReportWebAttr rw = wbTpl.getReportWebAttr(); + ConfigManagerProvider cm = ConfigManager.getProviderInstance(); + ReportWebAttr webAttr = ((ReportWebAttr) cm.getGlobalAttribute(ReportWebAttr.class)); + + //wbTpl.clear先清空 + //再将所有的保存进去 + //看是存在服务器还存在模板里面 + if (choseComboBox.getSelectedIndex() == 0) { + //分页 + if (rw == null || rw.getWebPage() == null) { + dealWithWebContent(webAttr.getWebPage(), widget, isSelected, selectedRole); + } + } else if (choseComboBox.getSelectedIndex() == 1) { + //填报 + if (rw == null || rw.getWebPage() == null) { + dealWithWebContent(webAttr.getWebWrite(), widget, isSelected, selectedRole); + } + } else { + //view + if (rw == null || rw.getWebPage() == null) { + dealWithWebContent(webAttr.getWebView(), widget, isSelected, selectedRole); + } + } + + } + + private void dealWithWebContent(WebContent wc, Widget widget, boolean isSelected, String selectedRole) { + ToolBarManager[] managers = wc.getToolBarManagers(); + if (managers == null) { + return; + } + for (int i = 0; i < managers.length; i++) { + ToolBar tb = managers[i].getToolBar(); + for (int j = 0; j < tb.getWidgetSize(); j++) { + if (widget instanceof Button && tb.getWidget(j) instanceof Button) { + if (ComparatorUtils.equals(((Button) widget).getIconName(), + ((Button) tb.getWidget(j)).getIconName())) { + if (!isSelected) { + tb.getWidget(j).getWidgetPrivilegeControl().addInvisibleRole(selectedRole); + } else { + tb.getWidget(j).getWidgetPrivilegeControl().removeInvisibleRole(selectedRole); + } + } + } + } + } + wc.setToolBarManagers(managers); + } + + + public void populateBean(ReportWebAttr reportWebAttr) { + this.remove(title); + // 如果是空值就说明采用服务器配置了 + if (reportWebAttr == null || this.getWebContent(reportWebAttr) == null) { + title = new UILabel(Inter.getLocText(new String[]{"Server", "ReportServerP-Toolbar", "Choose_Role"})); + populateServerSettings(); + this.add(title, 0); + return; + } + // 模板设置 + T webContent = this.getWebContent(reportWebAttr); + title = new UILabel(Inter.getLocText(new String[]{"the_template", "ReportServerP-Toolbar", "Choose_Role"})); + this.add(title, 0); + populate(webContent.getToolBarManagers()); + } + + public ReportWebAttr updateBean() { + return null; + } + + public void populate(ToolBarManager[] toolBarManager) { + if (ArrayUtils.isEmpty(toolBarManager)) { + return; + } + if (toolBarManager.length == 0) { + return; + } + for (int i = 0; i < toolBarManager.length; i++) { + toolBarPane.populateBean(toolBarManager[i].getToolBar()); + } + } + + + public Dimension getPreferredSize() { + Dimension dim = super.getPreferredSize(); + dim.height = ToolBarMenuDock.PANLE_HEIGNT; + return dim; + } + + + public void populateBean(ToolBarManager[] toolBarManager) { + if (ArrayUtils.isEmpty(toolBarManager)) { + return; + } + for (int i = 0; i < toolBarManager.length; i++) { + Location location = toolBarManager[i].getToolBarLocation(); + if (location instanceof Location.Embed) { + toolBarPane.populateBean(toolBarManager[i].getToolBar()); + } + } + } + + + private void populateServerSettings() { + ConfigManagerProvider cm = ConfigManager.getProviderInstance(); + ReportWebAttr webAttr = ((ReportWebAttr) cm.getGlobalAttribute(ReportWebAttr.class)); + if (this.getWebContent(webAttr) != null) { + populate(this.getWebContent(webAttr).getToolBarManagers()); + } + } + + protected String title4PopupWindow() { + return null; + } + + + private T getWebContent(ReportWebAttr reportWebAttr) { + if (choseComboBox.getSelectedIndex() == 0) { + return reportWebAttr == null ? null : (T) reportWebAttr.getWebPage(); + } else if (choseComboBox.getSelectedIndex() == 1) { + return reportWebAttr == null ? null : (T) reportWebAttr.getWebWrite(); + } else { + return reportWebAttr == null ? null : (T) reportWebAttr.getWebView(); + } + + } + + private void populateDefaultToolBarWidgets() { + if (choseComboBox.getSelectedIndex() == 0) { + ReportWebWidgetConstants.getPageToolBarInstance(); + } else if (choseComboBox.getSelectedIndex() == 1) { + ReportWebWidgetConstants.getWriteToolBarInstance(); + } else { + ReportWebWidgetConstants.getViewToolBarInstance(); + } + } + + private ToolBarManager getDefaultToolBarManager() { + if (choseComboBox.getSelectedIndex() == 0) { + return ToolBarManager.createDefaultToolBar(); + } else if (choseComboBox.getSelectedIndex() == 1) { + return ToolBarManager.createDefaultWriteToolBar(); + } else { + return ToolBarManager.createDefaultViewToolBar(); + } + + } + + +} \ No newline at end of file diff --git a/designer/src/com/fr/design/mainframe/FormatBrushAction.java b/designer/src/com/fr/design/mainframe/FormatBrushAction.java index 296fb6d20b..6876312507 100644 --- a/designer/src/com/fr/design/mainframe/FormatBrushAction.java +++ b/designer/src/com/fr/design/mainframe/FormatBrushAction.java @@ -1 +1,170 @@ -package com.fr.design.mainframe; import com.fr.base.BaseUtils; import com.fr.base.Style; import com.fr.design.actions.ElementCaseAction; import com.fr.general.Inter; import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.Selection; import com.fr.report.cell.DefaultTemplateCellElement; import com.fr.report.cell.TemplateCellElement; import com.fr.report.elementcase.TemplateElementCase; import javax.swing.*; import java.awt.*; import java.awt.event.*; /** * Author : daisy * Date: 13-8-7 * Time: 上午11:05 */ public class FormatBrushAction extends ElementCaseAction { private ElementCasePane ePane; private CellSelection oldSelection; public FormatBrushAction(ElementCasePane t) { super(t); this.setName(Inter.getLocText("M_Edit-FormatBrush")); this.setMnemonic('B'); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_edit/formatBrush.png")); this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, KeyEvent.CTRL_MASK)); } public boolean executeActionReturnUndoRecordNeeded() { ePane = (ElementCasePane) getEditingComponent(); if (ePane != null) { Selection selection = ePane.getSelection(); if (!(selection instanceof CellSelection)) { return false; } oldSelection = ((CellSelection) selection).clone(); ePane.setFormatReferencedCell(oldSelection); int cellRectangleCount = oldSelection.getCellRectangleCount(); if (cellRectangleCount > 1) { //格式刷只支持单次选择的区域,如果用ctrl复选选中了多片区域,点击格式刷按钮时弹出提示 //判断是不是连续区域 //荣国是连续区域,那么这些长方形的长加起来应该等于 if (!isContinueArea()) { JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("Can_not_use_FormatBursh")); ePane.setFormatState(DesignerContext.FORMAT_STATE_NULL); ePane.getFormatBrush().setSelected(false); return false; } } //只对单个区域进行格式刷操作 ((ElementCasePane) DesignerContext.getReferencedElementCasePane()).getGrid().setNotShowingTableSelectPane(false); ePane.repaint(); return true; } return false; } /** * 判断是不是连续区域 * * @return */ private boolean isContinueArea() { int xStart = oldSelection.getCellRectangle(1).x; int xend = 0; int yStrat = oldSelection.getCellRectangle(1).y; int yend = 0; int totalNum = 0; for (int i = 0; i < oldSelection.getCellRectangleCount(); i++) { Rectangle temp = oldSelection.getCellRectangle(i); if (temp.getX() < xStart) { xStart = temp.x; } if (temp.getX() + temp.getWidth() > xend) { xend = (int) (temp.getX() + temp.getWidth()); } if (temp.getY() < yStrat) { yStrat = temp.y; } if (temp.getY() + temp.getHeight() > yend) { yend = (int) (temp.getY() + temp.getHeight()); } totalNum += (int) (temp.getWidth() * temp.getHeight()); } if ((xend - xStart) * (yend - yStrat) == totalNum) { oldSelection = new CellSelection(xStart, yStrat, (xend - xStart), (yend - yStrat)); ePane.setSelection(oldSelection); ePane.setFormatReferencedCell(oldSelection); return true; } return false; } public void updateFormatBrush(Style[][] referencedStyle, CellSelection cs, ElementCasePane reportPane) { //得到被参照的单元格的行列数 if (referencedStyle == null) { return; } int rowSpan = referencedStyle[0].length; int columnSpan = referencedStyle.length; //开始进行格式刷样式复制 TemplateElementCase elementCase = reportPane.getEditingElementCase(); int rowNum = cs.getRowSpan(); int columnNum = cs.getColumnSpan(); //如果只点选了一个,则自动补足 if (cs.getColumnSpan() * cs.getRowSpan() == 1) { rowNum = rowSpan; columnNum = columnSpan; } for (int j = 0; j < rowNum; j++) { for (int i = 0; i < columnNum; i++) { int column = i + cs.getColumn(); int row = j + cs.getRow(); TemplateCellElement cellElement = elementCase.getTemplateCellElement(column, row); if (cellElement == null) { cellElement = new DefaultTemplateCellElement(column, row); elementCase.addCellElement(cellElement); } cellElement.setStyle(referencedStyle[i % columnSpan][j % rowSpan]); } } } private Style[][] getOldStyles(CellSelection oldSelection) { Style[][] referencedStyle = new Style[oldSelection.getColumnSpan()][oldSelection.getRowSpan()]; int cellRectangleCount = oldSelection.getCellRectangleCount(); TemplateElementCase elementCase = ePane.getEditingElementCase(); for (int rect = 0; rect < cellRectangleCount; rect++) { Rectangle cellRectangle = oldSelection.getCellRectangle(rect); for (int j = 0; j < cellRectangle.height; j++) { for (int i = 0; i < cellRectangle.width; i++) { int column = i + cellRectangle.x; int row = j + cellRectangle.y; TemplateCellElement cellElement = elementCase.getTemplateCellElement(column, row); if (cellElement == null) { cellElement = new DefaultTemplateCellElement(column, row); elementCase.addCellElement(cellElement); } Style style = cellElement.getStyle(); if (style == null) { style = style.DEFAULT_STYLE; } referencedStyle[i][j] = style; } } } return referencedStyle; } } \ No newline at end of file +package com.fr.design.mainframe; + +import com.fr.base.BaseUtils; +import com.fr.base.Style; +import com.fr.design.actions.ElementCaseAction; +import com.fr.general.Inter; +import com.fr.grid.selection.CellSelection; +import com.fr.grid.selection.Selection; +import com.fr.report.cell.DefaultTemplateCellElement; +import com.fr.report.cell.TemplateCellElement; +import com.fr.report.elementcase.TemplateElementCase; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.InputEvent; +import java.awt.event.KeyEvent; + +/** + * Author : daisy + * Date: 13-8-7 + * Time: 上午11:05 + */ +public class FormatBrushAction extends ElementCaseAction { + + private ElementCasePane ePane; + private CellSelection oldSelection; + + + public FormatBrushAction(ElementCasePane t) { + super(t); + this.setName(Inter.getLocText("M_Edit-FormatBrush")); + this.setMnemonic('B'); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_edit/formatBrush.png")); + this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, InputEvent.CTRL_MASK)); + } + + public boolean executeActionReturnUndoRecordNeeded() { + ePane = (ElementCasePane) getEditingComponent(); + if (ePane != null) { + Selection selection = ePane.getSelection(); + if (!(selection instanceof CellSelection)) { + return false; + } + oldSelection = ((CellSelection) selection).clone(); + ePane.setFormatReferencedCell(oldSelection); + int cellRectangleCount = oldSelection.getCellRectangleCount(); + if (cellRectangleCount > 1) { + //格式刷只支持单次选择的区域,如果用ctrl复选选中了多片区域,点击格式刷按钮时弹出提示 + //判断是不是连续区域 + //荣国是连续区域,那么这些长方形的长加起来应该等于 + if (!isContinueArea()) { + JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("FR-Designer_Can_not_use_FormatBursh")); + ePane.setFormatState(DesignerContext.FORMAT_STATE_NULL); + ePane.getFormatBrush().setSelected(false); + return false; + } + } + //只对单个区域进行格式刷操作 + ((ElementCasePane) DesignerContext.getReferencedElementCasePane()).getGrid().setNotShowingTableSelectPane(false); + ePane.repaint(); + return true; + } + return false; + } + + + /** + * 判断是不是连续区域 + * + * @return + */ + private boolean isContinueArea() { + int xStart = oldSelection.getCellRectangle(1).x; + int xend = 0; + int yStrat = oldSelection.getCellRectangle(1).y; + int yend = 0; + int totalNum = 0; + for (int i = 0; i < oldSelection.getCellRectangleCount(); i++) { + Rectangle temp = oldSelection.getCellRectangle(i); + if (temp.getX() < xStart) { + xStart = temp.x; + } + if (temp.getX() + temp.getWidth() > xend) { + xend = (int) (temp.getX() + temp.getWidth()); + } + if (temp.getY() < yStrat) { + yStrat = temp.y; + } + if (temp.getY() + temp.getHeight() > yend) { + yend = (int) (temp.getY() + temp.getHeight()); + } + totalNum += (int) (temp.getWidth() * temp.getHeight()); + } + + if ((xend - xStart) * (yend - yStrat) == totalNum) { + oldSelection = new CellSelection(xStart, yStrat, (xend - xStart), (yend - yStrat)); + ePane.setSelection(oldSelection); + ePane.setFormatReferencedCell(oldSelection); + return true; + } + return false; + } + + + public void updateFormatBrush(Style[][] referencedStyle, CellSelection cs, ElementCasePane reportPane) { + //得到被参照的单元格的行列数 + if (referencedStyle == null) { + return; + } + int rowSpan = referencedStyle[0].length; + int columnSpan = referencedStyle.length; + + //开始进行格式刷样式复制 + TemplateElementCase elementCase = reportPane.getEditingElementCase(); + int rowNum = cs.getRowSpan(); + int columnNum = cs.getColumnSpan(); + + + //如果只点选了一个,则自动补足 + if (cs.getColumnSpan() * cs.getRowSpan() == 1) { + rowNum = rowSpan; + columnNum = columnSpan; + } + + for (int j = 0; j < rowNum; j++) { + for (int i = 0; i < columnNum; i++) { + int column = i + cs.getColumn(); + int row = j + cs.getRow(); + TemplateCellElement cellElement = elementCase.getTemplateCellElement(column, row); + if (cellElement == null) { + cellElement = new DefaultTemplateCellElement(column, row); + elementCase.addCellElement(cellElement); + } + cellElement.setStyle(referencedStyle[i % columnSpan][j % rowSpan]); + } + } + + + } + + + private Style[][] getOldStyles(CellSelection oldSelection) { + Style[][] referencedStyle = new Style[oldSelection.getColumnSpan()][oldSelection.getRowSpan()]; + int cellRectangleCount = oldSelection.getCellRectangleCount(); + TemplateElementCase elementCase = ePane.getEditingElementCase(); + for (int rect = 0; rect < cellRectangleCount; rect++) { + Rectangle cellRectangle = oldSelection.getCellRectangle(rect); + for (int j = 0; j < cellRectangle.height; j++) { + for (int i = 0; i < cellRectangle.width; i++) { + int column = i + cellRectangle.x; + int row = j + cellRectangle.y; + TemplateCellElement cellElement = elementCase.getTemplateCellElement(column, row); + if (cellElement == null) { + cellElement = new DefaultTemplateCellElement(column, row); + elementCase.addCellElement(cellElement); + } + Style style = cellElement.getStyle(); + if (style == null) { + style = style.DEFAULT_STYLE; + } + + referencedStyle[i][j] = style; + } + } + } + + return referencedStyle; + } + +} \ No newline at end of file diff --git a/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java b/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java index f6e3d3e7ca..90d84059b3 100644 --- a/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java +++ b/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java @@ -5,7 +5,6 @@ package com.fr.design.mainframe.bbs; import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; -import com.fr.design.dialog.UIDialog; import com.fr.design.extra.*; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.imenu.UIMenuItem; @@ -103,17 +102,13 @@ public class UserInfoLabel extends UILabel { if (StableUtils.getMajorJavaVersion() == 8) { PluginWebBridge.getHelper().setUILabel(UserInfoLabel.this); } - QQLoginWebBridge.getHelper().setUILabelInPlugin(UserInfoLabel.this); + LoginWebBridge.getHelper().setUILabelInPlugin(UserInfoLabel.this); UserLoginContext.addLoginContextListener(new LoginContextListener() { @Override public void showLoginContext() { - LoginPane managerPane = new LoginPane(); - UIDialog qqdlg = new LoginDialog(DesignerContext.getDesignerFrame(), managerPane); - LoginWebBridge.getHelper().setDialogHandle(qqdlg); + WebViewDlgHelper.createLoginDialog(); LoginWebBridge.getHelper().setUILabel(UserInfoLabel.this); - QQLoginWebBridge.getHelper().setLoginlabel(); - qqdlg.setVisible(true); clearLoginInformation(); updateInfoPane(); } diff --git a/designer/src/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java b/designer/src/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java index 46bc378ae8..af5906c336 100644 --- a/designer/src/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java +++ b/designer/src/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java @@ -10,7 +10,7 @@ import javax.swing.event.ChangeListener; import com.fr.base.FRContext; import com.fr.design.dialog.BasicPane; -import com.fr.design.extra.WebDialog; +import com.fr.design.extra.WebViewDlgHelper; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.ActionLabel; import com.fr.design.gui.ilable.UILabel; @@ -553,7 +553,7 @@ public class RepeatAndFreezeSettingPane extends BasicPane { public void actionPerformed(ActionEvent e) { try { //Desktop.getDesktop().browse(new URI(url)); - WebDialog.createPluginDialog(); + WebViewDlgHelper.createPluginDialog(); RepeatAndFreezeSettingPane.this.getTopLevelAncestor().setVisible(false); } catch (Exception exp) { diff --git a/designer/src/com/fr/grid/GridKeyListener.java b/designer/src/com/fr/grid/GridKeyListener.java index cf2258a4fb..ff3d843fb4 100644 --- a/designer/src/com/fr/grid/GridKeyListener.java +++ b/designer/src/com/fr/grid/GridKeyListener.java @@ -1,212 +1,207 @@ package com.fr.grid; -import java.awt.Toolkit; -import java.awt.event.KeyEvent; -import java.awt.event.KeyListener; - import com.fr.design.mainframe.ElementCasePane; import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.FloatSelection; import com.fr.grid.selection.Selection; import com.fr.report.elementcase.ElementCase; +import java.awt.*; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; + /** - * * @editor zhou * @since 2012-3-23上午10:55:36 */ public class GridKeyListener implements KeyListener { - - private Grid grid; - // Keypressed last time - private long keyPressedLastTime = 0; - private boolean isKeyPressedContentChanged = false; - - public GridKeyListener(Grid grid) { - this.grid = grid; - } - - public void keyPressed(KeyEvent evt) { - if (!grid.isEnabled() || evt.isConsumed()) {// 如果用户在自己的KyeListener里面consume了.就不执行下面的代码了. - return; - } - KeyEvent newEvt = KeyEventWork.processKeyEvent(evt); - if (newEvt == null) { - return; - } - long systemCurrentTime = System.currentTimeMillis(); - int code = evt.getKeyCode(); - boolean isNeedRepaint = false; - ElementCasePane reportPane = grid.getElementCasePane(); - ElementCase report = reportPane.getEditingElementCase(); - if (reportPane.getSelection() instanceof FloatSelection) { - if (systemCurrentTime - keyPressedLastTime <= 2) { - return; - } else { - keyPressedLastTime = systemCurrentTime; - } - dealWithFloatSelection(reportPane, code); - - } else { - if (systemCurrentTime - keyPressedLastTime <= 32) { - return; - } else { - keyPressedLastTime = systemCurrentTime; - } - dealWithCellSelection(evt, code); - - } - - switch (code) { - case KeyEvent.VK_PAGE_UP: {// page up - reportPane.getVerticalScrollBar().setValue(Math.max(0, grid.getVerticalValue() - grid.getVerticalExtent())); - isNeedRepaint = true; - break; - } - case KeyEvent.VK_PAGE_DOWN: {// page down - reportPane.getVerticalScrollBar().setValue(grid.getVerticalValue() + grid.getVerticalExtent()); - isNeedRepaint = true; - break; - } - // Richie:Ctrl + A全选单元格 - case KeyEvent.VK_A: - if (code == KeyEvent.VK_A && evt.isControlDown()) { - reportPane.setSelection(new CellSelection(0, 0, report.getColumnCount(), report.getRowCount())); - isNeedRepaint = true; - } - isNeedRepaint = true; - break; - } - - if (isNeedRepaint) { - reportPane.repaint(); - } - } - - /** - * 单选中悬浮元素时,只处理4个方向键 - * - * @param reportPane - * @param code - */ - private void dealWithFloatSelection(ElementCasePane reportPane, int code) { - boolean isContentChanged = false; - FloatSelection floatselection = (FloatSelection)reportPane.getSelection(); - - switch (code) { - case KeyEvent.VK_LEFT: {// left - floatselection.moveLeft(reportPane); - isContentChanged = true; - break; - } - case KeyEvent.VK_RIGHT: {// right - floatselection.moveRight(reportPane); - isContentChanged = true; - break; - } - case KeyEvent.VK_UP: {// up - floatselection.moveUp(reportPane); - isContentChanged = true; - break; - } - case KeyEvent.VK_DOWN: {// down - floatselection.moveDown(reportPane); - isContentChanged = true; - break; - } - } - - if (isContentChanged) { - grid.getElementCasePane().repaint(); - this.isKeyPressedContentChanged = true; - } - } - - private void dealWithCellSelection(KeyEvent evt, int code) { - switch (code) { - case KeyEvent.VK_ESCAPE: { - if (grid.isCellEditing()) { - grid.cancelEditing(); - } - break; - } - case KeyEvent.VK_F2: { - if (!grid.isCellEditing()) { - grid.startEditing(); - } - - break; - } - } - - // 支持小键盘 - if (IS_NUM_PAD_KEY(code)) { - keyTyped(evt); - } - } - - public void keyReleased(KeyEvent evt) { - if (!grid.isEnabled() || evt.isConsumed()) { - return; - } - KeyEvent newEvt = KeyEventWork.processKeyEvent(evt); - if (newEvt == null) { - return; - } - - if (this.isKeyPressedContentChanged) { - grid.getElementCasePane().fireTargetModified(); - - this.isKeyPressedContentChanged = false; - } - } - - public void keyTyped(KeyEvent evt) { - if (!grid.isEnabled() || evt.isConsumed()) { - return; - } - KeyEvent newEvt = KeyEventWork.processKeyEvent(evt); - if (newEvt == null || evt.isControlDown()) {// uneditable. - return; - } - char ch = evt.getKeyChar(); - if (ch == KeyEvent.VK_TAB) {// 禁止Tab键. - return; - } - int code = evt.getKeyCode(); - if (Character.isDefined(ch)) {// VK_SUBTRACT小键盘的减号 - Selection s = grid.getElementCasePane().getSelection(); - if (s instanceof CellSelection) { - if (!grid.getElementCasePane().isSelectedOneCell()) { - Toolkit.getDefaultToolkit().beep(); - return; - } - if (!grid.isCellEditing()) { - grid.startEditing(true); - } - - if (grid.getCellEditor() != null && grid.editorComponent != null) { - if (IS_NUM_PAD_KEY(code)) { - // 103 - 55 = 48, 小键盘和大键盘数字的差值 48 - KeyEvent ke = new KeyEvent(grid, KeyEvent.KEY_PRESSED, 0, 0, code - 48, ch); - grid.editorComponent.dispatchEvent(ke); - ke.consume(); - } else { - if (!evt.isConsumed()) { - grid.editorComponent.dispatchEvent(evt); - } - } - } - } - } - } - /** - * 小键盘 - * @param code - * @return - */ - private static boolean IS_NUM_PAD_KEY(int code){ - return code == KeyEvent.VK_NUMPAD0 || code == KeyEvent.VK_NUMPAD1 + private static final int DIFF = 48; // 103 - 55 = 48, 小键盘和大键盘数字的差值 48 + private static final int DELAY = 32; + private Grid grid; + // Keypressed last time + private long keyPressedLastTime = 0; + private boolean isKeyPressedContentChanged = false; + + public GridKeyListener(Grid grid) { + this.grid = grid; + } + + public void keyPressed(KeyEvent evt) { + if (!grid.isEnabled() || evt.isConsumed()) {// 如果用户在自己的KyeListener里面consume了.就不执行下面的代码了. + return; + } + if (KeyEventWork.processKeyEvent(evt) == null) { + return; + } + long systemCurrentTime = System.currentTimeMillis(); + int code = evt.getKeyCode(); + boolean isNeedRepaint = false; + ElementCasePane reportPane = grid.getElementCasePane(); + ElementCase report = reportPane.getEditingElementCase(); + if (reportPane.getSelection() instanceof FloatSelection) { + if (systemCurrentTime - keyPressedLastTime <= 2) { + return; + } else { + keyPressedLastTime = systemCurrentTime; + } + dealWithFloatSelection(reportPane, code); + } else { + if (systemCurrentTime - keyPressedLastTime <= DELAY) { + return; + } else { + keyPressedLastTime = systemCurrentTime; + } + dealWithCellSelection(evt, code); + } + switch (code) { + case KeyEvent.VK_PAGE_UP: {// page up + reportPane.getVerticalScrollBar().setValue(Math.max(0, grid.getVerticalValue() - grid.getVerticalExtent())); + isNeedRepaint = true; + break; + } + case KeyEvent.VK_PAGE_DOWN: {// page down + reportPane.getVerticalScrollBar().setValue(grid.getVerticalValue() + grid.getVerticalExtent()); + isNeedRepaint = true; + break; + } + // Richie:Ctrl + A全选单元格 + case KeyEvent.VK_A: + if (evt.isControlDown()) { + reportPane.setSelection(new CellSelection(0, 0, report.getColumnCount(), report.getRowCount())); + } + isNeedRepaint = true; + break; + } + if (isNeedRepaint) { + reportPane.repaint(); + } + } + + /** + * 单选中悬浮元素时,只处理4个方向键 + * + * @param reportPane + * @param code + */ + private void dealWithFloatSelection(ElementCasePane reportPane, int code) { + boolean isContentChanged = false; + FloatSelection floatselection = (FloatSelection) reportPane.getSelection(); + + switch (code) { + case KeyEvent.VK_LEFT: {// left + floatselection.moveLeft(reportPane); + isContentChanged = true; + break; + } + case KeyEvent.VK_RIGHT: {// right + floatselection.moveRight(reportPane); + isContentChanged = true; + break; + } + case KeyEvent.VK_UP: {// up + floatselection.moveUp(reportPane); + isContentChanged = true; + break; + } + case KeyEvent.VK_DOWN: {// down + floatselection.moveDown(reportPane); + isContentChanged = true; + break; + } + } + + if (isContentChanged) { + grid.getElementCasePane().repaint(); + this.isKeyPressedContentChanged = true; + } + } + + private void dealWithCellSelection(KeyEvent evt, int code) { + switch (code) { + case KeyEvent.VK_ESCAPE: { + if (grid.isCellEditing()) { + grid.cancelEditing(); + } + break; + } + case KeyEvent.VK_F2: { + if (!grid.isCellEditing()) { + grid.startEditing(); + } + + break; + } + } + + // 支持小键盘 + if (IS_NUM_PAD_KEY(code)) { + keyTyped(evt); + } + } + + public void keyReleased(KeyEvent evt) { + if (!grid.isEnabled() || evt.isConsumed()) { + return; + } + KeyEvent newEvt = KeyEventWork.processKeyEvent(evt); + if (newEvt == null) { + return; + } + + if (this.isKeyPressedContentChanged) { + grid.getElementCasePane().fireTargetModified(); + + this.isKeyPressedContentChanged = false; + } + } + + public void keyTyped(KeyEvent evt) { + if (!grid.isEnabled() || evt.isConsumed()) { + return; + } + KeyEvent newEvt = KeyEventWork.processKeyEvent(evt); + if (newEvt == null || evt.isControlDown()) {// uneditable. + return; + } + char ch = evt.getKeyChar(); + if (ch == KeyEvent.VK_TAB) {// 禁止Tab键. + return; + } + int code = evt.getKeyCode(); + if (Character.isDefined(ch)) {// VK_SUBTRACT小键盘的减号 + Selection s = grid.getElementCasePane().getSelection(); + if (s instanceof CellSelection) { + if (!grid.getElementCasePane().isSelectedOneCell()) { + Toolkit.getDefaultToolkit().beep(); + return; + } + if (!grid.isCellEditing()) { + grid.startEditing(true); + } + + if (grid.getCellEditor() != null && grid.editorComponent != null) { + if (IS_NUM_PAD_KEY(code)) { + KeyEvent ke = new KeyEvent(grid, KeyEvent.KEY_PRESSED, 0, 0, code - DIFF, ch); + grid.editorComponent.dispatchEvent(ke); + ke.consume(); + } else { + if (!evt.isConsumed()) { + grid.editorComponent.dispatchEvent(evt); + } + } + } + } + } + } + + /** + * 小键盘 + * + * @param code + * @return + */ + private static boolean IS_NUM_PAD_KEY(int code) { + return code == KeyEvent.VK_NUMPAD0 || code == KeyEvent.VK_NUMPAD1 || code == KeyEvent.VK_NUMPAD2 || code == KeyEvent.VK_NUMPAD3 || code == KeyEvent.VK_NUMPAD4 @@ -215,10 +210,10 @@ public class GridKeyListener implements KeyListener { || code == KeyEvent.VK_NUMPAD7 || code == KeyEvent.VK_NUMPAD8 || code == KeyEvent.VK_NUMPAD9 - || code == KeyEvent.VK_MULTIPLY + || code == KeyEvent.VK_MULTIPLY || code == KeyEvent.VK_ADD || code == KeyEvent.VK_SUBTRACT || code == KeyEvent.VK_DECIMAL || code == KeyEvent.VK_DIVIDE; - } + } } \ No newline at end of file diff --git a/designer/src/com/fr/grid/GridMouseAdapter.java b/designer/src/com/fr/grid/GridMouseAdapter.java index 9f14df471d..974a2cfbbd 100644 --- a/designer/src/com/fr/grid/GridMouseAdapter.java +++ b/designer/src/com/fr/grid/GridMouseAdapter.java @@ -1,19 +1,5 @@ package com.fr.grid; -import java.awt.Cursor; -import java.awt.Point; -import java.awt.Rectangle; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.awt.event.MouseMotionListener; -import java.awt.event.MouseWheelEvent; -import java.awt.event.MouseWheelListener; -import java.util.HashMap; -import java.util.Map; - -import javax.swing.JPopupMenu; -import javax.swing.SwingUtilities; - import com.fr.base.BaseUtils; import com.fr.base.DynamicUnitList; import com.fr.base.ScreenResolution; @@ -21,6 +7,7 @@ import com.fr.design.constants.UIConstants; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.ElementCasePane; import com.fr.design.present.CellWriteAttrPane; +import com.fr.design.utils.gui.GUICoreUtils; import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.FloatSelection; import com.fr.grid.selection.Selection; @@ -37,7 +24,12 @@ import com.fr.stable.ColumnRow; import com.fr.stable.StringUtils; import com.fr.stable.unit.FU; import com.fr.stable.unit.OLDPIX; -import com.fr.design.utils.gui.GUICoreUtils; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; +import java.util.HashMap; +import java.util.Map; /** * the MouseListener of the Grid @@ -45,800 +37,800 @@ import com.fr.design.utils.gui.GUICoreUtils; * @editor zhou 2012-3-22下午1:53:59 */ public class GridMouseAdapter implements MouseListener, MouseWheelListener, MouseMotionListener { - private static final int WIDGET_WIDTH = 13; - private static final int TIME_DELAY = 100; - private static final int TOOLTIP_X = 30; - private static final int TOOLTIP_X_Y_FIX = 4; - private static final double COPY_CROSS_INNER_DISTANCE = 1.5; - private static final double COPY_CROSS_OUTER_DISTANCE = 2.5; - /** - * 拖拽时候刷新时间间隔 - */ - private static int DRAG_REFRESH_TIME = 10; - /** - * 对应的表格-Grid - */ - private Grid grid; - /** - * the Point(x,y) where the mouse pressed - */ - private int oldEvtX = 0; - private int oldEvtY = 0; - // the old location, used for Move float element. - private int oldLocationX; - private int oldLocationY; - private long lastMouseMoveTime = 0; // 最后的MouseMove时间. - // 保存各个悬浮元素到oldLocation距离 - private Map floatNamePointMap; - /** - * august:因为CellSelection里面没有记录的变量了,必须要有个变量来存按住shift键的位置之前的鼠标的位置 - * 用户可能一直按住shift键不放,所以按住shift键之前的鼠标位置是必须有的. - */ - private ColumnRow tempOldSelectedCell; - - private int ECBlockGap = 40; - - protected GridMouseAdapter(Grid grid) { - this.grid = grid; - } - - /** - * @param evt - */ - public void mousePressed(MouseEvent evt) { - if (!grid.isEnabled()) { - return; - } - oldEvtX = evt.getX(); - oldEvtY = evt.getY(); - grid.stopEditing(); - - if (!grid.hasFocus() && grid.isRequestFocusEnabled()) { - grid.requestFocus(); - } - - if (grid.getDrawingFloatElement() != null) { - doWithDrawingFloatElement(); - } else { - if (SwingUtilities.isRightMouseButton(evt)) { - doWithRightButtonPressed(); - } else { - doWithLeftButtonPressed(evt); - } - // 用户没有按住Shift键时,tempOldSelectedCell是一直变化的。如果一直按住shift,是不变的 - ElementCasePane ePane = grid.getElementCasePane(); - if (!evt.isShiftDown() && ePane.getSelection() instanceof CellSelection) { - tempOldSelectedCell = GridUtils.getAdjustEventColumnRow(ePane, oldEvtX, oldEvtY); - } - } - - } - - /** - * 将悬浮元素(只有文本和公式)添加到鼠标点击的位置 - */ - private void doWithDrawingFloatElement() { - ElementCasePane reportPane = grid.getElementCasePane(); - TemplateElementCase report = reportPane.getEditingElementCase(); - DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); - DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); - - int horizentalScrollValue = grid.getHorizontalValue(); - int verticalScrollValue = grid.getVerticalValue(); - int resolution = ScreenResolution.getScreenResolution(); - FU evtX_fu = FU.valueOfPix(this.oldEvtX, resolution); - FU evtY_fu = FU.valueOfPix(this.oldEvtY, resolution); - - FU leftDistance = FU.getInstance(evtX_fu.toFU() + columnWidthList.getRangeValue(0, horizentalScrollValue).toFU()); - FU topDistance = FU.getInstance(evtY_fu.toFU() + rowHeightList.getRangeValue(0, verticalScrollValue).toFU()); - - grid.getDrawingFloatElement().setLeftDistance(leftDistance); - grid.getDrawingFloatElement().setTopDistance(topDistance); - - report.addFloatElement(grid.getDrawingFloatElement()); - reportPane.setSelection(new FloatSelection(grid.getDrawingFloatElement().getName())); - } - - /** - * 处理右击事件,弹出右键菜单. - */ - private void doWithRightButtonPressed() { - ElementCasePane reportPane = grid.getElementCasePane(); - Object[] tmpFloatElementCursor = GridUtils.getAboveFloatElementCursor(reportPane, this.oldEvtX, this.oldEvtY); - if (!ArrayUtils.isEmpty(tmpFloatElementCursor)) { - FloatElement selectedFloatElement = (FloatElement) tmpFloatElementCursor[0]; - reportPane.setSelection(new FloatSelection(selectedFloatElement.getName())); - } else { - ColumnRow selectedCellPoint = GridUtils.getAdjustEventColumnRow(reportPane, this.oldEvtX, this.oldEvtY); - if (!reportPane.getSelection().containsColumnRow(selectedCellPoint)) { - GridUtils.doSelectCell(reportPane, selectedCellPoint.getColumn(), selectedCellPoint.getRow()); - } - } - reportPane.repaint(); - JPopupMenu cellPopupMenu = reportPane.createPopupMenu(); - if (cellPopupMenu != null) { - GUICoreUtils.showPopupMenu(cellPopupMenu, this.grid, this.oldEvtX - 1, this.oldEvtY - 1); - } - } - - /** - * 处理左击事件 - */ - private void doWithLeftButtonPressed(MouseEvent evt) { - if(BaseUtils.isAuthorityEditing()){ - grid.setEditable(false); - } - - ElementCasePane reportPane = grid.getElementCasePane(); - TemplateElementCase report = reportPane.getEditingElementCase(); - boolean isShiftDown = evt.isShiftDown(); - boolean isControlDown = evt.isControlDown(); - int clickCount = evt.getClickCount(); - // peter:需要判断是否在可移动CellSelection的区域 - grid.setDragType(isMoveCellSelection(this.oldEvtX, this.oldEvtY)); - if (clickCount >= 2) { - grid.setDragType(GridUtils.DRAG_NONE); - } - if (grid.getDragType() != GridUtils.DRAG_NONE) {// Drag的标志. - Selection selection = reportPane.getSelection(); - if (selection instanceof CellSelection) { - // peter:设置DragRecatagle的标志. - if (grid.getDragRectangle() == null) { - grid.setDragRectangle(new Rectangle()); - } - CellSelection cs = ((CellSelection) selection).clone(); - grid.getDragRectangle().setBounds(cs.toRectangle()); - return; - } - } - // peter:选择GridSelection,支持Shift - doOneClickSelection(this.oldEvtX, this.oldEvtY, isShiftDown, isControlDown); - // 得到点击所在的column and row - ColumnRow columnRow = GridUtils.getEventColumnRow(reportPane, this.oldEvtX, this.oldEvtY); - TemplateCellElement cellElement = report.getTemplateCellElement(columnRow.getColumn(), columnRow.getRow()); - if (clickCount >= 2 && !BaseUtils.isAuthorityEditing()) { - grid.startEditing(); - } - if (clickCount == 1 && cellElement != null && cellElement.getWidget() != null && !BaseUtils.isAuthorityEditing()) { - showWidetWindow(cellElement, report); - } - reportPane.repaint(); - } - - /** - * 显示控件编辑窗口 - * - * @param cellElement - * @param report - */ - - private void showWidetWindow(TemplateCellElement cellElement, TemplateElementCase report) { - int resolution = ScreenResolution.getScreenResolution(); - DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); - DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); - double fixed_pos_x = this.oldEvtX - columnWidthList.getRangeValue(grid.getHorizontalValue(), cellElement.getColumn()).toPixD(resolution); - double fixed_pos_y = this.oldEvtY - rowHeightList.getRangeValue(grid.getVerticalValue(), cellElement.getRow()).toPixD(resolution); - double cell_width = columnWidthList.getRangeValue(cellElement.getColumn(), cellElement.getColumn() + cellElement.getColumnSpan()).toPixD(resolution); - double cell_height = rowHeightList.getRangeValue(cellElement.getRow(), cellElement.getRow() + cellElement.getRowSpan()).toPixD(resolution); - if (fitSizeToShow(cell_width, cell_height, fixed_pos_x, fixed_pos_y)) { - CellWriteAttrPane.showWidgetWindow(grid.getElementCasePane()); - } - } - - private boolean fitSizeToShow(double cell_width, double cell_height, double fixed_pos_x, double fixed_pos_y) { - return cell_width - fixed_pos_x > 0 && cell_height - fixed_pos_y > 0 - && cell_width - fixed_pos_x < WIDGET_WIDTH && cell_height - fixed_pos_y < WIDGET_WIDTH; - } - - /** - * @param evt - */ - public void mouseReleased(MouseEvent evt) { - if (!grid.isEnabled() || !grid.isEditable()) { - return; - } - boolean isDataChanged = false; - ElementCasePane reportPane = grid.getElementCasePane(); - Selection selection = reportPane.getSelection(); - if (grid.getDrawingFloatElement() != null) { - if (grid.getDrawingFloatElement().getWidth().equal_zero() && grid.getDrawingFloatElement().getHeight().equal_zero()) { - grid.getDrawingFloatElement().setWidth(new OLDPIX(100)); - grid.getDrawingFloatElement().setHeight(new OLDPIX(100)); - } - grid.setDrawingFloatElement(null); - } else if (selection instanceof FloatSelection) { - grid.setCursor(Cursor.getDefaultCursor()); - } - if (grid.getDragType() == GridUtils.DRAG_CELLSELECTION) { - if (selection instanceof CellSelection) { - grid.getElementCasePane().cut(); - // mouse release的时候要判断下是否在reportPane范围内 - if (outOfBounds(evt, reportPane)) { - GridUtils.doSelectCell(reportPane, grid.getDragRectangle().x, grid.getDragRectangle().y); - } else { - mousePressed(evt); - } - grid.getElementCasePane().paste(); - isDataChanged = true; - } - } else if (grid.getDragType() == GridUtils.DRAG_CELLSELECTION_BOTTOMRIGHT_CORNER) { - if (selection instanceof CellSelection) { - CellSelection cs = (CellSelection) selection; - // august:智能拖拽扩展单元格值 - IntelliElements.iterating(reportPane, cs.toRectangle(), grid.getDragRectangle()); - if (grid.getDragRectangle() != null) { - reportPane.setSelection(new CellSelection(grid.getDragRectangle().x, grid.getDragRectangle().y, grid.getDragRectangle().width, grid.getDragRectangle().height)); - } - isDataChanged = true; - } - } else if (grid.getDragType() == GridUtils.DRAG_FLOAT) { - isDataChanged = true; - } - grid.setDragType(GridUtils.DRAG_NONE); - grid.setDragRectangle(null); - if (isDataChanged) { + private static final int WIDGET_WIDTH = 13; + private static final int TIME_DELAY = 100; + private static final int TOOLTIP_X = 30; + private static final int TOOLTIP_X_Y_FIX = 4; + private static final double COPY_CROSS_INNER_DISTANCE = 1.5; + private static final double COPY_CROSS_OUTER_DISTANCE = 2.5; + /** + * 拖拽时候刷新时间间隔 + */ + private static int DRAG_REFRESH_TIME = 10; + /** + * 对应的表格-Grid + */ + private Grid grid; + /** + * the Point(x,y) where the mouse pressed + */ + private int oldEvtX = 0; + private int oldEvtY = 0; + // the old location, used for Move float element. + private int oldLocationX; + private int oldLocationY; + private long lastMouseMoveTime = 0; // 最后的MouseMove时间. + // 保存各个悬浮元素到oldLocation距离 + private Map floatNamePointMap; + /** + * august:因为CellSelection里面没有记录的变量了,必须要有个变量来存按住shift键的位置之前的鼠标的位置 + * 用户可能一直按住shift键不放,所以按住shift键之前的鼠标位置是必须有的. + */ + private ColumnRow tempOldSelectedCell; + + private int ECBlockGap = 40; + + protected GridMouseAdapter(Grid grid) { + this.grid = grid; + } + + /** + * @param evt + */ + public void mousePressed(MouseEvent evt) { + if (!grid.isEnabled()) { + return; + } + oldEvtX = evt.getX(); + oldEvtY = evt.getY(); + grid.stopEditing(); + + if (!grid.hasFocus() && grid.isRequestFocusEnabled()) { + grid.requestFocus(); + } + + if (grid.getDrawingFloatElement() != null) { + doWithDrawingFloatElement(); + } else { + if (SwingUtilities.isRightMouseButton(evt)) { + doWithRightButtonPressed(); + } else { + doWithLeftButtonPressed(evt); + } + // 用户没有按住Shift键时,tempOldSelectedCell是一直变化的。如果一直按住shift,是不变的 + ElementCasePane ePane = grid.getElementCasePane(); + if (!evt.isShiftDown() && ePane.getSelection() instanceof CellSelection) { + tempOldSelectedCell = GridUtils.getAdjustEventColumnRow(ePane, oldEvtX, oldEvtY); + } + } + + } + + /** + * 将悬浮元素(只有文本和公式)添加到鼠标点击的位置 + */ + private void doWithDrawingFloatElement() { + ElementCasePane reportPane = grid.getElementCasePane(); + TemplateElementCase report = reportPane.getEditingElementCase(); + DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); + DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); + + int horizentalScrollValue = grid.getHorizontalValue(); + int verticalScrollValue = grid.getVerticalValue(); + int resolution = ScreenResolution.getScreenResolution(); + FU evtX_fu = FU.valueOfPix(this.oldEvtX, resolution); + FU evtY_fu = FU.valueOfPix(this.oldEvtY, resolution); + + FU leftDistance = FU.getInstance(evtX_fu.toFU() + columnWidthList.getRangeValue(0, horizentalScrollValue).toFU()); + FU topDistance = FU.getInstance(evtY_fu.toFU() + rowHeightList.getRangeValue(0, verticalScrollValue).toFU()); + + grid.getDrawingFloatElement().setLeftDistance(leftDistance); + grid.getDrawingFloatElement().setTopDistance(topDistance); + + report.addFloatElement(grid.getDrawingFloatElement()); + reportPane.setSelection(new FloatSelection(grid.getDrawingFloatElement().getName())); + } + + /** + * 处理右击事件,弹出右键菜单. + */ + private void doWithRightButtonPressed() { + ElementCasePane reportPane = grid.getElementCasePane(); + Object[] tmpFloatElementCursor = GridUtils.getAboveFloatElementCursor(reportPane, this.oldEvtX, this.oldEvtY); + if (!ArrayUtils.isEmpty(tmpFloatElementCursor)) { + FloatElement selectedFloatElement = (FloatElement) tmpFloatElementCursor[0]; + reportPane.setSelection(new FloatSelection(selectedFloatElement.getName())); + } else { + ColumnRow selectedCellPoint = GridUtils.getAdjustEventColumnRow(reportPane, this.oldEvtX, this.oldEvtY); + if (!reportPane.getSelection().containsColumnRow(selectedCellPoint)) { + GridUtils.doSelectCell(reportPane, selectedCellPoint.getColumn(), selectedCellPoint.getRow()); + } + } + reportPane.repaint(); + JPopupMenu cellPopupMenu = reportPane.createPopupMenu(); + if (cellPopupMenu != null) { + GUICoreUtils.showPopupMenu(cellPopupMenu, this.grid, this.oldEvtX - 1, this.oldEvtY - 1); + } + } + + /** + * 处理左击事件 + */ + private void doWithLeftButtonPressed(MouseEvent evt) { + if (BaseUtils.isAuthorityEditing()) { + grid.setEditable(false); + } + + ElementCasePane reportPane = grid.getElementCasePane(); + TemplateElementCase report = reportPane.getEditingElementCase(); + boolean isShiftDown = evt.isShiftDown(); + boolean isControlDown = evt.isControlDown(); + int clickCount = evt.getClickCount(); + // peter:需要判断是否在可移动CellSelection的区域 + grid.setDragType(isMoveCellSelection(this.oldEvtX, this.oldEvtY)); + if (clickCount >= 2) { + grid.setDragType(GridUtils.DRAG_NONE); + } + if (grid.getDragType() != GridUtils.DRAG_NONE) {// Drag的标志. + Selection selection = reportPane.getSelection(); + if (selection instanceof CellSelection) { + // peter:设置DragRecatagle的标志. + if (grid.getDragRectangle() == null) { + grid.setDragRectangle(new Rectangle()); + } + CellSelection cs = ((CellSelection) selection).clone(); + grid.getDragRectangle().setBounds(cs.toRectangle()); + return; + } + } + // peter:选择GridSelection,支持Shift + doOneClickSelection(this.oldEvtX, this.oldEvtY, isShiftDown, isControlDown); + // 得到点击所在的column and row + ColumnRow columnRow = GridUtils.getEventColumnRow(reportPane, this.oldEvtX, this.oldEvtY); + TemplateCellElement cellElement = report.getTemplateCellElement(columnRow.getColumn(), columnRow.getRow()); + if (clickCount >= 2 && !BaseUtils.isAuthorityEditing()) { + grid.startEditing(); + } + if (clickCount == 1 && cellElement != null && cellElement.getWidget() != null && !BaseUtils.isAuthorityEditing()) { + showWidetWindow(cellElement, report); + } + reportPane.repaint(); + } + + /** + * 显示控件编辑窗口 + * + * @param cellElement + * @param report + */ + + private void showWidetWindow(TemplateCellElement cellElement, TemplateElementCase report) { + int resolution = ScreenResolution.getScreenResolution(); + DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); + DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); + double fixed_pos_x = this.oldEvtX - columnWidthList.getRangeValue(grid.getHorizontalValue(), cellElement.getColumn()).toPixD(resolution); + double fixed_pos_y = this.oldEvtY - rowHeightList.getRangeValue(grid.getVerticalValue(), cellElement.getRow()).toPixD(resolution); + double cell_width = columnWidthList.getRangeValue(cellElement.getColumn(), cellElement.getColumn() + cellElement.getColumnSpan()).toPixD(resolution); + double cell_height = rowHeightList.getRangeValue(cellElement.getRow(), cellElement.getRow() + cellElement.getRowSpan()).toPixD(resolution); + if (fitSizeToShow(cell_width, cell_height, fixed_pos_x, fixed_pos_y)) { + CellWriteAttrPane.showWidgetWindow(grid.getElementCasePane()); + } + } + + private boolean fitSizeToShow(double cell_width, double cell_height, double fixed_pos_x, double fixed_pos_y) { + return cell_width - fixed_pos_x > 0 && cell_height - fixed_pos_y > 0 + && cell_width - fixed_pos_x < WIDGET_WIDTH && cell_height - fixed_pos_y < WIDGET_WIDTH; + } + + /** + * @param evt + */ + public void mouseReleased(MouseEvent evt) { + if (!grid.isEnabled() || !grid.isEditable()) { + return; + } + boolean isDataChanged = false; + ElementCasePane reportPane = grid.getElementCasePane(); + Selection selection = reportPane.getSelection(); + if (grid.getDrawingFloatElement() != null) { + if (grid.getDrawingFloatElement().getWidth().equal_zero() && grid.getDrawingFloatElement().getHeight().equal_zero()) { + grid.getDrawingFloatElement().setWidth(new OLDPIX(100)); + grid.getDrawingFloatElement().setHeight(new OLDPIX(100)); + } + grid.setDrawingFloatElement(null); + } else if (selection instanceof FloatSelection) { + grid.setCursor(Cursor.getDefaultCursor()); + } + if (grid.getDragType() == GridUtils.DRAG_CELLSELECTION) { + if (selection instanceof CellSelection) { + grid.getElementCasePane().cut(); + // mouse release的时候要判断下是否在reportPane范围内 + if (outOfBounds(evt, reportPane)) { + GridUtils.doSelectCell(reportPane, grid.getDragRectangle().x, grid.getDragRectangle().y); + } else { + mousePressed(evt); + } + grid.getElementCasePane().paste(); + isDataChanged = true; + } + } else if (grid.getDragType() == GridUtils.DRAG_CELLSELECTION_BOTTOMRIGHT_CORNER) { + if (selection instanceof CellSelection) { + CellSelection cs = (CellSelection) selection; + // august:智能拖拽扩展单元格值 + IntelliElements.iterating(reportPane, cs.toRectangle(), grid.getDragRectangle()); + if (grid.getDragRectangle() != null) { + reportPane.setSelection(new CellSelection(grid.getDragRectangle().x, grid.getDragRectangle().y, grid.getDragRectangle().width, grid.getDragRectangle().height)); + } + isDataChanged = true; + } + } else if (grid.getDragType() == GridUtils.DRAG_FLOAT) { + isDataChanged = true; + } + grid.setDragType(GridUtils.DRAG_NONE); + grid.setDragRectangle(null); + if (isDataChanged) { reportPane.setSupportDefaultParentCalculate(true); - reportPane.fireTargetModified(); + reportPane.fireTargetModified(); reportPane.setSupportDefaultParentCalculate(false); - } - doWithFormatBrush(reportPane); - reportPane.repaint(); - } - - private void doWithFormatBrush(ElementCasePane reportPane) { - if (DesignerContext.getFormatState() == DesignerContext.FORMAT_STATE_NULL) { - return; - } - - if (reportPane.getCellNeedTOFormat() != null) { - reportPane.getFormatBrushAction().updateFormatBrush(DesignerContext.getReferencedStyle(), reportPane.getCellNeedTOFormat(), reportPane); - reportPane.fireTargetModified(); - - } - if (DesignerContext.getFormatState() == DesignerContext.FORMAT_STATE_ONCE) { - reportPane.cancelFormatBrush(); - } - if (DesignerContext.getFormatState() == DesignerContext.FORMAT_STATE_MORE) { - reportPane.getFormatBrush().setSelected(true); - } - } - - private boolean outOfBounds(MouseEvent evt, ElementCasePane reportPane) { - return evt.getY() > reportPane.getHeight() || evt.getY() < 0 || evt.getX() > reportPane.getWidth() || evt.getX() < 0; - } - - /** - * @param evt - */ - public void mouseMoved(final MouseEvent evt) { - ElementCasePane reportPane = grid.getElementCasePane(); - boolean isGridForSelection = !grid.isEnabled() || !grid.isEditable(); - if (isGridForSelection || grid.isEditing()) { - if (grid.IsNotShowingTableSelectPane()) { - grid.setCursor(UIConstants.CELL_DEFAULT_CURSOR); - return; - } - if (DesignerContext.getFormatState() != DesignerContext.FORMAT_STATE_NULL) { - grid.setCursor(UIConstants.FORMAT_BRUSH_CURSOR); - } else { - grid.setCursor(GUICoreUtils.createCustomCursor(BaseUtils.readImage("com/fr/design/images/buttonicon/select.png"), - new Point(0, 0), "select", grid)); - } - - return; - } - // peter:停留一段时间. - long systemCurrentTime = System.currentTimeMillis(); - if (systemCurrentTime - lastMouseMoveTime <= TIME_DELAY) { - return; - } - lastMouseMoveTime = systemCurrentTime;// 记录最后一次的时间. - mouseMoveOnGrid(evt.getX(), evt.getY()); - } - - /** - * @param evt - */ - public void mouseDragged(MouseEvent evt) { - if (!grid.isEnabled()) { - return; - } - - boolean isControlDown = evt.isControlDown(); - - long systemCurrentTime = System.currentTimeMillis(); - if (systemCurrentTime - lastMouseMoveTime <= DRAG_REFRESH_TIME) {// alex:Drag - return; - } else { - lastMouseMoveTime = systemCurrentTime; - } - - // right mouse cannot Drag.. - if (SwingUtilities.isRightMouseButton(evt)) { - return; - } - - doWithMouseDragged(evt.getX(), evt.getY(), isControlDown); - } - - private void doWithMouseDragged(int evtX, int evtY, boolean isControlDown) { - ElementCasePane reportPane = grid.getElementCasePane(); - - if (reportPane.mustInVisibleRange()) { - Grid grid = reportPane.getGrid(); - if (evtX > grid.getWidth() - 2 || evtY > grid.getHeight() - 2) { - return; - } - } - Selection selection = reportPane.getSelection(); - - if (selection instanceof FloatSelection && !BaseUtils.isAuthorityEditing()) { - doWithFloatElementDragged(evtX, evtY, (FloatSelection) selection); - grid.setDragType(GridUtils.DRAG_FLOAT); - } else if (grid.getDragType() == GridUtils.DRAG_CELLSELECTION_BOTTOMRIGHT_CORNER && !BaseUtils.isAuthorityEditing()) { - doWithCellElementDragged(evtX, evtY, (CellSelection) selection); - } else if (grid.getDragType() == GridUtils.DRAG_CELLSELECTION && !BaseUtils.isAuthorityEditing()) { - // peter:获得调整过的Selected Column Row. - ColumnRow selectedCellPoint = GridUtils.getAdjustEventColumnRow(reportPane, evtX, evtY); - if (selectedCellPoint.getColumn() != grid.getDragRectangle().x || selectedCellPoint.getRow() != grid.getDragRectangle().y) { - grid.getDragRectangle().x = selectedCellPoint.getColumn(); - grid.getDragRectangle().y = selectedCellPoint.getRow(); - } - } else {// august: 拖拽选中多个单元格 - doShiftSelectCell(evtX, evtY); - } - grid.getElementCasePane().repaint(); - } - - /** - * 拖拽悬浮元素 - * - * @param evtX - * @param evtY - * @param fs - */ - - private void doWithFloatElementDragged(int evtX, int evtY, FloatSelection fs) { - ElementCase report = grid.getElementCasePane().getEditingElementCase(); - int resolution = ScreenResolution.getScreenResolution(); - String floatName = fs.getSelectedFloatName(); - FloatElement floatElement = report.getFloatElement(floatName); - int cursorType = grid.getCursor().getType(); - - if (cursorType == Cursor.NW_RESIZE_CURSOR || cursorType == Cursor.NE_RESIZE_CURSOR || cursorType == Cursor.SE_RESIZE_CURSOR || cursorType == Cursor.SW_RESIZE_CURSOR) { - DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); - DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); - FU floatX1_fu = FU.valueOfPix(Math.min(oldEvtX, evtX), resolution); - FU floatY1_fu = FU.valueOfPix(Math.min(oldEvtY, evtY), resolution); - FU leftDistance = floatX1_fu.add(columnWidthList.getRangeValue(0, grid.getHorizontalValue())); - FU topDistance = floatY1_fu.add(rowHeightList.getRangeValue(0, grid.getVerticalValue())); - floatElement.setLeftDistance(leftDistance); - floatElement.setTopDistance(topDistance); - floatElement.setWidth(FU.valueOfPix(Math.max(oldEvtX, evtX), resolution).subtract(floatX1_fu)); - floatElement.setHeight(FU.valueOfPix(Math.max(oldEvtY, evtY), resolution).subtract(floatY1_fu)); - } else if (cursorType == Cursor.S_RESIZE_CURSOR || cursorType == Cursor.N_RESIZE_CURSOR) { - DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); - FU floatY1_fu = FU.valueOfPix(Math.min(oldEvtY, evtY), resolution); - FU topDistance = floatY1_fu.add(rowHeightList.getRangeValue(0, grid.getVerticalValue())); - floatElement.setTopDistance(topDistance); - floatElement.setHeight(FU.valueOfPix(Math.max(oldEvtY, evtY), resolution).subtract(floatY1_fu)); - } else if (cursorType == Cursor.W_RESIZE_CURSOR || cursorType == Cursor.E_RESIZE_CURSOR) { - DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); - FU floatX1_fu = FU.valueOfPix(Math.min(oldEvtX, evtX), resolution); - FU leftDistance = floatX1_fu.add(columnWidthList.getRangeValue(0, grid.getHorizontalValue())); - floatElement.setLeftDistance(leftDistance); - floatElement.setWidth(FU.valueOfPix(Math.max(oldEvtX, evtX), resolution).subtract(floatX1_fu)); - } else if (cursorType == Cursor.MOVE_CURSOR) { - DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); - DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); - int horizentalValue = grid.getHorizontalValue(); - int verticalValue = grid.getVerticalValue(); - String floatElementName = fs.getSelectedFloatName(); - FloatElement tempFolatElement = report.getFloatElement(floatElementName); - Point tempFolatElementPoint = floatNamePointMap.get(floatElementName); - int floatX1ForTempFloatElement = tempFolatElementPoint.x + Math.max(oldLocationX + (evtX - oldEvtX), 0); - int floatY1ForTempFloatElement = tempFolatElementPoint.y + Math.max(oldLocationY + (evtY - oldEvtY), 0); - FU floatX1ForTempFloatElement_fu = FU.valueOfPix(floatX1ForTempFloatElement, resolution); - FU leftDistance = floatX1ForTempFloatElement_fu.add(columnWidthList.getRangeValue(0, horizentalValue)); - FU floatY1ForTempFloatElement_fu = FU.valueOfPix(floatY1ForTempFloatElement, resolution); - FU topDistance = floatY1ForTempFloatElement_fu.add(rowHeightList.getRangeValue(0, verticalValue)); - tempFolatElement.setLeftDistance(leftDistance); - tempFolatElement.setTopDistance(topDistance); - } - - } - - /** - * 拖拽单元格 - * - * @param evtX - * @param evtY - * @param cs - */ - - private void doWithCellElementDragged(int evtX, int evtY, CellSelection cs) { - ElementCasePane reportPane = grid.getElementCasePane(); - java.awt.Rectangle cellRectangle = cs.toRectangle(); - - ColumnRow selectedCellPoint = GridUtils.getAdjustEventColumnRow(reportPane, evtX, evtY); - if (cellRectangle.contains(selectedCellPoint.getColumn(), selectedCellPoint.getRow())) { - grid.getDragRectangle().setBounds(cellRectangle); - } else { - int xDistance = evtX - this.oldEvtX; - int yDistance = evtY - this.oldEvtY; - if (Math.abs(yDistance) > Math.abs(xDistance)) { - grid.getDragRectangle().x = cellRectangle.x; - grid.getDragRectangle().width = cellRectangle.width; - if (yDistance >= 0) { - // 聚合报表要求拖拽的时候要在本块的内部进行 不能无限往下拖 - if (reportPane instanceof ECBlockPane && evtY > reportPane.getBounds().height - ECBlockGap) { - return; - } - grid.getDragRectangle().y = cellRectangle.y; - grid.getDragRectangle().height = selectedCellPoint.getRow() - cellRectangle.y + 1; - } else { - if (selectedCellPoint.getRow() >= cellRectangle.y && selectedCellPoint.getRow() < cellRectangle.y + cellRectangle.height) { - grid.getDragRectangle().y = cellRectangle.y; - grid.getDragRectangle().height = cellRectangle.height; - } else { - grid.getDragRectangle().y = cellRectangle.y; - grid.getDragRectangle().height = cellRectangle.y - selectedCellPoint.getRow() + cellRectangle.height; - } - } - } else { - grid.getDragRectangle().y = cellRectangle.y; - grid.getDragRectangle().height = cellRectangle.height; - if (xDistance >= 0) { - if (reportPane instanceof ECBlockPane && evtX > reportPane.getBounds().width - ECBlockGap) { - return; - } - grid.getDragRectangle().x = cellRectangle.x; - grid.getDragRectangle().width = selectedCellPoint.getColumn() - cellRectangle.x + 1; - } else { - if (selectedCellPoint.getColumn() >= cellRectangle.x && selectedCellPoint.getColumn() < cellRectangle.x + cellRectangle.width) { - grid.getDragRectangle().x = cellRectangle.x; - grid.getDragRectangle().width = cellRectangle.width; - } else { - grid.getDragRectangle().x = selectedCellPoint.getColumn(); - grid.getDragRectangle().width = cellRectangle.x - selectedCellPoint.getColumn() + cellRectangle.width; - } - } - } - } - reportPane.ensureColumnRowVisible(selectedCellPoint.getColumn() + 1, selectedCellPoint.getRow() + 1); - } - - private void doShiftSelectCell(double evtX, double evtY) { - ElementCasePane reportPane = grid.getElementCasePane(); - Selection s = reportPane.getSelection(); - if (s instanceof FloatSelection) { - return; - } - ColumnRow selectedCellPoint = GridUtils.getAdjustEventColumnRow(reportPane, evtX, evtY); - int selectedCellPointX = selectedCellPoint.getColumn(); - int selectedCellPointY = selectedCellPoint.getRow(); - CellSelection gridSelection = ((CellSelection) s).clone(); - //反向选择单元格 - int tempOldSelectedCellX = tempOldSelectedCell.getColumn(); - int tempOldSelectedCellY = tempOldSelectedCell.getRow(); + } + doWithFormatBrush(reportPane); + reportPane.repaint(); + } + + private void doWithFormatBrush(ElementCasePane reportPane) { + if (DesignerContext.getFormatState() == DesignerContext.FORMAT_STATE_NULL) { + return; + } + + if (reportPane.getCellNeedTOFormat() != null) { + reportPane.getFormatBrushAction().updateFormatBrush(DesignerContext.getReferencedStyle(), reportPane.getCellNeedTOFormat(), reportPane); + reportPane.fireTargetModified(); + + } + if (DesignerContext.getFormatState() == DesignerContext.FORMAT_STATE_ONCE) { + reportPane.cancelFormatBrush(); + } + if (DesignerContext.getFormatState() == DesignerContext.FORMAT_STATE_MORE) { + reportPane.getFormatBrush().setSelected(true); + } + } + + private boolean outOfBounds(MouseEvent evt, ElementCasePane reportPane) { + return evt.getY() > reportPane.getHeight() || evt.getY() < 0 || evt.getX() > reportPane.getWidth() || evt.getX() < 0; + } + + /** + * @param evt + */ + public void mouseMoved(final MouseEvent evt) { + ElementCasePane reportPane = grid.getElementCasePane(); + boolean isGridForSelection = !grid.isEnabled() || !grid.isEditable(); + if (isGridForSelection || grid.isEditing()) { + if (grid.IsNotShowingTableSelectPane()) { + grid.setCursor(UIConstants.CELL_DEFAULT_CURSOR); + return; + } + if (DesignerContext.getFormatState() != DesignerContext.FORMAT_STATE_NULL) { + grid.setCursor(UIConstants.FORMAT_BRUSH_CURSOR); + } else { + grid.setCursor(GUICoreUtils.createCustomCursor(BaseUtils.readImage("com/fr/design/images/buttonicon/select.png"), + new Point(0, 0), "select", grid)); + } + + return; + } + // peter:停留一段时间. + long systemCurrentTime = System.currentTimeMillis(); + if (systemCurrentTime - lastMouseMoveTime <= TIME_DELAY) { + return; + } + lastMouseMoveTime = systemCurrentTime;// 记录最后一次的时间. + mouseMoveOnGrid(evt.getX(), evt.getY()); + } + + /** + * @param evt + */ + public void mouseDragged(MouseEvent evt) { + if (!grid.isEnabled()) { + return; + } + + boolean isControlDown = evt.isControlDown(); + + long systemCurrentTime = System.currentTimeMillis(); + if (systemCurrentTime - lastMouseMoveTime <= DRAG_REFRESH_TIME) {// alex:Drag + return; + } else { + lastMouseMoveTime = systemCurrentTime; + } + + // right mouse cannot Drag.. + if (SwingUtilities.isRightMouseButton(evt)) { + return; + } + + doWithMouseDragged(evt.getX(), evt.getY(), isControlDown); + } + + private void doWithMouseDragged(int evtX, int evtY, boolean isControlDown) { + ElementCasePane reportPane = grid.getElementCasePane(); + + if (reportPane.mustInVisibleRange()) { + Grid grid = reportPane.getGrid(); + if (evtX > grid.getWidth() - 2 || evtY > grid.getHeight() - 2) { + return; + } + } + Selection selection = reportPane.getSelection(); + + if (selection instanceof FloatSelection && !BaseUtils.isAuthorityEditing()) { + doWithFloatElementDragged(evtX, evtY, (FloatSelection) selection); + grid.setDragType(GridUtils.DRAG_FLOAT); + } else if (grid.getDragType() == GridUtils.DRAG_CELLSELECTION_BOTTOMRIGHT_CORNER && !BaseUtils.isAuthorityEditing()) { + doWithCellElementDragged(evtX, evtY, (CellSelection) selection); + } else if (grid.getDragType() == GridUtils.DRAG_CELLSELECTION && !BaseUtils.isAuthorityEditing()) { + // peter:获得调整过的Selected Column Row. + ColumnRow selectedCellPoint = GridUtils.getAdjustEventColumnRow(reportPane, evtX, evtY); + if (selectedCellPoint.getColumn() != grid.getDragRectangle().x || selectedCellPoint.getRow() != grid.getDragRectangle().y) { + grid.getDragRectangle().x = selectedCellPoint.getColumn(); + grid.getDragRectangle().y = selectedCellPoint.getRow(); + } + } else {// august: 拖拽选中多个单元格 + doShiftSelectCell(evtX, evtY); + } + grid.getElementCasePane().repaint(); + } + + /** + * 拖拽悬浮元素 + * + * @param evtX + * @param evtY + * @param fs + */ + + private void doWithFloatElementDragged(int evtX, int evtY, FloatSelection fs) { + ElementCase report = grid.getElementCasePane().getEditingElementCase(); + int resolution = ScreenResolution.getScreenResolution(); + String floatName = fs.getSelectedFloatName(); + FloatElement floatElement = report.getFloatElement(floatName); + int cursorType = grid.getCursor().getType(); + + if (cursorType == Cursor.NW_RESIZE_CURSOR || cursorType == Cursor.NE_RESIZE_CURSOR || cursorType == Cursor.SE_RESIZE_CURSOR || cursorType == Cursor.SW_RESIZE_CURSOR) { + DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); + DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); + FU floatX1_fu = FU.valueOfPix(Math.min(oldEvtX, evtX), resolution); + FU floatY1_fu = FU.valueOfPix(Math.min(oldEvtY, evtY), resolution); + FU leftDistance = floatX1_fu.add(columnWidthList.getRangeValue(0, grid.getHorizontalValue())); + FU topDistance = floatY1_fu.add(rowHeightList.getRangeValue(0, grid.getVerticalValue())); + floatElement.setLeftDistance(leftDistance); + floatElement.setTopDistance(topDistance); + floatElement.setWidth(FU.valueOfPix(Math.max(oldEvtX, evtX), resolution).subtract(floatX1_fu)); + floatElement.setHeight(FU.valueOfPix(Math.max(oldEvtY, evtY), resolution).subtract(floatY1_fu)); + } else if (cursorType == Cursor.S_RESIZE_CURSOR || cursorType == Cursor.N_RESIZE_CURSOR) { + DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); + FU floatY1_fu = FU.valueOfPix(Math.min(oldEvtY, evtY), resolution); + FU topDistance = floatY1_fu.add(rowHeightList.getRangeValue(0, grid.getVerticalValue())); + floatElement.setTopDistance(topDistance); + floatElement.setHeight(FU.valueOfPix(Math.max(oldEvtY, evtY), resolution).subtract(floatY1_fu)); + } else if (cursorType == Cursor.W_RESIZE_CURSOR || cursorType == Cursor.E_RESIZE_CURSOR) { + DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); + FU floatX1_fu = FU.valueOfPix(Math.min(oldEvtX, evtX), resolution); + FU leftDistance = floatX1_fu.add(columnWidthList.getRangeValue(0, grid.getHorizontalValue())); + floatElement.setLeftDistance(leftDistance); + floatElement.setWidth(FU.valueOfPix(Math.max(oldEvtX, evtX), resolution).subtract(floatX1_fu)); + } else if (cursorType == Cursor.MOVE_CURSOR) { + DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); + DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); + int horizentalValue = grid.getHorizontalValue(); + int verticalValue = grid.getVerticalValue(); + String floatElementName = fs.getSelectedFloatName(); + FloatElement tempFolatElement = report.getFloatElement(floatElementName); + Point tempFolatElementPoint = floatNamePointMap.get(floatElementName); + int floatX1ForTempFloatElement = tempFolatElementPoint.x + Math.max(oldLocationX + (evtX - oldEvtX), 0); + int floatY1ForTempFloatElement = tempFolatElementPoint.y + Math.max(oldLocationY + (evtY - oldEvtY), 0); + FU floatX1ForTempFloatElement_fu = FU.valueOfPix(floatX1ForTempFloatElement, resolution); + FU leftDistance = floatX1ForTempFloatElement_fu.add(columnWidthList.getRangeValue(0, horizentalValue)); + FU floatY1ForTempFloatElement_fu = FU.valueOfPix(floatY1ForTempFloatElement, resolution); + FU topDistance = floatY1ForTempFloatElement_fu.add(rowHeightList.getRangeValue(0, verticalValue)); + tempFolatElement.setLeftDistance(leftDistance); + tempFolatElement.setTopDistance(topDistance); + } + + } + + /** + * 拖拽单元格 + * + * @param evtX + * @param evtY + * @param cs + */ + + private void doWithCellElementDragged(int evtX, int evtY, CellSelection cs) { + ElementCasePane reportPane = grid.getElementCasePane(); + java.awt.Rectangle cellRectangle = cs.toRectangle(); + + ColumnRow selectedCellPoint = GridUtils.getAdjustEventColumnRow(reportPane, evtX, evtY); + if (cellRectangle.contains(selectedCellPoint.getColumn(), selectedCellPoint.getRow())) { + grid.getDragRectangle().setBounds(cellRectangle); + } else { + int xDistance = evtX - this.oldEvtX; + int yDistance = evtY - this.oldEvtY; + if (Math.abs(yDistance) > Math.abs(xDistance)) { + grid.getDragRectangle().x = cellRectangle.x; + grid.getDragRectangle().width = cellRectangle.width; + if (yDistance >= 0) { + // 聚合报表要求拖拽的时候要在本块的内部进行 不能无限往下拖 + if (reportPane instanceof ECBlockPane && evtY > reportPane.getBounds().height - ECBlockGap) { + return; + } + grid.getDragRectangle().y = cellRectangle.y; + grid.getDragRectangle().height = selectedCellPoint.getRow() - cellRectangle.y + 1; + } else { + if (selectedCellPoint.getRow() >= cellRectangle.y && selectedCellPoint.getRow() < cellRectangle.y + cellRectangle.height) { + grid.getDragRectangle().y = cellRectangle.y; + grid.getDragRectangle().height = cellRectangle.height; + } else { + grid.getDragRectangle().y = cellRectangle.y; + grid.getDragRectangle().height = cellRectangle.y - selectedCellPoint.getRow() + cellRectangle.height; + } + } + } else { + grid.getDragRectangle().y = cellRectangle.y; + grid.getDragRectangle().height = cellRectangle.height; + if (xDistance >= 0) { + if (reportPane instanceof ECBlockPane && evtX > reportPane.getBounds().width - ECBlockGap) { + return; + } + grid.getDragRectangle().x = cellRectangle.x; + grid.getDragRectangle().width = selectedCellPoint.getColumn() - cellRectangle.x + 1; + } else { + if (selectedCellPoint.getColumn() >= cellRectangle.x && selectedCellPoint.getColumn() < cellRectangle.x + cellRectangle.width) { + grid.getDragRectangle().x = cellRectangle.x; + grid.getDragRectangle().width = cellRectangle.width; + } else { + grid.getDragRectangle().x = selectedCellPoint.getColumn(); + grid.getDragRectangle().width = cellRectangle.x - selectedCellPoint.getColumn() + cellRectangle.width; + } + } + } + } + reportPane.ensureColumnRowVisible(selectedCellPoint.getColumn() + 1, selectedCellPoint.getRow() + 1); + } + + private void doShiftSelectCell(double evtX, double evtY) { + ElementCasePane reportPane = grid.getElementCasePane(); + Selection s = reportPane.getSelection(); + if (s instanceof FloatSelection) { + return; + } + ColumnRow selectedCellPoint = GridUtils.getAdjustEventColumnRow(reportPane, evtX, evtY); + int selectedCellPointX = selectedCellPoint.getColumn(); + int selectedCellPointY = selectedCellPoint.getRow(); + CellSelection gridSelection = ((CellSelection) s).clone(); + //反向选择单元格 + int tempOldSelectedCellX = tempOldSelectedCell.getColumn(); + int tempOldSelectedCellY = tempOldSelectedCell.getRow(); // int tempOldSelectedCellX = gridSelection.getEditRectangle().x; // int tempOldSelectedCellY = gridSelection.getEditRectangle().y; - int column = selectedCellPointX >= tempOldSelectedCellX ? tempOldSelectedCellX : selectedCellPointX; - int row = selectedCellPointY >= tempOldSelectedCellY ? tempOldSelectedCellY : selectedCellPointY; - int columnSpan = Math.abs(selectedCellPointX - tempOldSelectedCellX) + 1; - int rowSpan = Math.abs(selectedCellPointY - tempOldSelectedCellY) + 1; - Rectangle oldrectangle = new Rectangle(column, row, columnSpan, rowSpan); - // ajust them to got the correct selected bounds. - Rectangle newrectangle = grid.caculateIntersectsUnion(reportPane.getEditingElementCase(), oldrectangle); - gridSelection.setBounds(newrectangle.x, newrectangle.y, newrectangle.width, newrectangle.height); - gridSelection.clearCellRectangles(gridSelection.getCellRectangleCount() - 1); - gridSelection.addCellRectangle(newrectangle); - reportPane.setSelection(gridSelection); - if (!reportPane.mustInVisibleRange()) { - reportPane.ensureColumnRowVisible(selectedCellPointX, selectedCellPointY); - } - } - - - private void doControlSelectCell(double evtX, double evtY) { - ElementCasePane reportPane = grid.getElementCasePane(); - ElementCase report = reportPane.getEditingElementCase(); - //上一次选中的单元格 - Selection s = reportPane.getSelection(); - if (s instanceof FloatSelection) { - return; - } - - ColumnRow selectedCellPoint = GridUtils.getAdjustEventColumnRow(reportPane, evtX, evtY); - //拷贝,而不是直接强制使用以监听单元格选择变化 - CellSelection gridSelection = ((CellSelection) s).clone(); - gridSelection.setSelectedType(((CellSelection) s).getSelectedType()); - CellElement cellElement = report.getCellElement(selectedCellPoint.getColumn(), selectedCellPoint.getRow()); - if (cellElement == null) { - gridSelection.setBounds(selectedCellPoint.getColumn(), selectedCellPoint.getRow(), 1, 1); - int point = gridSelection.containsCell(selectedCellPoint.getColumn(), selectedCellPoint.getRow()); - if (point == -1) { - gridSelection.addCellRectangle(new Rectangle(selectedCellPoint.getColumn(), selectedCellPoint.getRow(), 1, 1)); - } else { - gridSelection.clearCellRectangles(point); - } - - } else { - gridSelection.setBounds(cellElement.getColumn(), cellElement.getRow(), cellElement.getColumnSpan(), cellElement.getRowSpan()); - gridSelection.addCellRectangle(new Rectangle(cellElement.getColumn(), cellElement.getRow(), cellElement.getColumnSpan(), cellElement.getRowSpan())); - - - } - - reportPane.setSelection(gridSelection); - - if (!reportPane.mustInVisibleRange()) { - reportPane.ensureColumnRowVisible(selectedCellPoint.getColumn(), selectedCellPoint.getRow()); - } - - - } - - - /** - * 鼠标在Grid上面移动. - */ - private void mouseMoveOnGrid(int evtX, int evtY) { - grid.setToolTipText(null); - if (grid.getDrawingFloatElement() != null) { - grid.setCursor(UIConstants.DRAW_CURSOR); // august:是否是将要画悬浮元素,就是那个笔的形状 - } else { - Object[] floatElementCursor = GridUtils.getAboveFloatElementCursor(grid.getElementCasePane(), evtX, evtY); - if (!ArrayUtils.isEmpty(floatElementCursor)) {// 鼠标在悬浮元素上移动 - grid.setCursor((Cursor) floatElementCursor[1]); - } else {// 鼠标在单元格上移动 - doMouseMoveOnCells(evtX, evtY); - } - } - } - - /** - * 鼠标在单元格上移动 - * - * @param evtX - * @param evtY - */ - private void doMouseMoveOnCells(int evtX, int evtY) { - ElementCasePane reportPane = grid.getElementCasePane(); - TemplateElementCase report = reportPane.getEditingElementCase(); - //如果是格式刷状态 - if (DesignerContext.getFormatState() != DesignerContext.FORMAT_STATE_NULL) { - grid.setCursor(UIConstants.FORMAT_BRUSH_CURSOR); - } else { - grid.setCursor(UIConstants.CELL_DEFAULT_CURSOR); - } - ColumnRow selectedCellColumnRow = GridUtils.getEventColumnRow(reportPane, evtX, evtY); - TemplateCellElement curCellElement = report.getTemplateCellElement(selectedCellColumnRow.getColumn(), selectedCellColumnRow.getRow()); - - if (curCellElement != null) { - setCursorAndToolTips(curCellElement, report); - } - - int dragType = isMoveCellSelection(evtX, evtY); - if (dragType == GridUtils.DRAG_CELLSELECTION) {// 判断是否移动选中的区域. - grid.setCursor(new Cursor(Cursor.MOVE_CURSOR)); - } // peter:判断是否复制移动的角落. - else if (dragType == GridUtils.DRAG_CELLSELECTION_BOTTOMRIGHT_CORNER) { - grid.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR)); - } - - } - - /** - * 只根据CellGUIAttr里面的tooltips显示了,原先的显示条件属性、形态、控件等无意义 - * - * @param curCellElement - * @param report - */ - private void setCursorAndToolTips(TemplateCellElement curCellElement, TemplateElementCase report) { - int resolution = ScreenResolution.getScreenResolution(); - // 计算相对Grid的显示位置. - DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); - DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); - - CellGUIAttr cellGUIAttr = curCellElement.getCellGUIAttr(); - if (cellGUIAttr == null) { - cellGUIAttr = CellGUIAttr.DEFAULT_CELLGUIATTR; - } - grid.setToolTipText(cellGUIAttr.getTooltipText()); - double tooltipX = columnWidthList.getRangeValue(grid.getHorizontalValue(), curCellElement.getColumn()).toPixD(resolution) + TOOLTIP_X_Y_FIX; - double tooltipY = rowHeightList.getRangeValue(grid.getVerticalValue(), curCellElement.getRow() + curCellElement.getRowSpan()).toPixD(resolution) + TOOLTIP_X_Y_FIX; - - // peter:显示tooltip - if (StringUtils.isNotBlank(grid.getToolTipText())) { - grid.setTooltipLocation(tooltipX + TOOLTIP_X, tooltipY); - } - } - - /** - * 是否移动CellSelection - */ - private int isMoveCellSelection(double evtX, double evtY) { - ElementCasePane reportPane = grid.getElementCasePane(); - - // p:判断是否在选中区域的边框,可以移动CellSelelction选中区域 - Selection selection = reportPane.getSelection(); - if (!(selection instanceof CellSelection)) { - return GridUtils.DRAG_NONE; - } - - if ((selection instanceof CellSelection) - && ((CellSelection) selection).getCellRectangleCount() != 1) {// p:没有选择Cell. - return GridUtils.DRAG_NONE; - } - - CellSelection cs = (CellSelection) selection; - - ElementCase report = reportPane.getEditingElementCase(); - - // peter:计算相对Grid的显示位置. - DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); - DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); - - int resolution = ScreenResolution.getScreenResolution(); - - double leftColDistance = columnWidthList.getRangeValue(grid.getHorizontalValue(), cs.getColumn()).toPixD(resolution); - double rightColDistance = columnWidthList.getRangeValue(grid.getHorizontalValue(), cs.getColumn() + cs.getColumnSpan()).toPixD(resolution); - double topRowDistance = rowHeightList.getRangeValue(grid.getVerticalValue(), cs.getRow()).toPixD(resolution); - double bottomRowDistance = rowHeightList.getRangeValue(grid.getVerticalValue(), cs.getRow() + cs.getRowSpan()).toPixD(resolution); - - // 首先判断是否在可以复制的右下角落. - if (fitCellSelectionBottomRight(evtX, evtY, rightColDistance, bottomRowDistance)) { - return GridUtils.DRAG_CELLSELECTION_BOTTOMRIGHT_CORNER; - } - - // 这个dist值调小一点,尽量让用户不使用drag and drop 来编辑报表支持 - double dist = 1.0; - if (fitCellSelection(evtX, leftColDistance, rightColDistance, dist)) { - if (evtY >= (topRowDistance - dist) && evtY <= (bottomRowDistance + dist)) { - return GridUtils.DRAG_CELLSELECTION; - } - } else if (fitCellSelection(evtY, topRowDistance, bottomRowDistance, dist)) { - if (evtX >= (leftColDistance - dist) && evtX <= (rightColDistance + dist)) { - return GridUtils.DRAG_CELLSELECTION; - } - } - - return GridUtils.DRAG_NONE; - } - - private boolean fitCellSelection(double evt, double d1, double d2, double dist) { - return (evt >= (d1 - dist) && evt <= (d1 + dist)) - || (evt >= (d2 - dist) && evt <= (d2 + dist)); - } - - private boolean fitCellSelectionBottomRight(double evtX, double evtY, double rightColDistance, double bottomRowDistance) { - return evtX > rightColDistance - COPY_CROSS_INNER_DISTANCE && evtX < rightColDistance + COPY_CROSS_OUTER_DISTANCE - && evtY > bottomRowDistance - COPY_CROSS_INNER_DISTANCE && bottomRowDistance < bottomRowDistance + COPY_CROSS_OUTER_DISTANCE; - } - - /** - * Do one click selection - */ - private void doOneClickSelection(int evtX, int evtY, boolean isShiftDown, boolean isControlDown) { - ElementCasePane reportPane = grid.getElementCasePane(); - // check float elements. - Object[] tmpFloatElementCursor = GridUtils.getAboveFloatElementCursor(reportPane, evtX, evtY); - if (!ArrayUtils.isEmpty(tmpFloatElementCursor)) {// p:选中了悬浮元素. - doSelectFloatElement(tmpFloatElementCursor, evtX, evtY); - } else if (isShiftDown) { - doShiftSelectCell(evtX, evtY); - } else if (isControlDown) { - doControlSelectCell(evtX, evtY); - } else { - ColumnRow selectedCellPoint = GridUtils.getEventColumnRow(reportPane, evtX, evtY); - int type = reportPane.ensureColumnRowVisible(selectedCellPoint.getColumn(), selectedCellPoint.getRow()); - if (type == ElementCasePane.NO_OVER) { - GridUtils.doSelectCell(reportPane, selectedCellPoint.getColumn(), selectedCellPoint.getRow()); - } else if (type == ElementCasePane.VERTICAL_OVER) { - //聚合报表块选在下边界的时候,有时会向下移,阻止向下移 - GridUtils.doSelectCell(reportPane, selectedCellPoint.getColumn(), selectedCellPoint.getRow() - 1); - } else if (type == ElementCasePane.HORIZONTAL_OVER) { - //聚合报表块选在右边界的时候,有时会向右移,阻止向右移 - GridUtils.doSelectCell(reportPane, selectedCellPoint.getColumn() - 1, selectedCellPoint.getRow()); - } else { - GridUtils.doSelectCell(reportPane, selectedCellPoint.getColumn() - 1, selectedCellPoint.getRow() - 1); - } - - return; - } - - } - - /** - * 选中悬浮元素 - * - * @param tmpFloatElementCursor - * @param evtX - * @param evtY - */ - - private void doSelectFloatElement(Object[] tmpFloatElementCursor, int evtX, int evtY) { - ElementCasePane reportPane = grid.getElementCasePane(); - ElementCase report = reportPane.getEditingElementCase(); - FloatElement floatElement = (FloatElement) tmpFloatElementCursor[0]; - String floatName = floatElement.getName(); - reportPane.setSelection(new FloatSelection(floatName)); - double[] floatArray = GridUtils.caculateFloatElementLocations(floatElement, ReportHelper.getColumnWidthList(report), ReportHelper.getRowHeightList(report), reportPane - .getGrid().getVerticalValue(), reportPane.getGrid().getHorizontalValue()); - - int cursorType = ((Cursor) tmpFloatElementCursor[1]).getType(); - if (cursorType == Cursor.MOVE_CURSOR) { - this.oldEvtX = evtX; - this.oldEvtY = evtY; - FloatElement el = report.getFloatElement(floatName); - int resolution = ScreenResolution.getScreenResolution(); - int verticalValue = grid.getVerticalValue(); - int horizentalValue = grid.getHorizontalValue(); - DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); - DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); - this.oldLocationX = FU.getInstance(el.getLeftDistance().toFU() - columnWidthList.getRangeValue(0, horizentalValue).toFU()).toPixI(resolution); - this.oldLocationY = FU.getInstance(el.getTopDistance().toFU() - rowHeightList.getRangeValue(0, verticalValue).toFU()).toPixI(resolution); - if (floatNamePointMap == null) { - floatNamePointMap = new HashMap(); - } - floatNamePointMap.clear(); - FloatElement tempFolatElement = report.getFloatElement(floatName); - int floatX1ForTempFloatElement = FU.getInstance(tempFolatElement.getLeftDistance().toFU() - columnWidthList.getRangeValue(0, horizentalValue).toFU()) - .toPixI(resolution) - oldLocationX; - int floatY1ForTempFloatElement = FU.getInstance(tempFolatElement.getTopDistance().toFU() - rowHeightList.getRangeValue(0, verticalValue).toFU()).toPixI(resolution) - - oldLocationY; - floatNamePointMap.put(floatName, new Point(floatX1ForTempFloatElement, floatY1ForTempFloatElement)); - } else if (cursorType == Cursor.NW_RESIZE_CURSOR) { - setOld_X_AndOld_Y(floatArray[2], floatArray[3]); - } else if (cursorType == Cursor.NE_RESIZE_CURSOR) { - setOld_X_AndOld_Y(floatArray[0], floatArray[3]); - } else if (cursorType == Cursor.SE_RESIZE_CURSOR) { - setOld_X_AndOld_Y(floatArray[0], floatArray[1]); - } else if (cursorType == Cursor.SW_RESIZE_CURSOR) { - setOld_X_AndOld_Y(floatArray[2], floatArray[1]); - } else if (cursorType == Cursor.N_RESIZE_CURSOR) { - setOld_X_AndOld_Y(floatArray[0], floatArray[3]); - } else if (cursorType == Cursor.S_RESIZE_CURSOR) { - setOld_X_AndOld_Y(floatArray[0], floatArray[1]); - } else if (cursorType == Cursor.W_RESIZE_CURSOR) { - setOld_X_AndOld_Y(floatArray[2], floatArray[1]); - } else if (cursorType == Cursor.E_RESIZE_CURSOR) { - setOld_X_AndOld_Y(floatArray[0], floatArray[1]); - } - } - - private void setOld_X_AndOld_Y(double x, double y) { - this.oldEvtX = (int) x; - this.oldEvtY = (int) y; - } - - /** - * @param e - */ - public void mouseWheelMoved(MouseWheelEvent e) { - ElementCasePane reportPane = grid.getElementCasePane(); - if (reportPane.isHorizontalScrollBarVisible()) { - reportPane.getVerticalScrollBar().setValue(reportPane.getVerticalScrollBar().getValue() + e.getWheelRotation() * 3); - } - } - - /** - * @param e - */ - public void mouseClicked(MouseEvent e) { - } - - /** - * @param e - */ - public void mouseEntered(MouseEvent e) { - } - - /** - * @param e - */ - public void mouseExited(MouseEvent e) { - } + int column = selectedCellPointX >= tempOldSelectedCellX ? tempOldSelectedCellX : selectedCellPointX; + int row = selectedCellPointY >= tempOldSelectedCellY ? tempOldSelectedCellY : selectedCellPointY; + int columnSpan = Math.abs(selectedCellPointX - tempOldSelectedCellX) + 1; + int rowSpan = Math.abs(selectedCellPointY - tempOldSelectedCellY) + 1; + Rectangle oldrectangle = new Rectangle(column, row, columnSpan, rowSpan); + // ajust them to got the correct selected bounds. + Rectangle newrectangle = grid.caculateIntersectsUnion(reportPane.getEditingElementCase(), oldrectangle); + gridSelection.setBounds(newrectangle.x, newrectangle.y, newrectangle.width, newrectangle.height); + gridSelection.clearCellRectangles(gridSelection.getCellRectangleCount() - 1); + gridSelection.addCellRectangle(newrectangle); + reportPane.setSelection(gridSelection); + if (!reportPane.mustInVisibleRange()) { + reportPane.ensureColumnRowVisible(selectedCellPointX, selectedCellPointY); + } + } + + + private void doControlSelectCell(double evtX, double evtY) { + ElementCasePane reportPane = grid.getElementCasePane(); + ElementCase report = reportPane.getEditingElementCase(); + //上一次选中的单元格 + Selection s = reportPane.getSelection(); + if (s instanceof FloatSelection) { + return; + } + + ColumnRow selectedCellPoint = GridUtils.getAdjustEventColumnRow(reportPane, evtX, evtY); + //拷贝,而不是直接强制使用以监听单元格选择变化 + CellSelection gridSelection = ((CellSelection) s).clone(); + gridSelection.setSelectedType(((CellSelection) s).getSelectedType()); + CellElement cellElement = report.getCellElement(selectedCellPoint.getColumn(), selectedCellPoint.getRow()); + if (cellElement == null) { + gridSelection.setBounds(selectedCellPoint.getColumn(), selectedCellPoint.getRow(), 1, 1); + int point = gridSelection.containsCell(selectedCellPoint.getColumn(), selectedCellPoint.getRow()); + if (point == -1) { + gridSelection.addCellRectangle(new Rectangle(selectedCellPoint.getColumn(), selectedCellPoint.getRow(), 1, 1)); + } else { + gridSelection.clearCellRectangles(point); + } + + } else { + gridSelection.setBounds(cellElement.getColumn(), cellElement.getRow(), cellElement.getColumnSpan(), cellElement.getRowSpan()); + gridSelection.addCellRectangle(new Rectangle(cellElement.getColumn(), cellElement.getRow(), cellElement.getColumnSpan(), cellElement.getRowSpan())); + + + } + + reportPane.setSelection(gridSelection); + + if (!reportPane.mustInVisibleRange()) { + reportPane.ensureColumnRowVisible(selectedCellPoint.getColumn(), selectedCellPoint.getRow()); + } + + + } + + + /** + * 鼠标在Grid上面移动. + */ + private void mouseMoveOnGrid(int evtX, int evtY) { + grid.setToolTipText(null); + if (grid.getDrawingFloatElement() != null) { + grid.setCursor(UIConstants.DRAW_CURSOR); // august:是否是将要画悬浮元素,就是那个笔的形状 + } else { + Object[] floatElementCursor = GridUtils.getAboveFloatElementCursor(grid.getElementCasePane(), evtX, evtY); + if (!ArrayUtils.isEmpty(floatElementCursor)) {// 鼠标在悬浮元素上移动 + grid.setCursor((Cursor) floatElementCursor[1]); + } else {// 鼠标在单元格上移动 + doMouseMoveOnCells(evtX, evtY); + } + } + } + + /** + * 鼠标在单元格上移动 + * + * @param evtX + * @param evtY + */ + private void doMouseMoveOnCells(int evtX, int evtY) { + ElementCasePane reportPane = grid.getElementCasePane(); + TemplateElementCase report = reportPane.getEditingElementCase(); + //如果是格式刷状态 + if (DesignerContext.getFormatState() != DesignerContext.FORMAT_STATE_NULL) { + grid.setCursor(UIConstants.FORMAT_BRUSH_CURSOR); + } else { + grid.setCursor(UIConstants.CELL_DEFAULT_CURSOR); + } + ColumnRow selectedCellColumnRow = GridUtils.getEventColumnRow(reportPane, evtX, evtY); + TemplateCellElement curCellElement = report.getTemplateCellElement(selectedCellColumnRow.getColumn(), selectedCellColumnRow.getRow()); + + if (curCellElement != null) { + setCursorAndToolTips(curCellElement, report); + } + + int dragType = isMoveCellSelection(evtX, evtY); + if (dragType == GridUtils.DRAG_CELLSELECTION) {// 判断是否移动选中的区域. + grid.setCursor(new Cursor(Cursor.MOVE_CURSOR)); + } // peter:判断是否复制移动的角落. + else if (dragType == GridUtils.DRAG_CELLSELECTION_BOTTOMRIGHT_CORNER) { + grid.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR)); + } + + } + + /** + * 只根据CellGUIAttr里面的tooltips显示了,原先的显示条件属性、形态、控件等无意义 + * + * @param curCellElement + * @param report + */ + private void setCursorAndToolTips(TemplateCellElement curCellElement, TemplateElementCase report) { + int resolution = ScreenResolution.getScreenResolution(); + // 计算相对Grid的显示位置. + DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); + DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); + + CellGUIAttr cellGUIAttr = curCellElement.getCellGUIAttr(); + if (cellGUIAttr == null) { + cellGUIAttr = CellGUIAttr.DEFAULT_CELLGUIATTR; + } + grid.setToolTipText(cellGUIAttr.getTooltipText()); + double tooltipX = columnWidthList.getRangeValue(grid.getHorizontalValue(), curCellElement.getColumn()).toPixD(resolution) + TOOLTIP_X_Y_FIX; + double tooltipY = rowHeightList.getRangeValue(grid.getVerticalValue(), curCellElement.getRow() + curCellElement.getRowSpan()).toPixD(resolution) + TOOLTIP_X_Y_FIX; + + // peter:显示tooltip + if (StringUtils.isNotBlank(grid.getToolTipText())) { + grid.setTooltipLocation(tooltipX + TOOLTIP_X, tooltipY); + } + } + + /** + * 是否移动CellSelection + */ + private int isMoveCellSelection(double evtX, double evtY) { + ElementCasePane reportPane = grid.getElementCasePane(); + + // p:判断是否在选中区域的边框,可以移动CellSelelction选中区域 + Selection selection = reportPane.getSelection(); + if (!(selection instanceof CellSelection)) { + return GridUtils.DRAG_NONE; + } + + if ((selection instanceof CellSelection) + && ((CellSelection) selection).getCellRectangleCount() != 1) {// p:没有选择Cell. + return GridUtils.DRAG_NONE; + } + + CellSelection cs = (CellSelection) selection; + + ElementCase report = reportPane.getEditingElementCase(); + + // peter:计算相对Grid的显示位置. + DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); + DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); + + int resolution = ScreenResolution.getScreenResolution(); + + double leftColDistance = columnWidthList.getRangeValue(grid.getHorizontalValue(), cs.getColumn()).toPixD(resolution); + double rightColDistance = columnWidthList.getRangeValue(grid.getHorizontalValue(), cs.getColumn() + cs.getColumnSpan()).toPixD(resolution); + double topRowDistance = rowHeightList.getRangeValue(grid.getVerticalValue(), cs.getRow()).toPixD(resolution); + double bottomRowDistance = rowHeightList.getRangeValue(grid.getVerticalValue(), cs.getRow() + cs.getRowSpan()).toPixD(resolution); + + // 首先判断是否在可以复制的右下角落. + if (fitCellSelectionBottomRight(evtX, evtY, rightColDistance, bottomRowDistance)) { + return GridUtils.DRAG_CELLSELECTION_BOTTOMRIGHT_CORNER; + } + + // 这个dist值调小一点,尽量让用户不使用drag and drop 来编辑报表支持 + double dist = 1.0; + if (fitCellSelection(evtX, leftColDistance, rightColDistance, dist)) { + if (evtY >= (topRowDistance - dist) && evtY <= (bottomRowDistance + dist)) { + return GridUtils.DRAG_CELLSELECTION; + } + } else if (fitCellSelection(evtY, topRowDistance, bottomRowDistance, dist)) { + if (evtX >= (leftColDistance - dist) && evtX <= (rightColDistance + dist)) { + return GridUtils.DRAG_CELLSELECTION; + } + } + + return GridUtils.DRAG_NONE; + } + + private boolean fitCellSelection(double evt, double d1, double d2, double dist) { + return (evt >= (d1 - dist) && evt <= (d1 + dist)) + || (evt >= (d2 - dist) && evt <= (d2 + dist)); + } + + private boolean fitCellSelectionBottomRight(double evtX, double evtY, double rightColDistance, double bottomRowDistance) { + return evtX > rightColDistance - COPY_CROSS_INNER_DISTANCE && evtX < rightColDistance + COPY_CROSS_OUTER_DISTANCE + && evtY > bottomRowDistance - COPY_CROSS_INNER_DISTANCE && bottomRowDistance < bottomRowDistance + COPY_CROSS_OUTER_DISTANCE; + } + + /** + * Do one click selection + */ + private void doOneClickSelection(int evtX, int evtY, boolean isShiftDown, boolean isControlDown) { + ElementCasePane reportPane = grid.getElementCasePane(); + // check float elements. + Object[] tmpFloatElementCursor = GridUtils.getAboveFloatElementCursor(reportPane, evtX, evtY); + if (!ArrayUtils.isEmpty(tmpFloatElementCursor)) {// p:选中了悬浮元素. + doSelectFloatElement(tmpFloatElementCursor, evtX, evtY); + } else if (isShiftDown) { + doShiftSelectCell(evtX, evtY); + } else if (isControlDown) { + doControlSelectCell(evtX, evtY); + } else { + ColumnRow selectedCellPoint = GridUtils.getEventColumnRow(reportPane, evtX, evtY); + int type = reportPane.ensureColumnRowVisible(selectedCellPoint.getColumn(), selectedCellPoint.getRow()); + if (type == ElementCasePane.NO_OVER) { + GridUtils.doSelectCell(reportPane, selectedCellPoint.getColumn(), selectedCellPoint.getRow()); + } else if (type == ElementCasePane.VERTICAL_OVER) { + //聚合报表块选在下边界的时候,有时会向下移,阻止向下移 + GridUtils.doSelectCell(reportPane, selectedCellPoint.getColumn(), selectedCellPoint.getRow() - 1); + } else if (type == ElementCasePane.HORIZONTAL_OVER) { + //聚合报表块选在右边界的时候,有时会向右移,阻止向右移 + GridUtils.doSelectCell(reportPane, selectedCellPoint.getColumn() - 1, selectedCellPoint.getRow()); + } else { + GridUtils.doSelectCell(reportPane, selectedCellPoint.getColumn() - 1, selectedCellPoint.getRow() - 1); + } + + return; + } + + } + + /** + * 选中悬浮元素 + * + * @param tmpFloatElementCursor + * @param evtX + * @param evtY + */ + + private void doSelectFloatElement(Object[] tmpFloatElementCursor, int evtX, int evtY) { + ElementCasePane reportPane = grid.getElementCasePane(); + ElementCase report = reportPane.getEditingElementCase(); + FloatElement floatElement = (FloatElement) tmpFloatElementCursor[0]; + String floatName = floatElement.getName(); + reportPane.setSelection(new FloatSelection(floatName)); + double[] floatArray = GridUtils.caculateFloatElementLocations(floatElement, ReportHelper.getColumnWidthList(report), ReportHelper.getRowHeightList(report), reportPane + .getGrid().getVerticalValue(), reportPane.getGrid().getHorizontalValue()); + + int cursorType = ((Cursor) tmpFloatElementCursor[1]).getType(); + if (cursorType == Cursor.MOVE_CURSOR) { + this.oldEvtX = evtX; + this.oldEvtY = evtY; + FloatElement el = report.getFloatElement(floatName); + int resolution = ScreenResolution.getScreenResolution(); + int verticalValue = grid.getVerticalValue(); + int horizentalValue = grid.getHorizontalValue(); + DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); + DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); + this.oldLocationX = FU.getInstance(el.getLeftDistance().toFU() - columnWidthList.getRangeValue(0, horizentalValue).toFU()).toPixI(resolution); + this.oldLocationY = FU.getInstance(el.getTopDistance().toFU() - rowHeightList.getRangeValue(0, verticalValue).toFU()).toPixI(resolution); + if (floatNamePointMap == null) { + floatNamePointMap = new HashMap(); + } + floatNamePointMap.clear(); + FloatElement tempFolatElement = report.getFloatElement(floatName); + int floatX1ForTempFloatElement = FU.getInstance(tempFolatElement.getLeftDistance().toFU() - columnWidthList.getRangeValue(0, horizentalValue).toFU()) + .toPixI(resolution) - oldLocationX; + int floatY1ForTempFloatElement = FU.getInstance(tempFolatElement.getTopDistance().toFU() - rowHeightList.getRangeValue(0, verticalValue).toFU()).toPixI(resolution) + - oldLocationY; + floatNamePointMap.put(floatName, new Point(floatX1ForTempFloatElement, floatY1ForTempFloatElement)); + } else if (cursorType == Cursor.NW_RESIZE_CURSOR) { + setOld_X_AndOld_Y(floatArray[2], floatArray[3]); + } else if (cursorType == Cursor.NE_RESIZE_CURSOR) { + setOld_X_AndOld_Y(floatArray[0], floatArray[3]); + } else if (cursorType == Cursor.SE_RESIZE_CURSOR) { + setOld_X_AndOld_Y(floatArray[0], floatArray[1]); + } else if (cursorType == Cursor.SW_RESIZE_CURSOR) { + setOld_X_AndOld_Y(floatArray[2], floatArray[1]); + } else if (cursorType == Cursor.N_RESIZE_CURSOR) { + setOld_X_AndOld_Y(floatArray[0], floatArray[3]); + } else if (cursorType == Cursor.S_RESIZE_CURSOR) { + setOld_X_AndOld_Y(floatArray[0], floatArray[1]); + } else if (cursorType == Cursor.W_RESIZE_CURSOR) { + setOld_X_AndOld_Y(floatArray[2], floatArray[1]); + } else if (cursorType == Cursor.E_RESIZE_CURSOR) { + setOld_X_AndOld_Y(floatArray[0], floatArray[1]); + } + } + + private void setOld_X_AndOld_Y(double x, double y) { + this.oldEvtX = (int) x; + this.oldEvtY = (int) y; + } + + /** + * @param e + */ + public void mouseWheelMoved(MouseWheelEvent e) { + ElementCasePane reportPane = grid.getElementCasePane(); + if (reportPane.isHorizontalScrollBarVisible()) { + reportPane.getVerticalScrollBar().setValue(reportPane.getVerticalScrollBar().getValue() + e.getWheelRotation() * 3); + } + } + + /** + * @param e + */ + public void mouseClicked(MouseEvent e) { + } + + /** + * @param e + */ + public void mouseEntered(MouseEvent e) { + } + + /** + * @param e + */ + public void mouseExited(MouseEvent e) { + } } \ No newline at end of file diff --git a/designer/src/com/fr/quickeditor/ChartQuickEditor.java b/designer/src/com/fr/quickeditor/ChartQuickEditor.java index f0f68a9a73..452367ad34 100644 --- a/designer/src/com/fr/quickeditor/ChartQuickEditor.java +++ b/designer/src/com/fr/quickeditor/ChartQuickEditor.java @@ -1,24 +1,24 @@ package com.fr.quickeditor; import com.fr.base.chart.BaseChartCollection; +import com.fr.chart.chartattr.ChartCollection; import com.fr.design.designer.TargetComponent; import com.fr.design.gui.chart.BaseChartPropertyPane; import com.fr.design.mainframe.ElementCasePane; import com.fr.design.module.DesignModuleFactory; +import com.fr.design.selection.QuickEditor; import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.FloatSelection; import com.fr.grid.selection.Selection; import com.fr.poly.PolyDesigner; import com.fr.poly.creator.ChartBlockEditor; import com.fr.report.cell.Elem; -import com.fr.design.selection.QuickEditor; import java.awt.*; public class ChartQuickEditor extends QuickEditor{ // kunsnat: editingPropertyPane初始化 避开设计器启动, 在用到的时候再初始化. //private BaseChartPropertyPane editingPropertyPane = null; - public ChartQuickEditor() { setLayout(new BorderLayout()); setBorder(null); @@ -45,9 +45,8 @@ public class ChartQuickEditor extends QuickEditor{ element = ((ElementCasePane)tc).getEditingElementCase().getFloatElement(fs.getSelectedFloatName()); } collection = (BaseChartCollection) element.getValue(); - add(editingPropertyPane = DesignModuleFactory.getChartPropertyPane(), BorderLayout.CENTER); - editingPropertyPane.setSupportCellData(true); + } editingPropertyPane.populateChartPropertyPane(collection, tc); } diff --git a/designer_base/src/com/fr/design/actions/help/AboutPane.java b/designer_base/src/com/fr/design/actions/help/AboutPane.java index 9c8953597d..1155f4e921 100644 --- a/designer_base/src/com/fr/design/actions/help/AboutPane.java +++ b/designer_base/src/com/fr/design/actions/help/AboutPane.java @@ -47,7 +47,7 @@ public class AboutPane extends JPanel { BoxCenterAlignmentCopyablePane buildCopyPane = new BoxCenterAlignmentCopyablePane( getBuildTitle(), - GeneralUtils.readBuildNO(), + GeneralUtils.readFullBuildNO(), new String[]{ Inter.getLocText("FR-Designer-Basic_Copy_Build_NO"), Inter.getLocText("FR-Designer-Basic_Copy_Build_NO_OK") diff --git a/designer_base/src/com/fr/design/actions/help/WebDemoAction.java b/designer_base/src/com/fr/design/actions/help/WebDemoAction.java index a1808e43e7..c2cfeb9a41 100644 --- a/designer_base/src/com/fr/design/actions/help/WebDemoAction.java +++ b/designer_base/src/com/fr/design/actions/help/WebDemoAction.java @@ -23,7 +23,7 @@ public class WebDemoAction extends UpdateAction { * @param evt 事件 */ public void actionPerformed(ActionEvent evt) { - StartServer.browerDemoURL(); + StartServer.browserDemoURL(); } public static final MenuKeySet PRODUCT_DEMO = new MenuKeySet() { @@ -34,7 +34,7 @@ public class WebDemoAction extends UpdateAction { @Override public String getMenuName() { - return Inter.getLocText("Product_Demo"); + return Inter.getLocText("FR-Product_Demo"); } @Override diff --git a/designer_base/src/com/fr/design/actions/server/PluginManagerAction.java b/designer_base/src/com/fr/design/actions/server/PluginManagerAction.java index 08dc91b07e..bd77bfa0c1 100644 --- a/designer_base/src/com/fr/design/actions/server/PluginManagerAction.java +++ b/designer_base/src/com/fr/design/actions/server/PluginManagerAction.java @@ -2,7 +2,7 @@ package com.fr.design.actions.server; import com.fr.base.BaseUtils; import com.fr.design.actions.UpdateAction; -import com.fr.design.extra.WebDialog; +import com.fr.design.extra.WebViewDlgHelper; import com.fr.design.menu.MenuKeySet; import com.fr.general.Inter; @@ -25,7 +25,7 @@ public class PluginManagerAction extends UpdateAction { @Override public void actionPerformed(ActionEvent e) { - WebDialog.createPluginDialog(); + WebViewDlgHelper.createPluginDialog(); } public static final MenuKeySet PLUGIN_MANAGER = new MenuKeySet() { diff --git a/designer_base/src/com/fr/design/data/DesignTableDataManager.java b/designer_base/src/com/fr/design/data/DesignTableDataManager.java index e0569424dc..621e303b1b 100644 --- a/designer_base/src/com/fr/design/data/DesignTableDataManager.java +++ b/designer_base/src/com/fr/design/data/DesignTableDataManager.java @@ -36,7 +36,6 @@ import java.io.ByteArrayOutputStream; import java.text.Collator; import java.util.*; import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; /** * 设计器管理操作数据集的类: @@ -59,7 +58,7 @@ public abstract class DesignTableDataManager { private static java.util.Map dsNameChangedMap = new HashMap(); // private static List dsListeners = new ArrayList(); - private static Map> dsListenersMap = new HashMap>(); + private static Map> dsListenersMap = new HashMap>(); public static String NO_PARAMETER = "no_paramater_pane"; @@ -79,7 +78,7 @@ public abstract class DesignTableDataManager { * 响应数据集改变. */ private static void fireDsChanged() { - for(Entry> listenerEntry : dsListenersMap.entrySet()) { + for (Entry> listenerEntry : dsListenersMap.entrySet()) { List dsListeners = listenerEntry.getValue(); for (int i = 0; i < dsListeners.size(); i++) { //增强for循环用的iterator实现的, 如果中间哪个listener修改或删除了(如ChartEditPane.dsChangeListener), @@ -91,8 +90,8 @@ public abstract class DesignTableDataManager { } } - public static void closeTemplate(JTemplate template) { - if(template != null) { + public static void closeTemplate(JTemplate template) { + if (template != null) { dsListenersMap.remove(template.getFullPathName()); } } @@ -151,7 +150,7 @@ public abstract class DesignTableDataManager { public static void addDsChangeListener(ChangeListener l) { JTemplate template = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); String key = StringUtils.EMPTY; - if(template != null) { + if (template != null) { key = template.getFullPathName(); } List dsListeners = dsListenersMap.get(key); @@ -180,7 +179,7 @@ public abstract class DesignTableDataManager { * august:返回当前正在编辑的具有报表数据源的模板(基本报表、聚合报表) 包括 : 图表模板 * * @return TableDataSource - * attention:与这个方法有关系的静态组件(不随着切换模板tab而变化的),应该重新执行该方法,再刷新组件 + * attention:与这个方法有关系的静态组件(不随着切换模板tab而变化的),应该重新执行该方法,再刷新组件 */ public static TableDataSource getEditingTableDataSource() { return DesignModelAdapter.getCurrentModelAdapter() == null ? null : DesignModelAdapter.getCurrentModelAdapter().getBook(); @@ -319,7 +318,6 @@ public abstract class DesignTableDataManager { } - private static void addStoreProcedureData(java.util.Map resMap) { DatasourceManagerProvider mgr = DatasourceManager.getProviderInstance(); String[] namearray = new String[0]; @@ -381,42 +379,34 @@ public abstract class DesignTableDataManager { private static EmbeddedTableData previewTableData(TableData tabledata, int rowCount, boolean isMustInputParameters, boolean needLoadingBar) throws Exception { final AutoProgressBar loadingBar = PreviewTablePane.getInstance().getProgressBar(); Env currentEnv = FRContext.getCurrentEnv(); - EmbeddedTableData embeddedTableData = null; ParameterProvider[] parameters = currentEnv.getTableDataParameters(tabledata); - boolean isNullParameter = parameters == null || parameters.length == 0; - ParameterProvider[] tableDataParameter = tabledata.getParameters(Calculator.createCalculator()); - boolean isOriginalNUllParameter = tableDataParameter == null || tableDataParameter.length == 0; - if (isNullParameter && !isOriginalNUllParameter) { - parameters = tableDataParameter; - } - boolean hasValue = true; - for (ParameterProvider parameter : parameters) { - if (parameter.getValue() == null || ComparatorUtils.equals(StringUtils.EMPTY, parameter.getValue())) { - hasValue = false; - break; - } + if (ArrayUtils.isEmpty(parameters)) { + parameters = tabledata.getParameters(Calculator.createCalculator()); } - final Map parameterMap = new HashMap(); - if (!hasValue || isMustInputParameters) { - if (parameters != null && parameters.length > 0) { - final ParameterInputPane pPane = new ParameterInputPane(parameters); - pPane.showSmallWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { - - public void doOk() { - parameterMap.putAll(pPane.update()); - } - }).setVisible(true); - } + final Map parameterMap = new HashMap<>(); + if (needInputParams(isMustInputParameters, parameters)) { + final ParameterInputPane pPane = new ParameterInputPane(parameters); + pPane.showSmallWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { + @Override + public void doOk() { + parameterMap.putAll(pPane.update()); + } + }).setVisible(true); } else { - for (int i = 0; i < parameters.length; i++) { - parameterMap.put(parameters[i].getName(), parameters[i].getValue()); + for (ParameterProvider parameter : parameters) { + parameterMap.put(parameter.getName(), parameter.getValue()); } } if (loadingBar != null && needLoadingBar) { loadingBar.start(); } try { - embeddedTableData = currentEnv.previewTableData(tabledata, parameterMap, rowCount); + for (ParameterProvider parameter : currentEnv.getTableDataParameters(tabledata)) { + if (parameterMap.containsKey(parameter.getName())) { + parameter.setValue(parameterMap.get(parameter.getName())); + } + } + return currentEnv.previewTableData(tabledata, parameterMap, rowCount); } catch (TableDataException e) { throw new TableDataException(e.getMessage(), e); } finally { @@ -426,7 +416,18 @@ public abstract class DesignTableDataManager { } }, 100); } - return embeddedTableData; + } + + private static boolean needInputParams(boolean mustInputParameters, ParameterProvider[] parameters) { + if (mustInputParameters && ArrayUtils.isNotEmpty(parameters)) { + return true; + } + for (ParameterProvider parameter : parameters) { + if (parameter.getValue() == null || StringUtils.EMPTY.equals(parameter.getValue())) { + return true; + } + } + return false; } /** @@ -495,6 +496,4 @@ public abstract class DesignTableDataManager { public static void setThreadLocal(String value) { threadLocal.set(value); } - - } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/data/datapane/TreeTableDataDictPane.java b/designer_base/src/com/fr/design/data/datapane/TreeTableDataDictPane.java index 7623ac37d3..36ca2fb7eb 100644 --- a/designer_base/src/com/fr/design/data/datapane/TreeTableDataDictPane.java +++ b/designer_base/src/com/fr/design/data/datapane/TreeTableDataDictPane.java @@ -1,21 +1,21 @@ package com.fr.design.data.datapane; -import com.fr.design.data.DesignTableDataManager; import com.fr.data.impl.RecursionTableData; +import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.datapane.preview.PreviewLabel; import com.fr.design.data.datapane.preview.PreviewLabel.Previewable; import com.fr.design.data.datapane.preview.PreviewTablePane; import com.fr.design.data.tabledata.wrapper.TableDataWrapper; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.ibutton.UIRadioButton; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.dialog.BasicPane; import com.fr.design.editor.ValueEditorPane; import com.fr.design.editor.ValueEditorPaneFactory; import com.fr.design.editor.editor.ColumnIndexEditor; import com.fr.design.editor.editor.ColumnNameEditor; import com.fr.design.editor.editor.Editor; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.ibutton.UIRadioButton; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.FRGUIPaneFactory; import com.fr.general.Inter; import com.fr.script.Calculator; import com.fr.stable.StringUtils; @@ -29,271 +29,281 @@ import java.awt.event.ItemListener; import java.util.List; public class TreeTableDataDictPane extends BasicPane implements Previewable { - - private UILabel selectTableDataLabel; - protected TableDataComboBox tableDataNameComboBox; - private UIRadioButton parentMarkRadio; - private UIRadioButton lengthMarkRadio; - private ButtonGroup markButtonGroup; - - UILabel originalMarkedFieldLabel1; - UILabel parentMarkedFieldLabel1; - UILabel treeDataFieldLabel1; - UILabel originalMarkedFieldLabel2; - UILabel treeDataFieldLabel2; - - private ValueEditorPane originalMarkedFieldPane1; - private ValueEditorPane parentMarkedFieldPane1; - private ValueEditorPane originalMarkedFieldPane2; - public TreeTableDataDictPane(){ + private UILabel selectTableDataLabel; + protected TableDataComboBox tableDataNameComboBox; + private UIRadioButton parentMarkRadio; + private UIRadioButton lengthMarkRadio; + private ButtonGroup markButtonGroup; + + private UILabel originFieldDependsOnParentLabel; + private UILabel parentFieldLabel; + private UILabel treeDataFieldLabel1; + private UILabel originFieldDependsOnLengthLabel; + private UILabel treeDataFieldLabel2; + + private ValueEditorPane originFieldDependsOnParentPane; + private ValueEditorPane parentFieldPane; + private ValueEditorPane originFieldDependsOnLengthPane; + + public TreeTableDataDictPane() { this(StringUtils.EMPTY); } - public TreeTableDataDictPane(String treeName) { - this.setLayout(new BorderLayout(5,30)); - this.setBorder(BorderFactory.createEmptyBorder(20, 20, 0, 0)); - selectTableDataLabel = new UILabel(Inter.getLocText(new String[]{"Please_Select","Single", "DS-TableData"}) + " :"); - setTableDataNameComboBox(treeName); - tableDataNameComboBox.setPreferredSize(new Dimension(180, 20)); - JPanel tableFlowPane = FRGUIPaneFactory.createBoxFlowInnerContainer_S_Pane(); - tableFlowPane.add(selectTableDataLabel); - tableFlowPane.add(tableDataNameComboBox); - tableDataNameComboBox.addItemListener(new ItemListener(){ - public void itemStateChanged(ItemEvent e) { - tdChange(); - } - }); - tableFlowPane.add(new PreviewLabel(this)); - this.add(tableFlowPane, BorderLayout.NORTH); - JPanel centerPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - this.add(centerPane,BorderLayout.CENTER); - parentMarkRadio = new UIRadioButton(Inter.getLocText("Build_Tree_Accord_Parent_Marked_Filed"), true); - lengthMarkRadio = new UIRadioButton(Inter.getLocText("Build_Tree_Accord_Marked_Filed_Length")); - parentMarkRadio.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - if(isBuildByParentFiled()) { - makeParentEnable(); - tdChange(); - } - } - }); - lengthMarkRadio.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - if(!isBuildByParentFiled()) { - makeLengthEnable(); - tdChange(); - } - } - }); - markButtonGroup = new ButtonGroup(); - markButtonGroup.add(parentMarkRadio); - markButtonGroup.add(lengthMarkRadio); - - originalMarkedFieldLabel1 = new UILabel(Inter.getLocText("Original_Marked_Filed") + " :", SwingConstants.RIGHT); - parentMarkedFieldLabel1 = new UILabel(" " + Inter.getLocText("Parent_Marked_Field") + " :", SwingConstants.RIGHT); - treeDataFieldLabel1 = new UILabel(" " + Inter.getLocText("Tree_Data_Field") + " :", SwingConstants.RIGHT); - originalMarkedFieldLabel2 = new UILabel(Inter.getLocText("Original_Marked_Filed") + " :", SwingConstants.RIGHT); - treeDataFieldLabel2 = new UILabel(" " + Inter.getLocText("Tree_Data_Field") + " :", SwingConstants.RIGHT); - -// originalMarkedFieldPane1 = ValueEditorPaneFactory.createValueEditorPane(new Editor[] {new OldColumnIndexEditor(Inter.getLocText("Columns"))}); -// parentMarkedFieldPane1 = ValueEditorPaneFactory.createValueEditorPane(new Editor[] {new OldColumnIndexEditor(Inter.getLocText("Columns"))}); -// originalMarkedFieldPane2 = ValueEditorPaneFactory.createValueEditorPane(new Editor[] {new OldColumnIndexEditor(Inter.getLocText("Columns"))}); - originalMarkedFieldPane1 = ValueEditorPaneFactory.createValueEditorPane(new Editor[] { new ColumnNameEditor(), new ColumnIndexEditor() }); - parentMarkedFieldPane1 = ValueEditorPaneFactory.createValueEditorPane(new Editor[] { new ColumnNameEditor(), new ColumnIndexEditor() }); - originalMarkedFieldPane2 = ValueEditorPaneFactory.createValueEditorPane(new Editor[] { new ColumnNameEditor(), new ColumnIndexEditor() }); - - makeParentEnable(); - - JPanel p1 = createCenterFlowZeroGapBorderPane(originalMarkedFieldLabel1, originalMarkedFieldPane1); - JPanel p2 = createCenterFlowZeroGapBorderPane(parentMarkedFieldLabel1, parentMarkedFieldPane1); - JPanel border1 = new JPanel(); - border1.setLayout(new BorderLayout(0, 10)); - border1.add(p1, BorderLayout.NORTH); - border1.add(p2, BorderLayout.CENTER); - JPanel p4 = createCenterFlowZeroGapBorderPane(originalMarkedFieldLabel2, originalMarkedFieldPane2); - JPanel border2 = new JPanel(); - border2.setLayout(new BorderLayout(0, 20)); - border2.add(p4, BorderLayout.NORTH); - - JPanel xx = FRGUIPaneFactory.createBorderLayout_S_Pane(); - xx.add(parentMarkRadio,BorderLayout.NORTH); - xx.add(border1,BorderLayout.CENTER); - JPanel xxx = FRGUIPaneFactory.createBorderLayout_S_Pane(); - xxx.add(lengthMarkRadio,BorderLayout.NORTH); - xxx.add(border2,BorderLayout.CENTER); - JPanel buildTreePanel = new JPanel(new BorderLayout(5, 30)); - buildTreePanel.add(xx,BorderLayout.NORTH); - buildTreePanel.add(xxx,BorderLayout.CENTER); - centerPane.add(buildTreePanel, BorderLayout.NORTH); - JPanel previewPanel = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane(); - UIButton treeDataPreviewButton = new UIButton(Inter.getLocText("Preview")); - previewPanel.add(treeDataPreviewButton); - treeDataPreviewButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - TableDataWrapper tableDataWrappe = tableDataNameComboBox.getSelectedItem(); - if(tableDataWrappe == null) { - return; - } - RecursionTableData rtd = new RecursionTableData(); - rtd.setOriginalTableDataName(tableDataWrappe.getTableDataName()); - if(isBuildByParentFiled()) { - rtd.setMarkFields((Integer.parseInt(originalMarkedFieldPane1.update().toString()) - 1) + ""); - rtd.setParentmarkFields(Integer.parseInt(parentMarkedFieldPane1.update().toString()) - 1 + ""); - } else { - rtd.setMarkFields(Integer.parseInt(originalMarkedFieldPane2.update().toString()) - 1 + ""); - rtd.setParentmarkFields("-1"); - } - rtd.setTableDataSource(DesignTableDataManager.getEditingTableDataSource()); - rtd.createDataModel(Calculator.createCalculator()); - PreviewTablePane.previewTableData(rtd); - } - }); - centerPane.add(previewPanel, BorderLayout.CENTER); - } + + public TreeTableDataDictPane(String treeName) { + this.setLayout(new BorderLayout(5, 30)); + this.setBorder(BorderFactory.createEmptyBorder(20, 20, 0, 0)); + selectTableDataLabel = new UILabel(Inter.getLocText(new String[]{"Please_Select", "Single", "DS-TableData"}) + " :"); + setTableDataNameComboBox(treeName); + tableDataNameComboBox.setPreferredSize(new Dimension(180, 20)); + JPanel tableFlowPane = FRGUIPaneFactory.createBoxFlowInnerContainer_S_Pane(); + tableFlowPane.add(selectTableDataLabel); + tableFlowPane.add(tableDataNameComboBox); + tableDataNameComboBox.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + tdChange(); + } + }); + tableFlowPane.add(new PreviewLabel(this)); + this.add(tableFlowPane, BorderLayout.NORTH); + JPanel centerPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + this.add(centerPane, BorderLayout.CENTER); + parentMarkRadio = new UIRadioButton(Inter.getLocText("FR-Designer_Build_Tree_Accord_Parent_Marked_Filed"), true); + lengthMarkRadio = new UIRadioButton(Inter.getLocText("FR-Designer_Build_Tree_Accord_Marked_Filed_Length")); + parentMarkRadio.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + if (isBuildByParentFiled()) { + makeParentEnable(); + tdChange(); + } + } + }); + lengthMarkRadio.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + if (!isBuildByParentFiled()) { + makeLengthEnable(); + tdChange(); + } + } + }); + markButtonGroup = new ButtonGroup(); + markButtonGroup.add(parentMarkRadio); + markButtonGroup.add(lengthMarkRadio); + + originFieldDependsOnParentLabel = new UILabel(Inter.getLocText("FR-Designer_Original_Marked_Filed") + " :", SwingConstants.RIGHT); + parentFieldLabel = new UILabel(" " + Inter.getLocText("FR-Designer_Parent_Marked_Field") + " :", SwingConstants.RIGHT); + treeDataFieldLabel1 = new UILabel(" " + Inter.getLocText("FR-Designer_Tree_Data_Field") + " :", SwingConstants.RIGHT); + originFieldDependsOnLengthLabel = new UILabel(Inter.getLocText("FR-Designer_Original_Marked_Filed") + " :", SwingConstants.RIGHT); + treeDataFieldLabel2 = new UILabel(" " + Inter.getLocText("FR-Designer_Tree_Data_Field") + " :", SwingConstants.RIGHT); + +// originFieldDependsOnParentPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[] {new OldColumnIndexEditor(Inter.getLocText("Columns"))}); +// parentFieldPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[] {new OldColumnIndexEditor(Inter.getLocText("Columns"))}); +// originFieldDependsOnLengthPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[] {new OldColumnIndexEditor(Inter.getLocText("Columns"))}); + originFieldDependsOnParentPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor()}); + parentFieldPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor()}); + originFieldDependsOnLengthPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor()}); + + makeParentEnable(); + + JPanel p1 = createCenterFlowZeroGapBorderPane(originFieldDependsOnParentLabel, originFieldDependsOnParentPane); + JPanel p2 = createCenterFlowZeroGapBorderPane(parentFieldLabel, parentFieldPane); + JPanel border1 = new JPanel(); + border1.setLayout(new BorderLayout(0, 10)); + border1.add(p1, BorderLayout.NORTH); + border1.add(p2, BorderLayout.CENTER); + JPanel p4 = createCenterFlowZeroGapBorderPane(originFieldDependsOnLengthLabel, originFieldDependsOnLengthPane); + JPanel border2 = new JPanel(); + border2.setLayout(new BorderLayout(0, 20)); + border2.add(p4, BorderLayout.NORTH); + + JPanel xx = FRGUIPaneFactory.createBorderLayout_S_Pane(); + xx.add(parentMarkRadio, BorderLayout.NORTH); + xx.add(border1, BorderLayout.CENTER); + JPanel xxx = FRGUIPaneFactory.createBorderLayout_S_Pane(); + xxx.add(lengthMarkRadio, BorderLayout.NORTH); + xxx.add(border2, BorderLayout.CENTER); + JPanel buildTreePanel = new JPanel(new BorderLayout(5, 30)); + buildTreePanel.add(xx, BorderLayout.NORTH); + buildTreePanel.add(xxx, BorderLayout.CENTER); + centerPane.add(buildTreePanel, BorderLayout.NORTH); + JPanel previewPanel = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane(); + UIButton treeDataPreviewButton = new UIButton(Inter.getLocText("FR-Designer_Preview")); + previewPanel.add(treeDataPreviewButton); + treeDataPreviewButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + TableDataWrapper tableDataWrappe = tableDataNameComboBox.getSelectedItem(); + if (tableDataWrappe == null) { + return; + } + RecursionTableData rtd = new RecursionTableData(); + rtd.setOriginalTableDataName(tableDataWrappe.getTableDataName()); + if (isBuildByParentFiled()) { + Object o = parentFieldPane.update(); + rtd.setParentmarkFields((Integer) o - 1 + ""); + rtd.setParentmarkFieldName("" + o); + Object o2 = originFieldDependsOnParentPane.update(); + rtd.setMarkFields((Integer) o2 - 1 + ""); + rtd.setMarkFieldName("" + o2); + } else { + Object o = originFieldDependsOnLengthPane.update(); + if (o == null) { + rtd.setMarkFields("-1"); + } else { + rtd.setMarkFields((Integer) o - 1 + ""); + rtd.setMarkFieldName("" + o); + } + } + rtd.setTableDataSource(DesignTableDataManager.getEditingTableDataSource()); + rtd.createDataModel(Calculator.createCalculator()); + PreviewTablePane.previewTableData(rtd); + } + }); + centerPane.add(previewPanel, BorderLayout.CENTER); + } protected void setTableDataNameComboBox(String treeName) { - tableDataNameComboBox = new TableDataComboBox(DesignTableDataManager.getEditingTableDataSource(),treeName); + tableDataNameComboBox = new TableDataComboBox(DesignTableDataManager.getEditingTableDataSource(), treeName); } - private void tdChange(){ - TableDataWrapper tableDataWrappe = this.tableDataNameComboBox.getSelectedItem(); - if (tableDataWrappe == null) { - return; - } - ValueEditorPane[] valueEditorPanes; - if(isBuildByParentFiled()) { - valueEditorPanes = new ValueEditorPane[]{originalMarkedFieldPane1, parentMarkedFieldPane1}; - } else { - valueEditorPanes = new ValueEditorPane[]{originalMarkedFieldPane2}; - } - try { - List namelist = tableDataWrappe.calculateColumnNameList(); - int len = namelist.size(); - String[] columnNames = new String[len]; - namelist.toArray(columnNames); - for(int i = 0; i < valueEditorPanes.length; i ++) { - valueEditorPanes[i].setEditors(new Editor[] { new ColumnNameEditor(columnNames), new ColumnIndexEditor(len) }, columnNames[0]); - } - } catch (Exception e) { - for(int i = 0; i < valueEditorPanes.length; i ++) { - valueEditorPanes[i].setEditors(new Editor[] { new ColumnNameEditor(), new ColumnIndexEditor() }, 1); - } - } finally { - valueEditorPanes = null; - } - } - - @Override - protected String title4PopupWindow() { - return "TreeTableDataDictionay"; - } - - public RecursionTableData update() { - RecursionTableData td = new RecursionTableData(); - if(tableDataNameComboBox.getSelectedItem()==null){ - td.setOriginalTableDataName(null); - }else{ - td.setOriginalTableDataName(tableDataNameComboBox.getSelectedItem().getTableDataName()); - } - if(isBuildByParentFiled()) { - Object o = parentMarkedFieldPane1.update(StringUtils.EMPTY); - if(o instanceof Object[]){ - Object[] temp = (Object[]) o; - td.setParentmarkFields(((Integer)temp[0]).intValue() - 1 + ""); - td.setParentmarkFieldName((String) temp[1]); - } - Object o2 = originalMarkedFieldPane1.update(StringUtils.EMPTY); - if(o2 instanceof Object[]){ - Object[] temp = (Object[]) o2; - td.setMarkFields(((Integer)temp[0]).intValue() - 1 + ""); - td.setMarkFieldName((String) temp[1]); - } - } else { - Object o = originalMarkedFieldPane2.update(StringUtils.EMPTY); - if(o == null || !(o instanceof Object[])){ - td.setMarkFields("-1"); - } else { - Object[] temp = (Object[]) o; - td.setMarkFields(((Integer)temp[0]).intValue() - 1 + ""); - td.setMarkFieldName((String) temp[1]); - } - } - td.setTableDataSource(DesignTableDataManager.getEditingTableDataSource()); - return td; - } - - public void populate(RecursionTableData rtb) { - if(StringUtils.isNotEmpty(rtb.getParentmarkFields())) { - makeParentEnable(); - parentMarkRadio.setSelected(true); - lengthMarkRadio.setSelected(false); - tableDataNameComboBox.setSelectedTableDataByName(rtb.getOriginalTableDataName()); - if(StringUtils.isNotEmpty(rtb.getMarkFieldName())){ - originalMarkedFieldPane1.populate(rtb.getMarkFieldName()); - }else{ - originalMarkedFieldPane1.populate(rtb.getMarkFieldIndex() + 1); - } - if(StringUtils.isNotEmpty(rtb.getParentmarkFieldName())){ - parentMarkedFieldPane1.populate(rtb.getParentmarkFieldName()); - }else{ - parentMarkedFieldPane1.populate(rtb.getParentmarkFieldIndex() + 1); - } - } else { - makeLengthEnable(); - lengthMarkRadio.setSelected(true); - parentMarkRadio.setSelected(false); - tableDataNameComboBox.setSelectedTableDataByName(rtb.getOriginalTableDataName()); - if(StringUtils.isNotEmpty(rtb.getMarkFieldName())){ - originalMarkedFieldPane2.populate(rtb.getMarkFieldName()); - }else{ - originalMarkedFieldPane2.populate(rtb.getMarkFieldIndex() + 1); - } - } - } + private void tdChange() { + TableDataWrapper tableDataWrappe = this.tableDataNameComboBox.getSelectedItem(); + if (tableDataWrappe == null) { + return; + } + ValueEditorPane[] valueEditorPanes; + if (isBuildByParentFiled()) { + valueEditorPanes = new ValueEditorPane[]{originFieldDependsOnParentPane, parentFieldPane}; + } else { + valueEditorPanes = new ValueEditorPane[]{originFieldDependsOnLengthPane}; + } + try { + List namelist = tableDataWrappe.calculateColumnNameList(); + int len = namelist.size(); + String[] columnNames = new String[len]; + namelist.toArray(columnNames); + for (int i = 0; i < valueEditorPanes.length; i++) { + valueEditorPanes[i].setEditors(new Editor[]{new ColumnNameEditor(columnNames), new ColumnIndexEditor(len)}, columnNames[0]); + } + } catch (Exception e) { + for (int i = 0; i < valueEditorPanes.length; i++) { + valueEditorPanes[i].setEditors(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor()}, 1); + } + } finally { + valueEditorPanes = null; + } + } + + @Override + protected String title4PopupWindow() { + return "TreeTableDataDictionay"; + } + + public RecursionTableData update() { + RecursionTableData td = new RecursionTableData(); + if (tableDataNameComboBox.getSelectedItem() == null) { + td.setOriginalTableDataName(null); + } else { + td.setOriginalTableDataName(tableDataNameComboBox.getSelectedItem().getTableDataName()); + } + if (isBuildByParentFiled()) { + Object o = parentFieldPane.update(StringUtils.EMPTY); + if (o instanceof Object[]) { + Object[] temp = (Object[]) o; + td.setParentmarkFields((Integer) temp[0] - 1 + ""); + td.setParentmarkFieldName((String) temp[1]); + } + Object o2 = originFieldDependsOnParentPane.update(StringUtils.EMPTY); + if (o2 instanceof Object[]) { + Object[] temp = (Object[]) o2; + td.setMarkFields((Integer) temp[0] - 1 + ""); + td.setMarkFieldName((String) temp[1]); + } + } else { + Object o = originFieldDependsOnLengthPane.update(StringUtils.EMPTY); + if (o == null || !(o instanceof Object[])) { + td.setMarkFields("-1"); + } else { + Object[] temp = (Object[]) o; + td.setMarkFields((Integer) temp[0] - 1 + ""); + td.setMarkFieldName((String) temp[1]); + } + } + td.setTableDataSource(DesignTableDataManager.getEditingTableDataSource()); + return td; + } + + public void populate(RecursionTableData rtb) { + if (StringUtils.isNotEmpty(rtb.getParentmarkFields())) { + makeParentEnable(); + parentMarkRadio.setSelected(true); + lengthMarkRadio.setSelected(false); + tableDataNameComboBox.setSelectedTableDataByName(rtb.getOriginalTableDataName()); + if (StringUtils.isNotEmpty(rtb.getMarkFieldName())) { + originFieldDependsOnParentPane.populate(rtb.getMarkFieldName()); + } else { + originFieldDependsOnParentPane.populate(rtb.getMarkFieldIndex() + 1); + } + if (StringUtils.isNotEmpty(rtb.getParentmarkFieldName())) { + parentFieldPane.populate(rtb.getParentmarkFieldName()); + } else { + parentFieldPane.populate(rtb.getParentmarkFieldIndex() + 1); + } + } else { + makeLengthEnable(); + lengthMarkRadio.setSelected(true); + parentMarkRadio.setSelected(false); + tableDataNameComboBox.setSelectedTableDataByName(rtb.getOriginalTableDataName()); + if (StringUtils.isNotEmpty(rtb.getMarkFieldName())) { + originFieldDependsOnLengthPane.populate(rtb.getMarkFieldName()); + } else { + originFieldDependsOnLengthPane.populate(rtb.getMarkFieldIndex() + 1); + } + } + } /** * */ - public void preview() { - TableDataWrapper tableDataWrappe = tableDataNameComboBox.getSelectedItem(); - if (tableDataWrappe == null) { - return; - } - tableDataWrappe.previewData(); - } - - private JPanel createCenterFlowZeroGapBorderPane(Component p1, Component p2) { - JPanel p = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - p.add(p1); - p.add(p2); - return p; - } - - private boolean isBuildByParentFiled() { - return parentMarkRadio.isSelected(); - } - - private void makeParentEnable() { - originalMarkedFieldPane1.setEnabled(true); - parentMarkedFieldPane1.setEnabled(true); - originalMarkedFieldLabel1.setEnabled(true); - parentMarkedFieldLabel1.setEnabled(true); - treeDataFieldLabel1.setEnabled(true); - originalMarkedFieldLabel2.setEnabled(false); - treeDataFieldLabel2.setEnabled(false); - originalMarkedFieldPane2.setEnabled(false); - } - - private void makeLengthEnable() { - originalMarkedFieldPane1.setEnabled(false); - parentMarkedFieldPane1.setEnabled(false); - originalMarkedFieldLabel1.setEnabled(false); - parentMarkedFieldLabel1.setEnabled(false); - treeDataFieldLabel1.setEnabled(false); - originalMarkedFieldLabel2.setEnabled(true); - treeDataFieldLabel2.setEnabled(true); - originalMarkedFieldPane2.setEnabled(true); - } + public void preview() { + TableDataWrapper tableDataWrappe = tableDataNameComboBox.getSelectedItem(); + if (tableDataWrappe == null) { + return; + } + tableDataWrappe.previewData(); + } + + private JPanel createCenterFlowZeroGapBorderPane(Component p1, Component p2) { + JPanel p = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + p.add(p1); + p.add(p2); + return p; + } + + private boolean isBuildByParentFiled() { + return parentMarkRadio.isSelected(); + } + + private void makeParentEnable() { + originFieldDependsOnParentPane.setEnabled(true); + parentFieldPane.setEnabled(true); + originFieldDependsOnParentLabel.setEnabled(true); + parentFieldLabel.setEnabled(true); + treeDataFieldLabel1.setEnabled(true); + originFieldDependsOnLengthLabel.setEnabled(false); + treeDataFieldLabel2.setEnabled(false); + originFieldDependsOnLengthPane.setEnabled(false); + } + + private void makeLengthEnable() { + originFieldDependsOnParentPane.setEnabled(false); + parentFieldPane.setEnabled(false); + originFieldDependsOnParentLabel.setEnabled(false); + parentFieldLabel.setEnabled(false); + treeDataFieldLabel1.setEnabled(false); + originFieldDependsOnLengthLabel.setEnabled(true); + treeDataFieldLabel2.setEnabled(true); + originFieldDependsOnLengthPane.setEnabled(true); + } } \ No newline at end of file diff --git a/designer/src/com/fr/design/mainframe/bbs/LoginDialog.java b/designer_base/src/com/fr/design/extra/LoginDialog.java similarity index 59% rename from designer/src/com/fr/design/mainframe/bbs/LoginDialog.java rename to designer_base/src/com/fr/design/extra/LoginDialog.java index e3013e4877..32d4dca030 100644 --- a/designer/src/com/fr/design/mainframe/bbs/LoginDialog.java +++ b/designer_base/src/com/fr/design/extra/LoginDialog.java @@ -1,32 +1,29 @@ -package com.fr.design.mainframe.bbs; +package com.fr.design.extra; -import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.UIDialog; import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.general.Inter; -import com.fr.general.SiteCenter; -import com.fr.general.http.HttpClient; -import com.fr.stable.StringUtils; +import com.fr.stable.StableUtils; import javax.swing.*; import java.awt.*; /** - * Created by zhaohehe on 16/7/26. + * Created by vito on 2017/5/5. */ public class LoginDialog extends UIDialog { private static final Dimension DEFAULT_SHOP = new Dimension(401, 201); - - public LoginDialog(Frame frame, BasicPane pane) { + + public LoginDialog(Frame frame, Component pane) { super(frame); - setUndecorated(true); + if (StableUtils.getMajorJavaVersion() == 8) { + setUndecorated(true); + } JPanel panel = (JPanel) getContentPane(); panel.setLayout(new BorderLayout()); add(pane, BorderLayout.CENTER); setSize(DEFAULT_SHOP); GUICoreUtils.centerWindow(this); setResizable(false); - setTitle(Inter.getLocText("FR-Designer-Plugin_Manager")); } @Override diff --git a/designer_base/src/com/fr/design/extra/LoginPane.java b/designer_base/src/com/fr/design/extra/LoginPane.java deleted file mode 100644 index 41a2ce8ce4..0000000000 --- a/designer_base/src/com/fr/design/extra/LoginPane.java +++ /dev/null @@ -1,152 +0,0 @@ -package com.fr.design.extra; - -import com.fr.base.FRContext; -import com.fr.design.DesignerEnvManager; -import com.fr.design.RestartHelper; -import com.fr.design.dialog.BasicPane; -import com.fr.design.gui.frpane.UITabbedPane; -import com.fr.general.ComparatorUtils; -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.PluginVerifyException; -import com.fr.stable.StableUtils; - -import javax.swing.*; -import java.awt.*; -import java.io.File; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.concurrent.ExecutionException; - -/** - * Created by zhaohehe on 16/7/27. - */ -public class LoginPane extends BasicPane { - private static final String LATEST = "latest"; - - public LoginPane() { - setLayout(new BorderLayout()); - if (StableUtils.getMajorJavaVersion() == 8) { - String installHome; - if (StableUtils.isDebug()) { - URL url = ClassLoader.getSystemResource(""); - installHome = url.getPath(); - addPane(installHome); - } else { - installHome = StableUtils.getInstallHome(); - File file = new File(StableUtils.pathJoin(installHome, "scripts")); - if (!file.exists()) { - int rv = JOptionPane.showConfirmDialog( - this, - Inter.getLocText("FR-Designer-Plugin_Shop_Need_Install"), - Inter.getLocText("FR-Designer-Plugin_Warning"), - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.INFORMATION_MESSAGE - ); - if (rv == JOptionPane.OK_OPTION) { - downloadShopScripts(); - } - } else { - addPane(installHome); - updateShopScripts(); - } - } - } else { - initTraditionalStore(); - } - } - - private void addPane(String installHome) { - LoginWebPane webPane = new LoginWebPane(new File(installHome).getAbsolutePath(),LoginPane.this); - add(webPane, BorderLayout.CENTER); - } - - @Override - protected String title4PopupWindow() { - return Inter.getLocText("FR-Designer-Plugin_Manager"); - } - - private void downloadShopScripts() { - new SwingWorker() { - @Override - protected Boolean doInBackground() throws Exception { - String id = "shop_scripts"; - String username = DesignerEnvManager.getEnvManager().getBBSName(); - String password = DesignerEnvManager.getEnvManager().getBBSPassword(); - try { - PluginHelper.downloadPluginFile(id, username, password, new Process() { - @Override - public void process(Double integer) { - } - }); - } catch (PluginVerifyException e) { - JOptionPane.showMessageDialog(LoginPane.this, e.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); - return false; - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); - return false; - } - return true; - } - - @Override - protected void done() { - try { - if (get()) { - IOUtils.unzip(new File(StableUtils.pathJoin(PluginHelper.DOWNLOAD_PATH, PluginHelper.TEMP_FILE)), StableUtils.getInstallHome()); - int rv = JOptionPane.showOptionDialog( - LoginPane.this, - Inter.getLocText("FR-Designer-Plugin_Shop_Installed"), - Inter.getLocText("FR-Designer-Plugin_Warning"), - JOptionPane.YES_NO_OPTION, - JOptionPane.INFORMATION_MESSAGE, - null, - new String[]{Inter.getLocText("FR-Designer-Basic_Restart_Designer"), Inter.getLocText("FR-Designer-Basic_Restart_Designer_Later")}, - null - ); - if (rv == JOptionPane.OK_OPTION) { - RestartHelper.restart(); - } - } - } catch (InterruptedException | ExecutionException e) { - FRContext.getLogger().error(e.getMessage(), e); - } - } - }.execute(); - } - - private void updateShopScripts() { - new SwingWorker() { - @Override - protected Void doInBackground() throws Exception { - HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("store.version") + "&version=" + PluginStoreConstants.VERSION); - if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { - if (!ComparatorUtils.equals(httpClient.getResponseText(), LATEST)) { - int rv = JOptionPane.showConfirmDialog( - LoginPane.this, - Inter.getLocText("FR-Designer-Plugin_Shop_Need_Update"), - Inter.getLocText("FR-Designer-Plugin_Warning"), - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.INFORMATION_MESSAGE - ); - if (rv == JOptionPane.OK_OPTION) { - downloadShopScripts(); - } - } - } - return null; - } - }.execute(); - } - - private void initTraditionalStore() { - UITabbedPane tabbedPane = new UITabbedPane(); - add(tabbedPane, BorderLayout.CENTER); - PluginInstalledPane installedPane = new PluginInstalledPane(); - tabbedPane.addTab(installedPane.tabTitle(), installedPane); - tabbedPane.addTab(Inter.getLocText("FR-Designer-Plugin_Update"), new PluginUpdatePane(tabbedPane)); - tabbedPane.addTab(Inter.getLocText("FR-Designer-Plugin_All_Plugins"), new PluginFromStorePane(tabbedPane)); - } -} \ No newline at end of file diff --git a/designer_base/src/com/fr/design/extra/LoginWebBridge.java b/designer_base/src/com/fr/design/extra/LoginWebBridge.java index 41ed99beb9..5a23734fcc 100644 --- a/designer_base/src/com/fr/design/extra/LoginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/LoginWebBridge.java @@ -6,7 +6,7 @@ import com.fr.design.dialog.UIDialog; import com.fr.design.extra.ucenter.Client; import com.fr.design.extra.ucenter.XMLHelper; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.mainframe.DesignerContext; +import com.fr.general.ComparatorUtils; import com.fr.general.SiteCenter; import com.fr.general.http.HttpClient; import com.fr.json.JSONObject; @@ -14,10 +14,10 @@ import com.fr.stable.EncodeConstants; import com.fr.stable.StringUtils; import javafx.scene.web.WebEngine; -import java.io.UnsupportedEncodingException; -import java.net.URI; import javax.swing.*; import java.awt.*; +import java.io.UnsupportedEncodingException; +import java.net.URI; import java.net.URLEncoder; import java.util.HashMap; import java.util.LinkedList; @@ -47,50 +47,48 @@ public class LoginWebBridge { //用户名,密码为空 private static final String LOGIN_INFO_EMPTY = "-5"; private static final int TIME_OUT = 10000; + private static final String LOGIN_SUCCESS = "ok"; + private static final String LOGIN_FAILED = "failed"; - private static com.fr.design.extra.LoginWebBridge helper; + private static LoginWebBridge helper; + private UILabel pluginuiLabel; private UIDialog uiDialog; + private UIDialog qqDialog; private UILabel uiLabel; private String userName; - public int getMessageCount() { - return messageCount; - } - - /** - * 测试论坛网络连接 - * @return - */ - private boolean testConnection() { - HttpClient client = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.test")); - return client.isServerAlive(); + public LoginWebBridge() { + String username = DesignerEnvManager.getEnvManager().getBBSName(); + setUserName(username, uiLabel); } - public static com.fr.design.extra.LoginWebBridge getHelper() { + public static LoginWebBridge getHelper() { if (helper != null) { return helper; } - synchronized (com.fr.design.extra.LoginWebBridge.class) { + synchronized (LoginWebBridge.class) { if (helper == null) { - helper = new com.fr.design.extra.LoginWebBridge(); + helper = new LoginWebBridge(); } return helper; } } - public static com.fr.design.extra.LoginWebBridge getHelper(WebEngine webEngine) { - getHelper(); - helper.setEngine(webEngine); - return helper; + public int getMessageCount() { + return messageCount; } - private WebEngine webEngine; + public void setUILabelInPlugin(UILabel uiLabel) { + this.pluginuiLabel = uiLabel; + } - public void setEngine(WebEngine webEngine) { - this.webEngine = webEngine; + public void setQqDialog(UIDialog qqDialog) { + closeQQWindow(); + this.qqDialog = qqDialog; } public void setDialogHandle(UIDialog uiDialog) { + closeWindow(); this.uiDialog = uiDialog; } @@ -98,57 +96,58 @@ public class LoginWebBridge { this.uiLabel = uiLabel; } - public LoginWebBridge() { - String username = DesignerEnvManager.getEnvManager().getBBSName(); - setUserName(username, uiLabel); - } - /** * 设置显示的用户名 + * * @param userName 登录用户名 - * @param label label显示 + * @param label label显示 */ public void setUserName(String userName, UILabel label) { if (uiLabel == null) { this.uiLabel = label; } - if(StringUtils.isEmpty(userName)){ + if (StringUtils.isEmpty(userName)) { return; } - if(!StringUtils.isEmpty(this.userName)){ - updateMessageCount(); - } this.userName = userName; } + /** + * 测试论坛网络连接 + * + * @return + */ + private boolean testConnection() { + HttpClient client = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.test")); + return client.isServerAlive(); + } + /** * 定时取后台论坛消息 */ - public void updateMessageCount(){ + public void updateMessageCount() { //启动获取消息更新的线程 //登陆状态, 根据存起来的用户名密码, 每1分钟发起一次请求, 更新消息条数. Thread updateMessageThread = new Thread(new Runnable() { @Override public void run() { sleep(CHECK_MESSAGE_TIME); - while(StringUtils.isNotEmpty(DesignerEnvManager.getEnvManager().getBBSName())){ + while (StringUtils.isNotEmpty(DesignerEnvManager.getEnvManager().getBBSName())) { HashMap para = new HashMap<>(); int uid = DesignerEnvManager.getEnvManager().getBbsUid(); para.put("uid", String.valueOf(uid)); HttpClient getMessage = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.message"), para); getMessage.asGet(); - if(getMessage.isServerAlive()){ + if (getMessage.isServerAlive()) { try { String res = getMessage.getResponseText(); - if (res.equals(FAILED_MESSAGE_STATUS)) { - }else { + if (!ComparatorUtils.equals(res, FAILED_MESSAGE_STATUS)) { JSONObject jo = new JSONObject(res); - if (jo.getString("status").equals(SUCCESS_MESSAGE_STATUS)) { + if (SUCCESS_MESSAGE_STATUS.equals(jo.optString("status"))) { setMessageCount(Integer.parseInt(jo.getString("message"))); } } - } catch (Exception e) { - FRContext.getLogger().info(e.getMessage()); + } catch (Exception ignore) { } } sleep(CHECK_MESSAGE_TIME); @@ -160,6 +159,7 @@ public class LoginWebBridge { /** * 设置获取的消息长度,并设置显示 + * * @param count */ public void setMessageCount(int count) { @@ -177,7 +177,7 @@ public class LoginWebBridge { uiLabel.setText(sb.toString()); } - private String encode(String str){ + private String encode(String str) { try { return URLEncoder.encode(str, EncodeConstants.ENCODING_UTF_8); } catch (UnsupportedEncodingException e) { @@ -185,7 +185,7 @@ public class LoginWebBridge { } } - private void sleep(long millis){ + private void sleep(long millis) { try { Thread.sleep(millis); } catch (InterruptedException e) { @@ -199,7 +199,7 @@ public class LoginWebBridge { public void registerHref() { try { Desktop.getDesktop().browse(new URI(SiteCenter.getInstance().acquireUrlByKind("bbs.register"))); - }catch (Exception e) { + } catch (Exception e) { FRContext.getLogger().info(e.getMessage()); } } @@ -210,13 +210,14 @@ public class LoginWebBridge { public void forgetHref() { try { Desktop.getDesktop().browse(new URI(SiteCenter.getInstance().acquireUrlByKind("bbs.reset"))); - }catch (Exception e) { + } catch (Exception e) { FRContext.getLogger().info(e.getMessage()); } } /** * 设计器端的用户登录 + * * @param username 用户名 * @param password 密码 * @return 登录信息标志 @@ -227,9 +228,10 @@ public class LoginWebBridge { /** * 插件管理的用户登录部分 + * * @param username 用户名 * @param password 密码 - * @param uiLabel 设计器端的label + * @param uiLabel 设计器端的label * @return 登录信息标志 */ public String pluginManageLogin(String username, String password, UILabel uiLabel) { @@ -238,9 +240,10 @@ public class LoginWebBridge { /** * 登录操作 + * * @param username 用户名 * @param password 密码 - * @param uiLabel 两边的label显示 + * @param uiLabel 两边的label显示 * @return 登录信息标志 */ public String login(String username, String password, UILabel uiLabel) { @@ -271,8 +274,8 @@ public class LoginWebBridge { /** * 更新后台的用户信息 + * * @param username 用户名 - * @param password 密码 */ public void updateUserInfo(String username) { this.userName = username; @@ -280,6 +283,7 @@ public class LoginWebBridge { /** * 关闭窗口并且重新赋值 + * * @param username */ public void loginSuccess(String username, UILabel uiLabel) { @@ -294,13 +298,7 @@ public class LoginWebBridge { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { - //弹出qq登录的窗口 - QQLoginPane managerPane = new QQLoginPane(); - UIDialog qqlog = new QQLoginDialog(DesignerContext.getDesignerFrame(),managerPane); - QQLoginWebBridge.getHelper().setDialogHandle(uiDialog); - QQLoginWebBridge.getHelper().setQQDialogHandle(qqlog); - QQLoginWebBridge.getHelper().setUILabel(uiLabel); - qqlog.setVisible(true); + WebViewDlgHelper.createQQLoginDialog(); } }); } @@ -326,12 +324,55 @@ public class LoginWebBridge { } else { return UNKNOWN_ERROR;//未知错误,-3 } - }else { + } else { return NET_FAILED; } - }catch (Exception e) { + } catch (Exception e) { FRContext.getLogger().info(e.getMessage()); } return UNKNOWN_ERROR; } + + /** + * 关闭QQ授权窗口 + */ + public void closeQQWindow() { + if (qqDialog != null) { + qqDialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); + qqDialog.setVisible(false); + } + } + + /** + * 获取用户信息 + * + * @param userInfo + */ + public void getLoginInfo(String userInfo) { + org.json.JSONObject jo = new org.json.JSONObject(userInfo); + String status = jo.get("status").toString(); + if (status.equals(LOGIN_SUCCESS)) { + String username = jo.get("username").toString(); + int uid = Integer.parseInt(jo.get("uid") == null ? "" : jo.get("uid").toString()); + closeWindow(); + closeQQWindow(); + pluginuiLabel.setText(username); + DesignerEnvManager.getEnvManager().setBBSName(username); + DesignerEnvManager.getEnvManager().setBbsUid(uid); + DesignerEnvManager.getEnvManager().setInShowBBsName(username); + } else if (status.equals(LOGIN_FAILED)) { + //账号没有QQ授权 + closeQQWindow(); + try { + Desktop.getDesktop().browse(new URI(SiteCenter.getInstance().acquireUrlByKind("QQ_binding"))); + } catch (Exception exp) { + } + } + } + + public void openUrlAtLocalWebBrowser(WebEngine eng, String url) { + if (url.indexOf("qqLogin.html") > 0) { + return; + } + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/extra/LoginWebPane.java b/designer_base/src/com/fr/design/extra/LoginWebPane.java index b49db6ace7..ee0a3275aa 100644 --- a/designer_base/src/com/fr/design/extra/LoginWebPane.java +++ b/designer_base/src/com/fr/design/extra/LoginWebPane.java @@ -17,11 +17,7 @@ import javax.swing.*; */ public class LoginWebPane extends JFXPanel { - private WebEngine webEngine; - private LoginPane loginPane; - - public LoginWebPane(final String installHome,LoginPane loginPane) { - this.loginPane = loginPane; + public LoginWebPane(final String installHome) { Platform.setImplicitExit(false); Platform.runLater(new Runnable() { @Override @@ -30,7 +26,7 @@ public class LoginWebPane extends JFXPanel { Scene scene = new Scene(root); LoginWebPane.this.setScene(scene); WebView webView = new WebView(); - webEngine = webView.getEngine(); + WebEngine webEngine = webView.getEngine(); webEngine.load("file:///" + installHome + "/scripts/qqLogin/web/login.html"); webEngine.setOnAlert(new EventHandler>() { @Override @@ -39,17 +35,13 @@ public class LoginWebPane extends JFXPanel { } }); JSObject obj = (JSObject) webEngine.executeScript("window"); - obj.setMember("LoginHelper", LoginWebBridge.getHelper(webEngine)); + obj.setMember("LoginHelper", LoginWebBridge.getHelper()); webView.setContextMenuEnabled(false);//屏蔽右键 root.setCenter(webView); } }); } - public void setEngine(WebEngine webEngine) { - this.webEngine = webEngine; - } - private void showAlert(final String message) { SwingUtilities.invokeLater(new Runnable() { @Override diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 5180af88f1..1230cbfae6 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -8,7 +8,6 @@ import com.fr.general.*; import com.fr.general.http.HttpClient; import com.fr.plugin.Plugin; import com.fr.plugin.PluginConfigManager; -import com.fr.stable.plugin.PluginConstants; import com.fr.plugin.PluginLoader; import com.fr.plugin.PluginManagerHelper; import com.fr.plugin.dependence.PluginDependence; @@ -18,11 +17,15 @@ import com.fr.stable.ArrayUtils; 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.*; +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; @@ -42,6 +45,7 @@ public class PluginHelper { 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"; + /** * 下载插件 @@ -337,9 +341,11 @@ public class PluginHelper { * @return 当前插件比老的插件版本高则返回true,否则返回false */ public static boolean isNewThan(Plugin plugin, Plugin oldPlugin) { - return ComparatorUtils.compare(plugin.getVersion(), oldPlugin.getVersion()) >= 0; + + return plugin.versionCompareTo(oldPlugin) >= 0; } - + + private static String sendInstalledPluginInfo(final Plugin plugin) { if (StableUtils.isDebug()) { return "debug status"; diff --git a/designer_base/src/com/fr/design/extra/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index 12c3e85c41..f1759f016b 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/PluginWebBridge.java @@ -136,6 +136,7 @@ public class PluginWebBridge { } public void setDialogHandle(UIDialog uiDialog) { + closeWindow(); this.uiDialog = uiDialog; } @@ -367,6 +368,7 @@ public class PluginWebBridge { /** * 获取系统登录的用户名 + * * @param callback */ public void getLoginInfo(final JSObject callback) { @@ -381,7 +383,7 @@ public class PluginWebBridge { try { String loginUrl = SiteCenter.getInstance().acquireUrlByKind("bbs.default"); Desktop.getDesktop().browse(new URI(loginUrl)); - }catch (Exception exp) { + } catch (Exception exp) { FRContext.getLogger().info(exp.getMessage()); } } @@ -493,13 +495,14 @@ public class PluginWebBridge { /*-------------------------------登录部分的处理----------------------------------*/ + /** * 注册页面 */ public void registerHref() { try { Desktop.getDesktop().browse(new URI(SiteCenter.getInstance().acquireUrlByKind("bbs.register"))); - }catch (Exception e) { + } catch (Exception e) { FRContext.getLogger().info(e.getMessage()); } } @@ -510,7 +513,7 @@ public class PluginWebBridge { public void forgetHref() { try { Desktop.getDesktop().browse(new URI(SiteCenter.getInstance().acquireUrlByKind("bbs.reset"))); - }catch (Exception e) { + } catch (Exception e) { FRContext.getLogger().info(e.getMessage()); } } @@ -521,6 +524,7 @@ public class PluginWebBridge { /** * 登录操作的回调 + * * @param username * @param password * @return diff --git a/designer_base/src/com/fr/design/extra/QQLoginDialog.java b/designer_base/src/com/fr/design/extra/QQLoginDialog.java index 1a64161741..71224c3a8d 100644 --- a/designer_base/src/com/fr/design/extra/QQLoginDialog.java +++ b/designer_base/src/com/fr/design/extra/QQLoginDialog.java @@ -1,6 +1,5 @@ package com.fr.design.extra; -import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.UIDialog; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; @@ -14,7 +13,7 @@ import java.awt.*; public class QQLoginDialog extends UIDialog { private static final Dimension DEFAULT_SHOP = new Dimension(700, 500); - public QQLoginDialog(Frame frame, BasicPane pane) { + public QQLoginDialog(Frame frame, Component pane) { super(frame); setUndecorated(true); JPanel panel = (JPanel) getContentPane(); @@ -24,7 +23,6 @@ public class QQLoginDialog extends UIDialog { GUICoreUtils.centerWindow(this); setResizable(false); setTitle(Inter.getLocText("FR-Designer-Plugin_Manager")); - } @Override diff --git a/designer_base/src/com/fr/design/extra/QQLoginPane.java b/designer_base/src/com/fr/design/extra/QQLoginPane.java deleted file mode 100644 index 2bbdd7e539..0000000000 --- a/designer_base/src/com/fr/design/extra/QQLoginPane.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.fr.design.extra; - -import com.fr.base.FRContext; -import com.fr.design.DesignerEnvManager; -import com.fr.design.RestartHelper; -import com.fr.design.dialog.BasicPane; -import com.fr.general.ComparatorUtils; -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.PluginVerifyException; -import com.fr.stable.StableUtils; - -import javax.swing.*; -import java.awt.*; -import java.io.File; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.concurrent.ExecutionException; - -/** - * Created by zhaohehe on 16/7/28. - */ -public class QQLoginPane extends BasicPane { - private static final String LATEST = "latest"; - - public QQLoginPane() { - setLayout(new BorderLayout()); - if (StableUtils.getMajorJavaVersion() == 8) { - String installHome; - if (StableUtils.isDebug()) { - URL url = ClassLoader.getSystemResource(""); - installHome = url.getPath(); - addPane(installHome); - } else { - installHome = StableUtils.getInstallHome(); - File file = new File(StableUtils.pathJoin(installHome, "scripts")); - if (!file.exists()) { - int rv = JOptionPane.showConfirmDialog( - this, - Inter.getLocText("FR-Designer-Plugin_Shop_Need_Install"), - Inter.getLocText("FR-Designer-Plugin_Warning"), - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.INFORMATION_MESSAGE - ); - if (rv == JOptionPane.OK_OPTION) { - downloadShopScripts(); - } - } else { - addPane(installHome); - updateShopScripts(); - } - } - } else { - } - } - - private void addPane(String installHome) { - QQLoginWebPane webPane = new QQLoginWebPane(new File(installHome).getAbsolutePath()); - add(webPane, BorderLayout.CENTER); - } - - - @Override - protected String title4PopupWindow() { - return Inter.getLocText("FR-Designer-Plugin_Manager"); - } - - - private void downloadShopScripts() { - new SwingWorker() { - @Override - protected Boolean doInBackground() throws Exception { - String id = "shop_scripts"; - String username = DesignerEnvManager.getEnvManager().getBBSName(); - String password = DesignerEnvManager.getEnvManager().getBBSPassword(); - try { - PluginHelper.downloadPluginFile(id, username, password, new Process() { - @Override - public void process(Double integer) { - } - }); - } catch (PluginVerifyException e) { - JOptionPane.showMessageDialog(QQLoginPane.this, e.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); - return false; - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); - return false; - } - return true; - } - - @Override - protected void done() { - - try { - if (get()) { - IOUtils.unzip(new File(StableUtils.pathJoin(PluginHelper.DOWNLOAD_PATH, PluginHelper.TEMP_FILE)), StableUtils.getInstallHome()); - int rv = JOptionPane.showOptionDialog( - QQLoginPane.this, - Inter.getLocText("FR-Designer-Plugin_Shop_Installed"), - Inter.getLocText("FR-Designer-Plugin_Warning"), - JOptionPane.YES_NO_OPTION, - JOptionPane.INFORMATION_MESSAGE, - null, - new String[]{Inter.getLocText("FR-Designer-Basic_Restart_Designer"), Inter.getLocText("FR-Designer-Basic_Restart_Designer_Later")}, - null - ); - if (rv == JOptionPane.OK_OPTION) { - RestartHelper.restart(); - } - } - } catch (InterruptedException | ExecutionException e) { - FRContext.getLogger().error(e.getMessage(), e); - } - - } - }.execute(); - } - - private void updateShopScripts() { - new SwingWorker() { - @Override - protected Void doInBackground() throws Exception { - HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("store.version") + "&version=" + PluginStoreConstants.VERSION); - if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { - if (!ComparatorUtils.equals(httpClient.getResponseText(), LATEST)) { - int rv = JOptionPane.showConfirmDialog( - QQLoginPane.this, - Inter.getLocText("FR-Designer-Plugin_Shop_Need_Update"), - Inter.getLocText("FR-Designer-Plugin_Warning"), - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.INFORMATION_MESSAGE - ); - if (rv == JOptionPane.OK_OPTION) { - downloadShopScripts(); - } - } - } - return null; - } - }.execute(); - } -} \ No newline at end of file diff --git a/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java b/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java deleted file mode 100644 index d0bcc27e12..0000000000 --- a/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.fr.design.extra; - -import com.fr.design.DesignerEnvManager; -import com.fr.design.dialog.UIDialog; -import com.fr.design.gui.ilable.UILabel; -import com.fr.general.FRLogger; -import com.fr.general.SiteCenter; -import javafx.scene.web.WebEngine; -import org.json.JSONObject; -import netscape.javascript.JSObject; - -import javax.swing.*; -import java.awt.*; -import java.io.IOException; -import java.net.URI; - -/** - * Created by lp on 2016/8/10. - */ -public class QQLoginWebBridge { - - private static com.fr.design.extra.QQLoginWebBridge helper; - private WebEngine webEngine; - private static String LOGINSUCCESS = "ok"; - private static String LOGINFAILED = "failed"; - private UIDialog uiDialog; - private UILabel uiLabel; - private UILabel pluginuiLabel; - private UIDialog qqDialog; - private String username; - - - private QQLoginWebBridge() { - } - - public static com.fr.design.extra.QQLoginWebBridge getHelper() { - if (helper != null) { - return helper; - } - synchronized (com.fr.design.extra.QQLoginWebBridge.class) { - if (helper == null) { - helper = new com.fr.design.extra.QQLoginWebBridge(); - } - return helper; - } - } - - public void setEngine(WebEngine webEngine) { - this.webEngine = webEngine; - } - - public void setDialogHandle(UIDialog uiDialog) { - this.uiDialog = uiDialog; - } - - public void setQQDialogHandle(UIDialog uiDialog) { - this.qqDialog = uiDialog; - } - - public void setUILabel(UILabel uiLabel) { - this.uiLabel = uiLabel; - } - - public void setUILabelInPlugin(UILabel uiLabel) { - this.pluginuiLabel = uiLabel; - } - - public void setLoginlabel() { - username = DesignerEnvManager.getEnvManager().getBBSName(); - } - - private static JSObject window; - - public static com.fr.design.extra.QQLoginWebBridge getHelper(WebEngine webEngine) { - getHelper(); - helper.setEngine(webEngine); - return helper; - } - - /** - * 关闭QQ授权窗口 - */ - public void closeQQWindow() { - if (qqDialog != null) { - qqDialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); - qqDialog.setVisible(false); - } - } - - /** - * 关闭父窗口 - */ - public void closeParentWindow() { - if (uiDialog != null) { - uiDialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); - uiDialog.setVisible(false); - } - } - - /** - * 获取用户信息 - * @param userInfo - */ - public void getLoginInfo(String userInfo) { - JSONObject jo = new JSONObject(userInfo); - String status = jo.get("status").toString(); - if (status.equals(LOGINSUCCESS)) { - String username = jo.get("username").toString(); - int uid = Integer.parseInt(jo.get("uid") == null ? "" : jo.get("uid").toString()); - closeQQWindow(); - closeParentWindow(); - pluginuiLabel.setText(username); - DesignerEnvManager.getEnvManager().setBBSName(username); - DesignerEnvManager.getEnvManager().setBbsUid(uid); - DesignerEnvManager.getEnvManager().setInShowBBsName(username); - }else if (status.equals(LOGINFAILED)){ - //账号没有QQ授权 - closeQQWindow(); - try { - Desktop.getDesktop().browse(new URI(SiteCenter.getInstance().acquireUrlByKind("QQ_binding"))); - }catch (Exception exp) { - } - } - } - - public void openUrlAtLocalWebBrowser(WebEngine eng, String url) { - if (url.indexOf("qqLogin.html") > 0) { - return; - } - } -} diff --git a/designer_base/src/com/fr/design/extra/QQLoginWebPane.java b/designer_base/src/com/fr/design/extra/QQLoginWebPane.java index 5861bb9ed1..f3c96d2194 100644 --- a/designer_base/src/com/fr/design/extra/QQLoginWebPane.java +++ b/designer_base/src/com/fr/design/extra/QQLoginWebPane.java @@ -40,6 +40,7 @@ import java.awt.*; public class QQLoginWebPane extends JFXPanel { private WebEngine webEngine; + private String url; private static JSObject window; @@ -50,7 +51,9 @@ public class QQLoginWebPane extends JFXPanel { private static int DEFAULT_CONFIRM_HEIGHT = 160; private static int DEFAULT_OFFEST = 20; - class Delta { double x, y; } + class Delta { + double x, y; + } public QQLoginWebPane(final String installHome) { Platform.setImplicitExit(false); @@ -62,7 +65,8 @@ public class QQLoginWebPane extends JFXPanel { QQLoginWebPane.this.setScene(scene); final WebView webView = new WebView(); webEngine = webView.getEngine(); - webEngine.load("file:///" + installHome + "/scripts/qqLogin/web/qqLogin.html"); + url = "file:///" + installHome + "/scripts/qqLogin/web/qqLogin.html"; + webEngine.load(url); final Stage primaryStage = new Stage(); @@ -76,51 +80,56 @@ public class QQLoginWebPane extends JFXPanel { primaryStage.setX(0); primaryStage.setY(Screen.getPrimary().getBounds().getHeight() + DEFAULT_PRIMARYSTAGE_HEIGHT); primaryStage.show(); - }catch (Exception e) { + } catch (Exception e) { FRContext.getLogger().info(e.getMessage()); } - - webView.getEngine().setConfirmHandler(new Callback() { - @Override public Boolean call(String msg) { - Boolean confirmed = confirm(primaryStage, msg, installHome, webView); - return confirmed; - } - }); - - webEngine.locationProperty().addListener(new ChangeListener() { - @Override - public void changed(ObservableValue observable, final String oldValue, String newValue) { - disableLink(webEngine); - // webView好像默认以手机版显示网页,浏览器里过滤掉这个跳转 - if (ComparatorUtils.equals(newValue, "file:///" + installHome + "/scripts/qqLogin/web/qqLogin.html") || ComparatorUtils.equals(newValue, SiteCenter.getInstance().acquireUrlByKind("bbs.mobile"))) { - return; - } - QQLoginWebBridge.getHelper().openUrlAtLocalWebBrowser(webEngine, newValue); - } - }); - webEngine.setOnAlert(new EventHandler>() { + webEngine.setConfirmHandler(new Callback() { @Override - public void handle(WebEvent event) { - showAlert(event.getData()); + public Boolean call(String msg) { + Boolean confirmed = confirm(primaryStage, msg, webView); + return confirmed; } }); - webEngine.getLoadWorker().stateProperty().addListener( - new ChangeListener() { - public void changed(ObservableValue ov, Worker.State oldState, Worker.State newState) { - if (newState == Worker.State.SUCCEEDED) { - window = (JSObject) webEngine.executeScript("window"); - window.setMember("QQLoginHelper", QQLoginWebBridge.getHelper(webEngine)); - } - } - } - ); - + configWebEngine(); webView.setContextMenuEnabled(false);//屏蔽右键 root.setCenter(webView); } }); } + private void configWebEngine() { + + webEngine.locationProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, final String oldValue, String newValue) { + disableLink(webEngine); + // webView好像默认以手机版显示网页,浏览器里过滤掉这个跳转 + if (ComparatorUtils.equals(newValue, url) || ComparatorUtils.equals(newValue, SiteCenter.getInstance().acquireUrlByKind("bbs.mobile"))) { + return; + } + LoginWebBridge.getHelper().openUrlAtLocalWebBrowser(webEngine, newValue); + } + }); + + webEngine.setOnAlert(new EventHandler>() { + @Override + public void handle(WebEvent event) { + showAlert(event.getData()); + } + }); + + webEngine.getLoadWorker().stateProperty().addListener( + new ChangeListener() { + public void changed(ObservableValue ov, Worker.State oldState, Worker.State newState) { + if (newState == Worker.State.SUCCEEDED) { + window = (JSObject) webEngine.executeScript("window"); + window.setMember("QQLoginHelper", LoginWebBridge.getHelper()); + } + } + } + ); + } + private void showAlert(final String message) { SwingUtilities.invokeLater(new Runnable() { @Override @@ -138,7 +147,7 @@ public class QQLoginWebPane extends JFXPanel { @Override public void run() { eng.executeScript("location.reload()"); - QQLoginWebBridge.getHelper().closeQQWindow(); + LoginWebBridge.getHelper().closeQQWindow(); } }); } catch (Exception e) { @@ -146,12 +155,12 @@ public class QQLoginWebPane extends JFXPanel { } } - private Boolean confirm(final Stage parent, String msg, final String installHome,final WebView webView) { + private Boolean confirm(final Stage parent, String msg, final WebView webView) { final BooleanProperty confirmationResult = new SimpleBooleanProperty(); // initialize the confirmation dialog final Stage dialog = new Stage(StageStyle.UTILITY); - dialog.setX(Toolkit.getDefaultToolkit().getScreenSize().getWidth()/2 - DEFAULT_CONFIRM_WIDTH / 2 + DEFAULT_OFFEST); - dialog.setY(Toolkit.getDefaultToolkit().getScreenSize().getHeight()/2 + DEFAULT_OFFEST); + dialog.setX(Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2 - DEFAULT_CONFIRM_WIDTH / 2 + DEFAULT_OFFEST); + dialog.setY(Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2 + DEFAULT_OFFEST); dialog.setHeight(DEFAULT_CONFIRM_HEIGHT); dialog.setWidth(DEFAULT_CONFIRM_WIDTH); dialog.setIconified(false); @@ -162,7 +171,8 @@ public class QQLoginWebPane extends JFXPanel { HBoxBuilder.create().styleClass("modal-dialog").children( LabelBuilder.create().text(msg).build(), ButtonBuilder.create().text(Inter.getLocText("FR-Designer-BBSLogin_Switch-Account")).defaultButton(true).onAction(new EventHandler() { - @Override public void handle(ActionEvent actionEvent) { + @Override + public void handle(ActionEvent actionEvent) { // take action and close the dialog. confirmationResult.set(true); webView.getEngine().reload(); @@ -170,7 +180,8 @@ public class QQLoginWebPane extends JFXPanel { } }).build(), ButtonBuilder.create().text(Inter.getLocText("FR-Engine_Cancel")).cancelButton(true).onAction(new EventHandler() { - @Override public void handle(ActionEvent actionEvent) { + @Override + public void handle(ActionEvent actionEvent) { // abort action and close the dialog. confirmationResult.set(false); dialog.close(); @@ -180,35 +191,39 @@ public class QQLoginWebPane extends JFXPanel { , Color.TRANSPARENT ) ); + configDrag(dialog); + // style and show the dialog. + dialog.getScene().getStylesheets().add(getClass().getResource("modal-dialog.css").toExternalForm()); + dialog.setOnCloseRequest(new EventHandler() { + @Override + public void handle(WindowEvent event) { + event.consume(); + dialog.close(); + } + }); + dialog.showAndWait(); + return confirmationResult.get(); + } + + private void configDrag(final Stage dialog) { // allow the dialog to be dragged around. final Node root = dialog.getScene().getRoot(); final Delta dragDelta = new Delta(); root.setOnMousePressed(new EventHandler() { - @Override public void handle(MouseEvent mouseEvent) { + @Override + public void handle(MouseEvent mouseEvent) { // record a delta distance for the drag and drop operation. dragDelta.x = dialog.getX() - mouseEvent.getScreenX(); dragDelta.y = dialog.getY() - mouseEvent.getScreenY(); } }); root.setOnMouseDragged(new EventHandler() { - @Override public void handle(MouseEvent mouseEvent) { + @Override + public void handle(MouseEvent mouseEvent) { dialog.setX(mouseEvent.getScreenX() + dragDelta.x); dialog.setY(mouseEvent.getScreenY() + dragDelta.y); } }); - // style and show the dialog. - dialog.getScene().getStylesheets().add(getClass().getResource("modal-dialog.css").toExternalForm()); - - dialog.setOnCloseRequest(new EventHandler(){ - @Override - public void handle(WindowEvent event){ - event.consume(); - dialog.close(); - } - }); - - dialog.showAndWait(); - return confirmationResult.get(); } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/extra/ReuseWebBridge.java b/designer_base/src/com/fr/design/extra/ReuseWebBridge.java deleted file mode 100644 index 413f862759..0000000000 --- a/designer_base/src/com/fr/design/extra/ReuseWebBridge.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.fr.design.extra; - -import javafx.scene.web.WebEngine; - -/** - * Created by vito on 2016/9/28. - */ -public class ReuseWebBridge { - public static ReuseWebBridge helper; - private WebEngine webEngine; - - public static ReuseWebBridge getHelper() { - if (helper != null) { - return helper; - } - synchronized (ReuseWebBridge.class) { - if (helper == null) { - helper = new ReuseWebBridge(); - } - return helper; - } - } - - public static ReuseWebBridge getHelper(WebEngine webEngine) { - getHelper(); - helper.setEngine(webEngine); - return helper; - } - - private ReuseWebBridge() { - } - - public void setEngine(WebEngine webEngine) { - this.webEngine = webEngine; - } -} diff --git a/designer_base/src/com/fr/design/extra/ReuseWebPane.java b/designer_base/src/com/fr/design/extra/ReuseWebPane.java deleted file mode 100644 index b48957e0f8..0000000000 --- a/designer_base/src/com/fr/design/extra/ReuseWebPane.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.fr.design.extra; - -import javafx.application.Platform; -import javafx.embed.swing.JFXPanel; -import javafx.event.EventHandler; -import javafx.scene.Scene; -import javafx.scene.layout.BorderPane; -import javafx.scene.web.WebEngine; -import javafx.scene.web.WebEvent; -import javafx.scene.web.WebView; -import netscape.javascript.JSObject; - -import javax.swing.*; - -/** - * Created by vito on 2016/9/28. - */ -public class ReuseWebPane extends JFXPanel { - private WebEngine webEngine; - - public ReuseWebPane(final String mainJs) { - Platform.setImplicitExit(false); - Platform.runLater(new Runnable() { - @Override - public void run() { - BorderPane root = new BorderPane(); - Scene scene = new Scene(root); - ReuseWebPane.this.setScene(scene); - WebView webView = new WebView(); - webEngine = webView.getEngine(); - webEngine.load("file:///" + mainJs); - webEngine.setOnAlert(new EventHandler>() { - @Override - public void handle(WebEvent event) { - showAlert(event.getData()); - } - }); - JSObject obj = (JSObject) webEngine.executeScript("window"); - obj.setMember("ReuseHelper", ReuseWebBridge.getHelper(webEngine)); - webView.setContextMenuEnabled(false);//屏蔽右键 - root.setCenter(webView); - } - }); - } - - private void showAlert(final String message) { - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - JOptionPane.showMessageDialog(ReuseWebPane.this, message); - } - }); - } -} diff --git a/designer_base/src/com/fr/design/extra/WebDialog.java b/designer_base/src/com/fr/design/extra/WebViewDlgHelper.java similarity index 75% rename from designer_base/src/com/fr/design/extra/WebDialog.java rename to designer_base/src/com/fr/design/extra/WebViewDlgHelper.java index ed7d735631..481498fc88 100644 --- a/designer_base/src/com/fr/design/extra/WebDialog.java +++ b/designer_base/src/com/fr/design/extra/WebViewDlgHelper.java @@ -24,14 +24,14 @@ import java.util.concurrent.ExecutionException; /** * Created by vito on 2016/9/28. */ -public class WebDialog { +public class WebViewDlgHelper { private static final String LATEST = "latest"; private static final String SHOP_SCRIPTS = "shop_scripts"; private static final int VERSION_8 = 8; + // 调试时,使用installHome = ClassLoader.getSystemResource("").getPath()代替下面 private static String installHome = StableUtils.getInstallHome(); public static void createPluginDialog() { - UIDialog dlg; if (StableUtils.getMajorJavaVersion() >= VERSION_8) { String relativePath = "/scripts/store/web/index.html"; String mainJsPath = StableUtils.pathJoin(new File(installHome).getAbsolutePath(), relativePath); @@ -49,10 +49,7 @@ public class WebDialog { } } else { updateShopScripts(SHOP_SCRIPTS); - BasicPane managerPane = new ShopManagerPane(new PluginWebPane(mainJsPath)); - dlg = new ShopDialog(DesignerContext.getDesignerFrame(), managerPane); - PluginWebBridge.getHelper().setDialogHandle(dlg); - dlg.setVisible(true); + showPluginDlg(mainJsPath); } } else { BasicPane traditionalStorePane = new BasicPane() { @@ -63,21 +60,62 @@ public class WebDialog { }; traditionalStorePane.setLayout(new BorderLayout()); traditionalStorePane.add(initTraditionalStore(), BorderLayout.CENTER); - dlg = new ShopDialog(DesignerContext.getDesignerFrame(), traditionalStorePane); + UIDialog dlg = new ShopDialog(DesignerContext.getDesignerFrame(), traditionalStorePane); dlg.setVisible(true); } } /** * 以关键词打开设计器商店 - *

- * // * @param keyword 关键词 + * + * @param keyword 关键词 */ - public void createPluginDialog(String keyword) { + public static void createPluginDialog(String keyword) { PluginWebBridge.getHelper().openWithSearch(keyword); createPluginDialog(); } + public static void createLoginDialog() { + if (StableUtils.getMajorJavaVersion() == VERSION_8) { + File file = new File(StableUtils.pathJoin(installHome, "scripts")); + if (!file.exists()) { + int rv = JOptionPane.showConfirmDialog( + null, + Inter.getLocText("FR-Designer-Plugin_Shop_Need_Install"), + Inter.getLocText("FR-Designer-Plugin_Warning"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.INFORMATION_MESSAGE + ); + if (rv == JOptionPane.OK_OPTION) { + downloadShopScripts(SHOP_SCRIPTS); + } + } else { + showLoginDlg(); + updateShopScripts(SHOP_SCRIPTS); + } + } + } + + public static void createQQLoginDialog() { + QQLoginWebPane webPane = new QQLoginWebPane(new File(installHome).getAbsolutePath()); + UIDialog qqlog = new QQLoginDialog(DesignerContext.getDesignerFrame(), webPane); + LoginWebBridge.getHelper().setQqDialog(qqlog); + qqlog.setVisible(true); + } + + private static void showPluginDlg(String mainJsPath) { + BasicPane managerPane = new ShopManagerPane(new PluginWebPane(mainJsPath)); + UIDialog dlg = new ShopDialog(DesignerContext.getDesignerFrame(), managerPane); + PluginWebBridge.getHelper().setDialogHandle(dlg); + dlg.setVisible(true); + } + + private static void showLoginDlg() { + LoginWebPane webPane = new LoginWebPane(new File(installHome).getAbsolutePath()); + UIDialog qqdlg = new LoginDialog(DesignerContext.getDesignerFrame(), webPane); + LoginWebBridge.getHelper().setDialogHandle(qqdlg); + qqdlg.setVisible(true); + } private static Component initTraditionalStore() { UITabbedPane tabbedPane = new UITabbedPane(); diff --git a/designer_base/src/com/fr/design/extra/exe/PluginLoginExecutor.java b/designer_base/src/com/fr/design/extra/exe/PluginLoginExecutor.java index c1101f8005..c2c80aef0f 100644 --- a/designer_base/src/com/fr/design/extra/exe/PluginLoginExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/PluginLoginExecutor.java @@ -38,9 +38,6 @@ public class PluginLoginExecutor implements Executor { @Override public void run(Process process) { String loginResult = LoginWebBridge.getHelper().login(username, password, uiLabel); - if (Integer.valueOf(loginResult) == 0) { - LoginWebBridge.getHelper().updateMessageCount(); - } result = loginResult; } } diff --git a/designer_base/src/com/fr/design/gui/autocomplete/AutoCompletePopupWindow.java b/designer_base/src/com/fr/design/gui/autocomplete/AutoCompletePopupWindow.java index c5efadc5cb..22bb4edf77 100644 --- a/designer_base/src/com/fr/design/gui/autocomplete/AutoCompletePopupWindow.java +++ b/designer_base/src/com/fr/design/gui/autocomplete/AutoCompletePopupWindow.java @@ -10,6 +10,7 @@ package com.fr.design.gui.autocomplete; import com.fr.design.gui.syntax.ui.rsyntaxtextarea.PopupWindowDecorator; +import com.fr.general.FRLogger; import javax.swing.*; import javax.swing.event.CaretEvent; @@ -40,6 +41,7 @@ import java.util.List; class AutoCompletePopupWindow extends JWindow implements CaretListener, ListSelectionListener, MouseListener { + private final static int DIS = 5; /** * The parent AutoCompletion instance. */ @@ -179,7 +181,7 @@ class AutoCompletePopupWindow extends JWindow implements CaretListener, } else { doAutocomplete(); } - } else if (AutoCompletion.getDebug()) { + } else if (AutoCompletion.isDebug()) { Thread.dumpStack(); } } @@ -300,8 +302,8 @@ class AutoCompletePopupWindow extends JWindow implements CaretListener, */ private void installKeyBindings() { - if (AutoCompletion.getDebug()) { - System.out.println("PopupWindow: Installing keybindings"); + if (AutoCompletion.isDebug()) { + FRLogger.getLogger().debug("PopupWindow: Installing keybindings"); } if (escapeKap == null) { // Lazily create actions. @@ -313,7 +315,7 @@ class AutoCompletePopupWindow extends JWindow implements CaretListener, ActionMap am = comp.getActionMap(); replaceAction(im, am, KeyEvent.VK_ESCAPE, escapeKap, oldEscape); - if (AutoCompletion.getDebug() && oldEscape.action == escapeKap.action) { + if (AutoCompletion.isDebug() && oldEscape.action == escapeKap.action) { Thread.dumpStack(); } replaceAction(im, am, KeyEvent.VK_UP, upKap, oldUp); @@ -371,7 +373,7 @@ class AutoCompletePopupWindow extends JWindow implements CaretListener, */ private void positionDescWindow() { - boolean showDescWindow = descWindow != null && ac.getShowDescWindow(); + boolean showDescWindow = descWindow != null && ac.isShowDescWindow(); if (!showDescWindow) { return; } @@ -387,14 +389,14 @@ class AutoCompletePopupWindow extends JWindow implements CaretListener, // Try to position to the right first (LTR) int x; if (ac.getTextComponentOrientation().isLeftToRight()) { - x = getX() + getWidth() + 5; + x = getX() + getWidth() + DIS; if (x + descWindow.getWidth() > screenBounds.x + screenBounds.width) { // doesn't fit - x = getX() - 5 - descWindow.getWidth(); + x = getX() - DIS - descWindow.getWidth(); } } else { // RTL - x = getX() - 5 - descWindow.getWidth(); + x = getX() - DIS - descWindow.getWidth(); if (x < screenBounds.x) { // Doesn't fit - x = getX() + getWidth() + 5; + x = getX() + getWidth() + DIS; } } @@ -604,7 +606,7 @@ class AutoCompletePopupWindow extends JWindow implements CaretListener, Rectangle screenBounds = Util.getScreenBoundsForPoint(r.x, r.y); //Dimension screenSize = getToolkit().getScreenSize(); - boolean showDescWindow = descWindow != null && ac.getShowDescWindow(); + boolean showDescWindow = descWindow != null && ac.isShowDescWindow(); int totalH = getHeight(); if (showDescWindow) { totalH = Math.max(totalH, descWindow.getHeight()); @@ -655,7 +657,7 @@ class AutoCompletePopupWindow extends JWindow implements CaretListener, installKeyBindings(); lastLine = ac.getLineOfCaret(); selectFirstItem(); - if (descWindow == null && ac.getShowDescWindow()) { + if (descWindow == null && ac.isShowDescWindow()) { descWindow = createDescriptionWindow(); positionDescWindow(); } @@ -693,7 +695,7 @@ class AutoCompletePopupWindow extends JWindow implements CaretListener, // because of the way child JWindows' visibility is handled - in // some ways it's dependent on the parent, in other ways it's not. if (descWindow != null) { - descWindow.setVisible(visible && ac.getShowDescWindow()); + descWindow.setVisible(visible && ac.isShowDescWindow()); } } @@ -708,8 +710,8 @@ class AutoCompletePopupWindow extends JWindow implements CaretListener, */ private void uninstallKeyBindings() { - if (AutoCompletion.getDebug()) { - System.out.println("PopupWindow: Removing keybindings"); + if (AutoCompletion.isDebug()) { + FRLogger.getLogger().debug("PopupWindow: Removing keybindings"); } JTextComponent comp = ac.getTextComponent(); diff --git a/designer_base/src/com/fr/design/gui/autocomplete/AutoCompletion.java b/designer_base/src/com/fr/design/gui/autocomplete/AutoCompletion.java index 83047ad71b..42d5472007 100644 --- a/designer_base/src/com/fr/design/gui/autocomplete/AutoCompletion.java +++ b/designer_base/src/com/fr/design/gui/autocomplete/AutoCompletion.java @@ -8,36 +8,35 @@ */ package com.fr.design.gui.autocomplete; -import java.awt.*; -import java.awt.event.*; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.List; import javax.swing.*; import javax.swing.event.CaretEvent; import javax.swing.event.CaretListener; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.*; - +import java.awt.*; +import java.awt.event.*; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.List; /** * Adds auto-completion to a text component. Provides a popup window with a * list of auto-complete choices on a given keystroke, such as Crtrl+Space.

- * + *

* Depending on the {@link CompletionProvider} installed, the following * auto-completion features may be enabled: - * + *

*

    - *
  • An auto-complete choices list made visible via e.g. Ctrl+Space
  • - *
  • A "description" window displayed alongside the choices list that - * provides documentation on the currently selected completion choice - * (as seen in Eclipse and NetBeans).
  • - *
  • Parameter assistance. If this is enabled, if the user enters a - * "parameterized" completion, such as a method or a function, then - * they will receive a tool tip describing the arguments they have to - * enter to the completion. Also, the arguments can be navigated via - * tab and shift+tab (a la Eclipse and NetBeans).
  • + *
  • An auto-complete choices list made visible via e.g. Ctrl+Space
  • + *
  • A "description" window displayed alongside the choices list that + * provides documentation on the currently selected completion choice + * (as seen in Eclipse and NetBeans).
  • + *
  • Parameter assistance. If this is enabled, if the user enters a + * "parameterized" completion, such as a method or a function, then + * they will receive a tool tip describing the arguments they have to + * enter to the completion. Also, the arguments can be navigated via + * tab and shift+tab (a la Eclipse and NetBeans).
  • *
* * @author Robert Futrell @@ -51,1294 +50,1277 @@ import javax.swing.text.*; */ public class AutoCompletion { - /** - * The text component we're providing completion for. - */ - private JTextComponent textComponent; - - /** - * The parent window of {@link #textComponent}. - */ - private Window parentWindow; - - /** - * The popup window containing completion choices. - */ - private AutoCompletePopupWindow popupWindow; - - /** - * The preferred size of the completion choices window. This field exists - * because the user will likely set the preferred size of the window - * before it is actually created. - */ - private Dimension preferredChoicesWindowSize; - - /** - * The preferred size of the optional description window. This field - * only exists because the user may (and usually will) set the size of - * the description window before it exists (it must be parented to a - * Window). - */ - private Dimension preferredDescWindowSize; - - /** - * Manages any parameterized completions that are inserted. - */ - private ParameterizedCompletionContext pcc; - - /** - * Provides the completion options relevant to the current caret position. - */ - private CompletionProvider provider; - - /** - * The renderer to use for the completion choices. If this is - * null, then a default renderer is used. - */ - private ListCellRenderer renderer; - - /** - * The handler to use when an external URL is clicked in the help - * documentation. - */ - private ExternalURLHandler externalURLHandler; - - /** - * An optional redirector that converts URL's to some other location before - * being handed over to externalURLHandler. - */ - private static LinkRedirector linkRedirector; - - /** - * Whether the description window should be displayed along with the - * completion choice window. - */ - private boolean showDescWindow; - - /** - * Whether auto-complete is enabled. - */ - private boolean autoCompleteEnabled; - - /** - * Whether the auto-activation of auto-complete (after a delay, after the - * user types an appropriate character) is enabled. - */ - private boolean autoActivationEnabled; - - /** - * Whether or not, when there is only a single auto-complete option - * that matches the text at the current text position, that text should - * be auto-inserted, instead of the completion window displaying. - */ - private boolean autoCompleteSingleChoices; - - /** - * Whether parameter assistance is enabled. - */ - private boolean parameterAssistanceEnabled; - - /** - * A renderer used for {@link Completion}s in the optional parameter - * choices popup window (displayed when a {@link ParameterizedCompletion} - * is code-completed). If this isn't set, a default renderer is used. - */ - private ListCellRenderer paramChoicesRenderer; - - /** - * The keystroke that triggers the completion window. - */ - private KeyStroke trigger; - - /** - * The previous key in the text component's InputMap for the - * trigger key. - */ - private Object oldTriggerKey; - - /** - * The action previously assigned to {@link #trigger}, so we can reset it - * if the user disables auto-completion. - */ - private Action oldTriggerAction; - - /** - * The previous key in the text component's InputMap for the - * parameter completion trigger key. - */ - private Object oldParenKey; - - /** - * The action previously assigned to the parameter completion key, so we - * can reset it when we uninstall. - */ - private Action oldParenAction; - - /** - * Listens for events in the parent window that affect the visibility of - * the popup windows. - */ - private ParentWindowListener parentWindowListener; - - /** - * Listens for events from the text component that affect the visibility - * of the popup windows. - */ - private TextComponentListener textComponentListener; - - /** - * Listens for events in the text component that cause the popup windows - * to automatically activate. - */ - private AutoActivationListener autoActivationListener; - - /** - * Listens for LAF changes so the auto-complete windows automatically - * update themselves accordingly. - */ - private LookAndFeelChangeListener lafListener; - - /** - * The key used in the input map for the AutoComplete action. - */ - private static final String PARAM_TRIGGER_KEY = "AutoComplete"; - - /** - * Key used in the input map for the parameter completion action. - */ - private static final String PARAM_COMPLETE_KEY = "AutoCompletion.FunctionStart"; - - /** - * Stores how to render auto-completion-specific highlights in text - * components. - */ - private static final AutoCompletionStyleContext styleContext = - new AutoCompletionStyleContext(); - - /** - * Whether debug messages should be printed to stdout as AutoCompletion - * runs. - */ - private static final boolean DEBUG = initDebug(); - - - /** - * Constructor. - * - * @param provider The completion provider. This cannot be - * null. - */ - public AutoCompletion(CompletionProvider provider) { - - setChoicesWindowSize(350, 200); - setDescriptionWindowSize(350, 250); - - setCompletionProvider(provider); - setTriggerKey(getDefaultTriggerKey()); - setAutoCompleteEnabled(true); - setAutoCompleteSingleChoices(true); - setAutoActivationEnabled(false); - setShowDescWindow(false); - parentWindowListener = new ParentWindowListener(); - textComponentListener = new TextComponentListener(); - autoActivationListener = new AutoActivationListener(); - lafListener = new LookAndFeelChangeListener(); - - } - - - /** - * Displays the popup window. Hosting applications can call this method - * to programmatically begin an auto-completion operation. - */ - public void doCompletion() { - refreshPopupWindow(); - } - - - /** - * Returns the delay between when the user types a character and when the - * code completion popup should automatically appear (if applicable). - * - * @return The delay, in milliseconds. - * @see #setAutoActivationDelay(int) - */ - public int getAutoActivationDelay() { - return autoActivationListener.timer.getDelay(); - } - - - /** - * Returns whether, if a single auto-complete choice is available, it - * should be automatically inserted, without displaying the popup menu. - * - * @return Whether to auto-complete single choices. - * @see #setAutoCompleteSingleChoices(boolean) - */ - public boolean getAutoCompleteSingleChoices() { - return autoCompleteSingleChoices; - } - - - /** - * Returns the completion provider. - * - * @return The completion provider. - */ - public CompletionProvider getCompletionProvider() { - return provider; - } - - - /** - * Returns whether debug is enabled for AutoCompletion. - * - * @return Whether debug is enabled. - */ - static boolean getDebug() { - return DEBUG; - } - - - /** - * Returns the default auto-complete "trigger key" for this OS. For - * Windows, for example, it is Ctrl+Space. - * - * @return The default auto-complete trigger key. - */ - public static KeyStroke getDefaultTriggerKey() { - // Default to CTRL, even on Mac, since Ctrl+Space activates Spotlight - int mask = InputEvent.CTRL_MASK; - return KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, mask); - } - - - /** - * Returns the handler to use when an external URL is clicked in the - * description window. - * - * @return The handler. - * @see #setExternalURLHandler(ExternalURLHandler) - * @see #getLinkRedirector() - */ - public ExternalURLHandler getExternalURLHandler() { - return externalURLHandler; - } - - - int getLineOfCaret() { - Document doc = textComponent.getDocument(); - Element root = doc.getDefaultRootElement(); - return root.getElementIndex(textComponent.getCaretPosition()); - } - - - /** - * Returns the link redirector, if any. - * - * @return The link redirector, or null if none. - * @see #setLinkRedirector(LinkRedirector) - */ - public static LinkRedirector getLinkRedirector() { - return linkRedirector; - } - - - /** - * Returns the default list cell renderer used when a completion provider - * does not supply its own. - * - * @return The default list cell renderer. - * @see #setListCellRenderer(ListCellRenderer) - */ - public ListCellRenderer getListCellRenderer() { - return renderer; - } - - - /** - * Returns the renderer to use for {@link Completion}s in the optional - * parameter choices popup window (displayed when a - * {@link ParameterizedCompletion} is code-completed). If this returns - * null, a default renderer is used. - * - * @return The renderer to use. - * @see #setParamChoicesRenderer(ListCellRenderer) - * @see #isParameterAssistanceEnabled() - */ - public ListCellRenderer getParamChoicesRenderer() { - return paramChoicesRenderer; - } - - - /** - * Returns the text to replace with in the document. This is a - * "last-chance" hook for subclasses to make special modifications to the - * completion text inserted. The default implementation simply returns - * c.getReplacementText(). You usually will not need to modify - * this method. - * - * @param c The completion being inserted. - * @param doc The document being modified. - * @param start The start of the text being replaced. - * @param len The length of the text being replaced. - * @return The text to replace with. - */ - protected String getReplacementText(Completion c, Document doc, int start, - int len) { - return c.getReplacementText(); - } - - - /** - * Returns whether the "description window" should be shown alongside - * the completion window. - * - * @return Whether the description window should be shown. - * @see #setShowDescWindow(boolean) - */ - public boolean getShowDescWindow() { - return showDescWindow; - } - - - /** - * Returns the style context describing how auto-completion related - * highlights in the editor are rendered. - * - * @return The style context. - */ - public static AutoCompletionStyleContext getStyleContext() { - return styleContext; - } - - - /** - * Returns the text component for which auto-completion is enabled. - * - * @return The text component, or null if this - * {@link AutoCompletion} is not installed on any text component. - * @see #install(JTextComponent) - */ - public JTextComponent getTextComponent() { - return textComponent; - } - - - /** - * Returns the orientation of the text component we're installed to. - * - * @return The orientation of the text component, or null if - * we are not installed on one. - */ - ComponentOrientation getTextComponentOrientation() { - return textComponent==null ? null : - textComponent.getComponentOrientation(); - } - - - /** - * Returns the "trigger key" used for auto-complete. - * - * @return The trigger key. - * @see #setTriggerKey(KeyStroke) - */ - public KeyStroke getTriggerKey() { - return trigger; - } - - - /** - * Hides any child windows being displayed by the auto-completion system. - * - * @return Whether any windows were visible. - */ - public boolean hideChildWindows() { - //return hidePopupWindow() || hideToolTipWindow(); - boolean res = hidePopupWindow(); - res |= hideParameterCompletionPopups(); - return res; - } - - - /** - * Hides and disposes of any parameter completion-related popups. - * - * @return Whether any such windows were visible (and thus hidden). - */ - private boolean hideParameterCompletionPopups() { - if (pcc!=null) { - pcc.deactivate(); - pcc = null; - return true; - } - return false; - } - - - /** - * Hides the popup window, if it is visible. - * - * @return Whether the popup window was visible. - */ - private boolean hidePopupWindow() { - if (popupWindow!=null) { - if (popupWindow.isVisible()) { - popupWindow.setVisible(false); - return true; - } - } - return false; - } - - - /** - * Determines whether debug should be enabled for the AutoCompletion - * library. This method checks a system property, but takes care of - * {@link SecurityException}s in case we're in an applet or WebStart. - * - * @return Whether debug should be enabled. - */ - private static final boolean initDebug() { - boolean debug = false; - try { - debug = Boolean.getBoolean("AutoCompletion.debug"); - } catch (SecurityException se) { // We're in an applet or WebStart. - debug = false; - } - return debug; - } - - - /** - * Inserts a completion. Any time a code completion event occurs, the - * actual text insertion happens through this method. - * - * @param c A completion to insert. This cannot be null. - */ - protected final void insertCompletion(Completion c) { - insertCompletion(c, false); - } - - - /** - * Inserts a completion. Any time a code completion event occurs, the - * actual text insertion happens through this method. - * - * @param c A completion to insert. This cannot be null. - * @param typedParamListStartChar Whether the parameterized completion - * start character was typed (typically '('). - */ - protected void insertCompletion(Completion c, - boolean typedParamListStartChar) { - - JTextComponent textComp = getTextComponent(); - String alreadyEntered = c.getAlreadyEntered(textComp); - hidePopupWindow(); - Caret caret = textComp.getCaret(); - - int dot = caret.getDot(); - int len = alreadyEntered.length(); - int start = dot-len; - String replacement = getReplacementText(c, textComp.getDocument(), - start, len); - - caret.setDot(start); - caret.moveDot(dot); - textComp.replaceSelection(replacement); - - if (isParameterAssistanceEnabled() && - (c instanceof ParameterizedCompletion)) { - ParameterizedCompletion pc = (ParameterizedCompletion)c; - startParameterizedCompletionAssistance(pc, typedParamListStartChar); - } - - } - - - /** - * Installs this auto-completion on a text component. If this - * {@link AutoCompletion} is already installed on another text component, - * it is uninstalled first. - * - * @param c The text component. - * @see #uninstall() - */ - public void install(JTextComponent c) { - - if (textComponent!=null) { - uninstall(); - } - - this.textComponent = c; - installTriggerKey(getTriggerKey()); - - // Install the function completion key, if there is one. - // NOTE: We cannot do this if the start char is ' ' (e.g. just a space - // between the function name and parameters) because it overrides - // RSTA's special space action. It seems KeyStorke.getKeyStroke(' ') - // hoses ctrl+space, shift+space, etc., even though I think it - // shouldn't... - char start = provider.getParameterListStart(); - if (start!=0 && start!=' ') { - InputMap im = c.getInputMap(); - ActionMap am = c.getActionMap(); - KeyStroke ks = KeyStroke.getKeyStroke(start); - oldParenKey = im.get(ks); - im.put(ks, PARAM_COMPLETE_KEY); - oldParenAction = am.get(PARAM_COMPLETE_KEY); - am.put(PARAM_COMPLETE_KEY, - new ParameterizedCompletionStartAction(start)); - } - - textComponentListener.addTo(this.textComponent); - // In case textComponent is already in a window... - textComponentListener.hierarchyChanged(null); - - if (isAutoActivationEnabled()) { - autoActivationListener.addTo(this.textComponent); - } - - UIManager.addPropertyChangeListener(lafListener); - updateUI(); // In case there have been changes since we uninstalled - - } - - - /** - * Installs a "trigger key" action onto the current text component. - * - * @param ks The keystroke that should trigger the action. - * @see #uninstallTriggerKey() - */ - private void installTriggerKey(KeyStroke ks) { - InputMap im = textComponent.getInputMap(); - oldTriggerKey = im.get(ks); - im.put(ks, PARAM_TRIGGER_KEY); - ActionMap am = textComponent.getActionMap(); - oldTriggerAction = am.get(PARAM_TRIGGER_KEY); - am.put(PARAM_TRIGGER_KEY, new AutoCompleteAction()); - } - - - /** - * Returns whether auto-activation is enabled (that is, whether the - * completion popup will automatically appear after a delay when the user - * types an appropriate character). Note that this parameter will be - * ignored if auto-completion is disabled. - * - * @return Whether auto-activation is enabled. - * @see #setAutoActivationEnabled(boolean) - * @see #getAutoActivationDelay() - * @see #isAutoCompleteEnabled() - */ - public boolean isAutoActivationEnabled() { - return autoActivationEnabled; - } - - - /** - * Returns whether auto-completion is enabled. - * - * @return Whether auto-completion is enabled. - * @see #setAutoCompleteEnabled(boolean) - */ - public boolean isAutoCompleteEnabled() { - return autoCompleteEnabled; - } - - - /** - * Returns whether parameter assistance is enabled. - * - * @return Whether parameter assistance is enabled. - * @see #setParameterAssistanceEnabled(boolean) - */ - public boolean isParameterAssistanceEnabled() { - return parameterAssistanceEnabled; - } - - - /** - * Returns whether the completion popup window is visible. - * - * @return Whether the completion popup window is visible. - */ - public boolean isPopupVisible() { - return popupWindow!=null && popupWindow.isVisible(); - } - - - /** - * Refreshes the popup window. First, this method gets the possible - * completions for the current caret position. If there are none, and the - * popup is visible, it is hidden. If there are some completions and the - * popup is hidden, it is made visible and made to display the completions. - * If there are some completions and the popup is visible, its list is - * updated to the current set of completions. - * - * @return The current line number of the caret. - */ - protected int refreshPopupWindow() { - - // A return value of null => don't suggest completions - String text = provider.getAlreadyEnteredText(textComponent); - if (text==null && !isPopupVisible()) { - return getLineOfCaret(); - } - - // If the popup is currently visible, and they type a space (or any - // character that resets the completion list to "all completions"), - // the popup window should be hidden instead of being reset to show - // everything. - int textLen = text==null ? 0 : text.length(); - if (textLen==0) { - if (isPopupVisible()) { - hidePopupWindow(); - return getLineOfCaret(); - } - } - - final List completions = provider. - getCompletions(textComponent); - int count = completions.size(); - - if (count>1 || (count==1 && (isPopupVisible() || textLen==0)) || - (count==1 && !getAutoCompleteSingleChoices())) { - - if (popupWindow==null) { - popupWindow = new AutoCompletePopupWindow(parentWindow, this); - // Completion is usually done for code, which is always done - // LTR, so make completion stuff RTL only if text component is - // also RTL. - popupWindow.applyComponentOrientation( - getTextComponentOrientation()); - if (renderer!=null) { - popupWindow.setListCellRenderer(renderer); - } - if (preferredChoicesWindowSize!=null) { - popupWindow.setSize(preferredChoicesWindowSize); - } - if (preferredDescWindowSize!=null) { - popupWindow.setDescriptionWindowSize( - preferredDescWindowSize); - } - } - - popupWindow.setCompletions(completions); - - if (!popupWindow.isVisible()) { - Rectangle r = null; - try { - r = textComponent.modelToView(textComponent. - getCaretPosition()); - } catch (BadLocationException ble) { - - return -1; - } - Point p = new Point(r.x, r.y); - SwingUtilities.convertPointToScreen(p, textComponent); - r.x = p.x; - r.y = p.y; - popupWindow.setLocationRelativeTo(r); - popupWindow.setVisible(true); - } - - } - - else if (count==1) { // !isPopupVisible && autoCompleteSingleChoices - SwingUtilities.invokeLater(new Runnable() { - public void run() { - insertCompletion(completions.get(0)); - } - }); - } - - else { - hidePopupWindow(); - } - - return getLineOfCaret(); - - } - - - /** - * Sets the delay between when the user types a character and when the - * code completion popup should automatically appear (if applicable). - * - * @param ms The delay, in milliseconds. This should be greater than zero. - * @see #getAutoActivationDelay() - */ - public void setAutoActivationDelay(int ms) { - ms = Math.max(0, ms); - autoActivationListener.timer.stop(); - autoActivationListener.timer.setInitialDelay(ms); - } - - - /** - * Toggles whether auto-activation is enabled. Note that auto-activation - * also depends on auto-completion itself being enabled. - * - * @param enabled Whether auto-activation is enabled. - * @see #isAutoActivationEnabled() - * @see #setAutoActivationDelay(int) - */ - public void setAutoActivationEnabled(boolean enabled) { - if (enabled!=autoActivationEnabled) { - autoActivationEnabled = enabled; - if (textComponent!=null) { - if (autoActivationEnabled) { - autoActivationListener.addTo(textComponent); - } - else { - autoActivationListener.removeFrom(textComponent); - } - } - } - } - - - /** - * Sets whether auto-completion is enabled. - * - * @param enabled Whether auto-completion is enabled. - * @see #isAutoCompleteEnabled() - */ - public void setAutoCompleteEnabled(boolean enabled) { - if (enabled!=autoCompleteEnabled) { - autoCompleteEnabled = enabled; - hidePopupWindow(); - } - } - - - /** - * Sets whether, if a single auto-complete choice is available, it should - * be automatically inserted, without displaying the popup menu. - * - * @param autoComplete Whether to auto-complete single choices. - * @see #getAutoCompleteSingleChoices() - */ - public void setAutoCompleteSingleChoices(boolean autoComplete) { - autoCompleteSingleChoices = autoComplete; - } - - - /** - * Sets the completion provider being used. - * - * @param provider The new completion provider. This cannot be - * null. - * @throws IllegalArgumentException If provider is - * null. - */ - public void setCompletionProvider(CompletionProvider provider) { - if (provider==null) { - throw new IllegalArgumentException("provider cannot be null"); - } - this.provider = provider; - hidePopupWindow(); // In case new choices should be displayed. - } - - - /** - * Sets the size of the completion choices window. - * - * @param w The new width. - * @param h The new height. - * @see #setDescriptionWindowSize(int, int) - */ - public void setChoicesWindowSize(int w, int h) { - preferredChoicesWindowSize = new Dimension(w, h); - if (popupWindow!=null) { - popupWindow.setSize(preferredChoicesWindowSize); - } - } - - - /** - * Sets the size of the description window. - * - * @param w The new width. - * @param h The new height. - * @see #setChoicesWindowSize(int, int) - */ - public void setDescriptionWindowSize(int w, int h) { - preferredDescWindowSize = new Dimension(w, h); - if (popupWindow!=null) { - popupWindow.setDescriptionWindowSize(preferredDescWindowSize); - } - } - - - /** - * Sets the handler to use when an external URL is clicked in the - * description window. This handler can perform some action, such as - * open the URL in a web browser. The default implementation will open - * the URL in a browser, but only if running in Java 6. If you want - * browser support for Java 5 and below, or otherwise want to respond to - * hyperlink clicks, you will have to install your own handler to do so. - * - * @param handler The new handler. - * @see #getExternalURLHandler() - */ - public void setExternalURLHandler(ExternalURLHandler handler) { - this.externalURLHandler = handler; - } - - - /** - * Sets the redirector for external URL's found in code completion - * documentation. When a non-local link in completion popups is clicked, - * this redirector is given the chance to modify the URL fetched and - * displayed. - * - * @param linkRedirector The link redirector, or null for - * none. - * @see #getLinkRedirector() - */ - public static void setLinkRedirector(LinkRedirector linkRedirector) { - AutoCompletion.linkRedirector = linkRedirector; - } - - - /** - * Sets the default list cell renderer to use when a completion provider - * does not supply its own. - * - * @param renderer The renderer to use. If this is null, - * a default renderer is used. - * @see #getListCellRenderer() - */ - public void setListCellRenderer(ListCellRenderer renderer) { - this.renderer = renderer; - if (popupWindow!=null) { - popupWindow.setListCellRenderer(renderer); - hidePopupWindow(); - } - } - - - /** - * Sets the renderer to use for {@link Completion}s in the optional - * parameter choices popup window (displayed when a - * {@link ParameterizedCompletion} is code-completed). If this isn't set, - * a default renderer is used. - * - * @param r The renderer to use. - * @see #getParamChoicesRenderer() - * @see #setParameterAssistanceEnabled(boolean) - */ - public void setParamChoicesRenderer(ListCellRenderer r) { - paramChoicesRenderer = r; - } - - - /** - * Sets whether parameter assistance is enabled. If parameter assistance - * is enabled, and a "parameterized" completion (such as a function or - * method) is inserted, the user will get "assistance" in inserting the - * parameters in the form of a popup window with documentation and easy - * tabbing through the arguments (as seen in Eclipse and NetBeans). - * - * @param enabled Whether parameter assistance should be enabled. - * @see #isParameterAssistanceEnabled() - */ - public void setParameterAssistanceEnabled(boolean enabled) { - parameterAssistanceEnabled = enabled; - } - - - /** - * Sets whether the "description window" should be shown beside the - * completion window. - * - * @param show Whether to show the description window. - * @see #getShowDescWindow() - */ - public void setShowDescWindow(boolean show) { - hidePopupWindow(); // Needed to force it to take effect - showDescWindow = show; - } - - - /** - * Sets the keystroke that should be used to trigger the auto-complete - * popup window. - * - * @param ks The keystroke. - * @throws IllegalArgumentException If ks is null. - * @see #getTriggerKey() - */ - public void setTriggerKey(KeyStroke ks) { - if (ks==null) { - throw new IllegalArgumentException("trigger key cannot be null"); - } - if (!ks.equals(trigger)) { - if (textComponent!=null) { - // Put old trigger action back. - uninstallTriggerKey(); - // Grab current action for new trigger and replace it. - installTriggerKey(ks); - } - trigger = ks; - } - } - - - /** - * Displays a "tool tip" detailing the inputs to the function just entered. - * - * @param pc The completion. - * @param typedParamListStartChar Whether the parameterized completion list - * starting character was typed. - */ - private void startParameterizedCompletionAssistance( - ParameterizedCompletion pc, boolean typedParamListStartChar) { - - // Get rid of the previous tool tip window, if there is one. - hideParameterCompletionPopups(); - - // Don't bother with a tool tip if there are no parameters, but if - // they typed e.g. the opening '(', make them overtype the ')'. - if (pc.getParamCount()==0 && !(pc instanceof TemplateCompletion)) { - CompletionProvider p = pc.getProvider(); - char end = p.getParameterListEnd(); // Might be '\0' - String text = end=='\0' ? "" : Character.toString(end); - if (typedParamListStartChar) { - String template = "${}" + text + "${cursor}"; - textComponent.replaceSelection(Character.toString(p.getParameterListStart())); - TemplateCompletion tc = new TemplateCompletion(p, null, null, template); - pc = tc; - } - else { - text = p.getParameterListStart() + text; - textComponent.replaceSelection(text); - return; - } - } - - pcc = new ParameterizedCompletionContext(parentWindow, this, pc); - pcc.activate(); - - } - - - /** - * Uninstalls this auto-completion from its text component. If it is not - * installed on any text component, nothing happens. - * - * @see #install(JTextComponent) - */ - public void uninstall() { - - if (textComponent!=null) { - - hidePopupWindow(); // Unregisters listeners, actions, etc. - - uninstallTriggerKey(); - - // Uninstall the function completion key. - char start = provider.getParameterListStart(); - if (start!=0) { - KeyStroke ks = KeyStroke.getKeyStroke(start); - InputMap im = textComponent.getInputMap(); - im.put(ks, oldParenKey); - ActionMap am = textComponent.getActionMap(); - am.put(PARAM_COMPLETE_KEY, oldParenAction); - } - - textComponentListener.removeFrom(textComponent); - if (parentWindow!=null) { - parentWindowListener.removeFrom(parentWindow); - } - - if (isAutoActivationEnabled()) { - autoActivationListener.removeFrom(textComponent); - } - - UIManager.removePropertyChangeListener(lafListener); - - textComponent = null; - popupWindow = null; - - } - - } - - - /** - * Replaces the "trigger key" action with the one that was there - * before auto-completion was installed. - * - * @see #installTriggerKey(KeyStroke) - */ - private void uninstallTriggerKey() { - InputMap im = textComponent.getInputMap(); - im.put(trigger, oldTriggerKey); - ActionMap am = textComponent.getActionMap(); - am.put(PARAM_TRIGGER_KEY, oldTriggerAction); - } - - - /** - * Updates the LookAndFeel of the popup window. Applications can call - * this method as appropriate if they support changing the LookAndFeel - * at runtime. - */ - private void updateUI() { - if (popupWindow!=null) { - popupWindow.updateUI(); - } - if (pcc!=null) { - pcc.updateUI(); - } - // Will practically always be a JComponent (a JLabel) - if (paramChoicesRenderer instanceof JComponent) { - ((JComponent)paramChoicesRenderer).updateUI(); - } - } - - - /** - * Listens for events in the text component to auto-activate the code - * completion popup. - */ - private class AutoActivationListener extends FocusAdapter - implements DocumentListener, CaretListener, ActionListener { - - private Timer timer; - private boolean justInserted; - - public AutoActivationListener() { - timer = new Timer(200, this); - timer.setRepeats(false); - } - - public void actionPerformed(ActionEvent e) { - doCompletion(); - } - - public void addTo(JTextComponent tc) { - tc.addFocusListener(this); - tc.getDocument().addDocumentListener(this); - tc.addCaretListener(this); - } - - public void caretUpdate(CaretEvent e) { - if (justInserted) { - justInserted = false; - } - else { - timer.stop(); - } - } - - public void changedUpdate(DocumentEvent e) { - // Ignore - } - - @Override - public void focusLost(FocusEvent e) { - timer.stop(); - //hideChildWindows(); Other listener will do this - } - - public void insertUpdate(DocumentEvent e) { - justInserted = false; - if (isAutoCompleteEnabled() && isAutoActivationEnabled() && - e.getLength()==1) { - if (provider.isAutoActivateOkay(textComponent)) { - timer.restart(); - justInserted = true; - } - else { - timer.stop(); - } - } - else { - timer.stop(); - } - } - - public void removeFrom(JTextComponent tc) { - tc.removeFocusListener(this); - tc.getDocument().removeDocumentListener(this); - tc.removeCaretListener(this); - timer.stop(); - justInserted = false; - } - - public void removeUpdate(DocumentEvent e) { - timer.stop(); - } - - } - - - /** - * The Action that displays the popup window if - * auto-completion is enabled. - */ - private class AutoCompleteAction extends AbstractAction { - - public void actionPerformed(ActionEvent e) { - if (isAutoCompleteEnabled()) { - refreshPopupWindow(); - } - else if (oldTriggerAction!=null) { - oldTriggerAction.actionPerformed(e); - } - } - - } - - - /** - * Listens for LookAndFeel changes and updates the various popup windows - * involved in auto-completion accordingly. - */ - private class LookAndFeelChangeListener implements PropertyChangeListener { - - public void propertyChange(PropertyChangeEvent e) { - String name = e.getPropertyName(); - if ("lookAndFeel".equals(name)) { - updateUI(); - } - } - - } - - - /** - * Action that starts a parameterized completion, e.g. after '(' is - * typed. - */ - private class ParameterizedCompletionStartAction extends AbstractAction { - - private String start; - - public ParameterizedCompletionStartAction(char ch) { - this.start = Character.toString(ch); - } - - public void actionPerformed(ActionEvent e) { - - // Prevents keystrokes from messing up - boolean wasVisible = hidePopupWindow(); - - // Only proceed if they were selecting a completion - if (!wasVisible || !isParameterAssistanceEnabled()) { - textComponent.replaceSelection(start); - return; - } - - Completion c = popupWindow.getSelection(); - if (c instanceof ParameterizedCompletion) { // Should always be true - // Fixes capitalization of the entered text. - insertCompletion(c, true); - } - - } - - } - - - /** - * Listens for events in the parent window of the text component with - * auto-completion enabled. - */ - private class ParentWindowListener extends ComponentAdapter - implements WindowFocusListener { - - public void addTo(Window w) { - w.addComponentListener(this); - w.addWindowFocusListener(this); - } - - @Override - public void componentHidden(ComponentEvent e) { - hideChildWindows(); - } - - @Override - public void componentMoved(ComponentEvent e) { - hideChildWindows(); - } - - @Override - public void componentResized(ComponentEvent e) { - hideChildWindows(); - } - - public void removeFrom(Window w) { - w.removeComponentListener(this); - w.removeWindowFocusListener(this); - } - - public void windowGainedFocus(WindowEvent e) { - } - - public void windowLostFocus(WindowEvent e) { - hideChildWindows(); - } - - } - - - /** - * Listens for events from the text component we're installed on. - */ - private class TextComponentListener extends FocusAdapter - implements HierarchyListener { - - void addTo(JTextComponent tc) { - tc.addFocusListener(this); - tc.addHierarchyListener(this); - } - - /** - * Hide the auto-completion windows when the text component loses - * focus. - */ - @Override - public void focusLost(FocusEvent e) { - hideChildWindows(); - } - - /** - * Called when the component hierarchy for our text component changes. - * When the text component is added to a new {@link Window}, this - * method registers listeners on that Window. - * - * @param e The event. - */ - public void hierarchyChanged(HierarchyEvent e) { - - // NOTE: e many be null as we call this method at other times. - //System.out.println("Hierarchy changed! " + e); - - Window oldParentWindow = parentWindow; - parentWindow = SwingUtilities.getWindowAncestor(textComponent); - if (parentWindow!=oldParentWindow) { - if (oldParentWindow!=null) { - parentWindowListener.removeFrom(oldParentWindow); - } - if (parentWindow!=null) { - parentWindowListener.addTo(parentWindow); - } - } - - } - - public void removeFrom(JTextComponent tc) { - tc.removeFocusListener(this); - tc.removeHierarchyListener(this); - } - - } + /** + * The text component we're providing completion for. + */ + private JTextComponent textComponent; + + /** + * The parent window of {@link #textComponent}. + */ + private Window parentWindow; + + /** + * The popup window containing completion choices. + */ + private AutoCompletePopupWindow popupWindow; + + /** + * The preferred size of the completion choices window. This field exists + * because the user will likely set the preferred size of the window + * before it is actually created. + */ + private Dimension preferredChoicesWindowSize; + + /** + * The preferred size of the optional description window. This field + * only exists because the user may (and usually will) set the size of + * the description window before it exists (it must be parented to a + * Window). + */ + private Dimension preferredDescWindowSize; + + /** + * Manages any parameterized completions that are inserted. + */ + private ParameterizedCompletionContext pcc; + + /** + * Provides the completion options relevant to the current caret position. + */ + private CompletionProvider provider; + + /** + * The renderer to use for the completion choices. If this is + * null, then a default renderer is used. + */ + private ListCellRenderer renderer; + + /** + * The handler to use when an external URL is clicked in the help + * documentation. + */ + private ExternalURLHandler externalURLHandler; + + /** + * An optional redirector that converts URL's to some other location before + * being handed over to externalURLHandler. + */ + private static LinkRedirector linkRedirector; + + /** + * Whether the description window should be displayed along with the + * completion choice window. + */ + private boolean showDescWindow; + + /** + * Whether auto-complete is enabled. + */ + private boolean autoCompleteEnabled; + + /** + * Whether the auto-activation of auto-complete (after a delay, after the + * user types an appropriate character) is enabled. + */ + private boolean autoActivationEnabled; + + /** + * Whether or not, when there is only a single auto-complete option + * that matches the text at the current text position, that text should + * be auto-inserted, instead of the completion window displaying. + */ + private boolean autoCompleteSingleChoices; + + /** + * Whether parameter assistance is enabled. + */ + private boolean parameterAssistanceEnabled; + + /** + * A renderer used for {@link Completion}s in the optional parameter + * choices popup window (displayed when a {@link ParameterizedCompletion} + * is code-completed). If this isn't set, a default renderer is used. + */ + private ListCellRenderer paramChoicesRenderer; + + /** + * The keystroke that triggers the completion window. + */ + private KeyStroke trigger; + + /** + * The previous key in the text component's InputMap for the + * trigger key. + */ + private Object oldTriggerKey; + + /** + * The action previously assigned to {@link #trigger}, so we can reset it + * if the user disables auto-completion. + */ + private Action oldTriggerAction; + + /** + * The previous key in the text component's InputMap for the + * parameter completion trigger key. + */ + private Object oldParenKey; + + /** + * The action previously assigned to the parameter completion key, so we + * can reset it when we uninstall. + */ + private Action oldParenAction; + + /** + * Listens for events in the parent window that affect the visibility of + * the popup windows. + */ + private ParentWindowListener parentWindowListener; + + /** + * Listens for events from the text component that affect the visibility + * of the popup windows. + */ + private TextComponentListener textComponentListener; + + /** + * Listens for events in the text component that cause the popup windows + * to automatically activate. + */ + private AutoActivationListener autoActivationListener; + + /** + * Listens for LAF changes so the auto-complete windows automatically + * update themselves accordingly. + */ + private LookAndFeelChangeListener lafListener; + + /** + * The key used in the input map for the AutoComplete action. + */ + private static final String PARAM_TRIGGER_KEY = "AutoComplete"; + + /** + * Key used in the input map for the parameter completion action. + */ + private static final String PARAM_COMPLETE_KEY = "AutoCompletion.FunctionStart"; + + /** + * Stores how to render auto-completion-specific highlights in text + * components. + */ + private static final AutoCompletionStyleContext STYLE_CONTEXT = + new AutoCompletionStyleContext(); + + /** + * Whether debug messages should be printed to stdout as AutoCompletion + * runs. + */ + private static final boolean DEBUG = initDebug(); + + + /** + * Constructor. + * + * @param provider The completion provider. This cannot be + * null. + */ + public AutoCompletion(CompletionProvider provider) { + + setChoicesWindowSize(350, 200); + setDescriptionWindowSize(350, 250); + + setCompletionProvider(provider); + setTriggerKey(getDefaultTriggerKey()); + setAutoCompleteEnabled(true); + setAutoCompleteSingleChoices(true); + setAutoActivationEnabled(false); + setShowDescWindow(false); + parentWindowListener = new ParentWindowListener(); + textComponentListener = new TextComponentListener(); + autoActivationListener = new AutoActivationListener(); + lafListener = new LookAndFeelChangeListener(); + + } + + + /** + * Displays the popup window. Hosting applications can call this method + * to programmatically begin an auto-completion operation. + */ + public void doCompletion() { + refreshPopupWindow(); + } + + + /** + * Returns the delay between when the user types a character and when the + * code completion popup should automatically appear (if applicable). + * + * @return The delay, in milliseconds. + * @see #setAutoActivationDelay(int) + */ + public int getAutoActivationDelay() { + return autoActivationListener.timer.getDelay(); + } + + + /** + * Returns whether, if a single auto-complete choice is available, it + * should be automatically inserted, without displaying the popup menu. + * + * @return Whether to auto-complete single choices. + * @see #setAutoCompleteSingleChoices(boolean) + */ + public boolean isAutoCompleteSingleChoices() { + return autoCompleteSingleChoices; + } + + + /** + * Returns the completion provider. + * + * @return The completion provider. + */ + public CompletionProvider getCompletionProvider() { + return provider; + } + + + /** + * Returns whether debug is enabled for AutoCompletion. + * + * @return Whether debug is enabled. + */ + static boolean isDebug() { + return DEBUG; + } + + + /** + * Returns the default auto-complete "trigger key" for this OS. For + * Windows, for example, it is Ctrl+Space. + * + * @return The default auto-complete trigger key. + */ + public static KeyStroke getDefaultTriggerKey() { + // Default to CTRL, even on Mac, since Ctrl+Space activates Spotlight + return KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, InputEvent.CTRL_MASK); + } + + + /** + * Returns the handler to use when an external URL is clicked in the + * description window. + * + * @return The handler. + * @see #setExternalURLHandler(ExternalURLHandler) + * @see #getLinkRedirector() + */ + public ExternalURLHandler getExternalURLHandler() { + return externalURLHandler; + } + + + int getLineOfCaret() { + Document doc = textComponent.getDocument(); + Element root = doc.getDefaultRootElement(); + return root.getElementIndex(textComponent.getCaretPosition()); + } + + + /** + * Returns the link redirector, if any. + * + * @return The link redirector, or null if none. + * @see #setLinkRedirector(LinkRedirector) + */ + public static LinkRedirector getLinkRedirector() { + return linkRedirector; + } + + + /** + * Returns the default list cell renderer used when a completion provider + * does not supply its own. + * + * @return The default list cell renderer. + * @see #setListCellRenderer(ListCellRenderer) + */ + public ListCellRenderer getListCellRenderer() { + return renderer; + } + + + /** + * Returns the renderer to use for {@link Completion}s in the optional + * parameter choices popup window (displayed when a + * {@link ParameterizedCompletion} is code-completed). If this returns + * null, a default renderer is used. + * + * @return The renderer to use. + * @see #setParamChoicesRenderer(ListCellRenderer) + * @see #isParameterAssistanceEnabled() + */ + public ListCellRenderer getParamChoicesRenderer() { + return paramChoicesRenderer; + } + + + /** + * Returns the text to replace with in the document. This is a + * "last-chance" hook for subclasses to make special modifications to the + * completion text inserted. The default implementation simply returns + * c.getReplacementText(). You usually will not need to modify + * this method. + * + * @param c The completion being inserted. + * @param doc The document being modified. + * @param start The start of the text being replaced. + * @param len The length of the text being replaced. + * @return The text to replace with. + */ + protected String getReplacementText(Completion c, Document doc, int start, + int len) { + return c.getReplacementText(); + } + + + /** + * Returns whether the "description window" should be shown alongside + * the completion window. + * + * @return Whether the description window should be shown. + * @see #setShowDescWindow(boolean) + */ + public boolean isShowDescWindow() { + return showDescWindow; + } + + + /** + * Returns the style context describing how auto-completion related + * highlights in the editor are rendered. + * + * @return The style context. + */ + public static AutoCompletionStyleContext getStyleContext() { + return STYLE_CONTEXT; + } + + + /** + * Returns the text component for which auto-completion is enabled. + * + * @return The text component, or null if this + * {@link AutoCompletion} is not installed on any text component. + * @see #install(JTextComponent) + */ + public JTextComponent getTextComponent() { + return textComponent; + } + + + /** + * Returns the orientation of the text component we're installed to. + * + * @return The orientation of the text component, or null if + * we are not installed on one. + */ + ComponentOrientation getTextComponentOrientation() { + return textComponent == null ? null : + textComponent.getComponentOrientation(); + } + + + /** + * Returns the "trigger key" used for auto-complete. + * + * @return The trigger key. + * @see #setTriggerKey(KeyStroke) + */ + public KeyStroke getTriggerKey() { + return trigger; + } + + + /** + * Hides any child windows being displayed by the auto-completion system. + * + * @return Whether any windows were visible. + */ + public boolean hideChildWindows() { + //return hidePopupWindow() || hideToolTipWindow(); + boolean res = hidePopupWindow(); + res |= hideParameterCompletionPopups(); + return res; + } + + + /** + * Hides and disposes of any parameter completion-related popups. + * + * @return Whether any such windows were visible (and thus hidden). + */ + private boolean hideParameterCompletionPopups() { + if (pcc != null) { + pcc.deactivate(); + pcc = null; + return true; + } + return false; + } + + + /** + * Hides the popup window, if it is visible. + * + * @return Whether the popup window was visible. + */ + private boolean hidePopupWindow() { + if (popupWindow != null) { + if (popupWindow.isVisible()) { + popupWindow.setVisible(false); + return true; + } + } + return false; + } + + + /** + * Determines whether debug should be enabled for the AutoCompletion + * library. This method checks a system property, but takes care of + * {@link SecurityException}s in case we're in an applet or WebStart. + * + * @return Whether debug should be enabled. + */ + private static final boolean initDebug() { + boolean debug = false; + try { + debug = Boolean.getBoolean("AutoCompletion.debug"); + } catch (SecurityException se) { // We're in an applet or WebStart. + debug = false; + } + return debug; + } + + + /** + * Inserts a completion. Any time a code completion event occurs, the + * actual text insertion happens through this method. + * + * @param c A completion to insert. This cannot be null. + */ + protected final void insertCompletion(Completion c) { + insertCompletion(c, false); + } + + + /** + * Inserts a completion. Any time a code completion event occurs, the + * actual text insertion happens through this method. + * + * @param c A completion to insert. This cannot be null. + * @param typedParamListStartChar Whether the parameterized completion + * start character was typed (typically '('). + */ + protected void insertCompletion(Completion c, + boolean typedParamListStartChar) { + + JTextComponent textComp = getTextComponent(); + String alreadyEntered = c.getAlreadyEntered(textComp); + hidePopupWindow(); + Caret caret = textComp.getCaret(); + + int dot = caret.getDot(); + int len = alreadyEntered.length(); + int start = dot - len; + String replacement = getReplacementText(c, textComp.getDocument(), + start, len); + + caret.setDot(start); + caret.moveDot(dot); + textComp.replaceSelection(replacement); + + if (isParameterAssistanceEnabled() && + (c instanceof ParameterizedCompletion)) { + ParameterizedCompletion pc = (ParameterizedCompletion) c; + startParameterizedCompletionAssistance(pc, typedParamListStartChar); + } + + } + + + /** + * Installs this auto-completion on a text component. If this + * {@link AutoCompletion} is already installed on another text component, + * it is uninstalled first. + * + * @param c The text component. + * @see #uninstall() + */ + public void install(JTextComponent c) { + + if (textComponent != null) { + uninstall(); + } + + this.textComponent = c; + installTriggerKey(getTriggerKey()); + + // Install the function completion key, if there is one. + // NOTE: We cannot do this if the start char is ' ' (e.g. just a space + // between the function name and parameters) because it overrides + // RSTA's special space action. It seems KeyStorke.getKeyStroke(' ') + // hoses ctrl+space, shift+space, etc., even though I think it + // shouldn't... + char start = provider.getParameterListStart(); + if (start != 0 && start != ' ') { + InputMap im = c.getInputMap(); + ActionMap am = c.getActionMap(); + KeyStroke ks = KeyStroke.getKeyStroke(start); + oldParenKey = im.get(ks); + im.put(ks, PARAM_COMPLETE_KEY); + oldParenAction = am.get(PARAM_COMPLETE_KEY); + am.put(PARAM_COMPLETE_KEY, + new ParameterizedCompletionStartAction(start)); + } + + textComponentListener.addTo(this.textComponent); + // In case textComponent is already in a window... + textComponentListener.hierarchyChanged(null); + + if (isAutoActivationEnabled()) { + autoActivationListener.addTo(this.textComponent); + } + + UIManager.addPropertyChangeListener(lafListener); + updateUI(); // In case there have been changes since we uninstalled + + } + + + /** + * Installs a "trigger key" action onto the current text component. + * + * @param ks The keystroke that should trigger the action. + * @see #uninstallTriggerKey() + */ + private void installTriggerKey(KeyStroke ks) { + InputMap im = textComponent.getInputMap(); + oldTriggerKey = im.get(ks); + im.put(ks, PARAM_TRIGGER_KEY); + ActionMap am = textComponent.getActionMap(); + oldTriggerAction = am.get(PARAM_TRIGGER_KEY); + am.put(PARAM_TRIGGER_KEY, new AutoCompleteAction()); + } + + + /** + * Returns whether auto-activation is enabled (that is, whether the + * completion popup will automatically appear after a delay when the user + * types an appropriate character). Note that this parameter will be + * ignored if auto-completion is disabled. + * + * @return Whether auto-activation is enabled. + * @see #setAutoActivationEnabled(boolean) + * @see #getAutoActivationDelay() + * @see #isAutoCompleteEnabled() + */ + public boolean isAutoActivationEnabled() { + return autoActivationEnabled; + } + + + /** + * Returns whether auto-completion is enabled. + * + * @return Whether auto-completion is enabled. + * @see #setAutoCompleteEnabled(boolean) + */ + public boolean isAutoCompleteEnabled() { + return autoCompleteEnabled; + } + + + /** + * Returns whether parameter assistance is enabled. + * + * @return Whether parameter assistance is enabled. + * @see #setParameterAssistanceEnabled(boolean) + */ + public boolean isParameterAssistanceEnabled() { + return parameterAssistanceEnabled; + } + + + /** + * Returns whether the completion popup window is visible. + * + * @return Whether the completion popup window is visible. + */ + public boolean isPopupVisible() { + return popupWindow != null && popupWindow.isVisible(); + } + + + /** + * Refreshes the popup window. First, this method gets the possible + * completions for the current caret position. If there are none, and the + * popup is visible, it is hidden. If there are some completions and the + * popup is hidden, it is made visible and made to display the completions. + * If there are some completions and the popup is visible, its list is + * updated to the current set of completions. + * + * @return The current line number of the caret. + */ + protected int refreshPopupWindow() { + // A return value of null => don't suggest completions + String text = provider.getAlreadyEnteredText(textComponent); + if (text == null && !isPopupVisible()) { + return getLineOfCaret(); + } + // If the popup is currently visible, and they type a space (or any + // character that resets the completion list to "all completions"), + // the popup window should be hidden instead of being reset to show + // everything. + int textLen = text == null ? 0 : text.length(); + if (textLen == 0 && isPopupVisible()) { + hidePopupWindow(); + return getLineOfCaret(); + } + final List completions = provider.getCompletions(textComponent); + int count = completions.size(); + if (needSetPopupWindow(count, textLen)) { + if (popupWindow == null) { + popupWindow = createAutoCompletePopupWindow(); + } + popupWindow.setCompletions(completions); + if (!popupWindow.isVisible()) { + Rectangle r = null; + try { + r = textComponent.modelToView(textComponent.getCaretPosition()); + } catch (BadLocationException ble) { + return -1; + } + Point p = new Point(r.x, r.y); + SwingUtilities.convertPointToScreen(p, textComponent); + r.x = p.x; + r.y = p.y; + popupWindow.setLocationRelativeTo(r); + popupWindow.setVisible(true); + } + } else if (count == 1) { // !isPopupVisible && autoCompleteSingleChoices + SwingUtilities.invokeLater(new Runnable() { + public void run() { + insertCompletion(completions.get(0)); + } + }); + } else { + hidePopupWindow(); + } + return getLineOfCaret(); + } + + private boolean needSetPopupWindow(int count, int textLen) { + return (count == 1 && (isPopupVisible() || textLen == 0)) + || (count == 1 && !isAutoCompleteSingleChoices()) + || count > 1; + } + + private AutoCompletePopupWindow createAutoCompletePopupWindow() { + AutoCompletePopupWindow popupWindow = new AutoCompletePopupWindow(parentWindow, this); + // Completion is usually done for code, which is always done + // LTR, so make completion stuff RTL only if text component is + // also RTL. + popupWindow.applyComponentOrientation( + getTextComponentOrientation()); + if (renderer != null) { + popupWindow.setListCellRenderer(renderer); + } + if (preferredChoicesWindowSize != null) { + popupWindow.setSize(preferredChoicesWindowSize); + } + if (preferredDescWindowSize != null) { + popupWindow.setDescriptionWindowSize( + preferredDescWindowSize); + } + return popupWindow; + } + + /** + * Sets the delay between when the user types a character and when the + * code completion popup should automatically appear (if applicable). + * + * @param ms The delay, in milliseconds. This should be greater than zero. + * @see #getAutoActivationDelay() + */ + public void setAutoActivationDelay(int ms) { + ms = Math.max(0, ms); + autoActivationListener.timer.stop(); + autoActivationListener.timer.setInitialDelay(ms); + } + + + /** + * Toggles whether auto-activation is enabled. Note that auto-activation + * also depends on auto-completion itself being enabled. + * + * @param enabled Whether auto-activation is enabled. + * @see #isAutoActivationEnabled() + * @see #setAutoActivationDelay(int) + */ + public void setAutoActivationEnabled(boolean enabled) { + if (enabled != autoActivationEnabled) { + autoActivationEnabled = enabled; + if (textComponent != null) { + if (autoActivationEnabled) { + autoActivationListener.addTo(textComponent); + } else { + autoActivationListener.removeFrom(textComponent); + } + } + } + } + + + /** + * Sets whether auto-completion is enabled. + * + * @param enabled Whether auto-completion is enabled. + * @see #isAutoCompleteEnabled() + */ + public void setAutoCompleteEnabled(boolean enabled) { + if (enabled != autoCompleteEnabled) { + autoCompleteEnabled = enabled; + hidePopupWindow(); + } + } + + + /** + * Sets whether, if a single auto-complete choice is available, it should + * be automatically inserted, without displaying the popup menu. + * + * @param autoComplete Whether to auto-complete single choices. + * @see #isAutoCompleteSingleChoices() + */ + public void setAutoCompleteSingleChoices(boolean autoComplete) { + autoCompleteSingleChoices = autoComplete; + } + + + /** + * Sets the completion provider being used. + * + * @param provider The new completion provider. This cannot be + * null. + * @throws IllegalArgumentException If provider is + * null. + */ + public void setCompletionProvider(CompletionProvider provider) { + if (provider == null) { + throw new IllegalArgumentException("provider cannot be null"); + } + this.provider = provider; + hidePopupWindow(); // In case new choices should be displayed. + } + + + /** + * Sets the size of the completion choices window. + * + * @param w The new width. + * @param h The new height. + * @see #setDescriptionWindowSize(int, int) + */ + public void setChoicesWindowSize(int w, int h) { + preferredChoicesWindowSize = new Dimension(w, h); + if (popupWindow != null) { + popupWindow.setSize(preferredChoicesWindowSize); + } + } + + + /** + * Sets the size of the description window. + * + * @param w The new width. + * @param h The new height. + * @see #setChoicesWindowSize(int, int) + */ + public void setDescriptionWindowSize(int w, int h) { + preferredDescWindowSize = new Dimension(w, h); + if (popupWindow != null) { + popupWindow.setDescriptionWindowSize(preferredDescWindowSize); + } + } + + + /** + * Sets the handler to use when an external URL is clicked in the + * description window. This handler can perform some action, such as + * open the URL in a web browser. The default implementation will open + * the URL in a browser, but only if running in Java 6. If you want + * browser support for Java 5 and below, or otherwise want to respond to + * hyperlink clicks, you will have to install your own handler to do so. + * + * @param handler The new handler. + * @see #getExternalURLHandler() + */ + public void setExternalURLHandler(ExternalURLHandler handler) { + this.externalURLHandler = handler; + } + + + /** + * Sets the redirector for external URL's found in code completion + * documentation. When a non-local link in completion popups is clicked, + * this redirector is given the chance to modify the URL fetched and + * displayed. + * + * @param linkRedirector The link redirector, or null for + * none. + * @see #getLinkRedirector() + */ + public static void setLinkRedirector(LinkRedirector linkRedirector) { + AutoCompletion.linkRedirector = linkRedirector; + } + + + /** + * Sets the default list cell renderer to use when a completion provider + * does not supply its own. + * + * @param renderer The renderer to use. If this is null, + * a default renderer is used. + * @see #getListCellRenderer() + */ + public void setListCellRenderer(ListCellRenderer renderer) { + this.renderer = renderer; + if (popupWindow != null) { + popupWindow.setListCellRenderer(renderer); + hidePopupWindow(); + } + } + + + /** + * Sets the renderer to use for {@link Completion}s in the optional + * parameter choices popup window (displayed when a + * {@link ParameterizedCompletion} is code-completed). If this isn't set, + * a default renderer is used. + * + * @param r The renderer to use. + * @see #getParamChoicesRenderer() + * @see #setParameterAssistanceEnabled(boolean) + */ + public void setParamChoicesRenderer(ListCellRenderer r) { + paramChoicesRenderer = r; + } + + + /** + * Sets whether parameter assistance is enabled. If parameter assistance + * is enabled, and a "parameterized" completion (such as a function or + * method) is inserted, the user will get "assistance" in inserting the + * parameters in the form of a popup window with documentation and easy + * tabbing through the arguments (as seen in Eclipse and NetBeans). + * + * @param enabled Whether parameter assistance should be enabled. + * @see #isParameterAssistanceEnabled() + */ + public void setParameterAssistanceEnabled(boolean enabled) { + parameterAssistanceEnabled = enabled; + } + + + /** + * Sets whether the "description window" should be shown beside the + * completion window. + * + * @param show Whether to show the description window. + * @see #isShowDescWindow() + */ + public void setShowDescWindow(boolean show) { + hidePopupWindow(); // Needed to force it to take effect + showDescWindow = show; + } + + + /** + * Sets the keystroke that should be used to trigger the auto-complete + * popup window. + * + * @param ks The keystroke. + * @throws IllegalArgumentException If ks is null. + * @see #getTriggerKey() + */ + public void setTriggerKey(KeyStroke ks) { + if (ks == null) { + throw new IllegalArgumentException("trigger key cannot be null"); + } + if (!ks.equals(trigger)) { + if (textComponent != null) { + // Put old trigger action back. + uninstallTriggerKey(); + // Grab current action for new trigger and replace it. + installTriggerKey(ks); + } + trigger = ks; + } + } + + + /** + * Displays a "tool tip" detailing the inputs to the function just entered. + * + * @param pc The completion. + * @param typedParamListStartChar Whether the parameterized completion list + * starting character was typed. + */ + private void startParameterizedCompletionAssistance( + ParameterizedCompletion pc, boolean typedParamListStartChar) { + + // Get rid of the previous tool tip window, if there is one. + hideParameterCompletionPopups(); + + // Don't bother with a tool tip if there are no parameters, but if + // they typed e.g. the opening '(', make them overtype the ')'. + if (pc.getParamCount() == 0 && !(pc instanceof TemplateCompletion)) { + CompletionProvider p = pc.getProvider(); + char end = p.getParameterListEnd(); // Might be '\0' + String text = end == '\0' ? "" : Character.toString(end); + if (typedParamListStartChar) { + String template = "${}" + text + "${cursor}"; + textComponent.replaceSelection(Character.toString(p.getParameterListStart())); + TemplateCompletion tc = new TemplateCompletion(p, null, null, template); + pc = tc; + } else { + text = p.getParameterListStart() + text; + textComponent.replaceSelection(text); + return; + } + } + + pcc = new ParameterizedCompletionContext(parentWindow, this, pc); + pcc.activate(); + + } + + + /** + * Uninstalls this auto-completion from its text component. If it is not + * installed on any text component, nothing happens. + * + * @see #install(JTextComponent) + */ + public void uninstall() { + + if (textComponent != null) { + + hidePopupWindow(); // Unregisters listeners, actions, etc. + + uninstallTriggerKey(); + + // Uninstall the function completion key. + char start = provider.getParameterListStart(); + if (start != 0) { + KeyStroke ks = KeyStroke.getKeyStroke(start); + InputMap im = textComponent.getInputMap(); + im.put(ks, oldParenKey); + ActionMap am = textComponent.getActionMap(); + am.put(PARAM_COMPLETE_KEY, oldParenAction); + } + + textComponentListener.removeFrom(textComponent); + if (parentWindow != null) { + parentWindowListener.removeFrom(parentWindow); + } + + if (isAutoActivationEnabled()) { + autoActivationListener.removeFrom(textComponent); + } + + UIManager.removePropertyChangeListener(lafListener); + + textComponent = null; + popupWindow = null; + + } + + } + + + /** + * Replaces the "trigger key" action with the one that was there + * before auto-completion was installed. + * + * @see #installTriggerKey(KeyStroke) + */ + private void uninstallTriggerKey() { + InputMap im = textComponent.getInputMap(); + im.put(trigger, oldTriggerKey); + ActionMap am = textComponent.getActionMap(); + am.put(PARAM_TRIGGER_KEY, oldTriggerAction); + } + + + /** + * Updates the LookAndFeel of the popup window. Applications can call + * this method as appropriate if they support changing the LookAndFeel + * at runtime. + */ + private void updateUI() { + if (popupWindow != null) { + popupWindow.updateUI(); + } + if (pcc != null) { + pcc.updateUI(); + } + // Will practically always be a JComponent (a JLabel) + if (paramChoicesRenderer instanceof JComponent) { + ((JComponent) paramChoicesRenderer).updateUI(); + } + } + + + /** + * Listens for events in the text component to auto-activate the code + * completion popup. + */ + private class AutoActivationListener extends FocusAdapter + implements DocumentListener, CaretListener, ActionListener { + + private Timer timer; + private boolean justInserted; + + public AutoActivationListener() { + timer = new Timer(200, this); + timer.setRepeats(false); + } + + public void actionPerformed(ActionEvent e) { + doCompletion(); + } + + public void addTo(JTextComponent tc) { + tc.addFocusListener(this); + tc.getDocument().addDocumentListener(this); + tc.addCaretListener(this); + } + + public void caretUpdate(CaretEvent e) { + if (justInserted) { + justInserted = false; + } else { + timer.stop(); + } + } + + public void changedUpdate(DocumentEvent e) { + // Ignore + } + + @Override + public void focusLost(FocusEvent e) { + timer.stop(); + //hideChildWindows(); Other listener will do this + } + + public void insertUpdate(DocumentEvent e) { + justInserted = false; + if (isAutoCompleteEnabled() && isAutoActivationEnabled() && + e.getLength() == 1) { + if (provider.isAutoActivateOkay(textComponent)) { + timer.restart(); + justInserted = true; + } else { + timer.stop(); + } + } else { + timer.stop(); + } + } + + public void removeFrom(JTextComponent tc) { + tc.removeFocusListener(this); + tc.getDocument().removeDocumentListener(this); + tc.removeCaretListener(this); + timer.stop(); + justInserted = false; + } + + public void removeUpdate(DocumentEvent e) { + timer.stop(); + } + + } + + + /** + * The Action that displays the popup window if + * auto-completion is enabled. + */ + private class AutoCompleteAction extends AbstractAction { + + public void actionPerformed(ActionEvent e) { + if (isAutoCompleteEnabled()) { + refreshPopupWindow(); + } else if (oldTriggerAction != null) { + oldTriggerAction.actionPerformed(e); + } + } + + } + + + /** + * Listens for LookAndFeel changes and updates the various popup windows + * involved in auto-completion accordingly. + */ + private class LookAndFeelChangeListener implements PropertyChangeListener { + + public void propertyChange(PropertyChangeEvent e) { + String name = e.getPropertyName(); + if ("lookAndFeel".equals(name)) { + updateUI(); + } + } + + } + + + /** + * Action that starts a parameterized completion, e.g. after '(' is + * typed. + */ + private class ParameterizedCompletionStartAction extends AbstractAction { + + private String start; + + public ParameterizedCompletionStartAction(char ch) { + this.start = Character.toString(ch); + } + + public void actionPerformed(ActionEvent e) { + + // Prevents keystrokes from messing up + boolean wasVisible = hidePopupWindow(); + + // Only proceed if they were selecting a completion + if (!wasVisible || !isParameterAssistanceEnabled()) { + textComponent.replaceSelection(start); + return; + } + + Completion c = popupWindow.getSelection(); + if (c instanceof ParameterizedCompletion) { // Should always be true + // Fixes capitalization of the entered text. + insertCompletion(c, true); + } + + } + + } + + + /** + * Listens for events in the parent window of the text component with + * auto-completion enabled. + */ + private class ParentWindowListener extends ComponentAdapter + implements WindowFocusListener { + + public void addTo(Window w) { + w.addComponentListener(this); + w.addWindowFocusListener(this); + } + + @Override + public void componentHidden(ComponentEvent e) { + hideChildWindows(); + } + + @Override + public void componentMoved(ComponentEvent e) { + hideChildWindows(); + } + + @Override + public void componentResized(ComponentEvent e) { + hideChildWindows(); + } + + public void removeFrom(Window w) { + w.removeComponentListener(this); + w.removeWindowFocusListener(this); + } + + public void windowGainedFocus(WindowEvent e) { + } + + public void windowLostFocus(WindowEvent e) { + hideChildWindows(); + } + + } + + + /** + * Listens for events from the text component we're installed on. + */ + private class TextComponentListener extends FocusAdapter + implements HierarchyListener { + + void addTo(JTextComponent tc) { + tc.addFocusListener(this); + tc.addHierarchyListener(this); + } + + /** + * Hide the auto-completion windows when the text component loses + * focus. + */ + @Override + public void focusLost(FocusEvent e) { + hideChildWindows(); + } + + /** + * Called when the component hierarchy for our text component changes. + * When the text component is added to a new {@link Window}, this + * method registers listeners on that Window. + * + * @param e The event. + */ + public void hierarchyChanged(HierarchyEvent e) { + + // NOTE: e many be null as we call this method at other times. + //System.out.println("Hierarchy changed! " + e); + + Window oldParentWindow = parentWindow; + parentWindow = SwingUtilities.getWindowAncestor(textComponent); + if (parentWindow != oldParentWindow) { + if (oldParentWindow != null) { + parentWindowListener.removeFrom(oldParentWindow); + } + if (parentWindow != null) { + parentWindowListener.addTo(parentWindow); + } + } + + } + + public void removeFrom(JTextComponent tc) { + tc.removeFocusListener(this); + tc.removeHierarchyListener(this); + } + + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/gui/autocomplete/ParameterizedCompletionContext.java b/designer_base/src/com/fr/design/gui/autocomplete/ParameterizedCompletionContext.java index 62c68dc987..11bab3a7e6 100644 --- a/designer_base/src/com/fr/design/gui/autocomplete/ParameterizedCompletionContext.java +++ b/designer_base/src/com/fr/design/gui/autocomplete/ParameterizedCompletionContext.java @@ -14,6 +14,7 @@ import com.fr.design.gui.autocomplete.ParameterizedCompletionInsertionInfo.Repla import com.fr.design.gui.syntax.ui.rsyntaxtextarea.DocumentRange; import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxTextArea; import com.fr.design.gui.syntax.ui.rtextarea.ChangeableHighlightPainter; +import com.fr.general.FRLogger; import javax.swing.*; import javax.swing.event.CaretEvent; @@ -254,7 +255,7 @@ class ParameterizedCompletionContext { * * @param offs The offset into the document. * @return The text of the parameter containing the offset, or - * null if the offset is not in a parameter. + * null if the offset is not in a parameter. */ public String getArgumentText(int offs) { List paramHighlights = getParameterHighlights(); @@ -284,7 +285,7 @@ class ParameterizedCompletionContext { * Returns the highlight of the current parameter. * * @return The current parameter's highlight, or null if - * the caret is not in a parameter's bounds. + * the caret is not in a parameter's bounds. * @see #getCurrentParameterStartOffset() */ private Highlight getCurrentParameterHighlight() { @@ -332,7 +333,7 @@ class ParameterizedCompletionContext { * Returns the starting offset of the current parameter. * * @return The current parameter's starting offset, or -1 if - * the caret is not in a parameter's bounds. + * the caret is not in a parameter's bounds. * @see #getCurrentParameterHighlight() */ private int getCurrentParameterStartOffset() { @@ -407,7 +408,7 @@ class ParameterizedCompletionContext { * Inserts the choice selected in the parameter choices window. * * @return Whether the choice was inserted. This will be false - * if the window is not visible, or no choice is selected. + * if the window is not visible, or no choice is selected. */ boolean insertSelectedChoice() { if (paramChoicesWindow != null && paramChoicesWindow.isVisible()) { @@ -438,11 +439,9 @@ class ParameterizedCompletionContext { * @see #uninstallKeyBindings() */ private void installKeyBindings() { - - if (AutoCompletion.getDebug()) { - System.out.println("CompletionContext: Installing keybindings"); + if (AutoCompletion.isDebug()) { + FRLogger.getLogger().debug("CompletionContext: Installing keybindings"); } - JTextComponent tc = ac.getTextComponent(); InputMap im = tc.getInputMap(); ActionMap am = tc.getActionMap(); @@ -489,7 +488,6 @@ class ParameterizedCompletionContext { im.put(ks, IM_KEY_CLOSING); oldClosingAction = am.get(IM_KEY_CLOSING); am.put(IM_KEY_CLOSING, new ClosingAction()); - } @@ -513,12 +511,7 @@ class ParameterizedCompletionContext { List highlights = getParameterHighlights(); for (int i = 0; i < highlights.size(); i++) { Highlight hl = highlights.get(i); - // Check "< dot", not "<= dot" as OutlineHighlightPainter paints - // starting at one char AFTER the highlight starts, to work around - // Java issue. Thanks to Matthew Adereth! - if (currentNext == null || currentNext.getStartOffset() dot && - hl.getStartOffset() <= currentNext.getStartOffset())) { + if (needUpdate(currentNext, hl, dot)) { currentNext = hl; pos = i; } @@ -538,6 +531,15 @@ class ParameterizedCompletionContext { } + private boolean needUpdate(Highlight currentNext, Highlight hl, int dot) { + // Check "< dot", not "<= dot" as OutlineHighlightPainter paints + // starting at one char AFTER the highlight starts, to work around + // Java issue. Thanks to Matthew Adereth! + return currentNext == null || currentNext.getStartOffset() dot && + hl.getStartOffset() <= currentNext.getStartOffset()); + } + /** * Moves to and selects the previous parameter. @@ -562,10 +564,7 @@ class ParameterizedCompletionContext { for (int i = 0; i < highlights.size(); i++) { Highlight h = highlights.get(i); - if (currentPrev == null || currentPrev.getStartOffset() >= dot || - (h.getStartOffset() < selStart && - (h.getStartOffset() > currentPrev.getStartOffset() || - pos == lastSelectedParam))) { + if (pos == lastSelectedParam || needUpdate(currentPrev, dot, h, selStart)) { currentPrev = h; pos = i; } @@ -593,6 +592,12 @@ class ParameterizedCompletionContext { } + private boolean needUpdate(Highlight currentPrev, int dot, Highlight h, int selStart) { + return currentPrev == null + || currentPrev.getStartOffset() >= dot + || (currentPrev.getStartOffset() < h.getStartOffset() && h.getStartOffset() < selStart); + } + private void possiblyUpdateParamCopies(Document doc) { @@ -616,7 +621,7 @@ class ParameterizedCompletionContext { try { replacement = doc.getText(start, len); } catch (BadLocationException ble) { - // Never happens + // Never happens } // Replace any param copies tracking this parameter with the @@ -718,7 +723,7 @@ class ParameterizedCompletionContext { return h; } catch (BadLocationException ble) { - // Never happens + // Never happens } return null; @@ -733,8 +738,8 @@ class ParameterizedCompletionContext { */ private void uninstallKeyBindings() { - if (AutoCompletion.getDebug()) { - System.out.println("CompletionContext Uninstalling keybindings"); + if (AutoCompletion.isDebug()) { + FRLogger.getLogger().debug("CompletionContext Uninstalling keybindings"); } JTextComponent tc = ac.getTextComponent(); @@ -1037,7 +1042,6 @@ class ParameterizedCompletionContext { * @see #uninstall() */ public void install(JTextComponent tc) { - boolean replaceTabs = false; if (tc instanceof RSyntaxTextArea) { RSyntaxTextArea textArea = (RSyntaxTextArea) tc; @@ -1047,14 +1051,10 @@ class ParameterizedCompletionContext { } Highlighter h = tc.getHighlighter(); - try { - // Insert the parameter text - ParameterizedCompletionInsertionInfo info = - pc.getInsertionInfo(tc, replaceTabs); + ParameterizedCompletionInsertionInfo info = pc.getInsertionInfo(tc, replaceTabs); tc.replaceSelection(info.getTextToInsert()); - // Add highlights around the parameters. final int replacementCount = info.getReplacementCount(); for (int i = 0; i < replacementCount; i++) { @@ -1067,40 +1067,31 @@ class ParameterizedCompletionContext { for (int i = 0; i < info.getReplacementCopyCount(); i++) { ReplacementCopy rc = info.getReplacementCopy(i); paramCopyInfos.add(new ParamCopyInfo(rc.getId(), - (Highlight) h.addHighlight(rc.getStart(), rc.getEnd(), - paramCopyP))); + (Highlight) h.addHighlight(rc.getStart(), rc.getEnd(), paramCopyP))); } - // Go back and start at the first parameter. tc.setCaretPosition(info.getSelectionStart()); if (info.hasSelection()) { tc.moveCaretPosition(info.getSelectionEnd()); } - minPos = info.getMinOffset(); maxPos = info.getMaxOffset(); try { - defaultEndOffs = tc.getDocument().createPosition( - info.getDefaultEndOffs()); + defaultEndOffs = tc.getDocument().createPosition(info.getDefaultEndOffs()); } catch (BadLocationException ble) { - // Never happens + // Never happens } - // Listen for document events AFTER we insert tc.getDocument().addDocumentListener(this); - } catch (BadLocationException ble) { - // Never happens + // Never happens } - // Add listeners to the text component, AFTER text insertion. tc.addCaretListener(this); tc.addFocusListener(this); installKeyBindings(); - } - public void removeUpdate(DocumentEvent e) { handleDocumentEvent(e); } diff --git a/designer_base/src/com/fr/design/gui/chart/BaseChartPropertyPane.java b/designer_base/src/com/fr/design/gui/chart/BaseChartPropertyPane.java index c5b58ae268..327c444684 100644 --- a/designer_base/src/com/fr/design/gui/chart/BaseChartPropertyPane.java +++ b/designer_base/src/com/fr/design/gui/chart/BaseChartPropertyPane.java @@ -2,7 +2,6 @@ package com.fr.design.gui.chart; import com.fr.base.chart.BaseChartCollection; import com.fr.design.designer.TargetComponent; -import com.fr.design.mainframe.BaseWidgetPropertyPane; import com.fr.design.mainframe.DockingView; /** @@ -23,5 +22,7 @@ public abstract class BaseChartPropertyPane extends DockingView { public abstract ChartEditPaneProvider getChartEditPane(); + public abstract void addChartEditPane(String plotID); + //public abstract void clear(); } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/gui/frpane/UIAdvancedTextPane.java b/designer_base/src/com/fr/design/gui/frpane/UIAdvancedTextPane.java index 0194551da4..4cff0ef2d3 100644 --- a/designer_base/src/com/fr/design/gui/frpane/UIAdvancedTextPane.java +++ b/designer_base/src/com/fr/design/gui/frpane/UIAdvancedTextPane.java @@ -143,7 +143,7 @@ public class UIAdvancedTextPane extends UITextPane { setName(Inter.getLocText("M_Edit-Cut")); setMnemonic('T'); setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_edit/cut.png")); - setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_MASK)); + setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_MASK)); } public void actionPerformed(ActionEvent evt) { diff --git a/designer_base/src/com/fr/design/gui/icombobox/ExtendedComboBox.java b/designer_base/src/com/fr/design/gui/icombobox/ExtendedComboBox.java index 86a5b5cf26..295b2d673f 100644 --- a/designer_base/src/com/fr/design/gui/icombobox/ExtendedComboBox.java +++ b/designer_base/src/com/fr/design/gui/icombobox/ExtendedComboBox.java @@ -1,21 +1,15 @@ package com.fr.design.gui.icombobox; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.Point; -import java.awt.Rectangle; +import javax.swing.*; +import javax.swing.plaf.ComponentUI; +import javax.swing.plaf.basic.BasicComboPopup; +import javax.swing.plaf.basic.ComboPopup; +import java.awt.*; import java.awt.event.InputEvent; import java.awt.event.MouseEvent; import java.util.Vector; -import javax.swing.ComboBoxModel; -import javax.swing.JComboBox; -import javax.swing.JComponent; -import javax.swing.JList; -import javax.swing.ListCellRenderer; -import javax.swing.plaf.ComponentUI; -import javax.swing.plaf.basic.BasicComboPopup; -import javax.swing.plaf.basic.ComboPopup; +import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_MODIFIER; public class ExtendedComboBox extends UIComboBox { diff --git a/designer_base/src/com/fr/design/gui/icombobox/UIComboBoxUI.java b/designer_base/src/com/fr/design/gui/icombobox/UIComboBoxUI.java index 28ae0aebf7..032f756438 100644 --- a/designer_base/src/com/fr/design/gui/icombobox/UIComboBoxUI.java +++ b/designer_base/src/com/fr/design/gui/icombobox/UIComboBoxUI.java @@ -1,28 +1,20 @@ package com.fr.design.gui.icombobox; -import java.awt.Color; -import java.awt.Component; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.Point; -import java.awt.Rectangle; -import java.awt.RenderingHints; -import java.awt.event.InputEvent; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; - -import javax.swing.*; -import javax.swing.plaf.basic.BasicComboBoxUI; -import javax.swing.plaf.basic.BasicComboPopup; -import javax.swing.plaf.basic.ComboPopup; - import com.fr.design.constants.UIConstants; -import sun.swing.DefaultLookup; - import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.stable.Constants; import com.fr.stable.StringUtils; +import sun.swing.DefaultLookup; + +import javax.swing.*; +import javax.swing.plaf.basic.BasicComboBoxUI; +import javax.swing.plaf.basic.BasicComboPopup; +import javax.swing.plaf.basic.ComboPopup; +import java.awt.*; +import java.awt.event.InputEvent; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; /** * @author zhou F diff --git a/designer_base/src/com/fr/design/gui/ilist/CheckBoxList.java b/designer_base/src/com/fr/design/gui/ilist/CheckBoxList.java index 0ef0f829a0..880e94d557 100644 --- a/designer_base/src/com/fr/design/gui/ilist/CheckBoxList.java +++ b/designer_base/src/com/fr/design/gui/ilist/CheckBoxList.java @@ -1,311 +1,300 @@ package com.fr.design.gui.ilist; -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; +import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.stable.StringUtils; + +import javax.swing.*; +import javax.swing.border.Border; +import javax.swing.border.EmptyBorder; +import java.awt.*; +import java.awt.event.*; import java.util.ArrayList; import java.util.Arrays; import java.util.EventListener; import java.util.List; -import javax.swing.JComponent; -import javax.swing.JList; -import javax.swing.ListCellRenderer; -import javax.swing.ListModel; -import javax.swing.ListSelectionModel; -import javax.swing.UIManager; -import javax.swing.border.Border; -import javax.swing.border.EmptyBorder; - -import com.fr.design.gui.icheckbox.UICheckBox; -import com.fr.stable.StringUtils; - /** * CheckBoxs + JList. */ public class CheckBoxList extends JComponent { - /** - * 选择状态----全选和全不选 - * - * @editor zhou - * @since 2012-4-1下午2:39:10 - */ - public static enum SelectedState { - ALL, NONE - } - - private boolean[] selects; - private JList jlist; - private UICheckBox chooseAll; - - public CheckBoxList(Object[] items) { - this(items, SelectedState.NONE, StringUtils.EMPTY); - } - - public CheckBoxList(Object[] items, String name) { - this(items, SelectedState.NONE, name); - } - - /** - * Class constructor. - * - * @param items - * Items with which to populate the list. - * @param default_state - * default state, true or false - */ - public CheckBoxList(Object[] items, SelectedState state, String name) { - jlist = new BOXLIST(items); - jlist.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); - this.selects = new boolean[items.length]; - boolean default_state = (state == SelectedState.ALL); - Arrays.fill(this.selects, default_state); - - jlist.setCellRenderer(new CheckListCellRenderer()); - jlist.addMouseListener(new MouseAdapter() { - public void mousePressed(MouseEvent e) { - doCheck(); - } - - public void mouseReleased(MouseEvent e) { - doCheck(); - } - }); - jlist.addKeyListener(new KeyAdapter() { - - @Override - public void keyTyped(KeyEvent e) { - if (e.getKeyChar() == ' ') { - doCheck(); - } - } - - }); - this.setLayout(new BorderLayout()); - chooseAll = new UICheckBox(name, default_state); - chooseAll.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - if (chooseAll.isSelected()) { - setSelected(true); - } else { - setSelected(false); - } - } - }); - this.add(chooseAll, BorderLayout.NORTH); - this.add(jlist, BorderLayout.CENTER); - } - - /* - * 用于CellRenderer显示value为text - */ - protected String value2Text(Object value) { - return value != null ? value.toString() : StringUtils.EMPTY; - } - - public void setItems(Object[] os) { - if (os == null) { - this.setSelected(false); - } else { - for (int i = 0, len = os.length; i < len; i++) { - Object o = os[i]; - for (int j = 0, jen = jlist.getModel().getSize(); j < jen; j++) { - if (o.equals(jlist.getModel().getElementAt(j))) { - this.setSelected(j, true); - } - } - } - } - this.repaint(); - } - - /** - * Is selected - */ - public boolean isSelected(int index) { - if (selects == null || index >= selects.length) { - return false; - } - - return selects[index]; - } - - public void setSelected(int index, boolean isSelected) { - if (selects == null || index >= selects.length) { - return; - } - - selects[index] = isSelected; - this.repaint(this.getBounds()); - - this.fireCheckBoxListSelectionChangeListener(); - } - - private void setSelected(boolean isSelected) { - if (selects == null) { - return; - } - for (int i = 0; i < selects.length; i++) { - selects[i] = isSelected; - } - this.repaint(this.getBounds()); - - this.fireCheckBoxListSelectionChangeListener(); - } - - /** - * Returns an array of the objects that have been selected. Overrides the - * JList method. - */ - public Object[] getSelectedValues() { - return this.jlist.getSelectedValues(); - } - - private class BOXLIST extends JList { - public BOXLIST(Object[] items) { - super(items); - } - - @Override - protected void processMouseEvent(MouseEvent e) { - if (e.getX() < 20) { - if (e.isControlDown() || e.isAltDown() || e.isShiftDown() || e.isMetaDown()) { - int[] indices = getSelectedIndices(); - if (indices.length == 0) { - super.processMouseEvent(e); - } - } else { - super.processMouseEvent(e); - } - } else { - super.processMouseEvent(e); - } - int id = e.getID(); - switch (id) { - case MouseEvent.MOUSE_PRESSED: - break; - case MouseEvent.MOUSE_RELEASED: - break; - case MouseEvent.MOUSE_CLICKED: - doCheck(); - break; - case MouseEvent.MOUSE_EXITED: - break; - case MouseEvent.MOUSE_ENTERED: - break; - } - } - - @Override - protected void processMouseMotionEvent(MouseEvent e) { - if (e.getX() < 20) { - return; - } - - super.processMouseEvent(e); - } - - @Override - public Object[] getSelectedValues() { - List list = new ArrayList(selects.length); - for (int i = 0; i < selects.length; i++) { - if (selects[i]) { - list.add(this.getModel().getElementAt(i)); - } - } - - return list.toArray(); - } - - } - - private void doCheck() { - // p:这里必须改变所有选择checkbox. - int index = jlist.getSelectedIndex(); - boolean sValue = !selects[index]; - - // p:开始设置所有选择的checkbox. - int[] indices = jlist.getSelectedIndices(); - for (int i = 0; i < indices.length; i++) { - setSelected(indices[i], sValue); - } - for (boolean selected : selects) { - if (!selected) { - chooseAll.setSelected(false); - return; - } - } - chooseAll.setSelected(true); - repaint(); - } - - private static final Border noFocusBorder = new EmptyBorder(1, 1, 1, 1); - - private class CheckListCellRenderer extends UICheckBox implements ListCellRenderer { - - public CheckListCellRenderer() { - this.setOpaque(true); - this.setBorder(noFocusBorder); - } - - public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { - this.setText(value2Text(value)); - this.setSelected(selects[index]); - this.setFont(list.getFont()); - - if (isSelected) { - this.setBackground(list.getSelectionBackground()); - this.setForeground(list.getSelectionForeground()); - } else { - this.setBackground(list.getBackground()); - this.setForeground(list.getForeground()); - } - - if (cellHasFocus) { - this.setBorder(UIManager.getBorder("List.focusCellHighlightBorder")); - } else { - this.setBorder(noFocusBorder); - } - - return this; - } - } - - public void addCheckBoxListSelectionChangeListener(CheckBoxListSelectionChangeListener l) { - this.listenerList.add(CheckBoxListSelectionChangeListener.class, l); - } - - public void removeCheckBoxListSelectionChangeListener(CheckBoxListSelectionChangeListener l) { - this.listenerList.remove(CheckBoxListSelectionChangeListener.class, l); - } - - public void fireCheckBoxListSelectionChangeListener() { - // Guaranteed to return a non-null array - Object[] listeners = listenerList.getListenerList(); - - // Process the listeners last to first, notifying - // those that are interested in this event - for (int i = listeners.length - 2; i >= 0; i -= 2) { - if (listeners[i] == CheckBoxListSelectionChangeListener.class) { - ((CheckBoxListSelectionChangeListener)listeners[i + 1]).selectionChanged(this); - } - } - - } - - public static interface CheckBoxListSelectionChangeListener extends EventListener { - public void selectionChanged(CheckBoxList target); - } - - public ListModel getModel() { - return jlist.getModel(); - } + private final static int X_COORDINATE = 20; + + /** + * 选择状态----全选和全不选 + * + * @editor zhou + * @since 2012-4-1下午2:39:10 + */ + public static enum SelectedState { + ALL, NONE + } + + private boolean[] selects; + private JList jlist; + private UICheckBox chooseAll; + + public CheckBoxList(Object[] items) { + this(items, SelectedState.NONE, StringUtils.EMPTY); + } + + public CheckBoxList(Object[] items, String name) { + this(items, SelectedState.NONE, name); + } + + /** + * Class constructor. + * + * @param items Items with which to populate the list. + * @param state default state, true or false + */ + public CheckBoxList(Object[] items, SelectedState state, String name) { + jlist = new BOXLIST(items); + jlist.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); + this.selects = new boolean[items.length]; + boolean default_state = (state == SelectedState.ALL); + Arrays.fill(this.selects, default_state); + + jlist.setCellRenderer(new CheckListCellRenderer()); + jlist.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + doCheck(); + } + + public void mouseReleased(MouseEvent e) { + doCheck(); + } + }); + jlist.addKeyListener(new KeyAdapter() { + + @Override + public void keyTyped(KeyEvent e) { + if (e.getKeyChar() == ' ') { + doCheck(); + } + } + + }); + this.setLayout(new BorderLayout()); + chooseAll = new UICheckBox(name, default_state); + chooseAll.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + if (chooseAll.isSelected()) { + setSelected(true); + } else { + setSelected(false); + } + } + }); + this.add(chooseAll, BorderLayout.NORTH); + this.add(jlist, BorderLayout.CENTER); + } + + /* + * 用于CellRenderer显示value为text + */ + protected String value2Text(Object value) { + return value != null ? value.toString() : StringUtils.EMPTY; + } + + public void setItems(Object[] os) { + if (os == null) { + this.setSelected(false); + } else { + for (int i = 0, len = os.length; i < len; i++) { + Object o = os[i]; + for (int j = 0, jen = jlist.getModel().getSize(); j < jen; j++) { + if (o.equals(jlist.getModel().getElementAt(j))) { + this.setSelected(j, true); + } + } + } + } + this.repaint(); + } + + /** + * Is selected + */ + public boolean isSelected(int index) { + if (selects == null || index >= selects.length) { + return false; + } + + return selects[index]; + } + + public void setSelected(int index, boolean isSelected) { + if (selects == null || index >= selects.length) { + return; + } + + selects[index] = isSelected; + this.repaint(this.getBounds()); + + this.fireCheckBoxListSelectionChangeListener(); + } + + private void setSelected(boolean isSelected) { + if (selects == null) { + return; + } + for (int i = 0; i < selects.length; i++) { + selects[i] = isSelected; + } + this.repaint(this.getBounds()); + + this.fireCheckBoxListSelectionChangeListener(); + } + + /** + * Returns an array of the objects that have been selected. Overrides the + * JList method. + */ + public Object[] getSelectedValues() { + return this.jlist.getSelectedValues(); + } + + private class BOXLIST extends JList { + public BOXLIST(Object[] items) { + super(items); + } + + @Override + protected void processMouseEvent(MouseEvent e) { + if (e.getX() < X_COORDINATE) { + boolean anyMaskDown = e.isControlDown() || e.isAltDown() || e.isShiftDown() || e.isMetaDown(); + if (anyMaskDown) { + int[] indices = getSelectedIndices(); + if (indices.length == 0) { + super.processMouseEvent(e); + } + } else { + super.processMouseEvent(e); + } + } else { + super.processMouseEvent(e); + } + int id = e.getID(); + switch (id) { + case MouseEvent.MOUSE_PRESSED: + break; + case MouseEvent.MOUSE_RELEASED: + break; + case MouseEvent.MOUSE_CLICKED: + doCheck(); + break; + case MouseEvent.MOUSE_EXITED: + break; + case MouseEvent.MOUSE_ENTERED: + break; + } + } + + @Override + protected void processMouseMotionEvent(MouseEvent e) { + if (e.getX() < X_COORDINATE) { + return; + } + + super.processMouseEvent(e); + } + + @Override + public Object[] getSelectedValues() { + List list = new ArrayList(selects.length); + for (int i = 0; i < selects.length; i++) { + if (selects[i]) { + list.add(this.getModel().getElementAt(i)); + } + } + + return list.toArray(); + } + + } + + private void doCheck() { + // p:这里必须改变所有选择checkbox. + int index = jlist.getSelectedIndex(); + boolean sValue = !selects[index]; + + // p:开始设置所有选择的checkbox. + int[] indices = jlist.getSelectedIndices(); + for (int i = 0; i < indices.length; i++) { + setSelected(indices[i], sValue); + } + for (boolean selected : selects) { + if (!selected) { + chooseAll.setSelected(false); + return; + } + } + chooseAll.setSelected(true); + repaint(); + } + + private static final Border NO_FOCUS_BORDER = new EmptyBorder(1, 1, 1, 1); + + private class CheckListCellRenderer extends UICheckBox implements ListCellRenderer { + + public CheckListCellRenderer() { + this.setOpaque(true); + this.setBorder(NO_FOCUS_BORDER); + } + + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + this.setText(value2Text(value)); + this.setSelected(selects[index]); + this.setFont(list.getFont()); + + if (isSelected) { + this.setBackground(list.getSelectionBackground()); + this.setForeground(list.getSelectionForeground()); + } else { + this.setBackground(list.getBackground()); + this.setForeground(list.getForeground()); + } + + if (cellHasFocus) { + this.setBorder(UIManager.getBorder("List.focusCellHighlightBorder")); + } else { + this.setBorder(NO_FOCUS_BORDER); + } + + return this; + } + } + + public void addCheckBoxListSelectionChangeListener(CheckBoxListSelectionChangeListener l) { + this.listenerList.add(CheckBoxListSelectionChangeListener.class, l); + } + + public void removeCheckBoxListSelectionChangeListener(CheckBoxListSelectionChangeListener l) { + this.listenerList.remove(CheckBoxListSelectionChangeListener.class, l); + } + + public void fireCheckBoxListSelectionChangeListener() { + // Guaranteed to return a non-null array + Object[] listeners = listenerList.getListenerList(); + + // Process the listeners last to first, notifying + // those that are interested in this event + for (int i = listeners.length - 2; i >= 0; i -= 2) { + if (listeners[i] == CheckBoxListSelectionChangeListener.class) { + ((CheckBoxListSelectionChangeListener) listeners[i + 1]).selectionChanged(this); + } + } + + } + + public static interface CheckBoxListSelectionChangeListener extends EventListener { + public void selectionChanged(CheckBoxList target); + } + + public ListModel getModel() { + return jlist.getModel(); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/gui/ilist/UIList.java b/designer_base/src/com/fr/design/gui/ilist/UIList.java index b01f40f0b8..8916cf18c8 100644 --- a/designer_base/src/com/fr/design/gui/ilist/UIList.java +++ b/designer_base/src/com/fr/design/gui/ilist/UIList.java @@ -17,7 +17,7 @@ import java.util.Vector; * Time: 上午11:07 * To change this template use File | Settings | File Templates. */ -public class UIList extends JList{ +public class UIList extends JList { private Icon icon; public UIList() { @@ -46,12 +46,12 @@ public class UIList extends JList{ if (rendererComp.getPreferredSize().width > getVisibleRect().width) { String tips = (rendererComp instanceof JComponent) ? ((JComponent) rendererComp).getToolTipText() : null; if (tips == null) { - if(value instanceof JTemplate){ + if (value instanceof JTemplate) { tips = ((JTemplate) value).getEditingFILE().getName(); icon = ((JTemplate) value).getEditingFILE().getIcon(); - } else if (value instanceof ListModelElement || value instanceof TableProcedure){ - tips = ((JLabel)rendererComp).getText(); - icon = ((JLabel)rendererComp).getIcon(); + } else if (value instanceof ListModelElement || value instanceof TableProcedure) { + tips = ((JLabel) rendererComp).getText(); + icon = ((JLabel) rendererComp).getIcon(); } } return tips; @@ -71,6 +71,7 @@ public class UIList extends JList{ } return null; } + public JToolTip createToolTip() { UIToolTip tip = new UIToolTip(icon); tip.setComponent(this); diff --git a/designer_base/src/com/fr/design/gui/itable/TableSorter.java b/designer_base/src/com/fr/design/gui/itable/TableSorter.java index 0ea84af03d..c8c517e642 100644 --- a/designer_base/src/com/fr/design/gui/itable/TableSorter.java +++ b/designer_base/src/com/fr/design/gui/itable/TableSorter.java @@ -15,6 +15,7 @@ import java.util.List; import java.util.Map; import javax.swing.Icon; + import com.fr.design.gui.ilable.UILabel; import javax.swing.JTable; import javax.swing.event.TableModelEvent; @@ -79,7 +80,7 @@ import javax.swing.table.TableModel; public class TableSorter extends AbstractTableModel { protected TableModel tableModel; - + private static final int ADD = 4; public static final int DESCENDING = -1; public static final int NOT_SORTED = 0; public static final int ASCENDING = 1; @@ -341,17 +342,14 @@ public class TableSorter extends AbstractTableModel { fireTableChanged(e); return; } - - // If the table structure has changed, cancel the sorting; the - // sorting columns may have been either moved or deleted from - // the model. + // If the table structure has changed, cancel the sorting; the + // sorting columns may have been either moved or deleted from the model. if (e.getFirstRow() == TableModelEvent.HEADER_ROW) { cancelSorting(); fireTableChanged(e); return; } - - // We can map a cell event through to the view without widening + // We can map a cell event through to the view without widening // when the following conditions apply: // // a) all the changes are on one row (e.getFirstRow() == e.getLastRow()) and, @@ -380,8 +378,7 @@ public class TableSorter extends AbstractTableModel { column, e.getType())); return; } - - // Something has happened to the data that may have invalidated the row order. + // Something has happened to the data that may have invalidated the row order. clearSortingState(); fireTableDataChanged(); return; @@ -402,7 +399,7 @@ public class TableSorter extends AbstractTableModel { // Cycle the sorting states through {NOT_SORTED, ASCENDING, DESCENDING} or // {NOT_SORTED, DESCENDING, ASCENDING} depending on whether shift is pressed. status = status + (e.isShiftDown() ? -1 : 1); - status = (status + 4) % 3 - 1; // signed mod, returning {-1, 0, 1} + status = (status + ADD) % 3 - 1; // signed mod, returning {-1, 0, 1} setSortingStatus(column, status); } } diff --git a/designer_base/src/com/fr/design/gui/itabpane/UITabsHeaderIconPane.java b/designer_base/src/com/fr/design/gui/itabpane/UITabsHeaderIconPane.java index 1ba60ed579..8582b5eef8 100644 --- a/designer_base/src/com/fr/design/gui/itabpane/UITabsHeaderIconPane.java +++ b/designer_base/src/com/fr/design/gui/itabpane/UITabsHeaderIconPane.java @@ -1,37 +1,22 @@ package com.fr.design.gui.itabpane; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.GradientPaint; -import java.awt.Graphics2D; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.AbstractAction; -import javax.swing.ActionMap; -import javax.swing.BorderFactory; -import javax.swing.Icon; -import javax.swing.InputMap; -import javax.swing.JComponent; - -import com.fr.design.constants.UIConstants; -import com.fr.design.gui.ilable.UILabel; -import javax.swing.JPanel; -import javax.swing.KeyStroke; -import javax.swing.SwingConstants; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - import com.fr.base.BaseUtils; +import com.fr.design.constants.UIConstants; import com.fr.design.gui.core.UITabComponent; import com.fr.design.gui.ibutton.UITabButton; +import com.fr.design.gui.ilable.UILabel; import com.fr.stable.StringUtils; +import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.KeyEvent; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + /** * 本来想弄个延迟加载的,发现在单元格属性表那边没有意义,就算了.这个面板是纯粹的,没有与模板的任何交互操作(比如说populate() update()) * @@ -40,6 +25,7 @@ import com.fr.stable.StringUtils; */ public class UITabsHeaderIconPane extends JPanel implements UITabComponent { private static final long serialVersionUID = 1L; + private static final int DIS = 30; private UILabel nameLabel; @@ -143,9 +129,7 @@ public class UITabsHeaderIconPane extends JPanel implements UITabComponent { private void show(final JPanel panel) { int count = centerPane.getComponentCount();// 获取centerPanel中控件数 List list = new ArrayList();// - for (Component comp : centerPane.getComponents()) { - list.add(comp); - } + list.addAll(Arrays.asList(centerPane.getComponents())); if (count > 0) {// 如果centerPanel中控件数大于0就执行效果 for (int i = 0; i < count; i++) { Component comp = centerPane.getComponent(i);// 获得该位置的控件 @@ -159,11 +143,11 @@ public class UITabsHeaderIconPane extends JPanel implements UITabComponent { int height = centerPane.getHeight(); int width = centerPane.getWidth(); int y = -height; - for (int i = 0; i <= height; i += 30) { + for (int i = 0; i <= height; i += DIS) { // 设置面板位置 currentPanel.setBounds(0, i, width, height); panel.setBounds(0, y, width, height); - y += 30; + y += DIS; try { Thread.sleep(3); } catch (InterruptedException e) { @@ -173,7 +157,6 @@ public class UITabsHeaderIconPane extends JPanel implements UITabComponent { centerPane.remove(currentPanel);// 移除当前面板 } panel.setBounds(0, 0, width, height); - } }.start(); break; diff --git a/designer_base/src/com/fr/design/gui/itextfield/UITextField.java b/designer_base/src/com/fr/design/gui/itextfield/UITextField.java index 7a451593bd..bf5b856281 100644 --- a/designer_base/src/com/fr/design/gui/itextfield/UITextField.java +++ b/designer_base/src/com/fr/design/gui/itextfield/UITextField.java @@ -1,20 +1,17 @@ package com.fr.design.gui.itextfield; -import java.awt.*; - -import javax.swing.JFrame; -import javax.swing.JPanel; -import javax.swing.JTextField; -import javax.swing.event.DocumentEvent; -import javax.swing.event.DocumentListener; -import javax.swing.text.Document; - import com.fr.design.event.GlobalNameListener; import com.fr.design.event.GlobalNameObserver; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; -import com.fr.stable.Constants; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.stable.Constants; + +import javax.swing.*; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.text.Document; +import java.awt.*; /** * @author Jerry @@ -186,6 +183,7 @@ public class UITextField extends JTextField implements UIObserver, GlobalNameObs /** * 主函数 + * * @param args 参数 */ public static void main(String... args) { diff --git a/designer_base/src/com/fr/design/gui/itree/checkboxtree/CheckBoxTree.java b/designer_base/src/com/fr/design/gui/itree/checkboxtree/CheckBoxTree.java index 0511504cf7..b81ea7c38b 100644 --- a/designer_base/src/com/fr/design/gui/itree/checkboxtree/CheckBoxTree.java +++ b/designer_base/src/com/fr/design/gui/itree/checkboxtree/CheckBoxTree.java @@ -5,8 +5,14 @@ */ package com.fr.design.gui.itree.checkboxtree; -import java.awt.Component; -import java.awt.Rectangle; +import com.fr.design.gui.icheckbox.UICheckBox; + +import javax.swing.*; +import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.TreeSelectionListener; +import javax.swing.text.Position; +import javax.swing.tree.*; +import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; @@ -16,19 +22,6 @@ import java.beans.PropertyChangeListener; import java.util.Hashtable; import java.util.Vector; -import javax.swing.JTree; -import javax.swing.SwingUtilities; -import javax.swing.event.TreeSelectionEvent; -import javax.swing.event.TreeSelectionListener; -import javax.swing.text.Position; -import javax.swing.tree.DefaultTreeCellRenderer; -import javax.swing.tree.TreeCellRenderer; -import javax.swing.tree.TreeModel; -import javax.swing.tree.TreeNode; -import javax.swing.tree.TreePath; - -import com.fr.design.gui.icheckbox.UICheckBox; - /** * CheckBoxTree is a special JTree which uses UICheckBox as the tree renderer. * In addition to regular JTree's features, it also allows you select any number @@ -37,11 +30,11 @@ import com.fr.design.gui.icheckbox.UICheckBox; * select one or several tree nodes and press SPACE key to toggle the * check box selection for all selected tree nodes. *

- * In order to retrieve which tree paths are selected, you need to call + * In order to retrieve which tree paths are selected, you need to call * {@link #getCheckBoxTreeSelectionModel()}. - * It will return the selection model that keeps track of which tree + * It will return the selection model that keeps track of which tree * paths have been checked. For example - * {@link CheckBoxTreeSelectionModel#getSelectionPaths()} + * {@link CheckBoxTreeSelectionModel#getSelectionPaths()} * will give the list of paths which have * been checked. */ @@ -111,7 +104,7 @@ public class CheckBoxTree extends JTree { addPropertyChangeListener(JTree.SELECTION_MODEL_PROPERTY, _modelChangeListener); updateRowMapper(); } - + /** * Inserts the mouse listener at the particular index in the listeners' chain. * @@ -122,7 +115,7 @@ public class CheckBoxTree extends JTree { private void insertMouseListener(Component component, MouseListener l, int index) { MouseListener[] listeners = component.getMouseListeners(); for (int i = 0, length = listeners.length; i < length; i++) { - component.removeMouseListener(listeners[i]); + component.removeMouseListener(listeners[i]); } // for (MouseListener listener : listeners) { // component.removeMouseListener(listener); @@ -168,7 +161,7 @@ public class CheckBoxTree extends JTree { * Gets the cell renderer with check box. * * @return CheckBoxTree's own cell renderer which has the check box. The actual cell renderer - * you set by setCellRenderer() can be accessed by using {@link #getActualCellRenderer()}. + * you set by setCellRenderer() can be accessed by using {@link #getActualCellRenderer()}. */ public TreeCellRenderer getCellRenderer() { TreeCellRenderer cellRenderer = super.getCellRenderer(); @@ -177,8 +170,7 @@ public class CheckBoxTree extends JTree { } if (_treeCellRenderer == null) { _treeCellRenderer = createCellRenderer(cellRenderer); - } - else { + } else { _treeCellRenderer.setActualTreeRenderer(cellRenderer); } return _treeCellRenderer; @@ -194,8 +186,7 @@ public class CheckBoxTree extends JTree { public TreeCellRenderer getActualCellRenderer() { if (_treeCellRenderer != null) { return _treeCellRenderer.getActualTreeRenderer(); - } - else { + } else { return super.getCellRenderer(); } } @@ -245,13 +236,13 @@ public class CheckBoxTree extends JTree { } TreePath path = _tree.getPathForLocation(e.getX(), e.getY()); - if (path == null) + if (path == null) { return null; + } if (clicksInCheckBox(e, path)) { return path; - } - else { + } else { return null; } } @@ -259,13 +250,11 @@ public class CheckBoxTree extends JTree { protected boolean clicksInCheckBox(MouseEvent e, TreePath path) { if (!_tree.isCheckBoxVisible(path)) { return false; - } - else { + } else { Rectangle bounds = _tree.getPathBounds(path); if (_tree.getComponentOrientation().isLeftToRight()) { return e.getX() < bounds.x + _hotspot; - } - else { + } else { return e.getX() > bounds.x + bounds.width - _hotspot; } } @@ -320,8 +309,9 @@ public class CheckBoxTree extends JTree { return; } - if (e.getModifiers() == 0 && e.getKeyChar() == KeyEvent.VK_SPACE) + if (e.getModifiers() == 0 && e.getKeyChar() == KeyEvent.VK_SPACE) { toggleSelections(); + } } public void keyTyped(KeyEvent e) { @@ -349,8 +339,7 @@ public class CheckBoxTree extends JTree { selectionModel.removeSelectionPath(path); else selectionModel.addSelectionPath(path); - } - finally { + } finally { if (!selectionModel.isSingleEventMode()) { selectionModel.setBatchMode(false); } @@ -365,8 +354,8 @@ public class CheckBoxTree extends JTree { return; } for (int i = 0, length = treePaths.length; i < length; i++) { - TreePath tmpTreePath = treePaths[i]; - toggleSelection(tmpTreePath); + TreePath tmpTreePath = treePaths[i]; + toggleSelection(tmpTreePath); } // for (TreePath treePath : treePaths) { // toggleSelection(treePath); diff --git a/designer_base/src/com/fr/design/gui/style/BackgroundSpecialPane.java b/designer_base/src/com/fr/design/gui/style/BackgroundSpecialPane.java index 43c1d133c2..ca538e944a 100644 --- a/designer_base/src/com/fr/design/gui/style/BackgroundSpecialPane.java +++ b/designer_base/src/com/fr/design/gui/style/BackgroundSpecialPane.java @@ -1,6 +1,12 @@ package com.fr.design.gui.style; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import com.fr.design.ExtraDesignClassManager; import com.fr.design.event.UIObserverListener; +import com.fr.design.fun.BackgroundQuickUIProvider; import com.fr.design.mainframe.backgroundpane.*; /** @@ -40,11 +46,26 @@ public class BackgroundSpecialPane extends BackgroundPane{ fireStateChanged(); } }); - return new BackgroundQuickPane[] { - new NullBackgroundQuickPane(), - colorBackgroundPane, - imageBackgroundPane, - gradientPane - }; + //hugh:表单支持背景接口 + List kinds = new ArrayList(); + + kinds.add(new NullBackgroundQuickPane()); + kinds.add(colorBackgroundPane); + kinds.add(imageBackgroundPane); + kinds.add(gradientPane); + + Set providers = ExtraDesignClassManager.getInstance().getArray(BackgroundQuickUIProvider.MARK_STRING); + for (BackgroundQuickUIProvider provider : providers) { + BackgroundQuickPane newTypePane = provider.appearanceForBackground(); + newTypePane.registerChangeListener(new UIObserverListener() { + @Override + public void doChange() { + fireStateChanged(); + } + }); + kinds.add(newTypePane); + } + + return kinds.toArray(new BackgroundQuickPane[kinds.size()]); } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/gui/syntax/ui/rsyntaxtextarea/RSyntaxTextAreaDefaultInputMap.java b/designer_base/src/com/fr/design/gui/syntax/ui/rsyntaxtextarea/RSyntaxTextAreaDefaultInputMap.java index f9171f74a3..715ab47fe3 100644 --- a/designer_base/src/com/fr/design/gui/syntax/ui/rsyntaxtextarea/RSyntaxTextAreaDefaultInputMap.java +++ b/designer_base/src/com/fr/design/gui/syntax/ui/rsyntaxtextarea/RSyntaxTextAreaDefaultInputMap.java @@ -34,7 +34,7 @@ public class RSyntaxTextAreaDefaultInputMap extends RTADefaultInputMap { */ public RSyntaxTextAreaDefaultInputMap() { - int defaultMod = getDefaultModifier(); + int defaultMod = DEFAULT_MODIFIER; //int ctrl = InputEvent.CTRL_MASK; int shift = InputEvent.SHIFT_MASK; //int alt = InputEvent.ALT_MASK; diff --git a/designer_base/src/com/fr/design/gui/syntax/ui/rtextarea/RTADefaultInputMap.java b/designer_base/src/com/fr/design/gui/syntax/ui/rtextarea/RTADefaultInputMap.java index 5e1a7cfe74..35a1995ed8 100644 --- a/designer_base/src/com/fr/design/gui/syntax/ui/rtextarea/RTADefaultInputMap.java +++ b/designer_base/src/com/fr/design/gui/syntax/ui/rtextarea/RTADefaultInputMap.java @@ -41,6 +41,14 @@ import javax.swing.text.DefaultEditorKit; public class RTADefaultInputMap extends InputMap { + /** + * Returns the default modifier key for a system. For example, on Windows + * this would be the CTRL key (InputEvent.CTRL_MASK). + * + * @return The default modifier key. + */ + public static final int DEFAULT_MODIFIER = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(); + /** * Constructs the default input map for an RTextArea. */ @@ -48,7 +56,7 @@ public class RTADefaultInputMap extends InputMap { super(); - int defaultModifier = getDefaultModifier(); + int defaultModifier = DEFAULT_MODIFIER; //int ctrl = InputEvent.CTRL_MASK; int alt = InputEvent.ALT_MASK; int shift = InputEvent.SHIFT_MASK; @@ -134,18 +142,4 @@ public class RTADefaultInputMap extends InputMap { */ } - - - /** - * Returns the default modifier key for a system. For example, on Windows - * this would be the CTRL key (InputEvent.CTRL_MASK). - * - * @return The default modifier key. - */ - protected static final int getDefaultModifier() { - return Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(); - } - - - } \ 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 182239ee84..12b87ad5a7 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -1,4 +1,3 @@ -# 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= @@ -12,7 +11,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= +FR-Designer-Basic_More_Color=More colors FR-Designer-Estate_Any= FR-Designer-Estate_Default_Font= FR-Designer-Estate_Default_Null= @@ -87,18 +86,18 @@ FR-Designer_Currency_Line= FR-Designer_Current_tab= FR-Designer_Custom= FR-Designer_Custom-Angle= -FR-Designer_DS-Dictionary= +FR-Designer_DS-Dictionary=Dictionary FR-Designer_Data-confusion= FR-Designer_Data_Type= FR-Designer_Double_Click_Edit_OR_Clear= -FR-Designer_Email= +FR-Designer_Email=email FR-Designer_Enabled= FR-Designer_End-Date= FR-Designer_ExportAndOutput= FR-Designer_FRFont= -FR-Designer_FS_Close_Other_Templates= -FR-Designer_File= -FR-Designer_Filter_Conditions= +FR-Designer_FS_Close_Other_Templates=close other templates +FR-Designer_File=File +FR-Designer_Filter_Conditions=Filter Conditions FR-Designer_Finish-Modify-Share= FR-Designer_Fit= FR-Designer_Fit-App= @@ -106,7 +105,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= +FR-Designer_Foreground=Foreground FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=Form authority editing can not be supported FR-Designer_Form-Report= FR-Designer_Form_EmbeddedTD= @@ -117,12 +116,12 @@ FR-Designer_Forum= FR-Designer_Get-Cube= FR-Designer_Help= FR-Designer_Hide= -FR-Designer_Hyperlink= +FR-Designer_Hyperlink=Hyperlink FR-Designer_Hyperlink-Form_link= FR-Designer_IDCard= FR-Designer_Icon= FR-Designer_Index= -FR-Designer_Input_Rule= +FR-Designer_Input_Rule=Input Rule FR-Designer_Language_Default= FR-Designer_Layout= FR-Designer_Layout-HBox= @@ -143,7 +142,7 @@ FR-Designer_M_Help-Tutorial= FR-Designer_Max_Value= FR-Designer_Min_Value= FR-Designer_MobilePhone= -FR-Designer_New_Value= +FR-Designer_New_Value=New_Value FR-Designer_None= FR-Designer_PaperSize-Mobile= FR-Designer_PaperSize-Mobile-Large= @@ -152,12 +151,12 @@ FR-Designer_Para-Body= FR-Designer_Parameters= FR-Designer_Phone= FR-Designer_PostCode= -FR-Designer_Present= -FR-Designer_Preview= +FR-Designer_Present=Present +FR-Designer_Preview=Preview FR-Designer_Preview-Data-Confusion= FR-Designer_Product_Demo= FR-Designer_Query_Type= -FR-Designer_Refresh= +FR-Designer_Refresh=Refresh FR-Designer_Refresh_Parameter_In_SQL= FR-Designer_Reg_Expressions= FR-Designer_Reg_Max_Length= @@ -195,8 +194,8 @@ FR-Designer_Vertical-RightToLeft= FR-Designer_VerticalBoxLayout= FR-Designer_Visible= FR-Designer_WLayout-Border-ToolTips= -FR-Designer_WaterMark= -FR-Designer_Widget= +FR-Designer_WaterMark=WaterMark +FR-Designer_Widget=Widget FR-Designer_Widget-Settings= FR-Designer_Widget-Visible= FR-Designer_XMLA_Explain= @@ -401,14 +400,14 @@ FR-Designer_Choose_Language= FR-Designer_Work_After_Restart_Designer= FR-Designer_Setting-Ruler-Units= FR-Designer_PageSetup-mm= -FR-Designer_Unit_CM= +FR-Designer_Unit_CM=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= +FR-Designer_Unit_INCH=INCH FR-Designer_Web_Preview_Port= -FR-Designer_Unit_PT= +FR-Designer_Unit_PT=PT FR-Designer-Write_Auto_Stash=auto stash FR-Designer_Printer_Native_Button= FR-Designer_Event_ShowWidgets= @@ -483,10 +482,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= -FR-Designer_Is_Share_DBTableData= -FR-Designer-LayerPageReport_PageQuery= -FR-Designer-LayerPageReport_Define_PageQuerySQL= +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_Event= FR-Designer_Properties= FR-Designer_Permissions_Edition=Permissions Edition @@ -512,7 +511,7 @@ FR-Designer_Attribute= FR-Designer_Form_Editing_Listeners= FR-Designer_Form_Basic_Properties= FR-Designer_DS_Dictionary= -FR-Designer_Create_Tree= +FR-Designer_Create_Tree=Create Tree FR-Designer_Set_Callback_Function= FR-Designer_ConfirmDialog_Content= FR-Designer_ConfirmDialog_Title= @@ -558,11 +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=Page Break -FR-Designer-Move_Tab_First=move to first -FR-Designer-Move_Tab_End=move to end -FR-Designer-Move_Tab_Next=move to next -FR-Designer-Move_Tab_Prev=move to previous +FR-Designer_Pagination=Pagination 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. @@ -862,7 +857,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 \ +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= FR-Hyperlink_ChartHyperlink= M_Edit-FormatBrush=Format Painter @@ -993,7 +988,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 \ +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. Schedule-Template_Parameter=Template Parameter JSShow=Show In Action Level_coordinates=Level coordinates @@ -1137,7 +1132,7 @@ FRFont-bold=bold FR-Designer_Set_Submit_Condition= Form-Change_Widget_Name=Change Widget Name ReportColumns-Report_Columns=Report Columns -Can_not_use_FormatBursh= +FR-Designer_Can_not_use_FormatBursh= CellElement-Property_Table=CellElement Property Table Dictionary-Dynamic_SQL=Dynamic SQL FR-Designer_Form-CheckBoxGroup=CheckBoxGroup @@ -1375,7 +1370,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 @@ -1540,7 +1535,7 @@ FR-Designer_Cancel= Button-Group-Display-Columns=Display Column Count Widget-Height=Height Examples=Examples -Formula_Dictionary_Display_Example=the real value is \ +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. StyleAlignment-Horizontal=Horizontal HyperLink_Must_Alone_Reset=HyperLink_Must_Alone_Reset ExpandD-Expand_Direction=Display Data Direction @@ -1990,4 +1985,19 @@ FormulaD-Data_Fields=Data Fields FR-Designer_Role=Role FR-Designer_Permissions=Permissions FR-Designer_Form_Button=Button -FR-Designer_WF_Name=Name \ No newline at end of file +FR-Designer_WF_Name=Name +FR-Designer_Double=Double +FR-Designer_Query= +FR-Designer_Font=Font +FR-Designer_Confirm= +FR-Designer_Parameter= +FR-Designer-Plugin_Plugin=Plugin +FR-Designer_Background=Background +Template=Template + +FR-Designer_Parent_Marked_Field=Parent Marked Field +FR-Designer_Original_Marked_Filed=Original Marked Filed +FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=Build Tree according parent's marked filed +FR-Designer_Build_Tree_Accord_Marked_Filed_Length=Build Tree according marked filed's length +FR-Product_Demo=Demo +FR-Designer_Tree_Data_Field=Tree Data Field 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 4c0135daf1..ac7375c1a2 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,4 +1,3 @@ -# 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 @@ -9,19 +8,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=Privite Message +FR-Designer-BBSLogin_Privite-Message=Private Message FR-Designer-BBSLogin_Times=times FR-Designer-BBSLogin_Username-Empty-Tip=User name can not be null -FR-Designer-Basic_More_Color=More Color... +FR-Designer-Basic_More_Color=More colors 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) @@ -29,7 +28,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 @@ -68,7 +67,7 @@ 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 @@ -91,20 +90,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=Mail +FR-Designer_Email=Email 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 condition +FR-Designer_File=File +FR-Designer_Filter_Conditions=Filter Conditions 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 @@ -115,7 +114,6 @@ FR-Designer_Format_explan=Format explain FR-Designer_Allow-Blank=Allow Blank FR-Designer_Formula=Formula FR-Designer_Forum=Forum -FR-Designer_Get-CubeGetting cube= FR-Designer_Help=Help FR-Designer_Hide=Hide FR-Designer_Hyperlink=Hyperlink @@ -136,7 +134,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 @@ -144,7 +142,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 @@ -153,7 +151,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 @@ -163,7 +161,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=Multi-columns/lines +FR-Designer_ReportColumns-Columns=Fixed columns per line FR-Designer_Return-Date=Return Date FR-Designer_RichText=Insert Rich Text FR-Designer_RichTextEditor=Rich Text Editor @@ -174,7 +172,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 @@ -183,7 +181,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 +FR-Designer_Thanks-To=Thanks To FR-Designer_Title=Title FR-Designer_Total=Total FR-Designer_UnSignIn=Not Sign In @@ -241,7 +239,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=FieldName +FR-Designer_Chart_Field_Name=Field Name FR-Designer_FormulaD-Text=Text FR-Designer_FormulaD-Logical=Logical Function FR-Designer_FormulaD-Array=Array @@ -250,13 +248,13 @@ FR-Designer_FormulaD-Other=Other Functions FR-Designer_FormulaD-All=All Functions FR-Designer_Function=Function FR-Designer_Select=Sel -FR-Designer_Edit=Edit +FR-Designer_Edit=Edt 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=Tree Combobox -FR-Designer_Form-Iframe=Iframe +FR-Designer_Tree-ComboBox=Drop-down Tree +FR-Designer_Form-Iframe=WebView FR-Designer_Type=Type FR-Designer_User-defined=User_defined FR-Designer_Simple_general_forV6=Simple general for Version6+ @@ -268,11 +266,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=Corresponse parameter +FR-Designer_Corre_parameter=Corresponding 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 choosed +FR-Designer_Columns_choosed=Columns chosen FR-Designer_Where_claus=Where claus FR-Designer_PreStyle=Pre Style FR-Designer_Loading=Loading @@ -288,18 +286,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=Tooltips -FR-Designer_Remove=Remove +FR-Designer_Tooltips=Tip +FR-Designer_Remove=Delete 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 Intenet options . +FR-Designer_Set_default_browser=Cannot find the default browser, please set default browser in Internet 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 gloabel style +FR-Designer_Input_The_Name_Of_Gloabel_Style=Input the name of global style FR-Designer_This_Name_Has_Exsit=This name has existed FR-Designer_Shortcut_Set=Shortcut Setting FR-Designer_Feature_Name=Feature Name\: @@ -332,7 +330,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 @@ -358,7 +356,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 +FR-Designer-Plugin_Please_Update_Jar=Please Update Jar To\: FR-Designer-Invalid_Page_Number=Invalid Page Number FR-Designer_XMLA_Database=DB FR-Designer_XMLA_UserName=User name @@ -381,7 +379,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=Fineres Addon +FR-Designer-Plugin_Finerest_Addon=Fanruan Plugins FR-Designer_Performance_First=Performance First FR-Designer_Total_N_Grade=Total\:${N}Layer FR-Designer-BBSLogin_Login-Title=BBS Login @@ -394,7 +392,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=Surport String To Formula +FR-Designer_Surport_String_To_Formula=Support 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 @@ -532,7 +530,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=\u3000 +FR-Designer_ReportColumns_Columns_Optional=Multi-column/row FR-Designer_Row_Icon_File_Name=row_en.png FR-Designer_Center_Display=Center FR-Designer_Left_Display=Left @@ -559,10 +557,6 @@ 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=Page Break -FR-Designer-Move_Tab_First=move to first -FR-Designer-Move_Tab_End=move to end -FR-Designer-Move_Tab_Next=move to next -FR-Designer-Move_Tab_Prev=move to previous FR-Designer_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. @@ -623,7 +617,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 hight will change according to the content and pagination position will different from the preview result. +alert_word=Export without fixed height, cell height 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 @@ -703,7 +697,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 Exsit +Column_Does_Not_Exsit=Column Does Not Exist M_Insert-Hyperlink=Hyperlink can_not_include_underline=Can not contain "_" FR-Designer-Plugin_Jar_Expired=Jar Expired @@ -803,7 +797,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 modidy", 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 modify", 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 @@ -863,7 +857,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 \ +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.
  ECP-error_pwd=Password Error FR-Hyperlink_ChartHyperlink=Chart Hyperlink M_Edit-FormatBrush=Format Painter @@ -954,7 +948,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 DisplyPosition +FR-Designer_WidgetDisplyPosition=Control DisplayPosition FR-Base_Top=Top FR-Designer_Form-CheckBox=CheckBox Reportlet-Parameter_Type=Parameter passing mode @@ -972,7 +966,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 Openned +LOG-Is_Being_Openned=Is Being Opened BackgroundTexture-Oak=Oak Multi_nam_formula=\ data set name\: TurnOn=TurnOn @@ -994,7 +988,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 \ +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. Schedule-Template_Parameter=Template Parameter JSShow=Dynamic display Level_coordinates=Hierarchy coordinate @@ -1100,7 +1094,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 canot be cursor +IN_and_INOUT_type_not_as_cursor=IN and INOUT type cannot be cursor Main_Axis=Primary axis M_Edit-Cut=Cut Utils-The_Name_has_been_existed=The name already exists @@ -1131,7 +1125,7 @@ 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 exsits in Server DataSet or the name is repeated. +Error_TableDataNameRepeat=\ already exists in Server DataSet or the name is repeated. Choose_None=Deselect File-tree=File tree FRFont-bold=Bold @@ -1167,7 +1161,7 @@ FR-App-Export_png=png Delete_Column=Delete Column SecondGraduationLine=Minor Graduation Line SpecifiedG-Groups=Groups -CONTINUUM_MODE=Continous grouping +CONTINUUM_MODE=Continuous grouping Datasource-Connection_failed=Connection Failed CategoryName=Category Name DBCP_INITIAL_SIZE=Initialize Connections @@ -1181,7 +1175,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 exsit +Warning-Template_Do_Not_Exsit=Template do not exist BindColumn-Group=Group Export-SVG=SVG Plane3D=Plane 3D @@ -1295,7 +1289,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=Rencently used +FormulaD-Most_Recently_Used=Recently used FormulaD-Input_formula_in_the_text_area_below=Input formula in the text area below Build-Way=Build Way M_Edit-Undo=Undo @@ -1376,7 +1370,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 @@ -1398,7 +1392,7 @@ BackgroundTexture-WaterDroplets=Water Drop FR-Designer-Dependence_Install_Failed=install failed Layout-Padding=Padding roles_already_authority_edited=Configured role -WidgetDisplyPosition=Control disply position +WidgetDisplyPosition=Control display position SpecifiedG-Force_Group=Mandatory Group FormulaD-Formula_Definition=Formula Definition I-xyScatterStyle_Marker=Scatter @@ -1531,7 +1525,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 modidy", 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 modify", 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 @@ -1541,7 +1535,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 \ +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. StyleAlignment-Horizontal=Horizontal HyperLink_Must_Alone_Reset=Multiple hyperlink ExpandD-Expand_Direction=Extension Direction @@ -1631,7 +1625,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 currect path +Sub_Report_Message1=Please choose the correct 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. @@ -1763,7 +1757,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 Openned +LOG-Has_Been_Openned=Report Has Been Opened FR-Designer-Dependence= ECP_error_pwd=Password Error REPORTLET=Parameter of access path to template @@ -1792,7 +1786,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 @@ -1803,7 +1797,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= +FR-Designer_DataTable-Build=Quick build (hierarchical) 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 @@ -1823,7 +1817,7 @@ BackgroundTexture-Cork=Cork M_Format-Data_Map=Data Dictionary FR-mobile_native_analysis=native analysis HighLight=High Light -FR-Designer_Dropdown-More-Preview= +FR-Designer_Dropdown-More-Preview=Drop down for more local=local FR-Designer_Gradation=Gradation PageSetup-Finis_Start_Column=Duplicate Last Column @@ -1832,7 +1826,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=Submmit By Custom Class +FR-Designer_Submmit_WClass=Submit By Custom Class M_Insert-Slope_Line=Insert Slope Line FR-Designer-Plugin_Plugin_Description=Description ExpandD-Not_Expand=No extend @@ -1895,12 +1889,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 copyed +FR-Designer-Basic_Copy_Build_NO_OK=Build No. has been copied 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 @@ -1946,7 +1940,7 @@ Widget-User_Defined=Predefine Url_location=Absolute path Disk_File=Disk File Inside=Inside -FR-Designer_filedChosen= +FR-Designer_filedChosen=Dependent fields ServerM-Predefined_Styles=Predefined Styles is_need_word_adjust=Word Auto Adjust Background-Null=No Background @@ -1991,4 +1985,20 @@ FormulaD-Data_Fields=Data Items FR-Designer_Role=Role FR-Designer_Permissions=Permissions FR-Designer_Form_Button=Button -FR-Designer_WF_Name=Name \ No newline at end of file +FR-Designer_WF_Name=Name +FR-Designer_Double=Decimal +FR-Designer_Query=Query +FR-Designer_Font=Font +FR-Designer_Confirm=OK +FR-Designer_Parameter=Parameter +FR-Designer-Plugin_Plugin=Plugin +FR-Designer_Background=BG +Template=Template + +FR-Designer_Original_Marked_Filed=Original Tag Field +FR-Designer_Build_Tree_Accord_Marked_Filed_Length=Build tree according to tag field's length +FR-Designer_Can_not_use_FormatBursh=Can't use format painter in multiple selections +FR-Designer_Tree_Data_Field=Tree Data Field +FR-Designer_Parent_Marked_Field=Parent Tag Field +FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=Build Tree according to the parent tag field of the selected data set +FR-Product_Demo=Demo 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 d5d9dac39f..763b2d4d65 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,68 +1,67 @@ -# generated time: \u661F\u671F\u56DB \u5341\u4E00\u6708 24 12:02:51 CST 2016 -FR-Designer-BBSLogin_Account=\u30E6\u30FC\u30B6\u30FC\u540D -FR-Designer-BBSLogin_Connection-Failure=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u63A5\u7D9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u73FE\u5728\u306E\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u72B6\u614B\u3092\u691C\u67FB\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Designer-BBSLogin_Account=\u30E6\u30FC\u30B6ID +FR-Designer-BBSLogin_Connection-Failure=\u30CD\u30C3\u30C8\u63A5\u7D9A\u5931\u6557\u3001\u30CD\u30C3\u30C8\u72B6\u614B\u3054\u78BA\u8A8D\u4E0B\u3055\u3044 FR-Designer-BBSLogin_Connection-Failure-Tip=\u30D2\u30F3\u30C8 FR-Designer-BBSLogin_Forgot-Password=\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5FD8\u308C\u305F FR-Designer-BBSLogin_Login=\u30ED\u30B0\u30A4\u30F3 -FR-Designer-BBSLogin_Login-Failure-Tip=\u30E6\u30FC\u30B6\u30FC\u540D\u307E\u305F\u306F\u30D1\u30B9\u30EF\u30FC\u30C9\u30A8\u30E9\u30FC\u3067\u3059\u3002\u518D\u5EA6\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Designer-BBSLogin_Login-Failure-Tip=\u30E6\u30FC\u30B6\u30FCID\u3084\u30D1\u30B9\u30EF\u30FC\u30C9\u30A8\u30E9\u30FC\u3001\u518D\u30ED\u30B0\u30A4\u30F3\u4E0B\u3055\u3044 FR-Designer-BBSLogin_Password=\u30D1\u30B9\u30EF\u30FC\u30C9 -FR-Designer-BBSLogin_Password-Empty-Tip=\u30D1\u30B9\u30EF\u30FC\u30C9\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 -FR-Designer-BBSLogin_Register-Account=\u30A2\u30AB\u30A6\u30F3\u30C8\u767B\u9332 +FR-Designer-BBSLogin_Password-Empty-Tip=\u7A7A\u6B04\u306B\u3067\u304D\u307E\u305B\u3093 +FR-Designer-BBSLogin_Register-Account=\u767B\u9332\u30A2\u30AB\u30A6\u30F3\u30C8 FR-Designer-BBSLogin_Switch-Account=\u30A2\u30AB\u30A6\u30F3\u30C8\u5207\u308A\u66FF\u3048 -FR-Designer-BBSLogin_Privite-Message=\u30D7\u30E9\u30A4\u30D9\u30FC\u30C8\u30E1\u30C3\u30BB\u30FC\u30B8 -FR-Designer-BBSLogin_Times=\u6B21 -FR-Designer-BBSLogin_Username-Empty-Tip=\u30E6\u30FC\u30B6\u30FC\u540D\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 -FR-Designer-Basic_More_Color=\u3082\u3063\u3068\u8272 -FR-Designer-Estate_Any=\u4E0D\u9650 +FR-Designer-BBSLogin_Privite-Message=\u500B\u4EBA\u30E1\u30C3\u30BB\u30FC\u30B8 +FR-Designer-BBSLogin_Times=\u56DE +FR-Designer-BBSLogin_Username-Empty-Tip=\u30E6\u30FC\u30B6\u30FCID\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093 +FR-Designer-Basic_More_Color=\u3082\u3063\u3068\u591A\u3044 +FR-Designer-Estate_Any=\u5236\u9650\u306A\u3057 FR-Designer-Estate_Default_Font=\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A9\u30F3\u30C8 -FR-Designer-Estate_Default_Null=\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u7A7A\u6B04\u306B\u3059\u308B +FR-Designer-Estate_Default_Null=\u30C7\u30D5\u30A9\u30EB\u30C8\u306F\u7A7A FR-Designer-Estate_Default_Text=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024 -FR-Designer-Estate_Parameter_Null_Text=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3092\u7A7A\u6B04\u306B\u3057\u8868\u793A\u3059\u308B -FR-Designer-Estate_Radio-Group=\u4E0D\u52D5\u7523\u696D\u901A\u7528\u30DC\u30BF\u30F3\u30BB\u30C3\u30C8\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB -FR-Designer-Estate_Selected_Font=\u9078\u629E\u3057\u305F\u30D5\u30A9\u30F3\u30C8 -FR-Designer-Estate_Widget_Value=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u5024 -FR-Designer-Layout_Adaptive_Layout=\u81EA\u9069\u5FDC\u914D\u7F6E +FR-Designer-Estate_Parameter_Null_Text=\u30D1\u30E9\u30E1\u30FC\u30BF\u304C\u7A7A\u306B\u306A\u308B\u6642\u306E\u8868\u793A\u306F +FR-Designer-Estate_Radio-Group=\u4E00\u822C\u30E9\u30B8\u30AA\u30DC\u30BF\u30F3\u30B0\u30EB\u30FC\u30D7\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 +FR-Designer-Estate_Selected_Font=\u30D5\u30A9\u30F3\u30C8\u3092\u9078\u629E +FR-Designer-Estate_Widget_Value=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5024 +FR-Designer-Layout_Adaptive_Layout=\u81EA\u5DF1\u8ABF\u6574\u30EC\u30A4\u30A2\u30A6\u30C8 FR-Designer-Output_Background_Set=\u80CC\u666F\u8A2D\u5B9A FR-Designer-Output_Default_Background=\u30C7\u30D5\u30A9\u30EB\u30C8\u80CC\u666F -FR-Designer-Output_Excel_Page=Excel\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8(\u30DA\u30FC\u30B8\u5225\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8) -FR-Designer-Output_Excel_Sheet=Excel\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8(\u30DA\u30FC\u30B8\u5225\u30B7\u30FC\u30C8\u5225\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8) -FR-Designer-Output_Excel_Simple=Excel\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8(\u5143\u306E\u307E\u307E\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8) -FR-Designer-Plugin_PluginMarket_Coding=\u30D7\u30E9\u30B0\u30A4\u30F3\u30DE\u30FC\u30B1\u30C3\u30C8\u306F\u958B\u767A\u4E2D\u3067\u3059\u3002\u3054\u671F\u5F85\u304F\u3060\u3055\u3044 -FR-Desinger-Plugin_Updater_UpdateAndUpgrade=\u66F4\u65B0\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 -FR-Desinger-Plugin_Updater_Checking_Jar_Update=Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u30C1\u30A7\u30C3\u30AF\u66F4\u65B0\u4E2D -FR-Desinger-Plugin_Updater_Checking_Version_Update=\u30D0\u30FC\u30B8\u30E7\u30F3\u30C1\u30A7\u30C3\u30AF\u66F4\u65B0\u4E2D -FR-Desinger-Plugin_Updater_Update=\u66F4\u65B0 -FR-Desinger-Plugin_Updater_Upgrade=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 -FR-Desinger-Plugin_Updater_Restore=\u5FA9\u5143 -FR-Desinger-Plugin_Updater_New_Version_Available=\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3\u6709\u308A -FR-Desinger-Plugin_Updater_JarUpdate=Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u66F4\u65B0 -FR-Desinger-Plugin_Updater_VersionUpgrade=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7 -FR-Desinger-Plugin_Updater_Previous_Version=\u65E7\u30D0\u30FC\u30B8\u30E7\u30F3\u307E\u3067\u306B -FR-Desinger-Plugin_Updater_Current_Version=\u73FE\u30D0\u30FC\u30B8\u30E7\u30F3 -FR-Desinger-Plugin_Updater_Not_Install_Version=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u306A\u3044 +FR-Designer-Output_Excel_Page=Excel\u51FA\u529B(\u6539\u9801) +FR-Designer-Output_Excel_Sheet=Excel\u51FA\u529B(\u9801\u5225\u30B7\u30FC\u30C8\u5225) +FR-Designer-Output_Excel_Simple=Excel\u51FA\u529B(\u6A19\u6E96) +FR-Designer-Plugin_PluginMarket_Coding=\u30D7\u30E9\u30B0\u30A4\u30F3\u30B9\u30C8\u30A2\u958B\u767A\u4E2D\u3001\u304A\u5F85\u3061\u4E0B\u3055\u3044 +FR-Desinger-Plugin_Updater_UpdateAndUpgrade=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C8 +FR-Desinger-Plugin_Updater_Checking_Jar_Update=Jar\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u691C\u8A3C\u4E2D +FR-Desinger-Plugin_Updater_Checking_Version_Update=\u30D1\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u691C\u8A3C\u4E2D +FR-Desinger-Plugin_Updater_Update=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 +FR-Desinger-Plugin_Updater_Upgrade=\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C8 +FR-Desinger-Plugin_Updater_Restore=\u30EA\u30AB\u30D0\u30EA +FR-Desinger-Plugin_Updater_New_Version_Available=\u65B0\u3057\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u3042\u308A\u307E\u3059 +FR-Desinger-Plugin_Updater_JarUpdate=Jar\u30D5\u30A1\u30A4\u30EB\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 +FR-Desinger-Plugin_Updater_VersionUpgrade=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C8\uFF1A +FR-Desinger-Plugin_Updater_Previous_Version=\u65E7\u30D0\u30FC\u30B8\u30E7\u30F3\u306B\u623B\u308A\u307E\u3059\u304B\uFF1F +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-Desinger-Plugin_Updater_Latest_Version=\u6700\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3 -FR-Desinger-Plugin_Updater_Jar_Downloading=Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u5B8C\u6210\u5F85\u3061 -FR-Desinger-Plugin_Updater_Version_Downloading=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30D1\u30C3\u30B1\u30FC\u30B8\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u5B8C\u6210\u5F85\u3061 -FR-Desinger-Plugin_Updater_Restart_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u518D\u8D77\u52D5 -FR-Desinger-Plugin_Updater_Connect_VersionUpdateServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u66F4\u65B0\u30B5\u30FC\u30D0\u30FC\u63A5\u7D9A\u3067\u304D\u306A\u3044 -FR-Desinger-Plugin_Updater_Connect_VersionUpgradeServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30B5\u30FC\u30D0\u30FC\u63A5\u7D9A\u3067\u304D\u306A\u3044 -FR-Desinger-Plugin_Updater_Already_Latest_Version=\u65E2\u306B\u6700\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3 -FR-Desinger-Plugin_Updater_Backup_OldJar_To=\u65E7Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u306F\u65E2\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7 -FR-Desinger-Plugin_Updater_Backup_OldVersion_To=\u65E7\u30D0\u30FC\u30B8\u30E7\u30F3\u30D1\u30C3\u30B1\u30FC\u30B8\u306F\u65E2\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7 -FR-Desinger-Plugin_Updater_Please_Restart=\u30C7\u30B6\u30A4\u30CA\u30FC\u306F\u518D\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044 -FR-Desinger-Plugin_Updater_Jar_Restore=\u65E7Jar\u30D1\u30C3\u30B1\u30FC\u30B8\u5FA9\u5143 -FR-Desinger-Plugin_Updater_Version_Restore=\u30D0\u30FC\u30B8\u30E7\u30F3\u5FA9\u5143 -FR-Desinger-Plugin_Updater_Restore_To=\u5FA9\u5143 -FR-Desinger-Plugin_Updater_WorksAfterRestart=\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u518D\u8D77\u52D5\u5F8C\u306B\u6709\u52B9\u3059\u308B +FR-Desinger-Plugin_Updater_Jar_Downloading=Jar\u30D5\u30A1\u30A4\u30EB\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u7D42\u4E86\u3092\u5F85\u3063\u3066\u3044\u308B +FR-Desinger-Plugin_Updater_Version_Downloading=\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C8\u30D1\u30C3\u30B1\u30FC\u30B8\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3092\u5F85\u3063\u3066\u3044\u308B +FR-Desinger-Plugin_Updater_Restart_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u518D\u8D77\u52D5 +FR-Desinger-Plugin_Updater_Connect_VersionUpdateServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30B5\u30FC\u30D0\u306B\u63A5\u7D9A\u3067\u304D\u306A\u3044 +FR-Desinger-Plugin_Updater_Connect_VersionUpgradeServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C8\u30B5\u30FC\u30D0\u306B\u63A5\u7D9A\u3067\u304D\u306A\u3044 +FR-Desinger-Plugin_Updater_Already_Latest_Version=\u6700\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3\u306B\u306A\u308A\u307E\u3057\u305F +FR-Desinger-Plugin_Updater_Backup_OldJar_To=\u53E4\u3044Jar\u30D5\u30A1\u30A4\u30EB\u3092\u4E0B\u8A18\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3057\u307E\u3057\u305F\uFF1A +FR-Desinger-Plugin_Updater_Backup_OldVersion_To=\u53E4\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u4E0B\u8A18\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3057\u307E\u3057\u305F\uFF1A +FR-Desinger-Plugin_Updater_Please_Restart=\u3001\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u518D\u8D77\u52D5\u3057\u3066\u4E0B\u3055\u3044 +FR-Desinger-Plugin_Updater_Jar_Restore=Jar\u30D5\u30A1\u30A4\u30EB\u30EA\u30AB\u30D0\u30EA +FR-Desinger-Plugin_Updater_Version_Restore=\u30D0\u30FC\u30B8\u30E7\u30F3\u30EA\u30AB\u30D0\u30EA +FR-Desinger-Plugin_Updater_Restore_To=\u3078\u30EA\u30AB\u30D0\u30EA +FR-Desinger-Plugin_Updater_WorksAfterRestart=\u30D0\u30FC\u30B8\u30E7\u30F3\u3001\u518D\u8D77\u52D5\u5F8C\u6709\u52B9\u306B\u306A\u308A\u307E\u3059 FR-Designer-Submit_Condition=\u6761\u4EF6 -FR-Designer-Widget-Title_border=\u30D5\u30EC\u30FC\u30E0 +FR-Designer-Widget-Title_border=\u67A0 FR-Designer-Widget-Title_border_color=\u8272 FR-Designer_AbsoluteLayout=\u7D76\u5BFE\u30EC\u30A4\u30A2\u30A6\u30C8 -FR-Designer_Allow_Decimals=\u5C0F\u6570\u3092\u8A31\u53EF -FR-Designer_Allow_Negative=\u30DE\u30A4\u30CA\u30B9\u5024\u3092\u8A31\u53EF -FR-Designer_Background-Click=\u30DE\u30A6\u30B9\u30AF\u30EA\u30C3\u30AF\u80CC\u666F +FR-Designer_Allow_Decimals=\u5C0F\u6570\u306E\u8A31\u53EF +FR-Designer_Allow_Negative=\u8CA0\u5024\u306E\u8A31\u53EF +FR-Designer_Background-Click=\u30DE\u30A6\u30B9\u30AF\u30EA\u30C3\u30AF\u6642\u80CC\u666F FR-Designer_Background-Initial=\u521D\u671F\u80CC\u666F -FR-Designer_Background-Over=\u30DE\u30A6\u30B9\u30D5\u30ED\u30FC\u30C8\u80CC\u666F +FR-Designer_Background-Over=\u30DE\u30A6\u30B9\u30AA\u30FC\u30D0\u30FC\u6642\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 @@ -70,109 +69,109 @@ FR-Designer_Button-Hotkeys=\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30F FR-Designer_Button-Icon=\u30DC\u30BF\u30F3\u30A2\u30A4\u30B3\u30F3 FR-Designer_Button-Name=\u30DC\u30BF\u30F3\u540D\u79F0 FR-Designer_Button-Type=\u30DC\u30BF\u30F3\u30BF\u30A4\u30D7 -FR-Designer_CardLayout=Tab\u914D\u7F6E +FR-Designer_CardLayout=Tab\u30EC\u30A4\u30A2\u30A6\u30C8 FR-Designer_Cell=\u30BB\u30EB -FR-Designer_Chart_Cell=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u9023\u52D5\u30BB\u30EB -FR-Designer_Chart_Float=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u9023\u52D5\u30D5\u30ED\u30FC\u8981\u7D20 -FR-Designer_Chart_Float_chart=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u30D5\u30ED\u30FC\u7A93\u30B0\u30E9\u30D5 -FR-Designer_Check-for-Updates=\u66F4\u65B0\u3092\u78BA\u8A8D -FR-Designer_Choose-Data-Confusion-Tip=\ \u6DF7\u4EA4\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u9078\u629E\u5F8C\u30D7\u30EC\u30D3\u30E5\u30FC\u3057\u3066\u304F\u3060\u3055\u3044 -FR-Designer_Close=\u30AF\u30ED\u30FC\u30BA +FR-Designer_Chart_Cell=\u30B0\u30E9\u30D5\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\u7A93\u53E3 +FR-Designer_Check-for-Updates=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3092\u78BA\u8A8D +FR-Designer_Choose-Data-Confusion-Tip=\ \u6DF7\u4E71\u3055\u305B\u308B\u3079\u304D\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u9078\u629E\u3057\u3066\u30D7\u30EC\u30D3\u30E5\u30FC\u4E0B\u3055\u3044 +FR-Designer_Close=\u9589\u3058\u308B FR-Designer_Column=\u5217 -FR-Designer_Column_Measure=\u5217\u8EF8/\u5EA6\u91CF\u5024 +FR-Designer_Column_Measure=\u5217\u8EF8/\u30E1\u30C8\u30EA\u30C3\u30AF FR-Designer_Condition_Attributes=\u6761\u4EF6\u5C5E\u6027 -FR-Designer_Confusion-Col-Name=\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u79F0 -FR-Designer_Confusion-key=\u6DF7\u4EA4\u3059\u308B\u30AD\u30FC\u30EF\u30FC\u30C9 +FR-Designer_Confusion-Col-Name=\u30D5\u30A3\u30FC\u30EB\u30C9\u540D +FR-Designer_Confusion-key=\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u6DF7\u4E71\u3055\u305B\u308B FR-Designer_Currency_Line=\u91D1\u984D\u7DDA -FR-Designer_Current_tab=\u73FE\u5728\u306E\u7DE8\u96C6tab +FR-Designer_Current_tab=\u7DE8\u96C6\u4E2D\u306Etab 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_DS-Dictionary=\u30C7\u30FC\u30BF\u8F9E\u66F8 +FR-Designer_Data-confusion=\u30C7\u30FC\u30BF\u6DF7\u4E71 FR-Designer_Data_Type=\u30C7\u30FC\u30BF\u30BF\u30A4\u30D7 FR-Designer_Double_Click_Edit_OR_Clear=\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u7DE8\u96C6\u307E\u305F\u306F\u30AF\u30EA\u30A2\u3059\u308B FR-Designer_Email=\u30E1\u30FC\u30EB FR-Designer_Enabled=\u4F7F\u7528\u53EF\u80FD FR-Designer_End-Date=\u7D42\u4E86\u65E5\u671F -FR-Designer_ExportAndOutput=\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8 +FR-Designer_ExportAndOutput=\u51FA\u529B FR-Designer_FRFont=\u30D5\u30A9\u30F3\u30C8 -FR-Designer_FS_Close_Other_Templates=\u305D\u306E\u4ED6\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u9589\u3058\u308B +FR-Designer_FS_Close_Other_Templates=\u4ED6\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u9589\u3058\u308B FR-Designer_File=\u30D5\u30A1\u30A4\u30EB -FR-Designer_Filter_Conditions=\u9078\u5225\u6761\u4EF6 -FR-Designer_Finish-Modify-Share=\u4FEE\u6B63\u3092\u5B8C\u4E86\u3057\u3066\u30B7\u30A7\u30A2 -FR-Designer_Fit-App=App\u81EA\u9069\u5FDC -FR-Designer_Fit=\u81EA\u9069\u5FDC +FR-Designer_Filter_Conditions=\u30D5\u30A3\u30EB\u30BF\u30FC\u6761\u4EF6 +FR-Designer_Finish-Modify-Share=\u4FEE\u6B63\u3092\u5B8C\u4E86\u3057\u3066\u5171\u6709\u3057\u307E\u3059 +FR-Designer_Fit-App=App\u81EA\u52D5\u9069\u5FDC +FR-Designer_Fit=\u81EA\u52D5\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_Font-Size=\u30D5\u30A9\u30F3\u30C8\u30B5\u30A4\u30BA +FR-Designer_Forbid_Drag_into_Adapt_Pane=\u8A72\u5F53\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u30E1\u30A4\u30F3\u30A8\u30EA\u30A2\u306B\u30C9\u30E9\u30C3\u30B0\u3059\u308B\u306E\u306F\u3067\u304D\u307E\u305B\u3093 +FR-Designer_Forbid_Drag_into_Para_Pane=\u8A72\u5F53\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u30D1\u30E9\u30E1\u30FC\u30BF\u30D1\u30CD\u30EB\u306B\u30C9\u30E9\u30C3\u30B0\u3059\u308B\u306E\u306F\u3067\u304D\u307E\u305B\u3093 FR-Designer_Foreground=\u8272 -FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\u8868\u306E\u6A29\u9650\u7DE8\u96C6\u306B\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093 -FR-Designer_Form-Report=\u5E33\u7968\u30E2\u30B8\u30E5\u30FC\u30EB -FR-Designer_Form_EmbeddedTD=\u8868(\u5185\u8535\u30C7\u30FC\u30BF) -FR-Designer_Form_Module=\u8868\u30E2\u30B8\u30E5\u30FC\u30EB +FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\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_Format_explan=\u66F8\u5F0F\u8AAC\u660E -FR-Designer_Formula=\u516C\u5F0F +FR-Designer_Formula=\u6570\u5F0F FR-Designer_Forum=BBS -FR-Designer_Get-Cube=cube\u53D6\u5F97\u4E2D +FR-Designer_Get-Cube=cube\u8AAD\u307F\u53D6\u308A\u4E2D FR-Designer_Help=\u30D8\u30EB\u30D7 -FR-Designer_Hide=\u96A0\u3059 -FR-Designer_Hyperlink=\u30B9\u30FC\u30D1\u30FC\u30EA\u30F3\u30AF -FR-Designer_Hyperlink-Form_link=\u73FE\u5728\u306E\u8868\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 +FR-Designer_Hide=\u975E\u8868\u793A +FR-Designer_Hyperlink=\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF +FR-Designer_Hyperlink-Form_link=\u73FE\u5728\u306E\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 FR-Designer_IDCard=\u8EAB\u5206\u8A3C\u660E\u66F8 FR-Designer_Icon=\u30A2\u30A4\u30B3\u30F3 FR-Designer_Index=\u5217\u8EF8/\u6307\u6A19 -FR-Designer_Input_Rule=\u30EB\u30FC\u30EB\u8A18\u5165 +FR-Designer_Input_Rule=\u66F8\u304D\u8FBC\u307F\u898F\u5247 FR-Designer_Language_Default=\u30C7\u30D5\u30A9\u30EB\u30C8 -FR-Designer_Layout=\u914D\u7F6E -FR-Designer_Layout-HBox=\u6C34\u5E73\u30B1\u30FC\u30B9\u914D\u7F6E -FR-Designer_Layout-Index=\u7D22\u5F15 -FR-Designer_Layout_Constraints=\u4F4D\u7F6E\u3068\u5927\u5C0F +FR-Designer_Layout=\u30EC\u30A4\u30A2\u30A6\u30C8 +FR-Designer_Layout-HBox=\u6C34\u5E73\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_Length=\u9577\u3055 -FR-Designer_Loading_Data=\u30C7\u30FC\u30BF\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3057\u3066\u3044\u307E\u3059 +FR-Designer_Loading_Data=\u30C7\u30FC\u30BF\u3092\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\u30D5\u30EA\u30FC\u30BA\u8A2D\u5B9A -FR-Designer_M-Server=\u30B5\u30FC\u30D0\u30FC +FR-Designer_M-Server=\u30B5\u30FC\u30D0 FR-Designer_M-SwitchWorkspace=\u4F5C\u696D\u76EE\u6B21\u5207\u308A\u66FF\u3048 FR-Designer_M-Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 -FR-Designer_MDX_Explain=\u6587\u6CD5\u66F8\u5F0F\u306FMDX\u6587\u6CD5\u3092\u53C2\u8003\u3002\n\u4F8B\u3048\u3070\uFF1A\nWITH\nMEMBER [Measures].[Special Discount] AS\n[Measures].[Discount Amount] * 1.5\nSELECT\n[Measures].[Special Discount] on COLUMNS,\nNON EMPTY [Product].[Product].MEMBERS ON Rows\nFROM [Adventure Works]\nWHERE [Product].[Category].[Bikes]\n\u6CE8\uFF1ACOLUMNS\u3001ROWS\u306F0\u30011\u3092\u4F7F\u7528\u3057\u3066\u4EE3\u66FF\u53EF\u80FD\u3067\u3059\u3002\u30AF\u30A8\u30EA\u8EF8\u306F\u4E8C\u3064\u306E\u8EF8\u623B\u3057\u306B\u306E\u307F\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002 +FR-Designer_MDX_Explain=MDX\u8A00\u8A9E\u306E\u6587\u6CD5\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\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\u30681\u4EE3\u3048\u308B\u3067\u304D\u3001\u691C\u7D22\u8EF8\u306F\u4E8C\u3064\u3060\u3051\u3092\u652F\u6301\u3057\u3066\u3044\u307E\u305B\u3093\u3002 FR-Designer_M_Help-About_Software=\u30BD\u30D5\u30C8\u30A6\u30A7\u30A2\u306B\u3064\u3044\u3066 -FR-Designer_M_Help-Tutorial=\u30D8\u30EB\u30D7\u30C1\u30E5\u30FC\u30C8\u30EA\u30A2\u30EB +FR-Designer_M_Help-Tutorial=\u30D8\u30EB\u30D7\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8 FR-Designer_Max_Value=\u6700\u5927\u5024 FR-Designer_Min_Value=\u6700\u5C0F\u5024 -FR-Designer_MobilePhone=\u643A\u5E2F\u96FB\u8A71 +FR-Designer_MobilePhone=\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3 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_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\u30FC\u30D5\u30A7\u30FC\u30B9 +FR-Designer_Parameters=\u30D1\u30E9\u30E1\u30FC\u30BF FR-Designer_Phone=\u96FB\u8A71 FR-Designer_PostCode=\u90F5\u4FBF\u756A\u53F7 -FR-Designer_Present=\u30D5\u30A9\u30EB\u30E0 +FR-Designer_Present=\u5F62\u614B FR-Designer_Preview=\u30D7\u30EC\u30D3\u30E5\u30FC -FR-Designer_Preview-Data-Confusion=\u6DF7\u4EA4\u5F8C\u306E\u30C7\u30FC\u30BF\u3092\u30D7\u30EC\u30D3\u30E5\u30FC +FR-Designer_Preview-Data-Confusion=\u6DF7\u4E71\u3055\u308C\u305F\u30C7\u30FC\u30BF\u3092\u30D7\u30EC\u30D3\u30E5\u30FC FR-Designer_Product_Demo=\u88FD\u54C1\u30C7\u30E2 FR-Designer_Query_Type=\u30AF\u30A8\u30EA\u65B9\u6CD5 FR-Designer_Refresh=\u66F4\u65B0 -FR-Designer_Refresh_Parameter_In_SQL=SQL\u4E2D\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3092\u66F4\u65B0\u3057\u307E\u3059\u304B +FR-Designer_Refresh_Parameter_In_SQL=SQL\u4E2D\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u66F4\u65B0\u3057\u307E\u3059\u304B FR-Designer_Reg_Expressions=\u6B63\u5247\u8868\u73FE\u5F0F FR-Designer_Reg_Max_Length=\u6700\u5927\u9577\u3055 FR-Designer_Reg_Min_Length=\u6700\u5C0F\u9577\u3055 -FR-Designer_ReportColumns-Columns=\u6BB5\u7D44\u307F -FR-Designer_Return-Date=\u65E5\u671F\u306B\u623B\u308B -FR-Designer_RichText=\u30EA\u30C3\u30C1\u6587\u66F8\u633F\u5165 -FR-Designer_RichTextEditor=\u30EA\u30C3\u30C1\u6587\u66F8\u30A8\u30C7\u30A3\u30BF +FR-Designer_ReportColumns-Columns=\u30B3\u30E9\u30E0\u5206\u3051 +FR-Designer_Return-Date=\u65E5\u4ED8\u306B\u623B\u308B +FR-Designer_RichText=\u30EA\u30C3\u30C1\u30C6\u30AD\u30B9\u30C8\u633F\u5165 +FR-Designer_RichTextEditor=\u30EA\u30C3\u30C1\u30C6\u30AD\u30B9\u30C8\u30A8\u30C7\u30A3\u30BF FR-Designer_Row=\u884C -FR-Designer_Row_Dimension=\u884C\u8EF8/\u7DEF\u5EA6 +FR-Designer_Row_Dimension=\u884C\u8EF8/\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3 FR-Designer_Save=\u4FDD\u5B58 FR-Designer_Search=\u691C\u7D22 FR-Designer_Set=\u8A2D\u5B9A FR-Designer_Share-Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30B7\u30A7\u30A2 -FR-Designer_Simple_general=\u30B7\u30F3\u30D7\u30EB\u901A\u7528\u30AF\u30A8\u30EA +FR-Designer_Simple_general=\u30B7\u30F3\u30D7\u30EB\u6C4E\u7528\u30AF\u30A8\u30EA FR-Designer_Song_TypeFace=\u5B8B\u4F53 FR-Designer_Start-Date=\u958B\u59CB\u65E5\u671F FR-Designer_Subscript=\u4E0B\u4ED8\u304D @@ -181,69 +180,69 @@ 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\u5F53\u8A72\u30D0\u30FC\u30B8\u30E7\u30F3\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u4F7F\u3044\u3084\u3059\u3055\u306B\u3064\u3044\u3066\u8CA2\u732E\u3057\u3066\u304F\u308C\u305F\u4EE5\u4E0B\u306EBBS\u306E\u5E06\u30BD\u30D5\u30C8\u30D5\u30A1\u30F3\u306B\u611F\u8B1D\u3057\u307E\u3059 +FR-Designer_Thank_guest=\u7279\u306B\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\u306E\u30E6\u30FC\u30B6\u9054\u306B\u611F\u8B1D\u3057\u307E\u3059 FR-Designer_Thanks-To=\u611F\u8B1D FR-Designer_Title=\u30BF\u30A4\u30C8\u30EB -FR-Designer_Total=\u5168\u90E8\u3067 +FR-Designer_Total=\u5408\u8A08 FR-Designer_UnSignIn=\u672A\u30ED\u30B0\u30A4\u30F3 -FR-Designer_Underline=\u30A2\u30F3\u30C0\u30FC\u30E9\u30A4\u30F3 +FR-Designer_Underline=\u30A2\u30F3\u30C0\u30E9\u30A4\u30F3 FR-Designer_Used=\u6700\u8FD1\u4F7F\u7528\u3057\u305F FR-Designer_User-defined-MDX=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BAMDX\u30AF\u30A8\u30EA FR-Designer_SampleText=\u30C6\u30AD\u30B9\u30C8\u4F8B -FR-Designer_Vertical-LeftToRight=\u6587\u5B57\u7E26\u66F8(\u5DE6\u304B\u3089\u53F3\u3078\uFF09 -FR-Designer_Vertical-RightToLeft=\u6587\u5B57\u7E26\u66F8(\u53F3\u304B\u3089\u5DE6\u3078) -FR-Designer_VerticalBoxLayout=\u5782\u76F4\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_Vertical-LeftToRight=\u6587\u5B57\u7E26\u66F8\u304D(\u5DE6\u304B\u3089\u53F3\u3078\uFF09 +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=\u5B8C\u5168\u306A\u30DC\u30FC\u30C0\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u306F\u3001\u6771\u3001\u5357\u3001\u897F\u3001\u5317\u3001\u4E2D\u592E\u306E5\u30D6\u30ED\u30C3\u30AF\u3088\u308A\u69CB\u6210\u3055\u308C\u307E\u3059\u3002\n\u5317\u90E8\u3068\u5357\u90E8\u3067\u306F\u9AD8\u3055\u3092\u3001\u6771\u90E8\u3068\u897F\u90E8\u3068\u3067\u306F\u5E45\u3092\u8ABF\u6574\u3067\u304D\u307E\u3059\u3002 FR-Designer_WaterMark=\u900F\u304B\u3057 -FR-Designer_Widget=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB -FR-Designer_Widget-Settings=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u8A2D\u5B9A -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_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\u30D9\u30FC\u30B9\u3092\u4F7F\u3063\u3066\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\u3059\u308B\u524D\u306B\u3001\u307E\u305A1\u3064\u306E\u6210\u529F\u63A5\u7D9A\u3067\u304D\u308B\u591A\u6B21\u5143\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306E\u63A5\u7D9A\u304C\u5FC5\u8981\u3067\u3059\u3002\n\u30C7\u30FC\u30BF\u63A5\u7D9A\u8A2D\u5B9A\u5F8C\u3001\u30C7\u30FC\u30BF\u3092\u691C\u7D22\u3059\u308B\u6642\u30012\u3064\u306E\u7570\u306A\u308B\u30C7\u30FC\u30BF\u53D6\u5F97\u624B\u6BB5\u304C\u3042\u308A\u307E\u3059\u3002\n1.\u7C21\u6613\u4E00\u822C\u691C\u7D22\uFF1A\n\u7C21\u6613\u4E00\u822C\u691C\u7D22\u306FFineBI\u304A\u3088\u3073\u305D\u306E\u4ED6\u306E\u591A\u6B21\u5143\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306B\u9069\u3057\u3066\u3044\u307E\u3059\u3002\n\u7C21\u6613\u4E00\u822C\u691C\u7D22\u3067\u306F\u3001FR\u306F\u81EA\u52D5\u7684\u306Bcube\u306E\u30EC\u30D9\u30EB\u69CB\u9020\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u9078\u629E\u3059\u308B\u306E\u3067\u3001\u76F4\u63A5\u5FC5\u8981\u306A\u30E1\u30C8\u30EA\u30C3\u30AF\u3068\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3\u3092\u9078\u629E\u3057\u3066\u3001\u691C\u7D22\u6761\u4EF6\u3092\u8FFD\u52A0\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002FR\u306F\u3042\u306A\u305F\u306E\u9078\u629E\u306B\u5FDC\u3058\u3066\u81EA\u52D5\u7684\u306B\u30C7\u30FC\u30BF\u3092\u691C\u7D22\u3057\u307E\u3059\u3002\n\u7C21\u6613\u4E00\u822C\u691C\u7D22\u306F\u30E1\u30C8\u30EA\u30C3\u30AF\u3068\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F32\u8EF8\u306E\u691C\u7D22\u3060\u3051\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002\n\u30E1\u30C8\u30EA\u30C3\u30AF\u3068\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3\u306E\u8A2D\u5B9A\u3067\u306F\u3001\u73FE\u6642\u70B9\u3067\u306F\u5FC5\u8981\u306A\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3\u3057\u304B\u9078\u629E\u3067\u304D\u307E\u305B\u3093\u3002\u307E\u305F\u624B\u52D5\u3067\u5909\u66F4\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3002\n\u30D5\u30A3\u30EB\u30BF\u6761\u4EF6\u306FOPEN SQL\u6587\u6CD5\u3092\u63A1\u7528\u3059\u308B\u306E\u3067\u3001${abc}\u3092\u5165\u529B\u3057\u3066\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u308B\u3002\u4F7F\u3044\u65B9\u306F\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306E\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u3068\u540C\u3058\u3067\u3059\u3002\n2.\u30AB\u30B9\u30BF\u30E0MDX\u691C\u7D22\uFF1A\n\u30AB\u30B9\u30BF\u30E0MDX\u691C\u7D22\u3067\u306F\u3001MDX\u8A00\u8A9E\u3092\u30AB\u30B9\u30BF\u30E0\u3057\u3066\u5FC5\u8981\u306A\u7D50\u679C\u3092\u691C\u7D22\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\n\u6CE8\u610F\uFF1A\u30AB\u30B9\u30BF\u30E0MDX\u691C\u7D22\u3067\u3082\u30012\u8EF8\u306E\u691C\u7D22\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B\u3053\u3068\u3057\u304B\u3067\u304D\u306A\u3044\u3002\n${abc}\u3092\u5165\u529B\u3057\u3066\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u308B\u3002\u4F7F\u3044\u65B9\u306F\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306E\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u3068\u540C\u3058\u3067\u3059\u3002\nFineBI\u306Ecube\u306FMDX\u691C\u7D22\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3002 +FR-Designer_bold=\u592A\u5B57 FR-Designer_font=\u30D5\u30A9\u30F3\u30C8 -FR-Designer_italic=\u30A4\u30BF\u30EA\u30C3\u30AF +FR-Designer_italic=\u659C\u4F53 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=\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_Layout_Image_Titled=\u4E26\u3079\u3066\u8868\u793A +FR-Designer-StyleAlignment_Layout_Image_Extend=\u62E1\u5927\u8868\u793A +FR-Designer-StyleAlignment_Layout_Image_Adjust=\u81EA\u52D5\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=\u30C7\u30D5\u30A9\u30EB\u30C8 -FR-Designer-StyleAlignment_Tooltips_Top=\u4E0A\u8A70\u3081 -FR-Designer-StyleAlignment_Tooltips_Bottom=\u4E0B\u8A70\u3081 +FR-Designer-StyleAlignment_Tooltips_Top=\u5DE6\u63C3\u3048 +FR-Designer-StyleAlignment_Tooltips_Bottom=\u4E0B\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_Pane_Style=\u63C3\u3048\u65B9\u5F0F FR-Designer-StyleAlignment_Style_Indentation=\u30A4\u30F3\u30C7\u30F3\u30C8 -FR-Designer-StyleAlignment_Style_Spacing=\u9593\u9694\u8DDD\u96E2 +FR-Designer-StyleAlignment_Style_Spacing=\u9593\u9694 FR-Designer-StyleAlignment_Style_Alignment=\u63C3\u3048 -FR-Designer-CommitTab_Submit=\u63D0\u51FA\u3059\u308B +FR-Designer-CommitTab_Submit=\u66F8\u304D\u8FBC\u307F 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=\u8A18\u8FF0 +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_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_Blow_set=\u4EE5\u4E0B\u306E\u8A2D\u5B9A +FR-Designer_I_Want_To_Set_Single=\u5F53\u8A72\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u500B\u5225\u8A2D\u5B9A +FR-Designer_Using_Server_Report_View_Settings=\u30B5\u30FC\u30D0\u8A2D\u5B9A\u3092\u63A1\u7528 +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=\u7CBE\u78BA\u8A2D\u5B9A -FR-Designer_Gradient-Color=\u8272\u3092\u5F90\u3005\u306B\u5909\u5316 +FR-Designer_Gradient-Color=\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3 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_chart-PreStyle=\u30B0\u30E9\u30D5\u306E\u4E8B\u524D\u5B9A\u7FA9\u7CFB\u5217\u8272 +FR-Designer_Chart-PreStyle=\u30B0\u30E9\u30D5\u306E\u4E8B\u524D\u5B9A\u7FA9\u7CFB\u5217\u8272 +FR-Designer_Already_exist=\u73FE\u5728\u306E\u74B0\u5883\u306B\u306F\u65E2\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059\: FR-Designer_Database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 -FR-Designer_Model=\u30E2\u30C7\u30EB -FR-Designer_Refresh_Successfully=\u5237\u65B0\u6210\u529F -FR-Designer_SQL-Table=\u8868 +FR-Designer_Model=\u30E2\u30FC\u30C9 +FR-Designer_Refresh_Successfully=\u66F4\u65B0\u6210\u529F +FR-Designer_SQL-Table=\u30C6\u30FC\u30D6\u30EB FR-Designer_SQL-View=\u30D3\u30E5\u30FC FR-Designer_Failed=\u5931\u6557 FR-Designer_Chart_Field_Name=\u30D5\u30A3\u30FC\u30EB\u30C9\u540D @@ -257,96 +256,96 @@ 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\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_Role_changed_isRefresh=\u30ED\u30FC\u30EB\u306F\u5909\u66F4\u3057\u307E\u3057\u305F\u304C\u3001\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5\u3092\u884C\u3044\u307E\u3059\u304B\uFF1F +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_Form-Iframe=\u30A6\u30A7\u30D6\u30DA\u30FC\u30B8\u30DC\u30C3\u30AF\u30B9 FR-Designer_Type=\u30BF\u30A4\u30D7 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_Simple_general_forV6=\u6C4E\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=\u51FA\u529B +FR-Designer_Export=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 FR-Designer_Delete=\u524A\u9664 -FR-Designer_Sequenced_number=\u30CA\u30F3\u30D0\u30FC -FR-Designer_Parameters_name=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u540D\u79F0 +FR-Designer_Sequenced_number=\u756A\u53F7 +FR-Designer_Parameters_name=\u30D1\u30E9\u30E1\u30FC\u30BF\u540D FR-Designer_SAP_datatype=SAP\u30C7\u30FC\u30BF\u30BF\u30A4\u30D7 -FR-Designer_Return_set_name=\u30BB\u30C3\u30C8\u306B\u623B\u308B +FR-Designer_Return_set_name=\u623B\u308B\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u540D FR-Designer_Datatype=\u30C7\u30FC\u30BF\u30BF\u30A4\u30D7 -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_Corre_parameter=\u5BFE\u5FDC\u3059\u308B\u30D1\u30E9\u30E1\u30FC\u30BF +FR-Designer_Default_value=\u30D1\u30E9\u30E1\u30FC\u30BF\u30C7\u30D5\u30A9\u30EB\u30C8\u5024 FR-Designer_SAP_column_name=SAP\u5217\u540D -FR-Designer_Table_name=\u8868\u306E\u540D\u79F0 +FR-Designer_Table_name=\u30C6\u30FC\u30D6\u30EB\u540D FR-Designer_Columns_choosed=\u9078\u629E\u3057\u305F\u5217 -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_Where_claus=\u30D5\u30A3\u30EB\u30BF\u30FC\u6761\u4EF6 +FR-Designer_PreStyle=\u4E8B\u524D\u5B9A\u7FA9\u30B9\u30BF\u30A4\u30EB +FR-Designer_Loading=\u30ED\u30FC\u30C7\u30A3\u30F3\u30B0... +FR-Designer_Table=\u30C6\u30FC\u30D6\u30EB 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_EmailPane-tips=${abc}\u3092\u30D1\u30E9\u30E1\u30FC\u30BF\u3068\u3057\u3066\u5165\u529B\u3057\u3001abc\u306F\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u3002${today()}\u3092\u6570\u5F0F\u306B\u3059\u308B\u3002\u4F8B\:\u30BF\u30A4\u30C8\u30EB\u306E\u672C\u6587\u304C\u300C${today()}\u7D71\u8A08\u72B6\u6CC1\u300D\u3001\u5B9B\u5148\u304C\u300C${p},123@gmail.com,mike\u300D\u306E\u3068\u304D\u3001\u3053\u3053\u3067mike\u306F\u3001\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u3067\u7BA1\u7406\u3055\u308C\u3066\u3044\u308B\u30E6\u30FC\u30B6\u30FCID\u306E\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_Email_sentEmail=\u30E1\u30FC\u30EB\u9001\u4FE1 -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_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\u66AB\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_Add=\u8FFD\u52A0 -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_Custom_Icon_Message2=\u64CD\u4F5C\u306B\u4E0D\u9069\u5207\u306A\u6240\u304C\u898B\u3064\u304B\u308C\u307E\u3057\u305F 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=\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_Click_this_button=\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30D1\u30B9\u9078\u629E\u3092\u884C\u3046 +FR-Designer_Custom_Icon_Message3=\u30A2\u30A4\u30B3\u30F3\u306E\u540D\u79F0\u306F\u65E2\u306B\u4F7F\u7528\u3057\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\u3001Intenet\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u30B7\u30B9\u30C6\u30E0\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30D6\u30E9\u30A6\u30B6\u3092\u8A2D\u5B9A\u3057\u3066\u4E0B\u3055\u3044\u3002 FR-Designer_Open=\u958B\u304F -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_Utils-OpenDemoEnv=\u88FD\u54C1\u30C7\u30E2\u3092\u4F7F\u3048\u306A\u308C\u3070\u3001\u81EA\u52D5\u3067\u4F5C\u696D\u76EE\u6B21\u306B\u5207\u308A\u66FF\u3048\u307E\u3059\uFF1A +FR-Designer_Utils-switch=\n\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\u3092\u4F7F\u3048\u306A\u308C\u3070\u3001\u81EA\u52D5\u3067\u4F5C\u696D\u76EE\u6B21\u3092\u65B0\u898F\u4F5C\u6210\u3057\u307E\u3059\uFF1A +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\u3055\u308C\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\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\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_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\uFF1A -FR-Designer_Exchange_key=\u30AF\u30EA\u30C3\u30AF\u4E92\u63DB\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\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_Cursor_to_previous_column=\u30AB\u30FC\u30BD\u30EB\u3092\u524D\u306E\u5217\u306B\u79FB\u3059\uFF1A +FR-Designer_Cursor_to_previous_row=\u30AB\u30FC\u30BD\u30EB\u3092\u524D\u306E\u884C\u306B\u79FB\u3059\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\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_Show_Icon=\u30DC\u30BF\u30F3\u306E\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A +FR-Designer_Show_Text=\u30DC\u30BF\u30F3\u306E\u540D\u524D\u3092\u8868\u793A +FR-Designer_User_Defined_Event=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u30A4\u30D9\u30F3\u30C8 +FR-Designer_Output_PDF=PDF\u3092\u51FA\u529B +FR-Designer_Output_Word=Word\u3092\u51FA\u529B +FR-Designer_Image=\u753B\u50CF +FR-Designer_Flash_Print=Flash\u5370\u5237 +FR-Designer_PDF_Print=PDF\u5370\u5237 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_Server_Print=\u30B5\u30FC\u30D0\u5074\u5370\u5237 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=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_IS_Auto_Scale=iframe\u306B\u57CB\u3081\u8FBC\u3080\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_Top=\u4E0A FR-Designer_Bottom=\u4E0B -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-Collect_OSXTips=\u30D2\u30F3\u30C8\uFF1A\u201Dcontrol + v\u201D\u3092\u30D7\u30EC\u30B9\u3057\u3066\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_X_Coordinate=\u6A2A\u5EA7\u6A19 FR-Designer_Y_Coordinate=\u7E26\u5EA7\u6A19 -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_Widget_Width=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u5E45\u3055 +FR-Designer_Widget_Height=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u9AD8\u3055 FR-Designer_Min_Height=\u6700\u5C0F\u9AD8\u3055 FR-Designer_LeftParent=\u5DE6\u89AA\u30BB\u30EB -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-PluginLicense_Check_Failed=\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30E9\u30A4\u30BB\u30F3\u30B9\u30D5\u30A1\u30A4\u30EB\u306F\u671F\u9650\u5207\u308C\u62C5\u3063\u3066\u3044\u307E\u3059\u3001\u518D\u5EA6\u7533\u8ACB\u3057\u3066\u304F\u3060\u3055\u3044\u3002 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\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-Type_Parameter= ${abc}\u3092\u5165\u529B\u3057\u3066\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002
 \u3053\u3053\u3067abc\u3068\u306F\u30D1\u30E9\u30E1\u30FC\u30BF\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-Encoding_Type=\u30A8\u30F3\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 @@ -354,127 +353,127 @@ FR-Designer_Space=\u30B9\u30DA\u30FC\u30B9 FR-Designer_CommaDismenber=\u30B3\u30F3\u30DE FR-Designer_Other=\u305D\u306E\u4ED6 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_KeyPoint=\u30AD\u30FC\u30CE\u30FC\u30C9 +FR-Designer_loadedTreeModel=\u30ED\u30FC\u30C9\u5931\u6557\u3001\u78BA\u8A8D\u5F8C\u3067\u518D\u8A66\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\uFF1A FR-Designer_XMLA_Database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 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\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_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_Column-Axis=\u5217\u8EF8 FR-Designer_LiteCondition_Common=\u4E00\u822C -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_Formula=\u6570\u5F0F +FR-Designer_LiteCondition_ConditionB-AND=\u3068(AND) +FR-Designer_LiteCondition_ConditionB-OR=\u307E\u305F\u306F(OR) FR-Designer_LiteCondition_Common_Condition=\u666E\u901A\u6761\u4EF6 -FR-Designer_LiteCondition_Formula_Condition=\u516C\u5F0F\u6761\u4EF6 +FR-Designer_LiteCondition_Formula_Condition=\u6570\u5F0F\u6761\u4EF6 FR-Designer_LiteCondition_Define=\u5B9A\u7FA9 FR-Designer_Select_All=\u5168\u9078\u629E -FR-Designer-Plugin_Expire_Dialog_Title=\u671F\u9650\u5207\u308C\u306E\u30D7\u30E9\u30B0\u30A4\u30F3 -FR-Designer-Plugin_Expire_Dialog_Text=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u3001\u8CFC\u5165\u3092\u3059\u308B\u305F\u3081\u306B\u5E06\u30BD\u30D5\u30C8\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30BB\u30F3\u30BF\u30FC\u3092\u884C\u304F\u3001\u6709\u52B9\u671F\u9650\u304C\u5207\u308C\u3066\u3044\u307E\u3059\u3002 -FR-Designer-Plugin_Finerest_Addon=\u5E06\u8EDF\u5FDC\u7528\u30BB\u30F3\u30BF\u30FC +FR-Designer-Plugin_Expire_Dialog_Title=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u671F\u9650\u5207\u308C +FR-Designer-Plugin_Expire_Dialog_Text=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u671F\u9650\u5207\u308C\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3001\u30D5\u30A1\u30F3\u30E9\u30F3\u30A2\u30D7\u30EA\u30BB\u30F3\u30BF\u30FC\u3078\u8CFC\u5165\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +FR-Designer-Plugin_Finerest_Addon=\u30D5\u30A1\u30F3\u30E9\u30F3\u30A2\u30D7\u30EA\u30BB\u30F3\u30BF\u30FC FR-Designer_Performance_First=\u6027\u80FD\u512A\u5148 FR-Designer_Total_N_Grade=\u5168\u90E8\u3067\:${N}\u5C64 FR-Designer_time(s)=\u56DE FR-Designer_General=\u5E38\u7528 -FR-Designer_Advanced=\u9AD8\u7D1A +FR-Designer_Advanced=\u8A73\u7D30 FR-Designer_Oracle=\u3059\u3079\u3066\u306E\u30C6\u30FC\u30D6\u30EB FR-Designer_Product_improve=\u88FD\u54C1\u6539\u5584 -FR-Designer_Join_Product_improve=\u88FD\u54C1\u6539\u5584\u30D7\u30E9\u30F3\u306B\u52A0\u3048\u308B +FR-Designer_Join_Product_improve=\u88FD\u54C1\u6539\u5584\u30D7\u30E9\u30F3\u306B\u53C2\u52A0\u3057\u307E\u3059 FR-Designer_Preference-Function=\u30D5\u30A1\u30F3\u30AF\u30B7\u30E7\u30F3\u8A2D\u5B9A FR-Designer_max_undo_limit=\u6700\u5927\u53D6\u308A\u6D88\u3057\u56DE\u6570 -FR-Designer_Surport_String_To_Formula=\u30AD\u30E3\u30E9\u30AF\u30BF\u30FC\u6587\u5B57\u5217\u7DE8\u96C6\u3092\u516C\u5F0F\u3068\u3059\u308B\u3053\u3068\u306B\u30B5\u30DD\u30FC\u30C8 -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_Surport_String_To_Formula=\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 +FR-Designer_Export_Setting=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u8A2D\u5B9A +FR-Designer_Select_Export_Log_Directory=\u30A8\u30AF\u30B9\u30DD\u30FC\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_Work_After_Restart_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u518D\u8D77\u52D5\u5F8C\u3067\u6709\u52B9 FR-Designer_Setting-Ruler-Units=\u30EB\u30FC\u30E9\u30FC\u5358\u4F4D\u8A2D\u5B9A FR-Designer_PageSetup-mm=\u30DF\u30EA\u30E1\u30FC\u30C8\u30EB -FR-Designer_Unit_CM=\u30BB\u30F3\u30C1\u30E1\u30FC\u30C8\u30EB +FR-Designer_Unit_CM=\u30BB\u30F3\u30C1 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\u756A\u53F7 -FR-Designer_Oracle_All_Tables=\u3059\u3079\u3066\u306E\u30C6\u30FC\u30D6\u30EB +FR-Designer_Oracle_All_Tables=\u5168\u3066\u306E\u30C6\u30FC\u30D6\u30EB FR-Designer_Unit_PT=\u30DD\u30F3\u30C9 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_Event_ShowWidgets=\u76F4\u63A5\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\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\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_Get-CubeGetting=cube\u3092\u53D6\u5F97 +FR-Designer-BBSLogin_Download-Unlogin-Tip=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u524D\u306B\u5148\u305A\u306F\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_Mobile-Attr=\u30E2\u30D0\u30A4\u30EB\u7AEF\u672B\u30D7\u30ED\u30D1\u30C6\u30A3 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=\u5E06\u8EDF\u30D5\u30A9\u30FC\u30E9\u30E0 +FR-Designer_COMMUNITY_BBS=\u30D5\u30A1\u30F3\u30E9\u30F3BBS 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\u66F4\u65B0 -FR-Designer_COMMUNITY_NEED=\u9700\u8981\u306E\u63D0\u51FA +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_BUG=Bug\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF -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_COMMUNITY_SIGN=\u30D5\u30A1\u30F3\u30E9\u30F3\u8A8D\u8A3C +FR-Designer_COMMUNITY_QUESTIONS=\u304A\u554F\u3044\u5408\u308F\u305B +FR-Designer_Write-Save-Formula=\u66F8\u304D\u8FBC\u307F/\u30C7\u30FC\u30BF\u5206\u6790\u306E\u6642\u3001\u6570\u5F0F\u8A08\u7B97\u3092\u4FDD\u7559 +FR-Designer_Export-Save-Formula=\u51FA\u529B/\u7DE8\u96C6\u3059\u308B\u6642\u3001\u6570\u5F0F\u8A08\u7B97\u3092\u4FDD\u7559 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_Forbid_Widgets_Intersects=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u91CD\u306A\u308A\u7981\u6B62 +FR-Designer_Widget_Scaling_Mode_Fit=\u9069\u5FDC\u30A8\u30EA\u30A2 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-Widget_Area_Scaling=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u30A8\u30EA\u30A2\u30BA\u30FC\u30E0 +FR-Designer-QQLogin-Determine=\u78BA\u3000\u5B9A FR-Designer-QQLogin-Cancel=\u30AD\u30E3\u30F3\u30BB\u30EB -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-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_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\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=\u30B9\u30B1\u30FC\u30EA\u30F3\u30B0\u8AD6\u7406 +FR-Designer-Widget_Scaling_Mode=\u30BA\u30FC\u30E0\u30ED\u30B8\u30C3\u30AF FR-Designer_Mobile-Refresh=\u66F4\u65B0 FR-Designer_Mobile-ToolBar=\u30C4\u30FC\u30EB\u30D0\u30FC -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_WLayout-Absolute-ToolTips=\u81EA\u7531\u5F0F\u914D\u7F6E\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_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\u30C8\u30A6\u30A7\u30D6\u30D7\u30ED\u30D1\u30C6\u30A3 +FR-Designer_Template_Web_Attributes=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8WEB\u30D7\u30ED\u30D1\u30C6\u30A3 FR-Designer_Basic=\u57FA\u672C 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_Pagination_Setting=\u6539\u9801\u30D7\u30EC\u30D3\u30E5\u30FC\u8A2D\u5B9A +FR-Designer_Write_Setting=\u66F8\u304D\u8FBC\u307F\u30D7\u30EC\u30D3\u30E5\u30FC\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\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-Datasource-Param_DES=  "${abc}"\u3092\u30D1\u30E9\u30E1\u30FC\u30BF\u3068\u3057\u3066\u5165\u529B\u3067\u304D\u307E\u3059\u3002\u3053\u3053\u3067abc\u306F\u30D1\u30E9\u30E1\u30FC\u30BF\u3002abc\u306F\u30D1\u30E9\u30E1\u30FC\u30BF\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 +FR-Designer-LayerPageReport_PageQuery=\u30DA\u30FC\u30B8\u5206\u3051\u30AF\u30A8\u30EA +FR-Designer-LayerPageReport_Define_PageQuerySQL=\u30DA\u30FC\u30B8\u5206\u3051\u30AF\u30A8\u30EA\u6587\u3092\u5B9A\u7FA9 FR-Designer_Is_Share_DBTableData=\u5171\u6709\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 FR-Designer_Event=\u30A4\u30D9\u30F3\u30C8 FR-Designer_Properties=\u30D7\u30ED\u30D1\u30C6\u30A3 FR-Designer_Permissions_Edition=\u6A29\u9650\u7DE8\u96C6 -FR-Designer_Export_Excel_Page=\u6539\u30DA\u30FC\u30B8\u51FA\u529B +FR-Designer_Export_Excel_Page=\u6539\u9801\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_Excel_PageToSheet=\u6539\u9801\uFF06\u30B7\u30FC\u30C8\u5206\u3051 +FR-Designer_Export_failed=\u51FA\u529B\u306F\u5931\u6557\u306B\u306A\u308A\u307E\u3057\u305F +FR-Designer_Exported_successfully=\u51FA\u529B\u6210\u529F +FR-Designer_Exporting=\u51FA\u529B\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_OK=\u78BA\u3000\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 @@ -489,73 +488,73 @@ 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\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_Create_Tree=\u30C4\u30EA\u30FC\u3092\u69CB\u7BC9 FR-Designer_Set_Callback_Function=\u30B3\u30FC\u30EB\u30D0\u30C3\u30AF\u95A2\u6570\u8A2D\u5B9A 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 +FR-Designer_FormulaPane_Tips=\u30D2\u30F3\u30C8\:B1\u3092\u5165\u529B\u3057\u3066\u3001\u7B2C\u4E00\u884C\u3068\u7B2C\u4E8C\u884C\u306E\u30C7\u30FC\u30BF\u3092\u5165\u529B\u3067\u304D\u307E\u3059\u3002 FR-Designer_FormulaPane_Variables=\u5909\u6570 -FR-Designer_FormulaPane_Formula_Description=\u516C\u5F0F\u8AAC\u660E +FR-Designer_FormulaPane_Formula_Description=\u6570\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=\u985E\u540D -FR-Designer_Description_panel=\u8A18\u8FF0 +FR-Designer_ClassName_panel=\u30AF\u30E9\u30B9\u540D +FR-Designer_Description_panel=\u8AAC\u660E FR-Designer_Edit_panel=\u7DE8\u96C6 -FR-Designer_Property_panel=\u5C5E\u6027 +FR-Designer_Property_panel=\u30D7\u30ED\u30D1\u30C6\u30A3 FR-Designer_Select_panel=\u9078\u629E FR-Designer_LayoutTable_Column_Width=160 -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_Set_BG_Of_Current_Row=\u73FE\u5728\u306B\u7DE8\u96C6\u3055\u308C\u305F\u5165\u308B\u884C\u306E\u80CC\u666F\u8A2D\u5B9A +FR-Designer_Unload_Check=\u753B\u9762\u3092\u96E2\u308C\u308B\u6642\u306E\u30B5\u30D6\u30DF\u30C3\u30C8\u30D2\u30F3\u30C8 +FR-Designer_ReportColumns_Columns_Optional=\u30B3\u30E9\u30E0\u5206\u3051 FR-Designer_Row_Icon_File_Name=row.png 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\uFF1A -FR-Designer_Allow_Null=\u7A7A\u6B04\u3042\u308A +FR-Designer_Allow_Null=\u7A7A\u6B04\u3092\u8A31\u3059 FR-Designer_PageSetup_Page=\u30DA\u30FC\u30B8 -FR-Designer_Custom_Job_Description=\u8A18\u8FF0 -FR-Designer_Property=\u5C5E\u6027 -FR-Designer_ClassName=\u985E\u540D -FR-Designer_Polyblock_Edit=\u30A2\u30B0\u30EA\u30B2\u30FC\u30B7\u30E7\u30F3\u30D6\u30ED\u30C3\u30AF\u7DE8\u96C6 -FR-Designer_Function_Description_Area_Text=\u3053\u306E\u30AF\u30E9\u30B9\u306F\u7D99\u627F\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"com.fr.script.AbstractFunction"\u3002\u3092\u7D99\u627F\u3059\u3079\u304D\u3067\u3059\u3002\u30B3\u30F3\u30D1\u30A4\u30EB\u5F8C\u306E\u985E\u30D5\u30A1\u30A4\u30EB\u3092\nJ2EE\u30B5\u30FC\u30D0\u30FC "{R1}" \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3002\u306B\u30B3\u30D4\u30FC\u3057\u3066\u3001class\u306B\u5BFE\u5FDC\u3059\u308Bjava\u30D5\u30A1\u30A4\u30EB\u3082\u5F53\u76EE\u6B21\u306B\u7F6E\u3044\u3066\u304F\u3060\u3055\u3044\u3002\n\u4F8B\u3048\u3070\uFF1A{R2} +FR-Designer_Custom_Job_Description=\u8AAC\u660E +FR-Designer_Property=\u30D7\u30ED\u30D1\u30C6\u30A3 +FR-Designer_ClassName=\u30AF\u30E9\u30B9\u540D +FR-Designer_Polyblock_Edit=\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\u30B3\u30F3\u30D1\u30A4\u30EB\u5F8C\u306E\u30AF\u30E9\u30B9\u30D5\u30A1\u30A4\u30EB\u3092\nJ2EE\u30B5\u30FC\u30D0 "{R1}" \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u8CBC\u308A\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u3002\u7BA1\u7406\u306E\u305F\u3081class\u306B\u5BFE\u5FDC\u3059\u308Bjava\u30D5\u30A1\u30A4\u30EB\u3082\u8A72\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=\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_Gradient_Direction=\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3 +FR-Designer_Drag_To_Select_Gradient=\\ \u4E0B\u65B9\u306E\u30DC\u30BF\u30F3\u3092\u30D7\u30EB\u30C0\u30A6\u30F3\u3057\u3066\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3\u30A8\u30EA\u30A2\u3092\u9078\u629E\u3057\u3001\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u8A72\u5F53\u8272\u3092\u9078\u629E\u3057\u307E\u3059\u3002 FR-Designer_Display_Value=\u8868\u793A\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\uFF12\u9032\u6CD5\u306E\u5185\u5BB9\u3092\u8868\u793A +FR-Designer_Show_As_Download=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30EA\u30F3\u30AF\u30672\u9032\u6CD5\u306E\u5185\u5BB9\u3092\u8868\u793A\u3059\u308B FR-Designer_File_Name_For_Download=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30D5\u30A1\u30A4\u30EB\u540D FR-Designer_No=\u3044\u3044\u3048 -FR-Designer_Pagination=\u30DA\u30FC\u30B8\u30F3\u30B0 -FR-Designer-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_Pagination=\u6539\u9801 +FR-Designer-Move_Tab_First=\u6700\u521D\u306B\u79FB\u52D5 +FR-Designer-Move_Tab_End=\u6700\u5F8C\u306B\u79FB\u52D5 +FR-Designer-Move_Tab_Next=\u6B21\u306B\u79FB\u52D5 +FR-Designer-Move_Tab_Prev=\u524D\u306B\u79FB\u52D5 +FR-Designer_DS_TableData=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 FR-Designer_Parameter-Formula=\u6570\u5F0F -FR-Designer_Background_Null= -FR-Designer_Background_Color= -FR-Designer_Background_Texture= -FR-Designer_Background_Pattern= -FR-Designer_Background_Gradient_Color= -FR-Designer_Background_Image= -FR-Designer_Background_Clear= -FR-Designer_Background_Image_Select= -FR-Designer_Initial_Background_Tips= -FR-Designer_Mouse_Move_Tips= +FR-Designer_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 +FR-Designer_Background_Image=\u753B\u50CF\u9078\u629E +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=\u30AB\u30FC\u30BD\u30EB\u304C\u30DC\u30BF\u30F3\u3092\u30AB\u30D0\u30FC\u3059\u308B\u6642\u306E\u80CC\u666F 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_Mouse_Click_Tips=\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\u3067\u3059\u304C\u3001API\u4E0D\u5177\u5408\u306A\u3068\u3053\u308D\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\u9006\u9806 FR-Designer_Logarithmic=\u5BFE\u6570\u76EE\u76DB\u308A FR-Designer_Chart_Log_Base=\u5E95\u6570 @@ -565,20 +564,20 @@ 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\u8868 +FR-Designer_SimpleDetail_Report=\u7C21\u5358\u660E\u7D30\u5E33\u7968 FR-Designer_Reset=\u30EA\u30BB\u30C3\u30C8 FR-Designer_WidgetOrder=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u9806\u756A FR-Designer_Button-OK=\u5206\u304B\u308A\u307E\u3057\u305F FR-Designer_Mobile-Warning=\u6700\u5927\u306E\u9AD8\u3055\u306F\u8868\u793A\u30A8\u30EA\u30A2\u306E80\uFF05\u4EE5\u4E0A\u306B\u306A\u308A\u307E\u305B\u3093 FR-Designer_Mobile_Form_Analysis_Annotation=\u8AAC\u660E\:\u8A72\u5F53\u8A2D\u5B9A\u3088\u308A\u3001\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u30A2\u30D7\u30EA\u3067\u306E\u89E3\u6790\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3002 FR-Designer-Invalid_Page_Number=\u7121\u52B9\u306A\u30DA\u30FC\u30B8\u756A\u53F7 -FR-Designer_Form-Forzen-Speed=\u3001\u305D\u3057\u3066\u6A2A\u65B9\u5411\u81EA\u5DF1\u9069\u5FDC\u307E\u305F\u306F2\u65B9\u5411\u81EA\u52D5\u9069\u5FDC\u3092\u5229\u7528\u3057\u3001\u5E33\u7968\u8868\u793A\u306E\u30B9\u30D4\u30FC\u30C9\u3092\u4E0A\u3052\u3067\u304D\u307E\u3059\u3002 -FR-Designer_Properties_Mobile=\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u5C5E\u6027 -FR-Designer_AllCategories=\u5168\u3066\u306E\u7A2E\u985E -FR-Designer-Selected_Widget=\u5F53\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 -FR-Designer_SimpleCross_Report=\u7C21\u5358\u30AF\u30ED\u30FC\u30B9\u8868 +FR-Designer_Form-Forzen-Speed=\u3001\u305D\u3057\u3066\u6A2A\u65B9\u5411\u81EA\u5DF1\u9069\u5FDC\u307E\u305F\u306F\u53CC\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\u30D7\u30ED\u30D1\u30C6\u30A3 +FR-Designer_AllCategories=\u5168\u3066\u306E\u30AB\u30C6\u30B4\u30EA +FR-Designer-Selected_Widget=\u73FE\u5728\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 +FR-Designer_SimpleCross_Report=\u7C21\u5358\u30AF\u30ED\u30FC\u30B9\u5E33\u7968 FR-Designer_Log=\u30ED\u30B0 -FR-Designer_Form-Fit-Tip=\u81EA\u5DF1\u9069\u5FDC\u30D7\u30E9\u30B0\u30A4\u30F3 +FR-Designer_Form-Fit-Tip=\u81EA\u52D5\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 @@ -596,1390 +595,1409 @@ FR-Designer_Delete_Template=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u52 FR-Designer_Mobile_Report_Analysis_Annotation=\u8AAC\u660E\:\u8A72\u5F53\u5C5E\u6027\u3088\u308A\u3001\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u30A2\u30D7\u30EA\u3067\u306E\u89E3\u6790\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3001\u9801\u5206\u3051\u30D7\u30EC\u30D3\u30E5\u30FC\u3060\u3051\u3092\u652F\u6301\u3001\u66F8\u304D\u8FBC\u307F\u306B\u8A2D\u5B9A\u3059\u308B\u6642\u7121\u52B9\u306B\u306A\u308A\u307E\u3059\u3002 FR-Designer_DoubleLayer_Report=\u4E8C\u968E\u30BF\u30A4\u30C8\u30EB FR-Designer_Validate=\u691C\u8A3C -CellWrite-InsertRow_NULL=Null\u5024 +CellWrite-InsertRow_NULL=\u30CC\u30EB DashBoard-ChartFloat=\u30B0\u30E9\u30D5 -contact_info=\u304A\u554F\u3044\u5408\u308F\u305B\u60C5\u5831\uFF08\u4EFB\u610F\uFF09 +contact_info=\u304A\u554F\u3044\u5408\u308F\u305B\u60C5\u5831\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09 Page_Setup=\u30DA\u30FC\u30B8\u8A2D\u5B9A -CellWrite-Print_Export=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3092\u5370\u5237 -Cannot_Get_Date=\u65E5\u6642\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093 -FR-Designer_Modify=\u6539\u6B63 -M-Write_Preview=\u5831\u544A\u30D7\u30EC\u30D3\u30E5\u30FC +CellWrite-Print_Export=\u5370\u5237\u3068\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +Cannot_Get_Date=\u65E5\u4ED8\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093 +FR-Designer_Modify=\u4FEE\u6B63 +M-Write_Preview=\u66F8\u304D\u8FBC\u307F\u30D7\u30EC\u30D3\u30E5\u30FC FR-Base_RWA-Key=\u30E1\u30A4\u30F3\u30AD\u30FC China=\u4E2D\u56FD -Set_Legend_Sytle=\u51E1\u4F8B\u66F8\u5F0F\u3092\u8A2D\u5B9A +Set_Legend_Sytle=\u51E1\u4F8B\u306E\u66F8\u5F0F\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 +Following_parameters_are_not_generated=\u4EE5\u4E0B\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u306F\u307E\u3060\u751F\u6210\u3055\u308C\u3066\u3044\u307E\u305B\u3093 FR-Designer-Basic_Activation_Key_Copy_OK=\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F -Utils-Current_Sheet=\u30AB\u30EC\u30F3\u30C8\u30B7\u30FC\u30C8 +Utils-Current_Sheet=\u73FE\u5728\u306E\u30B7\u30FC\u30C8 ConditionB-is_less_than=\u3088\u308A\u5C0F\u3055\u3044 -BorderLayout-West=\u897F\u90E8\u306E +BorderLayout-West=\u897F 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
+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\u5E33\u7968\u6A5F\u80FD\u306E\u591A\u304F\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 Tree-Width=\u5E45 -alert_word=\u884C\u306E\u9AD8\u3055\u3092\u56FA\u5B9A\u305B\u305A\u5C0E\u51FA\u3092\u9078\u629E\u3057\u305F\u6B73\u3001\u5C0E\u51FA\u3057\u305Fword\u306E\u7DE8\u96C6\u306F\u3001\u30BB -PageSetup-Paper_Size=\u7D19\u30B5\u30A4\u30BA -M-Page_Setup=\u30DA\u30FC\u30B8\u306E\u8A2D\u5B9A -DashBoard-FormBook=\u8868 +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 X-Coordinate=\u6A2A\u5EA7\u6A19 -Style-Line_Spacing=\u884C\u9593\u9694\u8DDD\u96E2 -FR-Designer_Plugin_Should_Update_Title=Warning +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 Server-Define_Data_Connection=\u30C7\u30FC\u30BF\u63A5\u7D9A\u5B9A\u7FA9 -BarInside=\u67F1\u5B50\u5185\u4FA7 -Border-Color=\u67A0\u7DDA\u8272 -NotAllow=\u975E\u5408\u6CD5 -Utils-File_type=\u30D5\u30A1\u30A4\u30EB\u30BF\u30A4\u30D7 -FR-Designer-Plugin_Install_From_Local=\u30ED\u30FC\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3059\u308B -Summary_Method=\u53D6\u308A\u307E\u3068\u3081\u65B9\u6CD5 -Select_Specified_Grouping=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u30B0\u30EB\u30FC\u30D7\u5206\u3051\u3092\u9078\u629E -HF-Number_of_Page=\u7DCF\u30DA\u30FC\u30B8\u6570 +BarInside=\u68D2\u306E\u5185\u5074 +Border-Color=\u67A0\u306E\u8272 +NotAllow=\u9055\u6CD5 +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\u5F0F +Select_Specified_Grouping=\u30AB\u30B9\u30BF\u30E0\u30B0\u30EB\u30FC\u30D7\u5206\u3051\u3092\u9078\u629E +HF-Number_of_Page=\u7DCF\u30DA\u30FC\u30B8\u6570\u633F\u5165 FR-Designer-Tree_Height=\u9AD8\u3055 Owner=\u30AA\u30FC\u30CA\u30FC -Home=\u30E1\u30A4\u30F3\u30DA\u30FC\u30B8 -FR-Server_Embedded_Server_Stop=\u5185\u8535\u30B5\u30FC\u30D0\u30FC-\u4E00\u6642\u505C\u6B62 -FR-Designer-Plugin_Detecting_Update=\u66F4\u65B0\u3092\u30C1\u30A7\u30C3\u30AF\u3057\u3066\u3044\u307E\u3059 -HF-Whether_to_define_the_selected_type=\u9078\u629E\u3055\u308C\u305F\u30BF\u30A4\u30D7\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u304B -StyleAlignment-Right=\u53F3\u8A70\u3081 -FR-Designer_Alignment-Style=\u30A2\u30E9\u30A4\u30F3\u30E1\u30F3\u30C8 -PageSetup-Title_Start_Column=\u91CD\u8907\u3059\u308B\u6A19\u984C\u5217 +Home=\u30DB\u30FC\u30E0\u30DA\u30FC\u30B8 +FR-Server_Embedded_Server_Stop=\u7D44\u307F\u8FBC\u307F\u306E\u30B5\u30FC\u30D0-\u505C\u6B62 +FR-Designer-Plugin_Detecting_Update=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u691C\u8A3C\u4E2D +HF-Whether_to_define_the_selected_type=\u9078\u629E\u3055\u308C\u305F\u30BF\u30A4\u30D7\u306E\u5B9A\u7FA9 +StyleAlignment-Right=\u53F3\u63C3\u3048 +FR-Designer_Alignment-Style=\u63C3\u3048\u65B9\u5F0F +PageSetup-Title_Start_Column=\u7E70\u308A\u8FD4\u3057\u30BF\u30A4\u30C8\u30EB\u5217 Tree-Mutiple_Selection_Or_Not=\u8907\u6570\u9078\u629E FR-Designer-Plugin_Search=\u691C\u7D22 -Choose_Role=\u6A29\u9650\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB -Append_Delete_Row_Message=\u6CE8\u610F\uFF01\u6307\u5B9A\u3055\u308C\u305F\u30BB\u30EB\u306F\u3001\u62E1\u5F35\u5C5E\u6027\u3092\u8A2D\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -Form-ComboBox=\u30B3\u30F3\u30DC\u30DC\u30C3\u30AF\u30B9 -PageSetup-Footer=\u30DA\u30FC\u30B8\u30D5\u30C3\u30BF\u30FC -Sorting=\u30BD\u30FC\u30C6\u30A3\u30F3\u30B0 -DBCP_TEST_WHILE_IDLE=\u30A2\u30A4\u30C9\u30EB\u30EA\u30B5\u30A4\u30AF\u30EB\u30E6\u30CB\u30C3\u30C8\u691C\u67FB -DS-Embedded_TableData=\u5185\u8535\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 -FR-Designer_No-Privilege=\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F +Choose_Role=\u6A29\u9650\u5236\u5FA1 +Append_Delete_Row_Message=\u6CE8\u610F\uFF01\u6307\u5B9A\u30BB\u30EB\u306E\u5C55\u958B\u5C5E\u6027\u3092\u8A2D\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +Form-ComboBox=\u30D7\u30EB\u30C0\u30A6\u30F3\u30DC\u30C3\u30AF\u30B9 +PageSetup-Footer=\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 FRFont-Subscript=\u4E0B\u4ED8\u304D Background_Settings=\u80CC\u666F\u8A2D\u5B9A -FormulaD-Invalid_Formula=\u7121\u52B9\u306A\u516C\u5F0F +FormulaD-Invalid_Formula=\u6570\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002 FR-Base_Margin=\u30DE\u30FC\u30B8\u30F3 -FR-Designer-Plugin_Shop_Installed=\u30D7\u30E9\u30B0\u30A4\u30F3\u30B7\u30E7\u30C3\u30D7\u304C\u3059\u3050\u306B\u958B\u59CB\u3059\u308B\u304B\u3069\u3046\u304B\u3001\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u307E\u3059\u304B\uFF1F +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? M_Edit-Send_to_Back=\u6700\u80CC\u9762\u3078\u79FB\u52D5(K) -Email-Can_Preview_Report_Content=\u30C6\u30AD\u30B9\u30C8\u30D7\u30EC\u30D3\u30E5\u30FC\u30EC\u30DD\u30FC\u30C8\u306E\u5185\u5BB9 -FR-Designer-FRFont_Italic=\u50BE\u659C -CellWrite-Print_Background=\u30BB\u30EB\u80CC\u666F\u3092\u5370\u5237\u3059\u308B -Wizard=\u30A6\u30A3\u30B6\u30FC\u30C9 -Preference-Is_Drag_Permited=\u30C9\u30E9\u30C3\u30B0\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B +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 +Wizard=\u30AC\u30A4\u30C9 +Preference-Is_Drag_Permited=\u30C9\u30E9\u30C3\u30B0\uFF06\u30C9\u30ED\u30C3\u30D7\u3092\u30B5\u30DD\u30FC\u30C8 FR-Designer_Release_Lock=\u30A2\u30F3\u30ED\u30C3\u30AF Form-Delimiter=\u533A\u5207\u308A\u7B26 -wrong=\u9593\u9055\u3063\u305F -FR-Menu-Server_Chart_PreStyle=\u30B0\u30E9\u30D5\u30D7\u30EC\u5B9A\u7FA9\u914D\u8272 +wrong=\u30A8\u30E9\u30FC\u304C\u51FA\u307E\u3057\u305F +FR-Menu-Server_Chart_PreStyle=\u30B0\u30E9\u30D5\u4E8B\u524D\u5B9A\u7FA9\u914D\u8272 Form-Button=\u30DC\u30BF\u30F3 -FormulaD-Valid_Formula=\u6709\u52B9\u306A\u516C\u5F0F -ParameterD-Parameter_Interface=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30FC\u30B9 -At_least_one_visual_worksheet=\u5C11\u306A\u304F\u3068\u3082\u4E00\u3064\u306E\u30D3\u30B8\u30E5\u30A2\u30EB\u30EF\u30FC\u30AF\u3092\u6301\u3063\u3066\u3044\u308B\u30EF\u30FC\u30AF\u30D6\u30C3\u30AF\u306B\u306F\u3001\u524A\u9664\u3057\u305F\u3044\u5834\u5408\u306F\u3001\u65B0\u3057\u3044\u30EF\u30FC\u30AF\u30B7\u30FC\u30C8\u3092\u633F\u5165\u3057\u3066\u304F\u3060\u3055\u3044 -Need_Min_Value=\u6700\u5C0F\u5024\u304C\u5FC5\u8981 -Allow_Blank=\u7A7A\u6B04\u3042\u308A -CellWrite-InsertRow_DEFAULT=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F -Widget-Load_By_Complete=\u5B8C\u5168\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9 -FR-Designer-Basic_Only_Submit_Current_Sheet= -Sort-Sort_Order=\u30BD\u30FC\u30C8\u9806 -File-File_Size_Limit=\u30D5\u30A1\u30A4\u30EB\u30B5\u30A4\u30BA\u3092\u5236\u9650\u3059\u308B +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\u3059\u308B\u3053\u3068\u306F\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=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024 +Widget-Load_By_Complete=\u5B8C\u5168\u30ED\u30FC\u30C9 +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 PrintP-Print=\u5370\u5237(T) FR-Designer-StyleAlignment_Center=\u4E2D\u592E\u63C3\u3048 -Preference-Setting_Colors=\u8272\u306E\u8A2D\u5B9A -Judge=\u88C1\u5224\u5B98 -Image-Adjust=\u9069\u5FDC -Collect-User_Information_DES=\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30C8\u30B3\u30FC\u30C9\u306F\u4F7F\u7528\u8005\u60C5\u5831\u306E\u53CE\u96C6\u306E\u305F\u3081\u3060\u3051\u306B\u7528\u3044\u3089\u308C\u307E\u3059\u3002\u4E0A\u306E\u300C\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30C8\u30B3\u30FC\u30C9\u53D6\u5F97\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u3001\u65B0\u305F\u306A\u30A6\u30A3\u30F3\u30C9\u30A6\u304C\u73FE\u308C\u307E\u3059\u3002\u88FD\u54C1 -FR-Designer_Plugin_Normal_Update_From_Local=\u30ED\u30FC\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u66F4\u65B0 +Preference-Setting_Colors=\u8272\u8A2D\u5B9A +Judge=\u5224\u65AD +Image-Adjust=\u8ABF\u6574 +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\u306F\u4E00\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 BackgroundTexture-Canvas=\u30AD\u30E3\u30F3\u30D0\u30B9 -BarOutSide=\u5916\u306E\u67F1 -Preview_ToolTips=\u30D7\u30EC\u30D3\u30E5\u30FC\u63D0\u793A -FRFont-Family=\u540D\u79F0 -FR-Lic_does_not_Support_Remote=\u73FE\u5728\u4F7F\u7528\u3057\u3066\u3044\u308Blic\u306F\u9060\u9694\u30C7\u30B6\u30A4\u30F3\u6A5F\u80FD\u306B\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B +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 InterfaceStyle=\u30B9\u30BF\u30A4\u30EB RWA-Key=\u4E3B\u30AD\u30FC WF-Name=\u540D\u79F0 -RWA-Click_Cell_To_Edit_Value=\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30BB\u30EB\u4FEE\u6B63\u5024 +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 Utils-Row_Height=\u884C\u306E\u9AD8\u3055 -ReportD-Excel_Export=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5C0E\u51FA\u5C5E\u6027 -Form-Please_Select_A_Kind_Of_Form_Container=\u4E00\u7A2E\u306E\u8868\u30B3\u30F3\u30C6\u30CA\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 -Column_Does_Not_Exsit=\u5217\u304C\u5B58\u5728\u3057\u307E\u305B\u3093 +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\u5B58\u5728\u3057\u306A\u3044 M_Insert-Hyperlink=\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF -can_not_include_underline=_\u3092\u542B\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -FR-Designer-Plugin_Jar_Expired=\u65E7Jar\u30D1\u30C3\u30AF -FR-Background_Image_Extend=\u62E1\u5F35 -TopDownShade=\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3\u30C0\u30A6\u30F3 +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 FR-Base_Right=\u53F3 -DataBinding=\u30C7\u30FC\u30BF\u30D0\u30F3\u30C7\u30A3\u30F3\u30B0 +DataBinding=\u30C7\u30FC\u30BF\u30D0\u30A4\u30F3\u30C9 ConnectionPool_Attr=\u63A5\u7D9A\u30D7\u30FC\u30EB\u5C5E\u6027 -Connect_SQL_Cannot_Null=\u30C7\u30FC\u30BF\u63A5\u7D9A\u3068SQL\u30D1\u30CD\u30EB\u306F\u7A7A\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -DBCP_MAX_ACTIVE=\u6700\u5927\u30A2\u30AF\u30C6\u30A3\u30D6\u63A5\u7D9A\u6570 +Connect_SQL_Cannot_Null=\u30C7\u30FC\u30BF\u63A5\u7D9A\u3068SQL\u30D1\u30CD\u30EB\u3092\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u306F\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 M_Window-Preference=\u30AA\u30D7\u30B7\u30E7\u30F3 -ToolBar_Top=\u30D8\u30C3\u30C0\u30FC\u30C4\u30FC\u30EB\u30D0\u30FC +ToolBar_Top=\u4E0A\u90E8\u306E\u30C4\u30FC\u30EB\u30D0\u30FC FR-Designer_Indent-Pixel=\u753B\u7D20 -FR-Designer_Unit_MM=\u30DF\u30EA\u30E1\u30FC\u30C8\u30EB +FR-Designer_Unit_MM=\u30DF\u30EA IDLE=\u30A2\u30A4\u30C9\u30EB FRFont-Underline=\u4E0B\u7DDA -FR-Designer-Plugin_Read_Plugin_List_Error=\u30D7\u30E9\u30B0\u30A4\u30F3\u30EA\u30B9\u30C8\u306E\u8AAD\u307F\u53D6\u308A\u6642\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E +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 Type_Set=\u30BF\u30A4\u30D7\u8A2D\u5B9A -M_Format_A-Cell_Attributes=\u305D\u306E\u4ED6\u5C5E\u6027 +M_Format_A-Cell_Attributes=\u305D\u306E\u4ED6\u306E\u5C5E\u6027 CellWrite-Show_As_Image=\u753B\u50CF\u3067\u5185\u5BB9\u3092\u8868\u793A -ShowAsDownload=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30EA\u30F3\u30AF\u3067\uFF12\u9032\u6CD5\u306E\u5185\u5BB9\u3092\u8868\u793A -Form-ComboCheckBox=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 +ShowAsDownload=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30EA\u30F3\u30AF\u3067\u30D0\u30A4\u30CA\u30EA\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u8868\u793A +Form-ComboCheckBox=\u30D7\u30EB\u30C0\u30A6\u30F3\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 BackgroundTexture-WovenMat=\u7E54\u7269 -BindColumn-Custom_Data_Appearance=\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u306F\u8868\u793A\u3059\u308A\u307E\u3059 -Actived=\u6D3B\u52D5\u7684 +BindColumn-Custom_Data_Appearance=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u8868\u793A +Actived=\u30A2\u30AF\u30C6\u30A3\u30D6 Env-Local_Directory=\u30ED\u30FC\u30AB\u30EB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA Form-Colon=\u30B3\u30ED\u30F3 -Preference-Vertical_Scroll_Bar_Visible=\u7E26\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u306F\u53EF\u8996 +Preference-Vertical_Scroll_Bar_Visible=\u5782\u76F4\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u3092\u8868\u793A Utils-Show_Cell_Value=\u30BB\u30EB\u5024\u3092\u8868\u793A -FR-Designer_ReportColumns-Repeat_Row=\u884C\u9806\u5E8F\u3092\u30B3\u30D4\u30FC -SpecifiedG-Specified_Group=\u30B0\u30EB\u30FC\u30D4\u30F3\u30B0\u306E\u30E6\u30FC\u30B6\u5B9A\u7FA9 -RWA-Smart_Add_Cells=\u30A4\u30F3\u30C6\u30EA\u30B8\u30A7\u30F3\u30C8\u8FFD\u52A0\u30BB\u30EB -HF-Left_Section=\u5DE6\u5074\u30BB\u30AF\u30B7\u30E7\u30F3 -M_Report-Report_Background=\u5E33\u7968\u80CC\u666F -Image-Extend=\u62E1\u5F35 -FS_BI=\u51B3\u7B56\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0 -ToolBar_Bottom=\u30D5\u30C3\u30BF\u30FC\u30C4\u30FC\u30EB\u30D0\u30FC -Hgap=\u6C34\u5E73\u9593\u9699 +FR-Designer_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\u30A8\u30EA\u30A2 +M_Report-Report_Background=\u7528\u7D19\u80CC\u666F +Image-Extend=\u62E1\u5927\u8868\u793A +FS_BI=\u610F\u601D\u6C7A\u5B9A\u30B7\u30B9\u30C6\u30E0 +ToolBar_Bottom=\u4E0B\u90E8\u306E\u30C4\u30FC\u30EB\u30D0\u30FC +Hgap=\u6C34\u5E73\u9593\u9694 FR-Designer_Enter-New-FileName=\u65B0\u3057\u3044\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 -Verify_Fail=\u70B9\u691C\u306B\u5931\u6557\u3057\u307E\u3057\u305F -CellWrite-InsertRow_Policy=\u884C\u6226\u7565\u3092\u633F\u5165 -FR-Designer-Plugin_Illegal_Plugin_Zip=\u5408\u6CD5\u7684\u306A\u30D7\u30E9\u30B0\u30A4\u30F3\u30D1\u30C3\u30AF\u3067\u306F\u3042\u308A\u307E\u305B\u3093 +Verify_Fail=\u691C\u8A3C\u306B\u5931\u6557\u3057\u307E\u3057\u305F +CellWrite-InsertRow_Policy=\u884C\u633F\u5165\u30DD\u30EA\u30B7\u30FC +FR-Designer-Plugin_Illegal_Plugin_Zip=\u5408\u6CD5\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u30D1\u30C3\u30B1\u30FC\u30B8\u3067\u306F\u306A\u3044 RCodeVersion=\u30D0\u30FC\u30B8\u30E7\u30F3 Convert=\u5909\u63DB -Please_Drag=\u884C\u5217\u30D5\u30A3\u30FC\u30EB\u30C9\u3001\u53D6\u308A\u307E\u3068\u3081\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u5F15\u3063\u8FBC\u3081\u3066\u304F\u3060\u3055\u3044 +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 FR-Designer-Widget-Style_Preview=\u30D7\u30EC\u30D3\u30E5\u30FC -mobile_number=\u643A\u5E2F\u96FB\u8A71\u756A\u53F7 -FR-Designer_Form-ComboCheckBox=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 -CacheValidateTime=\u5E33\u7968\u30AD\u30E3\u30C3\u30B7\u30F3\u30B0\u6709\u52B9\u6642\u9593 -Hyperlink-Extends_Report_Parameters=\u5E33\u7968\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3092\u7D99\u627F\u3059\u308B +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\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u53D7\u3051\u7D99\u3050 FR-Designer_Values-Editor=\u5024\u30A8\u30C7\u30A3\u30BF Export-Excel=Excel Utils-Left_to_Right=\u5DE6\u304B\u3089\u53F3\u3078 -ExpandD-Vertical_Extendable=\u7E26\u5E83\u304C\u308B -Utils-Report_Runtime_Env=\u5E33\u7968\u4F5C\u696D\u76EE\u6B21 +ExpandD-Vertical_Extendable=\u5C55\u958B\uFF08\u7E26\uFF09 +Utils-Report_Runtime_Env=\u5E33\u7968\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA Utils-Right_to_Left=\u53F3\u304B\u3089\u5DE6\u3078 -Utils-Beyond_the_top_side_of_Border=\u4E0A\u30DC\u30FC\u30C0\u30FC\u8D85\u3048 -Exception_StackTrace=\u30A8\u30E9\u30FC\u7570\u5E38\u30B9\u30BF\u30C3\u30AF\u60C5\u5831 +Utils-Beyond_the_top_side_of_Border=\u4E0A\u306E\u30DC\u30FC\u30C0\u30FC\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3001\u8A2D\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002 +Exception_StackTrace=\u30B9\u30BF\u30C3\u30AF\u60C5\u5831\u30A8\u30E9\u30FC\u30FB\u7570\u5E38 Corresponding_Fields=\u5BFE\u5FDC\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9 -Form-CheckBox=\u30D5\u30EC\u30FC\u30E0\u3092\u8907\u6570\u9078\u629E -Utils-Current_Row=\u30AB\u30EC\u30F3\u30C8\u884C -BuildIn=\u5185\u8535 -BindColumn-Results_Filter=\u7D50\u679C\u30BB\u30C3\u30C8\u306E\u30D5\u30A3\u30EB\u30BF +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\u3092\u30D5\u30A3\u30EB\u30BF FR-Designer-Plugin_Manager=\u30D7\u30E9\u30B0\u30A4\u30F3\u7BA1\u7406 M_File-Export-CSV=CSV\u66F8\u5F0F(\u30B3\u30F3\u30DE\u3067\u5206\u5272) -Data_Filter=\u30C7\u30FC\u30BF\u9078\u5225 +Data_Filter=\u30C7\u30FC\u30BF\u30D5\u30A3\u30EB\u30BF 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 +FR-Designer_Datasource-Stored_Procedure=\u30D7\u30ED\u30B7\u30FC\u30B8\u30E3\u30FC RESTART=\u518D\u8D77\u52D5 FormulaD-Function_name=\u95A2\u6570\u540D -ChooseOneButton=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u4E00\u3064\u9078\u629E\u3057\u3066\u304B\u3089\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044 +ChooseOneButton=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u9078\u629E\u3057\u3066\u8FFD\u52A0\u3057\u3066\u4E0B\u3055\u3044 Priority=\u512A\u5148\u30E9\u30F3\u30AF Datasource-Datasource=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 -FR-Designer_Width=\u5E83\u3055 -Cannot-Add_To_This_Area=\u5730\u57DF\u306B\u306F\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093 -Run=\u904B\u884C -Set_Submit_Condition=\u6761\u4EF6\u3092\u8A2D\u7F6E\u306B\u63D0\u51FA\u3059\u308B\u3053\u3068\u306B\u3057\u305F +FR-Designer_Width=\u5E45 +Cannot-Add_To_This_Area=\u8A72\u5F53\u30A8\u30EA\u30A2\u306B\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093 +Run=\u5B9F\u884C +Set_Submit_Condition=\u30B5\u30D6\u30DF\u30C3\u30C8\u6761\u4EF6\u8A2D\u5B9A FR-Base_Value=\u5024 -fileLocked_undeleted=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u30ED\u30C3\u30AF\u3055\u308C\u3066\u3044\u308B\u3001\u3042\u306A\u305F\u304C\u524A\u9664\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\uFF01 +fileLocked_undeleted=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u30ED\u30C3\u30AF\u3055\u308C\u3066\u3044\u308B\u3001\u524A\u9664\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\uFF01 Web_Apply=WEB\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3 Refresh_Database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u5237\u65B0 Set_Row_Title_End=\u91CD\u8907\u3059\u308B\u7D42\u4E86\u884C\u3092\u8A2D\u5B9A -FR-Utils-New_Folder=\u30D5\u30A1\u30A4\u30EB\u65B0\u898F\u4F5C\u6210 -BiasD-From-upper_left_to_lower_right=\u5DE6\u4E0A\u5074\u304B\u3089\u53F3\u4E0B\u5074\u3078\u5E83\u304C\u308B +FR-Utils-New_Folder=\u30D5\u30A9\u30EB\u30C0\u30FC\u3092\u65B0\u898F\u4F5C\u6210 +BiasD-From-upper_left_to_lower_right=\u5DE6\u4E0A\u5074\u304B\u3089\u53F3\u4E0B\u5074\u3078\u5C55\u958B\u3059\u308B CapsLock=Caps Lock\u30AD\u30FC\u304C\u30AA\u30F3\u306B\u306A\u3063\u3066\u3044\u308B -StyleFormat-Sample=\u4F8B -RWA-Smart_Add_Cell_Group=\u30A4\u30F3\u30C6\u30EA\u30B8\u30A7\u30F3\u30C8\u6DFB\u52A0\u30EC\u30A4\u30E4\u30FC\u7D44 +StyleFormat-Sample=\u30B5\u30F3\u30D7\u30EB +RWA-Smart_Add_Cell_Group=\u30BB\u30EB\u30B0\u30EB\u30FC\u30D7\u81EA\u52D5\u8FFD\u52A0 MConfig-CancelButton=\u30AD\u30E3\u30F3\u30BB\u30EB Function-Choose_Function_Class=\u95A2\u6570\u30AF\u30E9\u30B9\u3092\u9078\u629E\u3059\u308B -LatLng=\u5EA7\u6A19 -DS-Server_TableData=\u30B5\u30FC\u30D0\u30FC\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 -BackgroundTexture-GreenMarble=\u7DD1\u8272\u306E\u5927\u7406\u77F3 -read_time_out=\u30ED\u30FC\u30C9\u306E\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8 -JavaScript-Commit_to_Database=\u5165\u5EAB\u63D0\u51FA -DS-Relation_TableData=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u95A2\u9023\u4ED8\u3051 +LatLng=\u7D4C\u7DEF\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 CellWrite-Page_Before_Row=\u884C\u524D\u306E\u6539\u9801 -FR-Designer-Plugin_Load_Plugins_From_Server=\u30D7\u30E9\u30B0\u30A4\u30F3\u30DE\u30FC\u30B1\u30C3\u30C8\u304B\u3089\u30C7\u30FC\u30BF\u53D6\u5F97\u4E2D -D-Dispaly_Divide_Result_Set_into_Groups=resultset\u306E\u30B0\u30EB\u30FC\u30D7\u5206\u3051 -Closed=\u9589\u9396\u6E08\u307F -RWA-Help=\u8A2D\u7F6E\u5F8C\u306E\u6539\u6B63\u3092\u66F4\u65B0\u3057\u306A\u3044\u3068\u3001\u7533\u544A\u30D7\u30EC\u30D3\u30E5\u30FC\u30EC\u30DD\u30FC\u30C8\u306B\u8A18\u9332\u3055\u308C\u3066\u3044\u306A\u3044\u6240\u5728\u30EC\u30A4\u30E4 -FR-Designer-Widget-Style_Custom= -FR-Designer-Widget-Style_Render_Style=\u307C\u304B\u3057\u30B9\u30BF\u30A4\u30EB +FR-Designer-Plugin_Load_Plugins_From_Server=\u30D7\u30E9\u30B0\u30A4\u30F3\u30BB\u30F3\u30BF\u30FC\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=\u9589\u3058\u307E\u3057\u305F +RWA-Help=\u672A\u5909\u66F4\u3067\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3057\u306A\u3044\u3053\u3068\u304C\u8A2D\u5B9A\u3055\u308C\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\u306E\u3067\u3001\u3053\u306E\u8A18\u9332\u306F\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3055\u308C\u306A\u3044\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\u30DE\u30A4\u30BA +FR-Designer-Widget-Style_Render_Style=\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u30B9\u30BF\u30A4\u30EB Highlight-Barcode=\u30D0\u30FC\u30B3\u30FC\u30C9 -FR-Designer_Connect_SQL_Cannot_Null=\u30C7\u30FC\u30BF\u63A5\u7D9A\u3068SQL\u30D1\u30CD\u30EB\u306F\u7A7A\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -trigger=\u6A19\u984C +FR-Designer_Connect_SQL_Cannot_Null=\u30C7\u30FC\u30BF\u63A5\u7D9A\u3068SQL\u30D1\u30CD\u30EB\u3092\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +trigger=\u89E6\u767A M-Data_Analysis=\u30C7\u30FC\u30BF\u5206\u6790 -Function-The_selected_file_cannot_be_null=\u9078\u629E\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u306F\u7A7A\u5024\u306B\u306A\u3063\u3066\u306F\u3044\u3051\u307E\u305B\u3093 -No-Privilege=\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F -ReportColumns-Repeat_Column=\u5217\u756A\u53F7\u306E\u7E70\u308A\u8FD4\u3057 -SecondGraduationUnit=\u4E8C\u6B21\u7684\u76EE\u76DB\u308A\u5358\u4F4D +Function-The_selected_file_cannot_be_null=\u30D5\u30A1\u30A4\u30EB\u3092\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +No-Privilege=\u6A29\u9650\u306A\u3057 +ReportColumns-Repeat_Column=\u5217\u306E\u9806\u5E8F\u3092\u30B3\u30D4\u30FC +SecondGraduationUnit=\u88DC\u52A9\u76EE\u76DB\u5358\u4F4D Form-Widget_Property_Value=\u5C5E\u6027\u5024 -GIVE-NAME=\u547D\u540D -FR-Designer_Rename=\u540D\u79F0\u306E\u5909\u66F4 +GIVE-NAME=\u540D\u524D\u3092\u4ED8\u3051\u308B +FR-Designer_Rename=\u540D\u524D\u3092\u5909\u66F4\u3059\u308B Utils-Merge_Cell=\u30BB\u30EB\u3092\u7D50\u5408\u3059\u308B -Style-Spacing_After=\u6BB5\u5F8C +Style-Spacing_After=\u6BB5\u843D\u5F8C Enlarge_Or_Reduce=\u30BA\u30FC\u30E0 Tree-Height=\u9AD8\u3055 RCodeErrorCorrect=\u30A8\u30E9\u30FC\u8A02\u6B63 Enter-New-FileName=\u65B0\u3057\u3044\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 -try_resending=\u30C8\u30EA\u30AC\u30FC\u3055\u308C\u308B -M-Open_Report=\u3092\u958B\u304F... +try_resending=\u518D\u9001\u4FE1\u3092\u8A66\u3057\u3066\u4E0B\u3055\u3044 +M-Open_Report=\u958B\u3044\u3066\u3044\u307E\u3059... Please_Select=\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 InRow=\u884C(R) -Form-TextArea=\u6587\u66F8\u57DF -FR-Designer_Https_Enable=https\u4F7F\u7528\u958B\u59CB -Widget-Custom_Widget_Config=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB -already_exists=\u3053\u3053\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059 -Original_Marked_Filed=\u521D\u671F\u30BF\u30B0\u30D5\u30A3\u30FC\u30EB\u30C9 -BackgroundTexture-Sand=\u7802\u6D5C +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=\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059 +Original_Marked_Filed=\u30AA\u30EA\u30B8\u30CA\u30EB\u30BF\u30B0\u30D5\u30A3\u30FC\u30EB\u30C9 +BackgroundTexture-Sand=\u7802 Values=\u5024 -Not_use_a_cell_attribute_table_editing=\u3042\u306A\u305F\u304C\u7DE8\u96C6\u3059\u308B\u30BB\u30EB\u306E\u5C5E\u6027\u30C6\u30FC\u30D6\u30EB\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068 +Not_use_a_cell_attribute_table_editing=\u30BB\u30EB\u5C5E\u6027\u8868\u3067\u7DE8\u96C6\u3057\u3066\u306F\u306A\u3089\u306A\u3044 Root=\u30EB\u30FC\u30C8\u30CE\u30FC\u30C9 cycle=\u5468\u671F -open-new-form-tip=711\u4EE5\u4E0B\u306E\u751F\u7523\u306E\u305F\u3081\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u73FE\u5728\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u3001\u4E92\u63DB\u6027\u304C\u306A\u3044\u3068 +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 Support-Current_Auto_Complete_Shortcut=\u73FE\u5728\u306E\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC -GROUPING_MODE=\u666E\u901A\u30B0\u30EB\u30FC\u30D7\u5206\u3051 +GROUPING_MODE=\u4E00\u822C\u30B0\u30EB\u30FC\u30D7\u5206\u3051 DBCP_MAX_IDLE=\u6700\u5927\u30A2\u30A4\u30C9\u30EB\u63A5\u7D9A\u6570 -BackgroundTexture-BlueTissuePaper=\u9752\u3044\u30B5\u30F3\u30C9\u30DA\u30FC\u30D1\u30FC -ReportD-Export_Hided_Row=\u96A0\u3057\u305F\u884C\u3092\u5C0E\u51FA -FR-Custom_styles_lost=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u30B9\u30BF\u30A4\u30EB\u306F\u5931\u308F\u308C\u307E\u3057\u305F -Env-Des2=Servlet\u306E\u4F4D\u7F6E\u306F\u30DB\u30B9\u30C8\u30B3\u30F3\u30D4\u30E5\u30FC\u30BF\u540D\u3001\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30A4\u30B9\u3001WEB\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3001 -Env-Des1=\u5E33\u7968\u30B5\u30FC\u30D0\u30FC\u304C\u3042\u308BWEB-INF\u76EE\u6B21\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 -PageSetup-Placement_Center_on_Page=\u4E2D\u592E\u63C3\u3048 -sure_to_delete=\u524A\u9664\u3092\u78BA\u8A8D\u3057\u307E\u3059 -Already_exists_not_add_repeat=\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u308B\u3001\u30EA\u30D4\u30FC\u30C8\u3092\u8FFD\u52A0\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044 -Axis_Title=\u8EF8\u306E\u8868\u984C -FR-Designer-Plugin_Install_Failed=\u30D7\u30E9\u30B0\u30A4\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u306B\u5931\u6557\u3057\u307E\u3057\u305F +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\u7D1B\u5931 +Env-Des2=Servlet\u4F4D\u7F6E\u306F\u30DB\u30B9\u30C8\u540D\u3001\u30DD\u30FC\u30C8\u3001WEB\u30A2\u30D7\u30EA\u3068Servlet\u306E\u7D44\u307F\u5408\u308F\u305B\u3002Servlet\u4F4D\u7F6E\u306F\u4E00\u3064\u306EServlet\u3092\u6307\u3059\u3002\u4F8B\uFF1A"http\://localhost\:8080/WebReport/ReportServer" \u30DB\u30B9\u30C8\u540D\u3001\u30DD\u30FC\u30C8\u3001WEB\u30A2\u30D7\u30EA\u3068Servlet\u3092\u8A18\u5165\u3057\u305F\u5F8C\u3001Servlet\u4F4D\u7F6E\u306F\u81EA\u52D5\u7684\u306B\u4F5C\u6210\u3055\u308C\u308B\u3002 +Env-Des1=\u5E33\u7968\u30B5\u30FC\u30D0\u306E\u3042\u308BWEB-INF\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 +PageSetup-Placement_Center_on_Page=\u4E2D\u592E\u63C3\u3048\u65B9\u5F0F +sure_to_delete=\u524A\u9664\u3057\u307E\u3059\u304B +Already_exists_not_add_repeat=\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\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 FR-Designer-Widget-Style_Frame=\u30D5\u30EC\u30FC\u30E0 -MainGraduationUnit=\u4E3B\u306A\u76EE\u76DB\u308A\u5358\u4F4D -Second_Axis=\u6B21\u5EA7\u6A19\u8EF8 +MainGraduationUnit=\u4E3B\u76EE\u76DB\u5358\u4F4D +Second_Axis=\u7B2C2\u5EA7\u6A19\u8EF8 Classifier-Ge=\u500B -MSBold=\u5FAE\u8EDF\u96C5\u9ED2 +MSBold=\u30DE\u30A4\u30AF\u30ED\u30BD\u30D5\u30C8\u30E4\u30D8\u30A4 Form-Design_Size=\u30C7\u30B6\u30A4\u30F3\u30B5\u30A4\u30BA FR-App-Template_Save=\u4FDD\u5B58 -ExpandD-Horizontal_Extendable=\u6A2A\u5E83\u304C\u308B +ExpandD-Horizontal_Extendable=\u5C55\u958B\uFF08\u6A2A\uFF09 RP_Authority_Edit=\u6A29\u9650\u7DE8\u96C6 Warnning=\u30EA\u30DE\u30A4\u30F3\u30C9 -RoleName_Can_Not_Be_Null=\u5F79\u5272\u540D\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u305A\u3001\u91CD\u8907\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u305B\u3093 +RoleName_Can_Not_Be_Null=\u5F79\u5272\u540D\u306F\u7A7A\u6B04\u306B\u3067\u304D\u307E\u305B\u3093\u3001\u307E\u305F\u3001\u91CD\u8907\u3082\u3067\u304D\u307E\u305B\u3093\u3002 Application=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3 -Formula_Dictionary_Display_Examples_Html=\u5B9F\u969B\u5024\u7BC4\u56F2\u306F\ +Formula_Dictionary_Display_Examples_Html=\u5B9F\u969B\u5024\u7BC4\u56F2\u306F \=range(100)\u3001\u5BFE\u5FDC\u7684\u306A\u5B9F\u969B\u5024\u7BC4\u56F2\n \u306E\u4E2D\u306B\u5404$$$\u3067\u8868\u793A\u3059\u308B\u6570\u5F0F\u306F \=0 - $$$\u3001
\u306A\u308C\u3070\u6700\u7D42\u306E\u5B9F\u969B\u5024\u306F1, 2, ..., 100, \n \u8868\u793A\u5024\u306F-1, -2, ... , -100\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\u30D6\u30E9\u30B7(B) +M_Edit-FormatBrush=\u66F8\u5F0F\u30B3\u30D4\u30FC(B) Indent-Pixel=\u753B\u7D20 -FR-Designer-Widget-Style_Border_Line=\u30D5\u30EC\u30FC\u30E0\u592A\u3055 -Widget-Default_Widget_Config=\u57FA\u672C\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB -Version-does-not-support=\u73FE\u5728\u4F7F\u7528\u3057\u3066\u3044\u308Blic\u306F\u9060\u9694\u30C7\u30B6\u30A4\u30F3\u6A5F\u80FD\u306B\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3002 +FR-Designer-Widget-Style_Border_Line=\u7F6B\u7DDA\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\u3002 StyleAlignment-Right_To_Left=\u53F3\u304B\u3089\u5DE6\u3078 -Style-Spacing_Before=\u6BB5\u524D +Style-Spacing_Before=\u6BB5\u843D\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 +FR-Designer_DisplayNothingBeforeQuery=\u30AF\u30A8\u30EA\u30AF\u30EA\u30C3\u30AF\u524D\u306B\u5E33\u7968\u5185\u5BB9\u3092\u8868\u793A\u3057\u306A\u3044 Still=\u4F9D\u7136\u3068\u3057\u3066 JS_WARNING2=\ \u4F8B\uFF1Ahttp\://localhost\:8075/WebReport/demo.js -JS_WARNING1= \u76F8\u5BFE\u7684\u5E33\u7968\u5DE5\u7A0B\u306EWebReport\u306E\u76EE\u6B21\u304C\u3001WebReport\\js\u4E0B\u306B\u5F15\u7528\u3059\u308Bjs -Connectionline=\u63A5\u7D9A\u30EF\u30A4\u30E4\u30E2\u30C7\u30EB +JS_WARNING1=\ \n\u4F8B\uFF1AWebReport\\js\u306B\u5F15\u7528\u3055\u308C\u308Bjs\u30D5\u30A1\u30A4\u30EBtest.js\u304C\u3042\u308B\u5834\u5408\u3001\u76F8\u5BFE\u30D1\u30B9\u306Fjs/test.js +Connectionline=\u63A5\u7D9A\u30E2\u30FC\u30C9 Utils-Insert_Record=\u8A18\u9332\u633F\u5165 -Set-Parameter-Name=\u307E\u305A\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u540D\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044 -More-information=\u8A73\u7D30\u60C5\u5831 -Parameter-Boolean=\u8AD6\u7406\u578B +Set-Parameter-Name=\u307E\u305A\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044 +More-information=\u3055\u3089\u306B\u8A73\u3057\u3044\u60C5\u5831 +Parameter-Boolean=\u30D6\u30FC\u30EB\u578B FRFont-Strikethrough=\u53D6\u308A\u6D88\u3057\u7DDA -Server-version-tip=\u3042\u306A\u305F\u306F\u3001\u73FE\u5728\u3001\u3042\u306A\u305F\u306F\u3044\u304F\u3064\u304B\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u304C\u52B9\u679C\u7684\u306B\u4FDD\u5B58\u3059\u308B\u3053\u3068\u304C +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\u304B\u3082\u3057\u308C\u306A\u3044\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=\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 +DBCP_NUM_TEST_PER_EVCTION_RUN=\u30A2\u30A4\u30C9\u30EB\u63A5\u7D9A\u3092\u56DE\u53CE\u3059\u308B\u306E\u691C\u67FB\u56DE\u6570 FR-Designer-FRFont_Family=\u540D\u524D -Device=\u8A2D\u5099 +Device=\u30C7\u30D0\u30A4\u30B9 M_Insert-Cell=\u30BB\u30EB\u8981\u7D20 -Present-Formula_Present=\u516C\u5F0F\u30D5\u30A9\u30EB\u30E0 +Present-Formula_Present=\u6570\u5F0F\u5F62\u614B FRFont-Superscript=\u4E0A\u4ED8\u304D CellWrite-Page_Before_Column=\u5217\u524D\u306E\u6539\u9801 -Golden=\u30B4\u30FC\u30EB\u30C7\u30F3 -Preference-Support_Cell_Editor_Definition=\u30BB\u30EB\u30A8\u30C7\u30A3\u30BF\u30FC\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B -M-Page_Preview=\u30DA\u30FC\u30B8\u5225\u30D7\u30EC\u30D3\u30E5\u30FC +Golden=\u91D1\u8272 +Preference-Support_Cell_Editor_Definition=\u30BB\u30EB\u30A8\u30C7\u30A3\u30BF\u3092\u30B5\u30DD\u30FC\u30C8 +M-Page_Preview=\u6539\u9801\u30D7\u30EC\u30D3\u30E5\u30FC HJS-CC_to=CC -Tree-Select_Leaf_Only=\u8449\u30CE\u30FC\u30C9\u306B\u623B\u308B -Pointer-A-Tick-Order=\u30DD\u30A4\u30F3\u30BF\u5024\u3068\u76EE\u76DB\u308A\u5024\u306E\u6570\u91CF\u30E9\u30F3\u30AF +Tree-Select_Leaf_Only=\u30EA\u30FC\u30D5\u30CE\u30FC\u30C9\u3060\u3051\u3092\u623B\u308B +Pointer-A-Tick-Order=\u30E1\u30FC\u30BF\u30FC\u3068\u76EE\u76DB\u306E\u8868\u793A\u5358\u4F4D Pink=\u30D4\u30F3\u30AF StyleAlignment-Distibuted=\u5747\u7B49\u5272\u308A\u4ED8\u3051 Odd=\u5947\u6570 -already-saved=\u4FDD\u5B58\u3055\u308C\u3066\u3044\u308B -FR-Hyperlink_Chart_Cell=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u9023\u52D5\u30BB\u30EB +already-saved=\u4FDD\u5B58\u6E08\u307F +FR-Hyperlink_Chart_Cell=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u30BB\u30EB\u9023\u52D5 Style-Left_Indent=\u5DE6\u30A4\u30F3\u30C7\u30F3\u30C8 -Offline=\u79BB\u7EBF -Form-Hierarchy_Tree_Next=\u6B21 +Offline=\u30AA\u30D5\u30E9\u30A4\u30F3 +Form-Hierarchy_Tree_Next=\u6B21\u306E Needle=\u30DD\u30A4\u30F3\u30BF GoogleMap=Google\u30DE\u30C3\u30D7 -Running=\u904B\u884C\u4E2D -M_Edit-Unmerge_Cell=\u30BB\u30EB\u3092\u5206\u5272\u3059\u308B -Out_Border_Line=\u5916\u5074\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 -Style-Spacing=\u9593\u9694\u8DDD\u96E2 -FR-Utils_Submit=\u63D0\u51FA +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 ReportServerP-Previous=\u524D\u30DA\u30FC\u30B8 -StyleAlignment-Text_Style=\u30C6\u30AD\u30B9\u30C8\u30B9\u30BF\u30A4\u30EB +StyleAlignment-Text_Style=\u30C6\u30AD\u30B9\u30C8\u5236\u5FA1 RelatedChart=\u30B0\u30E9\u30D5\u9023\u52D5 -ProcessManager=\u30D7\u30ED\u30BB\u30B9\u7BA1\u7406 -Cancel_Repeat_Attributes=\u30EA\u30D4\u30FC\u30C8\u30E9\u30F3\u30AF\u3092\u30AD\u30E3\u30F3\u30BB\u30EB\u3059\u308B\u306B\u306F +ProcessManager=\u30D5\u30ED\u30FC\u7BA1\u7406 +Cancel_Repeat_Attributes=\u91CD\u8907\u884C\u5217\u89E3\u9664 FR-App-File_Message=\u60C5\u5831 -Datasource-Stored_Procedure=\u30B9\u30C8\u30A2\u30C9 \u30D7\u30ED\u30B7\u30FC\u30B8\u30E3 -RWA-Row_Offset=\u884C\u30AA\u30D5\u30BB\u30C3\u30C8 +Datasource-Stored_Procedure=\u30D7\u30ED\u30B7\u30FC\u30B8\u30E3\u30FC +RWA-Row_Offset=\u884C\u306E\u30AA\u30D5\u30BB\u30C3\u30C8 M_Format-Style=\u30B9\u30BF\u30A4\u30EB -detail_description=\u8A73\u7D30\u306A\u8AAC\u660E -FR-Designer-Widget-Style_Title_Content=\u6A19\u984C\u5185\u5BB9 -ParameterD-Report_Parameter=\u5E33\u7968\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC -HF-Edit_Header=\u30D8\u30C3\u30C0\u7DE8\u96C6 +detail_description=\u8A73\u7D30\u8AAC\u660E +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 Sytle-FRFont=\u30D5\u30A9\u30F3\u30C8 -FR-Designer_Finish_Export=\u5C0E\u51FA\u5B8C\u4E86 -MultiFileUpload=\u8907\u6570\u30D5\u30A1\u30A4\u30EB\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9 -HF-Page_Number=\u30DA\u30FC\u30B8\u756A\u53F7 +FR-Designer_Finish_Export=\u51FA\u529B\u5B8C\u4E86 +MultiFileUpload=\u8907\u6570\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9 +HF-Page_Number=\u9801\u53F7 Style-Right_Indent=\u53F3\u30A4\u30F3\u30C7\u30F3\u30C8 Desktop=\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7 FR-Server-All_Error=\u30A8\u30E9\u30FC -ConditionB-Operator=\u64CD\u4F5C +ConditionB-Operator=\u6F14\u7B97\u5B50 Today=\u4ECA\u65E5 -Form-Widget_Name=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u540D -Covered_All=\u5168\u3066\u8986\u3046 +Form-Widget_Name=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u540D +Covered_All=\u3059\u3079\u3066\u4E0A\u66F8\u304D Day=\u65E5 External=\u5916\u90E8 -Black_Font=\u592A\u5B57 -LOG-Report_Server_IS_Started=\u5E33\u7968\u30B5\u30FC\u30D0\u30FC\u3082\u3046\u8D77\u52D5\u3055\u308C\u3066\u3044\u307E\u3059 -Tips\:You_Can_Input_B1_To_Input_The_Data_Of_The_First_Row_Second_Column=\u30D2\u30F3\u30C8\:B1\u3092\u5165\u529B -FR-Designer_ChooseOneButton=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u4E00\u3064\u9078\u629E\u3057\u3066\u304B\u3089\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044 -Widget-Sizing=\u5927\u304D\u3055\u8ABF\u6574 -NO_Border_Line=\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3\u7121\u3057 +Black_Font=\u9ED2\u4F53 +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\u3057\u3066\u3001\u7B2C\u4E00\u884C\u3068\u7B2C\u4E8C\u884C\u306E\u30C7\u30FC\u30BF\u3092\u5165\u529B\u3067\u304D\u307E\u3059\u3002 +FR-Designer_ChooseOneButton=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u9078\u629E\u3057\u3066\u8FFD\u52A0\u3057\u3066\u4E0B\u3055\u3044 +Widget-Sizing=\u30B5\u30A4\u30BA\u8ABF\u6574 +NO_Border_Line=\u67A0\u7DDA\u306A\u3057 Cell_Data=\u30BB\u30EB\u30C7\u30FC\u30BF -StyleAlignment-Vertical_Text=\u6587\u5B57\u3092\u7E26\u306B\u3059\u308B -Label=\u30BF\u30B0 +StyleAlignment-Vertical_Text=\u6587\u5B57\u7E26\u66F8\u304D +Label=\u30E9\u30D9\u30EB Orange=\u30AA\u30EC\u30F3\u30B8 -zeroMarginWarn=\u30D7\u30EA\u30F3\u30BF\u306F\u5C0F\u3055\u306A\u7F36
\u30B3\u30F3\u30C6\u30F3\u30C4\u4E0D\u8DB3\u3092\u5370\u5237\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u3001\u7269\u7406\u30DE\u30FC\u30B8\u30F3 +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
  Widget-Date_Selector_Return_Type=\u623B\u308A\u5024\u30BF\u30A4\u30D7 -Utils-Switch_To_Template_Reportlet=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u5E33\u7968\u306B\u5207\u308A\u66FF\u3048 +Utils-Switch_To_Template_Reportlet=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30CD\u30C3\u30C8\u5E33\u7968\u306B\u5207\u308A\u66FF\u3048\u308B satisfy=\u6761\u4EF6\u3092\u6E80\u305F\u3059 -FR-Designer_WidgetDisplyPosition=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u8868\u793A\u4F4D\u7F6E +FR-Designer_WidgetDisplyPosition=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u8868\u793A\u4F4D\u7F6E FR-Base_Top=\u4E0A -FR-Designer_Form-CheckBox=\u30D5\u30EC\u30FC\u30E0\u3092\u8907\u6570\u9078\u629E -Reportlet-Parameter_Type=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u4F1D\u9054\u65B9\u6CD5 +FR-Designer_Form-CheckBox=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 +Reportlet-Parameter_Type=\u30D1\u30E9\u30E1\u30FC\u30BF\u8EE2\u9001\u65B9\u5F0F sending=\u9001\u4FE1\u4E2D... FR-Designer-FRFont_Foreground=\u8272 FR-Import-Export_SVG=SVG\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 M_Edit-Clear_Contents=\u5185\u5BB9(C) Session=\u30BB\u30C3\u30B7\u30E7\u30F3 -Widget-Load_Type=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9 -template_unsaved=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u4FDD\u5B58\u3067\u304D\u306A\u3044 -check_communication=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u901A\u4FE1\u304C\u6B63\u5E38\u3067\u3042\u308A\u3001\u30B5\u30FC\u30D0\u304C\u52D5\u4F5C\u3057\u3066\u3044\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060 -List-Need_Head=\u30EA\u30B9\u30C8\u30D8\u30C3\u30C9\u304C\u5FC5\u8981\u3067\u3059 -FR-Designer-Plugin_Has_Been_Installed=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u3092 -FR-Widget_Tree_And_Table=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u30C4\u30EA\u30FC\u3068\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u8868 +Widget-Load_Type=\u30ED\u30FC\u30C9 +template_unsaved=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u4FDD\u5B58\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\u306F\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\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\u4E0B\u3055\u3044 +FR-Widget_Tree_And_Table=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u30C4\u30EA\u30FC\u3068\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u30EA\u30B9\u30C8 FR-Base_Help=\u30D8\u30EB\u30D7 -FR-Designer-Plugin_Update_Successful=\u30D7\u30E9\u30B0\u30A4\u30F3\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u306B\u6210\u529F\u3057\u307E\u3057\u305F\u3002\u30B5\u30FC\u30D0\u30FC\u3092 -August=\u516B\u6708 -LOG-Is_Being_Openned=\u958B\u3044\u3066\u3044\u307E\u3059 +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 BackgroundTexture-Oak=\u30AA\u30FC\u30AF Multi_nam_formula=\ \u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u540D\: \u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u6761\u4EF6\: -TurnOn=\u8D77\u52D5 +TurnOn=\u30AA\u30F3 HJS-Send_Successfully=\u9001\u4FE1\u6210\u529F -Mon=\u6708 -Inner_Parameter=\u5185\u8535\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC -Required=\u8A18\u5165\u5FC5\u9808 -Summary=\u6982\u8981 -template_unopened=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +Mon=\u6708\u66DC\u65E5 +Inner_Parameter=\u7D44\u307F\u8FBC\u307F\u306E\u30D1\u30E9\u30E1\u30FC\u30BF +Required=\u8A18\u5165\u5FC5\u8981 +Summary=\u96C6\u8A08 +template_unopened=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u958B\u3051\u306A\u3044 FR-Base_Bottom=\u4E0B DataFunction-Min=\u6700\u5C0F\u5024 StyleFormat-Percent=\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8 FR-App-All_Custom=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA M_Insert-Data_Column=\u30C7\u30FC\u30BF\u5217 -PLEASE=\u3057\u3066\u304F\u3060\u3055\u3044 -Numbers=\u6841\u6570 +PLEASE=\u3069\u3046\u305E +Numbers=\u500B\u6570 Release_Lock=\u30A2\u30F3\u30ED\u30C3\u30AF Background-Background_is_NULL=\u80CC\u666F\u306A\u3057 FR-Designer_Sytle-FRFont=\u30D5\u30A9\u30F3\u30C8 -Gradation=\u69CB\u6210 -The_current_list_is_empty=\u73FE\u5728\u306E\u30EA\u30B9\u30C8\u306F\u7A7A\u3067\u3059 -Formula_Dictionary_Display_Examples=\ \u5B9F\u969B\u5024\u7BC4\u56F2\u306F\ -Schedule-Template_Parameter=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +Gradation=\u30EC\u30D9\u30EB +The_current_list_is_empty=\u73FE\u5728\u306E\u30EA\u30B9\u30C8\u306F\u7A7A +Formula_Dictionary_Display_Examples=\u5B9F\u969B\u5024\u7BC4\u56F2\u306F \=range(100)\u3001\u5BFE\u5FDC\u7684\u306A\u5B9F\u969B\u5024\u7BC4\u56F2\n \u306E\u4E2D\u306B\u5404$$$\u3067\u8868\u793A\u3059\u308B\u6570\u5F0F\u306F \=0 - $$$\uFF0C\n \u306A\u308C\u3070\u6700\u7D42\u306E\u5B9F\u969B\u5024\u306F1, 2, ..., 100, \n \u8868\u793A\u5024\u306F-1, -2, ... , -100\u3002 +Schedule-Template_Parameter=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF 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 +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-90\u306E\u7BC4\u56F2\u3067 +FormulaD-Custom_Function=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u95A2\u6570 FR-Designer_Integer=\u6574\u6570 -PageSetup-Finis_Start_Row=\u91CD\u8907\u3059\u308B\u7D42\u4E86\u884C -RWA-Remove_Field=\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30EA\u30E0\u30FC\u30D6 +PageSetup-Finis_Start_Row=\u91CD\u8907\u7D42\u4E86\u884C +RWA-Remove_Field=\u30D5\u30A3\u30FC\u30EB\u30C9\u524A\u9664 Form-Desin_Width=\u30C7\u30B6\u30A4\u30F3\u5E45 -No-tableData=\u623B\u3057\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u304C\u3042\u308A\u307E\u305B\u3093 +No-tableData=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306F\u623B\u3055\u306A\u3044 Page_Total=\u5408\u8A08 -FR-Designer-Plugin_Connect_Server_Error=\u30D7\u30E9\u30B0\u30A4\u30F3\u30DE\u30FC\u30B1\u30C3\u30C8\u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093\u3002\uFF0C\u5F8C\u3067\u518D\u5EA6 -Import-Excel_Source=Excel\u30BD\u30FC\u30B9 +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\u4E0B\u3055\u3044 +Import-Excel_Source=Excel\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB Utils-Left_to_Right_a=\u5DE6\u304B\u3089\u53F3\u3078 -ExpandD-Expand_Attribute=\u5C5E\u6027\u3092\u62E1\u5F35\u3059\u308B -Report-Write_Attributes=\u5E33\u7968\u8A18\u5165\u5C5E\u6027 -Utils-Current_Column=\u30AB\u30EC\u30F3\u30C8\u5217 -Need_Max_Value=\u6700\u5927\u5024\u304C\u5FC5\u8981 -Report_Not_Exist=\u9078\u629E\u3057\u305F\u5E33\u7968\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\uFF01 -HF-Insert_Content=\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u633F\u5165 +ExpandD-Expand_Attribute=\u5C55\u958B\u5C5E\u6027 +Report-Write_Attributes=\u5E33\u7968\u66F8\u304D\u8FBC\u307F\u30D7\u30ED\u30D1\u30C6\u30A3 +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 UpParent=\u4E0A\u89AA\u30BB\u30EB PageSetup-Page=\u30DA\u30FC\u30B8 Utils-Move_Up=\u4E0A\u3078\u79FB\u52D5 -BackgroundTexture-PurpleMesh=\u7D2B\u8272\u306E\u30E1\u30C3\u30B7\u30E5 -Export-Word=Word\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 -ServerM-Widget_Manager=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u7BA1\u7406 -FR-Designer-Basic_Activation_Key=\u30C7\u30B6\u30A4\u30CA\u30FC\u6574\u7406\u756A\u53F7\uFF1A -FR-App-Template_Report_Not_Exist=\u9078\u629E\u3057\u305F\u5E33\u7968\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\! +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\uFF1A +FR-App-Template_Report_Not_Exist=\u9078\u629E\u3057\u305F\u5E33\u7968\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\! Protected=\u4FDD\u8B77 Skip=\u30B9\u30AD\u30C3\u30D7 -FR-Designer_PageSetup-Vertically=\u5782\u76F4\u4E2D\u592E\u63C3\u3048 -revert=\u3084\u308A\u76F4\u3059 -PageSetup-Predefined=\u30D7\u30EC\u5B9A\u7FA9 +FR-Designer_PageSetup-Vertically=\u4E0A\u4E0B\u4E2D\u592E\u63C3\u3048 +revert=\u5143\u306B\u623B\u3059 +PageSetup-Predefined=\u4E8B\u524D\u5B9A\u7FA9 Border-Style-Radius=\u89D2\u4E38 IntPart=\u6574\u6570\u90E8\u5206 -ExpandD-Data_Column=\u30C7\u30FC\u30BF\u30B3\u30E9\u30E0 +ExpandD-Data_Column=\u30C7\u30FC\u30BF\u5217 Sort-Ascending=\u6607\u9806 FR-Designer-Widget_Style=\u30B9\u30BF\u30A4\u30EB -parameter_name_exist=\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u306F\u65E2\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059 -FR-Designer_Layer-Build=\u30D5\u30A1\u30BB\u30C3\u30C8\u7D44\u307F\u7ACB\u3066 -Please_Rename=\u518D\u5EA6\u547D\u540D\u3057\u3066\u304F\u3060\u3055\u3044 -Form-Editing_Listeners=\u4E8B\u4EF6\u7DE8\u96C6 -RWA-Smart_Add_Fields=\u30A4\u30F3\u30C6\u30EA\u30B8\u30A7\u30F3\u30C8\u8FFD\u52A0\u30D5\u30A3\u30FC\u30EB\u30C9 +parameter_name_exist=\u6307\u5B9A\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u306F\u5229\u7528\u3055\u308C\u3066\u3044\u307E\u3059 +FR-Designer_Layer-Build=\u666E\u901A\u30EC\u30D9\u30EB\u5206\u3051\u69CB\u7BC9 +Please_Rename=\u540D\u524D\u3092\u5909\u66F4\u3057\u3066\u4E0B\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 FR-Designer-Tree_Width=\u5E45 Record=\u8A18\u9332 -Poly-Report_Component=\u805A\u5408\u5E33\u7968\u30A2\u30BB\u30F3\u30D6\u30EA +Poly-Report_Component=\u30D6\u30ED\u30C3\u30AF\u5E33\u7968\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8 Options=\u30AA\u30D7\u30B7\u30E7\u30F3 -NS-war-remote=\u30A8\u30E9\u30FC\u30B3\u30FC\u30C9\:1117 \u5727\u7E2E\u914D\u7F6E\u306F\u9060\u9694\u30C7\u30B6\u30A4\u30F3\u306B\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093 +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 Sche-Minute=\u5206 -Three_Rows_Of_Three_Grid=3\u4E57\u306E3\u3064\u306E\u884C -WorkSheet=\u30EF\u30FC\u30AF\u30B7\u30FC\u30C8 -FR-Designer-Widget_Size=\u5927\u304D\u3055\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB -BindColumn-Select=\u30EA\u30B9\u30C8 +Three_Rows_Of_Three_Grid=3\u884C3\u5217\u306E\u30B0\u30EA\u30C3\u30C9 +WorkSheet=\u30D5\u30EA\u30FC\u5E33\u7968 +FR-Designer-Widget_Size=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u30B5\u30A4\u30BA +BindColumn-Select=\u4E00\u89A7 FR-Widget_Mobile_Terminal=\u30E2\u30D0\u30A4\u30EB\u7AEF\u672B -FR-Background_Image_Titled=\u5C55\u958B -SetPrinterOffset=\u5B89\u3044\u30D7\u30EA\u30F3\u30BF -FR-Designer-Plugin_Installed=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u6E08\u307F +FR-Background_Image_Titled=\u4E26\u3079\u3066\u8868\u793A +SetPrinterOffset=\u5370\u5237\u306E\u30AA\u30D5\u30BB\u30C3\u30C8 +FR-Designer-Plugin_Installed=\u3059\u3067\u306B\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB FR-Designer-Hyperlink_Name=\u540D\u524D -FR-Designer_Form-Button=\u30DC\u30BF\u30F3 +FR-Designer_Form-Button=\u62BC\u3057\u30DC\u30BF\u30F3 Black=\u30D6\u30E9\u30C3\u30AF -FR-Designer-Widget-Style_Border_Color=\u30D5\u30EC\u30FC\u30E0\u8272 -Set_Submit_Event=\u63D0\u51FA\u4E8B\u4EF6\u3092\u8A2D\u5B9A -PDF-Print_isPopup=\u8A2D\u5B9A\u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7\u3059\u308B\u304B\u5426\u304B -LayerPageReport_CountPerPage=\u6BCE\u30DA\u30FC\u30B8\u8A18\u9332\u6570 -Display_Modes=\u30E2\u30C7\u30EB\u3092\u8868\u793A -RowSpan=\u884C\u7BC4\u56F2 +FR-Designer-Widget-Style_Border_Color=\u7F6B\u7DDA\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 Datasource-Test_Connection=\u63A5\u7D9A\u30C6\u30B9\u30C8 Function-Function_Manager=\u95A2\u6570\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC -Host_Name=\u30DB\u30B9\u30C8\u30B3\u30F3\u30D4\u30E5\u30FC\u30BF\u540D +Host_Name=\u30DB\u30B9\u30C8\u540D CellWrite-Show_As_HTML=HTML\u3067\u5185\u5BB9\u3092\u8868\u793A -FR-Designer-Widget-Style_Shadow=\u9670\u5F71 +FR-Designer-Widget-Style_Shadow=\u5F71 FR-Designer_Parameter_String=\u6587\u5B57\u5217 -Form-SupportTag=\u30BF\u30B0\u306B\u8868\u793A -ReportD-Report_Write_Attributes=\u5E33\u7968\u66F8\u5F0F\u5C5E\u6027 -DataFunction-Count=\u4EF6\u6570 -Top_And_Thick_Bottom_Border_Line=\u4E0A\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3\u3068\u7C97\u4E0B\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 -Client=\u9867\u5BA2\u5074 -BindColumn-Result_Serial_Number_Start_From_1=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306E\u756A\u53F7\u306F1\u304B\u3089 -History=\u6B74\u53F2 -Already_exists=\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u308B\u5834\u5408\u3001\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\uFF01 -Datasource-Original_Charset=\u30AA\u30EA\u30B8\u30CA\u30EB\u6587\u5B57\u30B3\u30FC\u30C9 +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=\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059 +Datasource-Original_Charset=\u30AA\u30EA\u30B8\u30CA\u30EB\u30B3\u30FC\u30C9 FR-Base_Left=\u5DE6 ReportServerP-Next=\u6B21\u30DA\u30FC\u30B8 -BindColumn-Top_N=\u524D\u306EN\u500B -Animation_Special=\u7279\u5225\u306B\u826F\u3044\u52B9\u679C -Widget-Chart_Widget_Config=\u30B0\u30E9\u30D5\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB -FR-Designer-Plugin_Cannot_Update_Not_Install=\u30D7\u30E9\u30B0\u30A4\u30F3\u66F4\u65B0\u3092\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3002\u5F53\u8A72 -After_Changed_Some_Attributes_Are_Different=\u30D7\u30ED\u30D1\u30C6\u30A3\u306E\u3044\u304F\u3064\u304B\u306E\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8\u306E\u5F8C\u306B\u5909\u63DB\u304C\u7D99\u7D9A\u3059\u308B\u304B\u3069\u3046\u304B\u3001\u5909\u66F4\u3055\u308C\u307E\u3059 -PieStyle=\u30D1\u30A4 -HF-Are_you_sure_to_delete_it=\u5F53\u8A72\u9805\u76EE\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B +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\u4E0B\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? Utils-Design-File_Open=\u958B\u304F -FR-Utils_Label=\u30BF\u30B0 -Data-Label=\u30BF\u30B0 +FR-Utils_Label=\u30E9\u30D9\u30EB +Data-Label=\u30E9\u30D9\u30EB M_Insert-Text=\u30C6\u30AD\u30B9\u30C8 Form-View_Tree=\u30D3\u30E5\u30FC\u30C4\u30EA\u30FC -M_Insert-Chart=\u56F3 +M_Insert-Chart=\u30B0\u30E9\u30D5 HF-Even_Page=\u5076\u6570\u30DA\u30FC\u30B8 -ReportServerP-Report_server_parameter=\u5E33\u7968\u30B5\u30FC\u30D0\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC -JavaScript-Form_Submit=\u8868\u63D0\u51FA -Horizontal-Split_Layout=\u6C34\u5E73\u5206\u5272\u914D\u7F6E -BorderLayout-Center=\u4E2D -INFO-Reset_Webapp=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30B5\u30FC\u30D0\u30FC\u306E\u518D\u8A2D\u5B9A +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\u30B5\u30FC\u30D0\u30EA\u30BB\u30C3\u30C8 FR-Designer_Text=\u30C6\u30AD\u30B9\u30C8 -IN_and_INOUT_type_not_as_cursor=IN\u304A\u3088\u3073INOUT\u30BF\u30A4\u30D7\u3067\u306F\u306A\u3044\u30AB\u30FC\u30BD\u30EB\u3068 +IN_and_INOUT_type_not_as_cursor=IN\u3068INOUT\u30BF\u30A4\u30D7\u306F\u30AB\u30FC\u30BD\u30EB\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u306A\u3044 Main_Axis=\u30E1\u30A4\u30F3\u5EA7\u6A19\u8EF8 M_Edit-Cut=\u5207\u308A\u53D6\u308A(T) -Utils-The_Name_has_been_existed=\u5F53\u8A72\u540D\u79F0\u306F\u65E2\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059 +Utils-The_Name_has_been_existed=\u3053\u306E\u540D\u524D\u306F\u65E2\u306B\u3042\u308A\u307E\u3059 FR-Background_Image=\u753B\u50CF Character=\u6587\u5B57 Unit_Thousand=\u5343 Test=\u30C6\u30B9\u30C8 Utils-Would_you_like_to_save=\u4FDD\u5B58\u3057\u307E\u3059\u304B HF-Header_and_Footer=\u30D8\u30C3\u30C0\u30FC\u3068\u30D5\u30C3\u30BF\u30FC -LIST_MODE=\u30EA\u30B9\u30C8 -HF-Insert_Image=\u753B\u50CF\u3092\u633F\u5165 +LIST_MODE=\u4E00\u89A7 +HF-Insert_Image=\u753B\u50CF FR-Designer-Widget-Style_Standard=\u6A19\u6E96 -FR-Designer_Form-List=\u30EA\u30B9\u30C8 +FR-Designer_Form-List=\u4E00\u89A7 BackgroundTexture-Denim=\u30C7\u30CB\u30E0 -Execute_Report_by_Layer_Engine=\u30E9\u30A4\u30F3\u306E\u30A8\u30F3\u30B8\u30F3\u3067\u5E33\u7968\u3092\u5B9F\u884C\u3059\u308B +Execute_Report_by_Layer_Engine=\u30B0\u30EA\u30C3\u30C9\u578B\u30A8\u30F3\u30B8\u30F3\u3067\u5E33\u7968\u3092\u5B9F\u884C\u3059\u308B M_Edit-Bring_Forward=\u524D\u9762\u3078\u79FB\u52D5(F) Choose_All=\u5168\u9078\u629E Form-RadioGroup=\u30E9\u30B8\u30AA\u30DC\u30BF\u30F3\u30B0\u30EB\u30FC\u30D7 FR-Base_Remove=\u524A\u9664 -FR-Remote_Connect2Server_Again=\u63A5\u7D9A\u304C\u4E2D\u65AD\u3057\u307E\u3057\u305F\u3002\u518D\u5EA6\u30B5\u30FC\u30D0\u30FC\u306B\u63A5\u7D9A\u3057\u307E\u3059\u304B\u3002 -Semicolon=\u5206\u53F7 +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 StyleFormat-Category=\u5206\u985E -Report_Template=\u5E33\u7968\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 -Utils-Beyond_the_right_side_of_Border=\u53F3\u9818\u57DF\u3092\u30AA\u30FC\u30D0\u30FC +Report_Template=\u5E33\u7968\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 +Utils-Beyond_the_right_side_of_Border=\u53F3\u306E\u306E\u5883\u754C\u3092\u8D85\u904E\u3057\u3066\u3044\u307E\u3059\u3002\u914D\u7F6E\u3067\u304D\u307E\u305B\u3093\u3002 BackgroundTexture-Papyrus=\u7D19 -LayerPageReport_PageEngine=\u30DA\u30FC\u30B8\u5225\u306E\u6F14\u7B97\u3092\u4F7F\u7528\u3057\u3066\u5E33\u7968\u3092\u57F7\u884C -Schedule-The_selected_file_must_be_end_with_filter=\u9078\u629E\u30D5\u30A1\u30A4\u30EB\u306F.cpt\u53C8\u306F.class\u53C8\u306F.frm +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 Provide=\u63D0\u4F9B -FormulaD-Math_&_Trig=\u6570\u5B66\u95A2\u6570\u3068\u4E09\u89D2\u95A2\u6570 -FR-Designer-StyleAlignment_Right=\u53F3\u5BC4\u305B -Error_TableDataNameRepeat=\u3059\u3067\u306B\u30B5\u30FC\u30D0\u30FC\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306B\u5B58\u5728\u3059\u308B\u304B\u8907\u6570\u306E\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u540D\u304C\u91CD +FormulaD-Math_&_Trig=\u6570\u5B66\u3068\u4E09\u89D2\u95A2\u6570 +FR-Designer-StyleAlignment_Right=\u53F3\u63C3\u3048 +Error_TableDataNameRepeat=\u30B5\u30FC\u30D0\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u304C\u65E2\u306B\u5B58\u5728\u3059\u308B\u304B\u3001\u540C\u3058\u540D\u524D\u306E\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u304C\u5B58\u5728\u3057\u3066\u3044\u307E\u3059\u3002 Choose_None=\u9078\u629E\u3057\u306A\u3044 File-tree=\u30D5\u30A1\u30A4\u30EB\u30C4\u30EA\u30FC FRFont-bold=\u592A\u5B57 -FR-Designer_Set_Submit_Condition=\u63D0\u51FA\u6761\u4EF6\u3092\u8A2D\u5B9A -Form-Change_Widget_Name=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u540D\u5909\u66F4 -ReportColumns-Report_Columns=\u5E33\u7968\u30B3\u30E9\u30E0 -Can_not_use_FormatBursh=\u8907\u6570\u9078\u629E\u3057\u305F\u30A8\u30EA\u30A2\u3067\u306F\u66F8\u5F0F\u30D6\u30E9\u30B7\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\! -CellElement-Property_Table=\u30BB\u30EB\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u00B7\u30B7\u30FC\u30C8 -Dictionary-Dynamic_SQL=\u52D5\u614BSQL -FR-Designer_Form-CheckBoxGroup=\u30D5\u30EC\u30FC\u30E0\u30BB\u30C3\u30C8\u3092\u8907\u6570\u9078\u629E -DBCP_TIME_BETWEEN_EVICTIONRUNSMILLIS=\u30A2\u30A4\u30C9\u30EB\u63A5\u7D9A\u30EA\u30B5\u30A4\u30AF\u30EB\u30E6\u30CB\u30C3\u30C8\u4F11\u7720\u6642\u9593 -ReportD-Export_Hided_Column=\u96A0\u3057\u305F\u5217\u3092\u5C0E\u51FA -Preference-Support_Undo=\u5143\u306B\u623B\u3057\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B -FR-mobile_report_analysis=\u5831\u544A\u66F8\u306E\u89E3\u6790 +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\u30B5\u30D6\u30D5\u30A3\u30FC\u30EB\u30C9 +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 +CellElement-Property_Table=\u30BB\u30EB\u5C5E\u6027\u8868 +Dictionary-Dynamic_SQL=\u52D5\u7684SQL +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 Month=\u6708 -Utils-Column_Width=\u5217\u5E45 -Collect-Use_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u4F7F\u7528 -Widget-User_Defined_Editor=\u30D7\u30EC\u5B9A\u7FA9\u30A8\u30C7\u30A3\u30BF\u3067\u3059\u3002\u5F53\u8A72\u30A8\u30C7\u30A3\u30BF\u306F\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u7BA1\u7406\u30E1\u30CB\u30E5\u30FC +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 Unit_Ten_Thousand=\u4E07 Data_Setting=\u30C7\u30FC\u30BF\u8A2D\u5B9A -ECP_input_pwd=\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\: +ECP_input_pwd=\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\: period=\u3002 -Note=\u6CE8 +Note=\u30B3\u30E1\u30F3\u30C8 Multiline=\u8907\u6570\u884C\u7DE8\u96C6 Datasource-Convert_Charset=\u6587\u5B57\u30B3\u30FC\u30C9\u5909\u63DB DashBoard-ConnectionList=\u30C7\u30FC\u30BF\u63A5\u7D9A -Utils-Submit_Forcibly=\u5F37\u884C\u63D0\u51FA +Utils-Submit_Forcibly=\u5F37\u5236\u66F8\u304D\u8FBC\u307F Parent_Marked_Field=\u89AA\u30BF\u30B0\u30D5\u30A3\u30FC\u30EB\u30C9 -Logout=\u9000\u51FA -FR-Designer_Show_Blank_Row=\u7A7A\u767D\u884C\u3092\u88DC\u5145 -FR-Base_Format=\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 -FR-App-Export_png=PNG\u66F8\u5F0F -Delete_Column=\u5217\u524A\u9664 -SecondGraduationLine=\u5C0F\u3055\u306A\u76EE\u76DB\u308A +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 SpecifiedG-Groups=\u30B0\u30EB\u30FC\u30D7 -CONTINUUM_MODE=\u96A3\u63A5\u3057\u305F\u9023\u7D9A\u3057\u305F\u30D1\u30B1\u30C3\u30C8 +CONTINUUM_MODE=\u96A3\u63A5\u9023\u7D9A\u30B0\u30EB\u30FC\u30D7\u5206\u3051 Datasource-Connection_failed=\u63A5\u7D9A\u5931\u6557 -CategoryName=\u30AB\u30C6\u30B4\u30EA\u30FC\u540D -DBCP_INITIAL_SIZE=\u63A5\u7D9A\u6570\u306E\u521D\u671F\u5316 +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 Colors=\u8272 -FR-Import-Export_CSV=CSV\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8(\u30B3\u30F3\u30DE\u3067\u5206\u5272) -FR-Designer-StyleAlignment_Left=\u5DE6\u5BC4\u305B +FR-Import-Export_CSV=CSV(\u30AB\u30F3\u30DE\u533A\u5207\u308A) +FR-Designer-StyleAlignment_Left=\u5DE6\u63C3\u3048 BackgroundTexture-PaperBag=\u7D19\u888B -RWA-BuildIn_SQL=\u5185\u8535SQL -SingleLayer=\u5358\u5C64 -Or-you=\u307E\u305F\u306F -FR-Designer_Certificate_Path=\u8A3C\u66F8\u30EB\u30FC\u30C8 -Utils-Last_Page=\u7D42\u4E86\u9801 -BarCodeD-Drawing_Text=\u30D0\u30FC\u30B3\u30FC\u30C9\u30C6\u30AD\u30B9\u30C8\u3092\u8868\u793A\u3059\u308B -Warning-Template_Do_Not_Exsit=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F\u5B58\u5728\u3057\u307E\u305B\u3093 -BindColumn-Group=\u30B0\u30EB\u30FC\u30D7\u5206\u3051 -Export-SVG=SVG\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +RWA-BuildIn_SQL=\u7D44\u307F\u8FBC\u307FSQL +SingleLayer=\u30B7\u30F3\u30B0\u30EB\u30EC\u30A4\u30E4\u30FC +Or-you=\u3042\u308B\u3044\u306F +FR-Designer_Certificate_Path=\u30E9\u30A4\u30BB\u30F3\u30B9\u30D1\u30B9 +Utils-Last_Page=\u6700\u7D42\u30DA\u30FC\u30B8 +BarCodeD-Drawing_Text=\u30C6\u30AD\u30B9\u30C8\u3092\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\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 +SessionID=sessionID\u306F\u4ECA\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u30BF\u30B0\u30D1\u30E9\u30E1\u30FC\u30BF\u3067\u3042\u308B FR-Designer_Height=\u9AD8\u3055 HF-Odd_Page=\u5947\u6570\u30DA\u30FC\u30B8 -About-All_Rights_Reserved=\u5168\u3066\u306E\u6A29\u5229\u3092\u6240\u6709\u3057\u3066\u3044\u308B -Utils-Current_Cell=\u30AB\u30EC\u30F3\u30C8\u30BB\u30EB -Web_Preview_Message=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u3092\u73FE\u5728\u306E\u904B\u884C\u74B0\u5883\u306E\u76EE\u6B21\u4E0B\u306B\u4FDD\u5B58\u3057\u3066\u304F\u3060\u3055\u3044 -FR-Hyperlink_Chart_Float=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u9023\u52D5\u30D5\u30ED\u30FC\u8981\u7D20 -Dic-Data_Query=\u30C7\u30FC\u30BF\u30AF\u30A8\u30EA\u30FC -CellWrite-Print_Content=\u30BB\u30EB\u306E\u4E2D\u8EAB\u3092\u5370\u5237\u3059\u308B -Privilege-Selected_None_Of_Any_Items=\u9805\u76EE\u3092\u3072\u3068\u3064\u3082\u9078\u629E\u3057\u3066\u3044\u307E\u305B\u3093 +About-All_Rights_Reserved=\u5168\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 FRFont-Size=\u30B5\u30A4\u30BA -Function-J2EE_server=J2EE_server -FR-Designer_Allow_Blank=\u7A7A\u6B04\u3042\u308A -Build_Tree_Accord_Parent_Marked_Filed=\u89AA\u30BF\u30B0\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u3001\u69CB\u7BC9\u3055\u308C\u305F\u30C4\u30EA\u30FC\u3092\u8A2D\u5B9A\u3057\u3001\u9078\u629E\u3057\u305F\u30C7\u30FC\u30BF\u306B\u4F9D\u5B58 -Preference-Horizontal_Scroll_Bar_Visible=\u6C34\u5E73\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u306F\u53EF\u8996 -Scope=\u30B9\u30B3\u30FC\u30D7 -Save_All_Records_In_Memory=\u5168\u3066\u306E\u8A18\u9332\u306F\u30E1\u30E2\u30EA\u306B\u4FDD\u5B58\u3055\u308C\u3066\u3044\u307E\u3059 -FreezeWarning1=\u521D\u671F\u5024\u306F\u6700\u7D42\u5024\u3088\u308A\u5927\u304D\u304F\u3042\u308A\u307E\u305B\u3093 -FlowLayout=\u30D5\u30ED\u30FC\u914D\u7F6E +Function-J2EE_server=J2EE\u30B5\u30FC\u30D0 +FR-Designer_Allow_Blank=\u7A7A\u3092\u8A31\u53EF +Build_Tree_Accord_Parent_Marked_Filed=\u9078\u629E\u3057\u305F\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306E\u89AA\u30DE\u30FC\u30AF\u30D5\u30A3\u30FC\u30EB\u30C9\u3088\u308A\u30C4\u30EA\u30FC\u3092\u69CB\u7BC9\u3059\u308B +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 M_Report-Report_Footer=\u5E33\u7968\u30D5\u30C3\u30BF\u30FC -FR-Action_Add=\u5897\u52A0 +FR-Action_Add=\u8FFD\u52A0 BorderLayout-East=\u6771 -feedback_tip=\u4EE5\u4E0B400\u306E\u5358\u8A9E\u306E\u554F\u984C\u306E\u8AAC\u660E\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 -FS_Start_Date=\u958B\u59CB\u65E5\u671F +feedback_tip=400\u5B57\u4EE5\u5185 +FS_Start_Date=\u958B\u59CB\u65E5\u4ED8 FR-ConditionB_Operator=\u6F14\u7B97\u5B50 Printer-Alias=\u5225\u540D DS-Class_Name=\u30AF\u30E9\u30B9\u540D -FR-Designer-Plugin_Has_Been_Disabled=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u4F7F\u7528\u304C\u7981\u6B62\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5 +FR-Designer-Plugin_Has_Been_Disabled=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u7981\u6B62\u3055\u308C\u3001\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC\u30D0\u3092\u518D\u8D77\u52D5\u3057\u3066\u6709\u52B9\u306B\u306A\u308A\u3001\u30B5\u30FC\u30D0\u306F\u624B\u52D5\u3067\u518D\u8D77\u52D5\u3057\u3066\u4E0B\u3055\u3044 Sort-Original=\u30BD\u30FC\u30C8\u3057\u306A\u3044 -Utils-Top_to_Bottom_a=\u4E0A\u304B\u3089\u4E0B\u3078 -Parameter-String=\u6587\u5B57\u5217 -InnerRadis=\u5185\u5F84\u306E\u5927\u304D\u3055 -Want_To_Cover_It=\u3053\u308C\u3092\u8986\u3044\u307E\u3059\u304B -Divided_stage=\u5206\u5272\u3055\u308C\u305F\u30B9\u30C6\u30FC\u30B8 -Seriously=\u53B3\u91CD +Utils-Top_to_Bottom_a=\u4E0A\u304B\u3089\u4E0B +Parameter-String=\u6587\u5B57\u578B +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 ReportServerP-PDF=PDF -Utils-Switch_To_Class_Reportlet=\u30D7\u30ED\u30B0\u30E9\u30E0\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u5E33\u7968\u306B\u5207\u308A\u66FF\u3048 -FR-Designer_Show_Blank_Column=\u7A7A\u767D\u5217\u3092\u88DC\u5145 -M_Edit-Redo=\u518D\u5B9F\u884C +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=\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 +Has_Selected=\u9078\u629E\u3055\u308C\u305F +BackgroundTexture-Walnut=\u304F\u308B\u307F FormulaD-Function_category=\u95A2\u6570\u30BF\u30A4\u30D7 -Interface=\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30A4\u30B9 -FR-Designer-Beyond_Bounds= +Interface=\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30FC\u30B9 +FR-Designer-Beyond_Bounds=body\u30DC\u30FC\u30C0\u30FC\u3092\u8D8A\u3048\u305F\u3001\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u305B\u3093 seconds=\u79D2 -Auto-Build=\u81EA\u52D5\u7684\u306B\u30D3\u30EB\u30C9 -FR-Designer-Plugin_Install_Successful=\u5F53\u8A72\u30D7\u30E9\u30B0\u30A4\u30F3\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC\u30D0\u30FC\u3092\u518D\u8D77\u52D5\u3059\u308B\u969B\u306B -Template_Path=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30EB\u30FC\u30C8 -FR-Designer-FRFont_Bold=\u592A\u304F\u3059\u308B -Poly_Name=\u805A\u5408\u30E2\u30B8\u30E5\u30FC\u30EB\u540D +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\u4E0B\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 WorkBook=\u30EF\u30FC\u30AF\u30D6\u30C3\u30AF -Hyperlink-Self_Window=\u73FE\u5728\u306E\u30A6\u30A3\u30F3\u30C9\u30A6 -FR-Designer-Widget-Style_Title=\u6A19\u984C -FR-Designer-FRFont_Size=\u5927\u304D\u3055 +Hyperlink-Self_Window=\u73FE\u30A6\u30A3\u30F3\u30C9\u30A6 +FR-Designer-Widget-Style_Title=\u30BF\u30A4\u30C8\u30EB +FR-Designer-FRFont_Size=\u30B5\u30A4\u30BA M_File-Export-SVG=SVG Capacity=\u5BB9\u91CF Rose_Red=\u30ED\u30FC\u30BA\u30EC\u30C3\u30C9 -StyleAlignment-The_value_of_rotation_must_between_-90_and_90_degrees=\u56DE\u8EE2\u5024\u306F-90\u304B\u308990\u5EA6 -HF-Move_Left=\u5DE6\u3078\u79FB\u52D5\u3059\u308B -Cell_Group=\u30BB\u30EB\u7D44 -Week=\u5468 -PageSetup-Orientation=\u65B9\u5411 -M-Open_Recent=\u6700\u8FD1\u958B\u3044\u305F\u3082\u306E +StyleAlignment-The_value_of_rotation_must_between_-90_and_90_degrees=\u56DE\u8EE2\u89D2\u5EA6\u306F\u5FC5\u305A-90\uFF5E90\u306E\u9593\u306B +HF-Move_Left=\u5DE6\u3078 +Cell_Group=\u30BB\u30EB\u30B0\u30EB\u30FC\u30D7 +Week=\u9031 +PageSetup-Orientation=\u5411\u304D +M-Open_Recent=\u6700\u8FD1\u4F7F\u7528\u3057\u305F NNormal=\u6B63\u5E38 Integer=\u6574\u6570 -Select_The_Source_To_Save=\u8A18\u61B6\u3059\u308B\u9805\u76EE\u3092\u9078\u629E -Transition=\u5206\u679D +Select_The_Source_To_Save=\u4FDD\u5B58\u3057\u305F\u3044\u9805\u76EE\u3092\u9078\u629E +Transition=\u30D6\u30E9\u30F3\u30C1 FR-Designer_Get_Lock=\u30ED\u30C3\u30AF -one_record_exists_in_many_groups=\u4E00\u3064\u306E\u8A18\u9332\u306F\u8907\u6570\u30B0\u30EB\u30FC\u30D7\u5185\u306B\u5B58\u5728\u53EF\u80FD -FR-Designer_Cover_None=\u5168\u3066\u8986\u308F\u306A\u3044 +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 DeciPart=\u5C0F\u6570\u90E8\u5206 ExpandD-Up_Father_Cell=\u4E0A\u89AA\u30BB\u30EB Deep=\u6DF1\u3055 FRFont-Shadow=\u5F71 Reportlet=\u30CD\u30C3\u30C8\u5E33\u7968 Calendar=\u30AB\u30EC\u30F3\u30C0\u30FC -DateFormat-Custom_Warning=\u6CE8\uFF1A\u30AB\u30B9\u30BF\u30E0\u65E5\u6642\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u30B5\u30DD\u30FC\u30C8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u691C\u67FB -Unit_MM=\u30DF\u30EA\u30E1\u30FC\u30C8\u30EB +DateFormat-Custom_Warning=\u6CE8\u610F\uFF1A\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 Server-Start=\u8D77\u52D5 -CellPage-Can_Break_On_Paginate=\u30DA\u30FC\u30B8\u30F3\u30B0\u304C\u5207\u65AD\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u305F\u3068\u304D -Build_Tree_Accord_Marked_Filed_Length=\u69CB\u7BC9\u30C4\u30EA\u30FC\u3092\u8A2D\u5B9A\u3057\u3001\u9078\u629E\u3057\u305F\u30C7\u30FC\u30BF\u306B\u4F9D\u5B58\u3057\u305F\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u9577\u3055\u3092\u30DE\u30FC\u30AF +CellPage-Can_Break_On_Paginate=\u6539\u30DA\u30FC\u30B8\u6642\u6539\u6BB5 +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 ComboCheckBox-Start_Symbol=\u958B\u59CB\u6587\u5B57 Real=\u5B9F\u969B -RWA-Batch_Modify_Cells=\u6279\u91CF\u4FEE\u6B63\u30BB\u30EB -FR-Designer_Build-Way=\u69CB\u7BC9\u65B9\u6CD5 -Read=\u8AAD\u307F\u53D6\u308A +RWA-Batch_Modify_Cells=\u30BB\u30EB\u4E00\u62EC\u7DE8\u96C6 +FR-Designer_Build-Way=\u69CB\u7BC9\u65B9\u5F0F +Read=\u8AAD\u307F\u8FBC\u307F StyleAlignment-Degrees=\u5EA6 M_Format_A-Border=\u67A0(B) Utils-Delete_Record=\u8A18\u9332\u524A\u9664 Reload=\u518D\u30ED\u30FC\u30C9 -Image-Select_Picture=\u753B\u50CF\u3092\u9078\u629E -RWA-Submit=\u63D0\u51FA\u3059\u308B -the_template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 -FR-Designer_Component_Scale=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u30B9\u30B1\u30FC\u30EB +Image-Select_Picture=\u753B\u50CF\u9078\u629E +RWA-Submit=\u66F8\u304D\u8FBC\u307F +the_template=\u5F53\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 +FR-Designer_Component_Scale=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u30BA\u30FC\u30E0 FRFont-italic=\u659C\u4F53 Year=\u5E74 -HF-Move_Right=\u53F3\u3078\u79FB\u52D5\u3059\u308B -Data-Check=\u30C7\u30FC\u30BF\u7BA1\u7406\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +HF-Move_Right=\u53F3\u3078 +Data-Check=\u30C7\u30FC\u30BF\u30C1\u30A7\u30C3\u30AF Unknown=\u672A\u77E5 -Submit_Style=\u63D0\u51FA\u65B9\u6CD5 -Left_Border_Line=\u5DE6\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 -Brown=\u30D6\u30E9\u30A6\u30F3 -Select_A_Tree_DataSource_To_Build=\u30C4\u30EA\u30FC\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u3092\u9078\u629E\u3057\u3066\u7D44\u307F\u7ACB\u3066\u3066\u304F\u3060\u3055\u3044 -Overlapping=\u91CD\u306D\u578B -DS-Class_TableData=\u30AF\u30E9\u30B9\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 -FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install=\u8B58\u5225\u4E0D\u80FD\u306A\u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u3059\u3002\u30A4\u30F3\u30B9 -DisplayNothingBeforeQuery=\u81EA\u52D5\u691C\u7D22\u7121\u3057 +Submit_Style=\u66F8\u304D\u8FBC\u307F\u65B9\u5F0F +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\u524D\u5E33\u7968\u5185\u5BB9\u3092\u8868\u793A\u3057\u307E\u305B\u3093 Y_Axis=Y\u8EF8 -FormulaD-Most_Recently_Used=\u5E38\u7528\u95A2\u6570 -FormulaD-Input_formula_in_the_text_area_below=\u30C6\u30AD\u30B9\u30C8\u30DC\u30C3\u30AF\u30B9\u306B\u516C\u5F0F\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 -Build-Way=\u69CB\u7BC9\u65B9\u6CD5 +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 +Build-Way=\u69CB\u7BC9\u65B9\u5F0F M_Edit-Undo=\u5143\u306B\u623B\u3059 -Line-Style=\u7DDA\u5F62 +Line-Style=\u7DDA\u306E\u7A2E\u985E Datasource-Other_Attributes=\u305D\u306E\u4ED6\u5C5E\u6027 -M_Server-Global_Parameters=\u30B0\u30ED\u30FC\u30D0\u30EB\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC -Suffix=\u5F8C\u7F00 -Image-Image_Files=\u30A4\u30E1\u30FC\u30B8\u30D5\u30A1\u30A4\u30EB +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 EditRC-Entire_row=\u884C(R) -HF-First_Page=\u30C8\u30C3\u30D7\u30DA\u30FC\u30B8 +HF-First_Page=\u5148\u982D\u30DA\u30FC\u30B8 BackgroundTexture-Granite=\u307F\u304B\u3052\u77F3 DataList=\u30C7\u30FC\u30BF\u30C1\u30A7\u30FC\u30F3 -Recursion=\u5E30\u7D0D -BarStyle=\u30B9\u30C8\u30EA\u30C3\u30D7 -FR-Designer-Min_Width= -Utils-Report-Env_Directory=\u5E33\u7968\u4F5C\u696D\u76EE\u6B21 +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 D-ChartArea=\u30B0\u30E9\u30D5\u30A8\u30EA\u30A2 -Only=\u305F\u3060 +Only=\u3060\u3051 FR-Base_No=\u3044\u3044\u3048 -SpecifiedG-Put_all_others_together=\u4ED6\u306E\u3059\u3079\u3066\u3092\u7D50\u5408\u3059\u308B +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\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 +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 FR-Base_Table=\u8868 -Des-Remove_WorkSheet=\u9078\u629E\u3059\u308B\u5E33\u7968\u306B\u306F\u30C7\u30FC\u30BF\u304C\u3042\u308B\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u304C\u3001\u5B8C\u5168\u306B\u524A\u9664\u3059\u308B\u5834\u5408\u3001 +Des-Remove_WorkSheet=\u9078\u629E\u3057\u305F\u30B7\u30FC\u30C8\u306B\u30C7\u30FC\u30BF\u304C\u5B58\u5728\u3059\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 Rotation=\u56DE\u8EE2 Undefined=\u672A\u5B9A\u7FA9 -Support-Auto_Complete_Shortcut=\u81EA\u52D5\u3067\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC\u3092\u88DC\u3046 -Set_Column_Title_End=\u91CD\u8907\u3059\u308B\u7D42\u4E86\u5217\u3092\u8A2D\u5B9A -Submit_Url=\u30A2\u30C9\u30EC\u30B9\u63D0\u51FA -ReportServerP-Are_you_sure_to_delete_the_selected_printer=\u9078\u629E\u3055\u308C\u305F\u30D7\u30EA\u30F3\u30BF\u30FC\u3092\u524A\u9664\u3057\u3066 -long_data_can_not_show_fully=\u9577\u3044\u30C7\u30FC\u30BF\u304C\u5341\u5206\u306B\u767A\u63EE\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 -Utils-Beyond_the_bottom_side_of_Border=\u4E0B\u9818\u57DF\u3092\u30AA\u30FC\u30D0\u30FC -FR-Import-Export_PDF=PDF\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 -Form-CheckBoxGroup=\u30D5\u30EC\u30FC\u30E0\u30BB\u30C3\u30C8\u3092\u8907\u6570\u9078\u629E +Support-Auto_Complete_Shortcut=\u30AA\u30FC\u30C8\u30B3\u30F3\u30D7\u30EA\u30FC\u30C8\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC +Set_Column_Title_End=\u7E70\u308A\u8FD4\u3057\u7D42\u4E86\u5217\u8A2D\u5B9A +Submit_Url=\u66F8\u304D\u8FBC\u307F\u30A2\u30C9\u30EC\u30B9 +ReportServerP-Are_you_sure_to_delete_the_selected_printer=\u9078\u629E\u3055\u308C\u305F\u30D7\u30EA\u30F3\u30BF\u3092\u524A\u9664\u3057\u307E\u3059\u304B +long_data_can_not_show_fully=\u9577\u3044\u30C7\u30FC\u30BF\u306E\u8868\u793A\u306F\u4E0D\u5B8C\u5168 +Utils-Beyond_the_bottom_side_of_Border=\u4E0B\u306E\u306E\u5883\u754C\u3092\u8D85\u904E\u3057\u3066\u3044\u307E\u3059\u3002\u914D\u7F6E\u3067\u304D\u307E\u305B\u3093\u3002 +FR-Import-Export_PDF=PDF +Form-CheckBoxGroup=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B0\u30EB\u30FC\u30D7 Click-Me=\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u30B5\u30D7\u30E9\u30A4\u30BA\u304C\u3042\u308A\u307E\u3059\u3088\uFF01 -Hyperlink-Self=\u540C\u3058Frame(S) -Tree-Select_Leaf_Only_Tips=\u30C1\u30A7\u30C3\u30AF\u3057\u306A\u3044\u5834\u5408\u3001\u623B\u308A\u5024\u306F\u5F53\u30CE\u30FC\u30C9\u3060\u3051\u3002 -StyleAlignment-Text_Rotation=\u30C6\u30AD\u30B9\u30C8\u65B9\u5411 -Format-Error=\u5165\u529B\u3057\u305F\u5024\u306E\u66F8\u5F0F\u304C\u4E0D\u6B63\u78BA\u3067\u3059 -Server-Stop=\u4E00\u6642\u505C\u6B62 +Hyperlink-Self=\u5143\u306E\u30DA\u30FC\u30B8\u304B\u3089\u30EA\u30F3\u30AF\u3092\u958B\u304F(S) +Tree-Select_Leaf_Only_Tips=(\u3053\u306E\u9805\u76EE\u304C\u30C1\u30A7\u30C3\u30AF\u3057\u306A\u3044\u5834\u5408\u3001\u623B\u308A\u5024\u306F\u30E6\u30FC\u30B6\u30FC\u306B\u3088\u3063\u3066\u30C1\u30A7\u30C3\u30AF\u3055\u308C\u305F\u73FE\u6642\u70B9\u306E\u30CE\u30FC\u30C9\u3060\u3051\u3001\u5B50\u30CE\u30FC\u30C9\u304C\u542B\u307E\u308C\u306A\u3044) +StyleAlignment-Text_Rotation=\u6587\u5B57\u5217\u306E\u65B9\u5411 +Format-Error=\u5165\u529B\u5024\u306E\u66F8\u5F0F\u306F\u4E0D\u6B63\u78BA\u3067\u3059 +Server-Stop=\u505C\u6B62 Preference-Setting_Grid=\u30B0\u30EA\u30C3\u30C9\u8A2D\u5B9A -ReportServerP-Add_Printer=\u30D7\u30EA\u30F3\u30BF\u30FC\u8FFD\u52A0 -FR-Designer-Plugin_Active=\u4F7F\u7528\u958B\u59CB +ReportServerP-Add_Printer=\u30D7\u30EA\u30F3\u30BF\u8FFD\u52A0 +FR-Designer-Plugin_Active=\u6709\u52B9 Utils-File_name=\u30D5\u30A1\u30A4\u30EB\u540D -NOT_NULL_Des=\u3053\u3053\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 -Right_Border_Line=\u53F3\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 +NOT_NULL_Des=\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093 +Right_Border_Line=\u53F3\u7F6B\u7DDA EditRC-Entire_column=\u5217(C) -PageSetup-Top_to_bottom=\u4E0A\u304B\u3089\u4E0B\u3078 -Click-Get_Default_URL=\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30C7\u30D5\u30A9\u30EB\u30C8\u306EURL\u3092\u53D6\u5F97 -StyleAlignment-Wrap_Text=\u81EA\u52D5\u6298\u308A\u8FD4\u3057 -Remove_All_Button=\u5168\u3066\u306E\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30A2 -FR-Designer_Component_Interval=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u9593\u9694 -ReportColumns-Columns_vertically=\u5782\u76F4\u65B9\u5411\u5217 -ReportGUI-Print_Background=\u5370\u5237\u80CC\u666F -Export-CSV=CSV (\u30AB\u30F3\u30DE\u533A\u5207\u308A) +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\u5B9AURL\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\u30B5\u30D6\u30D5\u30A3\u30FC\u30EB\u30C9 +ReportGUI-Print_Background=\u5E33\u7968\u80CC\u666F\u306E\u5370\u5237/\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\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 +FR-Designer-Basic_Restart_Designer=\u30C7\u30B6\u30A4\u30CA\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\u306F\u7A7A\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 User_Information=\u30E6\u30FC\u30B6\u30FC\u60C5\u5831 -Custom_styles_lost=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u30B9\u30BF\u30A4\u30EB\u306F\u5931\u308F\u308C\u307E\u3057\u305F -PageSetup-Margin=\u4F59\u767D -M-New_FormBook=\u8868\u3092\u65B0\u898F\u4F5C\u6210 -Widget-TreeNode=\u30C4\u30EA\u30FC\u30CE\u30FC\u30C9\u30DC\u30BF\u30F3 +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 +Widget-TreeNode=\u30C4\u30FC\u30CE\u30FC\u30C9\u30DC\u30BF\u30F3 Form-Url=\u30A2\u30C9\u30EC\u30B9 -Utils-Beyond_the_left_side_of_Border=\u5DE6\u30DC\u30FC\u30C0\u30FC\u8D85\u3048 -Float_Element_Name=\u30D5\u30ED\u30FC\u3068\u8981\u7D20\u540D\u79F0 -Purple=\u8584\u7D2B +Utils-Beyond_the_left_side_of_Border=\u5DE6\u306E\u5883\u754C\u3092\u8D85\u904E\u3057\u3066\u3044\u307E\u3059\u3002\u914D\u7F6E\u3067\u304D\u307E\u305B\u3093\u3002 +Float_Element_Name=\u30D5\u30ED\u30FC\u30C8\u8981\u7D20\u540D +Purple=\u7D2B DashBoard-Potence=\u6A29\u9650 -M-Close_Template=\u5E33\u7968\u3092\u9589\u3058\u308B(C) -paper=\u7D19 -Not_Exsit=\u5E33\u7968\u306B\u5B58\u5728\u3057\u307E\u305B\u3093 +M-Close_Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30AA\u30D5(C) +paper=\u7528\u7D19 +Not_Exsit=\u5E33\u7968\u306B\u5B58\u5728\u3057\u306A\u3044 Utils-Insert_Row=\u884C\u633F\u5165 Utils-Delete_Row=\u884C\u524A\u9664 -not_support_authority_edit=\u8BE5\u5143\u7D20\u4E0D\u652F\u6301\u6743\u9650\u63A7\u5236 -Formula_Tips=\u5F0F\u306F "\ +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" FR-Action_Copy=\u30B3\u30D4\u30FC -Compile_Success=\u7DE8\u96C6\u7FFB\u8A33\u306B\u6210\u529F\u3057\u307E\u3057\u305F +Compile_Success=\u30B3\u30F3\u30D1\u30A4\u30EB\u306B\u6210\u529F\u3057\u305F BackgroundTexture-RecycledPaper=\u518D\u751F\u7D19 -StyleAlignment-Single_Line=\u4E00\u884C\u3067\u8868\u793A -Utils-Move_Down=\u4E0B\u3078\u79FB\u52D5 -Please_Set_Repeat_First=\u307E\u305A\u91CD\u8907\u3059\u308B\u6A19\u984C\u884C\u3068\u5217\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044 -Writer-ShortCuts_Setting=\u5831\u544A\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC\u8A2D\u5B9A +StyleAlignment-Single_Line=1\u884C\u8868\u793A +Utils-Move_Down=\u4E0B\u3078 +Please_Set_Repeat_First=\u6700\u521D\u306B\u7E70\u308A\u8FD4\u3057\u30BF\u30A4\u30C8\u30EB\u306E\u884C\u3068\u5217\u3092\u8A2D\u5B9A\u3057\u3066\u4E0B\u3055\u3044 +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\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 +Confirm-Delete-File=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u307E\u3059\u304B? +PageSetup-Header=\u30D8\u30C3\u30C0\u30FC JavaScrit-Asynch=\u975E\u540C\u671F ReportServerP-Toolbar=\u30C4\u30FC\u30EB\u30D0\u30FC Utils-Top_to_Bottom=\u7E26\u65B9\u5411 Platform=\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0 -FR-Designer-FRFont_Underline=\u30A2\u30F3\u30C0\u30FC\u30E9\u30A4\u30F3 -Show_in_Containing_Folder=\u6240\u5728\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F +FR-Designer-FRFont_Underline=\u4E0B\u7DDA +Show_in_Containing_Folder=\u30D5\u30A1\u30A4\u30EB\u306E\u5834\u6240\u3092\u958B\u304F BackgroundTexture-WaterDroplets=\u3057\u305A\u304F -FR-Designer-Dependence_Install_Failed=install failed +FR-Designer-Dependence_Install_Failed=\u4F9D\u5B58\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u5931\u6557 Layout-Padding=\u30D1\u30C7\u30A3\u30F3\u30B0 -roles_already_authority_edited=\u69CB\u6210\u3055\u308C\u305F\u5F79\u5272 -WidgetDisplyPosition=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u8868\u793A\u4F4D\u7F6E -SpecifiedG-Force_Group=\u5F37\u5236\u7684\u306B\u30B0\u30EB\u30FC\u30D4\u30F3\u30B0\u3059\u308B -FormulaD-Formula_Definition=\u516C\u5F0F\u5B9A\u7FA9 +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 I-xyScatterStyle_Marker=\u6563\u5E03\u56F3 Hour=\u6642\u9593 ColorMatch=\u914D\u8272 -M_Edit-Order=\u9806\u5E8F(O) -BackgroundTexture-Bouquet=\u82B1\u675F -Verify-Error_Information=\u30A8\u30E9\u30FC\u60C5\u5831 -LayerData=\u5E95\u5C42\u6570\u636E -Rename=\u540D\u79F0\u306E\u5909\u66F4 -Widget-Load_By_Async=\u975E\u540C\u671F\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9 +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\u30FC\u306E\u30C7\u30FC\u30BF +Rename=\u540D\u524D\u3092\u5909\u66F4 +Widget-Load_By_Async=\u975E\u540C\u671F\u30ED\u30FC\u30C9 Shape=\u56F3\u5F62 -BindColumn-This_Condition_has_been_existed=\u5F53\u8A72\u6761\u4EF6\u306F\u5B58\u5728\u3057\u3066\u3044\u307E\u3059 -NS-exception_readError=\u30A8\u30E9\u30FC\u30B3\u30FC\u30C9\:1305 \u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u89E3\u6790\u306B\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3057\u305F -Set_Column_Title_Start=\u91CD\u8907\u3059\u308B\u6A19\u984C\u5217\u3092\u8A2D\u5B9A -Fri=\u91D1 -M_Report-Report_Parameter=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC -REPORTLETS=\u8907\u6570\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u30EB\u30FC\u30C8\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u306B\u30A2\u30AF\u30BB\u30B9 -WLayout-Card-ToolTip=\u30AB\u30FC\u30C9\u306E\u30EC\u30A4\u30A2\u30A6\u30C8\u306F\u3001\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u5185\u306E\u4ED6\u306E\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u6570 +BindColumn-This_Condition_has_been_existed=\u3053\u306E\u6761\u4EF6\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u308B +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 +Set_Column_Title_Start=\u7E70\u308A\u8FD4\u3057\u30BF\u30A4\u30C8\u30EB\u5217\u8A2D\u5B9A +Fri=\u91D1\u66DC\u65E5 +M_Report-Report_Parameter=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF +REPORTLETS=\u8907\u6570\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u30D1\u30B9\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B\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=\u5C11\u3005\u304A\u5F85\u3061\u304F\u3060\u3055\u3044 -FR-Designer-Form-ToolBar_Widget=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB +Please-Wait=\u304A\u5F85\u3061\u4E0B\u3055\u3044 +FR-Designer-Form-ToolBar_Widget=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 Widget-Array=\u914D\u5217 -FieldBinding=\u30D0\u30F3\u30C7\u30A3\u30F3\u30B0\u30D5\u30A3\u30FC\u30EB\u30C9 -Top_Bottom_Border_Line=\u4E0A\u4E0B\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 +FieldBinding=\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30D0\u30A4\u30F3\u30C9 +Top_Bottom_Border_Line=\u4E0A\u7F6B\u7DDA + \u4E0B\u7F6B\u7DDA M-Others=\u305D\u306E\u4ED6... -Hyperlink-Link_Opened_in=\u30EA\u30F3\u30AF\u306E\u958B\u3051\u65B9 -FR-Utils_WorkBook=\u4F5C\u696D\u7C3F -M_Insert-Float=\u30D5\u30ED\u30FC\u30C8\u8981\u7D20 -Out_Thick_Border_Line=\u30DC\u30C3\u30AF\u30B9\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 +Hyperlink-Link_Opened_in=\u30EA\u30F3\u30AF\u306E\u5B9F\u884C\u65B9\u5F0F +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 FR-App-File_Lookup_range=\u691C\u7D22\u7BC4\u56F2 -ReportColumns-Columns_to=\u306E\u3088\u3046\u306B\u6539\u5217\u3059\u308B +ReportColumns-Columns_to=\u30B5\u30D6\u30D5\u30A3\u30FC\u30EB\u30C9\u7D50\u679C Transparent=\u900F\u660E Parameter-Integer=\u6574\u6570\u578B PDF-Print_Setting=PDF\u5370\u5237\u8A2D\u5B9A -Server-Embedded_Server=\u5185\u8535\u30B5\u30FC\u30D0\u30FC -M_Server-Server_Config_Manager=\u30B5\u30FC\u30D0\u30FC\u914D\u7F6E(S) -FR-Utils-Would_you_like_to_cover_the_current_file=\u30AB\u30EC\u30F3\u30C8\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B\uFF1F +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 CellWrite-InsertRow_COPY=\u5143\u306E\u5024 -Edit_String_To_Formula=\u30AD\u30E3\u30E9\u30AF\u30BF\u30FC\u6587\u5B57\u5217\u3092\u7DE8\u96C6\u3057\u3066\u516C\u5F0F\u3068\u3059\u308B\u304B\u5426\u304B +Edit_String_To_Formula=\u6587\u5B57\u5217\u3092\u7DE8\u96C6\u3057\u3066\u6570\u5F0F\u3068\u3059\u308B\u304B\u5426\u304B Edit-Column_Count=\u5217\u6570 Father=\u89AA -ReportColumns-Columns_after=\u8D85\u3048\u308B -FR-Designer_Undo=\u3084\u308A\u76F4\u3059 -DBCP_MIN_IDLE=\u6700\u5C0F\u30A2\u30A4\u30C9\u30EB\u63A5\u7D9A\u6570 +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 M-Data_Analysis_Settings=\u30C7\u30FC\u30BF\u5206\u6790\u8A2D\u5B9A -M-Form_Preview=\u8868\u30D7\u30EC\u30D3\u30E5\u30FC +M-Form_Preview=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30D7\u30EC\u30D3\u30E5\u30FC Form-Basic_Properties=\u57FA\u672C\u5C5E\u6027 -quote=\u5F15\u7528 +quote=\u53C2\u7167 Thu=\u6728 -Collect-Collect_User_Information=\u30E6\u30FC\u30B6\u30FC\u60C5\u5831\u3092\u53CE\u96C6\u3059\u308B -Layer-Build=\u30D5\u30A1\u30BB\u30C3\u30C8\u7D44\u307F\u7ACB\u3066 -FR-Designer-FRFont_Line_Style=\u7DDA\u5F62 -BackgroundTexture-BrownMarble=\u8336\u8272\u306E\u5927\u7406\u77F3 +Collect-Collect_User_Information=\u30E6\u30FC\u30B6\u30FC\u60C5\u5831\u3092\u53CE\u96C6 +Layer-Build=\u30EC\u30A4\u30E4\u30FC\u5225\u69CB\u7BC9 +FR-Designer-FRFont_Line_Style=\u7DDA\u306E\u7A2E\u985E +BackgroundTexture-BrownMarble=\u5927\u7406\u77F3(\u8336) PageSetup-Page_Setup=\u30DA\u30FC\u30B8\u8A2D\u5B9A -Form-Semicolon=\u5206\u53F7 -ECP_re_input=\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u9593\u9055\u3063\u3066\u3044\u307E\u3059\u3002\u518D\u5EA6\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 -ExpandD-Sort_After_Expand=\u62E1\u5927\u5F8C -FR-Designer-Dependence_Install_Succeed=install succeed -Env-Configure_Workspace=\u4F5C\u696D\u76EE\u6B21\u8A2D\u5B9A +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\u308A\u8A2D\u5B9A feedback_info=\u8CB4\u91CD\u306A\u610F\u898B\u3042\u308A\u304C\u3068\u3046\u3054\u3056\u3044\u307E\u3059\u3002\u79C1\u9054\u306F\u3067\u304D\u308B\u3060\u3051\u65E9\u304F\u3042\u306A\u305F\u3068\u9023\u7D61\u3057\u307E\u3059\u3002 -Ratio=\u6BD4\u7387 -DBCP_TEST_ON_BORROW=\u63A5\u7D9A\u524D\u691C\u67FB\u3092\u53D6\u5F97 -FR-Designer_layerIndex= -WEB-Write_Setting=\u5831\u544A\u30DA\u30FC\u30B8\u8A2D\u5B9A -M-New_WorkBook=\u30D6\u30C3\u30AF\u3092\u65B0\u898F\u4F5C\u6210 -FR-Designer-Plugin_Has_Been_Actived=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u3059\u3067\u306B\u8D77\u52D5\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC -Datasource-Maximum_Number_of_Preview_Rows=\u30D7\u30EC\u30D3\u30E5\u30FC\u884C\u6570\u6700\u5927\u5024 -ExpandD-Cell_Expand_Attributes=\u62E1\u5F35\u5C5E\u6027 -Select_the_repeated_row_and_column=\u91CD\u8907\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u884C\u5217\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 -FormulaD-Date_&_Time=\u65E5\u4ED8\u3068\u6642\u523B\u95A2\u6570 -Max-Mem-Row-Count=\u30AD\u30E3\u30C3\u30B7\u30E5\u306E\u78C1\u6C17\u30C7\u30A3\u30B9\u30AF\u8A18\u9332\u6570\u306F\u3000\u4EE5\u4E0A +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\u30FC\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\u3059\u3067\u306B\u8D77\u52D5\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC\u30D0\u30FC\u3092\u518D\u8D77\u52D5\u3057\u3066\u767A\u52B9\u3055\u305B\u3066\u304F\u3060\u3055\u3044\u3002\u30B5\u30FC\u30D0\u30FC\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=\u7E70\u308A\u8FD4\u3057\u3057\u305F\u3044\u884C\u5217\u3092\u9078\u629E +FormulaD-Date_&_Time=\u65E5\u4ED8\u3068\u6642\u9593\u95A2\u6570 +Max-Mem-Row-Count=\u30C7\u30A3\u30B9\u30AF\u30AD\u30E3\u30C3\u30B7\u30E5 \u6761\u4EF6 : \u8A18\u9332\u6570> BorderLayout-South=\u5357 Export-Text=\u30C6\u30AD\u30B9\u30C8\u30D5\u30A1\u30A4\u30EB(\u30BF\u30D6\u533A\u5207\u308A) JavaScript-Synch=\u540C\u671F FR-App-All_Warning=\u8B66\u544A M_Edit-Send_Backward=\u80CC\u9762\u3078\u79FB\u52D5(B) -Form-Layout=\u914D\u7F6E -FR-Designer-Plugin_Shop_Need_Update=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306F\u3001\u66F4\u65B0\u3059\u308B\u304B\u3069\u3046\u304B\u3001\u65B0\u3057\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u4FDD\u5B58\u3057\u307E\u3059\u304B\uFF1F +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? FR-Designer_WorkBook=\u30EF\u30FC\u30AF\u30D6\u30C3\u30AF -UpBarBorderStyleAndColor=\u30B9\u30B1\u30FC\u30EB\u30A2\u30C3\u30D7\u30AB\u30E9\u30E0\u30B9\u30BF\u30A4\u30EB -GridLayout=\u683C\u5B50\u914D\u7F6E +UpBarBorderStyleAndColor=\u4E0A\u6607\u30B9\u30BF\u30A4\u30EB +GridLayout=\u30B0\u30EA\u30C3\u30C9\u30EC\u30A4\u30A2\u30A6\u30C8 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 +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 Y-Coordinate=\u7E26\u5EA7\u6A19 -FR-Base_SimSun_Not_Found=\u5B8B\u4F53\u3092\u898B\u3064\u3051\u308B\u3053\u3068\u304C\u3067\u304D\u306A\u3044\u3001\u73FE\u5728\u306E\u30B7\u30B9\u30C6\u30E0\u306E\u4E0B\u3067\u30C7\u30D5\u30A9\u30EB\u30C8\u8A00\u8A9E\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u8BBE\u8BA1\u5668\u30D5\u30A9\u30F3\u30C8\u3068\u3057\u3066 -FR-Designer_Seriously=\u53B3\u91CD +FR-Base_SimSun_Not_Found=\u5B8B\u4F53\u3092\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u5F53\u8A72\u30B7\u30B9\u30C6\u30E0\u306E\u65E2\u5B9A\u8A00\u8A9E\u3092\u30C7\u30B6\u30A4\u30CA\u30FC +FR-Designer_Seriously=\u91CD\u5927 Upload=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9 Form-Widget_Property_Table=\u5C5E\u6027\u8868 -Des-Merger_Cell=\u9078\u629E\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u306F\u8907\u6570\u306E\u30C7\u30FC\u30BF\u304C\u542B\u307F\u3001\u30BB\u30EB\u3092\u7D50\u5408\u3057\u305F\u3089\u3001\u5DE6\u4E0A\u5074\u306E\u30C7 -FR-Designer-Basic_Copy_Build_NO=\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u7D44\u307F\u7ACB\u3066\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3092\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9 -FR-Base_TurnOn=\u8D77\u52D5 +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 FR-Base_Rows=\u884C -Form-Remove_Repeat=\u91CD\u8907\u3059\u308B\u9805\u76EE\u3092\u524A\u9664 +Form-Remove_Repeat=\u91CD\u8907\u9805\u76EE\u3092\u524A\u9664 Yes=\u306F\u3044 Datasource-JNDI_Name=JNDI\u540D Utils-Delete_Column=\u5217\u524A\u9664 HF-Delete_it=\u524A\u9664 -JavaScript-Dynamic_Parameters=\u52D5\u614B\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +JavaScript-Dynamic_Parameters=\u52D5\u7684\u30D1\u30E9\u30E1\u30FC\u30BF px=\u753B\u7D20 FR-App-Report_Template=\u5E33\u7968\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 -Verify-Message=\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8 -Plan=\u30D7\u30E9\u30F3 -Vertical-Split_Layout=\u5782\u76F4\u5206\u5272\u914D\u7F6E -ParameterD-Delay_Playing=\u5831\u544A\u8868\u306E\u5C55\u793A\u3092\u5EF6\u671F\u3057\u307E\u3059 -TurnOff=\u9589\u3058\u308B -FR-Please_Rename=\u518D\u5EA6\u547D\u540D\u3057\u3066\u304F\u3060\u3055\u3044 -Select_Data_Set=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u3092\u9078\u629E +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\u4E0B\u3055\u3044 +Select_Data_Set=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u9078\u629E Name_has_Colon=\u540D\u524D\: -ReportColumns-Columns_horizontally=\u6C34\u5E73\u65B9\u5411\u5217 +ReportColumns-Columns_horizontally=\u884C\u306E\u30B5\u30D6\u30D5\u30A3\u30FC\u30EB\u30C9 FR-Base_Yes=\u306F\u3044 -ReportColumns-Repeat_Row=\u884C\u756A\u53F7\u306E\u7E70\u308A\u8FD4\u3057 +ReportColumns-Repeat_Row=\u884C\u306E\u9806\u5E8F\u3092\u30B3\u30D4\u30FC Print_Setting=\u5370\u5237\u8A2D\u5B9A -Registration-User_Name=\u30E6\u30FC\u30B6\u540D -Datasource-User_Defined=\u30E6\u30FC\u30B6\u5B9A\u7FA9 -FR-Designer-Plugin_DownLoadMessage= +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)? Delay=\u9045\u5EF6 -FR-Designer-All_MSBold=\u5FAE\u8EDF\u96C5\u9ED2 -Utils-Now_create_connection=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u3078\u306E\u63A5\u7D9A -FR-Template-Path_chooseRightPath=\u6B63\u78BA\u306A\u30EB\u30FC\u30C8\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 -FR-Remote_Re_Connect_to_Server=\u30B5\u30FC\u30D0\u30FC\u306F\u9589\u3058\u3089\u308C\u307E\u3057\u305F\u3002\u518D\u5EA6\u30B5\u30FC\u30D0\u30FC\u306B\u63A5\u7D9A\u3057\u307E\u3059\u304B? -Nation=\u56FD\u5BB6 -DBCP_MAX_WAIT=\u6700\u5927\u5F85\u3061\u6642\u9593 -FR-App-Template_Form=\u8868 +FR-Designer-All_MSBold=\u30DE\u30A4\u30AF\u30ED\u30BD\u30D5\u30C8\u30E4\u30D8\u30A4 +Utils-Now_create_connection=\u30C7\u30FC\u30BF\u63A5\u7D9A\u69CB\u7BC9\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\u306F\u30AA\u30D5\u3055\u308C\u305F\u304C\u3001\u30B5\u30FC\u30D0\u306B\u518D\u63A5\u7D9A\u3057\u307E\u3059\u304B\uFF1F +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 Address=\u30A2\u30C9\u30EC\u30B9 Sub_Report=\u5B50\u5E33\u7968 -FR-Import-Export_Word=Word\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 -FR-Server_Version_Tip=\u73FE\u5728\u306E\u63A5\u7D9A\u3057\u3066\u3044\u308B\u30B5\u30FC\u30D0\u30FC\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u4F7F\u7528\u3057\u3066\u3044\u308B\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u30D0 -StyleAlignment-Left_To_Right=\u5DE6\u304B\u3089\u53F3\u3078 -Verify-ToolTips=\u516C\u5F0F\u304C\u63D0\u793A\u6821\u9A8C\u3082\u6E80\u8DB3\u3057\u3066\u3044\u306A\u3044\u8BEF\u308A\u304C\u60C5\u5831\u3092\u624B\u306B\u5165\u308C\u305F -BackgroundTexture-Stationery=\u4FBF\u7B8B -FR-Designer_RWA-Help=\u8A2D\u5B9A\u3092\u672A\u4FEE\u6B63\u3067\u66F4\u65B0\u305B\u305A\u3001\u30D7\u30EC\u30D3\u30E5\u30FC\u3057\u305F\u5E33\u7968\u3092\u5831\u544A\u3057\u3001\u30BB\u30EB\u306B\u8A18\u9332\u3055\u308C +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\u304B\u3082\u3057\u308C\u306A\u3044\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 +StyleAlignment-Left_To_Right=\u5DE6\u304B\u3089\u53F3 +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\u6539\u30DA\u30FC\u30B8\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\u306A\u3044\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\u308B\u3002 M_Insert-Barcode=\u30D0\u30FC\u30B3\u30FC\u30C9 Bounds=\u30DC\u30FC\u30C0\u30FC -FR-Designer-Undo_All_Authority_Operations=\u524D\u56DE\u306E\u6A29\u9650\u7DE8\u96C6\u6642\u306E\u5168\u3066\u306E\u30AA\u30DA\u30EC\u30FC\u30B7\u30E7\u30F3\u3092\u64A4\u56DE\u3059 -Datasource-Context=\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8 -CellWrite-Page_After_Column=\u5217\u5F8C\u306E\u6539\u9801 +FR-Designer-Undo_All_Authority_Operations=\u524D\u56DE\u306E\u7DE8\u96C6\u6A29\u9650\u306E\u3059\u3079\u3066\u306E\u64CD\u4F5C\u3092\u53D6\u308A\u6D88\u3059 +Datasource-Context=\u6587\u8108 +CellWrite-Page_After_Column=\u5217\u5F8C FR-Designer_Cancel=\u30AD\u30E3\u30F3\u30BB\u30EB -Button-Group-Display-Columns=\u5217\u306E\u6570\u3092\u8868\u793A\u3059\u308B -Widget-Height=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u9AD8\u3055 +Button-Group-Display-Columns=\u5217\u6570\u3092\u8868\u793A +Widget-Height=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u9AD8\u3055 Examples=\u4F8B -Formula_Dictionary_Display_Example=\u5B9F\u969B\u5024\u7BC4\u56F2\u306F\ -StyleAlignment-Horizontal=\u6C34\u5E73\u63C3\u3048 +Formula_Dictionary_Display_Example=\u5B9F\u969B\u306E\u5024\u306E\u7BC4\u56F2\u306F Formula_Dictionary_Display_Examples\= \u5B9F\u969B\u306E\u5024\u306E\u7BC4\u56F2\u306F Formula_Dictionary_Display_Examples_Html\=\u5B9F\u969B\u306E\u5024\u306E\u7BC4\u56F2\u306F Formula_Editor\=\u6570\u5F0F\u30A8\u30C7\u30A3\u30BF +StyleAlignment-Horizontal=\u6A2A\u4F4D\u7F6E HyperLink_Must_Alone_Reset=\u8907\u6570\u306E\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF -ExpandD-Expand_Direction=\u62E1\u5F35\u65B9\u5411 -Include=\u542B\u3080 -Export-Excel-Page=\u30DA\u30FC\u30B8 +ExpandD-Expand_Direction=\u5C55\u958B\u65B9\u5411 +Include=\u304C\u542B\u307E\u308C\u308B +Export-Excel-Page=\u6539\u30DA\u30FC\u30B8\u51FA\u529B FR-Designer-Min_Height=\u6700\u5C0F\u9AD8\u3055 Filed=\u30A8\u30EA\u30A2 -ReportServerP-Import_Css=Css\u5F15\u7528 -M_Insert-Formula=\u516C\u5F0F -FR-Designer_Auto-Build=\u81EA\u52D5\u7684\u306B\u30D3\u30EB\u30C9 +ReportServerP-Import_Css=Css\u53C2\u7167 +M_Insert-Formula=\u6570\u5F0F +FR-Designer_Auto-Build=\u81EA\u52D5\u69CB\u7BC9 FRFont-Foreground=\u8272 Bubble-Width=\u30D0\u30D6\u30EB\u306E\u5E45 -Form-Hierarchy_Tree=\u69CB\u9020\u30C4\u30EA\u30FC -WLayout-Border-LayoutContainer=\u4E2D\u90E8\u3068\u5317\u90E82\u30DC\u30FC\u30C0\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u3068\u5317\u90E8\u30D6\u30ED\u30C3\u30AF\u3092\u542B\u3081 +Form-Hierarchy_Tree=\u30A2\u30FC\u30AD\u30C6\u30AF\u30C1\u30E3\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 Preference-JDK_Home=JDK\u30D1\u30B9 Utils-Insert_Column=\u5217\u633F\u5165 -FR-Designer_ToolBar_Top=\u30D8\u30C3\u30C0\u30FC\u30C4\u30FC\u30EB\u30D0\u30FC +FR-Designer_ToolBar_Top=\u4E0A\u90E8\u306E\u30C4\u30FC\u30EB\u30D0\u30FC BindColumn-The_Conditions_of_FatherCell=\u89AA\u30BB\u30EB\u6761\u4EF6 Links=\u30EA\u30F3\u30AF M_Report-Report_Header=\u5E33\u7968\u30D8\u30C3\u30C0\u30FC -Sub_Report_Description=\u5B50\u5E33\u7968\u306F\u89AA\u8868\u904B\u884C\u74B0\u5883\u4E0B\u306B\u5B58\u5728\u3057\u306A\u3051\u308C\u3070\u306A\u3089\u305A\u3001\u4E21\u8005\u306F\u540C\u4E00\u30C6\u30F3\u30D7\u30EC -T_Insert-Float=\u30D5\u30ED\u30FC\u8981\u7D20\u3092\u633F\u5165 -BackgroundTexture-FishFossil=\u9B5A\u5316\u77F3 -My_Computer=\u30DE\u30A4 \u30B3\u30F3\u30D4\u30E5\u30FC\u30BF -FORMLET=\u7570\u306A\u308B\u8868\u306E\u30EB\u30FC\u30C8\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u306B\u30A2\u30AF\u30BB\u30B9 -HF-Undefined=\u672A\u5B9A\u7FA9 -Widget-User_Defined_Widget_Config=\u30D7\u30EC\u5B9A\u7FA9\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB -Report-Write_Attributes_Group_Warning=\u8A2D\u5B9A\u3092\u30AD\u30FC?\u30C1\u30FC\u30E0\u306E\u5404\u30B3\u30E9\u30E0\u306E\u4E2D\u306E\u30AD\u30FC\u4E2A\u6570\u306F\u540C\u3058\u3067 -Form-Single_quote=\u30B7\u30F3\u30B0\u30EB\u30AF\u30A9\u30FC\u30C6\u30FC\u30B7\u30E7\u30F3\u30DE\u30FC\u30AF -Compile_Success_And_Then_Save=\u7DE8\u96C6\u7FFB\u8A33\u6210\u529F\u5F8C\u306B\u4FDD\u5B58\u3067\u304D\u307E\u3059 +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 +HF-Undefined=\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u306A\u3044 +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 FR-Designer_Layout-Padding=\u30D1\u30C7\u30A3\u30F3\u30B0 -Layout_Container=\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA +Layout_Container=\u30B3\u30F3\u30C6\u30CA\u30EC\u30A4\u30A2\u30A6\u30C8 Admin=\u7BA1\u7406\u8005 -Form-EC_toolbar=\u5E33\u7968\u30E2\u30B8\u30E5\u30FC\u30EB\u30C4\u30FC\u30EB\u30D0\u30FC +Form-EC_toolbar=\u5E33\u7968\u30D6\u30ED\u30C3\u30AF\u30C4\u30FC\u30EB\u30D0\u30FC FR-App-All_Auto=\u81EA\u52D5 -Utils-Available_Columns=\u9078\u629E\u53EF\u80FD\u306E\u5217 -Form-Change_Widget_Name_Discription=\u65B0\u3057\u3044\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 +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 FR-Module_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u30E2\u30B8\u30E5\u30FC\u30EB -FR-Import-Export_Text=\u6587\u66F8\u30D5\u30A1\u30A4\u30EB(\u30BF\u30D6\u6587\u5B57\u5206\u9694) +FR-Import-Export_Text=\u30C6\u30AD\u30B9\u30C8\u30D5\u30A1\u30A4\u30EB(\u30BF\u30D6\u533A\u5207\u308A) Values-Editor=\u5024\u30A8\u30C7\u30A3\u30BF FR-Designer_Yes=\u306F\u3044 -ExpandD-Expandable=\u62E1\u5F35\u6027 -Tree-Return_Full_Path=\u7D50\u679C\u306F\u5B8C\u5168\u306A\u30D1\u30B9\u3092\u623B\u308A\u307E\u3059 +ExpandD-Expandable=\u5C55\u958B +Tree-Return_Full_Path=\u7D50\u679C\u306F\u5B8C\u5168\u306A\u30EC\u30D9\u30EB\u30D1\u30B9\u3092\u623B\u308B FRFont-bolditalic=\u592A\u5B57\u659C\u4F53 FR-Base_StyleFormat_Sample=\u4F8B -Area_Value=\u5730\u57DF\u5024 +Area_Value=\u30A8\u30EA\u30A2\u5024 FR-Designer-Plugin_Disable=\u4F7F\u7528\u7981\u6B62 -Utils-Are_you_sure_to_remove_the_selected_item=\u9078\u629E\u3055\u308C\u305F\u9805\u76EE\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B -Face_Write=\u5831\u544A -Poly-Report_Block=\u5E33\u7968\u30BF\u30A4\u30D7\u805A\u5408\u30E2\u30B8\u30E5\u30FC\u30EB -Vgap=\u5782\u76F4\u9593\u9699 +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 +Vgap=\u5782\u76F4\u9699\u9593 FR-Designer_HyperLink_Must_Alone_Reset=\u8907\u6570\u306E\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF DS-Class=\u30D7\u30ED\u30B0\u30E9\u30E0 -FR-Hyperlink_Please_Select_Reportlet=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u5E33\u7968\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Hyperlink_Please_Select_Reportlet=\u30CD\u30C3\u30C8\u5E33\u7968\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 FS_Report_Type=\u30BF\u30A4\u30D7 HF-New_Line=\u6539\u884C\u30B3\u30FC\u30C9 Privilege=\u6A29\u9650 -Export-Offline-Html=\u30AA\u30D5\u30E9\u30A4\u30F3html\u5E33\u7968\u51FA\u529B -FR-Designer_open-new-form-tip=711\u4EE5\u4E0B\u306E\u751F\u7523\u306E\u305F\u3081\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u73FE\u5728\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u3001\u4E92 +Export-Offline-Html=\u30AA\u30D5\u30E9\u30A4\u30F3html\u5E33\u7968\u3092\u51FA\u529B +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 FR-Designer-Widget-Style_Frame_Style=\u30D5\u30EC\u30FC\u30E0\u30B9\u30BF\u30A4\u30EB -Present-No_Present=\u30D5\u30A9\u30EB\u30E0\u8A2D\u5B9A\u3092\u30AD\u30E3\u30F3\u30BB\u30EB +Present-No_Present=\u5F62\u614B\u8A2D\u5B9A\u306A\u3057 FR-Designer_Form-Password=\u30D1\u30B9\u30EF\u30FC\u30C9 X_Axis=X\u8EF8 FR-mobile_html_analysis=HTML5\u89E3\u6790 M_Edit-Bring_to_Front=\u6700\u524D\u9762\u3078\u79FB\u52D5(T) -Null_Value_Show=\u7A7A\u5024\u8868\u793A -Datasource-JNDI_DES=\u6CE8\: INITIAL_CONTEXT_FACTORY\u304C\u542B\u3080\u30AF\u30E9\u30B9\u306E.jar\u30D5\u30A1\u30A4\u30EB\u3092lib\u306B\u30B3\u30D4\u30FC +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 PrintP-Print_Preview=\u5370\u5237\u30D7\u30EC\u30D3\u30E5\u30FC Form-Hierarchy_Tree_Last=\u524D -Has_been_gone=\ \u5931\u308F\u308C\u307E\u3057\u305F\u3002\u5F53\u8A72\u30B9\u30BF\u30A4\u30EB\u3092\u5897\u52A0\u3057\u307E\u3059\u304B\uFF1F -RWA-Add_Field=\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u8FFD\u52A0 -newNode=\u30CE\u30FC\u30C9\u306E\u8FFD\u52A0 -PageSetup-Shrink_to_fit_content=\u30BB\u30EB\u5185\u5BB9\u306B\u3082\u3068\u3065\u3044\u3066\u81EA\u52D5\u8C03\u6574 +Has_been_gone=\u5931\u308F\u308C\u3066\u3044\u307E\u3059\u3002\u3053\u306E\u30B9\u30BF\u30A4\u30EB\u3092\u8FFD\u52A0\u3057\u307E\u3059\u304B\uFF1F +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 FR-Designer_Date=\u65E5\u4ED8 Column_Multiple=\u30C7\u30FC\u30BF\u500D\u6570 FR-App-All_File=\u30D5\u30A1\u30A4\u30EB Sort-Descending=\u964D\u9806 FR-Designer-Plugin_Delete=\u524A\u9664 -Above=\u4E0A\u8A18\u306E +Above=\u4EE5\u4E0A\u306E\u30D0\u30FC\u30B8\u30E7\u30F3 Utils-The-Chart=\u30B0\u30E9\u30D5 FRFont-plain=\u6A19\u6E96 Calculating=\u51E6\u7406\u4E2D -Form-Object=\u30D5\u30A9\u30FC\u30E0\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 -May=\u4E94\u6708 -FR-Designer_Plugin_Normal_Update=\u66F4\u65B0 -FR-Hyperlink_Reportlet=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u5E33\u7968 +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 M_Edit-Copy=\u30B3\u30D4\u30FC(C) -Sub_Report_Message2=\u89AA\u5E33\u7968\u306F\u73FE\u5728\u306E\u904B\u884C\u74B0\u5883\u4E0B\u306B\u5B58\u5728\u3057\u307E\u305B\u3093 +Sub_Report_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\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 +Sub_Report_Message1=\u6B63\u3057\u3044\u30D1\u30B9\u3092\u9078\u629E\u3057\u3066\u4E0B\u3055\u3044 +Form-Allow_CustomData=\u30AB\u30B9\u30BF\u30E0 +FR-Server_Version_Tip_MoreInfo=\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u4E0D\u4E00\u81F4\u306B\u3088\u308B\u554F\u984C\u30EA\u30B9\u30AF\u3092\u907F\u3051\u308B\u305F\u3081\u306B\u3001\u3042\u306A\u305F\u306E\u30C1\u30FC\u30E0\u306B\u3088\u3063\u3066\u4F7F\u7528\u3055\u308C\u308B\u5F53\u793E\u306EFineReport\u88FD\u54C1\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u53CA\u3073\u8A2D\u5B9A\u3055\u308C\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u304C\u30C1\u30A7\u30C3\u30AF\u3059\u308B\u3053\u3068\u3092\u304A\u52E7\u3081\u3059\u308B\u3002 n\u3088\u308A\u9AD8\u3044\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u958B\u3044\u3066\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u4F5C\u6210\u3059\u308C\u3070\u3001\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u305F\u308A\u3001\u5143\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5C5E\u6027\u3092\u306A\u304F\u3057\u305F\u308A\u3059\u308B\u6050\u308C\u3082\u3042\u308B\u3002\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u4F5C\u6210\u7528\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u3001\u6700\u7D42\u914D\u7F6E\u7528\u306E\u30B5\u30FC\u30D0\u30D0\u30FC\u30B8\u30E7\u30F3\u3088\u308A\u9AD8\u3044\u5834\u5408\u3001\u30B5\u30FC\u30D0\u306F\u3042\u306A\u305F\u306B\u3088\u3063\u3066\u4F5C\u6210\u3055\u308C\u305F\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u6B63\u5E38\u306B\u8AAD\u307F\u8FBC\u3080\u3053\u3068\u304C\u3067\u304D\u306A\u3044\u304B\u3082\u3057\u308C\u306A\u3044\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\u3059\u308B\u3053\u3068\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\u914D\u7F6E\u5148\u3067\u3042\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3088\u308A\u9AD8\u3044\u5834\u5408\u3001\u30B5\u30FC\u30D0\u30FC\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 Get_Lock=\u30ED\u30C3\u30AF HF-Edit_Footer=\u30D5\u30C3\u30BF\u30FC\u7DE8\u96C6 Datasource-New_Charset=\u65B0\u6587\u5B57\u30B3\u30FC\u30C9 -Preference-Custom=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA -BackgroundTexture-Newsprint=\u65B0\u805E\u7528\u7D19 -ConditionB-Add_bracket=\u62EC\u5F27\u3092\u8FFD\u52A0\u3059\u308B +Preference-Custom=\u30AB\u30B9\u30BF\u30E0 +BackgroundTexture-Newsprint=\u65B0\u805E\u7D19 +ConditionB-Add_bracket=\u62EC\u5F27\u3092\u8FFD\u52A0 Datasource-Connection_successfully=\u63A5\u7D9A\u6210\u529F -Function-The_class_must_implement_the_interface=\u5F53\u8A72\u30AF\u30E9\u30B9\u306F\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30FC\u30B9\u304B\u3089\u30A4\u30F3\u30D7\u30EC +Function-The_class_must_implement_the_interface=\u30AF\u30E9\u30B9\u306F\u6B21\u306E\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30FC\u30B9\u3092\u5B9F\u88C5\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF1A FR-Designer_ChartF-Transparency=\u900F\u660E -Crimson=\u771F\u7D05 -FR-Hyperlink_Dialog=\u5BFE\u8A71\u30A6\u30A3\u30F3\u30C9\u30A6 -FR-Designer_Covered_All=\u5168\u3066\u8986\u3046 -Hyperlink-New_Window=\u65B0\u30A6\u30A3\u30F3\u30C9\u30A6 +Crimson=\u6DF1\u7D05\u8272 +FR-Hyperlink_Dialog=\u30C0\u30A4\u30A2\u30ED\u30B0\u30DC\u30C3\u30AF\u30B9 +FR-Designer_Covered_All=\u3059\u3079\u3066\u4E0A\u66F8\u304D +Hyperlink-New_Window=\u65B0\u898F\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 +CSS_warning=\u4F8B\:WebReport\css\u306Btest.css\u53C2\u7167\u7528\u30D5\u30A1\u30A4\u30EB\u304C\u4FDD\u5B58\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u76F8\u5BFE\u30D1\u30B9\u306Fcss\test.css\u306B\u306A\u308B\u3002 FR-Base_Column=\u5217 -Three_Rows_Of_Two_Grid=2\u683C\u5B50\u306E3\u3064\u306E\u884C -DBCP_VALIDATION_QUERY=SQL\u8A8D\u8A3C\u30AF\u30A8\u30EA -M_Edit-Clear_Formats=\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8(F) -Parameter_Setting=\u30D1\u30E9\u30E1\u30FC\u30BF\u8A2D\u5B9A +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 Related=\u9023\u52D5 BorderLayout-Constraints=\u5834\u6240 -Write_Preview=\u5831\u544A\u30D7\u30EC\u30D3\u30E5\u30FC -PageSetup-Page_Order=\u5370\u5237\u9806 -Verify-Verify_Formula=\u691C\u8A3C\u5F0F +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 State=\u7701\u5E02 -FR-Designer-Widget-Style_Body_Background=\u30E1\u30A4\u30F3\u80CC\u666F +FR-Designer-Widget-Style_Body_Background=\u4E3B\u4F53\u80CC\u666F FR-App-Privilege_No=\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093 -Please_Drag_ParaPane= +Please_Drag_ParaPane=Please_Drag_ParaPane Come_True=\u5B9F\u73FE -ISEMPTY=\u7A7A\u6B04 +ISEMPTY=\u7A7A\u306B\u3059\u308B Background-Texture=\u30C6\u30AF\u30B9\u30C1\u30E3 FR-Designer_Verify-Message=\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8 -Locked=\uFF08\u30ED\u30C3\u30AF\u6E08\u307F\uFF09 +Locked=(\u30ED\u30C3\u30AF\u6E08\u307F) Utils-Design-Action_Cancel=\u30AD\u30E3\u30F3\u30BB\u30EB -Image-Titled=\u5C55\u958B -Gradient-Direction=\u65B9\u5411\u3092\u5F90\u3005\u306B\u5909\u5316 -Green=\u6DF1\u7DD1 +Image-Titled=\u4E26\u3079\u3066\u8868\u793A +Gradient-Direction=\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3\u65B9\u5411 +Green=\u9752\u7DD1 Report_Engine=\u5E33\u7968\u30A8\u30F3\u30B8\u30F3 -Return-String=\u30AD\u30E3\u30E9\u30AF\u30BF\u30FC\u6587\u5B57\u5217\u306B\u623B\u308B +Return-String=\u6587\u5B57\u578B\u3092\u623B\u3059 Margin=\u30DE\u30FC\u30B8\u30F3 -Pitch_Percentage=\u30D4\u30C3\u30C1\u306E\u5272\u5408 -FR-Base_TurnOff=\u9589\u3058\u308B -Utils-has_been_existed=\u65E2\u5B58 -HF-Insert_Formula=\u516C\u5F0F\u3092\u633F\u5165 -Utils-Exit_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u7D42\u4E86\u3059\u308B -Formula_Dictionary_Display=\u4E0A\u306E\u5B9F\u969B\u5024\u7BC4\u56F2\u5185\u306E\u3044\u305A\u308C\u306E\u5024($$$)\u306F\u3001\u305D\u306E\u8868\u793A\u5024\u306F -PageSetup-Left_to_right=\u5DE6\u304B\u3089\u53F3\u3078 -Utils-Import_Excel_Data=\u300CExcel]\u30A4\u30F3\u30D7\u30C3\u30C8 +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 +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 M-Save=\u4FDD\u5B58 -redo=\u3082\u3046\u4E00\u5EA6\u3059\u308B +redo=\u3084\u308A\u76F4\u3057 Status=\u72B6\u614B Draw=\u5236\u4F5C -FR-Designer_Message=\u30E1\u30C3\u30BB\u30FC\u30B8 -Records=\u3064\u306E\u8A18\u9332 -FR-Designer_ComboBox=\u30B3\u30F3\u30DC\u30DC\u30C3\u30AF\u30B9 -Driver=\u30C9\u30E9\u30A4\u30D0\u30FC -Template_Parameters=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC -Form-Remove_Repeat_Data=\u91CD\u8907\u3059\u308B\u30C7\u30FC\u30BF\u3092\u524A\u9664 -ECP_decode=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30A2\u30F3\u30ED\u30C3\u30AF -Area_Name=\u5730\u57DF\u540D +FR-Designer_Message=\u60C5\u5831 +Records=\u4EF6\u306E\u8A18\u9332 +FR-Designer_ComboBox=\u30D7\u30EB\u30C0\u30A6\u30F3\u30DC\u30C3\u30AF\u30B9 +Driver=JDBC\u30C9\u30E9\u30A4\u30D0\u30FC +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 Others=\u305D\u306E\u4ED6 -Merge=\u5408\u4F75\u3059\u308B -BackgroundTexture-Parchment=\u7F8A\u76AE\u7D19 -BindColumn-Bottom_N=\u5F8C\u306EN\u500B +Merge=\u7D71\u5408 +BackgroundTexture-Parchment=\u30BB\u30FC\u30E0\u76AE +BindColumn-Bottom_N=\u4E0B\u4F4DN\u9805\u76EE Frame=\u30D5\u30EC\u30FC\u30E0 -Bottom_Border_Line=\u30DC\u30C8\u30E0\u30DC\u30FC\u30C0\u30FC -Muiti_In=\u591A\u5C64\u53D6\u308A\u30EA\u30F3\u30B0 -FR-Designer-Dependence_Install_Online=install online -Use_Default_ToolBar=\u30C7\u30D5\u30A9\u30EB\u30C8\u30C4\u30FC\u30EB\u30D0\u30FC\u4F7F\u7528 +Bottom_Border_Line=\u4E0B\u7F6B\u7DDA +Muiti_In=\u30DE\u30EB\u30C1\u30EC\u30A4\u30E4\u30FC\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=\u30C7\u30D5\u30A9\u30EB\u30C8\u30C4\u30FC\u30EB\u30D0\u30FC\u3092\u4F7F\u3046 M_Server-Platform_Manager=\u5E33\u7968\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u7BA1\u7406 PageSetup-inches=\u30A4\u30F3\u30C1 Form-Widget_Property=\u5C5E\u6027\u540D -FR-Layout_Padding=\u5185\u30DE\u30FC\u30B8\u30F3 -Schema=\u30B9\u30AD\u30FC\u30DE -Server_Path=\u30DB\u30B9\u30C8\u30B3\u30F3\u30D4\u30E5\u30FC\u30BF\u4F4D\u7F6E +FR-Layout_Padding=\u30D1\u30C7\u30A3\u30F3\u30B0 +Schema=\u30C6\u30FC\u30DE +Server_Path=\u30DB\u30B9\u30C8\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 +FR-Server-Design_template_unopened=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u958B\u3051\u306A\u3044 Function-Function_Class_Name=\u95A2\u6570\u30AF\u30E9\u30B9\u540D Schedule-Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u540D Tree_Data_Field=\u30C4\u30EA\u30FC\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9 -Border-Style-Normal=\u76F4\u89D2\u306E\u56FD\u5883\u306B -Top_And_Double_Bottom_Border_Line=\u4E0A\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3\u3068\u53CC\u4E0B\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 -FR-Server_Embedded_Server_Start=\u5185\u8535\u30B5\u30FC\u30D0\u30FC-\u958B\u304F -FR-Designer-Basic_Restart_Designer_Later=\u5F8C\u3067\u518D\u8D77\u52D5\u3059\u308B -StyleAlignment-Top=\u4E0A\u8A70\u3081 -ReportServerP-First=\u30C8\u30C3\u30D7\u30DA\u30FC\u30B8 +Border-Style-Normal=\u76F4\u89D2 +Top_And_Double_Bottom_Border_Line=\u4E0A\u67A0\u7DDA\u3068\u4E8C\u91CD\u4E0B\u67A0\u7DDA +FR-Server_Embedded_Server_Start=\u7D44\u307F\u8FBC\u307F\u306E\u30B5\u30FC\u30D0-\u30AA\u30FC\u30D7\u30F3 +FR-Designer-Basic_Restart_Designer_Later=\u5F8C\u3067\u518D\u8D77\u52D5 +StyleAlignment-Top=\u4E0A\u63C3\u3048 +ReportServerP-First=\u5148\u982D\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 +FR-Remote_File_is_Locked=\u9078\u629E\u5E33\u7968\u306F\u3001\u4ED6\u306E\u30E6\u30FC\u30B6\u30FC\u304C\u7DE8\u96C6\u4E2D\u3067\u3059\u3002\u66AB\u304F\u304A\u5F85\u3061\u4E0B\u3055\u3044 Apply=\u30A2\u30D7\u30EA Sytle-Indentation=\u30A4\u30F3\u30C7\u30F3\u30C8 -Parameter-Float=\u5358\u7CBE\u5EA6\u6D6E\u52D5\u5C0F\u6570\u70B9\u6570\u578B -HF-Center_Section=\u4E2D\u592E\u30BB\u30AF\u30B7\u30E7\u30F3 -Form-Double_quotes=\u30C0\u30D6\u30EB\u30AF\u30AA\u30FC\u30C6\u30FC\u30B7\u30E7\u30F3\u30DE\u30FC\u30AF +Parameter-Float=\u5358\u7CBE\u5EA6\u578B +HF-Center_Section=\u4E2D\u9593\u30A8\u30EA\u30A2 +Form-Double_quotes=\u4E8C\u91CD\u5F15\u7528\u7B26 M_File-Export-Word=Word -M_File-Export-Text=\u30C6\u30AD\u30B9\u30C8\u30D5\u30A1\u30A4\u30EB(\u30BF\u30D6\u533A\u5207\u308A)(T) -PageSetup-First_Page_Number=\u30B9\u30BF\u30FC\u30C8\u306E\u30DA\u30FC\u30B8\u756A\u53F7 +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 Execute=\u5B9F\u884C Task=\u30BF\u30B9\u30AF -Custom_Button_Type_Submit=\u63D0\u51FA -FR-Designer-Widget_Settings=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u8A2D\u5B9A -IS_Need_Password=\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u5FC5\u8981\u3067\u3059 +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 PageSetup-Horizontally=\u6C34\u5E73\u4E2D\u592E\u63C3\u3048 -No_Editor_Property_Definition=\u5F53\u8A72\u30A8\u30C7\u30A3\u30BF\u306F\u5C5E\u6027\u5B9A\u7FA9\u304C\u3042\u308A\u307E\u305B\u3093 -Env-Remote_Server=\u30EA\u30E2\u30FC\u30C8\u30B5\u30FC\u30D0\u30FC +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 FR-Utils_Background=\u80CC\u666F FR-Designer-Plugin_Warning=\u8B66\u544A -Server-version-info=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u306F\u3001\u5F8C\u3067\u8A2D\u8A08\u3084\u5143\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5C5E\u6027\u3092\u5931\u3046\u30EA\u30B9\u30AF\u306B -CellWrite-Page_After_Row=\u884C\u5F8C\u306E\u6539\u9801 -HF-Right_Section=\u53F3\u5074\u30BB\u30AF\u30B7\u30E7\u30F3 -PageSetup-Title_Start_Row=\u91CD\u8907\u3059\u308B\u6A19\u984C\u884C -From=\u7B2C\u3000\u304B\u3089 +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 +CellWrite-Page_After_Row=\u884C\u5F8C +HF-Right_Section=\u53F3\u30A8\u30EA\u30A2 +PageSetup-Title_Start_Row=\u7E70\u308A\u8FD4\u3057\u30BF\u30A4\u30C8\u30EB\u884C +From=From Preference-Grid_Line_Color=\u30B0\u30EA\u30C3\u30C9\u7DDA\u306E\u8272 -RowTo=\u884C\u304B\u3089\u7B2C\u307E\u3067 -FR-Designer_ReportColumns-Repeat_Column=\u5217\u9806\u5E8F\u3092\u30B3\u30D4\u30FC +RowTo=~ +FR-Designer_ReportColumns-Repeat_Column=\u5217\u306E\u9806\u5E8F\u3092\u30B3\u30D4\u30FC M_Server-Function_Manager=\u95A2\u6570\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC KeyWord=\u30AD\u30FC\u30EF\u30FC\u30C9 DS-Multi_Dimensional_Database=\u591A\u6B21\u5143\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 BiasD-Slope_Line=\u659C\u7DDA Tue=\u706B -ReportServerP-Last=\u7D42\u4E86\u9801 +ReportServerP-Last=\u6700\u7D42\u30DA\u30FC\u30B8 FR-Base_Columns=\u5217 -SpecifiedG-Leave_in_their_own_groups=\u5404\u30B0\u30EB\u30FC\u30D7\u5185\u306B\u4FDD\u7559\u3059\u308B -LOG-Please_Wait=\u5C11\u3005\u304A\u5F85\u3061\u304F\u3060\u3055\u3044 -Form-ToolBar=\u8868\u30C4\u30FC\u30EB\u30D0\u30FC -FR-Base_sure_remove_item=\u672C\u5F53\u306B\u9078\u629E\u3057\u305F\u9805\u76EE\u3092\u524A\u9664\u3057\u307E\u3059\u304B -Component_Scale=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u30B9\u30B1\u30FC\u30EB -Hyperlink-Use_CJK_to_encode_parameter=CJK\u51E6\u7406\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u4F7F\u7528 -LOG-Has_Been_Openned=\u958B\u304D\u307E\u3057\u305F -FR-Designer-Dependence= +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 ECP_error_pwd=\u30D1\u30B9\u30EF\u30FC\u30C9\u30A8\u30E9\u30FC -REPORTLET=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u30EB\u30FC\u30C8\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u306B\u30A2\u30AF\u30BB\u30B9 -RWA-Column_Offset=\u5217\u30AA\u30D5\u30BB\u30C3\u30C8 +REPORTLET=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u30D1\u30B9\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u30D1\u30E9\u30E1\u30FC\u30BF +RWA-Column_Offset=\u5217\u306E\u30AA\u30D5\u30BB\u30C3\u30C8 Forecast=\u4E88\u6E2C -Light_Orange=\u660E\u308B\u3044\u30AA\u30EC\u30F3\u30B8 -StyleAlignment-Vertical=\u5782\u76F4\u63C3\u3048 -Form-List=\u30EA\u30B9\u30C8 -ParameterD-Show_Parameter_Window=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u30A6\u30A4\u30F3\u30C9\u30A6\u3092\u8868\u793A\u3059\u308B -FR-Designer_Set_Submit_Event=\u63D0\u51FA\u4E8B\u4EF6\u3092\u8A2D\u5B9A -Value_Percent=\u5024\u5272\u5408\u4F8B -DBCP_MIN_EVICTABLE_IDLE_TIMEMILLIS=\u30A2\u30A4\u30C9\u30EB\u6700\u5C0F\u6642\u9593\u5024\u4FDD\u6301 -Function-The_class_must_be_located_in=\u5F53\u8A72\u30AF\u30E9\u30B9\u306F\u5B58\u5728\u3057\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093 +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=\u5024\u306E\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\uFF1A FR-Action_Sort=\u30BD\u30FC\u30C8 DataFunction-Average=\u5E73\u5747 -FR-Designer_Show_in_Containing_Folder=\u6240\u5728\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F +FR-Designer_Show_in_Containing_Folder=\u30D5\u30A1\u30A4\u30EB\u306E\u5834\u6240\u3092\u958B\u304F M_File-Export-Excel=Excel DataFunction-Max=\u6700\u5927\u5024 -FR-Designer_Form-Widget_Name=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u540D -FS_End_Date=\u7D42\u4E86\u65E5\u671F -Export-Excel-Simple=\u5143 -ColumnTo=\u5217\u306F\u7B2C\u3000\u307E\u3067 -SpecifiedG-Discard_all_others=\u4ED6\u306E\u3059\u3079\u3066\u3092\u7834\u68C4\u3059\u308B -DS-TableData=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 -Form-DataTable=\u30C7\u30FC\u30BF\u8868 -Sub_Report_ToolTips=\u5B50\u5E33\u7968\u63D0\u793A +FR-Designer_Form-Widget_Name=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u540D +FS_End_Date=\u7D42\u4E86\u65E5\u6642 +Export-Excel-Simple=\u6A19\u6E96\u51FA\u529B +ColumnTo=~ +SpecifiedG-Discard_all_others=\u305D\u306E\u4ED6\u306E\u3059\u3079\u3066\u3092\u6368\u3066\u308B +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 Right_Top=\u53F3\u4E0A -M_Edit-Merge_Cell=\u30BB\u30EB\u3092\u7D50\u5408\u3059\u308B -FR-Designer_Restore_Default=\u30C7\u30D5\u30A9\u30EB\u30C8\u5FA9\u5143 -Component_Interval=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u9593\u9694 -Cover_None=\u5168\u3066\u8986\u308F\u306A\u3044 -Datasource-From_Database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u304B\u3089 -Folder=\u76EE\u6B21 -Form-Allow_Edit=\u76F4\u63A5\u7DE8\u96C6\u3042\u308A +M_Edit-Merge_Cell=\u30BB\u30EB\u7D50\u5408 +FR-Designer_Restore_Default=\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u623B\u3059 +Component_Interval=\u30E2\u30B8\u30E5\u30FC\u30EB\u9593\u9694 +Cover_None=\u5168\u3066\u4E0A\u66F8\u304D\u3057\u306A\u3044 +Datasource-From_Database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u8868 +Folder=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA +Form-Allow_Edit=\u7DE8\u96C6\u3092\u8A31\u53EF M_Edit-Clear=\u30AF\u30EA\u30A2(A) ParentCell_Setting=\u89AA\u30BB\u30EB\u8A2D\u5B9A -Only_selected_cell_can_paste_only=\u30BB\u30EB\u306F\u8CBC\u308A\u4ED8\u3051\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u9078\u629E\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u306B\u306E\u307F -M_Report-Report_Columns=\u5E33\u7968\u30B3\u30E9\u30E0 +Only_selected_cell_can_paste_only=\u30BB\u30EB\u304C\u9078\u629E\u3055\u308C\u3066\u304B\u3089\u8CBC\u308A\u4ED8\u3051\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u308B +M_Report-Report_Columns=\u5E33\u7968\u30B5\u30D6\u30D5\u30A3\u30FC\u30EB\u30C9 Unit_Hundred=\u767E -FR-Designer_DataTable-Build= -Widget-Form_Widget_Config=\u8868\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB -Server-version-tip-moreInfo=\u79C1\u305F\u3061\u306E\u88FD\u54C1\u306EFineReport Designer\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3060\u3051\u3067\u306A\u304F\u3001 -Actions=\u30A2\u30AF\u30B7\u30E7\u30F3 -FR-Designer-Dependence_Connect_Server_Error=connect error -High=\u9AD8 +FR-Designer_DataTable-Build=\u9AD8\u901F\u30EC\u30A4\u30E4\u30FC\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\u306B\u3088\u308B\u554F\u984C\u30EA\u30B9\u30AF\u3092\u907F\u3051\u308B\u305F\u3081\u306B\u3001\u3042\u306A\u305F\u306E\u30C1\u30FC\u30E0\u306B\u3088\u3063\u3066\u4F7F\u7528\u3055\u308C\u308B\u5F53\u793E\u306EFineReport\u88FD\u54C1\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u53CA\u3073\u8A2D\u5B9A\u3055\u308C\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3092\u30C1\u30A7\u30C3\u30AF\u3059\u308B\u3053\u3068\u3092\u304A\u52E7\u3081\u3044\u305F\u3057\u307E\u3059\u3002 n\u3088\u308A\u9AD8\u3044\u30C7\u30B6\u30A4\u30CA\u30FC\u306B\u3088\u3063\u3066\u4F5C\u6210\u3055\u308C\u305F\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u5229\u7528\u3059\u308B\u5834\u5408\u3001\u30A8\u30E9\u30FC\u767A\u751F\u3084\u3001\u5143\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5C5E\u6027\u304C\u5931\u308F\u308C\u308B\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\u914D\u7F6E\u5148\u3067\u3042\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3088\u308A\u9AD8\u3044\u5834\u5408\u3001\u30B5\u30FC\u30D0\u30FC\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 HJS-Send_Failed=\u9001\u4FE1\u5931\u6557 -HJS-Message=\u30E1\u30C3\u30BB\u30FC\u30B8\u5185\u5BB9 -File-Allow_Upload_Files=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u304C\u8A31\u53EF\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u30BF\u30A4\u30D7 +HJS-Message=\u5185\u5BB9 +File-Allow_Upload_Files=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3067\u304D\u308B\u30D5\u30A1\u30A4\u30EB\u30BF\u30A4\u30D7 FR-Designer-Form-ToolBar_Chart=\u30B0\u30E9\u30D5 -Thick_Bottom_Border_Line=\u7C97\u5E95\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 +Thick_Bottom_Border_Line=\u4E0B\u592A\u7F6B\u7DDA FR-Action_Remove=\u524A\u9664 -FRFont-Style=\u30B9\u30BF\u30A4\u30EB -Select_DataColumn=\u30C7\u30FC\u30BF\u5217\u3092\u9078\u629E +FRFont-Style=\u30D5\u30A9\u30F3\u30C8 +Select_DataColumn=\u30C7\u30FC\u30BF\u5217\u9078\u629E StartValue=\u958B\u59CB\u5024 -SINGLE_FILE_UPLOAD=\u5358\u72EC\u30D5\u30A1\u30A4\u30EB\u306E\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u306E\u307F\u30B5\u30DD\u30FC\u30C8 -BackgroundTexture-Cork=\u30B3\u30EB\u30AF\u6813 -M_Format-Data_Map=\u30C7\u30FC\u30BF\u30DE\u30C3\u30D7 -FR-mobile_native_analysis=\u4E00\u6B21\u89E3\u6790 +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=\u30CD\u30A4\u30C6\u30A3\u30D6\u89E3\u6790 HighLight=\u30CF\u30A4\u30E9\u30A4\u30C8 -FR-Designer_Dropdown-More-Preview=\u4E0B\u62C9\u83B7\u53D6\u66F4\u591A\u9884\u89C8\u65B9\u5F0F +FR-Designer_Dropdown-More-Preview=\u30D7\u30EB\u30C0\u30A6\u30F3\u3067\u66F4\u306A\u308B\u30D7\u30EC\u30D3\u30E5\u30FC\u65B9\u5F0F\u3092\u53D6\u5F97 local=\u30ED\u30FC\u30AB\u30EB -FR-Designer_Gradation=\u69CB\u6210 -PageSetup-Finis_Start_Column=\u91CD\u8907\u3059\u308B\u7D42\u4E86\u5217 -Env-Invalid_User_and_Password=\u7121\u52B9\u306A\u30E6\u30FC\u30B6\u30FC\u540D\u307E\u305F\u306F\u30D1\u30B9\u30EF\u30FC\u30C9\u3067\u3059 -FR-Designer-Plugin_All_Plugins=\u5168\u3066\u306E\u30D7\u30E9\u30B0\u30A4\u30F3 +FR-Designer_Gradation=\u30EC\u30D9\u30EB +PageSetup-Finis_Start_Column=\u7E70\u308A\u8FD4\u3057\u7D42\u4E86\u5217 +Env-Invalid_User_and_Password=\u7121\u52B9\u306A\u30E6\u30FC\u30B6\u30FCID\u3084\u30D1\u30B9\u30EF\u30FC\u30C9 +FR-Designer-Plugin_All_Plugins=\u3059\u3079\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 +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=\u30AF\u30E9\u30B9\u66F8\u304D\u8FBC\u307F M_Insert-Slope_Line=\u659C\u7DDA FR-Designer-Plugin_Plugin_Description=\u30D7\u30E9\u30B0\u30A4\u30F3\u8AAC\u660E -ExpandD-Not_Expand=\u62E1\u5F35\u3057\u306A\u3044 -Utils-Bottom_to_Top=\u4E0B\u304B\u3089\u4E0A\u3078 -Collect-Click\!_Get_user_information_code=\u30AF\u30EA\u30C3\u30AF\u3057\u3066\!\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30C8\u30B3\u30FC\u30C9\u3092\u53D6\u5F97 -FR-Already_exist=\u73FE\u5728\u306E\u74B0\u5883\u306B\u306F\u5B58\u5728\u3057\u3066\u3044\u307E\u3059\: -Send=\u767A\u9001 -M_Edit-Clear_All=\u5168\u3066\u30AF\u30EA\u30A2(A) -Brown_Orange=\u30D6\u30E9\u30A6\u30F3 +ExpandD-Not_Expand=\u5C55\u958B\u3057\u306A\u3044 +Utils-Bottom_to_Top=\u4E0B\u304B\u3089\u4E0A +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\u3059\u3067\u306B\u3042\u308A\u307E\u3059\: +Send=\u8EE2\u9001 +M_Edit-Clear_All=\u3059\u3079\u3066(A) +Brown_Orange=\u30AB\u30FC\u30AD PageSetup-Portrait=\u7E26\u65B9\u5411 FR-Designer_Form-RadioGroup=\u30E9\u30B8\u30AA\u30DC\u30BF\u30F3\u30B0\u30EB\u30FC\u30D7 -FR-Utils-App_AllFiles=\u5168\u3066\u306E\u30D5\u30A1\u30A4\u30EB -Popup=\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7 -Server_Charset=\u30B5\u30FC\u30D0\u30FC\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0 -CellWrite-Repeat_Content_When_Paging=\u6539\u9801\u3059\u308B\u6642\u7E70\u308A\u8FD4\u3057\u624B\u8868\u793A\u3059\u308B +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\u7E70\u308A\u8FD4\u3057\u8868\u793A Utils-No_Pagination=\u6539\u30DA\u30FC\u30B8\u3057\u306A\u3044 -Form-NullLayout=\u7D76\u5BFE\u5B9A\u4F4D -ConditionB-Remove_bracket=\u62EC\u5F27\u3092\u524A\u9664\u3059\u308B +Form-NullLayout=\u7D76\u5BFE\u914D\u7F6E +ConditionB-Remove_bracket=\u62EC\u5F27\u3092\u524A\u9664 email=\u30E1\u30FC\u30EB\u30DC\u30C3\u30AF\u30B9 -Minute=\u5206\u9593 -FR-Designer-Plugin_Update=\u30D7\u30E9\u30B0\u30A4\u30F3\u66F4\u65B0 -alraedy_close=\u3059\u3067\u306B\u30AA\u30D5 -ComboCheckBox-End_Symbol=\u7D42\u7D50\u6587\u5B57 +Minute=\u5206 +FR-Designer-Plugin_Update=\u30D7\u30E9\u30B0\u30A4\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 +alraedy_close=\u9589\u3081\u305F +ComboCheckBox-End_Symbol=\u7D42\u4E86\u6587\u5B57 DataColumn=\u30C7\u30FC\u30BF\u5217 Form-Password=\u30D1\u30B9\u30EF\u30FC\u30C9 -FR-Background_Image_Adjust=\u9069\u5FDC -Export-Excel-PageToSheet=\u30B7\u30FC\u30C8 +FR-Background_Image_Adjust=\u8ABF\u6574 +Export-Excel-PageToSheet=1\u30DA\u30FC\u30B81\u30B7\u30FC\u30C8\u51FA\u529B 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 +Group_Count=\u7DCF\u500B\u6570\u8868\u793A EndValue=\u7D42\u4E86\u5024 FR-Designer_Sytle-Indentation=\u30A4\u30F3\u30C7\u30F3\u30C8 DownBarBorderStyleAndColor=\u30D5\u30A9\u30FC\u30EB\u30AB\u30E9\u30E0\u30B9\u30BF\u30A4\u30EB World=\u4E16\u754C FR-Designer-Basic_Cancel=\u30AD\u30E3\u30F3\u30BB\u30EB Finally=\u6700\u5F8C -Low=\u4F4E -Please_Input_The_Key=\u5BFE\u5FDC\u3059\u308B\u30DE\u30C3\u30D7\u306B\u4F7F\u7528\u3059\u308Bkey\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 -Smart=\u30A4\u30F3\u30C6\u30EA\u30B8\u30A7\u30F3\u30C8 -Preference-Predefined=\u30D7\u30EC\u5B9A\u7FA9 -Current_custom_global=\u73FE\u5728\u306E\u5E33\u7968\u304C\u7528\u3044\u308B\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u5168\u5C40\u30B9\u30BF\u30A4\u30EB -FR-Designer-Plugin_Shop_Need_Install=\u3042\u306A\u305F\u304C\u30A2\u30C9\u30AA\u30F3\u3055\u308C\u3066\u3044\u306A\u3044\u30EA\u30BD\u30FC\u30B9\u306E\u5E97\u8217\u3092\u3001\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3059\u308B\u304B\u3069\u3046\u304B\uFF1F -WEB-Pagination_Setting=\u30DA\u30FC\u30B8\u5225\u30D7\u30EC\u30D3\u30E5\u30FC\u8A2D\u5B9A +Low=\u4F4E\u3044 +Please_Input_The_Key=\u5BFE\u5FDC\u306E\u30DE\u30C3\u30D7\u306B\u4F7F\u308F\u308C\u308B\u30AD\u30FC\u3092\u5165\u529B\u3057\u3066\u4E0B\u3055\u3044 +Smart=\u30B9\u30DE\u30FC\u30C8 +Preference-Predefined=\u4E8B\u524D\u5B9A\u7FA9 +Current_custom_global=\u73FE\u5728\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? +WEB-Pagination_Setting=\u6539\u30DA\u30FC\u30B8\u30D7\u30EC\u30D3\u30E5\u30FC\u8A2D\u5B9A RCodeDrawPix=\u753B\u7D20 FR-Designer-Widget-Style_Alpha=\u4E0D\u900F\u660E\u5EA6 BorderLayout-North=\u5317 -HJS-Current_Page=\u30AB\u30EC\u30F3\u30C8\u30DA\u30FC\u30B8 -Compile=\u7DE8\u96C6\u7FFB\u8A33 -Show_Blank_Row=\u7A7A\u767D\u884C\u3092\u88DC\u5145 -TableData_Dynamic_Parameter_Setting=\u30C0\u30A4\u30CA\u30DF\u30C3\u30AF\u30D1\u30E9\u30E1\u30FC\u30BF +HJS-Current_Page=\u73FE\u5728\u306E\u30DA\u30FC\u30B8 +Compile=\u30B3\u30F3\u30D1\u30A4\u30EB +Show_Blank_Row=\u7A7A\u767D\u884C\u88DC\u5145 +TableData_Dynamic_Parameter_Setting=\u52D5\u7684\u30D1\u30E9\u30E1\u30FC\u30BF\u6CE8\u5165 FR-Background_Image_Default=\u30C7\u30D5\u30A9\u30EB\u30C8 -BackgroundTexture-WhiteMarble=\u767D\u3044\u5927\u7406\u77F3 +BackgroundTexture-WhiteMarble=\u5927\u7406\u77F3(\u767D) DataFunction-Sum=\u5408\u8A08 -Collect-The_user_information_code_is_invalid=\u3053\u306E\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30C8\u30B3\u30FC\u30C9\u306F\u7121\u52B9\u3067\u3059\u3002\u516C\u5F0F\u30DB\u30FC\u30E0\u30DA\u30FC\u30B8\u3067\u7533\u8ACB\u3057\u306A\u304A\u3057\u3066\u304F\u3060\u3055\u3044 -Preference-Locale=\u56FD\u969B\u5316 +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 +Preference-Locale=\u30B0\u30ED\u30FC\u30D0\u30EB\u5316 M_File-Export-PDF=PDF -BiasD-From-lower_left_to_upper_right=\u5DE6\u4E0B\u5074\u304B\u3089\u53F3\u4E0A\u5074\u3078\u5E83\u304C\u308B -Border-Style=\u67A0\u7DDA\u306E\u30B9\u30BF\u30A4\u30EB +BiasD-From-lower_left_to_upper_right=\u5DE6\u4E0B\u5074\u304B\u3089\u53F3\u4E0A\u5074\u3078 +Border-Style=\u67A0\u306E\u30B9\u30BF\u30A4\u30EB Sort=\u30BD\u30FC\u30C8 -Image-Image_Layout=\u30A4\u30E1\u30FC\u30B8\u30EC\u30A4\u30A2\u30A6\u30C8 +Image-Image_Layout=\u753B\u50CF\u30EC\u30A4\u30A2\u30A6\u30C8 Panel=\u30D1\u30CD\u30EB -FR-Designer-Basic_Copy_Build_NO_OK=\u7D44\u307F\u7ACB\u3066\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u306B\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F -All_Border_Line=\u3059\u3079\u3066\u306E\u5883\u754C -FR-Utils-Please_Input_a_New_Name=\u65B0\u3057\u3044\u540D\u79F0\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Designer-Basic_Copy_Build_NO_OK=\u30D3\u30EB\u30C9\u756A\u53F7\u306F\u65E2\u306B\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u30B3\u30D4\u30FC +All_Border_Line=\u67A0\u7DDA +FR-Utils-Please_Input_a_New_Name=\u65B0\u3057\u3044\u540D\u524D\u3092\u5165\u529B\u3057\u3066\u4E0B\u3055\u3044 FR-Base_Formula_Plugin=\u30D7\u30E9\u30B0\u30A4\u30F3\u95A2\u6570 -Two_Rows_Of_Three_Grid=3\u683C\u5B50\u306E\u4E8C\u5217 -FR-Designer_Certificate_Pass=https\u30B7\u30FC\u30AF\u30EC\u30C3\u30C8\u30AD\u30FC +Two_Rows_Of_Three_Grid=2\u884C3\u5217\u306E\u30B0\u30EA\u30C3\u30C9 +FR-Designer_Certificate_Pass=https\u306E\u9375 Bubble-Series_Name=\u7CFB\u5217\u540D -M-New_Multi_Report=\u7D71\u8A08\u5E33\u7968\u3092\u65B0\u898F\u4F5C\u6210(M) -BackgroundTexture-PinkTissuePaper=\u30D4\u30F3\u30AF\u8272\u306E\u30B5\u30F3\u30C9\u30DA\u30FC\u30D1\u30FC +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=\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 +Show_Blank_Column=\u7A7A\u767D\u5217\u88DC\u5145 +BaiduMap=\u767E\u5EA6\u5730\u56F3 Report-Web_Attributes=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8Web\u5C5E\u6027 -FR-Designer_StyleAlignment-Wrap_Text=\u81EA\u52D5\u6298\u308A\u8FD4\u3057 +FR-Designer_StyleAlignment-Wrap_Text=\u81EA\u52D5\u6539\u884C Need=\u5FC5\u8981 -Parameter-Double=\u500D\u7CBE\u5EA6\u6D6E\u52D5\u5C0F\u6570\u70B9\u6570\u578B -Config_Servlet=\u9060\u9694\u30B5\u30FC\u30D0\u30FC\u914D\u7F6E +Parameter-Double=\u500D\u7CBE\u5EA6\u578B +Config_Servlet=\u30EA\u30E2\u30FC\u30C8\u30B5\u30FC\u30D0\u3092\u8A2D\u5B9A Form-Comma=\u30B3\u30F3\u30DE Verify=\u691C\u8A3C PageSetup-Landscape=\u6A2A\u65B9\u5411 Weeks=\u9031\u9593 -FR-Designer-Widget-Style_Title_Background=\u6A19\u984C\u80CC\u666F -Preference-Pagination_Line_Color=\u6539\u30DA\u30FC\u30B8\u7DDA\u306E\u8272 -Test_URL=\u30C6\u30B9\u30C8\u63A5\u7D9A -Fill_blank_Data=\u7A7A\u767D\u30C7\u30FC\u30BF\u306E\u88DC\u5145 -ReportServerP-The_name_of_printer_cannot_be_null=\u30D7\u30EA\u30F3\u30BF\u30FC\u306E\u540D\u524D\u306F\u7A7A\u5024\u306B\u306A\u306F\u3044\u3051\u307E\u305B\u3093 -FR-Designer-Basic_Copy_Activation_Key=\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30C7\u30B6\u30A4\u30CA\u30FC\u6574\u7406\u756A\u53F7\u3092\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC +FR-Designer-Widget-Style_Title_Background=\u30BF\u30A4\u30C8\u30EB\u80CC\u666F +Preference-Pagination_Line_Color=\u6539\u30DA\u30FC\u30B8\u30E9\u30A4\u30F3\u306E\u8272 +Test_URL=\u63A5\u7D9A\u30C6\u30B9\u30C8 +Fill_blank_Data=\u7A7A\u767D\u30C7\u30FC\u30BF\u3092\u88DC\u5145 +ReportServerP-The_name_of_printer_cannot_be_null=\u30D7\u30EA\u30F3\u30BF\u540D\u306F\u7A7A\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 Continuum=\u96A3\u63A5\u9023\u7D9A -BackgroundTexture-MediumWood=\u6FC3\u3044\u8272\u306E\u6728\u76EE -Datasource-Column_Index=\u30B3\u30E9\u30E0\u756A\u53F7 +BackgroundTexture-MediumWood=\u6728\u76EE +Datasource-Column_Index=\u5217\u756A\u53F7 Function-Function_File=\u95A2\u6570\u30D5\u30A1\u30A4\u30EB -Form-Component_Bounds=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u9818\u57DF -Utils-Submit=\u63D0\u51FA -Conditions_formula=\u6761\u4EF6\u516C\u5F0F -M_Insert-Image=\u30A4\u30E1\u30FC\u30B8 -FR-Designer-Plugin_Will_Be_Delete=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u524A\u9664\u3055\u308C\u307E\u3057\u305F\u3002\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC\u30D0\u30FC\u3092\u518D\u8D77 +Form-Component_Bounds=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u30DC\u30FC\u30C0\u30FC +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\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\u4E0B\u3055\u3044 FormulaD-Functions=\u95A2\u6570 -Mobile_Terminal=\u79FB\u52D5\u7AEF +Mobile_Terminal=\u30E2\u30D0\u30A4\u30EB\u7AEF\u672B CheckBox=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 FR-Designer-Plugin_Install=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB Sun=\u65E5 -FR-Designer_ToolBar_Bottom=\u30D5\u30C3\u30BF\u30FC\u30C4\u30FC\u30EB\u30D0\u30FC -Widget-Width=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u5E45 +FR-Designer_ToolBar_Bottom=\u4E0B\u90E8\u306E\u30C4\u30FC\u30EB\u30D0\u30FC +Widget-Width=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5E45 Series_Name=\u7CFB\u5217\u540D -Set_Row_Title_Start=\u91CD\u8907\u3059\u308B\u6A19\u984C\u884C\u3092\u8A2D\u5B9A +Set_Row_Title_Start=\u7E70\u308A\u8FD4\u3057\u30BF\u30A4\u30C8\u30EB\u884C\u8A2D\u5B9A HF-Default_Page=\u30C7\u30D5\u30A9\u30EB\u30C8\u30DA\u30FC\u30B8 -Env_Des=\u30ED\u30B0\u30A4\u30F3\u74B0\u5883\u4E2D\u306E\u5E33\u7968\u5DE5\u7A0B\u306B\u6A29\u9650\u3092\u4ED8\u4E0E\u3059\u308B\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u540D\u3068\u30D1\u30B9\u30EF\u30FC\u30C9\u306E\u8A18\u5165\u306F\u5FC5\u305A -Widget-User_Defined=\u30D7\u30EC\u5B9A\u7FA9 -Url_location=\u7D76\u5BFE\u30EB\u30FC\u30C8 -Disk_File=\u30CF\u30FC\u30C9\u30C7\u30A3\u30B9\u30AF\u30D5\u30A1\u30A4\u30EB -Inside=\u5185\u90E8 -FR-Designer_filedChosen= -ServerM-Predefined_Styles=\u30D7\u30EC\u5B9A\u7FA9\u30B9\u30BF\u30A4\u30EB -is_need_word_adjust=\u884C\u306E\u9AD8\u3055\u3092\u56FA\u5B9A\u305B\u305A\u5C0E\u51FA +Env_Des=\u30ED\u30B0\u30A4\u30F3\u74B0\u5883\u4E2D\u306E\u5E33\u7968\u5DE5\u7A0B\u306B\u6A29\u9650\u3092\u4ED8\u4E0E\u3059\u308B\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FCID\u3068\u30D1\u30B9\u30EF\u30FC\u30C9\u306E\u8A18\u5165\u306F\u5FC5\u305A\u5BFE\u5FDC\u3059\u308B\u30ED\u30B0\u30A4\u30F3\u74B0\u5883\u306E\u30E6\u30FC\u30B6\u30FC\u3068\u30D1\u30B9\u30EF\u30FC\u30C9\u306E\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +Widget-User_Defined=\u4E8B\u524D\u5B9A\u7FA9 +Url_location=\u7D76\u5BFE\u30D1\u30B9 +Disk_File=\u30D5\u30A1\u30A4\u30EB +Inside=\u5185\u5074 +FR-Designer_filedChosen=\u4F9D\u5B58\u30D5\u30A3\u30FC\u30EB\u30C9 +ServerM-Predefined_Styles=\u4E8B\u524D\u5B9A\u7FA9\u30B9\u30BF\u30A4\u30EB +is_need_word_adjust=\u51FA\u529B\u6642\u306B\u3001\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=\u6587\u66F8\u57DF -ReportServerP-Import_JavaScript=JavaScript\u5F15\u7528 +FR-Designer_Root=\u30EB\u30FC\u30C4\u30CE\u30FC\u30C9 +FR-Designer_Form-TextArea=\u30C6\u30AD\u30B9\u30C8\u30A8\u30EA\u30A2 +ReportServerP-Import_JavaScript=JavaScript\u53C2\u7167 Form-TableTree=\u8868\u30C4\u30EA\u30FC -Opened=\u8D77\u52D5\u6E08\u307F +Opened=\u3059\u3067\u306B\u6709\u52B9\u5316\u306B M_Edit-Delete=\u524A\u9664(D) -Widget-Form_Widget_Container=\u8868\u5BB9\u5668 +Widget-Form_Widget_Container=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30B3\u30F3\u30C6\u30CA BindColumn-Summary=\u96C6\u8A08 Sche-Second=\u79D2 -Server-Open_Service_Manager=\u30B5\u30FC\u30D3\u30B9\u7BA1\u7406\u5668\u3092\u958B\u304F -FRFont-Effects=\u7279\u5225\u52B9\u679C -OtherGroup_Name=\u305D\u306E\u4ED6\u30B0\u30EB\u30FC\u30D7\u306E\u540D\u524D -Specify=\u6307\u5B9A\u3059\u308B -Highlight-Click_to_Choose_Property_To_Modify=\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u5909\u66F4\u3059\u308B\u5C5E\u6027\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 -triggered=\u30C8\u30EA\u30AC\u30FC -Double_Bottom_BorderLine=\u4E8C\u91CD\u5E95\u30D5\u30EC\u30FC\u30E0\u30E9\u30A4\u30F3 -M_Insert-Sub_Report=\u30B5\u30D6\u5E33\u7968 +Server-Open_Service_Manager=\u30B5\u30FC\u30D3\u30B9\u30DE\u30CD\u30FC\u30B8\u30E3\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\u3048\u305F\u3044\u5C5E\u6027\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u9078\u629E +triggered=\u89E6\u767A\u3055\u308C\u305F +Double_Bottom_BorderLine=\u4E0B\u4E8C\u91CD\u7F6B\u7DDA +M_Insert-Sub_Report=\u5B50\u5E33\u7968 Unit_Ten=\u5341 -Polybolck=\u30A2\u30B0\u30EA\u30B2\u30FC\u30B7\u30E7\u30F3\u30D6\u30ED\u30C3\u30AF -Select_sort_order=\u6392\u5217\u9806\u5E8F\u3092\u9078\u629E -HJS-Mail_to=\u53D7\u4FE1\u8005 -StyleAlignment-Left=\u5DE6\u8A70\u3081 -Two_Rows_Of_Two_Grid=2\u884C2\u5217\u306E\u683C\u5B50 -FR-Designer-Form-Please_Drag_ParaPane=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u30D1\u30CD\u30EB\u3092\u3057\u307E\u3063\u3066\u304F\u3060\u3055\u3044 +Polybolck=\u30D6\u30ED\u30C3\u30AF +Select_sort_order=\u30BD\u30FC\u30C8\u9806\u9078\u629E +HJS-Mail_to=\u5B9B\u5148 +StyleAlignment-Left=\u5DE6\u63C3\u3048 +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\u4E0B\u3055\u3044 Milliseconds=\u30DF\u30EA\u79D2 DataFunction-None=\u306A\u3057 -Delivery=\u4F1D\u9054 +Delivery=\u914D\u4FE1 ColumnSpan=\u5217\u7BC4\u56F2 -StyleAlignment-Bottom=\u4E0B\u8A70\u3081 -Read_failure=\u8AAD\u307F\u306B\u969C\u5BB3\u304C\u767A\u751F\u3059\u308B\u3068\u3001\u30BD\u30FC\u30B9\u00B7\u30D5\u30A1\u30A4\u30EB\u304C\u7834\u640D\u3057\u3066\u3044\u308B +StyleAlignment-Bottom=\u4E0B\u63C3\u3048 +Read_failure=\u8AAD\u307F\u53D6\u308A\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 Verify-Verify=\u30C7\u30FC\u30BF\u691C\u8A3C -FR-Designer-Widget-Style_Title_Format=\u6A19\u984C\u66F8\u5F0F -FR-Designer_Edit_String_To_Formula=\u30AD\u30E3\u30E9\u30AF\u30BF\u30FC\u6587\u5B57\u5217\u3092\u7DE8\u96C6\u3057\u3066\u516C\u5F0F\u3068\u3059\u308B\u304B\u5426\u304B -FR-Base_UnSignIn=\ \u672A\u30ED\u30B0\u30A4\u30F3 -Every=\u6BCF -CellWrite-Preview_Cell_Content=\u30BB\u30EB\u306E\u5185\u5BB9\u3092\u30D7\u30EC\u30D3\u30E5\u30FC\u3059\u308B -FormulaD-Data_Fields=\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9 \ No newline at end of file +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 +FR-Base_UnSignIn=\ \u672A\u30ED\u30B0\u30A4\u30F3 +Every=\u6BCE +CellWrite-Preview_Cell_Content=\u30BB\u30EB\u5185\u5BB9 +FormulaD-Data_Fields=\u30C7\u30FC\u30BF\u9805\u76EE +FR-Designer_Permissions=\u6A29\u9650 +FR-Designer_Form_Button=\u30DC\u30BF\u30F3 +FR-Designer_WF_Name=\u540D\u79F0 +FR-Designer_Role=\u5F79\u5272 +FR-Designer_Double=\u5C0F\u6570 +FR-Designer_Query=\u30AF\u30A8\u30EA +FR-Designer_Font=\u30D5\u30A9\u30F3\u30C8 +FR-Designer_Confirm=OK +FR-Designer_Parameter=\u30D1\u30E9\u30E1\u30FC\u30BF +FR-Designer-Plugin_Plugin=\u30D7\u30E9\u30B0\u30A4\u30F3 +FR-Designer_Background=\u80CC\u666F +Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 + +FR-Designer_Original_Marked_Filed=\u521D\u671F\u30BF\u30B0\u30D5\u30A3\u30FC\u30EB\u30C9 +FR-Designer_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 +FR-Designer_Tree_Data_Field=\u30C4\u30EA\u30FC\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9 +FR-Designer_Parent_Marked_Field=\u89AA\u30BF\u30B0\u30D5\u30A3\u30FC\u30EB\u30C9 +FR-Designer_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 +FR-Product_Demo=\u88FD\u54C1\u30C7\u30E2 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 39ebe76b63..4e210d8721 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,4 +1,3 @@ -# 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 @@ -12,7 +11,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=\uC0C9\uB354\uBCF4\uAE30... +FR-Designer-Basic_More_Color=\uB354\uBCF4\uAE30\uC0C9 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 @@ -76,7 +75,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 @@ -106,7 +105,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=\uC0C9 +FR-Designer_Foreground=\uBE44\uC804 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) @@ -162,7 +161,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=\uC140\uB098\uB204\uAE30 +FR-Designer_ReportColumns-Columns=\uC5F4\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 @@ -446,7 +445,6 @@ FR-Designer_WLayout-Absolute-ToolTips=\uC790\uC720\uC2DD\uB808\uC774\uC544\uC6C3 FR-Designer_Add_all=\uBAA8\uB450\uCD94\uAC00 FR-Designer_Reset= FR-Designer_Language_Change_Successful= -FR-Designer_Template_Web_Attributes= FR-Designer_Basic=\uAE30\uBCF8 FR-Designer_Printers(Server)=\uD504\uB9B0\uD130(\uC11C\uBC84) FR-Designer_Pagination_Setting=\uD398\uC774\uC9C0\uB098\uB204\uAE30\uBBF8\uB9AC\uBCF4\uAE30\uC124\uC815 @@ -472,7 +470,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= +FR-Designer_JavaScript=\uC790\uBC14\uC2A4\uD06C\uB9BD\uD2B8 FR-Designer_JavaScript_Form_Submit= FR-Designer_JavaScript_Commit_to_Database= FR-Designer_JavaScript_Custom= @@ -485,7 +483,7 @@ FR-Designer_Attribute= FR-Designer_Form_Editing_Listeners= FR-Designer_Form_Basic_Properties= FR-Designer_DS_Dictionary= -FR-Designer_Create_Tree= +FR-Designer_Create_Tree=\uD2B8\uB9AC\uC0DD\uC131 FR-Designer_Set_Callback_Function= FR-Designer_ConfirmDialog_Content= FR-Designer_ConfirmDialog_Title= @@ -859,7 +857,7 @@ RP_Authority_Edit=\uAD8C\uD55C\uD3B8\uC9D1 Warnning=\uC54C\uB9BC RoleName_Can_Not_Be_Null=\uC5ED\uD560\uC774\uB984\uC740\uBE44\uC5B4\uC788\uAC70\uB098\uC911\uBCF5\uB418\uC5B4\uC11C\uB294\uC548\uB429\uB2C8\uB2E4. Application=\uC560\uD50C\uB9AC\uCF00\uC774\uC158 -Formula_Dictionary_Display_Examples_Html=\uC2E4\uC81C\uAC12\uBC94\uC704:\ +Formula_Dictionary_Display_Examples_Html=\uC2E4\uC81C\uAC12\uBC94\uC704:\=0 - $$$\uFF0C
\uCD5C\uC885\uACB0\uACFC\uC758\uC2E4\uC81C\uAC12: 1, 2, ..., 100,\uD45C\uC2DC\uAC12: -1, -2, ... , -100.
  ECP-error_pwd=\uBE44\uBC00\uBC88\uD638\uC785\uB825\uC624\uB958 FR-Hyperlink_ChartHyperlink=\uCC28\uD2B8\uD558\uC774\uD37C\uB9C1\uD06C M_Edit-FormatBrush=\uC11C\uC2DD\uD504\uB9B0\uD2B8(B) @@ -990,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:\ +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. 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 @@ -1134,7 +1132,7 @@ FRFont-bold=\uAD75\uAC8C FR-Designer_Set_Submit_Condition=\uC81C\uCD9C\uC870\uAC74\uC124\uC815 Form-Change_Widget_Name=\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uC774\uB984\uBCC0\uACBD ReportColumns-Report_Columns=\uBB38\uC11C\uC140\uB098\uB204\uAE30 -Can_not_use_FormatBursh=\uC911\uBCF5\uC120\uD0DD\uB41C\uC601\uC5ED\uC5D0\uC11C\uC2DD\uC744\uC774\uC6A9\uD558\uC5EC\uC778\uC1C4\uD560\uC218\uC5C6\uC2B5\uB2C8\uB2E4.\! +FR-Designer_Can_not_use_FormatBursh=\uC911\uBCF5\uC120\uD0DD\uB41C\uC601\uC5ED\uC5D0\uC11C\uC2DD\uC744\uC774\uC6A9\uD558\uC5EC\uC778\uC1C4\uD560\uC218\uC5C6\uC2B5\uB2C8\uB2E4.\! CellElement-Property_Table=\uC140\uC18D\uC131\uD45C Dictionary-Dynamic_SQL=\uB3D9\uC801 SQL FR-Designer_Form-CheckBoxGroup=\uCCB4\uD06C\uBC15\uC2A4\uADF8\uB8F9 @@ -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:\ +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. 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 @@ -1983,4 +1981,23 @@ FR-Designer_Edit_String_To_Formula=\uBB38\uC790\uC5F4\uC744\uC218\uC2DD\uC73C\uB FR-Base_UnSignIn=\uC544\uC9C1 \uB4F1\uB85D Every=\uAC01 CellWrite-Preview_Cell_Content=\uC140\uB0B4\uC6A9\uBBF8\uB9AC\uBCF4\uAE30 -FormulaD-Data_Fields=\uB370\uC774\uD130\uD56D\uBAA9 \ No newline at end of file +FormulaD-Data_Fields=\uB370\uC774\uD130\uD56D\uBAA9 +FR-Designer_Permissions= +FR-Designer_Form_Button= +FR-Designer_WF_Name= +FR-Designer_Role= +FR-Designer_Double=\uC18C\uC218 +FR-Designer_Query=\uCC3E\uC544\uBCF4\uAE30 +FR-Designer_Font=\uAE00\uAF34 +FR-Designer_Confirm=\uD655\uC778 +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 +FR-Designer_Parent_Marked_Field=\uBD80\uBAA8\uD0DC\uADF8\uD544\uB4DC +FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=\uC120\uD0DD\uD55C\uB370\uC774\uD130\uC138\uD2B8\uC758\uBD80\uBAA8\uD0DC\uADF8\uD544\uB4DC\uC5D0\uB530\uB77C\uD2B8\uB9AC\uC0DD\uC131 +FR-Product_Demo=\uC81C\uD488\uC2DC\uC5F0 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 64aff3d0fa..cc090d98e5 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,4 +1,3 @@ -# 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 @@ -12,7 +11,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 @@ -76,7 +75,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 @@ -96,7 +95,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\u677F +FR-Designer_FS_Close_Other_Templates=\u5173\u95ED\u5176\u4ED6\u6A21\u7248 FR-Designer_File=\u6587\u4EF6 FR-Designer_Filter_Conditions=\u8FC7\u6EE4\u6761\u4EF6 FR-Designer_Finish-Modify-Share=\u5B8C\u6210\u4FEE\u6539\u5E76\u5206\u4EAB @@ -106,7 +105,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=\u989C\u8272 +FR-Designer_Foreground=\u524D\u666F 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) @@ -163,7 +162,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=\u5206\u680F +FR-Designer_ReportColumns-Columns=\u5217\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 @@ -358,7 +357,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, \u63D2\u4EF6\u9700\u6C42\u6700\u4F4E\u7248\u672C +FR-Designer-Plugin_Please_Update_Jar=\u8BF7\u66F4\u65B0Jar\u5305\u81F3\: FR-Designer-Invalid_Page_Number=\u65E0\u6548\u9875\u7801 FR-Designer_Get-CubeGetting=\u83B7\u53D6cube FR-Designer_XMLA_Database=\u6570\u636E\u5E93 @@ -858,7 +857,7 @@ RP_Authority_Edit=\u6743\u9650\u7F16\u8F91 Warnning=\u63D0\u9192 RoleName_Can_Not_Be_Null=\u89D2\u8272\u540D\u4E0D\u5141\u8BB8\u4E3A\u7A7A\u4E14\u4E0D\u80FD\u91CD\u590D Application=\u5E94\u7528\u7A0B\u5E8F -Formula_Dictionary_Display_Examples_Html=\u5B9E\u9645\u503C\u8303\u56F4\u4E3A \ +Formula_Dictionary_Display_Examples_Html=\u5B9E\u9645\u503C\u8303\u56F4\u4E3A \=range(100),\u5BF9\u5B9E\u9645\u503C\u8303\u56F4\u5185\u7684\u6BCF\u4E2A$$$\u7684\u663E\u793A\u516C\u5F0F\u4E3A \=0 - $$$\uFF0C
\u5219\u6700\u7EC8\u7684\u7ED3\u679C\u5B9E\u9645\u503C\u4E3A1, 2, ..., 100,\u663E\u793A\u503C\u4E3A-1, -2, ... , -100\u3002
  ECP-error_pwd=\u5BC6\u7801\u9519\u8BEF FR-Hyperlink_ChartHyperlink=\u56FE\u8868\u8D85\u94FE M_Edit-FormatBrush=\u683C\u5F0F\u5237(B) @@ -989,7 +988,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 \ +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 Schedule-Template_Parameter=\u6A21\u677F\u53C2\u6570 JSShow=\u52A8\u6001\u5C55\u793A Level_coordinates=\u5C42\u6B21\u5750\u6807 @@ -1133,7 +1132,7 @@ FRFont-bold=\u52A0\u7C97 FR-Designer_Set_Submit_Condition=\u8BBE\u7F6E\u63D0\u4EA4\u6761\u4EF6 Form-Change_Widget_Name=\u66F4\u6539\u63A7\u4EF6\u540D ReportColumns-Report_Columns=\u62A5\u8868\u5206\u680F -Can_not_use_FormatBursh=\u4E0D\u80FD\u5BF9\u591A\u91CD\u9009\u5B9A\u533A\u57DF\u4F7F\u7528\u683C\u5F0F\u5237\! +FR-Designer_Can_not_use_FormatBursh=\u4E0D\u80FD\u5BF9\u591A\u91CD\u9009\u5B9A\u533A\u57DF\u4F7F\u7528\u683C\u5F0F\u5237\! CellElement-Property_Table=\u5355\u5143\u683C\u5C5E\u6027\u8868 Dictionary-Dynamic_SQL=\u52A8\u6001SQL FR-Designer_Form-CheckBoxGroup=\u590D\u9009\u6846\u7EC4 @@ -1371,7 +1370,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"\ +Formula_Tips=\u516C\u5F0F\u5FC5\u987B\u4EE5"\="\u53F7\u5F00\u5934\uFF01 FR-Action_Copy=\u590D\u5236 Compile_Success=\u7F16\u8BD1\u6210\u529F BackgroundTexture-RecycledPaper=\u518D\u751F\u7EB8 @@ -1536,7 +1535,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 \ +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 StyleAlignment-Horizontal=\u6C34\u5E73\u5BF9\u9F50 HyperLink_Must_Alone_Reset=\u591A\u4E2A\u8D85\u94FE ExpandD-Expand_Direction=\u6269\u5C55\u65B9\u5411 @@ -1986,4 +1985,19 @@ FormulaD-Data_Fields=\u6570\u636E\u9879 FR-Designer_Role=\u89D2\u8272 FR-Designer_Permissions=\u6743\u9650 FR-Designer_Form_Button=\u6309\u94AE -FR-Designer_WF_Name=\u540D\u79F0 \ No newline at end of file +FR-Designer_WF_Name=\u540D\u79F0 +FR-Designer_Double=\u5C0F\u6570 +FR-Designer_Query=\u67E5\u8BE2 +FR-Designer_Font=\u5B57\u4F53 +FR-Designer_Confirm=\u786E\u8BA4 +FR-Designer_Parameter=\u53C2\u6570 +FR-Designer-Plugin_Plugin=\u63D2\u4EF6 +FR-Designer_Background=\u80CC\u666F +Template=\u6A21\u7248 + +FR-Designer_Original_Marked_Filed=\u539F\u59CB\u6807\u8BB0\u5B57\u6BB5 +FR-Designer_Build_Tree_Accord_Marked_Filed_Length=\u4F9D\u8D56\u6240\u9009\u6570\u636E\u96C6\u7684\u6807\u8BB0\u5B57\u6BB5\u7684\u957F\u5EA6\u6784\u5EFA\u6811 +FR-Designer_Tree_Data_Field=\u6811\u6570\u636E\u5B57\u6BB5 +FR-Designer_Parent_Marked_Field=\u7236\u6807\u8BB0\u5B57\u6BB5 +FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=\u4F9D\u8D56\u6240\u9009\u6570\u636E\u96C6\u7684\u7236\u6807\u8BB0\u5B57\u6BB5\u6784\u5EFA\u6811 +FR-Product_Demo=\u4EA7\u54C1\u6F14\u793A 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 9994427d88..9278fd6e1b 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,7 +1,6 @@ -# 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 @@ -9,10 +8,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\u6D88\u606F +FR-Designer-BBSLogin_Privite-Message=\u79C1\u4EBA\u8A0A\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 @@ -106,8 +105,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=\u984F\u8272 -FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\u66AB\u4E0D\u652F\u6301\u8868\u55AE\u6B0A\u9650\u7DE8\u8F2F +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_Form-Report=\u5831\u8868\u683C\u5F0F FR-Designer_Form_EmbeddedTD=\u5167\u5D01\u683C\u5F0F FR-Designer_Form_Module=\u6A21\u7D44\u683C\u5F0F @@ -122,7 +121,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=\u8F38\u5165\u898F\u5247 +FR-Designer_Input_Rule=\u586B\u5BEB\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 @@ -137,7 +136,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\u6301\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\u63F4\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 @@ -152,7 +151,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=\u7576\u4E0B +FR-Designer_Present=\u6A21\u5F0F FR-Designer_Preview=\u9810\u89BD FR-Designer_Preview-Data-Confusion=\u6DF7\u6DC6\u8CC7\u6599\u9810\u89BD FR-Designer_Product_Demo=\u7522\u54C1\u5C55\u793A @@ -162,9 +161,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=\u5831\u8868\u6B04\u4F4D +FR-Designer_ReportColumns-Columns=\u6B04\u5206\u6B04 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 @@ -181,7 +180,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 @@ -195,10 +194,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=\u5C0F\u5DE5\u5177 +FR-Designer_Widget=\u63A7\u5236\u9805 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\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_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_bold=\u7C97\u9AD4 FR-Designer_font=\u5B57\u9AD4 FR-Designer_italic=\u659C\u9AD4 @@ -349,7 +348,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\u9336\u7B26 +FR-Designer_TableDismember=\u88FD\u8868\u7B26 FR-Designer_Space=\u7A7A\u683C FR-Designer_CommaDismenber=\u9017\u865F FR-Designer_Other=\u5176\u4ED6 @@ -357,7 +356,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, \u63D2\u4EF6\u9700\u6C42\u6700\u4F4E\u7248\u672C +FR-Designer-Plugin_Please_Update_Jar=\u8ACB\u66F4\u65B0Jar\u5305\u81F3\: FR-Designer-Invalid_Page_Number=\u7121\u6548\u9801\u78BC FR-Designer_Get-CubeGetting=\u7372\u53D6cube FR-Designer_XMLA_Database=\u8CC7\u6599\u5EAB @@ -393,7 +392,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\u6301\u5B57\u5143\u4E32\u7DE8\u8F2F\u70BA\u516C\u5F0F +FR-Designer_Surport_String_To_Formula=\u652F\u63F4\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 @@ -560,20 +559,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\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_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_Too_Large_To_Paste=\u7D44\u4EF6\u5927\u5C0F\u8D85\u51FA\u908A\u754C\uFF0C\u7121\u6CD5\u7C98\u8CBC\uFF01 FR-Designer_Too_Small_To_Paste=\u6B64\u8655\u7121\u6CD5\u7C98\u8CBC\uFF0C\u5C0F\u65BC\u7D44\u4EF6\u6700\u5C0F\u9AD8\u5EA6\uFF01 -FR-Designer_Initial_Background_Tips= -FR-Designer_Mouse_Move_Tips= -FR-Designer_Mouse_Click_Tips= +FR-Designer_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_AxisReversed=\u8EF8\u9006\u5E8F FR-Designer_Logarithmic=\u5C0D\u6578\u523B\u5EA6 FR-Designer_Chart_Log_Base=\u5E95\u6578 @@ -582,20 +581,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= -FR-Designer_Reset= -FR-Designer_AllCategories= -FR-Designer-Selected_Widget= -FR-Designer_SimpleCross_Report= -FR-Designer_LocalWidget= +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_Edit_Button_ToolBar=\u7DE8\u8F2F\u6309\u9215\u6240\u5728\u5DE5\u5177\u6B04 FR-Designer_Remove_Button_ToolBar=\u79FB\u9664\u6309\u9215\u6240\u5728\u5DE5\u5177\u6B04 -FR-Designer_Install_Template= -FR-Designer_Allow-Blank= -FR-Designer_Delete_Template= -FR-Designer_Download_Template= -FR-Designer_DoubleLayer_Report= -FR-Designer_Validate= +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 CellWrite-InsertRow_NULL=\u7A7A\u503C DashBoard-ChartFloat=\u5716\u8868 contact_info=\u806F\u7E6B\u8A0A\u606F(\u9078\u586B) @@ -611,12 +610,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=Key has been copy to clipboard +FR-Designer-Basic_Activation_Key_Copy_OK=\u5DF2\u8907\u88FD\u5230\u526A\u8CBC\u677F Utils-Current_Sheet=\u7576\u524D\u7684Sheet ConditionB-is_less_than=\u5C0F\u65BC BorderLayout-West=\u897F AnalysisLine=\u5206\u6790\u7DDA\u578B -Layer_Report_Warnning_info=\u5217\u5F0F\u5F15\u64CE\u9069\u7528\u65BC\u5927\u8CC7\u6599\u91CF\u60C5\u5F62\u4E0B\u3002
\u4F7F\u7528\u6B64\u5F15\u64CE\u5F88\u591A\u5831\u8868\u7279\u6027\u5C07\u4E0D\u518D\u652F\u6301\uFF0C
\u8A73\u7D30\u5167\u5BB9\u8ACB\u898B\u76F8\u95DC\u6587\u6A94\u3002 +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 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 @@ -624,13 +623,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=Warning +FR-Designer_Plugin_Should_Update_Title=\u63D2\u4EF6\u5347\u7D1A\u63D0\u9192 Server-Define_Data_Connection=\u5B9A\u7FA9\u8CC7\u6599\u9023\u63A5 BarInside=\u67F1\u5B50\u5167\u5074 Border-Color=\u6846\u7DDA\u984F\u8272 NotAllow=\u4E0D\u5408\u6CD5 Utils-File_type=\u6A94\u6848\u985E\u578B -FR-Designer-Plugin_Install_From_Local=Install plugin from local file +FR-Designer-Plugin_Install_From_Local=\u5F9E\u672C\u5730\u6587\u4EF6\u5B89\u88DD Summary_Method=\u532F\u7E3D\u65B9\u5F0F Select_Specified_Grouping=\u9078\u64C7\u81EA\u5B9A\u7FA9\u5206\u7D44 HF-Number_of_Page=\u7E3D\u9801\u6578 @@ -638,13 +637,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=Detecting update +FR-Designer-Plugin_Detecting_Update=\u6B63\u5728\u6AA2\u6E2C\u66F4\u65B0 HF-Whether_to_define_the_selected_type=\u662F\u5426\u5B9A\u7FA9\u9078\u4E2D\u7684\u985E\u578B StyleAlignment-Right=\u9760\u53F3\u5C0D\u9F4A FR-Designer_Alignment-Style=\u5C0D\u9F4A\u65B9\u5F0F PageSetup-Title_Start_Column=\u91CD\u8907\u6A19\u984C\u6B04 Tree-Mutiple_Selection_Or_Not=\u591A\u9078 -FR-Designer-Plugin_Search=Search +FR-Designer-Plugin_Search=\u641C\u7D22 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 @@ -663,7 +662,7 @@ Email-Can_Preview_Report_Content=\u6B63\u6587\u9810\u89BD\u5831\u8868\u5167\u5BB FR-Designer-FRFont_Italic=\u659C\u9AD4 CellWrite-Print_Background=\u5217\u5370/\u532F\u51FA\u5132\u5B58\u683C\u80CC\u666F Wizard=\u56AE\u5C0E -Preference-Is_Drag_Permited=\u652F\u6301\u62D6\u62FD +Preference-Is_Drag_Permited=\u652F\u63F4\u62D6\u62FD FR-Designer_Release_Lock=\u89E3\u9396 Form-Delimiter=\u5206\u9694\u7B26 wrong=\u51FA\u932F\u4E86 @@ -676,7 +675,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= +FR-Designer-Basic_Only_Submit_Current_Sheet=\u53EA\u63D0\u4EA4\u7576\u524Dsheet Sort-Sort_Order=\u6392\u5217\u9806\u5E8F File-File_Size_Limit=\u6A94\u6848\u5927\u5C0F\u9650\u5236 PrintP-Print=\u5217\u5370(T) @@ -685,12 +684,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=Update from local file +FR-Designer_Plugin_Normal_Update_From_Local=\u5F9E\u672C\u5730\u6A94\u6848\u66F4\u65B0 BackgroundTexture-Canvas=\u756B\u5E03 BarOutSide=\u67F1\u5B50\u5916\u5074 Preview_ToolTips=\u9810\u89BD\u63D0\u793A FRFont-Family=\u540D\u5B57 -FR-Lic_does_not_Support_Remote=\u60A8\u7576\u524D\u4F7F\u7528\u7684lic\u4E0D\u652F\u6301\u9060\u7A0B\u8A2D\u8A08\u529F\u80FD\uFF0C\u8ACB\u5347\u7D1A\u60A8\u7684lic +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 InterfaceStyle=\u98A8\u683C RWA-Key=\u4E3B\u9375 WF-Name=\u540D\u7A31 @@ -715,7 +714,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=Error to read plugin list +FR-Designer-Plugin_Read_Plugin_List_Error=\u53BB\u8B80\u63D2\u4EF6\u5217\u8868\u6642\u767C\u751F\u932F\u8AA4 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 @@ -740,7 +739,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=Illegal plugin zip +FR-Designer-Plugin_Illegal_Plugin_Zip=\u4E0D\u662F\u5408\u6CD5\u7684\u63D2\u4EF6\u5305 RCodeVersion=\u7248\u672C Convert=\u8F49\u63DB Please_Drag=\u8ACB\u62D6\u5165\u5217\u6B04\u6B04\u4F4D\u3001\u532F\u7E3D\u6B04\u4F4D @@ -795,7 +794,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=Loading plugins from store +FR-Designer-Plugin_Load_Plugins_From_Server=\u6B63\u5728\u5F9E\u63D2\u4EF6\u5546\u5E97\u7372\u53D6\u6578\u64DA 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 @@ -810,7 +809,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=Give Name +GIVE-NAME=\u547D\u540D FR-Designer_Rename=\u91CD\u547D\u540D Utils-Merge_Cell=\u5408\u5E76\u5132\u5B58\u683C Style-Spacing_After=\u6BB5\u5F8C @@ -833,7 +832,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=Current Shortcut +Support-Current_Auto_Complete_Shortcut=\u7576\u524D\u5FEB\u6377\u9375 GROUPING_MODE=\u666E\u901A\u5206\u7D44 DBCP_MAX_IDLE=\u6700\u5927\u7A7A\u9591\u9023\u63A5\u6578 BackgroundTexture-BlueTissuePaper=\u85CD\u8272\u7802\u7D19 @@ -845,7 +844,7 @@ PageSetup-Placement_Center_on_Page=\u7F6E\u4E2D\u65B9\u5F0F sure_to_delete=\u78BA\u8A8D\u522A\u9664 Already_exists_not_add_repeat=\u5DF2\u7D93\u5B58\u5728\uFF0C\u8ACB\u4E0D\u8981\u91CD\u8907\u65B0\u589E Axis_Title=\u8EF8\u6A19\u984C -FR-Designer-Plugin_Install_Failed=Install failed +FR-Designer-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 @@ -858,14 +857,14 @@ RP_Authority_Edit=\u6B0A\u9650\u7DE8\u8F2F Warnning=\u63D0\u9192 RoleName_Can_Not_Be_Null=\u89D2\u8272\u540D\u4E0D\u5141\u8A31\u70BA\u7A7A\u4E14\u4E0D\u80FD\u91CD\u8907 Application=\u61C9\u7528\u7A0B\u5F0F -Formula_Dictionary_Display_Examples_Html= +Formula_Dictionary_Display_Examples_Html=\u5BE6\u969B\u503C\u7BC4\u570D\u70BA \=range(100),\u5C0D\u5BE6\u969B\u503C\u7BC4\u570D\u5167\u7684\u6BCF\u500B$$$\u7684\u986F\u793A\u516C\u5F0F\u70BA \=0 - $$$\uFF0C
\u5247\u6700\u7D42\u7684\u7D50\u679C\u5BE6\u969B\u503C\u70BA1, 2, ..., 100,\u986F\u793A\u503C\u70BA-1, -2, ... , -100\u3002
  ECP-error_pwd=\u5BC6\u78BC\u932F\u8AA4 FR-Hyperlink_ChartHyperlink=\u5716\u8868\u8D85\u93C8 M_Edit-FormatBrush=\u8907\u88FD\u683C\u5F0F(B) Indent-Pixel=\u50CF\u7D20 FR-Designer-Widget-Style_Border_Line=\u6846\u7DDA\u7C97\u7D30 Widget-Default_Widget_Config=\u57FA\u672C\u63A7\u5236\u9805 -Version-does-not-support=\u60A8\u7576\u524D\u4F7F\u7528\u7684lic\u4E0D\u652F\u6301\u9060\u7A0B\u8A2D\u8A08\u529F\u80FD\uFF0C\u8ACB\u5347\u7D1A\u60A8\u7684lic +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 StyleAlignment-Right_To_Left=\u5F9E\u53F3\u5411\u5DE6 Style-Spacing_Before=\u6BB5\u524D Has_Existed=\u5DF2\u7D93\u5B58\u5728 @@ -881,7 +880,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\u93C8\u63A5\u56DE\u6536\u6AA2\u67E5\u6578 +DBCP_NUM_TEST_PER_EVCTION_RUN=\u7A7A\u9591\u9023\u63A5\u56DE\u6536\u6AA2\u67E5\u6578 FR-Designer-FRFont_Family=\u540D\u5B57 Device=\u8A2D\u5099 M_Insert-Cell=\u5132\u5B58\u683C\u5143\u7D20 @@ -889,7 +888,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\u6301\u5132\u5B58\u683C\u7DE8\u8F2F\u5668 +Preference-Support_Cell_Editor_Definition=\u652F\u63F4\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 @@ -962,10 +961,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=Plugin has been installed +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-Widget_Tree_And_Table=\u63A7\u5236\u9805\u6A39\u548C\u63A7\u5236\u9805\u8868 FR-Base_Help=\u8AAA\u660E -FR-Designer-Plugin_Update_Successful=Update successfully +FR-Designer-Plugin_Update_Successful=\u63D2\u4EF6\u5347\u7D1A\u6210\u529F\uFF0C\u91CD\u555F\u4F3A\u670D\u5668\u4EE5\u751F\u6548 August=\u516B\u6708 LOG-Is_Being_Openned=\u6B63\u5728\u6253\u958B BackgroundTexture-Oak=\u6A61\u6728 @@ -973,7 +972,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=Inner Parameter +Inner_Parameter=\u5167\u7F6E\u53C3\u6578 Required=\u5FC5\u586B Summary=\u532F\u7E3D template_unopened=\u7121\u6CD5\u6253\u958B\u7BC4\u672C @@ -982,14 +981,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=Please +PLEASE=\u8ACB 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= +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 Schedule-Template_Parameter=\u7BC4\u672C\u53C3\u6578 JSShow=\u52D5\u614B\u5C55\u793A Level_coordinates=\u5C64\u6B21\u5750\u6A19 @@ -1003,7 +1002,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=Error to connect plugin store +FR-Designer-Plugin_Connect_Server_Error=\u7121\u6CD5\u9023\u63A5\u63D2\u4EF6\u5546\u5E97\uFF0C\u8ACB\u7A0D\u5F8C\u518D\u8A66 Import-Excel_Source=Excel\u6E90\u6A94\u6848 Utils-Left_to_Right_a=\u5F9E\u5DE6\u5F80\u53F3 ExpandD-Expand_Attribute=\u64F4\u5C55\u5C6C\u6027 @@ -1018,7 +1017,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=Activation Key\: +FR-Designer-Basic_Activation_Key=\u8A2D\u8A08\u5668\u7DE8\u865F\: FR-App-Template_Report_Not_Exist=\u6240\u9078\u5831\u8868\u4E0D\u5B58\u5728 Protected=\u4FDD\u8B77 Skip=\u8DF3\u904E @@ -1039,7 +1038,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\u6301\u9060\u7A0B\u8A2D\u8A08 +NS-war-remote=\u932F\u8AA4\u4EE3\u78BC\:1117 \u58D3\u7E2E\u90E8\u7F72\u4E0D\u652F\u63F4\u9060\u7A0B\u8A2D\u8A08 Sche-Minute=\u5206 Three_Rows_Of_Three_Grid=\u4E09\u5217\u4E09\u6B04\u7684\u683C\u5B50 WorkSheet=\u81EA\u7531\u5831\u8868 @@ -1048,7 +1047,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=Installed +FR-Designer-Plugin_Installed=\u5DF2\u5B89\u88DD FR-Designer-Hyperlink_Name=\u540D\u5B57 FR-Designer_Form-Button=\u6309\u9215 Black=\u9ED1\u8272 @@ -1058,7 +1057,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\u93C8\u63A5 +Datasource-Test_Connection=\u6E2C\u8A66\u9023\u63A5 Function-Function_Manager=\u51FD\u6578\u7BA1\u7406\u5668 Host_Name=\u4E3B\u6A5F\u540D CellWrite-Show_As_HTML=\u7528HTML\u986F\u793A\u5167\u5BB9 @@ -1068,7 +1067,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=Client +Client=\u5BA2\u6236\u7AEF 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 @@ -1125,7 +1124,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\u5C0D\u9F4A +FR-Designer-StyleAlignment_Right=\u9760\u53F3 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 @@ -1139,7 +1138,7 @@ Dictionary-Dynamic_SQL=\u52D5\u614BSQL FR-Designer_Form-CheckBoxGroup=\u5FA9\u9078\u6846\u7D44 DBCP_TIME_BETWEEN_EVICTIONRUNSMILLIS=\u7A7A\u9591\u9023\u63A5\u56DE\u6536\u5668\u4F11\u7720\u6642\u9593 ReportD-Export_Hided_Column=\u532F\u51FA\u96B1\u85CF\u6B04 -Preference-Support_Undo=\u652F\u6301\u5FA9\u539F +Preference-Support_Undo=\u652F\u63F4\u5FA9\u539F FR-mobile_report_analysis=\u5831\u8868\u89E3\u6790 Month=\u6708 Utils-Column_Width=\u6B04\u5BEC @@ -1163,12 +1162,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=\u93C8\u63A5\u5931\u6557 +Datasource-Connection_failed=\u9023\u63A5\u5931\u6557 CategoryName=\u5206\u985E\u540D DBCP_INITIAL_SIZE=\u521D\u59CB\u5316\u9023\u63A5\u6578 Colors=\u984F\u8272 FR-Import-Export_CSV=CSV\u683C\u5F0F(\u9017\u865F\u5206\u9694) -FR-Designer-StyleAlignment_Left=\u9760\u5DE6\u5C0D\u9F4A +FR-Designer-StyleAlignment_Left=\u9760\u5DE6 BackgroundTexture-PaperBag=\u7D19\u888B RWA-BuildIn_SQL=\u5167\u7F6ESQL SingleLayer=\u55AE\u5C64 @@ -1207,7 +1206,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=Plugin has been disabled +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 Sort-Original=\u4E0D\u6392\u5E8F Utils-Top_to_Bottom_a=\u5F9E\u4E0A\u5F80\u4E0B Parameter-String=\u5B57\u5143\u4E32 @@ -1228,7 +1227,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=Install successful +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 Template_Path=\u7BC4\u672C\u8DEF\u5F91 FR-Designer-FRFont_Bold=\u7C97\u9AD4 Poly_Name=\u805A\u5408\u584A\u540D @@ -1237,7 +1236,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=Capacity +Capacity=\u5BB9\u91CF 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 @@ -1258,7 +1257,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\u6301\u683C\u5F0F\u6821\u9A57 +DateFormat-Custom_Warning=\u8A3B\uFF1A\u81EA\u5B9A\u7FA9\u65E5\u671F\u683C\u5F0F\u4E0D\u652F\u63F4\u683C\u5F0F\u6821\u9A57 Unit_MM=\u516C\u5398 Server-Start=\u555F\u52D5 CellPage-Can_Break_On_Paginate=\u5206\u9801\u6642\u53EF\u4EE5\u65B7\u958B @@ -1287,7 +1286,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=Illegal plugin,cannot be installed +FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install=\u4E0D\u53EF\u8B58\u5225\u7684\u63D2\u4EF6\uFF0C\u7121\u6CD5\u5B89\u88DD 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 @@ -1318,7 +1317,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=Auto Complete Shortcut +Support-Auto_Complete_Shortcut=\u81EA\u52D5\u88DC\u5168\u5FEB\u6377\u9375 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 @@ -1334,7 +1333,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=Active +FR-Designer-Plugin_Active=\u555F\u7528 Utils-File_name=\u6A94\u6848\u540D NOT_NULL_Des=\u4E0D\u80FD\u70BA\u7A7A Right_Border_Line=\u53F3\u6846\u7DDA @@ -1348,17 +1347,17 @@ ReportColumns-Columns_vertically=\u6B04\u5206\u6B04 ReportGUI-Print_Background=\u5217\u5370/\u532F\u51FA\u5831\u8868\u80CC\u666F Export-CSV=CSV\u683C\u5F0F(\u9017\u865F\u5206\u9694) M_Edit-Paste=\u8CBC\u4E0A(P) -FR-Designer-Basic_Restart_Designer=Restart designer +FR-Designer-Basic_Restart_Designer=\u91CD\u555F\u8A2D\u8A08\u5668 ReportServerP-PDF2-INFO=\u50C5\u5728LINUX/UNIX\u4E0B\u672A\u5B89\u88DD\u4E2D\u6587\u5B57\u9AD4\u6642\u4F7F\u7528 FormulaD-Check_Valid=\u6AA2\u67E5\u5408\u6CD5\u6027 server_disconnected=\u9023\u63A5\u5DF2\u65B7\u958B ParameterD-Parameter_name_cannot_be_null=\u53C3\u6578\u7684\u540D\u5B57\u4E0D\u53EF\u4EE5\u70BA\u7A7A -FR-Designer-Plugin_Version_Is_Lower_Than_Current=The version of plugin is lower than current +FR-Designer-Plugin_Version_Is_Lower_Than_Current=\u5347\u7D1A\u5305\u7684\u63D2\u4EF6\u7248\u672C\u6C92\u6709\u6BD4\u7576\u524D\u7684\u9AD8 RWA-NotChange_Unmodified=\u4E0D\u6539\u8B8A\u6642\u4E0D\u66F4\u65B0 User_Information=\u7528\u6236\u8A0A\u606F Custom_styles_lost=\u81EA\u5B9A\u7FA9\u6A23\u5F0F\u5DF2\u4E1F\u5931 PageSetup-Margin=\u9801\u908A\u8DDD -M-New_FormBook=\u5EFA\u7ACB\u65B0\u5831\u8868 +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 @@ -1370,10 +1369,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\u6301\u8A31\u53EF\u6B0A\u63A7\u5236 -Formula_Tips=\u516C\u5F0F\u5FC5\u9808\u4EE5"\ +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 FR-Action_Copy=\u8907\u88FD -Compile_Success=Compile Success +Compile_Success=\u7DE8\u8B6F\u6210\u529F BackgroundTexture-RecycledPaper=\u518D\u751F\u7D19 StyleAlignment-Single_Line=\u55AE\u5217\u986F\u793A Utils-Move_Down=\u4E0B\u79FB @@ -1460,7 +1459,7 @@ DBCP_TEST_ON_BORROW=\u7372\u53D6\u9023\u63A5\u524D\u6AA2\u9A57 FR-Designer_layerIndex=\u4F9D\u8CF4\u7684\u5C64\u6578 WEB-Write_Setting=\u586B\u5831\u9762\u9762\u8A2D\u5B9A M-New_WorkBook=\u65B0\u589E\u5DE5\u4F5C\u7C3F -FR-Designer-Plugin_Has_Been_Actived=Plugin is now active +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 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 @@ -1510,7 +1509,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\u6301\uFF0C\u662F\u5426\u5B89\u88DD({R1} m)? +FR-Designer-Plugin_DownLoadMessage=\u63D2\u4EF6\u9700\u8981\u4F9D\u8CF4\u7684\u652F\u63F4\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 @@ -1536,7 +1535,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\ +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 StyleAlignment-Horizontal=\u6C34\u5E73\u5C0D\u9F4A HyperLink_Must_Alone_Reset=\u591A\u500B\u8D85\u93C8 ExpandD-Expand_Direction=\u64F4\u5C55\u65B9\u5411 @@ -1566,7 +1565,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=Compile Success And Then Save +Compile_Success_And_Then_Save=\u7DE8\u8B6F\u6210\u529F\u624D\u80FD\u6B63\u78BA\u5132\u5B58 FR-Designer_Layout-Padding=\u5167\u908A\u8DDD Layout_Container=\u4F48\u5C40\u5BB9\u5668 Admin=\u7BA1\u7406\u54E1 @@ -1583,7 +1582,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=Disable +FR-Designer-Plugin_Disable=\u7981\u7528 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 @@ -1594,7 +1593,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=\u8F38\u51FA\u96E2\u7DDAhtml\u5831\u8868 +Export-Offline-Html=\u532F\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 @@ -1614,14 +1613,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=Delete +FR-Designer-Plugin_Delete=\u522A\u9664 Above=\u4EE5\u4E0A\u7248\u672C Utils-The-Chart=\u5716\u8868 FRFont-plain=\u5E38\u898F Calculating=\u8655\u7406\u4E2D Form-Object=\u8868\u55AE\u5C0D\u8C61 May=\u4E94\u6708 -FR-Designer_Plugin_Normal_Update=Update +FR-Designer_Plugin_Normal_Update=\u66F4\u65B0 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 @@ -1633,10 +1632,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=Custom +Preference-Custom=\u81EA\u5B9A\u7FA9 BackgroundTexture-Newsprint=\u65B0\u805E\u7D19 ConditionB-Add_bracket=\u65B0\u589E\u62EC\u865F -Datasource-Connection_successfully=\u93C8\u63A5\u6210\u529F +Datasource-Connection_successfully=\u9023\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 @@ -1658,9 +1657,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= +Please_Drag_ParaPane=\u8ACB\u62D6\u5165\u53C3\u6578\u9762\u677F Come_True=\u5BE6\u73FE -ISEMPTY=is empty +ISEMPTY=\u70BA\u7A7A Background-Texture=\u7D0B\u7406 FR-Designer_Verify-Message=\u932F\u8AA4\u8A0A\u606F Locked=\uFF08\u5DF2\u9396\u5B9A\uFF09 @@ -1714,7 +1713,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=Restart later +FR-Designer-Basic_Restart_Designer_Later=\u7A0D\u5F8C\u91CD\u555F StyleAlignment-Top=\u9760\u4E0A\u5C0D\u9F4A ReportServerP-First=\u9996\u9801 Not_Exist=\u4E0D\u5B58\u5728 @@ -1736,7 +1735,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=Warning +FR-Designer-Plugin_Warning=\u8B66\u544A 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 @@ -1813,7 +1812,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\u6301\u55AE\u6A94\u6848\u4E0A\u50B3 +SINGLE_FILE_UPLOAD=\u53EA\u652F\u63F4\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 @@ -1823,13 +1822,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=All plugins +FR-Designer-Plugin_All_Plugins=\u5168\u90E8\u63D2\u4EF6 FR-Designer_Prepare_Export=\u958B\u59CB\u532F\u51FA\uFF0C\u8ACB\u7A0D\u5019 -DBCP_TEST_ON_RETURN=\u6B78\u9084\u93C8\u63A5\u524D\u6AA2\u9A57 +DBCP_TEST_ON_RETURN=\u6B78\u9084\u9023\u63A5\u524D\u6AA2\u9A57 no-alternatives=\u6C92\u6709\u9078\u64C7\u9805 FR-Designer_Submmit_WClass=\u5F8C\u53F0\u985E\u63D0\u4EA4 M_Insert-Slope_Line=\u63D2\u5165\u659C\u7DDA -FR-Designer-Plugin_Plugin_Description=Description +FR-Designer-Plugin_Plugin_Description=\u63D2\u4EF6\u63CF\u8FF0 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 @@ -1848,7 +1847,7 @@ Form-NullLayout=\u7D55\u5C0D\u5B9A\u4F4D ConditionB-Remove_bracket=\u53BB\u6389\u62EC\u865F email=\u90F5\u7BB1 Minute=\u5206\u9418 -FR-Designer-Plugin_Update=Plugins to update +FR-Designer-Plugin_Update=\u63D2\u4EF6\u66F4\u65B0 alraedy_close=\u5DF2\u7D93\u95DC\u9589 ComboCheckBox-End_Symbol=\u7D50\u675F\u7B26 DataColumn=\u8CC7\u6599\u6B04 @@ -1858,17 +1857,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=Group Count +Group_Count=\u8868\u793A\u7E3D\u500B\u6578 EndValue=\u7D50\u675F\u503C FR-Designer_Sytle-Indentation=\u7E2E\u9032 DownBarBorderStyleAndColor=\u8DCC\u67F1\u6A23\u5F0F World=\u4E16\u754C -FR-Designer-Basic_Cancel=Cancel +FR-Designer-Basic_Cancel=\u53D6\u6D88 Finally=\u6700\u5F8C Low=\u4F4E Please_Input_The_Key=\u8ACB\u8F38\u5165\u5C0D\u61C9\u5730\u5716\u4F7F\u7528\u7684key Smart=\u667A\u80FD -Preference-Predefined=Predefined +Preference-Predefined=\u9810\u5B9A\u7FA9 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 @@ -1876,14 +1875,14 @@ RCodeDrawPix=\u50CF\u7D20 FR-Designer-Widget-Style_Alpha=\u4E0D\u900F\u660E\u5EA6 BorderLayout-North=\u5317 HJS-Current_Page=\u7576\u524D\u9801 -Compile=Compile +Compile=\u7DE8\u8B6F Show_Blank_Row=\u88DC\u5145\u7A7A\u767D\u5217 TableData_Dynamic_Parameter_Setting=\u52D5\u614B\u53C3\u6578\u6CE8\u5165 FR-Background_Image_Default=\u9810\u8A2D BackgroundTexture-WhiteMarble=\u767D\u8272\u5927\u7406\u77F3 DataFunction-Sum=\u6C42\u548C Collect-The_user_information_code_is_invalid=\u9019\u500B\u7528\u6236\u8A0A\u606F\u78BC\u662F\u975E\u6CD5\u7684 -Preference-Locale=Locale +Preference-Locale=\u570B\u969B\u5316 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 @@ -1916,7 +1915,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=Double click to copy key to clipboard +FR-Designer-Basic_Copy_Activation_Key=\u96D9\u64CA\u8A2D\u8A08\u5668\u7DE8\u865F\u53EF\u8907\u88FD\u5230\u526A\u8CBC\u677F Continuum=\u76F8\u9130\u9023\u7E8C BackgroundTexture-MediumWood=\u6DF1\u8272\u6728\u88FD Datasource-Column_Index=\u6B04\u5E8F\u865F @@ -1925,11 +1924,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=Delete plugin +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 FormulaD-Functions=\u51FD\u6578 Mobile_Terminal=\u884C\u52D5\u8A2D\u5099 CheckBox=\u5FA9\u9078\u6846 -FR-Designer-Plugin_Install=Install +FR-Designer-Plugin_Install=\u5B89\u88DD Sun=\u65E5 FR-Designer_ToolBar_Bottom=\u5E95\u90E8\u5DE5\u5177\u6B04 Widget-Width=\u63A7\u5236\u9805\u5BEC\u5EA6 @@ -1986,4 +1985,20 @@ FormulaD-Data_Fields=\u8CC7\u6599\u9805 FR-Designer_Role=\u89D2\u8272 FR-Designer_Permissions=\u6B0A\u9650 FR-Designer_Form_Button=\u6309\u9215 -FR-Designer_WF_Name=\u540D\u7A31 \ No newline at end of file +FR-Designer_WF_Name=\u540D\u7A31 +FR-Designer_Double=\u5C0F\u6578 +FR-Designer_Query=\u67E5\u8A62 +FR-Designer_Font=\u5B57\u9AD4 +FR-Designer_Confirm=\u78BA\u8A8D +FR-Designer_Parameter=\u53C3\u6578 +FR-Designer-Plugin_Plugin=\u63D2\u4EF6 +FR-Designer_Background=\u586B\u6EFF\u8272\u5F69 +Template=\u7BC4\u672C + +FR-Designer_Original_Marked_Filed=\u539F\u59CB\u6A19\u8A18\u6B04\u4F4D +FR-Designer_Build_Tree_Accord_Marked_Filed_Length=\u4F9D\u8CF4\u6240\u9078\u8CC7\u6599\u96C6\u7684\u6A19\u8A18\u6B04\u4F4D\u7684\u9577\u5EA6\u69CB\u5EFA\u6A39\u72C0 +FR-Designer_Can_not_use_FormatBursh=\u7121\u6CD5\u4F7F\u7528\u8907\u88FD\u683C\u5F0F +FR-Designer_Tree_Data_Field=\u6A39\u72C0\u8CC7\u6599\u6B04\u4F4D +FR-Designer_Parent_Marked_Field=\u7236\u6A19\u8A18\u6B04\u4F4D +FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=\u4F9D\u8CF4\u6240\u9078\u8CC7\u6599\u96C6\u7684\u7236\u6A19\u8A18\u6B04\u4F4D\u69CB\u5EFA\u6A39 +FR-Product_Demo=\u529F\u80FD\u5C55\u793A diff --git a/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java b/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java index 501f957df2..c959262139 100644 --- a/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java +++ b/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java @@ -13,10 +13,7 @@ import com.fr.general.LogRecordTime; import com.fr.stable.xml.LogRecordTimeProvider; import javax.swing.*; -import javax.swing.text.BadLocationException; -import javax.swing.text.Document; -import javax.swing.text.SimpleAttributeSet; -import javax.swing.text.StyleConstants; +import javax.swing.text.*; import java.awt.*; import java.awt.event.*; import java.text.SimpleDateFormat; @@ -133,7 +130,6 @@ public class DesignerLogHandler { private LogHandlerArea() { jTextArea = new JTextPane(); - this.setLayout(FRGUIPaneFactory.createBorderLayout()); UIScrollPane js = new UIScrollPane(jTextArea); this.add(js, BorderLayout.CENTER); @@ -297,6 +293,4 @@ public class DesignerLogHandler { }; } - - } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/module/DesignModule.java b/designer_base/src/com/fr/design/module/DesignModule.java index 14ed20aea8..f04aa54741 100644 --- a/designer_base/src/com/fr/design/module/DesignModule.java +++ b/designer_base/src/com/fr/design/module/DesignModule.java @@ -33,6 +33,7 @@ import java.util.Set; * 所有设计器模块的父类 */ public abstract class DesignModule extends TopModule { + public static final String LOCALE_FILE_PATH = "com/fr/design/locale/designer"; public void start() { super.start(); App[] apps = apps4TemplateOpener(); @@ -62,7 +63,7 @@ public abstract class DesignModule extends TopModule { * @return 国际化文件路径 */ public String[] getLocaleFile() { - return new String[]{"com/fr/design/locale/designer"}; + return new String[]{LOCALE_FILE_PATH}; } public Class[] actionsForInsertCellElement() { diff --git a/designer_base/src/com/fr/design/module/DesignModuleFactory.java b/designer_base/src/com/fr/design/module/DesignModuleFactory.java index 77233e4dbb..5b9dcb7624 100644 --- a/designer_base/src/com/fr/design/module/DesignModuleFactory.java +++ b/designer_base/src/com/fr/design/module/DesignModuleFactory.java @@ -1 +1,256 @@ -package com.fr.design.module; import com.fr.base.FRContext; import com.fr.base.chart.BaseChartCollection; import com.fr.design.gui.chart.BaseChartPropertyPane; import com.fr.design.gui.chart.MiddleChartComponent; import com.fr.design.gui.chart.MiddleChartDialog; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.core.WidgetOption; import com.fr.design.gui.frpane.BaseHyperlinkGroup; import com.fr.design.gui.frpane.HyperlinkGroupType; import com.fr.design.mainframe.BaseFormDesigner; import com.fr.design.mainframe.BaseWidgetPropertyPane; import com.fr.design.parameter.HierarchyTreePane; import com.fr.design.parameter.ParameterDesignerProvider; import com.fr.design.parameter.ParameterReader; import com.fr.form.ui.Widget; import com.fr.stable.StableUtils; import java.awt.*; import java.lang.reflect.Constructor; import java.util.ArrayList; /** * Created by IntelliJ IDEA. * Author : Richer * Version: 7.0.3 * Date: 13-7-8 * Time: 下午1:57 */ public class DesignModuleFactory { private static DesignModuleFactory instance = new DesignModuleFactory(); private DesignModuleFactory() { } private HyperlinkGroupType hyperlinkGroupType = new BaseHyperlinkGroup(); private NameableCreator[] creators4Hyperlink; private WidgetOption[] extraOptions; private Class chartEditorClass; private Class chartComponentClass; private Class chartDialogClass; private Class chartPropertyPaneClass; private Class newFormAction; private Class formParaDesigner; private Class paraPropertyPane; private Class formHierarchyPaneCls; private Class widgetPropertyPane; private Class buttonDetailPaneClass; private java.util.List parameterReaderList; public static void registerHyperlinkGroupType(HyperlinkGroupType hyperlinkGroupType) { instance.hyperlinkGroupType = hyperlinkGroupType; } public static HyperlinkGroupType getHyperlinkGroupType() { return instance.hyperlinkGroupType; } public static void registerCreators4Hyperlink(NameableCreator[] nameableCreators) { instance.creators4Hyperlink = nameableCreators; } public static NameableCreator[] getCreators4Hyperlink() { return instance.creators4Hyperlink; } public static void registerExtraWidgetOptions(WidgetOption[] options) { instance.extraOptions = options; } public static WidgetOption[] getExtraWidgetOptions() { if (instance.extraOptions == null) { instance.extraOptions = new WidgetOption[0]; } return instance.extraOptions; } public static void registerChartEditorClass(Class cls) { instance.chartEditorClass = cls; } public static Class getChartEditorClass() { return instance.chartEditorClass; } public static void registerChartComponentClass(Class bcc) { instance.chartComponentClass = bcc; } public static void registerChartDialogClass(Class cd) { instance.chartDialogClass = cd; } public static void registerChartPropertyPaneClass(Class p) { instance.chartPropertyPaneClass = p; } public static void registerNewFormActionClass(Class f) { instance.newFormAction = f; } public static Class getNewFormAction() { return instance.newFormAction; } public static void registerParaPropertyPaneClass(Class p) { instance.paraPropertyPane = p; } /** * 获取参数属性界面 * * @return 参数属性界面. */ public static Object getParaPropertyPane() { if (instance.paraPropertyPane != null) { try { return instance.paraPropertyPane.newInstance(); } catch (Exception e) { FRContext.getLogger().error("Error in Para PropertyPane"); } } return null; } public static void registerFormParaDesignerClass(Class f) { instance.formParaDesigner = f; } public static ParameterDesignerProvider getFormParaDesigner() { if (instance.formParaDesigner != null) { try { return (ParameterDesignerProvider) instance.formParaDesigner.newInstance(); } catch (Exception e) { FRContext.getLogger().error("error in form para designer"); } } return null; } public static void registerFormHierarchyPaneClass(Class fClass) { instance.formHierarchyPaneCls = fClass; } public static HierarchyTreePane getFormHierarchyPane() { return StableUtils.getInstance(instance.formHierarchyPaneCls); } public static void registerWidgetPropertyPaneClass(Class wp) { instance.widgetPropertyPane = wp; } public static BaseWidgetPropertyPane getWidgetPropertyPane(BaseFormDesigner fd) { BaseWidgetPropertyPane wp = null; if (instance.widgetPropertyPane != null) { wp = StableUtils.getInstance(instance.widgetPropertyPane); wp.setEditingFormDesigner(fd); wp.refreshDockingView(); } return wp; } public static MiddleChartComponent getChartComponent(BaseChartCollection collection) { MiddleChartComponent bcc = null; if (instance.chartComponentClass != null) { try { bcc = instance.chartComponentClass.newInstance(); bcc.populate(collection); } catch (InstantiationException e) { FRContext.getLogger().error("Error in ChartComponent instant", e); } catch (IllegalAccessException e) { FRContext.getLogger().error("Error in Access", e); } } return bcc; } /** * kunsnat: 初始化图表向导对话框, 调用静态方法showWindow, 参数window. * * @return 返回调出的ChartDailog */ public static MiddleChartDialog getChartDialog(Window window) { try { Constructor c; if (window instanceof Frame) { c = instance.chartDialogClass.getConstructor(Frame.class); } else { c = instance.chartDialogClass.getConstructor(Dialog.class); } return c.newInstance(window); } catch (Exception e) { FRContext.getLogger().error(e.getMessage(), e); } return null; } /** * kunsnat: 获取图表属性界面 * * @return 返回界面. */ public static BaseChartPropertyPane getChartPropertyPane() { BaseChartPropertyPane bp = null; if (instance.chartPropertyPaneClass != null) { bp = StableUtils.getInstance(instance.chartPropertyPaneClass); } return bp; } public static void clearChartPropertyPane() { if (instance.chartPropertyPaneClass != null) { StableUtils.clearInstance(instance.chartPropertyPaneClass); } } public static void registerButtonDetailPaneClass(Class clazz) { instance.buttonDetailPaneClass = clazz; } public static Class getButtonDetailPaneClass() { return instance.buttonDetailPaneClass; } public static void registerParameterReader(ParameterReader reader) { if (instance.parameterReaderList == null) { instance.parameterReaderList = new ArrayList(); } instance.parameterReaderList.add(reader); } public static ParameterReader[] getParameterReaders() { if (instance.parameterReaderList == null) { return new ParameterReader[0]; } return instance.parameterReaderList.toArray(new ParameterReader[instance.parameterReaderList.size()]); } } \ No newline at end of file +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; +import com.fr.design.gui.controlpane.NameableCreator; +import com.fr.design.gui.core.WidgetOption; +import com.fr.design.gui.frpane.BaseHyperlinkGroup; +import com.fr.design.gui.frpane.HyperlinkGroupType; +import com.fr.design.mainframe.BaseFormDesigner; +import com.fr.design.mainframe.BaseWidgetPropertyPane; +import com.fr.design.parameter.HierarchyTreePane; +import com.fr.design.parameter.ParameterDesignerProvider; +import com.fr.design.parameter.ParameterReader; +import com.fr.form.ui.Widget; +import com.fr.stable.StableUtils; + +import java.awt.*; +import java.lang.reflect.Constructor; +import java.util.ArrayList; + +/** + * Created by IntelliJ IDEA. + * Author : Richer + * Version: 7.0.3 + * Date: 13-7-8 + * Time: 下午1:57 + */ +public class DesignModuleFactory { + private static DesignModuleFactory instance = new DesignModuleFactory(); + + private static ChartCollection chartCollection; + + public static ChartCollection getChartCollection() { + return chartCollection; + } + + public static void setChartCollection(ChartCollection chartCollection) { + DesignModuleFactory.chartCollection = chartCollection; + } + + private DesignModuleFactory() { + + } + + private HyperlinkGroupType hyperlinkGroupType = new BaseHyperlinkGroup(); + private NameableCreator[] creators4Hyperlink; + private WidgetOption[] extraOptions; + private Class chartEditorClass; + private Class chartComponentClass; + private Class chartDialogClass; + private Class chartPropertyPaneClass; + private Class newFormAction; + private Class formParaDesigner; + private Class paraPropertyPane; + private Class formHierarchyPaneCls; + private Class widgetPropertyPane; + private Class buttonDetailPaneClass; + private java.util.List parameterReaderList; + + + public static void registerHyperlinkGroupType(HyperlinkGroupType hyperlinkGroupType) { + instance.hyperlinkGroupType = hyperlinkGroupType; + } + + public static HyperlinkGroupType getHyperlinkGroupType() { + return instance.hyperlinkGroupType; + } + + public static void registerCreators4Hyperlink(NameableCreator[] nameableCreators) { + instance.creators4Hyperlink = nameableCreators; + } + + public static NameableCreator[] getCreators4Hyperlink() { + return instance.creators4Hyperlink; + } + + public static void registerExtraWidgetOptions(WidgetOption[] options) { + instance.extraOptions = options; + } + + public static WidgetOption[] getExtraWidgetOptions() { + if (instance.extraOptions == null) { + instance.extraOptions = new WidgetOption[0]; + } + + return instance.extraOptions; + } + + public static void registerChartEditorClass(Class cls) { + instance.chartEditorClass = cls; + } + + public static Class getChartEditorClass() { + return instance.chartEditorClass; + } + + public static void registerChartComponentClass(Class bcc) { + instance.chartComponentClass = bcc; + } + + public static void registerChartDialogClass(Class cd) { + instance.chartDialogClass = cd; + } + + public static void registerChartPropertyPaneClass(Class p) { + instance.chartPropertyPaneClass = p; + } + + + public static void registerNewFormActionClass(Class f) { + instance.newFormAction = f; + } + + public static Class getNewFormAction() { + return instance.newFormAction; + } + + public static void registerParaPropertyPaneClass(Class p) { + instance.paraPropertyPane = p; + } + + /** + * 获取参数属性界面 + * + * @return 参数属性界面. + */ + public static Object getParaPropertyPane() { + if (instance.paraPropertyPane != null) { + try { + return instance.paraPropertyPane.newInstance(); + } catch (Exception e) { + FRContext.getLogger().error("Error in Para PropertyPane"); + } + } + return null; + } + + public static void registerFormParaDesignerClass(Class f) { + instance.formParaDesigner = f; + } + + public static ParameterDesignerProvider getFormParaDesigner() { + if (instance.formParaDesigner != null) { + try { + return (ParameterDesignerProvider) instance.formParaDesigner.newInstance(); + } catch (Exception e) { + FRContext.getLogger().error("error in form para designer"); + } + } + return null; + } + + public static void registerFormHierarchyPaneClass(Class fClass) { + instance.formHierarchyPaneCls = fClass; + } + + public static HierarchyTreePane getFormHierarchyPane() { + return StableUtils.getInstance(instance.formHierarchyPaneCls); + } + + public static void registerWidgetPropertyPaneClass(Class wp) { + instance.widgetPropertyPane = wp; + } + + public static BaseWidgetPropertyPane getWidgetPropertyPane(BaseFormDesigner fd) { + BaseWidgetPropertyPane wp = null; + if (instance.widgetPropertyPane != null) { + wp = StableUtils.getInstance(instance.widgetPropertyPane); + wp.setEditingFormDesigner(fd); + wp.refreshDockingView(); + } + return wp; + } + + public static MiddleChartComponent getChartComponent(BaseChartCollection collection) { + MiddleChartComponent bcc = null; + if (instance.chartComponentClass != null) { + try { + bcc = instance.chartComponentClass.newInstance(); + bcc.populate(collection); + } catch (InstantiationException e) { + FRContext.getLogger().error("Error in ChartComponent instant", e); + } catch (IllegalAccessException e) { + FRContext.getLogger().error("Error in Access", e); + } + } + return bcc; + } + + /** + * kunsnat: 初始化图表向导对话框, 调用静态方法showWindow, 参数window. + * + * @return 返回调出的ChartDailog + */ + public static MiddleChartDialog getChartDialog(Window window) { + try { + Constructor c; + if (window instanceof Frame) { + c = instance.chartDialogClass.getConstructor(Frame.class); + } else { + c = instance.chartDialogClass.getConstructor(Dialog.class); + } + return c.newInstance(window); + } catch (Exception e) { + FRContext.getLogger().error(e.getMessage(), e); + } + return null; + } + + /** + * kunsnat: 获取图表属性界面 + * + * @return 返回界面. + */ + public static BaseChartPropertyPane getChartPropertyPane() { + BaseChartPropertyPane bp = null; + if (instance.chartPropertyPaneClass != null) { + bp = StableUtils.getInstance(instance.chartPropertyPaneClass); + } + return bp; + } + + + public static void clearChartPropertyPane() { + if (instance.chartPropertyPaneClass != null) { + StableUtils.clearInstance(instance.chartPropertyPaneClass); + } + } + + + public static void registerButtonDetailPaneClass(Class clazz) { + instance.buttonDetailPaneClass = clazz; + } + + public static Class getButtonDetailPaneClass() { + return instance.buttonDetailPaneClass; + } + + public static void registerParameterReader(ParameterReader reader) { + if (instance.parameterReaderList == null) { + instance.parameterReaderList = new ArrayList(); + } + instance.parameterReaderList.add(reader); + } + + public static ParameterReader[] getParameterReaders() { + if (instance.parameterReaderList == null) { + return new ParameterReader[0]; + } + return instance.parameterReaderList.toArray(new ParameterReader[instance.parameterReaderList.size()]); + } +} \ No newline at end of file diff --git a/designer_base/src/com/fr/design/style/color/UsedColorPane.java b/designer_base/src/com/fr/design/style/color/UsedColorPane.java index 5594254c37..732f512223 100644 --- a/designer_base/src/com/fr/design/style/color/UsedColorPane.java +++ b/designer_base/src/com/fr/design/style/color/UsedColorPane.java @@ -42,7 +42,7 @@ public class UsedColorPane extends BasicPane { * @param rows 行 * @param columns 列 * @param reserveCells 留白的单元格个数 - * @param colors 最近使用的颜色 + * @param selectable * @param needPickColorButton 是否需要加上取色器按钮 * @param setColorRealTime 取色器是否实时设定颜色 */ @@ -68,7 +68,6 @@ public class UsedColorPane extends BasicPane { //最近使用颜色 Color[] colors = ColorSelectConfigManager.getInstance().getColors(); int size = colors.length; - int i = 0; if (needPickColorButton) { // 取色按钮 @@ -84,7 +83,8 @@ public class UsedColorPane extends BasicPane { i++; } while (i < total) { - Color color = i < size ? colors[size - (i - this.reserveCells) - 1] : DEFAULT_COLOR; + Color color = i - this.reserveCells < size ? colors[size - (i - this.reserveCells) - 1] : + DEFAULT_COLOR; panel.add(new ColorCell(color == null ? DEFAULT_COLOR : color, selectable)); i++; } @@ -100,7 +100,7 @@ public class UsedColorPane extends BasicPane { int size = colors.length; for (int i = this.reserveCells; i < total; i++) { ColorCell cell = (ColorCell) this.pane.getComponent(i); - Color color = i < size ? colors[size - (i - this.reserveCells) - 1] : DEFAULT_COLOR; + Color color = i - this.reserveCells < size ? colors[size - (i - this.reserveCells) - 1] : DEFAULT_COLOR; cell.setColor(color == null ? DEFAULT_COLOR : color); } } diff --git a/designer_base/src/com/fr/design/utils/DesignUtils.java b/designer_base/src/com/fr/design/utils/DesignUtils.java index 8ed8aa6175..96ed33711b 100644 --- a/designer_base/src/com/fr/design/utils/DesignUtils.java +++ b/designer_base/src/com/fr/design/utils/DesignUtils.java @@ -112,7 +112,7 @@ public class DesignUtils { String line = null; while ((line = reader.readLine()) != null) { if (line.startsWith("demo")) { - StartServer.browerDemoURL(); + StartServer.browserDemoURL(); } else if (StringUtils.isNotEmpty(line)) { File f = new File(line); String path = f.getAbsolutePath(); @@ -315,7 +315,7 @@ public class DesignUtils { String web = GeneralContext.getCurrentAppNameOfEnv(); String url = "http://localhost:" + DesignerEnvManager.getEnvManager().getJettyServerPort() + "/" + web + "/" + ConfigManager.getProviderInstance().getServletMapping() + postfixOfUri; - StartServer.browerURLWithLocalEnv(url); + StartServer.browserURLWithLocalEnv(url); } catch (Throwable e) { // } diff --git a/designer_base/src/com/fr/start/BaseDesigner.java b/designer_base/src/com/fr/start/BaseDesigner.java index 0e036c5340..905d44ba96 100644 --- a/designer_base/src/com/fr/start/BaseDesigner.java +++ b/designer_base/src/com/fr/start/BaseDesigner.java @@ -7,7 +7,7 @@ import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; import com.fr.design.ExtraDesignClassManager; import com.fr.design.RestartHelper; -import com.fr.design.extra.WebDialog; +import com.fr.design.extra.WebViewDlgHelper; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.file.MutilTempalteTabPane; import com.fr.design.file.TemplateTreePane; @@ -16,15 +16,13 @@ import com.fr.design.fun.GlobalListenerProvider; import com.fr.design.mainframe.DesignerFrame; import com.fr.design.mainframe.TemplatePane; import com.fr.design.mainframe.toolbar.ToolBarMenuDock; +import com.fr.design.module.DesignModule; import com.fr.design.utils.DesignUtils; import com.fr.env.SignIn; import com.fr.file.FILE; import com.fr.file.FILEFactory; import com.fr.file.FileFILE; -import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; -import com.fr.general.Inter; -import com.fr.general.ModuleContext; +import com.fr.general.*; import com.fr.plugin.PluginCollector; import com.fr.stable.*; @@ -66,12 +64,15 @@ public abstract class BaseDesigner extends ToolBarMenuDock { //下面这两句的位置不能随便调换,因为会影响语言切换的问题 initLanguage(); + // 先加载设计器的国际化文件 + Inter.loadLocaleFile(GeneralContext.getLocale(), DesignModule.LOCALE_FILE_PATH); + SplashWindow splashWindow = new SplashWindow(createSplashPane()); if (args != null) { for (String arg : args) { if (ComparatorUtils.equals(arg, "demo")) { DesignerEnvManager.getEnvManager().setCurrentEnv2Default(); - StartServer.browerDemoURL(); + StartServer.browserDemoURL(); break; } } @@ -127,7 +128,7 @@ public abstract class BaseDesigner extends ToolBarMenuDock { String text = StableUtils.join(plugins, ",") + ": " + Inter.getLocText("FR-Designer_Plugin_Should_Update_Please_Contact_Developer"); int r = JOptionPane.showConfirmDialog(null, text, Inter.getLocText("FR-Designer_Plugin_Should_Update_Title"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if (r == JOptionPane.OK_OPTION) { - WebDialog.createPluginDialog(); + WebViewDlgHelper.createPluginDialog(); } } timer.stop(); diff --git a/designer_base/src/com/fr/start/StartServer.java b/designer_base/src/com/fr/start/StartServer.java index 31f68e800a..e21beef7b1 100644 --- a/designer_base/src/com/fr/start/StartServer.java +++ b/designer_base/src/com/fr/start/StartServer.java @@ -45,10 +45,10 @@ public class StartServer { * 预览Demo * 找默认工作目录,不应该按照名字去找,而应该按照安装路径,因为默认工作目录的名字可能会改变。 */ - public static void browerDemoURL() { + public static void browserDemoURL() { if (ComparatorUtils.equals(StableUtils.getInstallHome(), ".")) {//august:供代码使用 String web = GeneralContext.getCurrentAppNameOfEnv(); - browerURLWithLocalEnv("http://localhost:" + DesignerEnvManager.getEnvManager().getJettyServerPort() + "/" + web + "/" + ConfigManager.getProviderInstance().getServletMapping() + browserURLWithLocalEnv("http://localhost:" + DesignerEnvManager.getEnvManager().getJettyServerPort() + "/" + web + "/" + ConfigManager.getProviderInstance().getServletMapping() + "?op=fs"); return; } @@ -65,16 +65,16 @@ public class StartServer { } catch (Exception e) { FRContext.getLogger().errorWithServerLevel(e.getMessage()); } - initDemoServerAndBrower(); + initDemoServerAndBrowser(); } }).setVisible(true); } else { - initDemoServerAndBrower(); + initDemoServerAndBrowser(); } } - private static void initDemoServerAndBrower() { + private static void initDemoServerAndBrowser() { if (jettyHost != null) { if (!jettyHost.isDemoAppLoaded()) { jettyHost.exit(); @@ -104,7 +104,7 @@ public class StartServer { * * @param url 指定路径 */ - public static void browerURLWithLocalEnv(String url) { + public static void browserURLWithLocalEnv(String url) { try { if (jettyHost != null) { if (NEED_LOAD_ENV) { diff --git a/designer_chart/src/com/fr/design/ChartEnvManager.java b/designer_chart/src/com/fr/design/ChartEnvManager.java deleted file mode 100644 index 0f32ed4085..0000000000 --- a/designer_chart/src/com/fr/design/ChartEnvManager.java +++ /dev/null @@ -1,188 +0,0 @@ -package com.fr.design; - -import com.fr.base.FRContext; -import com.fr.base.Utils; -import com.fr.general.ComparatorUtils; -import com.fr.general.DateUtils; -import com.fr.general.IOUtils; -import com.fr.stable.ProductConstants; -import com.fr.stable.StableUtils; -import com.fr.stable.StringUtils; -import com.fr.stable.project.ProjectConstants; -import com.fr.stable.xml.*; - -import java.io.*; -import java.util.Date; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - */ -public class ChartEnvManager implements XMLReadable, XMLWriter { - public static final String ACTIVE_KEY = "RXWY-A25421-K58F47757-7373"; - private static final int ONE_MONTH_SECOND = 30*24*60*60;//30天,以秒为单位 - private static final int MS =1000; - - boolean isPushUpdateAuto = true; //是否自动推送更新 - - private String activationKey = null; - - private static ChartEnvManager chartEnvManager; - - private Date lastCheckDate; - - private long checkTimeSpan =ONE_MONTH_SECOND; - - /** - * DesignerEnvManager. - */ - public static ChartEnvManager getEnvManager() { - if(chartEnvManager == null){ - chartEnvManager = new ChartEnvManager(); - try { - XMLTools.readFileXML(chartEnvManager, chartEnvManager.getDesignerEnvFile()); - }catch (Exception exp){ - FRContext.getLogger().error(exp.getMessage(), exp); - } - } - return chartEnvManager; - } - - private static File envFile = new File(ProductConstants.getEnvHome() + File.separator + ProductConstants.APP_NAME + "ChartEnv.xml"); - - private File getEnvFile() { - return envFile; - } - - - private File getDesignerEnvFile() { - File envFile = getEnvFile(); - if (!envFile.exists()) { - createEnvFile(envFile); - } - - return envFile; - } - - - private void createEnvFile(File envFile) { - try { - FileWriter fileWriter = new FileWriter(envFile); - StringReader stringReader = new StringReader(""); - Utils.copyCharTo(stringReader, fileWriter); - stringReader.close(); - fileWriter.close(); - } catch (IOException e) { - FRContext.getLogger().error(e.getMessage(), e); - } - } - - /** - * 返回激活码 - */ - public String getActivationKey() { - return activationKey; - } - - /** - * 设置激活码 - */ - public void setActivationKey(String activationKey) { - this.activationKey = activationKey; - } - - public void setPushUpdateAuto(boolean isPushUpdateAuto){ - this.isPushUpdateAuto = isPushUpdateAuto; - if(!this.isPushUpdateAuto){ - lastCheckDate = new Date(); - } - } - - /** - * 是否设置了自动推送图表设计器在线更行 - * @return 是则返回true - */ - public boolean isPushUpdateAuto(){ - return isPushUpdateAuto; - } - - /** - *在设置不自动推送在线更新的情况下,每30天自动检测一次 - * @return 是否需要检测 - */ - public boolean isOverOneMonth(){ - return !isPushUpdateAuto && ((new Date().getTime()-lastCheckDate.getTime())/MS>=checkTimeSpan); - } - - /*** - * 重新设置最新检查的日期 - */ - public void resetCheckDate(){ - this.lastCheckDate = new Date(); - } - - @Override - public void readXML(XMLableReader reader) { - if (reader.isChildNode()) { - String name = reader.getTagName(); - if(ComparatorUtils.equals(name,"ChartAttributes")){ - activationKey = reader.getAttrAsString("activationKey",null); - isPushUpdateAuto = reader.getAttrAsBoolean("isPushUpdateAuto",true); - checkTimeSpan = reader.getAttrAsLong("checkTimeSpan",ONE_MONTH_SECOND); - String date = reader.getAttrAsString("lastCheckDate", null); - if(!StringUtils.isEmpty(date)){ - lastCheckDate = DateUtils.string2Date(date,true); - } else { - lastCheckDate = new Date(); - } - } - } - - } - - @Override - public void writeXML(XMLPrintWriter writer) { - writer.startTAG("ChartDesigner"); - writer.startTAG("ChartAttributes").attr("activationKey",activationKey) - .attr("isPushUpdateAuto",isPushUpdateAuto) - .attr("checkTimeSpan",checkTimeSpan) - .attr("lastCheckDate", DateUtils.getDate2LStr(lastCheckDate)) - .end(); - writer.end(); - } - - /** - * 保存设计器的配置文件, 该文件不在env的resource目录下 - * 而是在Consts.getEnvHome() + File.separator + Consts.APP_NAME - * - * - * @date 2014-9-29-上午11:04:23 - */ - public void saveXMLFile() { - File xmlFile = this.getDesignerEnvFile(); - if (xmlFile == null) { - return; - } - if (!xmlFile.getParentFile().exists()) {//建立目录. - StableUtils.mkdirs(xmlFile.getParentFile()); - } - - String tempName = xmlFile.getName() + ProjectConstants.TEMP_SUFFIX; - File tempFile = new File(xmlFile.getParentFile(), tempName); - - writeTempFile(tempFile); - IOUtils.renameTo(tempFile, xmlFile); - } - - private void writeTempFile(File tempFile){ - try{ - OutputStream fout = new FileOutputStream(tempFile); - XMLTools.writeOutputStreamXML(this, fout); - fout.flush(); - fout.close(); - }catch (Exception e) { - FRContext.getLogger().error(e.getMessage()); - } - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java index c67a6aea57..c850a4ae5b 100644 --- a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java @@ -11,9 +11,12 @@ import com.fr.design.chart.fun.IndependentChartUIProvider; import com.fr.design.chart.gui.ChartWidgetOption; import com.fr.design.chartinterface.*; import com.fr.design.condition.ConditionAttributesPane; +import com.fr.design.extra.ChartTypeInterfaceCloseableHandler; import com.fr.design.gui.core.WidgetOption; import com.fr.design.gui.frpane.AttributeChangeListener; import com.fr.design.mainframe.chart.AbstractChartAttrPane; +import com.fr.design.mainframe.chart.ChartEditPane; +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.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane; @@ -21,11 +24,13 @@ import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane import com.fr.design.module.DesignModuleFactory; import com.fr.file.XMLFileManager; import com.fr.form.ui.ChartEditor; -import com.fr.general.*; +import com.fr.general.FRLogger; +import com.fr.general.GeneralContext; +import com.fr.general.IOUtils; +import com.fr.general.Inter; import com.fr.plugin.PluginCollector; import com.fr.plugin.PluginLicenseManager; import com.fr.plugin.PluginMessage; -import com.fr.design.extra.ChartTypeInterfaceCloseableHandler; import com.fr.plugin.proxy.PluginInstanceProxyFactory; import com.fr.plugin.proxy.PluginInvocationHandler; import com.fr.stable.ArrayUtils; @@ -410,6 +415,39 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh return chartTypeInterfaces.get(priority).get(plot.getPlotID()).getTableDataSourcePane(plot, parent); } + //获取指定图表的编辑面板 + public ChartEditPane getChartEditPane(String plotID) { + Iterator iterator = chartTypeInterfaces.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + String priority = (String) entry.getKey(); + if (plotInChart(plotID, priority)) { + return getChartEditPane(priority, plotID); + } + } + return getChartEditPane(ChartTypeManager.CHART_PRIORITY, plotID); + } + + private ChartEditPane getChartEditPane(String priority, String plotID) { + return chartTypeInterfaces.get(priority).get(plotID).getChartEditPane(plotID); + } + + public ChartsConfigPane getChartConfigPane(String plotID) { + Iterator iterator = chartTypeInterfaces.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + String priority = (String) entry.getKey(); + if (plotInChart(plotID, priority)) { + return getChartConfigPane(priority, plotID); + } + } + return getChartConfigPane(ChartTypeManager.CHART_PRIORITY, plotID); + } + + private ChartsConfigPane getChartConfigPane(String priority, String plotID) { + return chartTypeInterfaces.get(priority).get(plotID).getChartConfigPane(plotID); + } + public AbstractReportDataContentPane getReportDataSourcePane(Plot plot, ChartDataPane parent) { Iterator iterator = chartTypeInterfaces.entrySet().iterator(); diff --git a/designer_chart/src/com/fr/design/chart/fun/IndependentChartUIProvider.java b/designer_chart/src/com/fr/design/chart/fun/IndependentChartUIProvider.java index 1b90382d6a..70fcc4ca46 100644 --- a/designer_chart/src/com/fr/design/chart/fun/IndependentChartUIProvider.java +++ b/designer_chart/src/com/fr/design/chart/fun/IndependentChartUIProvider.java @@ -5,6 +5,8 @@ import com.fr.design.beans.BasicBeanPane; import com.fr.design.condition.ConditionAttributesPane; import com.fr.design.gui.frpane.AttributeChangeListener; import com.fr.design.mainframe.chart.AbstractChartAttrPane; +import com.fr.design.mainframe.chart.ChartEditPane; +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.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane; @@ -89,5 +91,9 @@ public interface IndependentChartUIProvider extends Level { */ String getPlotTypeTitle4PopupWindow(); + ChartEditPane getChartEditPane(String plotID); + + + ChartsConfigPane getChartConfigPane(String plotID); } \ No newline at end of file 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 a44efb38c1..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 @@ -7,9 +7,12 @@ import com.fr.design.chart.series.SeriesCondition.DataSeriesConditionPane; import com.fr.design.condition.ConditionAttributesPane; import com.fr.design.gui.frpane.AttributeChangeListener; import com.fr.design.mainframe.chart.AbstractChartAttrPane; +import com.fr.design.mainframe.chart.ChartEditPane; +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; /** @@ -30,6 +33,7 @@ public abstract class AbstractIndependentChartUI implements IndependentChartUIPr public ChartDataPane getChartDataPane(AttributeChangeListener listener){ return new ChartDataPane(listener); } + /** * 是否使用默认的界面,为了避免界面来回切换 * @return 是否使用默认的界面 @@ -53,4 +57,10 @@ public abstract class AbstractIndependentChartUI implements IndependentChartUIPr public ConditionAttributesPane getPlotConditionPane(Plot plot){ return new DataSeriesConditionPane(); } + + public ChartEditPane getChartEditPane(String plotID){ return StableUtils.construct(ChartEditPane.class);} + + public ChartsConfigPane getChartConfigPane(String plotID){return null;} + + } \ No newline at end of file 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 ff0eaa81db..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 @@ -7,9 +7,12 @@ import com.fr.design.chart.series.SeriesCondition.DataSeriesConditionPane; import com.fr.design.condition.ConditionAttributesPane; import com.fr.design.gui.frpane.AttributeChangeListener; import com.fr.design.mainframe.chart.AbstractChartAttrPane; +import com.fr.design.mainframe.chart.ChartEditPane; +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. @@ -65,4 +68,8 @@ public abstract class AbstractIndependentChartUIWithAPILevel implements Independ public String getPlotTypeTitle4PopupWindow(){ return getPlotTypePane().title4PopupWindow(); } + + 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 new file mode 100644 index 0000000000..fbd3ce36f1 --- /dev/null +++ b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartsUI.java @@ -0,0 +1,103 @@ +package com.fr.design.chart.fun.impl; + +import com.fr.chart.chartattr.Plot; +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.chart.fun.IndependentChartUIProvider; +import com.fr.design.condition.ConditionAttributesPane; +import com.fr.design.gui.frpane.AttributeChangeListener; +import com.fr.design.mainframe.chart.AbstractChartAttrPane; +import com.fr.design.mainframe.chart.ChartEditPane; +import com.fr.design.mainframe.chart.ChartsEditPane; +import com.fr.design.mainframe.chart.gui.ChartDataPane; +import com.fr.design.mainframe.chart.gui.ChartStylePane; +import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane; +import com.fr.design.mainframe.chart.gui.data.report.CategoryPlotReportDataContentPane; +import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane; +import com.fr.design.mainframe.chart.gui.data.table.CategoryPlotTableDataContentPane; +import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane; +import com.fr.design.mainframe.chart.gui.type.PiePlotPane; +import com.fr.general.ComparatorUtils; +import com.fr.stable.fun.impl.AbstractProvider; +import com.fr.stable.fun.mark.API; + +/** + * Created by mengao on 2017/4/24. + * 用户使用第三方图表需要继承的面板抽象类 + */ + +@API(level = IndependentChartUIProvider.CURRENT_API_LEVEL) +public abstract class AbstractIndependentChartsUI extends AbstractProvider implements IndependentChartUIProvider { + + public String mark4Provider() { + return getClass().getName(); + } + + + @Override + public AbstractChartTypePane getPlotTypePane() { + return new PiePlotPane(); + } + + @Override + public ChartDataPane getChartDataPane(AttributeChangeListener listener) { + return new ChartDataPane(listener); + } + + @Override + public AbstractTableDataContentPane getTableDataSourcePane(Plot plot, ChartDataPane parent) { + return new CategoryPlotTableDataContentPane(parent); + } + + @Override + public AbstractReportDataContentPane getReportDataSourcePane(Plot plot, ChartDataPane parent) { + return new CategoryPlotReportDataContentPane(parent); + } + + public BasicBeanPane getPlotSeriesPane(ChartStylePane parent, Plot plot){ + return null; + } + + public BasicBeanPane getPlotSeriesPane(){ + return null; + } + + public boolean equals(Object obj) { + return obj != null && ComparatorUtils.equals(obj.getClass(), this.getClass()); + } + + public ConditionAttributesPane getPlotConditionPane(Plot plot){ + return null; + } + + @Override + public AbstractChartAttrPane[] getAttrPaneArray(AttributeChangeListener listener){ + return new AbstractChartAttrPane[]{}; + } + + @Override + public boolean isUseDefaultPane(){ + return false; + } + + + @Override + public String getIconPath() { + return "com/fr/design/images/form/toolbar/ChartF-Column.png"; + } + + @Override + + /** + * plot面板的标题 + * 插件兼容 + */ + public String getPlotTypeTitle4PopupWindow(){ + return getPlotTypePane().title4PopupWindow(); + } + + @Override + public ChartEditPane getChartEditPane(String plotID) { + return new ChartsEditPane(); + } + +} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/chart/report/GisMapDataPane4Chart.java b/designer_chart/src/com/fr/design/chart/report/GisMapDataPane4Chart.java deleted file mode 100644 index 00aced4860..0000000000 --- a/designer_chart/src/com/fr/design/chart/report/GisMapDataPane4Chart.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.fr.design.chart.report; - -import com.fr.base.TableData; -import com.fr.base.chart.chartdata.TopDefinitionProvider; -import com.fr.chart.chartattr.Chart; -import com.fr.chart.chartattr.ChartCollection; -import com.fr.chart.chartdata.*; -import com.fr.design.gui.frpane.AttributeChangeListener; -import com.fr.design.mainframe.AbstractChartDataPane4Chart; -import com.fr.design.mainframe.chart.gui.ChartDataPane; - -import javax.swing.*; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - */ -public class GisMapDataPane4Chart extends AbstractChartDataPane4Chart { - - private GisMapTableDataContentPane4Chart tablePane = new GisMapTableDataContentPane4Chart(); - - public GisMapDataPane4Chart(AttributeChangeListener listener, ChartDataPane parent) { - super(listener, parent); - } - - protected JPanel getDataContentPane() { - return tablePane; - } - - @Override - public void populate(ChartCollection collection) { - tablePane = new GisMapTableDataContentPane4Chart(); - if (collection != null && collection.getSelectedChart() != null) { - Chart chart = collection.getSelectedChart(); - TopDefinitionProvider definition = chart.getFilterDefinition(); - if (definition instanceof TableDataDefinition) { - TableData tableData = ((TableDataDefinition) definition).getTableData(); - if (tableData != null) { - populateChoosePane(tableData); - fireTableDataChange(); - } - } - if (definition instanceof GisMapTableDefinition) { - tablePane.populateBean((GisMapTableDefinition) definition); - } - } - this.remove(leftContentPane); - this.initContentPane(); - this.validate(); - dataSource.addItemListener(dsListener); - initAllListeners(); - initSelfListener(tablePane); - this.addAttributeChangeListener(attributeChangeListener); - } - - @Override - public void update(ChartCollection collection) { - collection.getSelectedChart().setFilterDefinition(tablePane.updateBean()); - } - - - /** - * 数据集数据改变 - */ - public void fireTableDataChange() { - tablePane.fireTableDataChange(choosePane.getTableDataWrapper()); - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/chart/report/GisMapTableDataContentPane4Chart.java b/designer_chart/src/com/fr/design/chart/report/GisMapTableDataContentPane4Chart.java deleted file mode 100644 index f70390a431..0000000000 --- a/designer_chart/src/com/fr/design/chart/report/GisMapTableDataContentPane4Chart.java +++ /dev/null @@ -1,341 +0,0 @@ -package com.fr.design.chart.report; - -import com.fr.base.Utils; -import com.fr.chart.base.ChartConstants; -import com.fr.chart.chartdata.GisMapTableDefinition; -import com.fr.chart.chartdata.SeriesDefinition; -import com.fr.design.beans.FurtherBasicBeanPane; -import com.fr.design.constants.LayoutConstants; -import com.fr.design.data.tabledata.wrapper.TableDataWrapper; -import com.fr.design.event.UIObserver; -import com.fr.design.event.UIObserverListener; -import com.fr.design.gui.frpane.UICorrelationPane; -import com.fr.design.gui.ibutton.UIButtonGroup; -import com.fr.design.gui.icombobox.UIComboBox; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.itable.UITableEditor; -import com.fr.design.gui.itextfield.UITextField; -import com.fr.design.layout.TableLayout; -import com.fr.design.layout.TableLayoutHelper; -import com.fr.general.Inter; -import com.fr.stable.ArrayUtils; -import com.fr.stable.StringUtils; - -import javax.swing.*; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import java.awt.*; -import java.awt.event.FocusAdapter; -import java.awt.event.FocusEvent; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.util.*; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - */ -public class GisMapTableDataContentPane4Chart extends FurtherBasicBeanPane implements UIObserver { - - private ArrayList changeListeners = new ArrayList(); - private String[] initNames = {""}; - - private UIButtonGroup addressType; - private UIButtonGroup lnglatOrder; - private UIComboBox addressBox; - private UIComboBox addressNameBox; - private UICorrelationPane titleValuePane; - private JPanel orderPane; - private TableDataWrapper tableDataWrapper; - - public GisMapTableDataContentPane4Chart() { - this.setLayout(new BorderLayout()); - - addressType = new UIButtonGroup(new String[]{Inter.getLocText("Chart-Gis_Address"), Inter.getLocText("Chart-Gis_LatLng")}); - lnglatOrder = new UIButtonGroup(new String[]{Inter.getLocText("Chart-Lng_First"), Inter.getLocText("Chart-Lat_First")}); - addressBox = new UIComboBox(); - addressNameBox = new UIComboBox(); - double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double[] columnSize = new double[]{p, f}; - double[] rowSize = new double[]{p, p, p}; - orderPane = new JPanel(new BorderLayout(LayoutConstants.VGAP_MEDIUM, 0)) { - @Override - public Dimension getPreferredSize() { - if (this.isVisible()) { - return super.getPreferredSize(); - } else { - return new Dimension(0, 0); - } - } - }; - orderPane.add(new UILabel(Inter.getLocText("Chart-LatLng_Order")), BorderLayout.WEST); - orderPane.add(lnglatOrder, BorderLayout.CENTER); - orderPane.setVisible(false); - lnglatOrder.setSelectedIndex(0); - addressType.setSelectedIndex(0); - - addressNameBox.removeAllItems(); - addressNameBox.addItem(Inter.getLocText("Chart-Use_None")); - - Component[][] components = new Component[][]{ - new Component[]{addressType, addressBox}, - new Component[]{orderPane, null}, - new Component[]{new UILabel(Inter.getLocText("Chart-Address_Name") + ":", SwingConstants.RIGHT), addressNameBox}, - }; - JPanel centerPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - - JPanel pane = new JPanel(); - this.add(pane, BorderLayout.CENTER); - pane.setLayout(new BorderLayout()); - - pane.add(centerPane, BorderLayout.NORTH); - - String[] titles = {Inter.getLocText("Chart-Area_Title"), Inter.getLocText("Chart-Area_Value")}; - titleValuePane = new UICorrelationPane(titles) { - public UITableEditor createUITableEditor() { - return new InnerTableEditor(); - } - }; - - pane.add(titleValuePane, BorderLayout.CENTER); - } - - private void refresh2ComboBox() {// 刷新地址 地址名 名称列表 - TableDataWrapper tableDataWrappe =tableDataWrapper; - if (tableDataWrappe == null) { - return; - } - java.util.List columnNameList = tableDataWrappe.calculateColumnNameList(); - initNames = columnNameList.toArray(new String[columnNameList.size()]); - - addressBox.removeAllItems(); - addressNameBox.removeAllItems(); - addressNameBox.addItem(Inter.getLocText("Chart-Use_None")); - - for (int i = 0, size = initNames.length; i < size; i++) { - addressBox.addItem(initNames[i]); - addressNameBox.addItem(initNames[i]); - } - if(initNames.length > 0){ - addressBox.setSelectedIndex(0); - } - addressNameBox.setSelectedIndex(0); - stopEditing(); - } - - /** - * 界面接入 - * - * @param ob 对象 - * @return true表示接受 - */ - public boolean accept(Object ob) { - return false; - } - - /** - * 界面重置 - */ - public void reset() { - - } - - /** - * 界面弹出标题 - * - * @return 标题 - */ - public String title4PopupWindow() { - return Inter.getLocText("Chart-DS_TableData"); - } - - private void stopEditing() { - } - - @Override - public void populateBean(GisMapTableDefinition ob) { - stopEditing(); - if (ob instanceof GisMapTableDefinition) { - GisMapTableDefinition mapDefinition = (GisMapTableDefinition) ob; - if (ob.isAddress()) { - addressType.setSelectedIndex(0); - orderPane.setVisible(false); - } else { - addressType.setSelectedIndex(1); - orderPane.setVisible(true); - } - - if (ob.isLngFirst()) { - lnglatOrder.setSelectedIndex(0); - } else { - lnglatOrder.setSelectedIndex(1); - } - - addressBox.setSelectedItem(mapDefinition.getAddress()); - - if (StringUtils.isEmpty(mapDefinition.getAddressName())) { - addressNameBox.setSelectedItem(Inter.getLocText("Chart-Use_None")); - } else { - addressNameBox.setSelectedItem(mapDefinition.getAddressName()); - } - - java.util.List paneList = new ArrayList(); - int titleValueSize = mapDefinition.getTittleValueSize(); - for (int i = 0; i < titleValueSize; i++) { - SeriesDefinition definition = mapDefinition.getTittleValueWithIndex(i); - if (definition != null && definition.getSeriesName() != null && definition.getValue() != null) { - paneList.add(new Object[]{definition.getSeriesName(), definition.getValue()}); - } - } - - if (!paneList.isEmpty()) { - titleValuePane.populateBean(paneList); - } - } - } - - @Override - public GisMapTableDefinition updateBean() {// 从一行内容中update - stopEditing(); - - GisMapTableDefinition definition = new GisMapTableDefinition(); - - TableDataWrapper tableDataWrappe = tableDataWrapper; - if (tableDataWrappe == null || addressBox.getSelectedItem() == null) { - return null; - } - - definition.setTableData(tableDataWrapper.getTableData()); - definition.setAddress(Utils.objectToString(addressBox.getSelectedItem())); - - if (this.addressType.getSelectedIndex() == 0) { - definition.setAddressType(true); - lnglatOrder.setVisible(false); - } else { - definition.setAddressType(false); - lnglatOrder.setVisible(true); - } - - if (this.lnglatOrder.getSelectedIndex() == 0) { - definition.setLnglatOrder(true); - } else { - definition.setLnglatOrder(false); - } - - if (addressNameBox.getSelectedItem() != null) { - String adName = Utils.objectToString(addressNameBox.getSelectedItem()); - if (ArrayUtils.contains(ChartConstants.getNoneKeys(), adName)) { - definition.setAddressName(StringUtils.EMPTY); - } else { - definition.setAddressName(adName); - } - } - - java.util.List paneList = titleValuePane.updateBean(); - for (int i = 0, size = paneList.size(); i < size; i++) { - Object[] values = (Object[]) paneList.get(i); - if (values.length == 2) { - SeriesDefinition seriesDefinition = new SeriesDefinition(); - seriesDefinition.setSeriesName(values[0]); - seriesDefinition.setValue(values[1]); - definition.addTittleValue(seriesDefinition); - } - } - - return definition; - } - - /** - * 给组件登记一个观察者监听事件 - * - * @param listener 观察者监听事件 - */ - public void registerChangeListener(final UIObserverListener listener) { - changeListeners.add(new ChangeListener() { - public void stateChanged(ChangeEvent e) { - listener.doChange(); - } - }); - } - - /** - * 组件是否需要响应添加的观察者事件 - * - * @return 如果需要响应观察者事件则返回true,否则返回false - */ - public boolean shouldResponseChangeListener() { - return true; - } - - private class InnerTableEditor extends UITableEditor { - private JComponent editorComponent; - - /** - * 返回当前编辑器的值 - */ - public Object getCellEditorValue() { - if (editorComponent instanceof UITextField) { - UITextField textField = (UITextField) editorComponent; - return textField.getText(); - } else if (editorComponent instanceof UIComboBox) { - UIComboBox boxPane = (UIComboBox) editorComponent; - return boxPane.getSelectedItem(); - } - return super.getCellEditorValue(); - } - - /** - * 返回当前编辑器.. - */ - public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { - if (column == table.getModel().getColumnCount()) { - return null; - } - if (column == 0) { - UITextField text = new UITextField(); - if (value != null) { - text.setText(Utils.objectToString(value)); - } - - text.addFocusListener(new FocusAdapter() { - public void focusLost(FocusEvent e) { - titleValuePane.stopCellEditing(); - titleValuePane.fireTargetChanged(); - } - }); - - this.editorComponent = text; - } else { - UIComboBox box = new UIComboBox(initNames); - box.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - titleValuePane.fireTargetChanged(); - titleValuePane.stopCellEditing(); - } - }); - - if (value != null && StringUtils.isNotEmpty(value.toString())) { - box.setSelectedItem(value); - } else { - box.setSelectedItem(value); - } - - this.editorComponent = box; - } - return this.editorComponent; - } - } - - /** - * 出发数据集改变 - * @param wrapper 数据集 - */ - public void fireTableDataChange(TableDataWrapper wrapper){ - this.tableDataWrapper = wrapper; - refresh2ComboBox(); - } - -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/chart/report/MapCubeDataPane4Chart.java b/designer_chart/src/com/fr/design/chart/report/MapCubeDataPane4Chart.java deleted file mode 100644 index 96c659d508..0000000000 --- a/designer_chart/src/com/fr/design/chart/report/MapCubeDataPane4Chart.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.fr.design.chart.report; - -import com.fr.base.chart.chartdata.TopDefinitionProvider; -import com.fr.chart.chartdata.MapMoreLayerTableDefinition; -import com.fr.design.beans.FurtherBasicBeanPane; -import com.fr.design.data.tabledata.wrapper.TableDataWrapper; -import com.fr.design.gui.frpane.UIComboBoxPane; -import com.fr.general.Inter; - -import java.awt.*; -import java.util.*; -import java.util.List; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - */ -public class MapCubeDataPane4Chart extends UIComboBoxPane { - private MapTableCubeDataPane4Chart tablePane; - - protected void initLayout() { - this.setLayout(new BorderLayout(0, 0)); - this.add(cardPane, BorderLayout.CENTER); - } - - @Override - protected List> initPaneList() { - List list = new ArrayList(); - - list.add(tablePane = new MapTableCubeDataPane4Chart()); - - return list; - } - - @Override - protected String title4PopupWindow() { - return Inter.getLocText("FR-Chart-Map_LayerData"); - } - - /** - * 对数据集或者单元格数据加载界面 - */ - public void populateBean(TopDefinitionProvider definition) { - if(definition instanceof MapMoreLayerTableDefinition) { - MapMoreLayerTableDefinition tableDefinition = (MapMoreLayerTableDefinition)definition; - this.setSelectedIndex(0); - tablePane.populateBean(tableDefinition); - } - } - - /** - * 根据界面 下载保存数据 - */ - public TopDefinitionProvider update() { - return tablePane.updateBean(); - } - - /** - * 出发数据集改变 - * @param tableDataWrapper 数据集 - */ - public void fireTableDataChanged(TableDataWrapper tableDataWrapper) { - tablePane.setTableDataWrapper(tableDataWrapper); - tablePane.refreshAreaNameBox(); - } - -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/chart/report/MapDataPane4Chart.java b/designer_chart/src/com/fr/design/chart/report/MapDataPane4Chart.java deleted file mode 100644 index d7329b3c92..0000000000 --- a/designer_chart/src/com/fr/design/chart/report/MapDataPane4Chart.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.fr.design.chart.report; - -import com.fr.base.TableData; -import com.fr.base.chart.chartdata.TopDefinitionProvider; -import com.fr.chart.chartattr.Chart; -import com.fr.chart.chartattr.ChartCollection; -import com.fr.chart.chartdata.*; -import com.fr.design.beans.FurtherBasicBeanPane; -import com.fr.design.gui.frpane.AttributeChangeListener; -import com.fr.design.gui.frpane.UIComboBoxPane; -import com.fr.design.gui.ilable.BoldFontTextLabel; -import com.fr.design.mainframe.AbstractChartDataPane4Chart; -import com.fr.design.mainframe.chart.gui.ChartDataPane; -import com.fr.general.Inter; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.util.*; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - * Date: 14/12/3 - * Time: 下午6:49 - */ -public class MapDataPane4Chart extends AbstractChartDataPane4Chart { - private UIComboBoxPane dataContentPane; - private MapMoreCubeLayerPane4Chart morePane = new MapMoreCubeLayerPane4Chart(); - private MapSinglePane4Chart singlePane = new MapSinglePane4Chart(); - private ChartCollection currentCollection; - private ItemListener itemListener = new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - fireTableDataChange(); - } - }; - - public MapDataPane4Chart(AttributeChangeListener listener, ChartDataPane parent) { - super(listener, parent); - dataContentPane = new UIComboBoxPane() { - protected void initLayout() { - this.setLayout(new BorderLayout(0, 6)); - JPanel northPane = new JPanel(new FlowLayout(FlowLayout.LEFT)); - northPane.add(new BoldFontTextLabel(Inter.getLocText("FR-Chart-Map_ShowWay") + ":")); - northPane.add(jcb); - this.add(northPane, BorderLayout.NORTH); - this.add(cardPane, BorderLayout.CENTER); - } - protected java.util.List> initPaneList() { - java.util.List list = new ArrayList(); - list.add(singlePane); - list.add(morePane); - return list; - } - - protected void comboBoxItemStateChanged() { - if(currentCollection == null){ - return; - } - fireTableDataChange(); - morePane.init4PopuMapTree(currentCollection); - } - - - protected String title4PopupWindow() { - return Inter.getLocText(new String[]{"Chart-Map", "Data"}); - } - }; - } - - - protected JPanel getDataContentPane(){ - return dataContentPane; - } - - @Override - public void populate(ChartCollection collection) { - currentCollection = collection; - morePane.init4PopuMapTree(collection); - if (collection != null && collection.getSelectedChart() != null) { - Chart chart = collection.getSelectedChart(); - TopDefinitionProvider definition = chart.getFilterDefinition(); - if (definition instanceof TableDataDefinition) { - TableData tableData = ((TableDataDefinition) definition).getTableData(); - if(tableData != null){ - populateChoosePane(tableData); - fireTableDataChange(); - } - } - if(definition instanceof MapSingleLayerTableDefinition) { - singlePane.populateBean(definition); - } else if(definition instanceof MapMoreLayerTableDefinition) { - morePane.populateBean(collection); - } - } - this.remove(leftContentPane); - this.initContentPane(); - this.validate(); - dataSource.addItemListener(dsListener); - initAllListeners(); - initSelfListener(dataContentPane); - this.addAttributeChangeListener(attributeChangeListener); - } - - @Override - public void update(ChartCollection collection) { - if(dataContentPane.getSelectedIndex() == 0) { - collection.getSelectedChart().setFilterDefinition(singlePane.updateBean()); - } else { - morePane.updateBean(collection); - } - currentCollection = collection; - } - - /** - * 数据集数据改变 - */ - public void fireTableDataChange() { - if (dataContentPane == null) { - return; - } - if(dataContentPane.getSelectedIndex() == 0) { - singlePane.fireTableDataChanged(choosePane.getTableDataWrapper()); - } else { - morePane.fireTableDataChanged(choosePane.getTableDataWrapper()); - } - - } - -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/chart/report/MapMoreCubeLayerPane4Chart.java b/designer_chart/src/com/fr/design/chart/report/MapMoreCubeLayerPane4Chart.java deleted file mode 100644 index 7a13e17a4b..0000000000 --- a/designer_chart/src/com/fr/design/chart/report/MapMoreCubeLayerPane4Chart.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.fr.design.chart.report; - -import com.fr.chart.chartattr.Chart; -import com.fr.chart.chartattr.ChartCollection; -import com.fr.chart.chartattr.MapPlot; -import com.fr.design.data.tabledata.wrapper.TableDataWrapper; -import com.fr.design.dialog.BasicPane; -import com.fr.design.dialog.MultiTabPane; -import com.fr.general.Inter; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - */ -public class MapMoreCubeLayerPane4Chart extends MultiTabPane { - private static final long serialVersionUID = -174286187746442527L; - - private MapCubeLayerPane layerPane; - private MapCubeDataPane4Chart dataPane; - - @Override - protected List initPaneList() { - List paneList = new ArrayList(); - - paneList.add(layerPane = new MapCubeLayerPane()); - paneList.add(dataPane = new MapCubeDataPane4Chart()); - - return paneList; - } - - public ChartCollection updateBean() { - return null;// do nothing - } - - public void populateBean(ChartCollection collection) { - Chart selectChart = collection.getSelectedChart(); - if(selectChart != null && selectChart.getPlot() instanceof MapPlot) { - MapPlot map = (MapPlot)selectChart.getPlot(); - layerPane.populateBean(map.getMapName()); - } - - // 确认层级关系 - dataPane.populateBean(collection.getSelectedChart().getFilterDefinition()); - } - - public void updateBean(ChartCollection collection) { - - collection.getSelectedChart().setFilterDefinition(dataPane.update()); - - Chart selectChart = collection.getSelectedChart(); - if(selectChart != null && selectChart.getPlot() instanceof MapPlot) { - MapPlot map = (MapPlot)selectChart.getPlot(); - layerPane.updateBean(map.getMapName());// 确定更新地图名称所对应的层级关系 - } - } - - /** - * 刷新层级树 和 数据中populate 数据的层数 - * @param collection 图表收集器. - */ - public void init4PopuMapTree(ChartCollection collection) { - Chart selectChart = collection.getSelectedChart(); - if(selectChart != null && selectChart.getPlot() instanceof MapPlot) { - MapPlot map = (MapPlot)selectChart.getPlot(); - if(layerPane != null) { - layerPane.initRootTree(map.getMapName()); - } - } - } - - /** - * 判断是否合格 - * @param ob 参数判断 - * @return 默认合格. - */ - public boolean accept(Object ob) { - return true; - } - - /** - * 界面标题 - * @return 返回标题 - */ - public String title4PopupWindow() { - return Inter.getLocText("FR-Chart-Map_Multilayer"); - } - - /** - * 重置 - */ - public void reset() { - - } - - /** - * 设置是否支持单元格数据. - */ - public void setSurpportCellData(boolean surpportCellData) { - dataPane.justSupportOneSelect(surpportCellData); - } - - /** - * 出发数据集改变 - * @param tableDataWrapper 数据集 - */ - public void fireTableDataChanged(TableDataWrapper tableDataWrapper) { - dataPane.fireTableDataChanged(tableDataWrapper); - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/chart/report/MapSinglePane4Chart.java b/designer_chart/src/com/fr/design/chart/report/MapSinglePane4Chart.java deleted file mode 100644 index 46a4ba223a..0000000000 --- a/designer_chart/src/com/fr/design/chart/report/MapSinglePane4Chart.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.fr.design.chart.report; - -import com.fr.base.chart.chartdata.TopDefinitionProvider; -import com.fr.chart.chartdata.MapSingleLayerTableDefinition; -import com.fr.chart.chartdata.TopDefinition; -import com.fr.design.beans.FurtherBasicBeanPane; -import com.fr.design.data.tabledata.wrapper.TableDataWrapper; -import com.fr.general.Inter; - -import java.awt.*; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - */ -public class MapSinglePane4Chart extends FurtherBasicBeanPane { - - private MapTableDataSinglePane4Chart tableSinglePane; - - public MapSinglePane4Chart() { - initCom(); - } - - private void initCom() { - this.setLayout(new BorderLayout()); - - this.add(tableSinglePane = new MapTableDataSinglePane4Chart(), BorderLayout.CENTER); - } - - /** - * 判断准许的情况 - * @param ob 数据集 - * @return 是不是顶层数据 - */ - public boolean accept(Object ob) { - return ob instanceof TopDefinition; - } - - /** - * 重置 - */ - public void reset() { - - } - - /** - *界面标题 - * @return 界面标题 - */ - public String title4PopupWindow() { - return Inter.getLocText(new String[]{"SingleLayer", "Chart-Map"}); - } - - /** - * 加载单层地图时的 数据来源界面 - */ - public void populateBean(TopDefinitionProvider ob) { - if(ob instanceof MapSingleLayerTableDefinition) { - tableSinglePane.populateBean((MapSingleLayerTableDefinition)ob); - } - } - - /** - * 保存下载 单层数据界面 - */ - public TopDefinitionProvider updateBean() { - return tableSinglePane.updateBean(); - } - - /** - * 出发数据集改变 - * @param tableDataWrapper 数据集 - */ - public void fireTableDataChanged(TableDataWrapper tableDataWrapper) { - tableSinglePane.setTableDataWrapper(tableDataWrapper); - tableSinglePane.refreshAreaNameBox(); - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/chart/report/MapTableCubeDataPane4Chart.java b/designer_chart/src/com/fr/design/chart/report/MapTableCubeDataPane4Chart.java deleted file mode 100644 index 2da1d68408..0000000000 --- a/designer_chart/src/com/fr/design/chart/report/MapTableCubeDataPane4Chart.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.fr.design.chart.report; - -import com.fr.chart.chartdata.MapMoreLayerTableDefinition; -import com.fr.chart.chartdata.MapSingleLayerTableDefinition; -import com.fr.design.beans.FurtherBasicBeanPane; -import com.fr.design.data.tabledata.wrapper.TableDataWrapper; -import com.fr.general.Inter; - -import java.awt.*; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - */ -public class MapTableCubeDataPane4Chart extends FurtherBasicBeanPane { - - private MapMoreTableIndexPane tablePane; - private TableDataWrapper tableDataWrapper; - - public MapTableCubeDataPane4Chart() { - this.setLayout(new BorderLayout()); - tablePane = new MapMoreTableIndexPane(); - this.add(tablePane, BorderLayout.CENTER); - } - - /** - * 刷新区域名称列表 - */ - public void refreshAreaNameBox() { - TableDataWrapper tableDataWrappe = tableDataWrapper; - if (tableDataWrappe == null) { - return; - } - - java.util.List columnNameList = tableDataWrappe.calculateColumnNameList(); - tablePane.initAreaComBox(columnNameList.toArray(new String[columnNameList.size()])); - } - - public void setTableDataWrapper(TableDataWrapper wrapper){ - this.tableDataWrapper = wrapper; - } - - /** - * 界面接入 - * @param ob 界面 - * @return 返回接入. - */ - public boolean accept(Object ob) { - return true; - } - - /** - * 重置 - */ - public void reset() { - } - - /** - * 界面弹出标题 - * @return 返回标题. - */ - public String title4PopupWindow() { - return Inter.getLocText("FR-Chart-Table_Data"); - } - - @Override - public void populateBean(MapMoreLayerTableDefinition tableDefinition) { - - if (tableDefinition != null) { - MapSingleLayerTableDefinition[] values = tableDefinition.getNameValues(); - if(values != null && values.length > 0) { - tablePane.populateBean(values[0]); - } - } - } - - @Override - public MapMoreLayerTableDefinition updateBean() { - MapMoreLayerTableDefinition tableDefinition = new MapMoreLayerTableDefinition(); - - TableDataWrapper tableDataWrappe =tableDataWrapper; - if (tableDataWrappe != null) { - tableDefinition.setTableData(tableDataWrappe.getTableData()); - - tableDefinition.clearNameValues(); - tableDefinition.addNameValue(tablePane.updateBean()); - } - - return tableDefinition; - } - -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/chart/report/MapTableDataSinglePane4Chart.java b/designer_chart/src/com/fr/design/chart/report/MapTableDataSinglePane4Chart.java deleted file mode 100644 index df0dca9280..0000000000 --- a/designer_chart/src/com/fr/design/chart/report/MapTableDataSinglePane4Chart.java +++ /dev/null @@ -1,268 +0,0 @@ -package com.fr.design.chart.report; - -import com.fr.base.Utils; -import com.fr.chart.chartdata.MapSingleLayerTableDefinition; -import com.fr.chart.chartdata.SeriesDefinition; -import com.fr.design.beans.FurtherBasicBeanPane; -import com.fr.design.data.tabledata.wrapper.TableDataWrapper; -import com.fr.design.event.UIObserver; -import com.fr.design.event.UIObserverListener; -import com.fr.design.gui.frpane.UICorrelationPane; -import com.fr.design.gui.icombobox.UIComboBox; -import com.fr.design.gui.ilable.BoldFontTextLabel; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.itable.UITableEditor; -import com.fr.design.gui.itextfield.UITextField; -import com.fr.design.layout.TableLayout; -import com.fr.design.layout.TableLayoutHelper; -import com.fr.general.Inter; -import com.fr.stable.StringUtils; - -import javax.swing.*; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import java.awt.*; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.util.*; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - */ -public class MapTableDataSinglePane4Chart extends FurtherBasicBeanPane implements UIObserver { - - private static final int LABEL_WIDTH_GAP = 5; - private static final int COM_HEIGHT = 20; - private ArrayList changeListeners = new ArrayList(); - private String[] initNames = {""}; - - private UIComboBox areaNameBox; - private UICorrelationPane titleValuePane; - private TableDataWrapper tableDataWrapper; - - public MapTableDataSinglePane4Chart() { - this.setLayout(new BorderLayout()); - JPanel pane = new JPanel(); - this.add(pane, BorderLayout.CENTER); - pane.setLayout(new BorderLayout()); - - pane.add(getAreaNamePane(), BorderLayout.NORTH); - - String[] titles = {Inter.getLocText("FR-Chart-Area_Title"), Inter.getLocText("FR-Chart-Area_Value")}; - titleValuePane = new UICorrelationPane(titles){ - public UITableEditor createUITableEditor() { - return new InnerTableEditor(); - } - }; - - pane.add(titleValuePane, BorderLayout.CENTER); - } - - - private JPanel getAreaNamePane(){ - final UILabel label = new BoldFontTextLabel(Inter.getLocText("FR-Chart-Map_ShowWay") + ":"); - UILabel nameLabel = new UILabel(Inter.getLocText("FR-Chart-Area_Name") + ":", SwingConstants.RIGHT){ - public Dimension getPreferredSize() { - return new Dimension(label.getPreferredSize().width+LABEL_WIDTH_GAP,COM_HEIGHT); - } - }; - areaNameBox = new UIComboBox(); - areaNameBox.setPreferredSize(new Dimension(80, 20)); - double p =TableLayout.PREFERRED; - double f = TableLayout.FILL; - double[] columnSize = {p, f}; - double[] rowSize = {p}; - Component[][] components = new Component[][]{ - new Component[]{nameLabel, areaNameBox}, - }; - return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - } - /** - *刷新区域名称列表 - */ - public void refreshAreaNameBox() {// 刷新区域名称列表 - TableDataWrapper tableDataWrappe = tableDataWrapper; - if (tableDataWrappe == null) { - return; - } - java.util.List columnNameList = tableDataWrappe.calculateColumnNameList(); - initNames = columnNameList.toArray(new String[columnNameList.size()]); - - Object oldSelected = areaNameBox.getSelectedItem(); - areaNameBox.removeAllItems(); - for(int i = 0, size = initNames.length; i < size; i++) { - areaNameBox.addItem(initNames[i]); - } - areaNameBox.getModel().setSelectedItem(oldSelected); - stopEditing(); - } - - - /** - * 是否接受数据集 - * @param ob 具体变量 - * @return 不是 - */ - public boolean accept(Object ob) { - return false; - } - - /** - * 界面重置 - */ - public void reset() { - - } - - /** - * 界面弹出标题 - * @return 标题 - */ - public String title4PopupWindow() { - return Inter.getLocText("FR-Chart-Table_Data"); - } - - private void stopEditing() { - } - - @Override - public void populateBean(MapSingleLayerTableDefinition ob) { - stopEditing(); - if (ob instanceof MapSingleLayerTableDefinition) { - MapSingleLayerTableDefinition mapDefinition = (MapSingleLayerTableDefinition) ob; - -// fromTableData.populateBean(((NameTableData) mapDefinition.getTableData())); - areaNameBox.setSelectedItem(mapDefinition.getAreaName()); - - java.util.List paneList = new ArrayList(); - int titleValueSize = mapDefinition.getTitleValueSize(); - for(int i = 0; i < titleValueSize; i++) { - SeriesDefinition definition = mapDefinition.getTitleValueWithIndex(i); - if(definition != null && definition.getSeriesName() != null && definition.getValue() != null) { - paneList.add(new Object[]{definition.getSeriesName(), definition.getValue()}); - } - } - - if(!paneList.isEmpty()) { - titleValuePane.populateBean(paneList); - } - } - } - - @Override - public MapSingleLayerTableDefinition updateBean() {// 从一行内容中update - stopEditing(); - - MapSingleLayerTableDefinition definition = new MapSingleLayerTableDefinition(); - - TableDataWrapper tableDataWrappe = tableDataWrapper; -// = fromTableData.getTableDataWrapper(); - if (tableDataWrappe == null || areaNameBox.getSelectedItem() == null) { - return null; - } - - definition.setTableData(tableDataWrapper.getTableData()); - definition.setAreaName(Utils.objectToString(areaNameBox.getSelectedItem())); - - java.util.List paneList = titleValuePane.updateBean(); - for(int i = 0, size = paneList.size(); i < size; i++) { - Object[] values = (Object[])paneList.get(i); - if(values.length == 2) { - SeriesDefinition seriesDefinition = new SeriesDefinition(); - seriesDefinition.setSeriesName(values[0]); - seriesDefinition.setValue(values[1]); - definition.addTitleValue(seriesDefinition); - } - } - - return definition; - } - - /** - * 给组件登记一个观察者监听事件 - * - * @param listener 观察者监听事件 - */ - public void registerChangeListener(final UIObserverListener listener) { - changeListeners.add(new ChangeListener() { - public void stateChanged(ChangeEvent e) { - listener.doChange(); - } - }); - } - - /** - * 组件是否需要响应添加的观察者事件 - * - * @return 如果需要响应观察者事件则返回true,否则返回false - */ - public boolean shouldResponseChangeListener() { - return true; - } - - private class InnerTableEditor extends UITableEditor { - private JComponent editorComponent; - - /** - * 返回当前编辑器的值 - */ - public Object getCellEditorValue() { - if(editorComponent instanceof UITextField) { - UITextField textField = (UITextField)editorComponent; - return textField.getText(); - } else if(editorComponent instanceof UIComboBox) { - UIComboBox boxPane = (UIComboBox)editorComponent; - return boxPane.getSelectedItem(); - } - return super.getCellEditorValue(); - } - - /** - * 返回当前编辑器.. - */ - public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { - if (column == table.getModel().getColumnCount()) { - return null; - } - if(column == 0 ) { - UITextField text = new UITextField(); - if(value != null) { - text.setText(Utils.objectToString(value)); - } - - text.registerChangeListener(new UIObserverListener() { - @Override - public void doChange() { - titleValuePane.fireTargetChanged(); - } - }); - - this.editorComponent = text; - } else { - UIComboBox box = new UIComboBox(initNames); - box.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - titleValuePane.fireTargetChanged(); - titleValuePane.stopCellEditing(); - } - }); - - if (value != null && StringUtils.isNotEmpty(value.toString())) { - box.setSelectedItem(value); - } else { - box.setSelectedItem(value); - } - - this.editorComponent = box; - } - return this.editorComponent; - } - } - - public void setTableDataWrapper(TableDataWrapper wrapper){ - this.tableDataWrapper = wrapper; - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/AbstractChartDataPane4Chart.java b/designer_chart/src/com/fr/design/mainframe/AbstractChartDataPane4Chart.java deleted file mode 100644 index f7c3ca189e..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/AbstractChartDataPane4Chart.java +++ /dev/null @@ -1,244 +0,0 @@ -package com.fr.design.mainframe; - -import com.fr.base.TableData; -import com.fr.chart.chartattr.ChartCollection; -import com.fr.chart.chartdata.JSONTableData; -import com.fr.data.impl.EmbeddedTableData; -import com.fr.data.impl.ExcelTableData; -import com.fr.design.event.UIObserver; -import com.fr.design.event.UIObserverListener; -import com.fr.design.gui.frpane.AttributeChangeListener; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.icombobox.UIComboBox; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.layout.TableLayout; -import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.mainframe.chart.gui.ChartDataPane; -import com.fr.design.mainframe.chart.gui.data.*; -import com.fr.general.Inter; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - * Date: 14/12/3 - * Time: 下午6:53 - */ -public class AbstractChartDataPane4Chart extends DataContentsPane implements UIObserver { - - private static final int DATA_SOURCE_GAP = 18; - private static final int WIDTH = 262; - - protected ChartDataPane parentPane; - protected ChartDesignDataLoadPane choosePane; - protected JComponent choose = new UILabel(); - - protected UIObserverListener observerListener; - - protected UIComboBox dataSource = new UIComboBox( - new String[]{"JSON" + Inter.getLocText("Chart-DS_TableData"), Inter.getLocText("Chart-Use_Local") + "EXCEL", Inter.getLocText("Chart-DS_Embedded_TableData")}); - - protected ItemListener dsListener = new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - int index = dataSource.getSelectedIndex(); - if (index == 0) { - initJSON(); - } else if (index == 1) { - initExcel(); - } else { - initEmbbed(); - } - remove(leftContentPane); - clearTableDataSetting(); - initContentPane(); - AbstractChartDataPane4Chart.this.validate(); - } - }; - - protected AttributeChangeListener attributeChangeListener; - - public AbstractChartDataPane4Chart(final AttributeChangeListener listener, ChartDataPane parent) { - this.parentPane = parent; - this.attributeChangeListener = listener; - initJSON(); - initAll(); - } - - protected void populateChoosePane(TableData tableData) { - dataSource.removeItemListener(dsListener); - if (tableData instanceof JSONTableData) { - initJSON(); - dataSource.setSelectedIndex(0); - } else if (tableData instanceof ExcelTableData) { - initExcel(); - dataSource.setSelectedIndex(1); - } else if (tableData instanceof EmbeddedTableData) { - initEmbbed(); - dataSource.setSelectedIndex(2); - } - choosePane.populateChartTableData(tableData); - dataSource.addItemListener(dsListener); - } - - - protected void initJSON() { - choosePane = new JSONDataPane(this); - UILabel url = new UILabel("URL:"); - url.setHorizontalAlignment(SwingConstants.RIGHT); - choose = url; - } - - protected void initExcel() { - choose = new UIButton(Inter.getLocText("Chart-Select_Path")); - choosePane = new ExcelDataPane(this, choose); - } - - protected void initEmbbed() { - choosePane = new EmbbeddDataPane(this); - choose = null; - } - - @Override - public void setSupportCellData(boolean supportCellData) { - - } - - @Override - protected JPanel createContentPane() { - double p = TableLayout.PREFERRED; - double[] columnSize = {WIDTH}; - double[] rowSize = {p, p}; - Component[][] components = new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("Chart-Data_Import"))}, - new Component[]{createDataImportPane()} - }; - - return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - } - - private JPanel createDataImportPane() { - double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double[] columnSize = {f}; - double[] rowSize = {p, p, p}; - Component[][] components = new Component[][]{ - new Component[]{createDataSourcePane()}, - new Component[]{new JSeparator()}, - new Component[]{createDataSetPane()} - }; - - return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - } - - - /** - * 数据配置面板 - * - * @return - */ - protected JPanel createDataSetPane() { - double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double[] columnSize = {f}; - double[] rowSize = {p, p}; - Component[][] components = new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("Chart-Data_Configuration"))}, - new Component[]{getDataContentPane()} - }; - - return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - } - - protected JPanel getDataContentPane() { - return new JPanel(); - } - - - private JPanel createDataSourcePane() { - double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double[] columnSize = {DATA_SOURCE_GAP, f}; - double[] rowSize = {p,}; - Component[][] components = new Component[][]{ - new Component[]{null, createChooseBoxPane()}, - }; - return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - } - - private JPanel createChooseBoxPane() { - UILabel dataSourceLabel = new UILabel(Inter.getLocText("Chart-Data_Resource") + ":"); - dataSourceLabel.setHorizontalAlignment(SwingConstants.RIGHT); - double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double[] columnSize = {p, f}; - double[] rowSize = {p, p}; - Component[][] components = new Component[][]{ - new Component[]{dataSourceLabel, dataSource}, - new Component[]{choose, choosePane} - }; - return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - } - - - /** - * 注册观察者监听事件 - * - * @param listener 观察者监听事件 - */ - public void registerChangeListener(UIObserverListener listener) { - this.observerListener = listener; - } - - /** - * 使用应该响应listener - * - * @return 应该响应 - */ - public boolean shouldResponseChangeListener() { - return true; - } - - - protected void initSelfListener(Container parentComponent) { - for (int i = 0; i < parentComponent.getComponentCount(); i++) { - Component tmpComp = parentComponent.getComponent(i); - if (tmpComp instanceof Container) { - initListener((Container) tmpComp); - } - if (tmpComp instanceof UIObserver) { - ((UIObserver) tmpComp).registerChangeListener(observerListener); - } - } - } - - - @Override - public void populate(ChartCollection collection) { - - } - - @Override - public void update(ChartCollection collection) { - - } - - /** - * 清空数据集的设置 - */ - public void clearTableDataSetting() { - - } - - /** - * 数据集数据改变 - */ - public void fireTableDataChange() { - - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/AbstractMapPlotPane4ToolBar.java b/designer_chart/src/com/fr/design/mainframe/AbstractMapPlotPane4ToolBar.java deleted file mode 100644 index d2da88c837..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/AbstractMapPlotPane4ToolBar.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.fr.design.mainframe; - -import com.fr.chart.base.ChartConstants; -import com.fr.chart.base.MapSvgXMLHelper; -import com.fr.chart.chartattr.*; -import com.fr.design.gui.icombobox.UIComboBox; -import com.fr.design.mainframe.chart.ChartDesignEditPane; -import com.fr.general.ComparatorUtils; -import com.fr.stable.Constants; - -import javax.swing.*; -import javax.swing.border.EmptyBorder; -import java.awt.*; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - * Date: 14/12/1 - * Time: 下午3:15 - */ -public abstract class AbstractMapPlotPane4ToolBar extends JPanel{ - - - protected static final int COM_HEIGHT = 22; - protected static final int COM_GAP = 14; - protected static final int COMBOX_WIDTH = 230; - - protected ChartDesigner chartDesigner; - protected UIComboBox mapTypeComboBox; - - protected ItemListener mapTypeListener = new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - calculateDetailMaps(mapTypeComboBox.getSelectedIndex()); - } - }; - - - public AbstractMapPlotPane4ToolBar(ChartDesigner designer){ - this.chartDesigner = designer; - this.setLayout(new FlowLayout(FlowLayout.LEFT, COM_GAP, 0)); - this.setBorder(new EmptyBorder(2, 0, 2, 0)); - mapTypeComboBox = new UIComboBox(getMapTypes()) { - public Dimension getPreferredSize() { - return new Dimension(COMBOX_WIDTH, COM_HEIGHT); - } - }; - mapTypeComboBox.addItemListener(mapTypeListener); - this.add(mapTypeComboBox); - } - - - protected abstract void calculateDetailMaps(int mapType); - - /** - * 更新地图面板 - * @param mapType 地图名字 - */ - public void populateMapPane(String mapType){ - mapTypeComboBox.removeItemListener(mapTypeListener); - for (String type : getMapTypes()) { - java.util.List list = MapSvgXMLHelper.getInstance().getNamesListWithCateName(type); - for (Object name : list) { - if(ComparatorUtils.equals(name,mapType)){ - mapTypeComboBox.setSelectedItem(type); - break; - } - } - } - mapTypeComboBox.addItemListener(mapTypeListener); - } - - public abstract String[] getMapTypes(); - - /** - * 切换图表类型 - */ - public void fireChange(){ - ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection(); - Chart chart =chartCollection.getSelectedChart(); - if(chart.getPlot().getPlotStyle() != ChartConstants.STYLE_NONE){ - resetChart(chart); - } - chart.switchPlot(getSelectedClonedPlot()); - - if(chart.getPlot().getPlotStyle() != ChartConstants.STYLE_NONE){ - resetChart(chart); - } - chartDesigner.fireTargetModified(); - ChartDesignEditPane.getInstance().populateSelectedTabPane(); - } - - protected void resetChart(Chart chart){ - chart.setTitle(new Title(chart.getTitle().getTextObject())); - chart.setBorderStyle(Constants.LINE_NONE); - chart.setBorderColor(new Color(150, 150, 150)); - chart.setBackground(null); - } - - protected abstract Plot getSelectedClonedPlot(); - - /** - * 触发更新 - */ - public void fireTargetModified() { - chartDesigner.fireTargetModified(); - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/ChartArea.java b/designer_chart/src/com/fr/design/mainframe/ChartArea.java deleted file mode 100644 index e30f15ea57..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/ChartArea.java +++ /dev/null @@ -1,521 +0,0 @@ -/* - * Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. - */ - -package com.fr.design.mainframe; - -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.itextfield.UINumberField; -import com.fr.design.layout.TableLayout; -import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.scrollruler.*; -import com.fr.general.FRScreen; -import com.fr.general.Inter; - -import javax.swing.*; -import javax.swing.border.LineBorder; -import java.awt.*; -import java.awt.event.*; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-13 - * Time: 下午5:08 - */ -public class ChartArea extends JComponent implements ScrollRulerComponent { - - private static final int TOPGAP = 8; - private static final int MIN_WIDTH = 36; - private static final int MIN_HEIGHT = 21; - private static final double SLIDER_FLOAT = 120.0; - private static final double SLIDER_MIN = 60.0; - private static final double DEFAULT_SLIDER = 100.0; - private static final int ROTATIONS = 50; - private int designerwidth = 810; - private int designerheight = 500; - private int customWidth = 810; - private int customHeight = 500; - private ChartDesigner designer; - private int horizontalValue = 0; - private int verticalValue = 0; - private int verticalMax = 0; - private int horicalMax = 0; - private FormScrollBar verScrollBar; - private FormScrollBar horScrollBar; - //显示和设置图表界面大小的控件 - private UINumberField widthPane; - private UINumberField heightPane; - private boolean isValid = true; - private double START_VALUE = DEFAULT_SLIDER; - - public ChartArea(ChartDesigner designer) { - this(designer, true); - } - - public ChartArea(ChartDesigner designer, boolean useScrollBar) { - this.designer = designer; - this.designer.setParent(this); - this.customWidth = designer.getTarget().getWidth(); - this.customHeight = designer.getTarget().getHeight(); - this.designerwidth = this.customWidth; - this.designerheight = this.customHeight; - isValid = useScrollBar; - verScrollBar = new FormScrollBar(Adjustable.VERTICAL, this); - horScrollBar = new FormScrollBar(Adjustable.HORIZONTAL, this); - if (useScrollBar) { - this.setLayout(new FormRulerLayout()); - designer.setBorder(new LineBorder(new Color(198, 198, 198))); - this.add(FormRulerLayout.CENTER, designer); - addFormSize(); - this.add(FormRulerLayout.VERTICAL, verScrollBar); - this.add(FormRulerLayout.HIRIZONTAL, horScrollBar); - enableEvents(AWTEvent.MOUSE_WHEEL_EVENT_MASK); - } else { - // 报表参数界面只要标尺和中心pane - this.setLayout(new RulerLayout()); - this.add(RulerLayout.CENTER, designer); - addFormRuler(); - } - this.setFocusTraversalKeysEnabled(false); - } - - /** - * 增加表单的页面大小控制界面,包括手动修改和滑块拖动 - */ - private void addFormSize() { - double f = TableLayout.FILL; - double p = TableLayout.PREFERRED; - double[] rowSize = {f}; - double[] columnSize = {p, f, p, p, p, p, p,f,p}; - UILabel tipsPane = new UILabel("chart"); - tipsPane.setPreferredSize(new Dimension(200, 0)); - widthPane = new UINumberField(); - widthPane.setPreferredSize(new Dimension(60, 0)); - heightPane = new UINumberField(); - heightPane.setPreferredSize(new Dimension(60, 0)); - JPanel panel = new JPanel(){ - public Dimension getPreferredSize(){ - return new Dimension(200,0); - } - }; - JPanel resizePane = TableLayoutHelper.createCommonTableLayoutPane(new JComponent[][]{ - {tipsPane, new UILabel(), widthPane, new UILabel(Inter.getLocText("Indent-Pixel")), new UILabel("x"), - heightPane, new UILabel(Inter.getLocText("Indent-Pixel")),new UILabel(),panel}}, - rowSize, columnSize, 8 - ); - this.add(FormRulerLayout.BOTTOM, resizePane); - setWidgetsConfig(); - // 先初始话滑块及对应事件,然后获取分辨率调整容器的显示大小 - initCalculateSize(); - } - - private void setWidgetsConfig() { - widthPane.setHorizontalAlignment(widthPane.CENTER); - heightPane.setHorizontalAlignment(heightPane.CENTER); - widthPane.setMaxDecimalLength(0); - heightPane.setMaxDecimalLength(0); - //控件初始值就是根节点组件初始的宽和高 - widthPane.setValue(designerwidth); - heightPane.setValue(designerheight); - addWidthPaneListener(); - addHeightPaneListener(); - } - - private void initCalculateSize() { - Toolkit toolkit = Toolkit.getDefaultToolkit(); - Dimension scrnsize = toolkit.getScreenSize(); - double value = FRScreen.getByDimension(scrnsize).getValue(); - if (value != DEFAULT_SLIDER) { - reCalculateRoot(value, true); - } - } - - //设置宽度的控件及响应事件 - private void addWidthPaneListener() { - widthPane.addActionListener( - new ActionListener() { - public void actionPerformed(ActionEvent evt) { - reCalculateWidth((int) ((UINumberField) evt.getSource()).getValue()); - } - } - ); - widthPane.addFocusListener( - new FocusAdapter() { - public void focusLost(FocusEvent e) { - // 失去焦点时,可以认为输入结束 - reCalculateWidth((int) ((UINumberField) e.getSource()).getValue()); - } - } - ); - } - - private void addHeightPaneListener() { - heightPane.addActionListener( - new ActionListener() { - public void actionPerformed(ActionEvent evt) { - reCalculateHeight((int) ((UINumberField) evt.getSource()).getValue()); - } - } - ); - heightPane.addFocusListener( - new FocusAdapter() { - public void focusLost(FocusEvent e) { - // 失去焦点时,可以认为输入结束 - reCalculateHeight((int) ((UINumberField) e.getSource()).getValue()); - } - } - ); - } - - private void reCalculateWidth(int width) { - int dW = width - designerwidth; - if (dW == 0) { - return; - } - // 图表设计器先设大小为实际的高和当前的宽,然后按此调整内部的组件 - designer.setSize(width, designerheight); - designerwidth = width; - customWidth = width; - designer.getTarget().setWidth(width); - ChartArea.this.validate(); - designer.fireTargetModified(); - } - - private void reCalculateHeight(int height) { - int dW = height - designerwidth; - if (dW == 0) { - return; - } - // 图表设计器先设大小为实际的高和当前的宽,然后按此调整内部的组件 - designer.setSize(designerwidth, height); - designerheight = height; - customHeight = height; - this.designer.getTarget().setHeight(height); - ChartArea.this.validate(); - designer.fireTargetModified(); - } - - /** - * 按照界面大小的百分比值调整root大小 - * - * @param needCalculateParaHeight 是否需要调整参数界面高度 - * @param value - */ - private void reCalculateRoot(double value, boolean needCalculateParaHeight) { - if (value == START_VALUE) { - return; - } - double percent = (value - START_VALUE) / START_VALUE; - Dimension d = new Dimension(designerwidth, designerheight); - // 调整自适应布局大小后,同步调整参数界面和border大小,此时刷新下formArea - ChartArea.this.validate(); - START_VALUE = value; - } - - /** - * 增加刻度条 - */ - public void addFormRuler() { - BaseRuler vRuler = new VerticalRuler(this); - BaseRuler hRuler = new HorizontalRuler(this); - this.add(RulerLayout.VRULER, vRuler); - this.add(RulerLayout.HRULER, hRuler); - } - - /** - * 鼠标滚轮事件 - * 由于表单设计界面要求: 容器大小大于界面时,滚动条才可以拖动,所以不支持滚动无限往下滚 - */ - @Override - protected void processMouseWheelEvent(java.awt.event.MouseWheelEvent evt) { - int id = evt.getID(); - switch (id) { - case MouseEvent.MOUSE_WHEEL: { - int rotations = evt.getWheelRotation(); - int value = this.verScrollBar.getValue() + rotations * ROTATIONS; - value = Math.min(value, verticalMax); - value = Math.max(0, value); - doLayout(); //加dolayout是因为每次滚动都要重置 Max的大小 - this.verScrollBar.setValue(value); - break; - } - } - } - - /** - * 容器布局 - */ - public void doLayout() { - layout(); - if (isValid) { - setScrollBarProperties(customWidth - designer.getWidth(), horScrollBar); - //计算滚动条值的时候应该算上参数面板的高度 - setScrollBarProperties(customHeight - designer.getHeight(), verScrollBar); - } - } - - /** - * 设置滚动条的属性 - */ - private void setScrollBarProperties(int value, FormScrollBar bar) { - if (value <= 0) { - // 界面有滚动条时,手动缩小容器宽度到界面内,重置滚动条值和max - setScrollBarMax(0, bar); - bar.setMaximum(0); - bar.setValue(0); - bar.setEnabled(false); - } else { - //参数面板拖拽过程中value一直为当前value - int oldValue = verticalValue; - setScrollBarMax(value, bar); - bar.setEnabled(true); - bar.setMaximum(value); - bar.setValue(value); - bar.setValue(oldValue); - } - } - - private boolean isScrollNotVisible(FormScrollBar bar) { - if (bar.getOrientation() == Adjustable.VERTICAL) { - return verticalMax == 0; - } else { - return horicalMax == 0; - } - } - - private void setScrollBarMax(int max, FormScrollBar bar) { - if (bar.getOrientation() == Adjustable.VERTICAL) { - verticalMax = max; - } else { - horicalMax = max; - } - } - - /** - * 返回designer的最小高度 - * - * @return int - */ - public int getMinHeight() { - return MIN_HEIGHT; - } - - /** - * 返回designer的最小宽度 - * - * @return int - */ - public int getMinWidth() { - return MIN_WIDTH; - } - - /** - * getRulerLengthUnit - * - * @return short - */ - public short getRulerLengthUnit() { - return -1; - } - - /** - * 返回水平滚动条的value - * - * @return int - */ - public int getHorizontalValue() { - return horizontalValue; - } - - /** - * 设置水平滚动条的value - * - * @param newValue - */ - public void setHorizontalValue(int newValue) { - this.horizontalValue = newValue; - } - - /** - * 返回竖直滚动条的value - * - * @return - */ - public int getVerticalValue() { - return verticalValue; - } - - /** - * 竖直滚动条赋值 - * - * @param newValue - */ - public void setVerticalValue(int newValue) { - this.verticalValue = newValue; - } - - /** - * 返回当前designer的高度 - * - * @return height - */ - public int getDesignerHeight() { - return designer.getHeight(); - } - - /** - * 返回当前designer的宽度 - * - * @return - */ - public int getDesignerWidth() { - return designer.getWidth(); - } - - /** - * 返回宽度控件的value - * - * @return 宽度 - */ - public double getWidthPaneValue() { - return widthPane.getValue(); - } - - /** - * 设置宽度值 - * - * @param value 值 - */ - public void setWidthPaneValue(int value) { - widthPane.setValue(value); - } - - /** - * 设置高度值 - * - * @param value 值 - */ - public void setHeightPaneValue(int value) { - heightPane.setValue(value); - } - - /** - * 返回高度控件的value - * - * @return 高度 - */ - public double getHeightPaneValue() { - return heightPane.getValue(); - } - - /** - * 返回界面区域大小 - * - * @return Dimension - */ - public Dimension getAreaSize() { - return new Dimension(horScrollBar.getMaximum(), verScrollBar.getMaximum()); - } - - /** - * setAreaSize - * - * @param totalSize - * @param horizontalValue - * @param verticalValue - */ - public void setAreaSize(Dimension totalSize, int horizontalValue, int verticalValue, double width, double height, double slide) { - horScrollBar.setMaximum((int) totalSize.getWidth()); - verScrollBar.setMaximum((int) totalSize.getHeight()); - horScrollBar.setValue(horizontalValue); - verScrollBar.setValue(verticalValue); - // 撤销会refresh底层容器,需要按照之前的宽高和百分比重置下容器size - if (width != widthPane.getValue()) { - widthPane.setValue(width); - reCalculateWidth((int) width); - } - if (height != heightPane.getValue()) { - heightPane.setValue(height); - reCalculateHeight((int) height); - } - // undo时会重新refreshRoot,需要再次按照百分比调整下 - START_VALUE = DEFAULT_SLIDER; - reCalculateRoot(slide, true); - } - - public int getCustomWidth(){ - return this.customWidth; - } - - public int getCustomHeight(){ - return this.customHeight; - } - - /** - * 计算滚动条的值和max - * - * @param oldmax 之前最大值 - * @param max 当前最大值 - * @param newValue 当前value - * @param oldValue 之前value - * @param visi designer的大小 - * @param orientation 滚动条方向 - * @return 计算后的值和max - */ - @Override - public Point calculateScroll(int oldmax, int max, int newValue, int oldValue, int visi, int orientation) { - int scrollMax = orientation == 1 ? verticalMax : horicalMax; - //防止滚动条到达低端还可以继续点击移动(滚动条最大范围不变时,newValue要在范围之内) - if (oldmax == scrollMax + visi && newValue > scrollMax) { - return new Point(oldValue, oldmax); - } - return new Point(newValue, max); - } - - private class FormRulerLayout extends RulerLayout { - public FormRulerLayout() { - super(); - } - - /** - * 表单用的layout,当前不需要标尺 - */ - public void layoutContainer(Container target) { - synchronized (target.getTreeLock()) { - Insets insets = target.getInsets(); - int top = insets.top; - int left = insets.left; - int bottom = target.getHeight() - insets.bottom; - int right = target.getWidth() - insets.right; - Dimension resize = resizePane.getPreferredSize(); - Dimension hbarPreferredSize = null; - Dimension vbarPreferredSize = null; - - resizePane.setBounds(left, bottom - resize.height, right, resize.height); - if (horScrollBar != null) { - hbarPreferredSize = horScrollBar.getPreferredSize(); - vbarPreferredSize = verScrollBar.getPreferredSize(); - horScrollBar.setBounds(left, bottom - hbarPreferredSize.height - resize.height, right - BARSIZE, hbarPreferredSize.height); - verScrollBar.setBounds(right - vbarPreferredSize.width, top, vbarPreferredSize.width, bottom - BARSIZE - resize.height); - } - ChartDesigner dg = ((ChartDesigner) designer); - Rectangle rec = new Rectangle(left + (right - designerwidth) / 2, TOPGAP, right, bottom); - //是否为图表 - if (isValid) { - int maxHeight = bottom - hbarPreferredSize.height - resize.height - TOPGAP * 2; - int maxWidth = right - vbarPreferredSize.width; - designerwidth = designerwidth> maxWidth ? maxWidth : designerwidth; - designerheight = designerheight > maxHeight ? maxHeight : designerheight; - int designerLeft = left + (verScrollBar.getX() - designerwidth) / 2; - rec = new Rectangle(designerLeft, TOPGAP, designerwidth, designerheight); - } - // designer是整个表单设计界面中的面板部分,目前只放自适应布局和参数界面。 - designer.setBounds(rec); - } - } - - } - -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/ChartDesigner.java b/designer_chart/src/com/fr/design/mainframe/ChartDesigner.java deleted file mode 100644 index f16fe98ec2..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/ChartDesigner.java +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. - */ - -package com.fr.design.mainframe; -import com.fr.form.ui.ChartBook; -import com.fr.design.designer.TargetComponent; -import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; -import com.fr.design.menu.MenuDef; -import com.fr.design.menu.ShortCut; -import com.fr.design.menu.ToolBarDef; - -import javax.swing.*; -import javax.swing.event.ChangeListener; -import java.awt.*; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.awt.event.MouseMotionAdapter; -import java.util.ArrayList; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-13 - * Time: 下午4:30 - */ -public class ChartDesigner extends TargetComponent implements MouseListener{ - - private ChartArea chartArea;//上层区域 - private boolean hasCalGap = false; - private ArrayList changeListeners = new ArrayList(); - public ChartDesigner(ChartBook chartBook) { - super(chartBook); - this.addMouseListener(this); - updateUI();// 初始化界面设计工具的UI实例 - } - - /** - * 设置上层区域 - * @param chartArea 图表区域 - */ - public void setParent(ChartArea chartArea) { - this.chartArea = chartArea; - } - - /** - * 复制 - */ - public void copy() { - - } - - /** - * 黏贴 - * @return 成功返回true - */ - public boolean paste() { - return false; - } - - /** - * 剪切 - * @return 成功返回TRUE - */ - public boolean cut() { - return false; - } - - /** - * 停止编辑 - */ - public void stopEditing() { - - } - - /** - * 权限编辑面板 - * @return 面板 - */ - public AuthorityEditPane createAuthorityEditPane() { - return null; - } - - /** - * 工具条 - * @return 工具条 - */ - public ToolBarMenuDockPlus getToolBarMenuDockPlus() { - return null; - } - - /** - * 菜单状态 - * @return 状态 - */ - public int getMenuState() { - return 0; - } - - /** - * 东上面板 - * @return 面板 - */ - public JPanel getEastUpPane() { - return null; - } - - /** - * 东下面板 - * @return 面板 - */ - public JPanel getEastDownPane() { - return null; - } - - /** - * 取消格式 - */ - public void cancelFormat() { - - } - - /** - * 图表设计器得工具条项 - * @return 图表设计器得工具条项 - */ - public ToolBarDef[] toolbars4Target() { - return new ToolBarDef[0]; - } - - /** - * 菜单 - * @return 菜单 - */ - public MenuDef[] menus4Target() { - return new MenuDef[0]; - } - - /** - * 菜单项 - * @return 菜单项 - */ - public ShortCut[] shortcut4TemplateMenu() { - return new ShortCut[0]; - } - - /** - * 权限编辑得菜单项 - * @return 菜单项 - */ - public ShortCut[] shortCuts4Authority() { - return new ShortCut[0]; - } - - /** - * 表单得工具条按钮 - * @return 表单得工具条按钮 - */ - public JComponent[] toolBarButton4Form() { - return new JComponent[0]; - } - - - /** - * 返回表单区域 - * @return 表单区域 - */ - public ChartArea getArea() { - return chartArea; - } - - - /** - * 鼠标点击 - * @param e 事件 - */ - public void mouseClicked(MouseEvent e) { - } - - /** - * 鼠标按下 - * @param e 事件 - */ - public void mousePressed(MouseEvent e) { - - } - - /** - * 鼠标释放 - * @param e 事件 - */ - public void mouseReleased(MouseEvent e) { - - } - - /** - * 鼠标进入 - * @param e 事件 - */ - public void mouseEntered(MouseEvent e) { - - } - - /** - * 鼠标退出 - * @param e 事件 - */ - public void mouseExited(MouseEvent e) { - - } - - - private void registerChangeListener(ChangeListener changeListener){ - if(changeListener == null){ - return; - } - this.changeListeners.add(changeListener); - } - - - public void populate(){ - } - - /** - * 清除工具栏上面全局风格按钮的选中 - */ - public void clearToolBarStyleChoose(){ - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/ChartDesignerUI.java b/designer_chart/src/com/fr/design/mainframe/ChartDesignerUI.java deleted file mode 100644 index 5ba44f7353..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/ChartDesignerUI.java +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. - */ - -package com.fr.design.mainframe; - -import com.fr.base.BaseUtils; -import com.fr.base.ScreenResolution; -import com.fr.base.chart.BaseChartGlyph; -import com.fr.chart.chartattr.*; -import com.fr.chart.charttypes.ColumnIndependentChart; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.mainframe.chart.ChartDesignEditPane; -import com.fr.general.FRLogger; - -import javax.swing.*; -import javax.swing.plaf.ComponentUI; -import java.awt.*; -import java.awt.event.MouseEvent; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-13 - * Time: 下午4:55 - */ -public class ChartDesignerUI extends ComponentUI { - private static final Icon ADD = BaseUtils.readIcon("/com/fr/design/images/add.png"); - private static final Icon DEL = BaseUtils.readIcon("/com/fr/design/images/del.png"); - private static final int ICON_SIZE = 22; - private static final int H_GAP = 2; - private static final int V_GAP = 6; - private Rectangle[] iconLocations; - private Rectangle add; - private Rectangle del; - private UILabel tooltipLabel; - private int overIndex = -1;//鼠标悬浮上去的图表的INDEX - - // 图表当前的设计器 - private ChartDesigner designer; - - public ChartDesignerUI() { - - - } - - /** - * 加载界面 - * - * @param c 组件 - */ - public void installUI(JComponent c) { - designer = (ChartDesigner) c; - } - - /** - * 渲染当前的设计界面以及设计辅助状态 - * - * @param g 画图类 - * @param c 组件 - */ - @Override - public void paint(Graphics g, JComponent c) { - ChartCollection chartCollection = (ChartCollection) designer.getTarget().getChartCollection(); - Chart editingChart = chartCollection.getSelectedChart(); - BaseChartGlyph chartGlyph = null; - if (editingChart != null && editingChart.getPlot() != null) { - chartGlyph = editingChart.createGlyph(editingChart.defaultChartData()); - } - int parentWidth = designer.getSize().width; - int parentHeight = designer.getSize().height; - int chartWidth = designer.getArea().getCustomWidth(); - int chartHeight = designer.getArea().getCustomHeight(); - Graphics clipg; - clipg = g.create(-designer.getArea().getHorizontalValue(), -designer.getArea().getVerticalValue(), parentWidth + designer.getArea().getHorizontalValue(), parentHeight + designer.getArea().getVerticalValue()); - clipg = clipg.create(1, 1, designer.getArea().getCustomWidth(), designer.getArea().getCustomHeight()); - g.setColor(Color.white); - g.fillRect(0, 0, chartWidth, chartHeight); - chartGlyph.setUseChangeChart(true); - Image chartImage = chartGlyph.toImage(chartWidth, chartHeight, ScreenResolution.getScreenResolution()); - clipg.drawImage(chartImage, 0, 0, chartWidth, chartHeight, null); - paintChange(clipg, c); - } - - - //绘制切换的东西 - private void paintChange(Graphics g, JComponent c) { - int chartWidth = designer.getArea().getCustomWidth(); - ChartCollection collection = (ChartCollection) designer.getTarget().getChartCollection(); - int chartCount = collection.getChartCount(); - iconLocations = new Rectangle[chartCount]; - int startX = chartWidth - V_GAP - ICON_SIZE; - if (chartCount == 1) { - //只有一个时,只绘制新增按钮,不绘制删除按钮 - ADD.paintIcon(c, g, startX, H_GAP); - add = new Rectangle(startX, H_GAP, ICON_SIZE, ICON_SIZE); - del = null; - } else { - DEL.paintIcon(c, g, startX, H_GAP); - del = new Rectangle(startX, H_GAP, ICON_SIZE, ICON_SIZE); - startX -= (V_GAP + ICON_SIZE); - ADD.paintIcon(c, g, startX, H_GAP); - add = new Rectangle(startX, H_GAP, ICON_SIZE, ICON_SIZE); - } - - for (int i = chartCount - 1; i >= 0; i--) { - Plot plot = collection.getChart(i).getPlot(); - if (plot == null) { - continue; - } - if (collection.getSelectedIndex() == i) { - Icon ploticon = BaseUtils.readIcon(plot.getPlotSmallIconPath() + "_normal.png"); - if (ploticon != null) { - startX -= (V_GAP + ICON_SIZE); - ploticon.paintIcon(c, g, startX, H_GAP); - } - - }else if(overIndex == i){ - Icon ploticon = BaseUtils.readIcon(plot.getPlotSmallIconPath() + "_over.png"); - if (ploticon != null) { - startX -= (V_GAP + ICON_SIZE); - ploticon.paintIcon(c, g, startX, H_GAP); - } - } else { - Icon ploticon = BaseUtils.readIcon(plot.getPlotSmallIconPath() + "_gray.png"); - if (ploticon != null) { - startX -= (V_GAP + ICON_SIZE); - ploticon.paintIcon(c, g, startX, H_GAP); - } - } - - iconLocations[i] = new Rectangle(startX, H_GAP, ICON_SIZE, ICON_SIZE); - } - } - - /** - * 鼠标点击 - * - * @param e 事件 - */ - public void mouseClicked(MouseEvent e) { - Point clikPoint = new Point(e.getPoint().x + designer.getArea().getHorizontalValue(), e.getPoint().y + designer.getArea().getVerticalValue()); - ChartCollection collection = (ChartCollection) designer.getTarget().getChartCollection(); - for (int i = 0; i < iconLocations.length; i++) { - if (iconLocations[i].contains(clikPoint)) { - if (i == collection.getSelectedIndex()) { - return; - } - collection.setSelectedIndex(i); - designer.repaint(); - ChartDesignEditPane.getInstance().populateSelectedTabPane(); - return; - } - } - - if (add.contains(clikPoint)) { - Chart[] barChart = ColumnIndependentChart.columnChartTypes; - try { - Chart newChart = (Chart) barChart[0].clone(); - int select = collection.getSelectedIndex(); - collection.addNamedChartAtIndex(newChart.getTitle().getTextObject().toString(), newChart,select+1); - collection.setSelectedIndex(select+1); - ChartDesignEditPane.getInstance().populateSelectedTabPane(); - } catch (CloneNotSupportedException e1) { - FRLogger.getLogger().error("Error in Clone"); - } - designer.fireTargetModified(); - ChartDesignEditPane.getInstance().populateSelectedTabPane(); - return; - } - - if (del != null && del.contains(clikPoint)) { - int selectedIndex = collection.getSelectedIndex(); - collection.removeNameObject(selectedIndex); - if (selectedIndex > 0) { - collection.setSelectedIndex(selectedIndex - 1); - } else { - collection.setSelectedIndex(0); - } - designer.fireTargetModified(); - ChartDesignEditPane.getInstance().populateSelectedTabPane(); - } - } - - /** - * 鼠标悬浮上时的数据点提示 - * - * @param e 事件 - */ - public void mouseMoved(MouseEvent e) { - Point clikPoint = new Point(e.getPoint().x + designer.getArea().getHorizontalValue(), e.getPoint().y + designer.getArea().getVerticalValue()); - if (clikPoint.getY() < H_GAP || clikPoint.getY() > H_GAP + ICON_SIZE) { - ToolTip4Chart.getInstance().hideToolTip(); - overIndex = -1; - return; - } - ChartCollection collection = (ChartCollection) designer.getTarget().getChartCollection(); - for (int i = 0; i < iconLocations.length; i++) { - if (iconLocations[i].contains(clikPoint)) { - overIndex = i; - String chartName = collection.getChartName(i); - ToolTip4Chart.getInstance().showToolTip(chartName,e.getXOnScreen(),e.getYOnScreen()); - return; - } - } - ToolTip4Chart.getInstance().hideToolTip(); - overIndex = -1; - } - -} \ 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 1c04543d68..f29efe7af6 100644 --- a/designer_chart/src/com/fr/design/mainframe/ChartPropertyPane.java +++ b/designer_chart/src/com/fr/design/mainframe/ChartPropertyPane.java @@ -3,26 +3,20 @@ */ package com.fr.design.mainframe; -import java.awt.BorderLayout; -import java.awt.Dimension; - -import javax.swing.BorderFactory; -import javax.swing.JComponent; -import javax.swing.SwingConstants; - import com.fr.design.gui.ilable.UILabel; +import javax.swing.*; +import java.awt.*; + public class ChartPropertyPane extends MiddleChartPropertyPane{ /** * 创建图表属性表实例. */ private synchronized static ChartPropertyPane getInstance() { - if(singleton == null) { - singleton = new ChartPropertyPane(); - } - - singleton.setSureProperty(); + //todo + //创建新图表时,创建属性表配置面板 + singleton = new ChartPropertyPane(); return singleton; } diff --git a/designer_chart/src/com/fr/design/mainframe/ChartToolBarPane.java b/designer_chart/src/com/fr/design/mainframe/ChartToolBarPane.java deleted file mode 100644 index 0550c463c4..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/ChartToolBarPane.java +++ /dev/null @@ -1,558 +0,0 @@ -/* - * Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. - */ - -package com.fr.design.mainframe; - -import com.fr.base.ChartPreStyleManagerProvider; -import com.fr.base.ChartPreStyleServerManager; -import com.fr.base.background.ColorBackground; -import com.fr.chart.base.*; -import com.fr.chart.chartattr.*; -import com.fr.chart.chartglyph.ConditionAttr; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.icombobox.UIComboBox; -import com.fr.design.mainframe.chart.ChartDesignEditPane; -import com.fr.design.mainframe.chart.ChartEditPane; -import com.fr.design.mainframe.chart.gui.type.ColumnPlotPane4ToolBar; -import com.fr.design.mainframe.chart.gui.type.PlotPane4ToolBar; -import com.fr.general.FRFont; -import com.fr.general.Inter; -import com.fr.stable.Constants; - -import javax.swing.*; -import javax.swing.border.EmptyBorder; -import java.awt.*; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-13 - * Time: 下午8:32 - */ -public class ChartToolBarPane extends JPanel { - public static final int TOTAL_HEIGHT = 42; - private static final int COM_HEIGHT = 22; - private static final int GAP = 7; - private static final int COM_GAP = 14; - private static final int COMBOX_WIDTH = 230; - - private static final String[] CHOOSEITEM = new String[]{ - Inter.getLocText("FR-Chart-Type_Column"), - Inter.getLocText("FR-Chart-Type_Line"), - Inter.getLocText("FR-Chart-Type_Bar"), - Inter.getLocText("FR-Chart-Type_Pie"), - Inter.getLocText("FR-Chart-Type_Area"), - Inter.getLocText("FR-Chart-Type_XYScatter"), - Inter.getLocText("FR-Chart-Chart_BubbleChart"), - Inter.getLocText("FR-Chart-Type_Radar"), - Inter.getLocText("FR-Chart-Type_Stock"), - Inter.getLocText("FR-Chart-Type_Meter"), - Inter.getLocText("FR-Chart-Type_Range"), - Inter.getLocText("FR-Chart-Type_Comb"), - Inter.getLocText("FR-Chart-Type_Gantt"), - Inter.getLocText("FR-Chart-Type_Donut"), - Inter.getLocText("FR-Chart-Map_Map"), - "gis"+Inter.getLocText("FR-Chart-Map_Map") - }; - - private UIComboBox chooseComboBox = new UIComboBox(CHOOSEITEM) { - public Dimension getPreferredSize() { - return new Dimension(COMBOX_WIDTH, COM_HEIGHT); - } - }; - - private JPanel stylePane; - private JPanel plotTypeComboBoxPane; - private UIButton topDownShade = new UIButton(Inter.getLocText("FR-Chart-Style_TopDownShade")); - private UIButton transparent = new UIButton(Inter.getLocText("FR-Chart-Style_Transparent")); - private UIButton plane3D = new UIButton(Inter.getLocText("FR-Chart-Style_Plane3D")); - private UIButton gradient = new UIButton(Inter.getLocText("FR-Chart-Style_GradientHighlight")); - private ItemListener itemListener = new ItemListener() { - - @Override - public void itemStateChanged(ItemEvent e) { - if (e.getStateChange() == ItemEvent.DESELECTED) { - ChartToolBarPane.this.remove(centerPane); - ChartToolBarPane.this.remove(stylePane); - if(chooseComboBox.getSelectedIndex() < ChartTypeValueCollection.MAP.toInt()){ - calSubChartTypesPane(chooseComboBox.getSelectedIndex()); - ChartToolBarPane.this.add(subChartTypesPane,BorderLayout.CENTER); - centerPane = subChartTypesPane; - ChartToolBarPane.this.add(stylePane, BorderLayout.EAST); - } else{ - calMapSubChartTypesPane(chooseComboBox.getSelectedIndex()); - ChartToolBarPane.this.add(mapTypePane, BorderLayout.CENTER); - centerPane = mapTypePane; - } - ChartCollection chartCollection = (ChartCollection) chartDesigner.getTarget().getChartCollection(); - Chart chart = chartCollection.getSelectedChart(); - ChartToolBarPane.this.validate(); - fireTypeChange(); - - if(chooseComboBox.getSelectedIndex() == ChartTypeValueCollection.MAP.toInt()){ - mapTypePane.populateMapPane(((MapPlot) chart.getPlot()).getMapName()); - }else if(chooseComboBox.getSelectedIndex() == ChartTypeValueCollection.GIS.toInt()){ - mapTypePane.populateMapPane(chart.getChartName()); - } - } - } - }; - private PlotPane4ToolBar subChartTypesPane;//默认柱形图 - - private AbstractMapPlotPane4ToolBar mapTypePane;//地图类型选择的面板 - private JPanel centerPane; - - private ChartDesigner chartDesigner; - private int lastStyleIndex = -1; - private MouseAdapter styleListener = new MouseAdapter() { - @Override - public void mousePressed(MouseEvent e) { - ChartCollection chartCollection = (ChartCollection) chartDesigner.getTarget().getChartCollection(); - Chart chart = chartCollection.getSelectedChart(); - Plot newPlot; - int chartType =chart.getPlot().getPlotType().toInt(); - if(chartType >= ChartTypeValueCollection.MAP.toInt()){ - return; - } - newPlot = subChartTypesPane.setSelectedClonedPlotWithCondition(chart.getPlot()); - chartDesigner.fireTargetModified(); - UIButton button = (UIButton)e.getSource(); - //如果是第二次选中,就是消除 - if(button.isSelected()){ - button.setSelected(false); - chart.setPlot(newPlot); - resetChart(chart); - lastStyleIndex = -1; - ChartDesignEditPane.getInstance().populateSelectedTabPane(); - return; - } - clearStyleChoose(); - setStyle(chart,e,newPlot); - lastStyleIndex = chart.getPlot().getPlotStyle(); - } - }; - - private void setStyle( Chart chart,MouseEvent e,Plot newPlot){ - if (e.getSource() == topDownShade) { - topDownShade.setSelected(true); - chart.setPlot(newPlot); - chart.getPlot().setPlotStyle(ChartConstants.STYLE_SHADE); - resetChart(chart); - createCondition4Shade(chart); - setPlotFillStyle(chart); - } else if (e.getSource() == transparent) { - transparent.setSelected(true); - chart.setPlot(newPlot); - chart.getPlot().setPlotStyle(ChartConstants.STYLE_TRANSPARENT); - resetChart(chart); - createCondition4Transparent(chart); - setPlotFillStyle(chart); - } else if (e.getSource() == plane3D) { - plane3D.setSelected(true); - chart.setPlot(newPlot); - chart.getPlot().setPlotStyle(ChartConstants.STYLE_3D); - resetChart(chart); - createCondition4Plane3D(chart); - setPlotFillStyle(chart); - } else if (e.getSource() == gradient) { - gradient.setSelected(true); - chart.setPlot(newPlot); - chart.getPlot().setPlotStyle(ChartConstants.STYLE_OUTER); - resetChart(chart); - createCondition4HighLight(chart); - setPlotFillStyle(chart); - } - chart.setStyleGlobal(true); - ChartEditPane pane = ChartDesignEditPane.getInstance(); - pane.styleChange(true); - ChartDesignEditPane.getInstance().populate((ChartCollection)chartDesigner.getTarget().getChartCollection()); - pane.styleChange(false); - } - - public ChartToolBarPane(ChartDesigner designer) { - chartDesigner = designer; - subChartTypesPane = new ColumnPlotPane4ToolBar(designer);//默认柱形图 - this.setLayout(new BorderLayout()); - this.setBorder(new EmptyBorder(GAP, COM_GAP, GAP, 0)); - plotTypeComboBoxPane = new JPanel(); - plotTypeComboBoxPane.setBorder(new EmptyBorder(2, 0, 2, 0)); - plotTypeComboBoxPane.setLayout(new BorderLayout()); - plotTypeComboBoxPane.add(chooseComboBox, BorderLayout.CENTER); - chooseComboBox.addItemListener(itemListener); - //默认选择第一个 - chooseComboBox.setSelectedIndex(0); - this.add(plotTypeComboBoxPane, BorderLayout.WEST); - initStylePane(); - this.add(stylePane, BorderLayout.EAST); - this.add(subChartTypesPane, BorderLayout.CENTER); - this.centerPane = subChartTypesPane; - topDownShade.addMouseListener(styleListener); - transparent.addMouseListener(styleListener); - plane3D.addMouseListener(styleListener); - gradient.addMouseListener(styleListener); - } - - private void initStylePane(){ - stylePane = new JPanel() { - public Dimension getPreferredSize() { - Dimension size = super.getPreferredSize(); - return new Dimension(size.width, COM_HEIGHT); - } - }; - stylePane.setLayout(new FlowLayout(FlowLayout.LEFT, COM_GAP, 0)); - stylePane.setBorder(new EmptyBorder(3, 0, 3, 0)); - stylePane.add(topDownShade); - stylePane.add(transparent); - stylePane.add(plane3D); - stylePane.add(gradient); - } - - /** - * 清除工具栏上面全局风格按钮的选中 - */ - public void clearStyleChoose() { - topDownShade.setSelected(false); - transparent.setSelected(false); - plane3D.setSelected(false); - gradient.setSelected(false); - } - - - private void calMapSubChartTypesPane(int index){ - ChartTypeValueCollection type = ChartTypeValueCollection.parse(index); - mapTypePane = PlotToolBarFactory.createToolBar4MapPlot(type,chartDesigner); - } - - private void calSubChartTypesPane(int index) { - ChartTypeValueCollection type = ChartTypeValueCollection.parse(index); - subChartTypesPane = PlotToolBarFactory.createToolBar4NormalPlot(type,chartDesigner); - } - - - private void fireTypeChange() { - if(chooseComboBox.getSelectedIndex() < ChartTypeValueCollection.MAP.toInt()){ - subChartTypesPane.fireChange(); - }else{ - mapTypePane.fireChange(); - } - } - - //图表区属性清空 - private void resetChart(Chart chart) { - chart.setTitle(new Title(chart.getTitle().getTextObject())); - chart.setBorderStyle(Constants.LINE_NONE); - chart.setBorderColor(new Color(150, 150, 150)); - chart.setBackground(null); - setPlotFillStyle(chart); - } - - //高光渐变的默认属性设置 - private void createCondition4HighLight(Chart chart) { - if (chart != null) { - //标题 - Title title = new Title(chart.getTitle().getTextObject()); - chart.setTitle(title); - title.setTitleVisible(true); - TextAttr textAttr = title.getTextAttr(); - if (textAttr == null) { - textAttr = new TextAttr(); - title.setTextAttr(textAttr); - } - title.setPosition(Constants.LEFT); - textAttr.setFRFont(FRFont.getInstance("Microsoft YaHei", Font.BOLD, 16f, new Color(51, 51, 51))); - - //图例 - Legend legend = new Legend(); - legend.setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(138, 140, 139))); - legend.setPosition(Constants.RIGHT_TOP); - chart.getPlot().setLegend(legend); - - //分类轴,现在只有柱形图,条形图,面积图 - if (chart.getPlot() instanceof CategoryPlot) { - CategoryPlot plot = (CategoryPlot) chart.getPlot(); - - //分类轴设置 - Axis cateAxis = plot.getxAxis(); - cateAxis.setAxisStyle(Constants.LINE_THICK); - cateAxis.setAxisColor(new Color(204, 220, 228)); - cateAxis.setTickMarkType(Constants.TICK_MARK_INSIDE); - cateAxis.setSecTickMarkType(Constants.TICK_MARK_NONE); - cateAxis.setShowAxisLabel(true); - cateAxis.getTextAttr().setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 10f, new Color(138, 140, 139))); - - //值轴 - Axis valueAxis = plot.getyAxis(); - valueAxis.setAxisStyle(Constants.NONE); - valueAxis.setAxisColor(null); - valueAxis.setTickMarkType(Constants.TICK_MARK_INSIDE); - valueAxis.setSecTickMarkType(Constants.TICK_MARK_NONE); - valueAxis.setShowAxisLabel(true); - valueAxis.getTextAttr().setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 10f, new Color(138, 140, 139))); - - //绘图区 - plot.setBorderStyle(Constants.LINE_THIN); - plot.setBorderColor(new Color(204, 220, 228)); - plot.setBackground(ColorBackground.getInstance(new Color(248, 247, 245))); - plot.getyAxis().setMainGridStyle(Constants.LINE_THIN); - plot.getyAxis().setMainGridColor(new Color(192, 192, 192)); - } - - } - } - - //平面3D的默认属性设置 - private void createCondition4Plane3D(Chart chart) { - if (chart != null) { - //标题 - Title title = new Title(chart.getTitle().getTextObject()); - chart.setTitle(title); - title.setTitleVisible(true); - TextAttr textAttr = title.getTextAttr(); - if (textAttr == null) { - textAttr = new TextAttr(); - title.setTextAttr(textAttr); - } - title.setPosition(Constants.CENTER); - textAttr.setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 16f, new Color(51, 51, 51))); - - //图例 - Legend legend = new Legend(); - legend.setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(128, 128, 128))); - legend.setPosition(Constants.TOP); - chart.getPlot().setLegend(legend); - - //分类轴,现在只有柱形图,条形图,面积图 - if (chart.getPlot() instanceof CategoryPlot) { - CategoryPlot plot = (CategoryPlot) chart.getPlot(); - //分类轴设置 - Axis cateAxis = plot.getxAxis(); - cateAxis.setAxisStyle(Constants.LINE_THICK); - cateAxis.setAxisColor(new Color(57, 57, 57)); - cateAxis.setTickMarkType(Constants.TICK_MARK_NONE); - cateAxis.setSecTickMarkType(Constants.TICK_MARK_NONE); - cateAxis.setShowAxisLabel(true); - cateAxis.getTextAttr().setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 10f, new Color(57, 57, 57))); - - //值轴设置 - Axis valueAxis = plot.getyAxis(); - valueAxis.setAxisStyle(Constants.LINE_NONE); - valueAxis.setTickMarkType(Constants.TICK_MARK_NONE); - valueAxis.setSecTickMarkType(Constants.TICK_MARK_NONE); - valueAxis.setShowAxisLabel(false); - - //绘图区 - plot.getyAxis().setMainGridStyle(Constants.LINE_THIN); - plot.getyAxis().setMainGridColor(new Color(192, 192, 192)); - chart.setBorderStyle(Constants.LINE_NONE); - - //数据标签 - ConditionAttr attrList = plot.getConditionCollection().getDefaultAttr(); - DataSeriesCondition attr = attrList.getExisted(AttrContents.class); - if (attr != null) { - attrList.remove(attr); - } - AttrContents attrContents = new AttrContents(); - attrContents.setPosition(Constants.OUTSIDE); - attrContents.setSeriesLabel(ChartConstants.VALUE_PARA); - attrContents.setTextAttr(new TextAttr(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(51, 51, 51)))); - attrList.addDataSeriesCondition(attrContents); - } - } - } - - //透明风格的默认属性设置 - private void createCondition4Transparent(Chart chart) { - if (chart != null) { - //标题 - Title title = new Title(chart.getTitle().getTextObject()); - chart.setTitle(title); - title.setTitleVisible(true); - TextAttr textAttr = title.getTextAttr(); - if (textAttr == null) { - textAttr = new TextAttr(); - title.setTextAttr(textAttr); - } - title.setPosition(Constants.LEFT); - textAttr.setFRFont(FRFont.getInstance("Microsoft YaHei", Font.BOLD, 16f, new Color(192, 192, 192))); - - //图例 - Legend legend = new Legend(); - legend.setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(138, 140, 139))); - legend.setPosition(Constants.RIGHT_TOP); - chart.getPlot().setLegend(legend); - - Plot plot = chart.getPlot(); - //绘图区 - chart.setBackground(ColorBackground.getInstance(new Color(51, 51, 51))); - - //分类轴,现在只有柱形图,条形图,面积图 - if (plot instanceof CategoryPlot) { - //边框 - plot.setBorderStyle(Constants.LINE_THIN); - plot.setBorderColor(new Color(65, 65, 65)); - - //分类轴设置 - Axis cateAxis = plot.getxAxis(); - cateAxis.setAxisStyle(Constants.LINE_THICK); - cateAxis.setAxisColor(new Color(192, 192, 192)); - cateAxis.setTickMarkType(Constants.TICK_MARK_NONE); - cateAxis.setSecTickMarkType(Constants.TICK_MARK_NONE); - cateAxis.setShowAxisLabel(true); - cateAxis.getTextAttr().setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 10f, new Color(150, 150, 150))); - - //值轴 - Axis valueAxis = plot.getyAxis(); - valueAxis.setShowAxisLabel(true); - valueAxis.setAxisStyle(Constants.LINE_NONE); - valueAxis.getTextAttr().setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 10f, new Color(150, 150, 150))); - valueAxis.setMainGridStyle(Constants.LINE_THIN); - valueAxis.setMainGridColor(new Color(63, 62, 62)); - } - } - } - - //渐变的默认属性设置 - private void createCondition4Shade(Chart chart) { - if (chart != null) { - //标题 - Title title = new Title(chart.getTitle().getTextObject()); - chart.setTitle(title); - title.setTitleVisible(true); - TextAttr textAttr = title.getTextAttr(); - if (textAttr == null) { - textAttr = new TextAttr(); - title.setTextAttr(textAttr); - } - title.setPosition(Constants.CENTER); - textAttr.setFRFont(FRFont.getInstance("Microsoft YaHei", Font.BOLD, 16f, new Color(0, 51, 102))); - - //图例 - Legend legend = new Legend(); - legend.setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(128, 128, 128))); - legend.setPosition(Constants.BOTTOM); - chart.getPlot().setLegend(legend); - - //分类轴,现在只有柱形图,条形图,面积图 - if (chart.getPlot() instanceof CategoryPlot) { - CategoryPlot plot = (CategoryPlot) chart.getPlot(); - - //分类轴设置 - Axis cateAxis = plot.getxAxis(); - cateAxis.setAxisStyle(Constants.LINE_THICK); - cateAxis.setAxisColor(new Color(73, 100, 117)); - cateAxis.setTickMarkType(Constants.TICK_MARK_NONE); - cateAxis.setSecTickMarkType(Constants.TICK_MARK_NONE); - cateAxis.setShowAxisLabel(true); - cateAxis.getTextAttr().setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 10f, new Color(128, 128, 128))); - - //值轴 - Axis valueAxis = plot.getyAxis(); - valueAxis.setShowAxisLabel(true); - valueAxis.getTextAttr().setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 10f, new Color(128, 128, 128))); - valueAxis.setAxisStyle(Constants.LINE_NONE); - - //绘图区 - plot.getyAxis().setMainGridStyle(Constants.LINE_THIN); - plot.getyAxis().setMainGridColor(new Color(192, 192, 192)); - plot.setHorizontalIntervalBackgroundColor(new Color(243, 243, 243)); - } - } - } - - private void setPlotFillStyle(Chart chart) { - ChartPreStyleManagerProvider manager = ChartPreStyleServerManager.getProviderInstance(); - Plot plot = chart.getPlot(); - Object preStyle = null; - String name = ""; - if (topDownShade.isSelected()) { - name = Inter.getLocText("FR-Chart-Style_Retro"); - preStyle = manager.getPreStyle(name); - } else if (transparent.isSelected()) { - name = Inter.getLocText("FR-Chart-Style_Fresh"); - preStyle = manager.getPreStyle(name); - } else if (plane3D.isSelected()) { - name = Inter.getLocText("FR-Chart-Style_Bright"); - preStyle = manager.getPreStyle(name); - } else if (gradient.isSelected()) { - name = Inter.getLocText("FR-Chart-Style_Bright"); - preStyle = manager.getPreStyle(name); - }else{ - preStyle = null; - } - if (preStyle == null) { - plot.getPlotFillStyle().setColorStyle(ChartConstants.COLOR_DEFAULT); - } else { - AttrFillStyle fillStyle = ((ChartPreStyle) preStyle).getAttrFillStyle(); - fillStyle.setFillStyleName(name); - plot.setPlotFillStyle(fillStyle); - } - - } - - public void populate(){ - ChartCollection chartCollection = (ChartCollection) chartDesigner.getTarget().getChartCollection(); - Chart chart = chartCollection.getSelectedChart(); - chooseComboBox.removeItemListener(itemListener); - chooseComboBox.setSelectedIndex(chart.getPlot().getPlotType().toInt()); - int chartType =chart.getPlot().getPlotType().toInt(); - this.removeAll(); - populateStyle(); - this.add(plotTypeComboBoxPane, BorderLayout.WEST); - initStylePane(); - if(chartType < ChartTypeValueCollection.MAP.toInt()){ - calSubChartTypesPane(chartType); - subChartTypesPane.setSelectedIndex(chart.getPlot().getDetailType()); - ChartToolBarPane.this.add(subChartTypesPane, BorderLayout.CENTER); - this.add(subChartTypesPane, BorderLayout.CENTER); - centerPane = subChartTypesPane; - this.add(stylePane, BorderLayout.EAST); - }else if(chartType == ChartTypeValueCollection.MAP.toInt()){ - calMapSubChartTypesPane(chartType); - mapTypePane.populateMapPane(((MapPlot) chart.getPlot()).getMapName()); - ChartToolBarPane.this.add(mapTypePane, BorderLayout.CENTER); - centerPane = mapTypePane; - }else{ - calMapSubChartTypesPane(chartType); - mapTypePane.populateMapPane((chart.getPlot()).getPlotName()); - ChartToolBarPane.this.add(mapTypePane, BorderLayout.CENTER); - centerPane = mapTypePane; - } - ChartToolBarPane.this.validate(); - chooseComboBox.addItemListener(itemListener); - } - - - - private void populateStyle() { - clearStyleChoose(); - ChartCollection chartCollection = (ChartCollection) chartDesigner.getTarget().getChartCollection(); - Chart chart = chartCollection.getSelectedChart(); - int plotStyle = chart.getPlot().getPlotStyle(); - switch (plotStyle) { - case ChartConstants.STYLE_SHADE: - topDownShade.setSelected(chart.isStyleGlobal() && true); - break; - case ChartConstants.STYLE_TRANSPARENT: - transparent.setSelected(chart.isStyleGlobal() && true); - break; - case ChartConstants.STYLE_3D: - plane3D.setSelected(chart.isStyleGlobal() && true); - break; - case ChartConstants.STYLE_OUTER: - gradient.setSelected(chart.isStyleGlobal() && true); - break; - default: - clearStyleChoose(); - break; - } - lastStyleIndex = plotStyle; - } - - -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/DesignerFrame4Chart.java b/designer_chart/src/com/fr/design/mainframe/DesignerFrame4Chart.java deleted file mode 100644 index d282aa1049..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/DesignerFrame4Chart.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.fr.design.mainframe; - -import com.fr.design.ChartEnvManager; -import com.fr.design.dialog.BasicDialog; -import com.fr.design.mainframe.actions.UpdateVersion; -import com.fr.design.mainframe.chart.UpdateOnLinePane; -import com.fr.design.mainframe.toolbar.ToolBarMenuDock; -import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; -import com.fr.json.JSONObject; -import com.fr.stable.ProductConstants; -import com.fr.stable.StableUtils; - -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.awt.event.WindowListener; -import java.util.ArrayList; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - */ -public class DesignerFrame4Chart extends DesignerFrame { - - /** - * Constructor. - * - * @param ad - */ - public DesignerFrame4Chart(ToolBarMenuDock ad) { - super(ad); - } - - - - - - protected ArrayList getFrameListeners(){ - ArrayList listeners = super.getFrameListeners(); - listeners.add(0, new WindowAdapter() { - @Override - public void windowOpened(WindowEvent e) { - super.windowOpened(e); - judgeFirstUseWhenStart(); - } - }); - return listeners; - } - - /** - * 退出 - */ - public void exit() { - ChartEnvManager.getEnvManager().saveXMLFile(); - super.exit(); - } - - //不需要西侧的文件树面板 - protected void laoyoutWestPane(){ - - } - - protected void judgeFirstUseWhenStart(){ - boolean isNeed2Check =ChartEnvManager.getEnvManager().isPushUpdateAuto() || ChartEnvManager.getEnvManager().isOverOneMonth(); - if(!StableUtils.checkDesignerActive(ChartEnvManager.getEnvManager().getActivationKey()) - || isNeed2Check){ - ChartEnvManager.getEnvManager().setActivationKey(ChartEnvManager.ACTIVE_KEY); - checkVersion(); - if(ChartEnvManager.getEnvManager().isOverOneMonth()){ - ChartEnvManager.getEnvManager().resetCheckDate(); - } - } - } - - private void checkVersion(){ - - new UpdateVersion(){ - protected void done() { - try { - JSONObject serverVersion = get(); - String version = serverVersion.getString(UpdateVersion.VERSION); - if(!ComparatorUtils.equals(ProductConstants.RELEASE_VERSION, version)){ - UpdateOnLinePane updateOnLinePane = new UpdateOnLinePane(version); - BasicDialog dg = updateOnLinePane.showWindow4UpdateOnline(DesignerContext.getDesignerFrame()); - updateOnLinePane.setParentDialog(dg); - dg.setVisible(true); - } - }catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); - } - } - }.execute(); - } - - - -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/GisMapPlotPane4ToolBar.java b/designer_chart/src/com/fr/design/mainframe/GisMapPlotPane4ToolBar.java deleted file mode 100644 index 4cf8da6913..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/GisMapPlotPane4ToolBar.java +++ /dev/null @@ -1,203 +0,0 @@ -package com.fr.design.mainframe; -import com.fr.chart.base.ChartConstants; -import com.fr.chart.chartattr.*; -import com.fr.chart.charttypes.GisMapIndependentChart; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.itextfield.UITextField; -import com.fr.design.layout.TableLayout; -import com.fr.design.layout.TableLayoutHelper; -import com.fr.general.FRLogger; -import com.fr.general.Inter; - -import javax.swing.*; -import javax.swing.event.DocumentEvent; -import javax.swing.event.DocumentListener; -import java.awt.*; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - * Date: 14/12/1 - * Time: 下午3:11 - */ -public class GisMapPlotPane4ToolBar extends AbstractMapPlotPane4ToolBar { - private static final int BAIDU = 0; - private static final int GOOGLE= 1; - - - private static final String[] TYPE_NAMES = new String[]{ - Inter.getLocText("FR-Chart-Map_Baidu"), - Inter.getLocText("FR-Chart-Map_Google")}; - - - private UITextField keyField = new UITextField(){ - public Dimension getPreferredSize() { - return new Dimension(COMBOX_WIDTH, COM_HEIGHT); - } - }; - - private DocumentListener keyListener = new DocumentListener() { - @Override - public void insertUpdate(DocumentEvent e) { - fireKeyChange(); - } - - @Override - public void removeUpdate(DocumentEvent e) { - fireKeyChange(); - } - - @Override - public void changedUpdate(DocumentEvent e) { - fireKeyChange(); - } - } ; - - private void fireKeyChange(){ - ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection(); - Chart chart =chartCollection.getSelectedChart(); - GisMapPlot plot =(GisMapPlot) chart.getPlot(); - String key = this.keyField.getText().trim(); - if(plot.isGisType() && key != plot.getBaiduKey()){ - plot.setBaiduKey(key); - }else if(!plot.isGisType() && key != plot.getGoogleKey()){ - plot.setGoogleKey(key); - } - chartDesigner.fireTargetModified(); - } - - public GisMapPlotPane4ToolBar(final ChartDesigner chartDesigner){ - super(chartDesigner); - this.add(getKeyPane()); - keyField.getDocument().addDocumentListener(keyListener); - } - - private JPanel getKeyPane(){ - double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double[] columnSize = {p,f}; - double[] rowSize = {p}; - Component[][] components = new Component[][]{ - new Component[]{new UILabel("key"),keyField}, - }; - return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - } - - - protected void calculateDetailMaps(int mapType){ - switch (mapType) { - case BAIDU: - populateDetilMaps(Inter.getLocText("FR-Chart-Map_Baidu")); - break; - case GOOGLE: - populateDetilMaps(Inter.getLocText("FR-Chart-Map_Google")); - break; - default: - populateDetilMaps(Inter.getLocText("FR-Chart-Map_Baidu")); - } - fireMapChange(); - - } - - /** - * 更新地图面板 - * @param mapType 地图名字 - */ - public void populateMapPane(String mapType){ - super.populateMapPane(mapType); - populateDetilMaps(mapTypeComboBox.getSelectedItem().toString()); - } - - protected void populateDetilMaps(String mapType){ - mapTypeComboBox.removeItemListener(mapTypeListener); - ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection(); - Chart chart =chartCollection.getSelectedChart(); - GisMapPlot plot = (GisMapPlot) chart.getPlot(); - keyField.getDocument().removeDocumentListener(keyListener); - if(plot.isGisType()){ - keyField.setText(plot.getBaiduKey()); - mapTypeComboBox.setSelectedIndex(0); - }else{ - keyField.setText(plot.getGoogleKey()); - mapTypeComboBox.setSelectedIndex(1); - } - keyField.getDocument().addDocumentListener(keyListener); - mapTypeComboBox.addItemListener(mapTypeListener); - } - - private void fireMapChange(){ - ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection(); - Chart chart =chartCollection.getSelectedChart(); - if(chart.getPlot().getPlotStyle() != ChartConstants.STYLE_NONE){ - resetChart(chart); - } - - Chart[] cs = GisMapIndependentChart.gisChartTypes; - GisMapPlot plot; - if (cs.length > 0) { - try { - plot = (GisMapPlot)cs[0].getPlot().clone(); - } catch (Exception e) { - plot = new GisMapPlot(); - } - } else { - plot = new GisMapPlot(); - } - - try { - chart.switchPlot((Plot)plot.clone()); - } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In GisChart"); - chart.switchPlot(new GisMapPlot()); - } - - plot = (GisMapPlot) chart.getPlot(); - boolean index = plot.isGisType(); - plot.setGisType(mapTypeComboBox.getSelectedIndex() == 1); - - if(index != plot.isGisType()){ - if(plot.isGisType()){ - this.keyField.setText(plot.getBaiduKey()); - }else{ - this.keyField.setText(plot.getGoogleKey()); - } - }else{ - String key = this.keyField.getText().trim(); - if(plot.isGisType() && key != plot.getBaiduKey()){ - plot.setBaiduKey(key); - }else if(!plot.isGisType() && key != plot.getGoogleKey()){ - plot.setGoogleKey(key); - } - } - chartDesigner.fireTargetModified(); - } - - protected Plot getSelectedClonedPlot() { - Chart[] mapChart = GisMapIndependentChart.gisChartTypes; - GisMapPlot newPlot; - if (mapChart.length > 0) { - try { - newPlot = (GisMapPlot)mapChart[0].getPlot().clone(); - } catch (Exception e) { - newPlot = new GisMapPlot(); - } - } else { - newPlot = new GisMapPlot(); - } - - Plot cloned = null; - try { - cloned = (Plot) newPlot.clone(); - } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In GisMapChart"); - } - return cloned; - } - - public String[] getMapTypes(){ - return TYPE_NAMES; - } - - -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/MapArrayPane.java b/designer_chart/src/com/fr/design/mainframe/MapArrayPane.java deleted file mode 100644 index 3dd189d30a..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/MapArrayPane.java +++ /dev/null @@ -1,339 +0,0 @@ -package com.fr.design.mainframe; - -import com.fr.chart.base.MapSvgAttr; -import com.fr.chart.base.MapSvgXMLHelper; -import com.fr.design.DesignerEnvManager; -import com.fr.design.beans.BasicBeanPane; -import com.fr.design.gui.controlpane.*; -import com.fr.design.gui.icombobox.UIComboBox; -import com.fr.design.gui.ilist.JNameEdList; -import com.fr.design.gui.ilist.ListModelElement; -import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; -import com.fr.general.Inter; -import com.fr.stable.CoreConstants; -import com.fr.stable.Nameable; -import com.fr.stable.StringUtils; -import com.fr.stable.core.PropertyChangeAdapter; - -import javax.swing.*; -import javax.swing.border.EmptyBorder; -import java.awt.*; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - * Date: 14/12/3 - * Time: 上午10:00 - */ -public class MapArrayPane extends JListControlPane { - private static final int LEFT_WIDTH = 180; - private static final Color LINE_COLOR = new Color(176, 176, 176); - private static final int TOP_GAP = 5; - - 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 String mapType; - private String mapDetailName; - - MapPlotPane4ToolBar toolBar; - UIComboBox mapTypeBox; - private ArrayList editedNames = new ArrayList(); - - private ItemListener typeListener = new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - MapArrayPane.this.updateBeans(); - mapType = mapTypeBox.getSelectedItem().toString(); - MapArrayPane.this.populate(MapSvgXMLHelper.getInstance().getAllMapObjects4Cate(mapType)); - } - }; - - - private ArrayList removeNames = new ArrayList(); - private MapEditPane mapEditPane; - private ChartDesigner chartDesigner; - - public MapArrayPane(String mapType, String mapDetailName,ChartDesigner chartDesigner) { - this.mapDetailName = mapDetailName; - this.mapType = mapType; - if (mapTypeBox != null) { - mapTypeBox.setSelectedItem(mapType); - } - this.chartDesigner = chartDesigner; - mapTypeBox.addItemListener(typeListener); - this.setBorder(new EmptyBorder(TOP_GAP, 0, 0, 0)); - this.addEditingListner(new PropertyChangeAdapter() { - public void propertyChange() { - dealPropertyChange(); - } - }); - } - - public void setToolBarPane(MapPlotPane4ToolBar pane) { - this.toolBar = pane; - } - - protected void doWhenPopulate(BasicBeanPane beanPane) { - mapEditPane = (MapEditPane)beanPane; - mapEditPane.dealWidthMap(mapType); - String editingName = ((MapEditPane)beanPane).getCurrentMapName(); - if(!editedNames.contains(editingName)){ - editedNames.add(editingName); - } - } - - protected JPanel getLeftPane() { - JPanel centerPane = super.getLeftPane(); - mapTypeBox = new UIComboBox(TYPE_NAMES); - JPanel leftPane = new JPanel(); - leftPane.setLayout(new BorderLayout()); - leftPane.setBorder(new EmptyBorder(3, 0, 0, 0)); - leftPane.add(mapTypeBox, BorderLayout.NORTH); - leftPane.add(centerPane, BorderLayout.CENTER); - return leftPane; - } - - - private void dealPropertyChange() { - MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance(); - java.util.List nameList =helper.getNamesListWithCateName(mapType); - String[] allListNames = nameableList.getAllNames(); - allListNames[nameableList.getSelectedIndex()] = StringUtils.EMPTY; - String tempName = getEditingName(); - if (StringUtils.isEmpty(tempName)) { - String[] warning = new String[]{"NOT_NULL_Des", "Please_Rename"}; - String[] sign = new String[]{",", "!"}; - nameableList.stopEditing(); - JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(MapArrayPane.this), Inter.getLocText(warning, sign)); - setWarnigText(editingIndex); - return; - } - if (!ComparatorUtils.equals(tempName, selectedName) - && isNameRepeted(new List[]{nameList, Arrays.asList(allListNames)}, tempName)) { - nameableList.stopEditing(); - JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(MapArrayPane.this), - Inter.getLocText(new String[]{"FR-Chart-Map_NameAlreadyExist", "Please_Rename"}, new String[]{",", "!"})); - setWarnigText(editingIndex); - return; - } - String oldname = mapEditPane.getCurrentMapName(); - mapEditPane.setCurrentMapName(tempName); - mapEditPane.dealWidthMap(mapType); - if(editedNames.contains(oldname)){ - editedNames.remove(oldname); - editedNames.add(tempName); - } - if(helper.getNewMapAttr(oldname) != null){ - MapSvgAttr attr = helper.getNewMapAttr(oldname); - attr.renameMap(tempName); - helper.removeNewMapAttr(oldname); - helper.addNewSvgMaps(tempName,attr); - } - this.toolBar.fireTargetModified(); - this.saveMapInfo(tempName); - } - - protected void doAfterRemove(){ - for(String map2Remove : removeNames){ - MapSvgXMLHelper.getInstance().removeMapAttr(map2Remove); - MapSvgXMLHelper.getInstance().removeNewMapAttr(map2Remove); - } - update4AllType(); - } - - protected void doBeforeRemove(){ - removeNames.clear(); - for(int index : nameableList.getSelectedIndices()){ - removeNames.add(nameableList.getNameAt(index)); - } - } - - //保存修改过的地图信息 - 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 update4AllType() { - MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance(); - helper.clearNames4Cate(mapType); - for(String name : nameableList.getAllNames()){ - MapSvgAttr attr = helper.getMapAttr(name); - if(attr == null){ - continue; - } - helper.addCateNames(attr.getMapType(),attr.getName()); - } - } - - - /** - * 创建菜单 - * - * @return 菜单 - */ - public NameableCreator[] createNameableCreators() { - return new NameableCreator[]{ - new NameableSelfCreator(Inter.getLocText("FR-Chart-Custom_Map"), MapSvgAttr.class, MapEditPane.class) { - public MapSvgAttr createNameable(UnrepeatedNameHelper helper) { - MapSvgAttr attr = new MapSvgAttr(); - attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + helper.createUnrepeatedName(Inter.getLocText("FR-Chart-Custom_Map")) + ".svg"); - MapSvgXMLHelper.getInstance().addNewSvgMaps(attr.getName(), attr); - update4Edited(attr.getName()); - // 返回参数设置面板. - return attr; - } - - @Override - public String createTooltip() { - return null; - } - - public void saveUpdatedBean(ListModelElement wrapper, Object bean) { - wrapper.wrapper = (Nameable)bean; - } - } - }; - } - - protected boolean isCreatorNeedIocn() { - return false; - } - - protected ShortCut4JControlPane[] createShortcuts() { - return new ShortCut4JControlPane[]{ - addItemShortCut(), - removeItemShortCut(), - }; - } - - protected int getLeftPreferredSize() { - return LEFT_WIDTH; - } - - - @Override - protected String title4PopupWindow() { - return Inter.getLocText(new String[]{"FR-Chart-Map_Map", "FR-Chart-Data_Edit"}); - } - - /** - * 更新 - */ - public void updateBeans() { - super.update(); - this.update4AllType(); - this.updateAllEditedAttrMaps(); - MapSvgXMLHelper.getInstance().clearTempAttrMaps(); - //versionID递增 - this.toolBar.fireTargetModified(); - this.saveMapInfo(selectedName); - } - - /** - * 创建list - * @return 返回list - */ - public JNameEdList createJNameList() { - JNameEdList nameEdList = new JNameEdList(new DefaultListModel()) { - - public Rectangle createRect(Rectangle rect, int iconWidth) { - return rect; - } - - protected void doAfterLostFocus() { - MapArrayPane.this.updateControlUpdatePane(); - } - - public void setNameAt(String name, int index) { - super.setNameAt(name,index); - update4Edited(name); - } - - }; - nameEdList.setCellRenderer(new NameableListCellRenderer()); - return nameEdList; - } - - - protected void update4Edited(String editingName){ - - } - - private void updateAllEditedAttrMaps(){ - MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance(); - for(String editedName : editedNames){ - if(helper.getMapAttr(editedName)!=null){ - helper.getMapAttr(editedName).writeBack(editedName); - }else if(helper.getNewMapAttr(editedName)!=null){ - helper.getNewMapAttr(editedName).writeBack(editedName); - } - } - } - - //根据地图的名字返回地图的图片 - 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; - } - - /* - * Nameable的ListCellRenerer - */ - private class NameableListCellRenderer extends - DefaultListCellRenderer { - public Component getListCellRendererComponent(JList list, Object value, - int index, boolean isSelected, boolean cellHasFocus) { - super.getListCellRendererComponent(list, value, index, isSelected, - cellHasFocus); - - if (value instanceof ListModelElement) { - Nameable wrappee = ((ListModelElement) value).wrapper; - this.setText(((ListModelElement) value).wrapper.getName()); - - for (NameableCreator creator : MapArrayPane.this.creators()) { - if (creator.menuIcon() != null && creator.acceptObject2Populate(wrappee) != null) { - this.setIcon(creator.menuIcon()); - this.setToolTipText(creator.createTooltip()); - break; - } - } - } - return this; - } - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/MapPlotPane4ToolBar.java b/designer_chart/src/com/fr/design/mainframe/MapPlotPane4ToolBar.java deleted file mode 100644 index 62a1496479..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/MapPlotPane4ToolBar.java +++ /dev/null @@ -1,210 +0,0 @@ -package com.fr.design.mainframe; - -import com.fr.chart.base.MapSvgXMLHelper; -import com.fr.chart.chartattr.*; -import com.fr.design.dialog.BasicDialog; -import com.fr.design.dialog.DialogActionAdapter; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.icombobox.UIComboBox; -import com.fr.design.mainframe.chart.ChartDesignEditPane; -import com.fr.general.ComparatorUtils; -import com.fr.general.Inter; -import com.fr.stable.StringUtils; - -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - * Date: 14/12/1 - * Time: 上午11:57 - */ -public class MapPlotPane4ToolBar extends AbstractMapPlotPane4ToolBar{ - - private static final int WORLD_MAP = 0; - private static final int STATE_MAP = 1; - private static final int PROVINCE_MAP = 2; - private static final int CUSTOM_MAP = 3; - private static final int BUTTON_WIDTH = 44; - - - 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 String lastEditingName =StringUtils.EMPTY; - - private UIButton mapEditButton = new UIButton(Inter.getLocText("FR-Chart-Data_Edit")){ - public Dimension getPreferredSize() { - return new Dimension(BUTTON_WIDTH, COM_HEIGHT); - } - }; - - protected UIComboBox detailMaps = new UIComboBox(){ - public Dimension getPreferredSize() { - return new Dimension(COMBOX_WIDTH, COM_HEIGHT); - } - }; - - private ItemListener detailListener = new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - fireMapChange(); - } - }; - - private ActionListener mapEditListener = new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - String selectedName =StringUtils.EMPTY; - if(detailMaps.getSelectedItem() != null){ - selectedName = detailMaps.getSelectedItem().toString(); - } - final MapArrayPane mapArrayPane = new MapArrayPane(mapTypeComboBox.getSelectedItem().toString(),selectedName,chartDesigner){ - public void updateBeans() { - super.updateBeans(); - if(reCalculateDetailsMaps(mapTypeComboBox.getSelectedItem().toString(),lastEditingName) || - ComparatorUtils.equals(StringUtils.EMPTY,lastEditingName)){ - detailMaps.setSelectedItem(lastEditingName); - ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection(); - com.fr.chart.chartattr.Chart chart =chartCollection.getSelectedChart(); - if(chart.getPlot().isMapPlot()){ - MapPlot mapPlot = (MapPlot) chart.getPlot(); - mapPlot.setMapName(lastEditingName); - } - } - } - - protected void update4Edited(String editingName){ - lastEditingName = editingName; - } - }; - - BasicDialog mapArrayDialog = mapArrayPane.showWindow4ChartMapArray(DesignerContext.getDesignerFrame(), - new DialogActionAdapter() { - - @Override - public void doOk() { - mapArrayPane.updateBeans(); - } - }); - mapArrayDialog.setModal(true); - mapArrayPane.setToolBarPane(MapPlotPane4ToolBar.this); - mapArrayPane.populate(MapSvgXMLHelper.getInstance().getAllMapObjects4Cate(mapTypeComboBox.getSelectedItem().toString())); - if(detailMaps.getSelectedItem() != null){ - mapArrayPane.setSelectedName(detailMaps.getSelectedItem().toString()); - } - mapArrayDialog.setVisible(true); - } - }; - - public MapPlotPane4ToolBar(ChartDesigner chartDesigner){ - super(chartDesigner); - this.add(detailMaps); - detailMaps.addItemListener(detailListener); - mapEditButton.addActionListener(mapEditListener); - this.add(mapEditButton); - } - - /** - * 更新地图面板 - * @param mapType 地图名字 - */ - public void populateMapPane(String mapType){ - super.populateMapPane(mapType); - populateDetilMaps(mapTypeComboBox.getSelectedItem().toString()); - detailMaps.removeItemListener(detailListener); - detailMaps.setSelectedItem(mapType); - detailMaps.addItemListener(detailListener); - } - - /** - * 触发地图改变 - */ - public void fireMapChange(){ - MapPlot plot = new MapPlot(); - String selectedName = StringUtils.EMPTY; - if(detailMaps.getSelectedItem() !=null ){ - selectedName = detailMaps.getSelectedItem().toString(); - } - plot.setMapName(selectedName);// 名字问题 - ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection(); - Chart chart =chartCollection.getSelectedChart(); - chart.setPlot(plot); - ChartDesignEditPane.getInstance().populate(chartCollection); - chartDesigner.fireTargetModified(); - } - - - - //默认选中国家地图 - protected void calculateDetailMaps(int mapType){ - switch (mapType) { - case WORLD_MAP: - populateDetilMaps(Inter.getLocText("FR-Chart-World_Map")); - break; - case STATE_MAP: - populateDetilMaps(Inter.getLocText("FR-Chart-State_Map")); - break; - case PROVINCE_MAP: - populateDetilMaps(Inter.getLocText("FR-Chart-Province_Map")); - break; - case CUSTOM_MAP: - populateDetilMaps(Inter.getLocText("FR-Chart-Custom_Map")); - break; - default: - populateDetilMaps(Inter.getLocText("FR-Chart-State_Map")); - } - fireMapChange(); - } - - private boolean reCalculateDetailsMaps(String mapType ,String detailMap){ - detailMaps.removeItemListener(detailListener); - detailMaps.removeAllItems(); - java.util.List list = MapSvgXMLHelper.getInstance().getNamesListWithCateName(mapType); - boolean isContains = false; - for (Object name : list) { - detailMaps.addItem(name); - if(ComparatorUtils.equals(detailMap,name)){ - isContains = true; - } - } - detailMaps.addItemListener(detailListener); - return isContains; - } - - - protected void populateDetilMaps(String mapType){ - detailMaps.removeItemListener(detailListener); - detailMaps.removeAllItems(); - java.util.List list = MapSvgXMLHelper.getInstance().getNamesListWithCateName(mapType); - for (Object name : list) { - detailMaps.addItem(name); - } - detailMaps.addItemListener(detailListener); - if(detailMaps.getSelectedItem() != null){ - lastEditingName = detailMaps.getSelectedItem().toString(); - } - } - - protected Plot getSelectedClonedPlot() { - MapPlot mapPlot = new MapPlot(); - populateDetilMaps(Inter.getLocText("FR-Chart-State_Map")); - if(detailMaps.getSelectedItem()!= null && !StringUtils.isEmpty(detailMaps.getSelectedItem().toString())){ - mapPlot.setMapName(detailMaps.getSelectedItem().toString()); - } - return mapPlot; - } - - public String[] getMapTypes(){ - return TYPE_NAMES; - } - -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java b/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java index 0b86c5a12f..4616c8ccc8 100644 --- a/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java +++ b/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java @@ -3,14 +3,10 @@ */ package com.fr.design.mainframe; -import java.awt.BorderLayout; - -import javax.swing.Icon; -import javax.swing.JComponent; - import com.fr.base.BaseUtils; import com.fr.base.chart.BaseChartCollection; import com.fr.chart.chartattr.ChartCollection; +import com.fr.design.ChartTypeInterfaceManager; import com.fr.design.designer.TargetComponent; import com.fr.design.gui.chart.BaseChartPropertyPane; import com.fr.design.gui.chart.ChartEditPaneProvider; @@ -19,7 +15,9 @@ 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.*; public abstract class MiddleChartPropertyPane extends BaseChartPropertyPane{ @@ -38,10 +36,13 @@ public abstract class MiddleChartPropertyPane extends BaseChartPropertyPane{ createNameLabel(); this.add(createNorthComponent(), BorderLayout.NORTH); - - chartEditPane = StableUtils.construct(ChartEditPane.class); + } + + public void addChartEditPane(String plotID){ + chartEditPane = ChartTypeInterfaceManager.getInstance().getChartEditPane(plotID); chartEditPane.setSupportCellData(true); this.createMainPane(); + setSureProperty(); } protected abstract void createNameLabel(); @@ -86,6 +87,8 @@ public abstract class MiddleChartPropertyPane extends BaseChartPropertyPane{ * @param ePane 面板 */ public void populateChartPropertyPane(ChartCollection collection, TargetComponent ePane) { + addChartEditPane(collection.getSelectedChart().getPlot().getPlotID()); + setSupportCellData(true); this.container.setEPane(ePane); chartEditPane.populate(collection); } diff --git a/designer_chart/src/com/fr/design/mainframe/PlotToolBarFactory.java b/designer_chart/src/com/fr/design/mainframe/PlotToolBarFactory.java deleted file mode 100644 index 1bb67547d6..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/PlotToolBarFactory.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.fr.design.mainframe; - -import com.fr.chart.base.ChartTypeValueCollection; -import com.fr.design.mainframe.chart.gui.type.*; -import com.fr.general.FRLogger; - -import java.lang.reflect.Constructor; -import java.util.HashMap; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - * 图表设计器工具栏面板的工厂类 - */ -public class PlotToolBarFactory { - private static HashMap> panes4NormalPlot = - new HashMap>(); - - private static HashMap> panes4MapPlot = - new HashMap>(); - - static { - panes4NormalPlot.put(ChartTypeValueCollection.COLUMN, ColumnPlotPane4ToolBar.class); - panes4NormalPlot.put(ChartTypeValueCollection.LINE, LinePlotPane4ToolBar.class); - panes4NormalPlot.put(ChartTypeValueCollection.BAR, BarPlotPane4ToolBar.class); - panes4NormalPlot.put(ChartTypeValueCollection.PIE, PiePlotPane4ToolBar.class); - panes4NormalPlot.put(ChartTypeValueCollection.AREA,AreaPlotPane4ToolBar.class); - panes4NormalPlot.put(ChartTypeValueCollection.XYSCATTER,XYSCatterPlotPane4ToolBar.class); - panes4NormalPlot.put(ChartTypeValueCollection.BUBBLE,BubblePlotPane4ToolBar.class); - panes4NormalPlot.put(ChartTypeValueCollection.RADAR,RadarPlotPane4ToolBar.class); - panes4NormalPlot.put(ChartTypeValueCollection.STOCK,StockPlotPane4ToolBar.class); - panes4NormalPlot.put(ChartTypeValueCollection.METER,MeterPlotPane4ToolBar.class); - panes4NormalPlot.put(ChartTypeValueCollection.RANGE,RangePlotPane4ToolBar.class); - panes4NormalPlot.put(ChartTypeValueCollection.COMB,CustomPlotPane4ToolBar.class); - panes4NormalPlot.put(ChartTypeValueCollection.GANTT,GanttPlotPane4ToolBar.class); - panes4NormalPlot.put(ChartTypeValueCollection.DONUT,DonutPlotPane4ToolBar.class); - - panes4MapPlot.put(ChartTypeValueCollection.MAP,MapPlotPane4ToolBar.class); - panes4MapPlot.put(ChartTypeValueCollection.GIS,GisMapPlotPane4ToolBar.class); - } - - private PlotToolBarFactory(){ - - } - - /** - * 为了地图和gis以外的图表类型创建工具栏 - * @param type 图表类型 - * @param chartDesigner 图表设计器 - * @return 工具栏 - */ - public static PlotPane4ToolBar createToolBar4NormalPlot(ChartTypeValueCollection type,ChartDesigner chartDesigner){ - if(!panes4NormalPlot.containsKey(type)){ - return new ColumnPlotPane4ToolBar(chartDesigner); - } - try { - Class cls = panes4NormalPlot.get(type); - Constructor constructor = cls.getConstructor(ChartDesigner.class); - return constructor.newInstance(chartDesigner); - }catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); - return new ColumnPlotPane4ToolBar(chartDesigner); - } - } - - /** - *为地图和gis创建工具栏 - * @param type 类型 - * @param chartDesigner 图表设计器 - * @return 工具栏 - */ - public static AbstractMapPlotPane4ToolBar createToolBar4MapPlot(ChartTypeValueCollection type,ChartDesigner chartDesigner){ - if(!panes4MapPlot.containsKey(type)){ - return new MapPlotPane4ToolBar(chartDesigner); - } - try { - Class cls = panes4MapPlot.get(type); - Constructor constructor = cls.getConstructor(ChartDesigner.class); - return constructor.newInstance(chartDesigner); - }catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); - return new MapPlotPane4ToolBar(chartDesigner); - } - } - - - - -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/ToolTip4Chart.java b/designer_chart/src/com/fr/design/mainframe/ToolTip4Chart.java deleted file mode 100644 index 83761022ab..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/ToolTip4Chart.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.fr.design.mainframe; - -import com.fr.base.GraphHelper; -import com.fr.base.background.ColorBackground; -import com.fr.stable.CoreConstants; - -import javax.swing.*; -import java.awt.*; -import java.awt.geom.Dimension2D; -import java.awt.geom.RoundRectangle2D; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-25 - * Time: 下午4:11 - */ -public class ToolTip4Chart extends JWindow { - private static ToolTip4Chart instance = new ToolTip4Chart(); - private static final int HGAP = 5; - private static final int VGAP = 3; - private static final int FONT_SIZE = 12; - private ToolTipStringPane stringPane; - private Font font = new Font("Dialog", Font.PLAIN, FONT_SIZE); - - public ToolTip4Chart() { - stringPane = new ToolTipStringPane(); - this.getContentPane().add(stringPane); - } - - public static ToolTip4Chart getInstance() { - if (instance == null) { - instance = new ToolTip4Chart(); - } - return instance; - } - - /** - * 现实提示信息 - * - * @param toolTip 提示信息 - * @param xAbs 绝对位置x - * @param yAbs 绝对位置Y - */ - public void showToolTip(String toolTip, int xAbs, int yAbs) { - stringPane.text = toolTip.trim(); - Dimension2D dim = GraphHelper.stringDimensionWithRotation(toolTip, font, 0, CoreConstants.DEFAULT_FRC); - this.setSize(new Dimension((int) dim.getWidth() + HGAP * 2, (int) dim.getHeight() + VGAP * 2)); - stringPane.setPreferredSize(new Dimension((int) dim.getWidth(), (int) dim.getHeight())); - if (!this.isVisible()) { - this.setVisible(true); - if (xAbs + this.getWidth() > Toolkit.getDefaultToolkit().getScreenSize().width) { - xAbs -= this.getWidth(); - } - this.setLocation(xAbs, yAbs+HGAP*2); - } - } - - /** - * 隐藏弹出框 - */ - public void hideToolTip() { - this.setVisible(false); - } - - - private class ToolTipStringPane extends JPanel { - String text; - - public ToolTipStringPane() { - - } - - @Override - public void paintComponent(Graphics g) { - super.paintComponent(g); - if (!isOpaque()) { - return; - } - g.setFont(font); - Rectangle r = new Rectangle(0, 0, this.getWidth(), this.getHeight()); - ColorBackground background = ColorBackground.getInstance(Color.white); - background.paint(g, new RoundRectangle2D.Double(r.getX(), r.getY(), r.getWidth(), r.getHeight(), HGAP, HGAP)); - Graphics2D g2d = (Graphics2D) g; - g2d.drawString(text, HGAP, this.getHeight() - HGAP); - } - - } - -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/actions/ChartDownLoadWorker.java b/designer_chart/src/com/fr/design/mainframe/actions/ChartDownLoadWorker.java deleted file mode 100644 index ddcf70aa7d..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/actions/ChartDownLoadWorker.java +++ /dev/null @@ -1,170 +0,0 @@ -package com.fr.design.mainframe.actions; - -import com.fr.design.file.HistoryTemplateListPane; -import com.fr.design.file.SaveSomeTemplatePane; -import com.fr.design.mainframe.DesignerContext; -import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; -import com.fr.json.JSONObject; -import com.fr.stable.StableUtils; -import com.fr.stable.StringUtils; - -import javax.swing.*; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.net.URL; -import java.net.URLConnection; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Set; -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - */ -public class ChartDownLoadWorker extends SwingWorker{ - private static final String FILE_PATH = "http://chart.finedevelop.com/update/"; - private static final String VERSION = "version"; - private static final String TEMP = "_temp"; - private static final int BYTE = 153600; - private static final int FILE_BYTE = 1024; - private HashMap files = new HashMap(); - - public ChartDownLoadWorker() { - } - - private void loadFilesPaths() throws Exception { - files.clear(); - final String installHome = StableUtils.getInstallHome(); - - JSONObject serverVersion = UpdateVersion.getJsonContent(); - if(serverVersion == null){ - return; - } - Iterator keys = serverVersion.keys(); - while (keys.hasNext()){ - String jarName = keys.next(); - if(!ComparatorUtils.equals(jarName, VERSION)){ - String filePath = (String) serverVersion.get(jarName); - String path =installHome + filePath.substring(2); - files.put(jarName,path); - } - } - files.isEmpty(); - } - - @Override - protected Void doInBackground() throws Exception { - try { - loadFilesPaths(); - Set key = files.keySet(); - Iterator iterator = key.iterator(); - int totalSize = 0; - //先得到所有的长度,方便计算百分比 - while (iterator.hasNext()) { - String jarName = (String) iterator.next(); - String jarUrl = FILE_PATH + jarName; - URL url = new URL(jarUrl); - URLConnection connection = url.openConnection(); - totalSize += connection.getContentLength(); - } - - int totalBytesRead = 0; - iterator = key.iterator(); - while (iterator.hasNext()) { - String jarName = (String) iterator.next(); - String jarUrl = FILE_PATH + jarName; - URL url = new URL(jarUrl); - InputStream reader = url.openStream(); - String filePath = files.get(jarName); - int point = filePath.lastIndexOf("."); - //先写临时文件,防止更新一半意外中止 - String tmpFilePath = filePath.substring(0,point)+TEMP+filePath.substring(point); - FileOutputStream writer = new FileOutputStream(tmpFilePath); - byte[] buffer = new byte[BYTE]; - int bytesRead = 0; - while ((bytesRead = reader.read(buffer)) > 0) { - writer.write(buffer, 0, bytesRead); - buffer = new byte[BYTE]; - totalBytesRead += bytesRead; - publish(totalBytesRead/(double)totalSize); - } - } - - - } catch (Exception e) { - throw new Exception("Update Failed !" + e.getMessage()); - } - - return null; - } - - //替换更新下来的临时文件 - protected void replaceFiles(){ - try { - Set key = files.keySet(); - Iterator iterator = key.iterator(); - while (iterator.hasNext()) { - String jarName = (String) iterator.next(); - String filePath = files.get(jarName); - int point = filePath.lastIndexOf("."); - //先写临时文件,防止更新一半意外中止 - String tmpFilePath = filePath.substring(0,point)+TEMP+filePath.substring(point); - FileInputStream inputStream = new FileInputStream(tmpFilePath); - FileOutputStream writer = new FileOutputStream(filePath); - byte[] buffer = new byte[FILE_BYTE]; - int bytesRead = 0; - while ((bytesRead = inputStream.read(buffer))>0){ - writer.write(buffer,0,bytesRead); - buffer = new byte[FILE_BYTE]; - } - writer.flush(); - writer.close(); - inputStream.close(); - } - } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); - } - } - - /** - * 完成时的动作 - */ - public void done() { - //检测是否没有保存的模版 - SaveSomeTemplatePane saveSomeTempaltePane = new SaveSomeTemplatePane(true); - // 只有一个文件未保存时 - if (HistoryTemplateListPane.getInstance().getHistoryCount() == 1) { - int choose = saveSomeTempaltePane.saveLastOneTemplate(); - if (choose != JOptionPane.CANCEL_OPTION) { - restartChartDesigner(); - } - } else { - if (saveSomeTempaltePane.showSavePane()) { - restartChartDesigner(); - } - } - } - - private void restartChartDesigner(){ - String installHome = StableUtils.getInstallHome(); - if(StringUtils.isEmpty(installHome) || ComparatorUtils.equals(".",installHome)){ - DesignerContext.getDesignerFrame().exit(); - return; - } - - try { - String path = installHome + File.separator + "bin" + File.separator + "restart.bat"; - ProcessBuilder builder = new ProcessBuilder(path,installHome); - builder.start(); - DesignerContext.getDesignerFrame().exit(); - }catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); - } - } - - - -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/actions/ChartFeedBackAciton.java b/designer_chart/src/com/fr/design/mainframe/actions/ChartFeedBackAciton.java deleted file mode 100644 index 782d1a4000..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/actions/ChartFeedBackAciton.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.fr.design.mainframe.actions; - -import com.fr.design.actions.help.FeedBackAction; -import com.fr.design.actions.help.FeedBackPane; -import com.fr.design.constants.LayoutConstants; -import com.fr.design.dialog.BasicDialog; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.layout.TableLayout; -import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.mainframe.DesignerContext; -import com.fr.design.mainframe.DesignerFrame; -import com.fr.general.Inter; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ActionEvent; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - */ -public class ChartFeedBackAciton extends FeedBackAction{ - - /** - * 动作 - * @param e 事件 - */ - public void actionPerformed(ActionEvent e) { - final DesignerFrame designerFrame = DesignerContext.getDesignerFrame(); - ChartFeedBackPane feedBackPane = new ChartFeedBackPane(); - BasicDialog basicDialog =feedBackPane.showWindow(designerFrame,false); - feedBackPane.setFeedbackDialog(basicDialog); - basicDialog.setVisible(true); - } - - private class ChartFeedBackPane extends FeedBackPane{ - protected JPanel getContactPane() { - double f = TableLayout.FILL; - double p = TableLayout.PREFERRED; - Component[][] components = new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("email") + ":", SwingConstants.RIGHT), email}, - new Component[]{new UILabel(Inter.getLocText("mobile_number") + ":", SwingConstants.RIGHT), phone} - }; - double[] rowSize = {p, p, p}; - double[] columnSize = {p, p}; - int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}}; - return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM); - } - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/actions/ChartUpdateAction.java b/designer_chart/src/com/fr/design/mainframe/actions/ChartUpdateAction.java deleted file mode 100644 index 05cb46b141..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/actions/ChartUpdateAction.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.fr.design.mainframe.actions; - -import com.fr.design.actions.UpdateAction; - -import java.awt.event.ActionEvent; - -/** - * @author : richie - * @since : 8.0 - */ -public class ChartUpdateAction extends UpdateAction { - - private static final String DOWNLOAD_DESIGNER=""; - private static final String DOWNLOAD_CHART=""; - private static final String DOWNLOAD_THIRD=""; - - public ChartUpdateAction() { - - } - - @Override - public void actionPerformed(ActionEvent e) { - - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/actions/ChartWebAction.java b/designer_chart/src/com/fr/design/mainframe/actions/ChartWebAction.java deleted file mode 100644 index 24218c8761..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/actions/ChartWebAction.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.fr.design.mainframe.actions; - -import com.fr.base.BaseUtils; -import com.fr.design.actions.UpdateAction; -import com.fr.design.menu.MenuKeySet; -import com.fr.general.Inter; -import com.fr.start.StartServer; - -import javax.swing.*; -import java.awt.event.ActionEvent; - -/** - * 图表设计器得产品演示 - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-27 - * Time: 下午9:01 - */ -public class ChartWebAction extends UpdateAction { - public ChartWebAction() { - this.setMenuKeySet(getSelfMenuKeySet()); - this.setName(getMenuKeySet().getMenuName()); - this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_help/demo.png")); - } - - private MenuKeySet getSelfMenuKeySet(){ - return new MenuKeySet() { - @Override - public char getMnemonic() { - return 'D'; - } - - @Override - public String getMenuName() { - return Inter.getLocText("FR-Chart-Product_Demo"); - } - - @Override - public KeyStroke getKeyStroke() { - return null; - } - }; - } - - - /** - * 动作 - * @param e 事件 - */ - public void actionPerformed(ActionEvent e) { - StartServer.browerURLWithLocalEnv("http://www.vancharts.com/demo.html"); - return; - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/actions/OpenChartAction.java b/designer_chart/src/com/fr/design/mainframe/actions/OpenChartAction.java deleted file mode 100644 index 82b95c7368..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/actions/OpenChartAction.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.fr.design.mainframe.actions; - -import com.fr.design.actions.file.OpenTemplateAction; -import com.fr.design.mainframe.DesignerContext; -import com.fr.file.FILE; -import com.fr.file.FILEChooserPane; -import com.fr.file.FILEChooserPane4Chart; - -import java.awt.event.ActionEvent; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-20 - * Time: 下午7:35 - */ -public class OpenChartAction extends OpenTemplateAction { - /** - * 动作 - * @param evt 事件 - */ - public void actionPerformed(ActionEvent evt) { - FILEChooserPane fileChooser = FILEChooserPane4Chart.getInstance(true, true); - - if (fileChooser.showOpenDialog(DesignerContext.getDesignerFrame(),".crt") - == FILEChooserPane.OK_OPTION) { - final FILE file = fileChooser.getSelectedFILE(); - if (file == null) {//选择的文件不能是 null - return; - } - DesignerContext.getDesignerFrame().openTemplate(file); - } - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/actions/UpdateOnlineAction.java b/designer_chart/src/com/fr/design/mainframe/actions/UpdateOnlineAction.java deleted file mode 100644 index 42419128ee..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/actions/UpdateOnlineAction.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.fr.design.mainframe.actions; - -import com.fr.design.ChartEnvManager; -import com.fr.design.actions.UpdateAction; -import com.fr.design.dialog.BasicDialog; -import com.fr.design.mainframe.DesignerContext; -import com.fr.design.mainframe.chart.UpdateOnLinePane; -import com.fr.design.menu.MenuKeySet; -import com.fr.general.FRLogger; -import com.fr.general.Inter; -import com.fr.json.JSONObject; -import com.fr.stable.ProductConstants; -import com.fr.stable.StringUtils; - -import javax.swing.*; -import java.awt.event.ActionEvent; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - * 图表设计器在线更新 - */ -public class UpdateOnlineAction extends UpdateAction { - - public UpdateOnlineAction() { - this.setMenuKeySet(getKeySet()); - this.setName(getMenuKeySet().getMenuKeySetName() + "..."); - this.setMnemonic(getMenuKeySet().getMnemonic()); - } - - private MenuKeySet getKeySet() { - return new MenuKeySet() { - @Override - public char getMnemonic() { - return 'U'; - } - - @Override - public String getMenuName() { - return Inter.getLocText("FR-Chart-Help_UpdateOnline"); - } - - @Override - public KeyStroke getKeyStroke() { - return null; - } - }; - } - - - /** - *动作 - * @param e 事件 - */ - public void actionPerformed(ActionEvent e) { - new UpdateVersion(){ - protected void done() { - try { - ChartEnvManager.getEnvManager().resetCheckDate(); - JSONObject serverVersion = get(); - String version = serverVersion.getString(UpdateVersion.VERSION); - UpdateOnLinePane updateOnLinePane = new UpdateOnLinePane(StringUtils.isEmpty(version)? ProductConstants.RELEASE_VERSION:version); - BasicDialog dg = updateOnLinePane.showWindow4UpdateOnline(DesignerContext.getDesignerFrame()); - updateOnLinePane.setParentDialog(dg); - dg.setVisible(true); - }catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); - } - } - }.execute(); - } - -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/actions/UpdateVersion.java b/designer_chart/src/com/fr/design/mainframe/actions/UpdateVersion.java deleted file mode 100644 index 0d5088ee71..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/actions/UpdateVersion.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.fr.design.mainframe.actions; - -import com.fr.general.FRLogger; -import com.fr.json.JSONObject; - -import javax.swing.*; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.URL; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - */ -public class UpdateVersion extends SwingWorker { - - private static final String VERSION_URL ="http://chart.finedevelop.com/update/update.json"; - private static final int TIME_OUT = 300;//5s - public static final String VERSION = "version"; - - public UpdateVersion(){ - - } - - - @Override - protected JSONObject doInBackground() throws Exception { - return getJsonContent(); - } - - public static JSONObject getJsonContent() throws Exception{ - String res = null; - try { - res = readVersionFromServer(TIME_OUT); - } catch (IOException e) { - FRLogger.getLogger().error(e.getMessage()); - } - return new JSONObject(res); - } - - /** - * 从服务器读取版本 - */ - private static String readVersionFromServer(int timeOut) throws IOException { - URL getUrl = new URL(VERSION_URL); - // 根据拼凑的URL,打开连接,URL.openConnection函数会根据URL的类型, - // 返回不同的URLConnection子类的对象,这里URL是一个http,因此实际返回的是HttpURLConnection - HttpURLConnection connection = (HttpURLConnection) getUrl - .openConnection(); - connection.setReadTimeout(timeOut); - // 进行连接,但是实际上get request要在下一句的connection.getInputStream()函数中才会真正发到 - // 服务器 - connection.connect(); - // 取得输入流,并使用Reader读取 - BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf8"));//设置编码,否则中文乱码 - String lines; - StringBuffer sb = new StringBuffer(); - while ((lines = reader.readLine()) != null) { - sb.append(lines); - } - reader.close(); - // 断开连接 - connection.disconnect(); - return sb.toString(); - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartDesignEditPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartDesignEditPane.java deleted file mode 100644 index c5190b9bcf..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/ChartDesignEditPane.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. - */ - -package com.fr.design.mainframe.chart; - -import com.fr.design.file.HistoryTemplateListPane; -import com.fr.design.mainframe.chart.gui.*; - -import java.util.ArrayList; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-15 - * Time: 下午5:47 - */ -public class ChartDesignEditPane extends ChartEditPane { - - private static ChartDesignEditPane instance; - - private boolean isFromToolBar = false; - - public synchronized static ChartEditPane getInstance() { - if (instance == null) { - instance = new ChartDesignEditPane(); - } - return instance; - } - - public ChartDesignEditPane() { - paneList = new ArrayList(); - dataPane4SupportCell = new ChartDesignerDataPane(listener); - paneList.add(dataPane4SupportCell); - paneList.add(new StylePane4Chart(listener, false)); - paneList.add(new ChartDesignerOtherPane()); - createTabsPane(); - } - - protected void dealWithStyleChange(){ - if(!isFromToolBar){ - HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().styleChange(); - } - } - - /** - *主要用于图表设计器,判断样式改变是否来自工具栏的全局样式按钮 - * @param isFromToolBar 是否来自工具栏 - */ - public void styleChange(boolean isFromToolBar){ - this.isFromToolBar = isFromToolBar; - } - -} \ No newline at end of file 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 92177a8e3c..fc3b70108e 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java @@ -51,7 +51,6 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 protected JPanel center; private TargetComponentContainer container = null; private TitleChangeListener titleChangeListener = null; - private Calendar lastTime; protected ChartEditPane() { @@ -108,6 +107,7 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 } AbstractChartAttrPane selectedPane = paneList.get(tabsHeaderIconPane.getSelectedIndex()); selectedPane.update(collection); + if (!ComparatorUtils.equals(collection, lastCollection)) { //此处画图 diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartsConfigPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartsConfigPane.java new file mode 100644 index 0000000000..76e674eb88 --- /dev/null +++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartsConfigPane.java @@ -0,0 +1,39 @@ +package com.fr.design.mainframe.chart; + +import com.fr.chart.chartattr.ChartCollection; +import com.fr.general.Inter; + +import javax.swing.*; + +/** + * Created by mengao on 2017/5/16. + */ +public class ChartsConfigPane extends AbstractChartAttrPane { + + public final static String CHART_STYLE_TITLE = Inter.getLocText("Chart-Style_Name"); + + @Override + public void populate(ChartCollection collection) { + + } + + @Override + public void update(ChartCollection collection) { + + } + + @Override + protected JPanel createContentPane() { + return new JPanel(); + } + + @Override + public String getIconPath() { + return "com/fr/design/images/chart/ChartStyle.png"; + } + + @Override + public String title4PopupWindow() { + return CHART_STYLE_TITLE; + } +} diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartsEditPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartsEditPane.java new file mode 100644 index 0000000000..b012e95795 --- /dev/null +++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartsEditPane.java @@ -0,0 +1,56 @@ +package com.fr.design.mainframe.chart; + +import com.fr.chart.chartattr.Chart; +import com.fr.design.ChartTypeInterfaceManager; +import com.fr.design.mainframe.chart.gui.ChartDataPane; + +import java.awt.*; +import java.util.ArrayList; + +/** + * Created by mengao on 2017/5/3. + */ +public class ChartsEditPane extends ChartEditPane { + + protected ChartsConfigPane chartsConfigPane; + + public ChartsEditPane() { + this.setLayout(new BorderLayout()); + paneList = new ArrayList(); + + dataPane4SupportCell = new ChartDataPane(listener); + dataPane4SupportCell.setSupportCellData(true); + chartsConfigPane = new ChartsConfigPane(); + + paneList.add(dataPane4SupportCell); + paneList.add(chartsConfigPane); + + createTabsPane(); + } + + /** + * 重新构造面板 + * @param currentChart 图表 + */ + public void reLayout(Chart currentChart) { + if (currentChart != null) { + this.removeAll(); + this.setLayout(new BorderLayout()); + paneList = new ArrayList(); + + String plotID = ""; + if (currentChart.getPlot() != null) { + plotID = currentChart.getPlot().getPlotID(); + } + + dataPane4SupportCell = createChartDataPane(plotID); + chartsConfigPane = ChartTypeInterfaceManager.getInstance().getChartConfigPane(plotID); + paneList.add(dataPane4SupportCell); + paneList.add(chartsConfigPane); + + createTabsPane(); + } + + } + +} diff --git a/designer_chart/src/com/fr/design/mainframe/chart/UpdateOnLinePane.java b/designer_chart/src/com/fr/design/mainframe/chart/UpdateOnLinePane.java deleted file mode 100644 index c889ddc71c..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/UpdateOnLinePane.java +++ /dev/null @@ -1,238 +0,0 @@ -package com.fr.design.mainframe.chart; - -import com.fr.design.ChartEnvManager; -import com.fr.design.dialog.BasicDialog; -import com.fr.design.dialog.BasicPane; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.icheckbox.UICheckBox; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.mainframe.actions.ChartDownLoadWorker; -import com.fr.general.ComparatorUtils; -import com.fr.general.Inter; -import com.fr.stable.ProductConstants; - -import javax.swing.*; -import javax.swing.border.EmptyBorder; -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.text.DecimalFormat; -import java.text.NumberFormat; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 7.1.1 - * 在线更新面板 - */ -public class UpdateOnLinePane extends BasicPane{ - private static final int GAP = 40; - private static final int H_GAP = 16; - private static final int SIDE_GAP =30; - private static final int RIGHT_BORDER_GAP = 34; - private static final Color LABEL_COLOR = new Color(114,114,114); - private static final int MESSAGE_FONT_SIZE = 20; - private static final int PUSH_FONT_SIZE = 12; - private static final int PROGRESS_WIDTH = 500; - private static final int PROGRESS_HEIGHT = 14; - private static final NumberFormat NUMBER_FORMAT = new DecimalFormat("##.##"); - private static final int PRECENT =100; - private static final Color FOREGROUNG = new Color(23,190,86); - private static final Color BACKGROUND = new Color(210,210,210); - - String serverVersion = ProductConstants.RELEASE_VERSION; - UIButton okButton = new UIButton(Inter.getLocText("FR-Chart-Dialog_OK")); - UIButton updateButton = new UIButton(Inter.getLocText("FR-Chart-App_Update")); - UIButton cancleButton = new UIButton(Inter.getLocText("FR-Chart-Dialog_Cancle")); - UICheckBox pushAuto = new UICheckBox(Inter.getLocText("FR-Chart-UpdateMessage_PushAuto")); - private JPanel messagePane; - private JPanel optionsPane; - private BasicDialog parentDialog; - private ChartDownLoadWorker downLoadWorker = null; - private boolean isUpdateCancle = false; - - private ActionListener updateListener = new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - final JProgressBar progressBar = init4UpdatingPane(); - downLoadWorker = new ChartDownLoadWorker(){ - protected void process(java.util.List v) { - progressBar.setValue((int)(v.get(v.size() - 1) * PRECENT)); - } - - public void done() { - try { - get(); - } catch (Exception e1) { - init4UpdateFaild(); - return; - } - if(!isUpdateCancle){ - replaceFiles(); - dialogExit(); - super.done(); - } - } - }; - downLoadWorker.execute(); - } - }; - - private ActionListener okListener = new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - dialogExit(); - } - }; - - private ActionListener cancleListener = new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if(downLoadWorker !=null){ - isUpdateCancle = true; - downLoadWorker.cancel(true); - } - dialogExit(); - } - }; - - public void setParentDialog(BasicDialog dialog){ - this.parentDialog = dialog; - } - - public UpdateOnLinePane(String serverVersion){ - this.serverVersion = serverVersion; - this.isUpdateCancle = false; - pushAuto.setSelected(ChartEnvManager.getEnvManager().isPushUpdateAuto()); - pushAuto.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - ChartEnvManager.getEnvManager().setPushUpdateAuto(pushAuto.isSelected()); - } - }); - init4PanesLayout(); - initListeners(); - judge(); - } - - private void initListeners(){ - updateButton.addActionListener(updateListener); - okButton.addActionListener(okListener); - cancleButton.addActionListener(cancleListener); - } - - private void init4PanesLayout(){ - this.setLayout(new BorderLayout()); - this.messagePane = FRGUIPaneFactory.createBorderLayout_L_Pane(); - this.optionsPane = new JPanel(new FlowLayout(FlowLayout.RIGHT,H_GAP ,0)) ; - this.optionsPane.setBorder(new EmptyBorder(0, 0, GAP, RIGHT_BORDER_GAP)); - this.add(this.messagePane, BorderLayout.CENTER); - this.add(this.optionsPane, BorderLayout.SOUTH); - pushAuto.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, PUSH_FONT_SIZE)); - pushAuto.setForeground(LABEL_COLOR); - this.revalidate(); - } - - //更新失败的提示 - private void init4UpdateFaild(){ - this.messagePane.removeAll(); - UILabel label = new UILabel(Inter.getLocText("FR-Chart-Version_UpdateFail")+"!"); - label.setHorizontalAlignment(SwingConstants.CENTER); - label.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE)); - label.setForeground(LABEL_COLOR); - this.messagePane.add(label,BorderLayout.CENTER); - optionsPane.removeAll(); - optionsPane.add(okButton); - this.revalidate(); - } - - private JProgressBar init4UpdatingPane(){ - this.messagePane.removeAll(); - JPanel centerPane = new JPanel(new GridLayout(2,1)); - UILabel label = new UILabel(Inter.getLocText("FR-Chart-App_UpdateProgress")); - label.setHorizontalAlignment(SwingConstants.CENTER); - label.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE)); - label.setForeground(LABEL_COLOR); - label.setBorder(new EmptyBorder(PUSH_FONT_SIZE,0,0,0)); - centerPane.add(label); - JProgressBar progressBar = new JProgressBar(); - progressBar.setMaximum(PRECENT); - progressBar.setMinimum(0); - progressBar.setValue(0); - progressBar.setBorder(new EmptyBorder(MESSAGE_FONT_SIZE,SIDE_GAP,SIDE_GAP*2,SIDE_GAP)); - centerPane.add(progressBar); - messagePane.add(centerPane,BorderLayout.CENTER); - optionsPane.removeAll(); - optionsPane.add(cancleButton); - this.revalidate(); - return progressBar; - } - - private void init4VersionSamePane(){ - this.messagePane.removeAll(); - UILabel label = new UILabel(Inter.getLocText("FR-Chart-Versions_Lasted")); - label.setHorizontalAlignment(SwingConstants.CENTER); - label.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE)); - label.setForeground(LABEL_COLOR); - this.messagePane.add(label,BorderLayout.CENTER); - optionsPane.removeAll(); - optionsPane.add(pushAuto); - optionsPane.add(okButton); - this.revalidate(); - } - - private void init4VersionDifferentPane(){ - this.messagePane.removeAll(); - createPaneShowVersions(); - optionsPane.removeAll(); - optionsPane.add(pushAuto); - optionsPane.add(updateButton); - optionsPane.add(cancleButton); - this.revalidate(); - } - - private void createPaneShowVersions(){ - JPanel centerPane = new JPanel(new GridLayout(2,1)); - UILabel localLabel = new UILabel(Inter.getLocText("FR-Chart-Version_Local")+":"+ ProductConstants.RELEASE_VERSION); - localLabel.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE)); - localLabel.setForeground(LABEL_COLOR); - localLabel.setBorder(new EmptyBorder(PUSH_FONT_SIZE,0,0,0)); - UILabel serverLabel = new UILabel(Inter.getLocText("FR-Chart-Version_Lasted")+":"+serverVersion); - serverLabel.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE)); - serverLabel.setForeground(LABEL_COLOR); - serverLabel.setBorder(new EmptyBorder(-MESSAGE_FONT_SIZE - PUSH_FONT_SIZE, 0, 0,0)); - localLabel.setHorizontalAlignment(SwingConstants.CENTER); - serverLabel.setHorizontalAlignment(SwingConstants.CENTER); - centerPane.add(localLabel); - centerPane.add(serverLabel); - messagePane.add(centerPane,BorderLayout.CENTER); - } - - private void judge(){ - if(ComparatorUtils.equals(ProductConstants.RELEASE_VERSION,serverVersion)){ - //版本一致,提示已经是最新版本 - init4VersionSamePane(); - }else{ - init4VersionDifferentPane(); - } - } - - /** - * Dialog exit. - */ - private void dialogExit() { - parentDialog.setVisible(false); - parentDialog.dispose(); - } - - - - - protected String title4PopupWindow() { - return Inter.getLocText("FR-Chart-Help_UpdateOnline"); - } - -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java index 9e03f4ec07..ccccdc3cc1 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java @@ -28,7 +28,7 @@ public class ChartDataPane extends AbstractChartAttrPane { super(); this.listener = listener; } - + @Override protected JPanel createContentPane() { contentsPane = new NormalChartDataPane(listener, ChartDataPane.this); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDesignerDataPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDesignerDataPane.java deleted file mode 100644 index f424d69813..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDesignerDataPane.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. - */ - -package com.fr.design.mainframe.chart.gui; - -import com.fr.chart.chartattr.ChartCollection; -import com.fr.chart.chartattr.GisMapPlot; -import com.fr.chart.chartattr.MapPlot; -import com.fr.design.chart.report.GisMapDataPane4Chart; -import com.fr.design.chart.report.MapDataPane4Chart; -import com.fr.design.gui.frpane.AttributeChangeListener; -import com.fr.design.mainframe.chart.gui.data.ImportSetChartDataPane; -import com.fr.general.FRLogger; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-15 - * Time: 下午1:57 - */ -public class ChartDesignerDataPane extends ChartDataPane { - private AttributeChangeListener listener; - - public ChartDesignerDataPane(AttributeChangeListener listener) { - super(listener); - this.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - FRLogger.getLogger().info("SD"); - } - }); - this.listener = listener; - } - - @Override - protected JPanel createContentPane() { - contentsPane = new ImportSetChartDataPane(listener,ChartDesignerDataPane.this); - return contentsPane; - } - - - protected void repeatLayout(ChartCollection collection) { - if(contentsPane != null) { - this.remove(contentsPane); - } - - this.setLayout(new BorderLayout(0, 0)); - if (collection.getSelectedChart().getPlot() instanceof MapPlot) { - contentsPane = new MapDataPane4Chart(listener,this); - }else if(collection.getSelectedChart().getPlot() instanceof GisMapPlot){ - contentsPane = new GisMapDataPane4Chart(listener,this); - } else{ - contentsPane = new ImportSetChartDataPane(listener,ChartDesignerDataPane.this); - } - } - - /** - * 主要用于图表设计器 - * @return 是 - */ - public boolean isNeedPresentPaneWhenFilterData(){ - return true; - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/ChartDesignDataLoadPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/ChartDesignDataLoadPane.java deleted file mode 100644 index 43a2fae345..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/ChartDesignDataLoadPane.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.fr.design.mainframe.chart.gui.data; - -import com.fr.base.TableData; -import com.fr.design.data.tabledata.wrapper.TableDataWrapper; -import com.fr.design.data.tabledata.wrapper.TemplateTableDataWrapper; -import com.fr.design.dialog.BasicPane; -import com.fr.design.mainframe.AbstractChartDataPane4Chart; - -/** - * 图表设计器导入 界面 - * Created by kunsnat on 14-10-21. - * kunsnat@gmail.com - */ -public abstract class ChartDesignDataLoadPane extends BasicPane { - - private AbstractChartDataPane4Chart parentPane; - - public ChartDesignDataLoadPane(AbstractChartDataPane4Chart parentPane){ - this.parentPane = parentPane; - } - - /** - * 加载数据集 - * - * @param tableData 数据集 - */ - public abstract void populateChartTableData(TableData tableData); - - /** - * 根据界面 获取数据集相关. - * - * @return 返回数据集 - */ - public abstract TableData getTableData(); - - - protected abstract String getNamePrefix(); - - //响应属性事件 - protected void fireChange() { - parentPane.fireTableDataChange(); - } - - - public TableDataWrapper getTableDataWrapper(){ - return new TemplateTableDataWrapper(getTableData()); - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/EmbbeddDataPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/EmbbeddDataPane.java deleted file mode 100644 index a9f4189075..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/EmbbeddDataPane.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. - */ - -package com.fr.design.mainframe.chart.gui.data; - -import com.fr.base.BaseUtils; -import com.fr.base.FRContext; -import com.fr.base.TableData; -import com.fr.design.constants.UIConstants; -import com.fr.data.impl.EmbeddedTableData; -import com.fr.design.data.tabledata.tabledatapane.EmbeddedTableDataPane; -import com.fr.design.data.tabledata.wrapper.TableDataWrapper; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.dialog.BasicDialog; -import com.fr.design.dialog.BasicPane; -import com.fr.design.dialog.DialogActionAdapter; -import com.fr.design.mainframe.AbstractChartDataPane4Chart; - -import javax.swing.*; -import javax.swing.border.LineBorder; -import java.awt.*; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; - -/** - * 图表设计器内置数据集面板 - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-16 - * Time: 上午12:09 - */ -public class EmbbeddDataPane extends ChartDesignDataLoadPane { - private UIButton edit; - private UIButton reviewButton; - private EmbeddedTableData tableData; - - public EmbbeddDataPane(AbstractChartDataPane4Chart parentPane) { - super(parentPane); - tableData = new EmbeddedTableData(); - initEditButton(); - initReviewButton(); - this.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 3)); - this.add(edit); - this.add(reviewButton); - } - - private void initEditButton() { - edit = new UIButton(BaseUtils.readIcon("com/fr/design/images/control/edit.png")); - edit.setBorder(new LineBorder(UIConstants.LINE_COLOR)); - edit.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - EmbeddedTableDataPane tableDataPane = new EmbeddedTableDataPane(); - tableDataPane.populateBean(tableData); - dgEdit(tableDataPane, getNamePrefix()); - } - }); - } - - private void initReviewButton() { - reviewButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/search.png")); - reviewButton.setBorder(new LineBorder(UIConstants.LINE_COLOR)); - reviewButton.addMouseListener(new MouseAdapter() { - @Override - public void mouseReleased(MouseEvent e) { - //预览图表设计器内置数据集 - TableDataWrapper tableDataWrappe = getTableDataWrapper(); - if (tableDataWrappe != null) { - try { - tableDataWrappe.previewData(); - } catch (Exception e1) { - FRContext.getLogger().error(e1.getMessage(), e1); - } - } - } - }); - } - - @Override - protected String title4PopupWindow() { - return null; - } - - @Override - public TableData getTableData() { - return tableData; - } - - /** - * 加载数据集 - * - * @param tableData 数据集 - */ - public void populateChartTableData(TableData tableData) { - if (tableData instanceof EmbeddedTableData) { - this.tableData =(EmbeddedTableData) tableData; - } - } - - protected String getNamePrefix() { - return "Embedded"; - } - - /** - * 编辑面板 - * - * @param uPanel 面板 - * @param originalName 原始名字 - */ - private void dgEdit(final EmbeddedTableDataPane uPanel, String originalName) { - final BasicPane.NamePane nPanel = uPanel.asNamePane(); - nPanel.setObjectName(originalName); - final BasicDialog dg; - dg = nPanel.showLargeWindow(SwingUtilities.getWindowAncestor(EmbbeddDataPane.this), new DialogActionAdapter() { - public void doOk() { - tableData = uPanel.updateBean(); - fireChange(); - } - }); - dg.setVisible(true); - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/ExcelDataPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/ExcelDataPane.java deleted file mode 100644 index 7cc476e24f..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/ExcelDataPane.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. - */ - -package com.fr.design.mainframe.chart.gui.data; - -import com.fr.base.BaseUtils; -import com.fr.base.FRContext; -import com.fr.base.TableData; -import com.fr.design.constants.LayoutConstants; -import com.fr.design.constants.UIConstants; -import com.fr.design.data.datapane.preview.PreviewTablePane; -import com.fr.data.impl.ExcelTableData; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.itextfield.UITextField; -import com.fr.design.mainframe.AbstractChartDataPane4Chart; -import com.fr.design.mainframe.DesignerContext; -import com.fr.file.FILE; -import com.fr.file.FILEChooserPane; -import com.fr.general.Inter; - -import javax.swing.*; -import javax.swing.border.LineBorder; -import java.awt.*; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-15 - * Time: 下午11:58 - */ -public class ExcelDataPane extends ChartDesignDataLoadPane { - - private UITextField path = new UITextField(); - private UIButton reviewButton; - private ExcelTableData tableData; - private MouseListener listener = new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - FILEChooserPane fileChooserPane = new FILEChooserPane(true, true); - if (fileChooserPane.showOpenDialog(DesignerContext.getDesignerFrame(), ".xlsx") - == FILEChooserPane.OK_OPTION) { - FILE chooseFILE = fileChooserPane.getSelectedFILE(); - if (chooseFILE != null && chooseFILE.exists()) { - path.setText(chooseFILE.getPath()); - } else { - JOptionPane.showConfirmDialog(ExcelDataPane.this, Inter.getLocText("FR-Template-Path_chooseRightPath"), - Inter.getLocText("FR-App-All_Warning"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); - path.setText(""); - } - tableData.setFilePath(path.getText().toString()); - tableData.setFromEnv(chooseFILE.isEnvFile()); - tableData.setNeedColumnName(true); - fireChange(); - } - } - }; - - public ExcelDataPane(AbstractChartDataPane4Chart parentPane, JComponent pathChooseButton) { - super(parentPane); - initReviewButton(); - tableData = new ExcelTableData(); - tableData.setFilePath(path.getText().toString()); - tableData.setNeedColumnName(true); - path.setEditable(false); - pathChooseButton.addMouseListener(listener); - this.setLayout(new BorderLayout(0, 0)); - JPanel pane = new JPanel(new BorderLayout(LayoutConstants.HGAP_LARGE, 0)); - pane.add(path, BorderLayout.CENTER); - - pane.add(reviewButton, BorderLayout.EAST); - this.add(pane, BorderLayout.CENTER); - } - - @Override - protected String title4PopupWindow() { - return null; - } - - private void initReviewButton() { - reviewButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/search.png")); - reviewButton.setBorder(new LineBorder(UIConstants.LINE_COLOR)); - reviewButton.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - //预览本地excel - try { - PreviewTablePane.previewTableData(getTableData()); - } catch (Exception e1) { - FRContext.getLogger().error(e1.getMessage(), e1); - } - } - }); - } - - @Override - public TableData getTableData() { - return tableData; - } - - @Override - protected String getNamePrefix() { - return null; - } - - /** - * 加载数据集 - * - * @param tableData 数据集 - */ - public void populateChartTableData(TableData tableData) { - if (tableData instanceof ExcelTableData) { - path.setText(((ExcelTableData) tableData).getFilePath()); - this.tableData = (ExcelTableData)tableData; - this.tableData.setNeedColumnName(true); - } - fireChange(); - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/ImportSetChartDataPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/ImportSetChartDataPane.java deleted file mode 100644 index 9c531ab366..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/ImportSetChartDataPane.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. - */ - -package com.fr.design.mainframe.chart.gui.data; - -import com.fr.base.TableData; -import com.fr.base.chart.chartdata.TopDefinitionProvider; -import com.fr.chart.chartattr.Chart; -import com.fr.chart.chartattr.ChartCollection; -import com.fr.chart.chartattr.Plot; -import com.fr.chart.chartdata.TableDataDefinition; -import com.fr.design.gui.frpane.AttributeChangeListener; -import com.fr.design.mainframe.AbstractChartDataPane4Chart; -import com.fr.design.mainframe.chart.gui.ChartDataPane; -import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane; -import com.fr.design.mainframe.chart.gui.data.table.CategoryPlotMoreCateTableDataContentPane; -import com.fr.design.mainframe.chart.gui.data.table.Factory4TableDataContentPane; - -import javax.swing.*; - -/** - * 数据导入数据设置面板 - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-15 - * Time: 下午2:35 - */ -public class ImportSetChartDataPane extends AbstractChartDataPane4Chart { - - private AbstractTableDataContentPane dataContentPane; - - public ImportSetChartDataPane(final AttributeChangeListener listener, ChartDataPane parent) { - super(listener,parent); - } - - - /** - * 更新界面 数据内容 - */ - public void populate(ChartCollection collection) { - dataContentPane = getContentPane(collection.getSelectedChart().getPlot()); - dataContentPane.setNeedSummaryCaculateMethod(false); - dataContentPane.redoLayoutPane(); - if (collection != null && collection.getSelectedChart() != null) { - Chart chart = collection.getSelectedChart(); - TopDefinitionProvider definition = chart.getFilterDefinition(); - if (definition instanceof TableDataDefinition) { - TableData tableData = ((TableDataDefinition) definition).getTableData(); - if(tableData != null){ - populateChoosePane(tableData); - fireTableDataChange(); - } - if (dataContentPane != null) { - dataContentPane.populateBean(collection); - } - } - } - this.remove(leftContentPane); - this.initContentPane(); - this.validate(); - dataSource.addItemListener(dsListener); - initAllListeners(); - initSelfListener(dataContentPane); - this.addAttributeChangeListener(attributeChangeListener); - } - - protected JPanel getDataContentPane(){ - return dataContentPane; - } - - - @Override - public void update(ChartCollection collection) { - if (collection != null && collection.getSelectedChart() != null) { - if (dataContentPane != null) { - dataContentPane.updateBean(collection); - } - TableDataDefinition topDefinition =(TableDataDefinition)collection.getSelectedChart().getFilterDefinition(); - if(topDefinition !=null){ - topDefinition.setTableData(choosePane.getTableData()); - } - } - } - - private AbstractTableDataContentPane getContentPane(Plot plot) { - if (plot == null || plot.isSupportMoreCate()) { - return new CategoryPlotMoreCateTableDataContentPane(parentPane){ - public boolean isNeedSummaryCaculateMethod(){ - return false; - } - }; - } else{ - return Factory4TableDataContentPane.createTableDataContenetPaneWithPlotType(plot, parentPane); - } - } - - /** - * 数据集数据改变 - */ - public void fireTableDataChange() { - if (dataContentPane != null) { - dataContentPane.onSelectTableData(choosePane.getTableDataWrapper()); - } - } - - /** - * 清空数据集的设置 - */ - public void clearTableDataSetting(){ - if(dataContentPane != null){ - dataContentPane.clearAllBoxList(); - } - } - -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/JSONDataPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/JSONDataPane.java deleted file mode 100644 index 96e17d7424..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/JSONDataPane.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. - */ - -package com.fr.design.mainframe.chart.gui.data; - -import com.fr.base.BaseUtils; -import com.fr.base.FRContext; -import com.fr.base.TableData; -import com.fr.chart.chartdata.JSONTableData; -import com.fr.design.constants.LayoutConstants; -import com.fr.design.constants.UIConstants; -import com.fr.design.data.tabledata.wrapper.TableDataWrapper; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.itextfield.UITextField; -import com.fr.design.mainframe.AbstractChartDataPane4Chart; - -import javax.swing.*; -import javax.swing.border.LineBorder; -import java.awt.*; -import java.awt.event.*; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-15 - * Time: 下午6:45 - */ -public class JSONDataPane extends ChartDesignDataLoadPane { - private UITextField url = new UITextField(); - private UIButton reviewButton; - private JSONTableData tableData; - - public JSONDataPane(AbstractChartDataPane4Chart parentPane) { - super(parentPane); - initReviewButton(); - url.addKeyListener(new KeyAdapter() { - @Override - public void keyTyped(KeyEvent e) { - if(e.getKeyChar() == KeyEvent.VK_ENTER){ - tableData.setFilePath(url.getText()); - fireChange(); - } - } - }); - this.setLayout(new BorderLayout(0, 0)); - JPanel pane = new JPanel(new BorderLayout(LayoutConstants.HGAP_LARGE, 0)); - pane.add(url, BorderLayout.CENTER); - pane.add(reviewButton, BorderLayout.EAST); - this.add(pane, BorderLayout.CENTER); - tableData = new JSONTableData(url.getText()); - } - - @Override - protected String title4PopupWindow() { - return null; - } - - private void initReviewButton() { - reviewButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/search.png")); - reviewButton.setBorder(new LineBorder(UIConstants.LINE_COLOR)); - reviewButton.addMouseListener(new MouseAdapter() { - @Override - public void mouseReleased(MouseEvent e) { - tableData.setFilePath(url.getText()); - fireChange(); - //预览JSON数据 - TableDataWrapper tableDataWrappe = getTableDataWrapper(); - if (tableDataWrappe != null) { - try { - tableDataWrappe.previewData(); - } catch (Exception e1) { - FRContext.getLogger().error(e1.getMessage(), e1); - } - } - } - }); - } - - @Override - public TableData getTableData() { - return tableData; - } - - @Override - protected String getNamePrefix() { - return null; - } - - /** - * 加载数据集 - * @param tableData 数据集 - */ - public void populateChartTableData(TableData tableData) { - if(tableData instanceof JSONTableData) { - url.setText(((JSONTableData) tableData).getFilePath()); - this.tableData = (JSONTableData)tableData; - } - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/TableDataPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/TableDataPane.java index 721e7432ac..382ca853d1 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/TableDataPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/TableDataPane.java @@ -22,7 +22,7 @@ public class TableDataPane extends FurtherBasicBeanPane{ private static final int TOP = -5; private DatabaseTableDataPane tableDataPane; private AbstractTableDataContentPane dataContentPane; - + private ChartDataPane parent; protected AbstractTableDataContentPane getDataContentPane() { @@ -33,10 +33,10 @@ public class TableDataPane extends FurtherBasicBeanPane{ this.parent = parent; initDataPane(); } - + private void initDataPane() { - UILabel label = new BoldFontTextLabel(Inter.getLocText("Chart-DS_TableData") + ":", SwingConstants.RIGHT) ; - label.setPreferredSize(new Dimension(ChartDataPane.LABEL_WIDTH,ChartDataPane.LABEL_HEIGHT)); + UILabel label = new BoldFontTextLabel(Inter.getLocText("Chart-DS_TableData") + ":", SwingConstants.RIGHT) ; + label.setPreferredSize(new Dimension(ChartDataPane.LABEL_WIDTH,ChartDataPane.LABEL_HEIGHT)); tableDataPane = new DatabaseTableDataPane(label) { @Override protected void userEvent() { @@ -46,18 +46,18 @@ public class TableDataPane extends FurtherBasicBeanPane{ }; tableDataPane.setBorder(BorderFactory.createMatteBorder(0,6,0, 0, getBackground())); - tableDataPane.setBorder(BorderFactory.createEmptyBorder(0,1,0,1)); + tableDataPane.setBorder(BorderFactory.createEmptyBorder(0,1,0,1)); tableDataPane.setPreferredSize(new Dimension(205 , 20)); - this.setBorder(BorderFactory.createEmptyBorder(TOP,0,0,0)); + this.setBorder(BorderFactory.createEmptyBorder(TOP,0,0,0)); this.add(tableDataPane, BorderLayout.NORTH); } - + /** * 检查box是否可用. */ public void checkBoxUse() { TableDataWrapper dataWrap = tableDataPane.getTableDataWrapper(); - + if(dataContentPane != null) { dataContentPane.checkBoxUse(dataWrap != null); } @@ -140,7 +140,7 @@ public class TableDataPane extends FurtherBasicBeanPane{ } onSelectTableData(); checkBoxUse(); - + tableDataPane.populateBean(tableData); } diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AreaPlotPane4ToolBar.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AreaPlotPane4ToolBar.java deleted file mode 100644 index 80ef68b25b..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AreaPlotPane4ToolBar.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. - */ - -package com.fr.design.mainframe.chart.gui.type; - -import com.fr.chart.chartattr.*; -import com.fr.chart.charttypes.AreaIndependentChart; -import com.fr.design.mainframe.ChartDesigner; -import com.fr.general.FRLogger; -import com.fr.general.Inter; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-16 - * Time: 下午5:55 - */ -public class AreaPlotPane4ToolBar extends PlotPane4ToolBar { - - private static final int STACK_AREA_CHART = 0; - private static final int PERCENT_AREA_LINE_CHART = 1; - private static final int STACK_3D_AREA_CHART = 2; - private static final int PERCENT_3D_AREA_LINE_CHART = 3; - - public AreaPlotPane4ToolBar(ChartDesigner designer) { - super(designer); - } - - @Override - protected String getTypeIconPath() { - return "com/fr/design/images/toolbar/area/"; - } - - @Override - protected List initDemoList() { - List demoList = new ArrayList(); - - String area = Inter.getLocText("FR-Chart-Type_Area"); - String stack = Inter.getLocText("FR-Chart-Type_Stacked"); - String percent = Inter.getLocText("FR-Chart-Use_Percent"); - - ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), STACK_AREA_CHART, stack + area,this); - pane.setSelected(true); - demoList.add(pane); - demoList.add(new ChartDesignerImagePane(getTypeIconPath(), PERCENT_AREA_LINE_CHART, percent + stack + area,this)); - - String td = Inter.getLocText("FR-Chart-Chart_3D"); - demoList.add(new ChartDesignerImagePane(getTypeIconPath(), STACK_3D_AREA_CHART, td + stack + area,this)); - demoList.add(new ChartDesignerImagePane(getTypeIconPath(), PERCENT_3D_AREA_LINE_CHART, td + percent + stack + area,this)); - return demoList; - } - - protected Plot getSelectedClonedPlot() { - Chart[] barChart = AreaIndependentChart.areaChartTypes; - Plot newPlot =barChart[this.getSelectedIndex()].getPlot(); - Plot cloned = null; - try { - cloned = (Plot) newPlot.clone(); - } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In AreaChart"); - } - return cloned; - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/BarPlotPane4ToolBar.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/BarPlotPane4ToolBar.java deleted file mode 100644 index 331ae76aa5..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/BarPlotPane4ToolBar.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. - */ - -package com.fr.design.mainframe.chart.gui.type; - -import com.fr.chart.chartattr.*; -import com.fr.chart.charttypes.BarIndependentChart; -import com.fr.design.mainframe.ChartDesigner; -import com.fr.general.FRLogger; -import com.fr.general.Inter; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-16 - * Time: 下午5:44 - */ -public class BarPlotPane4ToolBar extends PlotPane4ToolBar { - private static final int COLOMN_CHART = 0; - private static final int STACK_COLOMN_CHART = 1; - private static final int PERCENT_STACK_COLOMN_CHART = 2; - private static final int THREE_D_COLOMN_CHART = 3; - private static final int THREE_D_COLOMN_HORIZON_DRAW_CHART = 4; - private static final int THREE_D_STACK_COLOMN_CHART = 5; - private static final int THREE_D_PERCENT_STACK_COLOMN_CHART = 6; - - public BarPlotPane4ToolBar(ChartDesigner designer) { - super(designer); - } - - @Override - protected String getTypeIconPath() { - return "com/fr/design/images/toolbar/bar/"; - } - - @Override - protected List initDemoList() { - List demoList = new ArrayList(); - ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), COLOMN_CHART, Inter.getLocText("FR-Chart-Type_Bar"),this); - pane.setSelected(true); - demoList.add(pane); - demoList.add(new ChartDesignerImagePane(getTypeIconPath(), STACK_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Type_Stacked","FR-Chart-Type_Bar"}),this)); - demoList.add(new ChartDesignerImagePane(getTypeIconPath(), PERCENT_STACK_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Use_Percent","FR-Chart-Type_Stacked","FR-Chart-Type_Bar"}),this)); - - demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Bar"}),this)); - - demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_COLOMN_HORIZON_DRAW_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Bar","FR-Chart-Direction_Horizontal"},new String[]{"","(",")"}),this)); - - demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_STACK_COLOMN_CHART, - Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Stacked","FR-Chart-Type_Bar"}),this)); - demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_PERCENT_STACK_COLOMN_CHART, - Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Use_Percent","FR-Chart-Type_Stacked","FR-Chart-Type_Bar"}),this)); - return demoList; - } - - protected Plot getSelectedClonedPlot() { - Chart[] barChart = BarIndependentChart.barChartTypes; - BarPlot newPlot = (BarPlot) barChart[this.getSelectedIndex()].getPlot(); - Plot cloned = null; - try { - cloned = (Plot) newPlot.clone(); - } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In BarChart"); - } - return cloned; - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/BubblePlotPane4ToolBar.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/BubblePlotPane4ToolBar.java deleted file mode 100644 index 8d3d4d3d68..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/BubblePlotPane4ToolBar.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.fr.design.mainframe.chart.gui.type; - -import com.fr.base.FRContext; -import com.fr.chart.base.TextAttr; -import com.fr.chart.chartattr.*; -import com.fr.chart.charttypes.BubbleIndependentChart; -import com.fr.design.mainframe.ChartDesigner; -import com.fr.general.FRLogger; -import com.fr.general.Inter; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-29 - * Time: 下午1:59 - */ -public class BubblePlotPane4ToolBar extends PlotPane4ToolBar { - - private static final int BUBBLE_CHART = 0; - - public BubblePlotPane4ToolBar(ChartDesigner designer) { - super(designer); - } - - @Override - protected String getTypeIconPath() { - return "com/fr/design/images/toolbar/bubble/"; - } - - @Override - protected List initDemoList() { - List demoList = new ArrayList(); - ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), BUBBLE_CHART, Inter.getLocText("FR-Chart-Chart_BubbleChart"),this); - pane.setSelected(true); - demoList.add(pane); - return demoList; - } - - protected Plot getSelectedClonedPlot() { - Chart[] barChart = BubbleIndependentChart.bubbleChartTypes; - BubblePlot newPlot = (BubblePlot) barChart[this.getSelectedIndex()].getPlot(); - setChartFontAttr(newPlot); - Plot cloned = null; - try { - cloned = (Plot) newPlot.clone(); - } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In BubbleChart"); - } - return cloned; - } - - /** - * 设置一些几本的属性 - * @param plot 绘图区对象 - */ - public static void setChartFontAttr(BubblePlot plot) { - if (plot.getxAxis() != null) { - TextAttr categoryTextAttr = new TextAttr(); - categoryTextAttr.setFRFont(FRContext.getDefaultValues().getFRFont()); - plot.getxAxis().setTextAttr(categoryTextAttr); - } - if (plot.getyAxis() != null) { - TextAttr valueTextAttr = new TextAttr(); - valueTextAttr.setFRFont(FRContext.getDefaultValues().getFRFont()); - plot.getyAxis().setTextAttr(valueTextAttr); - } - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/ChartDesignerImagePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/ChartDesignerImagePane.java deleted file mode 100644 index 76a3808396..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/ChartDesignerImagePane.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. - */ - -package com.fr.design.mainframe.chart.gui.type; - -import com.fr.base.BaseUtils; - -import javax.swing.*; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import java.awt.*; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.util.ArrayList; - -/** - * 图表设计器,工具栏上的图表类型选择用的单个小图面板 - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-16 - * Time: 下午4:24 - */ -public class ChartDesignerImagePane extends JPanel implements MouseListener{ - - private static final int SIZE = 28; - private static final String NOMAL = "normal"; - private static final String OVER = "over"; - private static final String PRESS = "normal"; - - private String iconPath; - private int chartType; - private String state = NOMAL;//状态,按下、悬浮、正常 - private Icon mode; - private boolean isSelected; - private PlotPane4ToolBar parent; - private ArrayList changeListeners = new ArrayList(); - - public ChartDesignerImagePane(String iconPath, int chartType, String tipName,PlotPane4ToolBar parent) { - this.iconPath = iconPath; - this.chartType = chartType; - this.isSelected = false; - addMouseListener(this); - this.setToolTipText(tipName); - this.parent = parent; - } - - public Dimension getPreferredSize() { - return new Dimension(SIZE, SIZE); - } - - public void paintComponent(Graphics g) { - super.paintComponent(g); - mode = BaseUtils.readIcon(iconPath + chartType + "_" + state + ".png"); - if(this.isSelected){ - Icon border =BaseUtils.readIcon("com/fr/design/images/toolbar/border.png"); - border.paintIcon(this,g,0,0); - } - mode.paintIcon(this, g, 3, 3); - } - - public void setSelected(boolean isSelected) { - this.isSelected = isSelected; - this.state = isSelected ? PRESS : NOMAL; - } - - - /** - * 鼠标点击 - * @param e 事件 - */ - public void mouseClicked(MouseEvent e) { - } - - /** - * 鼠标按下 - * @param e 事件 - */ - public void mousePressed(MouseEvent e) { - parent.clearChoose(); - if(parent.getSelectedIndex() != this.chartType){ - parent.setSelectedIndex(this.chartType); - this.fireStateChange(); - } - this.isSelected = true; - state = PRESS; - this.repaint(); - } - - /** - * 鼠标释放 - * @param e 事件 - */ - public void mouseReleased(MouseEvent e) { - } - - /** - * 鼠标点击 - * @param e 进入 - */ - public void mouseEntered(MouseEvent e) { - if (this.isSelected) { - state = PRESS; - } else { - state = OVER; - } - this.repaint(); - } - - /** - * 鼠标点击 - * @param e 离开 - */ - public void mouseExited(MouseEvent e) { - if (this.isSelected) { - state = PRESS; - } else { - state = NOMAL; - } - this.repaint(); - } - - private void fireStateChange() { - for (int i = 0; i < changeListeners.size(); i++) { - changeListeners.get(i).stateChanged(new ChangeEvent(this)); - } - } - - /** - * 注册事件监听 - * @param listener 监听 - */ - public void registeChangeListener(ChangeListener listener){ - changeListeners.add(listener); - } - -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/ColumnPlotPane4ToolBar.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/ColumnPlotPane4ToolBar.java deleted file mode 100644 index beb5078bae..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/ColumnPlotPane4ToolBar.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. - */ - -package com.fr.design.mainframe.chart.gui.type; - -import com.fr.chart.chartattr.*; -import com.fr.chart.charttypes.ColumnIndependentChart; -import com.fr.design.mainframe.ChartDesigner; -import com.fr.general.FRLogger; -import com.fr.general.Inter; - -import java.util.ArrayList; -import java.util.List; - -/** - * 柱形图工具栏小图系列 - * Created by IntelliJ IDEA. - * Author : DAISY - * Version: 6.5.6 - * Date: 14-10-16 - * Time: 下午5:21 - */ -public class ColumnPlotPane4ToolBar extends PlotPane4ToolBar { - - private static final int COLOMN_CHART = 0; - private static final int STACK_COLOMN_CHART = 1; - private static final int PERCENT_STACK_COLOMN_CHART = 2; - private static final int THREE_D_COLOMN_CHART = 3; - private static final int THREE_D_COLOMN_HORIZON_DRAW_CHART = 4; - private static final int THREE_D_STACK_COLOMN_CHART = 5; - private static final int THREE_D_PERCENT_STACK_COLOMN_CHART = 6; - - public ColumnPlotPane4ToolBar(ChartDesigner designer) { - super(designer); - } - - @Override - protected String getTypeIconPath() { - return "com/fr/design/images/toolbar/column/"; - } - - @Override - protected List initDemoList() { - List demoList = new ArrayList(); - ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), COLOMN_CHART, Inter.getLocText("FR-Chart-Type_Column"),this); - pane.setSelected(true); - demoList.add(pane); - demoList.add(new ChartDesignerImagePane(getTypeIconPath(), STACK_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Type_Stacked","FR-Chart-Type_Column"}),this)); - demoList.add(new ChartDesignerImagePane(getTypeIconPath(), PERCENT_STACK_COLOMN_CHART, - Inter.getLocText(new String[]{"FR-Chart-Use_Percent","FR-Chart-Type_Stacked","FR-Chart-Type_Column"}),this)); - demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Column"}),this)); - - demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_COLOMN_HORIZON_DRAW_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Column","FR-Chart-Direction_Horizontal"},new String[]{"","(",")"}),this)); - demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_STACK_COLOMN_CHART, - Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Stacked","FR-Chart-Type_Column"}),this)); - demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_PERCENT_STACK_COLOMN_CHART, - Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Use_Percent","FR-Chart-Type_Stacked","FR-Chart-Type_Column"}),this)); - return demoList; - } - - protected Plot getSelectedClonedPlot(){ - Chart[] barChart = ColumnIndependentChart.columnChartTypes; - BarPlot newPlot = (BarPlot)barChart[this.getSelectedIndex()].getPlot(); - Plot cloned = null; - try { - cloned = (Plot)newPlot.clone(); - } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In ColumnChart"); - } - return cloned; - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/CustomPlotPane4ToolBar.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/CustomPlotPane4ToolBar.java deleted file mode 100644 index aee7cada57..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/CustomPlotPane4ToolBar.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.fr.design.mainframe.chart.gui.type; - -import com.fr.chart.chartattr.*; -import com.fr.chart.charttypes.CustomIndependentChart; -import com.fr.design.mainframe.ChartDesigner; -import com.fr.general.FRLogger; -import com.fr.general.Inter; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-29 - * Time: 下午1:39 - */ -public class CustomPlotPane4ToolBar extends PlotPane4ToolBar { - private static final int CUSTOM_NO_SHEET = 0; - - - public CustomPlotPane4ToolBar(ChartDesigner designer) { - super(designer); - } - - @Override - protected String getTypeIconPath() { - return "com/fr/design/images/toolbar/custom/"; - } - - @Override - protected List initDemoList() { - List demoList = new ArrayList(); - ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), CUSTOM_NO_SHEET, Inter.getLocText("ChartF-Comb_Chart"),this); - pane.setSelected(true); - demoList.add(pane); - return demoList; - } - - protected Plot getSelectedClonedPlot() { - Chart[] barChart = CustomIndependentChart.combChartTypes; - CustomPlot newPlot = (CustomPlot) barChart[this.getSelectedIndex()].getPlot(); - Plot cloned = null; - try { - cloned = (Plot) newPlot.clone(); - } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In CustomChart"); - } - return cloned; - } - - -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/DonutPlotPane4ToolBar.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/DonutPlotPane4ToolBar.java deleted file mode 100644 index fb2368268b..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/DonutPlotPane4ToolBar.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.fr.design.mainframe.chart.gui.type; - -import com.fr.chart.chartattr.*; -import com.fr.chart.charttypes.DonutIndependentChart; -import com.fr.design.mainframe.ChartDesigner; -import com.fr.general.FRLogger; -import com.fr.general.Inter; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-29 - * Time: 下午2:18 - */ -public class DonutPlotPane4ToolBar extends PlotPane4ToolBar { - - private static final int DONUT_CHART = 0; //2d圆环图 - private static final int THREE_D_DONUT_CHART = 1; //3D圆环图 - - public DonutPlotPane4ToolBar(ChartDesigner designer) { - super(designer); - } - - @Override - protected String getTypeIconPath() { - return "com/fr/design/images/toolbar/donut/"; - } - - @Override - protected List initDemoList() { - List demoList = new ArrayList(); - ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), DONUT_CHART, Inter.getLocText("FR-Chart-Type_Donut"),this); - pane.setSelected(true); - demoList.add(pane); - demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_DONUT_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D", "FR-Chart-Type_Donut"}),this)); - return demoList; - } - - protected Plot getSelectedClonedPlot() { - Chart[] barChart = DonutIndependentChart.donutChartTypes; - DonutPlot newPlot = (DonutPlot) barChart[this.getSelectedIndex()].getPlot(); - Plot cloned = null; - try { - cloned = (Plot) newPlot.clone(); - } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In DonutChart"); - } - return cloned; - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/GanttPlotPane4ToolBar.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/GanttPlotPane4ToolBar.java deleted file mode 100644 index ab43c4f49e..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/GanttPlotPane4ToolBar.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.fr.design.mainframe.chart.gui.type; - -import com.fr.chart.chartattr.*; -import com.fr.chart.charttypes.GanttIndependentChart; -import com.fr.design.mainframe.ChartDesigner; -import com.fr.general.FRLogger; -import com.fr.general.Inter; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by IntelliJ IDEA. - * Author : DAISY - * Version: 6.5.6 - * Date: 14-10-29 - * Time: 下午2:16 - */ -public class GanttPlotPane4ToolBar extends PlotPane4ToolBar { - - private static final int GANTT = 0; - - public GanttPlotPane4ToolBar(ChartDesigner designer) { - super(designer); - } - - @Override - protected String getTypeIconPath() { - return "com/fr/design/images/toolbar/gantt/"; - } - - @Override - protected List initDemoList() { - List demoList = new ArrayList(); - ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), GANTT, Inter.getLocText("FR-Chart-Type_Gantt"),this); - pane.setSelected(true); - demoList.add(pane); - return demoList; - } - - protected Plot getSelectedClonedPlot() { - Chart[] barChart = GanttIndependentChart.ganttChartTypes; - GanttPlot newPlot = (GanttPlot) barChart[this.getSelectedIndex()].getPlot(); - Plot cloned = null; - try { - cloned = (Plot) newPlot.clone(); - } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In GanttChart"); - } - return cloned; - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/LinePlotPane4ToolBar.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/LinePlotPane4ToolBar.java deleted file mode 100644 index c84408db75..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/LinePlotPane4ToolBar.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. - */ - -package com.fr.design.mainframe.chart.gui.type; - -import com.fr.chart.chartattr.*; -import com.fr.chart.charttypes.LineIndependentChart; -import com.fr.design.mainframe.ChartDesigner; -import com.fr.general.FRLogger; -import com.fr.general.Inter; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by IntelliJ IDEA. - * Author : DAISY - * Version: 6.5.6 - * Date: 14-10-16 - * Time: 下午5:37 - */ -public class LinePlotPane4ToolBar extends PlotPane4ToolBar { - - - private static final int LINE_CHART = 0; - - public LinePlotPane4ToolBar(ChartDesigner designer) { - super(designer); - } - - @Override - protected String getTypeIconPath() { - return "com/fr/design/images/toolbar/line/"; - } - - @Override - protected List initDemoList() { - List demoList = new ArrayList(); - ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), LINE_CHART, Inter.getLocText("I-LineStyle_Line"), this); - pane.setSelected(true); - demoList.add(pane); - return demoList; - } - - protected Plot getSelectedClonedPlot() { - Chart[] barChart = LineIndependentChart.lineChartTypes; - LinePlot newPlot = (LinePlot) barChart[this.getSelectedIndex()].getPlot(); - Plot cloned = null; - try { - cloned = (Plot) newPlot.clone(); - } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In LineChart"); - } - return cloned; - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/MeterPlotPane4ToolBar.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/MeterPlotPane4ToolBar.java deleted file mode 100644 index 39a7cf5042..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/MeterPlotPane4ToolBar.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.fr.design.mainframe.chart.gui.type; - -import com.fr.base.FRContext; -import com.fr.chart.base.TextAttr; -import com.fr.chart.chartattr.*; -import com.fr.chart.charttypes.MeterIndependentChart; -import com.fr.design.mainframe.ChartDesigner; -import com.fr.general.FRLogger; -import com.fr.general.Inter; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-29 - * Time: 下午2:08 - */ -public class MeterPlotPane4ToolBar extends PlotPane4ToolBar { - - private static final int METER = 0; - private static final int BLUE_METER = 1; - private static final int SIMPLE_METER = 2; - - public MeterPlotPane4ToolBar(ChartDesigner designer) { - super(designer); - } - - @Override - protected String getTypeIconPath() { - return "com/fr/design/images/toolbar/meter/"; - } - - @Override - protected List initDemoList() { - List demoList = new ArrayList(); - ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), METER, Inter.getLocText("FR-Chart-Type_Meter"),this); - pane.setSelected(true); - demoList.add(pane); - demoList.add(new ChartDesignerImagePane(getTypeIconPath(), BLUE_METER, Inter.getLocText("FR-Chart-Type_Meter")+1,this)); - demoList.add(new ChartDesignerImagePane(getTypeIconPath(), SIMPLE_METER, Inter.getLocText("FR-Chart-Type_Meter")+2,this)); - return demoList; - } - - protected Plot getSelectedClonedPlot() { - Chart[] barChart = MeterIndependentChart.meterChartTypes; - MeterPlot newPlot = (MeterPlot) barChart[this.getSelectedIndex()].getPlot(); - setChartFontAttr4MeterStyle(newPlot); - Plot cloned = null; - try { - cloned = (Plot) newPlot.clone(); - } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In MeterChart"); - } - return cloned; - } - - /** - * 设置一些几本的属性 - * @param plot 绘图区对象 - */ - public static void setChartFontAttr4MeterStyle(MeterPlot plot) { - if(plot.getMeterStyle() != null){ - plot.getMeterStyle().setTitleTextAttr(new TextAttr(FRContext.getDefaultValues().getFRFont())); - } - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/PiePlotPane4ToolBar.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/PiePlotPane4ToolBar.java deleted file mode 100644 index 7508069d5f..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/PiePlotPane4ToolBar.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. - */ - -package com.fr.design.mainframe.chart.gui.type; - -import com.fr.chart.chartattr.*; -import com.fr.chart.charttypes.PieIndependentChart; -import com.fr.design.mainframe.ChartDesigner; -import com.fr.general.FRLogger; -import com.fr.general.Inter; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-16 - * Time: 下午5:52 - */ -public class PiePlotPane4ToolBar extends PlotPane4ToolBar { - private static final int PIE_CHART = 0; - private static final int THREE_D_PIE_CHART = 1; - - public PiePlotPane4ToolBar(ChartDesigner designer) { - super(designer); - } - - @Override - protected String getTypeIconPath() { - return "com/fr/design/images/toolbar/pie/"; - } - - @Override - protected List initDemoList() { - List demoList = new ArrayList(); - ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), PIE_CHART, Inter.getLocText("I-PieStyle_Normal"),this); - pane.setSelected(true); - demoList.add(pane); - demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_PIE_CHART, - Inter.getLocText(new String[]{"FR-Chart-Chart_3D", "I-PieStyle_Normal"}),this)); - return demoList; - } - - protected Plot getSelectedClonedPlot() { - Chart[] barChart = PieIndependentChart.pieChartTypes; - PiePlot newPlot = (PiePlot) barChart[this.getSelectedIndex()].getPlot(); - Plot cloned = null; - try { - cloned = (Plot) newPlot.clone(); - } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In PieChart"); - } - return cloned; - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/PlotPane4ToolBar.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/PlotPane4ToolBar.java deleted file mode 100644 index 34311313a1..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/PlotPane4ToolBar.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. - */ - -package com.fr.design.mainframe.chart.gui.type; - -import com.fr.base.FRContext; -import com.fr.chart.chartattr.Chart; -import com.fr.chart.chartattr.ChartCollection; -import com.fr.chart.chartattr.Plot; -import com.fr.design.mainframe.ChartDesigner; -import com.fr.design.mainframe.chart.ChartDesignEditPane; -import com.fr.general.ComparatorUtils; -import com.fr.js.NameJavaScriptGroup; -import com.fr.stable.Constants; - -import javax.swing.*; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import java.awt.*; -import java.util.List; - -/** - * 图表设计器 工具栏面板 - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-16 - * Time: 下午5:17 - */ -public abstract class PlotPane4ToolBar extends JPanel{ - private static final int COM_GAP = 14; - - protected List typeDemo; - - protected abstract String getTypeIconPath(); - - protected abstract List initDemoList(); - - private int selectedIndex = 0;//默认选中第一个 - private ChartDesigner chartDesigner; - private ChangeListener changeListener = new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - fireChange(); - } - }; - - public PlotPane4ToolBar(ChartDesigner designer){ - chartDesigner = designer; - typeDemo = initDemoList(); - this.setLayout(new FlowLayout(FlowLayout.LEFT, COM_GAP, 0)); - for(int i = 0; i < typeDemo.size(); i++) { - ChartDesignerImagePane tmp = typeDemo.get(i); - tmp.registeChangeListener(changeListener); - this.add(tmp); - } - this.setSelectedIndex(0); - } - - /** - * 清除选中 - */ - public void clearChoose(){ - if(typeDemo == null){ - return; - } - for(int i = 0; i < typeDemo.size(); i++) { - typeDemo.get(i).setSelected(false); - this.repaint(); - } - } - - public void setSelectedIndex(int selectedIndex){ - clearChoose(); - this.selectedIndex = selectedIndex; - typeDemo.get(selectedIndex).setSelected(true); - } - - public int getSelectedIndex(){ - return this.selectedIndex; - } - - //子类覆盖 - protected Plot getSelectedClonedPlot(){ - return null; - } - - /** - * 切换图表类型 - */ - public void fireChange(){ - ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection(); - Chart chart =chartCollection.getSelectedChart(); - chart.switchPlot(getSelectedClonedPlot()); - resetChart(chart); - chartDesigner.clearToolBarStyleChoose(); - chartDesigner.fireTargetModified(); - ChartDesignEditPane.getInstance().populateSelectedTabPane(); - } - - protected void resetChart(Chart chart){ - chart.setBorderStyle(Constants.LINE_NONE); - chart.setBorderColor(new Color(150, 150, 150)); - chart.setBackground(null); - } - - public Plot setSelectedClonedPlotWithCondition(Plot oldPlot){ - Plot newPlot = getSelectedClonedPlot(); - if(oldPlot != null && ComparatorUtils.equals(newPlot.getClass(), oldPlot.getClass())){ - if(oldPlot.getHotHyperLink() != null){ - NameJavaScriptGroup hotHyper = oldPlot.getHotHyperLink(); - try { - newPlot.setHotHyperLink((NameJavaScriptGroup)hotHyper.clone()); - } catch (CloneNotSupportedException e) { - FRContext.getLogger().error("Error in Hyperlink, Please Check it.", e); - } - } - newPlot.setConditionCollection(oldPlot.getConditionCollection()); - newPlot.setSeriesDragEnable(oldPlot.isSeriesDragEnable()); - if(newPlot.isSupportZoomCategoryAxis() && newPlot.getxAxis() != null) { - newPlot.getxAxis().setZoom(oldPlot.getxAxis().isZoom()); - } - if(newPlot.isSupportTooltipInInteractivePane()) { - newPlot.setHotTooltipStyle(oldPlot.getHotTooltipStyle()); - } - - if(newPlot.isSupportAutoRefresh()) { - newPlot.setAutoRefreshPerSecond(oldPlot.getAutoRefreshPerSecond()); - } - } - return newPlot; - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/RadarPlotPane4ToolBar.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/RadarPlotPane4ToolBar.java deleted file mode 100644 index c21ad2ca96..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/RadarPlotPane4ToolBar.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.fr.design.mainframe.chart.gui.type; - -import com.fr.chart.chartattr.*; -import com.fr.chart.charttypes.RadarIndependentChart; -import com.fr.design.mainframe.ChartDesigner; -import com.fr.general.FRLogger; -import com.fr.general.Inter; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-29 - * Time: 下午2:02 - */ -public class RadarPlotPane4ToolBar extends PlotPane4ToolBar { - private static final int RADAR = 0; - - public RadarPlotPane4ToolBar(ChartDesigner designer) { - super(designer); - } - - @Override - protected String getTypeIconPath() { - return "com/fr/design/images/toolbar/radar/"; - } - - @Override - protected List initDemoList() { - List demoList = new ArrayList(); - ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), RADAR, Inter.getLocText("FR-Chart-Type_Radar"),this); - pane.setSelected(true); - demoList.add(pane); - return demoList; - } - - protected Plot getSelectedClonedPlot() { - Chart[] barChart = RadarIndependentChart.radarChartTypes; - RadarPlot newPlot = (RadarPlot) barChart[this.getSelectedIndex()].getPlot(); - Plot cloned = null; - try { - cloned = (Plot) newPlot.clone(); - } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In RadarChart"); - } - return cloned; - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/RangePlotPane4ToolBar.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/RangePlotPane4ToolBar.java deleted file mode 100644 index 15c5d41ae6..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/RangePlotPane4ToolBar.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.fr.design.mainframe.chart.gui.type; - -import com.fr.chart.chartattr.*; -import com.fr.chart.charttypes.RangeIndependentChart; -import com.fr.design.mainframe.ChartDesigner; -import com.fr.general.FRLogger; -import com.fr.general.Inter; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-29 - * Time: 下午2:13 - */ -public class RangePlotPane4ToolBar extends PlotPane4ToolBar { - - private static final int RANGE = 0; - - public RangePlotPane4ToolBar(ChartDesigner designer) { - super(designer); - } - - - @Override - protected String getTypeIconPath() { - return "com/fr/design/images/toolbar/range/"; - } - - @Override - protected List initDemoList() { - List demoList = new ArrayList(); - ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), RANGE, Inter.getLocText("ChartF-Range_Chart"),this); - pane.setSelected(true); - demoList.add(pane); - return demoList; - } - - protected Plot getSelectedClonedPlot() { - Chart[] barChart = RangeIndependentChart.rangeChartTypes; - RangePlot newPlot = (RangePlot) barChart[this.getSelectedIndex()].getPlot(); - Plot cloned = null; - try { - cloned = (Plot) newPlot.clone(); - } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In RangeChart"); - } - return cloned; - } -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/StockPlotPane4ToolBar.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/StockPlotPane4ToolBar.java deleted file mode 100644 index d7eb9f31d7..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/StockPlotPane4ToolBar.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.fr.design.mainframe.chart.gui.type; - -import com.fr.chart.chartattr.*; -import com.fr.chart.charttypes.StockIndependentChart; -import com.fr.design.mainframe.ChartDesigner; -import com.fr.general.FRLogger; -import com.fr.general.Inter; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-29 - * Time: 下午2:04 - */ -public class StockPlotPane4ToolBar extends PlotPane4ToolBar { - - private static final int STOCK = 0; - - public StockPlotPane4ToolBar(ChartDesigner designer) { - super(designer); - } - - @Override - protected String getTypeIconPath() { - return "com/fr/design/images/toolbar/stock/"; - } - - @Override - protected List initDemoList() { - List demoList = new ArrayList(); - ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), STOCK, Inter.getLocText("FR-Chart-Type_Stock"),this); - pane.setSelected(true); - demoList.add(pane); - return demoList; - } - - protected Plot getSelectedClonedPlot() { - Chart[] barChart = StockIndependentChart.stockChartTypes; - StockPlot newPlot = (StockPlot) barChart[this.getSelectedIndex()].getPlot(); - Plot cloned = null; - try { - cloned = (Plot) newPlot.clone(); - } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In StockChart"); - } - return cloned; - } -} \ No newline at end of file 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 deleted file mode 100644 index a3dde95598..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/UserDefinedChartTypePane.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.fr.design.mainframe.chart.gui.type; - - -import com.fr.chart.chartattr.Chart; - -/** - * Created by eason on 15/4/23. - */ -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 ""; - } - - -} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/XYSCatterPlotPane4ToolBar.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/XYSCatterPlotPane4ToolBar.java deleted file mode 100644 index 00bea1278f..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/XYSCatterPlotPane4ToolBar.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.fr.design.mainframe.chart.gui.type; - -import com.fr.base.FRContext; -import com.fr.chart.base.TextAttr; -import com.fr.chart.chartattr.*; -import com.fr.chart.charttypes.XYScatterIndependentChart; -import com.fr.design.mainframe.ChartDesigner; -import com.fr.general.FRLogger; -import com.fr.general.Inter; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-29 - * Time: 下午1:54 - */ -public class XYSCatterPlotPane4ToolBar extends PlotPane4ToolBar { - - private static final int XYSCATTER_CHART = 0; - - public XYSCatterPlotPane4ToolBar(ChartDesigner designer) { - super(designer); - } - - @Override - protected String getTypeIconPath() { - return "com/fr/design/images/toolbar/xyscatter/"; - } - - @Override - protected List initDemoList() { - List demoList = new ArrayList(); - ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), XYSCATTER_CHART, Inter.getLocText("FR-Chart-Type_XYScatter"),this); - pane.setSelected(true); - demoList.add(pane); - return demoList; - } - - protected Plot getSelectedClonedPlot() { - Chart[] barChart = XYScatterIndependentChart.XYScatterChartTypes; - XYPlot newPlot = (XYPlot) barChart[this.getSelectedIndex()].getPlot(); - setChartFontAttr(newPlot); - Plot cloned = null; - try { - cloned = (Plot) newPlot.clone(); - } catch (CloneNotSupportedException e) { - FRLogger.getLogger().error("Error In XYScatterChart"); - } - return cloned; - } - - /** - * 设置一些几本的属性 - * @param plot 绘图区对象 - */ - public static void setChartFontAttr(XYPlot plot) { - if (plot.getxAxis() != null) { - TextAttr categoryTextAttr = new TextAttr(); - categoryTextAttr.setFRFont(FRContext.getDefaultValues().getFRFont()); - plot.getxAxis().setTextAttr(categoryTextAttr); - } - if (plot.getyAxis() != null) { - TextAttr valueTextAttr = new TextAttr(); - valueTextAttr.setFRFont(FRContext.getDefaultValues().getFRFont()); - plot.getyAxis().setTextAttr(valueTextAttr); - } - } -} \ No newline at end of file diff --git a/designer_form/src/com/fr/design/mainframe/FormArea.java b/designer_form/src/com/fr/design/mainframe/FormArea.java index 4f6c86feef..51867ba6f1 100644 --- a/designer_form/src/com/fr/design/mainframe/FormArea.java +++ b/designer_form/src/com/fr/design/mainframe/FormArea.java @@ -184,8 +184,8 @@ public class FormArea extends JComponent implements ScrollRulerComponent { reCalculateRoot(screenValue, true); } else { // 组件间隔啊 - int val = layout.getAcualInterval(); - layout.addCompInterval(val); + // REPORT-2585 原有的逻辑导致嵌套的tab中的间隔加不上去,会在后续拖动的过程中出问题 + reCalculateDefaultRoot(screenValue, true); } } LayoutUtils.layoutContainer(root); @@ -355,6 +355,40 @@ public class FormArea extends JComponent implements ScrollRulerComponent { START_VALUE = value; } } + + /** + * 按照界面大小的百分比值调整root大小 + * @param needCalculateParaHeight 是否需要调整参数界面高度 + * @param value + */ + private void reCalculateDefaultRoot(double value, boolean needCalculateParaHeight) { + XLayoutContainer root = FormArea.this.designer.getRootComponent(); + if (root.acceptType(XWFitLayout.class)) { + XWFitLayout layout = (XWFitLayout) root; + layout.setContainerPercent(1.0); + traverAndAdjust(layout, 0.0); + layout.adjustCreatorsWhileSlide(0.0); + + // 拖动滑块,先将内部组件百分比大小计算,再计算容器大小 + + Dimension d = new Dimension(layout.getWidth(), layout.getHeight()); + // 自适应布局的父层是border + if (layout.getParent() != null) { + int paraHeight = designer.getParaHeight(); + if (needCalculateParaHeight && paraHeight > 0) { + designer.setParaHeight(paraHeight); + XWBorderLayout parent = (XWBorderLayout) layout.getParent(); + parent.toData().setNorthSize(paraHeight); + parent.removeAll(); + parent.add(designer.getParaComponent(),WBorderLayout.NORTH); + parent.add(designer.getRootComponent(),WBorderLayout.CENTER); + } + layout.getParent().setSize(d.width, d.height+paraHeight); + // 调整自适应布局大小后,同步调整参数界面和border大小,此时刷新下formArea + FormArea.this.validate(); + } + } + } //循环遍历布局,按百分比调整子组件大小 private void traverAndAdjust(XCreator creator,double percent){ diff --git a/designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java b/designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java index 6187bbd486..929e10110a 100644 --- a/designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java +++ b/designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java @@ -2,7 +2,6 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; import com.fr.design.ExtraDesignClassManager; -import com.fr.design.constants.UIConstants; import com.fr.design.designer.beans.events.DesignerEditListener; import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.creator.XCreatorUtils; @@ -12,6 +11,7 @@ import com.fr.design.gui.core.WidgetOption; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.imenu.UIPopupMenu; import com.fr.design.module.DesignModuleFactory; import com.fr.design.utils.gui.LayoutUtils; import com.fr.form.ui.*; @@ -28,10 +28,12 @@ import java.util.List; public class FormParaWidgetPane extends JPanel { private static FormParaWidgetPane THIS; + private final static int BORDER = 5; + private List predifinedwidgeList = new ArrayList(); - private JWindow chartTypeWindow; - private JWindow widgetTypeWindow; + private UIPopupMenu chartTypePopupMenu; + private UIPopupMenu widgetTypePopupMenu; private WidgetOption[] widgetOptions = null; private WidgetOption[] chartOptions = null; private WidgetOption[] layoutOptions = null; @@ -89,6 +91,56 @@ public class FormParaWidgetPane extends JPanel { initFormParaComponent(); } + private void initWidgetTypePopUp() { + if (widgetTypePopupMenu == null) { + JPanel widgetPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)); + loadPredefinedWidget(); + int rowNum = calculateWidgetWindowRowNum(); + JPanel westPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + for (WidgetOption o : loadWidgetOptions()) { + westPanel.add(new ToolBarButton(o)); + } + int x = commonWidgetNum * (widgetButtonWidth + smallGAP) - smallGAP; + westPanel.setPreferredSize(new Dimension(x, (int) (rowNum * westPanel.getPreferredSize().getHeight()))); + JPanel eastPane = new JPanel(new FlowLayout(FlowLayout.LEFT)); + for (WidgetOption no : predifinedwidgeList) { + eastPane.add(new ToolBarButton(no)); + } + int maxWidth = preWidgetShowMaxNum * (widgetButtonWidth + smallGAP) - smallGAP; + int width = predifinedwidgeList.size() >= preWidgetShowMaxNum ? maxWidth : (int) eastPane.getPreferredSize().getWidth(); + eastPane.setPreferredSize(new Dimension(width, (int) (rowNum * eastPane.getPreferredSize().getHeight()))); + + UIScrollPane eastScrollPane = new UIScrollPane(eastPane); + eastScrollPane.setBorder(null); + int maxHeight = preWidgetShowMaxRow * (widgetButtonHeight + smallGAP) - smallGAP; + int height = predifinedwidgeList.size() >= preWidgetShowMaxNum * preWidgetShowMaxRow ? maxHeight : (int) eastPane.getPreferredSize().getHeight(); + width = predifinedwidgeList.size() >= preWidgetShowMaxNum * preWidgetShowMaxRow ? (int) eastPane.getPreferredSize().getWidth() + smallGAP + jsparatorWidth : (int) eastPane.getPreferredSize().getWidth(); + eastScrollPane.setPreferredSize(new Dimension(width, height)); + + widgetPane.add(westPanel); + widgetPane.add(createJSeparator(height)); + widgetPane.add(eastScrollPane); + + widgetTypePopupMenu = new UIPopupMenu(); + widgetTypePopupMenu.add(widgetPane); + } + } + + private void initChartTypePopUp() { + if (chartTypePopupMenu == null){ + JPanel componentsPara = new JPanel(new FlowLayout(FlowLayout.LEFT)); + WidgetOption[] chartOptions = loadChartOptions(); + for (WidgetOption chartOption : chartOptions) { + componentsPara.add(new ToolBarButton(chartOption)); + } + int x = COMMON_CHAR_NUM * (widgetButtonWidth + smallGAP); + int y = (int) Math.ceil(chartOptions.length / ((double) COMMON_CHAR_NUM)) * (widgetButtonHeight + smallGAP); + componentsPara.setPreferredSize(new Dimension(x, y)); + chartTypePopupMenu = new UIPopupMenu(); + chartTypePopupMenu.add(componentsPara); + } + } + private void initFormParaComponent() { this.removeAll(); @@ -200,18 +252,10 @@ public class FormParaWidgetPane extends JPanel { chartPopUpButton.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { - JPanel componentsPara = new JPanel(new FlowLayout(FlowLayout.LEFT)); - WidgetOption[] chartOptions = loadChartOptions(); - for (WidgetOption chartOption : chartOptions) { - componentsPara.add(new ToolBarButton(chartOption)); - } - int x = COMMON_CHAR_NUM * (widgetButtonWidth + smallGAP); - int y = (int) Math.ceil(chartOptions.length / ((double) COMMON_CHAR_NUM)) * (widgetButtonHeight + smallGAP); - componentsPara.setPreferredSize(new Dimension(x, y)); - chartTypeWindow = new PopUpWindow(componentsPara, Inter.getLocText("FR-Designer-Form-ToolBar_Chart")); - chartTypeWindow.setLocation((int) jSeparatorLayout.getLocationOnScreen().getX() + 1, (int) jSeparatorLayout.getLocationOnScreen().getY()); - chartTypeWindow.setSize(chartTypeWindow.getPreferredSize()); - chartTypeWindow.setVisible(true); + initChartTypePopUp(); + chartTypePopupMenu.show(FormParaWidgetPane.this, + (int) jSeparatorLayout.getLocation().getX() + BORDER, + (int) jSeparatorLayout.getLocation().getY()); } }); labelPane.add(chartPopUpButton, BorderLayout.EAST); @@ -228,40 +272,10 @@ public class FormParaWidgetPane extends JPanel { chartPopUpButton.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { - JPanel widgetPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)); - loadPredefinedWidget(); - int rowNum = calculateWidgetWindowRowNum(); - JPanel westPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); - for (WidgetOption o : loadWidgetOptions()) { - westPanel.add(new ToolBarButton(o)); - } - int x = commonWidgetNum * (widgetButtonWidth + smallGAP); - westPanel.setPreferredSize(new Dimension(x, (int) (rowNum * westPanel.getPreferredSize().getHeight()))); - JPanel eastPane = new JPanel(new FlowLayout(FlowLayout.LEFT)); - for (WidgetOption no : predifinedwidgeList) { - eastPane.add(new ToolBarButton(no)); - } - int maxWidth = preWidgetShowMaxNum * (widgetButtonWidth + smallGAP); - int width = predifinedwidgeList.size() >= preWidgetShowMaxNum ? maxWidth : (int) eastPane.getPreferredSize().getWidth(); - eastPane.setPreferredSize(new Dimension(width, (int) (rowNum * eastPane.getPreferredSize().getHeight()))); - - UIScrollPane eastScrollPane = new UIScrollPane(eastPane); - eastScrollPane.setBorder(null); - int maxHeight = preWidgetShowMaxRow * (widgetButtonHeight + smallGAP); - int height = predifinedwidgeList.size() >= preWidgetShowMaxNum * preWidgetShowMaxRow ? maxHeight : (int) eastPane.getPreferredSize().getHeight(); - width = predifinedwidgeList.size() >= preWidgetShowMaxNum * preWidgetShowMaxRow ? (int) eastPane.getPreferredSize().getWidth() + smallGAP + jsparatorWidth : (int) eastPane.getPreferredSize().getWidth(); - eastScrollPane.setPreferredSize(new Dimension(width, height)); - - widgetPane.add(westPanel); - widgetPane.add(createJSeparator(height)); - widgetPane.add(eastScrollPane); - - widgetTypeWindow = new PopUpWindow(widgetPane, Inter.getLocText("FR-Designer-Form-ToolBar_Widget")); - widgetTypeWindow.setSize(widgetTypeWindow.getPreferredSize()); - if (jSeparatorChart != null) { - widgetTypeWindow.setLocation((int) jSeparatorChart.getLocationOnScreen().getX() + 1, (int) jSeparatorChart.getLocationOnScreen().getY()); - } - widgetTypeWindow.setVisible(true); + initWidgetTypePopUp(); + widgetTypePopupMenu.show(FormParaWidgetPane.this, + (int) jSeparatorChart.getLocation().getX() + BORDER, + (int) jSeparatorChart.getLocation().getY()); } }); @@ -354,83 +368,6 @@ public class FormParaWidgetPane extends JPanel { } } - - private class PopUpWindow extends JWindow { - private JPanel northPane; - private String typeName; - private int LineWidth = 5; - private int BarWidth = 10; - - public PopUpWindow(JPanel northPane, String typeName) { - super(); - this.northPane = northPane; - this.typeName = typeName; - this.getContentPane().add(initComponents()); - this.doLayout(); - Toolkit.getDefaultToolkit().addAWTEventListener(awt, AWTEvent.MOUSE_EVENT_MASK); - } - - private AWTEventListener awt = new AWTEventListener() { - public void eventDispatched(AWTEvent event) { - if (event instanceof MouseEvent) { - MouseEvent mv = (MouseEvent) event; - if (mv.getClickCount() > 0) { - Point point = new Point((int) (mv.getLocationOnScreen().getX()), (int) mv.getLocationOnScreen().getY()); - // 直接contains在mac下,点击内部也会消失 - Dimension d = PopUpWindow.this.getSize(); - Point p = PopUpWindow.this.getLocation(); - Rectangle rect = new Rectangle(p, d); - if (!rect.contains(point)) { - PopUpWindow.this.setVisible(false); - } - } - } - } - }; - - - protected JPanel initComponents() { - JPanel rootPane = new EditorChoosePane(); - JPanel contentPane = new JPanel(); - contentPane.setLayout(new BorderLayout(17, 0)); - contentPane.add(northPane, BorderLayout.CENTER); - JPanel labelPane = new JPanel(new BorderLayout()); - labelPane.add(new UILabel(typeName, UILabel.CENTER), BorderLayout.CENTER); - JButton popUpButton = createPopDownButton(); - popUpButton.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - PopUpWindow.this.setVisible(false); - } - }); - labelPane.add(popUpButton, BorderLayout.EAST); - contentPane.add(labelPane, BorderLayout.SOUTH); - rootPane.add(contentPane, BorderLayout.CENTER); - return rootPane; - - } - - - } - - private class EditorChoosePane extends JPanel { - public EditorChoosePane() { - super(); - ((FlowLayout) this.getLayout()).setVgap(1); - } - - @Override - public void paintComponent(Graphics g) { - Rectangle r = this.getBounds(); - g.setColor(UIConstants.NORMAL_BACKGROUND); - g.fillRoundRect(r.x, r.y, r.width, r.height, 0, 0); - g.setColor(UIConstants.LINE_COLOR); - g.drawLine(r.x, r.y, r.x, r.y + r.height); - g.drawLine(r.x, r.y + r.height - 1, r.x + r.width - 1, r.y + r.height - 1); - g.drawLine(r.x + r.width - 1, r.y, r.x + r.width - 1, r.y + r.height - 1); - } - } - private WidgetOption[] loadWidgetOptions() { if (widgetOptions == null) { widgetOptions = (WidgetOption[]) ArrayUtils.addAll(WidgetOption.getFormWidgetIntance(), ExtraDesignClassManager.getInstance().getFormWidgetOptions()); diff --git a/designer_form/src/com/fr/design/mainframe/widget/editors/DataTableConfigPane.java b/designer_form/src/com/fr/design/mainframe/widget/editors/DataTableConfigPane.java index 36c54f4ecc..3c993bde71 100644 --- a/designer_form/src/com/fr/design/mainframe/widget/editors/DataTableConfigPane.java +++ b/designer_form/src/com/fr/design/mainframe/widget/editors/DataTableConfigPane.java @@ -23,248 +23,251 @@ import java.util.ArrayList; public class DataTableConfigPane extends JComponent implements PropertyChangeListener { - private DataEditingTable table; - - public DataTableConfigPane() { - table = new DataEditingTable(); - JScrollPane scrollPane = new JScrollPane(table); - this.setLayout(new DataTableLayout()); - this.add(scrollPane, BorderLayout.CENTER); - } - - public void populate(DataTableConfig config) { - table.populate(config); - } - - public DataTableConfig update() { - return table.update(); - } - - class DataTableLayout extends BorderLayout { - public void layoutContainer(Container target) { - super.layoutContainer(target); - table.doLayout(); - } - } - - class DataEditingTable extends JTable { - - private DataTableConfig config; - private BeanTableModel model; - private TableColumnModelListener modeListener; - - public DataEditingTable() { - this.setBorder(BorderFactory.createLineBorder(new Color(210, 210, 210), 1)); - this.setColumnSelectionAllowed(true); - this.setRowSelectionAllowed(true); - MouseAdapterListener l = new MouseAdapterListener(this); - this.addMouseListener(l); - this.addMouseMotionListener(l); - model = new BeanTableModel(); - modeListener = new TableColumnModelListener() { - - @Override - public void columnAdded(TableColumnModelEvent e) { - - } - - @Override - public void columnMarginChanged(ChangeEvent e) { - DataTableConfigPane.this.propertyChange(); - } - - @Override - public void columnMoved(TableColumnModelEvent e) { - DataTableConfigPane.this.propertyChange(); - } - - @Override - public void columnRemoved(TableColumnModelEvent e) { - - } - - @Override - public void columnSelectionChanged(ListSelectionEvent e) { - - } - - }; - } - - public TableCellRenderer getCellRenderer(int row, int column) { - TableCellRenderer renderer = super.getCellRenderer(row, column); - if (renderer instanceof UILabel) { - ((UILabel) renderer).setHorizontalAlignment(UILabel.CENTER); - } - return renderer; - } - - public void populate(DataTableConfig config) { - this.getTableHeader().getColumnModel().removeColumnModelListener(modeListener); - if (config == null) { - config = DataTableConfig.DEFAULT_TABLE_DATA_CONFIG; - } - this.config = config; - - model = new BeanTableModel(); - this.setModel(model); - this.setRowHeight(0, config.getRowHeight()); - for (int i = 0; i < config.getColumnCount(); i++) { - this.getColumn(this.getColumnName(i)).setPreferredWidth(config.getColumnWidth(i)); - } - this.getTableHeader().getColumnModel().addColumnModelListener(modeListener); - this.doLayout(); - this.repaint(); - } - - public DataTableConfig update() { - config.setRowHeight(this.getRowHeight(0)); - model = new BeanTableModel(); - String[] columns = new String[this.getColumnCount()]; - for (int i = 0; i < this.getColumnCount(); i++) { - config.setColumnWidth(i, this.getColumn(this.getColumnName(i)).getWidth()); - columns[i] = this.getColumnName(i); - } - - config.setColumns(columns); - return config; - } - - public class BeanTableModel extends AbstractTableModel { - - @Override - public int getColumnCount() { - return config.getColumnCount(); - } - - @Override - public int getRowCount() { - return 1; - } - - @Override - public String getColumnName(int column) { - return config.getColumnName(column); - } - - @Override - public Object getValueAt(int rowIndex, int columnIndex) { - return config.getTableDataName() + "." + config.getColumnName(columnIndex); - } - - } - - class MouseAdapterListener extends MouseAdapter { - private JTable table; - int oldY = 0; - int newY = 0; - int row = 0; - int oldHeight = 0; - boolean drag = false; - int increase = 0; - JPopupMenu popupMenu; - - public MouseAdapterListener(JTable table) { - this.table = table; - popupMenu = new JPopupMenu(); - - popupMenu.add(new CutAction()); - popupMenu.add(new CutAction()); - popupMenu.add(new CutAction()); - popupMenu.add(new CutAction()); - } - - class CutAction extends UpdateAction { - - /** - * Constructor - */ - public CutAction() { - this.setName(Inter.getLocText("M_Edit-Cut")); - this.setMnemonic('T'); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_edit/cut.png")); - this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_MASK)); - } - - @Override - public void actionPerformed(ActionEvent e) { - int row = table.getSelectedRow(); - int column = table.getSelectedColumn(); - table.getColumnModel().removeColumn(table.getColumn(table.getColumnName(column))); - DataTableConfigPane.this.propertyChange(); - } - } - - public void mouseMoved(MouseEvent e) { - int onRow = table.rowAtPoint(e.getPoint()); - - int height = 0; - for (int i = 0; i <= onRow; i++) { - height = height + table.getRowHeight(i); - } - - if (height - e.getY() < 3) { - drag = true; - table.setCursor(new Cursor(Cursor.N_RESIZE_CURSOR)); - } else { - drag = false; - table.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); - } - - } - - private void trigger_popup(MouseEvent e) { - - popupMenu.show(table, e.getX(), e.getY()); - } - - public void mouseDragged(MouseEvent e) { - if (drag) { - int value = oldHeight + e.getY() - oldY; - if (value < 30) - table.setRowHeight(row, 30); - else - table.setRowHeight(row, oldHeight + e.getY() - oldY); - DataTableConfigPane.this.propertyChange(); - } - } - - public void mousePressed(MouseEvent e) { - oldY = e.getY(); - row = table.rowAtPoint(e.getPoint()); - oldHeight = table.getRowHeight(row); - if (e.getButton() == MouseEvent.BUTTON3) { - trigger_popup(e); - } - } - - public void mouseReleased(MouseEvent e) { - newY = e.getY(); - table.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); - } - } - } - - private ArrayList changetList = new ArrayList(); - - public void addpropertyChangeListener(PropertyChangeListener l) { - changetList.add(l); - } - - @Override - public void propertyChange() { - for (PropertyChangeListener l : changetList) { - l.propertyChange(); - } - } + private DataEditingTable table; + + public DataTableConfigPane() { + table = new DataEditingTable(); + JScrollPane scrollPane = new JScrollPane(table); + this.setLayout(new DataTableLayout()); + this.add(scrollPane, BorderLayout.CENTER); + } + + public void populate(DataTableConfig config) { + table.populate(config); + } + + public DataTableConfig update() { + return table.update(); + } + + class DataTableLayout extends BorderLayout { + public void layoutContainer(Container target) { + super.layoutContainer(target); + table.doLayout(); + } + } + + class DataEditingTable extends JTable { + + private DataTableConfig config; + private BeanTableModel model; + private TableColumnModelListener modeListener; + + public DataEditingTable() { + this.setBorder(BorderFactory.createLineBorder(new Color(210, 210, 210), 1)); + this.setColumnSelectionAllowed(true); + this.setRowSelectionAllowed(true); + MouseAdapterListener l = new MouseAdapterListener(this); + this.addMouseListener(l); + this.addMouseMotionListener(l); + model = new BeanTableModel(); + modeListener = new TableColumnModelListener() { + + @Override + public void columnAdded(TableColumnModelEvent e) { + + } + + @Override + public void columnMarginChanged(ChangeEvent e) { + DataTableConfigPane.this.propertyChange(); + } + + @Override + public void columnMoved(TableColumnModelEvent e) { + DataTableConfigPane.this.propertyChange(); + } + + @Override + public void columnRemoved(TableColumnModelEvent e) { + + } + + @Override + public void columnSelectionChanged(ListSelectionEvent e) { + + } + + }; + } + + public TableCellRenderer getCellRenderer(int row, int column) { + TableCellRenderer renderer = super.getCellRenderer(row, column); + if (renderer instanceof UILabel) { + ((UILabel) renderer).setHorizontalAlignment(UILabel.CENTER); + } + return renderer; + } + + public void populate(DataTableConfig config) { + this.getTableHeader().getColumnModel().removeColumnModelListener(modeListener); + if (config == null) { + config = DataTableConfig.DEFAULT_TABLE_DATA_CONFIG; + } + this.config = config; + + model = new BeanTableModel(); + this.setModel(model); + this.setRowHeight(0, config.getRowHeight()); + for (int i = 0; i < config.getColumnCount(); i++) { + this.getColumn(this.getColumnName(i)).setPreferredWidth(config.getColumnWidth(i)); + } + this.getTableHeader().getColumnModel().addColumnModelListener(modeListener); + this.doLayout(); + this.repaint(); + } + + public DataTableConfig update() { + config.setRowHeight(this.getRowHeight(0)); + model = new BeanTableModel(); + String[] columns = new String[this.getColumnCount()]; + for (int i = 0; i < this.getColumnCount(); i++) { + config.setColumnWidth(i, this.getColumn(this.getColumnName(i)).getWidth()); + columns[i] = this.getColumnName(i); + } + + config.setColumns(columns); + return config; + } + + public class BeanTableModel extends AbstractTableModel { + + @Override + public int getColumnCount() { + return config.getColumnCount(); + } + + @Override + public int getRowCount() { + return 1; + } + + @Override + public String getColumnName(int column) { + return config.getColumnName(column); + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + return config.getTableDataName() + "." + config.getColumnName(columnIndex); + } + + } + + class MouseAdapterListener extends MouseAdapter { + private final static int DIS = 30; + private final static int SMALL_DIS = 3; + private JTable table; + int oldY = 0; + int newY = 0; + int row = 0; + int oldHeight = 0; + boolean drag = false; + int increase = 0; + JPopupMenu popupMenu; + + public MouseAdapterListener(JTable table) { + this.table = table; + popupMenu = new JPopupMenu(); + + popupMenu.add(new CutAction()); + popupMenu.add(new CutAction()); + popupMenu.add(new CutAction()); + popupMenu.add(new CutAction()); + } + + class CutAction extends UpdateAction { + + /** + * Constructor + */ + public CutAction() { + this.setName(Inter.getLocText("M_Edit-Cut")); + this.setMnemonic('T'); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_edit/cut.png")); + this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_MASK)); + } + + @Override + public void actionPerformed(ActionEvent e) { + int row = table.getSelectedRow(); + int column = table.getSelectedColumn(); + table.getColumnModel().removeColumn(table.getColumn(table.getColumnName(column))); + DataTableConfigPane.this.propertyChange(); + } + } + + public void mouseMoved(MouseEvent e) { + int onRow = table.rowAtPoint(e.getPoint()); + + int height = 0; + for (int i = 0; i <= onRow; i++) { + height = height + table.getRowHeight(i); + } + + if (height - e.getY() < SMALL_DIS) { + drag = true; + table.setCursor(new Cursor(Cursor.N_RESIZE_CURSOR)); + } else { + drag = false; + table.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); + } + + } + + private void trigger_popup(MouseEvent e) { + + popupMenu.show(table, e.getX(), e.getY()); + } + + public void mouseDragged(MouseEvent e) { + if (drag) { + int value = oldHeight + e.getY() - oldY; + if (value < DIS) { + table.setRowHeight(row, DIS); + } else { + table.setRowHeight(row, oldHeight + e.getY() - oldY); + } + DataTableConfigPane.this.propertyChange(); + } + } + + public void mousePressed(MouseEvent e) { + oldY = e.getY(); + row = table.rowAtPoint(e.getPoint()); + oldHeight = table.getRowHeight(row); + if (e.getButton() == MouseEvent.BUTTON3) { + trigger_popup(e); + } + } + + public void mouseReleased(MouseEvent e) { + newY = e.getY(); + table.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); + } + } + } + + private ArrayList changetList = new ArrayList(); + + public void addpropertyChangeListener(PropertyChangeListener l) { + changetList.add(l); + } + + @Override + public void propertyChange() { + for (PropertyChangeListener l : changetList) { + l.propertyChange(); + } + } @Override public void propertyChange(Object mark) { } - @Override - public void propertyChange(Object[] marks) { + @Override + public void propertyChange(Object[] marks) { - } + } } \ No newline at end of file