From adf47eb70328176a6c1fab7d2efc73d7e7264847 Mon Sep 17 00:00:00 2001 From: richie Date: Thu, 29 Nov 2018 17:36:22 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=20=E6=95=B4?= =?UTF-8?q?=E7=90=86=E5=BC=80=E6=94=BE=E6=8E=A5=E5=8F=A3=E4=BB=A5=E5=8F=8A?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/fun/JavaScriptActionProvider.java | 16 ++++++++++++++-- .../impl/AbstractJavaScriptActionProvider.java | 16 ++++++++++++---- .../design/javascript/JavaScriptActionPane.java | 3 ++- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/fun/JavaScriptActionProvider.java b/designer-base/src/main/java/com/fr/design/fun/JavaScriptActionProvider.java index 754bdaeb4..5f1f1aa5a 100644 --- a/designer-base/src/main/java/com/fr/design/fun/JavaScriptActionProvider.java +++ b/designer-base/src/main/java/com/fr/design/fun/JavaScriptActionProvider.java @@ -2,11 +2,12 @@ package com.fr.design.fun; import com.fr.design.beans.FurtherBasicBeanPane; import com.fr.design.javascript.JavaScriptActionPane; +import com.fr.design.mainframe.JTemplate; import com.fr.js.JavaScript; import com.fr.stable.fun.mark.Mutable; /** - * Created by zack on 2015/8/14. + * 控件的事件扩展接口 */ public interface JavaScriptActionProvider extends Mutable{ @@ -14,10 +15,21 @@ public interface JavaScriptActionProvider extends Mutable{ int CURRENT_LEVEL = 1; + /** + * 事件的界面 + */ FurtherBasicBeanPane getJavaScriptActionPane(); + /** + * 这个界面在哪些类型模板设计的时候会出现 + * @see com.fr.design.mainframe.JWorkBook + * @see com.fr.design.mainframe.JForm + */ + boolean accept(JTemplate template); + + @Deprecated FurtherBasicBeanPane getJavaScriptActionPane(JavaScriptActionPane pane); + @Deprecated boolean isSupportType(); - } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/fun/impl/AbstractJavaScriptActionProvider.java b/designer-base/src/main/java/com/fr/design/fun/impl/AbstractJavaScriptActionProvider.java index 4640eaf4f..7f57f35a5 100644 --- a/designer-base/src/main/java/com/fr/design/fun/impl/AbstractJavaScriptActionProvider.java +++ b/designer-base/src/main/java/com/fr/design/fun/impl/AbstractJavaScriptActionProvider.java @@ -3,6 +3,8 @@ package com.fr.design.fun.impl; import com.fr.design.beans.FurtherBasicBeanPane; import com.fr.design.fun.JavaScriptActionProvider; import com.fr.design.javascript.JavaScriptActionPane; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.JTemplate; import com.fr.js.JavaScript; import com.fr.stable.fun.impl.AbstractProvider; import com.fr.stable.fun.mark.API; @@ -27,10 +29,16 @@ public abstract class AbstractJavaScriptActionProvider extends AbstractProvider return getJavaScriptActionPane(); } - /** - * 判断是否是支持的类型(cpt,frm),默认是 - * @return - */ + @Override + public boolean accept(JTemplate template) { + // 这里只是为了兼容原来的isSupportType方法 + boolean result = isSupportType(); + if (result) { + return true; + } + return true; + } + @Override public boolean isSupportType(){ return true; diff --git a/designer-base/src/main/java/com/fr/design/javascript/JavaScriptActionPane.java b/designer-base/src/main/java/com/fr/design/javascript/JavaScriptActionPane.java index 05208762e..3b025ae1f 100644 --- a/designer-base/src/main/java/com/fr/design/javascript/JavaScriptActionPane.java +++ b/designer-base/src/main/java/com/fr/design/javascript/JavaScriptActionPane.java @@ -7,6 +7,7 @@ import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.fun.JavaScriptActionProvider; import com.fr.design.gui.frpane.UIComboBoxPane; import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.mainframe.DesignerContext; import com.fr.design.write.submit.DBManipulationPane; import com.fr.form.ui.WebContentUtils; import com.fr.js.JavaScript; @@ -45,7 +46,7 @@ public abstract class JavaScriptActionPane extends UIComboBoxPane { Set javaScriptActionProviders = ExtraDesignClassManager.getInstance().getArray(JavaScriptActionProvider.XML_TAG); if (javaScriptActionProviders != null) { for (JavaScriptActionProvider jsp : javaScriptActionProviders) { - if(jsp.isSupportType()){ + if(jsp.accept(DesignerContext.getDesignerFrame().getSelectedJTemplate())){ paneList.add(jsp.getJavaScriptActionPane(this)); } } From 34d8785d70fb6beb930d9f5c552eaebc292bc5e9 Mon Sep 17 00:00:00 2001 From: richie Date: Thu, 29 Nov 2018 17:55:22 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=20=E6=95=B4?= =?UTF-8?q?=E7=90=86=E5=BC=80=E6=94=BE=E6=8E=A5=E5=8F=A3=E4=BB=A5=E5=8F=8A?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/fun/HyperlinkProvider.java | 31 ++++++++++++++++--- .../fun/impl/AbstractHyperlinkProvider.java | 24 ++++++++++++++ 2 files changed, 51 insertions(+), 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/fun/HyperlinkProvider.java b/designer-base/src/main/java/com/fr/design/fun/HyperlinkProvider.java index 448a120fe..9b58b9689 100644 --- a/designer-base/src/main/java/com/fr/design/fun/HyperlinkProvider.java +++ b/designer-base/src/main/java/com/fr/design/fun/HyperlinkProvider.java @@ -1,21 +1,44 @@ package com.fr.design.fun; +import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.controlpane.NameableCreator; -import com.fr.stable.fun.Level; +import com.fr.js.Hyperlink; import com.fr.stable.fun.mark.Mutable; /** * Created by zack on 2016/1/20. */ -public interface HyperlinkProvider extends Mutable { +public interface HyperlinkProvider extends Mutable { String XML_TAG = "HyperlinkProvider"; int CURRENT_LEVEL = 2; /** - * 创建一个超级连接类型 - * @return NameableCreator + * 超级链接的描述信息,如果是实现类中重载了这个方法,就不需要再实现下面的三个方法: + * @see HyperlinkProvider#text() + * @see HyperlinkProvider#target() + * @see HyperlinkProvider#appearance() + * 如果并不重载,就需要分别实现上面的三个方法,不推荐重载这个方法 + * @return 描述信息 */ NameableCreator createHyperlinkCreator(); + + /** + * 超级链接的名字 + * @return 名字 + */ + String text(); + + /** + * 超级链接的实现类 + * @return 实现类 + */ + Class target(); + + /** + * 超级链接的界面配置类 + * @return 配置类 + */ + Class> appearance(); } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/fun/impl/AbstractHyperlinkProvider.java b/designer-base/src/main/java/com/fr/design/fun/impl/AbstractHyperlinkProvider.java index bc5d5115a..9c74795d8 100644 --- a/designer-base/src/main/java/com/fr/design/fun/impl/AbstractHyperlinkProvider.java +++ b/designer-base/src/main/java/com/fr/design/fun/impl/AbstractHyperlinkProvider.java @@ -1,6 +1,10 @@ package com.fr.design.fun.impl; +import com.fr.design.beans.BasicBeanPane; import com.fr.design.fun.HyperlinkProvider; +import com.fr.design.gui.controlpane.NameObjectCreator; +import com.fr.design.gui.controlpane.NameableCreator; +import com.fr.stable.StringUtils; import com.fr.stable.fun.impl.AbstractProvider; import com.fr.stable.fun.mark.API; @@ -18,4 +22,24 @@ public abstract class AbstractHyperlinkProvider extends AbstractProvider impleme public String mark4Provider() { return getClass().getName(); } + + @Override + public NameableCreator createHyperlinkCreator() { + return new NameObjectCreator(text(), target(), appearance()); + } + + @Override + public String text() { + return StringUtils.EMPTY; + } + + @Override + public Class target() { + return null; + } + + @Override + public Class appearance() { + return null; + } } \ No newline at end of file From 20a39e41ed7d2fad167ce6a6e0d8993d42ea57fd Mon Sep 17 00:00:00 2001 From: zack Date: Mon, 3 Dec 2018 20:17:54 +0800 Subject: [PATCH 3/7] =?UTF-8?q?REPORT-13215=2010.0=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E5=90=AF=E5=8A=A8=E8=BF=87=E7=A8=8B=E4=B8=AD=E5=8F=AF?= =?UTF-8?q?=E8=83=BD=E7=94=B1=E4=BA=8E=E6=8A=A5=E9=94=99=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E7=99=BD=E8=89=B2=E8=92=99=E5=B1=82=E4=B8=8D=E6=B6=88=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/start/BaseDesigner.java | 2 ++ .../src/main/java/com/fr/start/ServerStarter.java | 13 +++++-------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/designer-base/src/main/java/com/fr/start/BaseDesigner.java b/designer-base/src/main/java/com/fr/start/BaseDesigner.java index 3e466ed1f..b1931f284 100644 --- a/designer-base/src/main/java/com/fr/start/BaseDesigner.java +++ b/designer-base/src/main/java/com/fr/start/BaseDesigner.java @@ -64,6 +64,8 @@ public abstract class BaseDesigner extends ToolBarMenuDock { TemplateTreePane.getInstance().getTemplateFileTree().refresh(); } DesignerContext.getDesignerFrame().updateProgress(PERCENT_COMPLETE); + throw new NullPointerException(); + } diff --git a/designer-base/src/main/java/com/fr/start/ServerStarter.java b/designer-base/src/main/java/com/fr/start/ServerStarter.java index 3115730d1..6d20cf12a 100644 --- a/designer-base/src/main/java/com/fr/start/ServerStarter.java +++ b/designer-base/src/main/java/com/fr/start/ServerStarter.java @@ -5,18 +5,11 @@ import com.fr.design.DesignerEnvManager; import com.fr.design.utils.BrowseUtils; import com.fr.general.ComparatorUtils; import com.fr.general.GeneralContext; -import com.fr.log.FineLoggerFactory; -import com.fr.stable.OperatingSystem; import com.fr.stable.StableUtils; import com.fr.start.server.FineEmbedServer; import com.fr.start.server.FineEmbedServerMonitor; import com.fr.workspace.WorkContext; -import javax.swing.JOptionPane; -import java.awt.Desktop; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -66,7 +59,11 @@ public class ServerStarter { @Override public void run() { - FineEmbedServer.start(); + try { + FineEmbedServer.start(); + } finally { + FineEmbedServerMonitor.getInstance().setComplete(); + } BrowseUtils.browser(url); } }); From 03806dcb611ba4776dd22076d5a52cd239368091 Mon Sep 17 00:00:00 2001 From: zack Date: Mon, 3 Dec 2018 20:19:23 +0800 Subject: [PATCH 4/7] rt --- designer-base/src/main/java/com/fr/start/BaseDesigner.java | 1 - 1 file changed, 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/start/BaseDesigner.java b/designer-base/src/main/java/com/fr/start/BaseDesigner.java index b1931f284..6b513657b 100644 --- a/designer-base/src/main/java/com/fr/start/BaseDesigner.java +++ b/designer-base/src/main/java/com/fr/start/BaseDesigner.java @@ -64,7 +64,6 @@ public abstract class BaseDesigner extends ToolBarMenuDock { TemplateTreePane.getInstance().getTemplateFileTree().refresh(); } DesignerContext.getDesignerFrame().updateProgress(PERCENT_COMPLETE); - throw new NullPointerException(); } From 819da17ad5d0d94e044f875a62483079ed95598e Mon Sep 17 00:00:00 2001 From: zack Date: Mon, 3 Dec 2018 20:19:44 +0800 Subject: [PATCH 5/7] rt --- designer-base/src/main/java/com/fr/start/BaseDesigner.java | 1 - 1 file changed, 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/start/BaseDesigner.java b/designer-base/src/main/java/com/fr/start/BaseDesigner.java index 6b513657b..3e466ed1f 100644 --- a/designer-base/src/main/java/com/fr/start/BaseDesigner.java +++ b/designer-base/src/main/java/com/fr/start/BaseDesigner.java @@ -64,7 +64,6 @@ public abstract class BaseDesigner extends ToolBarMenuDock { TemplateTreePane.getInstance().getTemplateFileTree().refresh(); } DesignerContext.getDesignerFrame().updateProgress(PERCENT_COMPLETE); - } From ef07745d35dede2b4b34111828f9abbe263e563a Mon Sep 17 00:00:00 2001 From: zack Date: Mon, 3 Dec 2018 20:20:11 +0800 Subject: [PATCH 6/7] =?UTF-8?q?REPORT-13215=2010.0=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E5=90=AF=E5=8A=A8=E8=BF=87=E7=A8=8B=E4=B8=AD=E5=8F=AF?= =?UTF-8?q?=E8=83=BD=E7=94=B1=E4=BA=8E=E6=8A=A5=E9=94=99=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E7=99=BD=E8=89=B2=E8=92=99=E5=B1=82=E4=B8=8D=E6=B6=88=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/start/module/DesignerStartup.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java b/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java index 71f197ea6..701a6936c 100644 --- a/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java +++ b/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java @@ -52,9 +52,11 @@ public class DesignerStartup extends Activator { @Override public void run() { - - designer.show(args); - DesignerContext.getDesignerFrame().getProgressDialog().dispose(); + try { + designer.show(args); + } finally { + DesignerContext.getDesignerFrame().getProgressDialog().dispose(); + } } }); service.shutdown(); From cb8ad88b188be54d989c63577f0f57d5cedd00ca Mon Sep 17 00:00:00 2001 From: vito Date: Tue, 4 Dec 2018 18:55:44 +0800 Subject: [PATCH 7/7] =?UTF-8?q?REPORT-13254=2010.0=E7=9A=84=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8mac=E4=B8=8D=E8=83=BD=E7=82=B9=E6=9C=80?= =?UTF-8?q?=E5=A4=A7=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/com/fr/start/jni/splash.dylib | Bin 57200 -> 57200 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/designer-realize/src/main/resources/com/fr/start/jni/splash.dylib b/designer-realize/src/main/resources/com/fr/start/jni/splash.dylib index 2b59ee3eb04f6377b0a8f06d9f60096a1216ee32..6ae677da37199ce7ebe825dbb5590452bdb081dd 100755 GIT binary patch delta 7366 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