Browse Source

Merge branch 'release/10.0' of http://cloud.finedevelop.com:2015/scm/~zheng/C-design into release/10.0

master
zheng 7 years ago
parent
commit
56bd32b5ed
  1. 4
      designer-base/src/com/fr/design/ExtraDesignClassManager.java
  2. 1
      designer-base/src/com/fr/design/actions/file/SwitchExistEnv.java
  3. 10
      designer-base/src/com/fr/design/env/DesignerWorkspaceGenerator.java
  4. 6
      designer-base/src/com/fr/design/env/LocalDesignerWorkspaceInfo.java
  5. 8
      designer-base/src/com/fr/design/env/RemoteDesignerWorkspaceInfo.java
  6. 2
      designer-base/src/com/fr/design/javascript/beautify/JavaScriptFormatHelper.java
  7. 3537
      designer-base/src/com/fr/design/javascript/beautify/beautify.js
  8. 2
      designer-base/src/com/fr/design/mainframe/loghandler/DesignerLogAppender.java
  9. 31
      designer-base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java
  10. 2
      designer-base/src/com/fr/design/menu/KeySetUtils.java
  11. 3
      designer-base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java
  12. 3
      designer-base/src/com/fr/design/style/background/impl/ImageButtonBackgroundPane.java
  13. 759
      designer-base/src/com/fr/env/RemoteEnv.java
  14. 6
      designer-base/src/com/fr/start/server/FineEmbedServerActivator.java
  15. 8
      designer-form/src/com/fr/design/mainframe/JForm.java
  16. 2
      designer-realize/pom.xml
  17. 1
      designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoLogAppender.java
  18. 4
      designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoUploader.java
  19. 25
      designer-realize/src/com/fr/design/report/ReportBackgroundPane.java
  20. 22
      designer-realize/src/com/fr/design/webattr/EditReportServerParameterPane.java
  21. 13
      designer-realize/src/com/fr/start/Designer.java
  22. 47
      designer-realize/src/com/fr/start/module/DesignerActivator.java
  23. 4
      designer-realize/src/com/fr/start/module/DesignerStartup.java
  24. 2
      designer-realize/src/com/fr/start/module/DesignerWorkspaceProvider.java

4
designer-base/src/com/fr/design/ExtraDesignClassManager.java

