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