From 2f81f19cbb738f32979499ee7c4f38f52da4e7c3 Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 17 May 2018 13:49:07 +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>=E6=94=B9=E4=B8=BAAttrM?= =?UTF-8?q?ark?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/report/WatermarkPane.java | 11 +++-- .../design/report/WatermarkPreviewPane.java | 11 ++--- .../AccessibleBodyWatermarkEditor.java | 4 +- .../widget/wrappers/WatermarkWrapper.java | 10 +++-- .../FRAbsoluteBodyLayoutDefinePane.java | 21 ++++++++-- .../layout/FRFitLayoutDefinePane.java | 35 ++++++++++++---- .../actions/report/ReportWatermarkAction.java | 42 +++++++++++-------- .../com/fr/design/mainframe/JWorkBook.java | 2 + .../fr/design/mainframe/ReportComponent.java | 1 - 9 files changed, 91 insertions(+), 46 deletions(-) diff --git a/designer-base/src/com/fr/design/report/WatermarkPane.java b/designer-base/src/com/fr/design/report/WatermarkPane.java index b88b5040b..6e99e7ab0 100644 --- a/designer-base/src/com/fr/design/report/WatermarkPane.java +++ b/designer-base/src/com/fr/design/report/WatermarkPane.java @@ -1,6 +1,6 @@ package com.fr.design.report; -import com.fr.base.Watermark; +import com.fr.base.iofileattr.WatermarkAttrMark; import com.fr.design.dialog.BasicPane; import com.fr.design.formula.TinyFormulaPane; import com.fr.design.gui.icombobox.UIComboBox; @@ -69,15 +69,18 @@ public class WatermarkPane extends BasicPane { rightPane.add(initRightPane(), BorderLayout.CENTER); } - public void populate(Watermark watermark) { + public void populate(WatermarkAttrMark watermark) { + if (watermark == null) { + watermark = new WatermarkAttrMark(); + } populateFourmula(watermark.getText()); populateFontSize(watermark.getFontSize()); populateColor(watermark.getColor()); paintPreviewPane(); } - public Watermark update() { - Watermark watermark = new Watermark(); + public WatermarkAttrMark update() { + WatermarkAttrMark watermark = new WatermarkAttrMark(); watermark.setText(formulaPane.getUITextField().getText()); watermark.setFontSize((int)fontSizeComboBox.getSelectedItem()); watermark.setColor(colorPane.getColor()); diff --git a/designer-base/src/com/fr/design/report/WatermarkPreviewPane.java b/designer-base/src/com/fr/design/report/WatermarkPreviewPane.java index 48b8f0168..9162a87e5 100644 --- a/designer-base/src/com/fr/design/report/WatermarkPreviewPane.java +++ b/designer-base/src/com/fr/design/report/WatermarkPreviewPane.java @@ -1,16 +1,13 @@ package com.fr.design.report; -import com.fr.base.Watermark; +import com.fr.base.iofileattr.WatermarkAttrMark; import com.fr.design.constants.UIConstants; import com.fr.general.FRFont; -import com.fr.stable.StringUtils; import javax.swing.JPanel; -import java.awt.Color; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Graphics2D; -import java.awt.Image; import java.awt.image.BufferedImage; /** @@ -25,18 +22,18 @@ public class WatermarkPreviewPane extends JPanel { private int horizontalGap = 20; // 水平间隔(一个中文字符宽度) private int verticalGap = 40; // 垂直间隔(两个中文字符宽度) - private Watermark watermark; + private WatermarkAttrMark watermark; public WatermarkPreviewPane() { - this.watermark = new Watermark(); + this.watermark = new WatermarkAttrMark(); repaint(); } /** * 重新画 */ - public void repaint(Watermark watermark){ + public void repaint(WatermarkAttrMark watermark){ this.watermark = watermark; super.repaint(); } 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 index b7647a47c..895aa8dbc 100644 --- a/designer-form/src/com/fr/design/mainframe/widget/accessibles/AccessibleBodyWatermarkEditor.java +++ b/designer-form/src/com/fr/design/mainframe/widget/accessibles/AccessibleBodyWatermarkEditor.java @@ -1,6 +1,6 @@ package com.fr.design.mainframe.widget.accessibles; -import com.fr.base.Watermark; +import com.fr.base.iofileattr.WatermarkAttrMark; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.mainframe.widget.editors.ITextComponent; @@ -42,7 +42,7 @@ public class AccessibleBodyWatermarkEditor extends UneditableAccessibleEditor { fireStateChanged(); } }); - watermarkPane.populate((Watermark) getValue()); + watermarkPane.populate((WatermarkAttrMark) getValue()); dlg.setVisible(true); } } \ 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 index 1ad370c9b..914c94028 100644 --- a/designer-form/src/com/fr/design/mainframe/widget/wrappers/WatermarkWrapper.java +++ b/designer-form/src/com/fr/design/mainframe/widget/wrappers/WatermarkWrapper.java @@ -1,9 +1,10 @@ package com.fr.design.mainframe.widget.wrappers; -import com.fr.base.Watermark; +import com.fr.base.iofileattr.WatermarkAttrMark; import com.fr.design.Exception.ValidationException; import com.fr.design.designer.properties.Decoder; import com.fr.design.designer.properties.Encoder; +import com.fr.stable.StringUtils; /** * Created by plough on 2018/5/15. @@ -11,7 +12,7 @@ import com.fr.design.designer.properties.Encoder; public class WatermarkWrapper implements Encoder, Decoder { @Override public Object decode(String txt) { - return new Watermark(); + return new WatermarkAttrMark(); } @Override @@ -21,6 +22,9 @@ public class WatermarkWrapper implements Encoder, Decoder { @Override public String encode(Object v) { - return ((Watermark)v).getText(); + if (v == null) { + return StringUtils.EMPTY; + } + return ((WatermarkAttrMark)v).getText(); } } 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 29159f27f..770717167 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,6 +1,7 @@ package com.fr.design.widget.ui.designer.layout; -import com.fr.base.Watermark; +import com.fr.base.io.IOFile; +import com.fr.base.iofileattr.WatermarkAttrMark; import com.fr.design.data.DataCreatorUI; import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.creator.XCreator; @@ -24,6 +25,7 @@ import com.fr.form.ui.container.WAbsoluteLayout; import com.fr.form.ui.container.WBodyLayoutType; import com.fr.general.FRLogger; import com.fr.general.Inter; +import com.fr.report.core.ReportUtils; import javax.swing.BorderFactory; import javax.swing.DefaultComboBoxModel; @@ -99,7 +101,8 @@ public class FRAbsoluteBodyLayoutDefinePane extends FRAbsoluteLayoutDefinePane { public void populateSubPane(WAbsoluteLayout ob) { layoutCombox.setSelectedIndex(1); borderStyleEditor.setValue(ob.getBorderStyle()); - watermarkEditor.setValue(ob.getWatermark()); + watermarkEditor.setValue(ReportUtils.getWatermarkFromIOFile(getCurrentIOFile())); + } public WAbsoluteBodyLayout updateSubPane() { @@ -117,10 +120,22 @@ public class FRAbsoluteBodyLayoutDefinePane extends FRAbsoluteLayoutDefinePane { } } layout.setBorderStyle((LayoutBorderStyle) borderStyleEditor.getValue()); - layout.setWatermark((Watermark) watermarkEditor.getValue()); + updateWatermark(); return layout; } + private void updateWatermark() { + WatermarkAttrMark watermark = (WatermarkAttrMark) watermarkEditor.getValue(); + if (watermark != null) { + IOFile ioFile = getCurrentIOFile(); + ioFile.addAttrMark(watermark); + } + } + + private IOFile getCurrentIOFile() { + return WidgetPropertyPane.getInstance().getEditingFormDesigner().getTarget(); + } + @Override public DataCreatorUI dataUI() { return null; 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 717a4103d..4f6b9fb3e 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,6 +1,7 @@ package com.fr.design.widget.ui.designer.layout; -import com.fr.base.Watermark; +import com.fr.base.io.IOFile; +import com.fr.base.iofileattr.WatermarkAttrMark; import com.fr.design.data.DataCreatorUI; import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.creator.XCreator; @@ -18,8 +19,11 @@ 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.design.mainframe.DesignerContext; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.FormSelectionUtils; +import com.fr.design.mainframe.JForm; +import com.fr.design.mainframe.JTemplate; import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.design.mainframe.widget.accessibles.AccessibleBodyWatermarkEditor; import com.fr.design.mainframe.widget.accessibles.AccessibleWLayoutBorderStyleEditor; @@ -33,9 +37,15 @@ import com.fr.form.ui.container.WBodyLayoutType; import com.fr.form.ui.container.WFitLayout; import com.fr.general.FRLogger; import com.fr.general.Inter; +import com.fr.main.FineBook; +import com.fr.report.core.ReportUtils; -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.awt.Dimension; /** * Created by ibm on 2017/8/2. @@ -137,7 +147,7 @@ public class FRFitLayoutDefinePane extends AbstractDataModify { adaptComboBox.setSelectedIndex(ob.getCompState()); componentIntervel.setValue(ob.getCompInterval()); stylePane.setValue(ob.getBorderStyle()); - watermarkEditor.setValue(ob.getWatermark()); + watermarkEditor.setValue(ReportUtils.getWatermarkFromIOFile(getCurrentIOFile())); } private XLayoutContainer selectedBodyLayout(FormDesigner formDesigner) { @@ -157,10 +167,7 @@ public class FRFitLayoutDefinePane extends AbstractDataModify { if(borderStyle != null){ layout.setBorderStyle(borderStyle); } - Watermark watermark = (Watermark) watermarkEditor.getValue(); - if (watermark != null) { - layout.setWatermark(watermark); - } + updateWatermark(); Item item = (Item) layoutComboBox.getSelectedItem(); Object value = item.getValue(); int state = 0; @@ -207,6 +214,18 @@ public class FRFitLayoutDefinePane extends AbstractDataModify { return layout; } + private void updateWatermark() { + WatermarkAttrMark watermark = (WatermarkAttrMark) watermarkEditor.getValue(); + if (watermark != null) { + IOFile ioFile = getCurrentIOFile(); + ioFile.addAttrMark(watermark); + } + } + + private IOFile getCurrentIOFile() { + return WidgetPropertyPane.getInstance().getEditingFormDesigner().getTarget(); + } + private void setLayoutGap(int value) { int interval = wFitLayout.getCompInterval(); if (value != interval) { diff --git a/designer-realize/src/com/fr/design/actions/report/ReportWatermarkAction.java b/designer-realize/src/com/fr/design/actions/report/ReportWatermarkAction.java index 38262aa60..76494b3da 100644 --- a/designer-realize/src/com/fr/design/actions/report/ReportWatermarkAction.java +++ b/designer-realize/src/com/fr/design/actions/report/ReportWatermarkAction.java @@ -1,48 +1,54 @@ package com.fr.design.actions.report; import com.fr.base.BaseUtils; +import com.fr.base.IconManager; +import com.fr.base.iofileattr.WatermarkAttrMark; +import com.fr.design.actions.JWorkBookAction; import com.fr.design.actions.ReportComponentAction; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.JWorkBook; import com.fr.design.mainframe.ReportComponent; import com.fr.design.menu.KeySetUtils; import com.fr.design.report.WatermarkPane; +import com.fr.general.IOUtils; +import com.fr.main.TemplateWorkBook; +import com.fr.main.impl.WorkBook; import com.fr.report.core.ReportUtils; import com.fr.report.stable.ReportSettings; +import java.awt.event.ActionEvent; + /** * Created by plough on 2018/5/15. */ -public class ReportWatermarkAction extends ReportComponentAction { - - public ReportWatermarkAction(ReportComponent rc) { - super(rc); +public class ReportWatermarkAction extends JWorkBookAction { + public ReportWatermarkAction(JWorkBook jwb) { + super(jwb); 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")); + this.setSearchText(new WatermarkPane()); } - /** - * 执行动作 - * @return 是否执行成功 - */ - public boolean executeActionReturnUndoRecordNeeded() { - final ReportComponent reportPane = this.getEditingComponent(); - if (reportPane == null) { - return false; + @Override + public void actionPerformed(ActionEvent e) { + final JWorkBook jwb = getEditingComponent(); + if (jwb == null) { + return; } + final WorkBook wbTpl = jwb.getTarget(); + WatermarkAttrMark watermark = ReportUtils.getWatermarkFromIOFile(wbTpl); + final WatermarkPane watermarkPane = new WatermarkPane(); - ReportSettings reportSettings = (ReportSettings) ReportUtils.getReportSettings(reportPane.getTemplateReport()); - watermarkPane.populate(reportSettings.getWatermark()); + watermarkPane.populate(watermark); watermarkPane.showWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { @Override public void doOk() { - reportSettings.setWatermark(watermarkPane.update()); - reportPane.fireTargetModified(); + wbTpl.addAttrMark(watermarkPane.update()); + jwb.fireTargetModified(); } }).setVisible(true); - - return false; } } diff --git a/designer-realize/src/com/fr/design/mainframe/JWorkBook.java b/designer-realize/src/com/fr/design/mainframe/JWorkBook.java index b151feb45..472231b7e 100644 --- a/designer-realize/src/com/fr/design/mainframe/JWorkBook.java +++ b/designer-realize/src/com/fr/design/mainframe/JWorkBook.java @@ -22,6 +22,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.ReportWatermarkAction; import com.fr.design.actions.report.ReportWebAttrAction; import com.fr.design.cell.bar.DynamicScrollBar; import com.fr.design.constants.UIConstants; @@ -694,6 +695,7 @@ public class JWorkBook extends JTemplate { new ReportExportAttrAction(this), new ReportParameterAction(this), new ReportMobileAttrAction(this), + new ReportWatermarkAction(this), new NameSeparator(Inter.getLocText("Utils-Current_Sheet")), }, this.reportComposite.getEditingReportComponent().shortcut4TemplateMenu()); } diff --git a/designer-realize/src/com/fr/design/mainframe/ReportComponent.java b/designer-realize/src/com/fr/design/mainframe/ReportComponent.java index 50fecba14..677ef2020 100644 --- a/designer-realize/src/com/fr/design/mainframe/ReportComponent.java +++ b/designer-realize/src/com/fr/design/mainframe/ReportComponent.java @@ -57,7 +57,6 @@ public abstract class ReportComponent