@ -46,8 +46,8 @@ public class ExtraDesignClassManager extends AbstractExtraClassManager implement
private static ExtraDesignClassManager classManager = new ExtraDesignClassManager();
private Set<ShortCut> shortCuts = new CloseableContainedSet<>(HashSet.class);
public synchronized static ExtraDesignClassManager getInstance() {
public static ExtraDesignClassManager getInstance() {
return classManager;
}

1
designer-base/src/com/fr/design/actions/file/SwitchExistEnv.java

@ -114,7 +114,6 @@ public class SwitchExistEnv extends MenuDef {
@Override
public void fail() {
TemplatePane.getInstance().editItems();
JOptionPane.showMessageDialog(
DesignerContext.getDesignerFrame(),
Inter.getLocText(new String[]{"M-SwitchWorkspace", "Failed"}));

10
designer-base/src/com/fr/design/env/DesignerWorkspaceGenerator.java vendored

@ -8,13 +8,13 @@ import com.fr.workspace.connect.WorkspaceClient;
* 根据配置生成运行环境
*/
public class DesignerWorkspaceGenerator {
public static Workspace generate(DesignerWorkspaceInfo config) {
if (config == null || config.getType() == null) {
return null;
}
Workspace workspace = null;
switch (config.getType()) {
case Local: {
@ -23,7 +23,9 @@ public class DesignerWorkspaceGenerator {
}
case Remote: {
WorkspaceClient client = WorkContext.getConnector().connect(config.getConnection());
workspace = new RemoteWorkspace(client, config.getConnection());
if (client != null) {
workspace = new RemoteWorkspace(client, config.getConnection());
}
break;
}
}

6
designer-base/src/com/fr/design/env/LocalDesignerWorkspaceInfo.java vendored

@ -1,5 +1,7 @@
package com.fr.design.env;
import com.fr.general.NameObject;
import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils;
import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLableReader;
@ -63,6 +65,8 @@ public class LocalDesignerWorkspaceInfo implements DesignerWorkspaceInfo {
@Override
public Object clone() throws CloneNotSupportedException {
return null;
LocalDesignerWorkspaceInfo object = (LocalDesignerWorkspaceInfo)super.clone();
return object;
}
}

8
designer-base/src/com/fr/design/env/RemoteDesignerWorkspaceInfo.java vendored

@ -1,6 +1,7 @@
package com.fr.design.env;
import com.fr.security.SecurityToolbox;
import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils;
import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLableReader;
@ -75,7 +76,10 @@ public class RemoteDesignerWorkspaceInfo implements DesignerWorkspaceInfo {
@Override
public Object clone() throws CloneNotSupportedException {
return null;
RemoteDesignerWorkspaceInfo object = (RemoteDesignerWorkspaceInfo)super.clone();
object.connection = (WorkspaceConnection)StableUtils.cloneObject(this.connection);
return object;
}
}

2
designer-base/src/com/fr/design/javascript/beautify/JavaScriptFormatHelper.java

@ -40,7 +40,7 @@ public class JavaScriptFormatHelper {
Reader reader = new InputStreamReader(resourceAsStream);
scriptEngine.eval(reader);
Invocable invocable = (Invocable) scriptEngine;
result = (String) invocable.invokeFunction("js_beautify", jsCode, option.toFormatArgument());
result = (String) invocable.invokeFunction("js_beautify_global", jsCode, option.toFormatArgument());
} catch (ScriptException | NoSuchMethodException e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}

3537
designer-base/src/com/fr/design/javascript/beautify/beautify.js

File diff suppressed because it is too large Load Diff

2
designer-base/src/com/fr/design/mainframe/loghandler/DesignerLogAppender.java

@ -37,7 +37,7 @@ public class DesignerLogAppender extends AppenderSkeleton {
synchronized (DesignerLogHandler.getInstance()) {
Level level = event.getLevel();
String msg = this.layout.format(event);
DesignerLogHandler.getInstance().printRemoteLog(msg, FRLogLevel.convertLog4jToJava(level), new Date());
DesignerLogHandler.getInstance().printRemoteLog(msg, level, new Date());
}
}
}

31
designer-base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java

@ -6,14 +6,12 @@ import com.fr.design.gui.icontainer.UIScrollPane;
import com.fr.design.gui.imenu.UIMenuItem;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.general.ComparatorUtils;
import com.fr.general.GeneralContext;
import com.fr.general.FRLogLevel;
import com.fr.general.Inter;
import com.fr.general.LogRecordTime;
import com.fr.general.log.Log4jConfig;
import com.fr.log.FineLoggerFactory;
import com.fr.log.LogHandler;
import com.fr.stable.EnvChangedListener;
import com.fr.stable.xml.LogRecordTimeProvider;
import com.fr.third.apache.log4j.Level;
import javax.swing.*;
import javax.swing.text.BadLocationException;
@ -31,35 +29,19 @@ import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_MODIFIER;
public class DesignerLogHandler {
protected static final int INFO_INT = Level.INFO.intValue();
protected static final int ERROR_INT = Level.SEVERE.intValue();
protected static final int WARN_INT = Level.WARNING.intValue();
protected static final int INFO_INT = Level.INFO.toInt();
protected static final int ERROR_INT = Level.ERROR.toInt();
protected static final int WARN_INT = Level.WARN.toInt();
private static final int GAP_X = -150;
private static final int INFO_GAP_Y = -60;
private static final int ERRO_GAP_Y = -40;
private static final int SERVER_GAP_Y = -20;
static {
GeneralContext.addEnvChangedListener(new EnvChangedListener() {
@Override
public void envChanged() {
// envchange后需要重新读取webinf里的log4j配置, 重新添加appender
FineLoggerFactory.getLogger().addLogAppender(new LogHandler<DesignerLogAppender>() {
@Override
public DesignerLogAppender getHandler() {
return new DesignerLogAppender();
}
});
}
});
}
public static DesignerLogHandler getInstance() {
return HOLDER.singleton;
}
@ -119,6 +101,7 @@ public class DesignerLogHandler {
@Override
public void actionPerformed(ActionEvent e) {
JPopupMenu jPopupMenu = new JPopupMenu();
int logLevelInt = Log4jConfig.getInstance().getRootLevel().toInt();
if (logLevelInt <= INFO_INT) {
jPopupMenu.add(showInfo);
@ -231,7 +214,7 @@ public class DesignerLogHandler {
}
public void printStackTrace(String message, Level level, Date date) {
int logLevelvalue = level.intValue();
int logLevelvalue = level.toInt();
if (logLevelvalue == INFO_INT && showInfo.isSelected()) {
printMessage(message, logLevelvalue, date);
} else if (logLevelvalue == ERROR_INT && showError.isSelected()) {

2
designer-base/src/com/fr/design/menu/KeySetUtils.java

@ -592,7 +592,7 @@ public class KeySetUtils {
@Override
public String getMenuName() {
return Inter.getLocText("M_Report-Report_Background");
return Inter.getLocText("Fine-Designer_Report_Background");
}
@Override

3
designer-base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java

@ -2,6 +2,7 @@ package com.fr.design.style.background.impl;
import com.fr.base.Style;
import com.fr.base.background.ImageBackground;
import com.fr.base.background.ImageFileBackground;
import com.fr.design.gui.frpane.ImgChooseWrapper;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.ibutton.UIRadioButton;
@ -192,7 +193,7 @@ public class ImageBackgroundPane extends BackgroundDetailPane {
@Override
public Background update() throws Exception {
ImageBackground imageBackground = new ImageBackground(previewPane.getImageWithSuffix());
ImageBackground imageBackground = new ImageFileBackground(previewPane.getImageWithSuffix());
setImageStyle();
imageBackground.setLayout(imageStyle.getImageLayout());
return imageBackground;

3
designer-base/src/com/fr/design/style/background/impl/ImageButtonBackgroundPane.java

@ -2,6 +2,7 @@ package com.fr.design.style.background.impl;
import com.fr.base.Style;
import com.fr.base.background.ImageBackground;
import com.fr.base.background.ImageFileBackground;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.general.Background;
import com.fr.general.Inter;
@ -81,6 +82,6 @@ public class ImageButtonBackgroundPane extends ImageBackgroundPane {
if (previewPane.getImage() == null) {
return null;
}
return new ImageBackground(previewPane.getImageWithSuffix());
return new ImageFileBackground(previewPane.getImageWithSuffix());
}
}

759
designer-base/src/com/fr/env/RemoteEnv.java vendored

@ -1,759 +0,0 @@
//package com.fr.env;
//
//import com.fr.base.EnvException;
//import com.fr.base.operator.common.CommonOperator;
//import com.fr.base.operator.connect.ConnectOperator;
//import com.fr.base.operator.file.FileOperator;
//import com.fr.base.operator.org.OrganizationOperator;
//import com.fr.base.remote.RemoteDeziConstants;
//import com.fr.data.impl.storeproc.StoreProcedure;
//import com.fr.dav.AbstractEnv;
//import com.fr.dav.DavXMLUtils;
//import com.fr.design.DesignerEnvManager;
//import com.fr.design.mainframe.DesignerContext;
//import com.fr.file.CacheManager;
//import com.fr.general.CommonIOUtils;
//import com.fr.general.ComparatorUtils;
//import com.fr.general.IOUtils;
//import com.fr.general.Inter;
//import com.fr.general.http.HttpToolbox;
//import com.fr.io.utils.ResourceIOUtils;
//import com.fr.json.JSONArray;
//import com.fr.json.JSONObject;
//import com.fr.log.FineLoggerFactory;
//import com.fr.report.DesignAuthority;
//import com.fr.report.util.AuthorityXMLUtils;
//import com.fr.share.ShareConstants;
//import com.fr.stable.ArrayUtils;
//import com.fr.stable.EncodeConstants;
//import com.fr.stable.Filter;
//import com.fr.stable.ProductConstants;
//import com.fr.stable.StableUtils;
//import com.fr.stable.StringUtils;
//import com.fr.stable.SvgProvider;
//import com.fr.stable.project.ProjectConstants;
//import com.fr.third.guava.base.Strings;
//import com.fr.third.guava.collect.ImmutableMap;
//import com.fr.web.ResourceConstants;
//import com.fr.workspace.engine.server.rpc.RemoteCallServerConfig;
//import com.fr.workspace.engine.server.rpc.netty.MessageSendExecutor;
//import com.fr.workspace.engine.server.rpc.netty.RemoteCallClient;
//
//import javax.swing.*;
//import javax.xml.transform.Source;
//import javax.xml.transform.Transformer;
//import javax.xml.transform.TransformerConfigurationException;
//import javax.xml.transform.TransformerException;
//import javax.xml.transform.TransformerFactory;
//import javax.xml.transform.dom.DOMSource;
//import javax.xml.transform.stream.StreamResult;
//import java.awt.*;
//import java.io.ByteArrayInputStream;
//import java.io.ByteArrayOutputStream;
//import java.io.File;
//import java.io.FileInputStream;
//import java.io.IOException;
//import java.io.InputStream;
//import java.io.OutputStream;
//import java.io.OutputStreamWriter;
//import java.io.UnsupportedEncodingException;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.Map;
//
//import static com.fr.third.guava.base.Preconditions.checkArgument;
//
///**
// * @author null
// */
//public class RemoteEnv extends AbstractEnv<RemoteEnvConfig> implements DesignAuthorityConfigurable {
//
// private static final String CERT_KEY = "javax.net.ssl.trustStore";
// private static final String PWD_KEY = "javax.net.ssl.trustStorePassword";
// private static final String HTTPS_PREFIX = "https:";
// private final static String[] FILE_TYPE = {"cptx", "cpt", "frm", "form", "cht", "chart"};
// private String buildFilePath;
// private RemoteEnvConfig config;
//
// public RemoteEnv(RemoteEnvConfig config) {
// this.config = config;
// }
//
// @Override
// public void connect() throws Exception {
// RemoteCallClient.getInstance().load(config.getHost(), config.getPort(), RemoteCallServerConfig.getInstance().getSerializeProtocol());
// }
//
// @Override
// public void connectOnce() throws Exception {
// RemoteCallClient.getInstance().loadOnce(config.getHost(), config.getPort(), RemoteCallServerConfig.getInstance().getSerializeProtocol(), 10 * 1000);
// ConnectOperator operator = RemoteCallClient.getInstance().execute(ConnectOperator.class);
// boolean result = false;
// try {
// result = operator.connect(config.getUsername(), config.getPassword());
// } catch (Exception ignore) {
//
// }
// if (!result) {
// throw new Exception("Cannot connect to the remote server!");
// }
// }
//
// @Override
// public boolean disconnect() {
// MessageSendExecutor.getInstance().stop();
// return true;
// }
//
// @Override
// public FileOperator getFileOperator() throws Exception {
//
// return MessageSendExecutor.getInstance().execute(FileOperator.class);
// }
//
// @Override
// public CommonOperator getCommonOperator() throws Exception {
// return MessageSendExecutor.getInstance().execute(CommonOperator.class);
// }
//
// @Override
// public OrganizationOperator getOrganizationOperator() throws Exception {
// return MessageSendExecutor.getInstance().execute(OrganizationOperator.class);
// }
//
// @Override
// public String getPath() {
// return config.getPath();
// }
//
// @Override
// public String getUser() {
// return config.getUsername();
// }
//
// public String getPassword() {
// return config.getPassword();
// }
//
// @Override
// public String getUserID() {
// return EnvContext.currentToken();
// }
//
// @Override
// public boolean isLocalEnv() {
// return false;
// }
//
// /**
// * execute method之后,取返回的 InputStream
// */
// private InputStream filterInputStream(InputStream in) throws Exception {
// if (in == null) {
// return null;
// }
// ByteArrayOutputStream out = new ByteArrayOutputStream();
// try {
// IOUtils.copyBinaryTo(in, out);
// // 看一下传过来的byte[]是不是DesignProcessor.INVALID,如果是的话,就抛Exception
// byte[] bytes = out.toByteArray();
// // carl:格式一致传中文
// String message = new String(bytes, EncodeConstants.ENCODING_UTF_8);
// if (ComparatorUtils.equals(message, RemoteDeziConstants.NO_SUCH_RESOURCE)) {
// return null;
// } else if (ComparatorUtils.equals(message, RemoteDeziConstants.INVALID_USER)) {
// throw new EnvException(RemoteDeziConstants.INVALID_USER);
// } else if (ComparatorUtils.equals(message, RemoteDeziConstants.FILE_LOCKED)) {
// JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Remote_File_is_Locked"));
// return null;
// }
// return new ByteArrayInputStream(bytes);
// } finally {
// synchronized (this) {
// in.close();
// out.close();
// }
// }
// }
//
//
// /**
// * nameValuePairs,这个参数要接着this.path,拼成一个URL,否则服务器端req.getParameter是无法得到的
// *
// * @param bytes 数据
// * @return 是否成功提交
// * @throws Exception 异常
// */
// private boolean postBytes2Server(byte[] bytes, HashMap<String, String> para) throws Exception {
// filterInputStream(RemoteEnvUtils.simulateRPCByHttpPost(bytes, para, false, this));
// return true;
// }
//
// /**
// * 把InputStream转成一段String
// *
// * @param in InputStream输入流
// * @return 转换后的字符串
// */
// private static String stream2String(InputStream in) {
// if (in == null) {
// return null;
// }
// String result = null;
// try {
// result = CommonIOUtils.inputStream2String(in, EncodeConstants.ENCODING_UTF_8);
// } catch (UnsupportedEncodingException e) {
// FineLoggerFactory.getLogger().error(e.getMessage(), e);
// }
// return result;
// }
//
// /**
// * 测试连接服务器
// *
// * @return 测试连接成功返回true
// * @throws Exception 异常
// */
// private boolean testServerConnection() throws Exception {
// return testConnection(true, true, DesignerContext.getDesignerFrame());
// }
//
// /**
// * 测试当前配置是否正确
// *
// * @return 链接是否成功
// * @throws Exception 异常
// */
// @Override
// public boolean testServerConnectionWithOutShowMessagePane() throws Exception {
// return testConnection(false, true, DesignerContext.getDesignerFrame());
// }
//
// /**
// * 主要用于在环境配置面板中的测试连接按钮时,不要注册进远程环境
// *
// * @param messageParentPane 弹框的依赖的面板
// * @return 是否测试连接成功
// * @throws Exception 异常
// */
// public boolean testConnectionWithOutRegisteServer(Component messageParentPane) throws Exception {
// return testConnection(true, false, messageParentPane);
// }
//
//
// private boolean testConnection(boolean needMessage, boolean isRegisteServer, Component parentComponent) throws Exception {
// checkArgument(parentComponent instanceof Component, "parentComponent should be a java.awt.component");
// Component component = parentComponent;
// String url = String.format("%s/connection", EnvConstants.toDecisionPath(getPath()));
// ImmutableMap<String, Object> params = ImmutableMap.of(
// "version", (Object) ProductConstants.DESIGNER_VERSION
// );
// ImmutableMap<String, String> headers = ImmutableMap.of(
// EnvConstants.USERNAME, getUser(),
// EnvConstants.PWD, getPassword());
// String res = HttpToolbox.post(url, params, headers);
// if (Strings.isNullOrEmpty(res)) {
// if (needMessage) {
// JOptionPane.showMessageDialog(component, Inter.getLocText("Datasource-Connection_failed"));
// }
// return false;
// } else if (ComparatorUtils.equals(res, "true")) {
// return true;
// } else {
// if (ComparatorUtils.equals(res, EnvConstants.AUTH_ERROR)) {
// JOptionPane.showMessageDialog(component,
// Inter.getLocText(new String[]{"Datasource-Connection_failed", "Registration-User_Name", "Password", "Error"}, new String[]{",", "", "", "!"})
// , Inter.getLocText("FR-Server-All_Error"), JOptionPane.ERROR_MESSAGE);
// return false;
// } else {
// if (ComparatorUtils.equals(res, EnvConstants.WAR_ERROR)) {
// if (needMessage) {
// JOptionPane.showMessageDialog(component, Inter.getLocText(new String[]{"Datasource-Connection_failed", "NS-war-remote"}, new String[]{",", "!"}));
// } else {
// FineLoggerFactory.getLogger().info(Inter.getLocText(new String[]{"Datasource-Connection_failed", "NS-war-remote"}, new String[]{",", "!"}));
// }
// return false;
// } else {
// if (needMessage) {
// JOptionPane.showMessageDialog(component, Inter.getLocText("Datasource-Connection_failed"));
// } else {
// FineLoggerFactory.getLogger().info(Inter.getLocText(new String[]{"Datasource-Connection_failed", "Version-does-not-support"}, new String[]{",", "!"}));
// }
// return false;
// }
// }
// }
// }
//
//
// private void refreshHttpSProperty() {
// if (getPath().startsWith(HTTPS_PREFIX) && System.getProperty(CERT_KEY) == null) {
// DesignerEnvManager envManager = DesignerEnvManager.getEnvManager();
// System.setProperty(CERT_KEY, envManager.getCertificatePath());
// System.setProperty(PWD_KEY, envManager.getCertificatePass());
// }
// }
//
//
// /**
// * 心跳访问,用来更新当前用户的访问时间
// *
// * @throws Exception e
// */
//
// public class Bytes2ServerOutputStream extends OutputStream {
// private ByteArrayOutputStream out = new ByteArrayOutputStream();
// private HashMap<String, String> nameValuePairs;
//
// public Bytes2ServerOutputStream(HashMap<String, String> nameValuePairs) {
// this.nameValuePairs = nameValuePairs;
// }
//
// public HashMap<String, String> getNameValuePairs() {
// return nameValuePairs;
// }
//
// public ByteArrayOutputStream getOut() {
// return out;
// }
//
// public OutputStream getZipOutputStream() throws Exception {
// return IOUtils.toZipOut(out);
// }
//
// /**
// * post ro Server 提交到服务器
// *
// * @return 是否提交成功
// */
// public boolean post2Server() {
// try {
// return postBytes2Server(out.toByteArray(), nameValuePairs);
// } catch (Exception e) {
// FineLoggerFactory.getLogger().error(e.getMessage(), e);
// return false;
// }
// }
//
// /**
// * 刷新数出流,并提交
// *
// * @throws IOException e
// */
// @Override
// public void flush() throws IOException {
// super.flush();
// post2Server();
// }
//
// /**
// * 将指定字节写入输入流数组
// *
// * @param b 写入的字节
// */
// @Override
// public void write(int b) {
// out.write(b);
//
// }
// }
//
// @Override
// public boolean updateAuthorities(DesignAuthority[] authorities) {
// refreshHttpSProperty();
// String res = null;
// try {
// InputStream inputStream = RemoteEnvUtils.updateAuthorities(authorities, this);
// inputStream = filterInputStream(inputStream);
// res = IOUtils.inputStream2String(inputStream, EncodeConstants.ENCODING_UTF_8);
// } catch (Exception e) {
// FineLoggerFactory.getLogger().error(e.getMessage());
// }
// return StringUtils.isNotEmpty(res) && Boolean.valueOf(res);
// }
//
// @Override
// public DesignAuthority[] getAuthorities() {
// refreshHttpSProperty();
// DesignAuthority[] authorities = new DesignAuthority[0];
// try {
// InputStream inputStream = RemoteEnvUtils.getAuthorities(this);
// inputStream = filterInputStream(inputStream);
// authorities = AuthorityXMLUtils.readDesignAuthoritiesXML(inputStream);
// return authorities;
// } catch (Exception e) {
// FineLoggerFactory.getLogger().error(e.getMessage());
// }
// return authorities;
// }
//
// /**
// * 远程设计器设计时,假如开了权限就不可预览了。这边放一个全局的map来开后门
// *
// * @param key 键值
// * @param value 值
// * @return 如果写入成功,返回true
// * @throws Exception e
// */
// public boolean writePrivilegeMap(String key, String value) throws Exception {
// refreshHttpSProperty();
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "fr_remote_design");
// para.put("cmd", "write_privilege_map");
// para.put("current_user", getUser());
// para.put("current_password", getPassword());
// para.put("key", key);
// para.put("value", value);
//
// //jim :加上user,远程设计点击预览时传递用户角色信息
// InputStream input = filterInputStream(
// RemoteEnvUtils.simulateRPCByHttpGet(para, false, this)
// );
//
// if (input == null) {
// return false;
// }
//
// return Boolean.valueOf(IOUtils.inputStream2String(input, EncodeConstants.ENCODING_UTF_8));
// }
//
//
// /**
// * nameValuePairs,这个参数要接着this.path,拼成一个URL,否则服务器端req.getParameter是无法得到的
// *
// * @param bytes 数据
// * @param para 参数
// * @return 从服务器端得到InputStream
// * @throws Exception 异常
// */
// public InputStream postBytes2ServerB(byte[] bytes, HashMap<String, String> para) throws Exception {
// refreshHttpSProperty();
// return filterInputStream(RemoteEnvUtils.simulateRPCByHttpPost(bytes, para, false, this));
// }
//
//
// /**
// * 读取路径下的svg文件
// *
// * @param path 制定路径,是基于报表目录下resource文件夹路径
// * @return 读到的文件
// */
// @Override
// public String[] readPathSvgFiles(String path) {
// refreshHttpSProperty();
// String cataloguePath = StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getPath(), SvgProvider.SERVER, path);
//
// ArrayList<String> fileArray = new ArrayList<>();
// try {
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "fr_remote_design");
// para.put("cmd", "design_read_svgfile");
// para.put("resourcePath", path);
// para.put("current_uid", this.getUserID());
// para.put("currentUsername", this.getUser());
//
// InputStream input = filterInputStream(
// RemoteEnvUtils.simulateRPCByHttpGet(para, false, this)
// );
// JSONArray ja = new JSONArray(stream2String(input));
// for (int i = 0; i < ja.length(); i++) {
// JSONObject jsonObject = (JSONObject) ja.get(i);
// String svgFileName = (String) jsonObject.get("svgfileName");
// String svgFileContent = (String) jsonObject.get("svgfileContent");
//
// String file = StableUtils.pathJoin(cataloguePath, svgFileName);
// InputStream in = new ByteArrayInputStream(svgFileContent.getBytes(EncodeConstants.ENCODING_UTF_8));
// ResourceIOUtils.write(file, in);
// fileArray.add(file);
// }
// } catch (Exception e) {
// FineLoggerFactory.getLogger().error(e.getMessage());
// }
//
// return fileArray.toArray(new String[0]);
// }
//
//
// /**
// * 写svg文件
// *
// * @param svgFile svg文件
// * @return 是否写入成功
// * @throws Exception 异常
// */
// @Override
// public boolean writeSvgFile(SvgProvider svgFile) throws Exception {
// testServerConnection();
//
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "svgrelate");
// para.put("cmd", "design_save_svg");
// para.put("filePath", svgFile.getFilePath());
// para.put("current_uid", this.getUserID());
// para.put("currentUsername", this.getUser());
//
// // 通过ByteArrayOutputStream将svg写成字节流
// Bytes2ServerOutputStream out = new Bytes2ServerOutputStream(para);
// OutputStreamWriter outWriter = new OutputStreamWriter(out, "UTF-8");
// StreamResult result = new StreamResult(outWriter);
//
// Source source = new DOMSource(svgFile.getSvgDocument());
// try {
// Transformer xformer = TransformerFactory.newInstance().newTransformer();
// try {
// xformer.transform(source, result);
// } catch (TransformerException ex) {
// FineLoggerFactory.getLogger().error(ex.getMessage());
// }
//
// } catch (TransformerConfigurationException ex) {
// FineLoggerFactory.getLogger().error(ex.getMessage());
// return false;
// }
//
// try {
// String res = stream2String(filterInputStream(
// RemoteEnvUtils.simulateRPCByHttpPost(out.getOut().toByteArray(), out.nameValuePairs, false, this)
// ));
// if (StringUtils.isNotEmpty(res)) {
// JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Already_exist") + res);
// return false;
// }
// } catch (Exception e) {
// FineLoggerFactory.getLogger().error(e.getMessage());
// return false;
// }
//
// return true;
// }
//
// /**
// * 写文件
// *
// * @param beanPath 文件名
// * @param prefix 当前Env下得工程分类,如reportlets,lib等
// * @return OutputStream 输出流
// */
// @Override
// public OutputStream writeBean(String beanPath, String prefix) {
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "fs_remote_design");
// para.put("cmd", "design_save_report");
// para.put(RemoteDeziConstants.PREFXI, prefix);
// para.put(RemoteDeziConstants.TEMPLATE_PATH, beanPath);
//
// return new Bytes2ServerOutputStream(para);
// }
//
// /**
// * 返回模板文件路径
// */
// @Override
// public String getWebReportPath() {
//
// return StableUtils.pathJoin(getPath(), getAppName());
// }
//
// public String[] getProcedureColumns(StoreProcedure storeProcedure, Map parameterMap) throws Exception {
// refreshHttpSProperty();
// String[] columns;
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "fr_remote_design");
// para.put("cmd", "list_sp");
// try {
// InputStream input = filterInputStream(
// RemoteEnvUtils.simulateRPCByHttpGet(para, false, this)
// );
//
// if (input == null) {
// return ArrayUtils.EMPTY_STRING_ARRAY;
// }
//
// columns = DavXMLUtils.readXMLSPColumns(input);
// return columns;
// } catch (Exception e) {
// FineLoggerFactory.getLogger().error(e.getMessage());
// }
//
// return new String[0];
// }
//
// public String[] getProcedureColumns(String name) throws Exception {
// refreshHttpSProperty();
// String[] columns;
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "fr_remote_design");
// para.put("cmd", "list_sp_columns_name");
// para.put("name", name);
// try {
// InputStream input = filterInputStream(
// RemoteEnvUtils.simulateRPCByHttpGet(para, false, this)
// );
// if (input == null) {
// return ArrayUtils.EMPTY_STRING_ARRAY;
// }
// columns = DavXMLUtils.readXMLSPColumns(input);
// return columns;
// } catch (Exception e) {
// FineLoggerFactory.getLogger().error(e.getMessage());
// }
// return new String[0];
//
// }
//
// @Override
// public String[] getSupportedTypes() {
// return FILE_TYPE;
// }
//
// /**
// * 获取当前env的build文件路径
// */
// @Override
// public String getBuildFilePath() {
// return StringUtils.isEmpty(buildFilePath) ? ResourceConstants.BUILD_PATH : buildFilePath;
// }
//
// /**
// * 设置当前env的build文件路径
// */
// @Override
// public void setBuildFilePath(String buildFilePath) {
// this.buildFilePath = buildFilePath;
// }
//
// @Override
// public String[] loadREUFile() {
// refreshHttpSProperty();
// ResourceIOUtils.delete(StableUtils.pathJoin(
// CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath(),
// ShareConstants.DIR_SHARE_CACHE));
//
// String zipFilePath = null;
// try {
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "fr_remote_design");
// para.put("cmd", "design_read_reufile");
// para.put("current_uid", this.getUserID());
// para.put("currentUsername", this.getUser());
//
// //拿到服务端传过来的整个共享文件夹的压缩文件的文件流
// InputStream input = RemoteEnvUtils.simulateRPCByHttpGet(para, false, this);
//
// zipFilePath = StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath(), "share.zip");
// String cacheDir = StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath(), ShareConstants.DIR_SHARE_CACHE);
//
// ResourceIOUtils.write(zipFilePath, input);
// ResourceIOUtils.unzip(zipFilePath, cacheDir, EncodeConstants.ENCODING_GBK);
//
//
// return ResourceIOUtils.listWithFullPath(cacheDir, new Filter<String>() {
// @Override
// public boolean accept(String s) {
// return s.endsWith(ProjectConstants.REU);
// }
// });
//
// } catch (Exception e) {
// FineLoggerFactory.getLogger().error(e.getMessage());
// } finally {
//
// if (zipFilePath != null) {
// ResourceIOUtils.delete(zipFilePath);
// }
// }
//
// return new String[0];
// }
//
// @Override
// public boolean installREUFile(File reuFile) {
// refreshHttpSProperty();
// if (reuFile == null) {
// return false;
// }
// File tempFile = new File(CacheManager.getProviderInstance().getCacheDirectory(), "temp_remote");
// IOUtils.unzip(reuFile, tempFile.getAbsolutePath());
// String shareXMLName = StableUtils.pathJoin(tempFile.getAbsolutePath(), ShareConstants.NAME_XML_MODULE);
// String helpXMLName = StableUtils.pathJoin(tempFile.getAbsolutePath(), ShareConstants.NAME_XML_HELP);
// try {
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "fr_remote_design");
// para.put("cmd", "design_install_reufile");
// para.put("current_uid", this.getUserID());
// para.put("currentUsername", this.getUser());
// para.put("reuFileName", reuFile.getName());
//
// InputStream input = filterInputStream(
// RemoteEnvUtils.simulateRPCByHttpPost(
// IOUtils.inputStream2Bytes(
// new FileInputStream(new File(shareXMLName))
// )
// , para,
// false,
// this)
// );
// para.put("isComplete", "true");
// InputStream input1 = filterInputStream(RemoteEnvUtils.simulateRPCByHttpPost(
// IOUtils.inputStream2Bytes(
// new FileInputStream(new File(helpXMLName))
// )
// , para,
// false,
// this));
// return ComparatorUtils.equals(stream2String(input), "true") && ComparatorUtils.equals(stream2String(input1), "true");
// } catch (Exception e) {
// return false;
// }
// }
//
// @Override
// public boolean removeREUFilesByName(String fileName) {
// refreshHttpSProperty();
// if (StringUtils.isEmpty(fileName)) {
// return true;
// }
// try {
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "fr_remote_design");
// para.put("cmd", "design_remove_reufile");
// para.put("current_uid", this.getUserID());
// para.put("currentUsername", this.getUser());
// para.put("reuFileName", fileName);
//
// InputStream input = filterInputStream(
// RemoteEnvUtils.simulateRPCByHttpGet(para, false, this)
// );
// return ComparatorUtils.equals(stream2String(input), "true");
// } catch (Exception e) {
// return false;
// }
// }
//
// @Override
// public String getSharePath() {
// refreshHttpSProperty();
// try {
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "fr_remote_design");
// para.put("cmd", "design_get_share_path");
// para.put("current_uid", this.getUserID());
// para.put("currentUsername", this.getUser());
//
// InputStream input = filterInputStream(
// RemoteEnvUtils.simulateRPCByHttpGet(para, false, this)
// );
// return stream2String(input);
// } catch (Exception e) {
// return StringUtils.EMPTY;
// }
// }
//
//
// @Override
// public boolean hasPluginServiceStarted(String key) {
//
// return true;
// }
//
//}

6
designer-base/src/com/fr/start/server/FineEmbedServerActivator.java

@ -13,8 +13,8 @@ import com.fr.workspace.WorkContext;
import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.Wrapper;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.loader.VirtualWebappLoader;
import org.apache.catalina.loader.WebappLoader;
import org.apache.catalina.startup.Tomcat;
import java.io.File;
@ -112,7 +112,7 @@ public class FineEmbedServerActivator extends Activator {
* Created by juhaoyu on 2018/6/5.
* 自定义的tomcat loader主要用于防止内置服务器再加载一遍class
*/
private static class FRTomcatLoader extends VirtualWebappLoader {
private static class FRTomcatLoader extends WebappLoader {
@Override
public ClassLoader getClassLoader() {

8
designer-form/src/com/fr/design/mainframe/JForm.java

@ -815,14 +815,6 @@ public class JForm extends JTemplate<Form, FormUndoState> implements BaseJForm {
}
}
/**
* 模板更新
*/
public void fireTargetModified() {
super.fireTargetModified();
WidgetPropertyPane.getInstance().refreshDockingView();
}
/**
* 在Form和ElementCase, 以及ElementCase和ElementCase之间切换
*

2
designer-realize/pom.xml

@ -11,7 +11,7 @@
<groupId>com.fr.report</groupId>
<artifactId>designer-realize</artifactId>
<version>10.0-RELEASE-SNAPSHOT</version>
<dependencies>
<dependencies>
<dependency>
<groupId>com.fr.report</groupId>
<artifactId>designer-form</artifactId>

1
designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoLogAppender.java

@ -120,7 +120,6 @@ public class ErrorInfoLogAppender extends AppenderSkeleton {
@Override
public void readXML(XMLableReader reader) {
super.readXML(reader);
readDesign(reader);
}

4
designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoUploader.java

@ -39,9 +39,11 @@ public class ErrorInfoUploader {
@Override
public void envChanged() {
FineLoggerFactory.getLogger().addLogAppender(new LogHandler<ErrorInfoLogAppender>() {
private ErrorInfoLogAppender errorInfoLogAppender = new ErrorInfoLogAppender();
@Override
public ErrorInfoLogAppender getHandler() {
return new ErrorInfoLogAppender();
return errorInfoLogAppender;
}
});
}

25
designer-realize/src/com/fr/design/report/ReportBackgroundPane.java

@ -1,16 +1,18 @@
package com.fr.design.report;
import java.awt.BorderLayout;
import com.fr.page.ReportSettingsProvider;
import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.dialog.BasicPane;
import com.fr.general.Inter;
import com.fr.design.style.background.BackgroundPane;
import com.fr.general.Inter;
import com.fr.page.ReportSettingsProvider;
import javax.swing.JPanel;
import java.awt.BorderLayout;
public class ReportBackgroundPane extends BasicPane {
private UICheckBox isPrintBackgroundCheckBox;
private UICheckBox isExportBackgroundCheckBox;
private BackgroundPane backgroundPane;
public ReportBackgroundPane() {
@ -19,14 +21,17 @@ public class ReportBackgroundPane extends BasicPane {
backgroundPane = new BackgroundPane();
this.add(backgroundPane, BorderLayout.CENTER);
isPrintBackgroundCheckBox = new UICheckBox(
Inter.getLocText("ReportGUI-Print_Background"));
this.add(isPrintBackgroundCheckBox, BorderLayout.SOUTH);
isPrintBackgroundCheckBox = new UICheckBox(Inter.getLocText("Fine-Designer_Print_Background"));
isExportBackgroundCheckBox = new UICheckBox(Inter.getLocText("Fine-Designer_Export_Background"));
JPanel sourth = new JPanel();
sourth.add(isExportBackgroundCheckBox);
sourth.add(isPrintBackgroundCheckBox);
this.add(sourth, BorderLayout.SOUTH);
}
@Override
protected String title4PopupWindow() {
return Inter.getLocText(new String[]{"paper", "Background"});
return Inter.getLocText("Fine-Designer_Report_Background");
}
/**
@ -35,6 +40,7 @@ public class ReportBackgroundPane extends BasicPane {
public void populate(ReportSettingsProvider reportSettings) {
this.backgroundPane.populate(reportSettings.getBackground());
this.isPrintBackgroundCheckBox.setSelected(reportSettings.isPrintBackground());
this.isExportBackgroundCheckBox.setSelected(reportSettings.isExportBackground());
}
/**
@ -43,5 +49,6 @@ public class ReportBackgroundPane extends BasicPane {
public void update(ReportSettingsProvider reportSettings) {
reportSettings.setBackground(this.backgroundPane.update());
reportSettings.setPrintBackground(this.isPrintBackgroundCheckBox.isSelected());
reportSettings.setExportBackground(this.isExportBackgroundCheckBox.isSelected());
}
}

22
designer-realize/src/com/fr/design/webattr/EditReportServerParameterPane.java

@ -15,6 +15,9 @@ import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.design.webattr.printsettings.PrintSettingPane;
import com.fr.general.Inter;
import com.fr.report.core.ReportUtils;
import com.fr.report.web.WebPage;
import com.fr.report.web.WebView;
import com.fr.report.web.WebWrite;
import com.fr.web.attr.ReportWebAttr;
import javax.swing.*;
@ -74,13 +77,20 @@ public class EditReportServerParameterPane extends LoadingBasicPane {
// File.separator + reportServerPreferenceConfig.fileName());
webAttr = ((ReportWebAttr) ConfigManager.getProviderInstance().getGlobalAttribute(ReportWebAttr.class));
if (webAttr != null) {
pagePane.populateBean(webAttr.getWebPage());
viewPane.populateBean(webAttr.getWebView());
writePane.populateBean(webAttr.getWebWrite());
cssPane.populate(webAttr);
jsPane.populate(webAttr);
WebPage webPage = webAttr.getWebPage();
WebView webView = webAttr.getWebView();
WebWrite webWrite = webAttr.getWebWrite();
if(webPage != null){
pagePane.populateBean(webPage);
}
if(webView != null){
viewPane.populateBean(webView);
}
if(webWrite != null){
writePane.populateBean(webWrite);
}
cssPane.populate(webAttr);
jsPane.populate(webAttr);
printSettings = ReportUtils.getPrintSettingsFromServerConfig();
printSettingPane.populate(printSettings);

13
designer-realize/src/com/fr/start/Designer.java

@ -42,6 +42,7 @@ import com.fr.general.ComparatorUtils;
import com.fr.general.Inter;
import com.fr.module.Module;
import com.fr.module.ModuleContext;
import com.fr.record.analyzer.FineAnalyzer;
import com.fr.stable.BuildContext;
import com.fr.stable.OperatingSystem;
import com.fr.stable.ProductConstants;
@ -94,20 +95,28 @@ public class Designer extends BaseDesigner {
* @param args 参数
*/
public static void main(String[] args) {
FineAnalyzer.init();
BuildContext.setBuildFilePath("/com/fr/stable/build.properties");
preloadResource();
SplashContext.getInstance().registerSplash(createSplash());
// 如果端口被占用了 说明程序已经运行了一次,也就是说,已经建立一个监听服务器,现在只要给服务器发送命令就好了
if (DesignUtils.isStarted()) {
DesignUtils.clientSend(args);
return;
}
preloadResource();
SplashContext.getInstance().registerSplash(createSplash());
SplashContext.getInstance().show();
Module designerRoot = ModuleContext.parseRoot("designer-startup.xml");
//传递启动参数
designerRoot.setSingleton(StartupArgs.class, new StartupArgs(args));
designerRoot.start();
if (WorkContext.getCurrent().isLocal()) {
//初始化一下serverTray
ServerTray.init();

47
designer-realize/src/com/fr/start/module/DesignerActivator.java

@ -5,7 +5,6 @@ import com.fr.base.Formula;
import com.fr.base.MultiFieldParameter;
import com.fr.base.process.ProcessOperator;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.design.ChartTypeInterfaceManager;
import com.fr.design.ExtraDesignClassManager;
import com.fr.design.actions.core.ActionFactory;
import com.fr.design.actions.insert.cell.BiasCellAction;
@ -21,8 +20,6 @@ import com.fr.design.actions.insert.flot.FormulaFloatAction;
import com.fr.design.actions.insert.flot.ImageFloatAction;
import com.fr.design.actions.insert.flot.TextBoxFloatAction;
import com.fr.design.bridge.DesignToolbarProvider;
import com.fr.design.chart.ChartDialog;
import com.fr.design.chart.gui.ChartComponent;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.form.parameter.FormParaDesigner;
import com.fr.design.fun.ElementUIProvider;
@ -36,7 +33,6 @@ import com.fr.design.javascript.ParameterJavaScriptPane;
import com.fr.design.javascript.ProcessTransitionAdapter;
import com.fr.design.mainframe.BaseJForm;
import com.fr.design.mainframe.CellElementPropertyPane;
import com.fr.design.mainframe.ChartPropertyPane;
import com.fr.design.mainframe.DesignerFrameFileDealerPane;
import com.fr.design.mainframe.EastRegionContainerPane;
import com.fr.design.mainframe.ElementCaseThumbnail;
@ -51,17 +47,15 @@ import com.fr.design.mainframe.form.FormECCompositeProvider;
import com.fr.design.mainframe.form.FormECDesignerProvider;
import com.fr.design.mainframe.form.FormElementCaseDesigner;
import com.fr.design.mainframe.form.FormReportComponentComposite;
import com.fr.design.mainframe.loghandler.DesignerLogAppender;
import com.fr.design.mainframe.loghandler.DesignerLogImpl;
import com.fr.design.mainframe.loghandler.LogMessageBar;
import com.fr.design.module.ChartHyperlinkGroup;
import com.fr.design.module.ChartPreStyleAction;
import com.fr.design.module.DesignModuleFactory;
import com.fr.design.parameter.FormParameterReader;
import com.fr.design.parameter.ParameterPropertyPane;
import com.fr.design.parameter.WorkBookParameterReader;
import com.fr.design.widget.ui.btn.FormSubmitButtonDetailPane;
import com.fr.form.stable.ElementCaseThumbnailProcessor;
import com.fr.form.ui.ChartEditor;
import com.fr.form.ui.WidgetInfoConfig;
import com.fr.general.Inter;
import com.fr.general.ModuleContext;
@ -73,9 +67,9 @@ import com.fr.js.ReportletHyperlink;
import com.fr.js.WebHyperlink;
import com.fr.locale.InterMutableKey;
import com.fr.log.FineLoggerFactory;
import com.fr.log.LogHandler;
import com.fr.module.Activator;
import com.fr.module.extension.Prepare;
import com.fr.plugin.chart.vanchart.imgevent.design.DesignImageEvent;
import com.fr.quickeditor.cellquick.CellBiasTextPainterEditor;
import com.fr.quickeditor.cellquick.CellDSColumnEditor;
import com.fr.quickeditor.cellquick.CellFormulaQuickEditor;
@ -97,18 +91,15 @@ import com.fr.stable.ArrayUtils;
import com.fr.stable.ParameterProvider;
import com.fr.stable.bridge.StableFactory;
import com.fr.stable.fun.LogProvider;
import com.fr.stable.plugin.ExtraChartDesignClassManagerProvider;
import com.fr.stable.plugin.ExtraDesignClassManagerProvider;
import com.fr.stable.script.CalculatorProviderContext;
import com.fr.stable.script.ValueConverter;
import com.fr.stable.xml.ObjectTokenizer;
import com.fr.stable.xml.ObjectXMLWriterFinder;
import com.fr.start.BBSGuestPaneProvider;
import com.fr.van.chart.DownloadOnlineSourcesHelper;
import com.fr.van.chart.map.server.ChartMapEditorAction;
import com.fr.xml.ReportXMLUtils;
import java.awt.*;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
@ -124,15 +115,36 @@ import static com.fr.stable.module.Module.ENGINE_MODULE;
* 之后慢慢将DesignerModule拆成Activator
*/
public class DesignerActivator extends Activator implements Prepare {
private LogHandler<DesignerLogAppender> logHandler = null;
@Override
public void start() {
designerModuleStart();
preLoadPane();
loadLogAppender();
}
private void loadLogAppender() {
logHandler = new LogHandler<DesignerLogAppender>() {
final DesignerLogAppender logAppender = new DesignerLogAppender();
@Override
public DesignerLogAppender getHandler() {
return logAppender;
}
};
FineLoggerFactory.getLogger().addLogAppender(logHandler);
}
private void unloadLogAppender() {
if (logHandler != null) {
FineLoggerFactory.getLogger().removeLogAppender(logHandler);
}
}
private static void designerModuleStart() {
StableFactory.registerMarkedClass(ExtraDesignClassManagerProvider.XML_TAG, ExtraDesignClassManager.class);
ActionFactory.registerCellInsertActionClass(actionsForInsertCellElement());
ActionFactory.registerFloatInsertActionClass(actionsForInsertFloatElement());
@ -153,6 +165,7 @@ public class DesignerActivator extends Activator implements Prepare {
ExtraDesignClassManager.getInstance().getFeedback().didFeedback();
StableFactory.registerMarkedObject(LogProvider.MARK_STRING, DesignerLogImpl.getInstance());
}
private static void preLoadPane() {
ExecutorService service = Executors.newCachedThreadPool();
service.submit(new Runnable() {
@ -304,8 +317,7 @@ public class DesignerActivator extends Activator implements Prepare {
}
});
}
private static void designerRegister() {
registerCellEditor();
registerFloatEditor();
@ -387,6 +399,7 @@ public class DesignerActivator extends Activator implements Prepare {
@Override
public void stop() {
unloadLogAppender();
}
@Override
@ -394,4 +407,4 @@ public class DesignerActivator extends Activator implements Prepare {
addMutable(InterMutableKey.Path, "com/fr/design/i18n/main", "com/fr/design/i18n/chart");
}
}
}

4
designer-realize/src/com/fr/start/module/DesignerStartup.java

@ -4,6 +4,8 @@ import com.fr.design.mainframe.DesignerContext;
import com.fr.event.Event;
import com.fr.event.Listener;
import com.fr.module.Activator;
import com.fr.record.analyzer.EnableMetrics;
import com.fr.record.analyzer.Metrics;
import com.fr.start.Designer;
import com.fr.start.EnvSwitcher;
import com.fr.start.SplashContext;
@ -17,9 +19,11 @@ import java.util.concurrent.Executors;
/**
* Created by juhaoyu on 2018/1/8.
*/
@EnableMetrics
public class DesignerStartup extends Activator {
@Override
@Metrics
public void start() {
startSub(PreStartActivator.class);
//启动基础部分

2
designer-realize/src/com/fr/start/module/DesignerWorkspaceProvider.java

@ -20,7 +20,7 @@ public class DesignerWorkspaceProvider extends Activator {
for (String arg : args) {
if (ComparatorUtils.equals(arg, "demo")) {
DesignerEnvManager.getEnvManager().setCurrentEnv2Default();
// ServerStarter.browserDemoURL();
ServerStarter.browserDemoURL();
break;
}
}

Loading…
Cancel
Save