From af77d05bd993df4bcb9fe37e29813cc8fc4f61cb Mon Sep 17 00:00:00 2001 From: plough Date: Tue, 27 Feb 2018 17:38:24 +0800 Subject: [PATCH 01/79] =?UTF-8?q?REPORT-6797=20=E5=8D=95=E5=85=83=E6=A0=BC?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=B0=83=E6=95=B4=E5=A4=A7=E5=B0=8F=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E6=96=B9=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cell/settingpane/CellOtherSetPane.java | 128 ++++++++++-------- .../fr/design/gui/ibutton/UIRadioButton.java | 82 ++++++++++- .../fr/design/layout/VerticalFlowLayout.java | 15 +- .../com/fr/design/locale/designer.properties | 2 + .../design/locale/designer_en_US.properties | 2 + .../design/locale/designer_ja_JP.properties | 2 + .../design/locale/designer_ko_KR.properties | 2 + .../design/locale/designer_zh_CN.properties | 2 + .../design/locale/designer_zh_TW.properties | 2 + .../mainframe/EastRegionContainerPane.java | 7 + 10 files changed, 188 insertions(+), 56 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java b/designer/src/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java index 951333895f..873087df04 100644 --- a/designer/src/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java +++ b/designer/src/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java @@ -7,13 +7,14 @@ import com.fr.design.editor.ValueEditorPaneFactory; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.gui.ibutton.UIButtonGroup; +import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.layout.TableLayout; -import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.layout.*; +import com.fr.design.layout.VerticalFlowLayout; +import com.fr.design.mainframe.EastRegionContainerPane; import com.fr.design.mainframe.JTemplate; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; @@ -63,8 +64,14 @@ public class CellOtherSetPane extends AbstractCellAttrPane { private UICheckBox canBreakOnPaginateCheckBox; private UICheckBox repeatCheckBox; - private UICheckBox autoHeightCheckBox; - private UICheckBox autoWidthCheckBox; + + // 自动调整 + private UIRadioButton autoHeightRadioButton; // 自动调整行高 + private UIRadioButton autoWidthRadioButton; // 自动调整列宽 + private UIRadioButton noAutoRadioButton; // 不自动调整 + private UIRadioButton defaultAutoRadioButton; // 跟随页面设置(默认) + private UIRadioButton[] adjustRadioButtons; + // 插入行策略 private UIButtonGroup insertRowPolicy; private ValueEditorPane valueEditor; @@ -80,7 +87,7 @@ public class CellOtherSetPane extends AbstractCellAttrPane { */ public JPanel createContentPane() { JPanel downPane = new JPanel(new BorderLayout()); - downPane.add(new UIExpandablePane(Inter.getLocText("FR-Designer_Advanced"), HEAD_WDITH, HEAD_HEIGTH, seniorPane()), BorderLayout.NORTH); + downPane.add(new UIExpandablePane(Inter.getLocText("FR-Designer_Auto_Adjust_Size"), HEAD_WDITH, HEAD_HEIGTH, seniorPane()), BorderLayout.NORTH); downPane.add(new UIExpandablePane(Inter.getLocText("FR-Designer_Pagination"), HEAD_WDITH, HEAD_HEIGTH, pagePane()), BorderLayout.CENTER); JPanel contentPane = new JPanel(new BorderLayout(0, 0)); contentPane.add(new UIExpandablePane(Inter.getLocText("FR-Designer_Basic"), HEAD_WDITH, HEAD_HEIGTH, basicPane()), BorderLayout.NORTH); @@ -89,24 +96,36 @@ public class CellOtherSetPane extends AbstractCellAttrPane { return contentPane; } - private JPanel basicPane() { - autoHeightCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Auto_Adjust_Height")); - autoWidthCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Auto_Adjust_Wdith")); - autoHeightCheckBox.setBorder(UIConstants.CELL_ATTR_ZEROBORDER); - autoWidthCheckBox.setBorder(UIConstants.CELL_ATTR_ZEROBORDER); - double p = TableLayout.PREFERRED; - double[] rowSize = {p, p, p, p}; - double[] columnSize = {p}; - int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 1}}; - Component[][] components = new Component[][]{ - new Component[]{null}, - new Component[]{autoHeightCheckBox}, - new Component[]{autoWidthCheckBox}, - new Component[]{null}, + defaultAutoRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Follow_Paper_Settings")); + noAutoRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_No_Auto_Adjust")); + autoHeightRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Auto_Adjust_Height")); + autoWidthRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Auto_Adjust_Wdith")); + adjustRadioButtons = new UIRadioButton[]{ + defaultAutoRadioButton, noAutoRadioButton, autoHeightRadioButton, autoWidthRadioButton }; - return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_LARGE); + // 指定分组 + ButtonGroup autoBG = new ButtonGroup(); + for (UIRadioButton radioButton : adjustRadioButtons) { + autoBG.add(radioButton); + } + + JPanel basicPane = new JPanel() { + @Override + public Insets getInsets() { + return new Insets(LayoutConstants.VGAP_MEDIUM, 0, LayoutConstants.VGAP_MEDIUM, 0); + } + }; + VerticalFlowLayout verticalFlowLayout = new VerticalFlowLayout(VerticalFlowLayout.CENTER, 0, 0); + verticalFlowLayout.setAlignLeft(true); + basicPane.setLayout(verticalFlowLayout); + basicPane.add(defaultAutoRadioButton); + basicPane.add(noAutoRadioButton); + basicPane.add(autoHeightRadioButton); + basicPane.add(autoWidthRadioButton); + + return basicPane; } private JPanel seniorPane() { @@ -268,9 +287,10 @@ public class CellOtherSetPane extends AbstractCellAttrPane { private void initAllNames() { -// autoshrik.setGlobalName(Inter.getLocText("FR-Designer_Auto_Adjust_Size")); - autoHeightCheckBox.setGlobalName(Inter.getLocText("FR-Designer_Auto_Adjust_Height")); - autoWidthCheckBox.setGlobalName(Inter.getLocText("FR-Designer_Auto_Adjust_Wdith")); + defaultAutoRadioButton.setGlobalName(Inter.getLocText("FR-Designer_Follow_Paper_Settings")); + noAutoRadioButton.setGlobalName(Inter.getLocText("FR-Designer_No_Auto_Adjust")); + autoHeightRadioButton.setGlobalName(Inter.getLocText("FR-Designer_Auto_Adjust_Height")); + autoWidthRadioButton.setGlobalName(Inter.getLocText("FR-Designer_Auto_Adjust_Height")); previewCellContent.setGlobalName(Inter.getLocText("FR-Designer_Preview")); printAndExportContent.setGlobalName(Inter.getLocText("CellWrite-Preview_Cell_Content")); printAndExportBackground.setGlobalName(Inter.getLocText("CellWrite-Print_Background")); @@ -300,27 +320,32 @@ public class CellOtherSetPane extends AbstractCellAttrPane { if (cellGUIAttr == null) { cellGUIAttr = CellGUIAttr.DEFAULT_CELLGUIATTR; } -// autoshrik.setSelectedIndex(cellGUIAttr.getAdjustMode()); + + // 是否在编辑表单中的报表块 + boolean isInForm = EastRegionContainerPane.getInstance().getCurrentMode().equals(EastRegionContainerPane.PropertyMode.FORM_REPORT); + + defaultAutoRadioButton.setVisible(!isInForm); switch (cellGUIAttr.getAdjustMode()) { - case 0: - autoHeightCheckBox.setSelected(false); - autoWidthCheckBox.setSelected(false); + case CellGUIAttr.ADJUST_MODE_NO_AUTO: + noAutoRadioButton.setSelected(true); break; - case 1: - autoHeightCheckBox.setSelected(true); - autoWidthCheckBox.setSelected(false); + case CellGUIAttr.ADJUST_MODE_AUTO_HEIGHT: + autoHeightRadioButton.setSelected(true); break; - case 2: - autoHeightCheckBox.setSelected(false); - autoWidthCheckBox.setSelected(true); + case CellGUIAttr.ADJUST_MODE_AUTO_WIDTH: + autoWidthRadioButton.setSelected(true); break; - case 3: - autoHeightCheckBox.setSelected(true); - autoWidthCheckBox.setSelected(true); + case CellGUIAttr.ADJUST_MODE_DEFAULT: + if (isInForm) { + autoHeightRadioButton.setSelected(true); + } else { + defaultAutoRadioButton.setSelected(true); + } break; default: break; } + previewCellContent.setSelected(cellGUIAttr.isPreviewContent()); printAndExportContent.setSelected(cellGUIAttr.isPrintContent()); printAndExportBackground.setSelected(cellGUIAttr.isPrintBackground()); @@ -384,27 +409,24 @@ public class CellOtherSetPane extends AbstractCellAttrPane { cellGUIAttr = new CellGUIAttr(); } -// if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_Auto_Adjust_Size"))) { -// cellGUIAttr.setAdjustMode(autoshrik.getSelectedIndex()); -// } - - if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_Auto_Adjust_Height")) || ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_Auto_Adjust_Wdith"))) { - int flag; - if (autoHeightCheckBox.isSelected()) { - if (autoWidthCheckBox.isSelected()) { - flag = 3; + for (UIRadioButton radioButton : adjustRadioButtons) { + if (ComparatorUtils.equals(getGlobalName(), radioButton.getGlobalName())) { + // 自动调整 + int flag; + if (defaultAutoRadioButton.isSelected()) { + flag = CellGUIAttr.ADJUST_MODE_DEFAULT; + } else if (autoWidthRadioButton.isSelected()) { + flag = CellGUIAttr.ADJUST_MODE_AUTO_WIDTH; + } else if (autoHeightRadioButton.isSelected()) { + flag = CellGUIAttr.ADJUST_MODE_AUTO_HEIGHT; } else { - flag = 1; + flag = CellGUIAttr.ADJUST_MODE_NO_AUTO; } - } else if (autoWidthCheckBox.isSelected()) { - flag = 2; - } else { - flag = 0; + cellGUIAttr.setAdjustMode(flag); + break; } - cellGUIAttr.setAdjustMode(flag); } - if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_Preview"))) { cellGUIAttr.setPreviewContent(previewCellContent.isSelected()); } diff --git a/designer_base/src/com/fr/design/gui/ibutton/UIRadioButton.java b/designer_base/src/com/fr/design/gui/ibutton/UIRadioButton.java index 8c93e76f4f..55a6ed6492 100644 --- a/designer_base/src/com/fr/design/gui/ibutton/UIRadioButton.java +++ b/designer_base/src/com/fr/design/gui/ibutton/UIRadioButton.java @@ -1,6 +1,14 @@ package com.fr.design.gui.ibutton; +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.StringUtils; + import javax.swing.*; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; /** * Created by IntelliJ IDEA. @@ -9,38 +17,110 @@ import javax.swing.*; * Date: 13-3-27 * Time: 下午5:04 */ -public class UIRadioButton extends JRadioButton { +public class UIRadioButton extends JRadioButton implements UIObserver, GlobalNameObserver { + private UIObserverListener uiObserverListener; + private GlobalNameListener globalNameListener = null; + private String radioButtonName = StringUtils.EMPTY; public UIRadioButton() { super(); + initListener(); } public UIRadioButton(Icon icon) { super(icon); + initListener(); } public UIRadioButton(Action a) { super(a); + initListener(); } public UIRadioButton(Icon icon, boolean selected) { super(icon, selected); + initListener(); } public UIRadioButton(String text) { super(text); + initListener(); } public UIRadioButton(String text, boolean selected) { super(text, selected); + initListener(); } public UIRadioButton(String text, Icon icon) { super(text, icon); + initListener(); } public UIRadioButton(String text, Icon icon, boolean selected) { super(text, icon, selected); + initListener(); + } + + private void initListener() { + if (shouldResponseChangeListener()) { + this.addItemListener(new ItemListener() { + + @Override + public void itemStateChanged(ItemEvent e) { + if (uiObserverListener == null) { + return; + } + if (globalNameListener != null && shouldResponseNameListener()) { + globalNameListener.setGlobalName(radioButtonName); + } + uiObserverListener.doChange(); + } + }); + } + } + + /** + * 给组件登记一个观察者监听事件 + * + * @param listener 观察者监听事件 + */ + public void registerChangeListener(UIObserverListener listener) { + this.uiObserverListener = listener; + } + + + public void setGlobalName(String name) { + radioButtonName = name; + } + + public String getGlobalName() { + return radioButtonName; + } + + /** + * 组件是否需要响应添加的观察者事件 + * + * @return 如果需要响应观察者事件则返回true,否则返回false + */ + public boolean shouldResponseChangeListener() { + return true; + } + + /** + * 注册观察者监听事件 + * @param listener 观察者监听事件 + */ + public void registerNameListener(GlobalNameListener listener) { + globalNameListener = listener; + } + + /** + * 组件是否需要响应观察者事件 + * @return 如果需要响应观察者事件则返回true,否则返回false + */ + public boolean shouldResponseNameListener() { + return true; } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/layout/VerticalFlowLayout.java b/designer_base/src/com/fr/design/layout/VerticalFlowLayout.java index 9befe52ceb..8f9eb55461 100644 --- a/designer_base/src/com/fr/design/layout/VerticalFlowLayout.java +++ b/designer_base/src/com/fr/design/layout/VerticalFlowLayout.java @@ -71,6 +71,9 @@ public class VerticalFlowLayout implements LayoutManager, java.io.Serializable { */ int newAlign; // This is the one we actually use + // 当列宽不一致时,是否需要左对齐(默认居中对齐) + boolean isAlignLeft = false; + /** * The flow layout manager allows a seperation of * components with gaps. The horizontal gap will @@ -345,10 +348,11 @@ public class VerticalFlowLayout implements LayoutManager, java.io.Serializable { for (int i = rowStart; i < rowEnd; i++) { Component m = target.getComponent(i); if (m.isVisible()) { + int newX = x + (width - m.getWidth()) / 2; if (ltr) { - m.setLocation(x + (width - m.getWidth()) / 2, y); + m.setLocation(isAlignLeft ? x : newX, y); } else { - m.setLocation(x + (width - m.getWidth()) / 2, target.getHeight() - y - m.getHeight()); + m.setLocation(isAlignLeft ? x : newX, target.getHeight() - y - m.getHeight()); } y += m.getHeight() + vgap; } @@ -431,6 +435,13 @@ public class VerticalFlowLayout implements LayoutManager, java.io.Serializable { return 0; } + /** + * 当列宽不一致时,通过此方法设置是否需要左对齐 + */ + public void setAlignLeft(boolean isAlignLeft) { + this.isAlignLeft = true; + } + /** * Returns a string representation of this FlowLayout diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index 76e68d31f4..0dde0e98cb 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -2185,3 +2185,5 @@ FR-Designer_Tip_Chart_Adaptivity_Unavailable=Under the reserved layout state, th FR-Designer_Official_Website=Official Website: FR-Designer_Support_Email=Email: FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout=Under the absolute canvas block, the chart does not support the setting of self-adaptive +FR-Designer_Follow_Paper_Settings=follow paper settings +FR-Designer_No_Auto_Adjust=no automatic adjust 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 3b825643dc..39108c6051 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 @@ -2184,3 +2184,5 @@ FR-Designer_Tip_Chart_Adaptivity_Unavailable=Under the reserved layout state, th FR-Designer_Official_Website=Official Website: FR-Designer_Support_Email=Email: FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout=Under the absolute canvas block, the chart does not support the setting of self-adaptive +FR-Designer_Follow_Paper_Settings=follow paper settings +FR-Designer_No_Auto_Adjust=no automaticly adjust 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 8151fed1e1..7b89329d97 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 @@ -2182,3 +2182,5 @@ FR-Designer_Tip_Chart_Adaptivity_Unavailable= FR-Designer_Official_Website= FR-Designer_Support_Email= FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout= +FR-Designer_Follow_Paper_Settings= +FR-Designer_No_Auto_Adjust= 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 4adc4ca518..d6ed91c34c 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 @@ -2183,3 +2183,5 @@ FR-Designer_Tip_Chart_Adaptivity_Unavailable= FR-Designer_Official_Website= FR-Designer_Support_Email= FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout= +FR-Designer_Follow_Paper_Settings= +FR-Designer_No_Auto_Adjust= 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 ec163bacd5..9181b18ba7 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 @@ -2185,3 +2185,5 @@ FR-Designer_Tip_Chart_Adaptivity_Unavailable=\u4FDD\u7559\u5E03\u5C40\u72B6\u600 FR-Designer_Official_Website=\u5B98\u65B9\u7F51\u7AD9\uFF1A FR-Designer_Support_Email=\u652F\u6301\u90AE\u7BB1\uFF1A FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout=\u7EDD\u5BF9\u753B\u5E03\u5757\u72B6\u6001\u4E0B\uFF0C\u56FE\u8868\u4E0D\u652F\u6301\u8BBE\u7F6E\u81EA\u9002\u5E94 +FR-Designer_Follow_Paper_Settings=\u8DDF\u968F\u9875\u9762\u8BBE\u7F6E +FR-Designer_No_Auto_Adjust=\u4E0D\u81EA\u52A8\u8C03\u6574 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 50363e3e65..5ee003db2d 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 @@ -2184,3 +2184,5 @@ FR-Designer_Tip_Chart_Adaptivity_Unavailable=\u4FDD\u7559\u4F48\u5C40\u72C0\u614 FR-Designer_Official_Website=\u5B98\u65B9\u7DB2\u7AD9\uFF1A FR-Designer_Support_Email=\u652F\u6301\u90F5\u7BB1\uFF1A FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout=\u7D55\u5C0D\u756B\u5E03\u584A\u72C0\u614B\u4E0B\uFF0C\u5716\u8868\u4E0D\u652F\u6301\u8A2D\u5B9A\u81EA\u6211\u8ABF\u6574 +FR-Designer_Follow_Paper_Settings=\u8DDF\u96A8\u9801\u9762\u8A2D\u5B9A +FR-Designer_No_Auto_Adjust=\u4E0D\u81EA\u52D5\u8ABF\u6574 diff --git a/designer_base/src/com/fr/design/mainframe/EastRegionContainerPane.java b/designer_base/src/com/fr/design/mainframe/EastRegionContainerPane.java index 0c9d536d99..41731dc19f 100644 --- a/designer_base/src/com/fr/design/mainframe/EastRegionContainerPane.java +++ b/designer_base/src/com/fr/design/mainframe/EastRegionContainerPane.java @@ -230,6 +230,13 @@ public class EastRegionContainerPane extends UIEastResizableContainer { updateAllPropertyPane(); } + /** + * 可通过此方法,判断当前的编辑模式 + * */ + public PropertyMode getCurrentMode() { + return currentMode; + } + public void updateAllPropertyPane() { updatePropertyItemMap(); initContentPane(); From c21f924e1b4b8b0e1c063df095238fb7b7db750b Mon Sep 17 00:00:00 2001 From: plough Date: Wed, 28 Feb 2018 13:44:35 +0800 Subject: [PATCH 02/79] =?UTF-8?q?MOBILE-8032=20=E3=80=90=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E7=AB=AF=E3=80=91=E8=AE=BE=E8=AE=A1=E5=99=A8=E3=80=8B=E5=9B=BE?= =?UTF-8?q?=E8=A1=A8=E8=87=AA=E9=80=82=E5=BA=94=E3=80=8B=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E6=96=87=E5=AD=97=E6=98=BE=E7=A4=BA=E4=B8=8D=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/gui/ilable/UILabel.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/gui/ilable/UILabel.java b/designer_base/src/com/fr/design/gui/ilable/UILabel.java index c0b921dee1..b91e2fd272 100644 --- a/designer_base/src/com/fr/design/gui/ilable/UILabel.java +++ b/designer_base/src/com/fr/design/gui/ilable/UILabel.java @@ -2,8 +2,13 @@ package com.fr.design.gui.ilable; import com.fr.design.utils.gui.GUICoreUtils; -import javax.swing.*; -import java.awt.*; +import javax.swing.Icon; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; /** * Created by IntelliJ IDEA. @@ -13,6 +18,7 @@ import java.awt.*; * Time: 下午3:15 */ public class UILabel extends JLabel { + private static final int HTML_SHIFT_HEIGHT = 3; public UILabel(String text, Icon image, int horizontalAlignment) { super(text, image, horizontalAlignment); @@ -46,6 +52,16 @@ public class UILabel extends JLabel { super(); } + @Override + public Dimension getPreferredSize() { + Dimension preferredSize = super.getPreferredSize(); + // (Windows 下)使用 html 时,文字内容会略微向下偏移,导致文字底部被截断,所以适当增加 UILabel 的高度 + if (getText().startsWith("")) { + return new Dimension(preferredSize.width, preferredSize.height + HTML_SHIFT_HEIGHT); + } + return preferredSize; + } + public static void main(String[] args) { // UILabel label = new UILabel("shishi",SwingConstants.LEFT); From aef99b242bec6b5184afb3726f665437e853f16c Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 1 Mar 2018 09:20:10 +0800 Subject: [PATCH 03/79] =?UTF-8?q?MOBILE-8070=20=E3=80=90=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E7=AB=AF=E3=80=91=E8=AE=BE=E8=AE=A1=E5=99=A8=E3=80=8B=E5=9B=BE?= =?UTF-8?q?=E8=A1=A8=E8=87=AA=E9=80=82=E5=BA=94=E3=80=8B=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E5=A5=BD=E7=9A=84=E7=BB=84=E4=BB=B6=EF=BC=8C=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E6=97=B6=E6=8F=90=E7=A4=BA=E6=96=87=E5=AD=97?= =?UTF-8?q?=E4=B8=8D=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/widget/ui/designer/mobile/ChartEditorDefinePane.java | 1 + 1 file changed, 1 insertion(+) diff --git a/designer_form/src/com/fr/design/widget/ui/designer/mobile/ChartEditorDefinePane.java b/designer_form/src/com/fr/design/widget/ui/designer/mobile/ChartEditorDefinePane.java index ddde0ba21c..c3a7232107 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/mobile/ChartEditorDefinePane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/mobile/ChartEditorDefinePane.java @@ -157,6 +157,7 @@ public class ChartEditorDefinePane extends MobileWidgetDefinePane{ BaseChartEditor chartEditor = (BaseChartEditor)xCreator.toData(); ChartMobileFitAttrStateProvider zoomOutAttr = chartEditor.getMobileAttr().getZoomOutAttr(); this.zoomOutComboBox.setSelectedItem(new Item(zoomOutAttr.description(), zoomOutAttr)); + updateTipLabel(); // 数据 populate 完成后,再设置监听 this.bindListeners2Widgets(); From 1f613bf7b123f23ab776c4b9d62bad14e8baf4b1 Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 1 Mar 2018 09:56:56 +0800 Subject: [PATCH 04/79] =?UTF-8?q?REPORT-6438=20=E6=89=93=E5=8D=B0=E6=94=B9?= =?UTF-8?q?=E8=BF=9B=E4=B8=80=E6=9C=9F=3D>1=20=E5=B7=A5=E5=85=B7=E6=A0=8F?= =?UTF-8?q?=E5=8F=AA=E4=BF=9D=E7=95=99=E4=B8=80=E4=B8=AA=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../webattr/ReportWebWidgetConstants.java | 22 +++++-------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/designer/src/com/fr/design/webattr/ReportWebWidgetConstants.java b/designer/src/com/fr/design/webattr/ReportWebWidgetConstants.java index 12dd2dcb76..eb4f9a6b71 100644 --- a/designer/src/com/fr/design/webattr/ReportWebWidgetConstants.java +++ b/designer/src/com/fr/design/webattr/ReportWebWidgetConstants.java @@ -17,27 +17,27 @@ public class ReportWebWidgetConstants { } public static WidgetOption[] getPageToolBarInstance() { - return new WidgetOption[]{FIRST, PREVIOUS, PAGENAVI, NEXT, LAST, SCALE, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, + return new WidgetOption[]{FIRST, PREVIOUS, PAGENAVI, NEXT, LAST, SCALE, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, PRINT, SETPRINTEROFFSET, CUSTOM_BUTTON}; } public static WidgetOption[] getViewToolBarInstance() { - return new WidgetOption[]{PAGESETUP, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, SETPRINTEROFFSET, PRINTPREVIEW, CUSTOM_BUTTON}; + return new WidgetOption[]{PAGESETUP, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, PRINT, SETPRINTEROFFSET, PRINTPREVIEW, CUSTOM_BUTTON}; } public static WidgetOption[] getPreviewToolBarInstance() { - return new WidgetOption[]{FIRST, PREVIOUS, PAGENAVI, NEXT, LAST, SCALE, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, + return new WidgetOption[]{FIRST, PREVIOUS, PAGENAVI, NEXT, LAST, SCALE, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, PRINT, SETPRINTEROFFSET, CUSTOM_BUTTON}; } public static WidgetOption[] getWriteToolBarInstance() { - return new WidgetOption[]{SUBMIT, VERIFY, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, IMPORTEXCELDATA, SHOWCELLVALUE, + return new WidgetOption[]{SUBMIT, VERIFY, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, PRINT, IMPORTEXCELDATA, SHOWCELLVALUE, APPENDCOLUMNROW, DELETECOLUMNROW, SETPRINTEROFFSET, WRITEOFFLINEHTML, CUSTOM_BUTTON, WRITESTASH, WRITESTASHCLEAR, IMPORTEXCELDATA_CUSTOMIZED, IMPORTEXCEL, IMPORTEXCEL_COVER, IMPORTEXCEL_CLEAN, IMPORTEXCEL_APPEND}; } public static WidgetOption[] getFormToolBarInstance() { - return new WidgetOption[]{EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, SETPRINTEROFFSET, CUSTOM_BUTTON}; + return new WidgetOption[]{EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, PRINT, SETPRINTEROFFSET, CUSTOM_BUTTON}; } // 查询 @@ -48,14 +48,6 @@ public class ReportWebWidgetConstants { public static final WidgetOption SUBMIT = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_Utils-Submit"), BaseUtils.readIcon("/com/fr/web/images/save.png"), Submit.class); - // flash打印按钮 - public static final WidgetOption FLASHPRINT = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_Utils-Print[Client]"), - BaseUtils.readIcon("/com/fr/web/images/flashPrint.png"), FlashPrint.class); - - // appletprint - public static final WidgetOption APPLETPRINT = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_Applet_Print"), - BaseUtils.readIcon("/com/fr/web/images/appletPrint.png"), AppletPrint.class); - // PDF导出 public static final WidgetOption PDF = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_ReportServerP-PDF"), BaseUtils.readIcon("/com/fr/web/images/pdf.png"), PDF.class); @@ -64,10 +56,6 @@ public class ReportWebWidgetConstants { public static final WidgetOption PDF2 = WidgetOptionFactory.createByWidgetClass( Inter.getLocText(new String[]{"ReportServerP-PDF", "ReportServerP-PDF2-INFO"}, new String[]{"(", ")"}), BaseUtils.readIcon("/com/fr/web/images/pdf.png"), PDF2.class); - // 客户端PDF打印 - public static final WidgetOption PDFPRINT = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_Utils-Print[Client]"), - BaseUtils.readIcon("/com/fr/web/images/pdfPrint.png"), PDFPrint.class); - // 服务器端打印 public static final WidgetOption SERVERPRINT = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_ReportServerP-Print[Server]"), BaseUtils.readIcon("/com/fr/web/images/serverPrint.png"), ServerPrint.class); From 48ee1937bca7ff4c2372ed6e146a5105944824a6 Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Thu, 1 Mar 2018 10:19:05 +0800 Subject: [PATCH 05/79] =?UTF-8?q?REPORT-7000=20widget=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E5=88=B0engine-cross?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../widget/ui/designer/component/PaddingBoundPane.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/designer_form/src/com/fr/design/widget/ui/designer/component/PaddingBoundPane.java b/designer_form/src/com/fr/design/widget/ui/designer/component/PaddingBoundPane.java index 21dcb4b6e8..0214a5fc95 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/component/PaddingBoundPane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/component/PaddingBoundPane.java @@ -1,5 +1,6 @@ package com.fr.design.widget.ui.designer.component; +import com.fr.base.iofileattr.TemplateIdAttrMark; import com.fr.design.designer.IntervalConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ilable.UILabel; @@ -7,8 +8,8 @@ import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; -import com.fr.form.ui.AbstractMarginWidget; import com.fr.form.ui.PaddingMargin; +import com.fr.form.ui.RichStyleWidgetProvider; import com.fr.general.Inter; import javax.swing.BorderFactory; @@ -75,7 +76,7 @@ public class PaddingBoundPane extends BasicPane{ } - public void update(AbstractMarginWidget marginWidget) { + public void update(RichStyleWidgetProvider marginWidget) { marginWidget.setMargin(new PaddingMargin((int)top.getValue(), (int)left.getValue(), (int)bottom.getValue(), (int)right.getValue() )); } @@ -83,7 +84,7 @@ public class PaddingBoundPane extends BasicPane{ return "PaddingBoundPane"; } - public void populate(AbstractMarginWidget marginWidget) { + public void populate(RichStyleWidgetProvider marginWidget) { PaddingMargin paddingMargin = marginWidget.getMargin(); top.setValue(paddingMargin.getTop()); bottom.setValue(paddingMargin.getBottom()); From 530278495035ea08d7be51dd8e34491ac107ac67 Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Thu, 1 Mar 2018 10:19:51 +0800 Subject: [PATCH 06/79] 1 --- .../design/widget/ui/designer/component/PaddingBoundPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_form/src/com/fr/design/widget/ui/designer/component/PaddingBoundPane.java b/designer_form/src/com/fr/design/widget/ui/designer/component/PaddingBoundPane.java index 0214a5fc95..21d62432d2 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/component/PaddingBoundPane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/component/PaddingBoundPane.java @@ -76,7 +76,7 @@ public class PaddingBoundPane extends BasicPane{ } - public void update(RichStyleWidgetProvider marginWidget) { + public void update(RichStyle WidgetProvider marginWidget) { marginWidget.setMargin(new PaddingMargin((int)top.getValue(), (int)left.getValue(), (int)bottom.getValue(), (int)right.getValue() )); } From 3143c87458a3098023190280d3c56f30f7704625 Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Thu, 1 Mar 2018 10:20:02 +0800 Subject: [PATCH 07/79] 1 --- .../design/widget/ui/designer/component/PaddingBoundPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_form/src/com/fr/design/widget/ui/designer/component/PaddingBoundPane.java b/designer_form/src/com/fr/design/widget/ui/designer/component/PaddingBoundPane.java index 21d62432d2..0214a5fc95 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/component/PaddingBoundPane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/component/PaddingBoundPane.java @@ -76,7 +76,7 @@ public class PaddingBoundPane extends BasicPane{ } - public void update(RichStyle WidgetProvider marginWidget) { + public void update(RichStyleWidgetProvider marginWidget) { marginWidget.setMargin(new PaddingMargin((int)top.getValue(), (int)left.getValue(), (int)bottom.getValue(), (int)right.getValue() )); } From b931d8de1c7d1b172b22b5293b1b45751fe2b7a6 Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 1 Mar 2018 10:44:11 +0800 Subject: [PATCH 08/79] =?UTF-8?q?REPORT-6438=20=E6=89=93=E5=8D=B0=E6=94=B9?= =?UTF-8?q?=E8=BF=9B=E4=B8=80=E6=9C=9F=3D>2.1.1=20=E5=A2=9E=E5=8A=A0tab?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EditReportServerParameterPane.java | 7 +++-- .../fr/design/webattr/PrintSettingPane.java | 27 +++++++++++++++++++ .../com/fr/design/locale/designer.properties | 1 + .../design/locale/designer_en_US.properties | 1 + .../design/locale/designer_ja_JP.properties | 1 + .../design/locale/designer_ko_KR.properties | 1 + .../design/locale/designer_zh_CN.properties | 1 + .../design/locale/designer_zh_TW.properties | 1 + 8 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 designer/src/com/fr/design/webattr/PrintSettingPane.java diff --git a/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java b/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java index 6a3fd219a1..11c1812dd2 100644 --- a/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java +++ b/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java @@ -41,6 +41,8 @@ public class EditReportServerParameterPane extends LoadingBasicPane { private ErrorTemplatePane errorTemplatePane; + private PrintSettingPane printSettingPane; + @Override protected synchronized void initComponents(JPanel container) { @@ -68,6 +70,7 @@ public class EditReportServerParameterPane extends LoadingBasicPane { tabbedPane.addTab(Inter.getLocText("ReportServerP-Import_Css"), cssPane = new WebCssPane()); tabbedPane.addTab(Inter.getLocText("ReportServerP-Import_JavaScript"), jsPane = new WebJsPane()); tabbedPane.addTab(Inter.getLocText("FR-Designer_ErrorHandlerTemplate"), errorTemplatePane = new ErrorTemplatePane()); + tabbedPane.addTab(Inter.getLocText("FR-Designer_Print_Setting"), printSettingPane = new PrintSettingPane()); } @Override @@ -86,8 +89,8 @@ public class EditReportServerParameterPane extends LoadingBasicPane { viewPane.populateBean(webAttr.getWebView()); writePane.populateBean(webAttr.getWebWrite()); cssPane.populate(webAttr); - jsPane.populate(webAttr); + printSettingPane.populate(webAttr); } this.errorTemplatePane.populateBean(reportServerConfigManager.getErrorTemplate()); @@ -107,8 +110,8 @@ public class EditReportServerParameterPane extends LoadingBasicPane { webAttr.setWebWrite(writePane.updateBean()); cssPane.update(webAttr); - jsPane.update(webAttr); + printSettingPane.update(webAttr); reportServerConfigManager.setErrorTemplate(this.errorTemplatePane.updateBean()); } diff --git a/designer/src/com/fr/design/webattr/PrintSettingPane.java b/designer/src/com/fr/design/webattr/PrintSettingPane.java new file mode 100644 index 0000000000..0cef917d47 --- /dev/null +++ b/designer/src/com/fr/design/webattr/PrintSettingPane.java @@ -0,0 +1,27 @@ +package com.fr.design.webattr; + +import com.fr.design.dialog.BasicPane; +import com.fr.general.Inter; +import com.fr.web.attr.ReportWebAttr; + +/** + * Created by plough on 2018/3/1. + */ +public class PrintSettingPane extends BasicPane { + + public PrintSettingPane() { + } + + @Override + protected String title4PopupWindow() { + return Inter.getLocText("ReportServerP-Import_JavaScript"); + } + + public void populate(ReportWebAttr reportWebAttr) { + + } + + public void update(ReportWebAttr reportWebAttr) { + + } +} diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index 0dde0e98cb..a04bd0bad6 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -2187,3 +2187,4 @@ FR-Designer_Support_Email=Email: FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout=Under the absolute canvas block, the chart does not support the setting of self-adaptive FR-Designer_Follow_Paper_Settings=follow paper settings FR-Designer_No_Auto_Adjust=no automatic adjust +FR-Designer_Print_Setting=Print Setting 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 39108c6051..3213a3763b 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 @@ -2186,3 +2186,4 @@ FR-Designer_Support_Email=Email: FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout=Under the absolute canvas block, the chart does not support the setting of self-adaptive FR-Designer_Follow_Paper_Settings=follow paper settings FR-Designer_No_Auto_Adjust=no automaticly adjust +FR-Designer_Print_Setting=Print Setting 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 7b89329d97..c2c547f454 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 @@ -2184,3 +2184,4 @@ FR-Designer_Support_Email= FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout= FR-Designer_Follow_Paper_Settings= FR-Designer_No_Auto_Adjust= +FR-Designer_Print_Setting=\u5370\u5237\u8A2D\u5B9A 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 d6ed91c34c..201a0c7741 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 @@ -2185,3 +2185,4 @@ FR-Designer_Support_Email= FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout= FR-Designer_Follow_Paper_Settings= FR-Designer_No_Auto_Adjust= +FR-Designer_Print_Setting=\uC778\uC1C4\uC124\uC815 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 9181b18ba7..a12cbacbbe 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 @@ -2187,3 +2187,4 @@ FR-Designer_Support_Email=\u652F\u6301\u90AE\u7BB1\uFF1A FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout=\u7EDD\u5BF9\u753B\u5E03\u5757\u72B6\u6001\u4E0B\uFF0C\u56FE\u8868\u4E0D\u652F\u6301\u8BBE\u7F6E\u81EA\u9002\u5E94 FR-Designer_Follow_Paper_Settings=\u8DDF\u968F\u9875\u9762\u8BBE\u7F6E FR-Designer_No_Auto_Adjust=\u4E0D\u81EA\u52A8\u8C03\u6574 +FR-Designer_Print_Setting=\u6253\u5370\u8BBE\u7F6E 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 5ee003db2d..0fd4135924 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 @@ -2186,3 +2186,4 @@ FR-Designer_Support_Email=\u652F\u6301\u90F5\u7BB1\uFF1A FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout=\u7D55\u5C0D\u756B\u5E03\u584A\u72C0\u614B\u4E0B\uFF0C\u5716\u8868\u4E0D\u652F\u6301\u8A2D\u5B9A\u81EA\u6211\u8ABF\u6574 FR-Designer_Follow_Paper_Settings=\u8DDF\u96A8\u9801\u9762\u8A2D\u5B9A FR-Designer_No_Auto_Adjust=\u4E0D\u81EA\u52D5\u8ABF\u6574 +FR-Designer_Print_Setting=\u5217\u5370\u8A2D\u5B9A From 3198e87b4d6be59759d7699859c6e910043412ab Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 1 Mar 2018 14:38:48 +0800 Subject: [PATCH 09/79] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E5=A4=8DNPE=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/gui/ilable/UILabel.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/gui/ilable/UILabel.java b/designer_base/src/com/fr/design/gui/ilable/UILabel.java index b91e2fd272..c2c272d0ef 100644 --- a/designer_base/src/com/fr/design/gui/ilable/UILabel.java +++ b/designer_base/src/com/fr/design/gui/ilable/UILabel.java @@ -1,6 +1,7 @@ package com.fr.design.gui.ilable; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.stable.StringUtils; import javax.swing.Icon; import javax.swing.JFrame; @@ -56,7 +57,7 @@ public class UILabel extends JLabel { public Dimension getPreferredSize() { Dimension preferredSize = super.getPreferredSize(); // (Windows 下)使用 html 时,文字内容会略微向下偏移,导致文字底部被截断,所以适当增加 UILabel 的高度 - if (getText().startsWith("")) { + if (StringUtils.isNotEmpty(getText()) && getText().startsWith("")) { return new Dimension(preferredSize.width, preferredSize.height + HTML_SHIFT_HEIGHT); } return preferredSize; From 2b9deb1d31dc46648f22df9dab50c0aeae6fc808 Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 1 Mar 2018 15:40:12 +0800 Subject: [PATCH 10/79] =?UTF-8?q?REPORT-6438=20=E6=89=93=E5=8D=B0=E6=94=B9?= =?UTF-8?q?=E8=BF=9B=E4=B8=80=E6=9C=9F=3D>2.1.2=20=E6=A1=86=E6=9E=B6?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=20&=202.1.3=20=E2=80=9C=E9=9B=B6=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=AB=AF=E6=89=93=E5=8D=B0=E2=80=9D=E5=8C=BA=E5=9F=9F?= =?UTF-8?q?=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/webattr/PrintSettingPane.java | 170 ++++++++++++++++++ .../fr/design/layout/FRGUIPaneFactory.java | 31 ++++ 2 files changed, 201 insertions(+) diff --git a/designer/src/com/fr/design/webattr/PrintSettingPane.java b/designer/src/com/fr/design/webattr/PrintSettingPane.java index 0cef917d47..6163f59a23 100644 --- a/designer/src/com/fr/design/webattr/PrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/PrintSettingPane.java @@ -1,15 +1,185 @@ package com.fr.design.webattr; +import com.fr.base.BaseUtils; import com.fr.design.dialog.BasicPane; +import com.fr.design.gui.ibutton.UIRadioButton; +import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; import com.fr.web.attr.ReportWebAttr; +import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; +import javax.swing.Icon; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.CardLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.FlowLayout; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; + /** * Created by plough on 2018/3/1. */ public class PrintSettingPane extends BasicPane { + private UIRadioButton noClientPrintRadioButton = new UIRadioButton("零客户端打印"); + private UIRadioButton localSoftwarePrintRadioButton = new UIRadioButton("本地软件打印"); + private UIRadioButton topBottomRadioButton; + private UIRadioButton leftRightRadioButton; + private CardLayout printCard; + private JPanel printPane; public PrintSettingPane() { + initComponents(); + initListener(); + } + + private void initComponents() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + JPanel allPanel = FRGUIPaneFactory.createBorderLayout_L_Pane(); + this.add(allPanel, BorderLayout.CENTER); + JPanel north = FRGUIPaneFactory.createVerticalFlowLayout_S_Pane(true); + allPanel.add(north, BorderLayout.NORTH); + ButtonGroup buttonGroup = new ButtonGroup(); + noClientPrintRadioButton.setSelected(true); + buttonGroup.add(noClientPrintRadioButton); + buttonGroup.add(localSoftwarePrintRadioButton); + noClientPrintRadioButton.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 50)); + JPanel radioGroupPane = GUICoreUtils.createFlowPane(new Component[] { + noClientPrintRadioButton, localSoftwarePrintRadioButton}, FlowLayout.LEFT, 0, 0); + north.add(radioGroupPane); + + printCard = new CardLayout(); + printPane = new JPanel(); + printPane.setLayout(printCard); + printPane.add(noClientPrintRadioButton.getText(), getNoClientPrintPane()); + printPane.add(localSoftwarePrintRadioButton.getText(), getLocalSoftwarePrintPane()); + +// north.add(printPane); + north.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); + +// JPanel center = FRGUIPaneFactory.createTitledBorderPane("默认配置"); + allPanel.add(printPane, BorderLayout.CENTER); + } + + private void initListener() { + noClientPrintRadioButton.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + printCard.show(printPane, noClientPrintRadioButton.getText()); + } + } + }); + localSoftwarePrintRadioButton.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + printCard.show(printPane, localSoftwarePrintRadioButton.getText()); + } + } + }); + } + + private JPanel getNoClientPrintPane() { + JPanel printPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + + UICheckBox marginSettingCheck = new UICheckBox("打印时可设置打印边距"); + marginSettingCheck.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); + UILabel tipLabel = getTipLabel("提示:若不勾选,则使用如下默认设置中的打印边距。"); + JPanel northPane = GUICoreUtils.createFlowPane(new Component[] { + marginSettingCheck, tipLabel}, FlowLayout.LEFT); + northPane.setBorder(BorderFactory.createEmptyBorder(8, 10, 10, 0)); + + printPane.add(northPane, BorderLayout.NORTH); + + JPanel centerPane = FRGUIPaneFactory.createTitledBorderPane("默认配置"); + centerPane.add(getBasicSettingPane()); + + printPane.add(centerPane, BorderLayout.CENTER); + + return printPane; + } + + private JPanel getLocalSoftwarePrintPane() { + JPanel printPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + + JPanel northPane = FRGUIPaneFactory.createNColumnGridInnerContainer_Pane(1, 0, 15); + UILabel tipDownload = getTipLabel("提示:本地软件打印需要终端下载客户端,但能支持更多、更强大的功能。"); + northPane.add(tipDownload); + UICheckBox marginSettingCheck = new UICheckBox("打印时需要打印设置窗口"); + marginSettingCheck.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); + UILabel tipCheck = getTipLabel("提示:若不勾选,则使用如下默认设置。"); + JPanel checkPane = GUICoreUtils.createFlowPane(new Component[] { + marginSettingCheck, tipCheck}, FlowLayout.LEFT); + northPane.add(checkPane); + northPane.setBorder(BorderFactory.createEmptyBorder(3, 10, 10, 0)); + + printPane.add(northPane, BorderLayout.NORTH); + + JPanel centerPane = FRGUIPaneFactory.createTitledBorderPane("默认配置"); + centerPane.add(getBasicSettingPane()); + + printPane.add(centerPane, BorderLayout.CENTER); + return printPane; + } + + private UILabel getTipLabel(String tipText) { + UILabel tipLabel = new UILabel(tipText); + tipLabel.setForeground(Color.gray); + return tipLabel; + } + + // 边距 + 顺序 + private JPanel getBasicSettingPane() { + UICheckBox inheritPageMarginSettingCheck = getNoBorderCheckBox("继承页面边距设置"); + JPanel orderPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + orderPane.add(new UILabel("顺序:"), BorderLayout.NORTH); + + // TableLayout + double p = TableLayout.PREFERRED; + double[] rowSize = {p, p}; + double[] columnSize = {60, p}; + Component[][] components = { + {new UILabel("边距:"), inheritPageMarginSettingCheck}, + {orderPane, getPageOrderPane()} + }; + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 15); + return panel; + } + + // 生成没有边框的 UICheckBox + private UICheckBox getNoBorderCheckBox(String text) { + UICheckBox checkBox = new UICheckBox(text); + checkBox.setBorder(BorderFactory.createEmptyBorder()); + return checkBox; + } + + // 打印顺序 + private JPanel getPageOrderPane() { + // page order + JPanel pageOrderPane = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(2); + + Icon topBottomIcon = BaseUtils.readIcon("/com/fr/base/images/dialog/pagesetup/down.png"); + topBottomRadioButton = new UIRadioButton(Inter.getLocText("PageSetup-Top_to_bottom")); + pageOrderPane.add(FRGUIPaneFactory.createIconRadio_S_Pane(topBottomIcon, topBottomRadioButton)); + + Icon leftRightIcon = BaseUtils.readIcon("/com/fr/base/images/dialog/pagesetup/over.png"); + leftRightRadioButton = new UIRadioButton(Inter.getLocText("PageSetup-Left_to_right")); + pageOrderPane.add(FRGUIPaneFactory.createIconRadio_S_Pane(leftRightIcon, leftRightRadioButton)); + + ButtonGroup pageOrderButtonGroup = new ButtonGroup(); + pageOrderButtonGroup.add(topBottomRadioButton); + pageOrderButtonGroup.add(leftRightRadioButton); + + topBottomRadioButton.setSelected(true); + return pageOrderPane; } @Override diff --git a/designer_base/src/com/fr/design/layout/FRGUIPaneFactory.java b/designer_base/src/com/fr/design/layout/FRGUIPaneFactory.java index a613f23d8b..1ad4d3303b 100644 --- a/designer_base/src/com/fr/design/layout/FRGUIPaneFactory.java +++ b/designer_base/src/com/fr/design/layout/FRGUIPaneFactory.java @@ -416,6 +416,37 @@ public class FRGUIPaneFactory { return jp; } + /** + * 创建垂直流布局面板 + * + * @param isAlignLeft 是否左对齐 + * @return JPanel对象 + */ + public static JPanel createVerticalFlowLayout_S_Pane(boolean isAlignLeft) { + JPanel jp = new JPanel(); + VerticalFlowLayout layout = new VerticalFlowLayout(); + layout.setAlignLeft(isAlignLeft); + jp.setLayout(layout); + return jp; + } + + /** + * 创建垂直流布局面板 + * + * @param isAlignLeft 是否左对齐 + * @param align the alignment value + * @param hgap the horizontal gap between components + * @param vgap the vertical gap between components + * @return JPanel对象 + */ + public static JPanel createVerticalFlowLayout_Pane(boolean isAlignLeft, int align, int hgap, int vgap) { + JPanel jp = new JPanel(); + VerticalFlowLayout layout = new VerticalFlowLayout(align, hgap, vgap); + layout.setAlignLeft(isAlignLeft); + jp.setLayout(layout); + return jp; + } + /** * 创建边框面板L * From 982950b082092ce8b92a67b01c94a722f5548b2e Mon Sep 17 00:00:00 2001 From: MoMeak Date: Thu, 1 Mar 2018 17:37:40 +0800 Subject: [PATCH 11/79] =?UTF-8?q?=E6=97=A0jira=E4=BB=BB=E5=8A=A1=EF=BC=8Cn?= =?UTF-8?q?pe=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/gui/ilable/UILabel.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/gui/ilable/UILabel.java b/designer_base/src/com/fr/design/gui/ilable/UILabel.java index b91e2fd272..4477ae8375 100644 --- a/designer_base/src/com/fr/design/gui/ilable/UILabel.java +++ b/designer_base/src/com/fr/design/gui/ilable/UILabel.java @@ -2,6 +2,7 @@ package com.fr.design.gui.ilable; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.stable.StringUtils; import javax.swing.Icon; import javax.swing.JFrame; import javax.swing.JLabel; @@ -56,7 +57,7 @@ public class UILabel extends JLabel { public Dimension getPreferredSize() { Dimension preferredSize = super.getPreferredSize(); // (Windows 下)使用 html 时,文字内容会略微向下偏移,导致文字底部被截断,所以适当增加 UILabel 的高度 - if (getText().startsWith("")) { + if (StringUtils.isNotEmpty(getText()) && getText().startsWith("")) { return new Dimension(preferredSize.width, preferredSize.height + HTML_SHIFT_HEIGHT); } return preferredSize; From f3a32ba3664a0d728eab3fd0b0a5de266bbd7ea3 Mon Sep 17 00:00:00 2001 From: plough Date: Fri, 2 Mar 2018 14:11:36 +0800 Subject: [PATCH 12/79] =?UTF-8?q?REPORT-6438=20=E6=89=93=E5=8D=B0=E6=94=B9?= =?UTF-8?q?=E8=BF=9B=E4=B8=80=E6=9C=9F=3D>2.1.3=20=E2=80=9C=E9=9B=B6?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=E6=89=93=E5=8D=B0=E2=80=9D=E5=8C=BA?= =?UTF-8?q?=E5=9F=9F=3D>=E7=95=8C=E9=9D=A2=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/webattr/PrintSettingPane.java | 169 ++++++++++++++++-- 1 file changed, 155 insertions(+), 14 deletions(-) diff --git a/designer/src/com/fr/design/webattr/PrintSettingPane.java b/designer/src/com/fr/design/webattr/PrintSettingPane.java index 6163f59a23..e9aa731b58 100644 --- a/designer/src/com/fr/design/webattr/PrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/PrintSettingPane.java @@ -4,22 +4,31 @@ import com.fr.base.BaseUtils; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.ispinner.UIBasicSpinner; +import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.report.UnitFieldPane; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; +import com.fr.print.nativeprint.core.NativePrintConfigManager; +import com.fr.stable.Constants; import com.fr.web.attr.ReportWebAttr; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.Icon; import javax.swing.JPanel; +import javax.swing.SpinnerNumberModel; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Color; import java.awt.Component; +import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; @@ -29,7 +38,7 @@ import java.awt.event.ItemListener; */ public class PrintSettingPane extends BasicPane { private UIRadioButton noClientPrintRadioButton = new UIRadioButton("零客户端打印"); - private UIRadioButton localSoftwarePrintRadioButton = new UIRadioButton("本地软件打印"); + private UIRadioButton nativePrintRadioButton = new UIRadioButton("本地软件打印"); private UIRadioButton topBottomRadioButton; private UIRadioButton leftRightRadioButton; private CardLayout printCard; @@ -49,17 +58,17 @@ public class PrintSettingPane extends BasicPane { ButtonGroup buttonGroup = new ButtonGroup(); noClientPrintRadioButton.setSelected(true); buttonGroup.add(noClientPrintRadioButton); - buttonGroup.add(localSoftwarePrintRadioButton); + buttonGroup.add(nativePrintRadioButton); noClientPrintRadioButton.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 50)); JPanel radioGroupPane = GUICoreUtils.createFlowPane(new Component[] { - noClientPrintRadioButton, localSoftwarePrintRadioButton}, FlowLayout.LEFT, 0, 0); + noClientPrintRadioButton, nativePrintRadioButton}, FlowLayout.LEFT, 0, 0); north.add(radioGroupPane); printCard = new CardLayout(); printPane = new JPanel(); printPane.setLayout(printCard); printPane.add(noClientPrintRadioButton.getText(), getNoClientPrintPane()); - printPane.add(localSoftwarePrintRadioButton.getText(), getLocalSoftwarePrintPane()); + printPane.add(nativePrintRadioButton.getText(), getNativePrintPane()); // north.add(printPane); north.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); @@ -77,11 +86,11 @@ public class PrintSettingPane extends BasicPane { } } }); - localSoftwarePrintRadioButton.addItemListener(new ItemListener() { + nativePrintRadioButton.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { - printCard.show(printPane, localSoftwarePrintRadioButton.getText()); + printCard.show(printPane, nativePrintRadioButton.getText()); } } }); @@ -107,7 +116,7 @@ public class PrintSettingPane extends BasicPane { return printPane; } - private JPanel getLocalSoftwarePrintPane() { + private JPanel getNativePrintPane() { JPanel printPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); JPanel northPane = FRGUIPaneFactory.createNColumnGridInnerContainer_Pane(1, 0, 15); @@ -124,12 +133,87 @@ public class PrintSettingPane extends BasicPane { printPane.add(northPane, BorderLayout.NORTH); JPanel centerPane = FRGUIPaneFactory.createTitledBorderPane("默认配置"); - centerPane.add(getBasicSettingPane()); + + + JPanel centerContentPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + centerContentPane.add(getNativePrintMainSettingPane(), BorderLayout.CENTER); + JPanel basicSettingPane = getBasicSettingPane(); + basicSettingPane.setBorder(BorderFactory.createEmptyBorder(15, 0, 0, 0)); + centerContentPane.add(basicSettingPane, BorderLayout.SOUTH); + centerPane.add(centerContentPane); printPane.add(centerPane, BorderLayout.CENTER); return printPane; } + private JPanel getNativePrintMainSettingPane() { + + // 打印机 + String[] printerArray = NativePrintConfigManager.getInstance().getAllPrinterNames(); + UIComboBox printerComboBox = new UIComboBox(printerArray); + printerComboBox.setPreferredSize(new Dimension(200, printerComboBox.getPreferredSize().height)); + JPanel printerPane = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); + printerPane.add(printerComboBox); + + // 份数 + UIBasicSpinner copySpinner = new UIBasicSpinner(new SpinnerNumberModel(1, 0, Integer.MAX_VALUE, 1)); + GUICoreUtils.setColumnForSpinner(copySpinner, 5); + JPanel copyPane = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); + copyPane.add(copySpinner); + + UICheckBox inheritPagePaperSettingCheck = getNoBorderCheckBox("继承页面纸张设置"); + UICheckBox inheritPageLayoutSettingCheck = getNoBorderCheckBox("继承页面布局设置"); + UICheckBox zoomCheck = getNoBorderCheckBox("根据纸张大小缩放打印"); + + // 页码标签 + UILabel printAreaLabel = new UILabel("页码:"); + JPanel printAreaLabelPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + printAreaLabelPane.add(printAreaLabel, BorderLayout.NORTH); + printAreaLabel.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0)); + + // TableLayout + double p = TableLayout.PREFERRED; + double[] rowSize = {p, p, p, p, p, p}; + double[] columnSize = {60, p}; + Component[][] components = { + {new UILabel("打印机:"), printerPane}, + {new UILabel("份数:"), copyPane}, + {printAreaLabelPane, getPrintAreaPane()}, + {new UILabel("纸张:"), inheritPagePaperSettingCheck}, + {new UILabel("布局:"), inheritPageLayoutSettingCheck}, + {new UILabel("缩放:"), zoomCheck} + }; + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 15); + return panel; + } + + // 页码范围 + private JPanel getPrintAreaPane() { + UIRadioButton allPageRadioButton = new UIRadioButton("所有页"); + UIRadioButton currentPageRadioButton = new UIRadioButton("当前页"); + UIRadioButton customPageRadioButton = new UIRadioButton("指定页"); + ButtonGroup group = new ButtonGroup(); + group.add(allPageRadioButton); + group.add(currentPageRadioButton); + group.add(customPageRadioButton); + allPageRadioButton.setSelected(true); + + UITextField areaField = new UITextField(20); + UILabel areaFieldTip = getTipLabel("格式(1, 4-9, 6, 8)"); + + // TableLayout + double p = TableLayout.PREFERRED; + double[] rowSize = {p, p, p}; + double[] columnSize = {p, p, p}; + Component[][] components = { + {allPageRadioButton, null, null}, + {currentPageRadioButton, null, null}, + {customPageRadioButton, areaField, areaFieldTip} + }; + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 0); + return panel; + } + private UILabel getTipLabel(String tipText) { UILabel tipLabel = new UILabel(tipText); tipLabel.setForeground(Color.gray); @@ -139,19 +223,76 @@ public class PrintSettingPane extends BasicPane { // 边距 + 顺序 private JPanel getBasicSettingPane() { UICheckBox inheritPageMarginSettingCheck = getNoBorderCheckBox("继承页面边距设置"); - JPanel orderPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - orderPane.add(new UILabel("顺序:"), BorderLayout.NORTH); + JPanel pageMarginCheckPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + JPanel pageMarginSettingPane = getPageMarginSettingPane(); + pageMarginSettingPane.setBorder(BorderFactory.createEmptyBorder(10, -10, 0, 0)); + pageMarginCheckPane.add(inheritPageMarginSettingCheck, BorderLayout.NORTH); + pageMarginCheckPane.add(pageMarginSettingPane, BorderLayout.CENTER); + initListenerForCheckboxAndDynamicPane(inheritPageMarginSettingCheck, pageMarginSettingPane); // TableLayout double p = TableLayout.PREFERRED; double[] rowSize = {p, p}; double[] columnSize = {60, p}; Component[][] components = { - {new UILabel("边距:"), inheritPageMarginSettingCheck}, - {orderPane, getPageOrderPane()} + {getTopAlignLabelPane("边距:"), pageMarginCheckPane}, + {getTopAlignLabelPane("顺序:"), getPageOrderPane()} }; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 15); - return panel; + return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 15); + } + + private void initListenerForCheckboxAndDynamicPane(UICheckBox checkBox, JPanel dynamicPane) { + checkBox.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + dynamicPane.setVisible(e.getStateChange() == ItemEvent.DESELECTED); + } + }); + } + + // 返回包含一个标签的 panel,标签始终位于 panel 顶部 + private JPanel getTopAlignLabelPane(String labelText) { + JPanel labelPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + labelPane.add(new UILabel(labelText), BorderLayout.NORTH); + return labelPane; + } + + // 页边距设置面板 + private JPanel getPageMarginSettingPane() { + JPanel marginPane = FRGUIPaneFactory.createX_AXISBoxInnerContainer_M_Pane(); + // left + JPanel marginLeftPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_M_Pane(); + marginPane.add(marginLeftPane); + + JPanel marginLeftTextPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + marginLeftPane.add(marginLeftTextPane); + marginLeftTextPane.add(new UILabel(Inter.getLocText("Top") + ":")); + UnitFieldPane marginTopUnitFieldPane = new UnitFieldPane(Constants.UNIT_MM); + marginLeftTextPane.add(marginTopUnitFieldPane); + JPanel marginLeftUnitPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + marginLeftPane.add(marginLeftUnitPane); + marginLeftUnitPane.add(new UILabel(Inter.getLocText("Bottom") + ":")); + UnitFieldPane marginBottomUnitFieldPane = new UnitFieldPane(Constants.UNIT_MM); + marginLeftUnitPane.add(marginBottomUnitFieldPane); + + // right + JPanel marginRightPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_M_Pane(); + marginPane.add(marginRightPane); + + // peter:这个一个垂直的上下的字符panel. + JPanel marginRightTextPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + marginRightPane.add(marginRightTextPane); + marginRightTextPane.add(new UILabel(Inter.getLocText("Left") + ":")); + UnitFieldPane marginLeftUnitFieldPane = new UnitFieldPane(Constants.UNIT_MM); + marginRightTextPane.add(marginLeftUnitFieldPane); + + JPanel marginRightUnitPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + marginRightPane.add(marginRightUnitPane); + marginRightUnitPane.add(new UILabel(Inter.getLocText("Right") + ":")); + UnitFieldPane marginRightUnitFieldPane = new UnitFieldPane(Constants.UNIT_MM); + marginRightUnitPane.add(marginRightUnitFieldPane); + + return marginPane; } // 生成没有边框的 UICheckBox From 1009764c82eb5ba2b8f37b467ac5975362b1a2a4 Mon Sep 17 00:00:00 2001 From: plough Date: Fri, 2 Mar 2018 16:32:16 +0800 Subject: [PATCH 13/79] =?UTF-8?q?REPORT-6438=20=E6=89=93=E5=8D=B0=E6=94=B9?= =?UTF-8?q?=E8=BF=9B=E4=B8=80=E6=9C=9F=3D>2.1.4=20=E2=80=9C=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E8=BD=AF=E4=BB=B6=E6=89=93=E5=8D=B0=E2=80=9D=E5=8C=BA?= =?UTF-8?q?=E5=9F=9F=3D>=E7=95=8C=E9=9D=A2=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/webattr/PrintSettingPane.java | 151 +++++++++++++----- 1 file changed, 115 insertions(+), 36 deletions(-) diff --git a/designer/src/com/fr/design/webattr/PrintSettingPane.java b/designer/src/com/fr/design/webattr/PrintSettingPane.java index e9aa731b58..932650b66a 100644 --- a/designer/src/com/fr/design/webattr/PrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/PrintSettingPane.java @@ -1,27 +1,33 @@ package com.fr.design.webattr; import com.fr.base.BaseUtils; +import com.fr.base.PaperSize; +import com.fr.base.Utils; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.design.gui.icombobox.UIComboBoxRenderer; +import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UIBasicSpinner; -import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.report.UnitFieldPane; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.ComparatorUtils; import com.fr.general.Inter; import com.fr.print.nativeprint.core.NativePrintConfigManager; +import com.fr.report.stable.ReportConstants; import com.fr.stable.Constants; import com.fr.web.attr.ReportWebAttr; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.Icon; +import javax.swing.JList; import javax.swing.JPanel; import javax.swing.SpinnerNumberModel; import java.awt.BorderLayout; @@ -70,10 +76,8 @@ public class PrintSettingPane extends BasicPane { printPane.add(noClientPrintRadioButton.getText(), getNoClientPrintPane()); printPane.add(nativePrintRadioButton.getText(), getNativePrintPane()); -// north.add(printPane); north.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); -// JPanel center = FRGUIPaneFactory.createTitledBorderPane("默认配置"); allPanel.add(printPane, BorderLayout.CENTER); } @@ -109,7 +113,22 @@ public class PrintSettingPane extends BasicPane { printPane.add(northPane, BorderLayout.NORTH); JPanel centerPane = FRGUIPaneFactory.createTitledBorderPane("默认配置"); - centerPane.add(getBasicSettingPane()); + + UICheckBox inheritPageMarginSettingCheck = getNoBorderCheckBox("继承页面边距设置"); + JPanel pageMarginSettingPane = getPageMarginSettingPane(); + pageMarginSettingPane.setBorder(BorderFactory.createEmptyBorder(10, -10, 0, 0)); + JPanel pageMarginCheckPane = getCheckboxAndDynamicPane(inheritPageMarginSettingCheck, pageMarginSettingPane); + // TableLayout + double p = TableLayout.PREFERRED; + double[] rowSize = {p, p}; + double[] columnSize = {60, p}; + Component[][] components = { + {getTopAlignLabelPane("边距:"), pageMarginCheckPane}, + {getTopAlignLabelPane("顺序:"), getPageOrderPane()} + }; + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 15); + + centerPane.add(panel); printPane.add(centerPane, BorderLayout.CENTER); @@ -135,12 +154,16 @@ public class PrintSettingPane extends BasicPane { JPanel centerPane = FRGUIPaneFactory.createTitledBorderPane("默认配置"); - JPanel centerContentPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - centerContentPane.add(getNativePrintMainSettingPane(), BorderLayout.CENTER); - JPanel basicSettingPane = getBasicSettingPane(); - basicSettingPane.setBorder(BorderFactory.createEmptyBorder(15, 0, 0, 0)); - centerContentPane.add(basicSettingPane, BorderLayout.SOUTH); - centerPane.add(centerContentPane); +// JPanel centerContentPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + + UIScrollPane scrollPane = new UIScrollPane(getNativePrintMainSettingPane()); + scrollPane.setBorder(null); + scrollPane.setPreferredSize(new Dimension(600, 340)); +// centerContentPane.add(scrollPane, BorderLayout.CENTER); + +// centerContentPane.add(getNativePrintMainSettingPane(), BorderLayout.CENTER); +// centerPane.add(centerContentPane); + centerPane.add(scrollPane); printPane.add(centerPane, BorderLayout.CENTER); return printPane; @@ -162,7 +185,13 @@ public class PrintSettingPane extends BasicPane { copyPane.add(copySpinner); UICheckBox inheritPagePaperSettingCheck = getNoBorderCheckBox("继承页面纸张设置"); + JPanel paperSettingPane = getPaperSettingPane(); + JPanel paperSettingCheckPane = getCheckboxAndDynamicPane(inheritPagePaperSettingCheck, paperSettingPane); + UICheckBox inheritPageLayoutSettingCheck = getNoBorderCheckBox("继承页面布局设置"); + JPanel layoutSettingPane = getLayoutSettingPane(); + JPanel layoutSettingCheckPane = getCheckboxAndDynamicPane(inheritPageLayoutSettingCheck, layoutSettingPane); + UICheckBox zoomCheck = getNoBorderCheckBox("根据纸张大小缩放打印"); // 页码标签 @@ -171,22 +200,87 @@ public class PrintSettingPane extends BasicPane { printAreaLabelPane.add(printAreaLabel, BorderLayout.NORTH); printAreaLabel.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0)); + // 边距 + UICheckBox inheritPageMarginSettingCheck = getNoBorderCheckBox("继承页面边距设置"); + JPanel pageMarginSettingPane = getPageMarginSettingPane(); + pageMarginSettingPane.setBorder(BorderFactory.createEmptyBorder(10, -10, 0, 0)); + JPanel pageMarginCheckPane = getCheckboxAndDynamicPane(inheritPageMarginSettingCheck, pageMarginSettingPane); + // TableLayout double p = TableLayout.PREFERRED; - double[] rowSize = {p, p, p, p, p, p}; + double[] rowSize = {p, p, p, p, p, p, p, p}; double[] columnSize = {60, p}; Component[][] components = { {new UILabel("打印机:"), printerPane}, {new UILabel("份数:"), copyPane}, {printAreaLabelPane, getPrintAreaPane()}, - {new UILabel("纸张:"), inheritPagePaperSettingCheck}, - {new UILabel("布局:"), inheritPageLayoutSettingCheck}, - {new UILabel("缩放:"), zoomCheck} + {getTopAlignLabelPane("纸张:"), paperSettingCheckPane}, + {getTopAlignLabelPane("布局:"), layoutSettingCheckPane}, + {getTopAlignLabelPane("边距:"), pageMarginCheckPane}, + {new UILabel("缩放:"), zoomCheck}, + {getTopAlignLabelPane("顺序:"), getPageOrderPane()} }; JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 15); return panel; } + private JPanel getLayoutSettingPane() { + JPanel layoutSettingPane = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); + layoutSettingPane.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0)); + UIRadioButton portraitRadioButton = new UIRadioButton(Inter.getLocText("PageSetup-Portrait")); + portraitRadioButton.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); + UIRadioButton landscapeRadioButton = new UIRadioButton(Inter.getLocText("PageSetup-Landscape")); + layoutSettingPane.add(portraitRadioButton); + layoutSettingPane.add(landscapeRadioButton); + + ButtonGroup layoutButtonGroup = new ButtonGroup(); + layoutButtonGroup.add(portraitRadioButton); + layoutButtonGroup.add(landscapeRadioButton); + + portraitRadioButton.setSelected(true); + return layoutSettingPane; + } + + private JPanel getPaperSettingPane() { + UIComboBox predefinedComboBox = new UIComboBox(); + for (int i = 0; i < ReportConstants.PaperSizeNameSizeArray.length; i++) { + Object[] tmpPaperSizeNameArray = ReportConstants.PaperSizeNameSizeArray[i]; + predefinedComboBox.addItem(tmpPaperSizeNameArray[1]); + } + predefinedComboBox.setRenderer(new UIComboBoxRenderer() { + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + + if (value instanceof PaperSize) { + PaperSize paperSize = (PaperSize) value; + for (int i = 0; i < ReportConstants.PaperSizeNameSizeArray.length; i++) { + Object[] tmpPaperSizeNameArray = ReportConstants.PaperSizeNameSizeArray[i]; + + if (ComparatorUtils.equals(paperSize, tmpPaperSizeNameArray[1])) { + String sbuf = tmpPaperSizeNameArray[0].toString() + " [" + + Utils.convertNumberStringToString(paperSize.getWidth().toMMValue4Scale2()) + + 'x' + + Utils.convertNumberStringToString(paperSize.getHeight().toMMValue4Scale2()) + + ' ' + + Inter.getLocText("PageSetup-mm") + + ']'; + this.setText(sbuf); + break; + } + } + } + + return this; + } + }); + + JPanel panel = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); + panel.add(predefinedComboBox); + panel.setBorder(BorderFactory.createEmptyBorder(8, 0, 0, 0)); + return panel; + } + // 页码范围 private JPanel getPrintAreaPane() { UIRadioButton allPageRadioButton = new UIRadioButton("所有页"); @@ -220,34 +314,19 @@ public class PrintSettingPane extends BasicPane { return tipLabel; } - // 边距 + 顺序 - private JPanel getBasicSettingPane() { - UICheckBox inheritPageMarginSettingCheck = getNoBorderCheckBox("继承页面边距设置"); - JPanel pageMarginCheckPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - JPanel pageMarginSettingPane = getPageMarginSettingPane(); - pageMarginSettingPane.setBorder(BorderFactory.createEmptyBorder(10, -10, 0, 0)); - pageMarginCheckPane.add(inheritPageMarginSettingCheck, BorderLayout.NORTH); - pageMarginCheckPane.add(pageMarginSettingPane, BorderLayout.CENTER); - initListenerForCheckboxAndDynamicPane(inheritPageMarginSettingCheck, pageMarginSettingPane); - - // TableLayout - double p = TableLayout.PREFERRED; - double[] rowSize = {p, p}; - double[] columnSize = {60, p}; - Component[][] components = { - {getTopAlignLabelPane("边距:"), pageMarginCheckPane}, - {getTopAlignLabelPane("顺序:"), getPageOrderPane()} - }; - return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 15); - } - - private void initListenerForCheckboxAndDynamicPane(UICheckBox checkBox, JPanel dynamicPane) { + private JPanel getCheckboxAndDynamicPane(UICheckBox checkBox, JPanel dynamicPane) { checkBox.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { dynamicPane.setVisible(e.getStateChange() == ItemEvent.DESELECTED); } }); + JPanel panel = FRGUIPaneFactory.createBorderLayout_S_Pane(); + panel.add(checkBox, BorderLayout.NORTH); + JPanel dynamicPaneWrapper = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); + dynamicPaneWrapper.add(dynamicPane); + panel.add(dynamicPaneWrapper, BorderLayout.CENTER); + return panel; } // 返回包含一个标签的 panel,标签始终位于 panel 顶部 From 14d6a9f8f06e2068ff33603a615c108dc5e5d5d5 Mon Sep 17 00:00:00 2001 From: plough Date: Sun, 4 Mar 2018 20:56:01 +0800 Subject: [PATCH 14/79] =?UTF-8?q?REPORT-6438=20=E6=89=93=E5=8D=B0=E6=94=B9?= =?UTF-8?q?=E8=BF=9B=E4=B8=80=E6=9C=9F=3D>2.1=20=E2=80=9C=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E9=85=8D=E7=BD=AE=E2=80=9D=E7=9A=84=E2=80=9C?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E8=AE=BE=E7=BD=AE=E2=80=9Dtab=3D>=E5=AD=98?= =?UTF-8?q?=E5=82=A8=E9=85=8D=E7=BD=AE=E6=A1=86=E6=9E=B6=E6=90=AD=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EditReportServerParameterPane.java | 4 +- .../fr/design/webattr/PrintSettingPane.java | 39 ++++++++++++++++--- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java b/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java index 11c1812dd2..201d9b3369 100644 --- a/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java +++ b/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java @@ -90,7 +90,7 @@ public class EditReportServerParameterPane extends LoadingBasicPane { writePane.populateBean(webAttr.getWebWrite()); cssPane.populate(webAttr); jsPane.populate(webAttr); - printSettingPane.populate(webAttr); + printSettingPane.populate(webAttr.getPrintAttr()); } this.errorTemplatePane.populateBean(reportServerConfigManager.getErrorTemplate()); @@ -111,7 +111,7 @@ public class EditReportServerParameterPane extends LoadingBasicPane { cssPane.update(webAttr); jsPane.update(webAttr); - printSettingPane.update(webAttr); + webAttr.setPrintAttr(printSettingPane.updateBean()); reportServerConfigManager.setErrorTemplate(this.errorTemplatePane.updateBean()); } diff --git a/designer/src/com/fr/design/webattr/PrintSettingPane.java b/designer/src/com/fr/design/webattr/PrintSettingPane.java index 932650b66a..3f1bce8ebb 100644 --- a/designer/src/com/fr/design/webattr/PrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/PrintSettingPane.java @@ -15,12 +15,16 @@ import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.mainframe.DesignerContext; import com.fr.design.report.UnitFieldPane; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; +import com.fr.print.NoClientPrintAttr; +import com.fr.print.PrintAttr; import com.fr.print.nativeprint.core.NativePrintConfigManager; import com.fr.report.stable.ReportConstants; +import com.fr.report.web.button.Print; import com.fr.stable.Constants; import com.fr.web.attr.ReportWebAttr; @@ -47,6 +51,7 @@ public class PrintSettingPane extends BasicPane { private UIRadioButton nativePrintRadioButton = new UIRadioButton("本地软件打印"); private UIRadioButton topBottomRadioButton; private UIRadioButton leftRightRadioButton; + private UICheckBox setMarginOnPrintCheck; private CardLayout printCard; private JPanel printPane; @@ -103,11 +108,11 @@ public class PrintSettingPane extends BasicPane { private JPanel getNoClientPrintPane() { JPanel printPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - UICheckBox marginSettingCheck = new UICheckBox("打印时可设置打印边距"); - marginSettingCheck.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); + setMarginOnPrintCheck = new UICheckBox("打印时可设置打印边距"); + setMarginOnPrintCheck.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); UILabel tipLabel = getTipLabel("提示:若不勾选,则使用如下默认设置中的打印边距。"); JPanel northPane = GUICoreUtils.createFlowPane(new Component[] { - marginSettingCheck, tipLabel}, FlowLayout.LEFT); + setMarginOnPrintCheck, tipLabel}, FlowLayout.LEFT); northPane.setBorder(BorderFactory.createEmptyBorder(8, 10, 10, 0)); printPane.add(northPane, BorderLayout.NORTH); @@ -407,11 +412,35 @@ public class PrintSettingPane extends BasicPane { return Inter.getLocText("ReportServerP-Import_JavaScript"); } - public void populate(ReportWebAttr reportWebAttr) { + public void populate(PrintAttr printAttr) { + if (printAttr == null) { + return; + } + + if (printAttr.getPrintType() == PrintAttr.NO_CLIENT_PRINT) { + noClientPrintRadioButton.setSelected(true); + } else { + nativePrintRadioButton.setSelected(true); + } + + NoClientPrintAttr noClientPrintAttr = printAttr.getNoClientPrintAttr(); + setMarginOnPrintCheck.setSelected(noClientPrintAttr.isSetMarginOnPrint()); } - public void update(ReportWebAttr reportWebAttr) { + public PrintAttr updateBean() { + PrintAttr printAttr = new PrintAttr(); + + printAttr.setPrintType(noClientPrintRadioButton.isSelected() ? + PrintAttr.NO_CLIENT_PRINT : PrintAttr.NATIVE_PRINT); + + + NoClientPrintAttr noClientPrintAttr = new NoClientPrintAttr(); +// NoClientPrintAttr noClientPrintAttr = reportWebAttr.getNoClientPrintAttr(); + noClientPrintAttr.setSetMarginOnPrint(setMarginOnPrintCheck.isSelected()); + printAttr.setNoClientPrintAttr(noClientPrintAttr); + + return printAttr; } } From e83bbb894a80c966187e43378c4493fcf0a65e18 Mon Sep 17 00:00:00 2001 From: plough Date: Mon, 5 Mar 2018 10:33:10 +0800 Subject: [PATCH 15/79] =?UTF-8?q?REPORT-6438=20=E6=89=93=E5=8D=B0=E6=94=B9?= =?UTF-8?q?=E8=BF=9B=E4=B8=80=E6=9C=9F=3D>2.1=20=E2=80=9C=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E9=85=8D=E7=BD=AE=E2=80=9D=E7=9A=84=E2=80=9C?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E8=AE=BE=E7=BD=AE=E2=80=9Dtab=3D>=E5=9B=BD?= =?UTF-8?q?=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/webattr/PrintSettingPane.java | 71 +++++++++---------- .../com/fr/design/locale/designer.properties | 20 ++++++ .../design/locale/designer_en_US.properties | 20 ++++++ .../design/locale/designer_ja_JP.properties | 20 ++++++ .../design/locale/designer_ko_KR.properties | 20 ++++++ .../design/locale/designer_zh_CN.properties | 20 ++++++ .../design/locale/designer_zh_TW.properties | 20 ++++++ 7 files changed, 154 insertions(+), 37 deletions(-) diff --git a/designer/src/com/fr/design/webattr/PrintSettingPane.java b/designer/src/com/fr/design/webattr/PrintSettingPane.java index 3f1bce8ebb..6449e17af0 100644 --- a/designer/src/com/fr/design/webattr/PrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/PrintSettingPane.java @@ -15,7 +15,6 @@ import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.mainframe.DesignerContext; import com.fr.design.report.UnitFieldPane; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; @@ -24,9 +23,7 @@ import com.fr.print.NoClientPrintAttr; import com.fr.print.PrintAttr; import com.fr.print.nativeprint.core.NativePrintConfigManager; import com.fr.report.stable.ReportConstants; -import com.fr.report.web.button.Print; import com.fr.stable.Constants; -import com.fr.web.attr.ReportWebAttr; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; @@ -47,11 +44,11 @@ import java.awt.event.ItemListener; * Created by plough on 2018/3/1. */ public class PrintSettingPane extends BasicPane { - private UIRadioButton noClientPrintRadioButton = new UIRadioButton("零客户端打印"); - private UIRadioButton nativePrintRadioButton = new UIRadioButton("本地软件打印"); + private UIRadioButton noClientPrintRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_No_Client_Print")); + private UIRadioButton nativePrintRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Native_Print")); private UIRadioButton topBottomRadioButton; private UIRadioButton leftRightRadioButton; - private UICheckBox setMarginOnPrintCheck; + private UICheckBox setMarginWhenPrintCheck; private CardLayout printCard; private JPanel printPane; @@ -108,18 +105,18 @@ public class PrintSettingPane extends BasicPane { private JPanel getNoClientPrintPane() { JPanel printPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - setMarginOnPrintCheck = new UICheckBox("打印时可设置打印边距"); - setMarginOnPrintCheck.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); - UILabel tipLabel = getTipLabel("提示:若不勾选,则使用如下默认设置中的打印边距。"); + setMarginWhenPrintCheck = new UICheckBox(Inter.getLocText("FR-Designer_Set_Margin_When_Printing")); + setMarginWhenPrintCheck.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); + UILabel tipLabel = getTipLabel(Inter.getLocText("FR-Designer_Tip_Use_Default_Print_Margin")); JPanel northPane = GUICoreUtils.createFlowPane(new Component[] { - setMarginOnPrintCheck, tipLabel}, FlowLayout.LEFT); + setMarginWhenPrintCheck, tipLabel}, FlowLayout.LEFT); northPane.setBorder(BorderFactory.createEmptyBorder(8, 10, 10, 0)); printPane.add(northPane, BorderLayout.NORTH); - JPanel centerPane = FRGUIPaneFactory.createTitledBorderPane("默认配置"); + JPanel centerPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Default_Settings")); - UICheckBox inheritPageMarginSettingCheck = getNoBorderCheckBox("继承页面边距设置"); + UICheckBox inheritPageMarginSettingCheck = getNoBorderCheckBox(Inter.getLocText("FR-Designer_Inherit_Page_Margin_Setting")); JPanel pageMarginSettingPane = getPageMarginSettingPane(); pageMarginSettingPane.setBorder(BorderFactory.createEmptyBorder(10, -10, 0, 0)); JPanel pageMarginCheckPane = getCheckboxAndDynamicPane(inheritPageMarginSettingCheck, pageMarginSettingPane); @@ -128,8 +125,8 @@ public class PrintSettingPane extends BasicPane { double[] rowSize = {p, p}; double[] columnSize = {60, p}; Component[][] components = { - {getTopAlignLabelPane("边距:"), pageMarginCheckPane}, - {getTopAlignLabelPane("顺序:"), getPageOrderPane()} + {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Margin") + ":"), pageMarginCheckPane}, + {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Order") + ":"), getPageOrderPane()} }; JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 15); @@ -144,11 +141,11 @@ public class PrintSettingPane extends BasicPane { JPanel printPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); JPanel northPane = FRGUIPaneFactory.createNColumnGridInnerContainer_Pane(1, 0, 15); - UILabel tipDownload = getTipLabel("提示:本地软件打印需要终端下载客户端,但能支持更多、更强大的功能。"); + UILabel tipDownload = getTipLabel(Inter.getLocText("FR-Designer_Tip_Native_Print_Need_Client")); northPane.add(tipDownload); - UICheckBox marginSettingCheck = new UICheckBox("打印时需要打印设置窗口"); + UICheckBox marginSettingCheck = new UICheckBox(Inter.getLocText("FR-Designer_Show_Print_Setting_Window_When_Printing")); marginSettingCheck.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); - UILabel tipCheck = getTipLabel("提示:若不勾选,则使用如下默认设置。"); + UILabel tipCheck = getTipLabel(Inter.getLocText("FR-Designer_Tip_Use_Default_Settings")); JPanel checkPane = GUICoreUtils.createFlowPane(new Component[] { marginSettingCheck, tipCheck}, FlowLayout.LEFT); northPane.add(checkPane); @@ -156,7 +153,7 @@ public class PrintSettingPane extends BasicPane { printPane.add(northPane, BorderLayout.NORTH); - JPanel centerPane = FRGUIPaneFactory.createTitledBorderPane("默认配置"); + JPanel centerPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Default_Settings")); // JPanel centerContentPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); @@ -189,24 +186,24 @@ public class PrintSettingPane extends BasicPane { JPanel copyPane = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); copyPane.add(copySpinner); - UICheckBox inheritPagePaperSettingCheck = getNoBorderCheckBox("继承页面纸张设置"); + UICheckBox inheritPagePaperSettingCheck = getNoBorderCheckBox(Inter.getLocText("FR-Designer_Inherit_Page_Paper_Setting")); JPanel paperSettingPane = getPaperSettingPane(); JPanel paperSettingCheckPane = getCheckboxAndDynamicPane(inheritPagePaperSettingCheck, paperSettingPane); - UICheckBox inheritPageLayoutSettingCheck = getNoBorderCheckBox("继承页面布局设置"); + UICheckBox inheritPageLayoutSettingCheck = getNoBorderCheckBox(Inter.getLocText("FR-Designer_Inherit_Page_Layout_Setting")); JPanel layoutSettingPane = getLayoutSettingPane(); JPanel layoutSettingCheckPane = getCheckboxAndDynamicPane(inheritPageLayoutSettingCheck, layoutSettingPane); - UICheckBox zoomCheck = getNoBorderCheckBox("根据纸张大小缩放打印"); + UICheckBox zoomCheck = getNoBorderCheckBox(Inter.getLocText("FR-Designer_Print_To_Fit_Paper_Size")); // 页码标签 - UILabel printAreaLabel = new UILabel("页码:"); + UILabel printAreaLabel = new UILabel(Inter.getLocText("FR-Engine-Page_Number") + ":"); JPanel printAreaLabelPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); printAreaLabelPane.add(printAreaLabel, BorderLayout.NORTH); printAreaLabel.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0)); // 边距 - UICheckBox inheritPageMarginSettingCheck = getNoBorderCheckBox("继承页面边距设置"); + UICheckBox inheritPageMarginSettingCheck = getNoBorderCheckBox(Inter.getLocText("FR-Designer_Inherit_Page_Margin_Setting")); JPanel pageMarginSettingPane = getPageMarginSettingPane(); pageMarginSettingPane.setBorder(BorderFactory.createEmptyBorder(10, -10, 0, 0)); JPanel pageMarginCheckPane = getCheckboxAndDynamicPane(inheritPageMarginSettingCheck, pageMarginSettingPane); @@ -216,14 +213,14 @@ public class PrintSettingPane extends BasicPane { double[] rowSize = {p, p, p, p, p, p, p, p}; double[] columnSize = {60, p}; Component[][] components = { - {new UILabel("打印机:"), printerPane}, - {new UILabel("份数:"), copyPane}, + {new UILabel(Inter.getLocText("FR-Designer_Printer") + ":"), printerPane}, + {new UILabel(Inter.getLocText("FR-Designer_Copy_Number") + ":"), copyPane}, {printAreaLabelPane, getPrintAreaPane()}, - {getTopAlignLabelPane("纸张:"), paperSettingCheckPane}, - {getTopAlignLabelPane("布局:"), layoutSettingCheckPane}, - {getTopAlignLabelPane("边距:"), pageMarginCheckPane}, - {new UILabel("缩放:"), zoomCheck}, - {getTopAlignLabelPane("顺序:"), getPageOrderPane()} + {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Paper") + ":"), paperSettingCheckPane}, + {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Layout") + ":"), layoutSettingCheckPane}, + {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Margin") + ":"), pageMarginCheckPane}, + {new UILabel(Inter.getLocText("FR-Designer_Scale_EnlargeOrReduce") + ":"), zoomCheck}, + {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Order") + ":"), getPageOrderPane()} }; JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 15); return panel; @@ -288,9 +285,9 @@ public class PrintSettingPane extends BasicPane { // 页码范围 private JPanel getPrintAreaPane() { - UIRadioButton allPageRadioButton = new UIRadioButton("所有页"); - UIRadioButton currentPageRadioButton = new UIRadioButton("当前页"); - UIRadioButton customPageRadioButton = new UIRadioButton("指定页"); + UIRadioButton allPageRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_All_Pages")); + UIRadioButton currentPageRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Current_Page")); + UIRadioButton customPageRadioButton = new UIRadioButton(Inter.getLocText("FR-Engine_HJS-Specified_Pages")); ButtonGroup group = new ButtonGroup(); group.add(allPageRadioButton); group.add(currentPageRadioButton); @@ -298,7 +295,7 @@ public class PrintSettingPane extends BasicPane { allPageRadioButton.setSelected(true); UITextField areaField = new UITextField(20); - UILabel areaFieldTip = getTipLabel("格式(1, 4-9, 6, 8)"); + UILabel areaFieldTip = getTipLabel(Inter.getLocText("FR-Designer_Print_Area_Tip")); // TableLayout double p = TableLayout.PREFERRED; @@ -409,7 +406,7 @@ public class PrintSettingPane extends BasicPane { @Override protected String title4PopupWindow() { - return Inter.getLocText("ReportServerP-Import_JavaScript"); + return Inter.getLocText("FR-Designer_Print_Setting"); } public void populate(PrintAttr printAttr) { @@ -425,7 +422,7 @@ public class PrintSettingPane extends BasicPane { NoClientPrintAttr noClientPrintAttr = printAttr.getNoClientPrintAttr(); - setMarginOnPrintCheck.setSelected(noClientPrintAttr.isSetMarginOnPrint()); + setMarginWhenPrintCheck.setSelected(noClientPrintAttr.isSetMarginOnPrint()); } public PrintAttr updateBean() { @@ -437,7 +434,7 @@ public class PrintSettingPane extends BasicPane { NoClientPrintAttr noClientPrintAttr = new NoClientPrintAttr(); // NoClientPrintAttr noClientPrintAttr = reportWebAttr.getNoClientPrintAttr(); - noClientPrintAttr.setSetMarginOnPrint(setMarginOnPrintCheck.isSelected()); + noClientPrintAttr.setSetMarginOnPrint(setMarginWhenPrintCheck.isSelected()); printAttr.setNoClientPrintAttr(noClientPrintAttr); diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index a04bd0bad6..aa8e5dc364 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -2188,3 +2188,23 @@ FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout=Under the absolu FR-Designer_Follow_Paper_Settings=follow paper settings FR-Designer_No_Auto_Adjust=no automatic adjust FR-Designer_Print_Setting=Print Setting +FR-Designer_No_Client_Print=No Client Printing +FR-Designer_Native_Print=Native Printing +FR-Designer_Set_Margin_When_Printing=Set printing margins when printing +FR-Designer_Tip_Use_Default_Print_Margin=Hint: if you don't check, you use the print margins in the default settings as follows. +FR-Designer_Default_Settings=Default configuration +FR-Designer_Inherit_Page_Margin_Setting=Inherit page margin setting +FR-Designer_Margin=Margin +FR-Designer_Order=Order +FR-Designer_Tip_Native_Print_Need_Client=Hint: native printing requires the terminal to download the client, but it can support more and more powerful functions. +FR-Designer_Show_Print_Setting_Window_When_Printing=Show print setting window when printing +FR-Designer_Tip_Use_Default_Settings=Hint: if you don't check, use the default settings as follows. +FR-Designer_Inherit_Page_Paper_Setting=Inherit page paper setting +FR-Designer_Inherit_Page_Layout_Setting=Inherit page layout setting +FR-Designer_Print_To_Fit_Paper_Size=Print to fit paper size +FR-Designer_Printer=Printer +FR-Designer_Copy_Number=The number of copies +FR-Designer_Paper=Paper +FR-Designer_All_Pages=All pages +FR-Designer_Current_Page=Current page +FR-Designer_Print_Area_Tip=eg(1, 4-9, 6, 8) 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 3213a3763b..6572765d0b 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 @@ -2187,3 +2187,23 @@ FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout=Under the absolu FR-Designer_Follow_Paper_Settings=follow paper settings FR-Designer_No_Auto_Adjust=no automaticly adjust FR-Designer_Print_Setting=Print Setting +FR-Designer_No_Client_Print=No Client Printing +FR-Designer_Native_Print=Native Printing +FR-Designer_Set_Margin_When_Printing=Set printing margins when printing +FR-Designer_Tip_Use_Default_Print_Margin=Hint: if you don't check, you use the print margins in the default settings as follows. +FR-Designer_Default_Settings=Default configuration +FR-Designer_Inherit_Page_Margin_Setting=Inherit page margin setting +FR-Designer_Margin=Margin +FR-Designer_Order=Order +FR-Designer_Tip_Native_Print_Need_Client=Hint: native printing requires the terminal to download the client, but it can support more and more powerful functions. +FR-Designer_Show_Print_Setting_Window_When_Printing=Show print setting window when printing +FR-Designer_Tip_Use_Default_Settings=Hint: if you don't check, use the default settings as follows. +FR-Designer_Inherit_Page_Paper_Setting=Inherit page paper setting +FR-Designer_Inherit_Page_Layout_Setting=Inherit page layout setting +FR-Designer_Print_To_Fit_Paper_Size=Print to fit paper size +FR-Designer_Printer=Printer +FR-Designer_Copy_Number=The number of copies +FR-Designer_Paper=Paper +FR-Designer_All_Pages=All pages +FR-Designer_Current_Page=Current page +FR-Designer_Print_Area_Tip=eg(1, 4-9, 6, 8) 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 c2c547f454..1913e59868 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 @@ -2185,3 +2185,23 @@ FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout= FR-Designer_Follow_Paper_Settings= FR-Designer_No_Auto_Adjust= FR-Designer_Print_Setting=\u5370\u5237\u8A2D\u5B9A +FR-Designer_No_Client_Print=1 +FR-Designer_Native_Print=1 +FR-Designer_Set_Margin_When_Printing=1 +FR-Designer_Tip_Use_Default_Print_Margin=1 +FR-Designer_Default_Settings=1 +FR-Designer_Inherit_Page_Margin_Setting=1 +FR-Designer_Margin=1 +FR-Designer_Order=1 +FR-Designer_Tip_Native_Print_Need_Client=1 +FR-Designer_Show_Print_Setting_Window_When_Printing=1 +FR-Designer_Tip_Use_Default_Settings=1 +FR-Designer_Inherit_Page_Paper_Setting=1 +FR-Designer_Inherit_Page_Layout_Setting=1 +FR-Designer_Print_To_Fit_Paper_Size=\u7D19\u306E\u30B5\u30A4\u30BA\u306B\u5408\u308F\u305B\u3066\u5370\u5237 +FR-Designer_Printer=1 +FR-Designer_Copy_Number=1 +FR-Designer_Paper=1 +FR-Designer_All_Pages=1 +FR-Designer_Current_Page=1 +FR-Designer_Print_Area_Tip=1 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 201a0c7741..2a61c47062 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 @@ -2186,3 +2186,23 @@ FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout= FR-Designer_Follow_Paper_Settings= FR-Designer_No_Auto_Adjust= FR-Designer_Print_Setting=\uC778\uC1C4\uC124\uC815 +FR-Designer_No_Client_Print=1 +FR-Designer_Native_Print=1 +FR-Designer_Set_Margin_When_Printing=1 +FR-Designer_Tip_Use_Default_Print_Margin=1 +FR-Designer_Default_Settings=1 +FR-Designer_Inherit_Page_Margin_Setting=1 +FR-Designer_Margin=1 +FR-Designer_Order=1 +FR-Designer_Tip_Native_Print_Need_Client=1 +FR-Designer_Show_Print_Setting_Window_When_Printing=1 +FR-Designer_Tip_Use_Default_Settings=1 +FR-Designer_Inherit_Page_Paper_Setting=1 +FR-Designer_Inherit_Page_Layout_Setting=1 +FR-Designer_Print_To_Fit_Paper_Size=\uC885\uC774\uD06C\uAE30\uC5D0\uB530\uB978\uC778\uC1C4\uCD95\uC18C +FR-Designer_Printer=1 +FR-Designer_Copy_Number=1 +FR-Designer_Paper=1 +FR-Designer_All_Pages=1 +FR-Designer_Current_Page=1 +FR-Designer_Print_Area_Tip=1 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 a12cbacbbe..e8f3c39bc1 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 @@ -2188,3 +2188,23 @@ FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout=\u7EDD\u5BF9\u75 FR-Designer_Follow_Paper_Settings=\u8DDF\u968F\u9875\u9762\u8BBE\u7F6E FR-Designer_No_Auto_Adjust=\u4E0D\u81EA\u52A8\u8C03\u6574 FR-Designer_Print_Setting=\u6253\u5370\u8BBE\u7F6E +FR-Designer_No_Client_Print=\u96F6\u5BA2\u6237\u7AEF\u6253\u5370 +FR-Designer_Native_Print=\u672C\u5730\u8F6F\u4EF6\u6253\u5370 +FR-Designer_Set_Margin_When_Printing=\u6253\u5370\u65F6\u53EF\u8BBE\u7F6E\u6253\u5370\u8FB9\u8DDD +FR-Designer_Tip_Use_Default_Print_Margin=\u63D0\u793A\uFF1A\u82E5\u4E0D\u52FE\u9009\uFF0C\u5219\u4F7F\u7528\u5982\u4E0B\u9ED8\u8BA4\u8BBE\u7F6E\u4E2D\u7684\u6253\u5370\u8FB9\u8DDD\u3002 +FR-Designer_Default_Settings=\u9ED8\u8BA4\u914D\u7F6E +FR-Designer_Inherit_Page_Margin_Setting=\u7EE7\u627F\u9875\u9762\u8FB9\u8DDD\u8BBE\u7F6E +FR-Designer_Margin=\u8FB9\u8DDD +FR-Designer_Order=\u987A\u5E8F +FR-Designer_Tip_Native_Print_Need_Client=\u63D0\u793A\uFF1A\u672C\u5730\u8F6F\u4EF6\u6253\u5370\u9700\u8981\u7EC8\u7AEF\u4E0B\u8F7D\u5BA2\u6237\u7AEF\uFF0C\u4F46\u80FD\u652F\u6301\u66F4\u591A\u3001\u66F4\u5F3A\u5927\u7684\u529F\u80FD\u3002 +FR-Designer_Show_Print_Setting_Window_When_Printing=\u6253\u5370\u65F6\u9700\u8981\u6253\u5370\u8BBE\u7F6E\u7A97\u53E3 +FR-Designer_Tip_Use_Default_Settings=\u63D0\u793A\uFF1A\u82E5\u4E0D\u52FE\u9009\uFF0C\u5219\u4F7F\u7528\u5982\u4E0B\u9ED8\u8BA4\u8BBE\u7F6E\u3002 +FR-Designer_Inherit_Page_Paper_Setting=\u7EE7\u627F\u9875\u9762\u7EB8\u5F20\u8BBE\u7F6E +FR-Designer_Inherit_Page_Layout_Setting=\u7EE7\u627F\u9875\u9762\u5E03\u5C40\u8BBE\u7F6E +FR-Designer_Print_To_Fit_Paper_Size=\u6839\u636E\u7EB8\u5F20\u5927\u5C0F\u7F29\u653E\u6253\u5370 +FR-Designer_Printer=\u6253\u5370\u673A +FR-Designer_Copy_Number=\u4EFD\u6570 +FR-Designer_Paper=\u7EB8\u5F20 +FR-Designer_All_Pages=\u6240\u6709\u9875 +FR-Designer_Current_Page=\u5F53\u524D\u9875 +FR-Designer_Print_Area_Tip=\u683C\u5F0F(1, 4-9, 6, 8) 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 0fd4135924..96b3e23bed 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 @@ -2187,3 +2187,23 @@ FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout=\u7D55\u5C0D\u75 FR-Designer_Follow_Paper_Settings=\u8DDF\u96A8\u9801\u9762\u8A2D\u5B9A FR-Designer_No_Auto_Adjust=\u4E0D\u81EA\u52D5\u8ABF\u6574 FR-Designer_Print_Setting=\u5217\u5370\u8A2D\u5B9A +FR-Designer_No_Client_Print=\u96F6\u5BA2\u6236\u7AEF\u5217\u5370 +FR-Designer_Native_Print=\u672C\u5730\u8EDF\u4EF6\u5217\u5370 +FR-Designer_Set_Margin_When_Printing=\u5217\u5370\u6642\u53EF\u8A2D\u5B9A\u5217\u5370\u908A\u8DDD +FR-Designer_Tip_Use_Default_Print_Margin=\u63D0\u793A\uFF1A\u82E5\u4E0D\u52FE\u9078\uFF0C\u5247\u4F7F\u7528\u5982\u4E0B\u9ED8\u8A8D\u8A2D\u7F6E\u4E2D\u7684\u5217\u5370\u908A\u8DDD\u3002 +FR-Designer_Default_Settings=\u9ED8\u8A8D\u914D\u5BD8 +FR-Designer_Inherit_Page_Margin_Setting=\u7E7C\u627F\u9801\u9762\u908A\u8DDD\u8A2D\u5B9A +FR-Designer_Margin=\u908A\u8DDD +FR-Designer_Order=\u9806\u5E8F +FR-Designer_Tip_Native_Print_Need_Client=\u63D0\u793A\uFF1A\u672C\u5730\u8EDF\u4EF6\u5217\u5370\u9700\u8981\u7D42\u7AEF\u4E0B\u8F09\u7528\u6236\u7AEF\uFF0C\u4F46\u80FD\u652F\u6301\u66F4\u591A\u3001\u66F4\u5F3A\u5927\u7684\u529F\u80FD\u3002 +FR-Designer_Show_Print_Setting_Window_When_Printing=\u5217\u5370\u6642\u9700\u8981\u5217\u5370\u8A2D\u5B9A\u8996\u7A97 +FR-Designer_Tip_Use_Default_Settings=\u63D0\u793A\uFF1A\u82E5\u4E0D\u52FE\u9078\uFF0C\u5247\u4F7F\u7528\u5982\u4E0B\u9ED8\u8A8D\u8A2D\u7F6E\u3002 +FR-Designer_Inherit_Page_Paper_Setting=\u7E7C\u627F\u9801\u9762\u7D19\u5F35\u8A2D\u5B9A +FR-Designer_Inherit_Page_Layout_Setting=\u7E7C\u627F\u9801\u9762\u4F48\u5C40\u8A2D\u5B9A +FR-Designer_Print_To_Fit_Paper_Size=\u6839\u64DA\u7D19\u5F35\u5927\u5C0F\u7E2E\u653E\u5217\u5370 +FR-Designer_Printer=\u6253\u5370\u6A5F +FR-Designer_Copy_Number=\u4EFD\u6578 +FR-Designer_Paper=\u7D19\u5F35 +FR-Designer_All_Pages=\u6240\u6709\u9801 +FR-Designer_Current_Page=\u7576\u524D\u9801 +FR-Designer_Print_Area_Tip=\u683C\u5F0F(1, 4-9, 6, 8) From 7559dc6cf7ffadddc487a4978ddc8e7ebdb03dba Mon Sep 17 00:00:00 2001 From: fr_shine Date: Mon, 5 Mar 2018 15:27:24 +0800 Subject: [PATCH 16/79] =?UTF-8?q?CHART-2062=20=E9=92=BB=E5=8F=96=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=20=E4=B8=8A=E9=92=BB=E5=8F=82=E6=95=B0=20=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E7=B3=BB=E5=88=97=E5=90=8D=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../custom/component/VanChartHyperLinkPane.java | 7 ++++++- .../designer/other/VanChartCatalogHyperLinkPane.java | 12 ++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/plugin/chart/custom/component/VanChartHyperLinkPane.java b/designer_chart/src/com/fr/plugin/chart/custom/component/VanChartHyperLinkPane.java index 70808d1c41..45edfe84fe 100644 --- a/designer_chart/src/com/fr/plugin/chart/custom/component/VanChartHyperLinkPane.java +++ b/designer_chart/src/com/fr/plugin/chart/custom/component/VanChartHyperLinkPane.java @@ -1,5 +1,6 @@ package com.fr.plugin.chart.custom.component; +import com.fr.base.BaseFormula; import com.fr.chart.chartattr.Plot; import com.fr.chart.web.ChartHyperPoplink; import com.fr.chart.web.ChartHyperRelateCellLink; @@ -77,7 +78,7 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { Constructor constructor = null; try { constructor = creator.getUpdatePane().getConstructor(HashMap.class, boolean.class); - return constructor.newInstance(plot.getHyperLinkEditorMap(), false); + return constructor.newInstance(getHyperLinkEditorMap(), false); } catch (InstantiationException e) { FRLogger.getLogger().error(e.getMessage(), e); @@ -91,6 +92,10 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { return null; } + protected Map getHyperLinkEditorMap() { + return plot.getHyperLinkEditorMap(); + } + /** * 弹出列表的标题. diff --git a/designer_chart/src/com/fr/plugin/chart/drillmap/designer/other/VanChartCatalogHyperLinkPane.java b/designer_chart/src/com/fr/plugin/chart/drillmap/designer/other/VanChartCatalogHyperLinkPane.java index 8bf8bdfe6a..d6e5463db2 100644 --- a/designer_chart/src/com/fr/plugin/chart/drillmap/designer/other/VanChartCatalogHyperLinkPane.java +++ b/designer_chart/src/com/fr/plugin/chart/drillmap/designer/other/VanChartCatalogHyperLinkPane.java @@ -1,15 +1,27 @@ package com.fr.plugin.chart.drillmap.designer.other; +import com.fr.base.BaseFormula; import com.fr.chart.chartattr.Plot; +import com.fr.general.Inter; import com.fr.js.NameJavaScriptGroup; import com.fr.plugin.chart.custom.component.VanChartHyperLinkPane; import com.fr.plugin.chart.drillmap.VanChartDrillMapPlot; +import java.util.HashMap; +import java.util.Map; + /** * Created by hufan on 2016/12/13. */ public class VanChartCatalogHyperLinkPane extends VanChartHyperLinkPane{ + @Override + protected Map getHyperLinkEditorMap() { + HashMap map = new HashMap(); + map.put(Inter.getLocText("FR-Chart-Area_Name"), BaseFormula.createFormulaBuilder().build("AREA_NAME")); + return map; + } + protected void updateHotHyperLink(Plot plot, NameJavaScriptGroup nameGroup) { if (plot instanceof VanChartDrillMapPlot) { ((VanChartDrillMapPlot) plot).setDrillUpHyperLink(nameGroup); From 64d1a00686d11aa5cab318ee5861bc16719a1afe Mon Sep 17 00:00:00 2001 From: plough Date: Mon, 5 Mar 2018 15:59:52 +0800 Subject: [PATCH 17/79] =?UTF-8?q?REPORT-6438=20=E6=89=93=E5=8D=B0=E6=94=B9?= =?UTF-8?q?=E8=BF=9B=E4=B8=80=E6=9C=9F=3D>2.1=20=E2=80=9C=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E9=85=8D=E7=BD=AE=E2=80=9D=E7=9A=84=E2=80=9C?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E8=AE=BE=E7=BD=AE=E2=80=9Dtab=3D>=E9=87=8D?= =?UTF-8?q?=E6=9E=84=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=A4=A7=E9=9D=A2=E6=9D=BF?= =?UTF-8?q?=E5=88=86=E8=A7=A3=E4=B8=BA=E5=87=A0=E4=B8=AA=E5=B0=8F=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF=EF=BC=9B=E4=BD=BF=E7=94=A8PrintAttr=E5=AD=98=E5=8F=96?= =?UTF-8?q?=E6=89=80=E6=9C=89=E9=85=8D=E7=BD=AE=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EditReportServerParameterPane.java | 1 + .../fr/design/webattr/PrintSettingPane.java | 443 ------------------ .../printsettings/NativePrintSettingPane.java | 307 ++++++++++++ .../NoClientPrintSettingPane.java | 93 ++++ .../printsettings/PageMarginSettingPane.java | 79 ++++ .../printsettings/PageOrderSettingPane.java | 60 +++ .../printsettings/PrintSettingPane.java | 116 +++++ .../com/fr/design/utils/gui/GUICoreUtils.java | 48 ++ 8 files changed, 704 insertions(+), 443 deletions(-) delete mode 100644 designer/src/com/fr/design/webattr/PrintSettingPane.java create mode 100644 designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java create mode 100644 designer/src/com/fr/design/webattr/printsettings/NoClientPrintSettingPane.java create mode 100644 designer/src/com/fr/design/webattr/printsettings/PageMarginSettingPane.java create mode 100644 designer/src/com/fr/design/webattr/printsettings/PageOrderSettingPane.java create mode 100644 designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java diff --git a/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java b/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java index 201d9b3369..233d0c88a2 100644 --- a/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java +++ b/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java @@ -12,6 +12,7 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.design.webattr.printsettings.PrintSettingPane; import com.fr.general.Inter; import com.fr.stable.project.ProjectConstants; import com.fr.web.attr.ReportWebAttr; diff --git a/designer/src/com/fr/design/webattr/PrintSettingPane.java b/designer/src/com/fr/design/webattr/PrintSettingPane.java deleted file mode 100644 index 6449e17af0..0000000000 --- a/designer/src/com/fr/design/webattr/PrintSettingPane.java +++ /dev/null @@ -1,443 +0,0 @@ -package com.fr.design.webattr; - -import com.fr.base.BaseUtils; -import com.fr.base.PaperSize; -import com.fr.base.Utils; -import com.fr.design.dialog.BasicPane; -import com.fr.design.gui.ibutton.UIRadioButton; -import com.fr.design.gui.icheckbox.UICheckBox; -import com.fr.design.gui.icombobox.UIComboBox; -import com.fr.design.gui.icombobox.UIComboBoxRenderer; -import com.fr.design.gui.icontainer.UIScrollPane; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.ispinner.UIBasicSpinner; -import com.fr.design.gui.itextfield.UITextField; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.layout.TableLayout; -import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.report.UnitFieldPane; -import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.general.ComparatorUtils; -import com.fr.general.Inter; -import com.fr.print.NoClientPrintAttr; -import com.fr.print.PrintAttr; -import com.fr.print.nativeprint.core.NativePrintConfigManager; -import com.fr.report.stable.ReportConstants; -import com.fr.stable.Constants; - -import javax.swing.BorderFactory; -import javax.swing.ButtonGroup; -import javax.swing.Icon; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.SpinnerNumberModel; -import java.awt.BorderLayout; -import java.awt.CardLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; - -/** - * Created by plough on 2018/3/1. - */ -public class PrintSettingPane extends BasicPane { - private UIRadioButton noClientPrintRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_No_Client_Print")); - private UIRadioButton nativePrintRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Native_Print")); - private UIRadioButton topBottomRadioButton; - private UIRadioButton leftRightRadioButton; - private UICheckBox setMarginWhenPrintCheck; - private CardLayout printCard; - private JPanel printPane; - - public PrintSettingPane() { - initComponents(); - initListener(); - } - - private void initComponents() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - JPanel allPanel = FRGUIPaneFactory.createBorderLayout_L_Pane(); - this.add(allPanel, BorderLayout.CENTER); - JPanel north = FRGUIPaneFactory.createVerticalFlowLayout_S_Pane(true); - allPanel.add(north, BorderLayout.NORTH); - ButtonGroup buttonGroup = new ButtonGroup(); - noClientPrintRadioButton.setSelected(true); - buttonGroup.add(noClientPrintRadioButton); - buttonGroup.add(nativePrintRadioButton); - noClientPrintRadioButton.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 50)); - JPanel radioGroupPane = GUICoreUtils.createFlowPane(new Component[] { - noClientPrintRadioButton, nativePrintRadioButton}, FlowLayout.LEFT, 0, 0); - north.add(radioGroupPane); - - printCard = new CardLayout(); - printPane = new JPanel(); - printPane.setLayout(printCard); - printPane.add(noClientPrintRadioButton.getText(), getNoClientPrintPane()); - printPane.add(nativePrintRadioButton.getText(), getNativePrintPane()); - - north.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); - - allPanel.add(printPane, BorderLayout.CENTER); - } - - private void initListener() { - noClientPrintRadioButton.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - if (e.getStateChange() == ItemEvent.SELECTED) { - printCard.show(printPane, noClientPrintRadioButton.getText()); - } - } - }); - nativePrintRadioButton.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - if (e.getStateChange() == ItemEvent.SELECTED) { - printCard.show(printPane, nativePrintRadioButton.getText()); - } - } - }); - } - - private JPanel getNoClientPrintPane() { - JPanel printPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - - setMarginWhenPrintCheck = new UICheckBox(Inter.getLocText("FR-Designer_Set_Margin_When_Printing")); - setMarginWhenPrintCheck.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); - UILabel tipLabel = getTipLabel(Inter.getLocText("FR-Designer_Tip_Use_Default_Print_Margin")); - JPanel northPane = GUICoreUtils.createFlowPane(new Component[] { - setMarginWhenPrintCheck, tipLabel}, FlowLayout.LEFT); - northPane.setBorder(BorderFactory.createEmptyBorder(8, 10, 10, 0)); - - printPane.add(northPane, BorderLayout.NORTH); - - JPanel centerPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Default_Settings")); - - UICheckBox inheritPageMarginSettingCheck = getNoBorderCheckBox(Inter.getLocText("FR-Designer_Inherit_Page_Margin_Setting")); - JPanel pageMarginSettingPane = getPageMarginSettingPane(); - pageMarginSettingPane.setBorder(BorderFactory.createEmptyBorder(10, -10, 0, 0)); - JPanel pageMarginCheckPane = getCheckboxAndDynamicPane(inheritPageMarginSettingCheck, pageMarginSettingPane); - // TableLayout - double p = TableLayout.PREFERRED; - double[] rowSize = {p, p}; - double[] columnSize = {60, p}; - Component[][] components = { - {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Margin") + ":"), pageMarginCheckPane}, - {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Order") + ":"), getPageOrderPane()} - }; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 15); - - centerPane.add(panel); - - printPane.add(centerPane, BorderLayout.CENTER); - - return printPane; - } - - private JPanel getNativePrintPane() { - JPanel printPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - - JPanel northPane = FRGUIPaneFactory.createNColumnGridInnerContainer_Pane(1, 0, 15); - UILabel tipDownload = getTipLabel(Inter.getLocText("FR-Designer_Tip_Native_Print_Need_Client")); - northPane.add(tipDownload); - UICheckBox marginSettingCheck = new UICheckBox(Inter.getLocText("FR-Designer_Show_Print_Setting_Window_When_Printing")); - marginSettingCheck.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); - UILabel tipCheck = getTipLabel(Inter.getLocText("FR-Designer_Tip_Use_Default_Settings")); - JPanel checkPane = GUICoreUtils.createFlowPane(new Component[] { - marginSettingCheck, tipCheck}, FlowLayout.LEFT); - northPane.add(checkPane); - northPane.setBorder(BorderFactory.createEmptyBorder(3, 10, 10, 0)); - - printPane.add(northPane, BorderLayout.NORTH); - - JPanel centerPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Default_Settings")); - - -// JPanel centerContentPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - - UIScrollPane scrollPane = new UIScrollPane(getNativePrintMainSettingPane()); - scrollPane.setBorder(null); - scrollPane.setPreferredSize(new Dimension(600, 340)); -// centerContentPane.add(scrollPane, BorderLayout.CENTER); - -// centerContentPane.add(getNativePrintMainSettingPane(), BorderLayout.CENTER); -// centerPane.add(centerContentPane); - centerPane.add(scrollPane); - - printPane.add(centerPane, BorderLayout.CENTER); - return printPane; - } - - private JPanel getNativePrintMainSettingPane() { - - // 打印机 - String[] printerArray = NativePrintConfigManager.getInstance().getAllPrinterNames(); - UIComboBox printerComboBox = new UIComboBox(printerArray); - printerComboBox.setPreferredSize(new Dimension(200, printerComboBox.getPreferredSize().height)); - JPanel printerPane = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); - printerPane.add(printerComboBox); - - // 份数 - UIBasicSpinner copySpinner = new UIBasicSpinner(new SpinnerNumberModel(1, 0, Integer.MAX_VALUE, 1)); - GUICoreUtils.setColumnForSpinner(copySpinner, 5); - JPanel copyPane = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); - copyPane.add(copySpinner); - - UICheckBox inheritPagePaperSettingCheck = getNoBorderCheckBox(Inter.getLocText("FR-Designer_Inherit_Page_Paper_Setting")); - JPanel paperSettingPane = getPaperSettingPane(); - JPanel paperSettingCheckPane = getCheckboxAndDynamicPane(inheritPagePaperSettingCheck, paperSettingPane); - - UICheckBox inheritPageLayoutSettingCheck = getNoBorderCheckBox(Inter.getLocText("FR-Designer_Inherit_Page_Layout_Setting")); - JPanel layoutSettingPane = getLayoutSettingPane(); - JPanel layoutSettingCheckPane = getCheckboxAndDynamicPane(inheritPageLayoutSettingCheck, layoutSettingPane); - - UICheckBox zoomCheck = getNoBorderCheckBox(Inter.getLocText("FR-Designer_Print_To_Fit_Paper_Size")); - - // 页码标签 - UILabel printAreaLabel = new UILabel(Inter.getLocText("FR-Engine-Page_Number") + ":"); - JPanel printAreaLabelPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - printAreaLabelPane.add(printAreaLabel, BorderLayout.NORTH); - printAreaLabel.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0)); - - // 边距 - UICheckBox inheritPageMarginSettingCheck = getNoBorderCheckBox(Inter.getLocText("FR-Designer_Inherit_Page_Margin_Setting")); - JPanel pageMarginSettingPane = getPageMarginSettingPane(); - pageMarginSettingPane.setBorder(BorderFactory.createEmptyBorder(10, -10, 0, 0)); - JPanel pageMarginCheckPane = getCheckboxAndDynamicPane(inheritPageMarginSettingCheck, pageMarginSettingPane); - - // TableLayout - double p = TableLayout.PREFERRED; - double[] rowSize = {p, p, p, p, p, p, p, p}; - double[] columnSize = {60, p}; - Component[][] components = { - {new UILabel(Inter.getLocText("FR-Designer_Printer") + ":"), printerPane}, - {new UILabel(Inter.getLocText("FR-Designer_Copy_Number") + ":"), copyPane}, - {printAreaLabelPane, getPrintAreaPane()}, - {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Paper") + ":"), paperSettingCheckPane}, - {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Layout") + ":"), layoutSettingCheckPane}, - {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Margin") + ":"), pageMarginCheckPane}, - {new UILabel(Inter.getLocText("FR-Designer_Scale_EnlargeOrReduce") + ":"), zoomCheck}, - {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Order") + ":"), getPageOrderPane()} - }; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 15); - return panel; - } - - private JPanel getLayoutSettingPane() { - JPanel layoutSettingPane = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); - layoutSettingPane.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0)); - UIRadioButton portraitRadioButton = new UIRadioButton(Inter.getLocText("PageSetup-Portrait")); - portraitRadioButton.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); - UIRadioButton landscapeRadioButton = new UIRadioButton(Inter.getLocText("PageSetup-Landscape")); - layoutSettingPane.add(portraitRadioButton); - layoutSettingPane.add(landscapeRadioButton); - - ButtonGroup layoutButtonGroup = new ButtonGroup(); - layoutButtonGroup.add(portraitRadioButton); - layoutButtonGroup.add(landscapeRadioButton); - - portraitRadioButton.setSelected(true); - return layoutSettingPane; - } - - private JPanel getPaperSettingPane() { - UIComboBox predefinedComboBox = new UIComboBox(); - for (int i = 0; i < ReportConstants.PaperSizeNameSizeArray.length; i++) { - Object[] tmpPaperSizeNameArray = ReportConstants.PaperSizeNameSizeArray[i]; - predefinedComboBox.addItem(tmpPaperSizeNameArray[1]); - } - predefinedComboBox.setRenderer(new UIComboBoxRenderer() { - @Override - public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { - super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); - - if (value instanceof PaperSize) { - PaperSize paperSize = (PaperSize) value; - for (int i = 0; i < ReportConstants.PaperSizeNameSizeArray.length; i++) { - Object[] tmpPaperSizeNameArray = ReportConstants.PaperSizeNameSizeArray[i]; - - if (ComparatorUtils.equals(paperSize, tmpPaperSizeNameArray[1])) { - String sbuf = tmpPaperSizeNameArray[0].toString() + " [" + - Utils.convertNumberStringToString(paperSize.getWidth().toMMValue4Scale2()) + - 'x' + - Utils.convertNumberStringToString(paperSize.getHeight().toMMValue4Scale2()) + - ' ' + - Inter.getLocText("PageSetup-mm") + - ']'; - this.setText(sbuf); - break; - } - } - } - - return this; - } - }); - - JPanel panel = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); - panel.add(predefinedComboBox); - panel.setBorder(BorderFactory.createEmptyBorder(8, 0, 0, 0)); - return panel; - } - - // 页码范围 - private JPanel getPrintAreaPane() { - UIRadioButton allPageRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_All_Pages")); - UIRadioButton currentPageRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Current_Page")); - UIRadioButton customPageRadioButton = new UIRadioButton(Inter.getLocText("FR-Engine_HJS-Specified_Pages")); - ButtonGroup group = new ButtonGroup(); - group.add(allPageRadioButton); - group.add(currentPageRadioButton); - group.add(customPageRadioButton); - allPageRadioButton.setSelected(true); - - UITextField areaField = new UITextField(20); - UILabel areaFieldTip = getTipLabel(Inter.getLocText("FR-Designer_Print_Area_Tip")); - - // TableLayout - double p = TableLayout.PREFERRED; - double[] rowSize = {p, p, p}; - double[] columnSize = {p, p, p}; - Component[][] components = { - {allPageRadioButton, null, null}, - {currentPageRadioButton, null, null}, - {customPageRadioButton, areaField, areaFieldTip} - }; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 0); - return panel; - } - - private UILabel getTipLabel(String tipText) { - UILabel tipLabel = new UILabel(tipText); - tipLabel.setForeground(Color.gray); - return tipLabel; - } - - private JPanel getCheckboxAndDynamicPane(UICheckBox checkBox, JPanel dynamicPane) { - checkBox.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - dynamicPane.setVisible(e.getStateChange() == ItemEvent.DESELECTED); - } - }); - JPanel panel = FRGUIPaneFactory.createBorderLayout_S_Pane(); - panel.add(checkBox, BorderLayout.NORTH); - JPanel dynamicPaneWrapper = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); - dynamicPaneWrapper.add(dynamicPane); - panel.add(dynamicPaneWrapper, BorderLayout.CENTER); - return panel; - } - - // 返回包含一个标签的 panel,标签始终位于 panel 顶部 - private JPanel getTopAlignLabelPane(String labelText) { - JPanel labelPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - labelPane.add(new UILabel(labelText), BorderLayout.NORTH); - return labelPane; - } - - // 页边距设置面板 - private JPanel getPageMarginSettingPane() { - JPanel marginPane = FRGUIPaneFactory.createX_AXISBoxInnerContainer_M_Pane(); - // left - JPanel marginLeftPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_M_Pane(); - marginPane.add(marginLeftPane); - - JPanel marginLeftTextPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - marginLeftPane.add(marginLeftTextPane); - marginLeftTextPane.add(new UILabel(Inter.getLocText("Top") + ":")); - UnitFieldPane marginTopUnitFieldPane = new UnitFieldPane(Constants.UNIT_MM); - marginLeftTextPane.add(marginTopUnitFieldPane); - JPanel marginLeftUnitPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - marginLeftPane.add(marginLeftUnitPane); - marginLeftUnitPane.add(new UILabel(Inter.getLocText("Bottom") + ":")); - UnitFieldPane marginBottomUnitFieldPane = new UnitFieldPane(Constants.UNIT_MM); - marginLeftUnitPane.add(marginBottomUnitFieldPane); - - // right - JPanel marginRightPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_M_Pane(); - marginPane.add(marginRightPane); - - // peter:这个一个垂直的上下的字符panel. - JPanel marginRightTextPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - marginRightPane.add(marginRightTextPane); - marginRightTextPane.add(new UILabel(Inter.getLocText("Left") + ":")); - UnitFieldPane marginLeftUnitFieldPane = new UnitFieldPane(Constants.UNIT_MM); - marginRightTextPane.add(marginLeftUnitFieldPane); - - JPanel marginRightUnitPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - marginRightPane.add(marginRightUnitPane); - marginRightUnitPane.add(new UILabel(Inter.getLocText("Right") + ":")); - UnitFieldPane marginRightUnitFieldPane = new UnitFieldPane(Constants.UNIT_MM); - marginRightUnitPane.add(marginRightUnitFieldPane); - - return marginPane; - } - - // 生成没有边框的 UICheckBox - private UICheckBox getNoBorderCheckBox(String text) { - UICheckBox checkBox = new UICheckBox(text); - checkBox.setBorder(BorderFactory.createEmptyBorder()); - return checkBox; - } - - // 打印顺序 - private JPanel getPageOrderPane() { - // page order - JPanel pageOrderPane = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(2); - - Icon topBottomIcon = BaseUtils.readIcon("/com/fr/base/images/dialog/pagesetup/down.png"); - topBottomRadioButton = new UIRadioButton(Inter.getLocText("PageSetup-Top_to_bottom")); - pageOrderPane.add(FRGUIPaneFactory.createIconRadio_S_Pane(topBottomIcon, topBottomRadioButton)); - - Icon leftRightIcon = BaseUtils.readIcon("/com/fr/base/images/dialog/pagesetup/over.png"); - leftRightRadioButton = new UIRadioButton(Inter.getLocText("PageSetup-Left_to_right")); - pageOrderPane.add(FRGUIPaneFactory.createIconRadio_S_Pane(leftRightIcon, leftRightRadioButton)); - - ButtonGroup pageOrderButtonGroup = new ButtonGroup(); - pageOrderButtonGroup.add(topBottomRadioButton); - pageOrderButtonGroup.add(leftRightRadioButton); - - topBottomRadioButton.setSelected(true); - return pageOrderPane; - } - - @Override - protected String title4PopupWindow() { - return Inter.getLocText("FR-Designer_Print_Setting"); - } - - public void populate(PrintAttr printAttr) { - if (printAttr == null) { - return; - } - - if (printAttr.getPrintType() == PrintAttr.NO_CLIENT_PRINT) { - noClientPrintRadioButton.setSelected(true); - } else { - nativePrintRadioButton.setSelected(true); - } - - - NoClientPrintAttr noClientPrintAttr = printAttr.getNoClientPrintAttr(); - setMarginWhenPrintCheck.setSelected(noClientPrintAttr.isSetMarginOnPrint()); - } - - public PrintAttr updateBean() { - PrintAttr printAttr = new PrintAttr(); - - printAttr.setPrintType(noClientPrintRadioButton.isSelected() ? - PrintAttr.NO_CLIENT_PRINT : PrintAttr.NATIVE_PRINT); - - - NoClientPrintAttr noClientPrintAttr = new NoClientPrintAttr(); -// NoClientPrintAttr noClientPrintAttr = reportWebAttr.getNoClientPrintAttr(); - noClientPrintAttr.setSetMarginOnPrint(setMarginWhenPrintCheck.isSelected()); - printAttr.setNoClientPrintAttr(noClientPrintAttr); - - - return printAttr; - } -} diff --git a/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java new file mode 100644 index 0000000000..28d27801c8 --- /dev/null +++ b/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java @@ -0,0 +1,307 @@ +package com.fr.design.webattr.printsettings; + +import com.fr.base.PaperSize; +import com.fr.base.Utils; +import com.fr.design.gui.ibutton.UIRadioButton; +import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.design.gui.icombobox.UIComboBoxRenderer; +import com.fr.design.gui.icontainer.UIScrollPane; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.ispinner.UIBasicSpinner; +import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.ComparatorUtils; +import com.fr.general.Inter; +import com.fr.print.nativeprint.core.NativePrintAttr; +import com.fr.print.nativeprint.core.NativePrintConfigManager; +import com.fr.report.stable.ReportConstants; +import com.fr.stable.StringUtils; + +import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.SpinnerNumberModel; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; + +/** + * Created by plough on 2018/3/5. + */ +public class NativePrintSettingPane extends JPanel { + private UICheckBox isShowDialogCheck; + private UIComboBox printerComboBox; + private UIBasicSpinner copySpinner; // 份数 + private UIRadioButton allPageRadioButton; + private UIRadioButton currentPageRadioButton; + private UIRadioButton customPageRadioButton; + private UITextField specifiedAreaField; + private UIComboBox predefinedPaperSizeComboBox; + private UICheckBox inheritPagePaperSettingCheck; + private UICheckBox inheritPageLayoutSettingCheck; + private UICheckBox inheritPageMarginSettingCheck; + private UICheckBox fitPaperSizeCheck; // 缩放 + private UIRadioButton portraitRadioButton; + private UIRadioButton landscapeRadioButton; + private PageMarginSettingPane pageMarginSettingPane; + private PageOrderSettingPane pageOrderSettingPane; + + public NativePrintSettingPane() { + initComponents(); + initListeners(); + } + + private void initComponents() { + JPanel printPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + + JPanel northPane = FRGUIPaneFactory.createNColumnGridInnerContainer_Pane(1, 0, 15); + UILabel tipDownload = GUICoreUtils.createTipLabel(Inter.getLocText("FR-Designer_Tip_Native_Print_Need_Client")); + northPane.add(tipDownload); + isShowDialogCheck = new UICheckBox(Inter.getLocText("FR-Designer_Show_Print_Setting_Window_When_Printing")); + isShowDialogCheck.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); + UILabel tipCheck = GUICoreUtils.createTipLabel(Inter.getLocText("FR-Designer_Tip_Use_Default_Settings")); + JPanel checkPane = GUICoreUtils.createFlowPane(new Component[] { + isShowDialogCheck, tipCheck}, FlowLayout.LEFT); + northPane.add(checkPane); + northPane.setBorder(BorderFactory.createEmptyBorder(3, 10, 10, 0)); + + printPane.add(northPane, BorderLayout.NORTH); + + JPanel centerPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Default_Settings")); + + UIScrollPane scrollPane = new UIScrollPane(getNativePrintMainSettingPane()); + scrollPane.setBorder(null); + scrollPane.setPreferredSize(new Dimension(600, 340)); + centerPane.add(scrollPane); + + printPane.add(centerPane, BorderLayout.CENTER); + + this.setLayout(new BorderLayout()); + this.add(printPane, BorderLayout.CENTER); + } + + private void initListeners() { + allPageRadioButton.addItemListener(getPageRaidoListener()); + currentPageRadioButton.addItemListener(getPageRaidoListener()); + customPageRadioButton.addItemListener(getPageRaidoListener()); + } + + private ItemListener getPageRaidoListener() { + return new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + specifiedAreaField.setEnabled(customPageRadioButton.isSelected()); + } + }; + } + + private JPanel getNativePrintMainSettingPane() { + // 打印机 + String[] printerArray = NativePrintConfigManager.getInstance().getAllPrinterNames(); + printerComboBox = new UIComboBox(printerArray); + printerComboBox.setPreferredSize(new Dimension(200, printerComboBox.getPreferredSize().height)); + JPanel printerPane = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); + printerPane.add(printerComboBox); + + // 份数 + copySpinner = new UIBasicSpinner(new SpinnerNumberModel(1, 0, Integer.MAX_VALUE, 1)); + GUICoreUtils.setColumnForSpinner(copySpinner, 5); + JPanel copyPane = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); + copyPane.add(copySpinner); + + // 继承页面纸张设置 + inheritPagePaperSettingCheck = GUICoreUtils.createNoBorderCheckBox(Inter.getLocText("FR-Designer_Inherit_Page_Paper_Setting")); + JPanel paperSettingPane = getPaperSettingPane(); + JPanel paperSettingCheckPane = GUICoreUtils.createCheckboxAndDynamicPane(inheritPagePaperSettingCheck, paperSettingPane, true); + + // 继承页面布局设置 + inheritPageLayoutSettingCheck = GUICoreUtils.createNoBorderCheckBox(Inter.getLocText("FR-Designer_Inherit_Page_Layout_Setting")); + JPanel layoutSettingPane = getLayoutSettingPane(); + JPanel layoutSettingCheckPane = GUICoreUtils.createCheckboxAndDynamicPane(inheritPageLayoutSettingCheck, layoutSettingPane, true); + + // 页码标签 + UILabel printAreaLabel = new UILabel(Inter.getLocText("FR-Engine-Page_Number") + ":"); + JPanel printAreaLabelPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + printAreaLabelPane.add(printAreaLabel, BorderLayout.NORTH); + printAreaLabel.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0)); + + // 边距 + inheritPageMarginSettingCheck = GUICoreUtils.createNoBorderCheckBox(Inter.getLocText("FR-Designer_Inherit_Page_Margin_Setting")); + pageMarginSettingPane = new PageMarginSettingPane(); + pageMarginSettingPane.setBorder(BorderFactory.createEmptyBorder(10, -10, 0, 0)); + JPanel pageMarginCheckPane = GUICoreUtils.createCheckboxAndDynamicPane(inheritPageMarginSettingCheck, pageMarginSettingPane, true); + + // 缩放 + fitPaperSizeCheck = GUICoreUtils.createNoBorderCheckBox(Inter.getLocText("FR-Designer_Print_To_Fit_Paper_Size")); + + pageOrderSettingPane = new PageOrderSettingPane(); + + // TableLayout + double p = TableLayout.PREFERRED; + double[] rowSize = {p, p, p, p, p, p, p, p}; + double[] columnSize = {60, p}; + Component[][] components = { + {new UILabel(Inter.getLocText("FR-Designer_Printer") + ":"), printerPane}, + {new UILabel(Inter.getLocText("FR-Designer_Copy_Number") + ":"), copyPane}, + {printAreaLabelPane, getPrintAreaPane()}, + {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Paper") + ":"), paperSettingCheckPane}, + {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Layout") + ":"), layoutSettingCheckPane}, + {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Margin") + ":"), pageMarginCheckPane}, + {new UILabel(Inter.getLocText("FR-Designer_Scale_EnlargeOrReduce") + ":"), fitPaperSizeCheck}, + {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Order") + ":"), pageOrderSettingPane} + }; + return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 15); + } + + private JPanel getPaperSettingPane() { + predefinedPaperSizeComboBox = new UIComboBox(); + for (int i = 0; i < ReportConstants.PaperSizeNameSizeArray.length; i++) { + Object[] tmpPaperSizeNameArray = ReportConstants.PaperSizeNameSizeArray[i]; + predefinedPaperSizeComboBox.addItem(tmpPaperSizeNameArray[1]); + } + predefinedPaperSizeComboBox.setRenderer(new UIComboBoxRenderer() { + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + + if (value instanceof PaperSize) { + PaperSize paperSize = (PaperSize) value; + for (int i = 0; i < ReportConstants.PaperSizeNameSizeArray.length; i++) { + Object[] tmpPaperSizeNameArray = ReportConstants.PaperSizeNameSizeArray[i]; + + if (ComparatorUtils.equals(paperSize, tmpPaperSizeNameArray[1])) { + String sbuf = tmpPaperSizeNameArray[0].toString() + " [" + + Utils.convertNumberStringToString(paperSize.getWidth().toMMValue4Scale2()) + + 'x' + + Utils.convertNumberStringToString(paperSize.getHeight().toMMValue4Scale2()) + + ' ' + + Inter.getLocText("PageSetup-mm") + + ']'; + this.setText(sbuf); + break; + } + } + } + + return this; + } + }); + + JPanel panel = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); + panel.add(predefinedPaperSizeComboBox); + panel.setBorder(BorderFactory.createEmptyBorder(8, 0, 0, 0)); + return panel; + } + + private JPanel getLayoutSettingPane() { + JPanel layoutSettingPane = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); + layoutSettingPane.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0)); + portraitRadioButton = new UIRadioButton(Inter.getLocText("PageSetup-Portrait")); + portraitRadioButton.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); + landscapeRadioButton = new UIRadioButton(Inter.getLocText("PageSetup-Landscape")); + layoutSettingPane.add(portraitRadioButton); + layoutSettingPane.add(landscapeRadioButton); + + ButtonGroup layoutButtonGroup = new ButtonGroup(); + layoutButtonGroup.add(portraitRadioButton); + layoutButtonGroup.add(landscapeRadioButton); + + portraitRadioButton.setSelected(true); + return layoutSettingPane; + } + + // 页码范围 + private JPanel getPrintAreaPane() { + allPageRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_All_Pages")); + currentPageRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Current_Page")); + customPageRadioButton = new UIRadioButton(Inter.getLocText("FR-Engine_HJS-Specified_Pages")); + ButtonGroup group = new ButtonGroup(); + group.add(allPageRadioButton); + group.add(currentPageRadioButton); + group.add(customPageRadioButton); + allPageRadioButton.setSelected(true); + + specifiedAreaField = new UITextField(20); + UILabel areaFieldTip = GUICoreUtils.createTipLabel(Inter.getLocText("FR-Designer_Print_Area_Tip")); + + // TableLayout + double p = TableLayout.PREFERRED; + double[] rowSize = {p, p, p}; + double[] columnSize = {p, p, p}; + Component[][] components = { + {allPageRadioButton, null, null}, + {currentPageRadioButton, null, null}, + {customPageRadioButton, specifiedAreaField, areaFieldTip} + }; + return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 0); + } + + // 返回包含一个标签的 panel,标签始终位于 panel 顶部 + private JPanel getTopAlignLabelPane(String labelText) { + JPanel labelPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + labelPane.add(new UILabel(labelText), BorderLayout.NORTH); + return labelPane; + } + + public void populate(NativePrintAttr nativePrintAttr) { + isShowDialogCheck.setSelected(nativePrintAttr.isShowDialog()); + printerComboBox.setSelectedItem(nativePrintAttr.getPrinterName()); + copySpinner.setValue(nativePrintAttr.getCopy()); + + if (nativePrintAttr.isPrintCurrentPage()) { + currentPageRadioButton.setSelected(true); + } else if (StringUtils.isNotEmpty(nativePrintAttr.getArea())) { + customPageRadioButton.setSelected(true); + specifiedAreaField.setText(nativePrintAttr.getArea()); + } else { + allPageRadioButton.setSelected(true); + } + specifiedAreaField.setEnabled(customPageRadioButton.isSelected()); + + inheritPagePaperSettingCheck.setSelected(nativePrintAttr.isInheritPagePaperSetting()); + predefinedPaperSizeComboBox.setSelectedItem(nativePrintAttr.getPaperSize()); + inheritPageLayoutSettingCheck.setSelected(nativePrintAttr.isInheritPageLayoutSetting()); + if (nativePrintAttr.getOrientation() == ReportConstants.PORTRAIT) { + portraitRadioButton.setSelected(true); + } else { + landscapeRadioButton.setSelected(true); + } + inheritPageMarginSettingCheck.setSelected(nativePrintAttr.isInheritPageMarginSetting()); + pageMarginSettingPane.populate(nativePrintAttr.getMargin()); + fitPaperSizeCheck.setSelected(nativePrintAttr.isFitPaperSize()); + pageOrderSettingPane.populate(nativePrintAttr.getPageOrder()); + } + + public void update(NativePrintAttr nativePrintAttr) { + nativePrintAttr.setShowDialog(isShowDialogCheck.isSelected()); + if (printerComboBox.getSelectedItem() != null) { + nativePrintAttr.setPrinterName(printerComboBox.getSelectedItem().toString()); + } + nativePrintAttr.setCopy((int)copySpinner.getValue()); + + // 页码 + if (customPageRadioButton.isSelected()) { + nativePrintAttr.setArea(specifiedAreaField.getText()); + } else { + nativePrintAttr.setPrintCurrentPage(currentPageRadioButton.isSelected()); + } + + nativePrintAttr.setInheritPagePaperSetting(inheritPagePaperSettingCheck.isSelected()); + nativePrintAttr.setPaperSize((PaperSize) predefinedPaperSizeComboBox.getSelectedItem()); + nativePrintAttr.setInheritPageLayoutSetting(inheritPageLayoutSettingCheck.isSelected()); + nativePrintAttr.setOrientation(portraitRadioButton.isSelected() ? + ReportConstants.PORTRAIT : ReportConstants.LANDSCAPE); + nativePrintAttr.setInheritPageMarginSetting(inheritPageMarginSettingCheck.isSelected()); + nativePrintAttr.setMargin(pageMarginSettingPane.updateBean()); + nativePrintAttr.setFitPaperSize(fitPaperSizeCheck.isSelected()); + nativePrintAttr.setPageOrder(pageOrderSettingPane.updateBean()); + } +} diff --git a/designer/src/com/fr/design/webattr/printsettings/NoClientPrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/NoClientPrintSettingPane.java new file mode 100644 index 0000000000..3dce411441 --- /dev/null +++ b/designer/src/com/fr/design/webattr/printsettings/NoClientPrintSettingPane.java @@ -0,0 +1,93 @@ +package com.fr.design.webattr.printsettings; + +import com.fr.base.Margin; +import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.Inter; +import com.fr.print.NoClientPrintAttr; +import com.fr.stable.Constants; + +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.FlowLayout; + +/** + * 零客户端打印设置面板 + * Created by plough on 2018/3/5. + */ +public class NoClientPrintSettingPane extends JPanel { + private UICheckBox setMarginWhenPrintCheck; + private UICheckBox inheritPageMarginSettingCheck; // 继承页面边距设置 + + private PageMarginSettingPane pageMarginSettingPane; + private PageOrderSettingPane pageOrderSettingPane; + + public NoClientPrintSettingPane() { + initComponents(); + } + + private void initComponents() { + JPanel printPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + + setMarginWhenPrintCheck = new UICheckBox(Inter.getLocText("FR-Designer_Set_Margin_When_Printing")); + setMarginWhenPrintCheck.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); + UILabel tipLabel = GUICoreUtils.createTipLabel(Inter.getLocText("FR-Designer_Tip_Use_Default_Print_Margin")); + JPanel northPane = GUICoreUtils.createFlowPane(new Component[] { + setMarginWhenPrintCheck, tipLabel}, FlowLayout.LEFT); + northPane.setBorder(BorderFactory.createEmptyBorder(8, 10, 10, 0)); + + printPane.add(northPane, BorderLayout.NORTH); + + JPanel centerPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Default_Settings")); + + inheritPageMarginSettingCheck = GUICoreUtils.createNoBorderCheckBox(Inter.getLocText("FR-Designer_Inherit_Page_Margin_Setting")); + pageMarginSettingPane = new PageMarginSettingPane(); + pageMarginSettingPane.setBorder(BorderFactory.createEmptyBorder(10, -10, 0, 0)); + JPanel pageMarginCheckPane = GUICoreUtils.createCheckboxAndDynamicPane(inheritPageMarginSettingCheck, pageMarginSettingPane, true); + + pageOrderSettingPane = new PageOrderSettingPane(); + // TableLayout + double p = TableLayout.PREFERRED; + double[] rowSize = {p, p}; + double[] columnSize = {60, p}; + Component[][] components = { + {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Margin") + ":"), pageMarginCheckPane}, + {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Order") + ":"), pageOrderSettingPane} + }; + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 15); + + centerPane.add(panel); + + printPane.add(centerPane, BorderLayout.CENTER); + + this.setLayout(new BorderLayout()); + this.add(printPane, BorderLayout.CENTER); + } + + // 返回包含一个标签的 panel,标签始终位于 panel 顶部 + private JPanel getTopAlignLabelPane(String labelText) { + JPanel labelPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + labelPane.add(new UILabel(labelText), BorderLayout.NORTH); + return labelPane; + } + + public void populate(NoClientPrintAttr noClientPrintAttr) { + setMarginWhenPrintCheck.setSelected(noClientPrintAttr.isSetMarginOnPrint()); + inheritPageMarginSettingCheck.setSelected(noClientPrintAttr.isInheritPageMarginSetting()); + pageMarginSettingPane.populate(noClientPrintAttr.getMargin()); + pageOrderSettingPane.populate(noClientPrintAttr.getPageOrder()); + } + + public void update(NoClientPrintAttr noClientPrintAttr) { + noClientPrintAttr.setSetMarginOnPrint(setMarginWhenPrintCheck.isSelected()); + noClientPrintAttr.setInheritPageMarginSetting(inheritPageMarginSettingCheck.isSelected()); + noClientPrintAttr.setMargin(pageMarginSettingPane.updateBean()); + noClientPrintAttr.setPageOrder(pageOrderSettingPane.updateBean()); + } +} diff --git a/designer/src/com/fr/design/webattr/printsettings/PageMarginSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/PageMarginSettingPane.java new file mode 100644 index 0000000000..8c63fa5207 --- /dev/null +++ b/designer/src/com/fr/design/webattr/printsettings/PageMarginSettingPane.java @@ -0,0 +1,79 @@ +package com.fr.design.webattr.printsettings; + +import com.fr.base.Margin; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.report.UnitFieldPane; +import com.fr.general.Inter; +import com.fr.stable.Constants; + +import javax.swing.JPanel; +import java.awt.BorderLayout; + +/** + * Created by plough on 2018/3/5. + */ +public class PageMarginSettingPane extends JPanel { + private UnitFieldPane marginTopUnitFieldPane; + private UnitFieldPane marginBottomUnitFieldPane; + private UnitFieldPane marginLeftUnitFieldPane; + private UnitFieldPane marginRightUnitFieldPane; + + public PageMarginSettingPane() { + initComponents(); + } + private void initComponents() { + // 页边距设置面板 + JPanel marginPane = FRGUIPaneFactory.createX_AXISBoxInnerContainer_M_Pane(); + // left + JPanel marginLeftPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_M_Pane(); + marginPane.add(marginLeftPane); + + JPanel marginLeftTextPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + marginLeftPane.add(marginLeftTextPane); + marginLeftTextPane.add(new UILabel(Inter.getLocText("Top") + ":")); + marginTopUnitFieldPane = new UnitFieldPane(Constants.UNIT_MM); + marginLeftTextPane.add(marginTopUnitFieldPane); + JPanel marginLeftUnitPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + marginLeftPane.add(marginLeftUnitPane); + marginLeftUnitPane.add(new UILabel(Inter.getLocText("Bottom") + ":")); + marginBottomUnitFieldPane = new UnitFieldPane(Constants.UNIT_MM); + marginLeftUnitPane.add(marginBottomUnitFieldPane); + + // right + JPanel marginRightPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_M_Pane(); + marginPane.add(marginRightPane); + + // peter:这个一个垂直的上下的字符panel. + JPanel marginRightTextPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + marginRightPane.add(marginRightTextPane); + marginRightTextPane.add(new UILabel(Inter.getLocText("Left") + ":")); + marginLeftUnitFieldPane = new UnitFieldPane(Constants.UNIT_MM); + marginRightTextPane.add(marginLeftUnitFieldPane); + + JPanel marginRightUnitPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + marginRightPane.add(marginRightUnitPane); + marginRightUnitPane.add(new UILabel(Inter.getLocText("Right") + ":")); + marginRightUnitFieldPane = new UnitFieldPane(Constants.UNIT_MM); + marginRightUnitPane.add(marginRightUnitFieldPane); + + this.setLayout(new BorderLayout()); + this.add(marginPane, BorderLayout.CENTER); + } + + public void populate(Margin margin) { + marginTopUnitFieldPane.setUnitValue(margin.getTop()); + marginLeftUnitFieldPane.setUnitValue(margin.getLeft()); + marginBottomUnitFieldPane.setUnitValue(margin.getBottom()); + marginRightUnitFieldPane.setUnitValue(margin.getRight()); + } + + public Margin updateBean() { + Margin margin = new Margin(); + margin.setTop(marginTopUnitFieldPane.getUnitValue()); + margin.setLeft(marginLeftUnitFieldPane.getUnitValue()); + margin.setBottom(marginBottomUnitFieldPane.getUnitValue()); + margin.setRight(marginRightUnitFieldPane.getUnitValue()); + return margin; + } +} diff --git a/designer/src/com/fr/design/webattr/printsettings/PageOrderSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/PageOrderSettingPane.java new file mode 100644 index 0000000000..6017479bb8 --- /dev/null +++ b/designer/src/com/fr/design/webattr/printsettings/PageOrderSettingPane.java @@ -0,0 +1,60 @@ +package com.fr.design.webattr.printsettings; + +import com.fr.base.BaseUtils; +import com.fr.design.gui.ibutton.UIRadioButton; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.general.Inter; +import com.fr.print.NoClientPrintAttr; +import com.fr.stable.Constants; + +import javax.swing.BoxLayout; +import javax.swing.ButtonGroup; +import javax.swing.Icon; +import javax.swing.JPanel; +import java.awt.BorderLayout; + +/** + * Created by plough on 2018/3/5. + */ +public class PageOrderSettingPane extends JPanel { + private UIRadioButton topBottomRadioButton; // 先列后行 + private UIRadioButton leftRightRadioButton; // 先行后列 + + public PageOrderSettingPane() { + initComponents(); + } + + private void initComponents() { + // page order + JPanel pageOrderPane = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(2); + + Icon topBottomIcon = BaseUtils.readIcon("/com/fr/base/images/dialog/pagesetup/down.png"); + topBottomRadioButton = new UIRadioButton(Inter.getLocText("PageSetup-Top_to_bottom")); + pageOrderPane.add(FRGUIPaneFactory.createIconRadio_S_Pane(topBottomIcon, topBottomRadioButton)); + + Icon leftRightIcon = BaseUtils.readIcon("/com/fr/base/images/dialog/pagesetup/over.png"); + leftRightRadioButton = new UIRadioButton(Inter.getLocText("PageSetup-Left_to_right")); + pageOrderPane.add(FRGUIPaneFactory.createIconRadio_S_Pane(leftRightIcon, leftRightRadioButton)); + + ButtonGroup pageOrderButtonGroup = new ButtonGroup(); + pageOrderButtonGroup.add(topBottomRadioButton); + pageOrderButtonGroup.add(leftRightRadioButton); + + topBottomRadioButton.setSelected(true); + + this.setLayout(new BorderLayout()); + this.add(pageOrderPane, BorderLayout.CENTER); + } + + public void populate(int pageOrder) { + if (pageOrder == Constants.TOP_TO_BOTTOM) { + topBottomRadioButton.setSelected(true); + } else { + leftRightRadioButton.setSelected(true); + } + } + + public int updateBean() { + return topBottomRadioButton.isSelected() ? Constants.TOP_TO_BOTTOM : Constants.LEFT_TO_RIGHT; + } +} diff --git a/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java new file mode 100644 index 0000000000..629241a770 --- /dev/null +++ b/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java @@ -0,0 +1,116 @@ +package com.fr.design.webattr.printsettings; + +import com.fr.design.dialog.BasicPane; +import com.fr.design.gui.ibutton.UIRadioButton; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.Inter; +import com.fr.print.PrintAttr; + +import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.CardLayout; +import java.awt.Component; +import java.awt.FlowLayout; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; + +/** + * Created by plough on 2018/3/1. + */ +public class PrintSettingPane extends BasicPane { + private UIRadioButton noClientPrintRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_No_Client_Print")); + private UIRadioButton nativePrintRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Native_Print")); + + private NoClientPrintSettingPane noClientPrintSettingPane; + private NativePrintSettingPane nativePrintSettingPane; + private CardLayout printCard; + private JPanel printPane; + + private PrintAttr printAttr; + + public PrintSettingPane() { + initComponents(); + initListener(); + } + + private void initComponents() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + JPanel allPanel = FRGUIPaneFactory.createBorderLayout_L_Pane(); + this.add(allPanel, BorderLayout.CENTER); + JPanel north = FRGUIPaneFactory.createVerticalFlowLayout_S_Pane(true); + allPanel.add(north, BorderLayout.NORTH); + ButtonGroup buttonGroup = new ButtonGroup(); + noClientPrintRadioButton.setSelected(true); + buttonGroup.add(noClientPrintRadioButton); + buttonGroup.add(nativePrintRadioButton); + noClientPrintRadioButton.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 50)); + JPanel radioGroupPane = GUICoreUtils.createFlowPane(new Component[] { + noClientPrintRadioButton, nativePrintRadioButton}, FlowLayout.LEFT, 0, 0); + north.add(radioGroupPane); + + noClientPrintSettingPane = new NoClientPrintSettingPane(); + nativePrintSettingPane = new NativePrintSettingPane(); + printCard = new CardLayout(); + printPane = new JPanel(); + printPane.setLayout(printCard); + printPane.add(noClientPrintRadioButton.getText(), noClientPrintSettingPane); + printPane.add(nativePrintRadioButton.getText(), nativePrintSettingPane); + + north.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); + allPanel.add(printPane, BorderLayout.CENTER); + } + + private void initListener() { + noClientPrintRadioButton.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + printCard.show(printPane, noClientPrintRadioButton.getText()); + } + } + }); + nativePrintRadioButton.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + printCard.show(printPane, nativePrintRadioButton.getText()); + } + } + }); + } + + @Override + protected String title4PopupWindow() { + return Inter.getLocText("FR-Designer_Print_Setting"); + } + + public void populate(PrintAttr printAttr) { + if (printAttr == null) { + return; + } + this.printAttr = printAttr; + if (printAttr.getPrintType() == PrintAttr.NO_CLIENT_PRINT) { + noClientPrintRadioButton.setSelected(true); + } else { + nativePrintRadioButton.setSelected(true); + } + noClientPrintSettingPane.populate(printAttr.getNoClientPrintAttr()); + nativePrintSettingPane.populate(printAttr.getNativePrintAttr()); + } + + public PrintAttr updateBean() { + printAttr.setPrintType(noClientPrintRadioButton.isSelected() ? + PrintAttr.NO_CLIENT_PRINT : PrintAttr.NATIVE_PRINT); + if (noClientPrintRadioButton.isSelected()) { + printAttr.setPrintType(PrintAttr.NO_CLIENT_PRINT); + noClientPrintSettingPane.update(printAttr.getNoClientPrintAttr()); + } else { + printAttr.setPrintType(PrintAttr.NATIVE_PRINT); + nativePrintSettingPane.update(printAttr.getNativePrintAttr()); + } + return printAttr; + } +} diff --git a/designer_base/src/com/fr/design/utils/gui/GUICoreUtils.java b/designer_base/src/com/fr/design/utils/gui/GUICoreUtils.java index 0225cf5424..565bdc75f1 100644 --- a/designer_base/src/com/fr/design/utils/gui/GUICoreUtils.java +++ b/designer_base/src/com/fr/design/utils/gui/GUICoreUtils.java @@ -12,6 +12,7 @@ import com.fr.design.actions.core.ActionFactory; import com.fr.design.border.UITitledBorder; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIToggleButton; +import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.EditTextField; @@ -37,6 +38,7 @@ import javax.swing.tree.TreePath; import java.awt.*; import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.image.BufferedImage; import java.awt.image.ImageObserver; @@ -844,4 +846,50 @@ public abstract class GUICoreUtils{ && oneRect.getWidth() == otherRect.getWidth() && oneRect.getHeight() == otherRect.getHeight(); } + + /** + * 生成提示标签 + * @param tipText 提示文字 + * @return UILabel 标签对象 + */ + public static UILabel createTipLabel(String tipText) { + UILabel tipLabel = new UILabel("" + tipText + ""); + tipLabel.setForeground(Color.gray); + return tipLabel; + } + + /** + * 生成没有边框的 UICheckBox + * @param text 说明文字 + * @return UICheckBox + */ + public static UICheckBox createNoBorderCheckBox(String text) { + UICheckBox checkBox = new UICheckBox(text); + checkBox.setBorder(BorderFactory.createEmptyBorder()); + return checkBox; + } + + /** + * 创建包含选择框和一个动态面板的联动面板。根据选择框的状态,动态面板会动态地显示或隐藏 + * @param checkBox 选择框 + * @param dynamicPane 包含任意内容的动态面板 + * @param hideOnSelected 选中时隐藏动态面板(若为false,则在"去掉勾选"时隐藏动态面板) + * @return 联动面板 + */ + public static JPanel createCheckboxAndDynamicPane(UICheckBox checkBox, final JPanel dynamicPane, final boolean hideOnSelected) { + checkBox.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + int visibleState = hideOnSelected ? ItemEvent.DESELECTED : ItemEvent.SELECTED; + dynamicPane.setVisible(e.getStateChange() == visibleState); + } + }); + JPanel panel = FRGUIPaneFactory.createBorderLayout_S_Pane(); + panel.add(checkBox, BorderLayout.NORTH); + JPanel dynamicPaneWrapper = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); + dynamicPaneWrapper.add(dynamicPane); + panel.add(dynamicPaneWrapper, BorderLayout.CENTER); + return panel; + } + } \ No newline at end of file From b0de75bd0681f4ade1ab6897969ed0b9af0ac7a1 Mon Sep 17 00:00:00 2001 From: plough Date: Mon, 5 Mar 2018 17:24:57 +0800 Subject: [PATCH 18/79] =?UTF-8?q?REPORT-7036=20=E8=A1=A8=E5=8D=95=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=A0=BC=E8=87=AA=E5=8A=A8=E8=B0=83=E6=95=B4=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/form/FormElementCaseDesigner.java | 8 ++++++++ .../src/com/fr/design/gui/ibutton/UIRadioButton.java | 2 +- .../fr/design/mainframe/form/FormECDesignerProvider.java | 1 + designer_form/src/com/fr/design/mainframe/JForm.java | 1 + 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/designer/src/com/fr/design/mainframe/form/FormElementCaseDesigner.java b/designer/src/com/fr/design/mainframe/form/FormElementCaseDesigner.java index b1f3b2e1be..6259d132e1 100644 --- a/designer/src/com/fr/design/mainframe/form/FormElementCaseDesigner.java +++ b/designer/src/com/fr/design/mainframe/form/FormElementCaseDesigner.java @@ -130,6 +130,14 @@ public class FormElementCaseDesigner implements BaseJForm { this.reportComposite.setSelectedWidget(dataTable); //下面这句话是防止撤销之后直接退出编辑再编辑撤销的东西会回来,因为撤销不会保存EC formDesign.setElementCase(dataTable); + elementCaseDesign.refreshPropertyPane(); } } catch (CloneNotSupportedException e) { throw new RuntimeException(e); From f0108972a7a90cb0da37d97d9c4c510671684865 Mon Sep 17 00:00:00 2001 From: plough Date: Tue, 6 Mar 2018 10:10:42 +0800 Subject: [PATCH 19/79] =?UTF-8?q?REPORT-6438=20=E6=89=93=E5=8D=B0=E6=94=B9?= =?UTF-8?q?=E8=BF=9B=E4=B8=80=E6=9C=9F=3D>2.2=20=E2=80=9C=E6=89=93?= =?UTF-8?q?=E5=8D=B0=E8=AE=BE=E7=BD=AE=E2=80=9D=E4=BA=8C=E7=BA=A7=E5=AD=90?= =?UTF-8?q?=E8=8F=9C=E5=8D=95;=202.3=20=E6=89=93=E5=8D=B0=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E7=AA=97=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/ReportPrintSettingAction.java | 73 ++++++++++++++ .../com/fr/design/mainframe/JWorkBook.java | 2 + .../printsettings/PrintSettingPane.java | 4 +- .../printsettings/ReportPrintSettingPane.java | 99 +++++++++++++++++++ 4 files changed, 175 insertions(+), 3 deletions(-) create mode 100644 designer/src/com/fr/design/actions/report/ReportPrintSettingAction.java create mode 100644 designer/src/com/fr/design/webattr/printsettings/ReportPrintSettingPane.java diff --git a/designer/src/com/fr/design/actions/report/ReportPrintSettingAction.java b/designer/src/com/fr/design/actions/report/ReportPrintSettingAction.java new file mode 100644 index 0000000000..5288bd5d11 --- /dev/null +++ b/designer/src/com/fr/design/actions/report/ReportPrintSettingAction.java @@ -0,0 +1,73 @@ +package com.fr.design.actions.report; + +import com.fr.base.IconManager; +import com.fr.design.actions.JWorkBookAction; +import com.fr.design.dialog.BasicDialog; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.JWorkBook; +import com.fr.design.menu.MenuKeySet; +import com.fr.design.webattr.printsettings.ReportPrintSettingPane; +import com.fr.general.IOUtils; +import com.fr.general.Inter; +import com.fr.main.TemplateWorkBook; +import com.fr.print.PrintAttr; + +import javax.swing.KeyStroke; +import java.awt.event.ActionEvent; + +/** + * Created by plough on 2018/3/5. + */ +public class ReportPrintSettingAction extends JWorkBookAction { + + public ReportPrintSettingAction(JWorkBook jwb) { + super(jwb); + this.setMenuKeySet(REPORT_APP_ATTR); + this.setName(getMenuKeySet().getMenuKeySetName() + "..."); + this.setMnemonic(getMenuKeySet().getMnemonic()); + this.setSmallIcon(IOUtils.readIcon(IconManager.PRINT.getPath())); + this.setSearchText(new ReportPrintSettingPane()); + } + + /** + * 执行动作 + * + * @return 是否执行成功 + */ + public void actionPerformed(ActionEvent evt) { + final JWorkBook jwb = getEditingComponent(); + if (jwb == null) { + return; + } + final TemplateWorkBook wbTpl = jwb.getTarget(); + PrintAttr printAttr = wbTpl.getReportWebAttr().getPrintAttr(); + + final ReportPrintSettingPane reportPrintSettingPane = new ReportPrintSettingPane(); + reportPrintSettingPane.populate(printAttr); + BasicDialog dialog = reportPrintSettingPane.showWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { + @Override + public void doOk() { + PrintAttr newPrintAttr = reportPrintSettingPane.updateBean(); + wbTpl.getReportWebAttr().setPrintAttr(newPrintAttr); + jwb.fireTargetModified(); + } + }); + dialog.setVisible(true); + } + + private static final MenuKeySet REPORT_APP_ATTR = new MenuKeySet() { + @Override + public char getMnemonic() { return 'P'; } + + @Override + public String getMenuName() { + return Inter.getLocText("FR-Designer_Print_Setting"); + } + + @Override + public KeyStroke getKeyStroke() { + return null; + } + }; +} diff --git a/designer/src/com/fr/design/mainframe/JWorkBook.java b/designer/src/com/fr/design/mainframe/JWorkBook.java index 6320d23d2c..7e7754a40d 100644 --- a/designer/src/com/fr/design/mainframe/JWorkBook.java +++ b/designer/src/com/fr/design/mainframe/JWorkBook.java @@ -23,6 +23,7 @@ import com.fr.design.actions.file.export.WordExportAction; import com.fr.design.actions.report.ReportExportAttrAction; import com.fr.design.actions.report.ReportMobileAttrAction; import com.fr.design.actions.report.ReportParameterAction; +import com.fr.design.actions.report.ReportPrintSettingAction; import com.fr.design.actions.report.ReportWebAttrAction; import com.fr.design.cell.bar.DynamicScrollBar; import com.fr.design.constants.UIConstants; @@ -650,6 +651,7 @@ public class JWorkBook extends JTemplate { new ReportExportAttrAction(this), new ReportParameterAction(this), new ReportMobileAttrAction(this), + new ReportPrintSettingAction(this), new NameSeparator(Inter.getLocText("Utils-Current_Sheet")), }, this.reportComposite.getEditingReportComponent().shortcut4TemplateMenu()); } diff --git a/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java index 629241a770..48fbffe3ee 100644 --- a/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java @@ -29,8 +29,6 @@ public class PrintSettingPane extends BasicPane { private CardLayout printCard; private JPanel printPane; - private PrintAttr printAttr; - public PrintSettingPane() { initComponents(); initListener(); @@ -91,7 +89,6 @@ public class PrintSettingPane extends BasicPane { if (printAttr == null) { return; } - this.printAttr = printAttr; if (printAttr.getPrintType() == PrintAttr.NO_CLIENT_PRINT) { noClientPrintRadioButton.setSelected(true); } else { @@ -102,6 +99,7 @@ public class PrintSettingPane extends BasicPane { } public PrintAttr updateBean() { + PrintAttr printAttr = new PrintAttr(); printAttr.setPrintType(noClientPrintRadioButton.isSelected() ? PrintAttr.NO_CLIENT_PRINT : PrintAttr.NATIVE_PRINT); if (noClientPrintRadioButton.isSelected()) { diff --git a/designer/src/com/fr/design/webattr/printsettings/ReportPrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/ReportPrintSettingPane.java new file mode 100644 index 0000000000..e883756458 --- /dev/null +++ b/designer/src/com/fr/design/webattr/printsettings/ReportPrintSettingPane.java @@ -0,0 +1,99 @@ +package com.fr.design.webattr.printsettings; + +import com.fr.base.ConfigManager; +import com.fr.base.ConfigManagerProvider; +import com.fr.design.dialog.BasicPane; +import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.Inter; +import com.fr.print.PrintAttr; +import com.fr.web.attr.ReportWebAttr; + +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.FlowLayout; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; + +/** + * 模版->打印设置 + * Created by plough on 2018/3/6. + */ +public class ReportPrintSettingPane extends BasicPane { + private static final String[] CHOOSEITEM = new String[] { + Inter.getLocText("FR-Designer_I_Want_To_Set_Single"), + Inter.getLocText("FR-Designer_Using_Server_Report_View_Settings") + }; + private static final int SINGLE_SET = 0; + private static final int SERVER_SET = 1; + + private UIComboBox chooseComboBox; + private PrintSettingPane printSettingPane; + + public ReportPrintSettingPane() { + initComponents(); + } + + private void initComponents() { + chooseComboBox = new UIComboBox(CHOOSEITEM); + chooseComboBox.addItemListener(itemListener); + UILabel belowSetLabel = new UILabel(Inter.getLocText("FR-Designer_Blow_set") + ":"); + JPanel buttonPane = GUICoreUtils.createFlowPane(new Component[] { + belowSetLabel, chooseComboBox}, FlowLayout.LEFT, 0, 0); + buttonPane.setBorder(BorderFactory.createEmptyBorder(10, 20, 0, 0)); + + printSettingPane = new PrintSettingPane(); + this.setLayout(new BorderLayout()); + this.add(buttonPane, BorderLayout.NORTH); + this.add(printSettingPane, BorderLayout.CENTER); + } + + private ItemListener itemListener = new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + if (chooseComboBox.getSelectedIndex() == 0) { + checkEnabled(true); + } else { + populateServerSettings(); + checkEnabled(false); + } + } + } + }; + + private void checkEnabled(boolean isSelected) { + GUICoreUtils.setEnabled(printSettingPane, isSelected); + } + + private void populateServerSettings() { + ConfigManagerProvider configManager = ConfigManager.getProviderInstance(); + ReportWebAttr reportWebAttr = ((ReportWebAttr)configManager.getGlobalAttribute(ReportWebAttr.class)); + printSettingPane.populate(reportWebAttr.getPrintAttr()); + } + + public void populate(PrintAttr printAttr) { + if (printAttr == null) { // 如果是空值就说明采用服务器配置了 + chooseComboBox.setSelectedIndex(SERVER_SET); + populateServerSettings(); + return; + } + chooseComboBox.setSelectedIndex(SINGLE_SET); + printSettingPane.populate(printAttr); + } + + public PrintAttr updateBean() { + if (chooseComboBox.getSelectedIndex() == SERVER_SET) { + return null; + } + return printSettingPane.updateBean(); + } + + @Override + protected String title4PopupWindow() { + return Inter.getLocText("FR-Designer_Print_Setting"); + } +} From 834e0f451fbdf3c18a95b49f8d5277f8864a1982 Mon Sep 17 00:00:00 2001 From: plough Date: Tue, 6 Mar 2018 10:15:48 +0800 Subject: [PATCH 20/79] =?UTF-8?q?REPORT-6438=20=20=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E6=94=B9=E8=BF=9B=E4=B8=80=E6=9C=9F=3D>2.4=20=E2=80=9C?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E8=AE=BE=E7=BD=AE>=E5=85=B6=E4=BB=96?= =?UTF-8?q?=E2=80=9D=E7=9A=84=E2=80=9C=E6=89=93=E5=8D=B0=E9=A1=BA=E5=BA=8F?= =?UTF-8?q?=E2=80=9D=E5=8E=BB=E6=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/report/PageSetupPane.java | 41 ------------------- 1 file changed, 41 deletions(-) diff --git a/designer/src/com/fr/design/report/PageSetupPane.java b/designer/src/com/fr/design/report/PageSetupPane.java index 883690a088..7f53832567 100644 --- a/designer/src/com/fr/design/report/PageSetupPane.java +++ b/designer/src/com/fr/design/report/PageSetupPane.java @@ -858,10 +858,6 @@ public class PageSetupPane extends BasicPane { } private class OtherPane extends BasicPane { - - private UIRadioButton topBottomRadioButton; - private UIRadioButton leftRightRadioButton; - private UICheckBox horizonalCenterCheckBox; private UICheckBox verticalCenterCheckBox; @@ -877,29 +873,6 @@ public class PageSetupPane extends BasicPane { JPanel defaultPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane(); this.add(defaultPane, BorderLayout.NORTH); - // page order - JPanel outpageOrderPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("PageSetup-Page_Order")); - JPanel pageOrderPane = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(2); - outpageOrderPane.add(pageOrderPane); - defaultPane.add(outpageOrderPane); - - - Icon topBottomIcon = BaseUtils.readIcon("/com/fr/base/images/dialog/pagesetup/down.png"); - topBottomRadioButton = new UIRadioButton(Inter.getLocText("PageSetup-Top_to_bottom")); - pageOrderPane.add(FRGUIPaneFactory.createIconRadio_S_Pane(topBottomIcon, topBottomRadioButton)); - topBottomRadioButton.setMnemonic('B'); - - Icon leftRightIcon = BaseUtils.readIcon("/com/fr/base/images/dialog/pagesetup/over.png"); - leftRightRadioButton = new UIRadioButton(Inter.getLocText("PageSetup-Left_to_right")); - pageOrderPane.add(FRGUIPaneFactory.createIconRadio_S_Pane(leftRightIcon, leftRightRadioButton)); - leftRightRadioButton.setMnemonic('R'); - - ButtonGroup pageOrderButtonGroup = new ButtonGroup(); - pageOrderButtonGroup.add(topBottomRadioButton); - pageOrderButtonGroup.add(leftRightRadioButton); - - topBottomRadioButton.setSelected(true); - // center on page JPanel outcenterOnPagePane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("PageSetup-Placement_Center_on_Page")); JPanel centerOnPagePane = FRGUIPaneFactory.createNormalFlowInnerContainer_M_Pane(); @@ -976,13 +949,6 @@ public class PageSetupPane extends BasicPane { reportSettings = new ReportSettings(); } - // page order. - if (reportSettings.getPageOrder() == Constants.LEFT_TO_RIGHT) { - this.leftRightRadioButton.setSelected(true); - } else { - this.topBottomRadioButton.setSelected(true); - } - // placement this.horizonalCenterCheckBox.setSelected(reportSettings.isHorizontalCenterOnPage()); this.verticalCenterCheckBox.setSelected(reportSettings.isVerticalCenterOnPage()); @@ -1010,13 +976,6 @@ public class PageSetupPane extends BasicPane { } reportSettings = report.getReportSettings(); - // page order. - if (this.leftRightRadioButton.isSelected()) { - reportSettings.setPageOrder(Constants.LEFT_TO_RIGHT); - } else { - reportSettings.setPageOrder(Constants.TOP_TO_BOTTOM); - } - // placement reportSettings.setHorizontalCenterOnPage(this.horizonalCenterCheckBox.isSelected()); reportSettings.setVerticalCenterOnPage(this.verticalCenterCheckBox.isSelected()); From cbcc64478b3693937f6074509b678d7e202f19fd Mon Sep 17 00:00:00 2001 From: plough Date: Tue, 6 Mar 2018 15:46:06 +0800 Subject: [PATCH 21/79] =?UTF-8?q?REPORT-6438=20=20=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E6=94=B9=E8=BF=9B=E4=B8=80=E6=9C=9F=3D>=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../printsettings/NativePrintSettingPane.java | 2 +- .../NoClientPrintSettingPane.java | 2 +- .../printsettings/PrintSettingPane.java | 4 +-- .../com/fr/design/locale/designer.properties | 4 --- .../design/locale/designer_en_US.properties | 4 --- .../design/locale/designer_ja_JP.properties | 34 ++++++++----------- .../design/locale/designer_ko_KR.properties | 34 ++++++++----------- .../design/locale/designer_zh_CN.properties | 4 --- .../design/locale/designer_zh_TW.properties | 4 --- 9 files changed, 34 insertions(+), 58 deletions(-) diff --git a/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java index 28d27801c8..316b461dcb 100644 --- a/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java @@ -65,7 +65,7 @@ public class NativePrintSettingPane extends JPanel { JPanel northPane = FRGUIPaneFactory.createNColumnGridInnerContainer_Pane(1, 0, 15); UILabel tipDownload = GUICoreUtils.createTipLabel(Inter.getLocText("FR-Designer_Tip_Native_Print_Need_Client")); northPane.add(tipDownload); - isShowDialogCheck = new UICheckBox(Inter.getLocText("FR-Designer_Show_Print_Setting_Window_When_Printing")); + isShowDialogCheck = new UICheckBox(Inter.getLocText("FR-Engine_Show_Print_Setting_Window_When_Printing")); isShowDialogCheck.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); UILabel tipCheck = GUICoreUtils.createTipLabel(Inter.getLocText("FR-Designer_Tip_Use_Default_Settings")); JPanel checkPane = GUICoreUtils.createFlowPane(new Component[] { diff --git a/designer/src/com/fr/design/webattr/printsettings/NoClientPrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/NoClientPrintSettingPane.java index 3dce411441..708e804007 100644 --- a/designer/src/com/fr/design/webattr/printsettings/NoClientPrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/printsettings/NoClientPrintSettingPane.java @@ -35,7 +35,7 @@ public class NoClientPrintSettingPane extends JPanel { private void initComponents() { JPanel printPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - setMarginWhenPrintCheck = new UICheckBox(Inter.getLocText("FR-Designer_Set_Margin_When_Printing")); + setMarginWhenPrintCheck = new UICheckBox(Inter.getLocText("FR-Engine_Set_Margin_When_Printing")); setMarginWhenPrintCheck.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); UILabel tipLabel = GUICoreUtils.createTipLabel(Inter.getLocText("FR-Designer_Tip_Use_Default_Print_Margin")); JPanel northPane = GUICoreUtils.createFlowPane(new Component[] { diff --git a/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java index 48fbffe3ee..0aaa5594eb 100644 --- a/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java @@ -21,8 +21,8 @@ import java.awt.event.ItemListener; * Created by plough on 2018/3/1. */ public class PrintSettingPane extends BasicPane { - private UIRadioButton noClientPrintRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_No_Client_Print")); - private UIRadioButton nativePrintRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Native_Print")); + private UIRadioButton noClientPrintRadioButton = new UIRadioButton(Inter.getLocText("FR-Engine_No_Client_Print")); + private UIRadioButton nativePrintRadioButton = new UIRadioButton(Inter.getLocText("FR-Engine_Native_Print")); private NoClientPrintSettingPane noClientPrintSettingPane; private NativePrintSettingPane nativePrintSettingPane; diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index aa8e5dc364..f2e971bf74 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -2188,16 +2188,12 @@ FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout=Under the absolu FR-Designer_Follow_Paper_Settings=follow paper settings FR-Designer_No_Auto_Adjust=no automatic adjust FR-Designer_Print_Setting=Print Setting -FR-Designer_No_Client_Print=No Client Printing -FR-Designer_Native_Print=Native Printing -FR-Designer_Set_Margin_When_Printing=Set printing margins when printing FR-Designer_Tip_Use_Default_Print_Margin=Hint: if you don't check, you use the print margins in the default settings as follows. FR-Designer_Default_Settings=Default configuration FR-Designer_Inherit_Page_Margin_Setting=Inherit page margin setting FR-Designer_Margin=Margin FR-Designer_Order=Order FR-Designer_Tip_Native_Print_Need_Client=Hint: native printing requires the terminal to download the client, but it can support more and more powerful functions. -FR-Designer_Show_Print_Setting_Window_When_Printing=Show print setting window when printing FR-Designer_Tip_Use_Default_Settings=Hint: if you don't check, use the default settings as follows. FR-Designer_Inherit_Page_Paper_Setting=Inherit page paper setting FR-Designer_Inherit_Page_Layout_Setting=Inherit page layout setting 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 6572765d0b..7d298238f1 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 @@ -2187,16 +2187,12 @@ FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout=Under the absolu FR-Designer_Follow_Paper_Settings=follow paper settings FR-Designer_No_Auto_Adjust=no automaticly adjust FR-Designer_Print_Setting=Print Setting -FR-Designer_No_Client_Print=No Client Printing -FR-Designer_Native_Print=Native Printing -FR-Designer_Set_Margin_When_Printing=Set printing margins when printing FR-Designer_Tip_Use_Default_Print_Margin=Hint: if you don't check, you use the print margins in the default settings as follows. FR-Designer_Default_Settings=Default configuration FR-Designer_Inherit_Page_Margin_Setting=Inherit page margin setting FR-Designer_Margin=Margin FR-Designer_Order=Order FR-Designer_Tip_Native_Print_Need_Client=Hint: native printing requires the terminal to download the client, but it can support more and more powerful functions. -FR-Designer_Show_Print_Setting_Window_When_Printing=Show print setting window when printing FR-Designer_Tip_Use_Default_Settings=Hint: if you don't check, use the default settings as follows. FR-Designer_Inherit_Page_Paper_Setting=Inherit page paper setting FR-Designer_Inherit_Page_Layout_Setting=Inherit page layout setting 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 1913e59868..e4d3844724 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 @@ -2185,23 +2185,19 @@ FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout= FR-Designer_Follow_Paper_Settings= FR-Designer_No_Auto_Adjust= FR-Designer_Print_Setting=\u5370\u5237\u8A2D\u5B9A -FR-Designer_No_Client_Print=1 -FR-Designer_Native_Print=1 -FR-Designer_Set_Margin_When_Printing=1 -FR-Designer_Tip_Use_Default_Print_Margin=1 -FR-Designer_Default_Settings=1 -FR-Designer_Inherit_Page_Margin_Setting=1 -FR-Designer_Margin=1 -FR-Designer_Order=1 -FR-Designer_Tip_Native_Print_Need_Client=1 -FR-Designer_Show_Print_Setting_Window_When_Printing=1 -FR-Designer_Tip_Use_Default_Settings=1 -FR-Designer_Inherit_Page_Paper_Setting=1 -FR-Designer_Inherit_Page_Layout_Setting=1 +FR-Designer_Tip_Use_Default_Print_Margin= +FR-Designer_Default_Settings= +FR-Designer_Inherit_Page_Margin_Setting= +FR-Designer_Margin= +FR-Designer_Order= +FR-Designer_Tip_Native_Print_Need_Client= +FR-Designer_Tip_Use_Default_Settings= +FR-Designer_Inherit_Page_Paper_Setting= +FR-Designer_Inherit_Page_Layout_Setting= FR-Designer_Print_To_Fit_Paper_Size=\u7D19\u306E\u30B5\u30A4\u30BA\u306B\u5408\u308F\u305B\u3066\u5370\u5237 -FR-Designer_Printer=1 -FR-Designer_Copy_Number=1 -FR-Designer_Paper=1 -FR-Designer_All_Pages=1 -FR-Designer_Current_Page=1 -FR-Designer_Print_Area_Tip=1 +FR-Designer_Printer= +FR-Designer_Copy_Number= +FR-Designer_Paper= +FR-Designer_All_Pages= +FR-Designer_Current_Page= +FR-Designer_Print_Area_Tip= 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 2a61c47062..af29fceb52 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 @@ -2186,23 +2186,19 @@ FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout= FR-Designer_Follow_Paper_Settings= FR-Designer_No_Auto_Adjust= FR-Designer_Print_Setting=\uC778\uC1C4\uC124\uC815 -FR-Designer_No_Client_Print=1 -FR-Designer_Native_Print=1 -FR-Designer_Set_Margin_When_Printing=1 -FR-Designer_Tip_Use_Default_Print_Margin=1 -FR-Designer_Default_Settings=1 -FR-Designer_Inherit_Page_Margin_Setting=1 -FR-Designer_Margin=1 -FR-Designer_Order=1 -FR-Designer_Tip_Native_Print_Need_Client=1 -FR-Designer_Show_Print_Setting_Window_When_Printing=1 -FR-Designer_Tip_Use_Default_Settings=1 -FR-Designer_Inherit_Page_Paper_Setting=1 -FR-Designer_Inherit_Page_Layout_Setting=1 +FR-Designer_Tip_Use_Default_Print_Margin= +FR-Designer_Default_Settings= +FR-Designer_Inherit_Page_Margin_Setting= +FR-Designer_Margin= +FR-Designer_Order= +FR-Designer_Tip_Native_Print_Need_Client= +FR-Designer_Tip_Use_Default_Settings= +FR-Designer_Inherit_Page_Paper_Setting= +FR-Designer_Inherit_Page_Layout_Setting= FR-Designer_Print_To_Fit_Paper_Size=\uC885\uC774\uD06C\uAE30\uC5D0\uB530\uB978\uC778\uC1C4\uCD95\uC18C -FR-Designer_Printer=1 -FR-Designer_Copy_Number=1 -FR-Designer_Paper=1 -FR-Designer_All_Pages=1 -FR-Designer_Current_Page=1 -FR-Designer_Print_Area_Tip=1 +FR-Designer_Printer= +FR-Designer_Copy_Number= +FR-Designer_Paper= +FR-Designer_All_Pages= +FR-Designer_Current_Page= +FR-Designer_Print_Area_Tip= 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 e8f3c39bc1..00ef1a05e3 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 @@ -2188,16 +2188,12 @@ FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout=\u7EDD\u5BF9\u75 FR-Designer_Follow_Paper_Settings=\u8DDF\u968F\u9875\u9762\u8BBE\u7F6E FR-Designer_No_Auto_Adjust=\u4E0D\u81EA\u52A8\u8C03\u6574 FR-Designer_Print_Setting=\u6253\u5370\u8BBE\u7F6E -FR-Designer_No_Client_Print=\u96F6\u5BA2\u6237\u7AEF\u6253\u5370 -FR-Designer_Native_Print=\u672C\u5730\u8F6F\u4EF6\u6253\u5370 -FR-Designer_Set_Margin_When_Printing=\u6253\u5370\u65F6\u53EF\u8BBE\u7F6E\u6253\u5370\u8FB9\u8DDD FR-Designer_Tip_Use_Default_Print_Margin=\u63D0\u793A\uFF1A\u82E5\u4E0D\u52FE\u9009\uFF0C\u5219\u4F7F\u7528\u5982\u4E0B\u9ED8\u8BA4\u8BBE\u7F6E\u4E2D\u7684\u6253\u5370\u8FB9\u8DDD\u3002 FR-Designer_Default_Settings=\u9ED8\u8BA4\u914D\u7F6E FR-Designer_Inherit_Page_Margin_Setting=\u7EE7\u627F\u9875\u9762\u8FB9\u8DDD\u8BBE\u7F6E FR-Designer_Margin=\u8FB9\u8DDD FR-Designer_Order=\u987A\u5E8F FR-Designer_Tip_Native_Print_Need_Client=\u63D0\u793A\uFF1A\u672C\u5730\u8F6F\u4EF6\u6253\u5370\u9700\u8981\u7EC8\u7AEF\u4E0B\u8F7D\u5BA2\u6237\u7AEF\uFF0C\u4F46\u80FD\u652F\u6301\u66F4\u591A\u3001\u66F4\u5F3A\u5927\u7684\u529F\u80FD\u3002 -FR-Designer_Show_Print_Setting_Window_When_Printing=\u6253\u5370\u65F6\u9700\u8981\u6253\u5370\u8BBE\u7F6E\u7A97\u53E3 FR-Designer_Tip_Use_Default_Settings=\u63D0\u793A\uFF1A\u82E5\u4E0D\u52FE\u9009\uFF0C\u5219\u4F7F\u7528\u5982\u4E0B\u9ED8\u8BA4\u8BBE\u7F6E\u3002 FR-Designer_Inherit_Page_Paper_Setting=\u7EE7\u627F\u9875\u9762\u7EB8\u5F20\u8BBE\u7F6E FR-Designer_Inherit_Page_Layout_Setting=\u7EE7\u627F\u9875\u9762\u5E03\u5C40\u8BBE\u7F6E 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 96b3e23bed..919a5a3961 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 @@ -2187,16 +2187,12 @@ FR-Designer_Tip_Chart_Adaptivity_Unavailable_In_Absolute_Layout=\u7D55\u5C0D\u75 FR-Designer_Follow_Paper_Settings=\u8DDF\u96A8\u9801\u9762\u8A2D\u5B9A FR-Designer_No_Auto_Adjust=\u4E0D\u81EA\u52D5\u8ABF\u6574 FR-Designer_Print_Setting=\u5217\u5370\u8A2D\u5B9A -FR-Designer_No_Client_Print=\u96F6\u5BA2\u6236\u7AEF\u5217\u5370 -FR-Designer_Native_Print=\u672C\u5730\u8EDF\u4EF6\u5217\u5370 -FR-Designer_Set_Margin_When_Printing=\u5217\u5370\u6642\u53EF\u8A2D\u5B9A\u5217\u5370\u908A\u8DDD FR-Designer_Tip_Use_Default_Print_Margin=\u63D0\u793A\uFF1A\u82E5\u4E0D\u52FE\u9078\uFF0C\u5247\u4F7F\u7528\u5982\u4E0B\u9ED8\u8A8D\u8A2D\u7F6E\u4E2D\u7684\u5217\u5370\u908A\u8DDD\u3002 FR-Designer_Default_Settings=\u9ED8\u8A8D\u914D\u5BD8 FR-Designer_Inherit_Page_Margin_Setting=\u7E7C\u627F\u9801\u9762\u908A\u8DDD\u8A2D\u5B9A FR-Designer_Margin=\u908A\u8DDD FR-Designer_Order=\u9806\u5E8F FR-Designer_Tip_Native_Print_Need_Client=\u63D0\u793A\uFF1A\u672C\u5730\u8EDF\u4EF6\u5217\u5370\u9700\u8981\u7D42\u7AEF\u4E0B\u8F09\u7528\u6236\u7AEF\uFF0C\u4F46\u80FD\u652F\u6301\u66F4\u591A\u3001\u66F4\u5F3A\u5927\u7684\u529F\u80FD\u3002 -FR-Designer_Show_Print_Setting_Window_When_Printing=\u5217\u5370\u6642\u9700\u8981\u5217\u5370\u8A2D\u5B9A\u8996\u7A97 FR-Designer_Tip_Use_Default_Settings=\u63D0\u793A\uFF1A\u82E5\u4E0D\u52FE\u9078\uFF0C\u5247\u4F7F\u7528\u5982\u4E0B\u9ED8\u8A8D\u8A2D\u7F6E\u3002 FR-Designer_Inherit_Page_Paper_Setting=\u7E7C\u627F\u9801\u9762\u7D19\u5F35\u8A2D\u5B9A FR-Designer_Inherit_Page_Layout_Setting=\u7E7C\u627F\u9801\u9762\u4F48\u5C40\u8A2D\u5B9A From eb75562659d1ae22ba5c78ffb7390ad5a0394679 Mon Sep 17 00:00:00 2001 From: plough Date: Wed, 7 Mar 2018 16:51:11 +0800 Subject: [PATCH 22/79] =?UTF-8?q?REPORT-6438=20=20=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E6=94=B9=E8=BF=9B=E4=B8=80=E6=9C=9F=3D>=E5=8E=BB=E6=8E=89?= =?UTF-8?q?=E5=8E=9F=E6=9D=A5=E7=9A=84=E6=89=93=E5=8D=B0=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/webattr/EditToolBar.java | 66 +------------------ 1 file changed, 2 insertions(+), 64 deletions(-) diff --git a/designer/src/com/fr/design/webattr/EditToolBar.java b/designer/src/com/fr/design/webattr/EditToolBar.java index a8ebd932fc..ebeb017746 100644 --- a/designer/src/com/fr/design/webattr/EditToolBar.java +++ b/designer/src/com/fr/design/webattr/EditToolBar.java @@ -31,7 +31,6 @@ import com.fr.form.ui.WidgetManager; import com.fr.general.Background; import com.fr.general.Inter; import com.fr.report.web.button.Export; -import com.fr.report.web.button.PDFPrint; import com.fr.report.web.button.Print; import com.fr.report.web.button.write.AppendColumnRow; import com.fr.report.web.button.write.ExcelImport; @@ -320,8 +319,8 @@ public class EditToolBar extends BasicPane { private CardLayout card; private JPanel centerPane; private UICheckBox icon, text, pdf, excelP, excelO, excelS, image, word, - flashPrint, pdfPrint, appletPrint, serverPrint, isPopup, isVerify, failSubmit, - isCurSheet, excelImClean, excelImCover, excelImAppend, excelImCust; + isPopup, isVerify, failSubmit, isCurSheet, excelImClean, + excelImCover, excelImAppend, excelImCust; private UIBasicSpinner count; private Widget widget; private UITextField nameField; @@ -383,9 +382,7 @@ public class EditToolBar extends BasicPane { centerPane.add("custom", getCustomPane()); centerPane.add("export", getExport()); centerPane.add("import", getImport()); - centerPane.add("print", getPrint()); centerPane.add("none", none); - centerPane.add("pdfprint", getPdfPrintSetting()); // centerPane.add("editexcel", editExcel); centerPane.add(getCpane(), "appendcount"); centerPane.add(getSubmitPane(), "submit"); @@ -455,22 +452,6 @@ public class EditToolBar extends BasicPane { return excelImport; } - private JPanel getPrint() { - JPanel print = FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane(); - // print.setLayout(new BoxLayout(print, BoxLayout.Y_AXIS)); - flashPrint = new UICheckBox(Inter.getLocText("FR-Designer_Flash_Print")); - pdfPrint = new UICheckBox(Inter.getLocText("FR-Designer_PDF_Print")); - appletPrint = new UICheckBox(Inter.getLocText("FR-Designer_Applet_Print")); - serverPrint = new UICheckBox(Inter.getLocText("FR-Designer_Server_Print")); - print.add(flashPrint); - print.add(pdfPrint); - print.add(appletPrint); - print.add(serverPrint); - print.setBorder(BorderFactory.createTitledBorder(Inter.getLocText(new String[]{"Form-Button", "Property", "Set"}))); - return print; - } - - private JPanel getCpane() { JPanel appendCountPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); count = new UIBasicSpinner(new SpinnerNumberModel(1, 0, Integer.MAX_VALUE, 1)); @@ -482,17 +463,6 @@ public class EditToolBar extends BasicPane { return cpane; } - - private JPanel getPdfPrintSetting() { - // richer:pdf打印按钮设置 - JPanel pdfPrintSetting = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); - isPopup = new UICheckBox(Inter.getLocText("PDF-Print_isPopup")); - pdfPrintSetting.add(isPopup); - pdfPrintSetting.setBorder(BorderFactory.createTitledBorder(Inter.getLocText("PDF-Print_Setting"))); - return pdfPrintSetting; - } - - private JPanel getSubmitPane() { isVerify = new UICheckBox(Inter.getLocText("Verify-Data_Verify")); failSubmit = new UICheckBox(Inter.getLocText(new String[]{"Verify_Fail", "Still", "Submit"})); @@ -544,10 +514,6 @@ public class EditToolBar extends BasicPane { } if (widget instanceof Export) { populateExport(); - } else if (widget instanceof Print) { - populatePrint(); - } else if (widget instanceof PDFPrint) { - populatePDFPrint(); } else if (widget instanceof AppendColumnRow) { populateAppendColumnRow(); } else if (widget instanceof Submit) { @@ -614,21 +580,6 @@ public class EditToolBar extends BasicPane { this.isCurSheet.setSelected(submit.isOnlySubmitSelect()); } - private void populatePDFPrint() { - card.show(centerPane, "pdfprint"); - PDFPrint pdfPrint = (PDFPrint) widget; - this.isPopup.setSelected(pdfPrint.isPopup()); - } - - private void populatePrint() { - card.show(centerPane, "print"); - Print print = (Print) widget; - this.pdfPrint.setSelected(print.isPDFPrint()); - this.appletPrint.setSelected(print.isAppletPrint()); - this.flashPrint.setSelected(print.isFlashPrint()); - this.serverPrint.setSelected(print.isServerPrint()); - } - private void populateDefault() { Button button = (Button) widget; this.icon.setSelected(button.isShowIcon()); @@ -645,11 +596,6 @@ public class EditToolBar extends BasicPane { public Widget update() { if (widget instanceof Export) { updateExport(); - } else if (widget instanceof Print) { - updatePrint(); - } else if (widget instanceof PDFPrint) { - PDFPrint pdfPrint = (PDFPrint) widget; - pdfPrint.setPopup(this.isPopup.isSelected()); } else if (widget instanceof AppendColumnRow) { ((AppendColumnRow) widget).setCount(((Integer) count.getValue()).intValue()); } else if (widget instanceof Submit) { @@ -685,14 +631,6 @@ public class EditToolBar extends BasicPane { submit.setOnlySubmitSelect(this.isCurSheet.isSelected()); } - private void updatePrint() { - Print print = (Print) widget; - print.setAppletPrint(this.appletPrint.isSelected()); - print.setFlashPrint(this.flashPrint.isSelected()); - print.setPDFPrint(this.pdfPrint.isSelected()); - print.setServerPrint(this.serverPrint.isSelected()); - } - private void updateExport() { Export export = (Export) widget; export.setPdfAvailable(this.pdf.isSelected()); From 53dbf9528c733f33ba2c56c9db07a1b0b6f21995 Mon Sep 17 00:00:00 2001 From: zack Date: Fri, 9 Mar 2018 16:20:53 +0800 Subject: [PATCH 23/79] =?UTF-8?q?REPORT-6374=20=E6=A8=A1=E6=9D=BF=E5=86=85?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E5=85=83=E7=B4=A0=E7=9A=84=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/headerfooter/ImagePane.java | 49 +++-- .../com/fr/design/report/SelectImagePane.java | 178 ++++++++-------- .../fr/design/gui/frpane/ImgChoosePane.java | 31 ++- .../com/fr/design/locale/designer.properties | 2 + .../design/locale/designer_en_US.properties | 2 + .../design/locale/designer_ja_JP.properties | 2 + .../design/locale/designer_ko_KR.properties | 2 + .../design/locale/designer_zh_CN.properties | 2 + .../design/locale/designer_zh_TW.properties | 2 + .../ImageBackgroundQuickPane.java | 39 +++- .../backgroundpane/ImagePreviewPane.java | 49 +++-- .../background/image/ExpandFileChooser.java | 191 ++++++++++++++++++ .../background/image/ImageFileChooser.java | 17 +- .../background/image/ImagePreviewPane.java | 92 +++++---- .../background/image/ImageSelectPane.java | 30 +-- .../background/impl/ImageBackgroundPane.java | 36 +++- .../impl/ImageBackgroundPane4Browser.java | 13 -- .../src/com/fr/design/utils/ImageUtils.java | 168 +++++++++++++++ .../module/ChartEmptyDataStylePane.java | 39 ++-- 19 files changed, 710 insertions(+), 234 deletions(-) create mode 100644 designer_base/src/com/fr/design/style/background/image/ExpandFileChooser.java create mode 100644 designer_base/src/com/fr/design/utils/ImageUtils.java diff --git a/designer/src/com/fr/design/headerfooter/ImagePane.java b/designer/src/com/fr/design/headerfooter/ImagePane.java index a67af01569..263c0c1ca1 100644 --- a/designer/src/com/fr/design/headerfooter/ImagePane.java +++ b/designer/src/com/fr/design/headerfooter/ImagePane.java @@ -3,25 +3,26 @@ */ package com.fr.design.headerfooter; -import java.awt.BorderLayout; -import java.awt.Image; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.File; - -import javax.swing.BorderFactory; -import javax.swing.JFileChooser; -import javax.swing.JPanel; -import javax.swing.JScrollPane; - import com.fr.base.BaseUtils; +import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.dialog.BasicPane; -import com.fr.general.Inter; -import com.fr.stable.CoreGraphHelper; import com.fr.design.style.background.image.ImageFileChooser; import com.fr.design.style.background.image.ImagePreviewPane; +import com.fr.design.utils.ImageUtils; +import com.fr.general.Inter; +import com.fr.stable.CoreGraphHelper; + +import javax.swing.BorderFactory; +import javax.swing.JFileChooser; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.SwingWorker; +import java.awt.BorderLayout; +import java.awt.Image; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; /** * Image Pane. @@ -29,6 +30,7 @@ import com.fr.design.style.background.image.ImagePreviewPane; public class ImagePane extends BasicPane { private ImagePreviewPane imagePreviewPane; private ImageFileChooser imageFileChooser = null; + private SwingWorker imageWorker; public ImagePane() { this(true); @@ -95,10 +97,21 @@ public class ImagePane extends BasicPane { File selectedFile = imageFileChooser.getSelectedFile(); if (selectedFile != null && selectedFile.isFile()) { - Image image = BaseUtils.readImage(selectedFile.getPath()); - CoreGraphHelper.waitForImage(image); - - imagePreviewPane.setImage(image); + imagePreviewPane.showLoading(); + if (imageWorker != null && !imageWorker.isDone()) { + imageWorker = null; + } + imageWorker = new SwingWorker() { + @Override + protected Void doInBackground() throws Exception { + Image image = imageFileChooser.isCompressSelected() ? ImageUtils.defaultImageCompress(selectedFile) : BaseUtils.readImage(selectedFile.getPath()); + CoreGraphHelper.waitForImage(image); + + imagePreviewPane.setImage(image); + return null; + } + }; + imageWorker.execute(); } else { imagePreviewPane.setImage(null); } diff --git a/designer/src/com/fr/design/report/SelectImagePane.java b/designer/src/com/fr/design/report/SelectImagePane.java index 783db491c2..ff81333bdc 100644 --- a/designer/src/com/fr/design/report/SelectImagePane.java +++ b/designer/src/com/fr/design/report/SelectImagePane.java @@ -1,41 +1,40 @@ package com.fr.design.report; -import java.awt.BorderLayout; -import java.awt.GridLayout; -import java.awt.Image; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.File; - -import javax.swing.BorderFactory; -import javax.swing.ButtonGroup; -import javax.swing.JFileChooser; -import javax.swing.JPanel; -import javax.swing.JScrollPane; - import com.fr.base.BaseUtils; import com.fr.base.Style; +import com.fr.design.utils.ImageUtils; +import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.dialog.BasicPane; +import com.fr.design.style.background.image.ImageFileChooser; +import com.fr.design.style.background.image.ImagePreviewPane; +import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; import com.fr.report.cell.Elem; import com.fr.report.cell.cellattr.CellImage; import com.fr.stable.Constants; import com.fr.stable.CoreGraphHelper; -import com.fr.design.style.background.image.ImageFileChooser; -import com.fr.design.style.background.image.ImagePreviewPane; -import com.fr.design.utils.gui.GUICoreUtils; + +import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; +import javax.swing.JFileChooser; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.SwingWorker; +import java.awt.BorderLayout; +import java.awt.GridLayout; +import java.awt.Image; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; /** - * * 这个类主要用于插入图片时的设置 - * */ -public class SelectImagePane extends BasicPane{ +public class SelectImagePane extends BasicPane { private ImagePreviewPane previewPane = null; - + private ImageFileChooser imageFileChooser = null; private UIRadioButton defaultRadioButton = null; private UIRadioButton tiledRadioButton = null; @@ -44,8 +43,9 @@ public class SelectImagePane extends BasicPane{ private Style imageStyle = null; private Image previewImage = null; - + private File imageFile; + private SwingWorker imageWorker; public SelectImagePane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); @@ -57,7 +57,7 @@ public class SelectImagePane extends BasicPane{ JPanel previewOwnerPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); previewContainerPane.add(previewOwnerPane, BorderLayout.CENTER); - previewOwnerPane.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText("Preview"),null)); + previewOwnerPane.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText("Preview"), null)); previewPane = new ImagePreviewPane(); previewOwnerPane.add(new JScrollPane(previewPane)); @@ -72,10 +72,10 @@ public class SelectImagePane extends BasicPane{ selectFilePane.add(selectPictureButton, BorderLayout.NORTH); selectPictureButton.setMnemonic('S'); selectPictureButton.addActionListener(selectPictureActionListener); - - JPanel layoutPane=FRGUIPaneFactory.createMediumHGapHighTopFlowInnerContainer_M_Pane(); + + JPanel layoutPane = FRGUIPaneFactory.createMediumHGapHighTopFlowInnerContainer_M_Pane(); selectFilePane.add(layoutPane, BorderLayout.CENTER); - + //布局 defaultRadioButton = new UIRadioButton(Inter.getLocText("Default")); tiledRadioButton = new UIRadioButton(Inter.getLocText("Image-Titled")); @@ -86,7 +86,7 @@ public class SelectImagePane extends BasicPane{ tiledRadioButton.addActionListener(layoutActionListener); extendRadioButton.addActionListener(layoutActionListener); adjustRadioButton.addActionListener(layoutActionListener); - + JPanel jp = new JPanel(new GridLayout(4, 1, 15, 15)); jp.add(defaultRadioButton); jp.add(tiledRadioButton); @@ -118,14 +118,26 @@ public class SelectImagePane extends BasicPane{ File selectedFile = imageFileChooser.getSelectedFile(); if (selectedFile != null && selectedFile.isFile()) { - Image image = BaseUtils.readImage(selectedFile.getPath()); - CoreGraphHelper.waitForImage(image); - - imageFile = selectedFile; - setImageStyle(); - previewPane.setImage(image); - previewPane.setImageStyle(imageStyle); - previewImage = image; + previewPane.showLoading(); + if (imageWorker != null && !imageWorker.isDone()) { + imageWorker = null; + } + imageWorker = new SwingWorker() { + @Override + protected Void doInBackground() throws Exception { + Image image = imageFileChooser.isCompressSelected() ? ImageUtils.defaultImageCompress(selectedFile) : BaseUtils.readImage(selectedFile.getPath()); + CoreGraphHelper.waitForImage(image); + + imageFile = selectedFile; + setImageStyle(); + previewPane.setImage(image); + previewPane.setImageStyle(imageStyle); + previewImage = image; + previewPane.repaint(); + return null; + } + }; + imageWorker.execute(); } else { previewPane.setImage(null); } @@ -133,73 +145,73 @@ public class SelectImagePane extends BasicPane{ } } }; - + // 调整图片样式,只有水平和垂直对齐以及拉伸。相对于背景,平铺不予考虑。 private void changeImageStyle() { - previewPane.setImageStyle(this.imageStyle); - previewPane.repaint(); + previewPane.setImageStyle(this.imageStyle); + previewPane.repaint(); } - - private void setImageStyle(){ - if(tiledRadioButton.isSelected()){ - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_TILED); - }else if(adjustRadioButton.isSelected()){ - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_ADJUST); - }else if(extendRadioButton.isSelected()){ - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_EXTEND); - }else{ - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_CENTER); + + private void setImageStyle() { + if (tiledRadioButton.isSelected()) { + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_TILED); + } else if (adjustRadioButton.isSelected()) { + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_ADJUST); + } else if (extendRadioButton.isSelected()) { + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_EXTEND); + } else { + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_CENTER); } } ActionListener layoutActionListener = new ActionListener() { public void actionPerformed(ActionEvent evt) { - setImageStyle(); + setImageStyle(); changeImageStyle(); } }; - + @Override protected String title4PopupWindow() { - return Inter.getLocText("Image"); + return Inter.getLocText("Image"); } public void populate(Elem cell) { - Style style = null; - if (cell != null) { - Object value = cell.getValue(); - if (value != null && value instanceof Image) { - Image image = (Image)value; - previewPane.setImage(image); - this.previewImage = image; - } - - style = cell.getStyle(); - } - - if(style.getImageLayout() == Constants.IMAGE_TILED){ - tiledRadioButton.setSelected(true); - }else if(style.getImageLayout() == Constants.IMAGE_EXTEND){ - extendRadioButton.setSelected(true); - }else if(style.getImageLayout() == Constants.IMAGE_ADJUST){ - adjustRadioButton.setSelected(true); - }else{ - style.deriveImageLayout(Constants.IMAGE_CENTER); - defaultRadioButton.setSelected(true); - } - this.imageStyle = style; - changeImageStyle(); + Style style = null; + if (cell != null) { + Object value = cell.getValue(); + if (value != null && value instanceof Image) { + Image image = (Image) value; + previewPane.setImage(image); + this.previewImage = image; + } + + style = cell.getStyle(); + } + + if (style.getImageLayout() == Constants.IMAGE_TILED) { + tiledRadioButton.setSelected(true); + } else if (style.getImageLayout() == Constants.IMAGE_EXTEND) { + extendRadioButton.setSelected(true); + } else if (style.getImageLayout() == Constants.IMAGE_ADJUST) { + adjustRadioButton.setSelected(true); + } else { + style.deriveImageLayout(Constants.IMAGE_CENTER); + defaultRadioButton.setSelected(true); + } + this.imageStyle = style; + changeImageStyle(); } - public CellImage update(){ - CellImage cellImage = new CellImage(); - cellImage.setImage(previewPane.getImage()); - cellImage.setStyle(this.imageStyle); - return cellImage; + public CellImage update() { + CellImage cellImage = new CellImage(); + cellImage.setImage(previewPane.getImage()); + cellImage.setStyle(this.imageStyle); + return cellImage; } - - public File getSelectedImage(){ - return imageFile; + + public File getSelectedImage() { + return imageFile; } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/gui/frpane/ImgChoosePane.java b/designer_base/src/com/fr/design/gui/frpane/ImgChoosePane.java index bea968cea2..ec50bcff1b 100644 --- a/designer_base/src/com/fr/design/gui/frpane/ImgChoosePane.java +++ b/designer_base/src/com/fr/design/gui/frpane/ImgChoosePane.java @@ -8,12 +8,19 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.style.background.image.ImageFileChooser; import com.fr.design.style.background.image.ImagePreviewPane; +import com.fr.design.utils.ImageUtils; import com.fr.general.Inter; +import com.fr.stable.CoreGraphHelper; -import javax.swing.*; +import javax.swing.BorderFactory; +import javax.swing.JFileChooser; +import javax.swing.JPanel; +import javax.swing.SwingConstants; +import javax.swing.SwingWorker; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; @@ -25,6 +32,7 @@ public class ImgChoosePane extends BasicPane { private UIButton clearButton; private UILabel imgSizeLabel; private ImageFileChooser imageFileChooser; + private SwingWorker imageWorker; public ImgChoosePane() { this.initComponents(); @@ -83,9 +91,22 @@ public class ImgChoosePane extends BasicPane { if (returnVal != JFileChooser.CANCEL_OPTION) { File selectedFile = imageFileChooser.getSelectedFile(); if (selectedFile != null && selectedFile.isFile()) { - Image image = BaseUtils.readImage(selectedFile.getPath()); - previewPane.setImage(image); - previewPane.repaint(); + previewPane.showLoading(); + if (imageWorker != null && !imageWorker.isDone()) { + imageWorker = null; + } + imageWorker = new SwingWorker() { + @Override + protected Void doInBackground() throws Exception { + Image image = imageFileChooser.isCompressSelected() ? ImageUtils.defaultImageCompress(selectedFile) : BaseUtils.readImage(selectedFile.getPath()); + CoreGraphHelper.waitForImage(image); + + previewPane.setImage(image); + previewPane.repaint(); + return null; + } + }; + imageWorker.execute(); } else { previewPane.setImage(null); } diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index f2e971bf74..d43f263192 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -2204,3 +2204,5 @@ FR-Designer_Paper=Paper FR-Designer_All_Pages=All pages FR-Designer_Current_Page=Current page FR-Designer_Print_Area_Tip=eg(1, 4-9, 6, 8) +FR-Designer_Image_Compress= +FR-Designer_Image_Loading= 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 7d298238f1..5429926c0a 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 @@ -2203,3 +2203,5 @@ FR-Designer_Paper=Paper FR-Designer_All_Pages=All pages FR-Designer_Current_Page=Current page FR-Designer_Print_Area_Tip=eg(1, 4-9, 6, 8) +FR-Designer_Image_Compress=Compress Image +FR-Designer_Image_Loading=Loading Image... 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 e4d3844724..5045456e8a 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 @@ -2201,3 +2201,5 @@ FR-Designer_Paper= FR-Designer_All_Pages= FR-Designer_Current_Page= FR-Designer_Print_Area_Tip= +FR-Designer_Image_Compress= +FR-Designer_Image_Loading= 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 af29fceb52..6471baa587 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 @@ -2202,3 +2202,5 @@ FR-Designer_Paper= FR-Designer_All_Pages= FR-Designer_Current_Page= FR-Designer_Print_Area_Tip= +FR-Designer_Image_Compress= +FR-Designer_Image_Loading= 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 00ef1a05e3..7282fe0393 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 @@ -2204,3 +2204,5 @@ FR-Designer_Paper=\u7EB8\u5F20 FR-Designer_All_Pages=\u6240\u6709\u9875 FR-Designer_Current_Page=\u5F53\u524D\u9875 FR-Designer_Print_Area_Tip=\u683C\u5F0F(1, 4-9, 6, 8) +FR-Designer_Image_Compress=\u56FE\u7247\u538B\u7F29 +FR-Designer_Image_Loading=\u6B63\u5728\u6253\u5F00\u56FE\u7247... 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 919a5a3961..ba218a5878 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 @@ -2203,3 +2203,5 @@ FR-Designer_Paper=\u7D19\u5F35 FR-Designer_All_Pages=\u6240\u6709\u9801 FR-Designer_Current_Page=\u7576\u524D\u9801 FR-Designer_Print_Area_Tip=\u683C\u5F0F(1, 4-9, 6, 8) +FR-Designer_Image_Compress=\u5716\u7247\u58D3\u7E2E +FR-Designer_Image_Loading=\u6B63\u5728\u6253\u958B\u5716\u7247\u2026 diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java index 22fa2c1e28..75b99eb1bd 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java @@ -3,23 +3,28 @@ package com.fr.design.mainframe.backgroundpane; import com.fr.base.BaseUtils; import com.fr.base.Style; import com.fr.base.background.ImageBackground; -import com.fr.design.constants.UIConstants; import com.fr.design.border.UIRoundedBorder; +import com.fr.design.constants.UIConstants; import com.fr.design.event.UIObserverListener; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; +import com.fr.design.style.background.image.ImageFileChooser; +import com.fr.design.utils.ImageUtils; import com.fr.general.Background; import com.fr.general.Inter; import com.fr.stable.Constants; import com.fr.stable.CoreGraphHelper; -import com.fr.design.style.background.image.ImageFileChooser; -import javax.swing.*; +import javax.swing.JFileChooser; +import javax.swing.JPanel; +import javax.swing.SwingWorker; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; @@ -36,6 +41,7 @@ public class ImageBackgroundQuickPane extends BackgroundQuickPane { private ImageFileChooser imageFileChooser; private UIButtonGroup imageLayoutPane; + private SwingWorker imageWorker; public ImageBackgroundQuickPane() { this(true); @@ -96,13 +102,24 @@ public class ImageBackgroundQuickPane extends BackgroundQuickPane { File selectedFile = imageFileChooser.getSelectedFile(); if (selectedFile != null && selectedFile.isFile()) { - Image image = BaseUtils.readImage(selectedFile.getPath()); - CoreGraphHelper.waitForImage(image); - - previewPane.setImage(image); - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(imageLayoutPane.getSelectedItem()); - previewPane.setImageStyle(imageStyle); - previewPane.repaint(); + previewPane.showLoading(); + if (imageWorker != null && !imageWorker.isDone()) { + imageWorker = null; + } + imageWorker = new SwingWorker() { + @Override + protected Void doInBackground() throws Exception { + Image image = imageFileChooser.isCompressSelected() ? ImageUtils.defaultImageCompress(selectedFile) : BaseUtils.readImage(selectedFile.getPath()); + CoreGraphHelper.waitForImage(image); + + previewPane.setImage(image); + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(imageLayoutPane.getSelectedItem()); + previewPane.setImageStyle(imageStyle); + previewPane.repaint(); + return null; + } + }; + imageWorker.execute(); } else { previewPane.setImage(null); } diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/ImagePreviewPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/ImagePreviewPane.java index 952f5839e0..b01890610d 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/ImagePreviewPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/ImagePreviewPane.java @@ -4,33 +4,32 @@ package com.fr.design.mainframe.backgroundpane; * Copyright(c) 2001-2010, FineReport Inc, All Rights Reserved. */ -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.FontMetrics; -import java.awt.Graphics; -import java.awt.Image; -import java.awt.Rectangle; -import java.util.ArrayList; -import java.util.List; +import com.fr.base.BaseUtils; +import com.fr.base.GraphHelper; +import com.fr.base.Style; +import com.fr.design.constants.UIConstants; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.iscrollbar.UIScrollBar; +import com.fr.general.Inter; +import com.fr.stable.Constants; +import com.fr.stable.CoreGraphHelper; import javax.swing.BorderFactory; import javax.swing.JComponent; - -import com.fr.design.constants.UIConstants; -import com.fr.design.gui.ilable.UILabel; import javax.swing.JPanel; import javax.swing.JViewport; import javax.swing.Scrollable; import javax.swing.SwingConstants; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; - -import com.fr.base.BaseUtils; -import com.fr.base.GraphHelper; -import com.fr.base.Style; -import com.fr.design.gui.iscrollbar.UIScrollBar; -import com.fr.stable.Constants; -import com.fr.stable.CoreGraphHelper; +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.FontMetrics; +import java.awt.Graphics; +import java.awt.Image; +import java.awt.Rectangle; +import java.util.ArrayList; +import java.util.List; /** * The pane use to preview image @@ -48,6 +47,7 @@ public class ImagePreviewPane extends JComponent implements Scrollable { private List changeListenerList = new ArrayList(); private UILabel sizeLabel; + private boolean isLoading = false; public ImagePreviewPane() { sizeLabel = new UILabel(); @@ -57,7 +57,10 @@ public class ImagePreviewPane extends JComponent implements Scrollable { this.add(new JPanel() { public void paintComponent(Graphics g) { super.paintComponent(g); - + if (isLoading) { + g.drawString(Inter.getLocText("FR-Designer_Image_Loading"), getWidth() / 2 - 25, getHeight() / 2); + return; + } // draw image. if (getImage() != null) { // carl:让imagePreviewPane能预览样式 @@ -107,6 +110,7 @@ public class ImagePreviewPane extends JComponent implements Scrollable { } sizeLabel.setText(null); } else { + isLoading = false; // wait for the size of image. CoreGraphHelper.waitForImage(image); @@ -123,6 +127,13 @@ public class ImagePreviewPane extends JComponent implements Scrollable { fireChangeListener(); this.revalidate(); } + public void showLoading() { + isLoading = true; + setImage(null); + fireChangeListener(); + validate(); + repaint(); + } /** * Paint component. diff --git a/designer_base/src/com/fr/design/style/background/image/ExpandFileChooser.java b/designer_base/src/com/fr/design/style/background/image/ExpandFileChooser.java new file mode 100644 index 0000000000..3dc73b49d9 --- /dev/null +++ b/designer_base/src/com/fr/design/style/background/image/ExpandFileChooser.java @@ -0,0 +1,191 @@ +package com.fr.design.style.background.image; + +import com.fr.base.BaseUtils; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.Inter; +import com.fr.stable.StringUtils; + +import javax.swing.JDialog; +import javax.swing.JFileChooser; +import javax.swing.JPanel; +import javax.swing.plaf.metal.MetalFileChooserUI; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Insets; +import java.awt.LayoutManager; + +/** + * 扩展的文件选择框(底部控制区域扩展一个复选框) + * Created by zack on 2018/3/8. + */ +public class ExpandFileChooser extends JFileChooser { + private JDialog dialog; + private UICheckBox compressCheckBox;//选择框底部的复选按钮 + private int retVal = ERROR_OPTION; + private boolean isCompressSelected = false; //复选的选中状态 + private UIButton approve; + private UIButton cancel; + private static final int DEFAULT_WIDTH = 520; + + public ExpandFileChooser() { + this(StringUtils.EMPTY); + } + + public ExpandFileChooser(String checkBoxText) { + JPanel previewContainerPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + MetalFileChooserUI chooserUI = (MetalFileChooserUI) getUI(); + dialog = new JDialog(); + + dialog.setSize(new Dimension(DEFAULT_WIDTH, 362)); + dialog.add(previewContainerPane); + dialog.setIconImage(BaseUtils.readImage("/com/fr/base/images/oem/logo.png")); + dialog.setTitle(chooserUI.getApproveButtonText(this)); + previewContainerPane.add(this, BorderLayout.CENTER); + + + JPanel bottomControlPanel = new JPanel(); + bottomControlPanel.setLayout(new ImageAreaLayout()); + bottomControlPanel.setPreferredSize(new Dimension(DEFAULT_WIDTH, 40)); + approve = new UIButton(chooserUI.getApproveButtonText(this)); + cancel = new UIButton(Inter.getLocText("FR-Designer_Button-Cancel")); + if (StringUtils.isNotEmpty(checkBoxText)) { + compressCheckBox = new UICheckBox(checkBoxText); + bottomControlPanel.add(compressCheckBox); + } + bottomControlPanel.add(approve); + approve.addActionListener(chooserUI.getApproveSelectionAction()); + cancel.addActionListener(chooserUI.getCancelSelectionAction()); + bottomControlPanel.add(cancel); + previewContainerPane.add(bottomControlPanel, BorderLayout.SOUTH); + GUICoreUtils.centerWindow(dialog); + } + + public boolean isCompressSelected() { + return isCompressSelected; + } + + + @Override + public int showDialog(Component parent, String approveButtonText) { + dialog.setModal(true); + dialog.setVisible(true); + return retVal; + } + + @Override + public void approveSelection() { + retVal = APPROVE_OPTION; + if (dialog != null) { + dialog.setVisible(false); + } + if (compressCheckBox != null) { + isCompressSelected = compressCheckBox.isSelected(); + } + fireActionPerformed(APPROVE_SELECTION); + } + + @Override + public void cancelSelection() { + retVal = CANCEL_OPTION; + if (dialog != null) { + dialog.setVisible(false); + } + if (compressCheckBox != null) { + compressCheckBox.setSelected(false); + } + isCompressSelected = false; + fireActionPerformed(CANCEL_SELECTION); + } + + @Override + public boolean getControlButtonsAreShown() { + return false;//隐藏默认的控制按钮(打开/取消) + } + + private class ImageAreaLayout implements LayoutManager { + private static final int TEN = 10; + private int hGap = 5; + private int topMargin = TEN; + private int leftMargin = TEN; + private int leftStart = 8; + + @Override + public void addLayoutComponent(String string, Component comp) { + } + + @Override + public void layoutContainer(Container container) { + Component[] children = container.getComponents(); + + if (children != null && children.length > 0) { + int numChildren = children.length; + Dimension[] sizes = new Dimension[numChildren]; + Insets insets = container.getInsets(); + int yLocation = insets.top + topMargin; + int maxWidth = 0; + + for (int counter = 0; counter < numChildren; counter++) { + sizes[counter] = children[counter].getPreferredSize(); + maxWidth = Math.max(maxWidth, sizes[counter].width); + } + int xLocation, xOffset; + if (container.getComponentOrientation().isLeftToRight()) { + xLocation = container.getSize().width - insets.left - maxWidth - leftMargin; + xOffset = hGap + maxWidth; + } else { + xLocation = insets.left; + xOffset = -(hGap + maxWidth); + } + //单独设置图片压缩按钮的位置 + children[0].setBounds(leftStart, yLocation, + maxWidth, sizes[0].height); + + for (int counter = numChildren - 1; counter >= 1; counter--) { + children[counter].setBounds(xLocation, yLocation, + maxWidth, sizes[counter].height); + xLocation -= xOffset; + } + } + } + + @Override + public Dimension minimumLayoutSize(Container c) { + if (c != null) { + Component[] children = c.getComponents(); + + if (children != null && children.length > 0) { + int numChildren = children.length; + int height = 0; + Insets cInsets = c.getInsets(); + int extraHeight = topMargin + cInsets.top + cInsets.bottom; + int extraWidth = cInsets.left + cInsets.right; + int maxWidth = 0; + + for (int counter = 0; counter < numChildren; counter++) { + Dimension aSize = children[counter].getPreferredSize(); + height = Math.max(height, aSize.height); + maxWidth = Math.max(maxWidth, aSize.width); + } + return new Dimension(extraWidth + numChildren * maxWidth + + (numChildren - 1) * hGap, + extraHeight + height); + } + } + return new Dimension(0, 0); + } + + @Override + public Dimension preferredLayoutSize(Container c) { + return minimumLayoutSize(c); + } + + @Override + public void removeLayoutComponent(Component c) { + } + } +} diff --git a/designer_base/src/com/fr/design/style/background/image/ImageFileChooser.java b/designer_base/src/com/fr/design/style/background/image/ImageFileChooser.java index e2fc8862a9..4d2f0a527f 100644 --- a/designer_base/src/com/fr/design/style/background/image/ImageFileChooser.java +++ b/designer_base/src/com/fr/design/style/background/image/ImageFileChooser.java @@ -3,25 +3,24 @@ */ package com.fr.design.style.background.image; +import com.fr.base.BaseUtils; +import com.fr.design.style.ChooseFileView; +import com.fr.general.Inter; + +import javax.swing.filechooser.FileFilter; import java.awt.Component; import java.io.File; import java.util.Enumeration; import java.util.Hashtable; -import javax.swing.JFileChooser; -import javax.swing.filechooser.FileFilter; - -import com.fr.base.BaseUtils; -import com.fr.general.Inter; -import com.fr.design.style.ChooseFileView; - /** * This class used to choose image files. */ -public class ImageFileChooser extends JFileChooser { +public class ImageFileChooser extends ExpandFileChooser { public ImageFileChooser() { + super(Inter.getLocText("FR-Designer_Image_Compress")); ExampleFileFilter bothFilter = new ExampleFileFilter( new String[]{"jpg", "gif", "png", "bmp"}, Inter.getLocText("Image-Image_Files")); @@ -48,7 +47,7 @@ public class ImageFileChooser extends JFileChooser { * A convenience implementation of FileFilter that filters out * all files except for those type extensions that it knows about. *

D:\finereport\develop\code\test\TestCase\WEB-INF\reportlets\TestCase\01903.cpt - + *

* Extensions are of the type ".foo", which is typically found on * Windows and Unix boxes, but not on Macinthosh. Case is ignored. *

diff --git a/designer_base/src/com/fr/design/style/background/image/ImagePreviewPane.java b/designer_base/src/com/fr/design/style/background/image/ImagePreviewPane.java index 862a01fa2b..74d3be6281 100644 --- a/designer_base/src/com/fr/design/style/background/image/ImagePreviewPane.java +++ b/designer_base/src/com/fr/design/style/background/image/ImagePreviewPane.java @@ -3,12 +3,12 @@ */ package com.fr.design.style.background.image; -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.Image; -import java.awt.Rectangle; -import java.util.ArrayList; -import java.util.List; +import com.fr.base.BaseUtils; +import com.fr.base.GraphHelper; +import com.fr.base.Style; +import com.fr.design.gui.iscrollbar.UIScrollBar; +import com.fr.general.Inter; +import com.fr.stable.CoreGraphHelper; import javax.swing.JComponent; import javax.swing.JViewport; @@ -16,12 +16,12 @@ import javax.swing.Scrollable; import javax.swing.SwingConstants; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; - -import com.fr.base.BaseUtils; -import com.fr.base.GraphHelper; -import com.fr.base.Style; -import com.fr.design.gui.iscrollbar.UIScrollBar; -import com.fr.stable.CoreGraphHelper; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Image; +import java.awt.Rectangle; +import java.util.ArrayList; +import java.util.List; /** * The pane use to preview image @@ -30,13 +30,14 @@ public class ImagePreviewPane extends JComponent implements Scrollable { private Image image = null; // carl:image style private Style imageStyle = null; - private int imageWidth = 0 ; - private int imageHeight = 0 ; + private int imageWidth = 0; + private int imageHeight = 0; + private boolean isLoading = false; private List changeListenerList = new ArrayList(); public ImagePreviewPane() { - this.setToolTipText("View Image"); + this.setToolTipText("View Image"); } /** @@ -46,6 +47,14 @@ public class ImagePreviewPane extends JComponent implements Scrollable { return this.image; } + public void showLoading() { + isLoading = true; + setImage(null); + fireChangeListener(); + validate(); + repaint(); + } + /** * Set image. * @@ -55,7 +64,7 @@ public class ImagePreviewPane extends JComponent implements Scrollable { this.image = image; //need to reset the size of JViewPort. if (this.image == null) { - if(this.getParent() instanceof JViewport) { + if (this.getParent() instanceof JViewport) { UIScrollBar tmpJScrollBar = new UIScrollBar(UIScrollBar.HORIZONTAL); Dimension newDimension = new Dimension( this.getSize().width - tmpJScrollBar.getPreferredSize().height, @@ -67,6 +76,7 @@ public class ImagePreviewPane extends JComponent implements Scrollable { } } else { //wait for the size of image. + isLoading = false; CoreGraphHelper.waitForImage(image); imageWidth = image.getWidth(null); @@ -83,20 +93,22 @@ public class ImagePreviewPane extends JComponent implements Scrollable { */ public void paintComponent(Graphics g) { super.paintComponent(g); - - //draw image. - if (this.getImage() != null) { - // carl:让imagePreviewPane能预览样式 - if (this.getImageStyle() == null) { - g.drawImage(this.getImage(), 0, 0, this); - } else { - GraphHelper.paintImage( - g, this.getWidth(), this.getHeight(), this.getImage(), - this.getImageStyle().getImageLayout(), - BaseUtils.getAlignment4Horizontal(this.getImageStyle()), - this.getImageStyle().getVerticalAlignment(), -1, -1 - ); - } + if (isLoading) { + g.drawString(Inter.getLocText("FR-Designer_Image_Loading"), getWidth() / 2 - 25, getHeight() / 2); + return; + } + if (this.getImage() != null) { //draw image. + // carl:让imagePreviewPane能预览样式 + if (this.getImageStyle() == null) { + g.drawImage(this.getImage(), 0, 0, this); + } else { + GraphHelper.paintImage( + g, this.getWidth(), this.getHeight(), this.getImage(), + this.getImageStyle().getImageLayout(), + BaseUtils.getAlignment4Horizontal(this.getImageStyle()), + this.getImageStyle().getVerticalAlignment(), -1, -1 + ); + } } } @@ -123,7 +135,7 @@ public class ImagePreviewPane extends JComponent implements Scrollable { ChangeEvent evt = new ChangeEvent(this); for (int i = 0; i < changeListenerList.size(); i++) { - changeListenerList.get(i).stateChanged(evt); + changeListenerList.get(i).stateChanged(evt); } } } @@ -136,7 +148,7 @@ public class ImagePreviewPane extends JComponent implements Scrollable { * the preferred size of the component. * * @return the preferredSize of a JViewport - * whose view is this Scrollable + * whose view is this Scrollable */ public Dimension getPreferredScrollableViewportSize() { return getPreferredSize(); @@ -218,7 +230,7 @@ public class ImagePreviewPane extends JComponent implements Scrollable { * will use this method each time they are validated. * * @return true if a viewport should force the Scrollables - * width to match its own + * width to match its own */ public boolean getScrollableTracksViewportWidth() { if (getParent() instanceof JViewport) { @@ -238,7 +250,7 @@ public class ImagePreviewPane extends JComponent implements Scrollable { * will use this method each time they are validated. * * @return true if a viewport should force the Scrollables height - * to match its own + * to match its own */ public boolean getScrollableTracksViewportHeight() { if (getParent() instanceof JViewport) { @@ -247,11 +259,11 @@ public class ImagePreviewPane extends JComponent implements Scrollable { return false; } - public void setImageStyle(Style imageStyle) { - this.imageStyle = imageStyle; - } + public void setImageStyle(Style imageStyle) { + this.imageStyle = imageStyle; + } - public Style getImageStyle() { - return imageStyle; - } + public Style getImageStyle() { + return imageStyle; + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/style/background/image/ImageSelectPane.java b/designer_base/src/com/fr/design/style/background/image/ImageSelectPane.java index 70cb442659..f94a0098bf 100644 --- a/designer_base/src/com/fr/design/style/background/image/ImageSelectPane.java +++ b/designer_base/src/com/fr/design/style/background/image/ImageSelectPane.java @@ -1,28 +1,28 @@ package com.fr.design.style.background.image; -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.Image; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.File; - -import javax.swing.JFileChooser; -import com.fr.design.gui.ilable.UILabel; -import javax.swing.JPanel; -import javax.swing.SwingConstants; - import com.fr.base.BaseUtils; import com.fr.base.background.ImageBackground; 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.FRGUIPaneFactory; +import com.fr.design.style.AlphaPane; +import com.fr.design.style.background.BackgroundPane4BoxChange; +import com.fr.design.utils.ImageUtils; import com.fr.general.Background; import com.fr.general.Inter; import com.fr.stable.Constants; import com.fr.stable.CoreGraphHelper; -import com.fr.design.style.AlphaPane; -import com.fr.design.style.background.BackgroundPane4BoxChange; + +import javax.swing.JFileChooser; +import javax.swing.JPanel; +import javax.swing.SwingConstants; +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.Image; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; /** @@ -101,7 +101,7 @@ public class ImageSelectPane extends BackgroundPane4BoxChange { if (returnVal != JFileChooser.CANCEL_OPTION) { File selectedFile = imageFileChooser.getSelectedFile(); if (selectedFile != null && selectedFile.isFile()) { - Image image = BaseUtils.readImage(selectedFile.getPath()); + Image image = imageFileChooser.isCompressSelected() ? ImageUtils.defaultImageCompress(selectedFile) : BaseUtils.readImage(selectedFile.getPath()); CoreGraphHelper.waitForImage(image); selectImage = image; } diff --git a/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java b/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java index ced818426c..962ef75a64 100644 --- a/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java +++ b/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java @@ -10,15 +10,23 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.style.background.BackgroundDetailPane; import com.fr.design.style.background.image.ImageFileChooser; import com.fr.design.style.background.image.ImagePreviewPane; +import com.fr.design.utils.ImageUtils; import com.fr.general.Background; import com.fr.general.Inter; import com.fr.stable.Constants; import com.fr.stable.CoreGraphHelper; -import javax.swing.*; +import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; +import javax.swing.JFileChooser; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.SwingWorker; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.GridLayout; +import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; @@ -38,6 +46,7 @@ public class ImageBackgroundPane extends BackgroundDetailPane { protected UIRadioButton tiledRadioButton = null; private UIRadioButton extendRadioButton = null; private UIRadioButton adjustRadioButton = null; + private SwingWorker imageWorker; public ImageBackgroundPane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); @@ -120,12 +129,23 @@ public class ImageBackgroundPane extends BackgroundDetailPane { File selectedFile = imageFileChooser.getSelectedFile(); if (selectedFile != null && selectedFile.isFile()) { - Image image = BaseUtils.readImage(selectedFile.getPath()); - CoreGraphHelper.waitForImage(image); - - previewPane.setImage(image); - imageStyleRepaint(); - previewPane.repaint(); + previewPane.showLoading(); + if (imageWorker != null && !imageWorker.isDone()) { + imageWorker = null; + } + imageWorker = new SwingWorker() { + @Override + protected Void doInBackground() throws Exception { + Image image = imageFileChooser.isCompressSelected() ? ImageUtils.defaultImageCompress(selectedFile) : BaseUtils.readImage(selectedFile.getPath()); + CoreGraphHelper.waitForImage(image); + + previewPane.setImage(image); + imageStyleRepaint(); + previewPane.repaint(); + return null; + } + }; + imageWorker.execute(); } else { previewPane.setImage(null); } diff --git a/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane4Browser.java b/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane4Browser.java index 431ad2c0d1..537d03e575 100644 --- a/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane4Browser.java +++ b/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane4Browser.java @@ -1,10 +1,5 @@ package com.fr.design.style.background.impl; -import com.fr.design.gui.ibutton.UIRadioButton; -import com.fr.stable.ArrayUtils; - -import javax.swing.*; - /** * Created by richie on 16/5/18. */ @@ -15,12 +10,4 @@ public class ImageBackgroundPane4Browser extends ImageBackgroundPane { super(); } - @Override - protected UIRadioButton[] imageLayoutButtons() { - - return (UIRadioButton[]) ArrayUtils.addAll(super.imageLayoutButtons(), new UIRadioButton[] { - defaultRadioButton, - tiledRadioButton, - }); - } } diff --git a/designer_base/src/com/fr/design/utils/ImageUtils.java b/designer_base/src/com/fr/design/utils/ImageUtils.java new file mode 100644 index 0000000000..3457da452b --- /dev/null +++ b/designer_base/src/com/fr/design/utils/ImageUtils.java @@ -0,0 +1,168 @@ +package com.fr.design.utils; + +import com.fr.base.BaseUtils; +import com.fr.general.ComparatorUtils; +import com.fr.general.FRLogger; +import com.fr.stable.StringUtils; + +import javax.imageio.IIOImage; +import javax.imageio.ImageIO; +import javax.imageio.ImageReader; +import javax.imageio.ImageWriteParam; +import javax.imageio.ImageWriter; +import javax.imageio.stream.ImageInputStream; +import javax.imageio.stream.ImageOutputStream; +import java.awt.Graphics; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.util.Iterator; + +/** + * Created by zack on 2018/3/8. + */ +public class ImageUtils { + + public static BufferedImage defaultImageCompress(File imageFile) { + try { + return imageCompress(imageFile, 0.75f);//默认75%质量 + } catch (IOException e) { + FRLogger.getLogger().info("image compress failed!"); + + } + return BaseUtils.readImage(imageFile.getPath()); + } + + public static BufferedImage imageCompress(File imageFile, float quality) throws IOException { + if (imageFile == null) { + return null; + } + BufferedImage result = BaseUtils.readImage(imageFile.getPath()); + if (canbeCompressedToJPEG(imageFile)) { + return jpegCompress(result, quality); + } + return result; + } + + public static boolean canbeCompressedToJPEG(File imageFile) { + if (ComparatorUtils.equals(getImageType(imageFile), "jpeg")) { + return true; + } + if (ComparatorUtils.equals(getImageType(imageFile), "png")) { + return !isAlphaAreaOverload(imageFile);//少量透明度系数的png直接压缩jpg + } + return false; + } + + /** + * JPEG格式图片压缩 + * + * @param image 压缩源图片 + * @param quality 压缩质量,在0-1之间, + * @return 返回的字节数组 + */ + public static BufferedImage jpegCompress(BufferedImage image, float quality) throws IOException { + if (image == null) { + return null; + } + // 得到指定Format图片的writer + Iterator iter = ImageIO + .getImageWritersByFormatName("JPEG");// 得到迭代器 + ImageWriter writer = iter.next(); + + // 得到指定writer的输出参数设置(ImageWriteParam ) + ImageWriteParam iwp = writer.getDefaultWriteParam(); + iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); // 设置可否压缩 + iwp.setCompressionQuality(quality); // 设置压缩质量参数 + iwp.setProgressiveMode(ImageWriteParam.MODE_DISABLED); + + // 开始打包图片,写入byte[] + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + ImageOutputStream ios = null; + ByteArrayInputStream in = null; + try { + image = copy(image, BufferedImage.TYPE_INT_RGB); + ios = ImageIO.createImageOutputStream(byteArrayOutputStream); + writer.setOutput(ios); + writer.write(null, new IIOImage(image, null, null), iwp); + in = new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); + if (ios == null || in == null) { + throw new IOException("The image file cannot be compressed"); + } + return ImageIO.read(in); + } catch (IOException e) { + FRLogger.getLogger().error(e.getMessage(), e); + } finally { + writer.dispose(); + + ios.close(); + byteArrayOutputStream.close(); + in.close(); + } + + return null; + } + + /** + * 判断图片中是否包含多于5%的透明区域,这个5%随便定的 + * + * @param imageFile 目标图片 + * @return 含透明度像素占比 + */ + public static boolean isAlphaAreaOverload(File imageFile) { + if (imageFile == null || !imageFile.isFile()) { + return false; + } + BufferedImage bufferedImage = BaseUtils.readImage(imageFile.getPath()); + int width = bufferedImage.getWidth(); + int height = bufferedImage.getHeight(); + long alphaCount = 0; + for (int i = 0; i < width; i++) { + for (int j = 0; j < height; j++) { + int rgb = bufferedImage.getRGB(i, j); + int a = (0xff & (rgb >> 24)); + if (a != 0xff) { + alphaCount++; + } + } + } + return alphaCount / (double) (width * height) > 0.05; + } + + /** + * 获取图片类型 + * + * @param imageFile 图片文件 + * @return 图片类型(JPEG, PNG, GIF) + */ + public static String getImageType(File imageFile) { + try { + ImageInputStream iis = ImageIO.createImageInputStream(imageFile); + Iterator iter = ImageIO.getImageReaders(iis); + if (!iter.hasNext()) { + return StringUtils.EMPTY; + } + ImageReader reader = iter.next(); + iis.close(); + return reader.getFormatName(); + } catch (IOException ignore) { + } + return StringUtils.EMPTY; + } + + private static BufferedImage copy(BufferedImage img, int imageType) { + int width = img.getWidth(); + int height = img.getHeight(); + + BufferedImage newImage = new BufferedImage(width, height, imageType); + Graphics g = newImage.createGraphics(); + + g.drawImage(img, 0, 0, null); + + g.dispose(); + + return newImage; + } +} diff --git a/designer_chart/src/com/fr/design/module/ChartEmptyDataStylePane.java b/designer_chart/src/com/fr/design/module/ChartEmptyDataStylePane.java index 42de5bacdf..6b4e2eafa3 100644 --- a/designer_chart/src/com/fr/design/module/ChartEmptyDataStylePane.java +++ b/designer_chart/src/com/fr/design/module/ChartEmptyDataStylePane.java @@ -13,6 +13,7 @@ import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.design.style.background.image.ImageFileChooser; import com.fr.design.style.background.image.ImagePreviewPane; +import com.fr.design.utils.ImageUtils; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.FRLogger; import com.fr.general.GeneralContext; @@ -21,20 +22,21 @@ import com.fr.general.Inter; import com.fr.stable.CoreGraphHelper; import com.fr.stable.StringUtils; -import java.awt.BorderLayout; -import java.awt.FlowLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.File; import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; import javax.swing.JFileChooser; import javax.swing.JPanel; import javax.swing.JScrollPane; -import javax.swing.ButtonGroup; -import java.awt.Image; -import java.awt.Dimension; +import javax.swing.SwingWorker; +import java.awt.BorderLayout; import java.awt.Component; +import java.awt.Dimension; +import java.awt.FlowLayout; import java.awt.GridLayout; +import java.awt.Image; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; /** * Created by mengao on 2017/11/23. @@ -57,11 +59,12 @@ public class ChartEmptyDataStylePane extends AbstractAttrNoScrollPane { private ImageFileChooser imageFileChooser; private Image emptyDataImage = DEFAULT_EMPTY_DATA_IMAGE; + private SwingWorker imageWorker; static { DEFAULT_EMPTY_DATA_IMAGE = GeneralContext.isChineseEnv() ? IOUtils.readImage("com/fr/design/images/zh_emptydata.png") - : IOUtils.readImage("com/fr/design/images/us_emptydata.png"); + : IOUtils.readImage("com/fr/design/images/us_emptydata.png"); } @Override @@ -164,10 +167,20 @@ public class ChartEmptyDataStylePane extends AbstractAttrNoScrollPane { File selectedFile = imageFileChooser.getSelectedFile(); if (selectedFile != null && selectedFile.isFile()) { - emptyDataImage = BaseUtils.readImage(selectedFile.getPath()); - CoreGraphHelper.waitForImage(emptyDataImage); - repaintPreviewPane(); - + previewPane.showLoading(); + if (imageWorker != null && !imageWorker.isDone()) { + imageWorker = null; + } + imageWorker = new SwingWorker() { + @Override + protected Void doInBackground() throws Exception { + emptyDataImage = imageFileChooser.isCompressSelected() ? ImageUtils.defaultImageCompress(selectedFile) : BaseUtils.readImage(selectedFile.getPath()); + CoreGraphHelper.waitForImage(emptyDataImage); + repaintPreviewPane(); + return null; + } + }; + imageWorker.execute(); } else { previewPane.setImage(null); } From a0aee581d97488b038f5411f86e8511ae54784c4 Mon Sep 17 00:00:00 2001 From: zack Date: Fri, 9 Mar 2018 16:26:05 +0800 Subject: [PATCH 24/79] rt --- .../fr/design/mainframe/backgroundpane/ImagePreviewPane.java | 2 -- .../com/fr/design/style/background/image/ImagePreviewPane.java | 2 -- 2 files changed, 4 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/ImagePreviewPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/ImagePreviewPane.java index b01890610d..b80cf5306e 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/ImagePreviewPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/ImagePreviewPane.java @@ -130,8 +130,6 @@ public class ImagePreviewPane extends JComponent implements Scrollable { public void showLoading() { isLoading = true; setImage(null); - fireChangeListener(); - validate(); repaint(); } diff --git a/designer_base/src/com/fr/design/style/background/image/ImagePreviewPane.java b/designer_base/src/com/fr/design/style/background/image/ImagePreviewPane.java index 74d3be6281..75e8550e0f 100644 --- a/designer_base/src/com/fr/design/style/background/image/ImagePreviewPane.java +++ b/designer_base/src/com/fr/design/style/background/image/ImagePreviewPane.java @@ -50,8 +50,6 @@ public class ImagePreviewPane extends JComponent implements Scrollable { public void showLoading() { isLoading = true; setImage(null); - fireChangeListener(); - validate(); repaint(); } From 5d173734740517ec7fe1000b5b301a7b651c774c Mon Sep 17 00:00:00 2001 From: zack Date: Sat, 10 Mar 2018 17:41:18 +0800 Subject: [PATCH 25/79] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B4=A8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/insert/flot/ImageFloatAction.java | 11 +- .../com/fr/design/headerfooter/ImagePane.java | 43 +- .../com/fr/design/report/SelectImagePane.java | 45 +- .../fr/design/gui/frpane/ImgChoosePane.java | 143 ------ .../design/gui/frpane/ImgChooseWrapper.java | 104 ++++ .../ImageBackgroundQuickPane.java | 41 +- .../backgroundpane/ImagePreviewPane.java | 467 +++++++++--------- .../background/image/ImagePreviewPane.java | 2 +- .../background/image/ImagePreviewer.java | 33 ++ .../background/image/ImageSelectPane.java | 12 +- .../background/impl/ImageBackgroundPane.java | 41 +- .../impl/ImageButtonBackgroundPane.java | 29 +- .../src/com/fr/design/utils/ImageUtils.java | 20 +- 13 files changed, 427 insertions(+), 564 deletions(-) delete mode 100644 designer_base/src/com/fr/design/gui/frpane/ImgChoosePane.java create mode 100644 designer_base/src/com/fr/design/gui/frpane/ImgChooseWrapper.java create mode 100644 designer_base/src/com/fr/design/style/background/image/ImagePreviewer.java diff --git a/designer/src/com/fr/design/actions/insert/flot/ImageFloatAction.java b/designer/src/com/fr/design/actions/insert/flot/ImageFloatAction.java index 9861499bf9..e4005439be 100644 --- a/designer/src/com/fr/design/actions/insert/flot/ImageFloatAction.java +++ b/designer/src/com/fr/design/actions/insert/flot/ImageFloatAction.java @@ -5,7 +5,6 @@ package com.fr.design.actions.insert.flot; import com.fr.base.BaseUtils; import com.fr.base.DynamicUnitList; -import com.fr.base.ScreenResolution; import com.fr.design.actions.ElementCaseAction; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; @@ -24,9 +23,8 @@ import com.fr.report.elementcase.TemplateElementCase; import com.fr.stable.CoreGraphHelper; import com.fr.stable.unit.FU; -import javax.swing.*; -import java.awt.*; -import java.io.File; +import javax.swing.KeyStroke; +import java.awt.Image; /** * Insert image. @@ -83,10 +81,9 @@ public class ImageFloatAction extends ElementCaseAction { @Override public void doOk() { - File selectedFile = selectImagePane.getSelectedImage(); + Image image = selectImagePane.getSelectedImage(); - if (selectedFile != null && selectedFile.isFile()) { - Image image = BaseUtils.readImage(selectedFile.getPath()); + if (image != null ) { CellImage cellImage = selectImagePane.update(); CoreGraphHelper.waitForImage(image); diff --git a/designer/src/com/fr/design/headerfooter/ImagePane.java b/designer/src/com/fr/design/headerfooter/ImagePane.java index 263c0c1ca1..950ccc9fef 100644 --- a/designer/src/com/fr/design/headerfooter/ImagePane.java +++ b/designer/src/com/fr/design/headerfooter/ImagePane.java @@ -3,18 +3,15 @@ */ package com.fr.design.headerfooter; -import com.fr.base.BaseUtils; import com.fr.design.dialog.BasicPane; +import com.fr.design.gui.frpane.ImgChooseWrapper; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.style.background.image.ImageFileChooser; import com.fr.design.style.background.image.ImagePreviewPane; -import com.fr.design.utils.ImageUtils; import com.fr.general.Inter; -import com.fr.stable.CoreGraphHelper; import javax.swing.BorderFactory; -import javax.swing.JFileChooser; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.SwingWorker; @@ -22,7 +19,6 @@ import java.awt.BorderLayout; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.io.File; /** * Image Pane. @@ -69,17 +65,17 @@ public class ImagePane extends BasicPane { imageFileChooser = new ImageFileChooser(); imageFileChooser.setMultiSelectionEnabled(false); } - + @Override protected String title4PopupWindow() { - return "image"; + return "image"; } public void populate(Image image) { - if(image == null) { - return; - } - + if(image == null) { + return; + } + this.imagePreviewPane.setImage(image); } @@ -93,30 +89,7 @@ public class ImagePane extends BasicPane { ActionListener selectPictureActionListener = new ActionListener() { public void actionPerformed(ActionEvent evt) { int returnVal = imageFileChooser.showOpenDialog(ImagePane.this); - if (returnVal != JFileChooser.CANCEL_OPTION) { - File selectedFile = imageFileChooser.getSelectedFile(); - - if (selectedFile != null && selectedFile.isFile()) { - imagePreviewPane.showLoading(); - if (imageWorker != null && !imageWorker.isDone()) { - imageWorker = null; - } - imageWorker = new SwingWorker() { - @Override - protected Void doInBackground() throws Exception { - Image image = imageFileChooser.isCompressSelected() ? ImageUtils.defaultImageCompress(selectedFile) : BaseUtils.readImage(selectedFile.getPath()); - CoreGraphHelper.waitForImage(image); - - imagePreviewPane.setImage(image); - return null; - } - }; - imageWorker.execute(); - } else { - imagePreviewPane.setImage(null); - } - imagePreviewPane.repaint(); - } + ImgChooseWrapper.getInstance(imagePreviewPane, imageFileChooser, null).dealWithImageFile(returnVal); } }; } \ No newline at end of file diff --git a/designer/src/com/fr/design/report/SelectImagePane.java b/designer/src/com/fr/design/report/SelectImagePane.java index ff81333bdc..de2d31955b 100644 --- a/designer/src/com/fr/design/report/SelectImagePane.java +++ b/designer/src/com/fr/design/report/SelectImagePane.java @@ -1,9 +1,8 @@ package com.fr.design.report; -import com.fr.base.BaseUtils; import com.fr.base.Style; -import com.fr.design.utils.ImageUtils; import com.fr.design.dialog.BasicPane; +import com.fr.design.gui.frpane.ImgChooseWrapper; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.layout.FRGUIPaneFactory; @@ -14,11 +13,9 @@ import com.fr.general.Inter; import com.fr.report.cell.Elem; import com.fr.report.cell.cellattr.CellImage; import com.fr.stable.Constants; -import com.fr.stable.CoreGraphHelper; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; -import javax.swing.JFileChooser; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.SwingWorker; @@ -27,7 +24,6 @@ import java.awt.GridLayout; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.io.File; /** * 这个类主要用于插入图片时的设置 @@ -42,9 +38,7 @@ public class SelectImagePane extends BasicPane { private UIRadioButton adjustRadioButton = null; private Style imageStyle = null; - private Image previewImage = null; - private File imageFile; private SwingWorker imageWorker; public SelectImagePane() { @@ -111,38 +105,11 @@ public class SelectImagePane extends BasicPane { * Select picture. */ ActionListener selectPictureActionListener = new ActionListener() { + @Override public void actionPerformed(ActionEvent evt) { int returnVal = imageFileChooser .showOpenDialog(SelectImagePane.this); - if (returnVal != JFileChooser.CANCEL_OPTION) { - File selectedFile = imageFileChooser.getSelectedFile(); - - if (selectedFile != null && selectedFile.isFile()) { - previewPane.showLoading(); - if (imageWorker != null && !imageWorker.isDone()) { - imageWorker = null; - } - imageWorker = new SwingWorker() { - @Override - protected Void doInBackground() throws Exception { - Image image = imageFileChooser.isCompressSelected() ? ImageUtils.defaultImageCompress(selectedFile) : BaseUtils.readImage(selectedFile.getPath()); - CoreGraphHelper.waitForImage(image); - - imageFile = selectedFile; - setImageStyle(); - previewPane.setImage(image); - previewPane.setImageStyle(imageStyle); - previewImage = image; - previewPane.repaint(); - return null; - } - }; - imageWorker.execute(); - } else { - previewPane.setImage(null); - } - previewPane.repaint(); - } + ImgChooseWrapper.getInstance(previewPane, imageFileChooser, imageStyle).dealWithImageFile(returnVal); } }; @@ -166,6 +133,7 @@ public class SelectImagePane extends BasicPane { ActionListener layoutActionListener = new ActionListener() { + @Override public void actionPerformed(ActionEvent evt) { setImageStyle(); changeImageStyle(); @@ -184,7 +152,6 @@ public class SelectImagePane extends BasicPane { if (value != null && value instanceof Image) { Image image = (Image) value; previewPane.setImage(image); - this.previewImage = image; } style = cell.getStyle(); @@ -211,7 +178,7 @@ public class SelectImagePane extends BasicPane { return cellImage; } - public File getSelectedImage() { - return imageFile; + public Image getSelectedImage() { + return previewPane.getImage(); } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/gui/frpane/ImgChoosePane.java b/designer_base/src/com/fr/design/gui/frpane/ImgChoosePane.java deleted file mode 100644 index ec50bcff1b..0000000000 --- a/designer_base/src/com/fr/design/gui/frpane/ImgChoosePane.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.fr.design.gui.frpane; - -import com.fr.base.BaseUtils; -import com.fr.base.background.ImageBackground; -import com.fr.design.dialog.BasicPane; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.style.background.image.ImageFileChooser; -import com.fr.design.style.background.image.ImagePreviewPane; -import com.fr.design.utils.ImageUtils; -import com.fr.general.Inter; -import com.fr.stable.CoreGraphHelper; - -import javax.swing.BorderFactory; -import javax.swing.JFileChooser; -import javax.swing.JPanel; -import javax.swing.SwingConstants; -import javax.swing.SwingWorker; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import java.awt.BorderLayout; -import java.awt.Image; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.File; - -public class ImgChoosePane extends BasicPane { - - private ImagePreviewPane previewPane; - private UIButton chooseButton; - private UIButton clearButton; - private UILabel imgSizeLabel; - private ImageFileChooser imageFileChooser; - private SwingWorker imageWorker; - - public ImgChoosePane() { - this.initComponents(); - } - - protected void initComponents() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - - JPanel previewContainner = new JPanel(); - previewContainner.setBorder(BorderFactory.createTitledBorder(Inter.getLocText("Preview"))); - - previewPane = new ImagePreviewPane(); - previewContainner.add(previewPane); - previewPane.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent evt) { - Image image = ((ImagePreviewPane) evt.getSource()).getImage(); - - if (image == null) { - imgSizeLabel.setText(""); - } else { -// imgSizeLabel.setText(Inter.getLocText("Size") + ": " + image.getWidth(null) + "px" -// + image.getHeight(null) + Inter.getLocText("px")); - imgSizeLabel.setText(Inter.getLocText(new String[]{"Size", "px", "px"}, - new String[]{": " + image.getWidth(null), image.getHeight(null) + ""})); - } - } - }); - - this.add(previewContainner, BorderLayout.CENTER); - - JPanel choosePane = new JPanel(new BorderLayout(0, 10)); - choosePane.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); - JPanel choosePane1 = new JPanel(new BorderLayout(0, 10)); - - initButton(); - choosePane.add(chooseButton, BorderLayout.NORTH); - - choosePane1.add(clearButton,BorderLayout.NORTH); - choosePane.add(choosePane1,BorderLayout.CENTER); - - imgSizeLabel = new UILabel(); - imgSizeLabel.setHorizontalAlignment(SwingConstants.CENTER); - choosePane1.add(imgSizeLabel,BorderLayout.CENTER); - this.add(choosePane,BorderLayout.EAST); - - imageFileChooser = new ImageFileChooser(); - } - - private void initButton() { - chooseButton = new UIButton(Inter.getLocText("Image-Select_Picture")); - chooseButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - - int returnVal = imageFileChooser.showOpenDialog(ImgChoosePane.this); - if (returnVal != JFileChooser.CANCEL_OPTION) { - File selectedFile = imageFileChooser.getSelectedFile(); - if (selectedFile != null && selectedFile.isFile()) { - previewPane.showLoading(); - if (imageWorker != null && !imageWorker.isDone()) { - imageWorker = null; - } - imageWorker = new SwingWorker() { - @Override - protected Void doInBackground() throws Exception { - Image image = imageFileChooser.isCompressSelected() ? ImageUtils.defaultImageCompress(selectedFile) : BaseUtils.readImage(selectedFile.getPath()); - CoreGraphHelper.waitForImage(image); - - previewPane.setImage(image); - previewPane.repaint(); - return null; - } - }; - imageWorker.execute(); - } else { - previewPane.setImage(null); - } - } - } - }); - - clearButton = new UIButton(Inter.getLocText("Clear")); - clearButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - previewPane.setImage(null); - previewPane.repaint(); - } - }); - } - - public void populate(ImageBackground background) { - if(background != null && background.getImage() != null) { - previewPane.setImage(background.getImage()); - } - } - - public ImageBackground update() { - if(previewPane.getImage() == null) { - return null; - } - return new ImageBackground(previewPane.getImage()); - } - - @Override - protected String title4PopupWindow() { - return Inter.getLocText("Image"); - } -} \ No newline at end of file diff --git a/designer_base/src/com/fr/design/gui/frpane/ImgChooseWrapper.java b/designer_base/src/com/fr/design/gui/frpane/ImgChooseWrapper.java new file mode 100644 index 0000000000..040d2126b9 --- /dev/null +++ b/designer_base/src/com/fr/design/gui/frpane/ImgChooseWrapper.java @@ -0,0 +1,104 @@ +package com.fr.design.gui.frpane; + +import com.fr.base.BaseUtils; +import com.fr.base.Style; +import com.fr.design.style.background.image.ImageFileChooser; +import com.fr.design.style.background.image.ImagePreviewer; +import com.fr.design.utils.ImageUtils; +import com.fr.stable.CoreGraphHelper; + +import javax.swing.JFileChooser; +import javax.swing.SwingWorker; +import java.awt.Image; +import java.io.File; + +/** + * 图片选择框包装类 + * Created by zack on 2018/3/9. + */ +public class ImgChooseWrapper { + private ImagePreviewer previewPane = null; + + private ImageFileChooser imageFileChooser = null; + + private Style imageStyle = null; + + private SwingWorker imageWorker; + + public static ImgChooseWrapper getInstance(ImagePreviewer previewPane, ImageFileChooser imageFileChooser, Style imageStyle) { + return new ImgChooseWrapper(previewPane, imageFileChooser, imageStyle); + } + + private ImgChooseWrapper(ImagePreviewer previewPane, ImageFileChooser imageFileChooser, Style imageStyle) { + this.previewPane = previewPane; + this.imageFileChooser = imageFileChooser; + this.imageStyle = imageStyle; + } + + + public void setPreviewPane(ImagePreviewer previewPane) { + this.previewPane = previewPane; + } + + public ImageFileChooser getImageFileChooser() { + return imageFileChooser; + } + + public void setImageFileChooser(ImageFileChooser imageFileChooser) { + this.imageFileChooser = imageFileChooser; + } + + public Style getImageStyle() { + return imageStyle; + } + + public void setImageStyle(Style imageStyle) { + this.imageStyle = imageStyle; + } + + public SwingWorker getImageWorker() { + return imageWorker; + } + + public void setImageWorker(SwingWorker imageWorker) { + this.imageWorker = imageWorker; + } + + public void dealWithImageFile(int returnVal) { + if (returnVal != JFileChooser.CANCEL_OPTION) { + File selectedFile = imageFileChooser.getSelectedFile(); + + if (selectedFile != null && selectedFile.isFile()) { + if (previewPane != null) { + previewPane.showLoading(); + } + if (imageWorker != null && !imageWorker.isDone()) { + imageWorker = null; + } + imageWorker = new SwingWorker() { + @Override + protected Void doInBackground() throws Exception { + Image image = imageFileChooser.isCompressSelected() ? ImageUtils.defaultImageCompress(selectedFile) : BaseUtils.readImage(selectedFile.getPath()); + CoreGraphHelper.waitForImage(image); + + if (previewPane != null) { + previewPane.setImageStyle(imageStyle); + previewPane.setImage(image); + previewPane.repaint(); + } + return null; + } + }; + imageWorker.execute(); + } else { + if (previewPane != null) { + previewPane.setImage(null); + } + + } + if (previewPane != null) { + previewPane.repaint(); + } + } + } +} diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java index 75b99eb1bd..ed623f501d 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java @@ -1,33 +1,28 @@ package com.fr.design.mainframe.backgroundpane; -import com.fr.base.BaseUtils; import com.fr.base.Style; import com.fr.base.background.ImageBackground; import com.fr.design.border.UIRoundedBorder; import com.fr.design.constants.UIConstants; import com.fr.design.event.UIObserverListener; +import com.fr.design.gui.frpane.ImgChooseWrapper; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.style.background.image.ImageFileChooser; -import com.fr.design.utils.ImageUtils; import com.fr.general.Background; import com.fr.general.Inter; import com.fr.stable.Constants; -import com.fr.stable.CoreGraphHelper; -import javax.swing.JFileChooser; import javax.swing.JPanel; import javax.swing.SwingWorker; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.BorderLayout; import java.awt.Dimension; -import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.io.File; /** * @author zhou @@ -98,37 +93,15 @@ public class ImageBackgroundQuickPane extends BackgroundQuickPane { imageFileChooser.setMultiSelectionEnabled(false); } int returnVal = imageFileChooser.showOpenDialog(DesignerContext.getDesignerFrame()); - if (returnVal != JFileChooser.CANCEL_OPTION) { - File selectedFile = imageFileChooser.getSelectedFile(); - - if (selectedFile != null && selectedFile.isFile()) { - previewPane.showLoading(); - if (imageWorker != null && !imageWorker.isDone()) { - imageWorker = null; - } - imageWorker = new SwingWorker() { - @Override - protected Void doInBackground() throws Exception { - Image image = imageFileChooser.isCompressSelected() ? ImageUtils.defaultImageCompress(selectedFile) : BaseUtils.readImage(selectedFile.getPath()); - CoreGraphHelper.waitForImage(image); - - previewPane.setImage(image); - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(imageLayoutPane.getSelectedItem()); - previewPane.setImageStyle(imageStyle); - previewPane.repaint(); - return null; - } - }; - imageWorker.execute(); - } else { - previewPane.setImage(null); - } - fireChagneListener(); - } - + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(imageLayoutPane.getSelectedItem()); + ImgChooseWrapper.getInstance(previewPane, imageFileChooser, imageStyle).dealWithImageFile(returnVal); + fireChagneListener(); } }; + + + public void populateBean(Background background) { ImageBackground imageBackground = (ImageBackground) background; diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/ImagePreviewPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/ImagePreviewPane.java index b80cf5306e..40ada95c9c 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/ImagePreviewPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/ImagePreviewPane.java @@ -10,6 +10,7 @@ import com.fr.base.Style; import com.fr.design.constants.UIConstants; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.iscrollbar.UIScrollBar; +import com.fr.design.style.background.image.ImagePreviewer; import com.fr.general.Inter; import com.fr.stable.Constants; import com.fr.stable.CoreGraphHelper; @@ -34,264 +35,256 @@ import java.util.List; /** * The pane use to preview image */ -public class ImagePreviewPane extends JComponent implements Scrollable { +public class ImagePreviewPane extends JComponent implements Scrollable, ImagePreviewer { private static final int LABEL_DELTA_X = 10; private static final int LABEL_DELTA_Y = 20; private static final int LABEL_HEIGHT = 20; private static final int INCRE_DELTA = 10; - private Image image = null; - // carl:image style - private Style imageStyle = null; - private int imageWidth = 0; - private int imageHeight = 0; + private Image image = null; + // carl:image style + private Style imageStyle = null; + private int imageWidth = 0; + private int imageHeight = 0; - private List changeListenerList = new ArrayList(); - private UILabel sizeLabel; - private boolean isLoading = false; + private List changeListenerList = new ArrayList(); + private UILabel sizeLabel; + private boolean isLoading = false; - public ImagePreviewPane() { - sizeLabel = new UILabel(); - this.add(sizeLabel); - this.setBorder(BorderFactory.createEmptyBorder(10, 10, 20, 10)); - this.setLayout(new BorderLayout()); - this.add(new JPanel() { - public void paintComponent(Graphics g) { - super.paintComponent(g); - if (isLoading) { - g.drawString(Inter.getLocText("FR-Designer_Image_Loading"), getWidth() / 2 - 25, getHeight() / 2); - return; - } - // draw image. - if (getImage() != null) { - // carl:让imagePreviewPane能预览样式 - if (getImageStyle() == null) { - g.drawImage(getImage(), 0, 0, this); - } else { - if (getImage().getWidth(this) > getWidth() || getImage().getHeight(this) > getHeight()) { - GraphHelper.paintImageMoved(g, this.getWidth(), this.getHeight(), getImage(), Constants.IMAGE_ADJUST, BaseUtils.getAlignment4Horizontal(getImageStyle()), - getImageStyle().getVerticalAlignment(), -1, -1,0, 0, false, UIConstants.NORMAL_BACKGROUND); - } else { - int totalwidth = this.getWidth(); - int totalheight = this.getHeight(); - g.drawImage(getImage(), totalwidth / 2 - imageWidth / 2, totalheight / 2 - imageHeight / 2, this); - } - } - } - } - }, BorderLayout.CENTER); - // this.setToolTipText("View Image"); - } + public ImagePreviewPane() { + sizeLabel = new UILabel(); + this.add(sizeLabel); + this.setBorder(BorderFactory.createEmptyBorder(10, 10, 20, 10)); + this.setLayout(new BorderLayout()); + this.add(new JPanel() { + public void paintComponent(Graphics g) { + super.paintComponent(g); + if (isLoading) { + g.drawString(Inter.getLocText("FR-Designer_Image_Loading"), getWidth() / 2 - 25, getHeight() / 2); + return; + } + // draw image. + if (getImage() != null) { + // carl:让imagePreviewPane能预览样式 + if (getImageStyle() == null) { + g.drawImage(getImage(), 0, 0, this); + } else { + if (getImage().getWidth(this) > getWidth() || getImage().getHeight(this) > getHeight()) { + GraphHelper.paintImageMoved(g, this.getWidth(), this.getHeight(), getImage(), Constants.IMAGE_ADJUST, BaseUtils.getAlignment4Horizontal(getImageStyle()), + getImageStyle().getVerticalAlignment(), -1, -1, 0, 0, false, UIConstants.NORMAL_BACKGROUND); + } else { + int totalwidth = this.getWidth(); + int totalheight = this.getHeight(); + g.drawImage(getImage(), totalwidth / 2 - imageWidth / 2, totalheight / 2 - imageHeight / 2, this); + } + } + } + } + }, BorderLayout.CENTER); + // this.setToolTipText("View Image"); + } - /** - * Return image - */ - public Image getImage() { - return this.image; - } + /** + * Return image + */ + public Image getImage() { + return this.image; + } - /** - * Set image. - * - * @param image - * the new image. - */ - public void setImage(Image image) { - this.image = image; - // need to reset the size of JViewPort. - if (this.image == null) { - if (this.getParent() instanceof JViewport) { - UIScrollBar tmpJScrollBar = new UIScrollBar(UIScrollBar.HORIZONTAL); - Dimension newDimension = new Dimension(this.getSize().width - tmpJScrollBar.getPreferredSize().height, this.getSize().height - - tmpJScrollBar.getPreferredSize().height); - ((JViewport)this.getParent()).setPreferredSize(newDimension); - (this.getParent()).setSize(newDimension); - ((JViewport)this.getParent()).setMinimumSize(newDimension); - ((JViewport)this.getParent()).setMaximumSize(newDimension); - } - sizeLabel.setText(null); - } else { - isLoading = false; - // wait for the size of image. - CoreGraphHelper.waitForImage(image); + /** + * Set image. + * + * @param image the new image. + */ + public void setImage(Image image) { + this.image = image; + // need to reset the size of JViewPort. + if (this.image == null) { + if (this.getParent() instanceof JViewport) { + UIScrollBar tmpJScrollBar = new UIScrollBar(UIScrollBar.HORIZONTAL); + Dimension newDimension = new Dimension(this.getSize().width - tmpJScrollBar.getPreferredSize().height, this.getSize().height + - tmpJScrollBar.getPreferredSize().height); + ((JViewport) this.getParent()).setPreferredSize(newDimension); + (this.getParent()).setSize(newDimension); + ((JViewport) this.getParent()).setMinimumSize(newDimension); + ((JViewport) this.getParent()).setMaximumSize(newDimension); + } + sizeLabel.setText(null); + } else { + isLoading = false; + // wait for the size of image. + CoreGraphHelper.waitForImage(image); - imageWidth = image.getWidth(null); - imageHeight = image.getHeight(null); - int totalwidth = ImagePreviewPane.this.getWidth(); - int totalheight = ImagePreviewPane.this.getHeight(); - String text = imageWidth + "x" + imageHeight; - sizeLabel.setText(text); - FontMetrics cellFM = this.getFontMetrics(getFont()); - int width = cellFM.stringWidth(text); - sizeLabel.setBounds(totalwidth - width - LABEL_DELTA_X, totalheight - LABEL_DELTA_Y, width, LABEL_HEIGHT); - } - fireChangeListener(); - this.revalidate(); - } - public void showLoading() { - isLoading = true; - setImage(null); - repaint(); - } + imageWidth = image.getWidth(null); + imageHeight = image.getHeight(null); + int totalwidth = ImagePreviewPane.this.getWidth(); + int totalheight = ImagePreviewPane.this.getHeight(); + String text = imageWidth + "x" + imageHeight; + sizeLabel.setText(text); + FontMetrics cellFM = this.getFontMetrics(getFont()); + int width = cellFM.stringWidth(text); + sizeLabel.setBounds(totalwidth - width - LABEL_DELTA_X, totalheight - LABEL_DELTA_Y, width, LABEL_HEIGHT); + } + fireChangeListener(); + this.revalidate(); + } - /** - * Paint component. - */ + public void showLoading() { + isLoading = true; + setImage(null); + repaint(); + } - public Dimension getPreferredSize() { - if (this.image == null) { - return super.getPreferredSize(); - } + /** + * Paint component. + */ - return new Dimension(imageWidth, imageHeight); - } + public Dimension getPreferredSize() { + if (this.image == null) { + return super.getPreferredSize(); + } - /** - * Add change listener. - */ - public void addChangeListener(ChangeListener changeListener) { - changeListenerList.add(changeListener); - } + return new Dimension(imageWidth, imageHeight); + } - /** - * fire change listener when image changed. - */ - private void fireChangeListener() { - if (this.changeListenerList.size() > 0) { - ChangeEvent evt = new ChangeEvent(this); + /** + * Add change listener. + */ + public void addChangeListener(ChangeListener changeListener) { + changeListenerList.add(changeListener); + } - for (int i = 0; i < changeListenerList.size(); i++) { - changeListenerList.get(i).stateChanged(evt); - } - } - } + /** + * fire change listener when image changed. + */ + private void fireChangeListener() { + if (this.changeListenerList.size() > 0) { + ChangeEvent evt = new ChangeEvent(this); - // --- Scrollable methods --------------------------------------------- + for (int i = 0; i < changeListenerList.size(); i++) { + changeListenerList.get(i).stateChanged(evt); + } + } + } - /** - * Returns the preferred size of the viewport for a view component. This is - * implemented to do the default behavior of returning the preferred size of - * the component. - * - * @return the preferredSize of a JViewport whose - * view is this Scrollable - */ - public Dimension getPreferredScrollableViewportSize() { - return getPreferredSize(); - } + // --- Scrollable methods --------------------------------------------- - /** - * Components that display logical rows or columns should compute the scroll - * increment that will completely expose one new row or column, depending on - * the value of orientation. Ideally, components should handle a partially - * exposed row or column by returning the distance required to completely - * expose the item. - *

- * The default implementation of this is to simply return 10% of the visible - * area. Subclasses are likely to be able to provide a much more reasonable - * value. - * - * @param visibleRect - * the view area visible within the viewport - * @param orientation - * either SwingConstants.VERTICAL or - * SwingConstants.HORIZONTAL - * @param direction - * less than zero to scroll up/left, greater than zero for - * down/right - * @return the "unit" increment for scrolling in the specified direction - * @throws IllegalArgumentException - * for an invalid orientation - * @see javax.swing.JScrollBar#setUnitIncrement - */ - public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) { - switch (orientation) { - case SwingConstants.VERTICAL: - return visibleRect.height / INCRE_DELTA; - case SwingConstants.HORIZONTAL: - return visibleRect.width / INCRE_DELTA; - default: - throw new IllegalArgumentException("Invalid orientation: " + orientation); - } - } + /** + * Returns the preferred size of the viewport for a view component. This is + * implemented to do the default behavior of returning the preferred size of + * the component. + * + * @return the preferredSize of a JViewport whose + * view is this Scrollable + */ + public Dimension getPreferredScrollableViewportSize() { + return getPreferredSize(); + } - /** - * Components that display logical rows or columns should compute the scroll - * increment that will completely expose one block of rows or columns, - * depending on the value of orientation. - *

- * The default implementation of this is to simply return the visible area. - * Subclasses will likely be able to provide a much more reasonable value. - * - * @param visibleRect - * the view area visible within the viewport - * @param orientation - * either SwingConstants.VERTICAL or - * SwingConstants.HORIZONTAL - * @param direction - * less than zero to scroll up/left, greater than zero for - * down/right - * @return the "block" increment for scrolling in the specified direction - * @throws IllegalArgumentException - * for an invalid orientation - * @see javax.swing.JScrollBar#setBlockIncrement - */ - public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) { - switch (orientation) { - case SwingConstants.VERTICAL: - return visibleRect.height; - case SwingConstants.HORIZONTAL: - return visibleRect.width; - default: - throw new IllegalArgumentException("Invalid orientation: " + orientation); - } - } + /** + * Components that display logical rows or columns should compute the scroll + * increment that will completely expose one new row or column, depending on + * the value of orientation. Ideally, components should handle a partially + * exposed row or column by returning the distance required to completely + * expose the item. + *

+ * The default implementation of this is to simply return 10% of the visible + * area. Subclasses are likely to be able to provide a much more reasonable + * value. + * + * @param visibleRect the view area visible within the viewport + * @param orientation either SwingConstants.VERTICAL or + * SwingConstants.HORIZONTAL + * @param direction less than zero to scroll up/left, greater than zero for + * down/right + * @return the "unit" increment for scrolling in the specified direction + * @throws IllegalArgumentException for an invalid orientation + * @see javax.swing.JScrollBar#setUnitIncrement + */ + public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) { + switch (orientation) { + case SwingConstants.VERTICAL: + return visibleRect.height / INCRE_DELTA; + case SwingConstants.HORIZONTAL: + return visibleRect.width / INCRE_DELTA; + default: + throw new IllegalArgumentException("Invalid orientation: " + orientation); + } + } - /** - * Returns true if a viewport should always force the width of this - * Scrollable to match the width of the viewport. For example a - * normal text view that supported line wrapping would return true here, - * since it would be undesirable for wrapped lines to disappear beyond the - * right edge of the viewport. Note that returning true for a - * Scrollable whose ancestor is a JScrollPane - * effectively disables horizontal scrolling. - *

- * Scrolling containers, like JViewport, will use this method - * each time they are validated. - * - * @return true if a viewport should force the Scrollables - * width to match its own - */ - public boolean getScrollableTracksViewportWidth() { - if (getParent() instanceof JViewport) { - return (getParent().getWidth() > getPreferredSize().width); - } - return false; - } + /** + * Components that display logical rows or columns should compute the scroll + * increment that will completely expose one block of rows or columns, + * depending on the value of orientation. + *

+ * The default implementation of this is to simply return the visible area. + * Subclasses will likely be able to provide a much more reasonable value. + * + * @param visibleRect the view area visible within the viewport + * @param orientation either SwingConstants.VERTICAL or + * SwingConstants.HORIZONTAL + * @param direction less than zero to scroll up/left, greater than zero for + * down/right + * @return the "block" increment for scrolling in the specified direction + * @throws IllegalArgumentException for an invalid orientation + * @see javax.swing.JScrollBar#setBlockIncrement + */ + public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) { + switch (orientation) { + case SwingConstants.VERTICAL: + return visibleRect.height; + case SwingConstants.HORIZONTAL: + return visibleRect.width; + default: + throw new IllegalArgumentException("Invalid orientation: " + orientation); + } + } - /** - * Returns true if a viewport should always force the height of this - * Scrollable to match the height of the viewport. For example - * a columnar text view that flowed text in left to right columns could - * effectively disable vertical scrolling by returning true here. - *

- * Scrolling containers, like JViewport, will use this method - * each time they are validated. - * - * @return true if a viewport should force the Scrollables height to match - * its own - */ - public boolean getScrollableTracksViewportHeight() { - if (getParent() instanceof JViewport) { - return (getParent().getHeight() > getPreferredSize().height); - } - return false; - } + /** + * Returns true if a viewport should always force the width of this + * Scrollable to match the width of the viewport. For example a + * normal text view that supported line wrapping would return true here, + * since it would be undesirable for wrapped lines to disappear beyond the + * right edge of the viewport. Note that returning true for a + * Scrollable whose ancestor is a JScrollPane + * effectively disables horizontal scrolling. + *

+ * Scrolling containers, like JViewport, will use this method + * each time they are validated. + * + * @return true if a viewport should force the Scrollables + * width to match its own + */ + public boolean getScrollableTracksViewportWidth() { + if (getParent() instanceof JViewport) { + return (getParent().getWidth() > getPreferredSize().width); + } + return false; + } - public void setImageStyle(Style imageStyle) { - this.imageStyle = imageStyle; - } + /** + * Returns true if a viewport should always force the height of this + * Scrollable to match the height of the viewport. For example + * a columnar text view that flowed text in left to right columns could + * effectively disable vertical scrolling by returning true here. + *

+ * Scrolling containers, like JViewport, will use this method + * each time they are validated. + * + * @return true if a viewport should force the Scrollables height to match + * its own + */ + public boolean getScrollableTracksViewportHeight() { + if (getParent() instanceof JViewport) { + return (getParent().getHeight() > getPreferredSize().height); + } + return false; + } - public Style getImageStyle() { - return imageStyle; - } + public void setImageStyle(Style imageStyle) { + this.imageStyle = imageStyle; + } + + public Style getImageStyle() { + return imageStyle; + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/style/background/image/ImagePreviewPane.java b/designer_base/src/com/fr/design/style/background/image/ImagePreviewPane.java index 75e8550e0f..edbcd7d619 100644 --- a/designer_base/src/com/fr/design/style/background/image/ImagePreviewPane.java +++ b/designer_base/src/com/fr/design/style/background/image/ImagePreviewPane.java @@ -26,7 +26,7 @@ import java.util.List; /** * The pane use to preview image */ -public class ImagePreviewPane extends JComponent implements Scrollable { +public class ImagePreviewPane extends JComponent implements Scrollable, ImagePreviewer { private Image image = null; // carl:image style private Style imageStyle = null; diff --git a/designer_base/src/com/fr/design/style/background/image/ImagePreviewer.java b/designer_base/src/com/fr/design/style/background/image/ImagePreviewer.java new file mode 100644 index 0000000000..215671021d --- /dev/null +++ b/designer_base/src/com/fr/design/style/background/image/ImagePreviewer.java @@ -0,0 +1,33 @@ +package com.fr.design.style.background.image; + +import com.fr.base.Style; + +import java.awt.Image; + +/** + * 图片预览接口(由于子类上层父类差别较大,无奈的接口) + * Created by zack on 2018/3/10. + */ +public interface ImagePreviewer { + /** + * 设置图片样式(平铺,拉伸) + * @param style 样式 + */ + void setImageStyle(Style style); + + /** + * 设置图片 + * @param image 图片 + */ + void setImage(Image image); + + /** + * 显示正在加载 + */ + void showLoading(); + + /** + * 重绘 + */ + void repaint(); +} diff --git a/designer_base/src/com/fr/design/style/background/image/ImageSelectPane.java b/designer_base/src/com/fr/design/style/background/image/ImageSelectPane.java index f94a0098bf..0e36b23c9f 100644 --- a/designer_base/src/com/fr/design/style/background/image/ImageSelectPane.java +++ b/designer_base/src/com/fr/design/style/background/image/ImageSelectPane.java @@ -1,18 +1,16 @@ package com.fr.design.style.background.image; -import com.fr.base.BaseUtils; import com.fr.base.background.ImageBackground; +import com.fr.design.gui.frpane.ImgChooseWrapper; 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.FRGUIPaneFactory; import com.fr.design.style.AlphaPane; import com.fr.design.style.background.BackgroundPane4BoxChange; -import com.fr.design.utils.ImageUtils; import com.fr.general.Background; import com.fr.general.Inter; import com.fr.stable.Constants; -import com.fr.stable.CoreGraphHelper; import javax.swing.JFileChooser; import javax.swing.JPanel; @@ -22,7 +20,6 @@ import java.awt.Dimension; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.io.File; /** @@ -99,12 +96,7 @@ public class ImageSelectPane extends BackgroundPane4BoxChange { public void actionPerformed(ActionEvent evt) { int returnVal = imageFileChooser.showOpenDialog(ImageSelectPane.this); if (returnVal != JFileChooser.CANCEL_OPTION) { - File selectedFile = imageFileChooser.getSelectedFile(); - if (selectedFile != null && selectedFile.isFile()) { - Image image = imageFileChooser.isCompressSelected() ? ImageUtils.defaultImageCompress(selectedFile) : BaseUtils.readImage(selectedFile.getPath()); - CoreGraphHelper.waitForImage(image); - selectImage = image; - } + ImgChooseWrapper.getInstance(null, imageFileChooser, null).dealWithImageFile(returnVal); chechLabelText(); } } diff --git a/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java b/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java index 962ef75a64..2c158a835b 100644 --- a/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java +++ b/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java @@ -1,8 +1,8 @@ package com.fr.design.style.background.impl; -import com.fr.base.BaseUtils; import com.fr.base.Style; import com.fr.base.background.ImageBackground; +import com.fr.design.gui.frpane.ImgChooseWrapper; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.gui.ilable.UILabel; @@ -10,18 +10,14 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.style.background.BackgroundDetailPane; import com.fr.design.style.background.image.ImageFileChooser; import com.fr.design.style.background.image.ImagePreviewPane; -import com.fr.design.utils.ImageUtils; import com.fr.general.Background; import com.fr.general.Inter; import com.fr.stable.Constants; -import com.fr.stable.CoreGraphHelper; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; -import javax.swing.JFileChooser; import javax.swing.JPanel; import javax.swing.JScrollPane; -import javax.swing.SwingWorker; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.BorderLayout; @@ -29,7 +25,6 @@ import java.awt.GridLayout; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.io.File; /** * Image background pane. @@ -46,7 +41,6 @@ public class ImageBackgroundPane extends BackgroundDetailPane { protected UIRadioButton tiledRadioButton = null; private UIRadioButton extendRadioButton = null; private UIRadioButton adjustRadioButton = null; - private SwingWorker imageWorker; public ImageBackgroundPane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); @@ -125,41 +119,12 @@ public class ImageBackgroundPane extends BackgroundDetailPane { public void actionPerformed(ActionEvent evt) { int returnVal = imageFileChooser.showOpenDialog(ImageBackgroundPane.this); - if (returnVal != JFileChooser.CANCEL_OPTION) { - File selectedFile = imageFileChooser.getSelectedFile(); - - if (selectedFile != null && selectedFile.isFile()) { - previewPane.showLoading(); - if (imageWorker != null && !imageWorker.isDone()) { - imageWorker = null; - } - imageWorker = new SwingWorker() { - @Override - protected Void doInBackground() throws Exception { - Image image = imageFileChooser.isCompressSelected() ? ImageUtils.defaultImageCompress(selectedFile) : BaseUtils.readImage(selectedFile.getPath()); - CoreGraphHelper.waitForImage(image); - - previewPane.setImage(image); - imageStyleRepaint(); - previewPane.repaint(); - return null; - } - }; - imageWorker.execute(); - } else { - previewPane.setImage(null); - } - } - + setImageStyle(); + ImgChooseWrapper.getInstance(previewPane, imageFileChooser, imageStyle).dealWithImageFile(returnVal); fireChagneListener(); } }; - public void imageStyleRepaint(){ - setImageStyle(); - previewPane.setImageStyle(imageStyle); - } - private void setImageStyle() { if (tiledRadioButton.isSelected()) { imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_TILED); diff --git a/designer_base/src/com/fr/design/style/background/impl/ImageButtonBackgroundPane.java b/designer_base/src/com/fr/design/style/background/impl/ImageButtonBackgroundPane.java index b72e67bae7..5dc5fcece1 100644 --- a/designer_base/src/com/fr/design/style/background/impl/ImageButtonBackgroundPane.java +++ b/designer_base/src/com/fr/design/style/background/impl/ImageButtonBackgroundPane.java @@ -6,8 +6,11 @@ import com.fr.design.gui.ibutton.UIButton; import com.fr.general.Background; import com.fr.general.Inter; import com.fr.stable.Constants; -import javax.swing.*; -import java.awt.*; + +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import javax.swing.SwingConstants; +import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -18,13 +21,13 @@ public class ImageButtonBackgroundPane extends ImageBackgroundPane { private UIButton chooseButton; private UIButton clearButton; - public ImageButtonBackgroundPane(){ + public ImageButtonBackgroundPane() { super(); Style imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_CENTER); previewPane.setImageStyle(imageStyle); } - public JPanel initSelectFilePane(){ + public JPanel initSelectFilePane() { JPanel choosePane = new JPanel(new BorderLayout(0, 10)); choosePane.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); @@ -33,12 +36,12 @@ public class ImageButtonBackgroundPane extends ImageBackgroundPane { choosePane.add(chooseButton, BorderLayout.NORTH); - choosePane1.add(clearButton,BorderLayout.NORTH); - choosePane.add(choosePane1,BorderLayout.CENTER); + choosePane1.add(clearButton, BorderLayout.NORTH); + choosePane.add(choosePane1, BorderLayout.CENTER); imageSizeLabel.setHorizontalAlignment(SwingConstants.CENTER); - choosePane1.add(imageSizeLabel,BorderLayout.CENTER); - this.add(choosePane,BorderLayout.EAST); + choosePane1.add(imageSizeLabel, BorderLayout.CENTER); + this.add(choosePane, BorderLayout.EAST); return choosePane; } @@ -55,15 +58,11 @@ public class ImageButtonBackgroundPane extends ImageBackgroundPane { }); } - public void imageStyleRepaint(){ - - } - public void populate(Background background) { - if(background != null && background instanceof ImageBackground){ + if (background != null && background instanceof ImageBackground) { ImageBackground imageBackground = (ImageBackground) background; - if(imageBackground.getImage() != null) { + if (imageBackground.getImage() != null) { previewPane.setImage(imageBackground.getImage()); } } @@ -71,7 +70,7 @@ public class ImageButtonBackgroundPane extends ImageBackgroundPane { } public Background update() { - if(previewPane.getImage() == null) { + if (previewPane.getImage() == null) { return null; } return new ImageBackground(previewPane.getImage()); diff --git a/designer_base/src/com/fr/design/utils/ImageUtils.java b/designer_base/src/com/fr/design/utils/ImageUtils.java index 3457da452b..5ff8dc90da 100644 --- a/designer_base/src/com/fr/design/utils/ImageUtils.java +++ b/designer_base/src/com/fr/design/utils/ImageUtils.java @@ -21,10 +21,17 @@ import java.io.IOException; import java.util.Iterator; /** + * 设计器部分的图片处理工具类 * Created by zack on 2018/3/8. */ public class ImageUtils { + /** + * 默认压缩算法,采用75%质量压缩 + * + * @param imageFile 原文件 + * @return 压缩后的BufferedImage对象 + */ public static BufferedImage defaultImageCompress(File imageFile) { try { return imageCompress(imageFile, 0.75f);//默认75%质量 @@ -35,6 +42,14 @@ public class ImageUtils { return BaseUtils.readImage(imageFile.getPath()); } + /** + * 图片压缩 + * + * @param imageFile 原文件 + * @param quality 质量系数(0-1) + * @return 压缩后的图片 + * @throws IOException + */ public static BufferedImage imageCompress(File imageFile, float quality) throws IOException { if (imageFile == null) { return null; @@ -92,17 +107,12 @@ public class ImageUtils { throw new IOException("The image file cannot be compressed"); } return ImageIO.read(in); - } catch (IOException e) { - FRLogger.getLogger().error(e.getMessage(), e); } finally { writer.dispose(); - ios.close(); byteArrayOutputStream.close(); in.close(); } - - return null; } /** From 5f0e2cedad0816728cdc2bea803868fe0e766ec5 Mon Sep 17 00:00:00 2001 From: MoMeak Date: Mon, 12 Mar 2018 10:54:41 +0800 Subject: [PATCH 26/79] =?UTF-8?q?REPORT-3435=20=E6=A8=A1=E6=9D=BF=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=85=B1=E4=BA=AB=E5=A4=8D=E7=94=A8=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E4=B8=80=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/designer/creator/XChartEditor.java | 11 +- .../fr/design/designer/creator/XCreator.java | 29 +- .../design/designer/creator/XElementCase.java | 688 +++++++++--------- .../designer/creator/XWAbsoluteLayout.java | 21 + .../mainframe/EditingMouseListener.java | 39 +- .../mainframe/FormCreatorDropTarget.java | 12 +- .../mainframe/FormWidgetDetailPane.java | 16 +- .../design/mainframe/ShareWidgetButton.java | 3 +- 8 files changed, 416 insertions(+), 403 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/creator/XChartEditor.java b/designer_form/src/com/fr/design/designer/creator/XChartEditor.java index b4e2652100..409d58cb4a 100644 --- a/designer_form/src/com/fr/design/designer/creator/XChartEditor.java +++ b/designer_form/src/com/fr/design/designer/creator/XChartEditor.java @@ -47,7 +47,6 @@ public class XChartEditor extends XBorderStyleWidgetCreator { private boolean isEditing = false; private boolean isHovering = false; - private JPanel coverPanel; private static final Color OUTER_BORDER_COLOR = new Color(65, 155, 249, 30); private static final Color INNER_BORDER_COLOR = new Color(65, 155, 249); @@ -247,6 +246,10 @@ public class XChartEditor extends XBorderStyleWidgetCreator { editingMouseListener.startEditing(this, isEditing ? adapter.getDesignerEditor() : null, adapter); } } + HelpDialogManager.getInstance().setPane(coverPanel); + if (this.isHelpBtnOnFocus()) { + coverPanel.setMsgDisplay(e); + } } @Override @@ -275,7 +278,7 @@ public class XChartEditor extends XBorderStyleWidgetCreator { editor.setLayout(null); editor.setOpaque(false); - coverPanel = new CoverPane(); + coverPanel = new CoverReportPane(); coverPanel.setPreferredSize(this.getPreferredSize()); coverPanel.setBounds(this.getBounds()); @@ -297,10 +300,6 @@ public class XChartEditor extends XBorderStyleWidgetCreator { editor.repaint(); } - public JComponent getCoverPane(){ - return coverPanel; - } - /** * 是否支持设置可用 * return boolean diff --git a/designer_form/src/com/fr/design/designer/creator/XCreator.java b/designer_form/src/com/fr/design/designer/creator/XCreator.java index 3592f4671a..a9d6ad3df1 100644 --- a/designer_form/src/com/fr/design/designer/creator/XCreator.java +++ b/designer_form/src/com/fr/design/designer/creator/XCreator.java @@ -15,6 +15,7 @@ import com.fr.design.gui.imenu.UIPopupMenu; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.AuthorityPropertyPane; import com.fr.design.mainframe.BaseJForm; +import com.fr.design.mainframe.CoverReportPane; import com.fr.design.mainframe.EditingMouseListener; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.NoSupportAuthorityEdit; @@ -58,6 +59,7 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo protected Widget data; protected JComponent editor; + protected CoverReportPane coverPanel; // XCreator加入到某些XLayoutContainer中时,能调整宽度或者高度 private int[] directions; private Rectangle backupBound; @@ -635,7 +637,31 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo * 设置描述信息 * @param msg 帮助信息 */ - public void setXDescrption(String msg){} + public void setXDescrption(String msg){ + if (coverPanel != null) { + coverPanel.setHelpMsg(msg); + } + } + + public JComponent getCoverPane(){ + return coverPanel; + } + + /** + * 销毁帮助提示框 + */ + public void destroyHelpDialog(){ + if (coverPanel != null) { + coverPanel.destroyHelpDialog(); + } + } + + /** + * 是否展现覆盖的pane + * @param display 是否 + */ + public void displayCoverPane(boolean display){ + } /** * 根据widget设置Xcreator描述信息 @@ -645,7 +671,6 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo if (widget != null) { setXDescrption(widget.getDescription()); } - } /** diff --git a/designer_form/src/com/fr/design/designer/creator/XElementCase.java b/designer_form/src/com/fr/design/designer/creator/XElementCase.java index cece2042ba..87eb34b851 100644 --- a/designer_form/src/com/fr/design/designer/creator/XElementCase.java +++ b/designer_form/src/com/fr/design/designer/creator/XElementCase.java @@ -1,355 +1,335 @@ -package com.fr.design.designer.creator; - -import com.fr.base.BaseUtils; -import com.fr.base.GraphHelper; -import com.fr.design.ExtraDesignClassManager; -import com.fr.design.designer.properties.mobile.ElementCasePropertyUI; -import com.fr.design.form.util.XCreatorConstants; -import com.fr.design.fun.FormElementCaseEditorProcessor; -import com.fr.design.fun.FormElementCaseEditorProvider; -import com.fr.design.fun.WidgetPropertyUIProvider; -import com.fr.design.fun.impl.AbstractFormElementCaseEditorProvider; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.mainframe.*; -import com.fr.design.mainframe.widget.editors.ElementCaseToolBarEditor; -import com.fr.design.mainframe.widget.editors.PaddingMarginEditor; -import com.fr.design.mainframe.widget.editors.WLayoutBorderStyleEditor; -import com.fr.form.FormElementCaseContainerProvider; -import com.fr.form.FormElementCaseProvider; -import com.fr.form.FormProvider; -import com.fr.form.ui.ElementCaseEditor; -import com.fr.form.ui.ElementCaseEditorProvider; -import com.fr.general.Inter; -import com.fr.stable.ArrayUtils; -import com.fr.stable.Constants; -import com.fr.stable.CoreGraphHelper; -import com.fr.stable.core.PropertyChangeAdapter; -import com.fr.stable.fun.FitProvider; -import com.fr.stable.fun.ReportFitAttrProvider; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.MouseEvent; -import java.awt.image.BufferedImage; -import java.beans.IntrospectionException; -import java.beans.PropertyDescriptor; -import java.util.Set; - -public class XElementCase extends XBorderStyleWidgetCreator implements FormElementCaseContainerProvider{ - private UILabel imageLable; - private CoverReportPane coverPanel; - private FormDesigner designer; - private static BufferedImage DEFAULT_BACKGROUND; - private boolean isHovering = false; - - static{ - try{ - DEFAULT_BACKGROUND = BaseUtils.readImageWithCache("com/fr/base/images/report/elementcase.png"); - }catch (Throwable e) { - //IBM jdk 1.5.0_22 并发下读取图片有时会异常(EOFException), 这个图片反正只有设计器用到, 捕获住 - DEFAULT_BACKGROUND = CoreGraphHelper.createBufferedImage(0, 0); - } - } - - public XElementCase(ElementCaseEditor widget, Dimension initSize) { - super(widget, initSize); - - - } - - protected void initXCreatorProperties() { - super.initXCreatorProperties(); - - // 报表块初始化时要加载对应的borderStyle - initBorderStyle(); - } - - /** - * 是否支持设置标题 - * @return 是返回true - */ - public boolean hasTitleStyle() { - return true; - } - - /** - * 返回组件属性值 - * @return 返回组件属性值 - * @throws IntrospectionException 异常 - */ - public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { - - CRPropertyDescriptor[] propertyTableEditor = new CRPropertyDescriptor[]{ - new CRPropertyDescriptor("widgetName", this.data.getClass()) - .setI18NName(Inter.getLocText("Form-Widget_Name")), - new CRPropertyDescriptor("visible", this.data.getClass()).setI18NName( - Inter.getLocText("FR-Designer_Widget-Visible")).setPropertyChangeListener(new PropertyChangeAdapter() { - - @Override - public void propertyChange() { - makeVisible(toData().isVisible()); - } - }), - new CRPropertyDescriptor("borderStyle", this.data.getClass()).setEditorClass( - WLayoutBorderStyleEditor.class).setI18NName( - Inter.getLocText("FR-Designer-Widget_Style")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced") - .setPropertyChangeListener(new PropertyChangeAdapter() { - - @Override - public void propertyChange() { - initStyle(); - } - }), - new CRPropertyDescriptor("margin", this.data.getClass()).setEditorClass(PaddingMarginEditor.class) - .setI18NName(Inter.getLocText("FR-Layout_Padding")) - .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), - new CRPropertyDescriptor("toolBars", this.data.getClass()).setEditorClass(ElementCaseToolBarEditor.class) - .setI18NName(Inter.getLocText("Form-EC_toolbar")) - .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced") - }; - CRPropertyDescriptor[] extraTableEditor = getExtraTableEditor(); - return (CRPropertyDescriptor[]) ArrayUtils.addAll(propertyTableEditor, extraTableEditor); - } - - public CRPropertyDescriptor[] getExtraTableEditor(){ - CRPropertyDescriptor[] extraTableEditor = resolveCompatible(); - FormElementCaseEditorProcessor processor = ExtraDesignClassManager.getInstance().getSingle(FormElementCaseEditorProcessor.MARK_STRING); - if (processor == null) { - return extraTableEditor; - } - this.designer = WidgetPropertyPane.getInstance().getEditingFormDesigner(); - FitProvider wbTpl = (FitProvider) designer.getTarget(); - ReportFitAttrProvider fitAttr = wbTpl.getFitAttr(); - ElementCaseEditor editor = this.toData(); - //兼容之前报表块(之前三个选项为:默认 横向 双向 现在是:横向 双向 不自适应) - if (editor.getFitStateInPC() == 0 || processor.getFitStateInPC(fitAttr) == 0 ) { - editor.setReportFitAttr(null); - } - - ReportFitAttrProvider reportFit = editor.getReportFitAttr(); - if(fitAttr != null){ - reportFit = fitAttr.fitInBrowser() ? editor.getReportFitAttr() : fitAttr; - } - ReportFitAttrProvider reportFitAttr = editor.getReportFitAttr() == null ? fitAttr : reportFit; - PropertyDescriptor[] extraEditor = processor.createPropertyDescriptor(this.data.getClass(), reportFitAttr); - if (editor.getReportFitAttr() == null) { - editor.setReportFitInPc(processor.getFitStateInPC(fitAttr)); - } - return (CRPropertyDescriptor[]) ArrayUtils.addAll(extraTableEditor, extraEditor); - } - - - private CRPropertyDescriptor[] resolveCompatible() { - CRPropertyDescriptor[] extraProperty = new CRPropertyDescriptor[0]; - //这边有个插件兼容问题,之后还是要改回process才行 - Set set = ExtraDesignClassManager.getInstance().getArray(AbstractFormElementCaseEditorProvider.MARK_STRING); - for (FormElementCaseEditorProvider provider : set) { - if (provider == null) { - continue; - } - this.designer = WidgetPropertyPane.getInstance().getEditingFormDesigner(); - FormProvider formProvider = designer.getTarget(); - ElementCaseEditorProvider elementCaseEditorProvider = this.toData(); - PropertyDescriptor[] extraEditor = provider.createPropertyDescriptor(this.data.getClass(), formProvider, elementCaseEditorProvider); - extraProperty = (CRPropertyDescriptor[]) ArrayUtils.addAll(extraProperty, extraEditor); - } - return extraProperty; - } - - @Override - protected String getIconName() { - return "text_field_16.png"; - } - - /** - * 返回组件默认名 - * @return 组件类名(小写) - */ - public String createDefaultName() { - return "report"; - } - - @Override - protected JComponent initEditor() { - if (editor == null) { - setBorder(DEFALUTBORDER); - editor = new JPanel(); - editor.setBackground(null); - editor.setLayout(null); - imageLable = initImageBackground(); - - coverPanel = new CoverReportPane(); - coverPanel.setPreferredSize(imageLable.getPreferredSize()); - coverPanel.setBounds(imageLable.getBounds()); - - editor.add(coverPanel); - coverPanel.setVisible(false); - editor.add(imageLable); - } - return editor; - } - - /** - * 从data中获取到图片背景, 并设置到Label上 - */ - private UILabel initImageBackground(){ - UILabel imageLable = new UILabel(); - BufferedImage image = toData().getECImage(); - if (image == null) { - image = DEFAULT_BACKGROUND; - } - setLabelBackground(image, imageLable); - - return imageLable; - } - - /** - * 设置指定Label的背景 - */ - private void setLabelBackground(Image image, UILabel imageLable){ - ImageIcon icon = new ImageIcon(image); - imageLable.setIcon(icon); - imageLable.setOpaque(true); - imageLable.setLayout(null); - imageLable.setBounds(0, 0, icon.getIconWidth(), icon.getIconHeight()); - } - - /** - * 是否展现覆盖的pane - * @param display 是否 - */ - public void displayCoverPane(boolean display){ - isHovering = display; - coverPanel.setVisible(display); - coverPanel.setBounds(1, 1, (int) editor.getBounds().getWidth(), (int) editor.getBounds().getHeight()); - editor.repaint(); - } - - @Override - public void paintBorder(Graphics g, Rectangle bounds){ - if (!isHovering) { - super.paintBorder(g, bounds); - } - } - - - /** - * 销毁帮助提示框 - */ - public void destroyHelpDialog(){ - coverPanel.destroyHelpDialog(); - } - - public JComponent getCoverPane(){ - return coverPanel; - } - - /** - * 初始化大小 - * @return 尺寸 - */ - public Dimension initEditorSize() { - return BORDER_PREFERRED_SIZE; - } - - /** - * 是否是报表块 - * @return 是 - */ - public boolean isReport() { - return true; - } - - /** - * 该组件是否可以拖入参数面板 - * @return 是则返回true - */ - public boolean canEnterIntoParaPane(){ - return false; - } - - /** - * 返回报表块对应的widget - * @return 返回ElementCaseEditor - */ - public ElementCaseEditor toData() { - return ((ElementCaseEditor) data); - } - - public FormElementCaseProvider getElementCase() { - return toData().getElementCase(); - } - - public String getElementCaseContainerName() { - return toData().getWidgetName(); - } - - public void setElementCase(FormElementCaseProvider el) { - toData().setElementCase(el); - } - - public void setBackground(BufferedImage image){ - toData().setECImage(image); - setEditorIcon(image); - } - - private void setEditorIcon(BufferedImage image){ - setLabelBackground(image, imageLable); - } - - public Dimension getSize(){ - return new Dimension(this.getWidth(), this.getHeight()); - } - - /** - * 响应点击事件 - * @param editingMouseListener 事件处理器 - * @param e 点击事件 - */ - public void respondClick(EditingMouseListener editingMouseListener,MouseEvent e){ - HelpDialogManager.getInstance().setPane(coverPanel); - super.respondClick(editingMouseListener, e); - if (this.isHelpBtnOnFocus()) { - coverPanel.setMsgDisplay(e); - } else { - switchTab(e, editingMouseListener); - } - } - - - private void switchTab(MouseEvent e,EditingMouseListener editingMouseListener){ - FormDesigner designer = editingMouseListener.getDesigner(); - if (e.getButton() == MouseEvent.BUTTON1 && - (e.getClickCount() == 2 || designer.getCursor().getType() == Cursor.HAND_CURSOR)){ - FormElementCaseContainerProvider component = (FormElementCaseContainerProvider) designer.getComponentAt(e); - //切换设计器 - designer.switchTab(component); - } - } - - @Override - public WidgetPropertyUIProvider[] getWidgetPropertyUIProviders() { - return new WidgetPropertyUIProvider[]{ new ElementCasePropertyUI(this)}; - } - - @Override - public void setXDescrption(String msg) { - coverPanel.setHelpMsg(msg); - } - - /** - * data属性改变触发其他操作 - * - */ - public void firePropertyChange(){ - initStyle(); - } - - /** - * 是否支持设置可用 - * return boolean - */ - public boolean supportSetEnable(){ - return false; - } +package com.fr.design.designer.creator; + +import com.fr.base.BaseUtils; +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.designer.properties.mobile.ElementCasePropertyUI; +import com.fr.design.form.util.XCreatorConstants; +import com.fr.design.fun.FormElementCaseEditorProcessor; +import com.fr.design.fun.FormElementCaseEditorProvider; +import com.fr.design.fun.WidgetPropertyUIProvider; +import com.fr.design.fun.impl.AbstractFormElementCaseEditorProvider; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.mainframe.*; +import com.fr.design.mainframe.widget.editors.ElementCaseToolBarEditor; +import com.fr.design.mainframe.widget.editors.PaddingMarginEditor; +import com.fr.design.mainframe.widget.editors.WLayoutBorderStyleEditor; +import com.fr.form.FormElementCaseContainerProvider; +import com.fr.form.FormElementCaseProvider; +import com.fr.form.FormProvider; +import com.fr.form.ui.ElementCaseEditor; +import com.fr.form.ui.ElementCaseEditorProvider; +import com.fr.general.Inter; +import com.fr.stable.ArrayUtils; +import com.fr.stable.CoreGraphHelper; +import com.fr.stable.core.PropertyChangeAdapter; +import com.fr.stable.fun.FitProvider; +import com.fr.stable.fun.ReportFitAttrProvider; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.MouseEvent; +import java.awt.image.BufferedImage; +import java.beans.IntrospectionException; +import java.beans.PropertyDescriptor; +import java.util.Set; + +public class XElementCase extends XBorderStyleWidgetCreator implements FormElementCaseContainerProvider{ + private UILabel imageLable; + private FormDesigner designer; + private static BufferedImage DEFAULT_BACKGROUND; + private boolean isHovering = false; + + static{ + try{ + DEFAULT_BACKGROUND = BaseUtils.readImageWithCache("com/fr/base/images/report/elementcase.png"); + }catch (Throwable e) { + //IBM jdk 1.5.0_22 并发下读取图片有时会异常(EOFException), 这个图片反正只有设计器用到, 捕获住 + DEFAULT_BACKGROUND = CoreGraphHelper.createBufferedImage(0, 0); + } + } + + public XElementCase(ElementCaseEditor widget, Dimension initSize) { + super(widget, initSize); + + + } + + protected void initXCreatorProperties() { + super.initXCreatorProperties(); + + // 报表块初始化时要加载对应的borderStyle + initBorderStyle(); + } + + /** + * 是否支持设置标题 + * @return 是返回true + */ + public boolean hasTitleStyle() { + return true; + } + + /** + * 返回组件属性值 + * @return 返回组件属性值 + * @throws IntrospectionException 异常 + */ + public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { + + CRPropertyDescriptor[] propertyTableEditor = new CRPropertyDescriptor[]{ + new CRPropertyDescriptor("widgetName", this.data.getClass()) + .setI18NName(Inter.getLocText("Form-Widget_Name")), + new CRPropertyDescriptor("visible", this.data.getClass()).setI18NName( + Inter.getLocText("FR-Designer_Widget-Visible")).setPropertyChangeListener(new PropertyChangeAdapter() { + + @Override + public void propertyChange() { + makeVisible(toData().isVisible()); + } + }), + new CRPropertyDescriptor("borderStyle", this.data.getClass()).setEditorClass( + WLayoutBorderStyleEditor.class).setI18NName( + Inter.getLocText("FR-Designer-Widget_Style")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced") + .setPropertyChangeListener(new PropertyChangeAdapter() { + + @Override + public void propertyChange() { + initStyle(); + } + }), + new CRPropertyDescriptor("margin", this.data.getClass()).setEditorClass(PaddingMarginEditor.class) + .setI18NName(Inter.getLocText("FR-Layout_Padding")) + .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), + new CRPropertyDescriptor("toolBars", this.data.getClass()).setEditorClass(ElementCaseToolBarEditor.class) + .setI18NName(Inter.getLocText("Form-EC_toolbar")) + .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced") + }; + CRPropertyDescriptor[] extraTableEditor = getExtraTableEditor(); + return (CRPropertyDescriptor[]) ArrayUtils.addAll(propertyTableEditor, extraTableEditor); + } + + public CRPropertyDescriptor[] getExtraTableEditor(){ + CRPropertyDescriptor[] extraTableEditor = resolveCompatible(); + FormElementCaseEditorProcessor processor = ExtraDesignClassManager.getInstance().getSingle(FormElementCaseEditorProcessor.MARK_STRING); + if (processor == null) { + return extraTableEditor; + } + this.designer = WidgetPropertyPane.getInstance().getEditingFormDesigner(); + FitProvider wbTpl = (FitProvider) designer.getTarget(); + ReportFitAttrProvider fitAttr = wbTpl.getFitAttr(); + ElementCaseEditor editor = this.toData(); + //兼容之前报表块(之前三个选项为:默认 横向 双向 现在是:横向 双向 不自适应) + if (editor.getFitStateInPC() == 0 || processor.getFitStateInPC(fitAttr) == 0 ) { + editor.setReportFitAttr(null); + } + + ReportFitAttrProvider reportFit = editor.getReportFitAttr(); + if(fitAttr != null){ + reportFit = fitAttr.fitInBrowser() ? editor.getReportFitAttr() : fitAttr; + } + ReportFitAttrProvider reportFitAttr = editor.getReportFitAttr() == null ? fitAttr : reportFit; + PropertyDescriptor[] extraEditor = processor.createPropertyDescriptor(this.data.getClass(), reportFitAttr); + if (editor.getReportFitAttr() == null) { + editor.setReportFitInPc(processor.getFitStateInPC(fitAttr)); + } + return (CRPropertyDescriptor[]) ArrayUtils.addAll(extraTableEditor, extraEditor); + } + + + private CRPropertyDescriptor[] resolveCompatible() { + CRPropertyDescriptor[] extraProperty = new CRPropertyDescriptor[0]; + //这边有个插件兼容问题,之后还是要改回process才行 + Set set = ExtraDesignClassManager.getInstance().getArray(AbstractFormElementCaseEditorProvider.MARK_STRING); + for (FormElementCaseEditorProvider provider : set) { + if (provider == null) { + continue; + } + this.designer = WidgetPropertyPane.getInstance().getEditingFormDesigner(); + FormProvider formProvider = designer.getTarget(); + ElementCaseEditorProvider elementCaseEditorProvider = this.toData(); + PropertyDescriptor[] extraEditor = provider.createPropertyDescriptor(this.data.getClass(), formProvider, elementCaseEditorProvider); + extraProperty = (CRPropertyDescriptor[]) ArrayUtils.addAll(extraProperty, extraEditor); + } + return extraProperty; + } + + @Override + protected String getIconName() { + return "text_field_16.png"; + } + + /** + * 返回组件默认名 + * @return 组件类名(小写) + */ + public String createDefaultName() { + return "report"; + } + + @Override + protected JComponent initEditor() { + if (editor == null) { + setBorder(DEFALUTBORDER); + editor = new JPanel(); + editor.setBackground(null); + editor.setLayout(null); + imageLable = initImageBackground(); + + coverPanel = new CoverReportPane(); + coverPanel.setPreferredSize(imageLable.getPreferredSize()); + coverPanel.setBounds(imageLable.getBounds()); + + editor.add(coverPanel); + coverPanel.setVisible(false); + editor.add(imageLable); + } + return editor; + } + + /** + * 从data中获取到图片背景, 并设置到Label上 + */ + private UILabel initImageBackground(){ + UILabel imageLable = new UILabel(); + BufferedImage image = toData().getECImage(); + if (image == null) { + image = DEFAULT_BACKGROUND; + } + setLabelBackground(image, imageLable); + + return imageLable; + } + + /** + * 设置指定Label的背景 + */ + private void setLabelBackground(Image image, UILabel imageLable){ + ImageIcon icon = new ImageIcon(image); + imageLable.setIcon(icon); + imageLable.setOpaque(true); + imageLable.setLayout(null); + imageLable.setBounds(0, 0, icon.getIconWidth(), icon.getIconHeight()); + } + + /** + * 是否展现覆盖的pane + * @param display 是否 + */ + public void displayCoverPane(boolean display){ + isHovering = display; + coverPanel.setVisible(display); + coverPanel.setBounds(1, 1, (int) editor.getBounds().getWidth(), (int) editor.getBounds().getHeight()); + editor.repaint(); + } + + @Override + public void paintBorder(Graphics g, Rectangle bounds){ + if (!isHovering) { + super.paintBorder(g, bounds); + } + } + + /** + * 初始化大小 + * @return 尺寸 + */ + public Dimension initEditorSize() { + return BORDER_PREFERRED_SIZE; + } + + /** + * 是否是报表块 + * @return 是 + */ + public boolean isReport() { + return true; + } + + /** + * 该组件是否可以拖入参数面板 + * @return 是则返回true + */ + public boolean canEnterIntoParaPane(){ + return false; + } + + /** + * 返回报表块对应的widget + * @return 返回ElementCaseEditor + */ + public ElementCaseEditor toData() { + return ((ElementCaseEditor) data); + } + + public FormElementCaseProvider getElementCase() { + return toData().getElementCase(); + } + + public String getElementCaseContainerName() { + return toData().getWidgetName(); + } + + public void setElementCase(FormElementCaseProvider el) { + toData().setElementCase(el); + } + + public void setBackground(BufferedImage image){ + toData().setECImage(image); + setEditorIcon(image); + } + + private void setEditorIcon(BufferedImage image){ + setLabelBackground(image, imageLable); + } + + public Dimension getSize(){ + return new Dimension(this.getWidth(), this.getHeight()); + } + + /** + * 响应点击事件 + * @param editingMouseListener 事件处理器 + * @param e 点击事件 + */ + public void respondClick(EditingMouseListener editingMouseListener,MouseEvent e){ + HelpDialogManager.getInstance().setPane(coverPanel); + super.respondClick(editingMouseListener, e); + if (this.isHelpBtnOnFocus()) { + coverPanel.setMsgDisplay(e); + } else { + switchTab(e, editingMouseListener); + } + } + + + private void switchTab(MouseEvent e,EditingMouseListener editingMouseListener){ + FormDesigner designer = editingMouseListener.getDesigner(); + if (e.getButton() == MouseEvent.BUTTON1 && + (e.getClickCount() == 2 || designer.getCursor().getType() == Cursor.HAND_CURSOR)){ + FormElementCaseContainerProvider component = (FormElementCaseContainerProvider) designer.getComponentAt(e); + //切换设计器 + designer.switchTab(component); + } + } + + @Override + public WidgetPropertyUIProvider[] getWidgetPropertyUIProviders() { + return new WidgetPropertyUIProvider[]{ new ElementCasePropertyUI(this)}; + } + + /** + * data属性改变触发其他操作 + * + */ + public void firePropertyChange(){ + initStyle(); + } + + /** + * 是否支持设置可用 + * return boolean + */ + public boolean supportSetEnable(){ + return false; + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java index c252060b89..9d51e9e4e3 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java @@ -17,6 +17,7 @@ import com.fr.design.icon.IconPathConstants; import com.fr.design.mainframe.EditingMouseListener; import com.fr.design.mainframe.FormArea; import com.fr.design.mainframe.FormDesigner; +import com.fr.design.mainframe.HelpDialogManager; import com.fr.form.ui.Connector; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WAbsoluteLayout; @@ -52,6 +53,8 @@ public class XWAbsoluteLayout extends XLayoutContainer { //由于屏幕分辨率不同,界面上的容器大小可能不是默认的100%,此时拖入组件时,保存的大小按照100%时的计算 protected double containerPercent = 1.0; + private boolean isHovering = false; + private HashMap xConnectorMap; public XWAbsoluteLayout() { @@ -84,6 +87,20 @@ public class XWAbsoluteLayout extends XLayoutContainer { return new Dimension(500, 300); } + /** + * 是否展现覆盖的pane + * @param display 是否 + */ + public void displayCoverPane(boolean display){ +// if (isMouseEnter && !this.editable) { +// isHovering = display; +// coverPanel.setVisible(display); +// coverPanel.setPreferredSize(coverPanel.getPreferredSize()); +// coverPanel.setBounds(1, 1, 500, 300); +// coverPanel.repaint(); +// } + } + //根据屏幕大小来确定显示的百分比, 1440*900默认100%, 1366*768缩放90% private void initPercent(WAbsoluteLayout widget) { Toolkit toolkit = Toolkit.getDefaultToolkit(); @@ -498,6 +515,10 @@ public class XWAbsoluteLayout extends XLayoutContainer { editingMouseListener.startEditing(this, isEditing ? adapter.getDesignerEditor() : null, adapter); } } + HelpDialogManager.getInstance().setPane(coverPanel); + if (this.isHelpBtnOnFocus()) { + coverPanel.setMsgDisplay(e); + } } /** diff --git a/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java b/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java index 4738b565d8..380532d55b 100644 --- a/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java +++ b/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java @@ -260,7 +260,7 @@ public class EditingMouseListener extends MouseInputAdapter { public void mouseMoved(MouseEvent e) { XCreator component = designer.getComponentAt(e); - setCoverPaneNotDisplay(e, false); + setCoverPaneNotDisplay(component, e, false); if (processTopLayoutMouseMove(component, e)) { return; @@ -313,23 +313,27 @@ public class EditingMouseListener extends MouseInputAdapter { designer.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); } } - xElementCase.setHelpBtnOnFocus(false); - if (xElementCase.getCoverPane().getComponentCount() > 1) { - JComponent button1 = (JComponent) xElementCase.getCoverPane().getComponent(1); + setHelpBtnFocus(e, xElementCase); + } + + private void setHelpBtnFocus(MouseEvent e, XCreator component) { + component.setHelpBtnOnFocus(false); + if (component.getCoverPane().getComponentCount() > 1) { + JComponent button1 = (JComponent) component.getCoverPane().getComponent(1); int minX1 = button1.getX() + getParentPositionX(component, 0) - designer.getArea().getHorizontalValue(); int minY1 = button1.getY() + getParentPositionY(component, 0) - designer.getArea().getVerticalValue(); - if (e.getX() + GAP - xElementCase.getInsets().left > minX1 && e.getX() - GAP - xElementCase.getInsets().left < minX1 + button1.getWidth()) { - if (e.getY() + GAP - xElementCase.getInsets().top > minY1 && e.getY() - GAP - xElementCase.getInsets().top < minY1 + button1.getHeight()) { + if (e.getX() + GAP - component.getInsets().left > minX1 && e.getX() - GAP - component.getInsets().left < minX1 + button1.getWidth()) { + if (e.getY() + GAP - component.getInsets().top > minY1 && e.getY() - GAP - component.getInsets().top < minY1 + button1.getHeight()) { designer.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); - xElementCase.setHelpBtnOnFocus(true); + component.setHelpBtnOnFocus(true); } } } - xElementCase.displayCoverPane(true); - xElementCase.setDirections(Direction.TOP_BOTTOM_LEFT_RIGHT); + component.displayCoverPane(true); + component.setDirections(Direction.TOP_BOTTOM_LEFT_RIGHT); } - private void setCoverPaneNotDisplay(MouseEvent e, boolean isLinkedHelpDialog) { + private void setCoverPaneNotDisplay(XCreator component, MouseEvent e, boolean isLinkedHelpDialog) { if (xElementCase != null) { int x = getParentPositionX(xElementCase, 0) - designer.getArea().getHorizontalValue(); int y = getParentPositionY(xElementCase, 0) - designer.getArea().getVerticalValue(); @@ -337,15 +341,16 @@ public class EditingMouseListener extends MouseInputAdapter { if (rect.contains(e.getPoint())) { return; } - if (isLinkedHelpDialog) { - xElementCase.destroyHelpDialog(); - } + xElementCase.displayCoverPane(false); } if (xChartEditor != null) { xChartEditor.displayCoverPane(false); } - + if (isLinkedHelpDialog) { + component.destroyHelpDialog(); + } + component.displayCoverPane(false); if (xTopLayoutContainer != null) { xTopLayoutContainer.setMouseEnter(false); } @@ -391,8 +396,7 @@ public class EditingMouseListener extends MouseInputAdapter { designer.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); } } - xChartEditor.displayCoverPane(true); - xChartEditor.setDirections(Direction.TOP_BOTTOM_LEFT_RIGHT); + setHelpBtnFocus(e, xChartEditor); designer.repaint(); } } @@ -562,9 +566,6 @@ public class EditingMouseListener extends MouseInputAdapter { if (designer.getCursor().getType() != Cursor.DEFAULT_CURSOR) { designer.setCursor(Cursor.getDefaultCursor()); } - - setCoverPaneNotDisplay(e, true); - cancelPromptWidgetForbidEnter(); } diff --git a/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java b/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java index 486ad26949..b613c5bf32 100644 --- a/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java +++ b/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java @@ -13,10 +13,9 @@ import com.fr.design.form.util.XCreatorConstants; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.icon.IconPathConstants; import com.fr.design.utils.ComponentUtils; +import com.fr.form.share.AbstractSharableWidget; import com.fr.form.share.ShareLoader; import com.fr.form.ui.ElCaseBindInfo; -import com.fr.form.ui.ElementCaseEditor; -import com.fr.form.ui.SharableElementCaseEditor; import com.fr.form.ui.Widget; import com.fr.general.Inter; import com.fr.stable.Constants; @@ -84,14 +83,15 @@ public class FormCreatorDropTarget extends DropTarget { Widget widget = (addingXCreator.getTopLayout() != null) ? (addingXCreator.getTopLayout().toData()) : addingXCreator.toData(); if (addingXCreator.isShared()) { String shareId = addingXCreator.getShareId(); - SharableElementCaseEditor sharableEditor = ShareLoader.getLoader().getSharedElCaseEditorById(shareId); + AbstractSharableWidget sharableEditor = ShareLoader.getLoader().getSharedElCaseEditorById(shareId); ElCaseBindInfo bindInfo = ShareLoader.getLoader().getElCaseBindInfoById(shareId); if (sharableEditor != null && bindInfo != null) { - Map tdNameMap = TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()).addTableData(bindInfo.getName(), sharableEditor.getTableDataSource()); + Map tdNameMap = TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()).addTableData(bindInfo.getName(), ((AbstractSharableWidget)sharableEditor.getEditor()).getTableDataSource()); //合并数据集之后,可能会有数据集名称变化,做一下联动 //共享的组件拿的时候都是克隆的,这边改拖拽中克隆的对象而非新克隆对象,上面这个新克隆的对象只是为了拿数据集 - ElementCaseEditor elementCaseEditor = (ElementCaseEditor) widget; - elementCaseEditor.batchRenameTdName(tdNameMap); + for (Map.Entry entry : tdNameMap.entrySet()) { + designer.getTarget()._renameTableData(widget, entry.getKey(), entry.getValue()); + } } } designer.getSelectionModel().setSelectedCreators( diff --git a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java index d53bc04d5d..7fc518771b 100644 --- a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java +++ b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java @@ -118,21 +118,7 @@ public class FormWidgetDetailPane extends FormDockView{ initReuWidgetPanel(); initMenuPanel(); - card = new CardLayout(); - tabbedPane = new JPanel(); - tabbedPane.setLayout(card); - tabbedPane.add(REPORT_TAB, reuWidgetPanel); - tabbedPane.add(CHART_TAB, new JPanel()); - UIHeadGroup tabsHeaderIconPane = new UIHeadGroup(new String[] {REPORT_TAB, CHART_TAB}) { - @Override - public void tabChanged(int index) { - card.show(tabbedPane, labelButtonList.get(index).getText()); - } - }; - tabsHeaderIconPane.setNeedLeftRightOutLine(false); - - add(tabsHeaderIconPane, BorderLayout.NORTH); - add(tabbedPane, BorderLayout.CENTER); + add(reuWidgetPanel, BorderLayout.CENTER); } diff --git a/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java b/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java index 4379d517b3..af8dbbc143 100644 --- a/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java +++ b/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java @@ -4,6 +4,7 @@ import com.fr.base.vcs.DesignerMode; import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XCreatorUtils; import com.fr.design.gui.ilable.UILabel; +import com.fr.form.share.AbstractSharableWidget; import com.fr.share.ShareConstants; import com.fr.form.share.ShareLoader; import com.fr.form.ui.ElCaseBindInfo; @@ -196,7 +197,7 @@ public class ShareWidgetButton extends JPanel implements MouseListener, MouseMot creatorSource = ShareLoader.getLoader().getElCaseEditorById(shareId); } if (creatorSource != null) { - XCreator xCreator = XCreatorUtils.createXCreator(creatorSource); + XCreator xCreator = XCreatorUtils.createXCreator(((AbstractSharableWidget)creatorSource).getEditor()); xCreator.setShareId(shareId); WidgetToolBarPane.getTarget().startDraggingBean(xCreator); lastPressEvent = null; From accda436f91216444254a12fe80a5ad07e4f7d5d Mon Sep 17 00:00:00 2001 From: MoMeak Date: Mon, 12 Mar 2018 10:56:51 +0800 Subject: [PATCH 27/79] update --- .../src/com/fr/design/designer/creator/XChartEditor.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/designer_form/src/com/fr/design/designer/creator/XChartEditor.java b/designer_form/src/com/fr/design/designer/creator/XChartEditor.java index 409d58cb4a..a8562d644c 100644 --- a/designer_form/src/com/fr/design/designer/creator/XChartEditor.java +++ b/designer_form/src/com/fr/design/designer/creator/XChartEditor.java @@ -300,6 +300,10 @@ public class XChartEditor extends XBorderStyleWidgetCreator { editor.repaint(); } + public JComponent getCoverPane(){ + return coverPanel; + } + /** * 是否支持设置可用 * return boolean From be6600afeecc87567547c77125720a1bdd60f547 Mon Sep 17 00:00:00 2001 From: MoMeak Date: Mon, 12 Mar 2018 15:02:37 +0800 Subject: [PATCH 28/79] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B4=A8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/designer/creator/XWAbsoluteLayout.java | 14 -------------- .../fr/design/mainframe/FormCreatorDropTarget.java | 7 ++++--- .../fr/design/mainframe/FormWidgetDetailPane.java | 5 ++--- .../com/fr/design/mainframe/ShareWidgetButton.java | 14 +++++++------- .../com/fr/design/mainframe/ShareWidgetPane.java | 6 +++--- 5 files changed, 16 insertions(+), 30 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java index 9d51e9e4e3..36426ca048 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java @@ -87,20 +87,6 @@ public class XWAbsoluteLayout extends XLayoutContainer { return new Dimension(500, 300); } - /** - * 是否展现覆盖的pane - * @param display 是否 - */ - public void displayCoverPane(boolean display){ -// if (isMouseEnter && !this.editable) { -// isHovering = display; -// coverPanel.setVisible(display); -// coverPanel.setPreferredSize(coverPanel.getPreferredSize()); -// coverPanel.setBounds(1, 1, 500, 300); -// coverPanel.repaint(); -// } - } - //根据屏幕大小来确定显示的百分比, 1440*900默认100%, 1366*768缩放90% private void initPercent(WAbsoluteLayout widget) { Toolkit toolkit = Toolkit.getDefaultToolkit(); diff --git a/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java b/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java index b613c5bf32..7f43568140 100644 --- a/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java +++ b/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java @@ -14,8 +14,9 @@ import com.fr.design.gui.ibutton.UIButton; import com.fr.design.icon.IconPathConstants; import com.fr.design.utils.ComponentUtils; import com.fr.form.share.AbstractSharableWidget; +import com.fr.form.share.SharableEditorProvider; import com.fr.form.share.ShareLoader; -import com.fr.form.ui.ElCaseBindInfo; +import com.fr.form.ui.ShareableWidgetBindInfo; import com.fr.form.ui.Widget; import com.fr.general.Inter; import com.fr.stable.Constants; @@ -83,8 +84,8 @@ public class FormCreatorDropTarget extends DropTarget { Widget widget = (addingXCreator.getTopLayout() != null) ? (addingXCreator.getTopLayout().toData()) : addingXCreator.toData(); if (addingXCreator.isShared()) { String shareId = addingXCreator.getShareId(); - AbstractSharableWidget sharableEditor = ShareLoader.getLoader().getSharedElCaseEditorById(shareId); - ElCaseBindInfo bindInfo = ShareLoader.getLoader().getElCaseBindInfoById(shareId); + SharableEditorProvider sharableEditor = ShareLoader.getLoader().getSharedElCaseEditorById(shareId); + ShareableWidgetBindInfo bindInfo = ShareLoader.getLoader().getElCaseBindInfoById(shareId); if (sharableEditor != null && bindInfo != null) { Map tdNameMap = TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()).addTableData(bindInfo.getName(), ((AbstractSharableWidget)sharableEditor.getEditor()).getTableDataSource()); //合并数据集之后,可能会有数据集名称变化,做一下联动 diff --git a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java index 7fc518771b..0f6cca35d2 100644 --- a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java +++ b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java @@ -3,13 +3,12 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; import com.fr.base.FRContext; import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.ibutton.UIHeadGroup; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.form.share.ShareLoader; -import com.fr.form.ui.ElCaseBindInfo; +import com.fr.form.ui.ShareableWidgetBindInfo; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.general.SiteCenter; @@ -41,7 +40,7 @@ public class FormWidgetDetailPane extends FormDockView{ private UIScrollPane downPane; private JPanel reuWidgetPanel; private UIComboBox comboBox; - private ElCaseBindInfo[] elCaseBindInfoList; + private ShareableWidgetBindInfo[] elCaseBindInfoList; private UIButton deleteButton; private UIButton resetButton; private JPanel editPanel; diff --git a/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java b/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java index af8dbbc143..33b1210b35 100644 --- a/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java +++ b/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java @@ -4,10 +4,10 @@ import com.fr.base.vcs.DesignerMode; import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XCreatorUtils; import com.fr.design.gui.ilable.UILabel; -import com.fr.form.share.AbstractSharableWidget; +import com.fr.form.share.SharableEditorProvider; import com.fr.share.ShareConstants; import com.fr.form.share.ShareLoader; -import com.fr.form.ui.ElCaseBindInfo; +import com.fr.form.ui.ShareableWidgetBindInfo; import com.fr.form.ui.Widget; import com.fr.general.ComparatorUtils; import com.fr.general.IOUtils; @@ -32,7 +32,7 @@ import java.io.Serializable; * Time: 16:14 */ public class ShareWidgetButton extends JPanel implements MouseListener, MouseMotionListener, Serializable { - private ElCaseBindInfo bindInfo; + private ShareableWidgetBindInfo bindInfo; private MouseEvent lastPressEvent; private JPanel reportPane; private boolean isEdit; @@ -51,7 +51,7 @@ public class ShareWidgetButton extends JPanel implements MouseListener, MouseMot } }; - public ShareWidgetButton(ElCaseBindInfo bindInfo) { + public ShareWidgetButton(ShareableWidgetBindInfo bindInfo) { this.bindInfo = bindInfo; this.setPreferredSize(new Dimension(108, 68)); initUI(); @@ -128,11 +128,11 @@ public class ShareWidgetButton extends JPanel implements MouseListener, MouseMot }; } - public ElCaseBindInfo getBindInfo() { + public ShareableWidgetBindInfo getBindInfo() { return bindInfo; } - public void setBindInfo(ElCaseBindInfo bindInfo) { + public void setBindInfo(ShareableWidgetBindInfo bindInfo) { this.bindInfo = bindInfo; } @@ -197,7 +197,7 @@ public class ShareWidgetButton extends JPanel implements MouseListener, MouseMot creatorSource = ShareLoader.getLoader().getElCaseEditorById(shareId); } if (creatorSource != null) { - XCreator xCreator = XCreatorUtils.createXCreator(((AbstractSharableWidget)creatorSource).getEditor()); + XCreator xCreator = XCreatorUtils.createXCreator(((SharableEditorProvider)creatorSource).getEditor()); xCreator.setShareId(shareId); WidgetToolBarPane.getTarget().startDraggingBean(xCreator); lastPressEvent = null; diff --git a/designer_form/src/com/fr/design/mainframe/ShareWidgetPane.java b/designer_form/src/com/fr/design/mainframe/ShareWidgetPane.java index c5659d9bc1..0ec8a50551 100644 --- a/designer_form/src/com/fr/design/mainframe/ShareWidgetPane.java +++ b/designer_form/src/com/fr/design/mainframe/ShareWidgetPane.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe; -import com.fr.form.ui.ElCaseBindInfo; +import com.fr.form.ui.ShareableWidgetBindInfo; import javax.swing.*; import java.awt.*; @@ -12,12 +12,12 @@ import java.awt.*; */ public class ShareWidgetPane extends JPanel { - public ShareWidgetPane(ElCaseBindInfo[] elCaseBindInfoList, boolean isEdit) { + public ShareWidgetPane(ShareableWidgetBindInfo[] elCaseBindInfoList, boolean isEdit) { this.setBorder(BorderFactory.createEmptyBorder(10, 3, 0, 0));// 设置面板的边框 ,距离上、左、下、右 的距离 if (elCaseBindInfoList != null) { int rowCount = (elCaseBindInfoList.length + 1) / 2; this.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 10)); - for (ElCaseBindInfo rbModuleInfo : elCaseBindInfoList) { + for (ShareableWidgetBindInfo rbModuleInfo : elCaseBindInfoList) { ShareWidgetButton widgetButton = new ShareWidgetButton(rbModuleInfo); widgetButton.setElementCaseEdit(isEdit); this.add(widgetButton); From 0809f362235f4dd7139240e0a838d896e2f3dc1d Mon Sep 17 00:00:00 2001 From: MoMeak Date: Mon, 12 Mar 2018 16:33:29 +0800 Subject: [PATCH 29/79] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B4=A8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/FormCreatorDropTarget.java | 6 +++--- .../com/fr/design/mainframe/FormWidgetDetailPane.java | 4 ++-- .../src/com/fr/design/mainframe/ShareWidgetButton.java | 10 +++++----- .../src/com/fr/design/mainframe/ShareWidgetPane.java | 6 +++--- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java b/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java index 7f43568140..40b7616c27 100644 --- a/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java +++ b/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java @@ -16,7 +16,7 @@ import com.fr.design.utils.ComponentUtils; import com.fr.form.share.AbstractSharableWidget; import com.fr.form.share.SharableEditorProvider; import com.fr.form.share.ShareLoader; -import com.fr.form.ui.ShareableWidgetBindInfo; +import com.fr.form.ui.SharableWidgetBindInfo; import com.fr.form.ui.Widget; import com.fr.general.Inter; import com.fr.stable.Constants; @@ -85,13 +85,13 @@ public class FormCreatorDropTarget extends DropTarget { if (addingXCreator.isShared()) { String shareId = addingXCreator.getShareId(); SharableEditorProvider sharableEditor = ShareLoader.getLoader().getSharedElCaseEditorById(shareId); - ShareableWidgetBindInfo bindInfo = ShareLoader.getLoader().getElCaseBindInfoById(shareId); + SharableWidgetBindInfo bindInfo = ShareLoader.getLoader().getElCaseBindInfoById(shareId); if (sharableEditor != null && bindInfo != null) { Map tdNameMap = TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()).addTableData(bindInfo.getName(), ((AbstractSharableWidget)sharableEditor.getEditor()).getTableDataSource()); //合并数据集之后,可能会有数据集名称变化,做一下联动 //共享的组件拿的时候都是克隆的,这边改拖拽中克隆的对象而非新克隆对象,上面这个新克隆的对象只是为了拿数据集 for (Map.Entry entry : tdNameMap.entrySet()) { - designer.getTarget()._renameTableData(widget, entry.getKey(), entry.getValue()); + designer.getTarget().renameTableData(widget, entry.getKey(), entry.getValue()); } } } diff --git a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java index 0f6cca35d2..aad141d68c 100644 --- a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java +++ b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java @@ -8,7 +8,7 @@ import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.form.share.ShareLoader; -import com.fr.form.ui.ShareableWidgetBindInfo; +import com.fr.form.ui.SharableWidgetBindInfo; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.general.SiteCenter; @@ -40,7 +40,7 @@ public class FormWidgetDetailPane extends FormDockView{ private UIScrollPane downPane; private JPanel reuWidgetPanel; private UIComboBox comboBox; - private ShareableWidgetBindInfo[] elCaseBindInfoList; + private SharableWidgetBindInfo[] elCaseBindInfoList; private UIButton deleteButton; private UIButton resetButton; private JPanel editPanel; diff --git a/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java b/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java index 33b1210b35..94cb3ac5bf 100644 --- a/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java +++ b/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java @@ -7,7 +7,7 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.form.share.SharableEditorProvider; import com.fr.share.ShareConstants; import com.fr.form.share.ShareLoader; -import com.fr.form.ui.ShareableWidgetBindInfo; +import com.fr.form.ui.SharableWidgetBindInfo; import com.fr.form.ui.Widget; import com.fr.general.ComparatorUtils; import com.fr.general.IOUtils; @@ -32,7 +32,7 @@ import java.io.Serializable; * Time: 16:14 */ public class ShareWidgetButton extends JPanel implements MouseListener, MouseMotionListener, Serializable { - private ShareableWidgetBindInfo bindInfo; + private SharableWidgetBindInfo bindInfo; private MouseEvent lastPressEvent; private JPanel reportPane; private boolean isEdit; @@ -51,7 +51,7 @@ public class ShareWidgetButton extends JPanel implements MouseListener, MouseMot } }; - public ShareWidgetButton(ShareableWidgetBindInfo bindInfo) { + public ShareWidgetButton(SharableWidgetBindInfo bindInfo) { this.bindInfo = bindInfo; this.setPreferredSize(new Dimension(108, 68)); initUI(); @@ -128,11 +128,11 @@ public class ShareWidgetButton extends JPanel implements MouseListener, MouseMot }; } - public ShareableWidgetBindInfo getBindInfo() { + public SharableWidgetBindInfo getBindInfo() { return bindInfo; } - public void setBindInfo(ShareableWidgetBindInfo bindInfo) { + public void setBindInfo(SharableWidgetBindInfo bindInfo) { this.bindInfo = bindInfo; } diff --git a/designer_form/src/com/fr/design/mainframe/ShareWidgetPane.java b/designer_form/src/com/fr/design/mainframe/ShareWidgetPane.java index 0ec8a50551..32ce586c72 100644 --- a/designer_form/src/com/fr/design/mainframe/ShareWidgetPane.java +++ b/designer_form/src/com/fr/design/mainframe/ShareWidgetPane.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe; -import com.fr.form.ui.ShareableWidgetBindInfo; +import com.fr.form.ui.SharableWidgetBindInfo; import javax.swing.*; import java.awt.*; @@ -12,12 +12,12 @@ import java.awt.*; */ public class ShareWidgetPane extends JPanel { - public ShareWidgetPane(ShareableWidgetBindInfo[] elCaseBindInfoList, boolean isEdit) { + public ShareWidgetPane(SharableWidgetBindInfo[] elCaseBindInfoList, boolean isEdit) { this.setBorder(BorderFactory.createEmptyBorder(10, 3, 0, 0));// 设置面板的边框 ,距离上、左、下、右 的距离 if (elCaseBindInfoList != null) { int rowCount = (elCaseBindInfoList.length + 1) / 2; this.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 10)); - for (ShareableWidgetBindInfo rbModuleInfo : elCaseBindInfoList) { + for (SharableWidgetBindInfo rbModuleInfo : elCaseBindInfoList) { ShareWidgetButton widgetButton = new ShareWidgetButton(rbModuleInfo); widgetButton.setElementCaseEdit(isEdit); this.add(widgetButton); From 451d32c45ca77b3feb0235fc530c3173cc89550e Mon Sep 17 00:00:00 2001 From: MoMeak Date: Mon, 12 Mar 2018 18:28:44 +0800 Subject: [PATCH 30/79] =?UTF-8?q?REPORT-3435=20=E4=BB=A3=E7=A0=81=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/mainframe/FormCreatorDropTarget.java | 3 +-- .../src/com/fr/design/mainframe/ShareWidgetButton.java | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java b/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java index 40b7616c27..a9356fa260 100644 --- a/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java +++ b/designer_form/src/com/fr/design/mainframe/FormCreatorDropTarget.java @@ -13,7 +13,6 @@ import com.fr.design.form.util.XCreatorConstants; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.icon.IconPathConstants; import com.fr.design.utils.ComponentUtils; -import com.fr.form.share.AbstractSharableWidget; import com.fr.form.share.SharableEditorProvider; import com.fr.form.share.ShareLoader; import com.fr.form.ui.SharableWidgetBindInfo; @@ -87,7 +86,7 @@ public class FormCreatorDropTarget extends DropTarget { SharableEditorProvider sharableEditor = ShareLoader.getLoader().getSharedElCaseEditorById(shareId); SharableWidgetBindInfo bindInfo = ShareLoader.getLoader().getElCaseBindInfoById(shareId); if (sharableEditor != null && bindInfo != null) { - Map tdNameMap = TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()).addTableData(bindInfo.getName(), ((AbstractSharableWidget)sharableEditor.getEditor()).getTableDataSource()); + Map tdNameMap = TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()).addTableData(bindInfo.getName(), sharableEditor.getTableDataSource()); //合并数据集之后,可能会有数据集名称变化,做一下联动 //共享的组件拿的时候都是克隆的,这边改拖拽中克隆的对象而非新克隆对象,上面这个新克隆的对象只是为了拿数据集 for (Map.Entry entry : tdNameMap.entrySet()) { diff --git a/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java b/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java index 94cb3ac5bf..1ab621fdde 100644 --- a/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java +++ b/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java @@ -4,7 +4,6 @@ import com.fr.base.vcs.DesignerMode; import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XCreatorUtils; import com.fr.design.gui.ilable.UILabel; -import com.fr.form.share.SharableEditorProvider; import com.fr.share.ShareConstants; import com.fr.form.share.ShareLoader; import com.fr.form.ui.SharableWidgetBindInfo; @@ -197,7 +196,7 @@ public class ShareWidgetButton extends JPanel implements MouseListener, MouseMot creatorSource = ShareLoader.getLoader().getElCaseEditorById(shareId); } if (creatorSource != null) { - XCreator xCreator = XCreatorUtils.createXCreator(((SharableEditorProvider)creatorSource).getEditor()); + XCreator xCreator = XCreatorUtils.createXCreator(creatorSource); xCreator.setShareId(shareId); WidgetToolBarPane.getTarget().startDraggingBean(xCreator); lastPressEvent = null; From 30d40cf09a106335f62044c6a85b36c0dbf5e25b Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Tue, 13 Mar 2018 11:01:51 +0800 Subject: [PATCH 31/79] =?UTF-8?q?REPORT-7138=20charteditor=E6=94=BEengine-?= =?UTF-8?q?cross?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FormWidgetDefinePaneFactoryBase.java | 69 ++++++++++++++++--- 1 file changed, 58 insertions(+), 11 deletions(-) diff --git a/designer_form/src/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java b/designer_form/src/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java index 0de1e2bdaf..87610840f0 100644 --- a/designer_form/src/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java +++ b/designer_form/src/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java @@ -4,18 +4,68 @@ import com.fr.base.FRContext; import com.fr.design.designer.creator.XCreator; import com.fr.design.gui.core.WidgetConstants; import com.fr.design.mainframe.FormDesigner; -import com.fr.design.widget.ui.designer.WidgetDefinePane; import com.fr.design.parameter.RootDesignDefinePane; -import com.fr.design.widget.ui.designer.*; -import com.fr.design.widget.ui.designer.layout.*; +import com.fr.design.widget.ui.designer.CheckBoxDefinePane; +import com.fr.design.widget.ui.designer.CheckBoxGroupDefinePane; +import com.fr.design.widget.ui.designer.ComboBoxDefinePane; +import com.fr.design.widget.ui.designer.ComboCheckBoxDefinePane; +import com.fr.design.widget.ui.designer.DateEditorDefinePane; +import com.fr.design.widget.ui.designer.FreeButtonDefinePane; +import com.fr.design.widget.ui.designer.IframeEditorDefinePane; +import com.fr.design.widget.ui.designer.LabelDefinePane; +import com.fr.design.widget.ui.designer.MultiFileEditorPane; +import com.fr.design.widget.ui.designer.NoneWidgetDefinePane; +import com.fr.design.widget.ui.designer.NumberEditorDefinePane; +import com.fr.design.widget.ui.designer.PasswordDefinePane; +import com.fr.design.widget.ui.designer.RadioDefinePane; +import com.fr.design.widget.ui.designer.RadioGroupDefinePane; +import com.fr.design.widget.ui.designer.TextAreaDefinePane; +import com.fr.design.widget.ui.designer.TextFieldEditorDefinePane; +import com.fr.design.widget.ui.designer.TreeComboBoxEditorDefinePane; +import com.fr.design.widget.ui.designer.TreeEditorDefinePane; +import com.fr.design.widget.ui.designer.UserEditorDefinePane; +import com.fr.design.widget.ui.designer.WidgetDefinePane; +import com.fr.design.widget.ui.designer.layout.BorderStyleWidgetDefinePane; +import com.fr.design.widget.ui.designer.layout.ElementEditorDefinePane; +import com.fr.design.widget.ui.designer.layout.FRAbsoluteBodyLayoutDefinePane; +import com.fr.design.widget.ui.designer.layout.FRAbsoluteLayoutDefinePane; +import com.fr.design.widget.ui.designer.layout.FRFitLayoutDefinePane; +import com.fr.design.widget.ui.designer.layout.WCardLayoutDefinePane; +import com.fr.design.widget.ui.designer.layout.WCardMainLayoutDefinePane; +import com.fr.design.widget.ui.designer.layout.WCardTagLayoutDefinePane; +import com.fr.design.widget.ui.designer.layout.WTabFitLayoutDefinePane; import com.fr.form.parameter.FormSubmitButton; -import com.fr.form.ui.*; -import com.fr.form.ui.container.*; +import com.fr.form.ui.Button; +import com.fr.form.ui.ChartEditor; +import com.fr.form.ui.CheckBox; +import com.fr.form.ui.CheckBoxGroup; +import com.fr.form.ui.ComboBox; +import com.fr.form.ui.ComboCheckBox; +import com.fr.form.ui.DateEditor; +import com.fr.form.ui.ElementCaseEditor; +import com.fr.form.ui.FreeButton; +import com.fr.form.ui.IframeEditor; +import com.fr.form.ui.Label; +import com.fr.form.ui.MultiFileEditor; +import com.fr.form.ui.NameWidget; +import com.fr.form.ui.NoneWidget; +import com.fr.form.ui.NumberEditor; +import com.fr.form.ui.Password; +import com.fr.form.ui.Radio; +import com.fr.form.ui.RadioGroup; +import com.fr.form.ui.TextArea; +import com.fr.form.ui.TextEditor; +import com.fr.form.ui.TreeComboBoxEditor; +import com.fr.form.ui.TreeEditor; +import com.fr.form.ui.Widget; +import com.fr.form.ui.container.WAbsoluteBodyLayout; +import com.fr.form.ui.container.WAbsoluteLayout; +import com.fr.form.ui.container.WCardLayout; +import com.fr.form.ui.container.WFitLayout; +import com.fr.form.ui.container.WParameterLayout; import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; import com.fr.form.ui.container.cardlayout.WCardTagLayout; import com.fr.form.ui.container.cardlayout.WTabFitLayout; -import com.fr.stable.bridge.BridgeMark; -import com.fr.stable.bridge.StableFactory; import java.lang.reflect.Constructor; import java.util.HashMap; @@ -56,10 +106,7 @@ public class FormWidgetDefinePaneFactoryBase { defineMap.put(FormSubmitButton.class, new Appearance(FreeButtonDefinePane.class, WidgetConstants.BUTTON + "")); defineMap.put(WFitLayout.class, new Appearance(FRFitLayoutDefinePane.class, "wFitLayout")); defineMap.put(WCardMainBorderLayout.class, new Appearance(WCardMainLayoutDefinePane.class, "wCardMainBorderLayout")); - if (StableFactory.getMarkedClass(BridgeMark.CHART_EDITOR, AbstractBorderStyleWidget.class) != null) { - defineMap.put(StableFactory.getMarkedClass(BridgeMark.CHART_EDITOR, AbstractBorderStyleWidget.class), new Appearance(BorderStyleWidgetDefinePane.class, "chartEditor")); - } - + defineMap.put(ChartEditor.class, new Appearance(BorderStyleWidgetDefinePane.class, "chartEditor")); defineMap.put(WAbsoluteLayout.class, new Appearance(FRAbsoluteLayoutDefinePane.class, "wAbsoluteLayout")); defineMap.put(ElementCaseEditor.class, new Appearance(ElementEditorDefinePane.class, "elementCaseEditor")); defineMap.put(WAbsoluteBodyLayout.class, new Appearance(FRAbsoluteBodyLayoutDefinePane.class, "wAbsoluteBodyLayout")); From 46c2a9eee80c9d34b184a2e5311eb88e457da469 Mon Sep 17 00:00:00 2001 From: zack Date: Tue, 13 Mar 2018 14:02:52 +0800 Subject: [PATCH 32/79] =?UTF-8?q?REPORT-6374=20=E7=BC=96=E8=AF=91=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/gui/frpane/ImgChooseWrapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/gui/frpane/ImgChooseWrapper.java b/designer_base/src/com/fr/design/gui/frpane/ImgChooseWrapper.java index 040d2126b9..eecbea855d 100644 --- a/designer_base/src/com/fr/design/gui/frpane/ImgChooseWrapper.java +++ b/designer_base/src/com/fr/design/gui/frpane/ImgChooseWrapper.java @@ -66,7 +66,7 @@ public class ImgChooseWrapper { public void dealWithImageFile(int returnVal) { if (returnVal != JFileChooser.CANCEL_OPTION) { - File selectedFile = imageFileChooser.getSelectedFile(); + final File selectedFile = imageFileChooser.getSelectedFile(); if (selectedFile != null && selectedFile.isFile()) { if (previewPane != null) { From 4d9ff6249effbecc80f2699123aed009b77330d0 Mon Sep 17 00:00:00 2001 From: zack Date: Tue, 13 Mar 2018 14:28:57 +0800 Subject: [PATCH 33/79] =?UTF-8?q?REPORT-6374=20=E5=9B=BE=E7=89=87=E5=8E=8B?= =?UTF-8?q?=E7=BC=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/utils/ImageUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/utils/ImageUtils.java b/designer_base/src/com/fr/design/utils/ImageUtils.java index 5ff8dc90da..633c8a6150 100644 --- a/designer_base/src/com/fr/design/utils/ImageUtils.java +++ b/designer_base/src/com/fr/design/utils/ImageUtils.java @@ -84,7 +84,7 @@ public class ImageUtils { } // 得到指定Format图片的writer Iterator iter = ImageIO - .getImageWritersByFormatName("JPEG");// 得到迭代器 + .getImageWritersByFormatName("jpeg");// 得到迭代器 ImageWriter writer = iter.next(); // 得到指定writer的输出参数设置(ImageWriteParam ) From af9ce54f31a6c68ffd7674b33d6e3f37dc0fc357 Mon Sep 17 00:00:00 2001 From: zack Date: Tue, 13 Mar 2018 15:06:51 +0800 Subject: [PATCH 34/79] =?UTF-8?q?REPORT-6374=20=E6=89=93=E5=8C=85=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/module/ChartEmptyDataStylePane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/module/ChartEmptyDataStylePane.java b/designer_chart/src/com/fr/design/module/ChartEmptyDataStylePane.java index 6b4e2eafa3..64098f42d5 100644 --- a/designer_chart/src/com/fr/design/module/ChartEmptyDataStylePane.java +++ b/designer_chart/src/com/fr/design/module/ChartEmptyDataStylePane.java @@ -164,7 +164,7 @@ public class ChartEmptyDataStylePane extends AbstractAttrNoScrollPane { public void actionPerformed(ActionEvent evt) { int returnVal = imageFileChooser.showOpenDialog(ChartEmptyDataStylePane.this); if (returnVal != JFileChooser.CANCEL_OPTION) { - File selectedFile = imageFileChooser.getSelectedFile(); + final File selectedFile = imageFileChooser.getSelectedFile(); if (selectedFile != null && selectedFile.isFile()) { previewPane.showLoading(); From 972e02aa07bdf01a4f46779c4dcff1fa2d0f53bc Mon Sep 17 00:00:00 2001 From: zack Date: Tue, 13 Mar 2018 15:25:04 +0800 Subject: [PATCH 35/79] =?UTF-8?q?REPORT-6374=20=E5=9B=BE=E7=89=87=E5=8E=8B?= =?UTF-8?q?=E7=BC=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/utils/ImageUtils.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/utils/ImageUtils.java b/designer_base/src/com/fr/design/utils/ImageUtils.java index 633c8a6150..9698b9ae70 100644 --- a/designer_base/src/com/fr/design/utils/ImageUtils.java +++ b/designer_base/src/com/fr/design/utils/ImageUtils.java @@ -51,10 +51,10 @@ public class ImageUtils { * @throws IOException */ public static BufferedImage imageCompress(File imageFile, float quality) throws IOException { + BufferedImage result = BaseUtils.readImage(imageFile.getPath()); if (imageFile == null) { return null; } - BufferedImage result = BaseUtils.readImage(imageFile.getPath()); if (canbeCompressedToJPEG(imageFile)) { return jpegCompress(result, quality); } @@ -62,10 +62,10 @@ public class ImageUtils { } public static boolean canbeCompressedToJPEG(File imageFile) { - if (ComparatorUtils.equals(getImageType(imageFile), "jpeg")) { + if (ComparatorUtils.equals(getImageType(imageFile), "JPEG")) {//JPEG大写 return true; } - if (ComparatorUtils.equals(getImageType(imageFile), "png")) { + if (ComparatorUtils.equals(getImageType(imageFile), "png")) {//png小写 return !isAlphaAreaOverload(imageFile);//少量透明度系数的png直接压缩jpg } return false; From 695fe5a5a8b07d74b1b474ebcd3cb8f81c95c75d Mon Sep 17 00:00:00 2001 From: zack Date: Wed, 14 Mar 2018 16:26:42 +0800 Subject: [PATCH 36/79] =?UTF-8?q?REPORT-7165=20=E9=83=A8=E5=88=86=E6=8F=92?= =?UTF-8?q?=E5=85=A5=E5=9B=BE=E7=89=87=E8=81=94=E5=8A=A8=E5=A4=B1=E6=95=88?= =?UTF-8?q?,=E6=96=87=E4=BB=B6=E9=80=89=E6=8B=A9=E6=A1=86=E5=9B=BD?= =?UTF-8?q?=E9=99=85=E5=8C=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/gui/frpane/ImgChooseWrapper.java | 45 +++- .../ImageBackgroundQuickPane.java | 233 +++++++++--------- .../background/image/ExpandFileChooser.java | 11 +- .../background/image/ImageFileChooser.java | 2 +- .../background/image/ImageSelectPane.java | 7 +- .../background/impl/ImageBackgroundPane.java | 5 +- 6 files changed, 171 insertions(+), 132 deletions(-) diff --git a/designer_base/src/com/fr/design/gui/frpane/ImgChooseWrapper.java b/designer_base/src/com/fr/design/gui/frpane/ImgChooseWrapper.java index eecbea855d..b0cab22076 100644 --- a/designer_base/src/com/fr/design/gui/frpane/ImgChooseWrapper.java +++ b/designer_base/src/com/fr/design/gui/frpane/ImgChooseWrapper.java @@ -2,13 +2,18 @@ package com.fr.design.gui.frpane; import com.fr.base.BaseUtils; import com.fr.base.Style; +import com.fr.design.gui.ilable.UILabel; import com.fr.design.style.background.image.ImageFileChooser; import com.fr.design.style.background.image.ImagePreviewer; import com.fr.design.utils.ImageUtils; +import com.fr.general.Inter; import com.fr.stable.CoreGraphHelper; +import com.fr.stable.StringUtils; import javax.swing.JFileChooser; import javax.swing.SwingWorker; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import java.awt.Image; import java.io.File; @@ -24,15 +29,30 @@ public class ImgChooseWrapper { private Style imageStyle = null; private SwingWorker imageWorker; + private ChangeListener changeListener; + + private transient Image selectImage; + private UILabel imageSizeLabel; public static ImgChooseWrapper getInstance(ImagePreviewer previewPane, ImageFileChooser imageFileChooser, Style imageStyle) { - return new ImgChooseWrapper(previewPane, imageFileChooser, imageStyle); + return getInstance(previewPane, imageFileChooser, imageStyle, null); + } + + public static ImgChooseWrapper getInstance(ImagePreviewer previewPane, ImageFileChooser imageFileChooser, Style imageStyle, ChangeListener changeListener) { + return new ImgChooseWrapper(previewPane, imageFileChooser, imageStyle, changeListener, null, null); } - private ImgChooseWrapper(ImagePreviewer previewPane, ImageFileChooser imageFileChooser, Style imageStyle) { + public static ImgChooseWrapper getInstance(Image selectImage, UILabel imageSizeLabel, ImageFileChooser imageFileChooser) { + return new ImgChooseWrapper(null, imageFileChooser, null, null, selectImage, imageSizeLabel); + } + + private ImgChooseWrapper(ImagePreviewer previewPane, ImageFileChooser imageFileChooser, Style imageStyle, ChangeListener changeListener, Image selectImage, UILabel imageSizeLabel) { this.previewPane = previewPane; this.imageFileChooser = imageFileChooser; this.imageStyle = imageStyle; + this.changeListener = changeListener; + this.selectImage = selectImage; + this.imageSizeLabel = imageSizeLabel; } @@ -86,6 +106,8 @@ public class ImgChooseWrapper { previewPane.setImage(image); previewPane.repaint(); } + checkLabelText(); + fireChangeListener(); return null; } }; @@ -101,4 +123,23 @@ public class ImgChooseWrapper { } } } + + private void fireChangeListener() { + if (this.changeListener != null) { + ChangeEvent evt = new ChangeEvent(this); + this.changeListener.stateChanged(evt); + } + } + + private void checkLabelText() { + if (imageSizeLabel == null) { + return; + } + if (selectImage == null) { + imageSizeLabel.setText(StringUtils.EMPTY); + } else { + imageSizeLabel.setText(selectImage.getWidth(null) + "x" + + selectImage.getHeight(null) + Inter.getLocText("px")); + } + } } diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java index ed623f501d..e4e4f059cb 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java @@ -16,7 +16,6 @@ import com.fr.general.Inter; import com.fr.stable.Constants; import javax.swing.JPanel; -import javax.swing.SwingWorker; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.BorderLayout; @@ -30,149 +29,147 @@ import java.awt.event.ActionListener; */ public class ImageBackgroundQuickPane extends BackgroundQuickPane { - private ImagePreviewPane previewPane; - private Style imageStyle = null; - private ChangeListener changeListener = null; - private ImageFileChooser imageFileChooser; + private ImagePreviewPane previewPane; + private Style imageStyle = null; + private ChangeListener changeListener = null; + private ImageFileChooser imageFileChooser; - private UIButtonGroup imageLayoutPane; - private SwingWorker imageWorker; + private UIButtonGroup imageLayoutPane; public ImageBackgroundQuickPane() { this(true); } - public ImageBackgroundQuickPane(boolean hasImageLayout) { - this.setLayout(new BorderLayout(0, 4)); - String[] nameArray = {Inter.getLocText("FR-Background_Image_Default"), Inter.getLocText("FR-Background_Image_Titled"), Inter.getLocText("FR-Background_Image_Adjust"), Inter.getLocText("FR-Background_Image_Extend")}; - Byte[] valueArray = {Constants.IMAGE_CENTER, Constants.IMAGE_TILED, Constants.IMAGE_EXTEND, Constants.IMAGE_ADJUST}; - imageLayoutPane = new UIButtonGroup(nameArray, valueArray); - imageLayoutPane.setSelectedIndex(0); + public ImageBackgroundQuickPane(boolean hasImageLayout) { + this.setLayout(new BorderLayout(0, 4)); + String[] nameArray = {Inter.getLocText("FR-Background_Image_Default"), Inter.getLocText("FR-Background_Image_Titled"), Inter.getLocText("FR-Background_Image_Adjust"), Inter.getLocText("FR-Background_Image_Extend")}; + Byte[] valueArray = {Constants.IMAGE_CENTER, Constants.IMAGE_TILED, Constants.IMAGE_EXTEND, Constants.IMAGE_ADJUST}; + imageLayoutPane = new UIButtonGroup(nameArray, valueArray); + imageLayoutPane.setSelectedIndex(0); - previewPane = new ImagePreviewPane(); - JPanel borderPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - borderPane.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 5)); - borderPane.setPreferredSize(new Dimension(0, 145)); - borderPane.add(previewPane, BorderLayout.CENTER); - this.add(borderPane, BorderLayout.NORTH); - previewPane.addChangeListener(imageSizeChangeListener); + previewPane = new ImagePreviewPane(); + JPanel borderPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + borderPane.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 5)); + borderPane.setPreferredSize(new Dimension(0, 145)); + borderPane.add(previewPane, BorderLayout.CENTER); + this.add(borderPane, BorderLayout.NORTH); + previewPane.addChangeListener(imageSizeChangeListener); - JPanel southPane = new JPanel(new BorderLayout(0, 4)); - JPanel contentPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - contentPane.add(southPane, BorderLayout.NORTH); - this.add(contentPane, BorderLayout.CENTER); + JPanel southPane = new JPanel(new BorderLayout(0, 4)); + JPanel contentPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + contentPane.add(southPane, BorderLayout.NORTH); + this.add(contentPane, BorderLayout.CENTER); - UIButton selectPictureButton = new UIButton(Inter.getLocText("Image-Select_Picture")); - selectPictureButton.addActionListener(selectPictureActionListener); + UIButton selectPictureButton = new UIButton(Inter.getLocText("Image-Select_Picture")); + selectPictureButton.addActionListener(selectPictureActionListener); - if(hasImageLayout){ + if (hasImageLayout) { southPane.add(imageLayoutPane, BorderLayout.SOUTH); } - southPane.add(selectPictureButton, BorderLayout.CENTER); - - imageLayoutPane.addChangeListener(new ChangeListener() { - - @Override - public void stateChanged(ChangeEvent e) { - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(imageLayoutPane.getSelectedItem()); - previewPane.setImageStyle(imageStyle); - previewPane.repaint(); - } - }); - } - - /** - * Select picture. - */ - ActionListener selectPictureActionListener = new ActionListener() { - - public void actionPerformed(ActionEvent evt) { - if (imageFileChooser == null) { - imageFileChooser = new ImageFileChooser(); - imageFileChooser.setMultiSelectionEnabled(false); - } - int returnVal = imageFileChooser.showOpenDialog(DesignerContext.getDesignerFrame()); - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(imageLayoutPane.getSelectedItem()); - ImgChooseWrapper.getInstance(previewPane, imageFileChooser, imageStyle).dealWithImageFile(returnVal); - fireChagneListener(); - } - }; - - - - - public void populateBean(Background background) { - - ImageBackground imageBackground = (ImageBackground) background; - imageLayoutPane.setSelectedItem((byte) imageBackground.getLayout()); - Style.DEFAULT_STYLE.deriveImageLayout(imageBackground.getLayout()); - - previewPane.setImageStyle(ImageBackgroundQuickPane.this.imageStyle); - previewPane.setImage(imageBackground.getImage()); - previewPane.repaint(); - } - - public Background updateBean() { - ImageBackground imageBackground = new ImageBackground(previewPane.getImage()); - imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(imageLayoutPane.getSelectedItem()); - imageBackground.setLayout(imageStyle.getImageLayout()); - return imageBackground; - } - - /** - * 给组件登记一个观察者监听事件 - * - * @param listener 观察者监听事件 - */ - public void registerChangeListener(final UIObserverListener listener) { - changeListener = new ChangeListener() { - public void stateChanged(ChangeEvent e) { - listener.doChange(); - } - }; - imageLayoutPane.addChangeListener(changeListener); - } - - - private void fireChagneListener() { - if (this.changeListener != null) { - ChangeEvent evt = new ChangeEvent(this); - this.changeListener.stateChanged(evt); - } - } - - ChangeListener imageSizeChangeListener = new ChangeListener() { - - public void stateChanged(ChangeEvent evt) { + southPane.add(selectPictureButton, BorderLayout.CENTER); + + imageLayoutPane.addChangeListener(new ChangeListener() { + + @Override + public void stateChanged(ChangeEvent e) { + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(imageLayoutPane.getSelectedItem()); + previewPane.setImageStyle(imageStyle); + previewPane.repaint(); + } + }); + } + + /** + * Select picture. + */ + ActionListener selectPictureActionListener = new ActionListener() { + + public void actionPerformed(ActionEvent evt) { + if (imageFileChooser == null) { + imageFileChooser = new ImageFileChooser(); + imageFileChooser.setMultiSelectionEnabled(false); + } + int returnVal = imageFileChooser.showOpenDialog(DesignerContext.getDesignerFrame()); + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(imageLayoutPane.getSelectedItem()); + ImgChooseWrapper.getInstance(previewPane, imageFileChooser, imageStyle, changeListener).dealWithImageFile(returnVal); + } + }; + + + public void populateBean(Background background) { + + ImageBackground imageBackground = (ImageBackground) background; + imageLayoutPane.setSelectedItem((byte) imageBackground.getLayout()); + Style.DEFAULT_STYLE.deriveImageLayout(imageBackground.getLayout()); + + previewPane.setImageStyle(ImageBackgroundQuickPane.this.imageStyle); + previewPane.setImage(imageBackground.getImage()); + previewPane.repaint(); + } + + public Background updateBean() { + ImageBackground imageBackground = new ImageBackground(previewPane.getImage()); + imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(imageLayoutPane.getSelectedItem()); + imageBackground.setLayout(imageStyle.getImageLayout()); + return imageBackground; + } + + /** + * 给组件登记一个观察者监听事件 + * + * @param listener 观察者监听事件 + */ + public void registerChangeListener(final UIObserverListener listener) { + changeListener = new ChangeListener() { + public void stateChanged(ChangeEvent e) { + listener.doChange(); + } + }; + imageLayoutPane.addChangeListener(changeListener); + } + + + private void fireChagneListener() { + if (this.changeListener != null) { + ChangeEvent evt = new ChangeEvent(this); + this.changeListener.stateChanged(evt); + } + } + + ChangeListener imageSizeChangeListener = new ChangeListener() { + + public void stateChanged(ChangeEvent evt) { if (imageLayoutPane.getSelectedItem() != null) { imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(imageLayoutPane.getSelectedItem()); previewPane.setImageStyle(imageStyle); previewPane.repaint(); } - } - }; + } + }; /** * 判断是否是图片背景 - * @param background 背景 + * + * @param background 背景 * @return 判断是否是图片背景 */ - public boolean accept(Background background) { - return background instanceof ImageBackground; - } + public boolean accept(Background background) { + return background instanceof ImageBackground; + } /** * 标题 + * * @return 标题 */ - public String title4PopupWindow() { - return Inter.getLocText("FR-Background_Image"); - } - - @Override - public void reset() { - imageLayoutPane.setSelectedIndex(0); - previewPane.setImage(null); - } + public String title4PopupWindow() { + return Inter.getLocText("FR-Background_Image"); + } + + @Override + public void reset() { + imageLayoutPane.setSelectedIndex(0); + previewPane.setImage(null); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/style/background/image/ExpandFileChooser.java b/designer_base/src/com/fr/design/style/background/image/ExpandFileChooser.java index 3dc73b49d9..23ced04d00 100644 --- a/designer_base/src/com/fr/design/style/background/image/ExpandFileChooser.java +++ b/designer_base/src/com/fr/design/style/background/image/ExpandFileChooser.java @@ -33,28 +33,31 @@ public class ExpandFileChooser extends JFileChooser { private static final int DEFAULT_WIDTH = 520; public ExpandFileChooser() { - this(StringUtils.EMPTY); + this(StringUtils.EMPTY, StringUtils.EMPTY); } - public ExpandFileChooser(String checkBoxText) { + public ExpandFileChooser(String checkBoxText, String approveButtonText) { JPanel previewContainerPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); MetalFileChooserUI chooserUI = (MetalFileChooserUI) getUI(); + String approveText = StringUtils.isEmpty(approveButtonText) ? chooserUI.getApproveButtonText(this) : approveButtonText; dialog = new JDialog(); dialog.setSize(new Dimension(DEFAULT_WIDTH, 362)); dialog.add(previewContainerPane); dialog.setIconImage(BaseUtils.readImage("/com/fr/base/images/oem/logo.png")); - dialog.setTitle(chooserUI.getApproveButtonText(this)); + dialog.setTitle(approveText); previewContainerPane.add(this, BorderLayout.CENTER); JPanel bottomControlPanel = new JPanel(); bottomControlPanel.setLayout(new ImageAreaLayout()); bottomControlPanel.setPreferredSize(new Dimension(DEFAULT_WIDTH, 40)); - approve = new UIButton(chooserUI.getApproveButtonText(this)); + + approve = new UIButton(approveText); cancel = new UIButton(Inter.getLocText("FR-Designer_Button-Cancel")); if (StringUtils.isNotEmpty(checkBoxText)) { compressCheckBox = new UICheckBox(checkBoxText); + compressCheckBox.setSelected(true); bottomControlPanel.add(compressCheckBox); } bottomControlPanel.add(approve); diff --git a/designer_base/src/com/fr/design/style/background/image/ImageFileChooser.java b/designer_base/src/com/fr/design/style/background/image/ImageFileChooser.java index 4d2f0a527f..8532e78457 100644 --- a/designer_base/src/com/fr/design/style/background/image/ImageFileChooser.java +++ b/designer_base/src/com/fr/design/style/background/image/ImageFileChooser.java @@ -20,7 +20,7 @@ import java.util.Hashtable; public class ImageFileChooser extends ExpandFileChooser { public ImageFileChooser() { - super(Inter.getLocText("FR-Designer_Image_Compress")); + super(Inter.getLocText("FR-Designer_Image_Compress"),Inter.getLocText("FR-Designer_Open")); ExampleFileFilter bothFilter = new ExampleFileFilter( new String[]{"jpg", "gif", "png", "bmp"}, Inter.getLocText("Image-Image_Files")); diff --git a/designer_base/src/com/fr/design/style/background/image/ImageSelectPane.java b/designer_base/src/com/fr/design/style/background/image/ImageSelectPane.java index 0e36b23c9f..02b4c4af85 100644 --- a/designer_base/src/com/fr/design/style/background/image/ImageSelectPane.java +++ b/designer_base/src/com/fr/design/style/background/image/ImageSelectPane.java @@ -96,13 +96,12 @@ public class ImageSelectPane extends BackgroundPane4BoxChange { public void actionPerformed(ActionEvent evt) { int returnVal = imageFileChooser.showOpenDialog(ImageSelectPane.this); if (returnVal != JFileChooser.CANCEL_OPTION) { - ImgChooseWrapper.getInstance(null, imageFileChooser, null).dealWithImageFile(returnVal); - chechLabelText(); + ImgChooseWrapper.getInstance(selectImage,imageSizeLabel,imageFileChooser).dealWithImageFile(returnVal); } } }; - private void chechLabelText() { + private void checkLabelText() { if (selectImage == null) { imageSizeLabel.setText(""); } else { @@ -125,7 +124,7 @@ public class ImageSelectPane extends BackgroundPane4BoxChange { } - chechLabelText(); + checkLabelText(); } public void populateAlpha(int alpha) { diff --git a/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java b/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java index 2c158a835b..ae050c610d 100644 --- a/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java +++ b/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java @@ -63,7 +63,7 @@ public class ImageBackgroundPane extends BackgroundDetailPane { imageFileChooser.setMultiSelectionEnabled(false); } - public JPanel initSelectFilePane(){ + public JPanel initSelectFilePane() { JPanel selectFilePane = FRGUIPaneFactory.createBorderLayout_L_Pane(); selectFilePane.setBorder(BorderFactory.createEmptyBorder(8, 2, 4, 0)); @@ -120,8 +120,7 @@ public class ImageBackgroundPane extends BackgroundDetailPane { public void actionPerformed(ActionEvent evt) { int returnVal = imageFileChooser.showOpenDialog(ImageBackgroundPane.this); setImageStyle(); - ImgChooseWrapper.getInstance(previewPane, imageFileChooser, imageStyle).dealWithImageFile(returnVal); - fireChagneListener(); + ImgChooseWrapper.getInstance(previewPane, imageFileChooser, imageStyle, changeListener).dealWithImageFile(returnVal); } }; From d2a780b25ac00de3c7ff171638dcc1d6b4a3ef07 Mon Sep 17 00:00:00 2001 From: zack Date: Thu, 15 Mar 2018 11:12:29 +0800 Subject: [PATCH 37/79] =?UTF-8?q?REPORT-7165=20=E5=9B=BE=E7=89=87=E5=8E=8B?= =?UTF-8?q?=E7=BC=A9=E5=AF=BC=E8=87=B4=E6=8C=89=E9=92=AE=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E8=83=8C=E6=99=AF=E5=A4=B1=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/style/background/impl/ImageBackgroundPane.java | 2 +- .../style/background/impl/ImageButtonBackgroundPane.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java b/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java index ae050c610d..bb2a87188f 100644 --- a/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java +++ b/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java @@ -124,7 +124,7 @@ public class ImageBackgroundPane extends BackgroundDetailPane { } }; - private void setImageStyle() { + public void setImageStyle() { if (tiledRadioButton.isSelected()) { imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_TILED); } else if (adjustRadioButton.isSelected()) { diff --git a/designer_base/src/com/fr/design/style/background/impl/ImageButtonBackgroundPane.java b/designer_base/src/com/fr/design/style/background/impl/ImageButtonBackgroundPane.java index 5dc5fcece1..09bc74bc2b 100644 --- a/designer_base/src/com/fr/design/style/background/impl/ImageButtonBackgroundPane.java +++ b/designer_base/src/com/fr/design/style/background/impl/ImageButtonBackgroundPane.java @@ -58,6 +58,9 @@ public class ImageButtonBackgroundPane extends ImageBackgroundPane { }); } + @Override + public void setImageStyle() { + } public void populate(Background background) { if (background != null && background instanceof ImageBackground) { From cfe45be38527e97295ce70e185145a8e9d321c16 Mon Sep 17 00:00:00 2001 From: zack Date: Thu, 15 Mar 2018 11:14:03 +0800 Subject: [PATCH 38/79] =?UTF-8?q?protect=E5=B0=B1=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/style/background/impl/ImageBackgroundPane.java | 2 +- .../design/style/background/impl/ImageButtonBackgroundPane.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java b/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java index bb2a87188f..4af1c6ccd6 100644 --- a/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java +++ b/designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java @@ -124,7 +124,7 @@ public class ImageBackgroundPane extends BackgroundDetailPane { } }; - public void setImageStyle() { + protected void setImageStyle() { if (tiledRadioButton.isSelected()) { imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_TILED); } else if (adjustRadioButton.isSelected()) { diff --git a/designer_base/src/com/fr/design/style/background/impl/ImageButtonBackgroundPane.java b/designer_base/src/com/fr/design/style/background/impl/ImageButtonBackgroundPane.java index 09bc74bc2b..2332cd843e 100644 --- a/designer_base/src/com/fr/design/style/background/impl/ImageButtonBackgroundPane.java +++ b/designer_base/src/com/fr/design/style/background/impl/ImageButtonBackgroundPane.java @@ -59,7 +59,7 @@ public class ImageButtonBackgroundPane extends ImageBackgroundPane { } @Override - public void setImageStyle() { + protected void setImageStyle() { } public void populate(Background background) { From a3735405399308ce9ebf29927fa289091a7af656 Mon Sep 17 00:00:00 2001 From: MoMeak Date: Fri, 16 Mar 2018 12:48:36 +0800 Subject: [PATCH 39/79] =?UTF-8?q?REPORT-7190=20=E4=B8=8E=E4=B9=8B=E5=89=8D?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E7=9A=84=E5=85=BC=E5=AE=B9=E6=80=A7,?= =?UTF-8?q?=E4=BC=A0=E4=B8=80=E4=BB=BD=E5=88=B0release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/ShareWidgetButton.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java b/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java index 1ab621fdde..44c1ed28ec 100644 --- a/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java +++ b/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java @@ -194,13 +194,13 @@ public class ShareWidgetButton extends JPanel implements MouseListener, MouseMot } shareId = no.getBindInfo().getId(); creatorSource = ShareLoader.getLoader().getElCaseEditorById(shareId); - } - if (creatorSource != null) { - XCreator xCreator = XCreatorUtils.createXCreator(creatorSource); - xCreator.setShareId(shareId); - WidgetToolBarPane.getTarget().startDraggingBean(xCreator); - lastPressEvent = null; - this.setBorder(null); + if (creatorSource != null) { + XCreator xCreator = XCreatorUtils.createXCreator(creatorSource, new Dimension(no.getBindInfo().getWidth(), no.getBindInfo().getHeight())); + xCreator.setShareId(shareId); + WidgetToolBarPane.getTarget().startDraggingBean(xCreator); + lastPressEvent = null; + this.setBorder(null); + } } } From 10e4ad807164d57afe1c4e6c242756c3b338933c Mon Sep 17 00:00:00 2001 From: plough Date: Fri, 16 Mar 2018 16:01:11 +0800 Subject: [PATCH 40/79] =?UTF-8?q?REPORT-6438=20=E6=89=93=E5=8D=B0=E6=94=B9?= =?UTF-8?q?=E8=BF=9B=E4=B8=80=20=E6=9C=9F=3D>=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E9=87=8C=E9=9A=90=E8=97=8F=E7=BC=A9=E6=94=BE=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/webattr/printsettings/NativePrintSettingPane.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java index 316b461dcb..05eab29d8e 100644 --- a/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java @@ -146,7 +146,7 @@ public class NativePrintSettingPane extends JPanel { // TableLayout double p = TableLayout.PREFERRED; - double[] rowSize = {p, p, p, p, p, p, p, p}; + double[] rowSize = {p, p, p, p, p, p, p}; double[] columnSize = {60, p}; Component[][] components = { {new UILabel(Inter.getLocText("FR-Designer_Printer") + ":"), printerPane}, @@ -155,7 +155,8 @@ public class NativePrintSettingPane extends JPanel { {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Paper") + ":"), paperSettingCheckPane}, {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Layout") + ":"), layoutSettingCheckPane}, {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Margin") + ":"), pageMarginCheckPane}, - {new UILabel(Inter.getLocText("FR-Designer_Scale_EnlargeOrReduce") + ":"), fitPaperSizeCheck}, + // 此功能暂时不做,在界面上隐藏缩放选项 +// {new UILabel(Inter.getLocText("FR-Designer_Scale_EnlargeOrReduce") + ":"), fitPaperSizeCheck}, {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Order") + ":"), pageOrderSettingPane} }; return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 15); From e2cc29e4928bf9ddfa6d837aeb58118197b02976 Mon Sep 17 00:00:00 2001 From: kerry Date: Mon, 19 Mar 2018 14:45:47 +0800 Subject: [PATCH 41/79] =?UTF-8?q?REPORT-5907=20=E8=A1=A8=E5=8D=95=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E7=8A=B6=E6=80=81=EF=BC=88=E9=BB=98=E8=AE=A4=E3=80=81?= =?UTF-8?q?=E6=82=AC=E5=81=9C=E3=80=81=E9=80=89=E4=B8=AD=E3=80=81=E7=BC=96?= =?UTF-8?q?=E8=BE=91=EF=BC=89=E8=A7=86=E8=A7=89=E6=94=B9=E8=89=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/images/control/newEdit.png | Bin 442 -> 314 bytes .../adapters/layout/FRFitLayoutAdapter.java | 9 +++-- .../designer/creator/XWAbsoluteLayout.java | 14 +++++--- .../cardlayout/XWCardMainBorderLayout.java | 15 +++++--- .../design/form/util/XCreatorConstants.java | 2 ++ .../com/fr/design/mainframe/CoverPane.java | 34 +++++++++++++++--- 6 files changed, 56 insertions(+), 18 deletions(-) diff --git a/designer_base/src/com/fr/design/images/control/newEdit.png b/designer_base/src/com/fr/design/images/control/newEdit.png index 49843ce8ec011ec1b28e30ef46948e0859458a35..a54ad7419c483f21ab8d5f4f416dd96f34119ec7 100644 GIT binary patch delta 275 zcmV+u0qp*|1G)l`Fn<8_Nkl7z*BT#`C z5^Jyl3gBYYH?Xq~>=Jd8VP^h+GlUJ!+4JJqK2bw733)E*CUQG?B5*bVlrA({q(rob z`pyE>CD8{{3I!x{iizogdi18x2>e-K&xyDu2QYH~qSX>0{(oK`5rB3lDlsAe;Yf5k zl>*jk+6{xKG}$t>ZRDNF%hF+m>376d`;g~gFnobu5S?(G%iNE@+7Jv>!`OIBpMT3R z$ps9_efNI2R9{l+BXt#29;SFf0T?u%U>Op$Zt-ig4o$u@(H$kLP(qA%Dmf=UIa-5aykB09=zI ziUCZNfa*jReMRrzKFyw5#8XOX>ALMr&eKMW zJT-wS!W@MAu;mlD*Kr(rnq}E7*3lC=t#yJpjvf35z*-YR#B0C5yDG)lKtI+Ak|a5U yTkBTK@zOMfSI2dYJ)VEdcF?H)higce(;t3lj2I-~$PHou0000 Date: Mon, 19 Mar 2018 14:52:07 +0800 Subject: [PATCH 42/79] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/designer/creator/XWAbsoluteLayout.java | 2 +- .../designer/creator/cardlayout/XWCardMainBorderLayout.java | 2 +- designer_form/src/com/fr/design/mainframe/CoverPane.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java index e907894afa..0d92efe3a4 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java @@ -463,7 +463,7 @@ public class XWAbsoluteLayout extends XLayoutContainer { null, this ); - g2d.setColor(new Color(255, 255, 255)); + g2d.setColor(Color.WHITE); //画编辑文字 g2d.drawString(Inter.getLocText("FR-Designer_Edit"), x + w / 2 - 2, y + h / 2 + 5); g.setColor(XCreatorConstants.FORM_BORDER_COLOR); diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java index 78aeb1b541..07f06ff1d8 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java @@ -356,7 +356,7 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ null, this ); - g2d.setColor(new Color(255, 255, 255)); + g2d.setColor(Color.WHITE); //画编辑文字 g2d.drawString(Inter.getLocText("FR-Designer_Edit"), x + w / 2 - 2, y + h / 2 + 5); g.setColor(XCreatorConstants.FORM_BORDER_COLOR); diff --git a/designer_form/src/com/fr/design/mainframe/CoverPane.java b/designer_form/src/com/fr/design/mainframe/CoverPane.java index 6128973a9c..5b359b06c6 100644 --- a/designer_form/src/com/fr/design/mainframe/CoverPane.java +++ b/designer_form/src/com/fr/design/mainframe/CoverPane.java @@ -50,7 +50,7 @@ public class CoverPane extends JPanel { }; editButton.setBorderPainted(false); editButton.setExtraPainted(false); - editButton.setForeground(new Color(255, 255, 255)); + editButton.setForeground(Color.WHITE); add(editButton); } From 237f242eff5955a43242b4006d26d6181e3114c6 Mon Sep 17 00:00:00 2001 From: hzzz Date: Tue, 20 Mar 2018 09:15:16 +0800 Subject: [PATCH 43/79] =?UTF-8?q?REPORT-6710=20=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E6=A8=A1=E6=9D=BFtab=E6=A0=8F=E7=9A=84=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E6=99=AE=E9=80=9A=E6=8A=A5=E8=A1=A8=E6=8C=89=E9=92=AE=E5=81=8F?= =?UTF-8?q?=E5=B7=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/file/NewTemplatePane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/file/NewTemplatePane.java b/designer_base/src/com/fr/design/file/NewTemplatePane.java index 9bca4f0b4a..dc3f0438d6 100644 --- a/designer_base/src/com/fr/design/file/NewTemplatePane.java +++ b/designer_base/src/com/fr/design/file/NewTemplatePane.java @@ -139,7 +139,7 @@ public abstract class NewTemplatePane extends JComponent implements MouseListene if (needGrayNewCpt()) { newWorkBookIconMode = GRAY_NEW_CPT; } else if (isOverNewIcon(evtX)) { - newIconStartX = 0; + newIconStartX = PRE_GAP; newWorkBookIconMode = getMouseOverNew(); } From ed11381daa56c85b2c597a9ba6e8ad5fa7276fa3 Mon Sep 17 00:00:00 2001 From: plough Date: Tue, 20 Mar 2018 16:16:31 +0800 Subject: [PATCH 44/79] =?UTF-8?q?REPORT-7210=20=E6=89=93=E5=8D=B0=E9=AA=8C?= =?UTF-8?q?=E6=94=B6=E9=97=AE=E9=A2=98=E4=BB=A5=E5=8F=8A=E5=85=BC=E5=AE=B9?= =?UTF-8?q?=E5=A4=84=E7=90=86=3D>=20=E4=BB=A3=E7=A0=81=E8=A7=84=E8=8C=83?= =?UTF-8?q?=EF=BC=88=E6=BC=8F=E4=BC=A0=E4=BB=A3=E7=A0=81=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../printsettings/NativePrintSettingPane.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java index 05eab29d8e..3cfaba441a 100644 --- a/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java @@ -257,13 +257,13 @@ public class NativePrintSettingPane extends JPanel { printerComboBox.setSelectedItem(nativePrintAttr.getPrinterName()); copySpinner.setValue(nativePrintAttr.getCopy()); - if (nativePrintAttr.isPrintCurrentPage()) { + if (nativePrintAttr.getPageType().equals(NativePrintAttr.PageType.ALL_PAGES)) { + allPageRadioButton.setSelected(true); + } else if (nativePrintAttr.getPageType().equals(NativePrintAttr.PageType.CURRENT_PAGE)) { currentPageRadioButton.setSelected(true); - } else if (StringUtils.isNotEmpty(nativePrintAttr.getArea())) { + } else { customPageRadioButton.setSelected(true); specifiedAreaField.setText(nativePrintAttr.getArea()); - } else { - allPageRadioButton.setSelected(true); } specifiedAreaField.setEnabled(customPageRadioButton.isSelected()); @@ -289,10 +289,13 @@ public class NativePrintSettingPane extends JPanel { nativePrintAttr.setCopy((int)copySpinner.getValue()); // 页码 - if (customPageRadioButton.isSelected()) { - nativePrintAttr.setArea(specifiedAreaField.getText()); + if (allPageRadioButton.isSelected()) { + nativePrintAttr.setPageType(NativePrintAttr.PageType.ALL_PAGES); + } else if (currentPageRadioButton.isSelected()) { + nativePrintAttr.setPageType(NativePrintAttr.PageType.CURRENT_PAGE); } else { - nativePrintAttr.setPrintCurrentPage(currentPageRadioButton.isSelected()); + nativePrintAttr.setPageType(NativePrintAttr.PageType.SPECIFIED_PAGES); + nativePrintAttr.setArea(specifiedAreaField.getText()); } nativePrintAttr.setInheritPagePaperSetting(inheritPagePaperSettingCheck.isSelected()); From fc81d50549462160ae3bed60d306d118df9cd5c3 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Wed, 21 Mar 2018 18:10:05 +0800 Subject: [PATCH 45/79] =?UTF-8?q?=E6=97=A0=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=E5=81=9A=E7=9F=AD=E4=BF=A1=E4=BA=8B=E4=BB=B6=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E5=8F=91=E7=8E=B0=E7=9A=84=E8=AE=BE=E8=AE=A1=E5=99=A8bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/editor/editor/ColumnRowEditor.java | 153 +++++---- .../fr/design/editor/editor/TextEditor.java | 320 +++++++++--------- 2 files changed, 248 insertions(+), 225 deletions(-) diff --git a/designer_base/src/com/fr/design/editor/editor/ColumnRowEditor.java b/designer_base/src/com/fr/design/editor/editor/ColumnRowEditor.java index 7c90d3d9a4..2da3bc3108 100644 --- a/designer_base/src/com/fr/design/editor/editor/ColumnRowEditor.java +++ b/designer_base/src/com/fr/design/editor/editor/ColumnRowEditor.java @@ -1,74 +1,81 @@ -package com.fr.design.editor.editor; - -import com.fr.design.gui.columnrow.ColumnRowPane; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.stable.ColumnRow; - -import java.awt.*; - -/** - * the editor to edit ColumnRow - * - * @editor zhou - * @since 2012-3-29下午6:01:37 - */ -public class ColumnRowEditor extends Editor { - - private ColumnRowPane crPane; - - public ColumnRowEditor() { - this(""); - } - - public ColumnRowEditor(String name) { - this(null, name); - } - - - public ColumnRowEditor(ColumnRow value) { - this(value, ""); - } - - public ColumnRowEditor(ColumnRow value, String name) { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - crPane = new ColumnRowPane(); - this.add(crPane, BorderLayout.CENTER); - this.setValue(value); - this.setName(name); - } - - @Override - public ColumnRow getValue() { - return this.crPane.update(); - } - - @Override - public void setValue(ColumnRow value) { - if (value == null) { - value = ColumnRow.valueOf(0, 0); - } - - this.crPane.populate(value); - } - - @Override - public void setEnabled(boolean enabled) { - super.setEnabled(enabled); - - this.crPane.setEnabled(enabled); - } - - @Override - public void requestFocus() { - this.crPane.requestFocus(); - } - - public String getIconName() { - return "cell"; - } - - @Override - public boolean accept(Object object) { - return object instanceof ColumnRow; - } +package com.fr.design.editor.editor; + +import com.fr.design.gui.columnrow.ColumnRowPane; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.stable.ColumnRow; + +import java.awt.BorderLayout; + +/** + * the editor to edit ColumnRow + * + * @author zhou + * @since 2012-3-29下午6:01:37 + */ +public class ColumnRowEditor extends Editor { + + private ColumnRowPane crPane; + + public ColumnRowEditor() { + this(""); + } + + public ColumnRowEditor(String name) { + this(null, name); + } + + + public ColumnRowEditor(ColumnRow value) { + this(value, ""); + } + + public ColumnRowEditor(ColumnRow value, String name) { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + crPane = new ColumnRowPane(); + this.add(crPane, BorderLayout.CENTER); + this.setValue(value); + this.setName(name); + } + + @Override + public ColumnRow getValue() { + return this.crPane.update(); + } + + @Override + public void setValue(ColumnRow value) { + if (value == null) { + value = ColumnRow.valueOf(0, 0); + } + + this.crPane.populate(value); + } + + @Override + public void setEnabled(boolean enabled) { + super.setEnabled(enabled); + + this.crPane.setEnabled(enabled); + } + + @Override + public void requestFocus() { + this.crPane.requestFocus(); + } + + @Override + public String getIconName() { + return "cell"; + } + + @Override + public boolean accept(Object object) { + return object instanceof ColumnRow; + } + + @Override + public void clearData() { + super.clearData(); + this.setValue(null); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/editor/editor/TextEditor.java b/designer_base/src/com/fr/design/editor/editor/TextEditor.java index e997f23ec1..630f6956a8 100644 --- a/designer_base/src/com/fr/design/editor/editor/TextEditor.java +++ b/designer_base/src/com/fr/design/editor/editor/TextEditor.java @@ -1,153 +1,169 @@ -/* - * Copyright(c) 2001-2010, FineReport Inc, All Rights Reserved. - */ -package com.fr.design.editor.editor; - -import java.awt.BorderLayout; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; -import java.awt.event.KeyListener; - -import com.fr.design.gui.itextfield.UITextField; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.general.Inter; -import com.fr.stable.StringUtils; - -/** - * CellEditor used to edit String object. - * - * @editor zhou - * @since 2012-3-29下午6:00:43 - */ -public class TextEditor extends Editor { - - private UITextField textField; // text field. - // the old value of text field. - private String oldValue = StringUtils.EMPTY; - - /** - * Constructor. - */ - public TextEditor() { - this(null); - } - - public TextEditor(String value) { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - textField = new UITextField(); - textField.setBorder(null); - this.add(textField, BorderLayout.CENTER); - this.textField.addKeyListener(textKeyListener); - - this.setValue(value); - this.setName(Inter.getLocText("Parameter-String")); - } - - public UITextField getTextField() { - return this.textField; - } - - /** - * Returns the horizontal alignment of the CellEditor. Valid keys are: - *

    - *
  • UITextField.LEFT - *
  • UITextField.CENTER - *
  • UITextField.RIGHT - *
  • UITextField.LEADING - *
  • UITextField.TRAILING - *
- */ - public int getHorizontalAlignment() { - return this.textField.getHorizontalAlignment(); - } - - /** - * Sets the horizontal alignment of the CellEditor. Valid keys are: - *
    - *
  • UITextField.LEFT - *
  • UITextField.CENTER - *
  • UITextField.RIGHT - *
  • UITextField.LEADING - *
  • UITextField.TRAILING - *
- */ - public void setHorizontalAlignment(int horizontalAlignment) { - this.textField.setHorizontalAlignment(horizontalAlignment); - } - - /** - * Return the value of the CellEditor. - */ - @Override - public String getValue() { - return this.textField.getText(); - } - - /** - * Set the value to the CellEditor. - */ - @Override - public void setValue(String value) { - // populate data to UI - if (value == null) { - value = StringUtils.EMPTY; - } - - oldValue = value.toString(); - this.textField.setText(oldValue); - } - - /** - * Sets whether or not this component is enabled. - */ - @Override - public void setEnabled(boolean enabled) { - super.setEnabled(enabled); - this.textField.setEnabled(enabled); - } - - - /** - * 请求焦点 - */ - public void requestFocus() { - this.textField.requestFocus(); - } - - KeyListener textKeyListener = new KeyAdapter() { - - @Override - public void keyReleased(KeyEvent evt) { - int code = evt.getKeyCode(); - if (code == KeyEvent.VK_ESCAPE) { - textField.setText(oldValue); - } - if (code == KeyEvent.VK_ENTER) { - fireEditingStopped(); - } else { - fireStateChanged(); - } - } - }; - - /** - * 被选中时文本输入框请求焦点 - */ - public void selected() { - this.textField.requestFocus(); - } - - public String getIconName() { - return "type_string"; - } - - /** - * 判断object是否是字符类型 - * - * @param object 需要判断的object - * @return 是字符类型则返回true - */ - public boolean accept(Object object) { - return object instanceof String; - } +/* + * Copyright(c) 2001-2010, FineReport Inc, All Rights Reserved. + */ +package com.fr.design.editor.editor; + +import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.general.Inter; +import com.fr.stable.StringUtils; + +import java.awt.BorderLayout; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; + +/** + * CellEditor used to edit String object. + * + * @author zhou + * @since 2012-3-29下午6:00:43 + */ +public class TextEditor extends Editor { + + /** + * text field. + */ + private UITextField textField; + /** + * the old value of text field. + */ + private String oldValue = StringUtils.EMPTY; + + /** + * Constructor. + */ + public TextEditor() { + this(null); + } + + public TextEditor(String value) { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + textField = new UITextField(); + textField.setBorder(null); + this.add(textField, BorderLayout.CENTER); + this.textField.addKeyListener(textKeyListener); + + this.setValue(value); + this.setName(Inter.getLocText("Parameter-String")); + } + + public UITextField getTextField() { + return this.textField; + } + + /** + * Returns the horizontal alignment of the CellEditor. Valid keys are: + *
    + *
  • UITextField.LEFT + *
  • UITextField.CENTER + *
  • UITextField.RIGHT + *
  • UITextField.LEADING + *
  • UITextField.TRAILING + *
+ */ + public int getHorizontalAlignment() { + return this.textField.getHorizontalAlignment(); + } + + /** + * Sets the horizontal alignment of the CellEditor. Valid keys are: + *
    + *
  • UITextField.LEFT + *
  • UITextField.CENTER + *
  • UITextField.RIGHT + *
  • UITextField.LEADING + *
  • UITextField.TRAILING + *
+ */ + public void setHorizontalAlignment(int horizontalAlignment) { + this.textField.setHorizontalAlignment(horizontalAlignment); + } + + /** + * Return the value of the CellEditor. + */ + @Override + public String getValue() { + return this.textField.getText(); + } + + /** + * Set the value to the CellEditor. + */ + @Override + public void setValue(String value) { + // populate data to UI + if (value == null) { + value = StringUtils.EMPTY; + } + + oldValue = value; + this.textField.setText(oldValue); + } + + /** + * Sets whether or not this component is enabled. + */ + @Override + public void setEnabled(boolean enabled) { + super.setEnabled(enabled); + this.textField.setEnabled(enabled); + } + + + /** + * 请求焦点 + */ + @Override + public void requestFocus() { + this.textField.requestFocus(); + } + + KeyListener textKeyListener = new KeyAdapter() { + + @Override + public void keyReleased(KeyEvent evt) { + int code = evt.getKeyCode(); + if (code == KeyEvent.VK_ESCAPE) { + textField.setText(oldValue); + } + if (code == KeyEvent.VK_ENTER) { + fireEditingStopped(); + } else { + fireStateChanged(); + } + } + }; + + /** + * 被选中时文本输入框请求焦点 + */ + @Override + public void selected() { + this.textField.requestFocus(); + } + + @Override + public String getIconName() { + return "type_string"; + } + + /** + * 判断object是否是字符类型 + * + * @param object 需要判断的object + * @return 是字符类型则返回true + */ + @Override + public boolean accept(Object object) { + return object instanceof String; + } + + @Override + public void clearData() { + super.clearData(); + this.textField.setText(StringUtils.EMPTY); + this.oldValue = StringUtils.EMPTY; + } } \ No newline at end of file From ea10c4b712d01e1938c807208eec19e28423e042 Mon Sep 17 00:00:00 2001 From: kerry Date: Thu, 22 Mar 2018 09:56:47 +0800 Subject: [PATCH 46/79] =?UTF-8?q?REPORT-7270=20=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E6=89=93=E5=BC=80=E6=A8=A1=E6=9D=BF=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/designer/creator/cardlayout/XCardSwitchButton.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java index d8fdbce92f..604323d8e2 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java @@ -5,6 +5,7 @@ package com.fr.design.designer.creator.cardlayout; import com.fr.base.BaseUtils; import com.fr.base.GraphHelper; +import com.fr.base.background.ColorBackground; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; import com.fr.design.designer.beans.models.SelectionModel; @@ -322,7 +323,7 @@ public class XCardSwitchButton extends XButton { //画背景 private void drawBackground(CardSwitchButton button, WidgetTitle widgetTitle){ - Background background = widgetTitle.getBackground(); + Background background = widgetTitle.getBackground() == null ? ColorBackground.getInstance(NORMAL_GRAL) : widgetTitle.getBackground(); TemplateStyle templateStyle = ((WCardTagLayout) tagLayout.toData()).getTemplateStyle(); //获取当前tab的index CardSwitchButton currentButton = (CardSwitchButton) this.toData(); From 1851df67cf3fa23f8af702a2ee683e2d55b6a84b Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 22 Mar 2018 10:44:00 +0800 Subject: [PATCH 47/79] =?UTF-8?q?REPORT-7241=20=E6=A8=A1=E6=9D=BF-?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E8=AE=BE=E7=BD=AE=E6=B2=A1=E6=9C=89=E6=95=88?= =?UTF-8?q?=E6=9E=9C=EF=BC=8C=E5=8F=AA=E8=B5=B0=E5=85=A8=E5=B1=80=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/ReportPrintSettingAction.java | 10 +++---- .../EditReportServerParameterPane.java | 13 +++++--- .../printsettings/PrintSettingPane.java | 30 +++++++++---------- .../printsettings/ReportPrintSettingPane.java | 21 +++++++------ 4 files changed, 39 insertions(+), 35 deletions(-) diff --git a/designer/src/com/fr/design/actions/report/ReportPrintSettingAction.java b/designer/src/com/fr/design/actions/report/ReportPrintSettingAction.java index 5288bd5d11..4dfe2d3a3c 100644 --- a/designer/src/com/fr/design/actions/report/ReportPrintSettingAction.java +++ b/designer/src/com/fr/design/actions/report/ReportPrintSettingAction.java @@ -11,7 +11,7 @@ import com.fr.design.webattr.printsettings.ReportPrintSettingPane; import com.fr.general.IOUtils; import com.fr.general.Inter; import com.fr.main.TemplateWorkBook; -import com.fr.print.PrintAttr; +import com.fr.print.PrintSettingsAttrMark; import javax.swing.KeyStroke; import java.awt.event.ActionEvent; @@ -41,15 +41,15 @@ public class ReportPrintSettingAction extends JWorkBookAction { return; } final TemplateWorkBook wbTpl = jwb.getTarget(); - PrintAttr printAttr = wbTpl.getReportWebAttr().getPrintAttr(); + PrintSettingsAttrMark printSettings = PrintSettingsAttrMark.loadFromFinebook(wbTpl, false); final ReportPrintSettingPane reportPrintSettingPane = new ReportPrintSettingPane(); - reportPrintSettingPane.populate(printAttr); + reportPrintSettingPane.populate(printSettings); BasicDialog dialog = reportPrintSettingPane.showWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { @Override public void doOk() { - PrintAttr newPrintAttr = reportPrintSettingPane.updateBean(); - wbTpl.getReportWebAttr().setPrintAttr(newPrintAttr); + PrintSettingsAttrMark newPrintSettings = reportPrintSettingPane.updateBean(); + wbTpl.addAttrMark(newPrintSettings); jwb.fireTargetModified(); } }); diff --git a/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java b/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java index 233d0c88a2..dda4f17a8b 100644 --- a/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java +++ b/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java @@ -14,6 +14,8 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.webattr.printsettings.PrintSettingPane; import com.fr.general.Inter; +import com.fr.print.PrintSettingsAttrMark; +import com.fr.report.web.button.Print; import com.fr.stable.project.ProjectConstants; import com.fr.web.attr.ReportWebAttr; @@ -35,6 +37,7 @@ public class EditReportServerParameterPane extends LoadingBasicPane { // private FormToolBarPane formPane; private WriteToolBarPane writePane; private ReportWebAttr webAttr; + private PrintSettingsAttrMark printSettings; private WebCssPane cssPane; @@ -91,9 +94,10 @@ public class EditReportServerParameterPane extends LoadingBasicPane { writePane.populateBean(webAttr.getWebWrite()); cssPane.populate(webAttr); jsPane.populate(webAttr); - printSettingPane.populate(webAttr.getPrintAttr()); } - + printSettings = PrintSettingsAttrMark.loadFromServerConfig(); + printSettingPane.populate(printSettings); + this.errorTemplatePane.populateBean(reportServerConfigManager.getErrorTemplate()); } @@ -109,10 +113,11 @@ public class EditReportServerParameterPane extends LoadingBasicPane { webAttr.setWebPage(pagePane.updateBean()); webAttr.setWebView(viewPane.updateBean()); webAttr.setWebWrite(writePane.updateBean()); - cssPane.update(webAttr); jsPane.update(webAttr); - webAttr.setPrintAttr(printSettingPane.updateBean()); + + printSettings = printSettingPane.updateBean(); + reportServerConfigManager.putGlobalAttribute(PrintSettingsAttrMark.class, printSettings); reportServerConfigManager.setErrorTemplate(this.errorTemplatePane.updateBean()); } diff --git a/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java index 0aaa5594eb..8e99a2075a 100644 --- a/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java @@ -5,7 +5,7 @@ import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; -import com.fr.print.PrintAttr; +import com.fr.print.PrintSettingsAttrMark; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; @@ -85,30 +85,30 @@ public class PrintSettingPane extends BasicPane { return Inter.getLocText("FR-Designer_Print_Setting"); } - public void populate(PrintAttr printAttr) { - if (printAttr == null) { + public void populate(PrintSettingsAttrMark printSettings) { + if (printSettings == null) { return; } - if (printAttr.getPrintType() == PrintAttr.NO_CLIENT_PRINT) { + if (printSettings.getPrintType() == PrintSettingsAttrMark.NO_CLIENT_PRINT) { noClientPrintRadioButton.setSelected(true); } else { nativePrintRadioButton.setSelected(true); } - noClientPrintSettingPane.populate(printAttr.getNoClientPrintAttr()); - nativePrintSettingPane.populate(printAttr.getNativePrintAttr()); + noClientPrintSettingPane.populate(printSettings.getNoClientPrintAttr()); + nativePrintSettingPane.populate(printSettings.getNativePrintAttr()); } - public PrintAttr updateBean() { - PrintAttr printAttr = new PrintAttr(); - printAttr.setPrintType(noClientPrintRadioButton.isSelected() ? - PrintAttr.NO_CLIENT_PRINT : PrintAttr.NATIVE_PRINT); + public PrintSettingsAttrMark updateBean() { + PrintSettingsAttrMark printSettings = new PrintSettingsAttrMark(); + printSettings.setPrintType(noClientPrintRadioButton.isSelected() ? + PrintSettingsAttrMark.NO_CLIENT_PRINT : PrintSettingsAttrMark.NATIVE_PRINT); if (noClientPrintRadioButton.isSelected()) { - printAttr.setPrintType(PrintAttr.NO_CLIENT_PRINT); - noClientPrintSettingPane.update(printAttr.getNoClientPrintAttr()); + printSettings.setPrintType(PrintSettingsAttrMark.NO_CLIENT_PRINT); + noClientPrintSettingPane.update(printSettings.getNoClientPrintAttr()); } else { - printAttr.setPrintType(PrintAttr.NATIVE_PRINT); - nativePrintSettingPane.update(printAttr.getNativePrintAttr()); + printSettings.setPrintType(PrintSettingsAttrMark.NATIVE_PRINT); + nativePrintSettingPane.update(printSettings.getNativePrintAttr()); } - return printAttr; + return printSettings; } } diff --git a/designer/src/com/fr/design/webattr/printsettings/ReportPrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/ReportPrintSettingPane.java index e883756458..7b73df0355 100644 --- a/designer/src/com/fr/design/webattr/printsettings/ReportPrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/printsettings/ReportPrintSettingPane.java @@ -7,8 +7,7 @@ import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; -import com.fr.print.PrintAttr; -import com.fr.web.attr.ReportWebAttr; +import com.fr.print.PrintSettingsAttrMark; import javax.swing.BorderFactory; import javax.swing.JPanel; @@ -70,26 +69,26 @@ public class ReportPrintSettingPane extends BasicPane { } private void populateServerSettings() { - ConfigManagerProvider configManager = ConfigManager.getProviderInstance(); - ReportWebAttr reportWebAttr = ((ReportWebAttr)configManager.getGlobalAttribute(ReportWebAttr.class)); - printSettingPane.populate(reportWebAttr.getPrintAttr()); + PrintSettingsAttrMark printSettings = PrintSettingsAttrMark.loadFromServerConfig(); + printSettingPane.populate(printSettings); } - public void populate(PrintAttr printAttr) { - if (printAttr == null) { // 如果是空值就说明采用服务器配置了 + public void populate(PrintSettingsAttrMark printSettings) { + if (printSettings == null || !printSettings.isValid()) { // 采用服务器配置 chooseComboBox.setSelectedIndex(SERVER_SET); populateServerSettings(); return; } chooseComboBox.setSelectedIndex(SINGLE_SET); - printSettingPane.populate(printAttr); + printSettingPane.populate(printSettings); } - public PrintAttr updateBean() { + public PrintSettingsAttrMark updateBean() { + PrintSettingsAttrMark printSettings = printSettingPane.updateBean(); if (chooseComboBox.getSelectedIndex() == SERVER_SET) { - return null; + printSettings.setValid(false); } - return printSettingPane.updateBean(); + return printSettings; } @Override From c999b3f77820928c6d65cf08cb0c9317f333e3ae Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Thu, 22 Mar 2018 10:52:58 +0800 Subject: [PATCH 48/79] =?UTF-8?q?REPORT-7261=20=E5=8F=B3=E4=BE=A7=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E7=BC=96=E8=BE=91=E9=9D=A2=E6=9D=BF=E9=9A=90=E8=97=8F?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/gui/controlpane/UIControlPane.java | 62 +++++++++++++++---- 1 file changed, 49 insertions(+), 13 deletions(-) diff --git a/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java b/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java index bc37a2549d..f9c1cc12e5 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java +++ b/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java @@ -17,10 +17,34 @@ import com.fr.stable.ArrayUtils; import com.fr.stable.Nameable; import com.fr.stable.StringUtils; -import javax.swing.*; +import javax.swing.BorderFactory; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JSplitPane; import javax.swing.border.EmptyBorder; -import java.awt.*; -import java.awt.event.*; +import java.awt.BorderLayout; +import java.awt.CardLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Cursor; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.GraphicsEnvironment; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Toolkit; +import java.awt.Window; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; /** * Created by plough on 2017/7/21. @@ -47,7 +71,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH } public UIControlPane(BasePlot plot) { - this.plot =plot; + this.plot = plot; this.initComponentPane(); } @@ -145,8 +169,8 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH this.checkButtonEnabled(); } - protected void getPopupEditDialog (JPanel cardPane) { - popupEditDialog = new PopupEditDialog(cardPane); + protected void getPopupEditDialog(JPanel cardPane) { + popupEditDialog = new PopupEditDialog(cardPane); } protected abstract JPanel createControlUpdatePane(); @@ -169,7 +193,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH toolbarDef.addShortCut(sj.getShortCut()); } toolBar = ToolBarDef.createJToolBar(); - toolBar.setUI(new UIToolBarUI(){ + toolBar.setUI(new UIToolBarUI() { @Override public void paint(Graphics g, JComponent c) { Graphics2D g2 = (Graphics2D) g; @@ -186,7 +210,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH leftContentPane.add(toolBarPane, BorderLayout.NORTH); // 顶部标签及add按钮 - topToolBar = new UIToolbar(FlowLayout.LEFT, new UIToolBarUI(){ + topToolBar = new UIToolbar(FlowLayout.LEFT, new UIToolBarUI() { @Override public void paint(Graphics g, JComponent c) { Graphics2D g2 = (Graphics2D) g; @@ -207,15 +231,15 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH return leftPane; } - protected JPanel getLeftTopPane (UIToolbar topToolBar) { + protected JPanel getLeftTopPane(UIToolbar topToolBar) { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; - double[] columnSize = { p, f, isNewStyle() ? TOP_TOOLBAR_WIDTH : TOP_TOOLBAR_WIDTH_SHORT}; + double[] columnSize = {p, f, isNewStyle() ? TOP_TOOLBAR_WIDTH : TOP_TOOLBAR_WIDTH_SHORT}; double[] rowSize = {TOP_TOOLBAR_HEIGHT}; Component[][] components = new Component[][]{ new Component[]{new UILabel(getAddItemText()), new JPanel(), topToolBar}, }; - return TableLayoutHelper.createTableLayoutPane(components,rowSize,columnSize); + return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); } /** @@ -336,11 +360,21 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH initListener(); } + @Override public void setTitle(String title) { popupToolPane.setTitle(title); } private void hideDialog() { + // 要隐藏 先检查有没有非法输入 + try { + checkValid(); + } catch (Exception exp) { + // 存在非法输入 拒绝隐藏 + JOptionPane.showMessageDialog(UIControlPane.this, exp.getMessage()); + this.requestFocus(); + return; + } // 检查是否有子弹窗,如果有,则不隐藏 for (Window window : getOwnedWindows()) { if (window.isVisible()) { @@ -349,7 +383,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH } // 如果有可见模态对话框,则不隐藏 for (Window window : DesignerContext.getDesignerFrame().getOwnedWindows()) { - if (window instanceof JDialog && window.isVisible() && ((JDialog)window).isModal()) { + if (window instanceof JDialog && window.isVisible() && ((JDialog) window).isModal()) { return; } } @@ -361,7 +395,6 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH addWindowFocusListener(new WindowAdapter() { @Override public void windowLostFocus(WindowEvent e) { - super.windowLostFocus(e); hideDialog(); } }); @@ -389,6 +422,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH } repaint(); } + @Override public void mouseReleased(MouseEvent e) { mouseDownCompCoords = null; @@ -396,6 +430,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH contentPane.setBackground(originColor); } } + @Override public void mousePressed(MouseEvent e) { mouseDownCompCoords = e.getPoint(); @@ -409,6 +444,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH contentPane.setBackground(UIConstants.POPUP_TITLE_BACKGROUND); repaint(); } + @Override public void mouseDragged(MouseEvent e) { if (mouseDownCompCoords != null) { From 1ef806cc70886e6c4a04b7cea4179bb20d54ad1a Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 22 Mar 2018 11:05:23 +0800 Subject: [PATCH 49/79] =?UTF-8?q?REPORT-7241=20=E4=BB=A3=E7=A0=81=E8=A7=84?= =?UTF-8?q?=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/webattr/printsettings/PrintSettingPane.java | 3 --- .../design/webattr/printsettings/ReportPrintSettingPane.java | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java index 8e99a2075a..e626f8ca11 100644 --- a/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java @@ -86,9 +86,6 @@ public class PrintSettingPane extends BasicPane { } public void populate(PrintSettingsAttrMark printSettings) { - if (printSettings == null) { - return; - } if (printSettings.getPrintType() == PrintSettingsAttrMark.NO_CLIENT_PRINT) { noClientPrintRadioButton.setSelected(true); } else { diff --git a/designer/src/com/fr/design/webattr/printsettings/ReportPrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/ReportPrintSettingPane.java index 7b73df0355..febe6c6987 100644 --- a/designer/src/com/fr/design/webattr/printsettings/ReportPrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/printsettings/ReportPrintSettingPane.java @@ -74,7 +74,7 @@ public class ReportPrintSettingPane extends BasicPane { } public void populate(PrintSettingsAttrMark printSettings) { - if (printSettings == null || !printSettings.isValid()) { // 采用服务器配置 + if (!printSettings.isValid()) { // 采用服务器配置 chooseComboBox.setSelectedIndex(SERVER_SET); populateServerSettings(); return; From a1ee7aa826f60cc4851d80759493eb8f079d1fb5 Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 22 Mar 2018 11:41:19 +0800 Subject: [PATCH 50/79] =?UTF-8?q?REPORT-7241=20=E4=BB=A3=E7=A0=81=E8=A7=84?= =?UTF-8?q?=E8=8C=83=3D>=E6=8E=A5=E5=8F=A3=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/actions/report/ReportPrintSettingAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer/src/com/fr/design/actions/report/ReportPrintSettingAction.java b/designer/src/com/fr/design/actions/report/ReportPrintSettingAction.java index 4dfe2d3a3c..f93143f9ed 100644 --- a/designer/src/com/fr/design/actions/report/ReportPrintSettingAction.java +++ b/designer/src/com/fr/design/actions/report/ReportPrintSettingAction.java @@ -41,7 +41,7 @@ public class ReportPrintSettingAction extends JWorkBookAction { return; } final TemplateWorkBook wbTpl = jwb.getTarget(); - PrintSettingsAttrMark printSettings = PrintSettingsAttrMark.loadFromFinebook(wbTpl, false); + PrintSettingsAttrMark printSettings = PrintSettingsAttrMark.loadFromFinebook(wbTpl); final ReportPrintSettingPane reportPrintSettingPane = new ReportPrintSettingPane(); reportPrintSettingPane.populate(printSettings); From 99e351b786d3a493da07da2edd985e5dfb9044bb Mon Sep 17 00:00:00 2001 From: hzzz Date: Thu, 22 Mar 2018 11:41:55 +0800 Subject: [PATCH 51/79] =?UTF-8?q?REPORT-6710=20=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E6=A8=A1=E6=9D=BFtab=E6=A0=8F=E7=9A=84=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E6=99=AE=E9=80=9A=E6=8A=A5=E8=A1=A8=E6=8C=89=E9=92=AE=E5=81=8F?= =?UTF-8?q?=E5=B7=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/file/NewTemplatePane.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/designer_base/src/com/fr/design/file/NewTemplatePane.java b/designer_base/src/com/fr/design/file/NewTemplatePane.java index 9bca4f0b4a..accfae7186 100644 --- a/designer_base/src/com/fr/design/file/NewTemplatePane.java +++ b/designer_base/src/com/fr/design/file/NewTemplatePane.java @@ -21,11 +21,10 @@ import java.awt.geom.Rectangle2D; public abstract class NewTemplatePane extends JComponent implements MouseListener, MouseMotionListener { private static final Icon GRAY_NEW_CPT = BaseUtils.readIcon("/com/fr/design/images/buttonicon/additicon_grey.png"); - private static final int PRE_GAP = 5; + private static final int ICON_START_X = 5; private static final int HEIGHT = 26; private Graphics2D g2d; private Icon newWorkBookIconMode = null; - private int newIconStartX = PRE_GAP; public NewTemplatePane() { @@ -50,7 +49,7 @@ public abstract class NewTemplatePane extends JComponent implements MouseListene g2d.setColor(UIConstants.TEMPLATE_TAB_PANE_BACKGROUND); g2d.fill(new Rectangle2D.Double(0, 0, getWidth(),getHeight())); int sheetIconY = (getHeight() - newWorkBookIconMode.getIconHeight()) / 2; - newWorkBookIconMode.paintIcon(this, g2d, newIconStartX, sheetIconY); + newWorkBookIconMode.paintIcon(this, g2d, ICON_START_X, sheetIconY); // paintUnderLine(g2d); } @@ -82,7 +81,6 @@ public abstract class NewTemplatePane extends JComponent implements MouseListene } if (isOverNewIcon(evtX) && newWorkBookIconMode != GRAY_NEW_CPT) { newWorkBookIconMode = getMousePressNew(); - newIconStartX = 0; DesignerContext.getDesignerFrame().addAndActivateJTemplate(); } this.repaint(); @@ -113,7 +111,6 @@ public abstract class NewTemplatePane extends JComponent implements MouseListene * @param e 事件 */ public void mouseExited(MouseEvent e) { - newIconStartX = PRE_GAP; if (needGrayNewCpt()) { newWorkBookIconMode = GRAY_NEW_CPT; } else { @@ -139,7 +136,6 @@ public abstract class NewTemplatePane extends JComponent implements MouseListene if (needGrayNewCpt()) { newWorkBookIconMode = GRAY_NEW_CPT; } else if (isOverNewIcon(evtX)) { - newIconStartX = 0; newWorkBookIconMode = getMouseOverNew(); } @@ -153,7 +149,7 @@ public abstract class NewTemplatePane extends JComponent implements MouseListene private boolean isOverNewIcon(int evtX) { - return (evtX >= PRE_GAP && evtX <= PRE_GAP + newWorkBookIconMode.getIconWidth()); + return (evtX >= ICON_START_X && evtX <= ICON_START_X + newWorkBookIconMode.getIconWidth()); } public void setButtonGray(boolean isGray) { From 696d81ac5a44eccf581f26cd9f7791a1b041e703 Mon Sep 17 00:00:00 2001 From: zack Date: Thu, 22 Mar 2018 15:51:54 +0800 Subject: [PATCH 52/79] =?UTF-8?q?REPORT-7306=20=E9=BB=98=E8=AE=A4=E5=8B=BE?= =?UTF-8?q?=E9=80=89=E6=BC=8F=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../style/background/image/ExpandFileChooser.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/designer_base/src/com/fr/design/style/background/image/ExpandFileChooser.java b/designer_base/src/com/fr/design/style/background/image/ExpandFileChooser.java index 23ced04d00..37ccafe3e1 100644 --- a/designer_base/src/com/fr/design/style/background/image/ExpandFileChooser.java +++ b/designer_base/src/com/fr/design/style/background/image/ExpandFileChooser.java @@ -27,7 +27,6 @@ public class ExpandFileChooser extends JFileChooser { private JDialog dialog; private UICheckBox compressCheckBox;//选择框底部的复选按钮 private int retVal = ERROR_OPTION; - private boolean isCompressSelected = false; //复选的选中状态 private UIButton approve; private UIButton cancel; private static final int DEFAULT_WIDTH = 520; @@ -69,7 +68,10 @@ public class ExpandFileChooser extends JFileChooser { } public boolean isCompressSelected() { - return isCompressSelected; + if (compressCheckBox != null) { + return compressCheckBox.isSelected(); + } + return false; } @@ -86,9 +88,6 @@ public class ExpandFileChooser extends JFileChooser { if (dialog != null) { dialog.setVisible(false); } - if (compressCheckBox != null) { - isCompressSelected = compressCheckBox.isSelected(); - } fireActionPerformed(APPROVE_SELECTION); } @@ -98,10 +97,6 @@ public class ExpandFileChooser extends JFileChooser { if (dialog != null) { dialog.setVisible(false); } - if (compressCheckBox != null) { - compressCheckBox.setSelected(false); - } - isCompressSelected = false; fireActionPerformed(CANCEL_SELECTION); } From f89fbc91c831a61912e66e56d3f18291d969a277 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Fri, 23 Mar 2018 11:46:54 +0800 Subject: [PATCH 53/79] =?UTF-8?q?REPORT-7261=20=E5=8F=B3=E4=BE=A7=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E7=BC=96=E8=BE=91=E9=9D=A2=E6=9D=BF=E9=9A=90=E8=97=8F?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/gui/controlpane/UIControlPane.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java b/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java index f9c1cc12e5..ab43e1c264 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java +++ b/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java @@ -366,15 +366,6 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH } private void hideDialog() { - // 要隐藏 先检查有没有非法输入 - try { - checkValid(); - } catch (Exception exp) { - // 存在非法输入 拒绝隐藏 - JOptionPane.showMessageDialog(UIControlPane.this, exp.getMessage()); - this.requestFocus(); - return; - } // 检查是否有子弹窗,如果有,则不隐藏 for (Window window : getOwnedWindows()) { if (window.isVisible()) { @@ -387,6 +378,17 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH return; } } + + // 要隐藏 先检查有没有非法输入 + // 非法输入检查放在最后,因为可能出现面板弹出新弹框而失去焦点的情况,比如 输入公式时,弹出公式编辑对话框 + try { + checkValid(); + } catch (Exception exp) { + // 存在非法输入 拒绝隐藏 + JOptionPane.showMessageDialog(UIControlPane.this, exp.getMessage()); + this.requestFocus(); + return; + } saveSettings(); setVisible(false); } From 6da3c02ea3664c2fd9f4d55a99b741b67937812f Mon Sep 17 00:00:00 2001 From: plough Date: Fri, 23 Mar 2018 16:10:07 +0800 Subject: [PATCH 54/79] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=E5=B0=86=20PrintSettingsAttrMark=20=E7=9A=84=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8=E9=85=8D=E7=BD=AE=E6=95=B4=E5=90=88=E5=88=B0=20PrintA?= =?UTF-8?q?ttr=20=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/webattr/EditReportServerParameterPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java b/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java index dda4f17a8b..0fc60605ae 100644 --- a/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java +++ b/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java @@ -117,7 +117,7 @@ public class EditReportServerParameterPane extends LoadingBasicPane { jsPane.update(webAttr); printSettings = printSettingPane.updateBean(); - reportServerConfigManager.putGlobalAttribute(PrintSettingsAttrMark.class, printSettings); + ((ConfigManager)reportServerConfigManager).getPrintAttr().setPrintSettings(printSettings); reportServerConfigManager.setErrorTemplate(this.errorTemplatePane.updateBean()); } From dcfc63ff82d495ccffbd3ab6970e6e0480a242ce Mon Sep 17 00:00:00 2001 From: MoMeak Date: Fri, 23 Mar 2018 16:49:51 +0800 Subject: [PATCH 55/79] =?UTF-8?q?REPORT-7193=20=E7=94=A8=E5=85=B1=E4=BA=AB?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=90=8E=E7=9A=84=E5=B8=AE=E5=8A=A9=E7=AC=A6?= =?UTF-8?q?=E5=8F=B7=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/creator/XWAbsoluteLayout.java | 28 +++++-- .../cardlayout/XWCardMainBorderLayout.java | 26 ++++++- .../fr/design/mainframe/CoverReportPane.java | 4 +- .../mainframe/EditingMouseListener.java | 28 +++++-- .../mainframe/ElementCaseHelpDialog.java | 75 ------------------- 5 files changed, 70 insertions(+), 91 deletions(-) delete mode 100644 designer_form/src/com/fr/design/mainframe/ElementCaseHelpDialog.java diff --git a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java index 36426ca048..aac745f4a2 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java @@ -4,6 +4,7 @@ package com.fr.design.designer.creator; import com.fr.base.GraphHelper; +import com.fr.design.constants.UIConstants; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; import com.fr.design.designer.beans.LayoutAdapter; @@ -14,10 +15,12 @@ import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; import com.fr.design.form.layout.FRAbsoluteLayout; import com.fr.design.form.util.XCreatorConstants; import com.fr.design.icon.IconPathConstants; +import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.EditingMouseListener; import com.fr.design.mainframe.FormArea; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.HelpDialogManager; +import com.fr.design.mainframe.WidgetHelpDialog; import com.fr.form.ui.Connector; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WAbsoluteLayout; @@ -26,6 +29,7 @@ import com.fr.form.ui.container.WLayout; import com.fr.general.FRScreen; import com.fr.general.IOUtils; import com.fr.general.Inter; +import com.fr.share.ShareConstants; import com.fr.stable.Constants; import java.awt.*; @@ -35,6 +39,7 @@ import java.awt.image.BufferedImage; import java.beans.IntrospectionException; import java.util.ArrayList; import java.util.HashMap; +import javax.swing.Icon; /** * @author richer @@ -49,6 +54,7 @@ public class XWAbsoluteLayout extends XLayoutContainer { private static final Color OUTER_BORDER_COLOR = new Color(65, 155, 249, 30); private static final Color INNER_BORDER_COLOR = new Color(65, 155, 249); private static final int BORDER_WIDTH = 1; + private Icon controlMode = IOUtils.readIcon(IconPathConstants.TD_EL_SHARE_HELP_ICON_PATH); //由于屏幕分辨率不同,界面上的容器大小可能不是默认的100%,此时拖入组件时,保存的大小按照100%时的计算 protected double containerPercent = 1.0; @@ -446,8 +452,6 @@ public class XWAbsoluteLayout extends XLayoutContainer { g2d.fillRect(x, y, w, h); //画编辑按钮所在框 g2d.setComposite(oldComposite); - g2d.setColor(new Color(176, 196, 222)); - g2d.fillRect((x + w / 2 - EDIT_BTN_WIDTH / 2), (y + h / 2 - EDIT_BTN_HEIGHT / 2), EDIT_BTN_WIDTH, EDIT_BTN_HEIGHT); //画编辑按钮图标 BufferedImage image = IOUtils.readImage(IconPathConstants.EDIT_ICON_PATH); g2d.drawImage( @@ -461,11 +465,22 @@ public class XWAbsoluteLayout extends XLayoutContainer { ); g2d.setColor(Color.BLACK); //画编辑文字 + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.drawString(Inter.getLocText("FR-Designer_Edit"), x + w / 2 - 2, y + h / 2 + 5); g.setColor(XCreatorConstants.FORM_BORDER_COLOR); GraphHelper.draw(g, new Rectangle(BORDER_WIDTH, BORDER_WIDTH, getWidth() - BORDER_WIDTH * 2, getHeight() - BORDER_WIDTH * 2), Constants.LINE_MEDIUM); + paintExtro(g); } + } + public void paintExtro(Graphics g) { + if (isShared()) { + int width = getWidth() - ShareConstants.SHARE_EL_CONTROL_BUTTON_HW; + g.setColor(UIConstants.NORMAL_BACKGROUND); + g.fillArc(width, 0, ShareConstants.SHARE_EL_CONTROL_BUTTON_HW, ShareConstants.SHARE_EL_CONTROL_BUTTON_HW, + 0, 360); + controlMode.paintIcon(this, g, width, 0); + } } @Override @@ -486,6 +501,11 @@ public class XWAbsoluteLayout extends XLayoutContainer { * @param e 鼠标点击事件 */ public void respondClick(EditingMouseListener editingMouseListener, MouseEvent e) { + //帮助弹窗 + if (this.isHelpBtnOnFocus()) { + new WidgetHelpDialog(DesignerContext.getDesignerFrame(), this.toData().getDescription()).showWindow(e); + return; + } FormDesigner designer = editingMouseListener.getDesigner(); SelectionModel selectionModel = editingMouseListener.getSelectionModel(); boolean isEditing = isEditable() || @@ -501,10 +521,6 @@ public class XWAbsoluteLayout extends XLayoutContainer { editingMouseListener.startEditing(this, isEditing ? adapter.getDesignerEditor() : null, adapter); } } - HelpDialogManager.getInstance().setPane(coverPanel); - if (this.isHelpBtnOnFocus()) { - coverPanel.setMsgDisplay(e); - } } /** diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java index ee82d5cf06..2adab0c7fe 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java @@ -4,6 +4,7 @@ package com.fr.design.designer.creator.cardlayout; import com.fr.base.GraphHelper; +import com.fr.design.constants.UIConstants; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; import com.fr.design.designer.beans.LayoutAdapter; @@ -16,8 +17,10 @@ import com.fr.design.designer.creator.XWBorderLayout; import com.fr.design.designer.creator.XWidgetCreator; import com.fr.design.form.util.XCreatorConstants; import com.fr.design.icon.IconPathConstants; +import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.EditingMouseListener; import com.fr.design.mainframe.FormDesigner; +import com.fr.design.mainframe.WidgetHelpDialog; import com.fr.form.event.Listener; import com.fr.form.ui.LayoutBorderStyle; import com.fr.form.ui.Widget; @@ -32,6 +35,7 @@ import com.fr.form.ui.container.cardlayout.WCardTitleLayout; import com.fr.general.ComparatorUtils; import com.fr.general.IOUtils; import com.fr.general.Inter; +import com.fr.share.ShareConstants; import com.fr.stable.Constants; import java.awt.AlphaComposite; @@ -43,10 +47,12 @@ import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; +import java.awt.RenderingHints; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.List; +import javax.swing.Icon; /** * card布局主体框架 @@ -57,6 +63,7 @@ import java.util.List; */ public class XWCardMainBorderLayout extends XWBorderLayout{ + private Icon controlMode = IOUtils.readIcon(IconPathConstants.TD_EL_SHARE_HELP_ICON_PATH); private static final int CENTER = 1; private static final int NORTH = 0; private static final int TITLE_STYLE = 2; @@ -338,8 +345,6 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ g2d.fillRect(x, y, w, h); //画编辑按钮所在框 g2d.setComposite(oldComposite); - g2d.setColor(new Color(176, 196, 222)); - g2d.fillRect((x + w / 2 - EDIT_BTN_WIDTH / 2), (y + h / 2 - EDIT_BTN_HEIGHT / 2), EDIT_BTN_WIDTH, EDIT_BTN_HEIGHT); //画编辑按钮图标 BufferedImage image = IOUtils.readImage(IconPathConstants.EDIT_ICON_PATH); g2d.drawImage( @@ -353,9 +358,21 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ ); g2d.setColor(Color.BLACK); //画编辑文字 + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.drawString(Inter.getLocText("FR-Designer_Edit"), x + w / 2 - 2, y + h / 2 + 5); g.setColor(XCreatorConstants.FORM_BORDER_COLOR); GraphHelper.draw(g, new Rectangle(BORDER_WIDTH, BORDER_WIDTH, getWidth() - BORDER_WIDTH * 2, getHeight() - BORDER_WIDTH * 2), Constants.LINE_MEDIUM); + paintExtro(g); + } + } + + public void paintExtro(Graphics g) { + if (isShared()) { + int width = getWidth() - ShareConstants.SHARE_EL_CONTROL_BUTTON_HW; + g.setColor(UIConstants.NORMAL_BACKGROUND); + g.fillArc(width, 0, ShareConstants.SHARE_EL_CONTROL_BUTTON_HW, ShareConstants.SHARE_EL_CONTROL_BUTTON_HW, + 0, 360); + controlMode.paintIcon(this, g, width, 0); } } @@ -374,6 +391,11 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ */ @Override public void respondClick(EditingMouseListener editingMouseListener, MouseEvent e){ + //帮助弹窗 + if (this.isHelpBtnOnFocus()) { + new WidgetHelpDialog(DesignerContext.getDesignerFrame(), this.toData().getDescription()).showWindow(e); + return; + } FormDesigner designer = editingMouseListener.getDesigner(); SelectionModel selectionModel = editingMouseListener.getSelectionModel(); boolean isEditing = e.getButton() == MouseEvent.BUTTON1 && diff --git a/designer_form/src/com/fr/design/mainframe/CoverReportPane.java b/designer_form/src/com/fr/design/mainframe/CoverReportPane.java index 3578856d95..0944d98aec 100644 --- a/designer_form/src/com/fr/design/mainframe/CoverReportPane.java +++ b/designer_form/src/com/fr/design/mainframe/CoverReportPane.java @@ -35,7 +35,7 @@ public class CoverReportPane extends CoverPane implements HelpDialogHandler{ private String helpMsg;//帮助信息(后续帮助信息可能会变成标配,就直接放这边了) - private ElementCaseHelpDialog helpDialog = null; + private WidgetHelpDialog helpDialog = null; public CoverReportPane() { this(StringUtils.EMPTY); @@ -62,7 +62,7 @@ public class CoverReportPane extends CoverPane implements HelpDialogHandler{ if (helpDialog == null) { // controlMode = IOUtils.readIcon(IconPathConstants.TD_EL_SHARE_CLOSE_ICON_PATH); controlButton.setVisible(false); - helpDialog = new ElementCaseHelpDialog(DesignerContext.getDesignerFrame(), helpMsg); + helpDialog = new WidgetHelpDialog(DesignerContext.getDesignerFrame(), helpMsg); double screenValue = FRScreen.getByDimension(Toolkit.getDefaultToolkit().getScreenSize()).getValue(); int offsetX = 0; if (screenValue < FormArea.DEFAULT_SLIDER) { diff --git a/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java b/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java index 380532d55b..db31dbbd6a 100644 --- a/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java +++ b/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java @@ -22,6 +22,7 @@ import com.fr.design.utils.ComponentUtils; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.LayoutUtils; import com.fr.general.Inter; +import com.fr.share.ShareConstants; import com.fr.stable.Constants; import javax.swing.*; @@ -317,13 +318,27 @@ public class EditingMouseListener extends MouseInputAdapter { } private void setHelpBtnFocus(MouseEvent e, XCreator component) { + if (!component.isShared()) { + return; + } component.setHelpBtnOnFocus(false); - if (component.getCoverPane().getComponentCount() > 1) { - JComponent button1 = (JComponent) component.getCoverPane().getComponent(1); - int minX1 = button1.getX() + getParentPositionX(component, 0) - designer.getArea().getHorizontalValue(); - int minY1 = button1.getY() + getParentPositionY(component, 0) - designer.getArea().getVerticalValue(); - if (e.getX() + GAP - component.getInsets().left > minX1 && e.getX() - GAP - component.getInsets().left < minX1 + button1.getWidth()) { - if (e.getY() + GAP - component.getInsets().top > minY1 && e.getY() - GAP - component.getInsets().top < minY1 + button1.getHeight()) { + if (component.getCoverPane() != null) { + if (component.getCoverPane().getComponentCount() > 1) { + JComponent button1 = (JComponent) component.getCoverPane().getComponent(1); + int minX1 = button1.getX() + getParentPositionX(component, 0) - designer.getArea().getHorizontalValue(); + int minY1 = button1.getY() + getParentPositionY(component, 0) - designer.getArea().getVerticalValue(); + if (e.getX() + GAP - component.getInsets().left > minX1 && e.getX() - GAP - component.getInsets().left < minX1 + button1.getWidth()) { + if (e.getY() + GAP - component.getInsets().top > minY1 && e.getY() - GAP - component.getInsets().top < minY1 + button1.getHeight()) { + designer.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + component.setHelpBtnOnFocus(true); + } + } + } + } else { + int minX1 = component.getX() + component.getWidth() - ShareConstants.SHARE_EL_CONTROL_BUTTON_HW - designer.getArea().getHorizontalValue(); + int minY1 = component.getY() - designer.getArea().getVerticalValue(); + if (e.getX() + GAP - component.getInsets().left > minX1 && e.getX() - GAP - component.getInsets().left < minX1 + ShareConstants.SHARE_EL_CONTROL_BUTTON_HW) { + if (e.getY() + GAP - component.getInsets().top > minY1 && e.getY() - GAP - component.getInsets().top < minY1 + ShareConstants.SHARE_EL_CONTROL_BUTTON_HW) { designer.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); component.setHelpBtnOnFocus(true); } @@ -376,6 +391,7 @@ public class EditingMouseListener extends MouseInputAdapter { designer.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); } } + setHelpBtnFocus(e, xTopLayoutContainer); return true; } } diff --git a/designer_form/src/com/fr/design/mainframe/ElementCaseHelpDialog.java b/designer_form/src/com/fr/design/mainframe/ElementCaseHelpDialog.java deleted file mode 100644 index 2f2c6e3b5d..0000000000 --- a/designer_form/src/com/fr/design/mainframe/ElementCaseHelpDialog.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.fr.design.mainframe; - -import com.fr.design.dialog.UIDialog; -import com.fr.design.gui.icontainer.UIScrollPane; -import com.fr.design.gui.itextarea.UITextArea; -import com.fr.general.Inter; - -import javax.swing.*; -import java.awt.*; - -/** - * @author zack - * @date 2016-10-14 - * @since 8.0 - */ -public class ElementCaseHelpDialog extends UIDialog { - - private static final int OUTER_WIDTH = 190; - private static final int OUTER_HEIGHT = 280; - - - private String helpMsg; - private UIScrollPane helpArea; - - - public ElementCaseHelpDialog(Frame parent, String helpMsg) { - super(parent); - this.helpMsg = helpMsg; - initHelpArea(); - JPanel panel = (JPanel) getContentPane(); - initComponents(panel); - setSize(new Dimension(OUTER_WIDTH, OUTER_HEIGHT)); - } - - private void initHelpArea() { - UITextArea textArea = new UITextArea(helpMsg); - textArea.setEditable(false); - textArea.setBorder(null); - helpArea = new UIScrollPane(textArea); - helpArea.setBounds(0, 0, OUTER_WIDTH, OUTER_HEIGHT); - helpArea.setBorder(null); - } - - private void initComponents(JPanel contentPane) { - contentPane.setLayout(new BorderLayout()); - add(helpArea, BorderLayout.CENTER); - this.applyClosingAction(); - this.setTitle(Inter.getLocText("FR-Designer_Help")); - } - - /** - * 打开帮助框 - */ - public void showWindow() { - this.setResizable(false); - setVisible(true); - } - - /** - * 略 - */ - @Override - public void checkValid() throws Exception { - - } - - public void setLocationRelativeTo(JFrame c, int x, int y) { - int dx = 0, dy = 0; - Point compLocation = c.getLocationOnScreen();//获取设计器Jframe坐标作为相对位置原点 - setLocation(dx + x, dy + y); - dx = compLocation.x; - dy = compLocation.y + c.getRootPane().getY();//加上底层容器的y坐标(其实就是设计器最上方图标栏的高度) - setLocation(dx + x, dy + y); - } -} \ No newline at end of file From 11a6acec335614c81c3fd7df04e401adb3d23538 Mon Sep 17 00:00:00 2001 From: MoMeak Date: Fri, 23 Mar 2018 17:08:41 +0800 Subject: [PATCH 56/79] WidgetHelpDialog --- .../fr/design/mainframe/WidgetHelpDialog.java | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 designer_form/src/com/fr/design/mainframe/WidgetHelpDialog.java diff --git a/designer_form/src/com/fr/design/mainframe/WidgetHelpDialog.java b/designer_form/src/com/fr/design/mainframe/WidgetHelpDialog.java new file mode 100644 index 0000000000..a6f8d40ba6 --- /dev/null +++ b/designer_form/src/com/fr/design/mainframe/WidgetHelpDialog.java @@ -0,0 +1,89 @@ +package com.fr.design.mainframe; + +import com.fr.design.dialog.UIDialog; +import com.fr.design.gui.icontainer.UIScrollPane; +import com.fr.design.gui.itextarea.UITextArea; +import com.fr.general.Inter; + +import java.awt.event.MouseEvent; +import javax.swing.*; +import java.awt.*; + +/** + * @author zack + * @date 2016-10-14 + * @since 8.0 + */ +public class WidgetHelpDialog extends UIDialog { + + private static final int OUTER_WIDTH = 190; + private static final int OUTER_HEIGHT = 280; + private static final int DIALOG_X = 227; + private static final int DIALOG_Y = 165; + + + private String helpMsg; + private UIScrollPane helpArea; + + + public WidgetHelpDialog(Frame parent, String helpMsg) { + super(parent); + this.helpMsg = helpMsg; + initHelpArea(); + JPanel panel = (JPanel) getContentPane(); + initComponents(panel); + setSize(new Dimension(OUTER_WIDTH, OUTER_HEIGHT)); + } + + private void initHelpArea() { + UITextArea textArea = new UITextArea(helpMsg); + textArea.setEditable(false); + textArea.setBorder(null); + helpArea = new UIScrollPane(textArea); + helpArea.setBounds(0, 0, OUTER_WIDTH, OUTER_HEIGHT); + helpArea.setBorder(null); + } + + private void initComponents(JPanel contentPane) { + contentPane.setLayout(new BorderLayout()); + add(helpArea, BorderLayout.CENTER); + this.applyClosingAction(); + this.setTitle(Inter.getLocText("FR-Designer_Help")); + } + + /** + * 打开帮助框 + */ + public void showWindow() { + this.setResizable(false); + setVisible(true); + } + + /** + * 打开帮助框-e + */ + public void showWindow(MouseEvent e) { + int rX = WestRegionContainerPane.getInstance().getWidth() + e.getX() - DIALOG_X;//弹出框宽度190加上图标的宽度27加上10的偏移 + int rY = DIALOG_Y + e.getY();//165是设计器最上面几个面板的高度 + this.setLocationRelativeTo(DesignerContext.getDesignerFrame(), rX, rY); + this.setResizable(false); + setVisible(true); + } + + /** + * 略 + */ + @Override + public void checkValid() throws Exception { + + } + + public void setLocationRelativeTo(JFrame c, int x, int y) { + int dx = 0, dy = 0; + Point compLocation = c.getLocationOnScreen();//获取设计器Jframe坐标作为相对位置原点 + setLocation(dx + x, dy + y); + dx = compLocation.x; + dy = compLocation.y + c.getRootPane().getY();//加上底层容器的y坐标(其实就是设计器最上方图标栏的高度) + setLocation(dx + x, dy + y); + } +} \ No newline at end of file From 68b1a48d31af155550f850b64556ceb7a9105d69 Mon Sep 17 00:00:00 2001 From: zack Date: Fri, 23 Mar 2018 17:25:27 +0800 Subject: [PATCH 57/79] =?UTF-8?q?REPORT-7306=20=E5=9B=BE=E7=89=87=E5=8E=8B?= =?UTF-8?q?=E7=BC=A9,=E8=AE=B0=E5=BD=95=E4=B8=8B=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E5=8E=8B=E7=BC=A9,=E4=BC=98=E5=8C=96=E4=BD=93=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/DesignerEnvManager.java | 13 ++++++++++++ .../design/gui/frpane/ImgChooseWrapper.java | 2 +- .../background/image/ExpandFileChooser.java | 21 ++++++++++++------- .../background/image/ImageFileChooser.java | 14 +++++++++++++ .../module/ChartEmptyDataStylePane.java | 2 +- 5 files changed, 43 insertions(+), 9 deletions(-) diff --git a/designer_base/src/com/fr/design/DesignerEnvManager.java b/designer_base/src/com/fr/design/DesignerEnvManager.java index 1eedded95c..7d55086045 100644 --- a/designer_base/src/com/fr/design/DesignerEnvManager.java +++ b/designer_base/src/com/fr/design/DesignerEnvManager.java @@ -148,6 +148,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { private boolean isHttps = false; private static List mapWorkerList = new ArrayList(); + private boolean imageCompress = true;//图片压缩 /** * DesignerEnvManager. @@ -1414,6 +1415,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { this.setOracleSystemSpace(reader.getAttrAsBoolean("useOracleSystemSpace", true)); this.setCachingTemplateLimit(reader.getAttrAsInt("cachingTemplateLimit", CACHINGTEMPLATE_LIMIT)); this.setJoinProductImprove(reader.getAttrAsBoolean("joinProductImprove", true)); + this.setImageCompress(reader.getAttrAsBoolean("imageCompress", true)); this.setAutoBackUp(reader.getAttrAsBoolean("autoBackUp", true)); this.setTemplateTreePaneExpanded(reader.getAttrAsBoolean("templateTreePaneExpanded", false)); // peter:读取webinfLocation @@ -1639,6 +1641,9 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { if (!this.isJoinProductImprove()) { writer.attr("joinProductImprove", this.isJoinProductImprove()); } + if (!this.isImageCompress()) { + writer.attr("imageCompress", this.isImageCompress()); + } if (!this.isAutoBackUp()) { writer.attr("autoBackUp", this.isAutoBackUp()); } @@ -1812,4 +1817,12 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { public void setAlphaFineConfigManager(AlphaFineConfigManager alphaFineConfigManager) { this.alphaFineConfigManager = alphaFineConfigManager; } + + public boolean isImageCompress() { + return imageCompress; + } + + public void setImageCompress(boolean imageCompress) { + this.imageCompress = imageCompress; + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/gui/frpane/ImgChooseWrapper.java b/designer_base/src/com/fr/design/gui/frpane/ImgChooseWrapper.java index b0cab22076..4d38e9b830 100644 --- a/designer_base/src/com/fr/design/gui/frpane/ImgChooseWrapper.java +++ b/designer_base/src/com/fr/design/gui/frpane/ImgChooseWrapper.java @@ -98,7 +98,7 @@ public class ImgChooseWrapper { imageWorker = new SwingWorker() { @Override protected Void doInBackground() throws Exception { - Image image = imageFileChooser.isCompressSelected() ? ImageUtils.defaultImageCompress(selectedFile) : BaseUtils.readImage(selectedFile.getPath()); + Image image = imageFileChooser.isCheckSelected() ? ImageUtils.defaultImageCompress(selectedFile) : BaseUtils.readImage(selectedFile.getPath()); CoreGraphHelper.waitForImage(image); if (previewPane != null) { diff --git a/designer_base/src/com/fr/design/style/background/image/ExpandFileChooser.java b/designer_base/src/com/fr/design/style/background/image/ExpandFileChooser.java index 37ccafe3e1..b9690b2439 100644 --- a/designer_base/src/com/fr/design/style/background/image/ExpandFileChooser.java +++ b/designer_base/src/com/fr/design/style/background/image/ExpandFileChooser.java @@ -1,6 +1,7 @@ package com.fr.design.style.background.image; import com.fr.base.BaseUtils; +import com.fr.design.DesignerEnvManager; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.layout.FRGUIPaneFactory; @@ -18,6 +19,7 @@ import java.awt.Container; import java.awt.Dimension; import java.awt.Insets; import java.awt.LayoutManager; +import java.awt.event.ActionListener; /** * 扩展的文件选择框(底部控制区域扩展一个复选框) @@ -25,7 +27,7 @@ import java.awt.LayoutManager; */ public class ExpandFileChooser extends JFileChooser { private JDialog dialog; - private UICheckBox compressCheckBox;//选择框底部的复选按钮 + private UICheckBox checkBox;//选择框底部的复选按钮 private int retVal = ERROR_OPTION; private UIButton approve; private UIButton cancel; @@ -55,9 +57,10 @@ public class ExpandFileChooser extends JFileChooser { approve = new UIButton(approveText); cancel = new UIButton(Inter.getLocText("FR-Designer_Button-Cancel")); if (StringUtils.isNotEmpty(checkBoxText)) { - compressCheckBox = new UICheckBox(checkBoxText); - compressCheckBox.setSelected(true); - bottomControlPanel.add(compressCheckBox); + checkBox = new UICheckBox(checkBoxText); + checkBox.setSelected(DesignerEnvManager.getEnvManager().isImageCompress()); + bottomControlPanel.add(checkBox); + checkBox.addActionListener(checkAction()); } bottomControlPanel.add(approve); approve.addActionListener(chooserUI.getApproveSelectionAction()); @@ -67,9 +70,13 @@ public class ExpandFileChooser extends JFileChooser { GUICoreUtils.centerWindow(dialog); } - public boolean isCompressSelected() { - if (compressCheckBox != null) { - return compressCheckBox.isSelected(); + public ActionListener checkAction() { + return null; + } + + public boolean isCheckSelected() { + if (checkBox != null) { + return checkBox.isSelected(); } return false; } diff --git a/designer_base/src/com/fr/design/style/background/image/ImageFileChooser.java b/designer_base/src/com/fr/design/style/background/image/ImageFileChooser.java index 8532e78457..2ec203ff5a 100644 --- a/designer_base/src/com/fr/design/style/background/image/ImageFileChooser.java +++ b/designer_base/src/com/fr/design/style/background/image/ImageFileChooser.java @@ -4,11 +4,14 @@ package com.fr.design.style.background.image; import com.fr.base.BaseUtils; +import com.fr.design.DesignerEnvManager; import com.fr.design.style.ChooseFileView; import com.fr.general.Inter; import javax.swing.filechooser.FileFilter; import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.io.File; import java.util.Enumeration; import java.util.Hashtable; @@ -42,6 +45,17 @@ public class ImageFileChooser extends ExpandFileChooser { return super.showDialog(parent, approveButtonText); } + @Override + public ActionListener checkAction() { + return new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + DesignerEnvManager.getEnvManager().setImageCompress(isCheckSelected()); + DesignerEnvManager.getEnvManager().saveXMLFile(); + } + }; + + } /** * A convenience implementation of FileFilter that filters out diff --git a/designer_chart/src/com/fr/design/module/ChartEmptyDataStylePane.java b/designer_chart/src/com/fr/design/module/ChartEmptyDataStylePane.java index 64098f42d5..cbef10ee49 100644 --- a/designer_chart/src/com/fr/design/module/ChartEmptyDataStylePane.java +++ b/designer_chart/src/com/fr/design/module/ChartEmptyDataStylePane.java @@ -174,7 +174,7 @@ public class ChartEmptyDataStylePane extends AbstractAttrNoScrollPane { imageWorker = new SwingWorker() { @Override protected Void doInBackground() throws Exception { - emptyDataImage = imageFileChooser.isCompressSelected() ? ImageUtils.defaultImageCompress(selectedFile) : BaseUtils.readImage(selectedFile.getPath()); + emptyDataImage = imageFileChooser.isCheckSelected() ? ImageUtils.defaultImageCompress(selectedFile) : BaseUtils.readImage(selectedFile.getPath()); CoreGraphHelper.waitForImage(emptyDataImage); repaintPreviewPane(); return null; From 8e8348155f28301a030c19955dcb1db3ad85b317 Mon Sep 17 00:00:00 2001 From: plough Date: Fri, 23 Mar 2018 17:37:41 +0800 Subject: [PATCH 58/79] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=E5=B0=86=20PrintSettingsAttrMark=20=E7=9A=84=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8=E9=85=8D=E7=BD=AE=E6=95=B4=E5=90=88=E5=88=B0=20PrintA?= =?UTF-8?q?ttr=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/actions/report/ReportPrintSettingAction.java | 5 +++-- .../fr/design/webattr/EditReportServerParameterPane.java | 6 +++--- .../webattr/printsettings/NativePrintSettingPane.java | 5 ++--- .../webattr/printsettings/NoClientPrintSettingPane.java | 4 +--- .../design/webattr/printsettings/PageOrderSettingPane.java | 2 -- .../fr/design/webattr/printsettings/PrintSettingPane.java | 2 +- .../webattr/printsettings/ReportPrintSettingPane.java | 7 +++---- 7 files changed, 13 insertions(+), 18 deletions(-) diff --git a/designer/src/com/fr/design/actions/report/ReportPrintSettingAction.java b/designer/src/com/fr/design/actions/report/ReportPrintSettingAction.java index f93143f9ed..9051e46ff4 100644 --- a/designer/src/com/fr/design/actions/report/ReportPrintSettingAction.java +++ b/designer/src/com/fr/design/actions/report/ReportPrintSettingAction.java @@ -11,7 +11,8 @@ import com.fr.design.webattr.printsettings.ReportPrintSettingPane; import com.fr.general.IOUtils; import com.fr.general.Inter; import com.fr.main.TemplateWorkBook; -import com.fr.print.PrintSettingsAttrMark; +import com.fr.base.print.PrintSettingsAttrMark; +import com.fr.report.core.ReportUtils; import javax.swing.KeyStroke; import java.awt.event.ActionEvent; @@ -41,7 +42,7 @@ public class ReportPrintSettingAction extends JWorkBookAction { return; } final TemplateWorkBook wbTpl = jwb.getTarget(); - PrintSettingsAttrMark printSettings = PrintSettingsAttrMark.loadFromFinebook(wbTpl); + PrintSettingsAttrMark printSettings = ReportUtils.getPrintSettingsFromWorkbook(wbTpl); final ReportPrintSettingPane reportPrintSettingPane = new ReportPrintSettingPane(); reportPrintSettingPane.populate(printSettings); diff --git a/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java b/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java index 0fc60605ae..04f54dc660 100644 --- a/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java +++ b/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java @@ -14,8 +14,8 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.webattr.printsettings.PrintSettingPane; import com.fr.general.Inter; -import com.fr.print.PrintSettingsAttrMark; -import com.fr.report.web.button.Print; +import com.fr.base.print.PrintSettingsAttrMark; +import com.fr.report.core.ReportUtils; import com.fr.stable.project.ProjectConstants; import com.fr.web.attr.ReportWebAttr; @@ -95,7 +95,7 @@ public class EditReportServerParameterPane extends LoadingBasicPane { cssPane.populate(webAttr); jsPane.populate(webAttr); } - printSettings = PrintSettingsAttrMark.loadFromServerConfig(); + printSettings = ReportUtils.getPrintSettingsFromServerConfig(); printSettingPane.populate(printSettings); this.errorTemplatePane.populateBean(reportServerConfigManager.getErrorTemplate()); diff --git a/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java index 3cfaba441a..051516b682 100644 --- a/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java @@ -16,10 +16,9 @@ import com.fr.design.layout.TableLayoutHelper; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; -import com.fr.print.nativeprint.core.NativePrintAttr; -import com.fr.print.nativeprint.core.NativePrintConfigManager; +import com.fr.base.print.NativePrintAttr; +import com.fr.base.print.NativePrintConfigManager; import com.fr.report.stable.ReportConstants; -import com.fr.stable.StringUtils; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; diff --git a/designer/src/com/fr/design/webattr/printsettings/NoClientPrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/NoClientPrintSettingPane.java index 708e804007..32b0d15103 100644 --- a/designer/src/com/fr/design/webattr/printsettings/NoClientPrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/printsettings/NoClientPrintSettingPane.java @@ -1,6 +1,5 @@ package com.fr.design.webattr.printsettings; -import com.fr.base.Margin; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; @@ -8,8 +7,7 @@ import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; -import com.fr.print.NoClientPrintAttr; -import com.fr.stable.Constants; +import com.fr.base.print.NoClientPrintAttr; import javax.swing.BorderFactory; import javax.swing.JPanel; diff --git a/designer/src/com/fr/design/webattr/printsettings/PageOrderSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/PageOrderSettingPane.java index 6017479bb8..7200ed3dfa 100644 --- a/designer/src/com/fr/design/webattr/printsettings/PageOrderSettingPane.java +++ b/designer/src/com/fr/design/webattr/printsettings/PageOrderSettingPane.java @@ -4,10 +4,8 @@ import com.fr.base.BaseUtils; import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.general.Inter; -import com.fr.print.NoClientPrintAttr; import com.fr.stable.Constants; -import javax.swing.BoxLayout; import javax.swing.ButtonGroup; import javax.swing.Icon; import javax.swing.JPanel; diff --git a/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java index e626f8ca11..67119b2bb8 100644 --- a/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/printsettings/PrintSettingPane.java @@ -5,7 +5,7 @@ import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; -import com.fr.print.PrintSettingsAttrMark; +import com.fr.base.print.PrintSettingsAttrMark; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; diff --git a/designer/src/com/fr/design/webattr/printsettings/ReportPrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/ReportPrintSettingPane.java index febe6c6987..a96621de56 100644 --- a/designer/src/com/fr/design/webattr/printsettings/ReportPrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/printsettings/ReportPrintSettingPane.java @@ -1,13 +1,12 @@ package com.fr.design.webattr.printsettings; -import com.fr.base.ConfigManager; -import com.fr.base.ConfigManagerProvider; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; -import com.fr.print.PrintSettingsAttrMark; +import com.fr.base.print.PrintSettingsAttrMark; +import com.fr.report.core.ReportUtils; import javax.swing.BorderFactory; import javax.swing.JPanel; @@ -69,7 +68,7 @@ public class ReportPrintSettingPane extends BasicPane { } private void populateServerSettings() { - PrintSettingsAttrMark printSettings = PrintSettingsAttrMark.loadFromServerConfig(); + PrintSettingsAttrMark printSettings = ReportUtils.getPrintSettingsFromServerConfig(); printSettingPane.populate(printSettings); } From f3c292a1be731943c64fd56e2f9e2e6230576081 Mon Sep 17 00:00:00 2001 From: MoMeak Date: Sat, 24 Mar 2018 15:33:31 +0800 Subject: [PATCH 59/79] =?UTF-8?q?REPORT-7193=20=E5=85=B1=E4=BA=AB=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=90=8E=E7=9A=84=E5=B8=AE=E5=8A=A9=E7=AC=A6=E5=8F=B7?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/mainframe/EditingMouseListener.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java b/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java index db31dbbd6a..7bb03029c9 100644 --- a/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java +++ b/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java @@ -334,6 +334,8 @@ public class EditingMouseListener extends MouseInputAdapter { } } } + component.displayCoverPane(true); + component.setDirections(Direction.TOP_BOTTOM_LEFT_RIGHT); } else { int minX1 = component.getX() + component.getWidth() - ShareConstants.SHARE_EL_CONTROL_BUTTON_HW - designer.getArea().getHorizontalValue(); int minY1 = component.getY() - designer.getArea().getVerticalValue(); @@ -344,8 +346,6 @@ public class EditingMouseListener extends MouseInputAdapter { } } } - component.displayCoverPane(true); - component.setDirections(Direction.TOP_BOTTOM_LEFT_RIGHT); } private void setCoverPaneNotDisplay(XCreator component, MouseEvent e, boolean isLinkedHelpDialog) { From a956bd15fa862c9fcfc369ed3fe266a4d73980f1 Mon Sep 17 00:00:00 2001 From: vito Date: Mon, 26 Mar 2018 15:59:05 +0800 Subject: [PATCH 60/79] =?UTF-8?q?REPORT-7372=209.0=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E7=95=8C=E9=9D=A2oem=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/start/ReportSplashPane.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/designer/src/com/fr/start/ReportSplashPane.java b/designer/src/com/fr/start/ReportSplashPane.java index 4ec15fc893..82cf18c78b 100644 --- a/designer/src/com/fr/start/ReportSplashPane.java +++ b/designer/src/com/fr/start/ReportSplashPane.java @@ -15,8 +15,13 @@ import com.fr.stable.StringUtils; import com.fr.stable.module.ModuleAdapter; import com.fr.stable.module.ModuleListener; -import javax.swing.*; -import java.awt.*; +import javax.swing.Icon; +import javax.swing.ImageIcon; +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; import java.util.Locale; import java.util.Random; import java.util.TimerTask; @@ -68,6 +73,7 @@ public class ReportSplashPane extends SplashPane { this.setBackground(null); timer.schedule(new TimerTask() { + @Override public void run() { loadingIndex++; ReportSplashPane.this.setShowText(moduleID.isEmpty() ? StringUtils.EMPTY : moduleID + loading[loadingIndex % 3]); @@ -87,6 +93,7 @@ public class ReportSplashPane extends SplashPane { ModuleContext.registerModuleListener(moduleListener); } + @Override protected void paintComponent(Graphics g) { Icon icon = IconLoader.getIcon(StableUtils.pathJoin(OEM_PATH, getImageName())); icon.paintIcon(null, g, 0, 0); @@ -94,16 +101,18 @@ public class ReportSplashPane extends SplashPane { g.dispose(); } + @Override public void setShowText(String text) { this.showText = text; } + @Override public Image getSplashImage() { Icon icon = IconLoader.getIcon(StableUtils.pathJoin(OEM_PATH, getImageName())); return ((ImageIcon) IconLoader.getIconSnapshot(icon)).getImage(); } - private void paintShowText(Graphics2D splashG2d) { + protected void paintShowText(Graphics2D splashG2d) { GraphHelper.applyRenderingHints(splashG2d); splashG2d.setPaint(MODULE_COLOR); @@ -160,6 +169,7 @@ public class ReportSplashPane extends SplashPane { /** * 窗口关闭后取消定时获取模块信息的timer */ + @Override public void releaseTimer() { timer.cancel(); } @@ -169,6 +179,7 @@ public class ReportSplashPane extends SplashPane { * * @return 背景图片 */ + @Override public Image createSplashBackground() { String fileName = getImageName(); return BaseUtils.readImage(StableUtils.pathJoin(OEM_PATH, fileName)); From c1be2a8a27a9a205b4aa0bbb30830b607311ae6b Mon Sep 17 00:00:00 2001 From: MoMeak Date: Mon, 26 Mar 2018 16:12:40 +0800 Subject: [PATCH 61/79] =?UTF-8?q?REPORT-7321=20=E5=A4=9A=E9=80=89=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E6=97=B6=EF=BC=8C=E5=85=88=E7=82=B9=E5=87=BBCtrl?= =?UTF-8?q?=EF=BC=88shift=EF=BC=89=EF=BC=8C=E5=86=8D=E5=88=86=E5=88=AB?= =?UTF-8?q?=E7=82=B9=E5=87=A0=E4=B8=AA=E7=BB=84=E4=BB=B6=E6=88=96=E8=80=85?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E6=A1=86=E9=80=89=EF=BC=8C=E9=80=89=E4=B8=8D?= =?UTF-8?q?=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/designer/beans/models/SelectionModel.java | 12 ++++++++++-- .../fr/design/mainframe/EditingMouseListener.java | 3 --- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java index fe94edc3b2..18ca1e6ea5 100644 --- a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java +++ b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java @@ -62,12 +62,20 @@ public class SelectionModel { * @param e 鼠标事件 */ public void selectACreatorAtMouseEvent(MouseEvent e) { + // 获取e所在的组件 + XCreator comp = designer.getComponentAt(e); if (e.getButton() == MouseEvent.BUTTON3 || (!InputEventBaseOnOS.isControlDown(e) && !e.isShiftDown())) { // 如果Ctrl或者Shift键盘没有按下,则清除已经选择的组件 selection.reset(); + } else { + //按下Ctrl或者shift键时鼠标可以进行多选,两次点击同一控件就取消选中 + XLayoutContainer container = XCreatorUtils.getParentXLayoutContainer(comp); + for (XCreator selected : selection.getSelectedCreators()) { + if (selected == comp || XCreatorUtils.getParentXLayoutContainer(selected) != container) { + selection.removeCreator(selected); + } + } } - // 获取e所在的组件 - XCreator comp = designer.getComponentAt(e); selectACreator(comp); } diff --git a/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java b/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java index 7bb03029c9..36be6e7180 100644 --- a/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java +++ b/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java @@ -318,9 +318,6 @@ public class EditingMouseListener extends MouseInputAdapter { } private void setHelpBtnFocus(MouseEvent e, XCreator component) { - if (!component.isShared()) { - return; - } component.setHelpBtnOnFocus(false); if (component.getCoverPane() != null) { if (component.getCoverPane().getComponentCount() > 1) { From da318ee0da01ba39c79dfc18571bbe99ef1beae1 Mon Sep 17 00:00:00 2001 From: plough Date: Mon, 26 Mar 2018 16:46:19 +0800 Subject: [PATCH 62/79] =?UTF-8?q?REPORT-7267=20@plough:=E4=BA=A4=E4=BA=92?= =?UTF-8?q?=E9=97=AE=E9=A2=98=3D>=E6=89=93=E5=8D=B0=E9=A1=BA=E5=BA=8F?= =?UTF-8?q?=E6=94=B9=E5=90=8D=E4=B8=BA=E5=88=86=E9=A1=B5=E9=A1=BA=E5=BA=8F?= =?UTF-8?q?=EF=BC=8C=E7=A7=BB=E5=9B=9E=E9=A1=B5=E9=9D=A2=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/report/PageSetupPane.java | 41 +++++++++++++ .../printsettings/NativePrintSettingPane.java | 10 +--- .../NoClientPrintSettingPane.java | 9 +-- .../printsettings/PageOrderSettingPane.java | 58 ------------------- .../com/fr/design/locale/designer.properties | 2 +- .../design/locale/designer_en_US.properties | 2 +- .../design/locale/designer_zh_CN.properties | 2 +- .../design/locale/designer_zh_TW.properties | 2 +- 8 files changed, 49 insertions(+), 77 deletions(-) delete mode 100644 designer/src/com/fr/design/webattr/printsettings/PageOrderSettingPane.java diff --git a/designer/src/com/fr/design/report/PageSetupPane.java b/designer/src/com/fr/design/report/PageSetupPane.java index 7f53832567..883690a088 100644 --- a/designer/src/com/fr/design/report/PageSetupPane.java +++ b/designer/src/com/fr/design/report/PageSetupPane.java @@ -858,6 +858,10 @@ public class PageSetupPane extends BasicPane { } private class OtherPane extends BasicPane { + + private UIRadioButton topBottomRadioButton; + private UIRadioButton leftRightRadioButton; + private UICheckBox horizonalCenterCheckBox; private UICheckBox verticalCenterCheckBox; @@ -873,6 +877,29 @@ public class PageSetupPane extends BasicPane { JPanel defaultPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane(); this.add(defaultPane, BorderLayout.NORTH); + // page order + JPanel outpageOrderPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("PageSetup-Page_Order")); + JPanel pageOrderPane = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(2); + outpageOrderPane.add(pageOrderPane); + defaultPane.add(outpageOrderPane); + + + Icon topBottomIcon = BaseUtils.readIcon("/com/fr/base/images/dialog/pagesetup/down.png"); + topBottomRadioButton = new UIRadioButton(Inter.getLocText("PageSetup-Top_to_bottom")); + pageOrderPane.add(FRGUIPaneFactory.createIconRadio_S_Pane(topBottomIcon, topBottomRadioButton)); + topBottomRadioButton.setMnemonic('B'); + + Icon leftRightIcon = BaseUtils.readIcon("/com/fr/base/images/dialog/pagesetup/over.png"); + leftRightRadioButton = new UIRadioButton(Inter.getLocText("PageSetup-Left_to_right")); + pageOrderPane.add(FRGUIPaneFactory.createIconRadio_S_Pane(leftRightIcon, leftRightRadioButton)); + leftRightRadioButton.setMnemonic('R'); + + ButtonGroup pageOrderButtonGroup = new ButtonGroup(); + pageOrderButtonGroup.add(topBottomRadioButton); + pageOrderButtonGroup.add(leftRightRadioButton); + + topBottomRadioButton.setSelected(true); + // center on page JPanel outcenterOnPagePane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("PageSetup-Placement_Center_on_Page")); JPanel centerOnPagePane = FRGUIPaneFactory.createNormalFlowInnerContainer_M_Pane(); @@ -949,6 +976,13 @@ public class PageSetupPane extends BasicPane { reportSettings = new ReportSettings(); } + // page order. + if (reportSettings.getPageOrder() == Constants.LEFT_TO_RIGHT) { + this.leftRightRadioButton.setSelected(true); + } else { + this.topBottomRadioButton.setSelected(true); + } + // placement this.horizonalCenterCheckBox.setSelected(reportSettings.isHorizontalCenterOnPage()); this.verticalCenterCheckBox.setSelected(reportSettings.isVerticalCenterOnPage()); @@ -976,6 +1010,13 @@ public class PageSetupPane extends BasicPane { } reportSettings = report.getReportSettings(); + // page order. + if (this.leftRightRadioButton.isSelected()) { + reportSettings.setPageOrder(Constants.LEFT_TO_RIGHT); + } else { + reportSettings.setPageOrder(Constants.TOP_TO_BOTTOM); + } + // placement reportSettings.setHorizontalCenterOnPage(this.horizonalCenterCheckBox.isSelected()); reportSettings.setVerticalCenterOnPage(this.verticalCenterCheckBox.isSelected()); diff --git a/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java index 051516b682..3a778bf5a6 100644 --- a/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java @@ -51,7 +51,6 @@ public class NativePrintSettingPane extends JPanel { private UIRadioButton portraitRadioButton; private UIRadioButton landscapeRadioButton; private PageMarginSettingPane pageMarginSettingPane; - private PageOrderSettingPane pageOrderSettingPane; public NativePrintSettingPane() { initComponents(); @@ -141,11 +140,9 @@ public class NativePrintSettingPane extends JPanel { // 缩放 fitPaperSizeCheck = GUICoreUtils.createNoBorderCheckBox(Inter.getLocText("FR-Designer_Print_To_Fit_Paper_Size")); - pageOrderSettingPane = new PageOrderSettingPane(); - // TableLayout double p = TableLayout.PREFERRED; - double[] rowSize = {p, p, p, p, p, p, p}; + double[] rowSize = {p, p, p, p, p, p}; double[] columnSize = {60, p}; Component[][] components = { {new UILabel(Inter.getLocText("FR-Designer_Printer") + ":"), printerPane}, @@ -153,10 +150,9 @@ public class NativePrintSettingPane extends JPanel { {printAreaLabelPane, getPrintAreaPane()}, {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Paper") + ":"), paperSettingCheckPane}, {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Layout") + ":"), layoutSettingCheckPane}, - {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Margin") + ":"), pageMarginCheckPane}, + {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Margin") + ":"), pageMarginCheckPane} // 此功能暂时不做,在界面上隐藏缩放选项 // {new UILabel(Inter.getLocText("FR-Designer_Scale_EnlargeOrReduce") + ":"), fitPaperSizeCheck}, - {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Order") + ":"), pageOrderSettingPane} }; return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 15); } @@ -277,7 +273,6 @@ public class NativePrintSettingPane extends JPanel { inheritPageMarginSettingCheck.setSelected(nativePrintAttr.isInheritPageMarginSetting()); pageMarginSettingPane.populate(nativePrintAttr.getMargin()); fitPaperSizeCheck.setSelected(nativePrintAttr.isFitPaperSize()); - pageOrderSettingPane.populate(nativePrintAttr.getPageOrder()); } public void update(NativePrintAttr nativePrintAttr) { @@ -305,6 +300,5 @@ public class NativePrintSettingPane extends JPanel { nativePrintAttr.setInheritPageMarginSetting(inheritPageMarginSettingCheck.isSelected()); nativePrintAttr.setMargin(pageMarginSettingPane.updateBean()); nativePrintAttr.setFitPaperSize(fitPaperSizeCheck.isSelected()); - nativePrintAttr.setPageOrder(pageOrderSettingPane.updateBean()); } } diff --git a/designer/src/com/fr/design/webattr/printsettings/NoClientPrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/NoClientPrintSettingPane.java index 32b0d15103..bb40c944e6 100644 --- a/designer/src/com/fr/design/webattr/printsettings/NoClientPrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/printsettings/NoClientPrintSettingPane.java @@ -24,7 +24,6 @@ public class NoClientPrintSettingPane extends JPanel { private UICheckBox inheritPageMarginSettingCheck; // 继承页面边距设置 private PageMarginSettingPane pageMarginSettingPane; - private PageOrderSettingPane pageOrderSettingPane; public NoClientPrintSettingPane() { initComponents(); @@ -49,14 +48,12 @@ public class NoClientPrintSettingPane extends JPanel { pageMarginSettingPane.setBorder(BorderFactory.createEmptyBorder(10, -10, 0, 0)); JPanel pageMarginCheckPane = GUICoreUtils.createCheckboxAndDynamicPane(inheritPageMarginSettingCheck, pageMarginSettingPane, true); - pageOrderSettingPane = new PageOrderSettingPane(); // TableLayout double p = TableLayout.PREFERRED; - double[] rowSize = {p, p}; + double[] rowSize = {p}; double[] columnSize = {60, p}; Component[][] components = { - {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Margin") + ":"), pageMarginCheckPane}, - {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Order") + ":"), pageOrderSettingPane} + {getTopAlignLabelPane(Inter.getLocText("FR-Designer_Margin") + ":"), pageMarginCheckPane} }; JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 15); @@ -79,13 +76,11 @@ public class NoClientPrintSettingPane extends JPanel { setMarginWhenPrintCheck.setSelected(noClientPrintAttr.isSetMarginOnPrint()); inheritPageMarginSettingCheck.setSelected(noClientPrintAttr.isInheritPageMarginSetting()); pageMarginSettingPane.populate(noClientPrintAttr.getMargin()); - pageOrderSettingPane.populate(noClientPrintAttr.getPageOrder()); } public void update(NoClientPrintAttr noClientPrintAttr) { noClientPrintAttr.setSetMarginOnPrint(setMarginWhenPrintCheck.isSelected()); noClientPrintAttr.setInheritPageMarginSetting(inheritPageMarginSettingCheck.isSelected()); noClientPrintAttr.setMargin(pageMarginSettingPane.updateBean()); - noClientPrintAttr.setPageOrder(pageOrderSettingPane.updateBean()); } } diff --git a/designer/src/com/fr/design/webattr/printsettings/PageOrderSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/PageOrderSettingPane.java deleted file mode 100644 index 7200ed3dfa..0000000000 --- a/designer/src/com/fr/design/webattr/printsettings/PageOrderSettingPane.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.fr.design.webattr.printsettings; - -import com.fr.base.BaseUtils; -import com.fr.design.gui.ibutton.UIRadioButton; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.general.Inter; -import com.fr.stable.Constants; - -import javax.swing.ButtonGroup; -import javax.swing.Icon; -import javax.swing.JPanel; -import java.awt.BorderLayout; - -/** - * Created by plough on 2018/3/5. - */ -public class PageOrderSettingPane extends JPanel { - private UIRadioButton topBottomRadioButton; // 先列后行 - private UIRadioButton leftRightRadioButton; // 先行后列 - - public PageOrderSettingPane() { - initComponents(); - } - - private void initComponents() { - // page order - JPanel pageOrderPane = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(2); - - Icon topBottomIcon = BaseUtils.readIcon("/com/fr/base/images/dialog/pagesetup/down.png"); - topBottomRadioButton = new UIRadioButton(Inter.getLocText("PageSetup-Top_to_bottom")); - pageOrderPane.add(FRGUIPaneFactory.createIconRadio_S_Pane(topBottomIcon, topBottomRadioButton)); - - Icon leftRightIcon = BaseUtils.readIcon("/com/fr/base/images/dialog/pagesetup/over.png"); - leftRightRadioButton = new UIRadioButton(Inter.getLocText("PageSetup-Left_to_right")); - pageOrderPane.add(FRGUIPaneFactory.createIconRadio_S_Pane(leftRightIcon, leftRightRadioButton)); - - ButtonGroup pageOrderButtonGroup = new ButtonGroup(); - pageOrderButtonGroup.add(topBottomRadioButton); - pageOrderButtonGroup.add(leftRightRadioButton); - - topBottomRadioButton.setSelected(true); - - this.setLayout(new BorderLayout()); - this.add(pageOrderPane, BorderLayout.CENTER); - } - - public void populate(int pageOrder) { - if (pageOrder == Constants.TOP_TO_BOTTOM) { - topBottomRadioButton.setSelected(true); - } else { - leftRightRadioButton.setSelected(true); - } - } - - public int updateBean() { - return topBottomRadioButton.isSelected() ? Constants.TOP_TO_BOTTOM : Constants.LEFT_TO_RIGHT; - } -} diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index f4b2427954..14d0632dd5 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -1652,7 +1652,7 @@ Parameter_Setting=Parameter Setting Related=Related BorderLayout-Constraints=Constraints Write_Preview=Write Preview -PageSetup-Page_Order=Page Order on print +PageSetup-Page_Order=Page Order Verify-Verify_Formula=Verify Formula State=State FR-Designer-Widget-Style_Body_Background= 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 ff3a6b9716..1dd4fdff77 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 @@ -1653,7 +1653,7 @@ Parameter_Setting=Parameter Setting Related=Linkage BorderLayout-Constraints=Placement Write_Preview=Filling Preview -PageSetup-Page_Order=Print Order +PageSetup-Page_Order=Page Order Verify-Verify_Formula=Validation formula State=State FR-Designer-Widget-Style_Body_Background=Body Background 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 398d68be7c..1ae224e9b4 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 @@ -1654,7 +1654,7 @@ Parameter_Setting=\u53C2\u6570\u8BBE\u7F6E Related=\u8054\u52A8 BorderLayout-Constraints=\u4F4D\u7F6E Write_Preview=\u586B\u62A5\u9884\u89C8 -PageSetup-Page_Order=\u6253\u5370\u987A\u5E8F +PageSetup-Page_Order=\u5206\u9875\u987A\u5E8F Verify-Verify_Formula=\u6821\u9A8C\u516C\u5F0F State=\u7701\u5E02 FR-Designer-Widget-Style_Body_Background=\u4E3B\u4F53\u80CC\u666F 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 d584bef326..a301ad27cc 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 @@ -1652,7 +1652,7 @@ Parameter_Setting=\u53C3\u6578\u8A2D\u5B9A Related=\u806F\u52D5 BorderLayout-Constraints=\u4F4D\u7F6E Write_Preview=\u586B\u5831\u9810\u89BD -PageSetup-Page_Order=\u5217\u5370\u9806\u5E8F +PageSetup-Page_Order=\u5206\u9801\u9806\u5E8F Verify-Verify_Formula=\u6821\u9A57\u516C\u5F0F State=\u7701\u5E02 FR-Designer-Widget-Style_Body_Background=\u4E3B\u9AD4\u80CC\u666F From cc48e3931e39504972aab66fc50049679714076b Mon Sep 17 00:00:00 2001 From: plough Date: Mon, 26 Mar 2018 16:46:57 +0800 Subject: [PATCH 63/79] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=B3=9B=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/mainframe/JTemplate.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/JTemplate.java b/designer_base/src/com/fr/design/mainframe/JTemplate.java index 15c2624532..039015ff36 100644 --- a/designer_base/src/com/fr/design/mainframe/JTemplate.java +++ b/designer_base/src/com/fr/design/mainframe/JTemplate.java @@ -80,7 +80,7 @@ public abstract class JTemplate> ex protected U undoState; protected U authorityUndoState = null; protected T template; // 当前模板 - protected TemplateProcessInfo processInfo; // 模板过程的相关信息 + protected TemplateProcessInfo processInfo; // 模板过程的相关信息 private static short currentIndex = 0;// 此变量用于多次新建模板时,让名字不重复 private DesignModelAdapter designModel; private PreviewProvider previewType; @@ -143,7 +143,7 @@ public abstract class JTemplate> ex openTime = saveTime; // 更新 openTime,准备下一次计算 } - public abstract TemplateProcessInfo getProcessInfo(); + public abstract TemplateProcessInfo getProcessInfo(); // 追加过程记录 public void appendProcess(String s) { From daa53c1d9c19a65210254f7c533b8576277cd599 Mon Sep 17 00:00:00 2001 From: plough Date: Mon, 26 Mar 2018 16:48:10 +0800 Subject: [PATCH 64/79] =?UTF-8?q?REPORT-7245=20@plough:=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E6=A0=8F=E6=AE=8B=E7=95=99=E4=B9=8B=E5=89=8D=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E7=9A=84=E7=97=95=E8=BF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/webattr/EditToolBar.java | 21 ++++++++++++++++--- .../webattr/ReportWebWidgetConstants.java | 12 +++++------ 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/designer/src/com/fr/design/webattr/EditToolBar.java b/designer/src/com/fr/design/webattr/EditToolBar.java index ebeb017746..2883329d9e 100644 --- a/designer/src/com/fr/design/webattr/EditToolBar.java +++ b/designer/src/com/fr/design/webattr/EditToolBar.java @@ -31,17 +31,32 @@ import com.fr.form.ui.WidgetManager; import com.fr.general.Background; import com.fr.general.Inter; import com.fr.report.web.button.Export; -import com.fr.report.web.button.Print; import com.fr.report.web.button.write.AppendColumnRow; import com.fr.report.web.button.write.ExcelImport; import com.fr.report.web.button.write.Submit; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; -import javax.swing.*; +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.DefaultListCellRenderer; +import javax.swing.DefaultListModel; +import javax.swing.ImageIcon; +import javax.swing.JList; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JSplitPane; +import javax.swing.ListCellRenderer; +import javax.swing.SpinnerNumberModel; +import javax.swing.SwingUtilities; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.CardLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; diff --git a/designer/src/com/fr/design/webattr/ReportWebWidgetConstants.java b/designer/src/com/fr/design/webattr/ReportWebWidgetConstants.java index eb4f9a6b71..5de5eb4a5e 100644 --- a/designer/src/com/fr/design/webattr/ReportWebWidgetConstants.java +++ b/designer/src/com/fr/design/webattr/ReportWebWidgetConstants.java @@ -17,27 +17,27 @@ public class ReportWebWidgetConstants { } public static WidgetOption[] getPageToolBarInstance() { - return new WidgetOption[]{FIRST, PREVIOUS, PAGENAVI, NEXT, LAST, SCALE, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, PRINT, + return new WidgetOption[]{FIRST, PREVIOUS, PAGENAVI, NEXT, LAST, SCALE, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, SETPRINTEROFFSET, CUSTOM_BUTTON}; } public static WidgetOption[] getViewToolBarInstance() { - return new WidgetOption[]{PAGESETUP, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, PRINT, SETPRINTEROFFSET, PRINTPREVIEW, CUSTOM_BUTTON}; + return new WidgetOption[]{PAGESETUP, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, SETPRINTEROFFSET, PRINTPREVIEW, CUSTOM_BUTTON}; } public static WidgetOption[] getPreviewToolBarInstance() { - return new WidgetOption[]{FIRST, PREVIOUS, PAGENAVI, NEXT, LAST, SCALE, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, PRINT, + return new WidgetOption[]{FIRST, PREVIOUS, PAGENAVI, NEXT, LAST, SCALE, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, SETPRINTEROFFSET, CUSTOM_BUTTON}; } public static WidgetOption[] getWriteToolBarInstance() { - return new WidgetOption[]{SUBMIT, VERIFY, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, PRINT, IMPORTEXCELDATA, SHOWCELLVALUE, + return new WidgetOption[]{SUBMIT, VERIFY, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, IMPORTEXCELDATA, SHOWCELLVALUE, APPENDCOLUMNROW, DELETECOLUMNROW, SETPRINTEROFFSET, WRITEOFFLINEHTML, CUSTOM_BUTTON, WRITESTASH, WRITESTASHCLEAR, IMPORTEXCELDATA_CUSTOMIZED, IMPORTEXCEL, IMPORTEXCEL_COVER, IMPORTEXCEL_CLEAN, IMPORTEXCEL_APPEND}; } public static WidgetOption[] getFormToolBarInstance() { - return new WidgetOption[]{EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, PRINT, SETPRINTEROFFSET, CUSTOM_BUTTON}; + return new WidgetOption[]{EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, SETPRINTEROFFSET, CUSTOM_BUTTON}; } // 查询 @@ -102,7 +102,7 @@ public class ReportWebWidgetConstants { public static final WidgetOption SCALE = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_Enlarge_Or_Reduce"), BaseUtils.readIcon("/com/fr/web/images/scale.png"), Scale.class); - public static final WidgetOption PRINT = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_Print"), BaseUtils.readIcon("/com/fr/web/images/print.png"), Print.class); + public static final WidgetOption NEW_PRINT = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_Print"), BaseUtils.readIcon("/com/fr/web/images/print.png"), NewPrint.class); public static final WidgetOption APPENDCOLUMNROW = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("Utils-Insert_Record"), BaseUtils.readIcon("/com/fr/web/images/appendRow.png"), AppendColumnRow.class); public static final WidgetOption DELETECOLUMNROW = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("Utils-Delete_Record"), From ae0a2fdd88f52d6e45b145132ae39a646848caf7 Mon Sep 17 00:00:00 2001 From: MoMeak Date: Mon, 26 Mar 2018 17:34:59 +0800 Subject: [PATCH 65/79] =?UTF-8?q?REPORT-7193=20=E4=BD=BF=E7=94=A8=E5=85=B1?= =?UTF-8?q?=E4=BA=AB=E7=BB=84=E4=BB=B6=E5=90=8E=E7=9A=84=E5=B8=AE=E5=8A=A9?= =?UTF-8?q?=E7=AC=A6=E5=8F=B7=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/designer/creator/XWAbsoluteLayout.java | 2 +- .../creator/cardlayout/XWCardMainBorderLayout.java | 2 +- .../com/fr/design/mainframe/ShareWidgetButton.java | 12 ++++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java index 05f6db47ac..ce4a21bca8 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java @@ -479,7 +479,7 @@ public class XWAbsoluteLayout extends XLayoutContainer { } public void paintExtro(Graphics g) { - if (isShared()) { + if (this.toData().getWidgetAttrMark("SharableAttrMark") != null) { int width = getWidth() - ShareConstants.SHARE_EL_CONTROL_BUTTON_HW; g.setColor(UIConstants.NORMAL_BACKGROUND); g.fillArc(width, 0, ShareConstants.SHARE_EL_CONTROL_BUTTON_HW, ShareConstants.SHARE_EL_CONTROL_BUTTON_HW, diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java index 56ca43f917..d01230601b 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java @@ -373,7 +373,7 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ } public void paintExtro(Graphics g) { - if (isShared()) { + if (this.toData().getWidgetAttrMark("SharableAttrMark") != null) { int width = getWidth() - ShareConstants.SHARE_EL_CONTROL_BUTTON_HW; g.setColor(UIConstants.NORMAL_BACKGROUND); g.fillArc(width, 0, ShareConstants.SHARE_EL_CONTROL_BUTTON_HW, ShareConstants.SHARE_EL_CONTROL_BUTTON_HW, diff --git a/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java b/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java index 44c1ed28ec..0961f43d19 100644 --- a/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java +++ b/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java @@ -4,6 +4,8 @@ import com.fr.base.vcs.DesignerMode; import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XCreatorUtils; import com.fr.design.gui.ilable.UILabel; +import com.fr.form.ui.AbstractBorderStyleWidget; +import com.fr.plugin.injectable.PluginModule; import com.fr.share.ShareConstants; import com.fr.form.share.ShareLoader; import com.fr.form.ui.SharableWidgetBindInfo; @@ -12,6 +14,9 @@ import com.fr.general.ComparatorUtils; import com.fr.general.IOUtils; import com.fr.stable.StringUtils; +import com.fr.stable.fun.IOFileAttrMark; +import com.fr.stable.plugin.ExtraClassManagerProvider; +import java.util.Set; import javax.swing.*; import javax.swing.Icon; import java.awt.*; @@ -195,6 +200,13 @@ public class ShareWidgetButton extends JPanel implements MouseListener, MouseMot shareId = no.getBindInfo().getId(); creatorSource = ShareLoader.getLoader().getElCaseEditorById(shareId); if (creatorSource != null) { + ExtraClassManagerProvider pluginProvider = PluginModule.getAgent(PluginModule.ExtraCore); + if(pluginProvider != null) { + Set extraAttrs = pluginProvider.getArray(IOFileAttrMark.MARK_STRING); + for (IOFileAttrMark mark : extraAttrs) { + ((AbstractBorderStyleWidget)creatorSource).addWidgetAttrMark(mark); + } + } XCreator xCreator = XCreatorUtils.createXCreator(creatorSource, new Dimension(no.getBindInfo().getWidth(), no.getBindInfo().getHeight())); xCreator.setShareId(shareId); WidgetToolBarPane.getTarget().startDraggingBean(xCreator); From 8c389cf559f57e3d4deceb464bf39d7a46253e9b Mon Sep 17 00:00:00 2001 From: MoMeak Date: Mon, 26 Mar 2018 18:23:08 +0800 Subject: [PATCH 66/79] =?UTF-8?q?REPORT-7193=20=E4=BD=BF=E7=94=A8=E5=85=B1?= =?UTF-8?q?=E4=BA=AB=E7=BB=84=E4=BB=B6=E5=90=8E=E7=9A=84=E5=B8=AE=E5=8A=A9?= =?UTF-8?q?=E7=AC=A6=E5=8F=B7=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/ShareWidgetButton.java | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java b/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java index 0961f43d19..c649174b08 100644 --- a/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java +++ b/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java @@ -4,8 +4,8 @@ import com.fr.base.vcs.DesignerMode; import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XCreatorUtils; import com.fr.design.gui.ilable.UILabel; +import com.fr.base.iofileattr.SharableAttrMark; import com.fr.form.ui.AbstractBorderStyleWidget; -import com.fr.plugin.injectable.PluginModule; import com.fr.share.ShareConstants; import com.fr.form.share.ShareLoader; import com.fr.form.ui.SharableWidgetBindInfo; @@ -14,9 +14,6 @@ import com.fr.general.ComparatorUtils; import com.fr.general.IOUtils; import com.fr.stable.StringUtils; -import com.fr.stable.fun.IOFileAttrMark; -import com.fr.stable.plugin.ExtraClassManagerProvider; -import java.util.Set; import javax.swing.*; import javax.swing.Icon; import java.awt.*; @@ -200,13 +197,7 @@ public class ShareWidgetButton extends JPanel implements MouseListener, MouseMot shareId = no.getBindInfo().getId(); creatorSource = ShareLoader.getLoader().getElCaseEditorById(shareId); if (creatorSource != null) { - ExtraClassManagerProvider pluginProvider = PluginModule.getAgent(PluginModule.ExtraCore); - if(pluginProvider != null) { - Set extraAttrs = pluginProvider.getArray(IOFileAttrMark.MARK_STRING); - for (IOFileAttrMark mark : extraAttrs) { - ((AbstractBorderStyleWidget)creatorSource).addWidgetAttrMark(mark); - } - } + ((AbstractBorderStyleWidget)creatorSource).addWidgetAttrMark(new SharableAttrMark(true)); XCreator xCreator = XCreatorUtils.createXCreator(creatorSource, new Dimension(no.getBindInfo().getWidth(), no.getBindInfo().getHeight())); xCreator.setShareId(shareId); WidgetToolBarPane.getTarget().startDraggingBean(xCreator); From b4f58915e7063cc40ca9865351ff8f10f488d045 Mon Sep 17 00:00:00 2001 From: plough Date: Mon, 26 Mar 2018 18:55:12 +0800 Subject: [PATCH 67/79] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=20=E8=B0=83=E6=95=B4=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=8E=BB?= =?UTF-8?q?=E6=8E=89NativePrintConfigManager?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../printsettings/NativePrintSettingPane.java | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java b/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java index 3a778bf5a6..1e7545f941 100644 --- a/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java +++ b/designer/src/com/fr/design/webattr/printsettings/NativePrintSettingPane.java @@ -2,6 +2,7 @@ package com.fr.design.webattr.printsettings; import com.fr.base.PaperSize; import com.fr.base.Utils; +import com.fr.base.print.NativePrintAttr; import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.icombobox.UIComboBox; @@ -16,10 +17,11 @@ import com.fr.design.layout.TableLayoutHelper; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; -import com.fr.base.print.NativePrintAttr; -import com.fr.base.print.NativePrintConfigManager; import com.fr.report.stable.ReportConstants; +import javax.print.DocFlavor; +import javax.print.PrintService; +import javax.print.PrintServiceLookup; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JList; @@ -31,6 +33,8 @@ import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import java.util.HashSet; +import java.util.Set; /** * Created by plough on 2018/3/5. @@ -103,7 +107,7 @@ public class NativePrintSettingPane extends JPanel { private JPanel getNativePrintMainSettingPane() { // 打印机 - String[] printerArray = NativePrintConfigManager.getInstance().getAllPrinterNames(); + String[] printerArray = getAllPrinterNames(); printerComboBox = new UIComboBox(printerArray); printerComboBox.setPreferredSize(new Dimension(200, printerComboBox.getPreferredSize().height)); JPanel printerPane = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); @@ -157,6 +161,18 @@ public class NativePrintSettingPane extends JPanel { return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 15); } + private String[] getAllPrinterNames() { + PrintService[] printServices = PrintServiceLookup.lookupPrintServices( + DocFlavor.INPUT_STREAM.AUTOSENSE, null); + Set allPrinterName = new HashSet(); + + for (int i = 0, len = printServices.length; i < len; i++) { + allPrinterName.add(printServices[i].getName()); + } + + return allPrinterName.toArray(new String[allPrinterName.size()]); + } + private JPanel getPaperSettingPane() { predefinedPaperSizeComboBox = new UIComboBox(); for (int i = 0; i < ReportConstants.PaperSizeNameSizeArray.length; i++) { From e7c4220e0b959aaf52da68b7366e1aae80a15f36 Mon Sep 17 00:00:00 2001 From: plough Date: Mon, 26 Mar 2018 19:28:55 +0800 Subject: [PATCH 68/79] =?UTF-8?q?REPORT-7343=20@plough:=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/locale/designer.properties | 2 +- .../src/com/fr/design/locale/designer_en_US.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index 14d0632dd5..d5371eb7be 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -2191,7 +2191,7 @@ FR-Designer_How_To_Join= FR-Designer_Follow_Paper_Settings=follow paper settings FR-Designer_No_Auto_Adjust=no automatic adjust FR-Designer_Print_Setting=Print Setting -FR-Designer_Tip_Use_Default_Print_Margin=Hint: if you don't check, you use the print margins in the default settings as follows. +FR-Designer_Tip_Use_Default_Print_Margin=Hint: if not check, use the default settings as follows. FR-Designer_Default_Settings=Default configuration FR-Designer_Inherit_Page_Margin_Setting=Inherit page margin setting FR-Designer_Margin=Margin 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 1dd4fdff77..d700a82b9d 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 @@ -2190,7 +2190,7 @@ FR-Designer_How_To_Join=Poke me to learn how to join the thank you list FR-Designer_Follow_Paper_Settings=follow paper settings FR-Designer_No_Auto_Adjust=no automaticly adjust FR-Designer_Print_Setting=Print Setting -FR-Designer_Tip_Use_Default_Print_Margin=Hint: if you don't check, you use the print margins in the default settings as follows. +FR-Designer_Tip_Use_Default_Print_Margin=Hint: if not check, use the default settings as follows. FR-Designer_Default_Settings=Default configuration FR-Designer_Inherit_Page_Margin_Setting=Inherit page margin setting FR-Designer_Margin=Margin From d01665bad51be4eeeae5e32c4e50024492f0a2b1 Mon Sep 17 00:00:00 2001 From: MoMeak Date: Tue, 27 Mar 2018 09:16:20 +0800 Subject: [PATCH 69/79] XML_TAG --- .../src/com/fr/design/designer/creator/XWAbsoluteLayout.java | 3 ++- .../designer/creator/cardlayout/XWCardMainBorderLayout.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java index ce4a21bca8..76dd00e153 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java @@ -4,6 +4,7 @@ package com.fr.design.designer.creator; import com.fr.base.GraphHelper; +import com.fr.base.iofileattr.SharableAttrMark; import com.fr.design.constants.UIConstants; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; @@ -479,7 +480,7 @@ public class XWAbsoluteLayout extends XLayoutContainer { } public void paintExtro(Graphics g) { - if (this.toData().getWidgetAttrMark("SharableAttrMark") != null) { + if (this.toData().getWidgetAttrMark(SharableAttrMark.XML_TAG) != null) { int width = getWidth() - ShareConstants.SHARE_EL_CONTROL_BUTTON_HW; g.setColor(UIConstants.NORMAL_BACKGROUND); g.fillArc(width, 0, ShareConstants.SHARE_EL_CONTROL_BUTTON_HW, ShareConstants.SHARE_EL_CONTROL_BUTTON_HW, diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java index d01230601b..76d54d2ac5 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java @@ -4,6 +4,7 @@ package com.fr.design.designer.creator.cardlayout; import com.fr.base.GraphHelper; +import com.fr.base.iofileattr.SharableAttrMark; import com.fr.design.constants.UIConstants; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; @@ -373,7 +374,7 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ } public void paintExtro(Graphics g) { - if (this.toData().getWidgetAttrMark("SharableAttrMark") != null) { + if (this.toData().getWidgetAttrMark(SharableAttrMark.XML_TAG) != null) { int width = getWidth() - ShareConstants.SHARE_EL_CONTROL_BUTTON_HW; g.setColor(UIConstants.NORMAL_BACKGROUND); g.fillArc(width, 0, ShareConstants.SHARE_EL_CONTROL_BUTTON_HW, ShareConstants.SHARE_EL_CONTROL_BUTTON_HW, From 58670a4777e9860ba41873670cd22597e383b198 Mon Sep 17 00:00:00 2001 From: plough Date: Tue, 27 Mar 2018 16:49:47 +0800 Subject: [PATCH 70/79] =?UTF-8?q?REPORT-7245=20@plough:=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E6=A0=8F=E6=AE=8B=E7=95=99=E4=B9=8B=E5=89=8D=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E7=9A=84=E7=97=95=E8=BF=B9=3D>=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E8=80=81=E6=89=93=E5=8D=B0=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../webattr/ReportWebWidgetConstants.java | 65 ++++++++++++++++--- .../com/fr/design/webattr/ToolBarPane.java | 23 ++++++- 2 files changed, 78 insertions(+), 10 deletions(-) diff --git a/designer/src/com/fr/design/webattr/ReportWebWidgetConstants.java b/designer/src/com/fr/design/webattr/ReportWebWidgetConstants.java index 5de5eb4a5e..232c332984 100644 --- a/designer/src/com/fr/design/webattr/ReportWebWidgetConstants.java +++ b/designer/src/com/fr/design/webattr/ReportWebWidgetConstants.java @@ -6,9 +6,45 @@ import com.fr.design.gui.core.WidgetOptionFactory; import com.fr.form.ui.CustomToolBarButton; import com.fr.form.ui.Widget; import com.fr.general.Inter; -import com.fr.report.web.button.*; -import com.fr.report.web.button.page.*; -import com.fr.report.web.button.write.*; +import com.fr.report.web.button.AppletPrint; +import com.fr.report.web.button.Edit; +import com.fr.report.web.button.Email; +import com.fr.report.web.button.ExcelO; +import com.fr.report.web.button.ExcelP; +import com.fr.report.web.button.ExcelS; +import com.fr.report.web.button.Export; +import com.fr.report.web.button.FlashPrint; +import com.fr.report.web.button.NewPrint; +import com.fr.report.web.button.PDF; +import com.fr.report.web.button.PDF2; +import com.fr.report.web.button.PDFPrint; +import com.fr.report.web.button.PageSetup; +import com.fr.report.web.button.Print; +import com.fr.report.web.button.PrintPreview; +import com.fr.report.web.button.Scale; +import com.fr.report.web.button.ServerPrint; +import com.fr.report.web.button.Word; +import com.fr.report.web.button.page.First; +import com.fr.report.web.button.page.Last; +import com.fr.report.web.button.page.Next; +import com.fr.report.web.button.page.PageNavi; +import com.fr.report.web.button.page.Previous; +import com.fr.report.web.button.page.SetPrinterOffset; +import com.fr.report.web.button.write.AppendColumnRow; +import com.fr.report.web.button.write.ClearStashedButton; +import com.fr.report.web.button.write.CustomizeImportExcelData; +import com.fr.report.web.button.write.DeleteColumnRow; +import com.fr.report.web.button.write.ExcelImport; +import com.fr.report.web.button.write.ImExcelAppend; +import com.fr.report.web.button.write.ImExcelClean; +import com.fr.report.web.button.write.ImExcelCover; +import com.fr.report.web.button.write.ImportExcelData; +import com.fr.report.web.button.write.ShowCellValue; +import com.fr.report.web.button.write.StashButton; +import com.fr.report.web.button.write.Submit; +import com.fr.report.web.button.write.SubmitForcibly; +import com.fr.report.web.button.write.Verify; +import com.fr.report.web.button.write.WriteOfflineHTML; import com.fr.stable.bridge.BridgeMark; import com.fr.stable.bridge.StableFactory; @@ -17,27 +53,27 @@ public class ReportWebWidgetConstants { } public static WidgetOption[] getPageToolBarInstance() { - return new WidgetOption[]{FIRST, PREVIOUS, PAGENAVI, NEXT, LAST, SCALE, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, + return new WidgetOption[]{FIRST, PREVIOUS, PAGENAVI, NEXT, LAST, SCALE, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, SETPRINTEROFFSET, CUSTOM_BUTTON}; } public static WidgetOption[] getViewToolBarInstance() { - return new WidgetOption[]{PAGESETUP, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, SETPRINTEROFFSET, PRINTPREVIEW, CUSTOM_BUTTON}; + return new WidgetOption[]{PAGESETUP, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, SETPRINTEROFFSET, PRINTPREVIEW, CUSTOM_BUTTON}; } public static WidgetOption[] getPreviewToolBarInstance() { - return new WidgetOption[]{FIRST, PREVIOUS, PAGENAVI, NEXT, LAST, SCALE, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, + return new WidgetOption[]{FIRST, PREVIOUS, PAGENAVI, NEXT, LAST, SCALE, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, SETPRINTEROFFSET, CUSTOM_BUTTON}; } public static WidgetOption[] getWriteToolBarInstance() { - return new WidgetOption[]{SUBMIT, VERIFY, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, IMPORTEXCELDATA, SHOWCELLVALUE, + return new WidgetOption[]{SUBMIT, VERIFY, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, IMPORTEXCELDATA, SHOWCELLVALUE, APPENDCOLUMNROW, DELETECOLUMNROW, SETPRINTEROFFSET, WRITEOFFLINEHTML, CUSTOM_BUTTON, WRITESTASH, WRITESTASHCLEAR, IMPORTEXCELDATA_CUSTOMIZED, IMPORTEXCEL, IMPORTEXCEL_COVER, IMPORTEXCEL_CLEAN, IMPORTEXCEL_APPEND}; } public static WidgetOption[] getFormToolBarInstance() { - return new WidgetOption[]{EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, SETPRINTEROFFSET, CUSTOM_BUTTON}; + return new WidgetOption[]{EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, SETPRINTEROFFSET, CUSTOM_BUTTON}; } // 查询 @@ -48,6 +84,14 @@ public class ReportWebWidgetConstants { public static final WidgetOption SUBMIT = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_Utils-Submit"), BaseUtils.readIcon("/com/fr/web/images/save.png"), Submit.class); + // flash打印按钮 + public static final WidgetOption FLASHPRINT = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_Utils-Print[Client]"), + BaseUtils.readIcon("/com/fr/web/images/flashPrint.png"), FlashPrint.class); + + // appletprint + public static final WidgetOption APPLETPRINT = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_Applet_Print"), + BaseUtils.readIcon("/com/fr/web/images/appletPrint.png"), AppletPrint.class); + // PDF导出 public static final WidgetOption PDF = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_ReportServerP-PDF"), BaseUtils.readIcon("/com/fr/web/images/pdf.png"), PDF.class); @@ -56,6 +100,10 @@ public class ReportWebWidgetConstants { public static final WidgetOption PDF2 = WidgetOptionFactory.createByWidgetClass( Inter.getLocText(new String[]{"ReportServerP-PDF", "ReportServerP-PDF2-INFO"}, new String[]{"(", ")"}), BaseUtils.readIcon("/com/fr/web/images/pdf.png"), PDF2.class); + // 客户端PDF打印 + public static final WidgetOption PDFPRINT = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_Utils-Print[Client]"), + BaseUtils.readIcon("/com/fr/web/images/pdfPrint.png"), PDFPrint.class); + // 服务器端打印 public static final WidgetOption SERVERPRINT = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_ReportServerP-Print[Server]"), BaseUtils.readIcon("/com/fr/web/images/serverPrint.png"), ServerPrint.class); @@ -103,6 +151,7 @@ public class ReportWebWidgetConstants { Scale.class); public static final WidgetOption NEW_PRINT = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_Print"), BaseUtils.readIcon("/com/fr/web/images/print.png"), NewPrint.class); + public static final WidgetOption PRINT = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_Print_Compatible"), BaseUtils.readIcon("/com/fr/web/images/print.png"), Print.class); public static final WidgetOption APPENDCOLUMNROW = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("Utils-Insert_Record"), BaseUtils.readIcon("/com/fr/web/images/appendRow.png"), AppendColumnRow.class); public static final WidgetOption DELETECOLUMNROW = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("Utils-Delete_Record"), diff --git a/designer/src/com/fr/design/webattr/ToolBarPane.java b/designer/src/com/fr/design/webattr/ToolBarPane.java index 20f71827d4..11d255b3a4 100644 --- a/designer/src/com/fr/design/webattr/ToolBarPane.java +++ b/designer/src/com/fr/design/webattr/ToolBarPane.java @@ -7,9 +7,13 @@ import com.fr.design.gui.core.WidgetOption; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.form.ui.ToolBar; import com.fr.form.ui.Widget; +import com.fr.report.web.annotation.OldPrintMethod; -import javax.swing.*; -import java.awt.*; +import javax.swing.BorderFactory; +import javax.swing.JOptionPane; +import javax.swing.SwingUtilities; +import javax.swing.TransferHandler; +import java.awt.Component; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.event.MouseAdapter; @@ -19,6 +23,7 @@ import java.util.List; public class ToolBarPane extends BasicBeanPane { private FToolBar ftoolbar = new FToolBar(); + private boolean populateFinished = false; // 正在 populate 数据 public ToolBarPane() { super(); @@ -79,6 +84,10 @@ public class ToolBarPane extends BasicBeanPane { */ public Component add(Component comp) { if (comp instanceof ToolBarButton) { + if (isPopulateFinished() && ((ToolBarButton) comp).getWidget().getClass().isAnnotationPresent(OldPrintMethod.class)) { + JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(this), "该功能只做兼容显示,请使用新版打印"); + return comp; + } this.ftoolbar.addButton((ToolBarButton) comp); } return super.add(comp); @@ -128,6 +137,7 @@ public class ToolBarPane extends BasicBeanPane { @Override public void populateBean(ToolBar toolbar) { + setPopulateFinished(false); this.removeAll(); this.getFToolBar().clearButton(); for (int j = 0; j < toolbar.getWidgetSize(); j++) { @@ -146,6 +156,7 @@ public class ToolBarPane extends BasicBeanPane { } this.getFToolBar().setBackground(toolbar.getBackground()); this.getFToolBar().setDefault(toolbar.isDefault()); + setPopulateFinished(true); } @Override @@ -171,6 +182,14 @@ public class ToolBarPane extends BasicBeanPane { } }; + private boolean isPopulateFinished() { + return populateFinished; + } + + private void setPopulateFinished(boolean populateFinished) { + this.populateFinished = populateFinished; + } + /* * 拖拽属性设置 From 48e249da0b138836f8b9cad36ed2afb12c335196 Mon Sep 17 00:00:00 2001 From: MoMeak Date: Tue, 27 Mar 2018 16:51:40 +0800 Subject: [PATCH 71/79] =?UTF-8?q?REPORT-7321=201=E3=80=81=E7=BB=9D?= =?UTF-8?q?=E5=AF=B9=E5=B8=83=E5=B1=80=E9=87=8C=E4=B8=A4=E4=B8=AAtab?= =?UTF-8?q?=E7=82=B9=E9=80=89=E9=80=89=E4=B8=8D=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/designer/beans/models/SelectionModel.java | 9 +++++++-- .../com/fr/design/mainframe/EditingMouseListener.java | 5 +++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java index 18ca1e6ea5..c7121f0e16 100644 --- a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java +++ b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java @@ -62,13 +62,16 @@ public class SelectionModel { * @param e 鼠标事件 */ public void selectACreatorAtMouseEvent(MouseEvent e) { - // 获取e所在的组件 - XCreator comp = designer.getComponentAt(e); if (e.getButton() == MouseEvent.BUTTON3 || (!InputEventBaseOnOS.isControlDown(e) && !e.isShiftDown())) { // 如果Ctrl或者Shift键盘没有按下,则清除已经选择的组件 selection.reset(); } else { //按下Ctrl或者shift键时鼠标可以进行多选,两次点击同一控件就取消选中 + XCreator comp = designer.getComponentAt(e); + XLayoutContainer topLayout = XCreatorUtils.getHotspotContainer(comp).getTopLayout(); + if (topLayout != null && !topLayout.isEditable()) { + comp = topLayout; + } XLayoutContainer container = XCreatorUtils.getParentXLayoutContainer(comp); for (XCreator selected : selection.getSelectedCreators()) { if (selected == comp || XCreatorUtils.getParentXLayoutContainer(selected) != container) { @@ -76,6 +79,8 @@ public class SelectionModel { } } } + // 获取e所在的组件 + XCreator comp = designer.getComponentAt(e); selectACreator(comp); } diff --git a/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java b/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java index 36be6e7180..a235ad6eb0 100644 --- a/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java +++ b/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java @@ -25,6 +25,7 @@ import com.fr.general.Inter; import com.fr.share.ShareConstants; import com.fr.stable.Constants; +import com.fr.stable.StringUtils; import javax.swing.*; import javax.swing.event.MouseInputAdapter; import java.awt.*; @@ -334,6 +335,10 @@ public class EditingMouseListener extends MouseInputAdapter { component.displayCoverPane(true); component.setDirections(Direction.TOP_BOTTOM_LEFT_RIGHT); } else { + //没有帮助信息时,不显示帮助图标 + if (StringUtils.isEmpty(component.toData().getDescription())) { + return; + } int minX1 = component.getX() + component.getWidth() - ShareConstants.SHARE_EL_CONTROL_BUTTON_HW - designer.getArea().getHorizontalValue(); int minY1 = component.getY() - designer.getArea().getVerticalValue(); if (e.getX() + GAP - component.getInsets().left > minX1 && e.getX() - GAP - component.getInsets().left < minX1 + ShareConstants.SHARE_EL_CONTROL_BUTTON_HW) { From 95a43bfe0c020a6aba16fce940e724758b327fd1 Mon Sep 17 00:00:00 2001 From: plough Date: Tue, 27 Mar 2018 17:42:25 +0800 Subject: [PATCH 72/79] =?UTF-8?q?REPORT-7245=20=E5=9B=BD=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/design/webattr/ToolBarPane.java | 3 ++- designer_base/src/com/fr/design/locale/designer.properties | 1 + .../src/com/fr/design/locale/designer_en_US.properties | 1 + .../src/com/fr/design/locale/designer_ja_JP.properties | 1 + .../src/com/fr/design/locale/designer_ko_KR.properties | 1 + .../src/com/fr/design/locale/designer_zh_CN.properties | 1 + .../src/com/fr/design/locale/designer_zh_TW.properties | 1 + 7 files changed, 8 insertions(+), 1 deletion(-) diff --git a/designer/src/com/fr/design/webattr/ToolBarPane.java b/designer/src/com/fr/design/webattr/ToolBarPane.java index 11d255b3a4..530717376b 100644 --- a/designer/src/com/fr/design/webattr/ToolBarPane.java +++ b/designer/src/com/fr/design/webattr/ToolBarPane.java @@ -7,6 +7,7 @@ import com.fr.design.gui.core.WidgetOption; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.form.ui.ToolBar; import com.fr.form.ui.Widget; +import com.fr.general.Inter; import com.fr.report.web.annotation.OldPrintMethod; import javax.swing.BorderFactory; @@ -85,7 +86,7 @@ public class ToolBarPane extends BasicBeanPane { public Component add(Component comp) { if (comp instanceof ToolBarButton) { if (isPopulateFinished() && ((ToolBarButton) comp).getWidget().getClass().isAnnotationPresent(OldPrintMethod.class)) { - JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(this), "该功能只做兼容显示,请使用新版打印"); + JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(this), Inter.getLocText("FR-Designer_Use_New_Print_Tip")); return comp; } this.ftoolbar.addButton((ToolBarButton) comp); diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index d5371eb7be..d70e599e9b 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -2209,3 +2209,4 @@ FR-Designer_Current_Page=Current page FR-Designer_Print_Area_Tip=eg(1, 4-9, 6, 8) FR-Designer_Image_Compress= FR-Designer_Image_Loading= +FR-Designer_Use_New_Print_Tip=Only display for compatibility, please use the new print 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 d700a82b9d..9b698c9022 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 @@ -2208,3 +2208,4 @@ FR-Designer_Current_Page=Current page FR-Designer_Print_Area_Tip=eg(1, 4-9, 6, 8) FR-Designer_Image_Compress=Compress Image FR-Designer_Image_Loading=Loading Image... +FR-Designer_Use_New_Print_Tip=Only display for compatibility, please use the new print 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 04838498f8..525e83ff8a 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 @@ -2206,3 +2206,4 @@ FR-Designer_Current_Page= FR-Designer_Print_Area_Tip= FR-Designer_Image_Compress= FR-Designer_Image_Loading= +FR-Designer_Use_New_Print_Tip= 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 3575254428..422d14ab52 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 @@ -2207,3 +2207,4 @@ FR-Designer_Current_Page= FR-Designer_Print_Area_Tip= FR-Designer_Image_Compress= FR-Designer_Image_Loading= +FR-Designer_Use_New_Print_Tip= 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 1ae224e9b4..57662ca4c5 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 @@ -2209,3 +2209,4 @@ FR-Designer_Current_Page=\u5F53\u524D\u9875 FR-Designer_Print_Area_Tip=\u683C\u5F0F(1, 4-9, 6, 8) FR-Designer_Image_Compress=\u56FE\u7247\u538B\u7F29 FR-Designer_Image_Loading=\u6B63\u5728\u6253\u5F00\u56FE\u7247... +FR-Designer_Use_New_Print_Tip=\u8BE5\u529F\u80FD\u53EA\u505A\u517C\u5BB9\u663E\u793A\uFF0C\u8BF7\u4F7F\u7528\u65B0\u7248\u6253\u5370 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 a301ad27cc..38f36c55b2 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 @@ -2208,3 +2208,4 @@ FR-Designer_Current_Page=\u7576\u524D\u9801 FR-Designer_Print_Area_Tip=\u683C\u5F0F(1, 4-9, 6, 8) FR-Designer_Image_Compress=\u5716\u7247\u58D3\u7E2E FR-Designer_Image_Loading=\u6B63\u5728\u6253\u958B\u5716\u7247\u2026 +FR-Designer_Use_New_Print_Tip=\u8A72\u529F\u80FD\u53EA\u505A\u76F8\u5BB9\u986F\u793A\uFF0C\u8ACB\u4F7F\u7528\u65B0\u7248\u5217\u5370 From 4f2585f066037ffec79df29a57079011a4062acc Mon Sep 17 00:00:00 2001 From: zheng Date: Wed, 28 Mar 2018 09:26:40 +0800 Subject: [PATCH 73/79] CHART-2144 --- .../other/VanChartInteractivePane.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/designer_chart/src/com/fr/plugin/chart/designer/other/VanChartInteractivePane.java b/designer_chart/src/com/fr/plugin/chart/designer/other/VanChartInteractivePane.java index 2f10e968c4..78490c4fcd 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/other/VanChartInteractivePane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/other/VanChartInteractivePane.java @@ -28,6 +28,8 @@ import com.fr.plugin.chart.vanchart.VanChart; import com.fr.stable.StableUtils; import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -163,6 +165,12 @@ public class VanChartInteractivePane extends AbstractVanChartScrollPane { } axisRotation = new UIButtonGroup(new String[]{Inter.getLocText("Plugin-ChartF_Open"), Inter.getLocText("Plugin-ChartF_Close")}); + axisRotation.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + checkZoomEnabled(); + } + }); Component[][] components = new Component[][]{ new Component[]{null,null}, new Component[]{new UILabel(Inter.getLocText("Plugin-ChartF_Reversal")),axisRotation} @@ -171,6 +179,14 @@ public class VanChartInteractivePane extends AbstractVanChartScrollPane { return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Inter.getLocText("Plugin-ChartF_Axis"), panel); } + private void checkZoomEnabled() { + if (zoomWidget != null && axisRotation != null) { + zoomWidget.setSelectedIndex(1); + checkZoomPane(); + zoomWidget.setEnabled(axisRotation.getSelectedIndex() == 1); + } + } + protected String[] getNameArray() { return new String[]{Inter.getLocText("ChartF-X_Axis"), Inter.getLocText("ChartF-Y_Axis") ,Inter.getLocText("Plugin-ChartF_XYAxis"),Inter.getLocText("Chart-Use_None")}; @@ -273,6 +289,8 @@ public class VanChartInteractivePane extends AbstractVanChartScrollPane { populateAutoRefresh((VanChart)chart); populateHyperlink(plot); + + checkZoomEnabled(); } From 07f2a069c0ade6a1e8e4d76da2e16c69ed30eb79 Mon Sep 17 00:00:00 2001 From: MoMeak Date: Wed, 28 Mar 2018 09:35:06 +0800 Subject: [PATCH 74/79] =?UTF-8?q?REPORT-7196=20=E7=BB=84=E4=BB=B6=E9=9B=86?= =?UTF-8?q?=E5=90=88=E5=A4=8D=E7=94=A8=E5=9C=A8=E8=87=AA=E9=80=82=E5=BA=94?= =?UTF-8?q?=E5=B8=83=E5=B1=80=E9=87=8C=EF=BC=8C=E9=87=8C=E9=9D=A2=E7=9A=84?= =?UTF-8?q?=E5=AD=90=E7=BB=84=E4=BB=B6=E6=B2=A1=E6=9C=89=E9=9A=8F=E5=A4=96?= =?UTF-8?q?=E9=9D=A2=E7=BB=9D=E5=AF=B9=E5=B8=83=E5=B1=80=E6=A1=86=E7=9A=84?= =?UTF-8?q?=E5=A4=A7=E5=B0=8F=E6=94=B9=E5=8F=98=E8=80=8C=E6=8B=89=E4=BC=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java | 1 + 1 file changed, 1 insertion(+) diff --git a/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java b/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java index c649174b08..4df1334b20 100644 --- a/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java +++ b/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java @@ -199,6 +199,7 @@ public class ShareWidgetButton extends JPanel implements MouseListener, MouseMot if (creatorSource != null) { ((AbstractBorderStyleWidget)creatorSource).addWidgetAttrMark(new SharableAttrMark(true)); XCreator xCreator = XCreatorUtils.createXCreator(creatorSource, new Dimension(no.getBindInfo().getWidth(), no.getBindInfo().getHeight())); + xCreator.setBackupBound(xCreator.getBounds()); xCreator.setShareId(shareId); WidgetToolBarPane.getTarget().startDraggingBean(xCreator); lastPressEvent = null; From 761a4dd456e1dec188dda42d14ad508c9a11bcf3 Mon Sep 17 00:00:00 2001 From: MoMeak Date: Wed, 28 Mar 2018 10:50:32 +0800 Subject: [PATCH 75/79] =?UTF-8?q?REPORT-7416=20=E5=8F=82=E6=95=B0=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF=E7=9A=84=E7=9B=B8=E5=85=B3bug=20REPORT-7418=20?= =?UTF-8?q?=E5=B8=AE=E5=8A=A9=E7=AC=A6=E5=8F=B7=E9=87=8C=E7=9A=84=E5=B8=AE?= =?UTF-8?q?=E5=8A=A9=E7=AC=A6=E5=8F=B7=E7=82=B9=E4=B8=8D=E5=8A=A8=EF=BC=8C?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0=E8=A7=81=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/mainframe/EditingMouseListener.java | 4 ++-- designer_form/src/com/fr/design/mainframe/FormDesigner.java | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java b/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java index a235ad6eb0..259843ae6a 100644 --- a/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java +++ b/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java @@ -339,8 +339,8 @@ public class EditingMouseListener extends MouseInputAdapter { if (StringUtils.isEmpty(component.toData().getDescription())) { return; } - int minX1 = component.getX() + component.getWidth() - ShareConstants.SHARE_EL_CONTROL_BUTTON_HW - designer.getArea().getHorizontalValue(); - int minY1 = component.getY() - designer.getArea().getVerticalValue(); + int minX1 = getParentPositionX(component, component.getX()) + component.getWidth() - ShareConstants.SHARE_EL_CONTROL_BUTTON_HW - designer.getArea().getHorizontalValue(); + int minY1 = getParentPositionY(component, component.getY()) - designer.getArea().getVerticalValue(); if (e.getX() + GAP - component.getInsets().left > minX1 && e.getX() - GAP - component.getInsets().left < minX1 + ShareConstants.SHARE_EL_CONTROL_BUTTON_HW) { if (e.getY() + GAP - component.getInsets().top > minY1 && e.getY() - GAP - component.getInsets().top < minY1 + ShareConstants.SHARE_EL_CONTROL_BUTTON_HW) { designer.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); diff --git a/designer_form/src/com/fr/design/mainframe/FormDesigner.java b/designer_form/src/com/fr/design/mainframe/FormDesigner.java index f0d5803b89..ed49beb319 100644 --- a/designer_form/src/com/fr/design/mainframe/FormDesigner.java +++ b/designer_form/src/com/fr/design/mainframe/FormDesigner.java @@ -475,7 +475,6 @@ public class FormDesigner extends TargetComponent
implements TreeSelection paraHeight = 0; paraComponent = null; formLayoutContainer.setSize(rootComponent.getWidth(), rootComponent.getHeight()); - EastRegionContainerPane.getInstance().replaceConfiguredRolesPane(this.getEastDownPane()); //atat //EastRegionContainerPane.getInstance().addTitlePane(ParameterPropertyPane.getInstance(FormDesigner.this)); //删除后重绘下 From 4aecf7e67081ddb59db53aaa6544cef248076eb5 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Wed, 28 Mar 2018 11:24:59 +0800 Subject: [PATCH 76/79] =?UTF-8?q?=E6=97=A0=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=E4=BA=A4=E4=BA=92=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/gui/controlpane/UIControlPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java b/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java index ab43e1c264..d0a4c12c5f 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java +++ b/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java @@ -385,7 +385,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH checkValid(); } catch (Exception exp) { // 存在非法输入 拒绝隐藏 - JOptionPane.showMessageDialog(UIControlPane.this, exp.getMessage()); + JOptionPane.showMessageDialog(UIControlPane.this.controlUpdatePane, exp.getMessage()); this.requestFocus(); return; } From 81c95ad9572e99813087cf85ac37095ebad34941 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Fri, 30 Mar 2018 12:10:09 +0800 Subject: [PATCH 77/79] =?UTF-8?q?REPORT-7454=20=E5=88=87=E6=8D=A2=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=A0=BC=E6=95=B0=E6=8D=AE=E9=9B=86=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E9=83=A8=E5=88=86=E9=85=8D=E7=BD=AE=E9=A1=B9?= =?UTF-8?q?=E5=8F=AF=E8=83=BD=E4=B8=8D=E8=83=BD=E5=88=B7=E6=96=B0=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=9B=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=83=A8=E5=88=86=E4=BB=A3=E7=A0=81=E8=B4=A8=E9=87=8F=EF=BC=8C?= =?UTF-8?q?=E9=98=B2=E6=AD=A2=E5=8F=AA=E5=9B=A0=E4=B8=BA=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E5=B0=B1=E8=A7=A6=E5=8F=91=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cellquick/CellDSColumnEditor.java | 249 ++++++++++++------ 1 file changed, 167 insertions(+), 82 deletions(-) diff --git a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java index be8c7c962f..72e6c9ae1e 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java @@ -35,6 +35,7 @@ import com.fr.report.cell.cellattr.CellExpandAttr; import com.fr.report.cell.cellattr.core.group.DSColumn; import com.fr.report.cell.cellattr.core.group.FilterTypeEnum; import com.fr.report.cell.cellattr.core.group.SelectCount; +import com.fr.stable.StringUtils; import javax.swing.BorderFactory; import javax.swing.Icon; @@ -74,9 +75,6 @@ public class CellDSColumnEditor extends CellQuickEditor { private static final Color TIP_FONT_COLOR = new Color(0x7F333334, true); - private JPanel dsColumnRegion; - private JPanel centerPane; - /** * 基本和高级设置 */ @@ -117,10 +115,10 @@ public class CellDSColumnEditor extends CellQuickEditor { public JComponent createCenterBody() { this.createPanes(); this.createSwitchTab(); - dsColumnRegion = new JPanel(new BorderLayout()); + JPanel dsColumnRegion = new JPanel(new BorderLayout()); dsColumnRegion.add(tabsHeaderIconPane, BorderLayout.NORTH); dsColumnRegion.add(cardContainer, BorderLayout.CENTER); - centerPane = new JPanel(new BorderLayout()); + JPanel centerPane = new JPanel(new BorderLayout()); centerPane.add(dsColumnRegion, BorderLayout.CENTER); return centerPane; } @@ -331,6 +329,7 @@ public class CellDSColumnEditor extends CellQuickEditor { class DSColumnAdvancedEditorPane extends AbstractDSCellEditorPane { + /*pane begin*/ /** * 排列顺序 */ @@ -354,7 +353,7 @@ public class CellDSColumnEditor extends CellQuickEditor { /** * 补充空白数据 */ - private UICheckBox useMultiplyNumCheckBox; + private UICheckBox useMultiNumCheckBox; /** * 补充空白数据数目输入框 */ @@ -363,6 +362,75 @@ public class CellDSColumnEditor extends CellQuickEditor { * 补充空白数据数目面板 可隐藏 */ private JPanel multiPane; + /*pane end*/ + + + /*listeners begin*/ + private UIObserverListener sortPaneFormulaChangeListener = new UIObserverListener() { + @Override + public void doChange() { + sortPane.update(cellElement); + fireTargetModified(); + } + }; + + private ChangeListener sortTypeBtnGroupChangeListener = new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + sortPane.update(cellElement); + fireTargetModified(); + } + }; + + private UIObserverListener filterPaneChangeListener = new UIObserverListener() { + @Override + public void doChange() { + filterPane.update(cellElement); + fireTargetModified(); + } + }; + + private UIObserverListener customValuePaneChangeListener = new UIObserverListener() { + @Override + public void doChange() { + valuePane.update(cellElement); + fireTargetModified(); + } + }; + + private ChangeListener heCheckBoxChangeListener = new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + cellDSColumnAdvancedPane.updateExtendConfig(); + fireTargetModified(); + } + }; + + private ChangeListener veCheckBoxChangeListener = new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + cellDSColumnAdvancedPane.updateExtendConfig(); + fireTargetModified(); + } + }; + + private ActionListener useMultiNumCheckBoxChangeListener = new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + checkButtonEnabled(); + cellDSColumnAdvancedPane.updateMultipleConfig(); + fireTargetModified(); + } + }; + + private ChangeListener multiNumSpinnerChangeListener = new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + cellDSColumnAdvancedPane.updateMultipleConfig(); + fireTargetModified(); + } + }; + /*listeners end*/ public DSColumnAdvancedEditorPane() { @@ -398,6 +466,7 @@ public class CellDSColumnEditor extends CellQuickEditor { @Override public void populate() { if (cellElement != null) { + disableListener(); sortPane.populate(cellElement); valuePane.populate(cellElement); filterPane.populate(cellElement); @@ -407,6 +476,7 @@ public class CellDSColumnEditor extends CellQuickEditor { cellElement.setCellExpandAttr(cellExpandAttr); } // extendable + //noinspection Duplicates switch (cellExpandAttr.getExtendable()) { case CellExpandAttr.Both_EXTENDABLE: heCheckBox.setSelected(true); @@ -426,12 +496,15 @@ public class CellDSColumnEditor extends CellQuickEditor { } } if (cellExpandAttr.getMultipleNumber() == -1) { - useMultiplyNumCheckBox.setSelected(false); + useMultiNumCheckBox.setSelected(false); + // 默认值 + multiNumSpinner.setValue(1); } else { - useMultiplyNumCheckBox.setSelected(true); + useMultiNumCheckBox.setSelected(true); multiNumSpinner.setValue(cellExpandAttr.getMultipleNumber()); } this.checkButtonEnabled(); + enableListener(); } } @@ -449,6 +522,7 @@ public class CellDSColumnEditor extends CellQuickEditor { cellExpandAttr = new CellExpandAttr(); cellElement.setCellExpandAttr(cellExpandAttr); } + //noinspection Duplicates if (heCheckBox.isSelected()) { if (veCheckBox.isSelected()) { cellExpandAttr.setExtendable(CellExpandAttr.Both_EXTENDABLE); @@ -469,12 +543,11 @@ public class CellDSColumnEditor extends CellQuickEditor { */ private void updateMultipleConfig() { CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr(); - if (this.useMultiplyNumCheckBox.isSelected()) { + if (this.useMultiNumCheckBox.isSelected()) { cellExpandAttr.setMultipleNumber((int) multiNumSpinner.getValue()); } else { cellExpandAttr.setMultipleNumber(-1); } - } /** @@ -485,68 +558,29 @@ public class CellDSColumnEditor extends CellQuickEditor { @Override protected JPanel createContentPane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); + //结果集排序 sortPane = new ResultSetSortConfigPane(); - sortPane.addListener(new UIObserverListener() { - @Override - public void doChange() { - sortPane.update(cellElement); - fireTargetModified(); - } - }, new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - sortPane.update(cellElement); - fireTargetModified(); - } - } - ); + //结果筛选 filterPane = new ResultSetFilterConfigPane(); - filterPane.addListener(new UIObserverListener() { - @Override - public void doChange() { - filterPane.update(cellElement); - fireTargetModified(); - } - } - ); + //自定义值显示 valuePane = new CustomValuePane(); - valuePane.addListener(new UIObserverListener() { - @Override - public void doChange() { - valuePane.update(cellElement); - fireTargetModified(); - } - }); //可扩展性 JPanel extendableDirectionPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); extendableDirectionPane.add(heCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Horizontal_Extendable"))); extendableDirectionPane.add(veCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Vertical_Extendable"))); - heCheckBox.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - cellDSColumnAdvancedPane.updateExtendConfig(); - fireTargetModified(); - } - }); - veCheckBox.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - cellDSColumnAdvancedPane.updateExtendConfig(); - fireTargetModified(); - } - }); - JPanel multiNumPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); //补充空白数据 - useMultiplyNumCheckBox = new UICheckBox(Inter.getLocText("Fill_blank_Data")); + JPanel multiNumPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); + useMultiNumCheckBox = new UICheckBox(Inter.getLocText("Fill_blank_Data")); JPanel checkBoxPane = new JPanel(new BorderLayout()); - checkBoxPane.add(useMultiplyNumCheckBox, BorderLayout.WEST); + checkBoxPane.add(useMultiNumCheckBox, BorderLayout.WEST); multiNumPane.add(checkBoxPane); multiNumSpinner = new UISpinner(1, 10000, 1, 1); + //数据倍数 UILabel multipleLabel = new UILabel(Inter.getLocText("Column_Multiple")); multiPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{ @@ -557,25 +591,11 @@ public class CellDSColumnEditor extends CellQuickEditor { ); multiPane.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0)); multiNumPane.add(multiPane); - useMultiplyNumCheckBox.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - checkButtonEnabled(); - cellDSColumnAdvancedPane.updateMultipleConfig(); - fireTargetModified(); - } - }); - multiNumSpinner.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - cellDSColumnAdvancedPane.updateMultipleConfig(); - fireTargetModified(); - } - }); + + enableListener(); double[] rowSize = {P, P, P, P, P, P}; double[] columnSize = {F}; - Component[][] components = new Component[][]{ {sortPane}, {filterPane}, @@ -586,9 +606,29 @@ public class CellDSColumnEditor extends CellQuickEditor { return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, HGAP, VGAP); } + public void enableListener() { + sortPane.addListener(sortPaneFormulaChangeListener, sortTypeBtnGroupChangeListener); + filterPane.addListener(filterPaneChangeListener); + valuePane.addListener(customValuePaneChangeListener); + heCheckBox.addChangeListener(heCheckBoxChangeListener); + veCheckBox.addChangeListener(veCheckBoxChangeListener); + useMultiNumCheckBox.addActionListener(useMultiNumCheckBoxChangeListener); + multiNumSpinner.addChangeListener(multiNumSpinnerChangeListener); + } + + public void disableListener() { + sortPane.removeListener(sortTypeBtnGroupChangeListener); + filterPane.removeListener(); + valuePane.removeListener(); + heCheckBox.removeChangeListener(heCheckBoxChangeListener); + veCheckBox.removeChangeListener(veCheckBoxChangeListener); + useMultiNumCheckBox.removeActionListener(useMultiNumCheckBoxChangeListener); + multiNumSpinner.removeChangeListener(multiNumSpinnerChangeListener); + } + private void checkButtonEnabled() { - if (useMultiplyNumCheckBox.isSelected()) { + if (useMultiNumCheckBox.isSelected()) { multiNumSpinner.setEnabled(true); multiPane.setVisible(true); } else { @@ -665,7 +705,7 @@ public class CellDSColumnEditor extends CellQuickEditor { public void populate(TemplateCellElement cellElement) { if (cellElement != null) { Object value = cellElement.getValue(); - if (value != null && value instanceof DSColumn) { + if (value instanceof DSColumn) { this.formulaField.populateElement(cellElement); DSColumn dSColumn = (DSColumn) value; int sort = dSColumn.getOrder(); @@ -682,6 +722,8 @@ public class CellDSColumnEditor extends CellQuickEditor { String sortFormula = dSColumn.getSortFormula(); if (sortFormula != null && sortFormula.length() >= 1) { this.formulaField.populate(sortFormula); + } else { + this.formulaField.populate(DEFAULT_VALUE); } } } @@ -695,8 +737,8 @@ public class CellDSColumnEditor extends CellQuickEditor { public void update(CellElement cellElement) { if (cellElement != null) { Object value = cellElement.getValue(); - if (value != null && value instanceof DSColumn) { - DSColumn dSColumn = (DSColumn) (cellElement.getValue()); + if (value instanceof DSColumn) { + DSColumn dSColumn = (DSColumn) value; dSColumn.setOrder(this.sortTypePane.getSelectedIndex()); dSColumn.setSortFormula(this.formulaField.getFormulaText()); } @@ -713,6 +755,16 @@ public class CellDSColumnEditor extends CellQuickEditor { formulaField.addListener(formulaChangeListener); sortTypePane.addChangeListener(changeListener); } + + /** + * 去除事件监听器 + * + * @param changeListener 排序类型下拉框改动事件监听器 + */ + public void removeListener(ChangeListener changeListener) { + formulaField.removeListener(); + sortTypePane.removeChangeListener(changeListener); + } } /** @@ -858,13 +910,18 @@ public class CellDSColumnEditor extends CellQuickEditor { rsComboBox.removeActionListener(actionListener); if (cellElement != null) { Object value = cellElement.getValue(); - if (value != null && value instanceof DSColumn) { + if (value instanceof DSColumn) { DSColumn dSColumn = (DSColumn) (cellElement.getValue()); SelectCount selectCount = dSColumn.getSelectCount(); this.topFormulaPane.populateElement(cellElement); this.bottomFormulaPane.populateElement(cellElement); CardLayout setCardPaneLayout = (CardLayout) setCardPane.getLayout(); CardLayout tipCardPaneLayout = (CardLayout) tipCardPane.getLayout(); + // 重置默认值 + this.topFormulaPane.populate(DEFAULT_VALUE); + this.bottomFormulaPane.populate(DEFAULT_VALUE); + this.serialTextField.setText(StringUtils.EMPTY); + if (selectCount != null) { int selectCountType = selectCount.getType(); this.rsComboBox.setSelectedIndex(selectCountType); @@ -933,6 +990,7 @@ public class CellDSColumnEditor extends CellQuickEditor { TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, 0); } } else { + this.rsComboBox.setSelectedIndex(0); //未定义 setCardPaneLayout.show(setCardPane, UNDEFINE.name()); tipCardPaneLayout.show(tipCardPane, UNDEFINE.name()); @@ -950,8 +1008,8 @@ public class CellDSColumnEditor extends CellQuickEditor { public void update(CellElement cellElement) { if (cellElement != null) { Object value = cellElement.getValue(); - if (value != null && value instanceof DSColumn) { - DSColumn dSColumn = (DSColumn) (cellElement.getValue()); + if (value instanceof DSColumn) { + DSColumn dSColumn = (DSColumn) value; int selectedFilterIndex = this.rsComboBox.getSelectedIndex(); if (selectedFilterIndex == 0) { dSColumn.setSelectCount(null); @@ -959,6 +1017,7 @@ public class CellDSColumnEditor extends CellQuickEditor { SelectCount selectCount = new SelectCount(); selectCount.setType(selectedFilterIndex); dSColumn.setSelectCount(selectCount); + //noinspection Duplicates if (selectedFilterIndex == TOP.getValue()) { selectCount.setFormulaCount(this.topFormulaPane.getFormulaText()); } else if (selectedFilterIndex == BOTTOM.getValue()) { @@ -982,6 +1041,16 @@ public class CellDSColumnEditor extends CellQuickEditor { rsComboBox.registerChangeListener(formulaListener); serialTextField.registerChangeListener(formulaListener); } + + /** + * 去除事件监听器 + */ + public void removeListener() { + topFormulaPane.removeListener(); + bottomFormulaPane.removeListener(); + rsComboBox.removeChangeListener(); + serialTextField.registerChangeListener(null); + } } /** @@ -1035,6 +1104,13 @@ public class CellDSColumnEditor extends CellQuickEditor { this.formulaTextField.registerChangeListener(listener); } + /** + * 取消事件监听器 + */ + public void removeListener() { + this.formulaTextField.registerChangeListener(null); + } + private ActionListener formulaButtonActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent evt) { @@ -1048,7 +1124,7 @@ public class CellDSColumnEditor extends CellQuickEditor { final UIFormula formulaPane = FormulaFactory.createFormulaPaneWhenReserveFormula(); if (cellElement != null) { Object value = cellElement.getValue(); - if (value != null && value instanceof DSColumn) { + if (value instanceof DSColumn) { DSColumn dsColumn = (DSColumn) value; String[] displayNames = DesignTableDataManager.getSelectedColumnNames(DesignTableDataManager.getEditingTableDataSource(), dsColumn.getDSName()); formulaPane.populate(valueFormula, new CustomVariableResolver(displayNames, true)); @@ -1092,12 +1168,14 @@ public class CellDSColumnEditor extends CellQuickEditor { public void populate(CellElement cellElement) { if (cellElement != null) { Object value = cellElement.getValue(); - if (value != null && value instanceof DSColumn) { + if (value instanceof DSColumn) { DSColumn dSColumn = (DSColumn) value; //formula String valueFormula = dSColumn.getResult(); if (valueFormula != null) { formulaField.populate(valueFormula); + } else { + formulaField.populate(DEFAULT_VALUE); } formulaField.populateElement(cellElement); @@ -1108,7 +1186,7 @@ public class CellDSColumnEditor extends CellQuickEditor { public void update(CellElement cellElement) { if (cellElement != null) { Object value = cellElement.getValue(); - if (value != null && value instanceof DSColumn) { + if (value instanceof DSColumn) { DSColumn dSColumn = (DSColumn) (cellElement.getValue()); dSColumn.setResult(this.formulaField.getFormulaText()); } @@ -1123,6 +1201,13 @@ public class CellDSColumnEditor extends CellQuickEditor { public void addListener(UIObserverListener formulaListener) { this.formulaField.addListener(formulaListener); } + + /** + * 移除事件监听器 + */ + public void removeListener() { + this.formulaField.removeListener(); + } } } From 7066d23dc7d1c7630af7d3bb1826ce6c05a59fbe Mon Sep 17 00:00:00 2001 From: MoMeak Date: Fri, 30 Mar 2018 15:56:21 +0800 Subject: [PATCH 78/79] =?UTF-8?q?REPORT-7463=20=E7=B9=81=E4=BD=93=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8=EF=BC=9A=E6=97=A0=E6=B3=95=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E5=8B=BE=E9=80=89=E6=89=93=E5=8D=B0/=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=8D=95=E5=85=83=E6=A0=BC=E5=86=85=E5=AE=B9/=E8=83=8C?= =?UTF-8?q?=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/cell/settingpane/CellOtherSetPane.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java b/designer/src/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java index 873087df04..3dbcbb8942 100644 --- a/designer/src/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java +++ b/designer/src/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java @@ -292,8 +292,8 @@ public class CellOtherSetPane extends AbstractCellAttrPane { autoHeightRadioButton.setGlobalName(Inter.getLocText("FR-Designer_Auto_Adjust_Height")); autoWidthRadioButton.setGlobalName(Inter.getLocText("FR-Designer_Auto_Adjust_Height")); previewCellContent.setGlobalName(Inter.getLocText("FR-Designer_Preview")); - printAndExportContent.setGlobalName(Inter.getLocText("CellWrite-Preview_Cell_Content")); - printAndExportBackground.setGlobalName(Inter.getLocText("CellWrite-Print_Background")); + printAndExportContent.setGlobalName(Inter.getLocText("FR-Designer_CellWrite_Print_Content")); + printAndExportBackground.setGlobalName(Inter.getLocText("FR-Designer_CellWrite_Print_Background")); showContent.setGlobalName(Inter.getLocText("FR-Designer_Show_Content")); fileNameTextField.setGlobalName(Inter.getLocText("FR-Designer_Show_Content")); tooltipTextField.setGlobalName(Inter.getLocText("FR-Designer_CellWrite_ToolTip")); @@ -431,7 +431,7 @@ public class CellOtherSetPane extends AbstractCellAttrPane { cellGUIAttr.setPreviewContent(previewCellContent.isSelected()); } - if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_CellWrite_Preview_Cell_Content"))) { + if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_CellWrite_Print_Content"))) { cellGUIAttr.setPrintContent(printAndExportContent.isSelected()); } From 30a14787ce9937cb6ee15a045dc75fa130c7c577 Mon Sep 17 00:00:00 2001 From: MoMeak Date: Fri, 30 Mar 2018 16:19:47 +0800 Subject: [PATCH 79/79] =?UTF-8?q?=E6=94=B9=E4=B8=80=E4=B8=8B=E5=9B=BD?= =?UTF-8?q?=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/cell/settingpane/CellOtherSetPane.java | 4 ++-- designer_base/src/com/fr/design/locale/designer.properties | 2 +- .../src/com/fr/design/locale/designer_en_US.properties | 2 +- .../src/com/fr/design/locale/designer_ja_JP.properties | 2 +- .../src/com/fr/design/locale/designer_ko_KR.properties | 2 +- .../src/com/fr/design/locale/designer_zh_CN.properties | 2 +- .../src/com/fr/design/locale/designer_zh_TW.properties | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java b/designer/src/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java index 3dbcbb8942..e0bebfe1ef 100644 --- a/designer/src/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java +++ b/designer/src/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java @@ -100,7 +100,7 @@ public class CellOtherSetPane extends AbstractCellAttrPane { defaultAutoRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Follow_Paper_Settings")); noAutoRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_No_Auto_Adjust")); autoHeightRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Auto_Adjust_Height")); - autoWidthRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Auto_Adjust_Wdith")); + autoWidthRadioButton = new UIRadioButton(Inter.getLocText("FR-Designer_Auto_Adjust_Width")); adjustRadioButtons = new UIRadioButton[]{ defaultAutoRadioButton, noAutoRadioButton, autoHeightRadioButton, autoWidthRadioButton }; @@ -290,7 +290,7 @@ public class CellOtherSetPane extends AbstractCellAttrPane { defaultAutoRadioButton.setGlobalName(Inter.getLocText("FR-Designer_Follow_Paper_Settings")); noAutoRadioButton.setGlobalName(Inter.getLocText("FR-Designer_No_Auto_Adjust")); autoHeightRadioButton.setGlobalName(Inter.getLocText("FR-Designer_Auto_Adjust_Height")); - autoWidthRadioButton.setGlobalName(Inter.getLocText("FR-Designer_Auto_Adjust_Height")); + autoWidthRadioButton.setGlobalName(Inter.getLocText("FR-Designer_Auto_Adjust_Width")); previewCellContent.setGlobalName(Inter.getLocText("FR-Designer_Preview")); printAndExportContent.setGlobalName(Inter.getLocText("FR-Designer_CellWrite_Print_Content")); printAndExportBackground.setGlobalName(Inter.getLocText("FR-Designer_CellWrite_Print_Background")); diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index f4b2427954..729e581a47 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -2070,7 +2070,7 @@ FR-Designer_StyleAlignment_Single_Line=Single_Line FR-Designer_StyleAlignment_Single_Line(Adjust_Font)=Single_Line(Adjust_Font) FR-Designer_StyleAlignment_Multi_Line(Adjust_Font)=Multi_Line(Adjust_Font) FR-Designer_Auto_Adjust_Height=Auto_Adjust_Height -FR-Designer_Auto_Adjust_Wdith=Auto_Adjust_Wdith +FR-Designer_Auto_Adjust_Width=Auto_Adjust_Width FR-Designer_Type_Set=Type_Set FR-Designer_Dic_Data_Query=Data_Query FR-Designer_Dictionary_Dynamic_SQL=Dictionary_Dynamic_SQL 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 ff3a6b9716..bd6452541f 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 @@ -2072,7 +2072,7 @@ FR-Designer_StyleAlignment_Single_Line=Single Line FR-Designer_StyleAlignment_Single_Line(Adjust_Font)=Single Line(Adjust Font) FR-Designer_StyleAlignment_Multi_Line(Adjust_Font)=Multi Line(Adjust Font) FR-Designer_Auto_Adjust_Height=Auto Adjust Height -FR-Designer_Auto_Adjust_Wdith=Auto Adjust Wdith +FR-Designer_Auto_Adjust_Width=Auto Adjust Wdith FR-Designer_Type_Set=Type Set FR-Designer_Dic_Data_Query=Data Query FR-Designer_Dictionary_Dynamic_SQL=Dictionary Dynamic SQL 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 04838498f8..8fc1b9566c 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 @@ -2050,7 +2050,7 @@ FR-Designer_StyleAlignment_Single_Line= FR-Designer_StyleAlignment_Single_Line(Adjust_Font)= FR-Designer_StyleAlignment_Multi_Line(Adjust_Font)= FR-Designer_Auto_Adjust_Height= -FR-Designer_Auto_Adjust_Wdith= +FR-Designer_Auto_Adjust_Width= FR-Designer_Type_Set= FR-Designer_Dic_Data_Query= FR-Designer_Dictionary_Dynamic_SQL= 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 3575254428..796e9b447d 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 @@ -2048,7 +2048,7 @@ FR-Designer_StyleAlignment_Single_Line= FR-Designer_StyleAlignment_Single_Line(Adjust_Font)= FR-Designer_StyleAlignment_Multi_Line(Adjust_Font)= FR-Designer_Auto_Adjust_Height= -FR-Designer_Auto_Adjust_Wdith= +FR-Designer_Auto_Adjust_Width= FR-Designer_Type_Set= FR-Designer_Dic_Data_Query= FR-Designer_Dictionary_Dynamic_SQL= 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 398d68be7c..38ae5bca33 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 @@ -2072,7 +2072,7 @@ FR-Designer_StyleAlignment_Single_Line=\u5355\u884C\u663E\u793A FR-Designer_StyleAlignment_Single_Line(Adjust_Font)=\u5355\u884C\u663E\u793A(\u8C03\u6574\u5B57\u4F53) FR-Designer_StyleAlignment_Multi_Line(Adjust_Font)=\u591A\u884C\u663E\u793A(\u8C03\u6574\u5B57\u4F53) FR-Designer_Auto_Adjust_Height=\u81EA\u52A8\u8C03\u6574\u884C\u9AD8 -FR-Designer_Auto_Adjust_Wdith=\u81EA\u52A8\u8C03\u6574\u5217\u5BBD +FR-Designer_Auto_Adjust_Width=\u81EA\u52A8\u8C03\u6574\u5217\u5BBD FR-Designer_Type_Set=\u7C7B\u578B\u8BBE\u7F6E FR-Designer_Dic_Data_Query=\u6570\u636E\u67E5\u8BE2 FR-Designer_Dictionary_Dynamic_SQL=\u52A8\u6001SQL 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 d584bef326..5847de34b6 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 @@ -2068,7 +2068,7 @@ FR-Designer_StyleAlignment_Single_Line=\u55AE\u884C\u986F\u793A FR-Designer_StyleAlignment_Single_Line(Adjust_Font)=\u55AE\u884C\u986F\u793A(\u8ABF\u6574\u5B57\u578B) FR-Designer_StyleAlignment_Multi_Line(Adjust_Font)=\u591A\u884C\u986F\u793A(\u8ABF\u6574\u5B57\u578B) FR-Designer_Auto_Adjust_Height=\u81EA\u52D5\u8ABF\u6574\u884C\u9AD8 -FR-Designer_Auto_Adjust_Wdith=\u81EA\u52D5\u8ABF\u6574\u5217\u5BEC +FR-Designer_Auto_Adjust_Width=\u81EA\u52D5\u8ABF\u6574\u5217\u5BEC FR-Designer_Type_Set=\u578B\u5225\u8A2D\u5B9A FR-Designer_Dic_Data_Query=\u8CC7\u6599\u67E5\u8A62 FR-Designer_Dictionary_Dynamic_SQL=\u52D5\u614BSQL