From 86234ee31ff631c32013fd6434cb1493ab30fc46 Mon Sep 17 00:00:00 2001 From: plough Date: Wed, 16 May 2018 11:59:23 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-8125=20=E6=B0=B4=E5=8D=B0=20=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8=E9=85=8D=E7=BD=AE=E7=95=8C=E9=9D=A2=E4=B8=8E?= =?UTF-8?q?=E5=AE=9E=E6=97=B6=E9=A2=84=E8=A7=88=3D>=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/constants/UIConstants.java | 1 + .../dialog/watermark/watermark_background.png | Bin 0 -> 100196 bytes .../fr/design/images/m_report/watermark.png | Bin 0 -> 558 bytes .../src/com/fr/design/menu/KeySetUtils.java | 15 ++ .../com/fr/design/report/WatermarkPane.java | 170 ++++++++++++++++++ .../design/report/WatermarkPreviewPane.java | 37 ++++ .../AccessibleBodyWatermarkEditor.java | 48 +++++ .../widget/renderer/WatermarkRenderer.java | 14 ++ .../widget/wrappers/WatermarkWrapper.java | 25 +++ .../FRAbsoluteBodyLayoutDefinePane.java | 29 ++- .../layout/FRFitLayoutDefinePane.java | 16 +- .../actions/report/ReportWatermarkAction.java | 48 +++++ .../fr/design/mainframe/ReportComponent.java | 2 + 13 files changed, 395 insertions(+), 10 deletions(-) create mode 100644 designer-base/src/com/fr/design/images/dialog/watermark/watermark_background.png create mode 100644 designer-base/src/com/fr/design/images/m_report/watermark.png create mode 100644 designer-base/src/com/fr/design/report/WatermarkPane.java create mode 100644 designer-base/src/com/fr/design/report/WatermarkPreviewPane.java create mode 100644 designer-form/src/com/fr/design/mainframe/widget/accessibles/AccessibleBodyWatermarkEditor.java create mode 100644 designer-form/src/com/fr/design/mainframe/widget/renderer/WatermarkRenderer.java create mode 100644 designer-form/src/com/fr/design/mainframe/widget/wrappers/WatermarkWrapper.java create mode 100644 designer-realize/src/com/fr/design/actions/report/ReportWatermarkAction.java diff --git a/designer-base/src/com/fr/design/constants/UIConstants.java b/designer-base/src/com/fr/design/constants/UIConstants.java index c1aacd7c9..1b8debbb5 100644 --- a/designer-base/src/com/fr/design/constants/UIConstants.java +++ b/designer-base/src/com/fr/design/constants/UIConstants.java @@ -164,6 +164,7 @@ public interface UIConstants { public static final BufferedImage POP_BUTTON_UP = BaseUtils.readImage("com/fr/design/images/buttonicon/popuparrow.png"); public static final BufferedImage DRAG_DOWN_SELECTED_SMALL = BaseUtils.readImage("com/fr/design/images/buttonicon/downSelected.png"); public static final BufferedImage DRAG_LEFT_NORMAL_SMALL = BaseUtils.readImage("com/fr/design/images/buttonicon/leftNormal.png"); + public static final BufferedImage WATERMARK_BACKGROUND = BaseUtils.readImage("/com/fr/design/images/dialog/watermark/watermark_background.png"); public static final int MODEL_NORMAL = 0; public static final int MODEL_PRESS = 1; public static final Icon ARROW_DOWN_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/arrowdown.png"); diff --git a/designer-base/src/com/fr/design/images/dialog/watermark/watermark_background.png b/designer-base/src/com/fr/design/images/dialog/watermark/watermark_background.png new file mode 100644 index 0000000000000000000000000000000000000000..3c1ae71e158483fdd94e8943ae611daf591f73bc GIT binary patch literal 100196 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 bof6i{kTZfy%aPIx2l#2I>Z(*IS%>`({|5Z@ literal 0 HcmV?d00001 diff --git a/designer-base/src/com/fr/design/images/m_report/watermark.png b/designer-base/src/com/fr/design/images/m_report/watermark.png new file mode 100644 index 0000000000000000000000000000000000000000..194ba1ecfce85fac8fa1a68428875347d37248ca GIT binary patch literal 558 zcmV+}0@3}6P)Px$=t)FDR5%f>QaeZ-Q53y*KEjG05EKiM#b2ZN!JRBCf`wKIh!M6;nL=zsx)kYx zMXCrXwz1ttgrtgvAZ#%Xm?ofTSVUroO$1rkyv$tB9rnp0lgd1pdH0@k?&sb2h#t8( zE52MVchu|kw@D%|ly@B7$>;NLs@3YBhkEBBpuPr+(6r~dPxMn;u`F#SHa}nZQ7jgR zEUC6))^Fc4JAk0a^Sm1?%;j>wnYqjQ?fbtHoHv`zF)M5|8lxgow|@JcnE=(kK{REB zaZHmf%tH6OcW=Q6f?x#$dxmNYM0{yE=41x`LZJ}6XQoeK7=E!_nxIrFjT!T|ieSRG zhl|^0mK7_)J}1H-z;?pkLL%~guUxCu&eC^)34g_1e?;bO4MHb_cmo$``xFVGk#X?D z;D5IGjU=I$Q54SF8B8l-mkPVPyZR8c?z;S3Z5wPgNQz_OVERJ`f@;TVgV+^u_kEu) zjp_fTi0@wy7$ZZ>@iIczQkBST6diFo0|cLdsNkHZ7}zRNvSkd75MA}E*cjF~@g15- z#CeVROkkLs%B2a=>S`P(6(quAkzFG9RaOT?@iGd$!!6yqu7g6YBd7t8gP^p8>QCV< w0vZH1pd1qGQ7}M0#0`B8!`cBb+}VFvcXCO*`T@Bjb+07*qoM6N<$g4lHXssI20 literal 0 HcmV?d00001 diff --git a/designer-base/src/com/fr/design/menu/KeySetUtils.java b/designer-base/src/com/fr/design/menu/KeySetUtils.java index 3f81acec8..1128c1278 100644 --- a/designer-base/src/com/fr/design/menu/KeySetUtils.java +++ b/designer-base/src/com/fr/design/menu/KeySetUtils.java @@ -601,6 +601,21 @@ public class KeySetUtils { } }; + public static final MenuKeySet REPORT_WATERMARK = new MenuKeySet() { + @Override + public char getMnemonic() { return 'M'; } + + @Override + public String getMenuName() { + return "水印"; + } + + @Override + public KeyStroke getKeyStroke() { + return null; + } + }; + public static final MenuKeySet REPORT_WRITE = new MenuKeySet() { @Override diff --git a/designer-base/src/com/fr/design/report/WatermarkPane.java b/designer-base/src/com/fr/design/report/WatermarkPane.java new file mode 100644 index 000000000..2774dd861 --- /dev/null +++ b/designer-base/src/com/fr/design/report/WatermarkPane.java @@ -0,0 +1,170 @@ +package com.fr.design.report; + +import com.fr.base.Watermark; +import com.fr.design.dialog.BasicPane; +import com.fr.design.formula.TinyFormulaPane; +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.gui.style.FRFontPane; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.style.color.NewColorSelectPane; +import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.Inter; + +import javax.swing.BorderFactory; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; + +/** + * Created by plough on 2018/5/15. + */ +public class WatermarkPane extends BasicPane { + + private static final int MAX_WIDTH = 160; + + // 水印预览面板 + private WatermarkPreviewPane watermarkPreviewPane; + // 文字 + private TinyFormulaPane formulaPane; + // 字号 + private UIComboBox fontSizeComboBox; + // 文字颜色 + private NewColorSelectPane colorPane; + + private UIScrollPane titlePane; + + public WatermarkPane() { + initComponents(); + } + + private void initComponents() { + this.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + + JPanel contentPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + this.add(contentPane, BorderLayout.CENTER); + + // 预览 + JPanel leftPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + contentPane.add(leftPane, BorderLayout.CENTER); + leftPane.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText("FR-Designer-Widget-Style_Preview"), null)); + JPanel previewPaneWrapper = FRGUIPaneFactory.createBorderLayout_S_Pane(); + leftPane.add(previewPaneWrapper, BorderLayout.CENTER); + previewPaneWrapper.setBorder(BorderFactory.createEmptyBorder(2, 8, 4, 8)); + watermarkPreviewPane = new WatermarkPreviewPane(); + previewPaneWrapper.add(watermarkPreviewPane, BorderLayout.CENTER); + + // 设置 + JPanel rightPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + contentPane.add(rightPane, BorderLayout.EAST); + rightPane.add(initRightPane(), BorderLayout.CENTER); + } + + public void populate(Watermark watermark) { + populateFourmula(watermark.getText()); + populateFontSize(watermark.getFontSize()); + populateColor(watermark.getColor()); + } + + public Watermark update() { + Watermark watermark = new Watermark(); + watermark.setText(formulaPane.getUITextField().getText()); + watermark.setFontSize((int)fontSizeComboBox.getSelectedItem()); + watermark.setColor(colorPane.getColor()); + return watermark; + } + + public TinyFormulaPane getFormulaPane() { + return formulaPane; + } + + public void setFormulaPane(TinyFormulaPane formulaPane) { + this.formulaPane = formulaPane; + } + + protected UIScrollPane initRightPane(){ + formulaPane = new TinyFormulaPane(); + fontSizeComboBox = new UIComboBox(FRFontPane.FONT_SIZES); + JPanel fontSizeTypePane = new JPanel(new BorderLayout(10,0)); + fontSizeTypePane.add(fontSizeComboBox, BorderLayout.CENTER); + + colorPane = new NewColorSelectPane(); + JPanel colorLabelPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + colorLabelPane.add(new UILabel("文字颜色"), BorderLayout.NORTH); + + double p = TableLayout.PREFERRED; + double[] rowSize = {p,p,p}; + double[] columnSize = { p, MAX_WIDTH}; + + JPanel rightContentPane = TableLayoutHelper.createCommonTableLayoutPane( new JComponent[][]{ + {new UILabel("文字"), formulaPane}, + {new UILabel("字号"), fontSizeTypePane}, + {colorLabelPane, colorPane}, + }, rowSize, columnSize, 10); + rightContentPane.setBorder(BorderFactory.createEmptyBorder(15, 12, 10, 12)); + titlePane =new UIScrollPane(rightContentPane); + titlePane.setBorder(GUICoreUtils.createTitledBorder("配置",null)); + return titlePane; + } + + protected void populateFontSize(int fontSize){ + this.fontSizeComboBox.setSelectedItem(fontSize); + this.fontSizeComboBox.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + paintPreviewPane(); + } + }); + } + + protected void paintPreviewPane(){ + watermarkPreviewPane.repaint(update()); + } + + private void populateFourmula(String formula) { + this.formulaPane.populateBean(formula); + this.formulaPane.getUITextField().getDocument() + .addDocumentListener(new DocumentListener() { + @Override + public void insertUpdate(DocumentEvent e) { + paintPreviewPane(); + } + + @Override + public void removeUpdate(DocumentEvent e) { + paintPreviewPane(); + } + + @Override + public void changedUpdate(DocumentEvent e) { + paintPreviewPane(); + } + }); + } + + private void populateColor(Color color) { + colorPane.setColor(color); + colorPane.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + paintPreviewPane(); + } + }); + } + + @Override + protected String title4PopupWindow() { + return "水印"; + } +} \ No newline at end of file diff --git a/designer-base/src/com/fr/design/report/WatermarkPreviewPane.java b/designer-base/src/com/fr/design/report/WatermarkPreviewPane.java new file mode 100644 index 000000000..c09911b0b --- /dev/null +++ b/designer-base/src/com/fr/design/report/WatermarkPreviewPane.java @@ -0,0 +1,37 @@ +package com.fr.design.report; + +import com.fr.base.Watermark; +import com.fr.design.constants.UIConstants; +import com.fr.general.FRFont; + +import javax.swing.JPanel; +import java.awt.Graphics; + +/** + * Created by plough on 2018/5/15. + */ +public class WatermarkPreviewPane extends JPanel { + Watermark watermark; + + public WatermarkPreviewPane() { + this.watermark = new Watermark(); + repaint(); + } + + /** + * 重新画 + */ + public void repaint(Watermark watermark){ + this.watermark = watermark; + super.repaint(); + } + + @Override + public void paint(Graphics g) { + super.paint(g); + g.drawImage(UIConstants.WATERMARK_BACKGROUND, 0, 0, this.getWidth(), this.getHeight(), null); + g.setColor(watermark.getColor()); + g.setFont(FRFont.getInstance().applySize(watermark.getFontSize())); + g.drawString(watermark.getText(), 20, 20); + } +} diff --git a/designer-form/src/com/fr/design/mainframe/widget/accessibles/AccessibleBodyWatermarkEditor.java b/designer-form/src/com/fr/design/mainframe/widget/accessibles/AccessibleBodyWatermarkEditor.java new file mode 100644 index 000000000..b7647a47c --- /dev/null +++ b/designer-form/src/com/fr/design/mainframe/widget/accessibles/AccessibleBodyWatermarkEditor.java @@ -0,0 +1,48 @@ +package com.fr.design.mainframe.widget.accessibles; + +import com.fr.base.Watermark; +import com.fr.design.dialog.BasicDialog; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.mainframe.widget.editors.ITextComponent; +import com.fr.design.mainframe.widget.renderer.WatermarkRenderer; +import com.fr.design.mainframe.widget.wrappers.WatermarkWrapper; +import com.fr.design.report.WatermarkPane; + +import javax.swing.SwingUtilities; +import java.awt.Dimension; + +/** + * Created by plough on 2018/5/15. + */ + +public class AccessibleBodyWatermarkEditor extends UneditableAccessibleEditor { + private WatermarkPane watermarkPane; + + public AccessibleBodyWatermarkEditor() { + super(new WatermarkWrapper()); + } + + @Override + protected ITextComponent createTextField() { + return new RendererField(new WatermarkRenderer()); + } + + @Override + protected void showEditorPane() { + if (watermarkPane == null) { + watermarkPane = new WatermarkPane(); + watermarkPane.setPreferredSize(new Dimension(600, 400)); + } + BasicDialog dlg = watermarkPane.showWindow(SwingUtilities.getWindowAncestor(this)); + dlg.addDialogActionListener(new DialogActionAdapter() { + + @Override + public void doOk() { + setValue(watermarkPane.update()); + fireStateChanged(); + } + }); + watermarkPane.populate((Watermark) getValue()); + dlg.setVisible(true); + } +} \ No newline at end of file diff --git a/designer-form/src/com/fr/design/mainframe/widget/renderer/WatermarkRenderer.java b/designer-form/src/com/fr/design/mainframe/widget/renderer/WatermarkRenderer.java new file mode 100644 index 000000000..54b7d8f50 --- /dev/null +++ b/designer-form/src/com/fr/design/mainframe/widget/renderer/WatermarkRenderer.java @@ -0,0 +1,14 @@ +package com.fr.design.mainframe.widget.renderer; + +import com.fr.design.mainframe.widget.wrappers.WatermarkWrapper; + +/** + * Created by plough on 2018/5/15. + */ +public class WatermarkRenderer extends EncoderCellRenderer { + + public WatermarkRenderer() { + super(new WatermarkWrapper()); + } + +} \ No newline at end of file diff --git a/designer-form/src/com/fr/design/mainframe/widget/wrappers/WatermarkWrapper.java b/designer-form/src/com/fr/design/mainframe/widget/wrappers/WatermarkWrapper.java new file mode 100644 index 000000000..24c899ffe --- /dev/null +++ b/designer-form/src/com/fr/design/mainframe/widget/wrappers/WatermarkWrapper.java @@ -0,0 +1,25 @@ +package com.fr.design.mainframe.widget.wrappers; + +import com.fr.design.Exception.ValidationException; +import com.fr.design.designer.properties.Decoder; +import com.fr.design.designer.properties.Encoder; + +/** + * Created by plough on 2018/5/15. + */ +public class WatermarkWrapper implements Encoder, Decoder { + @Override + public Object decode(String txt) { + return null; + } + + @Override + public void validate(String txt) throws ValidationException { + + } + + @Override + public String encode(Object v) { + return "watermark"; + } +} diff --git a/designer-form/src/com/fr/design/widget/ui/designer/layout/FRAbsoluteBodyLayoutDefinePane.java b/designer-form/src/com/fr/design/widget/ui/designer/layout/FRAbsoluteBodyLayoutDefinePane.java index 246bcb7f1..84023c0e7 100644 --- a/designer-form/src/com/fr/design/widget/ui/designer/layout/FRAbsoluteBodyLayoutDefinePane.java +++ b/designer-form/src/com/fr/design/widget/ui/designer/layout/FRAbsoluteBodyLayoutDefinePane.java @@ -1,8 +1,11 @@ package com.fr.design.widget.ui.designer.layout; +import com.fr.base.Watermark; import com.fr.design.data.DataCreatorUI; import com.fr.design.designer.IntervalConstants; -import com.fr.design.designer.creator.*; +import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XLayoutContainer; +import com.fr.design.designer.creator.XWFitLayout; import com.fr.design.designer.creator.cardlayout.XWCardMainBorderLayout; import com.fr.design.designer.properties.items.FRLayoutTypeItems; import com.fr.design.designer.properties.items.Item; @@ -10,12 +13,11 @@ import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.gui.icombobox.UIComboBox; 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.mainframe.FormDesigner; import com.fr.design.mainframe.WidgetPropertyPane; +import com.fr.design.mainframe.widget.accessibles.AccessibleBodyWatermarkEditor; import com.fr.design.mainframe.widget.accessibles.AccessibleWLayoutBorderStyleEditor; -import com.fr.design.widget.ui.designer.component.WidgetBoundPane; import com.fr.form.ui.LayoutBorderStyle; import com.fr.form.ui.container.WAbsoluteBodyLayout; import com.fr.form.ui.container.WAbsoluteLayout; @@ -23,8 +25,11 @@ import com.fr.form.ui.container.WBodyLayoutType; import com.fr.general.FRLogger; import com.fr.general.Inter; -import javax.swing.*; -import java.awt.*; +import javax.swing.BorderFactory; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Component; import java.util.Arrays; import java.util.Comparator; @@ -32,11 +37,13 @@ import java.util.Comparator; * Created by ibm on 2017/8/2. */ public class FRAbsoluteBodyLayoutDefinePane extends FRAbsoluteLayoutDefinePane { + private static final int EACH_ROW_COUNT = 4; + private AccessibleWLayoutBorderStyleEditor borderStyleEditor; + private AccessibleBodyWatermarkEditor watermarkEditor; private UIComboBox layoutCombox; private WBodyLayoutType layoutType = WBodyLayoutType.ABSOLUTE; - private static final int EACH_ROW_COUNT = 4; public FRAbsoluteBodyLayoutDefinePane(XCreator xCreator) { super(xCreator); @@ -46,8 +53,12 @@ public class FRAbsoluteBodyLayoutDefinePane extends FRAbsoluteLayoutDefinePane { public void initComponent() { super.initComponent(); borderStyleEditor = new AccessibleWLayoutBorderStyleEditor(); - JPanel jPanel = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("FR-Designer-Widget_Style")), borderStyleEditor}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_W3, IntervalConstants.INTERVAL_L1); + watermarkEditor = new AccessibleBodyWatermarkEditor(); + JPanel jPanel = TableLayoutHelper.createGapTableLayoutPane( + new Component[][]{ + new Component[]{new UILabel(Inter.getLocText("FR-Designer-Widget_Style")), borderStyleEditor}, + new Component[]{new UILabel("水印"), watermarkEditor} + }, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_W3, IntervalConstants.INTERVAL_L1); JPanel borderPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); jPanel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); borderPane.add(jPanel, BorderLayout.CENTER); @@ -88,6 +99,7 @@ public class FRAbsoluteBodyLayoutDefinePane extends FRAbsoluteLayoutDefinePane { public void populateSubPane(WAbsoluteLayout ob) { layoutCombox.setSelectedIndex(1); borderStyleEditor.setValue(ob.getBorderStyle()); + watermarkEditor.setValue(ob.getWatermark()); } public WAbsoluteBodyLayout updateSubPane() { @@ -105,6 +117,7 @@ public class FRAbsoluteBodyLayoutDefinePane extends FRAbsoluteLayoutDefinePane { } } layout.setBorderStyle((LayoutBorderStyle) borderStyleEditor.getValue()); + layout.setWatermark((Watermark) watermarkEditor.getValue()); return layout; } diff --git a/designer-form/src/com/fr/design/widget/ui/designer/layout/FRFitLayoutDefinePane.java b/designer-form/src/com/fr/design/widget/ui/designer/layout/FRFitLayoutDefinePane.java index b429ff84b..0905cdc2e 100644 --- a/designer-form/src/com/fr/design/widget/ui/designer/layout/FRFitLayoutDefinePane.java +++ b/designer-form/src/com/fr/design/widget/ui/designer/layout/FRFitLayoutDefinePane.java @@ -1,5 +1,6 @@ package com.fr.design.widget.ui.designer.layout; +import com.fr.base.Watermark; import com.fr.design.data.DataCreatorUI; import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.creator.XCreator; @@ -20,6 +21,7 @@ import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.FormSelectionUtils; import com.fr.design.mainframe.WidgetPropertyPane; +import com.fr.design.mainframe.widget.accessibles.AccessibleBodyWatermarkEditor; import com.fr.design.mainframe.widget.accessibles.AccessibleWLayoutBorderStyleEditor; import com.fr.design.widget.ui.designer.AbstractDataModify; import com.fr.design.widget.ui.designer.component.PaddingBoundPane; @@ -46,6 +48,7 @@ public class FRFitLayoutDefinePane extends AbstractDataModify { private UISpinner componentIntervel; private PaddingBoundPane paddingBound; private AccessibleWLayoutBorderStyleEditor stylePane; + private AccessibleBodyWatermarkEditor watermarkEditor; public FRFitLayoutDefinePane(XCreator xCreator) { super(xCreator); @@ -67,9 +70,13 @@ public class FRFitLayoutDefinePane extends AbstractDataModify { public JPanel createAdvancePane() { JPanel jPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); stylePane = new AccessibleWLayoutBorderStyleEditor(); + watermarkEditor = new AccessibleBodyWatermarkEditor(); paddingBound = new PaddingBoundPane(); - JPanel jp2 = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("FR-Designer-Widget_Style")), stylePane}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_W3, IntervalConstants.INTERVAL_L1); + JPanel jp2 = TableLayoutHelper.createGapTableLayoutPane( + new Component[][]{ + new Component[]{new UILabel(Inter.getLocText("FR-Designer-Widget_Style")), stylePane}, + new Component[]{new UILabel("水印"), watermarkEditor} + }, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_W3, IntervalConstants.INTERVAL_L1); jp2.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); jPanel.add(paddingBound, BorderLayout.CENTER); jPanel.add(jp2, BorderLayout.NORTH); @@ -130,6 +137,7 @@ public class FRFitLayoutDefinePane extends AbstractDataModify { adaptComboBox.setSelectedIndex(ob.getCompState()); componentIntervel.setValue(ob.getCompInterval()); stylePane.setValue(ob.getBorderStyle()); + watermarkEditor.setValue(ob.getWatermark()); } private XLayoutContainer selectedBodyLayout(FormDesigner formDesigner) { @@ -149,6 +157,10 @@ public class FRFitLayoutDefinePane extends AbstractDataModify { if(borderStyle != null){ layout.setBorderStyle(borderStyle); } + Watermark watermark = (Watermark) watermarkEditor.getValue(); + if (watermark != null) { + layout.setWatermark(watermark); + } Item item = (Item) layoutComboBox.getSelectedItem(); Object value = item.getValue(); int state = 0; diff --git a/designer-realize/src/com/fr/design/actions/report/ReportWatermarkAction.java b/designer-realize/src/com/fr/design/actions/report/ReportWatermarkAction.java new file mode 100644 index 000000000..38262aa60 --- /dev/null +++ b/designer-realize/src/com/fr/design/actions/report/ReportWatermarkAction.java @@ -0,0 +1,48 @@ +package com.fr.design.actions.report; + +import com.fr.base.BaseUtils; +import com.fr.design.actions.ReportComponentAction; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.ReportComponent; +import com.fr.design.menu.KeySetUtils; +import com.fr.design.report.WatermarkPane; +import com.fr.report.core.ReportUtils; +import com.fr.report.stable.ReportSettings; + +/** + * Created by plough on 2018/5/15. + */ +public class ReportWatermarkAction extends ReportComponentAction { + + public ReportWatermarkAction(ReportComponent rc) { + super(rc); + this.setMenuKeySet(KeySetUtils.REPORT_WATERMARK); + this.setName(getMenuKeySet().getMenuKeySetName() + "..."); + this.setMnemonic(getMenuKeySet().getMnemonic()); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_report/watermark.png")); + } + + /** + * 执行动作 + * @return 是否执行成功 + */ + public boolean executeActionReturnUndoRecordNeeded() { + final ReportComponent reportPane = this.getEditingComponent(); + if (reportPane == null) { + return false; + } + final WatermarkPane watermarkPane = new WatermarkPane(); + ReportSettings reportSettings = (ReportSettings) ReportUtils.getReportSettings(reportPane.getTemplateReport()); + watermarkPane.populate(reportSettings.getWatermark()); + watermarkPane.showWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { + @Override + public void doOk() { + reportSettings.setWatermark(watermarkPane.update()); + reportPane.fireTargetModified(); + } + }).setVisible(true); + + return false; + } +} diff --git a/designer-realize/src/com/fr/design/mainframe/ReportComponent.java b/designer-realize/src/com/fr/design/mainframe/ReportComponent.java index d2c309187..50fecba14 100644 --- a/designer-realize/src/com/fr/design/mainframe/ReportComponent.java +++ b/designer-realize/src/com/fr/design/mainframe/ReportComponent.java @@ -10,6 +10,7 @@ import com.fr.design.actions.report.ReportBackgroundAction; import com.fr.design.actions.report.ReportFooterAction; import com.fr.design.actions.report.ReportHeaderAction; import com.fr.design.actions.report.ReportPageSetupAction; +import com.fr.design.actions.report.ReportWatermarkAction; import com.fr.design.designer.TargetComponent; import com.fr.design.menu.NameSeparator; import com.fr.design.menu.ShortCut; @@ -56,6 +57,7 @@ public abstract class ReportComponent