diff --git a/designer-base/pom.xml b/designer-base/pom.xml index 8d6e8bffb..d97a42093 100644 --- a/designer-base/pom.xml +++ b/designer-base/pom.xml @@ -6,7 +6,7 @@ com.fr.report design - 10.0-FEATURE-SNAPSHOT + 10.0-RELEASE-SNAPSHOT @@ -17,5 +17,5 @@ com.fr.report designer-base - 10.0-FEATURE-SNAPSHOT + 10.0-RELEASE-SNAPSHOT \ No newline at end of file diff --git a/designer-base/src/com/fr/design/data/datapane/ChoosePane.java b/designer-base/src/com/fr/design/data/datapane/ChoosePane.java index 6fd557fa0..ecf63f335 100644 --- a/designer-base/src/com/fr/design/data/datapane/ChoosePane.java +++ b/designer-base/src/com/fr/design/data/datapane/ChoosePane.java @@ -489,9 +489,12 @@ public class ChoosePane extends BasicBeanPane implements Refresha protected String getTableName() { String tableName = ""; - Object obj = this.tableNameComboBox.getSelectedItem(); + Object obj = this.tableNameComboBox.getSelectedItemObject(); if (obj == null) { - obj = this.tableNameComboBox.getEditor().getItem(); + obj = this.tableNameComboBox.getSelectedItem(); + if (obj == null) { + obj = this.tableNameComboBox.getEditor().getItem(); + } } if (obj instanceof TreePath) { Object tp = ((ExpandMutableTreeNode) ((TreePath) obj).getLastPathComponent()).getUserObject(); 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 index 3c1ae71e1..5b407236d 100644 Binary files a/designer-base/src/com/fr/design/images/dialog/watermark/watermark_background.png and b/designer-base/src/com/fr/design/images/dialog/watermark/watermark_background.png differ diff --git a/designer-base/src/com/fr/design/mainframe/JTemplate.java b/designer-base/src/com/fr/design/mainframe/JTemplate.java index 33f73ccd9..575aea91b 100644 --- a/designer-base/src/com/fr/design/mainframe/JTemplate.java +++ b/designer-base/src/com/fr/design/mainframe/JTemplate.java @@ -5,7 +5,7 @@ import com.fr.base.FRContext; import com.fr.base.Parameter; import com.fr.base.ScreenResolution; import com.fr.base.io.BaseBook; -import com.fr.base.iofileattr.TemplateIdAttrMark; +import com.fr.base.iofile.attr.TemplateIdAttrMark; import com.fr.design.DesignModelAdapter; import com.fr.design.DesignState; import com.fr.design.DesignerEnvManager; diff --git a/designer-base/src/com/fr/design/report/WatermarkPane.java b/designer-base/src/com/fr/design/report/WatermarkPane.java index ab9bbf7ae..6d66e3d31 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.iofileattr.WatermarkAttr; +import com.fr.base.iofile.attr.WatermarkAttr; import com.fr.design.dialog.BasicPane; import com.fr.design.formula.TinyFormulaPane; import com.fr.design.gui.icombobox.UIComboBox; diff --git a/designer-base/src/com/fr/design/report/WatermarkPreviewPane.java b/designer-base/src/com/fr/design/report/WatermarkPreviewPane.java index 6517a9217..3c2d20704 100644 --- a/designer-base/src/com/fr/design/report/WatermarkPreviewPane.java +++ b/designer-base/src/com/fr/design/report/WatermarkPreviewPane.java @@ -1,6 +1,6 @@ package com.fr.design.report; -import com.fr.base.iofileattr.WatermarkAttr; +import com.fr.base.iofile.attr.WatermarkAttr; import com.fr.design.constants.UIConstants; import com.fr.page.WatermarkPainter; diff --git a/designer-base/src/com/fr/start/BaseDesigner.java b/designer-base/src/com/fr/start/BaseDesigner.java index 3c5ede5e3..e374f2599 100644 --- a/designer-base/src/com/fr/start/BaseDesigner.java +++ b/designer-base/src/com/fr/start/BaseDesigner.java @@ -25,8 +25,6 @@ import com.fr.module.ModuleEvent; import com.fr.stable.OperatingSystem; import java.awt.Window; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; import java.io.File; import java.lang.reflect.Method; import java.util.concurrent.ExecutorService; @@ -76,20 +74,12 @@ public abstract class BaseDesigner extends ToolBarMenuDock { } public void show(final String[] args) { - ExecutorService executorService = Executors.newSingleThreadExecutor(); - executorService.submit(new Runnable() { - @Override - public void run() { - collectUserInformation(); - showDesignerFrame(args, DesignerContext.getDesignerFrame(), false); - DesignerContext.getDesignerFrame().refreshEnv(); - for (int i = 0; !TemplateTreePane.getInstance().getTemplateFileTree().isTemplateShowing() && i < LOAD_TREE_MAXNUM; i++) { - TemplateTreePane.getInstance().getTemplateFileTree().refresh(); - } - } - }); - executorService.shutdown(); - DesignerContext.getDesignerFrame().setVisible(true); + collectUserInformation(); + showDesignerFrame(args, DesignerContext.getDesignerFrame(), false); + DesignerContext.getDesignerFrame().refreshEnv(); + for (int i = 0; !TemplateTreePane.getInstance().getTemplateFileTree().isTemplateShowing() && i < LOAD_TREE_MAXNUM; i++) { + TemplateTreePane.getInstance().getTemplateFileTree().refresh(); + } } @@ -160,11 +150,7 @@ public abstract class BaseDesigner extends ToolBarMenuDock { if (OperatingSystem.isMacOS()) { enableFullScreenMode(df); } - df.addWindowListener(new WindowAdapter() { - public void windowOpened(WindowEvent e) { - df.getSelectedJTemplate().requestGridFocus(); - } - }); + df.getSelectedJTemplate().requestGridFocus(); return isException; } diff --git a/designer-base/src/com/fr/start/SplashFxActionListener.java b/designer-base/src/com/fr/start/SplashFxActionListener.java new file mode 100644 index 000000000..35cd766e1 --- /dev/null +++ b/designer-base/src/com/fr/start/SplashFxActionListener.java @@ -0,0 +1,13 @@ +package com.fr.start; + +/** + * 启动动画监听 + * Created by zack on 2018/6/14. + */ +public interface SplashFxActionListener { + /** + * 启动动画关闭 + */ + void splashClose(); + +} diff --git a/designer-chart/pom.xml b/designer-chart/pom.xml index d09239bc8..472b1e62b 100644 --- a/designer-chart/pom.xml +++ b/designer-chart/pom.xml @@ -6,16 +6,16 @@ com.fr.report design - 10.0-FEATURE-SNAPSHOT + 10.0-RELEASE-SNAPSHOT com.fr.report designer-chart - 10.0-FEATURE-SNAPSHOT + 10.0-RELEASE-SNAPSHOT com.fr.report designer-base - 10.0-FEATURE-SNAPSHOT + 10.0-RELEASE-SNAPSHOT \ No newline at end of file diff --git a/designer-chart/src/com/fr/design/ChartTypeInterfaceManager.java b/designer-chart/src/com/fr/design/ChartTypeInterfaceManager.java index e28e2fcca..a2d06362a 100644 --- a/designer-chart/src/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer-chart/src/com/fr/design/ChartTypeInterfaceManager.java @@ -27,7 +27,6 @@ import com.fr.design.chartinterface.RangeIndependentChartInterface; import com.fr.design.chartinterface.StockIndependentChartInterface; import com.fr.design.chartinterface.XYScatterIndependentChartInterface; import com.fr.design.condition.ConditionAttributesPane; -import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.gui.core.WidgetOption; import com.fr.design.gui.frpane.AttributeChangeListener; import com.fr.design.mainframe.chart.AbstractChartAttrPane; @@ -60,7 +59,6 @@ import com.fr.plugin.chart.radar.VanChartRadarPlot; import com.fr.plugin.chart.scatter.VanChartScatterPlot; import com.fr.plugin.chart.structure.VanChartStructurePlot; import com.fr.plugin.chart.treemap.VanChartTreeMapPlot; -import com.fr.plugin.chart.vanchart.imgevent.design.DesignImageEvent; import com.fr.plugin.chart.wordcloud.VanChartWordCloudPlot; import com.fr.plugin.injectable.PluginModule; import com.fr.plugin.injectable.PluginSingleInjection; @@ -69,7 +67,6 @@ import com.fr.stable.ArrayUtils; import com.fr.stable.EnvChangedListener; import com.fr.stable.StringUtils; import com.fr.stable.plugin.ExtraChartDesignClassManagerProvider; -import com.fr.van.chart.DownloadOnlineSourcesHelper; import com.fr.van.chart.area.AreaIndependentVanChartInterface; import com.fr.van.chart.bar.BarIndependentVanChartInterface; import com.fr.van.chart.bubble.BubbleIndependentVanChartInterface; @@ -133,13 +130,11 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr public void envChanged() { //重新注册designModuleFactory DesignModuleFactory.registerExtraWidgetOptions(initWidgetOption()); - DesignImageEvent.registerDefaultCallbackEvent(HistoryTemplateListPane.getInstance()); - DesignImageEvent.registerDownloadSourcesEvent(new DownloadOnlineSourcesHelper()); } }); } - private static WidgetOption[] initWidgetOption() { + public static WidgetOption[] initWidgetOption() { ChartInternationalNameContentBean[] typeName = ChartTypeManager.getInstance().getAllChartBaseNames(); ChartWidgetOption[] child = new ChartWidgetOption[typeName.length]; diff --git a/designer-chart/src/com/fr/design/module/ChartDesignerModule.java b/designer-chart/src/com/fr/design/module/ChartDesignerModule.java index 52f5ae080..3b086e275 100644 --- a/designer-chart/src/com/fr/design/module/ChartDesignerModule.java +++ b/designer-chart/src/com/fr/design/module/ChartDesignerModule.java @@ -9,15 +9,18 @@ import com.fr.design.actions.core.ActionFactory; import com.fr.design.chart.ChartDialog; import com.fr.design.chart.gui.ChartComponent; import com.fr.design.chart.gui.ChartWidgetOption; +import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.gui.core.WidgetOption; import com.fr.design.mainframe.App; import com.fr.design.mainframe.ChartPropertyPane; import com.fr.form.ui.ChartEditor; import com.fr.general.IOUtils; import com.fr.general.Inter; +import com.fr.plugin.chart.vanchart.imgevent.design.DesignImageEvent; import com.fr.stable.ArrayUtils; import com.fr.stable.bridge.StableFactory; import com.fr.stable.plugin.ExtraChartDesignClassManagerProvider; +import com.fr.van.chart.DownloadOnlineSourcesHelper; import com.fr.van.chart.map.server.ChartMapEditorAction; import javax.swing.Icon; @@ -30,19 +33,11 @@ import javax.swing.Icon; * Time: 上午9:13 */ public class ChartDesignerModule extends DesignModule { - public void start() { - super.start(); - dealBeforeRegister(); - register(); - registerFloatEditor(); - } - protected void dealBeforeRegister(){ + public static void register(){ StableFactory.registerMarkedClass(ExtraChartDesignClassManagerProvider.XML_TAG, ChartTypeInterfaceManager.class); StableFactory.getStaticMarkedInstanceObjectFromClass(ExtraChartDesignClassManagerProvider.XML_TAG, ExtraChartDesignClassManagerProvider.class); - } - private void register(){ DesignModuleFactory.registerHyperlinkGroupType(new ChartHyperlinkGroup()); DesignModuleFactory.registerChartEditorClass(ChartEditor.class); @@ -54,10 +49,13 @@ public class ChartDesignerModule extends DesignModule { ActionFactory.registerChartPreStyleAction(new ChartPreStyleAction()); ActionFactory.registerChartMapEditorAction(new ChartMapEditorAction()); - } - protected void registerFloatEditor() { ActionFactory.registerChartCollection(ChartCollection.class); + + DesignModuleFactory.registerExtraWidgetOptions(ChartTypeInterfaceManager.initWidgetOption()); + + DesignImageEvent.registerDefaultCallbackEvent(HistoryTemplateListPane.getInstance()); + DesignImageEvent.registerDownloadSourcesEvent(new DownloadOnlineSourcesHelper()); } /** diff --git a/designer-form/pom.xml b/designer-form/pom.xml index 9c75fcebc..19df80505 100644 --- a/designer-form/pom.xml +++ b/designer-form/pom.xml @@ -6,16 +6,16 @@ com.fr.report design - 10.0-FEATURE-SNAPSHOT + 10.0-RELEASE-SNAPSHOT com.fr.report designer-form - 10.0-FEATURE-SNAPSHOT + 10.0-RELEASE-SNAPSHOT com.fr.report designer-base - 10.0-FEATURE-SNAPSHOT + 10.0-RELEASE-SNAPSHOT \ 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 5afe30d38..0122fc971 100644 --- a/designer-form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java +++ b/designer-form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java @@ -4,7 +4,7 @@ package com.fr.design.designer.creator; import com.fr.base.GraphHelper; -import com.fr.base.iofileattr.SharableAttrMark; +import com.fr.base.iofile.attr.SharableAttrMark; import com.fr.design.constants.UIConstants; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; 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 3cfc9a426..9a32c3987 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,7 +4,7 @@ package com.fr.design.designer.creator.cardlayout; import com.fr.base.GraphHelper; -import com.fr.base.iofileattr.SharableAttrMark; +import com.fr.base.iofile.attr.SharableAttrMark; import com.fr.design.constants.UIConstants; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; diff --git a/designer-form/src/com/fr/design/mainframe/FormDesignerUI.java b/designer-form/src/com/fr/design/mainframe/FormDesignerUI.java index 636152b69..959644ec8 100644 --- a/designer-form/src/com/fr/design/mainframe/FormDesignerUI.java +++ b/designer-form/src/com/fr/design/mainframe/FormDesignerUI.java @@ -1,14 +1,12 @@ package com.fr.design.mainframe; import java.awt.AlphaComposite; -import java.awt.Color; import java.awt.Component; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.geom.Area; import java.awt.geom.Rectangle2D; -import java.awt.image.BufferedImage; import java.util.ArrayList; import javax.swing.JComponent; @@ -19,6 +17,7 @@ import com.fr.base.BaseUtils; import com.fr.base.GraphHelper; import com.fr.base.ScreenResolution; import com.fr.base.Utils; +import com.fr.base.iofile.attr.WatermarkAttr; import com.fr.design.constants.UIConstants; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; @@ -31,10 +30,11 @@ import com.fr.design.designer.creator.XWFitLayout; import com.fr.design.form.util.XCreatorConstants; import com.fr.design.roleAuthority.ReportAndFSManagePane; import com.fr.design.utils.ComponentUtils; +import com.fr.general.ComparatorUtils; import com.fr.general.Inter; +import com.fr.page.WatermarkPainter; +import com.fr.report.core.ReportUtils; import com.fr.stable.ArrayUtils; -import com.fr.stable.Constants; -import com.fr.stable.CoreGraphHelper; /** * FormDesigner的UI类,是一个有状态的UI类,它根据FormDesigner的当前状态画出 @@ -46,6 +46,7 @@ public class FormDesignerUI extends ComponentUI { private FormDesigner designer; private SelectionModel selectionModel; private Rectangle2D.Double back_or_selection_rect = new Rectangle2D.Double(0, 0, 0, 0); + private WatermarkPainter watermarkPainter; private float time; public FormDesignerUI() { @@ -111,6 +112,18 @@ public class FormDesignerUI extends ComponentUI { // 当前正在添加的组件 paintAddingBean(g, addingModel); } + + paintWatermark((Graphics2D) g); + } + + // 绘制水印 + private void paintWatermark(Graphics2D g) { + WatermarkAttr watermark = ReportUtils.getWatermarkFromAttrMarkFile(designer.getTarget()); + // 不要每次都 new 一个 WatermarkPainter + if (watermarkPainter == null || !ComparatorUtils.equals(watermarkPainter.getWatermark(), watermark)) { + watermarkPainter = new WatermarkPainter(watermark); + } + watermarkPainter.paint(g, 0, designer.getParaHeight(), designer.getArea().getBounds()); } private int[] getActualLine(int i) { diff --git a/designer-form/src/com/fr/design/mainframe/ShareWidgetButton.java b/designer-form/src/com/fr/design/mainframe/ShareWidgetButton.java index d6d9f307a..cbca8c4f8 100644 --- a/designer-form/src/com/fr/design/mainframe/ShareWidgetButton.java +++ b/designer-form/src/com/fr/design/mainframe/ShareWidgetButton.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; -import com.fr.base.iofileattr.SharableAttrMark; +import com.fr.base.iofile.attr.SharableAttrMark; import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XCreatorUtils; import com.fr.design.gui.ilable.UILabel; diff --git a/designer-form/src/com/fr/design/mainframe/actions/FormMobileAttrAction.java b/designer-form/src/com/fr/design/mainframe/actions/FormMobileAttrAction.java index 0287438fc..4670d0e87 100644 --- a/designer-form/src/com/fr/design/mainframe/actions/FormMobileAttrAction.java +++ b/designer-form/src/com/fr/design/mainframe/actions/FormMobileAttrAction.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.actions; import com.fr.base.BaseUtils; -import com.fr.base.iofileattr.MobileOnlyTemplateAttrMark; +import com.fr.base.iofile.attr.MobileOnlyTemplateAttrMark; import com.fr.design.actions.JTemplateAction; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; 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 a3cd042fa..b6de59857 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.iofileattr.WatermarkAttr; +import com.fr.base.iofile.attr.WatermarkAttr; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.mainframe.widget.editors.ITextComponent; 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 a807f03bb..061be241d 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,6 +1,6 @@ package com.fr.design.mainframe.widget.wrappers; -import com.fr.base.iofileattr.WatermarkAttr; +import com.fr.base.iofile.attr.WatermarkAttr; import com.fr.design.Exception.ValidationException; import com.fr.design.designer.properties.Decoder; import com.fr.design.designer.properties.Encoder; 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 fdbe0b24f..f895118f1 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,7 +1,7 @@ package com.fr.design.widget.ui.designer.layout; import com.fr.base.io.IOFile; -import com.fr.base.iofileattr.WatermarkAttr; +import com.fr.base.iofile.attr.WatermarkAttr; import com.fr.design.data.DataCreatorUI; import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.creator.XCreator; 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 12b8ee3d5..a3cb01eb2 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,7 @@ package com.fr.design.widget.ui.designer.layout; +import com.fr.base.io.IOFile; +import com.fr.base.iofile.attr.WatermarkAttr; import com.fr.design.data.DataCreatorUI; import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.creator.XCreator; @@ -20,6 +22,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; @@ -30,8 +33,9 @@ import com.fr.form.ui.container.WAbsoluteLayout; import com.fr.form.ui.container.WBodyLayoutType; import com.fr.form.ui.container.WFitLayout; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; +import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; +import com.fr.report.core.ReportUtils; import javax.swing.BorderFactory; import javax.swing.DefaultComboBoxModel; @@ -51,6 +55,7 @@ public class FRFitLayoutDefinePane extends AbstractDataModify { private UISpinner componentIntervel; private PaddingBoundPane paddingBound; private AccessibleWLayoutBorderStyleEditor stylePane; + private AccessibleBodyWatermarkEditor watermarkEditor; public FRFitLayoutDefinePane(XCreator xCreator) { super(xCreator); @@ -72,9 +77,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(Inter.getLocText("FR-Designer_WaterMark")), 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); @@ -135,6 +144,7 @@ public class FRFitLayoutDefinePane extends AbstractDataModify { adaptComboBox.setSelectedIndex(ob.getCompState()); componentIntervel.setValue(ob.getCompInterval()); stylePane.setValue(ob.getBorderStyle()); + watermarkEditor.setValue(ReportUtils.getWatermarkFromAttrMarkFile(getCurrentIOFile())); } private XLayoutContainer selectedBodyLayout(FormDesigner formDesigner) { @@ -156,6 +166,7 @@ public class FRFitLayoutDefinePane extends AbstractDataModify { if(borderStyle != null){ layout.setBorderStyle(borderStyle); } + updateWatermark(); Item item = (Item) layoutComboBox.getSelectedItem(); Object value = item.getValue(); int state = 0; @@ -187,7 +198,7 @@ public class FRFitLayoutDefinePane extends AbstractDataModify { FormSelectionUtils.rebuildSelection(xWFitLayout, new Widget[]{wAbsoluteBodyLayout})); } } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } //todo 验证下 @@ -203,6 +214,18 @@ public class FRFitLayoutDefinePane extends AbstractDataModify { return layout; } + private void updateWatermark() { + WatermarkAttr watermark = (WatermarkAttr) 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/pom.xml b/designer-realize/pom.xml index 4ea9b4d2f..3731d163e 100644 --- a/designer-realize/pom.xml +++ b/designer-realize/pom.xml @@ -6,21 +6,21 @@ com.fr.report design - 10.0-FEATURE-SNAPSHOT + 10.0-RELEASE-SNAPSHOT com.fr.report designer-realize - 10.0-FEATURE-SNAPSHOT + 10.0-RELEASE-SNAPSHOT com.fr.report designer-form - 10.0-FEATURE-SNAPSHOT + 10.0-RELEASE-SNAPSHOT com.fr.report designer-chart - 10.0-FEATURE-SNAPSHOT + 10.0-RELEASE-SNAPSHOT \ No newline at end of file diff --git a/designer-realize/src/com/fr/design/actions/report/ReportMobileAttrAction.java b/designer-realize/src/com/fr/design/actions/report/ReportMobileAttrAction.java index f6acfb251..d718c92fe 100644 --- a/designer-realize/src/com/fr/design/actions/report/ReportMobileAttrAction.java +++ b/designer-realize/src/com/fr/design/actions/report/ReportMobileAttrAction.java @@ -1,6 +1,6 @@ package com.fr.design.actions.report; -import com.fr.base.iofileattr.MobileOnlyTemplateAttrMark; +import com.fr.base.iofile.attr.MobileOnlyTemplateAttrMark; import com.fr.design.actions.JWorkBookAction; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; 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 e16063c1b..bec8fb217 100644 --- a/designer-realize/src/com/fr/design/actions/report/ReportWatermarkAction.java +++ b/designer-realize/src/com/fr/design/actions/report/ReportWatermarkAction.java @@ -1,7 +1,7 @@ package com.fr.design.actions.report; import com.fr.base.BaseUtils; -import com.fr.base.iofileattr.WatermarkAttr; +import com.fr.base.iofile.attr.WatermarkAttr; import com.fr.design.actions.JWorkBookAction; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.mainframe.DesignerContext; diff --git a/designer-realize/src/com/fr/grid/GridUI.java b/designer-realize/src/com/fr/grid/GridUI.java index 7320b955c..8577212dc 100644 --- a/designer-realize/src/com/fr/grid/GridUI.java +++ b/designer-realize/src/com/fr/grid/GridUI.java @@ -10,6 +10,7 @@ import com.fr.base.PaperSize; import com.fr.base.Utils; import com.fr.base.background.ColorBackground; import com.fr.base.background.ImageFileBackground; +import com.fr.base.iofile.attr.WatermarkAttr; import com.fr.design.constants.UIConstants; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.mainframe.DesignerContext; @@ -21,8 +22,10 @@ import com.fr.general.ComparatorUtils; import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.FloatSelection; import com.fr.grid.selection.Selection; +import com.fr.main.FineBook; import com.fr.page.PaperSettingProvider; import com.fr.page.ReportSettingsProvider; +import com.fr.page.WatermarkPainter; import com.fr.report.ReportHelper; import com.fr.report.cell.CellElement; import com.fr.report.cell.FloatElement; @@ -95,6 +98,7 @@ public class GridUI extends ComponentUI { protected int resolution; private boolean isAuthority = false; + private WatermarkPainter watermarkPainter; public GridUI(int resolution) { super(); @@ -1089,9 +1093,25 @@ public class GridUI extends ComponentUI { // 画Drag格子的边框. this.paintDragCellBorder(g2d, grid); + // 画水印 + if (elementCase instanceof WorkSheet) { + paintWatermark(g2d, ((WorkSheet) elementCase).getBook()); + } + grid.ajustEditorComponentBounds(); // refresh size } + // 绘制水印 + private void paintWatermark(Graphics2D g2d, FineBook book) { + WatermarkAttr watermark = ReportUtils.getWatermarkFromAttrMarkFile(book); + + // 不要每次都 new 一个 WatermarkPainter + if (watermarkPainter == null || !ComparatorUtils.equals(watermarkPainter.getWatermark(), watermark)) { + watermarkPainter = new WatermarkPainter(watermark); + } + watermarkPainter.paint(g2d, gridSize.width, gridSize.height); + } + private void dealWithSizeBeforePaint(Grid grid, TemplateElementCase elementCase) { // 取出所有的行高和列宽的List diff --git a/designer-realize/src/com/fr/start/fx/SplashFx.java b/designer-realize/src/com/fr/start/fx/SplashFx.java index aef6d81b2..fc657f659 100644 --- a/designer-realize/src/com/fr/start/fx/SplashFx.java +++ b/designer-realize/src/com/fr/start/fx/SplashFx.java @@ -1,5 +1,7 @@ package com.fr.start.fx; +import com.fr.design.mainframe.DesignerContext; +import com.fr.start.SplashFxActionListener; import com.fr.start.SplashStrategy; import javafx.application.Application; import javafx.application.Platform; @@ -31,6 +33,12 @@ public class SplashFx implements SplashStrategy { } }); fxWindow = SplashFxWindow.waitForStartUpTest(); + fxWindow.addSplashActionListener(new SplashFxActionListener() { + @Override + public void splashClose() { + DesignerContext.getDesignerFrame().setVisible(true); + } + }); } @Override diff --git a/designer-realize/src/com/fr/start/fx/SplashFxWindow.java b/designer-realize/src/com/fr/start/fx/SplashFxWindow.java index be7c70937..5b65ac882 100644 --- a/designer-realize/src/com/fr/start/fx/SplashFxWindow.java +++ b/designer-realize/src/com/fr/start/fx/SplashFxWindow.java @@ -4,6 +4,7 @@ import com.bulenkov.iconloader.util.JBUI; import com.fr.base.FRContext; import com.fr.stable.OperatingSystem; import com.fr.start.SplashContext; +import com.fr.start.SplashFxActionListener; import javafx.application.Application; import javafx.application.Platform; import javafx.geometry.Rectangle2D; @@ -18,6 +19,8 @@ import javafx.stage.Screen; import javafx.stage.Stage; import javafx.stage.StageStyle; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.CountDownLatch; @@ -48,6 +51,7 @@ public class SplashFxWindow extends Application { private Text moduleInfo; private Text thanks; + private List listeners = new ArrayList(); private static int uiScale(int i) { return (int) (i * JBUI_INIT_SCALE); @@ -125,6 +129,7 @@ public class SplashFxWindow extends Application { public void run() { try { ((Stage) moduleInfo.getScene().getWindow()).close(); + fireSplashClose(); } catch (Exception e) { FRContext.getLogger().error(e.getMessage(), e); } @@ -176,4 +181,17 @@ public class SplashFxWindow extends Application { }); } + /** + * 添加一个动画状态监听 + * @param listener + */ + public void addSplashActionListener(SplashFxActionListener listener) { + listeners.add(listener); + } + + public void fireSplashClose() { + for (SplashFxActionListener listener : listeners) { + listener.splashClose(); + } + } } diff --git a/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java b/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java index 2855a45f4..fde57bb3a 100644 --- a/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java +++ b/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java @@ -1,6 +1,7 @@ package com.fr.start.module; import com.fr.design.mainframe.loghandler.socketio.DesignerSocketIO; +import com.fr.design.module.ChartDesignerModule; import com.fr.design.module.DesignerModule; import com.fr.general.ModuleContext; import com.fr.locale.InterMutableKey; @@ -19,6 +20,8 @@ public class DesignerModuleActivator extends Activator implements Prepare { ModuleContext.startModule(DesignerModule.class.getName()); DesignerSocketIO.init(); + + ChartDesignerModule.register(); } @Override diff --git a/designer-realize/src/com/fr/start/module/DesignerStartup.java b/designer-realize/src/com/fr/start/module/DesignerStartup.java index c5284b5e5..850416a52 100644 --- a/designer-realize/src/com/fr/start/module/DesignerStartup.java +++ b/designer-realize/src/com/fr/start/module/DesignerStartup.java @@ -1,5 +1,6 @@ package com.fr.start.module; +import com.fr.design.mainframe.DesignerContext; import com.fr.event.Event; import com.fr.event.Listener; import com.fr.module.Activator; @@ -27,10 +28,11 @@ public class DesignerStartup extends Activator { startSub(EnvBasedModule.class); getRoot().getSingleton(EnvSwitcher.class).switch2LastEnv(); registerEnvListener(); - //启动设计器界面 - designer.show(args); + DesignerContext.getDesignerFrame().setVisible(true); //启动画面结束 SplashContext.getInstance().hide(); + //启动设计器界面 + designer.show(args); startSub(StartFinishActivator.class); } diff --git a/pom.xml b/pom.xml index d1988142a..c3bed349c 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.fr.report fine-report-designer - 10.0-FEATURE-SNAPSHOT + 10.0-RELEASE-SNAPSHOT ../design-settings/fine-report-designer @@ -19,6 +19,6 @@ com.fr.report design - 10.0-FEATURE-SNAPSHOT + 10.0-RELEASE-SNAPSHOT pom \ No newline at end of file