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 268adafbf..a537d3c43 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/cell/editor/RichTextToolBar.java b/designer/src/com/fr/design/cell/editor/RichTextToolBar.java index 8d7708c9c..1bf8a2f56 100644 --- a/designer/src/com/fr/design/cell/editor/RichTextToolBar.java +++ b/designer/src/com/fr/design/cell/editor/RichTextToolBar.java @@ -134,7 +134,7 @@ public class RichTextToolBar extends BasicPane{ } private void bindListener(){ - FRFont defaultFont = RichTextPane.DEFAUL_FONT; + FRFont defaultFont = (this.textPane != null) ? FRFont.getInstance(this.textPane.getFont()) : RichTextPane.DEFAUL_FONT; fontNameComboBox.addItemListener(fontNameItemListener); fontNameComboBox.setSelectedItem(defaultFont.getFontName()); fontSizeComboBox.addItemListener(fontSizeItemListener); diff --git a/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java b/designer/src/com/fr/design/mainframe/AuthorityToolBarPane.java index 80f40cadf..da856173a 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/ElementCasePaneAuthorityEditPane.java b/designer/src/com/fr/design/mainframe/ElementCasePaneAuthorityEditPane.java index 22c88049e..fe6c616ed 100644 --- a/designer/src/com/fr/design/mainframe/ElementCasePaneAuthorityEditPane.java +++ b/designer/src/com/fr/design/mainframe/ElementCasePaneAuthorityEditPane.java @@ -782,7 +782,6 @@ public class ElementCasePaneAuthorityEditPane extends AuthorityEditPane { NameJavaScriptGroup linkGroup = cellElement.getNameHyperlinkGroup(); //超链接的个数+单元格可见的操作 hyperlinkCheckBoxes = new UICheckBox[linkGroup.size()]; - double f = TableLayout.FILL; double p = TableLayout.PREFERRED; Component[][] components = new Component[hyperlinkCheckBoxes.length + 1][]; diff --git a/designer/src/com/fr/design/mainframe/FormatBrushAction.java b/designer/src/com/fr/design/mainframe/FormatBrushAction.java index 296fb6d20..687631250 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 03e78b198..c671f0fdc 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; @@ -102,17 +101,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 46bc378ae..af5906c33 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 cf2258a4f..ff3d843fb 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 9f14df471..974a2cfbb 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 f0f68a9a7..452367ad3 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/build.release.gradle b/designer_base/build.release.gradle index 6aa5467c2..f86cef71a 100644 --- a/designer_base/build.release.gradle +++ b/designer_base/build.release.gradle @@ -53,7 +53,7 @@ def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) //声明外部依赖 dependencies{ -compile fileTree(dir:'../../../finereport-lib-stable/master',include:'**/*.jar') +compile fileTree(dir:"../../../finereport-lib-stable/${branchName}",include:'**/*.jar') compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") testCompile 'junit:junit:4.12' 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 a1808e43e..c2cfeb9a4 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 08dc91b07..bd77bfa0c 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 e0569424d..621e303b1 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 7623ac37d..36ca2fb7e 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 e3013e487..32d4dca03 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 41a2ce8ce..000000000 --- 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/LoginWebPane.java b/designer_base/src/com/fr/design/extra/LoginWebPane.java index b49db6ace..ee0a3275a 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/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index 12c3e85c4..f1759f016 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 1a6416174..71224c3a8 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 2bbdd7e53..000000000 --- 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 d0bcc27e1..000000000 --- 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 5861bb9ed..f3c96d219 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 413f86275..000000000 --- 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 b48957e0f..000000000 --- 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 ed7d73563..481498fc8 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/gui/autocomplete/AutoCompletePopupWindow.java b/designer_base/src/com/fr/design/gui/autocomplete/AutoCompletePopupWindow.java index c5efadc5c..22bb4edf7 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 83047ad71..42d547200 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 62c68dc98..11bab3a7e 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 c5b58ae26..327c44468 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 0194551da..4cff0ef2d 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 86a5b5cf2..295b2d673 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 28ae0aebf..032f75643 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 0ef0f829a..880e94d55 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 b01f40f0b..8916cf18c 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 0ea84af03..c8c517e64 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 1ba60ed57..8582b5eef 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 7a451593b..bf5b85628 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 0511504cf..b81ea7c38 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/syntax/ui/rsyntaxtextarea/RSyntaxTextAreaDefaultInputMap.java b/designer_base/src/com/fr/design/gui/syntax/ui/rsyntaxtextarea/RSyntaxTextAreaDefaultInputMap.java index f9171f74a..715ab47fe 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 5e1a7cfe7..35a1995ed 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 6ee8b40b7..12b87ad5a 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -1132,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 @@ -1994,3 +1994,10 @@ 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 8a2b1646e..ac7375c1a 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 @@ -1994,3 +1994,11 @@ 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 dba3ce03a..25c7e8e32 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,58 +1,58 @@ -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_Account=\u30E6\u30FC\u30B6\u30FC\u540D +FR-Designer-BBSLogin_Connection-Failure=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u63A5\u7D9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u73FE\u5728\u306E\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044 FR-Designer-BBSLogin_Connection-Failure-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\u30FCID\u3084\u30D1\u30B9\u30EF\u30FC\u30C9\u30A8\u30E9\u30FC\u3001\u518D\u30ED\u30B0\u30A4\u30F3\u4E0B\u3055\u3044 +FR-Designer-BBSLogin_Login-Failure-Tip=\u30E6\u30FC\u30B6\u30FC\u540D\u307E\u305F\u306F\u30D1\u30B9\u30EF\u30FC\u30C9\u30A8\u30E9\u30FC\u3067\u3059\u3002\u518D\u5EA6\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u304F\u3060\u3055\u3044 FR-Designer-BBSLogin_Password=\u30D1\u30B9\u30EF\u30FC\u30C9 -FR-Designer-BBSLogin_Password-Empty-Tip=\u7A7A\u6B04\u306B\u3067\u304D\u307E\u305B\u3093 -FR-Designer-BBSLogin_Register-Account=\u767B\u9332\u30A2\u30AB\u30A6\u30F3\u30C8 +FR-Designer-BBSLogin_Password-Empty-Tip=\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +FR-Designer-BBSLogin_Register-Account=\u30A2\u30AB\u30A6\u30F3\u30C8\u767B\u9332 FR-Designer-BBSLogin_Switch-Account=\u30A2\u30AB\u30A6\u30F3\u30C8\u5207\u308A\u66FF\u3048 FR-Designer-BBSLogin_Privite-Message=\u500B\u4EBA\u30E1\u30C3\u30BB\u30FC\u30B8 FR-Designer-BBSLogin_Times=\u56DE -FR-Designer-BBSLogin_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-BBSLogin_Username-Empty-Tip=\u30E6\u30FC\u30B6\u30FC\u540D\u306F\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +FR-Designer-Basic_More_Color=\u305D\u306E\u4ED6\u306E\u8272 FR-Designer-Estate_Any=\u5236\u9650\u306A\u3057 -FR-Designer-Estate_Default_Font=\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A9\u30F3\u30C8 -FR-Designer-Estate_Default_Null=\u30C7\u30D5\u30A9\u30EB\u30C8\u306F\u7A7A -FR-Designer-Estate_Default_Text=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024 -FR-Designer-Estate_Parameter_Null_Text=\u30D1\u30E9\u30E1\u30FC\u30BF\u304C\u7A7A\u306B\u306A\u308B\u6642\u306E\u8868\u793A\u306F -FR-Designer-Estate_Radio-Group=\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_Default_Font=\u65E2\u5B9A\u30D5\u30A9\u30F3\u30C8 +FR-Designer-Estate_Default_Null=\u65E2\u5B9A\u3092\u7A7A\u6B04\u306B\u3059\u308B +FR-Designer-Estate_Default_Text=\u65E2\u5B9A\u5024 +FR-Designer-Estate_Parameter_Null_Text=\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u7A7A\u6B04\u3067\u8868\u793A\u3059\u308B +FR-Designer-Estate_Radio-Group=\u30E9\u30B8\u30AA\u30DC\u30BF\u30F3\u30BB\u30C3\u30C8\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 +FR-Designer-Estate_Selected_Font=\u9078\u629E\u30D5\u30A9\u30F3\u30C8 FR-Designer-Estate_Widget_Value=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5024 -FR-Designer-Layout_Adaptive_Layout=\u81EA\u5DF1\u8ABF\u6574\u30EC\u30A4\u30A2\u30A6\u30C8 +FR-Designer-Layout_Adaptive_Layout=\u81EA\u52D5\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\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-Designer-Output_Default_Background=\u65E2\u5B9A\u80CC\u666F +FR-Designer-Output_Excel_Page=Excel\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8(\u30DA\u30FC\u30B8\u5225) +FR-Designer-Output_Excel_Sheet=Excel\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8(1\u30DA\u30FC\u30B81\u30B7\u30FC\u30C8) +FR-Designer-Output_Excel_Simple=Excel\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8(\u6A19\u6E96) +FR-Designer-Plugin_PluginMarket_Coding=\u30D7\u30E9\u30B0\u30A4\u30F3\u30B9\u30C8\u30A2\u306F\u958B\u767A\u4E2D\u3067\u3059\u3002\u304A\u5F85\u3061\u4E0B\u3055\u3044 +FR-Desinger-Plugin_Updater_UpdateAndUpgrade=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3068\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9 +FR-Desinger-Plugin_Updater_Checking_Jar_Update=Jar\u30D5\u30A1\u30A4\u30EB\u30C1\u30A7\u30C3\u30AF\u691C\u8A3C\u4E2D +FR-Desinger-Plugin_Updater_Checking_Version_Update=\u30D0\u30FC\u30B8\u30E7\u30F3\u30C1\u30A7\u30C3\u30AF\u691C\u8A3C\u4E2D FR-Desinger-Plugin_Updater_Update=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 -FR-Desinger-Plugin_Updater_Upgrade=\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C8 +FR-Desinger-Plugin_Updater_Upgrade=\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9 FR-Desinger-Plugin_Updater_Restore=\u30EA\u30AB\u30D0\u30EA FR-Desinger-Plugin_Updater_New_Version_Available=\u65B0\u3057\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u3042\u308A\u307E\u3059 FR-Desinger-Plugin_Updater_JarUpdate=Jar\u30D5\u30A1\u30A4\u30EB\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 -FR-Desinger-Plugin_Updater_VersionUpgrade=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C8\uFF1A -FR-Desinger-Plugin_Updater_Previous_Version=\u65E7\u30D0\u30FC\u30B8\u30E7\u30F3\u306B\u623B\u308A\u307E\u3059\u304B\uFF1F +FR-Desinger-Plugin_Updater_VersionUpgrade=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9 +FR-Desinger-Plugin_Updater_Previous_Version=\u65E7\u30D0\u30FC\u30B8\u30E7\u30F3\u306B\u623B\u3057\u307E\u3059\u304B? FR-Desinger-Plugin_Updater_Current_Version=\u73FE\u5728\u306E\u30D0\u30FC\u30B8\u30E7\u30F3 FR-Desinger-Plugin_Updater_Not_Install_Version=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u7528\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u3042\u308A\u307E\u305B\u3093 FR-Desinger-Plugin_Updater_Latest_Version=\u6700\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3 -FR-Desinger-Plugin_Updater_Jar_Downloading=Jar\u30D5\u30A1\u30A4\u30EB\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u7D42\u4E86\u3092\u5F85\u3063\u3066\u3044\u308B -FR-Desinger-Plugin_Updater_Version_Downloading=\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C8\u30D1\u30C3\u30B1\u30FC\u30B8\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3092\u5F85\u3063\u3066\u3044\u308B -FR-Desinger-Plugin_Updater_Restart_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u518D\u8D77\u52D5 -FR-Desinger-Plugin_Updater_Connect_VersionUpdateServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30B5\u30FC\u30D0\u306B\u63A5\u7D9A\u3067\u304D\u306A\u3044 -FR-Desinger-Plugin_Updater_Connect_VersionUpgradeServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C8\u30B5\u30FC\u30D0\u306B\u63A5\u7D9A\u3067\u304D\u306A\u3044 -FR-Desinger-Plugin_Updater_Already_Latest_Version=\u6700\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3\u306B\u306A\u308A\u307E\u3057\u305F -FR-Desinger-Plugin_Updater_Backup_OldJar_To=\u53E4\u3044Jar\u30D5\u30A1\u30A4\u30EB\u3092\u4E0B\u8A18\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3057\u307E\u3057\u305F\uFF1A -FR-Desinger-Plugin_Updater_Backup_OldVersion_To=\u53E4\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u4E0B\u8A18\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3057\u307E\u3057\u305F\uFF1A +FR-Desinger-Plugin_Updater_Jar_Downloading=Jar\u30D5\u30A1\u30A4\u30EB\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u4E2D +FR-Desinger-Plugin_Updater_Version_Downloading=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30D1\u30C3\u30B1\u30FC\u30B8\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u4E2D +FR-Desinger-Plugin_Updater_Restart_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u518D\u8D77\u52D5 +FR-Desinger-Plugin_Updater_Connect_VersionUpdateServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u66F4\u65B0\u30B5\u30FC\u30D0\u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093 +FR-Desinger-Plugin_Updater_Connect_VersionUpgradeServer_Failed=\u30D0\u30FC\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30B5\u30FC\u30D0\u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093 +FR-Desinger-Plugin_Updater_Already_Latest_Version=\u65E2\u306B\u6700\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u3059 +FR-Desinger-Plugin_Updater_Backup_OldJar_To=\u53E4\u3044Jar\u30D5\u30A1\u30A4\u30EB\u3092\u4E0B\u8A18\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3057\u307E\u3057\u305F\: +FR-Desinger-Plugin_Updater_Backup_OldVersion_To=\u53E4\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u4E0B\u8A18\u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3057\u307E\u3057\u305F\: FR-Desinger-Plugin_Updater_Please_Restart=\u3001\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u518D\u8D77\u52D5\u3057\u3066\u4E0B\u3055\u3044 FR-Desinger-Plugin_Updater_Jar_Restore=Jar\u30D5\u30A1\u30A4\u30EB\u30EA\u30AB\u30D0\u30EA FR-Desinger-Plugin_Updater_Version_Restore=\u30D0\u30FC\u30B8\u30E7\u30F3\u30EA\u30AB\u30D0\u30EA FR-Desinger-Plugin_Updater_Restore_To=\u3078\u30EA\u30AB\u30D0\u30EA -FR-Desinger-Plugin_Updater_WorksAfterRestart=\u30D0\u30FC\u30B8\u30E7\u30F3\u3001\u518D\u8D77\u52D5\u5F8C\u6709\u52B9\u306B\u306A\u308A\u307E\u3059 +FR-Desinger-Plugin_Updater_WorksAfterRestart=\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u518D\u8D77\u52D5\u5F8C\u306B\u6709\u52B9\u306B\u306A\u308A\u307E\u3059\u3002 FR-Designer-Submit_Condition=\u6761\u4EF6 FR-Designer-Widget-Title_border=\u67A0 FR-Designer-Widget-Title_border_color=\u8272 @@ -67,44 +67,44 @@ FR-Designer_Block-intersect=\u30E2\u30B8\u30E5\u30FC\u30EB\u3068\u30E2\u30B8\u30 FR-Designer_BorderLayout=\u30DC\u30FC\u30C0\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8 FR-Designer_Button-Hotkeys=\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC FR-Designer_Button-Icon=\u30DC\u30BF\u30F3\u30A2\u30A4\u30B3\u30F3 -FR-Designer_Button-Name=\u30DC\u30BF\u30F3\u540D\u79F0 +FR-Designer_Button-Name=\u30DC\u30BF\u30F3\u540D FR-Designer_Button-Type=\u30DC\u30BF\u30F3\u30BF\u30A4\u30D7 FR-Designer_CardLayout=Tab\u30EC\u30A4\u30A2\u30A6\u30C8 FR-Designer_Cell=\u30BB\u30EB FR-Designer_Chart_Cell=\u30B0\u30E9\u30D5\u30EA\u30F3\u30AF-\u30BB\u30EB FR-Designer_Chart_Float=\u30B0\u30E9\u30D5\u30EA\u30F3\u30AF-\u30D5\u30ED\u30FC\u30C6\u30A3\u30F3\u30B0\u8981\u7D20 -FR-Designer_Chart_Float_chart=\u30B0\u30E9\u30D5\u30EA\u30F3\u30AF-\u30D5\u30ED\u30FC\u30C6\u30A3\u30F3\u30B0\u7A93\u53E3 +FR-Designer_Chart_Float_chart=\u30B0\u30E9\u30D5\u30EA\u30F3\u30AF-\u30D5\u30ED\u30FC\u30C6\u30A3\u30F3\u30B0\u30B0\u30E9\u30D5 FR-Designer_Check-for-Updates=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3092\u78BA\u8A8D -FR-Designer_Choose-Data-Confusion-Tip=\ \u6DF7\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_Choose-Data-Confusion-Tip=\ \u6DF7\u4EA4\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u9078\u629E\u5F8C\u30D7\u30EC\u30D3\u30E5\u30FC\u3057\u3066\u304F\u3060\u3055\u3044 FR-Designer_Close=\u9589\u3058\u308B FR-Designer_Column=\u5217 -FR-Designer_Column_Measure=\u5217\u8EF8/\u30E1\u30C8\u30EA\u30C3\u30AF +FR-Designer_Column_Measure=\u5217\u8EF8/\u30E1\u30B8\u30E3\u30FC FR-Designer_Condition_Attributes=\u6761\u4EF6\u5C5E\u6027 FR-Designer_Confusion-Col-Name=\u30D5\u30A3\u30FC\u30EB\u30C9\u540D -FR-Designer_Confusion-key=\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u6DF7\u4E71\u3055\u305B\u308B -FR-Designer_Currency_Line=\u91D1\u984D\u7DDA +FR-Designer_Confusion-key=\u6DF7\u4EA4\u3059\u308B\u30AD\u30FC\u30EF\u30FC\u30C9 +FR-Designer_Currency_Line=\u6841\u533A\u5207\u308A\u7DDA FR-Designer_Current_tab=\u7DE8\u96C6\u4E2D\u306Etab -FR-Designer_Custom=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA -FR-Designer_Custom-Angle=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u89D2\u5EA6 +FR-Designer_Custom=\u30AB\u30B9\u30BF\u30E0 +FR-Designer_Custom-Angle=\u30AB\u30B9\u30BF\u30E0\u89D2\u5EA6 FR-Designer_DS-Dictionary=\u30C7\u30FC\u30BF\u8F9E\u66F8 -FR-Designer_Data-confusion=\u30C7\u30FC\u30BF\u6DF7\u4E71 +FR-Designer_Data-confusion=\u30C7\u30FC\u30BF\u6DF7\u4EA4 FR-Designer_Data_Type=\u30C7\u30FC\u30BF\u30BF\u30A4\u30D7 FR-Designer_Double_Click_Edit_OR_Clear=\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u7DE8\u96C6\u307E\u305F\u306F\u30AF\u30EA\u30A2\u3059\u308B -FR-Designer_Email=\u30E1\u30FC\u30EB +FR-Designer_Email=E\u30E1\u30FC\u30EB FR-Designer_Enabled=\u4F7F\u7528\u53EF\u80FD -FR-Designer_End-Date=\u7D42\u4E86\u65E5\u671F -FR-Designer_ExportAndOutput=\u51FA\u529B +FR-Designer_End-Date=\u7D42\u4E86\u65E5 +FR-Designer_ExportAndOutput=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 FR-Designer_FRFont=\u30D5\u30A9\u30F3\u30C8 FR-Designer_FS_Close_Other_Templates=\u4ED6\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u9589\u3058\u308B FR-Designer_File=\u30D5\u30A1\u30A4\u30EB -FR-Designer_Filter_Conditions=\u30D5\u30A3\u30EB\u30BF\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_Filter_Conditions=\u30D5\u30A3\u30EB\u30BF\u6761\u4EF6 +FR-Designer_Finish-Modify-Share=\u4FEE\u6B63\u3092\u7D42\u4E86\u3057\u5171\u6709 +FR-Designer_Fit-App=App\u81EA\u52D5\u8ABF\u6574 +FR-Designer_Fit=\u81EA\u52D5\u8ABF\u6574 +FR-Designer_Font-Family=\u30D5\u30A9\u30F3\u30C8\u540D FR-Designer_Font-Size=\u30D5\u30A9\u30F3\u30C8\u30B5\u30A4\u30BA -FR-Designer_Forbid_Drag_into_Adapt_Pane=\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_Forbid_Drag_into_Adapt_Pane=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u3001\u88FD\u8868\u30D1\u30CD\u30EB\u306B\u30C9\u30E9\u30C3\u30B0\u3067\u304D\u307E\u305B\u3093 +FR-Designer_Forbid_Drag_into_Para_Pane=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u30D1\u30CD\u30EB\u306B\u30C9\u30E9\u30C3\u30B0\u3067\u304D\u307E\u305B\u3093 FR-Designer_Foreground=\u8272 FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u6A29\u9650\u7DE8\u96C6\u306F\u73FE\u5728\u306E\u6642\u70B9\u3067\u652F\u6301\u3057\u3066\u3044\u307E\u305B\u3093 FR-Designer_Form-Report=\u5E33\u7968\u30D6\u30ED\u30C3\u30AF @@ -121,103 +121,103 @@ FR-Designer_Hyperlink-Form_link=\u73FE\u5728\u306E\u30C0\u30C3\u30B7\u30E5\u30DC 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=\u66F8\u304D\u8FBC\u307F\u898F\u5247 -FR-Designer_Language_Default=\u30C7\u30D5\u30A9\u30EB\u30C8 +FR-Designer_Input_Rule=\u5165\u529B\u898F\u5247 +FR-Designer_Language_Default=\u65E2\u5B9A FR-Designer_Layout=\u30EC\u30A4\u30A2\u30A6\u30C8 FR-Designer_Layout-HBox=\u6C34\u5E73\u30B1\u30FC\u30B9\u30EC\u30A4\u30A2\u30A6\u30C8 FR-Designer_Layout-Index=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9 FR-Designer_Layout_Constraints=\u4F4D\u7F6E\u3068\u30B5\u30A4\u30BA FR-Designer_Length=\u9577\u3055 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-Exit=\u7D42\u4E86 FR-Designer_M-Help=\u30D8\u30EB\u30D7 FR-Designer_M-Insert=\u633F\u5165 FR-Designer_M-Repeat-Freeze=\u91CD\u8907\u3068\u30D5\u30EA\u30FC\u30BA\u8A2D\u5B9A FR-Designer_M-Server=\u30B5\u30FC\u30D0 -FR-Designer_M-SwitchWorkspace=\u4F5C\u696D\u76EE\u6B21\u5207\u308A\u66FF\u3048 +FR-Designer_M-SwitchWorkspace=\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u5207\u308A\u66FF\u3048 FR-Designer_M-Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 -FR-Designer_MDX_Explain=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_MDX_Explain=MDX\u8A00\u8A9E\u306E\u6587\u6CD5\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\u4F8B\u3048\u3070\:\nWITH\nMEMBER [Measures].[Special Discount] AS\n[Measures].[Discount Amount] * 1.5\nSELECT\n[Measures].[Special Discount] on COLUMNS,\nNON EMPTY [Product].[Product].MEMBERS ON Rows\nFROM [Adventure Works]\nWHERE [Product].[Category].[Bikes]\n\u6CE8\:COLUMNS\u3001ROWS\u306F0\u30011\u3092\u4F7F\u7528\u3057\u3066\u4EE3\u66FF\u53EF\u80FD\u3067\u3059\u3002\u30AF\u30A8\u30EA\u8EF8\u306F2\u3064\u306E\u8EF8\u623B\u3057\u306B\u306E\u307F\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002 FR-Designer_M_Help-About_Software=\u30BD\u30D5\u30C8\u30A6\u30A7\u30A2\u306B\u3064\u3044\u3066 FR-Designer_M_Help-Tutorial=\u30D8\u30EB\u30D7\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8 FR-Designer_Max_Value=\u6700\u5927\u5024 FR-Designer_Min_Value=\u6700\u5C0F\u5024 FR-Designer_MobilePhone=\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3 -FR-Designer_New_Value=\u65B0\u5024 -FR-Designer_None=\u7121\u3057 +FR-Designer_New_Value=\u65B0\u3057\u3044\u5024 +FR-Designer_None=\u306A\u3057 FR-Designer_PaperSize-Mobile=\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3 FR-Designer_PaperSize-Mobile-Large=\u5927\u304D\u3044\u30B9\u30AF\u30EA\u30FC\u30F3 FR-Designer_PaperSize-Mobile-Small=\u5C0F\u3055\u3044\u30B9\u30AF\u30EA\u30FC\u30F3 -FR-Designer_Para-Body=\u30D1\u30E9\u30E1\u30FC\u30BF\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30FC\u30B9 +FR-Designer_Para-Body=\u30D1\u30E9\u30E1\u30FC\u30BF\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 FR-Designer_Parameters=\u30D1\u30E9\u30E1\u30FC\u30BF FR-Designer_Phone=\u96FB\u8A71 FR-Designer_PostCode=\u90F5\u4FBF\u756A\u53F7 FR-Designer_Present=\u5F62\u614B FR-Designer_Preview=\u30D7\u30EC\u30D3\u30E5\u30FC -FR-Designer_Preview-Data-Confusion=\u6DF7\u4E71\u3055\u308C\u305F\u30C7\u30FC\u30BF\u3092\u30D7\u30EC\u30D3\u30E5\u30FC +FR-Designer_Preview-Data-Confusion=\u6DF7\u4EA4\u5F8C\u306E\u30C7\u30FC\u30BF\u3092\u30D7\u30EC\u30D3\u30E5\u30FC FR-Designer_Product_Demo=\u88FD\u54C1\u30C7\u30E2 FR-Designer_Query_Type=\u30AF\u30A8\u30EA\u65B9\u6CD5 FR-Designer_Refresh=\u66F4\u65B0 FR-Designer_Refresh_Parameter_In_SQL=SQL\u4E2D\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u66F4\u65B0\u3057\u307E\u3059\u304B -FR-Designer_Reg_Expressions=\u6B63\u5247\u8868\u73FE\u5F0F +FR-Designer_Reg_Expressions=\u6B63\u898F\u8868\u73FE FR-Designer_Reg_Max_Length=\u6700\u5927\u9577\u3055 FR-Designer_Reg_Min_Length=\u6700\u5C0F\u9577\u3055 -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_ReportColumns-Columns=\u5217\u6BB5\u7D44\u307F +FR-Designer_Return-Date=\u65E5\u4ED8\u3092\u623B\u3059 +FR-Designer_RichText=\u30EA\u30C3\u30C1\u30C6\u30AD\u30B9\u30C8 FR-Designer_RichTextEditor=\u30EA\u30C3\u30C1\u30C6\u30AD\u30B9\u30C8\u30A8\u30C7\u30A3\u30BF FR-Designer_Row=\u884C FR-Designer_Row_Dimension=\u884C\u8EF8/\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3 -FR-Designer_Save=\u4FDD\u5B58 +FR-Designer_Save=\u4E0A\u66F8\u304D\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\u6C4E\u7528\u30AF\u30A8\u30EA +FR-Designer_Share-Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5171\u6709 +FR-Designer_Simple_general=\u7C21\u6613\u4E00\u822C\u30AF\u30A8\u30EA FR-Designer_Song_TypeFace=\u5B8B\u4F53 -FR-Designer_Start-Date=\u958B\u59CB\u65E5\u671F +FR-Designer_Start-Date=\u958B\u59CB\u65E5 FR-Designer_Subscript=\u4E0B\u4ED8\u304D FR-Designer_Superscript=\u4E0A\u4ED8\u304D FR-Designer_Support_QQ=\u6280\u8853QQ FR-Designer_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\u306E\u30E6\u30FC\u30B6\u9054\u306B\u611F\u8B1D\u3057\u307E\u3059 +FR-Designer_Thank_guest=\u7279\u306B\u3053\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u4F7F\u3044\u3084\u3059\u3055\u306B\u3064\u3044\u3066\u8CA2\u732E\u3057\u3066\u304F\u308C\u305F\u4EE5\u4E0B\u306E\u30E6\u30FC\u30B6\u30FC\u9054\u306B\u611F\u8B1D\u3057\u307E\u3059 FR-Designer_Thanks-To=\u611F\u8B1D FR-Designer_Title=\u30BF\u30A4\u30C8\u30EB FR-Designer_Total=\u5408\u8A08 FR-Designer_UnSignIn=\u672A\u30ED\u30B0\u30A4\u30F3 -FR-Designer_Underline=\u30A2\u30F3\u30C0\u30E9\u30A4\u30F3 +FR-Designer_Underline=\u4E0B\u7DDA 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_User-defined-MDX=\u30AB\u30B9\u30BF\u30E0MDX\u30AF\u30A8\u30EA FR-Designer_SampleText=\u30C6\u30AD\u30B9\u30C8\u4F8B -FR-Designer_Vertical-LeftToRight=\u6587\u5B57\u7E26\u66F8\u304D(\u5DE6\u304B\u3089\u53F3\u3078\uFF09 +FR-Designer_Vertical-LeftToRight=\u6587\u5B57\u7E26\u66F8\u304D(\u5DE6\u304B\u3089\u53F3\u3078) FR-Designer_Vertical-RightToLeft=\u6587\u5B57\u7E26\u66F8\u304D(\u53F3\u304B\u3089\u5DE6\u3078) FR-Designer_VerticalBoxLayout=\u5782\u76F4\u30B1\u30FC\u30B9\u30EC\u30A4\u30A2\u30A6\u30C8 FR-Designer_Visible=\u8868\u793A -FR-Designer_WLayout-Border-ToolTips=\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_WLayout-Border-ToolTips=\u6771\u3001\u5357\u3001\u897F\u3001\u5317\u3001\u4E2D\u592E\u306E5\u30D6\u30ED\u30C3\u30AF\u3088\u308A\u69CB\u6210\u3055\u308C\u308B\u5B8C\u5168\u306A\u30DC\u30FC\u30C0\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u3002\n\u5317\u90E8\u3068\u5357\u90E8\u3067\u306F\u9AD8\u3055\u3092\u3001\u6771\u90E8\u3068\u897F\u90E8\u3068\u3067\u306F\u5E45\u3092\u8ABF\u6574\u3067\u304D\u307E\u3059\u3002 FR-Designer_WaterMark=\u900F\u304B\u3057 FR-Designer_Widget=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 FR-Designer_Widget-Settings=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u8A2D\u5B9A FR-Designer_Widget-Visible=\u8868\u793A -FR-Designer_XMLA_Explain=\u591A\u6B21\u5143\u30C7\u30FC\u30BF\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_XMLA_Explain=\u591A\u6B21\u5143\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u53D6\u308A\u51FA\u3057\u3092\u4F7F\u7528\u3059\u308B\u524D\u306B\u3001\u63A5\u7D9A\u78BA\u8A8D\u3067\u304D\u305F\u591A\u6B21\u5143\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u63A5\u7D9A\u304C\u5FC5\u8981\u3067\u3059\u3002\n\u30C7\u30FC\u30BF\u63A5\u7D9A\u8A2D\u5B9A\u5B8C\u4E86\u5F8C\u3001\u30AF\u30A8\u30EA\u30C7\u30FC\u30BF\u6642\u306B2\u7A2E\u985E\u306E\u7570\u306A\u308B\u53D6\u308A\u51FA\u3057\u624B\u6BB5\u304C\u3042\u308A\u307E\u3059\u3002\n1.\u7C21\u6613\u4E00\u822C\u691C\u7D22\:\n\u7C21\u6613\u4E00\u822C\u30AF\u30A8\u30EA\u306FFineBI\u304A\u3088\u3073\u305D\u306E\u4ED6\u591A\u6B21\u5143\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306B\u9069\u7528\u3055\u308C\u307E\u3059\u3002\n\u7C21\u6613\u4E00\u822C\u30AF\u30A8\u30EA\u306E\u4F7F\u7528\u306B\u306F\u3001FR\u306FCube\u306E\u5C64\u5225\u69CB\u9020\u3092\u81EA\u52D5\u3067\u8AAD\u307F\u8FBC\u307F\u9078\u629E\u3057\u3001\u76F4\u63A5\u5FC5\u8981\u306A\u6240\u9700\u7684\u30E1\u30B8\u30E3\u30FC\u304A\u3088\u3073\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3\u3092\u9078\u629E\u3057\u6761\u4EF6\u9078\u629E\u3092\u8FFD\u52A0\u3059\u308C\u3070\u3001FR\u306F\u9078\u629E\u306B\u57FA\u3065\u3044\u3066\u81EA\u52D5\u7684\u306B\u30C7\u30FC\u30BF\u3092\u30AF\u30A8\u30EA\u3057\u307E\u3059\u3002\n\u7C21\u6613\u4E00\u822C\u30AF\u30A8\u30EA\u306F\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3\u304A\u3088\u3073\u30E1\u30B8\u30E3\u30FC\u3068\u3044\u30462\u3064\u306E\u8EF8\u306E\u30AF\u30A8\u30EA\u306B\u306E\u307F\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002\n\u30E1\u30B8\u30E3\u30FC\u304A\u3088\u3073\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3\u306E\u8A2D\u5B9A\u3067\u3001\u73FE\u5728\u5FC5\u8981\u306A\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3\u3092\u9078\u629E\u3059\u308B\u3057\u304B\u306A\u304F\u3066\u3001\u624B\u52D5\u3067\u4FEE\u6B63\u3067\u304D\u307E\u305B\u3093\u3002\\u6761\u4EF6\u9078\u629E\u306FOPEN SQL\u6587\u6CD5\u3092\u63A1\u7528\u3057\u3066\u304A\u308A\u3001${abc}\u3092\u5165\u529B\u3057\u3066\u30D1\u30E9\u30E1\u30FC\u306B\u3067\u304D\u3001\u7528\u6CD5\u306F\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u3068\u540C\u69D8\u3067\u3059\u3002\n2.\u30AB\u30B9\u30BF\u30E0MDX\u30AF\u30A8\u30EA\:\n\u30AB\u30B9\u30BF\u30E0MDX\u30AF\u30A8\u30EA\u3092\u4F7F\u7528\u3059\u308B\u3068\u3001\u30AB\u30B9\u30BF\u30E0MDX\u6587\u6CD5\u304C\u5FC5\u8981\u306A\u7D50\u679C\u3092\u30AF\u30A8\u30EA\u3057\u307E\u3059\u3002\n\u6CE8\u610F\uFF0C\u30AB\u30B9\u30BF\u30E0MDX\u30AF\u30A8\u30EA\u30822\u3064\u306E\u8EF8\u306E\u30AF\u30A8\u30EA\u306B\u306E\u307F\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002\n{abc}\u3092\u5165\u529B\u3057\u3066\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u3067\u304D\u3001\u7528\u6CD5\u306F\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u3068\u540C\u69D8\u3067\u3059\u3002\nFineBI\u306ECube\u306FMDX\u30AF\u30A8\u30EA\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3002 FR-Designer_bold=\u592A\u5B57 FR-Designer_font=\u30D5\u30A9\u30F3\u30C8 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_Default=\u65E2\u5B9A FR-Designer-StyleAlignment_Layout_Image_Titled=\u4E26\u3079\u3066\u8868\u793A FR-Designer-StyleAlignment_Layout_Image_Extend=\u62E1\u5927\u8868\u793A -FR-Designer-StyleAlignment_Layout_Image_Adjust=\u81EA\u52D5\u9069\u5FDC +FR-Designer-StyleAlignment_Layout_Image_Adjust=\u8ABF\u6574\u8868\u793A 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=\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=\u63C3\u3048\u65B9\u5F0F +FR-Designer-StyleAlignment_Tooltips_DEFAULT=\u65E2\u5B9A +FR-Designer-StyleAlignment_Tooltips_Top=\u4E0A\u8A70\u3081 +FR-Designer-StyleAlignment_Tooltips_Bottom=\u4E0B\u8A70\u3081 +FR-Designer-StyleAlignment_Pane_Horizontal=\u6A2A\u4F4D\u7F6E +FR-Designer-StyleAlignment_Pane_Vertical=\u7E26\u4F4D\u7F6E +FR-Designer-StyleAlignment_Pane_Style=\u63C3\u3048 FR-Designer-StyleAlignment_Style_Indentation=\u30A4\u30F3\u30C7\u30F3\u30C8 FR-Designer-StyleAlignment_Style_Spacing=\u9593\u9694 FR-Designer-StyleAlignment_Style_Alignment=\u63C3\u3048 @@ -228,17 +228,17 @@ FR-Designer-Collect_Information_free=\u7121\u6599 FR-Designer-Collect_Information_Description=\u8AAC\u660E FR-Designer-Collect_Information_Successfully=\u53CE\u96C6\u6210\u529F FR-Designer_Event_Set=\u30A4\u30D9\u30F3\u30C8\u8A2D\u5B9A -FR-Designer_Blow_set=\u4EE5\u4E0B\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_Blow_set=\u4EE5\u4E0B\u8A2D\u5B9A +FR-Designer_I_Want_To_Set_Single=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u500B\u5225\u8A2D\u5B9A +FR-Designer_Using_Server_Report_View_Settings=\u30B5\u30FC\u30D0\u8A2D\u5B9A FR-Designer_ErrorHandlerTemplate=\u30A8\u30E9\u30FC\u60C5\u5831\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5B9A\u7FA9 FR-Designer_Save_Path=\u4FDD\u5B58\u30D1\u30B9 -FR-Designer_Chart_Acc_Set=\u7CBE\u78BA\u8A2D\u5B9A +FR-Designer_Chart_Acc_Set=\u500B\u5225\u8A2D\u5B9A FR-Designer_Gradient-Color=\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3 -FR-Designer_DEFAULT=\u30C7\u30D5\u30A9\u30EB\u30C8 -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_DEFAULT=\u65E2\u5B9A +FR-Designer_chart-PreStyle=\u30B0\u30E9\u30D5\u4E8B\u524D\u5B9A\u7FA9\u914D\u8272 +FR-Designer_Chart-PreStyle=\u30B0\u30E9\u30D5\u4E8B\u524D\u5B9A\u7FA9\u914D\u8272 +FR-Designer_Already_exist=\u73FE\u5728\u306E\u74B0\u5883\u306B\u306F\u5B58\u5728\u3057\u3066\u3044\u307E\u3059\: FR-Designer_Database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 FR-Designer_Model=\u30E2\u30FC\u30C9 FR-Designer_Refresh_Successfully=\u66F4\u65B0\u6210\u529F @@ -250,159 +250,159 @@ FR-Designer_FormulaD-Text=\u30C6\u30AD\u30B9\u30C8\u95A2\u6570 FR-Designer_FormulaD-Logical=\u30ED\u30B8\u30C3\u30AF\u95A2\u6570 FR-Designer_FormulaD-Array=\u914D\u5217\u95A2\u6570 FR-Designer_FormulaD-Report=\u5E33\u7968\u95A2\u6570 -FR-Designer_FormulaD-Other=\u305D\u306E\u4ED6\u95A2\u6570 -FR-Designer_FormulaD-All=\u5168\u3066\u306E\u95A2\u6570 +FR-Designer_FormulaD-Other=\u305D\u306E\u4ED6\u306E\u95A2\u6570 +FR-Designer_FormulaD-All=\u3059\u3079\u3066\u306E\u95A2\u6570 FR-Designer_Function=\u95A2\u6570 FR-Designer_Select=\u9078\u629E FR-Designer_Edit=\u7DE8\u96C6 FR-Designer_Description=\u8AAC\u660E -FR-Designer_Role_changed_isRefresh=\u30ED\u30FC\u30EB\u306F\u5909\u66F4\u3057\u307E\u3057\u305F\u304C\u3001\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5\u3092\u884C\u3044\u307E\u3059\u304B\uFF1F +FR-Designer_Role_changed_isRefresh=\u30ED\u30FC\u30EB\u3092\u5909\u66F4\u3057\u307E\u3057\u305F\u3001\u66F4\u65B0\u3057\u307E\u3059\u304B? FR-Designer_FS_Name=\u610F\u601D\u6C7A\u5B9A\u30B7\u30B9\u30C6\u30E0 FR-Designer_Datasource-Parameter=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u30D1\u30E9\u30E1\u30FC\u30BF FR-Designer_Tree-ComboBox=\u30D7\u30EB\u30C0\u30A6\u30F3\u30C4\u30EA\u30FC -FR-Designer_Form-Iframe=\u30A6\u30A7\u30D6\u30DA\u30FC\u30B8\u30DC\u30C3\u30AF\u30B9 +FR-Designer_Form-Iframe=\u30DA\u30FC\u30B8\u30DC\u30C3\u30AF\u30B9 FR-Designer_Type=\u30BF\u30A4\u30D7 -FR-Designer_User-defined=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA -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_User-defined=\u30AB\u30B9\u30BF\u30E0 +FR-Designer_Simple_general_forV6=\u4E00\u822C\u30AF\u30A8\u30EA(ECC 6\u4EE5\u4E0A\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306B\u9069\u7528) FR-Designer_Import=\u30A4\u30F3\u30DD\u30FC\u30C8 FR-Designer_Export=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 FR-Designer_Delete=\u524A\u9664 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=\u623B\u308B\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u540D +FR-Designer_Return_set_name=\u30BB\u30C3\u30C8\u3092\u623B\u3059 FR-Designer_Datatype=\u30C7\u30FC\u30BF\u30BF\u30A4\u30D7 FR-Designer_Corre_parameter=\u5BFE\u5FDC\u3059\u308B\u30D1\u30E9\u30E1\u30FC\u30BF -FR-Designer_Default_value=\u30D1\u30E9\u30E1\u30FC\u30BF\u30C7\u30D5\u30A9\u30EB\u30C8\u5024 +FR-Designer_Default_value=\u30D1\u30E9\u30E1\u30FC\u30BF\u65E2\u5B9A\u5024 FR-Designer_SAP_column_name=SAP\u5217\u540D FR-Designer_Table_name=\u30C6\u30FC\u30D6\u30EB\u540D FR-Designer_Columns_choosed=\u9078\u629E\u3057\u305F\u5217 -FR-Designer_Where_claus=\u30D5\u30A3\u30EB\u30BF\u30FC\u6761\u4EF6 +FR-Designer_Where_claus=\u30D5\u30A3\u30EB\u30BF\u6761\u4EF6 FR-Designer_PreStyle=\u4E8B\u524D\u5B9A\u7FA9\u30B9\u30BF\u30A4\u30EB -FR-Designer_Loading=\u30ED\u30FC\u30C7\u30A3\u30F3\u30B0... +FR-Designer_Loading=\u30ED\u30FC\u30C9\u4E2D FR-Designer_Table=\u30C6\u30FC\u30D6\u30EB -FR-Designer_Name=\u540D\u79F0 -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_Name=\u540D\u524D +FR-Designer_EmailPane-tips=\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u3092ABC\u3068\u3057\u305F\u3068\u304D\u306B\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u3068\u3057\u3066${ABC}\u304C\u8A2D\u5B9A\u3067\u304D\u307E\u3057\u305F\u3002\u540C\u69D8\u306B$ {today ()}\u3092\u5F0F\u3068\u3057\u3001\u30E1\u30FC\u30EB\u4EF6\u540D\u306B"$ {today ()}\u7D71\u8A08"\u3001\u5B9B\u5148\u306B"$ {p}, 123@gmail.com, mike "\u306A\u3069\u304C\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3002\u305F\u3060\u3057\u3001mike\u306F\u30E6\u30FC\u30B6\u30FC\u7BA1\u7406\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u306B\u3066\u4FDD\u5B58\u3055\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 FR-Designer_EmailPane-mailContent=\u30E1\u30FC\u30EB\u5185\u5BB9 FR-Designer_EmailPane-BCC=BCC FR-Designer_EmailPane-mailSubject=\u4EF6\u540D FR-Designer_EmailPane-warnings=\u610F\u601D\u6C7A\u5B9A\u30B7\u30B9\u30C6\u30E0\u306B\u9001\u4FE1\u7528\u30E1\u30FC\u30EB\u30DC\u30C3\u30AF\u30B9\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002 FR-Designer_Email_sentEmail=\u30E1\u30FC\u30EB\u9001\u4FE1 -FR-Designer_file-is-locked=\u9078\u629E\u3057\u305F\u5E33\u7968\u306F\u3001\u4ED6\u306E\u30E6\u30FC\u30B6\u30FC\u304C\u7DE8\u96C6\u3057\u3066\u3044\u307E\u3059\u3002\u66AB\u304F\u304A\u5F85\u3061\u4E0B\u3055\u3044\u3002 +FR-Designer_file-is-locked=\u9078\u629E\u3057\u305F\u5E33\u7968\u306F\u3001\u4ED6\u306E\u30E6\u30FC\u30B6\u30FC\u304C\u7DE8\u96C6\u3057\u3066\u3044\u307E\u3059\u3002\u3057\u3070\u3089\u304F\u304A\u5F85\u3061\u4E0B\u3055\u3044\u3002 FR-Designer_Custom_Icon_Message1=\u898F\u683C16\u00D716\u306EPNG\u753B\u50CF\u306E\u4F7F\u7528\u3092\u63A8\u5968 FR-Designer_Add=\u8FFD\u52A0 -FR-Designer_Custom_Icon_Message2=\u64CD\u4F5C\u306B\u4E0D\u9069\u5207\u306A\u6240\u304C\u898B\u3064\u304B\u308C\u307E\u3057\u305F +FR-Designer_Custom_Icon_Message2=\u64CD\u4F5C\u306B\u554F\u984C\u304C\u3042\u308A\u307E\u3059 FR-Designer_Tooltips=\u30D2\u30F3\u30C8 FR-Designer_Remove=\u524A\u9664 FR-Designer_Custom_Icon_SelectIcon=\u30A2\u30A4\u30B3\u30F3\u3092\u9078\u629E -FR-Designer_Click_this_button=\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30D1\u30B9\u9078\u629E\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_Click_this_button=\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30D1\u30B9\u9078\u629E\u3059\u308B +FR-Designer_Custom_Icon_Message3=\u30A2\u30A4\u30B3\u30F3\u540D\u306F\u65E2\u306B\u4F7F\u308F\u308C\u3066\u3044\u307E\u3059\u3002 +FR-Designer_Set_default_browser=\u65E2\u5B9A\u30D6\u30E9\u30A6\u30B6\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30A4\u30F3\u30BF\u30FC\u30CD\u30C3\u30C8\u30AA\u30D7\u30B7\u30E7\u30F3\u304B\u3089\u65E2\u5B9A\u30D6\u30E9\u30A6\u30B6\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002 FR-Designer_Open=\u958B\u304F -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_Utils-OpenDemoEnv=\u88FD\u54C1\u30C7\u30E2\u304C\u5229\u7528\u3067\u304D\u306A\u3044\u5834\u5408\u3001\u81EA\u52D5\u3067\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u5207\u308A\u66FF\u3048\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +FR-Designer_Utils-switch=\n\u4FDD\u5B58\u3055\u308C\u3066\u3044\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u306F\u73FE\u5728\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u4FDD\u5B58\u3055\u308C\u307E\u3059\u3002\n\u7D9A\u3051\u307E\u3059\u304B? +FR-Designer_Utils-NewDemoEnv=\u88FD\u54C1\u30C7\u30E2\u304C\u5229\u7528\u3067\u304D\u306A\u3044\u5834\u5408\u3001\u81EA\u52D5\u3067\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u65B0\u898F\u4F5C\u6210\u3057\u307E\u3059\: FR-Designer_Save_As_Global_Style=\u30B0\u30ED\u30FC\u30D0\u30EB\u30B9\u30BF\u30A4\u30EB\u3068\u3057\u3066\u4FDD\u5B58 -FR-Designer_Input_The_Name_Of_Gloabel_Style=\u4FDD\u5B58\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_Input_The_Name_Of_Gloabel_Style=\u4FDD\u5B58\u3057\u3066\u3044\u308B\u30B0\u30ED\u30FC\u30D0\u30EB\u30B9\u30BF\u30A4\u30EB\u540D\u3092\u5165\u529B +FR-Designer_This_Name_Has_Exsit=\u3053\u306E\u540D\u524D\u306F\u65E2\u306B\u3042\u308A\u307E\u3059 FR-Designer_Shortcut_Set=\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC\u8A2D\u5B9A -FR-Designer_Feature_Name=\u6A5F\u80FD\u540D\u79F0\uFF1A +FR-Designer_Feature_Name=\u6A5F\u80FD\u540D\: FR-Designer_Cursor_to_next_column=\u30AB\u30FC\u30BD\u30EB\u3092\u6B21\u306E\u5217\u3078\u79FB\u52D5 FR-Designer_Cursor_to_next_row=\u30AB\u30FC\u30BD\u30EB\u3092\u6B21\u306E\u884C\u3078\u79FB\u52D5 -FR-Designer_Current_keys=\u73FE\u5728\u306E\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC\uFF1A +FR-Designer_Current_keys=\u73FE\u5728\u306E\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC\: FR-Designer_Exchange_key=\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC\u3092\u5207\u308A\u66FF\u3048 -FR-Designer_System_default=\u30B7\u30B9\u30C6\u30E0\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u3059\u308B -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\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_System_default=\u30B7\u30B9\u30C6\u30E0\u65E2\u5B9A +FR-Designer_Cursor_to_previous_column=\u30AB\u30FC\u30BD\u30EB\u3092\u524D\u306E\u5217\u3078\u79FB\u52D5\: +FR-Designer_Cursor_to_previous_row=\u30AB\u30FC\u30BD\u30EB\u3092\u524D\u306E\u884C\u3078\u79FB\u52D5\: +FR-Designer_Are_You_Sure_To_Delete_The_Data=\u9078\u629E\u3057\u305F\u30C7\u30FC\u30BF\u3092\u524A\u9664\u3057\u307E\u3059\u304B? +FR-Designer_Show_Icon=\u30DC\u30BF\u30F3\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A +FR-Designer_Show_Text=\u30DC\u30BF\u30F3\u540D\u8868\u793A +FR-Designer_User_Defined_Event=\u30AB\u30B9\u30BF\u30E0\u30A4\u30D9\u30F3\u30C8 +FR-Designer_Output_PDF=PDF\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +FR-Designer_Output_Word=Word\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 FR-Designer_Image=\u753B\u50CF FR-Designer_Flash_Print=Flash\u5370\u5237 FR-Designer_PDF_Print=PDF\u5370\u5237 -FR-Designer_Applet_Print=\u30A2\u30D7\u30EC\u30C3\u30C8\u5370\u5237 +FR-Designer_Applet_Print=Applet\u5370\u5237 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=iframe\u306B\u57CB\u3081\u8FBC\u3080\u6642\u81EA\u52D5\u30BA\u30FC\u30E0 +FR-Designer_IS_Auto_Scale=iframe\u57CB\u3081\u8FBC\u307F\u6642\u81EA\u52D5\u30BA\u30FC\u30E0 FR-Designer_IS_TD_HEAVY_EXPORT=\u30D8\u30D3\u30FC\u30E2\u30FC\u30C9\u3067\u30BB\u30EB\u3092\u51FA\u529B FR-Designer_Top=\u4E0A FR-Designer_Bottom=\u4E0B -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-Collect_OSXTips=\u30D2\u30F3\u30C8\:"CTRL + V"\u3067\u3001\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u30B3\u30FC\u30C9\u3092\u8CBC\u308A\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u3002 FR-Designer_X_Coordinate=\u6A2A\u5EA7\u6A19 FR-Designer_Y_Coordinate=\u7E26\u5EA7\u6A19 -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_Widget_Width=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5E45 +FR-Designer_Widget_Height=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u9AD8\u3055 FR-Designer_Min_Height=\u6700\u5C0F\u9AD8\u3055 FR-Designer_LeftParent=\u5DE6\u89AA\u30BB\u30EB -FR-Designer-PluginLicense_Check_Failed=\u30D7\u30E9\u30B0\u30A4\u30F3\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-PluginLicense_Check_Failed=\u30D7\u30E9\u30B0\u30A4\u30F3\u8A8D\u8A3C\u30D5\u30A1\u30A4\u30EB\u306E\u671F\u9650\u304C\u5207\u308C\u3066\u3044\u307E\u3059\u3001\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u3057\u3066\u304F\u3060\u3055\u3044 FR-Designer-File_address=\u30D5\u30A1\u30A4\u30EB\u30A2\u30C9\u30EC\u30B9 FR-Designer-Local_file=\u30ED\u30FC\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB FR-Designer_Selection=\u9078\u629E -FR-Designer-Type_Parameter= ${abc}\u3092\u5165\u529B\u3057\u3066\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\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-Type_Parameter= ${abc}\u3092\u5165\u529B\u3057\u3066\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u3067\u304D\u307E\u3059\u3002
 \u3053\u3053\u3067abc\u306F\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u3067\u3059\u3002\u4F8B\u3048\u3070\:
+FR-Designer_Add_JS_warning=\u4F8B\u306B\u793A\u3059\u3088\u3046\u306A\u6B63\u3057\u3044URL\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044! FR-Designer-Encoding_Type=\u30A8\u30F3\u30B3\u30FC\u30C9\u30BF\u30A4\u30D7 -FR-Designer-FirstRow_IS_ColumnName=\u7B2C\u4E00\u884C\u306F\u5217\u30BF\u30A4\u30C8\u30EB\u3092\u542B\u307F\u307E\u3059 -FR-Designer_Dismenber=\u533A\u5207\u308A\u7B26 +FR-Designer-FirstRow_IS_ColumnName=\u7B2C1\u884C\u306F\u5217\u30BF\u30A4\u30C8\u30EB\u3092\u542B\u307F\u307E\u3059 +FR-Designer_Dismenber=\u533A\u5207\u308A\u6587\u5B57 FR-Designer_TableDismember=\u30BF\u30D6\u6587\u5B57 FR-Designer_Space=\u30B9\u30DA\u30FC\u30B9 -FR-Designer_CommaDismenber=\u30B3\u30F3\u30DE +FR-Designer_CommaDismenber=\u30AB\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-Series_Dismenber_As_Single=\u9023\u7D9A\u3057\u305F\u6587\u5B57\u306F1\u6587\u5B57\u3068\u3057\u3066\u6271\u3046 FR-Designer_KeyPoint=\u30AD\u30FC\u30CE\u30FC\u30C9 -FR-Designer_loadedTreeModel=\u30ED\u30FC\u30C9\u5931\u6557\u3001\u78BA\u8A8D\u5F8C\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_loadedTreeModel=\u30ED\u30FC\u30C9\u5931\u6557\u3001\u78BA\u8A8D\u5F8C\u306B\u518D\u5EA6\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +FR-Designer-Failed_to_load_the_plugin=\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u30ED\u30FC\u30C9\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3001\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u66F4\u65B0\u3057\u3066\u304F\u3060\u3055\u3044\: FR-Designer_XMLA_Database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 -FR-Designer_XMLA_UserName=\u30E6\u30FC\u30B6\u540D +FR-Designer_XMLA_UserName=\u30E6\u30FC\u30B6\u30FC\u540D FR-Designer_XMLA_Password=\u30D1\u30B9\u30EF\u30FC\u30C9 -FR-Designer_XMLA_Get_Catalog=\u30AB\u30BF\u30ED\u30B0\u3092\u30ED\u30FC\u30C9\u3057\u3066\u3044\u307E\u3059... +FR-Designer_XMLA_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=\u6570\u5F0F -FR-Designer_LiteCondition_ConditionB-AND=\u3068(AND) +FR-Designer_LiteCondition_ConditionB-AND=\u304B\u3064(AND) FR-Designer_LiteCondition_ConditionB-OR=\u307E\u305F\u306F(OR) -FR-Designer_LiteCondition_Common_Condition=\u666E\u901A\u6761\u4EF6 +FR-Designer_LiteCondition_Common_Condition=\u4E00\u822C\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=\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_Select_All=\u3059\u3079\u3066\u9078\u629E +FR-Designer-Plugin_Expire_Dialog_Title=\u671F\u9650\u5207\u308C\u306E\u30D7\u30E9\u30B0\u30A4\u30F3 +FR-Designer-Plugin_Expire_Dialog_Text=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u671F\u9650\u5207\u308C\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3001\u30D5\u30A1\u30F3\u30E9\u30F3\u30A2\u30D7\u30EA\u30BB\u30F3\u30BF\u30FC\u3067\u8CFC\u5165\u3057\u3066\u304F\u3060\u3055\u3044\u3002 FR-Designer-Plugin_Finerest_Addon=\u30D5\u30A1\u30F3\u30E9\u30F3\u30A2\u30D7\u30EA\u30BB\u30F3\u30BF\u30FC FR-Designer_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_General=\u4E00\u822C 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\u53C2\u52A0\u3057\u307E\u3059 +FR-Designer_Join_Product_improve=\u88FD\u54C1\u6539\u5584\u30D7\u30E9\u30F3\u306B\u53C2\u52A0 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=\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_max_undo_limit=\u5143\u306B\u623B\u3059\u306E\u6700\u5927\u56DE\u6570 +FR-Designer_Surport_String_To_Formula=\u6570\u5F0F\u3067\u306E\u6587\u5B57\u5217\u7DE8\u96C6\u3092\u30B5\u30DD\u30FC\u30C8 +FR-Designer_Always=\u65E2\u5B9A\u64CD\u4F5C FR-Designer_Export_Setting=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u8A2D\u5B9A -FR-Designer_Select_Export_Log_Directory=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u76EE\u6B21\u3092\u9078\u629E +FR-Designer_Select_Export_Log_Directory=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u30D5\u30A9\u30EB\u30C0\u30FC\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\u3067\u6709\u52B9 +FR-Designer_Work_After_Restart_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u518D\u8D77\u52D5\u5F8C\u6709\u52B9 FR-Designer_Setting-Ruler-Units=\u30EB\u30FC\u30E9\u30FC\u5358\u4F4D\u8A2D\u5B9A -FR-Designer_PageSetup-mm=\u30DF\u30EA\u30E1\u30FC\u30C8\u30EB +FR-Designer_PageSetup-mm=\u30DF\u30EA 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=\u5168\u3066\u306E\u30C6\u30FC\u30D6\u30EB +FR-Designer_Web_Preview_Port=\u30DD\u30FC\u30C8 +FR-Designer_Oracle_All_Tables=\u3059\u3079\u3066\u306E\u30C6\u30FC\u30D6\u30EB FR-Designer_Unit_PT=\u30DD\u30F3\u30C9 -FR-Designer-Write_Auto_Stash=\u30AA\u30FC\u30C8\u30B9\u30AF\u30E9\u30C3\u30C1 -FR-Designer_Event_ShowWidgets=\u76F4\u63A5\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u8868\u793A +FR-Designer-Write_Auto_Stash=\u81EA\u52D5\u4E00\u6642\u9000\u907F +FR-Designer_Event_ShowWidgets=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u76F4\u63A5\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 @@ -410,9 +410,9 @@ FR-Designer-Website_Url=http\://www.finereport.com/jp FR-Designer_formDesignerModule=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30C7\u30B6\u30A4\u30CA\u30FC FR-Designer-BBSLogin_Login-Title=BBS\u30ED\u30B0\u30A4\u30F3 FR-Designer_Get-CubeGetting=cube\u3092\u53D6\u5F97 -FR-Designer-BBSLogin_Download-Unlogin-Tip=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u524D\u306B\u5148\u305A\u306F\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +FR-Designer-BBSLogin_Download-Unlogin-Tip=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u524D\u306B\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u304F\u3060\u3055\u3044\u3002 FR-Designer-App_ReLayout=\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u30EC\u30A4\u30A2\u30A6\u30C8 -FR-Designer_Mobile-Attr=\u30E2\u30D0\u30A4\u30EB\u7AEF\u672B\u30D7\u30ED\u30D1\u30C6\u30A3 +FR-Designer_Mobile-Attr=\u30E2\u30D0\u30A4\u30EB\u7AEF\u672B\u5C5E\u6027 FR-Designer_Mobile-Vertical=\u7E26 FR-Designer_Mobile-Horizontal=\u6A2A FR-Designer_Mobile-Zoom=\u5E33\u7968\u30BA\u30FC\u30E0 @@ -426,54 +426,54 @@ 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=\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_Write-Save-Formula=\u6570\u5F0F\u4FDD\u6301(\u66F8\u304D\u8FBC\u307F/\u30C7\u30FC\u30BF\u5206\u6790) +FR-Designer_Export-Save-Formula=\u6570\u5F0F\u4FDD\u6301(\u7DE8\u96C6/\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8) +FR-Designer_Attention=\u6CE8\u610F FR-Designer_Forbid_Widgets_Intersects=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u91CD\u306A\u308A\u7981\u6B62 -FR-Designer_Widget_Scaling_Mode_Fit=\u9069\u5FDC\u30A8\u30EA\u30A2 -FR-Designer_Widget_Scaling_Mode_Fixed=\u56FA\u5B9A\u30B5\u30A4\u30BA +FR-Designer_Widget_Scaling_Mode_Fit=\u30B5\u30A4\u30BA\u8ABF\u6574 +FR-Designer_Widget_Scaling_Mode_Fixed=\u30B5\u30A4\u30BA\u56FA\u5B9A FR-Designer-Widget_Area_Scaling=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u30A8\u30EA\u30A2\u30BA\u30FC\u30E0 -FR-Designer-QQLogin-Determine=\u78BA\u3000\u5B9A +FR-Designer-QQLogin-Determine=\u78BA\u5B9A FR-Designer-QQLogin-Cancel=\u30AD\u30E3\u30F3\u30BB\u30EB FR-Designer-Reuse_Manager=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u7BA1\u7406 FR-Designer_Layout_Block_Absolute=\u7D76\u5BFE\u30AD\u30E3\u30F3\u30D0\u30B9\u30D6\u30ED\u30C3\u30AF FR-Designer_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_Attr_Layout_Type=\u30EC\u30A4\u30A2\u30A6\u30C8\u65B9\u6CD5 +FR-Designer_Attr_Bidirectional_Adaptive=\u4E21\u65B9\u5411\u81EA\u52D5\u8ABF\u6574 FR-Designer_Download_Template=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9 FR-Designer-Widget_Scaling_Mode=\u30BA\u30FC\u30E0\u30ED\u30B8\u30C3\u30AF FR-Designer_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\u4EFB\u610F\u306E\u4F4D\u7F6E\u306B\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u8FFD\u52A0\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002 +FR-Designer_WLayout-Absolute-ToolTips=\u81EA\u7531\u5F0F\u8A2D\u5B9A\u3067\u3059\u3002\u4EFB\u610F\u306E\u4F4D\u7F6E\u306B\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u8FFD\u52A0\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002 FR-Designer_Add_all=\u3059\u3079\u3066\u8FFD\u52A0 FR-Designer_Language_Change_Successful=\u65B0\u3057\u3044\u8A00\u8A9E\u306F\u518D\u8D77\u52D5\u5F8C\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002 -FR-Designer_Template_Web_Attributes=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8WEB\u30D7\u30ED\u30D1\u30C6\u30A3 +FR-Designer_Template_Web_Attributes=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8Web\u5C5E\u6027 FR-Designer_Basic=\u57FA\u672C -FR-Designer_Printers(Server)=\u30D7\u30EA\u30F3\u30BF\u30FC(\u30B5\u30FC\u30D0) -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_Printers(Server)=\u30D7\u30EA\u30F3\u30BF(\u30B5\u30FC\u30D0) +FR-Designer_Pagination_Setting=\u30DA\u30FC\u30B8\u5225\u30D7\u30EC\u30D3\u30E5\u30FC\u8A2D\u5B9A +FR-Designer_Write_Setting=\u66F8\u304D\u8FBC\u307F\u30DA\u30FC\u30B8\u8A2D\u5B9A FR-Designer_Data_Analysis_Settings=\u30C7\u30FC\u30BF\u5206\u6790\u8A2D\u5B9A FR-Designer_Browser_Background=\u30D6\u30E9\u30A6\u30B6\u80CC\u666F -FR-Designer_Import_Css=Css\u5F15\u7528 -FR-Designer_Import_JavaScript=JavaScript\u5F15\u7528 -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_Import_Css=Css\u53C2\u7167 +FR-Designer_Import_JavaScript=JavaScript\u53C2\u7167 +FR-Designer-Datasource-Param_DES=  "${abc}"\u3092\u5165\u529B\u3057\u3066\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u3067\u304D\u307E\u3059\u3002\u3053\u3053\u3067abc\u306F\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u3067\u3059\u3002\u4F8B\u3048\u3070
 select * from table where id\=${abc}\u3002
 select * from table where id\='${abc}'\u3002(\u3082\u3057id\u306F\u6587\u5B57\u5217\u306A\u3089)\uFFFD FR-Designer-DS-Database_Query=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30AF\u30A8\u30EA -FR-Designer-LayerPageReport_PageQuery=\u30DA\u30FC\u30B8\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-LayerPageReport_PageQuery=\u30DA\u30FC\u30B8\u5225\u30AF\u30A8\u30EA +FR-Designer-LayerPageReport_Define_PageQuerySQL=\u5B9A\u7FA9\u30DA\u30FC\u30B8\u5225\u30AF\u30A8\u30EASQL +FR-Designer_Is_Share_DBTableData=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u5171\u6709 FR-Designer_Event=\u30A4\u30D9\u30F3\u30C8 -FR-Designer_Properties=\u30D7\u30ED\u30D1\u30C6\u30A3 +FR-Designer_Properties=\u5C5E\u6027 FR-Designer_Permissions_Edition=\u6A29\u9650\u7DE8\u96C6 -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\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\u3000\u5B9A +FR-Designer_Export_Excel_Page=\u30DA\u30FC\u30B8\u5225\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +FR-Designer_Export_Excel_Simple=\u6A19\u6E96\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +FR-Designer_Export_Excel_PageToSheet=1\u30DA\u30FC\u30B81\u30B7\u30FC\u30C8\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +FR-Designer_Export_failed=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u306B\u5931\u6557\u3057\u307E\u3057\u305F +FR-Designer_Exported_successfully=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u6210\u529F +FR-Designer_Exporting=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u3059 +FR-Designer_Export-PDF=PDF\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +FR-Designer_Button_OK=OK FR-Designer_Button_Cancel=\u30AD\u30E3\u30F3\u30BB\u30EB FR-Designer_JavaScript=JavaScript FR-Designer_JavaScript_Form_Submit=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u66F8\u304D\u8FBC\u307F @@ -484,18 +484,18 @@ FR-Designer_Event_Name=\u30A4\u30D9\u30F3\u30C8\u540D FR-Designer_Event_Type=\u30A4\u30D9\u30F3\u30C8\u30BF\u30A4\u30D7 FR-Designer_Event_Name_Type=\u30A4\u30D9\u30F3\u30C8\u540D\u3068\u30BF\u30A4\u30D7 FR-Designer_JavaScript_Set=JS\u8A2D\u5B9A -FR-Designer_Attribute=\u30D7\u30ED\u30D1\u30C6\u30A3 +FR-Designer_Attribute=\u5C5E\u6027 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_Form_Basic_Properties=\u57FA\u672C\u5C5E\u6027 FR-Designer_DS_Dictionary=\u30C7\u30FC\u30BF\u8F9E\u66F8 -FR-Designer_Create_Tree=\u30C4\u30EA\u30FC\u3092\u69CB\u7BC9 +FR-Designer_Create_Tree=\u30C4\u30EA\u30FC\u69CB\u7BC9 FR-Designer_Set_Callback_Function=\u30B3\u30FC\u30EB\u30D0\u30C3\u30AF\u95A2\u6570\u8A2D\u5B9A -FR-Designer_ConfirmDialog_Content=tab\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u524A\u9664\u3057\u307E\u3059\u304B +FR-Designer_ConfirmDialog_Content=\u30BF\u30D6\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\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_Tips=\u30D2\u30F3\u30C8\:B1\u3092\u5165\u529B\u3059\u308B\u3068\u3001\u30BB\u30EBB1\u306E\u30C7\u30FC\u30BF\u3092\u53C2\u7167\u3067\u304D\u307E\u3059\u3002 FR-Designer_FormulaPane_Variables=\u5909\u6570 FR-Designer_FormulaPane_Formula_Description=\u6570\u5F0F\u8AAC\u660E -FR-Designer_FormulaPane_Function_Detail=\u95A2\u6570\u660E\u7D30 +FR-Designer_FormulaPane_Function_Detail=\u95A2\u6570\u8A73\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 @@ -503,61 +503,61 @@ FR-Designer_carouselInterval=\u30AB\u30EB\u30FC\u30BB\u30EB\u9593\u9694 FR-Designer_ClassName_panel=\u30AF\u30E9\u30B9\u540D FR-Designer_Description_panel=\u8AAC\u660E FR-Designer_Edit_panel=\u7DE8\u96C6 -FR-Designer_Property_panel=\u30D7\u30ED\u30D1\u30C6\u30A3 +FR-Designer_Property_panel=\u5C5E\u6027 FR-Designer_Select_panel=\u9078\u629E FR-Designer_LayoutTable_Column_Width=160 -FR-Designer_Set_BG_Of_Current_Row=\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_Set_BG_Of_Current_Row=\u7DE8\u96C6\u884C\u80CC\u666F\u8A2D\u5B9A +FR-Designer_Unload_Check=\u672A\u63D0\u51FA\u6642\u6CE8\u610F +FR-Designer_ReportColumns_Columns_Optional=\u6BB5\u7D44\u307F FR-Designer_Row_Icon_File_Name=row.png -FR-Designer_Center_Display=\u4E2D\u592E\u63C3\u3048\u8868\u793A -FR-Designer_Left_Display=\u5DE6\u8868\u793A +FR-Designer_Center_Display=\u4E2D\u592E\u63C3\u3048 +FR-Designer_Left_Display=\u5DE6\u8A70\u3081 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\u3092\u8A31\u3059 +FR-Designer_Service_Phone=\u30B5\u30FC\u30D3\u30B9\u96FB\u8A71\: +FR-Designer_Allow_Null=\u7A7A\u6B04\u3092\u8A31\u53EF FR-Designer_PageSetup_Page=\u30DA\u30FC\u30B8 FR-Designer_Custom_Job_Description=\u8AAC\u660E -FR-Designer_Property=\u30D7\u30ED\u30D1\u30C6\u30A3 +FR-Designer_Property=\u5C5E\u6027 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_Polyblock_Edit=\u30D6\u30ED\u30C3\u30AF\u5E33\u7968\u7DE8\u96C6 +FR-Designer_Function_Description_Area_Text=\u3053\u306E\u30AF\u30E9\u30B9\u306F"com.fr.script.AbstractFunction"\u3092\u7D99\u627F\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u30B3\u30F3\u30D1\u30A4\u30EB\u5F8C\u306E\u30AF\u30E9\u30B9\u30D5\u30A1\u30A4\u30EB\u3092\nJ2EE\u30B5\u30FC\u30D0 "{R1}" \u30D5\u30A9\u30EB\u30C0\u30FC\u306B\u30B3\u30D4\u30FC\u3057\u304F\u3060\u3055\u3044\u3002\u7BA1\u7406\u306E\u305F\u3081Class\u306B\u5BFE\u5FDC\u3059\u308Bjava\u30D5\u30A1\u30A4\u30EB\u3082\u5F53\u30D5\u30A9\u30EB\u30C0\u30FC\u306B\u7F6E\u3044\u3066\u304F\u3060\u3055\u3044\u3002\n\u4F8B\u3048\u3070\:{R2} FR-Designer_PageSetup_Horizontal=\u6A2A\u65B9\u5411 FR-Designer_PageSetup_Vertical=\u7E26\u65B9\u5411 -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_Gradient_Direction=\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3\u65B9\u5411 +FR-Designer_Drag_To_Select_Gradient=\u4E0B\u306E\u30DC\u30BF\u30F3\u306E\u30C9\u30E9\u30C3\u30B0\u3067\u7BC4\u56F2\u306E\u6307\u5B9A\u3001\u30AF\u30EA\u30C3\u30AF\u3067\u8272\u3092\u9078\u629E\u3057\u307E\u3059\u3002 FR-Designer_Display_Value=\u8868\u793A\u5024 -FR-Designer_Actual_Value=\u5B9F\u969B\u5024 +FR-Designer_Actual_Value=\u5B9F\u969B\u306E\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\u30672\u9032\u6CD5\u306E\u5185\u5BB9\u3092\u8868\u793A\u3059\u308B +FR-Designer_Show_As_Download=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30EA\u30F3\u30AF\u3067\u30D0\u30A4\u30CA\u30EA\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u8868\u793A FR-Designer_File_Name_For_Download=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30D5\u30A1\u30A4\u30EB\u540D -FR-Designer_No=\u3044\u3044\u3048 -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_No=\u306A\u3057 +FR-Designer_Pagination=\u6539\u30DA\u30FC\u30B8 +FR-Designer-Move_Tab_First=\u5148\u982D\u30BF\u30D6\u306B\u79FB\u52D5 +FR-Designer-Move_Tab_End=\u6700\u7D42\u30BF\u30D6\u306B\u79FB\u52D5 +FR-Designer-Move_Tab_Next=\u6B21\u306E\u30BF\u30D6\u306B\u79FB\u52D5 +FR-Designer-Move_Tab_Prev=\u524D\u306E\u30BF\u30D6\u306B\u79FB\u52D5 FR-Designer_DS_TableData=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 FR-Designer_Parameter-Formula=\u6570\u5F0F FR-Designer_Background_Null=\u80CC\u666F\u306A\u3057 FR-Designer_Background_Color=\u80CC\u666F\u8272 FR-Designer_Background_Texture=\u30C6\u30AF\u30B9\u30C1\u30E3 FR-Designer_Background_Pattern=\u30D1\u30BF\u30FC\u30F3 -FR-Designer_Background_Gradient_Color=\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3 -FR-Designer_Background_Image=\u753B\u50CF\u9078\u629E +FR-Designer_Background_Gradient_Color=\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3\u8272 +FR-Designer_Background_Image=\u753B\u50CF FR-Designer_Background_Clear=\u30AF\u30EA\u30A2 FR-Designer_Background_Image_Select=\u753B\u50CF\u9078\u629E FR-Designer_Initial_Background_Tips=\u30DC\u30BF\u30F3\u306E\u521D\u671F\u80CC\u666F -FR-Designer_Mouse_Move_Tips=\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=\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 +FR-Designer_Mouse_Move_Tips=\u30DE\u30A6\u30B9\u304C\u30DC\u30BF\u30F3\u4E0A\u3092\u79FB\u52D5\u3059\u308B\u6642\u306E\u80CC\u666F +FR-Designer_Too_Large_To_Paste=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30B5\u30A4\u30BA\u304C\u5883\u754C\u3092\u8D8A\u3048\u308B\u305F\u3081\u3001\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\u3002 +FR-Designer_Too_Small_To_Paste=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30B5\u30A4\u30BA\u304C\u9AD8\u3059\u304E\u308B\u305F\u3081\u3001\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\u3002 +FR-Designer_Mouse_Click_Tips=\u30DE\u30A6\u30B9\u304C\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u6642\u306E\u80CC\u666F +FR-Designer_Plugin_Should_Update_Please_Contact_Developer=\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u4F4E\u3044\u305F\u3081\u3001API\u306B\u4E0D\u5177\u5408\u304C\u3042\u308A\u307E\u3059\u3002\u958B\u767A\u8005\u3068\u9023\u7D61\u3057\u3066\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u66F4\u65B0\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +FR-Designer_AxisReversed=\u8EF8\u3092\u53CD\u8EE2\u3059\u308B +FR-Designer_Logarithmic=\u5BFE\u6570\u76EE\u76DB +FR-Designer_Chart_Log_Base=\u57FA\u6570 FR-Designer_Chart_F_Radar_Axis=\u5782\u76F4\u8EF8 FR-Designer_Style=\u30B9\u30BF\u30A4\u30EB FR-Designer_Color=\u8272 @@ -567,57 +567,57 @@ FR-Designer_Printer_Native_Button=\u30ED\u30FC\u30AB\u30EB\u5370\u5237 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_Button-OK=OK 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_Mobile_Form_Analysis_Annotation=\u8AAC\u660E\:\u3053\u306E\u8A2D\u5B9A\u3088\u308A\u3001\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30A2\u30D7\u30EA\u306E\u89E3\u6790\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3002 FR-Designer-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\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_Form-Forzen-Speed=\u3001\u305D\u3057\u3066\u6A2A\u65B9\u5411\u81EA\u5DF1\u8ABF\u6574\u307E\u305F\u306F\u4E21\u65B9\u5411\u81EA\u52D5\u8ABF\u6574\u3092\u5229\u7528\u3057\u3001\u5E33\u7968\u8868\u793A\u306E\u30B9\u30D4\u30FC\u30C9\u3092\u4E0A\u3052\u3067\u304D\u307E\u3059\u3002 +FR-Designer_Properties_Mobile=\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u5C5E\u6027 +FR-Designer_AllCategories=\u3059\u3079\u3066\u306E\u30AB\u30C6\u30B4\u30EA +FR-Designer-Selected_Widget=\u9078\u629E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 +FR-Designer_SimpleCross_Report=\u7C21\u6613\u30AF\u30ED\u30B9\u5E33\u7968 FR-Designer_Log=\u30ED\u30B0 -FR-Designer_Form-Fit-Tip=\u81EA\u52D5\u9069\u5FDC\u30D7\u30E9\u30B0\u30A4\u30F3 +FR-Designer_Form-Fit-Tip=\u81EA\u52D5\u8ABF\u6574\u30D7\u30E9\u30B0\u30A4\u30F3 FR-Designer_Button-Cancel=\u53D6\u308A\u6D88\u3057 FR-Designer_LocalWidget=\u30ED\u30FC\u30AB\u30EB\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u30E9\u30A4\u30D6\u30E9\u30EA FR-Designer_Alert=\u30A2\u30E9\u30FC\u30C8 -FR-Designer_TableData-Default-Para=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF +FR-Designer_TableData-Default-Para=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306E\u65E2\u5B9A\u30D1\u30E9\u30E1\u30FC\u30BF FR-Designer_Edit_Button_ToolBar=\u30DC\u30BF\u30F3\u306E\u30C4\u30FC\u30EB\u30D0\u30FC\u3092\u7DE8\u96C6 -FR-Designer-Plugin_Please_Update_Jar=jar\u30D1\u30C3\u30AF\u3092\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3057\u3066\u304F\u3060\u3055\u3044 -FR-Designer_Form-Frozen-Tip=\u30D5\u30EA\u30FC\u30BA\u3092\u4F7F\u3046\u6642\u3001\u5F8C\u8A18\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3066\u304F\u3060\u3055\u3044\uFF1A +FR-Designer-Plugin_Please_Update_Jar=Jar\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3057\u3066\u304F\u3060\u3055\u3044 +FR-Designer_Form-Frozen-Tip=\u30D5\u30EA\u30FC\u30BA\u3092\u4F7F\u3046\u6642\u3001\u5F8C\u8A18\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3066\u304F\u3060\u3055\u3044\: FR-Designer_Remove_Button_ToolBar=\u30DC\u30BF\u30F3\u306E\u30C4\u30FC\u30EB\u30D0\u30FC\u3092\u524A\u9664 FR-Designer_Normal=\u6B63\u5E38 FR-Designer_Install_Template=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB FR-Designer_Copy=\u30B3\u30D4\u30FC -FR-Designer_Allow-Blank=\u7A7A\u306B\u8A31\u3059 -FR-Designer_Clear_All=\u5168\u3066\u3092\u30AF\u30EA\u30A2 +FR-Designer_Allow-Blank=\u7A7A\u6B04\u3092\u8A31\u53EF +FR-Designer_Clear_All=\u3059\u3079\u3066\u30AF\u30EA\u30A2 FR-Designer_Delete_Template=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u524A\u9664 -FR-Designer_Mobile_Report_Analysis_Annotation=\u8AAC\u660E\:\u8A72\u5F53\u5C5E\u6027\u3088\u308A\u3001\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u30A2\u30D7\u30EA\u3067\u306E\u89E3\u6790\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3001\u9801\u5206\u3051\u30D7\u30EC\u30D3\u30E5\u30FC\u3060\u3051\u3092\u652F\u6301\u3001\u66F8\u304D\u8FBC\u307F\u306B\u8A2D\u5B9A\u3059\u308B\u6642\u7121\u52B9\u306B\u306A\u308A\u307E\u3059\u3002 -FR-Designer_DoubleLayer_Report=\u4E8C\u968E\u30BF\u30A4\u30C8\u30EB +FR-Designer_Mobile_Report_Analysis_Annotation=\u8AAC\u660E\:\u8A72\u5F53\u5C5E\u6027\u3088\u308A\u3001\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u30A2\u30D7\u30EA\u3067\u306E\u89E3\u6790\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3001\u30DA\u30FC\u30B8\u5225\u30D7\u30EC\u30D3\u30E5\u30FC\u3060\u3051\u5BFE\u5FDC\u3001\u66F8\u304D\u8FBC\u307F\u30D7\u30EC\u30D3\u30E5\u30FC\u6642\u7121\u52B9\u306B\u306A\u308A\u307E\u3059\u3002 +FR-Designer_DoubleLayer_Report=2\u968E\u30BF\u30A4\u30C8\u30EB FR-Designer_Validate=\u691C\u8A3C -CellWrite-InsertRow_NULL=\u30CC\u30EB +CellWrite-InsertRow_NULL=\u7A7A\u6B04 DashBoard-ChartFloat=\u30B0\u30E9\u30D5 -contact_info=\u304A\u554F\u3044\u5408\u308F\u305B\u60C5\u5831\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09 +contact_info=\u304A\u554F\u3044\u5408\u308F\u305B\u60C5\u5831 Page_Setup=\u30DA\u30FC\u30B8\u8A2D\u5B9A -CellWrite-Print_Export=\u5370\u5237\u3068\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +CellWrite-Print_Export=\u5370\u5237\u51FA\u529B Cannot_Get_Date=\u65E5\u4ED8\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093 -FR-Designer_Modify=\u4FEE\u6B63 +FR-Designer_Modify=\u5909\u66F4 M-Write_Preview=\u66F8\u304D\u8FBC\u307F\u30D7\u30EC\u30D3\u30E5\u30FC -FR-Base_RWA-Key=\u30E1\u30A4\u30F3\u30AD\u30FC +FR-Base_RWA-Key=\u4E3B\u30AD\u30FC China=\u4E2D\u56FD -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\u307E\u3060\u751F\u6210\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +Set_Legend_Sytle=\u51E1\u4F8B\u66F8\u5F0F\u8A2D\u5B9A +FR-Designer_Number=\u6570\u5024 +FR-Designer-Widget-Style_Common=\u4E00\u822C +M-Save_As=\u540D\u524D\u3092\u4ED8\u3051\u3066\u4FDD\u5B58 +Following_parameters_are_not_generated=\u4EE5\u4E0B\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u306F\u4F5C\u6210\u3055\u308C\u307E\u305B\u3093 FR-Designer-Basic_Activation_Key_Copy_OK=\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F Utils-Current_Sheet=\u73FE\u5728\u306E\u30B7\u30FC\u30C8 ConditionB-is_less_than=\u3088\u308A\u5C0F\u3055\u3044 BorderLayout-West=\u897F -AnalysisLine=\u5206\u6790\u30E9\u30A4\u30F3 -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 +AnalysisLine=\u5206\u6790\u7DDA +Layer_Report_Warnning_info=\u30B0\u30EA\u30C3\u30C9\u578B\u30A8\u30F3\u30B8\u30F3\u306F\u30C7\u30FC\u30BF\u91CF\u304C\u591A\u3044\u5834\u5408\u306B\u9069\u3057\u3066\u3044\u307E\u3059\u3002
\u3053\u306E\u30A8\u30F3\u30B8\u30F3\u3092\u4F7F\u3046\u3068\u3001\u591A\u304F\u306E\u5E33\u7968\u6A5F\u80FD\u304C\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093\u3002
\u8A73\u3057\u3044\u5185\u5BB9\u306F\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u95A2\u9023\u500B\u6240\u3092\u3054\u78BA\u8A8D\u304F\u3060\u3055\u3044\u3002 Tree-Width=\u5E45 -alert_word=\u884C\u306E\u9AD8\u3055\u3092\u56FA\u5B9A\u305B\u305A\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B\u6642\u3001\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u305Fword\u3067\u30BB\u30EB\u884C\u306E\u9AD8\u3055\u306F\u5185\u5BB9\u306B\u5408\u308F\u305B\u3066\u5927\u304D\u304F\u306A\u308A\u307E\u3059\u3002\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u305F\u6539\u30DA\u30FC\u30B8\u4F4D\u7F6E\u3068\u30D7\u30EC\u30D3\u30E5\u30FC\u7D50\u679C\u304C\u4E00\u81F4\u3057\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002 +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 @@ -627,27 +627,27 @@ FR-Designer_Plugin_Should_Update_Title=\u30D7\u30E9\u30B0\u30A4\u30F3\u30A2\u30C Server-Define_Data_Connection=\u30C7\u30FC\u30BF\u63A5\u7D9A\u5B9A\u7FA9 BarInside=\u68D2\u306E\u5185\u5074 Border-Color=\u67A0\u306E\u8272 -NotAllow=\u9055\u6CD5 +NotAllow=\u4E0D\u6B63 Utils-File_type=\u30D5\u30A1\u30A4\u30EB\u306E\u7A2E\u985E FR-Designer-Plugin_Install_From_Local=\u30ED\u30FC\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB -Summary_Method=\u96C6\u8A08\u65B9\u5F0F +Summary_Method=\u96C6\u8A08\u65B9\u6CD5 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 +HF-Number_of_Page=\u7DCF\u30DA\u30FC\u30B8\u6570 FR-Designer-Tree_Height=\u9AD8\u3055 Owner=\u30AA\u30FC\u30CA\u30FC Home=\u30DB\u30FC\u30E0\u30DA\u30FC\u30B8 -FR-Server_Embedded_Server_Stop=\u7D44\u307F\u8FBC\u307F\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 +FR-Server_Embedded_Server_Stop=\u7D44\u307F\u8FBC\u307F\u30B5\u30FC\u30D0\u505C\u6B62 +FR-Designer-Plugin_Detecting_Update=\u66F4\u65B0\u691C\u8A3C\u4E2D +HF-Whether_to_define_the_selected_type=\u9078\u629E\u30BF\u30A4\u30D7\u306E\u5B9A\u7FA9 +StyleAlignment-Right=\u53F3\u8A70\u3081 +FR-Designer_Alignment-Style=\u63C3\u3048\u65B9\u6CD5 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\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 +Append_Delete_Row_Message=\u6CE8\u610F!\u6307\u5B9A\u30BB\u30EB\u306E\u5C55\u958B\u5C5E\u6027\u3092\u8A2D\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +Form-ComboBox=\u30B3\u30F3\u30DC\u30DC\u30C3\u30AF\u30B9 +PageSetup-Footer=\u30DA\u30FC\u30B8\u30D5\u30C3\u30BF\u30FC Sorting=\u30BD\u30FC\u30C8\u4E2D DBCP_TEST_WHILE_IDLE=\u30A2\u30A4\u30C9\u30EB\u72B6\u614B\u306E\u63A5\u7D9A\u6709\u52B9\u6027\u3092\u691C\u8A3C DS-Embedded_TableData=\u7D44\u307F\u8FBC\u307F\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 @@ -661,20 +661,20 @@ M_Edit-Send_to_Back=\u6700\u80CC\u9762\u3078\u79FB\u52D5(K) Email-Can_Preview_Report_Content=\u5E33\u7968\u306E\u5185\u5BB9\u3092\u30D7\u30EC\u30D3\u30E5\u30FC\u3059\u308B FR-Designer-FRFont_Italic=\u659C\u4F53 CellWrite-Print_Background=\u30BB\u30EB\u80CC\u666F -Wizard=\u30AC\u30A4\u30C9 -Preference-Is_Drag_Permited=\u30C9\u30E9\u30C3\u30B0\uFF06\u30C9\u30ED\u30C3\u30D7\u3092\u30B5\u30DD\u30FC\u30C8 +Wizard=\u30A6\u30A3\u30B6\u30FC\u30C9 +Preference-Is_Drag_Permited=\u30C9\u30E9\u30C3\u30B0\u3092\u30B5\u30DD\u30FC\u30C8 FR-Designer_Release_Lock=\u30A2\u30F3\u30ED\u30C3\u30AF -Form-Delimiter=\u533A\u5207\u308A\u7B26 -wrong=\u30A8\u30E9\u30FC\u304C\u51FA\u307E\u3057\u305F +Form-Delimiter=\u533A\u5207\u308A\u6587\u5B57 +wrong=\u30A8\u30E9\u30FC\u767A\u751F FR-Menu-Server_Chart_PreStyle=\u30B0\u30E9\u30D5\u4E8B\u524D\u5B9A\u7FA9\u914D\u8272 Form-Button=\u30DC\u30BF\u30F3 FormulaD-Valid_Formula=\u6709\u52B9\u306A\u6570\u5F0F\u3067\u3059 ParameterD-Parameter_Interface=\u30D1\u30E9\u30E1\u30FC\u30BF\u30D1\u30CD\u30EB -At_least_one_visual_worksheet=\u30B7\u30FC\u30C8\u3092\u3059\u3079\u3066\u524A\u9664\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 +At_least_one_visual_worksheet=\u30B7\u30FC\u30C8\u3092\u3059\u3079\u3066\u524A\u9664\u3067\u304D\u307E\u305B\u3093\u3002\u524A\u9664\u524D\u306B\u3001\u30B7\u30FC\u30C8\u3092\u8FFD\u52A0\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 Need_Min_Value=\u6700\u5C0F\u5024\u5FC5\u8981 Allow_Blank=\u7A7A\u6B04\u3092\u8A31\u53EF -CellWrite-InsertRow_DEFAULT=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024 -Widget-Load_By_Complete=\u5B8C\u5168\u30ED\u30FC\u30C9 +CellWrite-InsertRow_DEFAULT=\u65E2\u5B9A\u5024 +Widget-Load_By_Complete=\u5B8C\u5168\u306B\u30ED\u30FC\u30C9\u3059\u308B FR-Designer-Basic_Only_Submit_Current_Sheet=\u3053\u306E\u30B7\u30FC\u30C8\u306E\u307F\u3092\u63D0\u51FA\u3059\u308B Sort-Sort_Order=\u4E26\u3073\u66FF\u3048 File-File_Size_Limit=\u30D5\u30A1\u30A4\u30EB\u30B5\u30A4\u30BA\u306E\u5236\u9650 @@ -682,8 +682,8 @@ PrintP-Print=\u5370\u5237(T) FR-Designer-StyleAlignment_Center=\u4E2D\u592E\u63C3\u3048 Preference-Setting_Colors=\u8272\u8A2D\u5B9A Judge=\u5224\u65AD -Image-Adjust=\u8ABF\u6574 -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 +Image-Adjust=\u8ABF\u6574\u8868\u793A +Collect-User_Information_DES=\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u30B3\u30FC\u30C9\u306F\u4F7F\u7528\u8005\u60C5\u5831\u306E\u53CE\u96C6\u306E\u305F\u3081\u3060\u3051\u306B\u7528\u3044\u3089\u308C\u307E\u3059\u3002\u300C\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u30B3\u30FC\u30C9\u53D6\u5F97\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u3001\u65B0\u898F\u30A6\u30A3\u30F3\u30C9\u30A6\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\u88FD\u54C1\u306E\u516C\u5F0F\u30B5\u30A4\u30C8\u306B\u30A2\u30AF\u30BB\u30B9\u3057\u3066\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u30B3\u30FC\u30C9\u3092\u53D6\u5F97\u3059\u308B\u306B\u306F3\u5206\u7A0B\u5EA6\u304B\u304B\u308A\u307E\u3059\u3002\u4F5C\u696D\u306F1\u56DE\u3060\u3051\u3067\u3001\u5B8C\u5168\u7121\u6599\u3067\u3054\u5229\u7528\u3044\u305F\u3060\u3051\u307E\u3059\u3002 FR-Designer_Plugin_Normal_Update_From_Local=\u30ED\u30FC\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 BackgroundTexture-Canvas=\u30AD\u30E3\u30F3\u30D0\u30B9 BarOutSide=\u68D2\u306E\u5916\u5074 @@ -692,12 +692,12 @@ 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 +WF-Name=\u540D\u524D RWA-Click_Cell_To_Edit_Value=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30BB\u30EB\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u5024\u3092\u5909\u66F4 Utils-Row_Height=\u884C\u306E\u9AD8\u3055 ReportD-Excel_Export=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u5C5E\u6027 Form-Please_Select_A_Kind_Of_Form_Container=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30B3\u30F3\u30C6\u30CA\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 -Column_Does_Not_Exsit=\u5217\u304C\u5B58\u5728\u3057\u306A\u3044 +Column_Does_Not_Exsit=\u5217\u304C\u3042\u308A\u307E\u305B\u3093 M_Insert-Hyperlink=\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF can_not_include_underline="_"\u3092\u542B\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 FR-Designer-Plugin_Jar_Expired=Jar\u30D5\u30A1\u30A4\u30EB\u306F\u53E4\u3059\u304E @@ -706,40 +706,40 @@ TopDownShade=\u4E0A\u4E0B\u30B0\u30E9\u30C7\u30FC\u30B7\u30E7\u30F3 FR-Base_Right=\u53F3 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\u3092\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +Connect_SQL_Cannot_Null=\u30C7\u30FC\u30BF\u63A5\u7D9A\u3068SQL\u30D1\u30CD\u30EB\u3092\u7A7A\u6B04\u306B\u3067\u304D\u307E\u305B\u3093 DBCP_MAX_ACTIVE=\u540C\u6642\u5272\u308A\u5F53\u3066\u53EF\u80FD\u306A\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u63A5\u7D9A\u6700\u5927\u6570 M_Window-Preference=\u30AA\u30D7\u30B7\u30E7\u30F3 -ToolBar_Top=\u4E0A\u90E8\u306E\u30C4\u30FC\u30EB\u30D0\u30FC +ToolBar_Top=\u30D8\u30C3\u30C0\u30FC\u30C4\u30FC\u30EB\u30D0\u30FC FR-Designer_Indent-Pixel=\u753B\u7D20 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\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\u306E\u5C5E\u6027 +M_Format_A-Cell_Attributes=\u305D\u306E\u4ED6\u5C5E\u6027 CellWrite-Show_As_Image=\u753B\u50CF\u3067\u5185\u5BB9\u3092\u8868\u793A ShowAsDownload=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30EA\u30F3\u30AF\u3067\u30D0\u30A4\u30CA\u30EA\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u8868\u793A -Form-ComboCheckBox=\u30D7\u30EB\u30C0\u30A6\u30F3\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 -BackgroundTexture-WovenMat=\u7E54\u7269 -BindColumn-Custom_Data_Appearance=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u8868\u793A +Form-ComboCheckBox=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 +BackgroundTexture-WovenMat=\u9EBB +BindColumn-Custom_Data_Appearance=\u30AB\u30B9\u30BF\u30E0\u8868\u793A Actived=\u30A2\u30AF\u30C6\u30A3\u30D6 Env-Local_Directory=\u30ED\u30FC\u30AB\u30EB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA Form-Colon=\u30B3\u30ED\u30F3 Preference-Vertical_Scroll_Bar_Visible=\u5782\u76F4\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u3092\u8868\u793A -Utils-Show_Cell_Value=\u30BB\u30EB\u5024\u3092\u8868\u793A +Utils-Show_Cell_Value=\u30BB\u30EB\u5024\u8868\u793A FR-Designer_ReportColumns-Repeat_Row=\u884C\u306E\u9806\u5E8F\u3092\u30B3\u30D4\u30FC SpecifiedG-Specified_Group=\u30AB\u30B9\u30BF\u30E0\u30B0\u30EB\u30FC\u30D7\u5206\u3051 RWA-Smart_Add_Cells=\u30BB\u30EB\u81EA\u52D5\u8FFD\u52A0 -HF-Left_Section=\u5DE6\u30A8\u30EA\u30A2 +HF-Left_Section=\u5DE6\u5074 M_Report-Report_Background=\u7528\u7D19\u80CC\u666F Image-Extend=\u62E1\u5927\u8868\u793A FS_BI=\u610F\u601D\u6C7A\u5B9A\u30B7\u30B9\u30C6\u30E0 -ToolBar_Bottom=\u4E0B\u90E8\u306E\u30C4\u30FC\u30EB\u30D0\u30FC -Hgap=\u6C34\u5E73\u9593\u9694 +ToolBar_Bottom=\u30D5\u30C3\u30BF\u30FC\u30C4\u30FC\u30EB\u30D0\u30FC +Hgap=\u6C34\u5E73\u9699\u9593 FR-Designer_Enter-New-FileName=\u65B0\u3057\u3044\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 -Verify_Fail=\u691C\u8A3C\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 +Verify_Fail=\u691C\u8A3C\u5931\u6557 +CellWrite-InsertRow_Policy=\u884C\u633F\u5165\u65B9\u6CD5 +FR-Designer-Plugin_Illegal_Plugin_Zip=\u5408\u6CD5\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u30D1\u30C3\u30B1\u30FC\u30B8\u3067\u306F\u3042\u308A\u307E\u305B\u3093 RCodeVersion=\u30D0\u30FC\u30B8\u30E7\u30F3 Convert=\u5909\u63DB Please_Drag=\u884C\u5217\u30D5\u30A3\u30FC\u30EB\u30C9\u3001\u96C6\u8A08\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u304F\u3060\u3055\u3044 @@ -747,102 +747,102 @@ FR-Designer-Widget-Style_Preview=\u30D7\u30EC\u30D3\u30E5\u30FC mobile_number=\u643A\u5E2F\u756A\u53F7 FR-Designer_Form-ComboCheckBox=\u30D7\u30EB\u30C0\u30A6\u30F3\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 CacheValidateTime=\u5E33\u7968\u30AD\u30E3\u30C3\u30B7\u30E5\u306E\u6709\u52B9\u6642\u9593 -Hyperlink-Extends_Report_Parameters=\u5E33\u7968\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u53D7\u3051\u7D99\u3050 +Hyperlink-Extends_Report_Parameters=\u5E33\u7968\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u7D99\u627F FR-Designer_Values-Editor=\u5024\u30A8\u30C7\u30A3\u30BF Export-Excel=Excel Utils-Left_to_Right=\u5DE6\u304B\u3089\u53F3\u3078 -ExpandD-Vertical_Extendable=\u5C55\u958B\uFF08\u7E26\uFF09 +ExpandD-Vertical_Extendable=\u7E26\u5C55\u958B 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\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 +Utils-Beyond_the_top_side_of_Border=\u4E0A\u306E\u5883\u754C\u3092\u8D85\u904E\u3057\u3066\u3044\u307E\u3059\u3002 +Exception_StackTrace=\u30A8\u30E9\u30FC\u4F8B\u5916\u30B9\u30BF\u30C3\u30AF\u60C5\u5831 Corresponding_Fields=\u5BFE\u5FDC\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9 Form-CheckBox=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 Utils-Current_Row=\u73FE\u5728\u306E\u884C BuildIn=\u7D44\u307F\u8FBC\u307F -BindColumn-Results_Filter=\u7D50\u679C\u30BB\u30C3\u30C8\u3092\u30D5\u30A3\u30EB\u30BF +BindColumn-Results_Filter=\u7D50\u679C\u30BB\u30C3\u30C8\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) +M_File-Export-CSV=CSV(\u30AB\u30F3\u30DE\u533A\u5207\u308A) Data_Filter=\u30C7\u30FC\u30BF\u30D5\u30A3\u30EB\u30BF -ReportServerP-Edit_Printer=\u30D7\u30EA\u30F3\u30BF\u30FC\u7DE8\u96C6 -FR-Designer_Datasource-Stored_Procedure=\u30D7\u30ED\u30B7\u30FC\u30B8\u30E3\u30FC +ReportServerP-Edit_Printer=\u30D7\u30EA\u30F3\u30BF\u7DE8\u96C6 +FR-Designer_Datasource-Stored_Procedure=\u30B9\u30C8\u30A2\u30C9\u30D7\u30ED\u30B7\u30FC\u30B8\u30E3 RESTART=\u518D\u8D77\u52D5 FormulaD-Function_name=\u95A2\u6570\u540D -ChooseOneButton=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u9078\u629E\u3057\u3066\u8FFD\u52A0\u3057\u3066\u4E0B\u3055\u3044 -Priority=\u512A\u5148\u30E9\u30F3\u30AF +ChooseOneButton=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u30921\u3064\u9078\u629E\u3057\u3066\u304B\u3089\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044 +Priority=\u512A\u5148\u5EA6 Datasource-Datasource=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 FR-Designer_Width=\u5E45 -Cannot-Add_To_This_Area=\u8A72\u5F53\u30A8\u30EA\u30A2\u306B\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093 +Cannot-Add_To_This_Area=\u9078\u629E\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 +Set_Submit_Condition=\u66F8\u304D\u8FBC\u307F\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\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\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=\u30B5\u30F3\u30D7\u30EB +fileLocked_undeleted=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u30ED\u30C3\u30AF\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u524A\u9664\u3067\u304D\u307E\u305B\u3093\u3002OK\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3001\u30EA\u30B9\u30C8\u3092\u518D\u8AAD\u307F\u8FBC\u307F\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +Web_Apply=WEB\u30A2\u30D7\u30EA +Refresh_Database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u66F4\u65B0 +Set_Row_Title_End=\u7E70\u308A\u8FD4\u3057\u7D42\u4E86\u884C\u8A2D\u5B9A +FR-Utils-New_Folder=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0\u30FC\u306E\u4F5C\u6210 +BiasD-From-upper_left_to_lower_right=\u5DE6\u4E0A\u5074\u304B\u3089\u53F3\u4E0B\u5074\u3078\u5E83\u3052\u308B +CapsLock=Caps Lock\u304C\u30AA\u30F3\u306B\u306A\u3063\u3066\u3044\u308B +StyleFormat-Sample=\u4F8B RWA-Smart_Add_Cell_Group=\u30BB\u30EB\u30B0\u30EB\u30FC\u30D7\u81EA\u52D5\u8FFD\u52A0 MConfig-CancelButton=\u30AD\u30E3\u30F3\u30BB\u30EB -Function-Choose_Function_Class=\u95A2\u6570\u30AF\u30E9\u30B9\u3092\u9078\u629E\u3059\u308B -LatLng=\u7D4C\u7DEF\u5EA6 +Function-Choose_Function_Class=\u95A2\u6570\u30AF\u30E9\u30B9\u9078\u629E +LatLng=\u7DEF\u5EA6\u7D4C\u5EA6 DS-Server_TableData=\u30B5\u30FC\u30D0\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 BackgroundTexture-GreenMarble=\u5927\u7406\u77F3(\u7DD1) read_time_out=\u30ED\u30FC\u30C9\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8 JavaScript-Commit_to_Database=DB\u306B\u66F8\u304D\u8FBC\u307F DS-Relation_TableData=\u95A2\u9023\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 CellWrite-Page_Before_Row=\u884C\u524D\u306E\u6539\u9801 -FR-Designer-Plugin_Load_Plugins_From_Server=\u30D7\u30E9\u30B0\u30A4\u30F3\u30BB\u30F3\u30BF\u30FC\u304B\u3089\u30C7\u30FC\u30BF\u53D6\u5F97\u4E2D +FR-Designer-Plugin_Load_Plugins_From_Server=\u30D7\u30E9\u30B0\u30A4\u30F3\u30B9\u30C8\u30A2\u304B\u3089\u30C7\u30FC\u30BF\u53D6\u5F97\u4E2D D-Dispaly_Divide_Result_Set_into_Groups=\u7D50\u679C\u30BB\u30C3\u30C8\u3092\u30B0\u30EB\u30FC\u30D7\u5206\u3051 -Closed=\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 +Closed=\u7D42\u4E86\u6E08\u307F +RWA-Help=\u672A\u5909\u66F4\u6642\u3067\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3057\u306A\u3044\u3092\u8A2D\u5B9A\u3059\u308B\u3068\u3001\u5E33\u7968\u306E\u4F5C\u6210\u3068\u30D7\u30EC\u30D3\u30E5\u30FC\u3092\u3059\u308B\u6642\u306B\u3001\u8A18\u9332\u5185\u5BB9\u306E\u30BB\u30EB\u306F\u7DE8\u96C6\u3084\u5909\u66F4\u3055\u308C\u306A\u3044\u305F\u3081\u3001\u3053\u306E\u8A18\u9332\u306F\u66F4\u65B0\u3055\u308C\u307E\u305B\u3093\u3002\n\u30D3\u30C3\u30B0\u30C7\u30FC\u30BF\u91CF\u306E\u691C\u7D22\u304A\u3088\u3073\u57CB\u3081\u623B\u3057\u306E\u5834\u5408\u3001\u3053\u306E\u8A2D\u5B9A\u3092\u6709\u52B9\u306B\u3059\u308C\u3070\u3001\u4F5C\u6210\u3068\u66F8\u304D\u8FBC\u307F\u306E\u6A5F\u80FD\u3092\u9AD8\u3081\u308B\u3053\u3068\u304C\u3067\u304D\u308B\u3002 +FR-Designer-Widget-Style_Custom=\u30AB\u30B9\u30BF\u30E0 FR-Designer-Widget-Style_Render_Style=\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u30B9\u30BF\u30A4\u30EB Highlight-Barcode=\u30D0\u30FC\u30B3\u30FC\u30C9 -FR-Designer_Connect_SQL_Cannot_Null=\u30C7\u30FC\u30BF\u63A5\u7D9A\u3068SQL\u30D1\u30CD\u30EB\u3092\u7A7A\u6B04\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 -trigger=\u89E6\u767A +FR-Designer_Connect_SQL_Cannot_Null=\u30C7\u30FC\u30BF\u63A5\u7D9A\u3068SQL\u30D1\u30CD\u30EB\u3092\u7A7A\u6B04\u306B\u3067\u304D\u307E\u305B\u3093 +trigger=\u30C8\u30EA\u30AC\u30FC M-Data_Analysis=\u30C7\u30FC\u30BF\u5206\u6790 -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 +Function-The_selected_file_cannot_be_null=\u30D5\u30A1\u30A4\u30EB\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093 +No-Privilege=\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093 ReportColumns-Repeat_Column=\u5217\u306E\u9806\u5E8F\u3092\u30B3\u30D4\u30FC SecondGraduationUnit=\u88DC\u52A9\u76EE\u76DB\u5358\u4F4D Form-Widget_Property_Value=\u5C5E\u6027\u5024 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 +FR-Designer_Rename=\u540D\u524D\u3092\u5909\u66F4 +Utils-Merge_Cell=\u30BB\u30EB\u306E\u7D50\u5408 Style-Spacing_After=\u6BB5\u843D\u5F8C Enlarge_Or_Reduce=\u30BA\u30FC\u30E0 Tree-Height=\u9AD8\u3055 -RCodeErrorCorrect=\u30A8\u30E9\u30FC\u8A02\u6B63 +RCodeErrorCorrect=\u8AA4\u308A\u8A02\u6B63\u80FD\u529B Enter-New-FileName=\u65B0\u3057\u3044\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 -try_resending=\u518D\u9001\u4FE1\u3092\u8A66\u3057\u3066\u4E0B\u3055\u3044 -M-Open_Report=\u958B\u3044\u3066\u3044\u307E\u3059... +try_resending=\u518D\u5EA6\u9001\u4FE1\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044 +M-Open_Report=\u958B\u304F... Please_Select=\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 InRow=\u884C(R) Form-TextArea=\u30C6\u30AD\u30B9\u30C8\u30A8\u30EA\u30A2 -FR-Designer_Https_Enable=HTTPS\u3092\u6709\u52B9\u306B\u3059\u308B +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 +already_exists=\u65E2\u306B\u3042\u308A\u307E\u3059 Original_Marked_Filed=\u30AA\u30EA\u30B8\u30CA\u30EB\u30BF\u30B0\u30D5\u30A3\u30FC\u30EB\u30C9 BackgroundTexture-Sand=\u7802 Values=\u5024 -Not_use_a_cell_attribute_table_editing=\u30BB\u30EB\u5C5E\u6027\u8868\u3067\u7DE8\u96C6\u3057\u3066\u306F\u306A\u3089\u306A\u3044 +Not_use_a_cell_attribute_table_editing=\u30BB\u30EB\u5C5E\u6027\u8868\u3067\u7DE8\u96C6\u3067\u304D\u307E\u305B\u3093 Root=\u30EB\u30FC\u30C8\u30CE\u30FC\u30C9 cycle=\u5468\u671F open-new-form-tip=\u73FE\u5728\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F7.1.1\u4EE5\u4E0B\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u4F5C\u6210\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001\u4E92\u63DB\u6027\u304C\u306A\u304F\u3001\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3002\u3053\u306E\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u3092\u7DE8\u96C6\u3059\u308B\u306B\u306F\u3001\u5BFE\u5FDC\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u5229\u7528\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 Support-Current_Auto_Complete_Shortcut=\u73FE\u5728\u306E\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC GROUPING_MODE=\u4E00\u822C\u30B0\u30EB\u30FC\u30D7\u5206\u3051 -DBCP_MAX_IDLE=\u6700\u5927\u30A2\u30A4\u30C9\u30EB\u63A5\u7D9A\u6570 +DBCP_MAX_IDLE=\u30D7\u30FC\u30EB\u306B\u4FDD\u6301\u3059\u308B\u6700\u5927\u63A5\u7D9A\u6570 BackgroundTexture-BlueTissuePaper=\u9752\u3044\u753B\u7528\u7D19 ReportD-Export_Hided_Row=\u975E\u8868\u793A\u884C\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 -FR-Custom_styles_lost=\u30AB\u30B9\u30BF\u30E0\u30B9\u30BF\u30A4\u30EB\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 +FR-Custom_styles_lost=\u30AB\u30B9\u30BF\u30E0\u30B9\u30BF\u30A4\u30EB\u306F\u5931\u308F\u308C\u307E\u3057\u305F +Env-Des2=Servlet\u306E\u4F4D\u7F6E\u306F\u30DB\u30B9\u30C8\u30B3\u30F3\u30D4\u30E5\u30FC\u30BF\u540D\u3001\u30DD\u30FC\u30C8\u3001WEB\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3001Servlet\u306E\u7D44\u307F\u5408\u308F\u305B\u3067\u3042\u308A\u3001"http\://localhost\:8080/WebReport/ReportServer"\u306A\u30691\u3064\u306EServlet\u3092\u6307\u5411\u3057\u3066\u3044\u306A\u3051\u308C\u3070\u6210\u308A\u307E\u305B\u3093\u3002\u30DB\u30B9\u30C8\u30B3\u30F3\u30D4\u30E5\u30FC\u30BF\u540D\u3001\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3001WEB\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3001Servlet\u3092\u8A18\u5165\u3059\u308B\u3068\u3001\u81EA\u52D5\u7684\u306B\u5FC5\u8981\u306AServlet\u4F4D\u7F6E\u3092\u4F5C\u6210\u3057\u307E\u3059\u3002 +Env-Des1=\u5E33\u7968\u30B5\u30FC\u30D0\u304C\u3042\u308BWEB-INF\u30D5\u30A9\u30EB\u30C0\u30FC\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 +PageSetup-Placement_Center_on_Page=\u4E2D\u592E\u63C3\u3048 sure_to_delete=\u524A\u9664\u3057\u307E\u3059\u304B -Already_exists_not_add_repeat=\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059 +Already_exists_not_add_repeat=\u65E2\u306B\u3042\u308A\u307E\u3059 Axis_Title=\u8EF8\u30E9\u30D9\u30EB FR-Designer-Plugin_Install_Failed=\u30D7\u30E9\u30B0\u30A4\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u5931\u6557 FR-Designer-Widget-Style_Frame=\u30D5\u30EC\u30FC\u30E0 @@ -852,35 +852,35 @@ Classifier-Ge=\u500B 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=\u5C55\u958B\uFF08\u6A2A\uFF09 +ExpandD-Horizontal_Extendable=\u6A2A\u5C55\u958B 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\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 \=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
  +Warnning=\u6CE8\u610F +RoleName_Can_Not_Be_Null=\u5F79\u5272\u540D\u3092\u7A7A\u6B04\u306B\u3067\u304D\u307E\u305B\u3093\u3001\u307E\u305F\u3001\u91CD\u8907\u3082\u3067\u304D\u307E\u305B\u3093 +Application=\u30A2\u30D7\u30EA +Formula_Dictionary_Display_Examples_Html=\u5B9F\u969B\u306E\u5024\u304C \=range(100)\u306E\u3068\u304D\u3001\u5B9F\u969B\u306E\u5024($$$)\u306E\u8868\u793A\u3059\u308B\u5024\u306E\u6570\u5F0F\u304C \= 0 - $$$\u306E\u3068\u304D\u3001\n\u6700\u7D42\u7684\u306A\u5B9F\u969B\u306E\u5024\u306F\u30011, 2, ..., 100\u3067\u3042\u308A\u3001\n\u305D\u306E\u8868\u793A\u7D50\u679C\u306F-1, -2, ..., -100\u3068\u306A\u308B\u3002
ECP-error_pwd=\u30D1\u30B9\u30EF\u30FC\u30C9\u30A8\u30E9\u30FC FR-Hyperlink_ChartHyperlink=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF -M_Edit-FormatBrush=\u66F8\u5F0F\u30B3\u30D4\u30FC(B) +M_Edit-FormatBrush=\u66F8\u5F0F\u306E\u30B3\u30D4\u30FC/\u8CBC\u308A\u4ED8\u3051(B) Indent-Pixel=\u753B\u7D20 -FR-Designer-Widget-Style_Border_Line=\u7F6B\u7DDA\u306E\u592A\u3055 +FR-Designer-Widget-Style_Border_Line=\u67A0\u306E\u592A\u3055 Widget-Default_Widget_Config=\u57FA\u672C\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 -Version-does-not-support=\u304A\u4F7F\u3044\u306Elic\u306F\u30EA\u30E2\u30FC\u30C8\u958B\u767A\u6A5F\u80FD\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3001\u3054\u5229\u7528\u306B\u306FLIC\u3092\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +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 StyleAlignment-Right_To_Left=\u53F3\u304B\u3089\u5DE6\u3078 Style-Spacing_Before=\u6BB5\u843D\u524D -Has_Existed=\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059 +Has_Existed=\u65E2\u306B\u3042\u308B FR-Designer_DisplayNothingBeforeQuery=\u30AF\u30A8\u30EA\u30AF\u30EA\u30C3\u30AF\u524D\u306B\u5E33\u7968\u5185\u5BB9\u3092\u8868\u793A\u3057\u306A\u3044 Still=\u4F9D\u7136\u3068\u3057\u3066 -JS_WARNING2=\ \u4F8B\uFF1Ahttp\://localhost\:8075/WebReport/demo.js -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 +JS_WARNING2=\ \u4F8B\:http\://localhost\:8075/WebReport/demo.js +JS_WARNING1= \u76F8\u5BFE\u7684\u5E33\u7968\u5DE5\u7A0B\u306EWebReport\u306E\u30D5\u30A9\u30EB\u30C0\u30FC\u304C\u3001WebReport\\js\u4E0B\u306B\u5F15\u7528\u3059\u308Bjs\u30D5\u30A1\u30A4\u30EBtest.js\u304C\u3042\u308B\u5834\u5408\u3001
 \u76F8\u5BFE\u30D1\u30B9\u306Fjs/test.js\u306B\u306A\u308A\u307E\u3059 Connectionline=\u63A5\u7D9A\u30E2\u30FC\u30C9 Utils-Insert_Record=\u8A18\u9332\u633F\u5165 -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 +Set-Parameter-Name=\u4E8B\u524D\u306B\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044 +More-information=\u8A73\u7D30\u60C5\u5831 +Parameter-Boolean=\u30D6\u30FC\u30EB FRFont-Strikethrough=\u53D6\u308A\u6D88\u3057\u7DDA -Server-version-tip=\u4ECA\u63A5\u7D9A\u3055\u308C\u3066\u3044\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u3054\u4F7F\u7528\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3088\u308A\u4F4E\u3044\u306E\u3067\u3001\u5F15\u304D\u7D9A\u304D\u63A5\u7D9A\u3059\u308B\u3068\u3001\u7DE8\u96C6\u306E\u3044\u304F\u3064\u304B\u306E\u5C5E\u6027\u306F\u6709\u52B9\u7684\u306B\u4FDD\u5B58\u3067\u304D\u306A\u3044\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\u3092\u56DE\u53CE\u3059\u308B\u306E\u691C\u67FB\u56DE\u6570 +Server-version-tip=\u4ECA\u63A5\u7D9A\u3055\u308C\u3066\u3044\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u3054\u4F7F\u7528\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3088\u308A\u4F4E\u3044\u306E\u3067\u3001\u5F15\u304D\u7D9A\u304D\u63A5\u7D9A\u3059\u308B\u3068\u3001\u7DE8\u96C6\u306E\u3044\u304F\u3064\u304B\u306E\u5C5E\u6027\u306F\u6709\u52B9\u7684\u306B\u4FDD\u5B58\u3067\u304D\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u63A5\u7D9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308C\u3070\u3001\u304A\u4F7F\u3044\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3068\u30C1\u30A7\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044 +Form-All_Files=\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB +DBCP_NUM_TEST_PER_EVCTION_RUN=1\u56DE\u306E\u691C\u8A3C\u5F53\u305F\u308A\u306E\u5BFE\u8C61\u63A5\u7D9A\u6570 FR-Designer-FRFont_Family=\u540D\u524D Device=\u30C7\u30D0\u30A4\u30B9 M_Insert-Cell=\u30BB\u30EB\u8981\u7D20 @@ -889,9 +889,9 @@ FRFont-Superscript=\u4E0A\u4ED8\u304D CellWrite-Page_Before_Column=\u5217\u524D\u306E\u6539\u9801 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 +M-Page_Preview=\u30DA\u30FC\u30B8\u5225\u30D7\u30EC\u30D3\u30E5\u30FC HJS-CC_to=CC -Tree-Select_Leaf_Only=\u30EA\u30FC\u30D5\u30CE\u30FC\u30C9\u3060\u3051\u3092\u623B\u308B +Tree-Select_Leaf_Only=\u30EA\u30FC\u30D5\u30CE\u30FC\u30C9\u3060\u3051\u3092\u623B\u3059 Pointer-A-Tick-Order=\u30E1\u30FC\u30BF\u30FC\u3068\u76EE\u76DB\u306E\u8868\u793A\u5358\u4F4D Pink=\u30D4\u30F3\u30AF StyleAlignment-Distibuted=\u5747\u7B49\u5272\u308A\u4ED8\u3051 @@ -900,8 +900,8 @@ 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=\u30AA\u30D5\u30E9\u30A4\u30F3 -Form-Hierarchy_Tree_Next=\u6B21\u306E -Needle=\u30DD\u30A4\u30F3\u30BF +Form-Hierarchy_Tree_Next=\u6B21 +Needle=\u6307\u91DD GoogleMap=Google\u30DE\u30C3\u30D7 Running=\u5B9F\u884C\u4E2D M_Edit-Unmerge_Cell=\u30BB\u30EB\u7D50\u5408\u306E\u89E3\u9664 @@ -909,22 +909,22 @@ 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\u5236\u5FA1 +StyleAlignment-Text_Style=\u6587\u5B57\u306E\u5236\u5FA1 RelatedChart=\u30B0\u30E9\u30D5\u9023\u52D5 ProcessManager=\u30D5\u30ED\u30FC\u7BA1\u7406 Cancel_Repeat_Attributes=\u91CD\u8907\u884C\u5217\u89E3\u9664 FR-App-File_Message=\u60C5\u5831 -Datasource-Stored_Procedure=\u30D7\u30ED\u30B7\u30FC\u30B8\u30E3\u30FC +Datasource-Stored_Procedure=\u30B9\u30C8\u30A2\u30C9\u30D7\u30ED\u30B7\u30FC\u30B8\u30E3 RWA-Row_Offset=\u884C\u306E\u30AA\u30D5\u30BB\u30C3\u30C8 M_Format-Style=\u30B9\u30BF\u30A4\u30EB -detail_description=\u8A73\u7D30\u8AAC\u660E +detail_description=\u8A73\u7D30\u8A18\u8FF0 FR-Designer-Widget-Style_Title_Content=\u30BF\u30A4\u30C8\u30EB\u5185\u5BB9 ParameterD-Report_Parameter=\u5E33\u7968\u30D1\u30E9\u30E1\u30FC\u30BF HF-Edit_Header=\u30D8\u30C3\u30C0\u30FC\u7DE8\u96C6 Sytle-FRFont=\u30D5\u30A9\u30F3\u30C8 -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 +FR-Designer_Finish_Export=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u5B8C\u4E86 +MultiFileUpload=\u8907\u6570\u30D5\u30A1\u30A4\u30EB\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9 +HF-Page_Number=\u30DA\u30FC\u30B8\u756A\u53F7 Style-Right_Indent=\u53F3\u30A4\u30F3\u30C7\u30F3\u30C8 Desktop=\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7 FR-Server-All_Error=\u30A8\u30E9\u30FC @@ -934,12 +934,12 @@ 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=\u9ED2\u4F53 +Black_Font=SimHei LOG-Report_Server_IS_Started=\u5E33\u7968\u30B5\u30FC\u30D0\u306F\u8D77\u52D5\u6E08\u307F -Tips\:You_Can_Input_B1_To_Input_The_Data_Of_The_First_Row_Second_Column=\u30D2\u30F3\u30C8\:B1\u3092\u5165\u529B\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 +Tips\:You_Can_Input_B1_To_Input_The_Data_Of_The_First_Row_Second_Column=\u30D2\u30F3\u30C8\:B1\u3092\u5165\u529B\u3059\u308B\u3068\u3001\u30BB\u30EBB1\u306E\u30C7\u30FC\u30BF\u3092\u53C2\u7167\u3067\u304D\u307E\u3059\u3002 +FR-Designer_ChooseOneButton=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u9078\u629E\u3057\u3066\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044 Widget-Sizing=\u30B5\u30A4\u30BA\u8ABF\u6574 -NO_Border_Line=\u67A0\u7DDA\u306A\u3057 +NO_Border_Line=\u67A0\u306A\u3057 Cell_Data=\u30BB\u30EB\u30C7\u30FC\u30BF StyleAlignment-Vertical_Text=\u6587\u5B57\u7E26\u66F8\u304D Label=\u30E9\u30D9\u30EB @@ -951,18 +951,18 @@ satisfy=\u6761\u4EF6\u3092\u6E80\u305F\u3059 FR-Designer_WidgetDisplyPosition=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u8868\u793A\u4F4D\u7F6E FR-Base_Top=\u4E0A FR-Designer_Form-CheckBox=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 -Reportlet-Parameter_Type=\u30D1\u30E9\u30E1\u30FC\u30BF\u8EE2\u9001\u65B9\u5F0F +Reportlet-Parameter_Type=\u30D1\u30E9\u30E1\u30FC\u30BF\u8EE2\u9001\u65B9\u6CD5 sending=\u9001\u4FE1\u4E2D... FR-Designer-FRFont_Foreground=\u8272 -FR-Import-Export_SVG=SVG\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +FR-Import-Export_SVG=SVG M_Edit-Clear_Contents=\u5185\u5BB9(C) Session=\u30BB\u30C3\u30B7\u30E7\u30F3 Widget-Load_Type=\u30ED\u30FC\u30C9 -template_unsaved=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u4FDD\u5B58\u3067\u304D\u307E\u305B\u3093 +template_unsaved=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u4FDD\u5B58\u304C\u3067\u304D\u307E\u305B\u3093 check_communication=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u901A\u4FE1\u3068\u30B5\u30FC\u30D0\u72B6\u614B\u3092\u30C1\u30A7\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044 List-Need_Head=\u30EA\u30B9\u30C8\u30D8\u30C3\u30C0\u30FC\u5FC5\u8981 -FR-Designer-Plugin_Has_Been_Installed=\u30D7\u30E9\u30B0\u30A4\u30F3\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-Designer-Plugin_Has_Been_Installed=\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u307E\u3057\u305F\u3002\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3057\u305F\u3044\u5834\u5408\u3001\u30D7\u30E9\u30B0\u30A4\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u306B\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044 +FR-Widget_Tree_And_Table=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u30C4\u30EA\u30FC\u3068\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u8868 FR-Base_Help=\u30D8\u30EB\u30D7 FR-Designer-Plugin_Update_Successful=\u30D7\u30E9\u30B0\u30A4\u30F3\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C8\u7D42\u4E86\u3001\u30B5\u30FC\u30D0\u518D\u8D77\u52D5\u3067\u6709\u52B9\u306B\u3059\u308B August=8\u6708 @@ -971,53 +971,53 @@ BackgroundTexture-Oak=\u30AA\u30FC\u30AF Multi_nam_formula=\ \u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u540D\: \u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u6761\u4EF6\: TurnOn=\u30AA\u30F3 HJS-Send_Successfully=\u9001\u4FE1\u6210\u529F -Mon=\u6708\u66DC\u65E5 -Inner_Parameter=\u7D44\u307F\u8FBC\u307F\u306E\u30D1\u30E9\u30E1\u30FC\u30BF +Mon=\u6708 +Inner_Parameter=\u7D44\u307F\u8FBC\u307F\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 +template_unopened=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 FR-Base_Bottom=\u4E0B DataFunction-Min=\u6700\u5C0F\u5024 StyleFormat-Percent=\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8 -FR-App-All_Custom=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA +FR-App-All_Custom=\u30AB\u30B9\u30BF\u30E0 M_Insert-Data_Column=\u30C7\u30FC\u30BF\u5217 PLEASE=\u3069\u3046\u305E -Numbers=\u500B\u6570 +Numbers=\u6570 Release_Lock=\u30A2\u30F3\u30ED\u30C3\u30AF Background-Background_is_NULL=\u80CC\u666F\u306A\u3057 FR-Designer_Sytle-FRFont=\u30D5\u30A9\u30F3\u30C8 -Gradation=\u30EC\u30D9\u30EB -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 +Gradation=\u30EC\u30D9\u30EB\u5225 +The_current_list_is_empty=\u73FE\u5728\u306E\u30EA\u30B9\u30C8\u306F\u7A7A\u3067\u3059 +Formula_Dictionary_Display_Examples=\u5B9F\u969B\u306E\u5024\u304C \=range(100)\u306E\u3068\u304D\u3001\u5B9F\u969B\u306E\u5024($$$)\u306E\u8868\u793A\u3059\u308B\u5024\u306E\u6570\u5F0F\u304C \= 0 - $$$\u306E\u3068\u304D\u3001\n\u6700\u7D42\u7684\u306A\u5B9F\u969B\u306E\u5024\u306F\u30011, 2, ..., 100\u3067\u3042\u308A\u3001\n\u305D\u306E\u8868\u793A\u7D50\u679C\u306F-1, -2, ..., -100\u3068\u306A\u308B\u3002 Schedule-Template_Parameter=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF -JSShow=\u52D5\u614B\u8868\u793A +JSShow=\u30C0\u30A4\u30CA\u30DF\u30C3\u30AF\u8868\u793A Level_coordinates=\u968E\u5C64\u5EA7\u6A19 MainGraduationLine=\u4E3B\u76EE\u76DB\u7DDA Hyperlink-Web_link=\u30A6\u30A7\u30D6\u30DA\u30FC\u30B8\u30EA\u30F3\u30AF -StyleAlignment-between_-90_and_90=-90-90\u306E\u7BC4\u56F2\u3067 -FormulaD-Custom_Function=\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u95A2\u6570 +StyleAlignment-between_-90_and_90=-90\u304B\u308990\u306E\u7BC4\u56F2 +FormulaD-Custom_Function=\u30AB\u30B9\u30BF\u30E0\u95A2\u6570 FR-Designer_Integer=\u6574\u6570 -PageSetup-Finis_Start_Row=\u91CD\u8907\u7D42\u4E86\u884C +PageSetup-Finis_Start_Row=\u7E70\u308A\u8FD4\u3057\u7D42\u4E86\u884C RWA-Remove_Field=\u30D5\u30A3\u30FC\u30EB\u30C9\u524A\u9664 Form-Desin_Width=\u30C7\u30B6\u30A4\u30F3\u5E45 -No-tableData=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306F\u623B\u3055\u306A\u3044 +No-tableData=\u623B\u3055\u308C\u305F\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u304C\u3042\u308A\u307E\u305B\u3093 Page_Total=\u5408\u8A08 -FR-Designer-Plugin_Connect_Server_Error=\u30D7\u30E9\u30B0\u30A4\u30F3\u30B9\u30C8\u30A2\u63A5\u7D9A\u5931\u6557\u3001\u5F8C\u3067\u518D\u8A66\u884C\u3057\u3066\u4E0B\u3055\u3044 -Import-Excel_Source=Excel\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB +FR-Designer-Plugin_Connect_Server_Error=\u30D7\u30E9\u30B0\u30A4\u30F3\u30B9\u30C8\u30A2\u63A5\u7D9A\u5931\u6557\u3001\u5F8C\u3067\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044 +Import-Excel_Source=Excel\u30BD\u30FC\u30B9 Utils-Left_to_Right_a=\u5DE6\u304B\u3089\u53F3\u3078 ExpandD-Expand_Attribute=\u5C55\u958B\u5C5E\u6027 -Report-Write_Attributes=\u5E33\u7968\u66F8\u304D\u8FBC\u307F\u30D7\u30ED\u30D1\u30C6\u30A3 +Report-Write_Attributes=\u5E33\u7968\u66F8\u304D\u8FBC\u307F\u5C5E\u6027 Utils-Current_Column=\u73FE\u5728\u306E\u5217 Need_Max_Value=\u6700\u5927\u5024\u5FC5\u8981 Report_Not_Exist=\u9078\u629E\u3055\u308C\u305F\u5E33\u7968\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 -HF-Insert_Content=\u5185\u5BB9 +HF-Insert_Content=\u5185\u5BB9\u306E\u633F\u5165 UpParent=\u4E0A\u89AA\u30BB\u30EB PageSetup-Page=\u30DA\u30FC\u30B8 -Utils-Move_Up=\u4E0A\u3078\u79FB\u52D5 +Utils-Move_Up=\u4E0A\u3078 BackgroundTexture-PurpleMesh=\u7D2B\u306E\u30E1\u30C3\u30B7\u30E5 Export-Word=Word ServerM-Widget_Manager=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u7BA1\u7406 -FR-Designer-Basic_Activation_Key=\u30C7\u30B6\u30A4\u30CA\u30FC\u756A\u53F7\uFF1A +FR-Designer-Basic_Activation_Key=\u30C7\u30B6\u30A4\u30CA\u30FC\u756A\u53F7\: FR-App-Template_Report_Not_Exist=\u9078\u629E\u3057\u305F\u5E33\u7968\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\! Protected=\u4FDD\u8B77 Skip=\u30B9\u30AD\u30C3\u30D7 @@ -1030,8 +1030,8 @@ ExpandD-Data_Column=\u30C7\u30FC\u30BF\u5217 Sort-Ascending=\u6607\u9806 FR-Designer-Widget_Style=\u30B9\u30BF\u30A4\u30EB parameter_name_exist=\u6307\u5B9A\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u306F\u5229\u7528\u3055\u308C\u3066\u3044\u307E\u3059 -FR-Designer_Layer-Build=\u666E\u901A\u30EC\u30D9\u30EB\u5206\u3051\u69CB\u7BC9 -Please_Rename=\u540D\u524D\u3092\u5909\u66F4\u3057\u3066\u4E0B\u3055\u3044 +FR-Designer_Layer-Build=\u4E00\u822C\u30EC\u30A4\u30E4\u5225\u69CB\u7BC9 +Please_Rename=\u540D\u524D\u3092\u5909\u66F4\u3057\u3066\u304F\u3060\u3055\u3044 Form-Editing_Listeners=\u30A4\u30D9\u30F3\u30C8\u3092\u7DE8\u96C6 RWA-Smart_Add_Fields=\u30D5\u30A3\u30FC\u30EB\u30C9\u81EA\u52D5\u8FFD\u52A0 FR-Designer-Tree_Width=\u5E45 @@ -1041,17 +1041,17 @@ Options=\u30AA\u30D7\u30B7\u30E7\u30F3 NS-war-remote=\u30A8\u30E9\u30FC\u30B3\u30FC\u30C9\:1117 \u30EA\u30E2\u30FC\u30C8\u958B\u767A\u3067\u306F\u3001\u5727\u7E2E\u5C55\u958B\u306F\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093 Sche-Minute=\u5206 Three_Rows_Of_Three_Grid=3\u884C3\u5217\u306E\u30B0\u30EA\u30C3\u30C9 -WorkSheet=\u30D5\u30EA\u30FC\u5E33\u7968 +WorkSheet=\u81EA\u7531\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=\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 +SetPrinterOffset=\u5370\u5237\u30AA\u30D5\u30BB\u30C3\u30C8 +FR-Designer-Plugin_Installed=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u6E08\u307F FR-Designer-Hyperlink_Name=\u540D\u524D -FR-Designer_Form-Button=\u62BC\u3057\u30DC\u30BF\u30F3 +FR-Designer_Form-Button=\u30DC\u30BF\u30F3 Black=\u30D6\u30E9\u30C3\u30AF -FR-Designer-Widget-Style_Border_Color=\u7F6B\u7DDA\u306E\u8272 +FR-Designer-Widget-Style_Border_Color=\u67A0\u306E\u8272 Set_Submit_Event=\u63D0\u51FA\u30A4\u30D9\u30F3\u30C8\u8A2D\u5B9A PDF-Print_isPopup=\u8A2D\u5B9A\u30DC\u30C3\u30AF\u30B9\u3092\u8868\u793A LayerPageReport_CountPerPage=\u5404\u30DA\u30FC\u30B8\u306E\u8A18\u9332\u6570 @@ -1070,17 +1070,17 @@ 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 +Already_exists=\u65E2\u306B\u3042\u308A\u307E\u3059 +Datasource-Original_Charset=\u30AA\u30EA\u30B8\u30CA\u30EB\u6587\u5B57\u30B3\u30FC\u30C9 FR-Base_Left=\u5DE6 ReportServerP-Next=\u6B21\u30DA\u30FC\u30B8 BindColumn-Top_N=\u4E0A\u4F4DN\u9805\u76EE Animation_Special=\u7279\u6B8A\u52B9\u679C Widget-Chart_Widget_Config=\u30B0\u30E9\u30D5\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 -FR-Designer-Plugin_Cannot_Update_Not_Install=\u30D7\u30E9\u30B0\u30A4\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u5931\u6557\u3001\u5F53\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u6B63\u5E38\u306B\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u305F\u304B\u3069\u3046\u304B\u30C1\u30A7\u30C3\u30AF\u3057\u3066\u4E0B\u3055\u3044 +FR-Designer-Plugin_Cannot_Update_Not_Install=\u30D7\u30E9\u30B0\u30A4\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u5931\u6557\u3001\u5F53\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u6B63\u5E38\u306B\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u305F\u304B\u3069\u3046\u304B\u30C1\u30A7\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044 After_Changed_Some_Attributes_Are_Different=\u5909\u63DB\u5F8C\u5E33\u7968\u306E\u5C5E\u6027\u304C\u5909\u66F4\u3055\u308C\u307E\u3059\u3001\u7D9A\u3051\u307E\u3059\u304B PieStyle=\u5186\u72B6 -HF-Are_you_sure_to_delete_it=\u3053\u306E\u8981\u7D20\u3092\u524A\u9664\u3057\u307E\u3059\u304B? +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=\u30E9\u30D9\u30EB Data-Label=\u30E9\u30D9\u30EB @@ -1092,9 +1092,9 @@ ReportServerP-Report_server_parameter=\u5E33\u7968\u30B5\u30FC\u30D0\u30D1\u30E9 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 +INFO-Reset_Webapp=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30B5\u30FC\u30D0\u306E\u518D\u8A2D\u5B9A FR-Designer_Text=\u30C6\u30AD\u30B9\u30C8 -IN_and_INOUT_type_not_as_cursor=IN\u3068INOUT\u30BF\u30A4\u30D7\u306F\u30AB\u30FC\u30BD\u30EB\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u306A\u3044 +IN_and_INOUT_type_not_as_cursor=IN\u3068INOUT\u30BF\u30A4\u30D7\u306F\u30AB\u30FC\u30BD\u30EB\u306B\u3067\u304D\u307E\u305B\u3093 Main_Axis=\u30E1\u30A4\u30F3\u5EA7\u6A19\u8EF8 M_Edit-Cut=\u5207\u308A\u53D6\u308A(T) Utils-The_Name_has_been_existed=\u3053\u306E\u540D\u524D\u306F\u65E2\u306B\u3042\u308A\u307E\u3059 @@ -1105,36 +1105,36 @@ Test=\u30C6\u30B9\u30C8 Utils-Would_you_like_to_save=\u4FDD\u5B58\u3057\u307E\u3059\u304B HF-Header_and_Footer=\u30D8\u30C3\u30C0\u30FC\u3068\u30D5\u30C3\u30BF\u30FC LIST_MODE=\u4E00\u89A7 -HF-Insert_Image=\u753B\u50CF +HF-Insert_Image=\u753B\u50CF\u306E\u633F\u5165 FR-Designer-Widget-Style_Standard=\u6A19\u6E96 -FR-Designer_Form-List=\u4E00\u89A7 +FR-Designer_Form-List=\u30EA\u30B9\u30C8 BackgroundTexture-Denim=\u30C7\u30CB\u30E0 Execute_Report_by_Layer_Engine=\u30B0\u30EA\u30C3\u30C9\u578B\u30A8\u30F3\u30B8\u30F3\u3067\u5E33\u7968\u3092\u5B9F\u884C\u3059\u308B M_Edit-Bring_Forward=\u524D\u9762\u3078\u79FB\u52D5(F) -Choose_All=\u5168\u9078\u629E +Choose_All=\u3059\u3079\u3066\u9078\u629E Form-RadioGroup=\u30E9\u30B8\u30AA\u30DC\u30BF\u30F3\u30B0\u30EB\u30FC\u30D7 FR-Base_Remove=\u524A\u9664 FR-Remote_Connect2Server_Again=\u63A5\u7D9A\u304C\u5207\u65AD\u3055\u308C\u307E\u3057\u305F\u3001\u30B5\u30FC\u30D0\u306B\u518D\u63A5\u7D9A\u3057\u307E\u3059\u304B? Semicolon=\u30BB\u30DF\u30B3\u30ED\u30F3 StyleFormat-Category=\u5206\u985E 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 +Utils-Beyond_the_right_side_of_Border=\u53F3\u306E\u5883\u754C\u3092\u8D85\u904E\u3057\u3066\u3044\u307E\u3059\u3002 BackgroundTexture-Papyrus=\u7D19 LayerPageReport_PageEngine=\u30DA\u30FC\u30B8\u8A08\u7B97\u3092\u5229\u7528\u3057\u305F\u30BB\u30B0\u30E1\u30F3\u30C8\u3067\u5E33\u7968\u3092\u5B9F\u884C Schedule-The_selected_file_must_be_end_with_filter=\u9078\u629E\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u306F.cpt\u3084.class\u307E\u305F\u306F.frm\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 Provide=\u63D0\u4F9B 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 +FR-Designer-StyleAlignment_Right=\u53F3\u8A70\u3081 +Error_TableDataNameRepeat=\u30B5\u30FC\u30D0\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u304C\u65E2\u306B\u3042\u308B\u304B\u3001\u540C\u3058\u540D\u524D\u306E\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u304C\u5B58\u5728\u3057\u3066\u3044\u307E\u3059\u3002 Choose_None=\u9078\u629E\u3057\u306A\u3044 File-tree=\u30D5\u30A1\u30A4\u30EB\u30C4\u30EA\u30FC FRFont-bold=\u592A\u5B57 FR-Designer_Set_Submit_Condition=\u66F8\u304D\u8FBC\u307F\u6761\u4EF6\u8A2D\u5B9A Form-Change_Widget_Name=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u540D\u3092\u5909\u66F4\u3059\u308B -ReportColumns-Report_Columns=\u5E33\u7968\u306E\u30B5\u30D6\u30D5\u30A3\u30FC\u30EB\u30C9 +ReportColumns-Report_Columns=\u5E33\u7968\u306E\u6BB5\u7D44\u307F Can_not_use_FormatBursh=\u9023\u7D9A\u3057\u306A\u3044\u8907\u6570\u9818\u57DF\u3067\u306F\u66F8\u5F0F\u30B3\u30D4\u30FC\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 CellElement-Property_Table=\u30BB\u30EB\u5C5E\u6027\u8868 -Dictionary-Dynamic_SQL=\u52D5\u7684SQL +Dictionary-Dynamic_SQL=\u30C0\u30A4\u30CA\u30DF\u30C3\u30AFSQL FR-Designer_Form-CheckBoxGroup=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B0\u30EB\u30FC\u30D7 DBCP_TIME_BETWEEN_EVICTIONRUNSMILLIS=\u30A2\u30A4\u30C9\u30EB\u63A5\u7D9A\u306E\u691C\u8A3C\u9593\u9694 ReportD-Export_Hided_Column=\u975E\u8868\u793A\u5217\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 @@ -1167,22 +1167,22 @@ 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(\u30AB\u30F3\u30DE\u533A\u5207\u308A) -FR-Designer-StyleAlignment_Left=\u5DE6\u63C3\u3048 +FR-Designer-StyleAlignment_Left=\u5DE6\u8A70\u3081 BackgroundTexture-PaperBag=\u7D19\u888B 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 +SingleLayer=\u30B7\u30F3\u30B0\u30EB\u30EC\u30A4\u30E4 +Or-you=\u307E\u305F\u306F +FR-Designer_Certificate_Path=\u8A3C\u660E\u66F8\u30D1\u30B9 Utils-Last_Page=\u6700\u7D42\u30DA\u30FC\u30B8 -BarCodeD-Drawing_Text=\u30C6\u30AD\u30B9\u30C8\u3092\u8868\u793A +BarCodeD-Drawing_Text=\u30C6\u30AD\u30B9\u30C8\u306E\u8868\u793A Warning-Template_Do_Not_Exsit=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 BindColumn-Group=\u30B0\u30EB\u30FC\u30D7\u5225 Export-SVG=SVG -Plane3D=\u5E73\u97623D -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 +Plane3D=\u5E73\u97623-D +SessionID=sessionID\u306F\u30A2\u30AF\u30BB\u30B9\u4E2D\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u30BF\u30B0\u30D1\u30E9\u30E1\u30FC\u30BF\u3067\u3059 FR-Designer_Height=\u9AD8\u3055 HF-Odd_Page=\u5947\u6570\u30DA\u30FC\u30B8 -About-All_Rights_Reserved=\u5168\u3066\u306E\u6A29\u5229\u3092\u4FDD\u7559 +About-All_Rights_Reserved=\u3059\u3079\u3066\u306E\u6A29\u5229\u3092\u4FDD\u7559 Utils-Current_Cell=\u73FE\u5728\u306E\u30BB\u30EB Web_Preview_Message=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u3092\u73FE\u5728\u306E\u5B9F\u884C\u74B0\u5883\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u4FDD\u5B58\u3057\u3066\u4E0B\u3055\u3044 FR-Hyperlink_Chart_Float=\u30B0\u30E9\u30D5\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF-\u30D5\u30ED\u30FC\u30C6\u30A3\u30F3\u30B0\u8981\u7D20\u9023\u52D5 @@ -1191,8 +1191,8 @@ 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\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 +FR-Designer_Allow_Blank=\u7A7A\u6B04\u3092\u8A31\u53EF +Build_Tree_Accord_Parent_Marked_Filed=\u89AA\u30BF\u30B0\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u3001\u69CB\u7BC9\u3055\u308C\u305F\u30C4\u30EA\u30FC\u3092\u8A2D\u5B9A\u3057\u3001\u9078\u629E\u3057\u305F\u30C7\u30FC\u30BF\u306B\u4F9D\u5B58 Preference-Horizontal_Scroll_Bar_Visible=\u6C34\u5E73\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u3092\u8868\u793A Scope=\u7BC4\u56F2 Save_All_Records_In_Memory=\u5168\u30EC\u30B3\u30FC\u30C9\u30E1\u30E2\u30EA\u30AD\u30E3\u30C3\u30B7\u30E5 @@ -1201,15 +1201,15 @@ FlowLayout=\u30D5\u30ED\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8 M_Report-Report_Footer=\u5E33\u7968\u30D5\u30C3\u30BF\u30FC FR-Action_Add=\u8FFD\u52A0 BorderLayout-East=\u6771 -feedback_tip=400\u5B57\u4EE5\u5185 +feedback_tip=400\u5B57\u4EE5\u5185\u3067\u554F\u984C\u306E\u8AAC\u660E\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 FS_Start_Date=\u958B\u59CB\u65E5\u4ED8 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\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 +FR-Designer-Plugin_Has_Been_Disabled=\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u4F7F\u7528\u7981\u6B62\u306F\u3001\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC\u30D0\u306E\u518D\u8D77\u52D5\u5F8C\u306B\u6709\u52B9\u306B\u306A\u308A\u307E\u3059\u3002\u30B5\u30FC\u30D0\u306F\u624B\u52D5\u3067\u518D\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044 Sort-Original=\u30BD\u30FC\u30C8\u3057\u306A\u3044 -Utils-Top_to_Bottom_a=\u4E0A\u304B\u3089\u4E0B -Parameter-String=\u6587\u5B57\u578B +Utils-Top_to_Bottom_a=\u4E0A\u304B\u3089\u4E0B\u3078 +Parameter-String=\u6587\u5B57\u5217 InnerRadis=\u5185\u5F84\u30B5\u30A4\u30BA Want_To_Cover_It=\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B Divided_stage=\u30B9\u30C6\u30FC\u30B8\u3092\u5206\u5272 @@ -1218,35 +1218,35 @@ ReportServerP-PDF=PDF Utils-Switch_To_Class_Reportlet=\u30D7\u30ED\u30B0\u30E9\u30E0\u30CD\u30C3\u30C8\u5E33\u7968\u306B\u5207\u308A\u66FF\u3048\u308B FR-Designer_Show_Blank_Column=\u7A7A\u767D\u5217\u88DC\u5145 M_Edit-Redo=\u3084\u308A\u76F4\u3057 -Visibility=\u53EF\u8996\u6027 -Series_Use_Default=\u7CFB\u5217\u30C7\u30D5\u30A9\u30EB\u30C8\u4F7F\u7528 +Visibility=\u8868\u793A\u6027 +Series_Use_Default=\u7CFB\u5217\u65E2\u5B9A\u4F7F\u7528 Has_Selected=\u9078\u629E\u3055\u308C\u305F BackgroundTexture-Walnut=\u304F\u308B\u307F -FormulaD-Function_category=\u95A2\u6570\u30BF\u30A4\u30D7 -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 +FormulaD-Function_category=\u95A2\u6570\u306E\u5206\u985E +Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 +FR-Designer-Beyond_Bounds=body\u30DC\u30FC\u30C0\u30FC\u3092\u8D8A\u3048\u305F\u305F\u3081\u3001\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u305B\u3093 seconds=\u79D2 Auto-Build=\u81EA\u52D5\u69CB\u7BC9 -FR-Designer-Plugin_Install_Successful=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u3001\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC\u30D0\u306E\u518D\u8D77\u52D5\u5F8C\u306B\u6709\u52B9\u306B\u306A\u308A\u307E\u3059\u3002\u30B5\u30FC\u30D0\u306F\u624B\u52D5\u3067\u518D\u8D77\u52D5\u3057\u3066\u4E0B\u3055\u3044 +FR-Designer-Plugin_Install_Successful=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u3001\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC\u30D0\u306E\u518D\u8D77\u52D5\u5F8C\u306B\u6709\u52B9\u306B\u306A\u308A\u307E\u3059\u3002\u30B5\u30FC\u30D0\u306F\u624B\u52D5\u3067\u518D\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044 Template_Path=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D1\u30B9 FR-Designer-FRFont_Bold=\u592A\u5B57 Poly_Name=\u30D6\u30ED\u30C3\u30AF\u540D WorkBook=\u30EF\u30FC\u30AF\u30D6\u30C3\u30AF -Hyperlink-Self_Window=\u73FE\u30A6\u30A3\u30F3\u30C9\u30A6 +Hyperlink-Self_Window=\u73FE\u5728\u306E\u30A6\u30A3\u30F3\u30C9\u30A6 FR-Designer-Widget-Style_Title=\u30BF\u30A4\u30C8\u30EB FR-Designer-FRFont_Size=\u30B5\u30A4\u30BA M_File-Export-SVG=SVG Capacity=\u5BB9\u91CF Rose_Red=\u30ED\u30FC\u30BA\u30EC\u30C3\u30C9 -StyleAlignment-The_value_of_rotation_must_between_-90_and_90_degrees=\u56DE\u8EE2\u89D2\u5EA6\u306F\u5FC5\u305A-90\uFF5E90\u306E\u9593\u306B +StyleAlignment-The_value_of_rotation_must_between_-90_and_90_degrees=\u56DE\u8EE2\u89D2\u5EA6\u306F-90\u304B\u308990\u306E\u7BC4\u56F2 HF-Move_Left=\u5DE6\u3078 Cell_Group=\u30BB\u30EB\u30B0\u30EB\u30FC\u30D7 Week=\u9031 -PageSetup-Orientation=\u5411\u304D +PageSetup-Orientation=\u65B9\u5411 M-Open_Recent=\u6700\u8FD1\u4F7F\u7528\u3057\u305F NNormal=\u6B63\u5E38 Integer=\u6574\u6570 -Select_The_Source_To_Save=\u4FDD\u5B58\u3057\u305F\u3044\u9805\u76EE\u3092\u9078\u629E +Select_The_Source_To_Save=\u4FDD\u5B58\u9805\u76EE\u3092\u9078\u629E Transition=\u30D6\u30E9\u30F3\u30C1 FR-Designer_Get_Lock=\u30ED\u30C3\u30AF one_record_exists_in_many_groups=1\u30EC\u30B3\u30FC\u30C9\u8907\u6570\u30B0\u30EB\u30FC\u30D7\u6240\u5C5E @@ -1257,7 +1257,7 @@ Deep=\u6DF1\u3055 FRFont-Shadow=\u5F71 Reportlet=\u30CD\u30C3\u30C8\u5E33\u7968 Calendar=\u30AB\u30EC\u30F3\u30C0\u30FC -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 +DateFormat-Custom_Warning=\u6CE8\:\u30AB\u30B9\u30BF\u30E0\u65E5\u4ED8\u66F8\u5F0F\u306F\u66F8\u5F0F\u30C1\u30A7\u30C3\u30AF\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u306A\u3044 Unit_MM=\u30DF\u30EA Server-Start=\u8D77\u52D5 CellPage-Can_Break_On_Paginate=\u6539\u30DA\u30FC\u30B8\u6642\u6539\u6BB5 @@ -1265,7 +1265,7 @@ Build_Tree_Accord_Marked_Filed_Length=\u9078\u629E\u3057\u305F\u30C7\u30FC\u30BF ComboCheckBox-Start_Symbol=\u958B\u59CB\u6587\u5B57 Real=\u5B9F\u969B RWA-Batch_Modify_Cells=\u30BB\u30EB\u4E00\u62EC\u7DE8\u96C6 -FR-Designer_Build-Way=\u69CB\u7BC9\u65B9\u5F0F +FR-Designer_Build-Way=\u69CB\u7BC9\u65B9\u6CD5 Read=\u8AAD\u307F\u8FBC\u307F StyleAlignment-Degrees=\u5EA6 M_Format_A-Border=\u67A0(B) @@ -1273,25 +1273,25 @@ Utils-Delete_Record=\u8A18\u9332\u524A\u9664 Reload=\u518D\u30ED\u30FC\u30C9 Image-Select_Picture=\u753B\u50CF\u9078\u629E RWA-Submit=\u66F8\u304D\u8FBC\u307F -the_template=\u5F53\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 +the_template=\u8A72\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 Data-Check=\u30C7\u30FC\u30BF\u30C1\u30A7\u30C3\u30AF Unknown=\u672A\u77E5 -Submit_Style=\u66F8\u304D\u8FBC\u307F\u65B9\u5F0F +Submit_Style=\u66F8\u304D\u8FBC\u307F\u65B9\u6CD5 Left_Border_Line=\u5DE6\u7F6B\u7DDA Brown=\u8336\u8272 Select_A_Tree_DataSource_To_Build=1\u3064\u306E\u30C4\u30EA\u30FC\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u3092\u9078\u629E\u3057\u3066\u69CB\u7BC9 Overlapping=\u91CD\u306A\u308A\u30BF\u30A4\u30D7 DS-Class_TableData=\u30D7\u30ED\u30B0\u30E9\u30E0\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install=\u672A\u5BFE\u5FDC\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u305F\u3081\u3001\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3067\u304D\u307E\u305B\u3093 -DisplayNothingBeforeQuery=\u30AF\u30A8\u30EA\u524D\u5E33\u7968\u5185\u5BB9\u3092\u8868\u793A\u3057\u307E\u305B\u3093 +DisplayNothingBeforeQuery=\u30AF\u30A8\u30EA\u30AF\u30EA\u30C3\u30AF\u524D\u306B\u5E33\u7968\u5185\u5BB9\u3092\u8868\u793A\u3057\u306A\u3044 Y_Axis=Y\u8EF8 FormulaD-Most_Recently_Used=\u3088\u304F\u5229\u7528\u3059\u308B\u95A2\u6570 FormulaD-Input_formula_in_the_text_area_below=\u4EE5\u4E0B\u306E\u30C6\u30AD\u30B9\u30C8\u30DC\u30C3\u30AF\u30B9\u306B\u6570\u5F0F\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 -Build-Way=\u69CB\u7BC9\u65B9\u5F0F +Build-Way=\u69CB\u7BC9\u65B9\u6CD5 M_Edit-Undo=\u5143\u306B\u623B\u3059 Line-Style=\u7DDA\u306E\u7A2E\u985E Datasource-Other_Attributes=\u305D\u306E\u4ED6\u5C5E\u6027 @@ -1310,26 +1310,26 @@ D-ChartArea=\u30B0\u30E9\u30D5\u30A8\u30EA\u30A2 Only=\u3060\u3051 FR-Base_No=\u3044\u3044\u3048 SpecifiedG-Put_all_others_together=\u305D\u306E\u4ED6\u306E\u3059\u3079\u3066\u3092\u7D71\u5408 -HF-NewLine_Des=\u4E0A\u306E\u79FB\u52D5\u3068\u524A\u9664\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u6539\u884C\u30B3\u30FC\u30C9\u3092\u64CD\u4F5C\u3059\u308B +HF-NewLine_Des=\u4E0A\u306E\u79FB\u52D5\u3068\u524A\u9664\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u6539\u884C\u6587\u5B57\u3092\u64CD\u4F5C\u3067\u304D\u308B WLayout-Border-ThreeContainer=\u5317\u90E8\u3001\u897F\u90E8\u3001\u4E2D\u592E\u90E8\u306E3\u30D6\u30ED\u30C3\u30AF\u306E\u30DC\u30FC\u30C0\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u3067\u69CB\u6210\u3055\u308C\u308B\u30EC\u30A4\u30A2\u30A6\u30C8\u3002\u5317\u90E8\u30D6\u30ED\u30C3\u30AF\u3067\u306F\u9AD8\u3055\u3092\u3001\u897F\u90E8\u30D6\u30ED\u30C3\u30AF\u3067\u306F\u5E45\u3092\u8ABF\u6574\u3067\u304D\u307E\u3059\u3002 Parameter_Name=\u30D1\u30E9\u30E1\u30FC\u30BF\u540D FR-Base_Table=\u8868 -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 +Des-Remove_WorkSheet=\u9078\u629E\u3057\u305F\u30B7\u30FC\u30C8\u306B\u30C7\u30FC\u30BF\u304C\u65E2\u306B\u3042\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u30C7\u30FC\u30BF\u3092\u5B8C\u5168\u306B\u524A\u9664\u3059\u308B\u306B\u306F\u3001[OK]\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044\u3002 Rotation=\u56DE\u8EE2 Undefined=\u672A\u5B9A\u7FA9 -Support-Auto_Complete_Shortcut=\u30AA\u30FC\u30C8\u30B3\u30F3\u30D7\u30EA\u30FC\u30C8\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC +Support-Auto_Complete_Shortcut=\u81EA\u52D5\u88DC\u5B8C\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 +Utils-Beyond_the_bottom_side_of_Border=\u4E0B\u306E\u5883\u754C\u3092\u8D85\u904E\u3057\u3066\u3044\u307E\u3059\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=\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) +Click-Me=\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u30B5\u30D7\u30E9\u30A4\u30BA\u304C\u3042\u308A\u307E\u3059\u3088! +Hyperlink-Self=\u540C\u3058\u30D5\u30EC\u30FC\u30E0(S) +Tree-Select_Leaf_Only_Tips=(\u30C1\u30A7\u30C3\u30AF\u304C\u306A\u3044\u5834\u5408\u3001\u5B50\u30CE\u30FC\u30C9\u3092\u542B\u307E\u306A\u3044\u9078\u629E\u306E\u30CE\u30FC\u30C9\u3060\u3051\u3092\u623B\u3059) StyleAlignment-Text_Rotation=\u6587\u5B57\u5217\u306E\u65B9\u5411 -Format-Error=\u5165\u529B\u5024\u306E\u66F8\u5F0F\u306F\u4E0D\u6B63\u78BA\u3067\u3059 +Format-Error=\u5165\u529B\u5024\u306E\u66F8\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093 Server-Stop=\u505C\u6B62 Preference-Setting_Grid=\u30B0\u30EA\u30C3\u30C9\u8A2D\u5B9A ReportServerP-Add_Printer=\u30D7\u30EA\u30F3\u30BF\u8FFD\u52A0 @@ -1339,49 +1339,49 @@ 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=\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 +Click-Get_Default_URL=\u3053\u306E\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u65E2\u5B9A\u306EURL\u3092\u53D6\u5F97 StyleAlignment-Wrap_Text=\u81EA\u52D5\u6539\u884C Remove_All_Button=\u3059\u3079\u3066\u306E\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30A2 FR-Designer_Component_Interval=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u9593\u9694 -ReportColumns-Columns_vertically=\u5217\u306E\u30B5\u30D6\u30D5\u30A3\u30FC\u30EB\u30C9 +ReportColumns-Columns_vertically=\u5217\u306E\u6BB5\u7D44\u307F 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\u518D\u8D77\u52D5 +FR-Designer-Basic_Restart_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u518D\u8D77\u52D5 ReportServerP-PDF2-INFO=LINUX / UNIX\u306B\u4E2D\u56FD\u8A9E\u30D5\u30A9\u30F3\u30C8\u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u3060\u3051\u306B\u4F7F\u3046 FormulaD-Check_Valid=\u6570\u5F0F\u306E\u691C\u8A3C server_disconnected=\u63A5\u7D9A\u304C\u5207\u65AD\u3055\u308C\u305F -ParameterD-Parameter_name_cannot_be_null=\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093 +ParameterD-Parameter_name_cannot_be_null=\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u3092\u7A7A\u6B04\u306B\u3067\u304D\u307E\u305B\u3093 FR-Designer-Plugin_Version_Is_Lower_Than_Current=\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u4ECA\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3088\u308A\u4F4E\u3044 RWA-NotChange_Unmodified=\u5909\u66F4\u6642\u306E\u307F\u66F8\u304D\u8FBC\u307F User_Information=\u30E6\u30FC\u30B6\u30FC\u60C5\u5831 Custom_styles_lost=\u30AB\u30B9\u30BF\u30E0\u30B9\u30BF\u30A4\u30EB\u306F\u5931\u308F\u308C\u307E\u3057\u305F PageSetup-Margin=\u30DE\u30FC\u30B8\u30F3 M-New_FormBook=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u65B0\u898F\u4F5C\u6210 -Widget-TreeNode=\u30C4\u30FC\u30CE\u30FC\u30C9\u30DC\u30BF\u30F3 +Widget-TreeNode=\u30C4\u30EA\u30FC\u30CE\u30FC\u30C9\u30DC\u30BF\u30F3 Form-Url=\u30A2\u30C9\u30EC\u30B9 -Utils-Beyond_the_left_side_of_Border=\u5DE6\u306E\u5883\u754C\u3092\u8D85\u904E\u3057\u3066\u3044\u307E\u3059\u3002\u914D\u7F6E\u3067\u304D\u307E\u305B\u3093\u3002 -Float_Element_Name=\u30D5\u30ED\u30FC\u30C8\u8981\u7D20\u540D +Utils-Beyond_the_left_side_of_Border=\u5DE6\u306E\u5883\u754C\u3092\u8D85\u904E\u3057\u3066\u3044\u307E\u3059\u3002 +Float_Element_Name=\u30D5\u30ED\u30FC\u30C6\u30A3\u30F3\u30B0\u8981\u7D20\u540D Purple=\u7D2B DashBoard-Potence=\u6A29\u9650 -M-Close_Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30AA\u30D5(C) +M-Close_Template=\u5E33\u7968\u3092\u9589\u3058\u308B(C) paper=\u7528\u7D19 -Not_Exsit=\u5E33\u7968\u306B\u5B58\u5728\u3057\u306A\u3044 +Not_Exsit=\u5E33\u7968\u306B\u3042\u308A\u307E\u305B\u3093 Utils-Insert_Row=\u884C\u633F\u5165 Utils-Delete_Row=\u884C\u524A\u9664 not_support_authority_edit=\u3053\u306E\u8981\u7D20\u306F\u6A29\u9650\u5236\u5FA1\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093 -Formula_Tips=\u6570\u5F0F\u306F\u5FC5\u305A" +Formula_Tips=\u6570\u5F0F\u306F\u5FC5\u305A"\="\u3068\u59CB\u307E\u308B\uFF01 FR-Action_Copy=\u30B3\u30D4\u30FC -Compile_Success=\u30B3\u30F3\u30D1\u30A4\u30EB\u306B\u6210\u529F\u3057\u305F +Compile_Success=\u30B3\u30F3\u30D1\u30A4\u30EB\u306B\u6210\u529F\u3057\u307E\u3057\u305F BackgroundTexture-RecycledPaper=\u518D\u751F\u7D19 StyleAlignment-Single_Line=1\u884C\u8868\u793A Utils-Move_Down=\u4E0B\u3078 -Please_Set_Repeat_First=\u6700\u521D\u306B\u7E70\u308A\u8FD4\u3057\u30BF\u30A4\u30C8\u30EB\u306E\u884C\u3068\u5217\u3092\u8A2D\u5B9A\u3057\u3066\u4E0B\u3055\u3044 +Please_Set_Repeat_First=\u7E70\u308A\u8FD4\u3057\u30BF\u30A4\u30C8\u30EB\u884C\u3068\u5217\u3092\u4E8B\u524D\u306B\u5B9A\u7FA9\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 Writer-ShortCuts_Setting=\u66F8\u304D\u8FBC\u307F\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC\u8A2D\u5B9A Verify-Data_Verify=\u30C7\u30FC\u30BF\u691C\u8A3C -FR-mobile_analysis_style=\u89E3\u6790\u65B9\u5F0F +FR-mobile_analysis_style=\u89E3\u6790\u65B9\u6CD5 Confirm-Delete-File=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u307E\u3059\u304B? -PageSetup-Header=\u30D8\u30C3\u30C0\u30FC +PageSetup-Header=\u30DA\u30FC\u30B8\u30D8\u30C3\u30C0\u30FC JavaScrit-Asynch=\u975E\u540C\u671F ReportServerP-Toolbar=\u30C4\u30FC\u30EB\u30D0\u30FC Utils-Top_to_Bottom=\u7E26\u65B9\u5411 @@ -1401,32 +1401,32 @@ ColorMatch=\u914D\u8272 M_Edit-Order=\u7A4D\u307F\u91CD\u306D\u9806\u756A(O) BackgroundTexture-Bouquet=\u30D6\u30FC\u30B1 Verify-Error_Information=\u30A8\u30E9\u30FC\u60C5\u5831\u691C\u8A3C -LayerData=\u57FA\u790E\u30EC\u30A4\u30E4\u30FC\u306E\u30C7\u30FC\u30BF +LayerData=\u57FA\u790E\u30EC\u30A4\u30E4\u306E\u30C7\u30FC\u30BF Rename=\u540D\u524D\u3092\u5909\u66F4 Widget-Load_By_Async=\u975E\u540C\u671F\u30ED\u30FC\u30C9 Shape=\u56F3\u5F62 -BindColumn-This_Condition_has_been_existed=\u3053\u306E\u6761\u4EF6\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u308B +BindColumn-This_Condition_has_been_existed=\u3053\u306E\u6761\u4EF6\u306F\u65E2\u306B\u3042\u308A\u307E\u3059 NS-exception_readError=\u30A8\u30E9\u30FC\u30B3\u30FC\u30C9\:1305 \u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u89E3\u6790\u30A8\u30E9\u30FC 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 +REPORTLETS=\u8907\u6570\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u30D1\u30B9\u306E\u30D1\u30E9\u30E1\u30FC\u30BF WLayout-Card-ToolTip=\u30AB\u30FC\u30C9\u578B\u30EC\u30A4\u30A2\u30A6\u30C8\u3002\u3053\u306E\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u306B\u8907\u6570\u306E\u4ED6\u306E\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u8FFD\u52A0\u3067\u304D\u307E\u3059\u3002 M-Popup_ChartType=\u30B0\u30E9\u30D5\u30BF\u30A4\u30D7 -Please-Wait=\u304A\u5F85\u3061\u4E0B\u3055\u3044 +Please-Wait=\u304A\u5F85\u3061\u304F\u3060\u3055\u3044 FR-Designer-Form-ToolBar_Widget=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 Widget-Array=\u914D\u5217 FieldBinding=\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30D0\u30A4\u30F3\u30C9 Top_Bottom_Border_Line=\u4E0A\u7F6B\u7DDA + \u4E0B\u7F6B\u7DDA M-Others=\u305D\u306E\u4ED6... -Hyperlink-Link_Opened_in=\u30EA\u30F3\u30AF\u306E\u5B9F\u884C\u65B9\u5F0F +Hyperlink-Link_Opened_in=\u30EA\u30F3\u30AF\u306E\u5B9F\u884C\u65B9\u6CD5 FR-Utils_WorkBook=\u30EF\u30FC\u30AF\u30D6\u30C3\u30AF M_Insert-Float=\u30D5\u30ED\u30FC\u30C6\u30A3\u30F3\u30B0\u8981\u7D20 Out_Thick_Border_Line=\u5916\u67A0\u592A\u7F6B\u7DDA FR-App-File_Lookup_range=\u691C\u7D22\u7BC4\u56F2 -ReportColumns-Columns_to=\u30B5\u30D6\u30D5\u30A3\u30FC\u30EB\u30C9\u7D50\u679C +ReportColumns-Columns_to=\u6BB5\u7D44\u307F\u7D50\u679C Transparent=\u900F\u660E -Parameter-Integer=\u6574\u6570\u578B +Parameter-Integer=\u6574\u6570 PDF-Print_Setting=PDF\u5370\u5237\u8A2D\u5B9A Server-Embedded_Server=\u7D44\u307F\u8FBC\u307F\u30B5\u30FC\u30D0 M_Server-Server_Config_Manager=\u30B5\u30FC\u30D0\u8A2D\u5B9A @@ -1444,7 +1444,7 @@ Form-Basic_Properties=\u57FA\u672C\u5C5E\u6027 quote=\u53C2\u7167 Thu=\u6728 Collect-Collect_User_Information=\u30E6\u30FC\u30B6\u30FC\u60C5\u5831\u3092\u53CE\u96C6 -Layer-Build=\u30EC\u30A4\u30E4\u30FC\u5225\u69CB\u7BC9 +Layer-Build=\u30EC\u30A4\u30E4\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 @@ -1452,18 +1452,18 @@ 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 +Env-Configure_Workspace=\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u8A2D\u5B9A feedback_info=\u8CB4\u91CD\u306A\u610F\u898B\u3042\u308A\u304C\u3068\u3046\u3054\u3056\u3044\u307E\u3059\u3002\u79C1\u9054\u306F\u3067\u304D\u308B\u3060\u3051\u65E9\u304F\u3042\u306A\u305F\u3068\u9023\u7D61\u3057\u307E\u3059\u3002 Ratio=\u5272\u5408 DBCP_TEST_ON_BORROW=\u63A5\u7D9A\u306E\u8CB8\u51FA\u524D\u306B\u63A5\u7D9A\u6709\u52B9\u6027\u3092\u691C\u8A3C -FR-Designer_layerIndex=\u4F9D\u5B58\u30EC\u30A4\u30E4\u30FC\u6570 +FR-Designer_layerIndex=\u4F9D\u5B58\u30EC\u30A4\u30E4\u6570 WEB-Write_Setting=\u66F8\u304D\u8FBC\u307F\u30DA\u30FC\u30B8\u8A2D\u5B9A M-New_WorkBook=\u30EF\u30FC\u30AF\u30D6\u30C3\u30AF\u65B0\u898F\u4F5C\u6210 -FR-Designer-Plugin_Has_Been_Actived=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\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 +FR-Designer-Plugin_Has_Been_Actived=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u65E2\u306B\u8D77\u52D5\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC\u30D0\u306E\u518D\u8D77\u52D5\u5F8C\u306B\u6709\u52B9\u306B\u306A\u308A\u307E\u3059\u3002\u30B5\u30FC\u30D0\u306F\u624B\u52D5\u3067\u518D\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044 Datasource-Maximum_Number_of_Preview_Rows=\u6700\u5927\u884C\u6570 ExpandD-Cell_Expand_Attributes=\u5C55\u958B\u5C5E\u6027 -Select_the_repeated_row_and_column=\u7E70\u308A\u8FD4\u3057\u3057\u305F\u3044\u884C\u5217\u3092\u9078\u629E -FormulaD-Date_&_Time=\u65E5\u4ED8\u3068\u6642\u9593\u95A2\u6570 +Select_the_repeated_row_and_column=\u7E70\u308A\u8FD4\u3057\u884C\u5217\u3092\u9078\u629E +FormulaD-Date_&_Time=\u65E5\u4ED8\u3068\u6642\u523B\u95A2\u6570 Max-Mem-Row-Count=\u30C7\u30A3\u30B9\u30AF\u30AD\u30E3\u30C3\u30B7\u30E5 \u6761\u4EF6 : \u8A18\u9332\u6570> BorderLayout-South=\u5357 Export-Text=\u30C6\u30AD\u30B9\u30C8\u30D5\u30A1\u30A4\u30EB(\u30BF\u30D6\u533A\u5207\u308A) @@ -1473,13 +1473,13 @@ M_Edit-Send_Backward=\u80CC\u9762\u3078\u79FB\u52D5(B) Form-Layout=\u30EC\u30A4\u30A2\u30A6\u30C8 FR-Designer-Plugin_Shop_Need_Update=\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u30B9\u30C8\u30A2\u304C\u3042\u308A\u307E\u3059\u3001\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3057\u307E\u3059\u304B? FR-Designer_WorkBook=\u30EF\u30FC\u30AF\u30D6\u30C3\u30AF -UpBarBorderStyleAndColor=\u4E0A\u6607\u30B9\u30BF\u30A4\u30EB +UpBarBorderStyleAndColor=\u967D\u7DDA\u30B9\u30BF\u30A4\u30EB GridLayout=\u30B0\u30EA\u30C3\u30C9\u30EC\u30A4\u30A2\u30A6\u30C8 -Utils-Default_Value=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024 +Utils-Default_Value=\u65E2\u5B9A\u5024 Widget-Comb_Widget_Config=\u7D44\u307F\u5408\u308F\u305B\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 Import-Excel2007_Source=Excel2007\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB Y-Coordinate=\u7E26\u5EA7\u6A19 -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-Base_SimSun_Not_Found=\u5B8B\u4F53\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u73FE\u5728\u306E\u30B7\u30B9\u30C6\u30E0\u306E\u4E0B\u3067\u65E2\u5B9A\u8A00\u8A9E\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 FR-Designer_Seriously=\u91CD\u5927 Upload=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9 Form-Widget_Property_Table=\u5C5E\u6027\u8868 @@ -1492,7 +1492,7 @@ Yes=\u306F\u3044 Datasource-JNDI_Name=JNDI\u540D Utils-Delete_Column=\u5217\u524A\u9664 HF-Delete_it=\u524A\u9664 -JavaScript-Dynamic_Parameters=\u52D5\u7684\u30D1\u30E9\u30E1\u30FC\u30BF +JavaScript-Dynamic_Parameters=\u30C0\u30A4\u30CA\u30DF\u30C3\u30AF\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\u60C5\u5831 @@ -1500,10 +1500,10 @@ 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 +FR-Please_Rename=\u540D\u524D\u3092\u5909\u66F4\u3057\u3066\u304F\u3060\u3055\u3044 Select_Data_Set=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u9078\u629E Name_has_Colon=\u540D\u524D\: -ReportColumns-Columns_horizontally=\u884C\u306E\u30B5\u30D6\u30D5\u30A3\u30FC\u30EB\u30C9 +ReportColumns-Columns_horizontally=\u884C\u306E\u6BB5\u7D44\u307F FR-Base_Yes=\u306F\u3044 ReportColumns-Repeat_Row=\u884C\u306E\u9806\u5E8F\u3092\u30B3\u30D4\u30FC Print_Setting=\u5370\u5237\u8A2D\u5B9A @@ -1512,35 +1512,35 @@ 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=\u30DE\u30A4\u30AF\u30ED\u30BD\u30D5\u30C8\u30E4\u30D8\u30A4 -Utils-Now_create_connection=\u30C7\u30FC\u30BF\u63A5\u7D9A\u69CB\u7BC9\u4E2D +Utils-Now_create_connection=\u30C7\u30FC\u30BF\u63A5\u7D9A\u78BA\u7ACB\u4E2D FR-Template-Path_chooseRightPath=\u6B63\u3057\u3044\u30D1\u30B9\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 -FR-Remote_Re_Connect_to_Server=\u30B5\u30FC\u30D0\u306F\u30AA\u30D5\u3055\u308C\u305F\u304C\u3001\u30B5\u30FC\u30D0\u306B\u518D\u63A5\u7D9A\u3057\u307E\u3059\u304B\uFF1F +FR-Remote_Re_Connect_to_Server=\u30B5\u30FC\u30D0\u3068\u63A5\u7D9A\u3057\u3066\u3044\u307E\u305B\u3093\u3001\u518D\u63A5\u7D9A\u3057\u307E\u3059\u304B? Nation=\u56FD DBCP_MAX_WAIT=\u63A5\u7D9A\u4E0D\u8DB3\u6642\u306E\u6700\u5927\u5F85\u6A5F\u6642\u9593 FR-App-Template_Form=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9 Address=\u30A2\u30C9\u30EC\u30B9 Sub_Report=\u5B50\u5E33\u7968 FR-Import-Export_Word=Word -FR-Server_Version_Tip=\u4ECA\u63A5\u7D9A\u3055\u308C\u3066\u3044\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u3054\u4F7F\u7528\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3088\u308A\u4F4E\u3044\u306E\u3067\u3001\u5F15\u304D\u7D9A\u304D\u63A5\u7D9A\u3059\u308B\u3068\u3001\u7DE8\u96C6\u306E\u3044\u304F\u3064\u304B\u306E\u5C5E\u6027\u306F\u6709\u52B9\u7684\u306B\u4FDD\u5B58\u3067\u304D\u306A\u3044\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 +FR-Server_Version_Tip=\u4ECA\u63A5\u7D9A\u3055\u308C\u3066\u3044\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u3054\u4F7F\u7528\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3088\u308A\u4F4E\u3044\u306E\u3067\u3001\u5F15\u304D\u7D9A\u304D\u63A5\u7D9A\u3059\u308B\u3068\u3001\u7DE8\u96C6\u306E\u3044\u304F\u3064\u304B\u306E\u5C5E\u6027\u306F\u6709\u52B9\u7684\u306B\u4FDD\u5B58\u3067\u304D\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u63A5\u7D9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308C\u3070\u3001\u304A\u4F7F\u3044\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3068\u4E00\u81F4\u3057\u3066\u304F\u3060\u3055\u3044 +StyleAlignment-Left_To_Right=\u5DE6\u304B\u3089\u53F3\u3078 Verify-ToolTips=\u6570\u5F0F\u3092\u6E80\u305F\u3055\u306A\u3044\u5834\u5408\u3001\u691C\u8A3C\u30A8\u30E9\u30FC\u60C5\u5831\u3092\u8868\u793A\u3059\u308B BackgroundTexture-Stationery=\u3072\u306A\u578B -FR-Designer_RWA-Help=\u5909\u66F4\u6642\u306E\u307F\u66F4\u65B0\u3092\u9078\u629E\u3057\u305F\u5834\u5408\u3001\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 +FR-Designer_RWA-Help=\u5909\u66F4\u6642\u306E\u307F\u66F4\u65B0\u3092\u9078\u629E\u3057\u305F\u5834\u5408\u3001\u30DA\u30FC\u30B8\u5225\u30D7\u30EC\u30D3\u30E5\u30FC\u3068\u66F8\u304D\u8FBC\u307F\u30D7\u30EC\u30D3\u30E5\u30FC\u306E\u5834\u5408\u3001\u30EC\u30B3\u30FC\u30C9\u5185\u5BB9\u306E\u30BB\u30EB\u306F\u7DE8\u96C6\u3084\u5909\u66F4\u304C\u3055\u308C\u306A\u3044\u305F\u3081\u3001\u3053\u306E\u30EC\u30B3\u30FC\u30C9\u306F\u66F4\u65B0\u3055\u308C\u307E\u305B\u3093\u3002\n\u5927\u91CF\u306E\u30C7\u30FC\u30BF\u306E\u30AF\u30A8\u30EA\u3084\u66F8\u304D\u8FBC\u307F\u3092\u3059\u308B\u5834\u5408\u3001\u3053\u306E\u8A2D\u5B9A\u3092\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u9AD8\u901F\u5316\u304C\u671F\u5F85\u3067\u304D\u307E\u3059\u3002 M_Insert-Barcode=\u30D0\u30FC\u30B3\u30FC\u30C9 Bounds=\u30DC\u30FC\u30C0\u30FC -FR-Designer-Undo_All_Authority_Operations=\u524D\u56DE\u306E\u7DE8\u96C6\u6A29\u9650\u306E\u3059\u3079\u3066\u306E\u64CD\u4F5C\u3092\u53D6\u308A\u6D88\u3059 -Datasource-Context=\u6587\u8108 +FR-Designer-Undo_All_Authority_Operations=\u524D\u56DE\u306E\u7DE8\u96C6\u6A29\u9650\u306E\u3059\u3079\u3066\u306E\u64CD\u4F5C\u3092\u5143\u306B\u623B\u3059 +Datasource-Context=\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8 CellWrite-Page_After_Column=\u5217\u5F8C FR-Designer_Cancel=\u30AD\u30E3\u30F3\u30BB\u30EB -Button-Group-Display-Columns=\u5217\u6570\u3092\u8868\u793A +Button-Group-Display-Columns=\u5217\u306E\u6570\u3092\u8868\u793A\u3059\u308B Widget-Height=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u9AD8\u3055 Examples=\u4F8B -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 +Formula_Dictionary_Display_Example=\u5B9F\u969B\u306E\u5024\u304C \=range(100)\u306E\u3068\u304D\u3001\u5B9F\u969B\u306E\u5024($$$)\u306E\u8868\u793A\u3059\u308B\u5024\u306E\u6570\u5F0F\u304C \= 0 - $$$\u306E\u3068\u304D\u3001\n\u6700\u7D42\u7684\u306A\u5B9F\u969B\u306E\u5024\u306F\u30011, 2, ..., 100\u3067\u3042\u308A\u3001\n\u305D\u306E\u8868\u793A\u7D50\u679C\u306F-1, -2, ..., -100\u3068\u306A\u308B\u3002 StyleAlignment-Horizontal=\u6A2A\u4F4D\u7F6E HyperLink_Must_Alone_Reset=\u8907\u6570\u306E\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF ExpandD-Expand_Direction=\u5C55\u958B\u65B9\u5411 Include=\u304C\u542B\u307E\u308C\u308B -Export-Excel-Page=\u6539\u30DA\u30FC\u30B8\u51FA\u529B +Export-Excel-Page=\u30DA\u30FC\u30B8\u5225\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 FR-Designer-Min_Height=\u6700\u5C0F\u9AD8\u3055 Filed=\u30A8\u30EA\u30A2 ReportServerP-Import_Css=Css\u53C2\u7167 @@ -1548,7 +1548,7 @@ 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=\u30A2\u30FC\u30AD\u30C6\u30AF\u30C1\u30E3\u30C4\u30EA\u30FC +Form-Hierarchy_Tree=\u69CB\u9020\u30C4\u30EA\u30FC WLayout-Border-LayoutContainer=\u5317\u90E8\u3001\u4E2D\u592E\u90E8\u306E2\u30D6\u30ED\u30C3\u30AF\u306E\u30DC\u30FC\u30C0\u30FC\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u3067\u69CB\u6210\u3055\u308C\u308B\u30EC\u30A4\u30A2\u30A6\u30C8\u3002\u5317\u90E8\u30D6\u30ED\u30C3\u30AF\u3067\u306F\u9AD8\u3055\u3092\u8ABF\u6574\u3067\u304D\u307E\u3059\u3002 Preference-JDK_Home=JDK\u30D1\u30B9 Utils-Insert_Column=\u5217\u633F\u5165 @@ -1561,7 +1561,7 @@ T_Insert-Float=\u30D5\u30ED\u30FC\u30C6\u30A3\u30F3\u30B0\u8981\u7D20\u633F\u516 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 +HF-Undefined=\u672A\u5B9A\u7FA9 Widget-User_Defined_Widget_Config=\u30AB\u30B9\u30BF\u30E0\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 Report-Write_Attributes_Group_Warning=\u30BB\u30EB\u30B0\u30EB\u30FC\u30D7\u306E\u5404\u30D5\u30A3\u30FC\u30EB\u30C9\u5185\u306E\u30BB\u30EB\u6570\u304C\u540C\u3058\u3067\u306A\u3051\u308C\u3070\u306A\u3089\u306A\u3044\u3053\u3068\u3092\u8A2D\u5B9A Form-Single_quote=\u5358\u5F15\u7528\u7B26 @@ -1578,7 +1578,7 @@ FR-Import-Export_Text=\u30C6\u30AD\u30B9\u30C8\u30D5\u30A1\u30A4\u30EB(\u30BF\u3 Values-Editor=\u5024\u30A8\u30C7\u30A3\u30BF FR-Designer_Yes=\u306F\u3044 ExpandD-Expandable=\u5C55\u958B -Tree-Return_Full_Path=\u7D50\u679C\u306F\u5B8C\u5168\u306A\u30EC\u30D9\u30EB\u30D1\u30B9\u3092\u623B\u308B +Tree-Return_Full_Path=\u7D50\u679C\u306F\u5B8C\u5168\u306A\u30EC\u30D9\u30EB\u30D1\u30B9\u3092\u623B\u3059 FRFont-bolditalic=\u592A\u5B57\u659C\u4F53 FR-Base_StyleFormat_Sample=\u4F8B Area_Value=\u30A8\u30EA\u30A2\u5024 @@ -1586,14 +1586,14 @@ FR-Designer-Plugin_Disable=\u4F7F\u7528\u7981\u6B62 Utils-Are_you_sure_to_remove_the_selected_item=\u9805\u76EE\u3092\u524A\u9664\u3057\u307E\u3059\u304B Face_Write=\u66F8\u304D\u8FBC\u307F Poly-Report_Block=\u5E33\u7968\u30BF\u30A4\u30D7\u30D6\u30ED\u30C3\u30AF -Vgap=\u5782\u76F4\u9699\u9593 +Vgap=\u5782\u76F4\u9593\u9699 FR-Designer_HyperLink_Must_Alone_Reset=\u8907\u6570\u306E\u30CF\u30A4\u30D1\u30FC\u30EA\u30F3\u30AF DS-Class=\u30D7\u30ED\u30B0\u30E9\u30E0 FR-Hyperlink_Please_Select_Reportlet=\u30CD\u30C3\u30C8\u5E33\u7968\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 FS_Report_Type=\u30BF\u30A4\u30D7 -HF-New_Line=\u6539\u884C\u30B3\u30FC\u30C9 +HF-New_Line=\u6539\u884C\u6587\u5B57 Privilege=\u6A29\u9650 -Export-Offline-Html=\u30AA\u30D5\u30E9\u30A4\u30F3html\u5E33\u7968\u3092\u51FA\u529B +Export-Offline-Html=\u30AA\u30D5\u30E9\u30A4\u30F3html\u5E33\u7968\u3092\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 FR-Designer_open-new-form-tip=\u73FE\u5728\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F711\u4EE5\u4E0B\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u4F5C\u6210\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001\u4E92\u63DB\u6027\u304C\u306A\u304F\u3001\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3002\u3053\u306E\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u3092\u7DE8\u96C6\u3059\u308B\u306B\u306F\u3001\u5BFE\u5FDC\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u3092\u5229\u7528\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 FR-Designer-Widget-Style_Frame_Style=\u30D5\u30EC\u30FC\u30E0\u30B9\u30BF\u30A4\u30EB Present-No_Present=\u5F62\u614B\u8A2D\u5B9A\u306A\u3057 @@ -1605,7 +1605,7 @@ 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\u3066\u3044\u307E\u3059\u3002\u3053\u306E\u30B9\u30BF\u30A4\u30EB\u3092\u8FFD\u52A0\u3057\u307E\u3059\u304B\uFF1F +Has_been_gone=\ \u5931\u308F\u308C\u3066\u3044\u307E\u3059\u3002\u3053\u306E\u30B9\u30BF\u30A4\u30EB\u3092\u8FFD\u52A0\u3057\u307E\u3059\u304B? RWA-Add_Field=\u30D5\u30A3\u30FC\u30EB\u30C9\u8FFD\u52A0 newNode=\u8FFD\u52A0\u30CE\u30FC\u30C9 PageSetup-Shrink_to_fit_content=\u30BB\u30EB\u5185\u5BB9\u306B\u5FDC\u3058\u3066\u81EA\u52D5\u8ABF\u6574 @@ -1624,11 +1624,11 @@ 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\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\u3057\u3044\u30D1\u30B9\u3092\u9078\u629E\u3057\u3066\u4E0B\u3055\u3044 +Sub_Report_Message3=\u81EA\u8EAB\u3092\u9078\u629E\u3067\u304D\u307E\u305B\u3093 +Sub_Report_Message1=\u6B63\u3057\u3044\u30D1\u30B9\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 Form-Allow_CustomData=\u30AB\u30B9\u30BF\u30E0 -FR-Server_Version_Tip_MoreInfo=\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u4E0D\u4E00\u81F4\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 +FR-Server_Version_Tip_MoreInfo=\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u4E0D\u4E00\u81F4\u3092\u539F\u56E0\u3068\u3059\u308B\u554F\u984C\u3092\u907F\u3051\u308B\u305F\u3081\u306B\u3001\u958B\u767A\u30C1\u30FC\u30E0\u3067\u5229\u7528\u3057\u3066\u3044\u308BFineReport\u88FD\u54C1\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3001\u53CA\u3073\u8A2D\u5B9A\u3055\u308C\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3092\u30C1\u30A7\u30C3\u30AF\u3092\u304A\u52E7\u3081\u3044\u305F\u3057\u307E\u3059\u3002n\u3088\u308A\u9AD8\u3044\u30C7\u30B6\u30A4\u30CA\u30FC\u3067\u4F5C\u6210\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F\u3068\u30A8\u30E9\u30FC\u306E\u767A\u751F\u539F\u56E0\u3068\u306A\u308B\u307B\u304B\u3001\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u6A5F\u80FD\u3084\u5C5E\u6027\u306E\u4E00\u90E8\u3092\u5931\u3046\u6050\u308C\u304C\u3042\u308A\u307E\u3059\u3002\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u4F5C\u6210\u7528\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u3001\u6700\u7D42\u7684\u306A\u8A2D\u5B9A\u5148\u3067\u3042\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3088\u308A\u9AD8\u3044\u5834\u5408\u3001\u30B5\u30FC\u30D0\u3067\u5229\u7528\u3055\u308C\u308B\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F\u6B63\u5E38\u306B\u52D5\u4F5C\u3057\u306A\u3044\u6050\u308C\u304C\u3042\u308A\u307E\u3059\u3002 +FR-Designer_Server-version-tip-moreInfo=\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u4E0D\u4E00\u81F4\u3092\u539F\u56E0\u3068\u3059\u308B\u554F\u984C\u3092\u907F\u3051\u308B\u305F\u3081\u306B\u3001\u958B\u767A\u30C1\u30FC\u30E0\u3067\u5229\u7528\u3057\u3066\u3044\u308BFineReport\u88FD\u54C1\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3001\u53CA\u3073\u8A2D\u5B9A\u3055\u308C\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3092\u30C1\u30A7\u30C3\u30AF\u3092\u304A\u52E7\u3081\u3044\u305F\u3057\u307E\u3059\u3002n\u3088\u308A\u9AD8\u3044\u30C7\u30B6\u30A4\u30CA\u30FC\u3067\u4F5C\u6210\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F\u3068\u30A8\u30E9\u30FC\u306E\u767A\u751F\u539F\u56E0\u3068\u306A\u308B\u307B\u304B\u3001\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u6A5F\u80FD\u3084\u5C5E\u6027\u306E\u4E00\u90E8\u3092\u5931\u3046\u6050\u308C\u304C\u3042\u308A\u307E\u3059\u3002\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u4F5C\u6210\u7528\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u3001\u6700\u7D42\u7684\u306A\u8A2D\u5B9A\u5148\u3067\u3042\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3088\u308A\u9AD8\u3044\u5834\u5408\u3001\u30B5\u30FC\u30D0\u3067\u5229\u7528\u3055\u308C\u308B\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F\u6B63\u5E38\u306B\u52D5\u4F5C\u3057\u306A\u3044\u6050\u308C\u304C\u3042\u308A\u307E\u3059\u3002 Get_Lock=\u30ED\u30C3\u30AF HF-Edit_Footer=\u30D5\u30C3\u30BF\u30FC\u7DE8\u96C6 Datasource-New_Charset=\u65B0\u6587\u5B57\u30B3\u30FC\u30C9 @@ -1636,26 +1636,26 @@ 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=\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 +Function-The_class_must_implement_the_interface=\u30AF\u30E9\u30B9\u306F\u6B21\u306E\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u5B9F\u88C5\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\: FR-Designer_ChartF-Transparency=\u900F\u660E Crimson=\u6DF1\u7D05\u8272 -FR-Hyperlink_Dialog=\u30C0\u30A4\u30A2\u30ED\u30B0\u30DC\u30C3\u30AF\u30B9 +FR-Hyperlink_Dialog=\u30C0\u30A4\u30A2\u30ED\u30B0 FR-Designer_Covered_All=\u3059\u3079\u3066\u4E0A\u66F8\u304D Hyperlink-New_Window=\u65B0\u898F\u30A6\u30A3\u30F3\u30C9\u30A6 -Style_Name=\u66F8\u5F0F\u540D -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 +Style_Name=\u30B9\u30BF\u30A4\u30EB\u540D +CSS_warning= \ \u76F8\u5BFE\u7684\u306A\u30EC\u30DD\u30FC\u30C8\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30D5\u30A9\u30EB\u30C0\u30FC\u3092WebReport\u3068\u3057\u3001\u53C2\u7167\u3057\u305F\u3044CSS\u30D5\u30A1\u30A4\u30EB\u540D\u304Ctest.css\u3067\u3042\u308A\u3001
 WebReport\\css\u5185\u306B\u3042\u308B\u3068\u304D\u3001\u76F8\u5BFE\u30D1\u30B9\u306Fcss/test.css\u3068\u306A\u308B FR-Base_Column=\u5217 Three_Rows_Of_Two_Grid=3\u884C2\u5217\u306E\u30B0\u30EA\u30C3\u30C9 DBCP_VALIDATION_QUERY=\u63A5\u7D9A\u6709\u52B9\u6027\u3092\u691C\u8A3C\u3059\u308BSQL\u30AF\u30A8\u30EA M_Edit-Clear_Formats=\u66F8\u5F0F(F) Parameter_Setting=\u30D1\u30E9\u30E1\u30FC\u30BF Related=\u9023\u52D5 -BorderLayout-Constraints=\u5834\u6240 +BorderLayout-Constraints=\u4F4D\u7F6E Write_Preview=\u66F8\u304D\u8FBC\u307F\u30D7\u30EC\u30D3\u30E5\u30FC PageSetup-Page_Order=\u30DA\u30FC\u30B8\u306E\u65B9\u5411 Verify-Verify_Formula=\u6570\u5F0F\u306E\u691C\u8A3C State=\u7701\u5E02 -FR-Designer-Widget-Style_Body_Background=\u4E3B\u4F53\u80CC\u666F +FR-Designer-Widget-Style_Body_Background=\u672C\u4F53\u80CC\u666F FR-App-Privilege_No=\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093 Please_Drag_ParaPane=Please_Drag_ParaPane Come_True=\u5B9F\u73FE @@ -1668,12 +1668,12 @@ 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=\u6587\u5B57\u578B\u3092\u623B\u3059 +Return-String=\u6587\u5B57\u5217\u3092\u623B\u3059 Margin=\u30DE\u30FC\u30B8\u30F3 Pitch_Percentage=\u9593\u9694\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8 FR-Base_TurnOff=\u7121\u52B9 Utils-has_been_existed=\u65E2\u306B\u3042\u308B -HF-Insert_Formula=\u6570\u5F0F +HF-Insert_Formula=\u6570\u5F0F\u306E\u633F\u5165 Utils-Exit_Designer=\u30C7\u30B6\u30A4\u30CA\u30FC\u7D42\u4E86 Formula_Dictionary_Display=\u5B9F\u969B\u306E\u5024\u7BC4\u56F2\u5185\u306E\u5024($$$)\u306B\u5BFE\u3057\u3066\u3001\u305D\u306E\u8868\u793A\u5024\u306F PageSetup-Left_to_right=\u4E0A\u304B\u3089\u4E0B @@ -1684,8 +1684,8 @@ Status=\u72B6\u614B Draw=\u5236\u4F5C 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 +FR-Designer_ComboBox=\u30B3\u30F3\u30DC\u30DC\u30C3\u30AF\u30B9 +Driver=JDBC\u30C9\u30E9\u30A4\u30D0 Template_Parameters=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF Form-Remove_Repeat_Data=\u91CD\u8907\u30C7\u30FC\u30BF\u3092\u524A\u9664 ECP_decode=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u6697\u53F7\u5316\u3092\u89E3\u9664 @@ -1696,33 +1696,33 @@ BackgroundTexture-Parchment=\u30BB\u30FC\u30E0\u76AE BindColumn-Bottom_N=\u4E0B\u4F4DN\u9805\u76EE Frame=\u30D5\u30EC\u30FC\u30E0 Bottom_Border_Line=\u4E0B\u7F6B\u7DDA -Muiti_In=\u30DE\u30EB\u30C1\u30EC\u30A4\u30E4\u30FC\u30C9\u30EA\u30EB +Muiti_In=\u30DE\u30EB\u30C1\u30EC\u30A4\u30E4\u30C9\u30EA\u30EB FR-Designer-Dependence_Install_Online=\u30AA\u30F3\u30E9\u30A4\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u74B0\u5883\u4F9D\u5B58 -Use_Default_ToolBar=\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 +Use_Default_ToolBar=\u65E2\u5B9A\u30C4\u30FC\u30EB\u30D0\u30FC\u3092\u4F7F\u3046 +M_Server-Platform_Manager=\u5E33\u7968\u30B7\u30B9\u30C6\u30E0\u7BA1\u7406 PageSetup-inches=\u30A4\u30F3\u30C1 Form-Widget_Property=\u5C5E\u6027\u540D FR-Layout_Padding=\u30D1\u30C7\u30A3\u30F3\u30B0 Schema=\u30C6\u30FC\u30DE Server_Path=\u30DB\u30B9\u30C8\u4F4D\u7F6E Condition_Display=\u6761\u4EF6\u8868\u793A -FR-Server-Design_template_unopened=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u958B\u3051\u306A\u3044 +FR-Server-Design_template_unopened=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 Function-Function_Class_Name=\u95A2\u6570\u30AF\u30E9\u30B9\u540D Schedule-Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u540D Tree_Data_Field=\u30C4\u30EA\u30FC\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9 Border-Style-Normal=\u76F4\u89D2 -Top_And_Double_Bottom_Border_Line=\u4E0A\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 +Top_And_Double_Bottom_Border_Line=\u4E0A\u7F6B\u7DDA + \u4E0B\u4E8C\u91CD\u67A0\u7DDA +FR-Server_Embedded_Server_Start=\u5185\u8535\u30B5\u30FC\u30D0\u8D77\u52D5 FR-Designer-Basic_Restart_Designer_Later=\u5F8C\u3067\u518D\u8D77\u52D5 -StyleAlignment-Top=\u4E0A\u63C3\u3048 +StyleAlignment-Top=\u4E0A\u8A70\u3081 ReportServerP-First=\u5148\u982D\u30DA\u30FC\u30B8 -Not_Exist=\u5B58\u5728\u3057\u306A\u3044 -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 +Not_Exist=\u3042\u308A\u307E\u305B\u3093 +FR-Remote_File_is_Locked=\u9078\u629E\u5E33\u7968\u306F\u3001\u4ED6\u306E\u30E6\u30FC\u30B6\u30FC\u304C\u7DE8\u96C6\u4E2D\u3067\u3059\u3002\u3057\u3070\u3089\u304F\u304A\u5F85\u3061\u304F\u3060\u3055\u3044 +Apply=\u9069\u7528 Sytle-Indentation=\u30A4\u30F3\u30C7\u30F3\u30C8 -Parameter-Float=\u5358\u7CBE\u5EA6\u578B -HF-Center_Section=\u4E2D\u9593\u30A8\u30EA\u30A2 -Form-Double_quotes=\u4E8C\u91CD\u5F15\u7528\u7B26 +Parameter-Float=\u5358\u7CBE\u5EA6 +HF-Center_Section=\u4E2D\u592E\u90E8 +Form-Double_quotes=\u30C0\u30D6\u30EB\u30AF\u30AA\u30FC\u30C6\u30FC\u30B7\u30E7\u30F3\u30DE\u30FC\u30AF M_File-Export-Word=Word M_File-Export-Text=\u30C6\u30AD\u30B9\u30C8\u30D5\u30A1\u30A4\u30EB(\u30BF\u30D6\u533A\u5207\u308A) PageSetup-First_Page_Number=\u958B\u59CB\u30DA\u30FC\u30B8 @@ -1738,7 +1738,7 @@ FR-Utils_Background=\u80CC\u666F FR-Designer-Plugin_Warning=\u8B66\u544A Server-version-info=\u958B\u3044\u305F\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u306F\u3001\u4E0A\u4F4D\u30A8\u30C7\u30A3\u30B7\u30E7\u30F3\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u3067\u4F5C\u6210\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u4E0A\u4F4D\u30A8\u30C7\u30A3\u30B7\u30E7\u30F3\u3067\u4F5C\u6210\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F\u3068\u30A8\u30E9\u30FC\u306E\u767A\u751F\u539F\u56E0\u3068\u306A\u308B\u307B\u304B\u3001\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u6A5F\u80FD\u3084\u5C5E\u6027\u306E\u4E00\u90E8\u3092\u5931\u3046\u6050\u308C\u304C\u3042\u308A\u307E\u3059\u3002\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u4F5C\u6210\u7528\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u3001\u914D\u5099\u3055\u308C\u308B\u30A8\u30C7\u30A3\u30B7\u30E7\u30F3\u3088\u308A\u3082\u4E0B\u4F4D\u306E\u30A8\u30C7\u30A3\u30B7\u30E7\u30F3\u3067\u3042\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 CellWrite-Page_After_Row=\u884C\u5F8C -HF-Right_Section=\u53F3\u30A8\u30EA\u30A2 +HF-Right_Section=\u53F3\u5074 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 @@ -1760,7 +1760,7 @@ Hyperlink-Use_CJK_to_encode_parameter=CJK\u3067\u30D1\u30E9\u30E1\u30FC\u30BF\u3 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\u30D1\u30B9\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u30D1\u30E9\u30E1\u30FC\u30BF +REPORTLET=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u30EB\u30FC\u30C8\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u30A2\u30AF\u30BB\u30B9 RWA-Column_Offset=\u5217\u306E\u30AA\u30D5\u30BB\u30C3\u30C8 Forecast=\u4E88\u6E2C Light_Orange=\u30E9\u30A4\u30C8\u30AA\u30EC\u30F3\u30B8 @@ -1768,9 +1768,9 @@ 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 +Value_Percent=\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8 DBCP_MIN_EVICTABLE_IDLE_TIMEMILLIS=\u30A2\u30A4\u30C9\u30EB\u63A5\u7D9A\u306E\u751F\u5B58\u671F\u9593 -Function-The_class_must_be_located_in=\u30AF\u30E9\u30B9\u306E\u4F4D\u7F6E\uFF1A +Function-The_class_must_be_located_in=\u30AF\u30E9\u30B9\u306E\u4F4D\u7F6E\: FR-Action_Sort=\u30BD\u30FC\u30C8 DataFunction-Average=\u5E73\u5747 FR-Designer_Show_in_Containing_Folder=\u30D5\u30A1\u30A4\u30EB\u306E\u5834\u6240\u3092\u958B\u304F @@ -1778,28 +1778,28 @@ M_File-Export-Excel=Excel DataFunction-Max=\u6700\u5927\u5024 FR-Designer_Form-Widget_Name=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u540D FS_End_Date=\u7D42\u4E86\u65E5\u6642 -Export-Excel-Simple=\u6A19\u6E96\u51FA\u529B +Export-Excel-Simple=\u6A19\u6E96\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 ColumnTo=~ -SpecifiedG-Discard_all_others=\u305D\u306E\u4ED6\u306E\u3059\u3079\u3066\u3092\u6368\u3066\u308B +SpecifiedG-Discard_all_others=\u305D\u306E\u4ED6\u306E\u3059\u3079\u3066\u3092\u5229\u7528\u3057\u306A\u3044 DS-TableData=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 Form-DataTable=\u30C7\u30FC\u30BF\u30C6\u30FC\u30D6\u30EB Sub_Report_ToolTips=\u5B50\u5E33\u7968\u30D2\u30F3\u30C8 Right_Top=\u53F3\u4E0A -M_Edit-Merge_Cell=\u30BB\u30EB\u7D50\u5408 -FR-Designer_Restore_Default=\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u623B\u3059 +M_Edit-Merge_Cell=\u30BB\u30EB\u306E\u7D50\u5408 +FR-Designer_Restore_Default=\u65E2\u5B9A\u306B\u623B\u3059 Component_Interval=\u30E2\u30B8\u30E5\u30FC\u30EB\u9593\u9694 -Cover_None=\u5168\u3066\u4E0A\u66F8\u304D\u3057\u306A\u3044 +Cover_None=\u3059\u3079\u3066\u4E0A\u66F8\u304D\u3057\u306A\u3044 Datasource-From_Database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u8868 -Folder=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA +Folder=\u30D5\u30A9\u30EB\u30C0\u30FC 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\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 +Only_selected_cell_can_paste_only=\u30BB\u30EB\u306E\u9078\u629E\u5F8C\u3001\u8CBC\u308A\u4ED8\u3051\u3067\u304D\u307E\u3059 +M_Report-Report_Columns=\u5E33\u7968\u6BB5\u7D44\u307F Unit_Hundred=\u767E -FR-Designer_DataTable-Build=\u9AD8\u901F\u30EC\u30A4\u30E4\u30FC\u5225\u69CB\u7BC9 +FR-Designer_DataTable-Build=\u9AD8\u901F\u30EC\u30A4\u30E4\u5225\u69CB\u7BC9 Widget-Form_Widget_Config=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 -Server-version-tip-moreInfo=\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u4E0D\u4E00\u81F4\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 +Server-version-tip-moreInfo=\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u4E0D\u4E00\u81F4\u3092\u539F\u56E0\u3068\u3059\u308B\u554F\u984C\u3092\u907F\u3051\u308B\u305F\u3081\u306B\u3001\u958B\u767A\u30C1\u30FC\u30E0\u3067\u5229\u7528\u3057\u3066\u3044\u308BFineReport\u88FD\u54C1\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3001\u53CA\u3073\u8A2D\u5B9A\u3055\u308C\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3092\u30C1\u30A7\u30C3\u30AF\u3092\u304A\u52E7\u3081\u3044\u305F\u3057\u307E\u3059\u3002n\u3088\u308A\u9AD8\u3044\u30C7\u30B6\u30A4\u30CA\u30FC\u3067\u4F5C\u6210\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F\u3068\u30A8\u30E9\u30FC\u306E\u767A\u751F\u539F\u56E0\u3068\u306A\u308B\u307B\u304B\u3001\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u6A5F\u80FD\u3084\u5C5E\u6027\u306E\u4E00\u90E8\u3092\u5931\u3046\u6050\u308C\u304C\u3042\u308A\u307E\u3059\u3002\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u4F5C\u6210\u7528\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u3001\u6700\u7D42\u7684\u306A\u8A2D\u5B9A\u5148\u3067\u3042\u308B\u30B5\u30FC\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3088\u308A\u9AD8\u3044\u5834\u5408\u3001\u30B5\u30FC\u30D0\u3067\u5229\u7528\u3055\u308C\u308B\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F\u6B63\u5E38\u306B\u52D5\u4F5C\u3057\u306A\u3044\u6050\u308C\u304C\u3042\u308A\u307E\u3059\u3002 Actions=\u30BF\u30B9\u30AF FR-Designer-Dependence_Connect_Server_Error=\u30B5\u30FC\u30D0\u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3001\u6642\u9593\u3092\u3042\u3051\u3066\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002 High=\u9AD8\u3055 @@ -1809,30 +1809,30 @@ File-Allow_Upload_Files=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3067\u304D\u308B\u FR-Designer-Form-ToolBar_Chart=\u30B0\u30E9\u30D5 Thick_Bottom_Border_Line=\u4E0B\u592A\u7F6B\u7DDA FR-Action_Remove=\u524A\u9664 -FRFont-Style=\u30D5\u30A9\u30F3\u30C8 +FRFont-Style=\u30B9\u30BF\u30A4\u30EB Select_DataColumn=\u30C7\u30FC\u30BF\u5217\u9078\u629E StartValue=\u958B\u59CB\u5024 SINGLE_FILE_UPLOAD=\u5358\u4E00\u30D5\u30A1\u30A4\u30EB\u306E\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u306E\u307F\u30B5\u30DD\u30FC\u30C8 BackgroundTexture-Cork=\u30B3\u30EB\u30AF M_Format-Data_Map=\u30C7\u30FC\u30BF\u8F9E\u66F8 -FR-mobile_native_analysis=\u30CD\u30A4\u30C6\u30A3\u30D6\u89E3\u6790 +FR-mobile_native_analysis=1\u6B21\u89E3\u6790 HighLight=\u30CF\u30A4\u30E9\u30A4\u30C8 -FR-Designer_Dropdown-More-Preview=\u30D7\u30EB\u30C0\u30A6\u30F3\u3067\u66F4\u306A\u308B\u30D7\u30EC\u30D3\u30E5\u30FC\u65B9\u5F0F\u3092\u53D6\u5F97 +FR-Designer_Dropdown-More-Preview=\u30D7\u30EB\u30C0\u30A6\u30F3\u3067\u66F4\u306A\u308B\u30D7\u30EC\u30D3\u30E5\u30FC\u65B9\u6CD5\u3092\u53D6\u5F97 local=\u30ED\u30FC\u30AB\u30EB 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 +Env-Invalid_User_and_Password=\u7121\u52B9\u306A\u30E6\u30FC\u30B6\u30FC\u540D\u307E\u305F\u306F\u30D1\u30B9\u30EF\u30FC\u30C9\u3067\u3059 FR-Designer-Plugin_All_Plugins=\u3059\u3079\u3066\u306E\u30D7\u30E9\u30B0\u30A4\u30F3 -FR-Designer_Prepare_Export=\u5C0E\u51FA\u3092\u958B\u59CB\u3057\u3066\u3044\u307E\u3059\u3002\u304A\u5F85\u3061\u304F\u3060\u3055\u3044 +FR-Designer_Prepare_Export=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3092\u958B\u59CB\u3057\u3066\u3044\u307E\u3059\u3002\u304A\u5F85\u3061\u304F\u3060\u3055\u3044 DBCP_TEST_ON_RETURN=\u63A5\u7D9A\u306E\u8FD4\u5374\u524D\u306B\u63A5\u7D9A\u6709\u52B9\u6027\u3092\u691C\u8A3C no-alternatives=\u30AA\u30D7\u30B7\u30E7\u30F3\u306A\u3057 -FR-Designer_Submmit_WClass=\u30AF\u30E9\u30B9\u66F8\u304D\u8FBC\u307F +FR-Designer_Submmit_WClass=\u30AB\u30B9\u30BF\u30E0\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=\u5C55\u958B\u3057\u306A\u3044 -Utils-Bottom_to_Top=\u4E0B\u304B\u3089\u4E0A +Utils-Bottom_to_Top=\u4E0B\u304B\u3089\u4E0A\u3078 Collect-Click\!_Get_user_information_code=\u30AF\u30EA\u30C3\u30AF\!\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u30B3\u30FC\u30C9\u3092\u53D6\u5F97 -FR-Already_exist=\u304A\u4F7F\u3044\u306E\u74B0\u5883\u306B\u3059\u3067\u306B\u3042\u308A\u307E\u3059\: +FR-Already_exist=\u304A\u4F7F\u3044\u306E\u74B0\u5883\u306B\u65E2\u306B\u3042\u308A\u307E\u3059\: Send=\u8EE2\u9001 M_Edit-Clear_All=\u3059\u3079\u3066(A) Brown_Orange=\u30AB\u30FC\u30AD @@ -1847,84 +1847,84 @@ Form-NullLayout=\u7D76\u5BFE\u914D\u7F6E ConditionB-Remove_bracket=\u62EC\u5F27\u3092\u524A\u9664 email=\u30E1\u30FC\u30EB\u30DC\u30C3\u30AF\u30B9 Minute=\u5206 -FR-Designer-Plugin_Update=\u30D7\u30E9\u30B0\u30A4\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8 +FR-Designer-Plugin_Update=\u30D7\u30E9\u30B0\u30A4\u30F3\u66F4\u65B0 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=\u8ABF\u6574 -Export-Excel-PageToSheet=1\u30DA\u30FC\u30B81\u30B7\u30FC\u30C8\u51FA\u529B +FR-Background_Image_Adjust=\u8ABF\u6574\u8868\u793A +Export-Excel-PageToSheet=1\u30DA\u30FC\u30B81\u30B7\u30FC\u30C8\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 Edit-Row_Count=\u884C\u6570 DS-Report_TableData=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 Sche-Hour=\u6642 -Group_Count=\u7DCF\u500B\u6570\u8868\u793A +Group_Count=\u7DCF\u6570\u8868\u793A EndValue=\u7D42\u4E86\u5024 FR-Designer_Sytle-Indentation=\u30A4\u30F3\u30C7\u30F3\u30C8 -DownBarBorderStyleAndColor=\u30D5\u30A9\u30FC\u30EB\u30AB\u30E9\u30E0\u30B9\u30BF\u30A4\u30EB +DownBarBorderStyleAndColor=\u9670\u7DDA\u30B9\u30BF\u30A4\u30EB World=\u4E16\u754C FR-Designer-Basic_Cancel=\u30AD\u30E3\u30F3\u30BB\u30EB Finally=\u6700\u5F8C Low=\u4F4E\u3044 -Please_Input_The_Key=\u5BFE\u5FDC\u306E\u30DE\u30C3\u30D7\u306B\u4F7F\u308F\u308C\u308B\u30AD\u30FC\u3092\u5165\u529B\u3057\u3066\u4E0B\u3055\u3044 +Please_Input_The_Key=\u5BFE\u5FDC\u3059\u308B\u30DE\u30C3\u30D7\u306B\u4F7F\u308F\u308C\u308B\u30AD\u30FC\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 Smart=\u30B9\u30DE\u30FC\u30C8 Preference-Predefined=\u4E8B\u524D\u5B9A\u7FA9 -Current_custom_global=\u73FE\u5728\u30AB\u30B9\u30BF\u30E0\u30B0\u30ED\u30FC\u30D0\u30EB\u30B9\u30BF\u30A4\u30EB +Current_custom_global=\u73FE\u5728\u306E\u30AB\u30B9\u30BF\u30E0\u30B0\u30ED\u30FC\u30D0\u30EB\u30B9\u30BF\u30A4\u30EB FR-Designer-Plugin_Shop_Need_Install=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3057\u307E\u3059\u304B? -WEB-Pagination_Setting=\u6539\u30DA\u30FC\u30B8\u30D7\u30EC\u30D3\u30E5\u30FC\u8A2D\u5B9A +WEB-Pagination_Setting=\u30DA\u30FC\u30B8\u5225\u30D7\u30EC\u30D3\u30E5\u30FC\u8A2D\u5B9A RCodeDrawPix=\u753B\u7D20 FR-Designer-Widget-Style_Alpha=\u4E0D\u900F\u660E\u5EA6 BorderLayout-North=\u5317 HJS-Current_Page=\u73FE\u5728\u306E\u30DA\u30FC\u30B8 Compile=\u30B3\u30F3\u30D1\u30A4\u30EB Show_Blank_Row=\u7A7A\u767D\u884C\u88DC\u5145 -TableData_Dynamic_Parameter_Setting=\u52D5\u7684\u30D1\u30E9\u30E1\u30FC\u30BF\u6CE8\u5165 -FR-Background_Image_Default=\u30C7\u30D5\u30A9\u30EB\u30C8 +TableData_Dynamic_Parameter_Setting=\u30C0\u30A4\u30CA\u30DF\u30C3\u30AF\u30D1\u30E9\u30E1\u30FC\u30BF +FR-Background_Image_Default=\u65E2\u5B9A BackgroundTexture-WhiteMarble=\u5927\u7406\u77F3(\u767D) DataFunction-Sum=\u5408\u8A08 Collect-The_user_information_code_is_invalid=\u3053\u306E\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u30B3\u30FC\u30C9\u306F\u7121\u52B9\u3067\u3059\u3001\u516C\u5F0F\u30B5\u30A4\u30C8\u3067\u7533\u8ACB\u3057\u3066\u304F\u3060\u3055\u3044 -Preference-Locale=\u30B0\u30ED\u30FC\u30D0\u30EB\u5316 +Preference-Locale=\u56FD\u969B\u5316 M_File-Export-PDF=PDF -BiasD-From-lower_left_to_upper_right=\u5DE6\u4E0B\u5074\u304B\u3089\u53F3\u4E0A\u5074\u3078 +BiasD-From-lower_left_to_upper_right=\u5DE6\u4E0B\u5074\u304B\u3089\u53F3\u4E0A\u5074\u3078\u5E83\u3052\u308B Border-Style=\u67A0\u306E\u30B9\u30BF\u30A4\u30EB Sort=\u30BD\u30FC\u30C8 Image-Image_Layout=\u753B\u50CF\u30EC\u30A4\u30A2\u30A6\u30C8 Panel=\u30D1\u30CD\u30EB -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 +FR-Designer-Basic_Copy_Build_NO_OK=\u30D3\u30EB\u30C9\u756A\u53F7\u3092\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F All_Border_Line=\u67A0\u7DDA -FR-Utils-Please_Input_a_New_Name=\u65B0\u3057\u3044\u540D\u524D\u3092\u5165\u529B\u3057\u3066\u4E0B\u3055\u3044 +FR-Utils-Please_Input_a_New_Name=\u65B0\u3057\u3044\u540D\u524D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 FR-Base_Formula_Plugin=\u30D7\u30E9\u30B0\u30A4\u30F3\u95A2\u6570 Two_Rows_Of_Three_Grid=2\u884C3\u5217\u306E\u30B0\u30EA\u30C3\u30C9 -FR-Designer_Certificate_Pass=https\u306E\u9375 +FR-Designer_Certificate_Pass=https\u30B7\u30FC\u30AF\u30EC\u30C3\u30C8\u30AD\u30FC Bubble-Series_Name=\u7CFB\u5217\u540D M-New_Multi_Report=\u30D6\u30ED\u30C3\u30AF\u5E33\u7968\u65B0\u898F\u4F5C\u6210(M) BackgroundTexture-PinkTissuePaper=\u30D4\u30F3\u30AF\u306E\u753B\u7528\u7D19 -Preference-Support_Default_Parent_Calculate=\u30C7\u30D5\u30A9\u30EB\u30C8\u89AA\u30BB\u30EB\u306E\u8A08\u7B97 +Preference-Support_Default_Parent_Calculate=\u65E2\u5B9A\u89AA\u30BB\u30EB\u306E\u8A08\u7B97 Show_Blank_Column=\u7A7A\u767D\u5217\u88DC\u5145 -BaiduMap=\u767E\u5EA6\u5730\u56F3 +BaiduMap=Baidu\u5730\u56F3 Report-Web_Attributes=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8Web\u5C5E\u6027 -FR-Designer_StyleAlignment-Wrap_Text=\u81EA\u52D5\u6539\u884C +FR-Designer_StyleAlignment-Wrap_Text=\u81EA\u52D5\u6298\u308A\u8FD4\u3057 Need=\u5FC5\u8981 -Parameter-Double=\u500D\u7CBE\u5EA6\u578B +Parameter-Double=\u500D\u7CBE\u5EA6 Config_Servlet=\u30EA\u30E2\u30FC\u30C8\u30B5\u30FC\u30D0\u3092\u8A2D\u5B9A -Form-Comma=\u30B3\u30F3\u30DE +Form-Comma=\u30AB\u30F3\u30DE Verify=\u691C\u8A3C PageSetup-Landscape=\u6A2A\u65B9\u5411 Weeks=\u9031\u9593 FR-Designer-Widget-Style_Title_Background=\u30BF\u30A4\u30C8\u30EB\u80CC\u666F -Preference-Pagination_Line_Color=\u6539\u30DA\u30FC\u30B8\u30E9\u30A4\u30F3\u306E\u8272 +Preference-Pagination_Line_Color=\u6539\u30DA\u30FC\u30B8\u7DDA\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 +Fill_blank_Data=\u7A7A\u767D\u30C7\u30FC\u30BF\u306E\u88DC\u5145 +ReportServerP-The_name_of_printer_cannot_be_null=\u30D7\u30EA\u30F3\u30BF\u540D\u3092\u7A7A\u6B04\u306B\u3067\u304D\u307E\u305B\u3093 FR-Designer-Basic_Copy_Activation_Key=\u30C7\u30B6\u30A4\u30CA\u30FC\u756A\u53F7\u3092\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u30B3\u30D4\u30FC Continuum=\u96A3\u63A5\u9023\u7D9A BackgroundTexture-MediumWood=\u6728\u76EE Datasource-Column_Index=\u5217\u756A\u53F7 Function-Function_File=\u95A2\u6570\u30D5\u30A1\u30A4\u30EB -Form-Component_Bounds=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u30DC\u30FC\u30C0\u30FC +Form-Component_Bounds=\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u9818\u57DF Utils-Submit=\u66F8\u304D\u8FBC\u307F Conditions_formula=\u6761\u4EF6\u6570\u5F0F M_Insert-Image=\u753B\u50CF -FR-Designer-Plugin_Will_Be_Delete=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u524A\u9664\u3055\u308C\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 +FR-Designer-Plugin_Will_Be_Delete=\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u524A\u9664\u3055\u308C\u307E\u3057\u305F\u3002\u30C7\u30B6\u30A4\u30CA\u30FC\u3068\u30B5\u30FC\u30D0\u3092\u518D\u8D77\u52D5\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u30B5\u30FC\u30D0\u306F\u624B\u52D5\u3067\u518D\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044 FormulaD-Functions=\u95A2\u6570 Mobile_Terminal=\u30E2\u30D0\u30A4\u30EB\u7AEF\u672B CheckBox=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 @@ -1934,57 +1934,57 @@ 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=\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\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 +HF-Default_Page=\u65E2\u5B9A\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\u5BFE\u5FDC\u3059\u308B\u30ED\u30B0\u30A4\u30F3\u74B0\u5883\u306E\u30E6\u30FC\u30B6\u30FC\u3068\u30D1\u30B9\u30EF\u30FC\u30C9\u3067\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093\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 +is_need_word_adjust=\u884C\u306E\u9AD8\u3055\u3092\u56FA\u5B9A\u3057\u306A\u3044 Background-Null=\u80CC\u666F\u306A\u3057 PageSetup-Vertically=\u5782\u76F4\u4E2D\u592E\u63C3\u3048 -FR-Designer_Root=\u30EB\u30FC\u30C4\u30CE\u30FC\u30C9 +FR-Designer_Root=\u30EB\u30FC\u30C8\u30CE\u30FC\u30C9 FR-Designer_Form-TextArea=\u30C6\u30AD\u30B9\u30C8\u30A8\u30EA\u30A2 ReportServerP-Import_JavaScript=JavaScript\u53C2\u7167 Form-TableTree=\u8868\u30C4\u30EA\u30FC -Opened=\u3059\u3067\u306B\u6709\u52B9\u5316\u306B +Opened=\u8D77\u52D5\u6E08\u307F M_Edit-Delete=\u524A\u9664(D) Widget-Form_Widget_Container=\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30B3\u30F3\u30C6\u30CA BindColumn-Summary=\u96C6\u8A08 Sche-Second=\u79D2 -Server-Open_Service_Manager=\u30B5\u30FC\u30D3\u30B9\u30DE\u30CD\u30FC\u30B8\u30E3\u3092\u958B\u304F +Server-Open_Service_Manager=\u30B5\u30FC\u30D3\u30B9\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC\u3092\u958B\u304F FRFont-Effects=\u6587\u5B57\u98FE\u308A OtherGroup_Name=\u4ED6\u306E\u30B0\u30EB\u30FC\u30D7\u540D Specify=\u6307\u5B9A -Highlight-Click_to_Choose_Property_To_Modify=\u5909\u3048\u305F\u3044\u5C5E\u6027\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u9078\u629E -triggered=\u89E6\u767A\u3055\u308C\u305F +Highlight-Click_to_Choose_Property_To_Modify=\u5909\u66F4\u3059\u308B\u5C5E\u6027\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u9078\u629E +triggered=\u30C8\u30EA\u30AC\u30FC\u5BFE\u8C61 Double_Bottom_BorderLine=\u4E0B\u4E8C\u91CD\u7F6B\u7DDA M_Insert-Sub_Report=\u5B50\u5E33\u7968 Unit_Ten=\u5341 Polybolck=\u30D6\u30ED\u30C3\u30AF Select_sort_order=\u30BD\u30FC\u30C8\u9806\u9078\u629E HJS-Mail_to=\u5B9B\u5148 -StyleAlignment-Left=\u5DE6\u63C3\u3048 +StyleAlignment-Left=\u5DE6\u8A70\u3081 Two_Rows_Of_Two_Grid=2\u884C2\u5217\u306E\u30B0\u30EA\u30C3\u30C9 -FR-Designer-Form-Please_Drag_ParaPane=\u30D1\u30E9\u30E1\u30FC\u30BF\u30D1\u30CD\u30EB\u306B\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u4E0B\u3055\u3044 +FR-Designer-Form-Please_Drag_ParaPane=\u30D1\u30E9\u30E1\u30FC\u30BF\u30D1\u30CD\u30EB\u306B\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u304F\u3060\u3055\u3044 Milliseconds=\u30DF\u30EA\u79D2 DataFunction-None=\u306A\u3057 Delivery=\u914D\u4FE1 ColumnSpan=\u5217\u7BC4\u56F2 -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 +StyleAlignment-Bottom=\u4E0B\u8A70\u3081 +Read_failure=\u8AAD\u307F\u8FBC\u307F\u5931\u6557\u3002\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB\u304C\u7834\u640D\u3057\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059 Verify-Verify=\u30C7\u30FC\u30BF\u691C\u8A3C FR-Designer-Widget-Style_Title_Format=\u30BF\u30A4\u30C8\u30EB\u66F8\u5F0F FR-Designer_Edit_String_To_Formula=\u6587\u5B57\u5217\u3092\u6570\u5F0F\u306B\u7DE8\u96C6\u3059\u308B\u304B 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 +FormulaD-Data_Fields=\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9 FR-Designer_Permissions=\u6A29\u9650 FR-Designer_Form_Button=\u30DC\u30BF\u30F3 -FR-Designer_WF_Name=\u540D\u79F0 +FR-Designer_WF_Name=\u540D FR-Designer_Role=\u5F79\u5272 FR-Designer_Double=\u5C0F\u6570 FR-Designer_Query=\u30AF\u30A8\u30EA @@ -1994,3 +1994,10 @@ 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\u30DE\u30FC\u30AF\u30D5\u30A3\u30FC\u30EB\u30C9 +FR-Designer_Build_Tree_Accord_Marked_Filed_Length=\u30DE\u30FC\u30AF\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u9577\u3055\u3088\u308A\u30C4\u30EA\u30FC\u3092\u69CB\u7BC9\u3059\u308B +FR-Designer_Tree_Data_Field=\u30C4\u30EA\u30FC\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9 +FR-Designer_Parent_Marked_Field=\u89AA\u30DE\u30FC\u30AF\u30D5\u30A3\u30FC\u30EB\u30C9 +FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=\u89AA\u30DE\u30FC\u30AF\u30D5\u30A3\u30FC\u30EB\u30C9\u3088\u308A\u30C4\u30EA\u30FC\u3092\u69CB\u7BC9\u3059\u308B +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 80d304ff0..4e210d872 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 @@ -1132,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 @@ -1994,3 +1994,10 @@ 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 d06b8a260..cc090d98e 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 @@ -1132,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 @@ -1994,3 +1994,10 @@ 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 878c493f4..9278fd6e1 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 @@ -1994,3 +1994,11 @@ 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 501f957df..c95926213 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/DesignModuleFactory.java b/designer_base/src/com/fr/design/module/DesignModuleFactory.java index 77233e4db..2a4342a7d 100644 --- a/designer_base/src/com/fr/design/module/DesignModuleFactory.java +++ b/designer_base/src/com/fr/design/module/DesignModuleFactory.java @@ -1 +1,245 @@ -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.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 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 5594254c3..732f51222 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 8ed8aa617..96ed33711 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 f70d7b551..905d44ba9 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; @@ -72,7 +72,7 @@ public abstract class BaseDesigner extends ToolBarMenuDock { for (String arg : args) { if (ComparatorUtils.equals(arg, "demo")) { DesignerEnvManager.getEnvManager().setCurrentEnv2Default(); - StartServer.browerDemoURL(); + StartServer.browserDemoURL(); break; } } @@ -128,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 31f68e800..e21beef7b 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/build.release.gradle b/designer_chart/build.release.gradle index b897c71de..625e5ddd3 100644 --- a/designer_chart/build.release.gradle +++ b/designer_chart/build.release.gradle @@ -48,7 +48,7 @@ def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) //指定外部依赖 dependencies{ -compile fileTree(dir:'../../../finereport-lib-stable/master',include:'**/*.jar') +compile fileTree(dir:"../../../finereport-lib-stable/${branchName}",include:'**/*.jar') compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") testCompile 'junit:junit:4.12' 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 0f32ed408..000000000 --- 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 c67a6aea5..c850a4ae5 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 1b90382d6..70fcc4ca4 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 a44efb38c..848fc4436 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 ff0eaa81d..8aa412a6e 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 000000000..fbd3ce36f --- /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 00aced486..000000000 --- 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 f70390a43..000000000 --- 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 96c659d50..000000000 --- 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 d7329b3c9..000000000 --- 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 7a13e17a4..000000000 --- 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 46a4ba223..000000000 --- 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 2da1d6840..000000000 --- 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 df0dca928..000000000 --- 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 f7c3ca189..000000000 --- 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 d2da88c83..000000000 --- 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 e30f15ea5..000000000 --- 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 f16fe98ec..000000000 --- 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 5ba44f735..000000000 --- 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 1c04543d6..f29efe7af 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 0550c463c..000000000 --- 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 d282aa104..000000000 --- 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 4cf8da691..000000000 --- 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 3dd189d30..000000000 --- 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 62a149647..000000000 --- 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 0b86c5a12..4616c8ccc 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 1bb67547d..000000000 --- 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 83761022a..000000000 --- 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 ddcf70aa7..000000000 --- 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 782d1a400..000000000 --- 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 05cb46b14..000000000 --- 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 24218c876..000000000 --- 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 82b95c736..000000000 --- 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 42419128e..000000000 --- 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 0d5088ee7..000000000 --- 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 c5190b9bc..000000000 --- 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 92177a8e3..fc3b70108 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 000000000..76e674eb8 --- /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 000000000..b012e9579 --- /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 c889ddc71..000000000 --- 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 9e03f4ec0..ccccdc3cc 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 f424d6981..000000000 --- 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 43a2fae34..000000000 --- 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 a9f418907..000000000 --- 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 7cc476e24..000000000 --- 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 9c531ab36..000000000 --- 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 96e17d742..000000000 --- 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 721e7432a..382ca853d 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 80ef68b25..000000000 --- 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 331ae76aa..000000000 --- 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 8d3d4d3d6..000000000 --- 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 76a380839..000000000 --- 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 beb5078ba..000000000 --- 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 aee7cada5..000000000 --- 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 fb2368268..000000000 --- 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 ab43c4f49..000000000 --- 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 c84408db7..000000000 --- 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 39a7cf504..000000000 --- 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 7508069d5..000000000 --- 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 34311313a..000000000 --- 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 c21ad2ca9..000000000 --- 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 15c5d41ae..000000000 --- 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 d7eb9f31d..000000000 --- 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 a3dde9559..000000000 --- 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 00bea1278..000000000 --- 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/build.release.gradle b/designer_form/build.release.gradle index 793f6a0b1..748ed10f7 100644 --- a/designer_form/build.release.gradle +++ b/designer_form/build.release.gradle @@ -49,7 +49,7 @@ buildDir=buildDir.substring(0,buildDir.lastIndexOf ('\\')) def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) //声明外部依赖 dependencies{ -compile fileTree(dir:'../../../finereport-lib-stable/master',include:'**/*.jar') +compile fileTree(dir:"../../../finereport-lib-stable/${branchName}",include:'**/*.jar') compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") testCompile 'junit:junit:4.12' diff --git a/designer_form/src/com/fr/design/mainframe/FormArea.java b/designer_form/src/com/fr/design/mainframe/FormArea.java index 4f6c86fee..51867ba6f 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 6187bbd48..929e10110 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 36c54f4ec..3c993bde7 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