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 000000000..3c1ae71e1 Binary files /dev/null and b/designer-base/src/com/fr/design/images/dialog/watermark/watermark_background.png differ 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 000000000..194ba1ecf Binary files /dev/null and b/designer-base/src/com/fr/design/images/m_report/watermark.png differ 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